@botiverse/oar 0.53.0 → 0.54.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/README.md +1 -1
- package/dist/contracts/records.d.ts +7 -0
- package/dist/contracts/records.d.ts.map +1 -1
- package/dist/contracts/session.d.ts +4 -3
- package/dist/contracts/session.d.ts.map +1 -1
- package/dist/contracts/status.d.ts +4 -1
- package/dist/contracts/status.d.ts.map +1 -1
- package/dist/observe/agent-status.d.ts +2 -2
- package/dist/observe/agent-status.d.ts.map +1 -1
- package/dist/observe/agent-status.js +15 -4
- package/dist/observe/agent-status.js.map +1 -1
- package/dist/observe/display-text.d.ts +9 -2
- package/dist/observe/display-text.d.ts.map +1 -1
- package/dist/observe/display-text.js +22 -3
- package/dist/observe/display-text.js.map +1 -1
- package/dist/observe/graph.d.ts +14 -0
- package/dist/observe/graph.d.ts.map +1 -0
- package/dist/observe/graph.js +40 -0
- package/dist/observe/graph.js.map +1 -0
- package/dist/observe/index.d.ts +1 -0
- package/dist/observe/index.d.ts.map +1 -1
- package/dist/observe/index.js +1 -0
- package/dist/observe/index.js.map +1 -1
- package/dist/observe/session-view-events.d.ts.map +1 -1
- package/dist/observe/session-view-events.js +8 -13
- package/dist/observe/session-view-events.js.map +1 -1
- package/dist/observe/session-view-fold.d.ts +5 -4
- package/dist/observe/session-view-fold.d.ts.map +1 -1
- package/dist/observe/session-view-fold.js +9 -6
- package/dist/observe/session-view-fold.js.map +1 -1
- package/dist/observe/session-view.d.ts +5 -1
- package/dist/observe/session-view.d.ts.map +1 -1
- package/dist/observe/session-view.js +6 -2
- package/dist/observe/session-view.js.map +1 -1
- package/dist/observe/tool-activity.d.ts +7 -3
- package/dist/observe/tool-activity.d.ts.map +1 -1
- package/dist/observe/tool-activity.js +29 -70
- package/dist/observe/tool-activity.js.map +1 -1
- package/dist/observe/tool-groups.d.ts.map +1 -1
- package/dist/observe/tool-groups.js +6 -1
- package/dist/observe/tool-groups.js.map +1 -1
- package/dist/observe/tool-paths.d.ts +3 -0
- package/dist/observe/tool-paths.d.ts.map +1 -0
- package/dist/observe/tool-paths.js +53 -0
- package/dist/observe/tool-paths.js.map +1 -0
- package/dist/observe/usage-totals.d.ts +27 -0
- package/dist/observe/usage-totals.d.ts.map +1 -0
- package/dist/observe/usage-totals.js +64 -0
- package/dist/observe/usage-totals.js.map +1 -0
- package/dist/observe/usage.d.ts +3 -17
- package/dist/observe/usage.d.ts.map +1 -1
- package/dist/observe/usage.js +14 -69
- package/dist/observe/usage.js.map +1 -1
- package/dist/runtimes/codex/session.d.ts.map +1 -1
- package/dist/runtimes/codex/session.js +2 -5
- package/dist/runtimes/codex/session.js.map +1 -1
- package/dist/runtimes/pi/catalog.d.ts.map +1 -1
- package/dist/runtimes/pi/catalog.js +16 -3
- package/dist/runtimes/pi/catalog.js.map +1 -1
- package/dist/runtimes/pi/facade-runtime.d.ts +2 -1
- package/dist/runtimes/pi/facade-runtime.d.ts.map +1 -1
- package/dist/runtimes/pi/facade-runtime.js +4 -3
- package/dist/runtimes/pi/facade-runtime.js.map +1 -1
- package/dist/runtimes/pi/http.d.ts.map +1 -1
- package/dist/runtimes/pi/http.js +8 -4
- package/dist/runtimes/pi/http.js.map +1 -1
- package/dist/runtimes/pi/list-models.js +2 -2
- package/dist/runtimes/pi/list-models.js.map +1 -1
- package/dist/runtimes/pi/open.js +2 -2
- package/dist/runtimes/pi/open.js.map +1 -1
- package/dist/runtimes/pi/static-modules.d.ts +6 -0
- package/dist/runtimes/pi/static-modules.d.ts.map +1 -0
- package/dist/runtimes/pi/static-modules.js +58 -0
- package/dist/runtimes/pi/static-modules.js.map +1 -0
- package/dist/shared/acp/records.d.ts.map +1 -1
- package/dist/shared/acp/records.js +6 -17
- package/dist/shared/acp/records.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 +6 -19
- package/dist/shared/session-kernel.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-view-fold.d.ts","sourceRoot":"","sources":["../../src/observe/session-view-fold.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,KAAK,EACL,
|
|
1
|
+
{"version":3,"file":"session-view-fold.d.ts","sourceRoot":"","sources":["../../src/observe/session-view-fold.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { usageFromSessions } from "./usage-totals.js";
|
|
2
2
|
export function draftOf(state) {
|
|
3
3
|
return {
|
|
4
4
|
messages: [...state.messages],
|
|
@@ -11,13 +11,14 @@ export function draftOf(state) {
|
|
|
11
11
|
serviceTier: state.serviceTier,
|
|
12
12
|
context: state.context,
|
|
13
13
|
exited: state.exited,
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
usageBySession: new Map(state.usageBySession),
|
|
15
|
+
sessionGraph: state.sessionGraph,
|
|
16
16
|
rootSessionId: state.rootSessionId,
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
19
|
export function assemble(draft, conversation, status) {
|
|
20
|
-
const usage =
|
|
20
|
+
const usage = usageFromSessions(draft.usageBySession, draft.rootSessionId ?? "", draft.sessionGraph);
|
|
21
|
+
const own = draft.usageBySession.get(draft.rootSessionId ?? "");
|
|
21
22
|
return {
|
|
22
23
|
messages: draft.messages,
|
|
23
24
|
pendingInputs: draft.pendingInputs,
|
|
@@ -32,8 +33,10 @@ export function assemble(draft, conversation, status) {
|
|
|
32
33
|
exited: draft.exited,
|
|
33
34
|
conversation,
|
|
34
35
|
rootSessionId: draft.rootSessionId,
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
usageBySession: draft.usageBySession,
|
|
37
|
+
sessionGraph: draft.sessionGraph,
|
|
38
|
+
usageByAgent: own?.agents ?? new Map(),
|
|
39
|
+
usageTotal: own?.total ?? null,
|
|
37
40
|
};
|
|
38
41
|
}
|
|
39
42
|
export function sameLane(section, sessionId, agentPath) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-view-fold.js","sourceRoot":"","sources":["../../src/observe/session-view-fold.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"session-view-fold.js","sourceRoot":"","sources":["../../src/observe/session-view-fold.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { ContextUsage, ControlAction, Cursor, Event, RawEvent, ReasoningContent, Session, SessionUsage, TokenTotals, ToolOutputPart, TurnOutcome, Unsubscribe } from "../contracts/session.js";
|
|
1
|
+
import type { ContextUsage, ControlAction, Cursor, Event, RawEvent, ReasoningContent, Session, SessionUsage, SessionGraph, TokenTotals, ToolOutputPart, TurnOutcome, Unsubscribe } from "../contracts/session.js";
|
|
2
|
+
import type { SessionTokens } from "./usage-totals.js";
|
|
2
3
|
import { type AgentStatus } from "./agent-status.js";
|
|
3
4
|
import { type ConversationInput, type ConversationState } from "./conversation.js";
|
|
4
5
|
/**
|
|
@@ -177,6 +178,9 @@ export interface SessionView {
|
|
|
177
178
|
readonly conversation: ConversationState;
|
|
178
179
|
/** sessionId of the latest prompt request: whose `turn_ended` closes turns. */
|
|
179
180
|
readonly rootSessionId: string | undefined;
|
|
181
|
+
/** Replay state for native lineage and every observed session's latest totals; includes children before their lineage arrives. */
|
|
182
|
+
readonly sessionGraph: SessionGraph;
|
|
183
|
+
readonly usageBySession: ReadonlyMap<string, SessionTokens>;
|
|
180
184
|
readonly usageByAgent: ReadonlyMap<string, AgentTokens>;
|
|
181
185
|
/** The runtime's own session total, when it reports one beyond its agents' (`UsageReport.total`); null otherwise. */
|
|
182
186
|
readonly usageTotal: TokenTotals | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-view.d.ts","sourceRoot":"","sources":["../../src/observe/session-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,MAAM,EACN,KAAK,EACL,QAAQ,EACR,gBAAgB,EAChB,OAAO,EACP,YAAY,EACZ,WAAW,EACX,cAAc,EACd,WAAW,EACX,WAAW,EACZ,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"session-view.d.ts","sourceRoot":"","sources":["../../src/observe/session-view.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { withSessionNode } from "./graph.js";
|
|
1
2
|
import { initialStatus, reduceStatus } from "./agent-status.js";
|
|
2
3
|
import { initialConversation, reduceConversation, } from "./conversation.js";
|
|
3
4
|
import { assemble, draftOf, stampTurnOutcome } from "./session-view-fold.js";
|
|
@@ -19,8 +20,9 @@ export function initialSessionView() {
|
|
|
19
20
|
exited: null,
|
|
20
21
|
conversation: initialConversation(),
|
|
21
22
|
rootSessionId: undefined,
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
sessionGraph: { nodes: [], edges: [] },
|
|
24
|
+
usageBySession: new Map(),
|
|
25
|
+
usageByAgent: new Map(), usageTotal: null,
|
|
24
26
|
};
|
|
25
27
|
}
|
|
26
28
|
/**
|
|
@@ -35,6 +37,7 @@ export function reduceSessionView(previous, record, streamId = "") {
|
|
|
35
37
|
}
|
|
36
38
|
const draft = draftOf(previous);
|
|
37
39
|
draft.rootSessionId ??= record.sessionId;
|
|
40
|
+
draft.sessionGraph = withSessionNode(draft.sessionGraph, record.sessionId);
|
|
38
41
|
if (record.kind === "request" &&
|
|
39
42
|
record.direction === "toRuntime" &&
|
|
40
43
|
record.body.kind === "prompt") {
|
|
@@ -65,6 +68,7 @@ export function reduceSessionView(previous, record, streamId = "") {
|
|
|
65
68
|
export function reduceSessionViewEvent(previous, event, streamId = "") {
|
|
66
69
|
const draft = draftOf(previous);
|
|
67
70
|
draft.rootSessionId ??= event.sessionId;
|
|
71
|
+
draft.sessionGraph = withSessionNode(draft.sessionGraph, event.sessionId);
|
|
68
72
|
foldEvent(draft, upgradeLegacyEvent(event), streamId);
|
|
69
73
|
return assemble(draft, previous.conversation, previous.status);
|
|
70
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-view.js","sourceRoot":"","sources":["../../src/observe/session-view.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-view.js","sourceRoot":"","sources":["../../src/observe/session-view.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* The tool set is OPEN (custom + MCP tools have arbitrary names), so unknown
|
|
9
9
|
* tools fall back to "other" rather than being force-fit.
|
|
10
10
|
*/
|
|
11
|
-
export type ToolActionKind = "run_command" | "read_file" | "edit_file" | "search" | "web" | "mcp" | "wait" | "other";
|
|
11
|
+
export type ToolActionKind = "run_command" | "read_file" | "edit_file" | "search" | "web" | "fetch" | "subagent" | "mcp" | "wait" | "other";
|
|
12
12
|
export interface ToolAction {
|
|
13
13
|
readonly kind: ToolActionKind;
|
|
14
14
|
/**
|
|
@@ -32,7 +32,11 @@ export interface ToolAction {
|
|
|
32
32
|
* grok `run_terminal_command`, kimi `Bash`, opencode `bash`).
|
|
33
33
|
*/
|
|
34
34
|
readonly command?: string;
|
|
35
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* The agent's own one-line account of the call, where the runtime sends one (claude `Bash`,
|
|
37
|
+
* grok `run_terminal_command`). On a `subagent` call (claude `Agent` or `Task`, opencode `subagent`) it is
|
|
38
|
+
* the subagent's task, also its `detail`.
|
|
39
|
+
*/
|
|
36
40
|
readonly description?: string;
|
|
37
41
|
/**
|
|
38
42
|
* `wait`: how long the agent asked to wait, in ms, as the runtime reported it (codex
|
|
@@ -45,5 +49,5 @@ export interface ToolAction {
|
|
|
45
49
|
/** Classify one tool call into a cross-runtime semantic action plus an extracted detail (and, for a file tool, its paths). Pass only complete input; omit inputJson while a view part has inputPartial. */
|
|
46
50
|
export declare function classifyTool(runtimeId: string, tool: string, inputJson?: string): ToolAction;
|
|
47
51
|
/** The human label for an action in a given lifecycle state; tense centralized here so events stay consistent. */
|
|
48
|
-
export declare function toolActionLabel(kind: ToolActionKind, state: "running" | "done" | "failed"): string;
|
|
52
|
+
export declare function toolActionLabel(kind: ToolActionKind, state: "writing" | "running" | "done" | "failed"): string;
|
|
49
53
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"tool-activity.d.ts","sourceRoot":"","sources":["../../src/observe/tool-activity.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AAEH,MAAM,MAAM,cAAc,GACtB,aAAa,GACb,WAAW,GACX,WAAW,GACX,QAAQ,GACR,KAAK,GACL,OAAO,GACP,UAAU,GACV,KAAK,GACL,MAAM,GACN,OAAO,CAAC;AAEZ,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;;OAQG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAwKD,2MAA2M;AAC3M,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,CAO5F;AAgBD,kHAAkH;AAClH,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAE9G"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { asNumber, asRecord, parseJson } from "../shared/json.js";
|
|
2
|
+
import { filePathsOf } from "./tool-paths.js";
|
|
2
3
|
// Per-runtime tool name → kind. Names are what the tool_call_started event
|
|
3
4
|
// carries (codex uses its item type; claude/pi use the tool name; the ACP
|
|
4
5
|
// runtimes the opening `tool_call`'s `title`, shared/acp/projection.ts). The
|
|
@@ -13,8 +14,10 @@ const BY_RUNTIME = {
|
|
|
13
14
|
NotebookEdit: "edit_file",
|
|
14
15
|
Grep: "search",
|
|
15
16
|
Glob: "search",
|
|
16
|
-
WebFetch: "
|
|
17
|
+
WebFetch: "fetch",
|
|
17
18
|
WebSearch: "web",
|
|
19
|
+
Agent: "subagent",
|
|
20
|
+
Task: "subagent", // Agent's alias in 2.1.292: a call the model makes as `Task` is recorded as `Task`.
|
|
18
21
|
},
|
|
19
22
|
codex: {
|
|
20
23
|
commandExecution: "run_command",
|
|
@@ -41,7 +44,7 @@ const BY_RUNTIME = {
|
|
|
41
44
|
opencode: {
|
|
42
45
|
bash: "run_command",
|
|
43
46
|
shell: "run_command",
|
|
44
|
-
subagent: "
|
|
47
|
+
subagent: "subagent",
|
|
45
48
|
execute: "other", // Native Code Mode can run MCP tools or plain JavaScript/fetch; its name alone proves neither.
|
|
46
49
|
read: "read_file",
|
|
47
50
|
write: "edit_file",
|
|
@@ -61,7 +64,7 @@ const BY_RUNTIME = {
|
|
|
61
64
|
glob: "search",
|
|
62
65
|
semSearch: "search",
|
|
63
66
|
webSearch: "web",
|
|
64
|
-
webFetch: "
|
|
67
|
+
webFetch: "fetch",
|
|
65
68
|
mcp: "mcp",
|
|
66
69
|
},
|
|
67
70
|
};
|
|
@@ -91,6 +94,11 @@ function stringFields(inputJson, withDescription) {
|
|
|
91
94
|
...(description === undefined ? {} : { description }),
|
|
92
95
|
};
|
|
93
96
|
}
|
|
97
|
+
/** A subagent call's task: the input's `description` only, never a `command` it does not run. */
|
|
98
|
+
function taskFields(inputJson) {
|
|
99
|
+
const { description } = stringFields(inputJson, true);
|
|
100
|
+
return description === undefined ? {} : { description };
|
|
101
|
+
}
|
|
94
102
|
/** A wait's asked duration: the input's `durationMs`, when a finite positive number. */
|
|
95
103
|
function waitFields(inputJson) {
|
|
96
104
|
const durationMs = asNumber(asRecord(parseJson(inputJson))?.durationMs);
|
|
@@ -100,7 +108,9 @@ function waitFields(inputJson) {
|
|
|
100
108
|
* Where each runtime's tools keep the fields a host shows, from recorded inputs
|
|
101
109
|
* (tests/replay/fixtures/*-tool-round.raw.jsonl, and the input keys of
|
|
102
110
|
* *-acp-v1*.vendor.json): a shell tool's command (and description), a wait's
|
|
103
|
-
* duration
|
|
111
|
+
* duration, a subagent call's task (claude `Agent` and opencode `subagent`
|
|
112
|
+
* `{description, prompt, …}`, tests/replay/fixtures/claude-background-tasks.raw.jsonl
|
|
113
|
+
* and opencode-acp-v2-child.json). A runtime with no recorded shape gets none. codex's
|
|
104
114
|
* `commandExecution` input is the bare command line, not JSON
|
|
105
115
|
* (codex/item-detail.ts). grok's opening `tool_call` carries `rawInput`
|
|
106
116
|
* `{command, description}`. kimi's opening frame carries none and opencode's
|
|
@@ -110,7 +120,7 @@ function waitFields(inputJson) {
|
|
|
110
120
|
* there once the call's latest input is passed in.
|
|
111
121
|
*/
|
|
112
122
|
const FIELDS = {
|
|
113
|
-
claude: { Bash: (input) => stringFields(input, true) },
|
|
123
|
+
claude: { Bash: (input) => stringFields(input, true), Agent: taskFields, Task: taskFields },
|
|
114
124
|
codex: {
|
|
115
125
|
commandExecution: (input) => input.length === 0 || asRecord(parseJson(input)) !== null ? {} : { command: input },
|
|
116
126
|
sleep: waitFields,
|
|
@@ -119,63 +129,9 @@ const FIELDS = {
|
|
|
119
129
|
cursor: { shell: (input) => stringFields(input, false) },
|
|
120
130
|
grok: { run_terminal_command: (input) => stringFields(input, true) },
|
|
121
131
|
kimi: { Bash: (input) => stringFields(input, false) },
|
|
122
|
-
opencode: { bash: (input) => stringFields(input, false), shell: (input) => stringFields(input, false) },
|
|
132
|
+
opencode: { bash: (input) => stringFields(input, false), shell: (input) => stringFields(input, false), subagent: taskFields },
|
|
123
133
|
};
|
|
124
134
|
const FIRST_STRING_KEYS = ["command", "cmd", "path", "file_path", "filePath", "file", "pattern", "query", "url"];
|
|
125
|
-
/** The keys of `FIRST_STRING_KEYS` that name a file, in the same order. */
|
|
126
|
-
const PATH_KEYS = ["path", "file_path", "filePath", "file"];
|
|
127
|
-
/** A file tool's one path: the first non-empty `PATH_KEYS` string, as `detail` reads it. */
|
|
128
|
-
function inputPath(inputJson) {
|
|
129
|
-
const input = asRecord(parseJson(inputJson));
|
|
130
|
-
for (const key of PATH_KEYS) {
|
|
131
|
-
const value = input?.[key];
|
|
132
|
-
if (typeof value === "string" && value.length > 0) {
|
|
133
|
-
return [value];
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
return [];
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* A codex `fileChange`'s paths. Its input is the item's `changes` array
|
|
140
|
-
* (codex/item-detail.ts), recorded on 0.160.1
|
|
141
|
-
* (tests/replay/fixtures/codex-file-change.raw.jsonl) as
|
|
142
|
-
* `[{path, kind: {type: "add" | "delete" | "update", move_path?}, diff}]`:
|
|
143
|
-
* absolute paths, sorted by path whatever the patch's order, and `move_path`
|
|
144
|
-
* (snake case, `null` on an update that does not rename) the rename's target.
|
|
145
|
-
*/
|
|
146
|
-
function fileChangePaths(inputJson) {
|
|
147
|
-
const changes = parseJson(inputJson);
|
|
148
|
-
const paths = [];
|
|
149
|
-
for (const raw of Array.isArray(changes) ? changes : []) {
|
|
150
|
-
const change = asRecord(raw);
|
|
151
|
-
for (const value of [change?.path, asRecord(change?.kind)?.move_path]) {
|
|
152
|
-
if (typeof value === "string" && value.length > 0) {
|
|
153
|
-
paths.push(value);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
return paths;
|
|
158
|
-
}
|
|
159
|
-
/** A tool whose one path is under `key`, a key `PATH_KEYS` does not list. */
|
|
160
|
-
function pathUnder(key) {
|
|
161
|
-
return (inputJson) => {
|
|
162
|
-
const value = asRecord(parseJson(inputJson))?.[key];
|
|
163
|
-
return typeof value === "string" && value.length > 0 ? [value] : [];
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
/** Where a runtime's file tool keeps its paths, when not under one of `PATH_KEYS`. */
|
|
167
|
-
const PATHS = {
|
|
168
|
-
// The notebook it edits; never a `detail` before `paths`, now the first of them.
|
|
169
|
-
claude: { NotebookEdit: pathUnder("notebook_path") },
|
|
170
|
-
codex: { fileChange: fileChangePaths },
|
|
171
|
-
};
|
|
172
|
-
/** The file paths a `read_file` / `edit_file` call involves, each once, in the runtime's order. */
|
|
173
|
-
function pathsOf(runtime, tool, kind, inputJson) {
|
|
174
|
-
if (inputJson === undefined || (kind !== "read_file" && kind !== "edit_file")) {
|
|
175
|
-
return [];
|
|
176
|
-
}
|
|
177
|
-
return [...new Set((PATHS[runtime]?.[tool] ?? inputPath)(inputJson))];
|
|
178
|
-
}
|
|
179
135
|
function detailOf(inputJson) {
|
|
180
136
|
if (inputJson === undefined) {
|
|
181
137
|
return undefined;
|
|
@@ -204,19 +160,22 @@ export function classifyTool(runtimeId, tool, inputJson) {
|
|
|
204
160
|
const kind = kindOf(runtimeId, tool);
|
|
205
161
|
const runtime = runtimeId.replace(/-aimock$/u, "");
|
|
206
162
|
const fields = inputJson === undefined ? {} : (FIELDS[runtime]?.[tool]?.(inputJson) ?? {});
|
|
207
|
-
const paths =
|
|
208
|
-
const detail = paths[0] ?? detailOf(inputJson) ?? fields.command ?? (kind === "other" ? tool : undefined);
|
|
163
|
+
const paths = inputJson === undefined || (kind !== "read_file" && kind !== "edit_file") ? [] : filePathsOf(runtime, tool, inputJson);
|
|
164
|
+
const detail = paths[0] ?? detailOf(inputJson) ?? fields.command ?? (kind === "subagent" ? fields.description : undefined) ?? (kind === "other" ? tool : undefined);
|
|
209
165
|
return { kind, ...(detail === undefined ? {} : { detail }), ...(paths.length === 0 ? {} : { paths }), ...fields };
|
|
210
166
|
}
|
|
167
|
+
/** `writing`: the call's arguments are still streaming (claude), before it runs. */
|
|
211
168
|
const LABELS = {
|
|
212
|
-
run_command: { running: "Running command", done: "Ran command", failed: "Command failed" },
|
|
213
|
-
read_file: { running: "Reading file", done: "Read file", failed: "Read failed" },
|
|
214
|
-
edit_file: { running: "Editing file", done: "Edited file", failed: "Edit failed" },
|
|
215
|
-
search: { running: "Searching", done: "Searched", failed: "Search failed" },
|
|
216
|
-
web: { running: "Searching the web", done: "Searched the web", failed: "Web
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
169
|
+
run_command: { writing: "Preparing command", running: "Running command", done: "Ran command", failed: "Command failed" },
|
|
170
|
+
read_file: { writing: "Preparing file read", running: "Reading file", done: "Read file", failed: "Read failed" },
|
|
171
|
+
edit_file: { writing: "Preparing file edit", running: "Editing file", done: "Edited file", failed: "Edit failed" },
|
|
172
|
+
search: { writing: "Preparing search", running: "Searching", done: "Searched", failed: "Search failed" },
|
|
173
|
+
web: { writing: "Preparing web search", running: "Searching the web", done: "Searched the web", failed: "Web search failed" },
|
|
174
|
+
fetch: { writing: "Preparing page fetch", running: "Fetching page", done: "Fetched page", failed: "Fetch failed" },
|
|
175
|
+
subagent: { writing: "Preparing subagent", running: "Running subagent", done: "Ran subagent", failed: "Subagent failed" },
|
|
176
|
+
mcp: { writing: "Preparing a tool call", running: "Using a tool", done: "Used a tool", failed: "Tool failed" },
|
|
177
|
+
wait: { writing: "Preparing to wait", running: "Waiting", done: "Waited", failed: "Wait failed" },
|
|
178
|
+
other: { writing: "Preparing", running: "Working", done: "Done", failed: "Failed" },
|
|
220
179
|
};
|
|
221
180
|
/** The human label for an action in a given lifecycle state; tense centralized here so events stay consistent. */
|
|
222
181
|
export function toolActionLabel(kind, state) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-activity.js","sourceRoot":"","sources":["../../src/observe/tool-activity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-activity.js","sourceRoot":"","sources":["../../src/observe/tool-activity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-groups.d.ts","sourceRoot":"","sources":["../../src/observe/tool-groups.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEvE;;;;;;GAMG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAC3D,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,CAAC;AAErE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,GAAG,aAAa,CAAC,EAAE,CAAC;IACtD,qFAAqF;IACrF,QAAQ,CAAC,MAAM,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACtF,sCAAsC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;CAC7B;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC1E,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-groups.d.ts","sourceRoot":"","sources":["../../src/observe/tool-groups.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEvE;;;;;;GAMG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAC3D,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,CAAC;AAErE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,GAAG,aAAa,CAAC,EAAE,CAAC;IACtD,qFAAqF;IACrF,QAAQ,CAAC,MAAM,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACtF,sCAAsC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;CAC7B;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC1E,SAAS,CAAC;AAwBd,qGAAqG;AACrG,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,gBAAgB,EAAE,CAoBnG;AAeD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAE,SAAS,GAAG,MAAe,GAAG,MAAM,CAyBxG"}
|
|
@@ -3,7 +3,10 @@ function group(runtimeId, index, parts) {
|
|
|
3
3
|
const counts = new Map();
|
|
4
4
|
const tools = parts.filter((part) => part.kind === "tool");
|
|
5
5
|
for (const tool of tools) {
|
|
6
|
-
|
|
6
|
+
// A call's kind depends on its runtime and tool name only, never its
|
|
7
|
+
// input: parsing every call's input again on each grouping made a live
|
|
8
|
+
// host pay tools x input per record (#318).
|
|
9
|
+
const { kind } = classifyTool(runtimeId, tool.tool);
|
|
7
10
|
counts.set(kind, (counts.get(kind) ?? 0) + 1);
|
|
8
11
|
}
|
|
9
12
|
const failed = tools.filter((tool) => tool.result === "failed").length;
|
|
@@ -46,6 +49,8 @@ const DONE = {
|
|
|
46
49
|
edit_file: (n) => (n === 1 ? "edited a file" : `edited ${n} files`),
|
|
47
50
|
search: (n) => (n === 1 ? "searched" : `searched ${n} times`),
|
|
48
51
|
web: (n) => (n === 1 ? "searched the web" : `searched the web ${n} times`),
|
|
52
|
+
fetch: (n) => (n === 1 ? "fetched a page" : `fetched ${n} pages`),
|
|
53
|
+
subagent: (n) => (n === 1 ? "ran a subagent" : `ran ${n} subagents`),
|
|
49
54
|
mcp: (n) => (n === 1 ? "used a tool" : `used ${n} tools`),
|
|
50
55
|
wait: (n) => (n === 1 ? "waited" : `waited ${n} times`),
|
|
51
56
|
other: (n) => (n === 1 ? "used a tool" : `used ${n} tools`),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-groups.js","sourceRoot":"","sources":["../../src/observe/tool-groups.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAuB,MAAM,oBAAoB,CAAC;AA+BvE,SAAS,KAAK,CAAC,SAAiB,EAAE,KAAa,EAAE,KAA4C;IAC3F,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;IACjD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAoB,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAC7E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"tool-groups.js","sourceRoot":"","sources":["../../src/observe/tool-groups.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAuB,MAAM,oBAAoB,CAAC;AA+BvE,SAAS,KAAK,CAAC,SAAiB,EAAE,KAAa,EAAE,KAA4C;IAC3F,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;IACjD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAoB,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAC7E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,qEAAqE;QACrE,uEAAuE;QACvE,4CAA4C;QAC5C,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IACvE,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IACpE,OAAO;QACL,IAAI,EAAE,OAAO;QACb,KAAK;QACL,KAAK;QACL,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,MAAM;QACN,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,iBAAiB,CAAC,SAAiB,EAAE,KAA0B;IAC7E,MAAM,QAAQ,GAAuB,EAAE,CAAC;IACxC,IAAI,OAAO,GAAkE,IAAI,CAAC;IAClF,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9D,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC,CAAC;IACF,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACtD,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,KAAK,EAAE,CAAC;YACR,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,KAAK,EAAE,CAAC;IACR,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,IAAI,GAAsD;IAC9D,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IACrE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC/D,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;IACnE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC;IAC7D,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC;IAC1E,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC;IACjE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;IACpE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACzD,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;IACvD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;CAC5D,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAA2B,EAAE,QAA4B,MAAM;IAC9F,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,SAAS,CAAC,CAAC,OAAO,WAAW,CAAC;YACnC,KAAK,MAAM,CAAC,CAAC,OAAO,SAAS,CAAC;YAC9B,OAAO,CAAC,CAAC,CAAC;gBAAC,MAAM,UAAU,GAAU,KAAK,CAAC;gBAAC,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAAC,CAAC;QAC9G,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,MAAM;SACjB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,OAAO,CAAC;SACxD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,MAAM,EAAE,CAAC;QACrC,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACvC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChC,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-paths.d.ts","sourceRoot":"","sources":["../../src/observe/tool-paths.ts"],"names":[],"mappings":"AAsDA,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAE/F"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { asRecord, parseJson } from "../shared/json.js";
|
|
2
|
+
/** The keys that name a file, in the order `classifyTool`'s `detail` reads them (tool-activity.ts). */
|
|
3
|
+
const PATH_KEYS = ["path", "file_path", "filePath", "file"];
|
|
4
|
+
/** A file tool's one path: the first non-empty `PATH_KEYS` string, as `detail` reads it. */
|
|
5
|
+
function inputPath(inputJson) {
|
|
6
|
+
const input = asRecord(parseJson(inputJson));
|
|
7
|
+
for (const key of PATH_KEYS) {
|
|
8
|
+
const value = input?.[key];
|
|
9
|
+
if (typeof value === "string" && value.length > 0) {
|
|
10
|
+
return [value];
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return [];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* A codex `fileChange`'s paths. Its input is the item's `changes` array
|
|
17
|
+
* (codex/item-detail.ts), recorded on 0.160.1
|
|
18
|
+
* (tests/replay/fixtures/codex-file-change.raw.jsonl) as
|
|
19
|
+
* `[{path, kind: {type: "add" | "delete" | "update", move_path?}, diff}]`:
|
|
20
|
+
* absolute paths, sorted by path whatever the patch's order, and `move_path`
|
|
21
|
+
* (snake case, `null` on an update that does not rename) the rename's target.
|
|
22
|
+
*/
|
|
23
|
+
function fileChangePaths(inputJson) {
|
|
24
|
+
const changes = parseJson(inputJson);
|
|
25
|
+
const paths = [];
|
|
26
|
+
for (const raw of Array.isArray(changes) ? changes : []) {
|
|
27
|
+
const change = asRecord(raw);
|
|
28
|
+
for (const value of [change?.path, asRecord(change?.kind)?.move_path]) {
|
|
29
|
+
if (typeof value === "string" && value.length > 0) {
|
|
30
|
+
paths.push(value);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return paths;
|
|
35
|
+
}
|
|
36
|
+
/** A tool whose one path is under `key`, a key `PATH_KEYS` does not list. */
|
|
37
|
+
function pathUnder(key) {
|
|
38
|
+
return (inputJson) => {
|
|
39
|
+
const value = asRecord(parseJson(inputJson))?.[key];
|
|
40
|
+
return typeof value === "string" && value.length > 0 ? [value] : [];
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/** Where a runtime's file tool keeps its paths, when not under one of `PATH_KEYS`. */
|
|
44
|
+
const PATHS = {
|
|
45
|
+
// The notebook it edits; never a `detail` before `paths`, now the first of them.
|
|
46
|
+
claude: { NotebookEdit: pathUnder("notebook_path") },
|
|
47
|
+
codex: { fileChange: fileChangePaths },
|
|
48
|
+
};
|
|
49
|
+
/** The file paths a file tool's call involves, each once, in the runtime's order. */
|
|
50
|
+
export function filePathsOf(runtime, tool, inputJson) {
|
|
51
|
+
return [...new Set((PATHS[runtime]?.[tool] ?? inputPath)(inputJson))];
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=tool-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-paths.js","sourceRoot":"","sources":["../../src/observe/tool-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAExD,uGAAuG;AACvG,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AAE5D,4FAA4F;AAC5F,SAAS,SAAS,CAAC,SAAiB;IAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7C,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,eAAe,CAAC,SAAiB;IACxC,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACrC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7B,KAAK,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC;YACtE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,6EAA6E;AAC7E,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,CAAC,SAAS,EAAE,EAAE;QACnB,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACpD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,CAAC,CAAC;AACJ,CAAC;AAED,sFAAsF;AACtF,MAAM,KAAK,GAAyE;IAClF,iFAAiF;IACjF,MAAM,EAAE,EAAE,YAAY,EAAE,SAAS,CAAC,eAAe,CAAC,EAAE;IACpD,KAAK,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE;CACvC,CAAC;AAEF,qFAAqF;AACrF,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,IAAY,EAAE,SAAiB;IAC1E,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { SessionGraph, SessionUsage, TokenTotals, UsageReport } from "../contracts/session.js";
|
|
2
|
+
/** One agent's latest running total. */
|
|
3
|
+
export interface AgentTotal {
|
|
4
|
+
readonly agentPath: readonly string[];
|
|
5
|
+
readonly tokens: TokenTotals;
|
|
6
|
+
}
|
|
7
|
+
/** What one session's records said about tokens: each agent's latest running total, and the runtime's own session total when it reports one. */
|
|
8
|
+
export interface SessionTokens {
|
|
9
|
+
readonly agents: ReadonlyMap<string, AgentTotal>;
|
|
10
|
+
readonly total: TokenTotals | null;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* A session's usage from each agent's latest running total and, where the
|
|
14
|
+
* runtime reports one beyond its agents' figures (claude's `modelUsage`), its
|
|
15
|
+
* own session total: then the total is the runtime's, and what no agent
|
|
16
|
+
* accounts for is `unattributed`, the difference, never split by estimate.
|
|
17
|
+
* Elsewhere the agents' figures sum to the total. Shared by `usageOf` and the
|
|
18
|
+
* session view.
|
|
19
|
+
*/
|
|
20
|
+
export declare function sessionUsageFrom(byAgent: readonly AgentTotal[], reported: TokenTotals | null): SessionUsage;
|
|
21
|
+
/** Every session derived from `sessionId` in the graph, nested ones too, each once; never `sessionId` itself. */
|
|
22
|
+
export declare function derivedFrom(graph: SessionGraph, sessionId: string): ReadonlySet<string>;
|
|
23
|
+
/** Latest totals per agent, without mutating a previously published view. */
|
|
24
|
+
export declare function foldSessionTokens(previous: SessionTokens | undefined, agentPath: readonly string[], usage: UsageReport): SessionTokens;
|
|
25
|
+
/** Own usage and each reachable child's latest total, shared by query and view. */
|
|
26
|
+
export declare function usageFromSessions(sessions: ReadonlyMap<string, SessionTokens>, sessionId: string, graph: SessionGraph): SessionUsage;
|
|
27
|
+
//# sourceMappingURL=usage-totals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage-totals.d.ts","sourceRoot":"","sources":["../../src/observe/usage-totals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGpG,wCAAwC;AACxC,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B;AAED,gJAAgJ;AAChJ,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;CACpC;AAMD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI,GAAG,YAAY,CAgB3G;AAED,iHAAiH;AACjH,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAavF;AAED,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,SAAS,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,aAAa,CAMtI;AAED,mFAAmF;AACnF,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,CASpI"}
|