Tighten Codex MCP schema normalization

This commit is contained in:
Mohamed Boudra
2025-12-25 01:04:25 +07:00
parent e546009190
commit 4221df1e2d
4 changed files with 744 additions and 268 deletions
+2 -1
View File
@@ -528,8 +528,9 @@ Build a new Codex MCP provider side‑by‑side with the existing Codex SDK prov
- If any remain, add a follow‑up 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.
- [x] **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.
- **Done (2025-12-25 01:03)**: WHAT: added exclusive-key validation helpers and normalized read_file/mcp_tool_call/web_search/permission/patch parsing in `packages/server/src/server/agent/providers/codex-mcp-agent.ts:132`, `packages/server/src/server/agent/providers/codex-mcp-agent.ts:223`, `packages/server/src/server/agent/providers/codex-mcp-agent.ts:927`, `packages/server/src/server/agent/providers/codex-mcp-agent.ts:1015`, `packages/server/src/server/agent/providers/codex-mcp-agent.ts:1229`, `packages/server/src/server/agent/providers/codex-mcp-agent.ts:1436`; removed conversation_id metadata writes in `packages/server/src/server/agent/providers/codex-mcp-agent.ts:2077`; replaced Record metadata types with `AgentMetadata` in `packages/server/src/server/agent/agent-sdk-types.ts:5`; enforced exclusive output parsing helpers in `packages/server/src/server/agent/providers/codex-mcp-agent.test.ts:113`. RESULT: Codex MCP schemas/tests now fail on ambiguous multi-key payloads while emitting canonical fields and agent types no longer use Record-based metadata. EVIDENCE: `rg -n "resolveExclusiveValue|resolveExclusiveString|normalizePatchChangeDetails|PermissionParamsSchema|ReadFileItemSchema|McpToolCallItemSchema|WebSearchItemSchema" packages/server/src/server/agent/providers/codex-mcp-agent.ts` and `rg -n "AgentMetadata" packages/server/src/server/agent/agent-sdk-types.ts`.