Repository navigation
v0.7.0
What changed
Fix: DeepSeek Responses tool-loop replay compatibility
Two failure modes fixed:
-
Interleaved items inside a call/output pair — Codex can insert PostToolUse hook context between a
function_calland its output, which DeepSeek rejects. The router now pulls the output up to sit directly after its call before forwarding. -
Multiple tool calls behind a single reasoning item — DeepSeek rejects the replayed turn with a misleading "reasoning_text must be passed back" error. The catalog now advertises
supports_parallel_tool_calls = falseand the router forcesparallel_tool_calls: falseon every DeepSeek-bound body. Already-wedged sessions are repaired by duplicating reasoning per extra call, scoped to the correct turn boundary.
Covers function_call, custom_tool_call (freeform apply_patch), and local_shell_call.
Docs
- README compressed from ~150 lines to ~80 for human readability; granular details moved to AGENTS.md.
- AGENTS.md records invariants 13–15 (replay constraints, platform differences, non-routed features).
Files changed
src/proxy.mjs | src/catalog.mjs | test/proxy.test.mjs | AGENTS.md | README.md | README.en.md | package.json