@agentdeck/bridge 1.0.23 → 1.1.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/dist/adapters/openclaw.d.ts +74 -4
- package/dist/adapters/openclaw.d.ts.map +1 -1
- package/dist/adapters/openclaw.js +235 -43
- package/dist/adapters/openclaw.js.map +1 -1
- package/dist/apme/adapters/openclaw-hook.d.ts +38 -10
- package/dist/apme/adapters/openclaw-hook.d.ts.map +1 -1
- package/dist/apme/adapters/openclaw-hook.js +181 -37
- package/dist/apme/adapters/openclaw-hook.js.map +1 -1
- package/dist/apme/collector.d.ts +37 -1
- package/dist/apme/collector.d.ts.map +1 -1
- package/dist/apme/collector.js +277 -35
- package/dist/apme/collector.js.map +1 -1
- package/dist/apme/pareto.d.ts +2 -1
- package/dist/apme/pareto.d.ts.map +1 -1
- package/dist/apme/pareto.js +15 -4
- package/dist/apme/pareto.js.map +1 -1
- package/dist/apme/recommend.d.ts +24 -1
- package/dist/apme/recommend.d.ts.map +1 -1
- package/dist/apme/recommend.js +43 -7
- package/dist/apme/recommend.js.map +1 -1
- package/dist/apme/store.d.ts +6 -0
- package/dist/apme/store.d.ts.map +1 -1
- package/dist/apme/store.js +244 -72
- package/dist/apme/store.js.map +1 -1
- package/dist/bridge-core.d.ts +10 -1
- package/dist/bridge-core.d.ts.map +1 -1
- package/dist/bridge-core.js +20 -5
- package/dist/bridge-core.js.map +1 -1
- package/dist/card-feed.d.ts +46 -1
- package/dist/card-feed.d.ts.map +1 -1
- package/dist/card-feed.js +166 -6
- package/dist/card-feed.js.map +1 -1
- package/dist/cli.d.ts +45 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +388 -27
- package/dist/cli.js.map +1 -1
- package/dist/daemon-build-identity.d.ts +124 -0
- package/dist/daemon-build-identity.d.ts.map +1 -0
- package/dist/daemon-build-identity.js +310 -0
- package/dist/daemon-build-identity.js.map +1 -0
- package/dist/daemon-server.d.ts +34 -6
- package/dist/daemon-server.d.ts.map +1 -1
- package/dist/daemon-server.js +613 -108
- package/dist/daemon-server.js.map +1 -1
- package/dist/daemon-takeover.d.ts +11 -0
- package/dist/daemon-takeover.d.ts.map +1 -1
- package/dist/daemon-takeover.js +62 -17
- package/dist/daemon-takeover.js.map +1 -1
- package/dist/daemon.js +1 -1
- package/dist/daemon.js.map +1 -1
- package/dist/esp32-flash.d.ts.map +1 -1
- package/dist/esp32-flash.js +19 -3
- package/dist/esp32-flash.js.map +1 -1
- package/dist/esp32-serial.d.ts +14 -0
- package/dist/esp32-serial.d.ts.map +1 -1
- package/dist/esp32-serial.js +19 -1
- package/dist/esp32-serial.js.map +1 -1
- package/dist/glance-frame.d.ts.map +1 -1
- package/dist/glance-frame.js +3 -1
- package/dist/glance-frame.js.map +1 -1
- package/dist/hook-codex-sessions.d.ts +3 -1
- package/dist/hook-codex-sessions.d.ts.map +1 -1
- package/dist/hook-codex-sessions.js +27 -7
- package/dist/hook-codex-sessions.js.map +1 -1
- package/dist/legacy-rearm-ledger.d.ts +56 -0
- package/dist/legacy-rearm-ledger.d.ts.map +1 -0
- package/dist/legacy-rearm-ledger.js +66 -0
- package/dist/legacy-rearm-ledger.js.map +1 -0
- package/dist/mdns.d.ts +33 -0
- package/dist/mdns.d.ts.map +1 -1
- package/dist/mdns.js +91 -2
- package/dist/mdns.js.map +1 -1
- package/dist/openclaw-session.d.ts.map +1 -1
- package/dist/openclaw-session.js +13 -0
- package/dist/openclaw-session.js.map +1 -1
- package/dist/openclaw-timeline-feed.d.ts +84 -0
- package/dist/openclaw-timeline-feed.d.ts.map +1 -0
- package/dist/openclaw-timeline-feed.js +162 -0
- package/dist/openclaw-timeline-feed.js.map +1 -0
- package/dist/openclaw-transcript-timeline.d.ts +103 -0
- package/dist/openclaw-transcript-timeline.d.ts.map +1 -0
- package/dist/openclaw-transcript-timeline.js +328 -0
- package/dist/openclaw-transcript-timeline.js.map +1 -0
- package/dist/passive-observer.d.ts +21 -1
- package/dist/passive-observer.d.ts.map +1 -1
- package/dist/passive-observer.js +37 -3
- package/dist/passive-observer.js.map +1 -1
- package/dist/relayed-usage.d.ts +68 -0
- package/dist/relayed-usage.d.ts.map +1 -0
- package/dist/relayed-usage.js +80 -0
- package/dist/relayed-usage.js.map +1 -0
- package/dist/session-aggregator.d.ts +3 -0
- package/dist/session-aggregator.d.ts.map +1 -1
- package/dist/session-aggregator.js.map +1 -1
- package/dist/session-registry.d.ts +1 -0
- package/dist/session-registry.d.ts.map +1 -1
- package/dist/surface-protocol.d.ts +84 -0
- package/dist/surface-protocol.d.ts.map +1 -0
- package/dist/surface-protocol.js +235 -0
- package/dist/surface-protocol.js.map +1 -0
- package/dist/timeline-store.d.ts +1 -1
- package/dist/timeline-store.d.ts.map +1 -1
- package/dist/timeline-store.js +16 -1
- package/dist/timeline-store.js.map +1 -1
- package/dist/tui/renderer.d.ts.map +1 -1
- package/dist/tui/renderer.js +35 -0
- package/dist/tui/renderer.js.map +1 -1
- package/dist/weather-config.d.ts +17 -0
- package/dist/weather-config.d.ts.map +1 -0
- package/dist/weather-config.js +54 -0
- package/dist/weather-config.js.map +1 -0
- package/dist/weather.d.ts +44 -4
- package/dist/weather.d.ts.map +1 -1
- package/dist/weather.js +223 -15
- package/dist/weather.js.map +1 -1
- package/dist/ws-server.d.ts.map +1 -1
- package/dist/ws-server.js +55 -5
- package/dist/ws-server.js.map +1 -1
- package/fm-helper/AgentDeckFMHelper.swift +51 -5
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openclaw-hook.js","sourceRoot":"","sources":["../../../src/apme/adapters/openclaw-hook.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"openclaw-hook.js","sourceRoot":"","sources":["../../../src/apme/adapters/openclaw-hook.ts"],"names":[],"mappings":"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"}
|
package/dist/apme/collector.d.ts
CHANGED
|
@@ -99,6 +99,13 @@ export declare class ApmeCollector {
|
|
|
99
99
|
private readonly sessionToTask;
|
|
100
100
|
private readonly runTaskCount;
|
|
101
101
|
private readonly sessionToUsage;
|
|
102
|
+
/** Running cost total for producers that report PER-MESSAGE cost.
|
|
103
|
+
* Separate from `sessionToUsage` because `updateUsage` writes the cost
|
|
104
|
+
* column absolutely and would otherwise stamp one message's cost as the
|
|
105
|
+
* run's. `seen` keeps a reported ZERO distinct from nothing reported —
|
|
106
|
+
* glm-5.2 answers `usage.cost.total = 0` on every message, so folding the
|
|
107
|
+
* two would record "free" as "unknown" for a whole class of run. */
|
|
108
|
+
private readonly sessionToCostTotal;
|
|
102
109
|
/** Optional listener fired after `closeTask` persists the row. The runner
|
|
103
110
|
* wires this to enqueue a task-level judge call. */
|
|
104
111
|
onTaskClosed: OnTaskClosed | null;
|
|
@@ -262,7 +269,7 @@ export declare class ApmeCollector {
|
|
|
262
269
|
* Falls back to the last closed turn if closeTurn() already ran (race with session exit).
|
|
263
270
|
* Tags turns.efficiency_json.response_kind so the runner can skip tool-only / empty
|
|
264
271
|
* turns — judging silence produces noise scores. */
|
|
265
|
-
setTurnResponse(sessionId: string, response: string): void;
|
|
272
|
+
setTurnResponse(sessionId: string, response: string, source?: 'chat_final' | 'session_message_projection' | 'direct'): void;
|
|
266
273
|
/** Apply response to the last closed turn if it has no response yet.
|
|
267
274
|
* Used as fallback when Stop hook doesn't fire (PTY output capture). */
|
|
268
275
|
setLastClosedTurnResponse(sessionId: string, response: string): void;
|
|
@@ -281,6 +288,31 @@ export declare class ApmeCollector {
|
|
|
281
288
|
* Snapshots carry CUMULATIVE session totals, so we emit a priced ModelEvent
|
|
282
289
|
* for the delta and attribute it to the active task (the SessionSample cost
|
|
283
290
|
* is the sum of its ModelEvents). */
|
|
291
|
+
/**
|
|
292
|
+
* Record usage a producer reports for ONE message.
|
|
293
|
+
*
|
|
294
|
+
* `updateUsage` is cumulative by contract: it assigns `inputTokens` to the run
|
|
295
|
+
* row absolutely and derives its per-task ModelEvent as `max(0, cur - prev)`.
|
|
296
|
+
* Its original and only other caller is the PTY poller's `UsageTracker`
|
|
297
|
+
* snapshot, which really is a running total.
|
|
298
|
+
*
|
|
299
|
+
* A `session.message`(assistant) frame reports THIS message's tokens, and those
|
|
300
|
+
* are not monotonic — measured on a real OpenClaw session: 30302, 21375, 335,
|
|
301
|
+
* 96, 114. Fed to `updateUsage` directly, the run row ends at the LAST
|
|
302
|
+
* message's count (114 for a session that consumed 52,222), every decrease
|
|
303
|
+
* clamps its delta to 0 so most messages append no ModelEvent at all, and
|
|
304
|
+
* `recomputeSampleCost` then prices the run from what survives. Two messages
|
|
305
|
+
* sharing an `(in,out)` pair are additionally deduped away, because the dedup
|
|
306
|
+
* key assumes cumulative values are unique.
|
|
307
|
+
*
|
|
308
|
+
* So convert here rather than at each producer: keep the running total and
|
|
309
|
+
* hand `updateUsage` the cumulative series its arithmetic is written for.
|
|
310
|
+
*/
|
|
311
|
+
addUsageIncrement(sessionId: string, delta: {
|
|
312
|
+
inputTokens: number;
|
|
313
|
+
outputTokens: number;
|
|
314
|
+
costUsd: number | null;
|
|
315
|
+
}): void;
|
|
284
316
|
updateUsage(sessionId: string, snapshot: UsageSnapshot): void;
|
|
285
317
|
/** Split the current run — closes the active run and opens a fresh one.
|
|
286
318
|
* Triggered on `/clear` or other context-reset events so each logical
|
|
@@ -288,6 +320,10 @@ export declare class ApmeCollector {
|
|
|
288
320
|
splitRun(sessionId: string, projectPath?: string): string | null;
|
|
289
321
|
/** Update model id when the bridge resolves which model is in use. */
|
|
290
322
|
updateModel(sessionId: string, modelId: string | undefined | null): void;
|
|
323
|
+
/** Persist the model/provider on the assistant message's own turn.
|
|
324
|
+
* `session_meta` can arrive after `chat.final` closed that turn, so the same
|
|
325
|
+
* current→last fallback used by setTurnResponse is required here too. */
|
|
326
|
+
private updateTurnIdentity;
|
|
291
327
|
/** Finalize a run. Returns the runId so callers can enqueue evaluation.
|
|
292
328
|
* Empty runs (no prompts, no steps, no turns) are deleted — they're just
|
|
293
329
|
* connection noise and clutter the dashboard. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../src/apme/collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAuB,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE1H,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAwB,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAE5F,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA4DD,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG,OAAO,GAAG,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEnG;oEACoE;AACpE,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,kBAAkB,CAAC;IACnC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;wEAEoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd;;4EAEwE;IACxE,eAAe,EAAE,OAAO,CAAC;CAC1B,KAAK,IAAI,CAAC;AAEX;;;iEAGiE;AACjE,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,kBAAkB,CAAC;CAC3B,KAAK,IAAI,CAAC;AAEX;sEACsE;AACtE,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,KAAK,IAAI,CAAC;AAEX;;;;qBAIqB;AACrB,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,EAAE,EAAE,MAAM,CAAC;CACZ,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../src/apme/collector.ts"],"names":[],"mappings":"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"}
|
package/dist/apme/collector.js
CHANGED
|
@@ -18,7 +18,7 @@ import { mkdirSync, writeFileSync } from 'fs';
|
|
|
18
18
|
import { homedir } from 'os';
|
|
19
19
|
import { debug } from '../logger.js';
|
|
20
20
|
import { resolveProjectName } from '../utils/project-name.js';
|
|
21
|
-
import {
|
|
21
|
+
import { isPricedModel, normalizeModelProvider, priceUsd } from '@agentdeck/shared';
|
|
22
22
|
import { classifyRunSmart, computeSignals, classify } from './classifier.js';
|
|
23
23
|
import { readOpenTurnEvidence } from './claude-transcript-reader.js';
|
|
24
24
|
/** A turn_start with the same prompt landing on a fresh, still-empty turn
|
|
@@ -32,6 +32,37 @@ const DUPLICATE_TURN_OPEN_WINDOW_MS = 15_000;
|
|
|
32
32
|
* a cancel milliseconds into a turn reads as belonging to the previous one.
|
|
33
33
|
* Matches the watchdog's `TURN_OPEN_SLACK_MS` — same comparison, same risk. */
|
|
34
34
|
const TURN_INTERRUPT_SLACK_MS = 2_000;
|
|
35
|
+
/**
|
|
36
|
+
* Is `echo` the same user prompt as `original`, arriving a second time?
|
|
37
|
+
*
|
|
38
|
+
* Two producers open a turn for one prompt: our own `chat.send` span, which
|
|
39
|
+
* carries the text verbatim, and the Gateway's `session.message`(user) echo,
|
|
40
|
+
* which has been trimmed, envelope-stripped and capped at 8,000 characters
|
|
41
|
+
* before it reaches us. Exact equality therefore misses on inputs as ordinary
|
|
42
|
+
* as a trailing newline — and a miss is not benign: the duplicate then closes
|
|
43
|
+
* the open turn with `resolveDisplacedTurnSource`, which for a non-`claude-code`
|
|
44
|
+
* agent returns `next_prompt`, i.e. the unrecovered-Stop-loss bucket. A stray
|
|
45
|
+
* "\n" would invent a Stop loss for an agent that has no Stop hook at all,
|
|
46
|
+
* strand an empty turn, and shift every later `turn_index`.
|
|
47
|
+
*
|
|
48
|
+
* Comparing TRIMMED is the whole fix, and deliberately all of it. A first pass
|
|
49
|
+
* here also allowed a prefix match when the shorter side sat at the Gateway's
|
|
50
|
+
* 8,000-character cap — that branch could never fire: both operands reach this
|
|
51
|
+
* function through the caller's own `slice(0, 8_000)`, so "the shorter one is
|
|
52
|
+
* at 8,000" forces both to be exactly 8,000 characters, and two equal-length
|
|
53
|
+
* strings where one is a prefix of the other are identical, which the equality
|
|
54
|
+
* check above already answered. Reintroducing truncation tolerance means
|
|
55
|
+
* comparing BEFORE that slice, not adding a branch after it.
|
|
56
|
+
*
|
|
57
|
+
* Known and NOT closed by this: because the caller slices first, two genuinely
|
|
58
|
+
* different prompts that share their first 8,000 characters compare equal and
|
|
59
|
+
* collapse into one turn — an eval harness sending a long fixed preamble with a
|
|
60
|
+
* differing tail is exactly that shape. That predates this comparison and is
|
|
61
|
+
* fixed by keying on a hash of the unsliced prompt, not here.
|
|
62
|
+
*/
|
|
63
|
+
function samePromptEcho(original, echo) {
|
|
64
|
+
return original.trim() === echo.trim();
|
|
65
|
+
}
|
|
35
66
|
export class ApmeCollector {
|
|
36
67
|
store;
|
|
37
68
|
hwSampler;
|
|
@@ -43,6 +74,13 @@ export class ApmeCollector {
|
|
|
43
74
|
sessionToTask = new Map(); // sessionId → current task
|
|
44
75
|
runTaskCount = new Map(); // runId → next task_index
|
|
45
76
|
sessionToUsage = new Map(); // last cumulative usage
|
|
77
|
+
/** Running cost total for producers that report PER-MESSAGE cost.
|
|
78
|
+
* Separate from `sessionToUsage` because `updateUsage` writes the cost
|
|
79
|
+
* column absolutely and would otherwise stamp one message's cost as the
|
|
80
|
+
* run's. `seen` keeps a reported ZERO distinct from nothing reported —
|
|
81
|
+
* glm-5.2 answers `usage.cost.total = 0` on every message, so folding the
|
|
82
|
+
* two would record "free" as "unknown" for a whole class of run. */
|
|
83
|
+
sessionToCostTotal = new Map();
|
|
46
84
|
/** Optional listener fired after `closeTask` persists the row. The runner
|
|
47
85
|
* wires this to enqueue a task-level judge call. */
|
|
48
86
|
onTaskClosed = null;
|
|
@@ -78,6 +116,7 @@ export class ApmeCollector {
|
|
|
78
116
|
sessionId: input.sessionId,
|
|
79
117
|
agentType: input.agentType,
|
|
80
118
|
modelId: input.modelId ?? null,
|
|
119
|
+
provider: input.modelId ? normalizeModelProvider(undefined, input.modelId) : null,
|
|
81
120
|
projectName: input.projectName ?? (input.projectPath ? resolveProjectName({ cwd: input.projectPath }) : null),
|
|
82
121
|
projectPath: input.projectPath ?? null,
|
|
83
122
|
taskPrompt: input.taskPrompt ?? null,
|
|
@@ -126,7 +165,8 @@ export class ApmeCollector {
|
|
|
126
165
|
// empty phantom turn and shift every later turn_index, so an identical
|
|
127
166
|
// prompt landing on a fresh, still-empty turn is a no-op.
|
|
128
167
|
const openTurn = this.sessionToTurn.get(sessionId);
|
|
129
|
-
if (openTurn && prompt !== null && openTurn.prompt
|
|
168
|
+
if (openTurn && prompt !== null && openTurn.prompt !== null &&
|
|
169
|
+
samePromptEcho(openTurn.prompt, prompt) &&
|
|
130
170
|
openTurn.toolCalls === 0 && !openTurn.hasResponse &&
|
|
131
171
|
Date.now() - openTurn.startedAt < DUPLICATE_TURN_OPEN_WINDOW_MS) {
|
|
132
172
|
debug('APME', `duplicate turn_start ignored (echo) turn=${openTurn.id.slice(0, 8)}`);
|
|
@@ -599,6 +639,14 @@ export class ApmeCollector {
|
|
|
599
639
|
try {
|
|
600
640
|
this.store.updateTask(task.id, {
|
|
601
641
|
endedAt: Date.now(),
|
|
642
|
+
// `first_turn_index` too, not just the last. The task row is INSERTed
|
|
643
|
+
// from inside the turn_start handler, i.e. before the turn exists, so
|
|
644
|
+
// it is written NULL and the real index only ever landed in memory —
|
|
645
|
+
// 294 of 1080 closed claude-code tasks carry NULL here, and the task
|
|
646
|
+
// rollup the layer-2 judge reads is keyed on these two columns.
|
|
647
|
+
// `reapAbandonedRun` already COALESCEs a value in at reap time, which
|
|
648
|
+
// is this defect's workaround rather than its fix.
|
|
649
|
+
firstTurnIndex: task.firstTurnIndex,
|
|
602
650
|
lastTurnIndex: task.lastTurnIndex ?? task.firstTurnIndex,
|
|
603
651
|
boundarySignal,
|
|
604
652
|
taskCategory,
|
|
@@ -700,6 +748,7 @@ export class ApmeCollector {
|
|
|
700
748
|
inputTokens: ev.inputTokens ?? null,
|
|
701
749
|
outputTokens: ev.outputTokens ?? null,
|
|
702
750
|
costUsd: ev.costUsd ?? null,
|
|
751
|
+
costKnown: ev.costKnown ?? null,
|
|
703
752
|
latencyMs: ev.latencyMs ?? null,
|
|
704
753
|
toolName: ev.toolName ?? null,
|
|
705
754
|
toolStatus: ev.toolStatus ?? null,
|
|
@@ -742,7 +791,7 @@ export class ApmeCollector {
|
|
|
742
791
|
* Falls back to the last closed turn if closeTurn() already ran (race with session exit).
|
|
743
792
|
* Tags turns.efficiency_json.response_kind so the runner can skip tool-only / empty
|
|
744
793
|
* turns — judging silence produces noise scores. */
|
|
745
|
-
setTurnResponse(sessionId, response) {
|
|
794
|
+
setTurnResponse(sessionId, response, source = 'direct') {
|
|
746
795
|
if (!this.store.enabled)
|
|
747
796
|
return;
|
|
748
797
|
const turn = this.sessionToTurn.get(sessionId);
|
|
@@ -750,15 +799,27 @@ export class ApmeCollector {
|
|
|
750
799
|
debug('APME', `setTurnResponse session=${sessionId.slice(0, 8)} turnId=${turnId?.slice(0, 8) ?? 'null'} respLen=${response.length}`);
|
|
751
800
|
if (!turnId)
|
|
752
801
|
return;
|
|
802
|
+
const existingTurn = this.store.getTurn(turnId);
|
|
803
|
+
const existingMeta = parseEfficiencyJson(existingTurn);
|
|
804
|
+
const existingSource = typeof existingMeta.response_source === 'string'
|
|
805
|
+
? existingMeta.response_source
|
|
806
|
+
: (existingTurn?.response ? 'direct' : undefined);
|
|
807
|
+
if (responseSourcePriority(source) < responseSourcePriority(existingSource)) {
|
|
808
|
+
debug('APME', `setTurnResponse ignored lower-priority source=${source} existing=${existingSource}`);
|
|
809
|
+
return;
|
|
810
|
+
}
|
|
753
811
|
const trimmedLen = response.trim().length;
|
|
754
812
|
// Active-turn toolCalls is authoritative; after closeTurn() the counter is
|
|
755
813
|
// already flushed to the DB row, so we fetch from there instead.
|
|
756
814
|
const toolCalls = turn?.toolCalls
|
|
757
|
-
?? (
|
|
815
|
+
?? (existingTurn?.tool_calls ?? 0);
|
|
758
816
|
const kind = trimmedLen >= 1
|
|
759
817
|
? 'text'
|
|
760
818
|
: (toolCalls > 0 ? 'tool_only' : 'empty');
|
|
761
|
-
const efficiencyJson = mergeEfficiencyJson(
|
|
819
|
+
const efficiencyJson = mergeEfficiencyJson(existingTurn, {
|
|
820
|
+
response_kind: kind,
|
|
821
|
+
response_source: source,
|
|
822
|
+
});
|
|
762
823
|
try {
|
|
763
824
|
this.store.updateTurn(turnId, {
|
|
764
825
|
response: response.slice(0, 10_000),
|
|
@@ -773,11 +834,18 @@ export class ApmeCollector {
|
|
|
773
834
|
// Sample trajectory: the assistant response closes the turn's event arc.
|
|
774
835
|
const ctx = this.sampleCtxForTurn(sessionId, turnId);
|
|
775
836
|
if (ctx) {
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
}
|
|
837
|
+
const payload = safeStringify({ text: response.slice(0, 10_000), responseKind: kind });
|
|
838
|
+
const existingEvent = this.store.findAssistantMessageEvent(ctx.taskId, turnId);
|
|
839
|
+
if (existingEvent?.id != null) {
|
|
840
|
+
this.store.updateSampleEvent(existingEvent.id, { payload, ts: Date.now() });
|
|
841
|
+
}
|
|
842
|
+
else {
|
|
843
|
+
this.appendSampleEvent(ctx, {
|
|
844
|
+
kind: 'assistant_message',
|
|
845
|
+
dedupCore: `turn:${turnId}`,
|
|
846
|
+
payloadObj: { text: response.slice(0, 10_000), responseKind: kind },
|
|
847
|
+
});
|
|
848
|
+
}
|
|
781
849
|
}
|
|
782
850
|
}
|
|
783
851
|
/** Apply response to the last closed turn if it has no response yet.
|
|
@@ -835,16 +903,27 @@ export class ApmeCollector {
|
|
|
835
903
|
}
|
|
836
904
|
case 'turn_response': {
|
|
837
905
|
const text = a['agentdeck.response_text'] ?? '';
|
|
906
|
+
const source = a['agentdeck.response_source'] ?? 'direct';
|
|
838
907
|
const fallback = a['agentdeck.fallback_to_last_closed'] === true;
|
|
839
908
|
if (fallback)
|
|
840
909
|
this.setLastClosedTurnResponse(sessionId, text);
|
|
841
910
|
else
|
|
842
|
-
this.setTurnResponse(sessionId, text);
|
|
911
|
+
this.setTurnResponse(sessionId, text, source);
|
|
843
912
|
return;
|
|
844
913
|
}
|
|
845
|
-
case 'turn_end':
|
|
846
|
-
//
|
|
914
|
+
case 'turn_end': {
|
|
915
|
+
// An explicit close, from a source that HAS a stop signal of its own.
|
|
916
|
+
// This used to be a no-op on the theory that turns auto-close on the
|
|
917
|
+
// next `turn_start` — which is true, and is exactly the shape the
|
|
918
|
+
// `end_source` column exists to avoid: closing at the next prompt puts
|
|
919
|
+
// the user's thinking time inside the turn's duration, and a
|
|
920
|
+
// conversation with one turn never closes it at all. OpenClaw is the
|
|
921
|
+
// first emitter (its `chat.final` is the stop signal); every other
|
|
922
|
+
// adapter still auto-closes, unchanged.
|
|
923
|
+
const source = a['agentdeck.turn_end_source'] ?? 'stop';
|
|
924
|
+
this.closeTurn(sessionId, source);
|
|
847
925
|
return;
|
|
926
|
+
}
|
|
848
927
|
case 'tool_call': {
|
|
849
928
|
const toolName = (a['gen_ai.tool.name'] ?? a['agentdeck.tool_name']);
|
|
850
929
|
const raw = a['agentdeck.raw_payload'] ?? {};
|
|
@@ -891,17 +970,18 @@ export class ApmeCollector {
|
|
|
891
970
|
}
|
|
892
971
|
case 'session_meta': {
|
|
893
972
|
const model = a['gen_ai.request.model'];
|
|
894
|
-
|
|
895
|
-
|
|
973
|
+
const rawProvider = a['gen_ai.system'];
|
|
974
|
+
if (model || rawProvider)
|
|
975
|
+
this.updateTurnIdentity(sessionId, model, rawProvider);
|
|
896
976
|
const inputTokens = a['agentdeck.usage.input_tokens'];
|
|
897
977
|
const outputTokens = a['agentdeck.usage.output_tokens'];
|
|
898
978
|
const costUsd = a['agentdeck.usage.cost_usd'];
|
|
899
979
|
if (inputTokens !== undefined || outputTokens !== undefined || costUsd !== undefined) {
|
|
900
|
-
//
|
|
901
|
-
this.
|
|
980
|
+
// PER-MESSAGE numbers, not a running total — see `addUsageIncrement`.
|
|
981
|
+
this.addUsageIncrement(sessionId, {
|
|
902
982
|
inputTokens: inputTokens ?? 0,
|
|
903
983
|
outputTokens: outputTokens ?? 0,
|
|
904
|
-
|
|
984
|
+
costUsd: costUsd ?? null,
|
|
905
985
|
});
|
|
906
986
|
}
|
|
907
987
|
return;
|
|
@@ -957,45 +1037,128 @@ export class ApmeCollector {
|
|
|
957
1037
|
* Snapshots carry CUMULATIVE session totals, so we emit a priced ModelEvent
|
|
958
1038
|
* for the delta and attribute it to the active task (the SessionSample cost
|
|
959
1039
|
* is the sum of its ModelEvents). */
|
|
1040
|
+
/**
|
|
1041
|
+
* Record usage a producer reports for ONE message.
|
|
1042
|
+
*
|
|
1043
|
+
* `updateUsage` is cumulative by contract: it assigns `inputTokens` to the run
|
|
1044
|
+
* row absolutely and derives its per-task ModelEvent as `max(0, cur - prev)`.
|
|
1045
|
+
* Its original and only other caller is the PTY poller's `UsageTracker`
|
|
1046
|
+
* snapshot, which really is a running total.
|
|
1047
|
+
*
|
|
1048
|
+
* A `session.message`(assistant) frame reports THIS message's tokens, and those
|
|
1049
|
+
* are not monotonic — measured on a real OpenClaw session: 30302, 21375, 335,
|
|
1050
|
+
* 96, 114. Fed to `updateUsage` directly, the run row ends at the LAST
|
|
1051
|
+
* message's count (114 for a session that consumed 52,222), every decrease
|
|
1052
|
+
* clamps its delta to 0 so most messages append no ModelEvent at all, and
|
|
1053
|
+
* `recomputeSampleCost` then prices the run from what survives. Two messages
|
|
1054
|
+
* sharing an `(in,out)` pair are additionally deduped away, because the dedup
|
|
1055
|
+
* key assumes cumulative values are unique.
|
|
1056
|
+
*
|
|
1057
|
+
* So convert here rather than at each producer: keep the running total and
|
|
1058
|
+
* hand `updateUsage` the cumulative series its arithmetic is written for.
|
|
1059
|
+
*/
|
|
1060
|
+
addUsageIncrement(sessionId, delta) {
|
|
1061
|
+
if (!this.store.enabled)
|
|
1062
|
+
return;
|
|
1063
|
+
// ONE guard for both accumulators. `updateUsage` drops everything when the
|
|
1064
|
+
// session has no open run, so advancing the cost total before that check
|
|
1065
|
+
// let cost count messages the token total did not: a span arriving before
|
|
1066
|
+
// the run opened, then one after, recorded 7 tokens at $10.50. Two
|
|
1067
|
+
// accumulators with different failure modes is the same defect shape as a
|
|
1068
|
+
// guard cleared only by a `defer` it shares a failure mode with.
|
|
1069
|
+
if (!this.sessionToRun.get(sessionId))
|
|
1070
|
+
return;
|
|
1071
|
+
const prev = this.sessionToUsage.get(sessionId) ?? { in: 0, out: 0, cost: null };
|
|
1072
|
+
const prevCost = this.sessionToCostTotal.get(sessionId) ?? { total: 0, seen: false };
|
|
1073
|
+
const reported = typeof delta.costUsd === 'number';
|
|
1074
|
+
const cost = { total: prevCost.total + (reported ? delta.costUsd : 0),
|
|
1075
|
+
seen: prevCost.seen || reported };
|
|
1076
|
+
this.sessionToCostTotal.set(sessionId, cost);
|
|
1077
|
+
this.updateUsage(sessionId, {
|
|
1078
|
+
// The clamp is deliberate, not defensive: `updateUsage` derives its
|
|
1079
|
+
// ModelEvent as `max(0, cur - prev)`, so the series handed to it must be
|
|
1080
|
+
// monotonic. No producer here reports a negative correction; if one ever
|
|
1081
|
+
// does, it needs its own path rather than silently shrinking the total.
|
|
1082
|
+
inputTokens: prev.in + Math.max(0, delta.inputTokens),
|
|
1083
|
+
outputTokens: prev.out + Math.max(0, delta.outputTokens),
|
|
1084
|
+
estimatedCostUsd: cost.seen ? cost.total : null,
|
|
1085
|
+
});
|
|
1086
|
+
}
|
|
960
1087
|
updateUsage(sessionId, snapshot) {
|
|
961
1088
|
if (!this.store.enabled)
|
|
962
1089
|
return;
|
|
963
1090
|
const runId = this.sessionToRun.get(sessionId);
|
|
964
1091
|
if (!runId)
|
|
965
1092
|
return;
|
|
1093
|
+
const curIn = snapshot.inputTokens ?? 0;
|
|
1094
|
+
const curOut = snapshot.outputTokens ?? 0;
|
|
1095
|
+
const prev = this.sessionToUsage.get(sessionId) ?? { in: 0, out: 0, cost: null };
|
|
1096
|
+
const hadPreviousUsage = prev.in > 0 || prev.out > 0;
|
|
1097
|
+
const dIn = Math.max(0, curIn - prev.in);
|
|
1098
|
+
const dOut = Math.max(0, curOut - prev.out);
|
|
1099
|
+
const run = this.store.getRun(runId);
|
|
1100
|
+
const turnId = this.turnIdFor(sessionId);
|
|
1101
|
+
const turn = turnId ? this.store.getTurn(turnId) : null;
|
|
1102
|
+
const model = turn?.model_id ?? run?.modelId ?? null;
|
|
1103
|
+
const reportedTotal = snapshot.estimatedCostUsd ?? snapshot.costSpent ?? null;
|
|
1104
|
+
const reportedDelta = reportedTotal == null
|
|
1105
|
+
? null
|
|
1106
|
+
: Math.max(0, reportedTotal - (prev.cost ?? 0));
|
|
1107
|
+
const priced = isPricedModel(model);
|
|
1108
|
+
const eventCostKnown = priced || (reportedDelta != null && reportedDelta > 0);
|
|
1109
|
+
const eventCost = reportedDelta ?? priceUsd(model, dIn, dOut);
|
|
1110
|
+
const hasUsageDelta = dIn > 0 || dOut > 0;
|
|
1111
|
+
const hasAccountingDelta = hasUsageDelta || (reportedDelta ?? 0) > 0;
|
|
1112
|
+
const runCostKnown = !hasAccountingDelta
|
|
1113
|
+
? Boolean(run?.costKnown)
|
|
1114
|
+
: hadPreviousUsage
|
|
1115
|
+
? Boolean(run?.costKnown) && eventCostKnown
|
|
1116
|
+
: eventCostKnown;
|
|
1117
|
+
const runCost = reportedTotal ?? (priced ? priceUsd(model, curIn, curOut) : null);
|
|
1118
|
+
this.sessionToUsage.set(sessionId, { in: curIn, out: curOut, cost: reportedTotal });
|
|
966
1119
|
try {
|
|
967
1120
|
this.store.updateRun(runId, {
|
|
968
1121
|
inputTokens: snapshot.inputTokens,
|
|
969
1122
|
outputTokens: snapshot.outputTokens,
|
|
970
|
-
costUsd:
|
|
1123
|
+
costUsd: runCost,
|
|
1124
|
+
costKnown: runCostKnown,
|
|
971
1125
|
});
|
|
972
1126
|
}
|
|
973
1127
|
catch { /* ignore */ }
|
|
974
1128
|
// ── Per-task ModelEvent from the cumulative delta ──
|
|
975
|
-
const curIn = snapshot.inputTokens ?? 0;
|
|
976
|
-
const curOut = snapshot.outputTokens ?? 0;
|
|
977
|
-
const prev = this.sessionToUsage.get(sessionId) ?? { in: 0, out: 0 };
|
|
978
|
-
const dIn = Math.max(0, curIn - prev.in);
|
|
979
|
-
const dOut = Math.max(0, curOut - prev.out);
|
|
980
|
-
this.sessionToUsage.set(sessionId, { in: curIn, out: curOut });
|
|
981
1129
|
if (dIn === 0 && dOut === 0)
|
|
982
1130
|
return;
|
|
983
1131
|
const task = this.sessionToTask.get(sessionId);
|
|
984
1132
|
if (!task)
|
|
985
1133
|
return;
|
|
986
|
-
const
|
|
987
|
-
|
|
1134
|
+
const provider = turn?.provider
|
|
1135
|
+
?? run?.provider
|
|
1136
|
+
?? normalizeModelProvider(undefined, model);
|
|
1137
|
+
const taskRow = this.store.getTask(task.id);
|
|
1138
|
+
const taskModel = !model
|
|
1139
|
+
? taskRow?.modelId
|
|
1140
|
+
: !taskRow?.modelId || taskRow.modelId === model
|
|
1141
|
+
? model
|
|
1142
|
+
: 'mixed';
|
|
1143
|
+
const taskProvider = !provider || provider === 'unknown'
|
|
1144
|
+
? taskRow?.provider
|
|
1145
|
+
: !taskRow?.provider || taskRow.provider === provider
|
|
1146
|
+
? provider
|
|
1147
|
+
: 'mixed';
|
|
988
1148
|
const turnIndex = this.sessionToTurn.get(sessionId)?.index ?? task.lastTurnIndex ?? 0;
|
|
989
|
-
|
|
990
|
-
const cost = priceUsd(model, dIn, dOut);
|
|
991
|
-
this.appendSampleEvent({ taskId: task.id, runId, turnIndex, turnId: this.turnIdFor(sessionId) }, {
|
|
1149
|
+
this.appendSampleEvent({ taskId: task.id, runId, turnIndex, turnId }, {
|
|
992
1150
|
kind: 'model', model: model ?? undefined, inputTokens: dIn, outputTokens: dOut,
|
|
993
|
-
costUsd:
|
|
1151
|
+
costUsd: eventCost, costKnown: eventCostKnown,
|
|
1152
|
+
latencyMs: 0, dedupCore: `${curIn}:${curOut}`,
|
|
994
1153
|
});
|
|
995
1154
|
try {
|
|
996
1155
|
this.store.updateTask(task.id, {
|
|
997
|
-
modelId:
|
|
998
|
-
|
|
1156
|
+
modelId: taskModel,
|
|
1157
|
+
provider: taskProvider,
|
|
1158
|
+
modelConfig: JSON.stringify({
|
|
1159
|
+
modelId: taskModel ?? 'unknown',
|
|
1160
|
+
provider: taskProvider ?? null,
|
|
1161
|
+
}),
|
|
999
1162
|
});
|
|
1000
1163
|
this.store.recomputeSampleCost(task.id);
|
|
1001
1164
|
}
|
|
@@ -1046,7 +1209,71 @@ export class ApmeCollector {
|
|
|
1046
1209
|
if (!runId)
|
|
1047
1210
|
return;
|
|
1048
1211
|
try {
|
|
1049
|
-
this.store.updateRun(runId, {
|
|
1212
|
+
this.store.updateRun(runId, {
|
|
1213
|
+
modelId,
|
|
1214
|
+
provider: normalizeModelProvider(undefined, modelId),
|
|
1215
|
+
});
|
|
1216
|
+
}
|
|
1217
|
+
catch { /* ignore */ }
|
|
1218
|
+
}
|
|
1219
|
+
/** Persist the model/provider on the assistant message's own turn.
|
|
1220
|
+
* `session_meta` can arrive after `chat.final` closed that turn, so the same
|
|
1221
|
+
* current→last fallback used by setTurnResponse is required here too. */
|
|
1222
|
+
updateTurnIdentity(sessionId, reportedModel, reportedProvider) {
|
|
1223
|
+
const runId = this.sessionToRun.get(sessionId);
|
|
1224
|
+
if (!runId)
|
|
1225
|
+
return;
|
|
1226
|
+
const turnId = this.turnIdFor(sessionId);
|
|
1227
|
+
const turn = turnId ? this.store.getTurn(turnId) : null;
|
|
1228
|
+
const run = this.store.getRun(runId);
|
|
1229
|
+
const model = reportedModel ?? turn?.model_id ?? run?.modelId ?? undefined;
|
|
1230
|
+
if (!model && !reportedProvider)
|
|
1231
|
+
return;
|
|
1232
|
+
const normalized = normalizeModelProvider(reportedProvider, model);
|
|
1233
|
+
const provider = normalized === 'unknown' ? null : normalized;
|
|
1234
|
+
if (turnId) {
|
|
1235
|
+
try {
|
|
1236
|
+
this.store.updateTurn(turnId, {
|
|
1237
|
+
...(model ? { modelId: model } : {}),
|
|
1238
|
+
provider,
|
|
1239
|
+
});
|
|
1240
|
+
}
|
|
1241
|
+
catch { /* ignore */ }
|
|
1242
|
+
}
|
|
1243
|
+
// Preserve the established run-level "latest observed model" contract for
|
|
1244
|
+
// legacy consumers. Scorecards no longer depend on it when a turn has its
|
|
1245
|
+
// own identity, so updating this compatibility fallback cannot reassign
|
|
1246
|
+
// earlier turns.
|
|
1247
|
+
if (run) {
|
|
1248
|
+
const patch = {
|
|
1249
|
+
...(model ? { modelId: model } : {}),
|
|
1250
|
+
provider,
|
|
1251
|
+
};
|
|
1252
|
+
if (Object.keys(patch).length > 0) {
|
|
1253
|
+
try {
|
|
1254
|
+
this.store.updateRun(runId, patch);
|
|
1255
|
+
}
|
|
1256
|
+
catch { /* ignore */ }
|
|
1257
|
+
}
|
|
1258
|
+
}
|
|
1259
|
+
const taskId = turn?.task_id ?? this.sessionToTask.get(sessionId)?.id;
|
|
1260
|
+
if (!taskId || !model)
|
|
1261
|
+
return;
|
|
1262
|
+
const task = this.store.getTask(taskId);
|
|
1263
|
+
if (!task)
|
|
1264
|
+
return;
|
|
1265
|
+
const taskModel = !task.modelId || task.modelId === model ? model : 'mixed';
|
|
1266
|
+
const taskProvider = !provider
|
|
1267
|
+
? task.provider
|
|
1268
|
+
: task.provider == null || task.provider === provider
|
|
1269
|
+
? provider
|
|
1270
|
+
: 'mixed';
|
|
1271
|
+
try {
|
|
1272
|
+
this.store.updateTask(taskId, {
|
|
1273
|
+
modelId: taskModel,
|
|
1274
|
+
provider: taskProvider,
|
|
1275
|
+
modelConfig: JSON.stringify({ modelId: taskModel, provider: taskProvider }),
|
|
1276
|
+
});
|
|
1050
1277
|
}
|
|
1051
1278
|
catch { /* ignore */ }
|
|
1052
1279
|
}
|
|
@@ -1068,6 +1295,7 @@ export class ApmeCollector {
|
|
|
1068
1295
|
this.sessionToLastTurnId.delete(sessionId);
|
|
1069
1296
|
this.runTaskCount.delete(runId);
|
|
1070
1297
|
this.sessionToUsage.delete(sessionId);
|
|
1298
|
+
this.sessionToCostTotal.delete(sessionId);
|
|
1071
1299
|
// Mark empty runs so the dashboard can filter them out.
|
|
1072
1300
|
// Don't delete — FK constraints and concurrent access make deletion risky.
|
|
1073
1301
|
const run = this.store.getRun(runId);
|
|
@@ -1260,6 +1488,10 @@ function safeStringify(v) {
|
|
|
1260
1488
|
* sibling keys. Returns a JSON string suitable for the column. Unparseable
|
|
1261
1489
|
* existing values are replaced outright. */
|
|
1262
1490
|
function mergeEfficiencyJson(turn, patch) {
|
|
1491
|
+
const base = parseEfficiencyJson(turn);
|
|
1492
|
+
return JSON.stringify({ ...base, ...patch });
|
|
1493
|
+
}
|
|
1494
|
+
function parseEfficiencyJson(turn) {
|
|
1263
1495
|
let base = {};
|
|
1264
1496
|
const raw = turn?.efficiency_json;
|
|
1265
1497
|
if (typeof raw === 'string' && raw.length > 0) {
|
|
@@ -1271,6 +1503,16 @@ function mergeEfficiencyJson(turn, patch) {
|
|
|
1271
1503
|
}
|
|
1272
1504
|
catch { /* replace */ }
|
|
1273
1505
|
}
|
|
1274
|
-
return
|
|
1506
|
+
return base;
|
|
1507
|
+
}
|
|
1508
|
+
/** Full/final responses outrank lossy session-message projections. Unknown
|
|
1509
|
+
* historical provenance is treated as direct so a new projection cannot
|
|
1510
|
+
* downgrade data written before source tracking existed. */
|
|
1511
|
+
function responseSourcePriority(source) {
|
|
1512
|
+
if (source === 'session_message_projection')
|
|
1513
|
+
return 1;
|
|
1514
|
+
if (source === 'chat_final')
|
|
1515
|
+
return 3;
|
|
1516
|
+
return source ? 2 : 0;
|
|
1275
1517
|
}
|
|
1276
1518
|
//# sourceMappingURL=collector.js.map
|