Add Rovo Dev provider with monthly credit tracking#1275
Conversation
|
Codex review: needs real behavior proof before merge. Reviewed June 19, 2026, 10:39 AM ET / 14:39 UTC. Summary Reproducibility: not applicable. This PR adds a new provider rather than fixing broken existing behavior. The validation gap is successful latest-head paid-account Rovo proof, not a current-main reproduction path. Review metrics: 2 noteworthy metrics.
Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Proof guidance:
Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Merge only after a maintainer accepts the undocumented endpoint/auth/site contract and redacted latest-head CodexBar app or CLI output proves a successful paid-account monthly-credit fetch. Do we have a high-confidence way to reproduce the issue? Not applicable; this PR adds a new provider rather than fixing broken existing behavior. The validation gap is successful latest-head paid-account Rovo proof, not a current-main reproduction path. Is this the best way to solve the issue? Unclear, not yet: the implementation follows CodexBar's provider descriptor/settings/test patterns, but the endpoint/auth/site contract needs maintainer acceptance and successful real-account proof before it is the best solution. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 2fd5bccf040e. Label changesLabel justifications:
Evidence reviewedWhat I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0a08870478
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Clawsweeper review fixes (commit 743a83e)[P1] Fixed —
|
Clawsweeper second-pass fixes (commit 5988160)[P1] Fixed — descriptor registered in
|
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
@clawsweeper re-review |
|
🦞👀 Command router queued. I will update this comment with the next step. Re-review progress:
|
5988160 to
dcb264a
Compare
|
Maintainer repair pushed on exact head Changes:
Proof:
Fresh GitHub CI is now running. I am not merging this autonomously: the endpoint and Basic-auth contract are undocumented, and the available live proof only shows a blocked/anonymous response rather than a successful paid-account monthly-credit fetch through CodexBar. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: dcb264a193
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
dcb264a to
94f626b
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 94f626bf7b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| } | ||
|
|
||
| try RovoDevSettingsReader.validateEndpointOverrides(environment: environment) | ||
| let url = Self.creditsCheckURL(baseURL: RovoDevSettingsReader.apiURL(environment: environment)) |
There was a problem hiding this comment.
Apply the selected Rovo billing site to credit checks
For Rovo Dev users whose credits are tied to a selected Atlassian site (common with Free or multi-site accounts), this request ignores the atlassianBillingSite/cloudId that ACLI stores in ~/.rovodev/config.yml; Atlassian documents that setting as the site whose credit allocation Rovo Dev CLI should use (https://support.atlassian.com/rovo/docs/manage-rovo-dev-cli-settings/). Because the fetcher only calls the global credits/check URL with email/token, those accounts can get 403 or the wrong allocation even though acli rovodev is configured and works, so the provider should read/apply the billing site or otherwise mirror the CLI auth context before checking credits.
Useful? React with 👍 / 👎.
|
Exact head Holding merge for provider-contract acceptance. The implementation still depends on an undocumented endpoint/Basic-auth shape and lacks paid-account proof; CI cannot validate that external contract. |
94f626b to
a295d65
Compare
- Add UsageProvider.rovodev + IconStyle.rovodev cases - RovoDevSettingsReader: reads ROVODEV_API_TOKEN, ROVODEV_EMAIL, ROVODEV_API_URL - RovoDevUsageFetcher: Basic auth against api.atlassian.com/rovodev/v3/credits/check; parses monthlyUsed/monthlyTotal with daily fallback; surfaces status (OK, RATE_LIMITED, USER_BLOCKED) - RovoDevProviderDescriptor: api-only fetch strategy resolving from env vars or token accounts - RovoDevProviderImplementation: settings fields for email + API token with link to id.atlassian.com - RovoDevSettingsStore: rovoDevAPIToken (apiKey) + rovoDevEmail (workspaceID) - ProviderConfigEnvironment: applyRovoDevOverrides injects both ROVODEV_API_TOKEN and ROVODEV_EMAIL - ProviderTokenResolver: rovoDevToken() + rovoDevResolution() - LogCategories: rovoDevUsage log category - UsageStore: debug log entry for rovodev - 14 unit tests: settings reader, JSON parser, URL builder, snapshot conversion, errors - docs/rovodev.md: setup, how it works, credential resolution, troubleshooting - docs/providers.md: summary table row + detailed entry
Validated against live api.atlassian.com/rovodev/v3/credits/check response: - Add modelUsages: [String: Int]? — per-model token usage map - Add retryAfterSeconds: Int? — retry hint when rate limited - Remove redundant explicit CodingKeys from RovoDevBalance (names match) - Parser correctly handles null monthly fields with daily fallback
…tchStrategy ProviderFetchContext has no tokenAccounts property — only selectedTokenAccountID and env vars. Credentials are injected via ProviderConfigEnvironment.applyRovoDevOverrides which puts ROVODEV_API_TOKEN and ROVODEV_EMAIL into context.env from settings. - Simplify resolveCredentials to read only from context.env - Simplify isAvailable to check email+token (no tokenAccounts fallback needed) Addresses Codex review P1 finding.
Replace placeholder 'A' mark with proper Rovo Dev icon using the official Atlassian Rovo brand gradient (purple #8270DB → blue #579DFF → #2684FF), matching the visual identity of the Rovo Dev product and CLI. Also copy icon to docs/logos/rovodev.svg for docs site use.
[P1] Add .rovodev to ProviderImplementationRegistry switch - Without this, adding .rovodev to UsageProvider makes makeImplementation non-exhaustive and the app target fails to compile. [P2] Add .rovodev to directAPIKeyEnvironmentKey in ProviderConfigEnvironment - supportsAPIKeyOverride now returns true for .rovodev, enabling the documented 'codexbar config set-api-key --provider rovodev' CLI path. [P2] Remove unsupported token-account credential claim from docs - Token accounts cannot carry two credentials (email + token), so they are not a supported auth path for Rovo Dev. Docs now state this clearly with a note directing users to env vars or Settings instead.
[P1] Register RovoDevProviderDescriptor in ProviderDescriptorRegistry
- Add .rovodev to the descriptors dict in ProviderDescriptorRegistry
- Without this, bootstrap iterates .rovodev from allCases and hits
preconditionFailure('Missing ProviderDescriptor for rovodev')
[P2] Add .rovodev to CodexBarConfigValidator.workspaceIDProviders
- Email is stored in workspaceID field for Rovo Dev (two-credential provider)
- Without this, a valid Rovo Dev config reports 'workspace_unused' warning
- Rovo Dev is now a recognised workspaceID consumer alongside azureopenai,
openai, opencode, opencodego, deepgram
701d947 to
85804bc
Compare
|
Resolve merge conflicts |
Summary
API status
Atlassian documents Rovo Dev credit allowances, dashboard usage, API-token login, and the
read:rovodev:limitsscope. Current ACLI debug output usesGET /rovodev/v3/credits/check; an Atlassian staff answer publicly confirms that endpoint's authorization semantics, and a separate public ACLI trace shows the balance schema implemented here. Atlassian still does not publish it as a supported public API, so the provider and docs label this integration experimental.Hardening
read:rovodev:limitsVerification
Exact head:
85804bce8295878462e096c8150a3d881bac8a59make checkpassed; generated parser hash current; SwiftFormat and SwiftLint cleanrovodevLive boundary
Maintainer live setup reached Atlassian's scoped-token form and confirmed
read:rovodev:limitsis the dedicated usage/limits scope. No token was created because persistent API-key creation requires action-time confirmation and immediate 1Password storage, and this account's Rovo entitlement is not yet proven. No exact-head maintainer account-success claim is made.