Commit Graph

172 Commits

Author SHA1 Message Date
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 Boudra
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 Boudra
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 Boudra
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 Boudra
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 Boudra
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 Boudra
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 Boudra
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 Boudra
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 Boudra
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
Mohamed Boudra
abe3a42478 feat: add agent runtime info tracking with model detection from rollout files 2025-12-21 23:16:49 +07:00
Mohamed Boudra
a70842d9ef feat: auto-detect and use system-installed codex binary from PATH
Implements automatic detection and usage of system-installed Codex binary
with transparent fallback to embedded binary.

Changes:
- Add detectSystemCodexPath() to check for codex in PATH using `which`
- Update CodexAgentClient constructor to auto-detect system binary
- Log which binary is being used (system vs embedded) for debugging
- Preserve ability to explicitly override via codexPathOverride option

Benefits:
- No manual configuration required
- Uses latest system codex when available
- Seamless fallback to embedded binary
- Transparent to rest of codebase

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 13:30:49 +07:00
Mohamed Boudra
b8de55f31b Merge branch 'main' of github.com:boudra/voice-dev 2025-12-20 12:58:17 +07:00
Mohamed Boudra
fb30160cda feat: add batch clear attention and orchestrator mode instructions 2025-12-20 05:57:54 +00:00
Mohamed Boudra
5466ea1967 Merge branch 'main' of github.com:boudra/voice-dev 2025-12-20 12:57:33 +07:00
Mohamed Boudra
a6d2ea3153 fix: add input field to tool call data and simplify CLAUDE.md orchestrator docs 2025-12-20 12:56:59 +07:00
Mohamed Boudra
0f1758709d feat: add "Requires Attention" agent grouping feature
Implement a new UI section that surfaces agents requiring user attention at the top of the agent list. This includes agents that are running, have pending permissions, or have errors.

**Backend changes:**
- Add `requiresAttention` field to agent projections and SDK types
- Implement logic in AgentManager to detect attention states (running, pending permissions, errors)
- Add WebSocket message handler to notify clients of attention state changes
- Update session state to include attention tracking

**Frontend changes:**
- Add "REQUIRES ATTENTION" section in agent-list component with visual prominence
- Update useAggregatedAgents hook to expose `requiresAttention` agents
- Enhance session store to track and update attention states
- Add real-time updates via WebSocket for attention state changes
- Update type definitions across agent directory and stream types

Verified working via Playwright MCP testing on localhost:8081.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 11:27:08 +00:00