-
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 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.py—ClaudeCodeProviderimplementingHarnessProvider:- Uses
claude_agent_sdk.query()async generator - Maps
HarnessOptions→ClaudeAgentOptions - Collects messages, extracts result text, builds metrics
- Lazy import of
claude_agent_sdk(optional dependency) - Graceful error if SDK not installed
- Uses
- Register in
_factory.pyfor provider name"claude-code" - Tests with mocked
claude_agent_sdk(mock the query generator)
TypeScript (sdk/typescript/src/harness/providers/)
-
claude.ts—ClaudeCodeProviderimplementingHarnessProvider:- Uses
@anthropic-ai/claude-agent-sdkquery function - Same mapping and collection logic
- Optional peer dependency
- Uses
- Register in
factory.ts - Tests with mocked SDK
Key Details
claude_agent_sdksupports: 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
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