Files
united-workforce/packages/agent-claude-code
xiaoju d0ef2c4676
CI / check (pull_request) Failing after 1m13s
chore: upgrade @ocas/* to ^0.3.0, migrate better-sqlite3 → node:sqlite
- @ocas/core and @ocas/fs upgraded from ^0.2.2 to ^0.3.0
- agent-hermes: replace better-sqlite3 with node:sqlite (DatabaseSync)
- Remove better-sqlite3 and @types/better-sqlite3 dependencies
- Fix remaining bun references in cli test helpers (execFileSync)

Refs #28
2026-06-04 01:59:00 +00:00
..

@united-workforce/agent-claude-code

uwf-claude-code agent — spawns the Claude Code CLI and captures session detail.

Overview

Layer 3 agent implementation. Spawns the claude CLI with a composed system prompt (role definition, task, prior steps, edge prompt). Parses stream or JSON stdout, caches session IDs for multi-turn continuation, and stores raw output plus structured detail in CAS.

Dependencies: @ocas/core, @united-workforce/util-agent

Installation

Included as the uwf-claude-code binary when you install @united-workforce/agent-claude-code:

bun add -g @united-workforce/agent-claude-code

Requires the claude CLI on PATH.

CLI Usage

Invoked by uwf thread step:

uwf-claude-code <thread-id> <role>

Configure or override the agent:

uwf setup --agent claude-code
uwf thread step <thread-id> --agent uwf-claude-code

Environment variables set by the engine:

Variable Purpose
UWF_EDGE_PROMPT Moderator edge instruction for this step

API

All exports come from src/index.ts.

Agent factory

function createClaudeCodeAgent(): () => Promise<void>
function buildClaudeCodePrompt(ctx: AgentContext): string

Session detail

function parseClaudeCodeStreamOutput(stdout: string): ClaudeCodeParsedResult | null
function parseClaudeCodeJsonOutput(stdout: string): ClaudeCodeParsedResult | null
function storeClaudeCodeDetail(
  store: Store,
  parsed: ClaudeCodeParsedResult,
  sessionId: string,
): Promise<string>
function storeClaudeCodeRawOutput(store: Store, rawOutput: string): Promise<string>

Usage (library)

import { createClaudeCodeAgent, buildClaudeCodePrompt } from "@united-workforce/agent-claude-code";

const main = createClaudeCodeAgent();
void main();

Internal Structure

src/
├── index.ts
├── cli.ts              Binary entrypoint
├── claude-code.ts      createClaudeCodeAgent, buildClaudeCodePrompt, spawn logic
├── session-detail.ts   Parse stdout, store CAS detail nodes
├── schemas.ts          Claude Code detail CAS schemas
└── types.ts            ClaudeCodeParsedResult, message shapes

Configuration

Uses session caching from @united-workforce/util-agent (getCachedSessionId / setCachedSessionId). No separate config file — relies on the Claude Code CLI's own authentication.

Maximum turns per invocation: 90 (constant in claude-code.ts).