@botiverse/oar 0.1.4 → 0.2.0
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/README.md +20 -7
- package/dist/contracts/records.d.ts +74 -19
- package/dist/contracts/records.d.ts.map +1 -1
- package/dist/contracts/records.js +11 -2
- package/dist/contracts/records.js.map +1 -1
- package/dist/contracts/session.d.ts +33 -7
- package/dist/contracts/session.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/observe/agent-status.d.ts +3 -3
- package/dist/observe/agent-status.d.ts.map +1 -1
- package/dist/observe/agent-status.js +9 -9
- package/dist/observe/agent-status.js.map +1 -1
- package/dist/observe/events.d.ts +29 -0
- package/dist/observe/events.d.ts.map +1 -0
- package/dist/observe/events.js +134 -0
- package/dist/observe/events.js.map +1 -0
- package/dist/observe/index.d.ts +2 -2
- package/dist/observe/index.d.ts.map +1 -1
- package/dist/observe/index.js +2 -2
- package/dist/observe/index.js.map +1 -1
- package/dist/observe/observe-agent.js +1 -1
- package/dist/observe/stall-observer.d.ts +1 -1
- package/dist/observe/stall-observer.d.ts.map +1 -1
- package/dist/observe/stall-observer.js +3 -3
- package/dist/observe/stall-observer.js.map +1 -1
- package/dist/observe/tool-activity.d.ts +2 -2
- package/dist/observe/tool-activity.d.ts.map +1 -1
- package/dist/observe/tool-activity.js +1 -1
- package/dist/observe/tool-activity.js.map +1 -1
- package/dist/observe/turns.d.ts +3 -3
- package/dist/observe/turns.d.ts.map +1 -1
- package/dist/observe/turns.js +4 -4
- package/dist/observe/turns.js.map +1 -1
- package/dist/observe/usage.d.ts +4 -4
- package/dist/observe/usage.d.ts.map +1 -1
- package/dist/observe/usage.js +12 -12
- package/dist/observe/usage.js.map +1 -1
- package/dist/runtimes/claude/projection.d.ts +6 -6
- package/dist/runtimes/claude/projection.js +10 -10
- package/dist/runtimes/claude/projection.js.map +1 -1
- package/dist/runtimes/claude/session.js +6 -6
- package/dist/runtimes/claude/session.js.map +1 -1
- package/dist/runtimes/codex/projection.d.ts +3 -3
- package/dist/runtimes/codex/projection.js +3 -3
- package/dist/runtimes/codex/projection.js.map +1 -1
- package/dist/runtimes/codex/session.js +8 -8
- package/dist/runtimes/codex/session.js.map +1 -1
- package/dist/runtimes/pi/projection.d.ts +7 -7
- package/dist/runtimes/pi/projection.js +24 -24
- package/dist/runtimes/pi/projection.js.map +1 -1
- package/dist/runtimes/pi/session.js +11 -11
- package/dist/runtimes/pi/session.js.map +1 -1
- package/dist/shared/acp/model.d.ts +1 -1
- package/dist/shared/acp/model.js +1 -1
- package/dist/shared/acp/profile.d.ts +1 -1
- package/dist/shared/acp/projection.d.ts +6 -6
- package/dist/shared/acp/projection.d.ts.map +1 -1
- package/dist/shared/acp/projection.js +12 -12
- package/dist/shared/acp/projection.js.map +1 -1
- package/dist/shared/acp/records.d.ts +2 -2
- package/dist/shared/acp/records.d.ts.map +1 -1
- package/dist/shared/acp/records.js +5 -5
- package/dist/shared/acp/records.js.map +1 -1
- package/dist/shared/acp/session.js +1 -1
- package/dist/shared/acp/turns.d.ts +2 -2
- package/dist/shared/acp/turns.js +4 -4
- package/dist/shared/acp/turns.js.map +1 -1
- package/dist/shared/acp/usage-wait.d.ts +1 -1
- package/dist/shared/acp/usage-wait.d.ts.map +1 -1
- package/dist/shared/seal-session.d.ts +4 -3
- package/dist/shared/seal-session.d.ts.map +1 -1
- package/dist/shared/seal-session.js +12 -3
- package/dist/shared/seal-session.js.map +1 -1
- package/dist/shared/session-kernel.d.ts +6 -6
- package/dist/shared/session-kernel.d.ts.map +1 -1
- package/dist/shared/session-kernel.js +2 -2
- package/dist/shared/session-kernel.js.map +1 -1
- package/dist/voyage.d.ts +4 -4
- package/dist/voyage.d.ts.map +1 -1
- package/dist/voyage.js +4 -3
- package/dist/voyage.js.map +1 -1
- package/package.json +1 -1
- package/dist/observe/aggregate-events.d.ts +0 -16
- package/dist/observe/aggregate-events.d.ts.map +0 -1
- package/dist/observe/aggregate-events.js +0 -80
- package/dist/observe/aggregate-events.js.map +0 -1
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The consumer face of the stream. `eventsOf` reads the flat, attributed
|
|
3
|
+
* `Event`s out of one record: every reading of a Frame (each stamped with the
|
|
4
|
+
* frame's envelope, so events read from one frame share its `seq`), the turn
|
|
5
|
+
* start a prompt request is, a rejected control action, and the process exit.
|
|
6
|
+
* A record oar read nothing from yields no events. Pure given `actions`, the
|
|
7
|
+
* kinds of the toRuntime requests seen so far (a rejected response names
|
|
8
|
+
* only its `requestId`; `controlActionsOf` builds the map from a log), so a
|
|
9
|
+
* RawEvent log replays into exactly the events the live subscription
|
|
10
|
+
* delivered.
|
|
11
|
+
*/
|
|
12
|
+
export function eventsOf(record, actions = new Map()) {
|
|
13
|
+
const { sessionId, agentPath, seq, receivedAt } = record;
|
|
14
|
+
const envelope = { sessionId, agentPath, seq, receivedAt, ...(record.spanId === undefined ? {} : { spanId: record.spanId }) };
|
|
15
|
+
switch (record.kind) {
|
|
16
|
+
case "frame":
|
|
17
|
+
return record.body.events.map((event) => ({ ...event, ...envelope }));
|
|
18
|
+
case "request":
|
|
19
|
+
return record.direction === "toRuntime" && record.body.kind === "prompt"
|
|
20
|
+
? [{
|
|
21
|
+
kind: "turn_started",
|
|
22
|
+
requestId: record.id,
|
|
23
|
+
input: record.body.input,
|
|
24
|
+
...(record.body.lineage === undefined ? {} : { lineage: record.body.lineage }),
|
|
25
|
+
...envelope,
|
|
26
|
+
}]
|
|
27
|
+
: [];
|
|
28
|
+
case "response":
|
|
29
|
+
if (record.body.kind === "exited") {
|
|
30
|
+
return [{ kind: "exited", code: record.body.code, ...envelope }];
|
|
31
|
+
}
|
|
32
|
+
if (record.body.kind === "rejected") {
|
|
33
|
+
const action = actions.get(record.requestId);
|
|
34
|
+
return action === undefined
|
|
35
|
+
? []
|
|
36
|
+
: [{ kind: "control_rejected", requestId: record.requestId, action, reason: record.body.reason, ...envelope }];
|
|
37
|
+
}
|
|
38
|
+
return [];
|
|
39
|
+
}
|
|
40
|
+
return [];
|
|
41
|
+
}
|
|
42
|
+
/** The action of every toRuntime request in a log, by request id; the `actions` input `eventsOf` needs for rejections. */
|
|
43
|
+
export function controlActionsOf(records) {
|
|
44
|
+
const actions = new Map();
|
|
45
|
+
for (const record of records) {
|
|
46
|
+
if (record.kind === "request" && record.direction === "toRuntime" && record.body.kind !== "native") {
|
|
47
|
+
actions.set(record.id, record.body.kind);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return actions;
|
|
51
|
+
}
|
|
52
|
+
/** A raw-event observer that delivers `eventsOf` each record to `observer`, remembering request kinds so rejections name their action. */
|
|
53
|
+
export function eventsReader(observer) {
|
|
54
|
+
const actions = new Map();
|
|
55
|
+
return (record) => {
|
|
56
|
+
if (record.kind === "request" && record.direction === "toRuntime" && record.body.kind !== "native") {
|
|
57
|
+
actions.set(record.id, record.body.kind);
|
|
58
|
+
}
|
|
59
|
+
for (const event of eventsOf(record, actions)) {
|
|
60
|
+
observer(event);
|
|
61
|
+
}
|
|
62
|
+
if (record.kind === "response") {
|
|
63
|
+
actions.delete(record.requestId);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function textOf(event) {
|
|
68
|
+
if (event.kind === "text_delta") {
|
|
69
|
+
return event.text;
|
|
70
|
+
}
|
|
71
|
+
return event.kind === "reasoning" && event.content.kind === "text" ? event.content.text : null;
|
|
72
|
+
}
|
|
73
|
+
function withText(event, text) {
|
|
74
|
+
if (event.kind === "reasoning") {
|
|
75
|
+
return { ...event, content: { kind: "text", text } };
|
|
76
|
+
}
|
|
77
|
+
return event.kind === "text_delta" ? { ...event, text } : event;
|
|
78
|
+
}
|
|
79
|
+
function sameLane(held, next) {
|
|
80
|
+
return held.kind === next.kind
|
|
81
|
+
&& held.sessionId === next.sessionId
|
|
82
|
+
&& held.agentPath.length === next.agentPath.length
|
|
83
|
+
&& held.agentPath.every((segment, index) => segment === next.agentPath[index]);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Consumer-side coalescing: wrap an event observer so consecutive text (or
|
|
87
|
+
* readable reasoning) pieces of one agent arrive as one event instead of a
|
|
88
|
+
* token stream. Flushes when the kind or agent changes, a non-text event
|
|
89
|
+
* arrives, or (when `maxHoldMs` is set) the stream goes quiet for that long.
|
|
90
|
+
* The merged event carries the LAST piece's envelope. Order is safe because
|
|
91
|
+
* only consecutive same-lane pieces are ever held.
|
|
92
|
+
*/
|
|
93
|
+
export function coalesceText(observer, options = {}) {
|
|
94
|
+
let held = null;
|
|
95
|
+
let holdTimer = null;
|
|
96
|
+
const flush = () => {
|
|
97
|
+
if (holdTimer !== null) {
|
|
98
|
+
clearTimeout(holdTimer);
|
|
99
|
+
holdTimer = null;
|
|
100
|
+
}
|
|
101
|
+
if (held !== null) {
|
|
102
|
+
const event = held;
|
|
103
|
+
held = null;
|
|
104
|
+
observer(event);
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
const armHoldTimer = () => {
|
|
108
|
+
if (options.maxHoldMs === undefined) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
if (holdTimer !== null) {
|
|
112
|
+
clearTimeout(holdTimer);
|
|
113
|
+
}
|
|
114
|
+
holdTimer = setTimeout(flush, options.maxHoldMs);
|
|
115
|
+
};
|
|
116
|
+
return (event) => {
|
|
117
|
+
const text = textOf(event);
|
|
118
|
+
if (text !== null) {
|
|
119
|
+
const previousText = held === null ? null : textOf(held);
|
|
120
|
+
if (held !== null && previousText !== null && sameLane(held, event)) {
|
|
121
|
+
held = withText(event, `${previousText}${text}`);
|
|
122
|
+
armHoldTimer();
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
flush();
|
|
126
|
+
held = event;
|
|
127
|
+
armHoldTimer();
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
flush();
|
|
131
|
+
observer(event);
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/observe/events.ts"],"names":[],"mappings":"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"}
|
package/dist/observe/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Browser-safe observe subpath: the pure derivation utilities over
|
|
3
|
-
*
|
|
3
|
+
* RawEvents, with ZERO Node and ZERO adapter imports. A renderer can
|
|
4
4
|
* value-import `@botiverse/oar/observe` directly without dragging the runtime
|
|
5
5
|
* adapters (node:child_process, the pi SDK, …) into a browser bundle. The
|
|
6
6
|
* root `@botiverse/oar` re-exports these too, for Node consumers.
|
|
7
7
|
*/
|
|
8
|
-
export {
|
|
8
|
+
export { coalesceText, controlActionsOf, eventsOf, eventsReader } from "./events.js";
|
|
9
9
|
export { initialStatus, reduceStatus, stallOf } from "./agent-status.js";
|
|
10
10
|
export type { AgentStatus, RunningPhase } from "./agent-status.js";
|
|
11
11
|
export { observeStalls } from "./stall-observer.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observe/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observe/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACzE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACjE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACnE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACvE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/observe/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Browser-safe observe subpath: the pure derivation utilities over
|
|
3
|
-
*
|
|
3
|
+
* RawEvents, with ZERO Node and ZERO adapter imports. A renderer can
|
|
4
4
|
* value-import `@botiverse/oar/observe` directly without dragging the runtime
|
|
5
5
|
* adapters (node:child_process, the pi SDK, …) into a browser bundle. The
|
|
6
6
|
* root `@botiverse/oar` re-exports these too, for Node consumers.
|
|
7
7
|
*/
|
|
8
|
-
export {
|
|
8
|
+
export { coalesceText, controlActionsOf, eventsOf, eventsReader } from "./events.js";
|
|
9
9
|
export { initialStatus, reduceStatus, stallOf } from "./agent-status.js";
|
|
10
10
|
export { observeStalls } from "./stall-observer.js";
|
|
11
11
|
export { observeAgent, simpleStateOf } from "./observe-agent.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/observe/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/observe/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEvE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -10,7 +10,7 @@ import type { Session, Unsubscribe } from "../contracts/session.js";
|
|
|
10
10
|
export interface StallInfo {
|
|
11
11
|
readonly sinceSeq: number;
|
|
12
12
|
readonly silentForMs: number;
|
|
13
|
-
/** `kind` of the last folded record, with the
|
|
13
|
+
/** `kind` of the last folded record, with the frame's last event kind when it had one (e.g. `frame:tool_call_started`). */
|
|
14
14
|
readonly lastRecordKind: string;
|
|
15
15
|
}
|
|
16
16
|
export declare function observeStalls(session: Session, options: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stall-observer.d.ts","sourceRoot":"","sources":["../../src/observe/stall-observer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGpE;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,
|
|
1
|
+
{"version":3,"file":"stall-observer.d.ts","sourceRoot":"","sources":["../../src/observe/stall-observer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGpE;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,2HAA2H;IAC3H,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE;IAAE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;CAAE,GACtF,WAAW,CAoCb"}
|
|
@@ -18,10 +18,10 @@ export function observeStalls(session, options) {
|
|
|
18
18
|
}
|
|
19
19
|
}, options.stallAfterMs);
|
|
20
20
|
};
|
|
21
|
-
const unsubscribe = session.
|
|
21
|
+
const unsubscribe = session.rawEvents((record) => {
|
|
22
22
|
status = reduceStatus(status, record, session.id);
|
|
23
|
-
const
|
|
24
|
-
lastRecordKind =
|
|
23
|
+
const lastEvent = record.kind === "frame" ? record.body.events.at(-1) : undefined;
|
|
24
|
+
lastRecordKind = lastEvent === undefined ? record.kind : `frame:${lastEvent.kind}`;
|
|
25
25
|
if (status.kind === "running") {
|
|
26
26
|
arm();
|
|
27
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stall-observer.js","sourceRoot":"","sources":["../../src/observe/stall-observer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAoB,MAAM,mBAAmB,CAAC;AAiB3F,MAAM,UAAU,aAAa,CAC3B,OAAgB,EAChB,OAAuF;IAEvF,IAAI,MAAM,GAAgB,aAAa,CAAC;IACxC,IAAI,cAAc,GAAG,EAAE,CAAC;IACxB,IAAI,KAAK,GAA0B,IAAI,CAAC;IAExC,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,GAAS,EAAE;QACrB,MAAM,EAAE,CAAC;QACT,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;YAChE,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;QAC/C,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,
|
|
1
|
+
{"version":3,"file":"stall-observer.js","sourceRoot":"","sources":["../../src/observe/stall-observer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAoB,MAAM,mBAAmB,CAAC;AAiB3F,MAAM,UAAU,aAAa,CAC3B,OAAgB,EAChB,OAAuF;IAEvF,IAAI,MAAM,GAAgB,aAAa,CAAC;IACxC,IAAI,cAAc,GAAG,EAAE,CAAC;IACxB,IAAI,KAAK,GAA0B,IAAI,CAAC;IAExC,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,GAAS,EAAE;QACrB,MAAM,EAAE,CAAC;QACT,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;YAChE,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;QAC/C,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClF,cAAc,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,IAAI,EAAE,CAAC;QACnF,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,GAAG,EAAE,CAAC;QACR,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,EAAE;QACV,MAAM,EAAE,CAAC;QACT,WAAW,EAAE,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Cross-runtime tool classification: the friendly-Activity utility. Each
|
|
3
3
|
* runtime names the same action differently (claude "Bash", codex
|
|
4
4
|
* "commandExecution", pi "bash"); only OAR knows the mapping, so it lives
|
|
5
|
-
* here. Pure: raw tool_call events stay the source of truth; a friendly
|
|
5
|
+
* here. Pure: raw tool_call events stay the source of truth; a friendly rendering
|
|
6
6
|
* derives labels via this (same pattern as reduceStatus / aggregateDeltas).
|
|
7
7
|
*
|
|
8
8
|
* The tool set is OPEN (custom + MCP tools have arbitrary names), so unknown
|
|
@@ -16,6 +16,6 @@ export interface ToolAction {
|
|
|
16
16
|
}
|
|
17
17
|
/** Classify one tool call into a cross-runtime semantic action plus an extracted detail. */
|
|
18
18
|
export declare function classifyTool(runtimeId: string, tool: string, inputJson?: string): ToolAction;
|
|
19
|
-
/** The human label for an action in a given lifecycle state; tense centralized here so
|
|
19
|
+
/** The human label for an action in a given lifecycle state; tense centralized here so events stay consistent. */
|
|
20
20
|
export declare function toolActionLabel(kind: ToolActionKind, state: "running" | "done" | "failed"): string;
|
|
21
21
|
//# sourceMappingURL=tool-activity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-activity.d.ts","sourceRoot":"","sources":["../../src/observe/tool-activity.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,MAAM,MAAM,cAAc,GACtB,aAAa,GACb,WAAW,GACX,WAAW,GACX,QAAQ,GACR,KAAK,GACL,KAAK,GACL,OAAO,CAAC;AAEZ,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,4FAA4F;IAC5F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAwED,4FAA4F;AAC5F,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,CAI5F;AAYD,
|
|
1
|
+
{"version":3,"file":"tool-activity.d.ts","sourceRoot":"","sources":["../../src/observe/tool-activity.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,MAAM,MAAM,cAAc,GACtB,aAAa,GACb,WAAW,GACX,WAAW,GACX,QAAQ,GACR,KAAK,GACL,KAAK,GACL,OAAO,CAAC;AAEZ,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,4FAA4F;IAC5F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAwED,4FAA4F;AAC5F,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,CAI5F;AAYD,kHAAkH;AAClH,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAElG"}
|
|
@@ -80,7 +80,7 @@ const LABELS = {
|
|
|
80
80
|
mcp: { running: "Using a tool", done: "Used a tool", failed: "Tool failed" },
|
|
81
81
|
other: { running: "Working", done: "Done", failed: "Failed" },
|
|
82
82
|
};
|
|
83
|
-
/** The human label for an action in a given lifecycle state; tense centralized here so
|
|
83
|
+
/** The human label for an action in a given lifecycle state; tense centralized here so events stay consistent. */
|
|
84
84
|
export function toolActionLabel(kind, state) {
|
|
85
85
|
return LABELS[kind][state];
|
|
86
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-activity.js","sourceRoot":"","sources":["../../src/observe/tool-activity.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tool-activity.js","sourceRoot":"","sources":["../../src/observe/tool-activity.ts"],"names":[],"mappings":"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"}
|
package/dist/observe/turns.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ControlResult, Session,
|
|
1
|
+
import type { ControlResult, Session, RawEvent, TurnOutcome } from "../contracts/session.js";
|
|
2
2
|
/**
|
|
3
3
|
* Turn helpers for consumers. A turn is a SPAN on the stream, not a control
|
|
4
4
|
* object: it starts at the prompt request record and ends at the runtime's own
|
|
@@ -13,10 +13,10 @@ import type { ControlResult, Session, SessionRecord, TurnOutcome } from "../cont
|
|
|
13
13
|
*/
|
|
14
14
|
/**
|
|
15
15
|
* The root-agent turn end after `afterSeq`, if the stream already holds one:
|
|
16
|
-
* the runtime's turn_ended
|
|
16
|
+
* the runtime's turn_ended event, or an observed process exit. When `sessionId`
|
|
17
17
|
* is given, only that session's records count.
|
|
18
18
|
*/
|
|
19
|
-
export declare function turnEndAfter(records: readonly
|
|
19
|
+
export declare function turnEndAfter(records: readonly RawEvent[], afterSeq: number, sessionId?: string): TurnOutcome | null;
|
|
20
20
|
/**
|
|
21
21
|
* Resolve with the first turn end of the session's root agent recorded after
|
|
22
22
|
* `afterSeq`, from the retained log if it already happened, otherwise live.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turns.d.ts","sourceRoot":"","sources":["../../src/observe/turns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"turns.d.ts","sourceRoot":"","sources":["../../src/observe/turns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE7F;;;;;;;;;;;GAWG;AAEH;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,SAAS,QAAQ,EAAE,EAC5B,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GACjB,WAAW,GAAG,IAAI,CAmBpB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAgB3F;AAED,MAAM,MAAM,SAAS,GACjB;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACtF;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAA;CAAE,CAAC;AAE9F,mIAAmI;AACnI,wBAAsB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAQvF"}
|
package/dist/observe/turns.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
/**
|
|
14
14
|
* The root-agent turn end after `afterSeq`, if the stream already holds one:
|
|
15
|
-
* the runtime's turn_ended
|
|
15
|
+
* the runtime's turn_ended event, or an observed process exit. When `sessionId`
|
|
16
16
|
* is given, only that session's records count.
|
|
17
17
|
*/
|
|
18
18
|
export function turnEndAfter(records, afterSeq, sessionId) {
|
|
@@ -23,8 +23,8 @@ export function turnEndAfter(records, afterSeq, sessionId) {
|
|
|
23
23
|
if (sessionId !== undefined && record.sessionId !== sessionId) {
|
|
24
24
|
continue;
|
|
25
25
|
}
|
|
26
|
-
if (record.kind === "
|
|
27
|
-
const ended = record.body.
|
|
26
|
+
if (record.kind === "frame") {
|
|
27
|
+
const ended = record.body.events.find((event) => event.kind === "turn_ended");
|
|
28
28
|
if (ended?.kind === "turn_ended") {
|
|
29
29
|
return ended.outcome;
|
|
30
30
|
}
|
|
@@ -43,7 +43,7 @@ export function turnEndAfter(records, afterSeq, sessionId) {
|
|
|
43
43
|
export async function awaitTurnEnd(session, afterSeq) {
|
|
44
44
|
const { promise, resolve } = Promise.withResolvers();
|
|
45
45
|
let done = false;
|
|
46
|
-
const unsubscribe = session.
|
|
46
|
+
const unsubscribe = session.rawEvents((record) => {
|
|
47
47
|
if (done) {
|
|
48
48
|
return;
|
|
49
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turns.js","sourceRoot":"","sources":["../../src/observe/turns.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,
|
|
1
|
+
{"version":3,"file":"turns.js","sourceRoot":"","sources":["../../src/observe/turns.ts"],"names":[],"mappings":"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"}
|
package/dist/observe/usage.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { ContextUsage, QueryResult,
|
|
1
|
+
import type { ContextUsage, QueryResult, RawEvent, SessionUsage } from "../contracts/session.js";
|
|
2
2
|
/** The latest model the runtime reported for the root agent; null before any. */
|
|
3
|
-
export declare function modelOf(records: readonly
|
|
3
|
+
export declare function modelOf(records: readonly RawEvent[], sessionId?: string): QueryResult<string | null>;
|
|
4
4
|
/** The latest context fullness the runtime reported for the root agent; null before any. */
|
|
5
|
-
export declare function contextUsageOf(records: readonly
|
|
5
|
+
export declare function contextUsageOf(records: readonly RawEvent[], sessionId?: string): QueryResult<ContextUsage | null>;
|
|
6
6
|
/**
|
|
7
7
|
* Session total plus a per-agent breakdown. Each agent's totals are the
|
|
8
8
|
* LATEST cumulative figure its records reported (adapters resolve their
|
|
@@ -11,5 +11,5 @@ export declare function contextUsageOf(records: readonly SessionRecord[], sessio
|
|
|
11
11
|
* total. Agents are the `agentPath`s of THIS session; derived child sessions
|
|
12
12
|
* are not agents of it.
|
|
13
13
|
*/
|
|
14
|
-
export declare function usageOf(records: readonly
|
|
14
|
+
export declare function usageOf(records: readonly RawEvent[], sessionId?: string): QueryResult<SessionUsage>;
|
|
15
15
|
//# sourceMappingURL=usage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/observe/usage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/observe/usage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,YAAY,EAEb,MAAM,yBAAyB,CAAC;AA2BjC,iFAAiF;AACjF,wBAAgB,OAAO,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,CAYpG;AAED,4FAA4F;AAC5F,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,CAYjH;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC,CA2BnG"}
|
package/dist/observe/usage.js
CHANGED
|
@@ -29,10 +29,10 @@ export function modelOf(records, sessionId) {
|
|
|
29
29
|
continue;
|
|
30
30
|
}
|
|
31
31
|
seq = record.seq;
|
|
32
|
-
if (record.kind === "
|
|
33
|
-
const
|
|
34
|
-
if (
|
|
35
|
-
value =
|
|
32
|
+
if (record.kind === "frame" && record.agentPath.length === 0) {
|
|
33
|
+
const event = record.body.events.findLast((candidate) => candidate.kind === "model");
|
|
34
|
+
if (event?.kind === "model") {
|
|
35
|
+
value = event.model;
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
}
|
|
@@ -47,10 +47,10 @@ export function contextUsageOf(records, sessionId) {
|
|
|
47
47
|
continue;
|
|
48
48
|
}
|
|
49
49
|
seq = record.seq;
|
|
50
|
-
if (record.kind === "
|
|
51
|
-
const
|
|
52
|
-
if (
|
|
53
|
-
value =
|
|
50
|
+
if (record.kind === "frame" && record.agentPath.length === 0) {
|
|
51
|
+
const event = record.body.events.findLast((candidate) => candidate.kind === "usage" && candidate.usage.context !== undefined);
|
|
52
|
+
if (event?.kind === "usage" && event.usage.context !== undefined) {
|
|
53
|
+
value = event.usage.context;
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
}
|
|
@@ -72,12 +72,12 @@ export function usageOf(records, sessionId) {
|
|
|
72
72
|
continue;
|
|
73
73
|
}
|
|
74
74
|
seq = record.seq;
|
|
75
|
-
if (record.kind !== "
|
|
75
|
+
if (record.kind !== "frame") {
|
|
76
76
|
continue;
|
|
77
77
|
}
|
|
78
|
-
for (const
|
|
79
|
-
if (
|
|
80
|
-
latest.set(pathKey(record.agentPath), { agentPath: record.agentPath, tokens:
|
|
78
|
+
for (const event of record.body.events) {
|
|
79
|
+
if (event.kind === "usage" && event.usage.tokens !== undefined) {
|
|
80
|
+
latest.set(pathKey(record.agentPath), { agentPath: record.agentPath, tokens: event.usage.tokens });
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/observe/usage.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;GAeG;AAEH,SAAS,OAAO,CAAC,SAA4B;IAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/observe/usage.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;GAeG;AAEH,SAAS,OAAO,CAAC,SAA4B;IAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,SAAS,CAAC,MAAgB,EAAE,SAA6B;IAChE,OAAO,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC;AACnE,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,OAAO,CAAC,OAA4B,EAAE,SAAkB;IACtE,IAAI,KAAK,GAAkB,IAAI,CAAC;IAChC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IACb,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QAChD,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACjB,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;YACrF,IAAI,KAAK,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;gBAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAAC,CAAC;QACvD,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACxB,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,cAAc,CAAC,OAA4B,EAAE,SAAkB;IAC7E,IAAI,KAAK,GAAwB,IAAI,CAAC;IACtC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IACb,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QAChD,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACjB,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;YAC9H,IAAI,KAAK,EAAE,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;YAAC,CAAC;QACpG,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACxB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CAAC,OAA4B,EAAE,SAAkB;IACtE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmF,CAAC;IAC1G,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IACb,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QAChD,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACjB,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,SAAS;QACX,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC/D,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YACrG,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACrC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,yEAAyE;QACzE,uCAAuC;QACvC,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC;IACzC,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAC1B,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EACrG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CACxB,CAAC;IACF,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAC/F,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC;AACnE,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { FrameBody, ResponseBody, TokenTotals } from "../../contracts/session.js";
|
|
2
2
|
import { type JsonRecord } from "../../shared/json.js";
|
|
3
3
|
/**
|
|
4
4
|
* The claude stdout → record projection as a PURE FOLD. A reducer over the
|
|
@@ -9,15 +9,15 @@ import { type JsonRecord } from "../../shared/json.js";
|
|
|
9
9
|
* list. No transport, no side effects, so it is trivially unit-testable and
|
|
10
10
|
* shared verbatim between live and replay.
|
|
11
11
|
*
|
|
12
|
-
* Rules the fold enforces: EVERY frame becomes exactly one
|
|
13
|
-
* (verbatim `native`,
|
|
12
|
+
* Rules the fold enforces: EVERY frame becomes exactly one frame
|
|
13
|
+
* (verbatim `native`, events in block order); nothing is gated on whether a
|
|
14
14
|
* turn is "open"; the turn's end is claude's own `result` frame; attribution
|
|
15
15
|
* comes from `parent_tool_use_id` (a child's path is its parent's path plus
|
|
16
16
|
* the Task tool_use id that spawned it).
|
|
17
17
|
*/
|
|
18
18
|
export type ProjectionCommand = {
|
|
19
|
-
readonly kind: "
|
|
20
|
-
readonly body:
|
|
19
|
+
readonly kind: "frame";
|
|
20
|
+
readonly body: FrameBody;
|
|
21
21
|
readonly agentPath: readonly string[];
|
|
22
22
|
}
|
|
23
23
|
/** claude answered one of our `control_request`s (interrupt): the response to that request record. */
|
|
@@ -40,7 +40,7 @@ export type ProjectionCommand = {
|
|
|
40
40
|
* completed. `agents` maps every tool_use id seen to the agentPath of the
|
|
41
41
|
* message that carried it, so a frame with `parent_tool_use_id` attributes to
|
|
42
42
|
* that tool call's agent plus the call; nested Task calls nest the path.
|
|
43
|
-
* `tokens` accumulates per-agent result usage so usage
|
|
43
|
+
* `tokens` accumulates per-agent result usage so usage events are cumulative.
|
|
44
44
|
*/
|
|
45
45
|
export interface ClaudeProjectionState {
|
|
46
46
|
readonly abortRequested: boolean;
|
|
@@ -136,27 +136,27 @@ function accumulate(state, agentPath, message) {
|
|
|
136
136
|
export function foldClaudeStdout(state, message) {
|
|
137
137
|
const type = frameType(message);
|
|
138
138
|
const agentPath = attributionOf(state, message);
|
|
139
|
-
const event = (body, next = state) => ({ state: next, commands: [{ kind: "
|
|
139
|
+
const event = (body, next = state) => ({ state: next, commands: [{ kind: "frame", body: { type, native: message, ...body }, agentPath }] });
|
|
140
140
|
switch (String(message.type)) {
|
|
141
141
|
case "assistant":
|
|
142
|
-
return event({
|
|
142
|
+
return event({ events: assistantViews(message) }, rememberToolUses(state, message, agentPath));
|
|
143
143
|
case "user":
|
|
144
|
-
return event({
|
|
144
|
+
return event({ events: toolResultViews(message) });
|
|
145
145
|
case "result": {
|
|
146
|
-
const
|
|
146
|
+
const events = [{ kind: "turn_ended", outcome: resultOutcome(state, message) }];
|
|
147
147
|
const accumulated = accumulate(state, agentPath, message);
|
|
148
148
|
const context = claudeContextUsageFromResult(message);
|
|
149
149
|
if (accumulated !== null || context !== null) {
|
|
150
|
-
|
|
150
|
+
events.push({ kind: "usage", usage: {
|
|
151
151
|
...(context === null ? {} : { context }),
|
|
152
152
|
...(accumulated === null ? {} : { tokens: accumulated.tokens }),
|
|
153
153
|
} });
|
|
154
154
|
}
|
|
155
|
-
return event({
|
|
155
|
+
return event({ events }, { ...(accumulated?.state ?? state), abortRequested: false });
|
|
156
156
|
}
|
|
157
157
|
case "system": {
|
|
158
158
|
const model = message.subtype === "init" && typeof message.model === "string" ? message.model : null;
|
|
159
|
-
return event({
|
|
159
|
+
return event({ events: model === null ? [] : [{ kind: "model", model }] });
|
|
160
160
|
}
|
|
161
161
|
case "control_response": {
|
|
162
162
|
// claude answering one of OUR control_requests (interrupt): the frame IS
|
|
@@ -166,7 +166,7 @@ export function foldClaudeStdout(state, message) {
|
|
|
166
166
|
const response = asRecord(message.response);
|
|
167
167
|
const requestId = typeof response?.request_id === "string" ? response.request_id : null;
|
|
168
168
|
if (requestId === null) {
|
|
169
|
-
return event({
|
|
169
|
+
return event({ events: [] });
|
|
170
170
|
}
|
|
171
171
|
const error = typeof response?.error === "string" ? response.error : null;
|
|
172
172
|
return { state, commands: [{
|
|
@@ -185,13 +185,13 @@ export function foldClaudeStdout(state, message) {
|
|
|
185
185
|
return {
|
|
186
186
|
state,
|
|
187
187
|
commands: [
|
|
188
|
-
{ kind: "
|
|
188
|
+
{ kind: "frame", body: { type, native: message, events: [] }, agentPath },
|
|
189
189
|
{ kind: "toApp", id, type: subtype, native: message },
|
|
190
190
|
],
|
|
191
191
|
};
|
|
192
192
|
}
|
|
193
193
|
default:
|
|
194
|
-
return event({
|
|
194
|
+
return event({ events: [] });
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
197
|
//# sourceMappingURL=projection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projection.js","sourceRoot":"","sources":["../../../src/runtimes/claude/projection.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAmB,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAwClE,MAAM,CAAC,MAAM,uBAAuB,GAA0B;IAC5D,cAAc,EAAE,KAAK;IACrB,MAAM,EAAE,IAAI,GAAG,EAAE;IACjB,MAAM,EAAE,IAAI,GAAG,EAAE;CAClB,CAAC;AAEF,uFAAuF;AACvF,MAAM,UAAU,cAAc,CAAC,KAA4B;IACzD,OAAO,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAA4B;IAC/D,OAAO,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,aAAa,CAAC,OAAmB;IACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,CAAC;IAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,cAAc,CAAC,OAAmB;IACzC,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"projection.js","sourceRoot":"","sources":["../../../src/runtimes/claude/projection.ts"],"names":[],"mappings":"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"}
|