# kcode-k1-codex-shim
This crate provides the sequential per-conversation bridge over `kcode-k1-codex-runtime` 0.2.0 and reexports its facade types.
`ToolCallLauncher<B>::launch_stage(text, boxes)` accepts one assistant-output stage: text accumulated since the preceding wave plus an ordered vector of converted tool-call boxes.
On the first tool call, `infer` nonblockingly drains only already-buffered consecutive calls into the same wave; it uses no timer and preserves the first non-call event as ordered lookahead.
The stage callback must succeed before any call in that wave is acknowledged. Calls that arrive only after an acknowledgement form later waves.
Stage text and calls are not returned again. `ShimOutput` contains only assistant text accumulated after the final wave, or no items.
Launcher rejection certifies that no call in the wave launched and sends no acknowledgement. Failure after an accepted stage or active turn makes the shim unusable and never licenses replay.
`ASYNC_TOOL_ACKNOWLEDGEMENT` remains the exact successful native result; no current-turn tool result is supplied.
Externally recorded boxes prefix the next fresh turn and clear only after start acceptance. `close_conversation` is ready-only and retains pending boxes.
Tool execution, persistence, scheduling, retries, and recovery remain outside this crate.