Skip to content

[SDK] Claude Code provider for .harness() #202

@santoshkumarradha

Description

@santoshkumarradha

Overview

Implement the Claude Code provider using native SDKs (claude_agent_sdk for Python, @anthropic-ai/claude-agent-sdk for TypeScript). SDK-first approach — no subprocess.

Branch: feat/harness-v2
Design doc: docs/design/harness-v2-design.md (Sections 4, 10.1)

Scope

Python (sdk/python/agentfield/harness/providers/)

  • claude.pyClaudeCodeProvider implementing HarnessProvider:
    • Uses claude_agent_sdk.query() async generator
    • Maps HarnessOptionsClaudeAgentOptions
    • Collects messages, extracts result text, builds metrics
    • Lazy import of claude_agent_sdk (optional dependency)
    • Graceful error if SDK not installed
  • Register in _factory.py for provider name "claude-code"
  • Tests with mocked claude_agent_sdk (mock the query generator)

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

  • claude.tsClaudeCodeProvider implementing HarnessProvider:
    • Uses @anthropic-ai/claude-agent-sdk query function
    • Same mapping and collection logic
    • Optional peer dependency
  • Register in factory.ts
  • Tests with mocked SDK

Key Details

  • claude_agent_sdk supports: model, cwd, max_turns, allowed_tools, system_prompt, max_budget_usd, permission_mode, env
  • Output is async generator of messages — collect into list, extract final text
  • Session ID from SDK response for potential resume
  • Cost from usage metrics in response

Acceptance Criteria

  • Provider correctly maps all HarnessOptions to Claude SDK options
  • Handles SDK not installed (ImportError → clear error message)
  • Collects all messages and extracts final text result
  • Extracts cost/usage metrics
  • Registered in factory under "claude-code"
  • All tests pass with mocked SDK

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