Why: acceptance clause 1 requires the anthropic preset to complete a tool-call round against recorded HTTP fixtures; audit N4's root cause was an offline body builder the real client never used, with no tool_use/thinking support on the wire. Evidence: GOWORK=off go vet + go test -count=1 ./... green; TestAnthropicPresetToolRound drives the preset through tools request → tool_use → tool_result → final text with thinking-signature round-trip against byte-recorded SSE fixtures; TestAnthropicBodyShape pins block forms and cache_control; legacy OpenAI path untouched (Client.Protocol zero value). Impact: the anthropic preset now means the native Messages API (the compat shim remains reachable via models.json custom providers); audit N4 closes. BuildBody shares anthropicBody with the live client. Refs: Agent-System-Documents#42 (N2 plan WP2), audit N4
21 lines
897 B
Plaintext
21 lines
897 B
Plaintext
event: message_start
|
|
data: {"type":"message_start","message":{"id":"msg_01","type":"message","role":"assistant","model":"claude-fixture","usage":{"input_tokens":88,"cache_read_input_tokens":0,"cache_creation_input_tokens":0}}}
|
|
|
|
event: content_block_start
|
|
data: {"type":"content_block_start","index":0,"content_block":{"type":"tool_use","id":"toolu_01ABC","name":"read_file"}}
|
|
|
|
event: content_block_delta
|
|
data: {"type":"content_block_delta","index":0,"delta":{"type":"input_json_delta","partial_json":"{\"path\":"}}
|
|
|
|
event: content_block_delta
|
|
data: {"type":"content_block_delta","index":0,"delta":{"type":"input_json_delta","partial_json":"\"main.go\"}"}}
|
|
|
|
event: content_block_stop
|
|
data: {"type":"content_block_stop","index":0}
|
|
|
|
event: message_delta
|
|
data: {"type":"message_delta","delta":{"stop_reason":"tool_use"},"usage":{"output_tokens":31}}
|
|
|
|
event: message_stop
|
|
data: {"type":"message_stop"}
|