-
Notifications
You must be signed in to change notification settings - Fork 241
[Go SDK] Port .harness() to Go SDK #207
Copy link
Copy link
Closed
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:goGo SDK relatedGo SDK related
Milestone
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:goGo SDK relatedGo SDK related
Overview
Port the
.harness()feature to the Go SDK. All 4 providers use CLI subprocess (no native Go SDKs exist for any coding agent).Design doc:
docs/design/harness-v2-design.md(Sections 4, 8.3)Scope
Go SDK (
sdk/go/harness/)HarnessConfigstruct (insdk/go/agent/harness.go)result.go—HarnessResult,RawResult,Metricstypesprovider.go—Providerinterfacefactory.go—BuildProvider()functionrunner.go—Runnerwith retry + schema orchestrationschema.go— Schema handling (JSON Schema from struct tags)cli.go— Shared CLI subprocess utilitiesclaudecode.go— Claude Code provider (CLI-based:claude -p)codex.go— Codex provider (CLI-based:codex exec)gemini.go— Gemini provider (CLI-based)opencode.go— OpenCode provider (CLI-based)Agent.Harness()/Agent.HarnessRunner())runner_test.go,schema_test.go)Remaining Work
codex.go) — not yet implementedgemini.go) — not yet implementedBuildProvider()factory (factory.go) — not yet implementedNotes
json.Unmarshalwith struct tagsDependencies
Acceptance Criteria
go test ./...clean