Skip to content

[SDK] Codex provider for .harness() #203

@santoshkumarradha

Description

@santoshkumarradha

Overview

Implement the Codex provider. Python uses CLI subprocess (codex exec --json). TypeScript uses native SDK (@openai/codex-sdk).

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

Scope

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

  • codex.pyCodexProvider implementing HarnessProvider:
    • CLI subprocess: codex exec --json [--full-auto] [-C cwd] prompt
    • Parse JSONL event stream from stdout
    • Extract final result text, messages, metrics
    • Support configurable binary path via codex_bin
  • _cli.py — Shared async subprocess utilities:
    • async run_cli(cmd, env, cwd, timeout) → stdout, stderr, returncode
    • JSONL line parser
  • Register in _factory.py for provider name "codex"
  • Tests with mocked subprocess

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

  • codex.tsCodexProvider implementing HarnessProvider:
    • Uses @openai/codex-sdk (native TS SDK, optional peer dep)
    • Maps HarnessOptions → Codex SDK options
    • Collects results
  • cli.ts — Shared subprocess utilities (for other CLI providers)
  • Register in factory.ts
  • Tests with mocked SDK

Key Details

  • Codex CLI outputs JSONL events to stdout
  • --full-auto maps to permission_mode: "auto"
  • -C <path> sets working directory
  • --json enables JSONL output mode
  • Binary path configurable via HarnessConfig.codex_bin

Acceptance Criteria

  • CLI command constructed correctly for all option combinations
  • JSONL parsing extracts messages and final result
  • Handles binary not found (FileNotFoundError → clear error)
  • Handles non-zero exit codes
  • Shared CLI utilities reusable by Gemini/OpenCode providers
  • 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