Adapter 는 wire 알아 — provider 별 메시지 format, event parse, tool result shape. Orchestrator 는 loop 알아 — handler 호출 시점, JSONL log 시점, break 시점, hook apply 시점.
Adapter 안에 loop 박는 게 가장 흔한 실수
'Adapter 가 다 처리!' 가 simpler 처럼 느껴짐 — 하지만 per-call instrumentation 불가. Single tool call 에 logging hook 추가 X. Handler 실행 전 arguments 가로채기 X. Wire 와 독립적으로 loop replay-test X.
Orchestrator 패턴
Adapter 가 typed event yield (TextDelta, ToolCallRequested, ...). Orchestrator 가 ToolCallRequested 받으면 → handler 호출 → 결과를 다음 호출의 input 으로 → hook 박기 (on_tool_call, on_text_delta, on_done) 가능.
Replay-based test 의 base
Orchestrator 가 loop 를 own 하면 captured event sequence 를 CI 에서 replay 가능. JSONL → mock adapter → orchestrator 동작 검증. Wire-level diff 없이 logic regression 잡음.