44d0bdc032
Adds internal/provider/subprocess — a provider.Provider that spawns CLI agents (claude, gemini, vibe) as subprocesses and streams their output. - FormatParser interface + three parsers for claude-stream-json, gemini-stream-json, and vibe-streaming formats; fixtures captured from real binaries - subprocessStream: pull-based stream.Stream over subprocess stdout with bounded stderr capture (8KB) and guarded reap() to prevent double-Wait - DiscoverCLIAgents: parallel PATH scan with 10s timeout, stable ordering - Provider: only the last user message is passed as --prompt; all other request fields (history, tools, system prompt) are intentionally ignored (see package doc) - main.go: discover and register CLI arms at startup; TODO(P0c) for tier-based routing to enforce preference order explicitly
4 lines
682 B
JSON
4 lines
682 B
JSON
{"role": "system", "content": "You are Mistral Vibe, a CLI coding agent built by Mistral AI.", "injected": false, "reasoning_content": null, "reasoning_state": null, "tool_calls": null, "name": null, "tool_call_id": null, "message_id": null}
|
|
{"role": "user", "content": "say the word hi and nothing else", "injected": false, "reasoning_content": null, "tool_calls": null, "name": null, "tool_call_id": null, "message_id": "a358a1ec"}
|
|
{"role": "assistant", "content": "hi", "injected": false, "reasoning_content": "The user wants me to say the word \"hi\" and nothing else.", "reasoning_state": null, "tool_calls": null, "name": null, "tool_call_id": null, "message_id": "c8ecdd49"}
|