Context
Follow-up from #268 and part of the provider reasoning documentation effort in #267.
We need active probing across providers and API formats to decide shim policies and cross-format conversion behavior instead of relying on assumptions. The immediate trigger was Argo Anthropic rejecting prior thinking blocks with missing/empty/invalid signatures, which led to unsigned_reasoning_blocks: preserve for argo--anthropic.
Goal
Build and run a cross-format probing matrix covering:
- source API format → target shim/API format
- stream and non-stream paths
- reasoning/thinking blocks with:
- no signature
- empty signature
- valid provider-generated signature where available
- tool calls and tool results
- provider metadata round-trip fields:
- Anthropic
thinking.signature
- Google
thoughtSignature
- OpenAI-compatible
reasoning_details / encrypted_content
Initial provider/shim scope
argo--anthropic
argo--openai_chat
openrouter
google
minimax--openai_chat
minimax--anthropic
volcengine--openai_chat
volcengine--openai_responses
deepseek
Outputs
Related
Context
Follow-up from #268 and part of the provider reasoning documentation effort in #267.
We need active probing across providers and API formats to decide shim policies and cross-format conversion behavior instead of relying on assumptions. The immediate trigger was Argo Anthropic rejecting prior
thinkingblocks with missing/empty/invalid signatures, which led tounsigned_reasoning_blocks: preserveforargo--anthropic.Goal
Build and run a cross-format probing matrix covering:
thinking.signaturethoughtSignaturereasoning_details/encrypted_contentInitial provider/shim scope
argo--anthropicargo--openai_chatopenroutergoogleminimax--openai_chatminimax--anthropicvolcengine--openai_chatvolcengine--openai_responsesdeepseekOutputs
references/provider_model_params/raw_probes/or another agreed locationRelated