Skip to content

[SDK] Gemini CLI provider for .harness() #205

@santoshkumarradha

Description

@santoshkumarradha

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.pyGeminiProvider implementing HarnessProvider:
    • CLI: gemini --output-format json [--model model] [--approval-mode yolo] prompt
    • Parse JSON/JSONL output from stdout
    • Extract final result, messages, metrics
    • cwd passed as subprocess working directory
    • Binary path via gemini_bin
  • Register in _factory.py for "gemini"
  • Tests with mocked subprocess

TypeScript (sdk/typescript/src/harness/providers/)

  • gemini.tsGeminiProvider implementing HarnessProvider
    • Uses shared CLI subprocess utility from cli.ts
  • Register in factory.ts
  • Tests

Key Details

  • --output-format json or --output-format stream-json for JSONL output
  • --approval-mode yolo maps to permission_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

Metadata

Metadata

Labels

ai-friendlyWell-documented task suitable for AI-assisted developmentarea:harnessCoding agent harness integrationenhancementNew feature or requestsdk:pythonPython SDK relatedsdk:typescriptTypeScript SDK related

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions