-
Notifications
You must be signed in to change notification settings - Fork 129
Open
Labels
ai-friendlyWell-documented task suitable for AI-assisted developmentWell-documented task suitable for AI-assisted developmentarea:harnessCoding agent harness integrationCoding agent harness integrationenhancementNew feature or requestNew feature or requestsdk:pythonPython SDK relatedPython SDK relatedsdk:typescriptTypeScript SDK relatedTypeScript SDK related
Description
Overview
Implement the Gemini CLI provider using subprocess (gemini CLI). No native SDK exists — CLI-only for both Python and TypeScript.
Branch: feat/harness-v2
Design doc: docs/design/harness-v2-design.md (Sections 4, 10.3)
Scope
Python (sdk/python/agentfield/harness/providers/)
-
gemini.py—GeminiProviderimplementingHarnessProvider:- CLI:
gemini --output-format json [--model model] [--approval-mode yolo] prompt - Parse JSON/JSONL output from stdout
- Extract final result, messages, metrics
cwdpassed as subprocess working directory- Binary path via
gemini_bin
- CLI:
- Register in
_factory.pyfor"gemini" - Tests with mocked subprocess
TypeScript (sdk/typescript/src/harness/providers/)
-
gemini.ts—GeminiProviderimplementingHarnessProvider- Uses shared CLI subprocess utility from
cli.ts
- Uses shared CLI subprocess utility from
- Register in
factory.ts - Tests
Key Details
--output-format jsonor--output-format stream-jsonfor JSONL output--approval-mode yolomaps topermission_mode: "auto"--model <model>for model selection- No native schema support — relies entirely on file-write strategy
- Binary path configurable via
HarnessConfig.gemini_bin
Acceptance Criteria
- CLI command constructed correctly
- Output parsing works for Gemini's JSON format
- Handles binary not found
- Handles non-zero exit codes
- Reuses shared CLI utilities from Codex issue
- All tests pass
Dependencies
- Depends on: [SDK] Core types & provider interface for .harness() #199 (types), [SDK] HarnessRunner with retry & schema orchestration for .harness() #201 (runner), [SDK] Codex provider for .harness() #203 (codex — for shared CLI utils), [SDK] Wire .harness() into Agent class #204 (agent wiring)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
ai-friendlyWell-documented task suitable for AI-assisted developmentWell-documented task suitable for AI-assisted developmentarea:harnessCoding agent harness integrationCoding agent harness integrationenhancementNew feature or requestNew feature or requestsdk:pythonPython SDK relatedPython SDK relatedsdk:typescriptTypeScript SDK relatedTypeScript SDK related