Files
wehub-resource-sync 98e40dac97
CLI Smoke Test / smoke-test-linux (20) (push) Has been cancelled
CLI Smoke Test / smoke-test-linux (24) (push) Has been cancelled
CLI Smoke Test / smoke-test-windows (20) (push) Has been cancelled
CLI Smoke Test / smoke-test-windows (24) (push) Has been cancelled
Expo App TypeScript typecheck / typecheck (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:40:49 +08:00

59 lines
1.9 KiB
Markdown

# Codex Experiments
These scripts are focused protocol probes, not production code.
## What Each Experiment Shows
### `experiments/codex.ts` (legacy MCP path)
Shows that we can run `codex mcp-server`, receive permission elicitation, and
auto-approve requests while preserving Codex-specific fields in elicitation
payloads.
What this demonstrates:
- Why we needed a passthrough elicitation schema (`z4mini.looseObject`) to keep
fields like `codex_call_id`
- Why the elicitation response includes both MCP `action` and Codex
`decision`
- How sandbox + approval policy combinations affect whether permission prompts
appear
### `experiments/codex-reject.ts` (legacy MCP path)
Shows the rejection/abort edge case: when permission is denied, Codex can emit
`turn_aborted` without completing the pending tool call response.
What this demonstrates:
- Why `turn_aborted` must abort the client-side controller
- That aborting the controller unblocks `callTool` promptly after rejection
- Regression signal for "permission reject hangs indefinitely"
### `experiments/test-codex-protocol.cjs` (current app-server path)
Shows a minimal JSON-RPC conversation with `codex app-server --listen stdio://`
using `initialize` -> `thread/start` -> `turn/start`.
What this demonstrates:
- The wire-level request/notification flow for app-server
- That a turn completes (`task_complete`/`turn_aborted`) end-to-end
- A minimal smoke test for validating protocol assumptions without Happy CLI
## Status
- Current production integration: **app-server path**
- Legacy reference/regression scripts: `codex.ts`, `codex-reject.ts`
- Current protocol probe: `test-codex-protocol.cjs`
## Running
```bash
# Legacy MCP exploration (auto-approve path)
npx tsx experiments/codex.ts
# Legacy MCP rejection/unblock exploration
npx tsx experiments/codex-reject.ts
# Current app-server protocol smoke test
node experiments/test-codex-protocol.cjs
```