Commit Graph
189 Commits
Author SHA1 Message Date
Mohamed Boudra a4ae93cef0 Fix MCP permission tests for on-request 2025-12-24 21:13:00 +07:00
Mohamed Boudra ff9b0e6d10 Fix Codex MCP resume conversation metadata 2025-12-24 20:58:28 +07:00
Mohamed Boudra a6300d358c Fix Codex MCP error timeline on failed turns 2025-12-24 20:41:33 +07:00
Mohamed Boudra 3652f08e3d Fix Codex MCP thread item event normalization 2025-12-24 20:38:23 +07:00
Mohamed Boudra 85af83203d Fix exit code parsing for Codex MCP 2025-12-24 20:33:53 +07:00
Mohamed Boudra c8f542fbe5 Fix Codex SDK shell command hydration status 2025-12-24 20:31:48 +07:00
Mohamed Boudra cb607ecd1d Remove MCP permission gating workarounds 2025-12-24 20:20:56 +07:00
Mohamed Boudra 42ee87cf15 Fix MCP abort test hang 2025-12-24 20:17:52 +07:00
Mohamed Boudra d0736837ff Fix Codex SDK shell command hydration 2025-12-24 20:13:13 +07:00
Mohamed Boudra 43030b792c Fix MCP permission tests with unsafe command 2025-12-24 19:58:53 +07:00
Mohamed Boudra 8489f35cdd Fix codex persistence shell command hydration 2025-12-24 19:56:33 +07:00
Mohamed Boudra 34d5b75428 Fix codex MCP persistence conversationId metadata 2025-12-24 19:45:02 +07:00
Mohamed Boudra 055a1bcefe Fix error timeline for failed Codex MCP turns 2025-12-24 19:43:05 +07:00
Mohamed Boudra 383870687f Fix Codex MCP thread item mapping 2025-12-24 19:41:14 +07:00
Mohamed Boudra c51eb75930 Fix codex-mcp command exit codes 2025-12-24 19:36:23 +07:00
Mohamed Boudra c1761a52f2 Fix codex mcp typecheck errors 2025-12-24 19:28:02 +07:00
Mohamed Boudra 9f6c9f64e3 Remove default model from Codex MCP config 2025-12-24 19:14:33 +07:00
Mohamed Boudra 457ea43259 Use untrusted default for Codex MCP auto mode 2025-12-24 19:12:26 +07:00
Mohamed Boudra 899dafff35 Fix codex mcp default model 2025-12-24 18:58:49 +07:00
Mohamed Boudra 75c2a96068 Fix Codex MCP permission elicitation parity 2025-12-24 18:53:59 +07:00
Mohamed Boudra 5b971dba69 Fix permission gating fallback for Codex MCP 2025-12-24 18:49:29 +07:00
Mohamed Boudra bcd117270e Handle Codex MCP model rejection fallback 2025-12-24 18:40:44 +07:00
Mohamed Boudra 16ccce4291 test: cover permission interrupt + read-only gating 2025-12-24 18:31:05 +07:00
Mohamed Boudra f65a134ac0 test: add codex-mcp thread/item coverage 2025-12-24 18:25:12 +07:00
Mohamed Boudra 19aaee9c26 Add Codex MCP agent provider 2025-12-24 18:13:14 +07:00
Mohamed Boudra d04fbb981c Add Codex MCP E2E test coverage 2025-12-24 17:57:49 +07:00
Mohamed Boudra 851c687b4f Add MCP persistence resume e2e test 2025-12-24 17:31:47 +07:00
Mohamed Boudra 4d75bd45e8 Add MCP event mapping parity e2e tests 2025-12-24 17:28:11 +07:00
Mohamed Boudra 797425c4e2 Merge origin/main 2025-12-24 17:21:26 +07:00
Mohamed Boudra f5961fa044 refactor(server): extract test daemon setup into shared utility and switch mcp e2e test to codex provider 2025-12-24 17:18:31 +07:00
Mohamed Boudra 9318048f51 ensure mcp waits surface permissions 2025-12-24 09:05:24 +00:00
Mohamed Boudra a24f578916 make mcp e2e test claude permissions 2025-12-24 08:55:16 +00:00
Mohamed Boudra e37d50e938 make mcp agent e2e test provider-aware 2025-12-24 08:45:02 +00:00
Mohamed Boudra e1f79c1d6f add mcp agent e2e smoke test 2025-12-24 08:38:25 +00:00
Mohamed Boudra d787c5f1bc refactor daemon bootstrap and add smoke test 2025-12-24 08:25:17 +00:00
Mohamed BoudraandClaude Opus 4.5 37da13a38b Fix markdown list text wrapping on Android
- Add custom list rendering rules in message.tsx for proper flex layout
- Remove flexWrap from list content styles (causes Android clipping)
- Use flex: 1 and flexShrink: 1 for natural text wrapping
- Add minWidth: 0 to content containers for proper shrinking

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-24 04:41:37 +00:00
Mohamed BoudraandClaude Opus 4.5 0526124fbd Fix type errors in server code
- Filter undefined values from env record for Codex SDK
- Add string type check for ParsedQs array element

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 23:11:48 +07:00
Mohamed BoudraandClaude Opus 4.5 6a9b57ae0c Simplify agent list UI and add bearer token auth for Codex MCP
- Replace SectionList with FlatList in agent list, sorting attention items to top
- Persist server selection preference in create agent modal
- Add bearer token authentication support for agent-control MCP endpoint
- Pass bearer token through Codex wrapper script for MCP auth

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 22:11:51 +07:00
Mohamed Boudra bf0ec80fb5 Move agent-control MCP config into AgentManager 2025-12-23 15:45:48 +07:00
Mohamed Boudra dc90f57567 Inject agent-control MCP URL for codex session configs 2025-12-23 15:19:49 +07:00
Mohamed Boudra 077ecae607 Wire agent-control MCP URL into codex agents 2025-12-23 15:08:34 +07:00
Mohamed Boudra e2ba6c8634 Add developer_instructions to Codex wrapper 2025-12-23 15:02:40 +07:00
Mohamed Boudra 4699297e4e Inject agent-control MCP via codex wrapper 2025-12-23 14:42:26 +07:00
Mohamed Boudra 702159fb75 Route agent MCP parent via query param 2025-12-23 13:49:18 +07:00
Mohamed BoudraandClaude Opus 4.5 2e8444eaac fix: add parentAgentId to stored agent record schema
- Added `parentAgentId` field to `STORED_AGENT_SCHEMA` in agent-registry.ts
- Updated `toStoredAgentRecord()` in agent-projections.ts to include parentAgentId
- This ensures parentAgentId is persisted to agents.json for parent/child hierarchy

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 17:47:31 +00:00
Mohamed BoudraandClaude Opus 4.5 b2850aea23 feat: auto-inject parentAgentId in MCP create_agent tool
When an agent calls the MCP create_agent tool to spawn a child agent,
the parent-child relationship is now automatically established:

- Added setManagedAgentId() to AgentSession interface (optional method)
- ClaudeAgentSession stores its managed agent ID and includes it as
  X-Caller-Agent-Id header when connecting to the agent-control MCP
- AgentManager.registerSession() calls setManagedAgentId() after
  registration so the session knows its ID before first prompt
- MCP server extracts X-Caller-Agent-Id header from init request and
  stores it as callerAgentId
- create_agent handler auto-injects callerAgentId as parentAgentId
  if not explicitly provided

This enables parent agents to spawn child agents that are correctly
associated, so they appear in the parent's Sub-Agents menu instead
of on the homepage.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 17:36:58 +00:00
Mohamed BoudraandClaude Opus 4.5 dd697defbb feat: add parentAgentId to MCP create_agent tool
Add parentAgentId optional parameter to the create_agent MCP tool input
schema so agents can create child agents with explicit parent references.
Also update registerSession() to copy parentAgentId from config to the
managed agent object.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 17:18:19 +00:00
Mohamed BoudraandClaude Opus 4.5 a574429a7b feat: add parentAgentId field to server types
Add parentAgentId field to enable agent parent/child hierarchy:
- ManagedAgentBase in agent-manager.ts
- AgentSessionConfig in agent-sdk-types.ts
- AgentSnapshotPayloadSchema in messages.ts
- toAgentPayload() in agent-projections.ts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 17:15:29 +00:00
Mohamed BoudraandClaude Opus 4.5 1bf4a1d478 fix: emit state after refreshing runtime info so clients get model updates
The Claude agent model was not showing in the UI ("Model: Unknown") because
refreshRuntimeInfo() updated agent.runtimeInfo but never called emitState()
to notify connected clients of the change.

Fixed by:
1. Adding change detection in refreshRuntimeInfo() to check if model, sessionId,
   or modeId changed
2. Calling emitState(agent) when changes are detected
3. Added debug logging in handleSystemMessage() to confirm model capture

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 16:47:42 +00:00
Mohamed BoudraandClaude Opus 4.5 e1631fcab6 feat: capture actual model from Claude SDK init message
Update handleSystemMessage() in claude-agent.ts to read the actual model
from the SDK's init message (message.model) instead of just echoing back
the configured model. This gives us the real runtime model that the SDK
selected.

Also invalidates cached runtime info when the model is updated to ensure
getRuntimeInfo() returns the new value.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 16:36:43 +00:00