vericify 1.0.1 → 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/package.json +1 -1
- package/src/adapters/index.js +63 -1
- package/src/adapters/local-state.js +56 -22
- package/src/adapters/peer-capture.js +285 -0
- package/src/adapters/provenance.js +70 -0
- package/src/projection/live-signal.js +627 -0
- package/src/projection/runs.js +185 -30
- package/src/tui/app.js +13 -2
- package/src/tui/commands.js +4 -1
- package/src/tui/panels.js +162 -62
- package/src/tui/runtime-activity.js +2 -0
package/src/tui/panels.js
CHANGED
|
@@ -42,6 +42,10 @@ function activityBadge(sourceKind) {
|
|
|
42
42
|
return "pp";
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
+
function displaySummary(item) {
|
|
46
|
+
return item.collapse_summary ?? item.display_summary ?? item.summary;
|
|
47
|
+
}
|
|
48
|
+
|
|
45
49
|
export function layoutTierForWidth(width) {
|
|
46
50
|
if (width < 110) return "narrow";
|
|
47
51
|
if (width < 170) return "medium";
|
|
@@ -63,7 +67,19 @@ function globalActivity(projected) {
|
|
|
63
67
|
run_status: run.run.status,
|
|
64
68
|
}))
|
|
65
69
|
)
|
|
66
|
-
.sort((left, right) =>
|
|
70
|
+
.sort((left, right) => {
|
|
71
|
+
const scoreDelta = (right.score ?? 0) - (left.score ?? 0);
|
|
72
|
+
if (scoreDelta !== 0) return scoreDelta;
|
|
73
|
+
return String(right.timestamp).localeCompare(String(left.timestamp));
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function visibleActivity(items) {
|
|
78
|
+
return items.filter((item) => item.visible_by_default !== false);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function meaningfulActivity(items) {
|
|
82
|
+
return visibleActivity(items).filter((item) => item.signal_class === "primary" || item.signal_class === "secondary");
|
|
67
83
|
}
|
|
68
84
|
|
|
69
85
|
function latestDelta(run) {
|
|
@@ -127,84 +143,59 @@ function buildLaneDetailRows(run, tier) {
|
|
|
127
143
|
|
|
128
144
|
function buildRunTriageRows(run) {
|
|
129
145
|
if (!run) return ["No run selected."];
|
|
146
|
+
const signal = run.live_signal ?? {};
|
|
130
147
|
const rows = [];
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
148
|
+
rows.push(`P${signal.attention_score >= 140 ? 1 : 2} ${signal.attention_class ?? "observe_only"}: ${signal.attention_reason ?? "No immediate action required."}`);
|
|
149
|
+
rows.push(`Why now: ${signal.why_now ?? "No meaningful movement yet."}`);
|
|
150
|
+
rows.push(`Next: ${signal.expected_next_event ?? "observe_only"} | owner action ${signal.recommended_owner_action ?? "observe_only"}`);
|
|
151
|
+
if (signal.needs_narrative) {
|
|
152
|
+
rows.push(`Narrative required: ${signal.recommended_post_kind} | ${signal.recommended_summary_template}`);
|
|
134
153
|
}
|
|
154
|
+
const blockedNodes = (run.nodes ?? []).filter((node) => node.status === "blocked");
|
|
155
|
+
if (blockedNodes.length) rows.push(`Blocked nodes ${blockedNodes.length}: ${top(blockedNodes.map((node) => node.title), 2).join(", ")}`);
|
|
135
156
|
const queuedHandoffs = (run.handoff_timeline?.items ?? []).filter((handoff) => handoff.status === "open" || handoff.status === "blocked");
|
|
136
|
-
if (queuedHandoffs.length) {
|
|
137
|
-
rows.push(`P1 handoff queue ${queuedHandoffs.length}: ${top(queuedHandoffs.map((handoff) => handoff.handoff_id), 2).join(", ")}`);
|
|
138
|
-
}
|
|
139
|
-
const staleLanes = (run.lanes ?? [])
|
|
140
|
-
.filter((lane) => lane.status !== "completed")
|
|
141
|
-
.sort((left, right) => String(left.updated_at).localeCompare(String(right.updated_at)));
|
|
142
|
-
if (staleLanes.length) {
|
|
143
|
-
const lane = staleLanes[0];
|
|
144
|
-
rows.push(`P2 stale lane: ${lane.agent_id} last signaled ${relativeTimeFromNow(lane.updated_at)}`);
|
|
145
|
-
}
|
|
157
|
+
if (queuedHandoffs.length) rows.push(`Open handoffs ${queuedHandoffs.length}: ${top(queuedHandoffs.map((handoff) => handoff.handoff_id), 2).join(", ")}`);
|
|
146
158
|
const blockedNeighbor = (run.similarity?.neighbors ?? []).find((neighbor) => neighbor.outcome === "blocked");
|
|
147
159
|
if (blockedNeighbor) {
|
|
148
|
-
rows.push(`
|
|
160
|
+
rows.push(`Failure echo: compare with ${blockedNeighbor.run_id} at ${(blockedNeighbor.score * 100).toFixed(0)}%`);
|
|
149
161
|
}
|
|
150
162
|
const recoveryNeighbor = (run.similarity?.neighbors ?? []).find((neighbor) => neighbor.outcome === "completed");
|
|
151
163
|
if (recoveryNeighbor) {
|
|
152
|
-
rows.push(`
|
|
164
|
+
rows.push(`Recovery path: ${recoveryNeighbor.run_id} reached done from a ${(recoveryNeighbor.score * 100).toFixed(0)}% similar path`);
|
|
153
165
|
}
|
|
154
166
|
return rows.length ? rows : ["No acute risks. Run is flowing."];
|
|
155
167
|
}
|
|
156
168
|
|
|
157
169
|
function buildGlobalTriageRows(projected, selectedRun) {
|
|
158
|
-
const
|
|
159
|
-
const
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
}
|
|
163
|
-
const openHandoffs = (projected.runs ?? [])
|
|
164
|
-
.flatMap((run) => run.handoff_timeline?.items ?? [])
|
|
165
|
-
.filter((handoff) => handoff.status === "open" || handoff.status === "blocked");
|
|
166
|
-
if (openHandoffs.length) {
|
|
167
|
-
rows.push(`P1 handoffs awaiting movement ${openHandoffs.length}: ${top(openHandoffs.map((handoff) => handoff.handoff_id), 3).join(", ")}`);
|
|
168
|
-
}
|
|
169
|
-
const blockedNodes = (projected.runs ?? []).flatMap((run) => run.nodes ?? []).filter((node) => node.status === "blocked");
|
|
170
|
-
if (blockedNodes.length) {
|
|
171
|
-
rows.push(`P1 blocked nodes ${blockedNodes.length}: ${top(blockedNodes.map((node) => node.title), 3).join(", ")}`);
|
|
172
|
-
}
|
|
173
|
-
const staleLanes = (projected.runs ?? [])
|
|
174
|
-
.flatMap((run) => (run.lanes ?? []).map((lane) => ({ run, lane })))
|
|
175
|
-
.filter(({ lane }) => lane.status !== "completed")
|
|
176
|
-
.sort((left, right) => String(left.lane.updated_at).localeCompare(String(right.lane.updated_at)));
|
|
177
|
-
if (staleLanes.length) {
|
|
178
|
-
const { run, lane } = staleLanes[0];
|
|
179
|
-
rows.push(`P2 stale lane ${lane.agent_id} in ${run.run.title}: last signal ${relativeTimeFromNow(lane.updated_at)}`);
|
|
180
|
-
}
|
|
170
|
+
const attention = top((projected.attention_items ?? []).filter((item) => item.attention_class !== "observe_only"), 5);
|
|
171
|
+
const rows = attention.map((item) =>
|
|
172
|
+
`P${item.attention_score >= 140 ? 1 : 2} ${compactStatus(item.status)} ${item.title} | ${item.attention_reason} | next ${item.expected_next_event ?? "observe_only"}`
|
|
173
|
+
);
|
|
181
174
|
const blockedNeighbor = selectedRun?.similarity?.neighbors?.find((neighbor) => neighbor.outcome === "blocked");
|
|
182
175
|
if (blockedNeighbor) {
|
|
183
|
-
rows.push(`
|
|
176
|
+
rows.push(`Compare now: selected run resembles blocked ${blockedNeighbor.run_id} at ${(blockedNeighbor.score * 100).toFixed(0)}%`);
|
|
184
177
|
}
|
|
185
178
|
return rows.length ? rows : ["No hot triage. Traffic is flowing."];
|
|
186
179
|
}
|
|
187
180
|
|
|
188
181
|
function buildSelectedRunRadar(selectedRun) {
|
|
189
182
|
if (!selectedRun) return ["No selected run."];
|
|
183
|
+
const signal = selectedRun.live_signal ?? {};
|
|
190
184
|
const checkpoint = latestCheckpoint(selectedRun);
|
|
191
185
|
const delta = latestDelta(selectedRun);
|
|
192
|
-
const nextNode = activeNodeLabels(selectedRun)[0];
|
|
193
|
-
const queuedHandoff = (selectedRun.handoff_timeline?.items ?? []).find((handoff) => handoff.status === "open" || handoff.status === "blocked");
|
|
194
|
-
const risk = buildRunTriageRows(selectedRun)[0];
|
|
195
186
|
return [
|
|
196
187
|
`${compactStatus(selectedRun.run.status)} ${selectedRun.run.title}`,
|
|
197
188
|
`NOW ${checkpoint ? checkpoint.process_summary.split("\n")[0] : "No checkpoint yet."}`,
|
|
198
|
-
`NEXT ${
|
|
199
|
-
`
|
|
189
|
+
`NEXT ${signal.expected_next_event ?? activeNodeLabels(selectedRun)[0] ?? "await new movement"} | action ${signal.recommended_owner_action ?? "observe_only"}`,
|
|
190
|
+
`PULSE ${signal.why_now ?? "No meaningful movement yet."}`,
|
|
200
191
|
`PATH ${delta ? delta.layers.join(" / ") : "entry only"} | confidence ${((selectedRun.run_summary?.completion_confidence ?? 0) * 100).toFixed(0)}%`,
|
|
201
192
|
];
|
|
202
193
|
}
|
|
203
194
|
|
|
204
195
|
function buildTrafficRows(projected, tier) {
|
|
205
196
|
const limit = tier === "narrow" ? 6 : 10;
|
|
206
|
-
return top(globalActivity(projected), limit).map((item) =>
|
|
207
|
-
`${formatTimestamp(item.timestamp)} [${activityBadge(item.source_kind)}] ${urgencyBadge(item.status)} ${item.run_title} | ${item.actor_id} | ${item
|
|
197
|
+
return top(meaningfulActivity(globalActivity(projected)), limit).map((item) =>
|
|
198
|
+
`${formatTimestamp(item.timestamp)} [${activityBadge(item.source_kind)}] ${urgencyBadge(item.status)} ${item.run_title} | ${item.actor_id} | ${displaySummary(item)}`
|
|
208
199
|
);
|
|
209
200
|
}
|
|
210
201
|
|
|
@@ -230,6 +221,37 @@ function historyCueRows(projected, selectedRun) {
|
|
|
230
221
|
];
|
|
231
222
|
}
|
|
232
223
|
|
|
224
|
+
function buildPresenceRows(run) {
|
|
225
|
+
if (!run) return ["No run selected."];
|
|
226
|
+
const signal = run.live_signal ?? {};
|
|
227
|
+
const captureCommand = signal.recommended_post_kind
|
|
228
|
+
? `/ post --run-id ${run.run.run_id} --agent-id ${signal.current_actor_id ?? "operator"} --kind ${signal.recommended_post_kind} --summary "${signal.recommended_summary_template}"`
|
|
229
|
+
: undefined;
|
|
230
|
+
return [
|
|
231
|
+
`Owner ${signal.current_actor_id ?? "-"} | waiting ${signal.waiting_on_actor_id ?? "-"} | source ${signal.presence_source ?? "-"}`,
|
|
232
|
+
`Freshness ${signal.freshness_class ?? "-"} | last response ${signal.last_response_at ? relativeTimeFromNow(signal.last_response_at) : "-"}`,
|
|
233
|
+
`Next ${signal.expected_next_event ?? "observe_only"} | late ${signal.overdue_at ? relativeTimeFromNow(signal.overdue_at) : "-"} | confidence ${signal.signal_confidence ? `${(signal.signal_confidence * 100).toFixed(0)}%` : "-"}`,
|
|
234
|
+
captureCommand ? `Capture ${captureCommand}` : `Action ${signal.recommended_owner_action ?? "observe_only"}`,
|
|
235
|
+
];
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
function buildQueueRows(projected) {
|
|
239
|
+
const queue = (projected.runs ?? [])
|
|
240
|
+
.flatMap((run) => (run.handoff_timeline?.items ?? []).map((handoff) => ({ run, handoff })))
|
|
241
|
+
.filter(({ handoff }) => handoff.status === "open" || handoff.status === "accepted" || handoff.status === "blocked")
|
|
242
|
+
.sort((left, right) => String(right.handoff.updated_at ?? right.handoff.created_at).localeCompare(String(left.handoff.updated_at ?? left.handoff.created_at)));
|
|
243
|
+
return top(queue, 6).map(({ run, handoff }) =>
|
|
244
|
+
`${urgencyBadge(handoff.status)} ${handoff.status} ${handoff.from_agent} -> ${handoff.to_agent} | ${run.run.title} | ${handoff.node_ref ?? handoff.handoff_id}`
|
|
245
|
+
);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
function buildQuietContextRows(projected, selectedRun) {
|
|
249
|
+
return [
|
|
250
|
+
...compareCueRows(selectedRun),
|
|
251
|
+
...historyCueRows(projected, selectedRun),
|
|
252
|
+
];
|
|
253
|
+
}
|
|
254
|
+
|
|
233
255
|
function buildCompareSummaryRows(report) {
|
|
234
256
|
if (!report) return ["No comparable run available."];
|
|
235
257
|
return [
|
|
@@ -291,8 +313,8 @@ function buildRecoveryCueRows(report) {
|
|
|
291
313
|
|
|
292
314
|
function buildHistoryTimelineRows(projected, selectedRun, tier) {
|
|
293
315
|
const activity = selectedRun
|
|
294
|
-
? top([...(selectedRun.activity_items ?? [])].sort((left, right) => String(right.timestamp).localeCompare(String(left.timestamp))), tier === "narrow" ? 6 : 8)
|
|
295
|
-
: top(globalActivity(projected), tier === "narrow" ? 6 : 8);
|
|
316
|
+
? top(visibleActivity([...(selectedRun.activity_items ?? [])].sort((left, right) => String(right.timestamp).localeCompare(String(left.timestamp)))), tier === "narrow" ? 6 : 8)
|
|
317
|
+
: top(visibleActivity(globalActivity(projected)), tier === "narrow" ? 6 : 8);
|
|
296
318
|
return activity.map((item) =>
|
|
297
319
|
`${formatTimestamp(item.timestamp)} [${activityBadge(item.source_kind)}] ${item.actor_id} | ${item.summary}`
|
|
298
320
|
);
|
|
@@ -326,16 +348,18 @@ export function buildHubMetrics(projected, options = {}) {
|
|
|
326
348
|
const lanes = runs.flatMap((run) => run.lanes ?? []);
|
|
327
349
|
const nodes = runs.flatMap((run) => run.nodes ?? []);
|
|
328
350
|
const handoffs = runs.flatMap((run) => run.handoff_timeline?.items ?? []);
|
|
329
|
-
const activityCount = runs.reduce((sum, run) => sum + (run.activity_items
|
|
351
|
+
const activityCount = runs.reduce((sum, run) => sum + meaningfulActivity(run.activity_items ?? []).length, 0);
|
|
330
352
|
const runningRuns = runs.filter((run) => run.run.status === "running").length;
|
|
331
353
|
const blockedRuns = runs.filter((run) => run.run.status === "blocked").length;
|
|
354
|
+
const staleRuns = runs.filter((run) => ["stale", "stale_acknowledged", "archival"].includes(run.live_signal?.freshness_class)).length;
|
|
355
|
+
const narrativeGaps = runs.filter((run) => run.live_signal?.needs_narrative).length;
|
|
332
356
|
const liveLanes = lanes.filter((lane) => lane.status === "running").length;
|
|
333
357
|
const blockedNodes = nodes.filter((node) => node.status === "blocked").length;
|
|
334
358
|
const openHandoffs = handoffs.filter((handoff) => handoff.status === "open" || handoff.status === "blocked").length;
|
|
335
359
|
if (tier === "narrow") {
|
|
336
|
-
return `Runs ${runs.length} | Live ${runningRuns} | Blkd ${blockedRuns} |
|
|
360
|
+
return `Runs ${runs.length} | Live ${runningRuns} | Blkd ${blockedRuns} | Stale ${staleRuns} | Notes ${narrativeGaps} | HOs ${openHandoffs} | Act ${activityCount}`;
|
|
337
361
|
}
|
|
338
|
-
return `Runs ${runs.length} | Live ${runningRuns} | Blocked ${blockedRuns} |
|
|
362
|
+
return `Runs ${runs.length} | Live ${runningRuns} | Blocked ${blockedRuns} | Stale ${staleRuns} | Narrative ${narrativeGaps} | Handoffs ${openHandoffs} open | Nodes ${blockedNodes} blocked | Activity ${activityCount}`;
|
|
339
363
|
}
|
|
340
364
|
|
|
341
365
|
export function buildRunBoardSection(projected, selectedRun, options = {}) {
|
|
@@ -343,7 +367,7 @@ export function buildRunBoardSection(projected, selectedRun, options = {}) {
|
|
|
343
367
|
const rows = top(projected.run_summaries ?? [], tier === "narrow" ? 6 : 8).map((summary) => {
|
|
344
368
|
const isSelected = summary.run_id === selectedRun?.run?.run_id ? ">" : " ";
|
|
345
369
|
const node = summary.current_node_labels?.[0] ?? "steady";
|
|
346
|
-
return `${isSelected} ${urgencyBadge(summary.status)} ${compactStatus(summary.status)} ${summary.title} |
|
|
370
|
+
return `${isSelected} ${urgencyBadge(summary.status)} ${compactStatus(summary.status)} ${summary.title} | ${summary.attention_class ?? "observe_only"} | ${summary.freshness_class ?? "-"} | node ${node} | ${relativeTimeFromNow(summary.updated_at)}`;
|
|
347
371
|
});
|
|
348
372
|
return {
|
|
349
373
|
title: "Run Board",
|
|
@@ -352,14 +376,88 @@ export function buildRunBoardSection(projected, selectedRun, options = {}) {
|
|
|
352
376
|
};
|
|
353
377
|
}
|
|
354
378
|
|
|
379
|
+
const PEER_ADAPTER_IDS = new Set(["codex", "claude-code", "cursor", "vscode-copilot-chat", "antigravity"]);
|
|
380
|
+
const STATUS_GLYPH = { ready: "✓", attached: "●", detected: "◉", manual: "○" };
|
|
381
|
+
|
|
382
|
+
function relPath(absPath, root) {
|
|
383
|
+
return absPath.startsWith(root + "/") ? absPath.slice(root.length + 1) : absPath;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
function adapterStatusRow(profile, workspaceRoot) {
|
|
387
|
+
const glyph = STATUS_GLYPH[profile.detection_status] ?? "?";
|
|
388
|
+
const status = profile.detection_status.padEnd(8);
|
|
389
|
+
const label = (profile.label_override ?? profile.label).padEnd(22);
|
|
390
|
+
const cat = `(${profile.category})`.padEnd(10);
|
|
391
|
+
let detail = "";
|
|
392
|
+
if (profile.detection_status === "manual") {
|
|
393
|
+
detail = `→ vericify attach --adapter ${profile.adapter_id}`;
|
|
394
|
+
} else {
|
|
395
|
+
const paths = profile.detected_paths.slice(0, 3).map((p) => relPath(p, workspaceRoot));
|
|
396
|
+
detail = paths.join(" ");
|
|
397
|
+
if (profile.session_id) detail += ` session:${profile.session_id}`;
|
|
398
|
+
}
|
|
399
|
+
return `${glyph} ${status} ${label} ${cat} ${detail}`;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
function buildPeerObservationRows(projected, tier) {
|
|
403
|
+
const limit = tier === "narrow" ? 4 : 6;
|
|
404
|
+
const items = (projected.runs ?? [])
|
|
405
|
+
.flatMap((run) => run.activity_items ?? [])
|
|
406
|
+
.filter((item) =>
|
|
407
|
+
item.label === "peer_observation" ||
|
|
408
|
+
(PEER_ADAPTER_IDS.has(item.actor_id) && item.source_kind === "status_event")
|
|
409
|
+
)
|
|
410
|
+
.sort((a, b) => String(b.timestamp).localeCompare(String(a.timestamp)));
|
|
411
|
+
return top(items, limit).map((item) =>
|
|
412
|
+
`${formatTimestamp(item.timestamp)} [${item.actor_id}] ${item.summary}`
|
|
413
|
+
);
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
function buildAttachGuideRows(profiles) {
|
|
417
|
+
const manual = profiles.filter((p) => p.detection_status === "manual" && p.category === "peer");
|
|
418
|
+
if (!manual.length) return ["All peer adapters detected or attached."];
|
|
419
|
+
return [
|
|
420
|
+
"Activate with: vericify attach --adapter <id>",
|
|
421
|
+
...manual.map((p) => ` ○ ${p.adapter_id.padEnd(22)} ${p.label}`),
|
|
422
|
+
];
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
export function buildAdaptersSections(projected, options = {}) {
|
|
426
|
+
const { tier = "wide" } = options;
|
|
427
|
+
const profiles = projected.adapter_profiles ?? [];
|
|
428
|
+
const workspaceRoot = projected.workspace?.root_path ?? "";
|
|
429
|
+
const adapterRows = profiles.map((p) => adapterStatusRow(p, workspaceRoot));
|
|
430
|
+
const observationRows = buildPeerObservationRows(projected, tier);
|
|
431
|
+
const guideRows = buildAttachGuideRows(profiles);
|
|
432
|
+
return [
|
|
433
|
+
{
|
|
434
|
+
title: "Adapter Sources",
|
|
435
|
+
rows: adapterRows.length ? adapterRows : ["No adapters resolved."],
|
|
436
|
+
tone: "STATUS",
|
|
437
|
+
fullWidth: true,
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
title: "Peer Observations",
|
|
441
|
+
rows: observationRows.length ? observationRows : ["No peer capture data yet."],
|
|
442
|
+
tone: "TRACE",
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
title: "Attach Guide",
|
|
446
|
+
rows: guideRows,
|
|
447
|
+
tone: "WAIT",
|
|
448
|
+
},
|
|
449
|
+
];
|
|
450
|
+
}
|
|
451
|
+
|
|
355
452
|
export function buildHubSections(projected, selectedRun, options = {}) {
|
|
356
453
|
const { tier = "wide" } = options;
|
|
357
454
|
return [
|
|
358
|
-
{ title: "
|
|
359
|
-
{ title: "
|
|
360
|
-
{ title: "
|
|
361
|
-
{ title: "
|
|
362
|
-
{ title: "
|
|
455
|
+
{ title: "Pulse", rows: buildSelectedRunRadar(selectedRun ?? projected.runs?.[0]), tone: selectedRun?.run?.status === "blocked" ? "HOT" : "LIVE" },
|
|
456
|
+
{ title: "Attention", rows: buildGlobalTriageRows(projected, selectedRun), tone: "HOT" },
|
|
457
|
+
{ title: "Latest Meaningful Change", rows: buildTrafficRows(projected, tier), tone: "FLOW", fullWidth: tier === "wide" },
|
|
458
|
+
{ title: "Presence", rows: buildPresenceRows(selectedRun ?? projected.runs?.[0]), tone: "STATUS" },
|
|
459
|
+
{ title: "Queue", rows: buildQueueRows(projected), tone: "QUEUE" },
|
|
460
|
+
{ title: "Quiet Context", rows: buildQuietContextRows(projected, selectedRun), tone: "TRACE", fullWidth: tier === "wide" },
|
|
363
461
|
];
|
|
364
462
|
}
|
|
365
463
|
|
|
@@ -378,8 +476,8 @@ export function buildInspectSections(run, options = {}) {
|
|
|
378
476
|
const delta = index > 0 ? run.deltas?.find((candidate) => candidate.to_checkpoint_id === checkpoint.checkpoint_id) : undefined;
|
|
379
477
|
return `${formatTimestamp(checkpoint.timestamp)} | ${checkpoint.process_summary.split("\n")[0]} | ${delta ? delta.layers.join("/") : "entry"}`;
|
|
380
478
|
});
|
|
381
|
-
const activityRows = (run.activity_items ?? []).slice(-12).map((item) =>
|
|
382
|
-
`${formatTimestamp(item.timestamp)} [${activityBadge(item.source_kind)}] ${urgencyBadge(item.status)} ${item.actor_id} | ${item
|
|
479
|
+
const activityRows = meaningfulActivity(run.activity_items ?? []).slice(-12).map((item) =>
|
|
480
|
+
`${formatTimestamp(item.timestamp)} [${activityBadge(item.source_kind)}] ${urgencyBadge(item.status)} ${item.actor_id} | ${displaySummary(item)}`
|
|
383
481
|
);
|
|
384
482
|
const similarityRows = (run.similarity?.neighbors ?? []).slice(0, 4).map((neighbor) => summarizeNeighbor(run, neighbor));
|
|
385
483
|
|
|
@@ -390,11 +488,13 @@ export function buildInspectSections(run, options = {}) {
|
|
|
390
488
|
`${compactStatus(run.run.status)} ${run.run.title}`,
|
|
391
489
|
`Objective: ${run.run.objective ?? "-"}`,
|
|
392
490
|
`Updated: ${formatTimestamp(run.run.updated_at)} (${relativeTimeFromNow(run.run.updated_at)})`,
|
|
491
|
+
`Attention: ${run.live_signal?.attention_class ?? "observe_only"} | freshness ${run.live_signal?.freshness_class ?? "-"}`,
|
|
393
492
|
],
|
|
394
493
|
tone: run.run.status === "blocked" ? "HOT" : "LIVE",
|
|
395
494
|
},
|
|
396
|
-
{ title: "
|
|
397
|
-
{ title: "
|
|
495
|
+
{ title: "Pulse", rows: buildSelectedRunRadar(run), tone: "FLOW" },
|
|
496
|
+
{ title: "Attention", rows: buildRunTriageRows(run), tone: "HOT" },
|
|
497
|
+
{ title: "Presence", rows: buildPresenceRows(run), tone: "STATUS" },
|
|
398
498
|
{ title: "Handoff Queue", rows: handoffRows.length ? handoffRows : ["No queued handoffs."], tone: "QUEUE" },
|
|
399
499
|
{ title: "Branch Divergence", rows: branchRows(run), tone: "FORK" },
|
|
400
500
|
{ title: "Lane Detail", rows: buildLaneDetailRows(run, tier), tone: "FLOW" },
|
|
@@ -54,6 +54,7 @@ export function createRuntimeRecorder({
|
|
|
54
54
|
view,
|
|
55
55
|
source,
|
|
56
56
|
interactive: true,
|
|
57
|
+
observer_telemetry: true,
|
|
57
58
|
...payload,
|
|
58
59
|
},
|
|
59
60
|
});
|
|
@@ -67,6 +68,7 @@ export function createRuntimeRecorder({
|
|
|
67
68
|
view,
|
|
68
69
|
source,
|
|
69
70
|
interactive: true,
|
|
71
|
+
observer_telemetry: true,
|
|
70
72
|
...metadata,
|
|
71
73
|
},
|
|
72
74
|
});
|