@grackle-ai/common 0.132.2 → 0.133.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ahp-mapper.d.ts +42 -0
- package/dist/ahp-mapper.d.ts.map +1 -1
- package/dist/ahp-mapper.js +95 -20
- package/dist/ahp-mapper.js.map +1 -1
- package/dist/ahp-mapper.test.js +145 -5
- package/dist/ahp-mapper.test.js.map +1 -1
- package/dist/ahp-reverse-mapper.d.ts +90 -0
- package/dist/ahp-reverse-mapper.d.ts.map +1 -0
- package/dist/ahp-reverse-mapper.js +384 -0
- package/dist/ahp-reverse-mapper.js.map +1 -0
- package/dist/ahp-reverse-mapper.test.d.ts +6 -0
- package/dist/ahp-reverse-mapper.test.d.ts.map +1 -0
- package/dist/ahp-reverse-mapper.test.js +486 -0
- package/dist/ahp-reverse-mapper.test.js.map +1 -0
- package/dist/gen/grackle/grackle_types_pb.d.ts +12 -0
- package/dist/gen/grackle/grackle_types_pb.d.ts.map +1 -1
- package/dist/gen/grackle/grackle_types_pb.js +1 -1
- package/dist/gen/grackle/grackle_types_pb.js.map +1 -1
- package/dist/gen/grackle/powerline/powerline_pb.d.ts +6 -0
- package/dist/gen/grackle/powerline/powerline_pb.d.ts.map +1 -1
- package/dist/gen/grackle/powerline/powerline_pb.js +1 -1
- package/dist/gen/grackle/powerline/powerline_pb.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/runtime-catalog.js +2 -2
- package/dist/runtime-catalog.js.map +1 -1
- package/package.json +2 -2
package/dist/ahp-mapper.d.ts
CHANGED
|
@@ -13,6 +13,32 @@
|
|
|
13
13
|
* `powerline.AgentEvent` lets HR8d remove the gRPC path entirely without
|
|
14
14
|
* touching the mapper.
|
|
15
15
|
*
|
|
16
|
+
* **Wire fidelity notes (HR8d follow-up #1355):**
|
|
17
|
+
*
|
|
18
|
+
* AHP `StateAction` is a typed, normalized envelope — it deliberately does
|
|
19
|
+
* NOT carry the runtime-native event payload (`AgentEvent.raw`). Anything
|
|
20
|
+
* a consumer used to read out of `event.raw` MUST come through a
|
|
21
|
+
* first-class structured field on the action instead:
|
|
22
|
+
*
|
|
23
|
+
* - Tool ID pairing (was `raw.id` / `raw.tool_use_id`) → use
|
|
24
|
+
* `event.toolCallId`, which both the forward mapper and PowerLine's
|
|
25
|
+
* runtime adapters set as a first-class HR3 field.
|
|
26
|
+
* - Tool result success/error (was `raw.is_error`) → use
|
|
27
|
+
* `SessionToolCallCompleteAction.result.success`. The reverse mapper
|
|
28
|
+
* reconstructs a JSON content of `{is_ok, content, past_tense_message}`
|
|
29
|
+
* that downstream code (`EventRenderer.tsx`) can parse.
|
|
30
|
+
* - System-context marker (was `raw.systemContext === true`) → the
|
|
31
|
+
* consumer-side `event-processor.ts` injects its system-context event
|
|
32
|
+
* directly and sets `raw: '{"systemContext":true}'` locally, so the
|
|
33
|
+
* wire never has to carry it.
|
|
34
|
+
*
|
|
35
|
+
* Token / cost counters (`input_tokens`, `output_tokens`, `cost_millicents`)
|
|
36
|
+
* are carried via the `_meta` channel on `SessionMetaChangedAction`:
|
|
37
|
+
* accumulated on the producer side, emitted as a single `usage` event
|
|
38
|
+
* with the delta on the consumer side. Producer-side accumulation lives
|
|
39
|
+
* in `MapperContext.metaAccumulator`; reverse-side delta computation in
|
|
40
|
+
* `ahp-reverse-mapper.ts`'s `SessionMetaChanged` case.
|
|
41
|
+
*
|
|
16
42
|
* @module ahp-mapper
|
|
17
43
|
*/
|
|
18
44
|
import { type StateAction } from "@grackle-ai/ahp";
|
|
@@ -41,6 +67,13 @@ export interface AgentEventFields {
|
|
|
41
67
|
turnId?: string;
|
|
42
68
|
/** `true` for diagnostic system events that route to OTLP telemetry (HR7). */
|
|
43
69
|
diagnostic?: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* `true` when a `tool_result` reported a tool failure (#1362). Set by the
|
|
72
|
+
* runtime adapter from its native outcome signal; this is the authoritative
|
|
73
|
+
* source for `SessionToolCallComplete.result.success` (the AHP wire drops
|
|
74
|
+
* `raw`, where the runtimes' error flags used to live).
|
|
75
|
+
*/
|
|
76
|
+
toolError?: boolean;
|
|
44
77
|
/** ISO-8601 timestamp string (passed through from the runtime). */
|
|
45
78
|
timestamp?: string;
|
|
46
79
|
/** Raw event body — opaque to the mapper, used by JSONL persistence. */
|
|
@@ -93,6 +126,15 @@ export interface MapperContext {
|
|
|
93
126
|
metaAccumulator: {
|
|
94
127
|
/** Accumulated cost in millicents (AHP-upstream gap; rides on `_meta`). */
|
|
95
128
|
costMillicents?: number;
|
|
129
|
+
/**
|
|
130
|
+
* Accumulated input tokens (HR8d follow-up #1355). Same wire treatment as
|
|
131
|
+
* `costMillicents` — added on every `usage` event, the reverse mapper
|
|
132
|
+
* emits the delta back as a `usage` event for the consumer's existing
|
|
133
|
+
* token-tracking pipeline (`event-processor.ts:case "usage"`).
|
|
134
|
+
*/
|
|
135
|
+
inputTokens?: number;
|
|
136
|
+
/** Accumulated output tokens (HR8d follow-up #1355). */
|
|
137
|
+
outputTokens?: number;
|
|
96
138
|
/** Runtime-provided session ID from the `runtime_session_id` event. */
|
|
97
139
|
runtimeSessionId?: string;
|
|
98
140
|
};
|
package/dist/ahp-mapper.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ahp-mapper.d.ts","sourceRoot":"","sources":["../src/ahp-mapper.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ahp-mapper.d.ts","sourceRoot":"","sources":["../src/ahp-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EAML,KAAK,WAAW,EAEjB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAYD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,WAAW,EAAE,WAAW,CAAC;IACzB,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,eAAe,EAAE;QACf,2EAA2E;QAC3E,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB;;;;;WAKG;QACH,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,wDAAwD;QACxD,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,uEAAuE;QACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED,6CAA6C;AAC7C,MAAM,WAAW,SAAS;IACxB,yEAAyE;IACzE,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,+DAA+D;IAC/D,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AA2CD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,gBAAgB,EACvB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,aAAa,GACrB,SAAS,CA8fX"}
|
package/dist/ahp-mapper.js
CHANGED
|
@@ -13,6 +13,32 @@
|
|
|
13
13
|
* `powerline.AgentEvent` lets HR8d remove the gRPC path entirely without
|
|
14
14
|
* touching the mapper.
|
|
15
15
|
*
|
|
16
|
+
* **Wire fidelity notes (HR8d follow-up #1355):**
|
|
17
|
+
*
|
|
18
|
+
* AHP `StateAction` is a typed, normalized envelope — it deliberately does
|
|
19
|
+
* NOT carry the runtime-native event payload (`AgentEvent.raw`). Anything
|
|
20
|
+
* a consumer used to read out of `event.raw` MUST come through a
|
|
21
|
+
* first-class structured field on the action instead:
|
|
22
|
+
*
|
|
23
|
+
* - Tool ID pairing (was `raw.id` / `raw.tool_use_id`) → use
|
|
24
|
+
* `event.toolCallId`, which both the forward mapper and PowerLine's
|
|
25
|
+
* runtime adapters set as a first-class HR3 field.
|
|
26
|
+
* - Tool result success/error (was `raw.is_error`) → use
|
|
27
|
+
* `SessionToolCallCompleteAction.result.success`. The reverse mapper
|
|
28
|
+
* reconstructs a JSON content of `{is_ok, content, past_tense_message}`
|
|
29
|
+
* that downstream code (`EventRenderer.tsx`) can parse.
|
|
30
|
+
* - System-context marker (was `raw.systemContext === true`) → the
|
|
31
|
+
* consumer-side `event-processor.ts` injects its system-context event
|
|
32
|
+
* directly and sets `raw: '{"systemContext":true}'` locally, so the
|
|
33
|
+
* wire never has to carry it.
|
|
34
|
+
*
|
|
35
|
+
* Token / cost counters (`input_tokens`, `output_tokens`, `cost_millicents`)
|
|
36
|
+
* are carried via the `_meta` channel on `SessionMetaChangedAction`:
|
|
37
|
+
* accumulated on the producer side, emitted as a single `usage` event
|
|
38
|
+
* with the delta on the consumer side. Producer-side accumulation lives
|
|
39
|
+
* in `MapperContext.metaAccumulator`; reverse-side delta computation in
|
|
40
|
+
* `ahp-reverse-mapper.ts`'s `SessionMetaChanged` case.
|
|
41
|
+
*
|
|
16
42
|
* @module ahp-mapper
|
|
17
43
|
*/
|
|
18
44
|
import { ActionType, ToolCallConfirmationReason, ToolResultContentType, ResponsePartKind, } from "@grackle-ai/ahp";
|
|
@@ -195,13 +221,36 @@ export function mapAgentEvent(event, index, context) {
|
|
|
195
221
|
break;
|
|
196
222
|
}
|
|
197
223
|
const toolCallIdValue = toolCallId || `tc-${context.partCounter++}`;
|
|
224
|
+
// Accept the legacy `tool` key alongside `tool_name`/`name`. Production
|
|
225
|
+
// runtimes (Claude Code, Copilot, Codex) serialize their tool_use content
|
|
226
|
+
// as `{tool, args}` — only the runScenario stub fixture uses `tool_name`.
|
|
227
|
+
// Without this fallback the reverse mapper sees "unknown_tool" for every
|
|
228
|
+
// real runtime, losing the actual tool identity on the wire.
|
|
198
229
|
const toolName = hasParsed
|
|
199
|
-
? str(parsed, ["tool_name", "name"], "unknown_tool")
|
|
230
|
+
? str(parsed, ["tool_name", "name", "tool"], "unknown_tool")
|
|
200
231
|
: "unknown_tool";
|
|
201
232
|
const displayName = hasParsed ? str(parsed, ["display_name"], toolName) : toolName;
|
|
202
233
|
const invocationMessage = hasParsed
|
|
203
234
|
? str(parsed, ["invocation_message"], `Running ${toolName}`)
|
|
204
235
|
: `Running ${toolName}`;
|
|
236
|
+
// Serialize args as `toolInput` (AHP-spec field on SessionToolCallReady)
|
|
237
|
+
// so the consumer can rehydrate them. The mapper sees several arg shapes:
|
|
238
|
+
// `args` (stub + Claude Code), `input` (Claude Code raw form on some
|
|
239
|
+
// paths), `arguments` (Copilot). Preserve the first that's present.
|
|
240
|
+
let toolInput;
|
|
241
|
+
if (hasParsed) {
|
|
242
|
+
const argsValue = parsed.args ??
|
|
243
|
+
parsed.input ??
|
|
244
|
+
parsed.arguments;
|
|
245
|
+
if (argsValue !== undefined) {
|
|
246
|
+
try {
|
|
247
|
+
toolInput = JSON.stringify(argsValue);
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
/* circular / unserializable — skip the toolInput field. */
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
205
254
|
// SessionToolCallStart
|
|
206
255
|
actions.push({
|
|
207
256
|
type: ActionType.SessionToolCallStart,
|
|
@@ -217,6 +266,7 @@ export function mapAgentEvent(event, index, context) {
|
|
|
217
266
|
toolCallId: toolCallIdValue,
|
|
218
267
|
invocationMessage,
|
|
219
268
|
confirmed: ToolCallConfirmationReason.NotNeeded,
|
|
269
|
+
...(toolInput !== undefined ? { toolInput } : {}),
|
|
220
270
|
});
|
|
221
271
|
context.openToolCalls.push(toolCallIdValue);
|
|
222
272
|
note = {
|
|
@@ -238,8 +288,15 @@ export function mapAgentEvent(event, index, context) {
|
|
|
238
288
|
};
|
|
239
289
|
break;
|
|
240
290
|
}
|
|
241
|
-
// Pair by first-class toolCallId (HR3), with LIFO stack fallback
|
|
242
|
-
|
|
291
|
+
// Pair by first-class toolCallId (HR3), with LIFO stack fallback.
|
|
292
|
+
// HR8d: when no tool_use precedes (an "unpaired tool_result" — legal
|
|
293
|
+
// under the gRPC wire and exercised by the tool-result-accordion
|
|
294
|
+
// E2E test), synthesize an id rather than dropping. The reverse
|
|
295
|
+
// mapper emits a tool_result with the synthetic id, the UI's
|
|
296
|
+
// pairToolEvents finds no matching tool_use in `toolUseById`, and
|
|
297
|
+
// the event falls through to the unpaired tool-card render path
|
|
298
|
+
// (GenericToolCard). Dropping silently masked the event entirely.
|
|
299
|
+
const pairedToolCallId = toolCallId || context.openToolCalls.pop() || `tc-orphan-result-${context.partCounter++}`;
|
|
243
300
|
// Remove matched id from stack when first-class toolCallId is provided
|
|
244
301
|
if (toolCallId) {
|
|
245
302
|
const idx = context.openToolCalls.indexOf(toolCallId);
|
|
@@ -247,22 +304,21 @@ export function mapAgentEvent(event, index, context) {
|
|
|
247
304
|
context.openToolCalls.splice(idx, 1);
|
|
248
305
|
}
|
|
249
306
|
}
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
: true;
|
|
307
|
+
// The first-class `toolError` field (#1362) is authoritative — every
|
|
308
|
+
// runtime adapter sets it from its native outcome signal, which the AHP
|
|
309
|
+
// wire would otherwise lose (it doesn't carry `raw`). Fall back to the
|
|
310
|
+
// content `is_ok`/`success` keys only when `toolError` is absent (e.g.
|
|
311
|
+
// legacy/replayed events reconstructed from `content` by the reverse
|
|
312
|
+
// mapper), defaulting to success when nothing indicates failure.
|
|
313
|
+
const isOk = event.toolError !== undefined
|
|
314
|
+
? !event.toolError
|
|
315
|
+
: hasParsed
|
|
316
|
+
? "is_ok" in parsed
|
|
317
|
+
? parsed.is_ok === true
|
|
318
|
+
: "success" in parsed
|
|
319
|
+
? parsed.success === true
|
|
320
|
+
: true
|
|
321
|
+
: true;
|
|
266
322
|
const pastTenseMessage = hasParsed
|
|
267
323
|
? str(parsed, ["past_tense_message"], content || "")
|
|
268
324
|
: content || "";
|
|
@@ -307,11 +363,30 @@ export function mapAgentEvent(event, index, context) {
|
|
|
307
363
|
const cost = Number(rawCost);
|
|
308
364
|
context.metaAccumulator.costMillicents = Math.max(0, prevCost + Math.trunc(cost));
|
|
309
365
|
}
|
|
366
|
+
// HR8d follow-up #1355: accumulate input/output tokens alongside cost.
|
|
367
|
+
// The reverse mapper emits a single `usage` event carrying whichever of
|
|
368
|
+
// the three deltas changed — preserves the gRPC-era event-processor
|
|
369
|
+
// pipeline that already reads `{input_tokens, output_tokens, cost_millicents}`
|
|
370
|
+
// and updates `sessions.{input_tokens, output_tokens, cost_millicents}` cumulatively.
|
|
371
|
+
const rawInputTokens = hasParsed ? parsed.input_tokens : undefined;
|
|
372
|
+
// eslint-disable-next-line eqeqeq
|
|
373
|
+
if (rawInputTokens != null && Number.isFinite(Number(rawInputTokens))) {
|
|
374
|
+
const prev = context.metaAccumulator.inputTokens ?? 0;
|
|
375
|
+
const v = Number(rawInputTokens);
|
|
376
|
+
context.metaAccumulator.inputTokens = Math.max(0, prev + Math.trunc(v));
|
|
377
|
+
}
|
|
378
|
+
const rawOutputTokens = hasParsed ? parsed.output_tokens : undefined;
|
|
379
|
+
// eslint-disable-next-line eqeqeq
|
|
380
|
+
if (rawOutputTokens != null && Number.isFinite(Number(rawOutputTokens))) {
|
|
381
|
+
const prev = context.metaAccumulator.outputTokens ?? 0;
|
|
382
|
+
const v = Number(rawOutputTokens);
|
|
383
|
+
context.metaAccumulator.outputTokens = Math.max(0, prev + Math.trunc(v));
|
|
384
|
+
}
|
|
310
385
|
note = {
|
|
311
386
|
index,
|
|
312
387
|
type: "usage",
|
|
313
388
|
disposition: "carried",
|
|
314
|
-
detail: `Usage tracked — costMillicents
|
|
389
|
+
detail: `Usage tracked — costMillicents=${context.metaAccumulator.costMillicents ?? 0} inputTokens=${context.metaAccumulator.inputTokens ?? 0} outputTokens=${context.metaAccumulator.outputTokens ?? 0}`,
|
|
315
390
|
};
|
|
316
391
|
break;
|
|
317
392
|
}
|
package/dist/ahp-mapper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ahp-mapper.js","sourceRoot":"","sources":["../src/ahp-mapper.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ahp-mapper.js","sourceRoot":"","sources":["../src/ahp-mapper.ts"],"names":[],"mappings":"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"}
|
package/dist/ahp-mapper.test.js
CHANGED
|
@@ -27,6 +27,7 @@ function makeEvent(type, overrides) {
|
|
|
27
27
|
toolCallId: overrides?.toolCallId,
|
|
28
28
|
turnId: overrides?.turnId,
|
|
29
29
|
diagnostic: overrides?.diagnostic,
|
|
30
|
+
toolError: overrides?.toolError,
|
|
30
31
|
};
|
|
31
32
|
}
|
|
32
33
|
function assertActionType(actions, expectedType, index = 0) {
|
|
@@ -197,12 +198,20 @@ describe("tool_result", () => {
|
|
|
197
198
|
// Should pop "tc-last" (LIFO)
|
|
198
199
|
expect(context.openToolCalls).toEqual(["tc-first"]);
|
|
199
200
|
});
|
|
200
|
-
it("
|
|
201
|
-
|
|
201
|
+
it("synthesizes a toolCallId when no matching tool call (HR8d)", () => {
|
|
202
|
+
// Pre-HR8d this dropped. Now: emit SessionToolCallComplete with a
|
|
203
|
+
// synthesized `tc-orphan-result-N` so the gRPC unpaired-tool_result
|
|
204
|
+
// behavior survives the wire flip (the consumer's reverse mapper
|
|
205
|
+
// emits a tool_result event, the UI's pairToolEvents finds no match
|
|
206
|
+
// in toolUseById and renders it via the unpaired GenericToolCard).
|
|
207
|
+
const context = makeContext({ turnId: "turn-abc", openToolCalls: [], partCounter: 0 });
|
|
202
208
|
const event = makeEvent("tool_result", { content: "{}" });
|
|
203
209
|
const result = mapAgentEvent(event, 5, context);
|
|
204
|
-
expect(result.
|
|
205
|
-
expect(result.
|
|
210
|
+
expect(result.note?.disposition).toBe("mapped");
|
|
211
|
+
expect(result.actions.length).toBeGreaterThan(0);
|
|
212
|
+
const complete = result.actions.find((a) => a.type === ActionType.SessionToolCallComplete);
|
|
213
|
+
expect(complete).toBeDefined();
|
|
214
|
+
expect(complete.toolCallId).toMatch(/^tc-orphan-result-/);
|
|
206
215
|
});
|
|
207
216
|
it("adds system notification for successful result", () => {
|
|
208
217
|
const context = makeContext({
|
|
@@ -257,6 +266,47 @@ describe("usage", () => {
|
|
|
257
266
|
// 0 is a valid (non-null) cost — accumulator should be 100 + 0 = 100
|
|
258
267
|
expect(context.metaAccumulator.costMillicents).toBe(100);
|
|
259
268
|
});
|
|
269
|
+
// HR8d follow-up #1355: input/output token plumbing
|
|
270
|
+
it("carries input_tokens / output_tokens into metaAccumulator alongside cost (HR8d follow-up #1355)", () => {
|
|
271
|
+
const context = makeContext({
|
|
272
|
+
metaAccumulator: { costMillicents: 100, inputTokens: 50, outputTokens: 10 },
|
|
273
|
+
});
|
|
274
|
+
const event = makeEvent("usage", {
|
|
275
|
+
content: JSON.stringify({ cost_millicents: 20, input_tokens: 5, output_tokens: 3 }),
|
|
276
|
+
});
|
|
277
|
+
mapAgentEvent(event, 6, context);
|
|
278
|
+
expect(context.metaAccumulator.costMillicents).toBe(120);
|
|
279
|
+
expect(context.metaAccumulator.inputTokens).toBe(55);
|
|
280
|
+
expect(context.metaAccumulator.outputTokens).toBe(13);
|
|
281
|
+
});
|
|
282
|
+
it("ignores non-finite input_tokens / output_tokens (HR8d follow-up #1355)", () => {
|
|
283
|
+
const context = makeContext();
|
|
284
|
+
const event = makeEvent("usage", {
|
|
285
|
+
content: JSON.stringify({ input_tokens: NaN, output_tokens: "abc" }),
|
|
286
|
+
});
|
|
287
|
+
mapAgentEvent(event, 6, context);
|
|
288
|
+
expect(context.metaAccumulator.inputTokens).toBeUndefined();
|
|
289
|
+
expect(context.metaAccumulator.outputTokens).toBeUndefined();
|
|
290
|
+
});
|
|
291
|
+
it("accumulates input_tokens / output_tokens with zero increments (HR8d follow-up #1355)", () => {
|
|
292
|
+
const context = makeContext({ metaAccumulator: { inputTokens: 7, outputTokens: 11 } });
|
|
293
|
+
const event = makeEvent("usage", {
|
|
294
|
+
content: JSON.stringify({ input_tokens: 0, output_tokens: 0 }),
|
|
295
|
+
});
|
|
296
|
+
mapAgentEvent(event, 6, context);
|
|
297
|
+
expect(context.metaAccumulator.inputTokens).toBe(7);
|
|
298
|
+
expect(context.metaAccumulator.outputTokens).toBe(11);
|
|
299
|
+
});
|
|
300
|
+
it("usage event with only token fields (no cost) still updates accumulator (HR8d follow-up #1355)", () => {
|
|
301
|
+
const context = makeContext();
|
|
302
|
+
const event = makeEvent("usage", {
|
|
303
|
+
content: JSON.stringify({ input_tokens: 42, output_tokens: 11 }),
|
|
304
|
+
});
|
|
305
|
+
mapAgentEvent(event, 6, context);
|
|
306
|
+
expect(context.metaAccumulator.costMillicents).toBeUndefined();
|
|
307
|
+
expect(context.metaAccumulator.inputTokens).toBe(42);
|
|
308
|
+
expect(context.metaAccumulator.outputTokens).toBe(11);
|
|
309
|
+
});
|
|
260
310
|
});
|
|
261
311
|
// ─── error ─────────────────────────────────────────────────────────
|
|
262
312
|
describe("error", () => {
|
|
@@ -471,6 +521,51 @@ describe("branch coverage", () => {
|
|
|
471
521
|
const ready = result.actions[1];
|
|
472
522
|
expect(ready.invocationMessage).toBe("running shell `ls`");
|
|
473
523
|
});
|
|
524
|
+
it("tool_use accepts the legacy `tool` field as a toolName alias (HR8d)", () => {
|
|
525
|
+
// Stub fixtures and Claude Code's tool_use events both serialize as
|
|
526
|
+
// `{tool, args}` rather than `{tool_name}`. Without the `tool` alias the
|
|
527
|
+
// forward mapper falls through to "unknown_tool" and the consumer sees
|
|
528
|
+
// a degraded tool card.
|
|
529
|
+
const context = makeContext({ turnId: "t1", partCounter: 0 });
|
|
530
|
+
const event = makeEvent("tool_use", { content: JSON.stringify({ tool: "echo", args: {} }) });
|
|
531
|
+
const result = mapAgentEvent(event, 0, context);
|
|
532
|
+
const start = result.actions[0];
|
|
533
|
+
expect(start.toolName).toBe("echo");
|
|
534
|
+
});
|
|
535
|
+
it("tool_use packs `args` into SessionToolCallReady.toolInput (HR8d)", () => {
|
|
536
|
+
const context = makeContext({ turnId: "t1", partCounter: 0 });
|
|
537
|
+
const event = makeEvent("tool_use", {
|
|
538
|
+
content: JSON.stringify({ tool: "echo", args: { message: "hello" } }),
|
|
539
|
+
});
|
|
540
|
+
const result = mapAgentEvent(event, 0, context);
|
|
541
|
+
const ready = result.actions[1];
|
|
542
|
+
expect(ready.toolInput).toBeDefined();
|
|
543
|
+
expect(JSON.parse(ready.toolInput)).toEqual({ message: "hello" });
|
|
544
|
+
});
|
|
545
|
+
it("tool_use packs `input` and `arguments` as toolInput aliases (HR8d)", () => {
|
|
546
|
+
// Claude Code emits `input` on some paths; Copilot emits `arguments`.
|
|
547
|
+
const ctx1 = makeContext({ turnId: "t1", partCounter: 0 });
|
|
548
|
+
const ev1 = makeEvent("tool_use", {
|
|
549
|
+
content: JSON.stringify({ tool: "bash", input: { command: "ls" } }),
|
|
550
|
+
});
|
|
551
|
+
const r1 = mapAgentEvent(ev1, 0, ctx1);
|
|
552
|
+
const ready1 = r1.actions[1];
|
|
553
|
+
expect(JSON.parse(ready1.toolInput)).toEqual({ command: "ls" });
|
|
554
|
+
const ctx2 = makeContext({ turnId: "t1", partCounter: 0 });
|
|
555
|
+
const ev2 = makeEvent("tool_use", {
|
|
556
|
+
content: JSON.stringify({ tool: "search", arguments: { query: "foo" } }),
|
|
557
|
+
});
|
|
558
|
+
const r2 = mapAgentEvent(ev2, 0, ctx2);
|
|
559
|
+
const ready2 = r2.actions[1];
|
|
560
|
+
expect(JSON.parse(ready2.toolInput)).toEqual({ query: "foo" });
|
|
561
|
+
});
|
|
562
|
+
it("tool_use omits toolInput when no args are present (HR8d)", () => {
|
|
563
|
+
const context = makeContext({ turnId: "t1", partCounter: 0 });
|
|
564
|
+
const event = makeEvent("tool_use", { content: JSON.stringify({ tool: "ping" }) });
|
|
565
|
+
const result = mapAgentEvent(event, 0, context);
|
|
566
|
+
const ready = result.actions[1];
|
|
567
|
+
expect(ready.toolInput).toBeUndefined();
|
|
568
|
+
});
|
|
474
569
|
it("tool_result with is_ok:false emits failure result with error", () => {
|
|
475
570
|
const context = makeContext({ turnId: "t1", openToolCalls: ["tc-1"] });
|
|
476
571
|
const event = makeEvent("tool_result", {
|
|
@@ -505,7 +600,9 @@ describe("branch coverage", () => {
|
|
|
505
600
|
const action = result.actions[0];
|
|
506
601
|
expect(action.result.success).toBe(true);
|
|
507
602
|
});
|
|
508
|
-
it("tool_result with non-JSON content keeps default success=true", () => {
|
|
603
|
+
it("tool_result with non-JSON content keeps default success=true (no toolError field)", () => {
|
|
604
|
+
// Fallback path: when the first-class `toolError` field is absent AND the
|
|
605
|
+
// content isn't structured JSON, default to success.
|
|
509
606
|
const context = makeContext({ turnId: "t1", openToolCalls: ["tc-1"] });
|
|
510
607
|
const event = makeEvent("tool_result", { toolCallId: "tc-1", content: "raw text result" });
|
|
511
608
|
const result = mapAgentEvent(event, 0, context);
|
|
@@ -513,6 +610,49 @@ describe("branch coverage", () => {
|
|
|
513
610
|
expect(action.result.success).toBe(true);
|
|
514
611
|
expect(action.result.pastTenseMessage).toBe("raw text result");
|
|
515
612
|
});
|
|
613
|
+
// ─── #1362: first-class toolError field is authoritative ──────────────
|
|
614
|
+
// Real runtimes (Claude Code, Copilot, Codex, ACP) carry the failure flag in
|
|
615
|
+
// `raw`, never in `content` — which the AHP wire drops. The producer lifts it
|
|
616
|
+
// to `toolError`; the mapper MUST read that, not the (always-absent) content
|
|
617
|
+
// `is_ok`. This is the regression #1359 left unaddressed on the producer side.
|
|
618
|
+
it("tool_result with toolError:true maps to success=false even with plain-text content", () => {
|
|
619
|
+
const context = makeContext({ turnId: "t1", openToolCalls: ["tc-1"] });
|
|
620
|
+
const event = makeEvent("tool_result", {
|
|
621
|
+
toolCallId: "tc-1",
|
|
622
|
+
content: "bash: command not found",
|
|
623
|
+
toolError: true,
|
|
624
|
+
});
|
|
625
|
+
const result = mapAgentEvent(event, 0, context);
|
|
626
|
+
const action = result.actions[0];
|
|
627
|
+
expect(action.result.success).toBe(false);
|
|
628
|
+
expect(action.result.error?.message).toBe("bash: command not found");
|
|
629
|
+
// No success-only system notification when the tool failed
|
|
630
|
+
expect(result.actions.length).toBe(1);
|
|
631
|
+
});
|
|
632
|
+
it("tool_result with toolError:false maps to success=true", () => {
|
|
633
|
+
const context = makeContext({ turnId: "t1", openToolCalls: ["tc-1"] });
|
|
634
|
+
const event = makeEvent("tool_result", {
|
|
635
|
+
toolCallId: "tc-1",
|
|
636
|
+
content: "file written",
|
|
637
|
+
toolError: false,
|
|
638
|
+
});
|
|
639
|
+
const result = mapAgentEvent(event, 0, context);
|
|
640
|
+
const action = result.actions[0];
|
|
641
|
+
expect(action.result.success).toBe(true);
|
|
642
|
+
});
|
|
643
|
+
it("toolError field overrides a conflicting content is_ok flag", () => {
|
|
644
|
+
// The first-class field wins over content — guards against a runtime whose
|
|
645
|
+
// output text happens to contain a misleading `is_ok` key.
|
|
646
|
+
const context = makeContext({ turnId: "t1", openToolCalls: ["tc-1"] });
|
|
647
|
+
const event = makeEvent("tool_result", {
|
|
648
|
+
toolCallId: "tc-1",
|
|
649
|
+
content: JSON.stringify({ is_ok: true, content: "looks ok but failed" }),
|
|
650
|
+
toolError: true,
|
|
651
|
+
});
|
|
652
|
+
const result = mapAgentEvent(event, 0, context);
|
|
653
|
+
const action = result.actions[0];
|
|
654
|
+
expect(action.result.success).toBe(false);
|
|
655
|
+
});
|
|
516
656
|
it("tool_result with no content emits no system notification", () => {
|
|
517
657
|
const context = makeContext({ turnId: "t1", openToolCalls: ["tc-1"] });
|
|
518
658
|
const event = makeEvent("tool_result", { toolCallId: "tc-1" });
|