e067a2f25a
CI / check (pull_request) Failing after 9m51s
Package mapping: - @uncaged/cli-workflow → @united-workforce/cli - @uncaged/workflow-protocol → @united-workforce/protocol - @uncaged/workflow-util → @united-workforce/util - @uncaged/workflow-util-agent → @united-workforce/util-agent - @uncaged/workflow-agent-hermes → @united-workforce/agent-hermes - @uncaged/workflow-agent-claude-code → @united-workforce/agent-claude-code - @uncaged/workflow-agent-builtin → @united-workforce/agent-builtin - @uncaged/workflow-dashboard → @united-workforce/dashboard Changes: - 8 package.json name + dependency refs - 82 files: import statements updated - .changeset/config.json updated - CLAUDE.md updated - bunfig.toml restored for preload CLI command (uwf) and directory names unchanged. Closes shazhou/united-workforce#8
92 lines
2.5 KiB
Markdown
92 lines
2.5 KiB
Markdown
# @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`:
|
|
|
|
```bash
|
|
bun add -g @united-workforce/agent-claude-code
|
|
```
|
|
|
|
Requires the `claude` CLI on `PATH`.
|
|
|
|
## CLI Usage
|
|
|
|
Invoked by `uwf thread step`:
|
|
|
|
```bash
|
|
uwf-claude-code <thread-id> <role>
|
|
```
|
|
|
|
Configure or override the agent:
|
|
|
|
```bash
|
|
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
|
|
|
|
```typescript
|
|
function createClaudeCodeAgent(): () => Promise<void>
|
|
function buildClaudeCodePrompt(ctx: AgentContext): string
|
|
```
|
|
|
|
### Session detail
|
|
|
|
```typescript
|
|
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)
|
|
|
|
```typescript
|
|
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`).
|