Review Codex MCP refactor issues

This commit is contained in:
Mohamed Boudra
2025-12-25 00:38:17 +07:00
parent 74ff71c848
commit e546009190
2 changed files with 33 additions and 3 deletions

View File

@@ -0,0 +1,23 @@
# Codex MCP refactor review
Scope:
- packages/server/src/server/agent/providers/codex-mcp-agent.ts
- packages/server/src/server/agent/providers/codex-mcp-agent.test.ts
- packages/server/src/server/agent/agent-sdk-types.ts
Findings
1) Multi-key normalization remains in Codex MCP schemas (still “guessing” across multiple key names).
- Evidence:
- Session identifiers normalize conversation id from multiple keys in `packages/server/src/server/agent/providers/codex-mcp-agent.ts:265-282`.
- Read file items accept `path`, `file_path`, and `filePath` and merge output content from multiple fields in `packages/server/src/server/agent/providers/codex-mcp-agent.ts:605-650`.
- MCP tool calls normalize `server`/`tool` across many alternative keys in `packages/server/src/server/agent/providers/codex-mcp-agent.ts:654-717`.
- Permission params normalize `call_id`/`codex_call_id`/`codex_event_id` and `command`/`codex_command`, `cwd`/`codex_cwd` in `packages/server/src/server/agent/providers/codex-mcp-agent.ts:939-980`.
2) Related type definitions still use `Record<string, unknown>`.
- Evidence:
- `packages/server/src/server/agent/agent-sdk-types.ts:17`, `:34`, `:94`, `:103`, `:105`, `:111`, `:132`, `:167`, `:170`.
Notes
- No `as` casts or `??` fallbacks were found in `packages/server/src/server/agent/providers/codex-mcp-agent.ts` or `packages/server/src/server/agent/providers/codex-mcp-agent.test.ts`.
- No `Record<string, unknown>` usage remains in the Codex MCP provider or its tests.

13
plan.md
View File

@@ -518,11 +518,18 @@ Build a new Codex MCP provider sidebyside with the existing Codex SDK prov
- **Done (2025-12-25 00:34)**: WHAT: replaced Codex MCP event parsing with Zod-normalized schemas, strict thread/item handling, and typed permission/config parsing in `packages/server/src/server/agent/providers/codex-mcp-agent.ts:856`, `packages/server/src/server/agent/providers/codex-mcp-agent.ts:904`, `packages/server/src/server/agent/providers/codex-mcp-agent.ts:1951`, `packages/server/src/server/agent/providers/codex-mcp-agent.ts:2447`; removed dynamic import/cast helpers and added Zod-based parsing utilities in `packages/server/src/server/agent/providers/codex-mcp-agent.test.ts:98`, `packages/server/src/server/agent/providers/codex-mcp-agent.test.ts:131`, `packages/server/src/server/agent/providers/codex-mcp-agent.test.ts:233`; added provider_event to stream event type in `packages/server/src/server/agent/agent-sdk-types.ts:77`. RESULT: Codex MCP provider/test utilities no longer use `as` casts, `Record<string, unknown>`, or `??` fallbacks; events are validated via Zod at the boundary with typed handling. EVIDENCE: `rg -n "as |Record<string, unknown>|\\?\\?" packages/server/src/server/agent/providers/codex-mcp-agent.ts packages/server/src/server/agent/providers/codex-mcp-agent.test.ts` (no matches).
- [ ] **Review**: Verify CRITICAL REFACTOR removed all flagged issues.
- [x] **Review**: Verify CRITICAL REFACTOR removed all flagged issues.
- Check `codex-mcp-agent.ts`, `codex-mcp-agent.test.ts`, and related files for:
- `as` casts (outside Zod parse outputs)
- `Record<string, unknown>` or adhoc casts
- `??` fallbacks on required fields
- multikey guessing for the same field
- `??` fallbacks on required fields
- multikey guessing for the same field
- If any remain, add a followup fix task immediately after this review.
- **Done (2025-12-25 00:37)**: WHAT: documented remaining multi-key normalization and lingering Record types in `REPORT-codex-mcp-refactor-review.md:1` and marked review complete in `plan.md:521`. RESULT: review confirms no `as`/`??`/Record usage in Codex MCP provider/test files but identifies remaining multi-key normalization and related Record types in `agent-sdk-types.ts`. EVIDENCE: `rg -n "\\bas\\b|Record<string, unknown>|\\?\\?" packages/server/src/server/agent/providers/codex-mcp-agent.ts packages/server/src/server/agent/providers/codex-mcp-agent.test.ts packages/server/src/server/agent/agent-sdk-types.ts` and report contents.
- [ ] **Fix**: Eliminate remaining multi-key normalization in Codex MCP schemas.
- Replace `firstString`-based normalization with explicit Zod discriminated unions per event variant (single canonical key per variant) and fail fast on unknown shapes.
- Remove multi-key permission/call-id normalization by defining canonical permission event schemas and updating tests/emitters accordingly.
- Re-evaluate `Record<string, unknown>` usage in `agent-sdk-types.ts` and replace with explicit types where possible.