@agentdeck/bridge 1.0.24 → 1.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 +14 -6
- package/assets/fonts/NOTICE-PocketSansWorld.md +10 -0
- package/assets/fonts/OFL-PocketSansWorld.txt +93 -0
- package/assets/fonts/PocketSansWorld_12.cpfont +0 -0
- package/assets/fonts/pocket-sans-world.manifest.json +49 -0
- package/assets/learning/LICENSE-CC-BY-SA-4.0.txt +10 -0
- package/assets/learning/NOTICE.md +33 -0
- package/assets/learning/jp-n3-ko.manifest.json +27 -0
- package/assets/learning/jp-n3-ko.pdl +0 -0
- 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/agent-cli-diagnostics.d.ts +20 -0
- package/dist/agent-cli-diagnostics.d.ts.map +1 -0
- package/dist/agent-cli-diagnostics.js +100 -0
- package/dist/agent-cli-diagnostics.js.map +1 -0
- 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 +55 -2
- package/dist/apme/collector.d.ts.map +1 -1
- package/dist/apme/collector.js +324 -37
- package/dist/apme/collector.js.map +1 -1
- package/dist/apme/dashboard-html.d.ts.map +1 -1
- package/dist/apme/dashboard-html.js +275 -35
- package/dist/apme/dashboard-html.js.map +1 -1
- package/dist/apme/http.d.ts.map +1 -1
- package/dist/apme/http.js +33 -5
- package/dist/apme/http.js.map +1 -1
- package/dist/apme/index.d.ts.map +1 -1
- package/dist/apme/index.js +6 -2
- package/dist/apme/index.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 +47 -1
- package/dist/apme/store.d.ts.map +1 -1
- package/dist/apme/store.js +397 -99
- package/dist/apme/store.js.map +1 -1
- package/dist/bridge-core.d.ts +25 -1
- package/dist/bridge-core.d.ts.map +1 -1
- package/dist/bridge-core.js +50 -9
- 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 +56 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +442 -34
- package/dist/cli.js.map +1 -1
- package/dist/codex-rate-limits-live.d.ts +180 -10
- package/dist/codex-rate-limits-live.d.ts.map +1 -1
- package/dist/codex-rate-limits-live.js +475 -22
- package/dist/codex-rate-limits-live.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 +876 -109
- 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-ws-client.d.ts +1 -0
- package/dist/daemon-ws-client.d.ts.map +1 -1
- package/dist/daemon-ws-client.js +25 -16
- package/dist/daemon-ws-client.js.map +1 -1
- package/dist/daemon.js +1 -1
- package/dist/daemon.js.map +1 -1
- package/dist/esp32-serial.d.ts +18 -0
- package/dist/esp32-serial.d.ts.map +1 -1
- package/dist/esp32-serial.js +23 -1
- package/dist/esp32-serial.js.map +1 -1
- package/dist/font-pack.d.ts +15 -0
- package/dist/font-pack.d.ts.map +1 -0
- package/dist/font-pack.js +75 -0
- package/dist/font-pack.js.map +1 -0
- package/dist/glance-frame.d.ts.map +1 -1
- package/dist/glance-frame.js +5 -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/http-auth-gate.d.ts.map +1 -1
- package/dist/http-auth-gate.js +9 -1
- package/dist/http-auth-gate.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/learning-pack.d.ts +24 -0
- package/dist/learning-pack.d.ts.map +1 -0
- package/dist/learning-pack.js +125 -0
- package/dist/learning-pack.js.map +1 -0
- 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 +92 -3
- 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/pairing-knocks.d.ts +80 -0
- package/dist/pairing-knocks.d.ts.map +1 -0
- package/dist/pairing-knocks.js +312 -0
- package/dist/pairing-knocks.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/pixoo/micro-glyphs.d.ts +4 -0
- package/dist/pixoo/micro-glyphs.d.ts.map +1 -1
- package/dist/pixoo/micro-glyphs.js +29 -0
- package/dist/pixoo/micro-glyphs.js.map +1 -1
- package/dist/pixoo/pixoo-font.d.ts.map +1 -1
- package/dist/pixoo/pixoo-font.js +3 -1
- package/dist/pixoo/pixoo-font.js.map +1 -1
- package/dist/pixoo/pixoo-renderer.d.ts +1 -1
- package/dist/pixoo/pixoo-renderer.d.ts.map +1 -1
- package/dist/pixoo/pixoo-renderer.js +17 -2
- package/dist/pixoo/pixoo-renderer.js.map +1 -1
- package/dist/pty-manager.d.ts +9 -0
- package/dist/pty-manager.d.ts.map +1 -1
- package/dist/pty-manager.js +63 -4
- package/dist/pty-manager.js.map +1 -1
- package/dist/relayed-usage.d.ts +98 -0
- package/dist/relayed-usage.d.ts.map +1 -0
- package/dist/relayed-usage.js +103 -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 +237 -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/dashboard.d.ts.map +1 -1
- package/dist/tui/dashboard.js +8 -1
- package/dist/tui/dashboard.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 +18 -0
- package/dist/ws-server.d.ts.map +1 -1
- package/dist/ws-server.js +95 -7
- package/dist/ws-server.js.map +1 -1
- package/fm-helper/AgentDeckFMHelper.swift +51 -5
- package/package.json +4 -3
- package/src/timebox/sync_ble.py +35 -16
|
@@ -163,7 +163,10 @@ export function openclawChatEventToSpans(ctx, payload) {
|
|
|
163
163
|
if (payload.state === 'final') {
|
|
164
164
|
const spans = [];
|
|
165
165
|
if (payload.response) {
|
|
166
|
-
spans.push(make('turn_response', {
|
|
166
|
+
spans.push(make('turn_response', {
|
|
167
|
+
'agentdeck.response_text': payload.response,
|
|
168
|
+
'agentdeck.response_source': 'chat_final',
|
|
169
|
+
}));
|
|
167
170
|
}
|
|
168
171
|
if (Array.isArray(payload.tools)) {
|
|
169
172
|
for (const t of payload.tools) {
|
|
@@ -176,13 +179,25 @@ export function openclawChatEventToSpans(ctx, payload) {
|
|
|
176
179
|
}));
|
|
177
180
|
}
|
|
178
181
|
}
|
|
182
|
+
// `chat.final` IS OpenClaw's stop signal — close the turn on it rather than
|
|
183
|
+
// waiting for the next `turn_start`. Without this a single-turn
|
|
184
|
+
// conversation left its turn open until the whole run closed, so the turn
|
|
185
|
+
// carried no duration and its tool tally was never flushed. Measured
|
|
186
|
+
// 2026-08-23: openclaw was the ONLY agent with turns still open under an
|
|
187
|
+
// already-closed task.
|
|
188
|
+
spans.push(make('turn_end', { 'agentdeck.turn_end_source': 'stop' }));
|
|
179
189
|
return spans;
|
|
180
190
|
}
|
|
181
191
|
if (payload.state === 'aborted') {
|
|
182
192
|
// Treat as a manual boundary — user explicitly stopped this turn. The
|
|
183
193
|
// composite outcome derivation will see the absence of a complete
|
|
184
|
-
// response and score accordingly.
|
|
185
|
-
|
|
194
|
+
// response and score accordingly. The turn closes as `interrupted`, which
|
|
195
|
+
// is its own bucket and NOT a lost stop signal: the user cancelled, so no
|
|
196
|
+
// normal close was ever due.
|
|
197
|
+
return [
|
|
198
|
+
make('turn_end', { 'agentdeck.turn_end_source': 'interrupted' }),
|
|
199
|
+
make('task_boundary', { 'agentdeck.boundary_signal': 'manual' }),
|
|
200
|
+
];
|
|
186
201
|
}
|
|
187
202
|
if (payload.state === 'error') {
|
|
188
203
|
// Error doesn't close the task — the agent might retry on the same
|
|
@@ -205,30 +220,96 @@ export function openclawChatEventToSpans(ctx, payload) {
|
|
|
205
220
|
return [];
|
|
206
221
|
}
|
|
207
222
|
/**
|
|
208
|
-
*
|
|
209
|
-
*
|
|
210
|
-
*
|
|
211
|
-
*
|
|
212
|
-
*
|
|
213
|
-
* `
|
|
223
|
+
* Text carried by an OpenClaw message `content`, which is a string for user
|
|
224
|
+
* messages and an array of typed blocks for assistant / toolResult ones.
|
|
225
|
+
*
|
|
226
|
+
* Shape taken from the live store (`~/.openclaw/agents/<agent>/sessions/*.jsonl`)
|
|
227
|
+
* and from the Gateway's own projection (`projectChatDisplayMessage`, which
|
|
228
|
+
* preserves `{role, content}` verbatim) — NOT from an assumed flat
|
|
229
|
+
* `{role, text}`, which is what the previous version of this function read and
|
|
230
|
+
* why it would have found nothing even once the frames started arriving.
|
|
231
|
+
*/
|
|
232
|
+
function messageText(content) {
|
|
233
|
+
if (typeof content === 'string')
|
|
234
|
+
return content;
|
|
235
|
+
if (!Array.isArray(content))
|
|
236
|
+
return '';
|
|
237
|
+
const parts = [];
|
|
238
|
+
for (const block of content) {
|
|
239
|
+
if (!block || typeof block !== 'object')
|
|
240
|
+
continue;
|
|
241
|
+
const b = block;
|
|
242
|
+
if (b.type === 'text' && typeof b.text === 'string')
|
|
243
|
+
parts.push(b.text);
|
|
244
|
+
}
|
|
245
|
+
return parts.join('');
|
|
246
|
+
}
|
|
247
|
+
/** `toolCall` blocks inside an assistant message's `content` array. */
|
|
248
|
+
function toolCallBlocks(content) {
|
|
249
|
+
if (!Array.isArray(content))
|
|
250
|
+
return [];
|
|
251
|
+
const out = [];
|
|
252
|
+
for (const block of content) {
|
|
253
|
+
if (!block || typeof block !== 'object')
|
|
254
|
+
continue;
|
|
255
|
+
const b = block;
|
|
256
|
+
if (b.type !== 'toolCall' || typeof b.name !== 'string' || !b.name)
|
|
257
|
+
continue;
|
|
258
|
+
out.push({
|
|
259
|
+
...(typeof b.id === 'string' ? { id: b.id } : {}),
|
|
260
|
+
name: b.name,
|
|
261
|
+
...(b.arguments !== undefined ? { arguments: b.arguments } : {}),
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
return out;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Convert a Gateway `session.tool` event into spans.
|
|
268
|
+
*
|
|
269
|
+
* **Real shape** (`dist/server-chat-wgxNCdC3.js`, the `agentPayload` spread):
|
|
270
|
+
* `{...agentEvent, sessionKey, agentId?, spawnedBy?, isHeartbeat?, ...snapshot}`
|
|
271
|
+
* where the agent event is `{runId, stream:'tool', seq, ts, data}` and `data`
|
|
272
|
+
* is `{phase:'start'|'result', name, toolCallId, meta?, args?, isError?, result?}`.
|
|
273
|
+
* The previous version read a flat `{name|tool, status, input, output}` — a
|
|
274
|
+
* shape the Gateway has never sent — so every field would have come back
|
|
275
|
+
* undefined and the function would have returned `[]` for every real frame.
|
|
276
|
+
*
|
|
277
|
+
* `phase:'start'` opens a pending ToolEvent; `phase:'result'` resolves it.
|
|
214
278
|
*/
|
|
215
279
|
export function openclawSessionToolToSpans(ctx, payload) {
|
|
216
|
-
const
|
|
280
|
+
const data = (payload.data ?? {});
|
|
281
|
+
const name = typeof data.name === 'string' && data.name ? data.name : undefined;
|
|
217
282
|
if (!name)
|
|
218
283
|
return [];
|
|
284
|
+
const phase = typeof data.phase === 'string' ? data.phase : '';
|
|
285
|
+
// Anything that is not an explicit terminal phase is treated as still
|
|
286
|
+
// running — the permissive direction, since a `tool_call` with no matching
|
|
287
|
+
// `tool_result` reads as "unfinished" while the reverse invents a
|
|
288
|
+
// completion that never happened.
|
|
289
|
+
const isResult = phase === 'result' || phase === 'end' || phase === 'error';
|
|
290
|
+
const kind = isResult ? 'tool_result' : 'tool_call';
|
|
219
291
|
const ts = typeof payload.ts === 'number' ? payload.ts : Date.now();
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
292
|
+
// `phase: 'error'` is itself the failure signal and does not have to be
|
|
293
|
+
// accompanied by `isError`. Deriving status from `isError` alone recorded
|
|
294
|
+
// such a frame as a SUCCESSFUL tool result — a silent wrong answer that also
|
|
295
|
+
// feeds the tool tally the APME judge scores. The Swift adapter classifies
|
|
296
|
+
// the same three terminal phases identically; the two daemons take turns
|
|
297
|
+
// owning `timeline.json`, so a disagreement here rewrites history by whoever
|
|
298
|
+
// held the port.
|
|
299
|
+
const status = isResult
|
|
300
|
+
? (data.isError === true || phase === 'error' ? 'error' : 'success')
|
|
301
|
+
: 'running';
|
|
223
302
|
const attrs = {
|
|
224
303
|
'agentdeck.agent_type': ctx.agentType,
|
|
225
304
|
...(ctx.cwd ? { 'agentdeck.cwd': ctx.cwd } : {}),
|
|
305
|
+
...(payload.sessionKey ? { 'agentdeck.gateway_session_key': payload.sessionKey } : {}),
|
|
226
306
|
'gen_ai.tool.name': name,
|
|
227
307
|
'agentdeck.tool_name': name,
|
|
228
308
|
'agentdeck.raw_payload': {
|
|
229
|
-
|
|
230
|
-
...(
|
|
231
|
-
...(
|
|
309
|
+
status,
|
|
310
|
+
...(typeof data.toolCallId === 'string' ? { tool_call_id: data.toolCallId } : {}),
|
|
311
|
+
...(data.args !== undefined ? { tool_input: data.args } : {}),
|
|
312
|
+
...(data.result !== undefined ? { tool_response: data.result } : {}),
|
|
232
313
|
},
|
|
233
314
|
};
|
|
234
315
|
return [{
|
|
@@ -242,33 +323,96 @@ export function openclawSessionToolToSpans(ctx, payload) {
|
|
|
242
323
|
}];
|
|
243
324
|
}
|
|
244
325
|
/**
|
|
245
|
-
* Convert a Gateway `session.
|
|
246
|
-
*
|
|
247
|
-
*
|
|
248
|
-
*
|
|
326
|
+
* Convert a Gateway `session.message` event into spans.
|
|
327
|
+
*
|
|
328
|
+
* **This is the only channel that carries the user's prompt.** The `chat`
|
|
329
|
+
* frame is assistant-only (`emitChatDelta` / `emitChatTerminal` build
|
|
330
|
+
* `message:{role:'assistant',…}` and nothing else), so before this event was
|
|
331
|
+
* subscribed to, no `turn_start` was ever emitted for a conversation started
|
|
332
|
+
* in the OpenClaw app — and a `turn_response` with no open turn is dropped by
|
|
333
|
+
* `Collector.setTurnResponse`. That is why 657 of 665 recorded OpenClaw runs
|
|
334
|
+
* hold zero turns.
|
|
335
|
+
*
|
|
336
|
+
* **Real shape**: `{sessionKey, agentId?, senderIsOwner?, message, messageId?,
|
|
337
|
+
* messageSeq?, ...sessionSnapshot}` where `message` is
|
|
338
|
+
* `{role:'user'|'assistant'|'toolResult', content, …}` — `content` a string for
|
|
339
|
+
* user messages, an array of typed blocks otherwise. Assistant messages also
|
|
340
|
+
* carry `provider` / `model` / `usage:{input,output}`, the per-turn facts the
|
|
341
|
+
* `chat` frame never reports.
|
|
342
|
+
*
|
|
343
|
+
* **Ownership, so nothing is counted twice.** The two Gateway channels carry
|
|
344
|
+
* overlapping halves, so each fact has exactly one source here:
|
|
345
|
+
* - the prompt comes from this event (nothing else has it);
|
|
346
|
+
* - tool calls come from `session.tool`, which carries args AND result —
|
|
347
|
+
* the `toolCall` blocks in an assistant message are deliberately ignored;
|
|
348
|
+
* - the response is emitted from here too, because a run the Gateway hides
|
|
349
|
+
* from the control UI never reaches us as a `chat` final at all. When both
|
|
350
|
+
* arrive they carry the same text, and the sample layer dedups on
|
|
351
|
+
* `kind|turnIndex|hash(text)` while `turns.response` is simply rewritten
|
|
352
|
+
* with the same value.
|
|
249
353
|
*/
|
|
250
354
|
export function openclawSessionMessageToSpans(ctx, payload) {
|
|
251
|
-
const
|
|
252
|
-
|
|
253
|
-
if (!text || !text.trim())
|
|
355
|
+
const message = payload.message;
|
|
356
|
+
if (!message || typeof message !== 'object')
|
|
254
357
|
return [];
|
|
255
|
-
const
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
358
|
+
const role = typeof message.role === 'string' ? message.role.toLowerCase() : '';
|
|
359
|
+
// Measured: the `session.message` frame carries no top-level `ts` (its top
|
|
360
|
+
// level is the session snapshot), but the message itself is stamped. Using
|
|
361
|
+
// `Date.now()` for a message the Gateway already dated would put every event
|
|
362
|
+
// at delivery time instead of at the time it happened.
|
|
363
|
+
const stamped = message.timestamp;
|
|
364
|
+
const ts = typeof payload.ts === 'number' ? payload.ts
|
|
365
|
+
: (typeof stamped === 'number' ? stamped : Date.now());
|
|
366
|
+
const base = {
|
|
259
367
|
'agentdeck.agent_type': ctx.agentType,
|
|
260
368
|
...(ctx.cwd ? { 'agentdeck.cwd': ctx.cwd } : {}),
|
|
261
|
-
...(
|
|
369
|
+
...(payload.sessionKey ? { 'agentdeck.gateway_session_key': payload.sessionKey } : {}),
|
|
262
370
|
};
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
371
|
+
const make = (kind, attributes) => ({
|
|
372
|
+
traceId: ctx.traceId,
|
|
373
|
+
spanId: randomUUID(),
|
|
374
|
+
parentSpanId: ctx.activeTurnId,
|
|
375
|
+
name: spanNameForKind(kind),
|
|
376
|
+
kind,
|
|
377
|
+
ts,
|
|
378
|
+
attributes: { ...base, ...attributes },
|
|
379
|
+
});
|
|
380
|
+
const text = messageText(message.content).trim();
|
|
381
|
+
if (role === 'user') {
|
|
382
|
+
if (!text)
|
|
383
|
+
return [];
|
|
384
|
+
return [make('turn_start', { 'agentdeck.prompt_text': text })];
|
|
385
|
+
}
|
|
386
|
+
if (role === 'assistant') {
|
|
387
|
+
const spans = [];
|
|
388
|
+
// Per-turn provider/model/usage. These ride the store and this event but
|
|
389
|
+
// never the `chat` frame, so without them a turn's model is whatever the
|
|
390
|
+
// run-level `updateModel` last wrote — which on a multi-model agent is the
|
|
391
|
+
// wrong answer for most turns rather than a missing one.
|
|
392
|
+
const usage = message.usage;
|
|
393
|
+
const cost = usage?.cost?.total;
|
|
394
|
+
const model = typeof message.model === 'string' ? message.model : undefined;
|
|
395
|
+
const provider = typeof message.provider === 'string' ? message.provider : undefined;
|
|
396
|
+
if (model || provider || usage) {
|
|
397
|
+
spans.push(make('session_meta', {
|
|
398
|
+
...(model ? { 'gen_ai.request.model': model } : {}),
|
|
399
|
+
...(provider ? { 'gen_ai.system': provider } : {}),
|
|
400
|
+
...(typeof usage?.input === 'number' ? { 'agentdeck.usage.input_tokens': usage.input } : {}),
|
|
401
|
+
...(typeof usage?.output === 'number' ? { 'agentdeck.usage.output_tokens': usage.output } : {}),
|
|
402
|
+
...(typeof cost === 'number' ? { 'agentdeck.usage.cost_usd': cost } : {}),
|
|
403
|
+
}));
|
|
404
|
+
}
|
|
405
|
+
if (text)
|
|
406
|
+
spans.push(make('turn_response', {
|
|
407
|
+
'agentdeck.response_text': text,
|
|
408
|
+
'agentdeck.response_source': 'session_message_projection',
|
|
409
|
+
}));
|
|
410
|
+
return spans;
|
|
411
|
+
}
|
|
412
|
+
// `toolResult` messages duplicate what `session.tool` already reports with
|
|
413
|
+
// more detail (it carries the args too), so they are deliberately dropped
|
|
414
|
+
// rather than counted a second time against the turn's tool tally.
|
|
415
|
+
return [];
|
|
272
416
|
}
|
|
273
417
|
/**
|
|
274
418
|
* Build the spans the adapter should emit when its idle-gap timer expires.
|
|
@@ -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
|
@@ -69,6 +69,10 @@ export type OnTaskOpened = (args: {
|
|
|
69
69
|
projectName: string | null;
|
|
70
70
|
taskIndex: number;
|
|
71
71
|
startedAt: number;
|
|
72
|
+
/** Display title derived from the task's first user prompt
|
|
73
|
+
* (`deriveTaskTitle` SSOT), or null when the prompt yields nothing
|
|
74
|
+
* meaningful — consumers keep their `Task N` fallback on null. */
|
|
75
|
+
title: string | null;
|
|
72
76
|
}) => void;
|
|
73
77
|
/** Callback fired when the agent declares its todos done mid-task (the
|
|
74
78
|
* TodoWrite-all-completed soft hint). Non-segmenting — the task stays open —
|
|
@@ -92,6 +96,8 @@ export declare class ApmeCollector {
|
|
|
92
96
|
* client abort, or never having run at all. Injectable for tests; the
|
|
93
97
|
* default reads the Claude transcript tail once for all three. */
|
|
94
98
|
private readonly openTurnProbe;
|
|
99
|
+
/** Injectable for tests only — production call sites take the default. */
|
|
100
|
+
private readonly idleGapMs;
|
|
95
101
|
private readonly sessionToRun;
|
|
96
102
|
private readonly sessionToAgentType;
|
|
97
103
|
private readonly sessionToTurn;
|
|
@@ -99,6 +105,13 @@ export declare class ApmeCollector {
|
|
|
99
105
|
private readonly sessionToTask;
|
|
100
106
|
private readonly runTaskCount;
|
|
101
107
|
private readonly sessionToUsage;
|
|
108
|
+
/** Running cost total for producers that report PER-MESSAGE cost.
|
|
109
|
+
* Separate from `sessionToUsage` because `updateUsage` writes the cost
|
|
110
|
+
* column absolutely and would otherwise stamp one message's cost as the
|
|
111
|
+
* run's. `seen` keeps a reported ZERO distinct from nothing reported —
|
|
112
|
+
* glm-5.2 answers `usage.cost.total = 0` on every message, so folding the
|
|
113
|
+
* two would record "free" as "unknown" for a whole class of run. */
|
|
114
|
+
private readonly sessionToCostTotal;
|
|
102
115
|
/** Optional listener fired after `closeTask` persists the row. The runner
|
|
103
116
|
* wires this to enqueue a task-level judge call. */
|
|
104
117
|
onTaskClosed: OnTaskClosed | null;
|
|
@@ -114,11 +127,17 @@ export declare class ApmeCollector {
|
|
|
114
127
|
/** Last milestone key (`taskId:turnIndex`) per session — a turn can carry
|
|
115
128
|
* several all-completed TodoWrite calls; surface only the first. */
|
|
116
129
|
private readonly sessionToLastMilestone;
|
|
130
|
+
/** Per-session idle-gap timers — armed in `closeTurn`, cleared on the next
|
|
131
|
+
* turn open / task close. See `AGENT_IDLE_GAP_MS` for the measurement the
|
|
132
|
+
* constant rests on. */
|
|
133
|
+
private readonly sessionToIdleGapTimer;
|
|
117
134
|
constructor(store: ApmeStore, hwSampler?: ApmeHwSampler | undefined,
|
|
118
135
|
/** What the transcript proves about a turn open since a timestamp — cancel,
|
|
119
136
|
* client abort, or never having run at all. Injectable for tests; the
|
|
120
137
|
* default reads the Claude transcript tail once for all three. */
|
|
121
|
-
openTurnProbe?: (transcriptPath: string, sinceMs: number) => OpenTurnEvidence | null
|
|
138
|
+
openTurnProbe?: (transcriptPath: string, sinceMs: number) => OpenTurnEvidence | null,
|
|
139
|
+
/** Injectable for tests only — production call sites take the default. */
|
|
140
|
+
idleGapMs?: number);
|
|
122
141
|
/** Start a new run and return its id. Safe to call if store disabled (returns ''). */
|
|
123
142
|
openRun(input: OpenRunInput): string;
|
|
124
143
|
/** Record a hook event as a step + manage turn lifecycle.
|
|
@@ -216,6 +235,11 @@ export declare class ApmeCollector {
|
|
|
216
235
|
* when a task proves itself "real" (second turn, or TodoWrite plan).
|
|
217
236
|
* Mirrors ApmeCollector.swift `emitDeferredTaskStartIfNeeded`. */
|
|
218
237
|
private emitDeferredTaskStartIfNeeded;
|
|
238
|
+
/** Arm the per-session idle-gap timer. Called from `closeTurn` — the turn
|
|
239
|
+
* just finished, so the gap being measured is genuine idle time, never the
|
|
240
|
+
* agent's own working time. Re-arming replaces any previous timer. */
|
|
241
|
+
private armIdleGapTimer;
|
|
242
|
+
private clearIdleGapTimer;
|
|
219
243
|
/** Public wrapper for closeTask. Used by the manual-boundary CLI /
|
|
220
244
|
* HTTP route + the macOS detail-pane button — lets the user declare
|
|
221
245
|
* "this task is done" without `/clear` (which would also split the
|
|
@@ -262,7 +286,7 @@ export declare class ApmeCollector {
|
|
|
262
286
|
* Falls back to the last closed turn if closeTurn() already ran (race with session exit).
|
|
263
287
|
* Tags turns.efficiency_json.response_kind so the runner can skip tool-only / empty
|
|
264
288
|
* turns — judging silence produces noise scores. */
|
|
265
|
-
setTurnResponse(sessionId: string, response: string): void;
|
|
289
|
+
setTurnResponse(sessionId: string, response: string, source?: 'chat_final' | 'session_message_projection' | 'direct'): void;
|
|
266
290
|
/** Apply response to the last closed turn if it has no response yet.
|
|
267
291
|
* Used as fallback when Stop hook doesn't fire (PTY output capture). */
|
|
268
292
|
setLastClosedTurnResponse(sessionId: string, response: string): void;
|
|
@@ -281,6 +305,31 @@ export declare class ApmeCollector {
|
|
|
281
305
|
* Snapshots carry CUMULATIVE session totals, so we emit a priced ModelEvent
|
|
282
306
|
* for the delta and attribute it to the active task (the SessionSample cost
|
|
283
307
|
* is the sum of its ModelEvents). */
|
|
308
|
+
/**
|
|
309
|
+
* Record usage a producer reports for ONE message.
|
|
310
|
+
*
|
|
311
|
+
* `updateUsage` is cumulative by contract: it assigns `inputTokens` to the run
|
|
312
|
+
* row absolutely and derives its per-task ModelEvent as `max(0, cur - prev)`.
|
|
313
|
+
* Its original and only other caller is the PTY poller's `UsageTracker`
|
|
314
|
+
* snapshot, which really is a running total.
|
|
315
|
+
*
|
|
316
|
+
* A `session.message`(assistant) frame reports THIS message's tokens, and those
|
|
317
|
+
* are not monotonic — measured on a real OpenClaw session: 30302, 21375, 335,
|
|
318
|
+
* 96, 114. Fed to `updateUsage` directly, the run row ends at the LAST
|
|
319
|
+
* message's count (114 for a session that consumed 52,222), every decrease
|
|
320
|
+
* clamps its delta to 0 so most messages append no ModelEvent at all, and
|
|
321
|
+
* `recomputeSampleCost` then prices the run from what survives. Two messages
|
|
322
|
+
* sharing an `(in,out)` pair are additionally deduped away, because the dedup
|
|
323
|
+
* key assumes cumulative values are unique.
|
|
324
|
+
*
|
|
325
|
+
* So convert here rather than at each producer: keep the running total and
|
|
326
|
+
* hand `updateUsage` the cumulative series its arithmetic is written for.
|
|
327
|
+
*/
|
|
328
|
+
addUsageIncrement(sessionId: string, delta: {
|
|
329
|
+
inputTokens: number;
|
|
330
|
+
outputTokens: number;
|
|
331
|
+
costUsd: number | null;
|
|
332
|
+
}): void;
|
|
284
333
|
updateUsage(sessionId: string, snapshot: UsageSnapshot): void;
|
|
285
334
|
/** Split the current run — closes the active run and opens a fresh one.
|
|
286
335
|
* Triggered on `/clear` or other context-reset events so each logical
|
|
@@ -288,6 +337,10 @@ export declare class ApmeCollector {
|
|
|
288
337
|
splitRun(sessionId: string, projectPath?: string): string | null;
|
|
289
338
|
/** Update model id when the bridge resolves which model is in use. */
|
|
290
339
|
updateModel(sessionId: string, modelId: string | undefined | null): void;
|
|
340
|
+
/** Persist the model/provider on the assistant message's own turn.
|
|
341
|
+
* `session_meta` can arrive after `chat.final` closed that turn, so the same
|
|
342
|
+
* current→last fallback used by setTurnResponse is required here too. */
|
|
343
|
+
private updateTurnIdentity;
|
|
291
344
|
/** Finalize a run. Returns the runId so callers can enqueue evaluation.
|
|
292
345
|
* Empty runs (no prompts, no steps, no turns) are deleted — they're just
|
|
293
346
|
* 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;
|
|
1
|
+
{"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../src/apme/collector.ts"],"names":[],"mappings":"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"}
|