Skip to content

feat: add codex support#5

Merged
sirily11 merged 3 commits into
mainfrom
codex-support
May 14, 2026
Merged

feat: add codex support#5
sirily11 merged 3 commits into
mainfrom
codex-support

Conversation

@sirily11

Copy link
Copy Markdown
Contributor

No description provided.

Copilot AI review requested due to automatic review settings May 14, 2026 09:18
@sirily11 sirily11 enabled auto-merge (squash) May 14, 2026 09:18
@autopilot-project-manager autopilot-project-manager Bot added the enhancement New feature or request label May 14, 2026
@sirily11 sirily11 merged commit 34f79a4 into main May 14, 2026
6 checks passed
@sirily11 sirily11 deleted the codex-support branch May 14, 2026 09:20

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

This PR adds multi-runtime agent support to RxCode, introducing Codex sessions alongside existing Claude Code sessions, plus related UI/UX updates (model picking, rate limits, onboarding, and summarization).

Changes:

  • Add Codex app-server integration (spawn/stream JSON-RPC over stdio) and persist session metadata for provider/origin.
  • Update UI to support per-session agent provider + provider-scoped models, runtime installation status, and provider-specific rate limits.
  • Add optional OpenAI-compatible summarization service and new tests for Codex file-change extraction + tool-result retention.

Reviewed changes

Copilot reviewed 35 out of 35 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
RxCode/Views/Sidebar/ProjectTreeView.swift Limits visible threads per project with a “show more” toggle and reworks chat row creation.
RxCode/Views/Sidebar/ProjectChatRow.swift Adds streaming progress indicator + compact time formatting and todo progress display while streaming.
RxCode/Views/Sidebar/HistoryListView.swift Switches to compact elapsed-time formatting for history timestamps.
RxCode/Views/SettingsView.swift Adds onboarding re-launch, agent runtime status section, provider-scoped model picker, and summarization settings.
RxCode/Views/Permission/PermissionQueueBanner.swift Improves banner labeling for mixed permission requests vs questions.
RxCode/Views/Onboarding/OnboardingView.swift Expands onboarding CLI check to cover Claude Code + Codex and wires completion callback.
RxCode/Views/MainView.swift Adjusts toolbar title handling and updates model picker to support provider + model pairs.
RxCode/Services/RateLimitService.swift Deduplicates concurrent rate-limit fetches with an in-flight task cache.
RxCode/Services/PersistenceService.swift Persists agent provider in session metadata and supports Codex-origin sessions in legacy paths.
RxCode/Services/PermissionServer.swift Adds a generic decision request API for non-Claude transports (e.g., Codex JSON-RPC).
RxCode/Services/OpenAISummarizationService.swift New service for OpenAI-compatible model listing + title generation.
RxCode/Services/CodexAppServer.swift New Codex app-server runtime implementation (model discovery, streaming turns, permissions bridging, rate limits).
RxCode/Services/ClaudeService.swift Renames actor to ClaudeCodeServer, adds model parameter for title generation, and keeps a compatibility typealias.
RxCode/App/RxCodeApp.swift Updates menu bar UI to be provider-aware and show provider-specific usage/status.
RxCode/App/AppState.swift Adds agent-provider plumbing throughout session lifecycle, provider-scoped rate limits, Codex installation/model discovery, and summarization routing.
README.md Updates product description and requirements to include Codex support.
Packages/Tests/RxCodeCoreTests/ToolCallFileChangeTests.swift Adds tests for Codex fileChange diff extraction and hunk synthesis.
Packages/Tests/RxCodeCoreTests/ChatMessageToolResultTests.swift Adds tests ensuring empty tool results are retained/cleaned up correctly.
Packages/Tests/RxCodeCoreTests/AgentModelTests.swift Adds tests for AgentModel coding and ChatSession provider defaulting/round-tripping.
Packages/Sources/RxCodeCore/WindowState.swift Adds per-session agent provider override in window state.
Packages/Sources/RxCodeCore/Models/SessionOrigin.swift Introduces codexAppServer origin.
Packages/Sources/RxCodeCore/Models/RateLimitUsage.swift Extends rate limit model to include optional 24h usage/reset fields.
Packages/Sources/RxCodeCore/Models/ChatThread.swift Persists provider/origin in thread summaries and round-trips into ChatSession.Summary.
Packages/Sources/RxCodeCore/Models/ChatSession.swift Adds agentProvider to sessions + summaries with backwards-compatible decoding default.
Packages/Sources/RxCodeCore/Models/ChatMessage.swift Refines tool-call retention rules and adds Codex fileChange diff extraction helpers.
Packages/Sources/RxCodeCore/Models/AgentModel.swift New AgentProvider/AgentModel types to unify provider+model identity.
Packages/Sources/RxCodeCore/CLISession/SessionMetaStore.swift Adds agent provider into persisted session meta sidecar.
Packages/Sources/RxCodeCore/CLISession/CLISessionStore.swift Loads agent provider from meta into session summaries.
Packages/Sources/RxCodeChatKit/ToolResultView.swift Renders Codex fileChange unified diffs and uses generalized edited file path accessor.
Packages/Sources/RxCodeChatKit/StatusLineView.swift Adds provider picker and provider-specific usage segments (5h/7d vs 5h/24h).
Packages/Sources/RxCodeChatKit/MessageListView.swift Adjusts streaming indicator to be provider-aware (“thinking” vs “reasoning”).
Packages/Sources/RxCodeChatKit/MessageBubble.swift Reworks assistant block rendering to group transient tools inline and updates cursor rendering path.
Packages/Sources/RxCodeChatKit/MarkdownView.swift Switches attributed markdown rendering to an AppKit text view for inline code background + trailing cursor.
Packages/Sources/RxCodeChatKit/ChatBridge.swift Plumbs agent provider into bridge state and makes rate-limit fetching provider-aware.
Packages/Sources/RxCodeChatKit/BubbleStyle.swift Tweaks user-bubble padding.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

agentText: agentText,
fiveHourText: fiveHour.map { "\(formatPercent($0))%" } ?? "—%",
jobsText: inProgress > 0 ? "\(inProgress) Job\(inProgress == 1 ? "" : "s")" : nil
statusText: inProgress > 0 ? "\(inProgress)job\(inProgress == 1 ? "" : "s")" : "IDLE"
Comment on lines 41 to +52
Image(systemName: "terminal")
.font(.system(size: ClaudeTheme.size(48)))
.foregroundStyle(ClaudeTheme.accent)

Text("Claude CLI Installation Check")
.font(.title2)
.fontWeight(.semibold)
.foregroundStyle(ClaudeTheme.textPrimary)

if isCheckingCLI {
ProgressView("Checking...")
} else if cliInstalled {
Label("Installed — \(cliVersion ?? "")", systemImage: "checkmark.circle.fill")
.foregroundStyle(ClaudeTheme.statusSuccess)
.font(.body)
} else {
VStack(spacing: 12) {
Label("Claude CLI not found", systemImage: "xmark.circle.fill")
.foregroundStyle(ClaudeTheme.statusError)
.font(.body)

if let error = cliError {
Text(error)
.font(.caption)
.foregroundStyle(ClaudeTheme.textSecondary)
}
}
Comment on lines +441 to +445
.contentShape(Rectangle())
}
.buttonStyle(.plain)
.help(showsAllThreads ? "Show only the first five threads" : "Show all threads in this project")
}
@sirily11

Copy link
Copy Markdown
Contributor Author

🎉 This PR is included in version 1.1.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

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

Labels

enhancement New feature or request released

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants