From be92cb2dd297cbaf5d3f3f4465e4dcdae9702669 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E6=A9=98?= Date: Thu, 4 Jun 2026 22:36:44 +0000 Subject: [PATCH] feat: agent-claude-code reports real $usage from stream-json output - Map parsed numTurns, inputTokens, outputTokens, durationMs to Usage type - Add @united-workforce/protocol dependency + tsconfig reference - 747 tests pass Fixes #77 Refs #68 --- packages/agent-claude-code/package.json | 1 + packages/agent-claude-code/src/claude-code.ts | 10 +++++++++- packages/agent-claude-code/tsconfig.json | 2 +- pnpm-lock.yaml | 3 +++ 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/agent-claude-code/package.json b/packages/agent-claude-code/package.json index 31cf308..3366135 100644 --- a/packages/agent-claude-code/package.json +++ b/packages/agent-claude-code/package.json @@ -23,6 +23,7 @@ }, "dependencies": { "@ocas/core": "^0.3.0", + "@united-workforce/protocol": "workspace:^", "@united-workforce/util": "workspace:^", "@united-workforce/util-agent": "workspace:^" }, diff --git a/packages/agent-claude-code/src/claude-code.ts b/packages/agent-claude-code/src/claude-code.ts index 516e285..5bc81a3 100644 --- a/packages/agent-claude-code/src/claude-code.ts +++ b/packages/agent-claude-code/src/claude-code.ts @@ -1,5 +1,6 @@ import { spawn } from "node:child_process"; import type { Store } from "@ocas/core"; +import type { Usage } from "@united-workforce/protocol"; import { createLogger } from "@united-workforce/util"; import { type AgentContext, @@ -145,7 +146,14 @@ async function processClaudeOutput( ); } - return { output, detailHash, sessionId, assembledPrompt, usage: null }; + const usage: Usage = { + turns: parsed.numTurns, + inputTokens: parsed.usage.inputTokens, + outputTokens: parsed.usage.outputTokens, + duration: Math.round(parsed.durationMs / 1000), + }; + + return { output, detailHash, sessionId, assembledPrompt, usage }; } // Truly unparseable output - provide enhanced error message diff --git a/packages/agent-claude-code/tsconfig.json b/packages/agent-claude-code/tsconfig.json index 7aa6c57..60576c4 100644 --- a/packages/agent-claude-code/tsconfig.json +++ b/packages/agent-claude-code/tsconfig.json @@ -2,5 +2,5 @@ "extends": "../../tsconfig.json", "compilerOptions": { "rootDir": "src", "outDir": "dist" }, "include": ["src"], - "references": [{ "path": "../util-agent" }] + "references": [{ "path": "../protocol" }, { "path": "../util-agent" }] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1aa12c6..11093aa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -63,6 +63,9 @@ importers: '@ocas/core': specifier: ^0.3.0 version: 0.3.0 + '@united-workforce/protocol': + specifier: workspace:^ + version: link:../protocol '@united-workforce/util': specifier: workspace:^ version: link:../util