Skip to content

feat: implement Jules provider integration with identity fallback#436

Open
kirtangajjar wants to merge 8 commits intosteipete:mainfrom
kirtangajjar:feature/jules-provider-4549306997791945685
Open

feat: implement Jules provider integration with identity fallback#436
kirtangajjar wants to merge 8 commits intosteipete:mainfrom
kirtangajjar:feature/jules-provider-4549306997791945685

Conversation

@kirtangajjar
Copy link

Summary

This PR implements the Jules provider integration, allowing users to track their Google Jules asynchronous coding agent usage.

Key Features

  • Jules Status Parsing: Robust parsing for jules remote list --session, correctly identifying active sessions.
  • Quota Logic: Added a 100-session limit with a "24h rolling" window display, matching the observed Jules quota system.
  • Identity Fallback: Implements a smart fallback leveraging Gemini credentials (~/.gemini/oauth_creds.json) to display the user's email and subscription tier (Paid/Free). This bypasses the Jules CLI's restrictive OAuth scopes.
  • Registration: Full registration in ProviderDescriptorRegistry, ProviderImplementationRegistry, and BinaryLocator.
  • UI/UX: Custom vector SVG logo, Google Blue branding, and polished menu bar display (Email • Paid/Free).
  • Stability: Fixed exhaustive switch errors throughout the app and resolved a race condition in ProviderVersionDetector.

Verification

  • Full test suite passed (816 tests).
  • Verified via CLI: CodexBarCLI usage --provider jules correctly reports sessions, email, and plan status.
  • Verified icon rendering in menu bar and settings.

google-labs-jules bot and others added 5 commits February 25, 2026 20:16
This change adds support for tracking Jules usage via the `jules` CLI.
It introduces a new provider `Jules` that checks for active sessions using `jules remote list --session`.

Changes:
- Added `.jules` to `UsageProvider` and `IconStyle` in `Providers.swift`.
- Created `JulesProviderDescriptor` in `Sources/CodexBarCore/Providers/Jules/`.
- Implemented `JulesStatusProbe` to parse CLI output.
- Added `JulesProviderImplementation` for UI settings.

Co-authored-by: kirtangajjar <8456197+kirtangajjar@users.noreply.github.com>
- Implement Jules status parsing from CLI (jules remote list --session).
- Add 100-session quota logic with 24h rolling window display.
- Implement identity fallback (email and plan) leveraging Gemini credentials.
- Register Jules in ProviderDescriptorRegistry, ProviderImplementationRegistry, and BinaryLocator.
- Fix exhaustive switch errors across CLI, Widget, and Core components.
- Add JulesStatusProbeTests and update existing SettingsStoreTests.
- Fix race condition in ProviderVersionDetector.
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2413915fe1

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

- Map CLI non-zero exit to provider error parsing.
- Bound tier lookup request by probe timeout.
- Standardize identity fallback method naming.
@kirtangajjar
Copy link
Author

Addressed feedback from Codex Review:

  • Fixed Jules CLI error mapping: Catching non-zero exit codes to ensure 'login required' messages reach the parser.
  • Added timeout to identity/tier fetch to prevent blocking.
  • Kept the Gemini identity fallback as it is a requested feature for this integration, but renamed the method to fetchIdentityFromCLIState to reflect its purpose better.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant