@agentdeck/bridge 1.0.22 → 1.0.23

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.
Files changed (62) hide show
  1. package/dist/apme/activity-history.d.ts +59 -0
  2. package/dist/apme/activity-history.d.ts.map +1 -0
  3. package/dist/apme/activity-history.js +265 -0
  4. package/dist/apme/activity-history.js.map +1 -0
  5. package/dist/apme/dashboard-html.d.ts.map +1 -1
  6. package/dist/apme/dashboard-html.js +40 -6
  7. package/dist/apme/dashboard-html.js.map +1 -1
  8. package/dist/apme/http.d.ts +1 -0
  9. package/dist/apme/http.d.ts.map +1 -1
  10. package/dist/apme/http.js +9 -0
  11. package/dist/apme/http.js.map +1 -1
  12. package/dist/apme/runner.d.ts +20 -0
  13. package/dist/apme/runner.d.ts.map +1 -1
  14. package/dist/apme/runner.js +57 -0
  15. package/dist/apme/runner.js.map +1 -1
  16. package/dist/apme/settings.d.ts +21 -4
  17. package/dist/apme/settings.d.ts.map +1 -1
  18. package/dist/apme/settings.js +29 -5
  19. package/dist/apme/settings.js.map +1 -1
  20. package/dist/apme/store.d.ts +7 -0
  21. package/dist/apme/store.d.ts.map +1 -1
  22. package/dist/apme/store.js +35 -0
  23. package/dist/apme/store.js.map +1 -1
  24. package/dist/cli.d.ts.map +1 -1
  25. package/dist/cli.js +248 -13
  26. package/dist/cli.js.map +1 -1
  27. package/dist/daemon-server.d.ts.map +1 -1
  28. package/dist/daemon-server.js +100 -4
  29. package/dist/daemon-server.js.map +1 -1
  30. package/dist/daemon-takeover.d.ts +3 -0
  31. package/dist/daemon-takeover.d.ts.map +1 -1
  32. package/dist/daemon-takeover.js +5 -0
  33. package/dist/daemon-takeover.js.map +1 -1
  34. package/dist/daemon.js +1 -1
  35. package/dist/esp32-flash-lease.d.ts +47 -0
  36. package/dist/esp32-flash-lease.d.ts.map +1 -0
  37. package/dist/esp32-flash-lease.js +84 -0
  38. package/dist/esp32-flash-lease.js.map +1 -0
  39. package/dist/esp32-flash-transport.d.ts +90 -0
  40. package/dist/esp32-flash-transport.d.ts.map +1 -0
  41. package/dist/esp32-flash-transport.js +157 -0
  42. package/dist/esp32-flash-transport.js.map +1 -0
  43. package/dist/esp32-flash.d.ts +171 -0
  44. package/dist/esp32-flash.d.ts.map +1 -0
  45. package/dist/esp32-flash.js +523 -0
  46. package/dist/esp32-flash.js.map +1 -0
  47. package/dist/esp32-serial.d.ts +9 -1
  48. package/dist/esp32-serial.d.ts.map +1 -1
  49. package/dist/esp32-serial.js +74 -1
  50. package/dist/esp32-serial.js.map +1 -1
  51. package/dist/esptool-js-node.d.ts +17 -0
  52. package/dist/esptool-js-node.d.ts.map +1 -0
  53. package/dist/esptool-js-node.js +17 -0
  54. package/dist/esptool-js-node.js.map +1 -0
  55. package/dist/review-runner.d.ts.map +1 -1
  56. package/dist/review-runner.js +27 -9
  57. package/dist/review-runner.js.map +1 -1
  58. package/dist/timeline-summarizer.d.ts +7 -2
  59. package/dist/timeline-summarizer.d.ts.map +1 -1
  60. package/dist/timeline-summarizer.js +13 -69
  61. package/dist/timeline-summarizer.js.map +1 -1
  62. package/package.json +6 -4
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Content-minimized, rebuildable activity history shared across daemon owners.
3
+ *
4
+ * The App Store daemon and CLI daemon intentionally keep separate SQLite
5
+ * databases. They exchange this projection over authenticated loopback HTTP;
6
+ * neither process opens or mutates the other's source DB. The cache may be
7
+ * deleted at any time and rebuilt from the source rows on the next handover.
8
+ */
9
+ import type { ApmeStore } from './store.js';
10
+ export declare const APME_ACTIVITY_SCHEMA: "agentdeck-activity/v1";
11
+ export interface ApmeActivityRow {
12
+ originKey: string;
13
+ agentType: string;
14
+ sessionId: string;
15
+ taskIndex: number;
16
+ projectName: string | null;
17
+ modelId: string | null;
18
+ task: string;
19
+ startedAt: number;
20
+ endedAt: number | null;
21
+ durationMs: number;
22
+ turnCount: number;
23
+ inputTokens: number | null;
24
+ outputTokens: number | null;
25
+ costUsd: number | null;
26
+ overallScore: number | null;
27
+ provenance: Array<'node' | 'swift'>;
28
+ }
29
+ export interface ApmeAgentActivitySummary {
30
+ agentType: string;
31
+ taskCount: number;
32
+ durationMs: number;
33
+ firstAt: number;
34
+ lastAt: number;
35
+ }
36
+ export interface ApmeActivitySnapshot {
37
+ schema: typeof APME_ACTIVITY_SCHEMA;
38
+ capturedAt: number;
39
+ rows: ApmeActivityRow[];
40
+ agents: ApmeAgentActivitySummary[];
41
+ }
42
+ export declare function activityOriginKey(input: {
43
+ agentType: string;
44
+ sessionId: string;
45
+ taskIndex: number;
46
+ firstPrompt: string;
47
+ }): string;
48
+ export declare function localActivityRows(store: ApmeStore, limit?: number): ApmeActivityRow[];
49
+ export declare function mergeActivityRows(rows: ApmeActivityRow[], limit?: number): ApmeActivityRow[];
50
+ export declare function summarizeActivity(rows: ApmeActivityRow[]): ApmeAgentActivitySummary[];
51
+ export declare function loadPeerActivityRows(): ApmeActivityRow[];
52
+ export declare function savePeerActivityRows(rows: ApmeActivityRow[]): void;
53
+ export declare function makeActivitySnapshot(rows: ApmeActivityRow[]): ApmeActivitySnapshot;
54
+ export declare function activitySnapshotForStore(store: ApmeStore, limit?: number): ApmeActivitySnapshot;
55
+ /** Capture a same-user Swift daemon's projection before asking it to yield.
56
+ * Failure is deliberately non-blocking: activity sync must never prevent the
57
+ * CLI daemon from taking over the port. */
58
+ export declare function capturePeerActivity(port: number, token: unknown): Promise<boolean>;
59
+ //# sourceMappingURL=activity-history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-history.d.ts","sourceRoot":"","sources":["../../src/apme/activity-history.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,eAAO,MAAM,oBAAoB,EAAG,uBAAgC,CAAC;AAMrE,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,OAAO,oBAAoB,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,MAAM,EAAE,wBAAwB,EAAE,CAAC;CACpC;AA2BD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CAIT;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,SAAW,GAAG,eAAe,EAAE,CAuCvF;AAgED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,KAAK,SAAW,GAAG,eAAe,EAAE,CAQ9F;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,wBAAwB,EAAE,CAkBrF;AAID,wBAAgB,oBAAoB,IAAI,eAAe,EAAE,CAQxD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,IAAI,CAQlE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,oBAAoB,CAGlF;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,SAAW,GAAG,oBAAoB,CAEjG;AAeD;;2CAE2C;AAC3C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CA2BlF"}
@@ -0,0 +1,265 @@
1
+ /**
2
+ * Content-minimized, rebuildable activity history shared across daemon owners.
3
+ *
4
+ * The App Store daemon and CLI daemon intentionally keep separate SQLite
5
+ * databases. They exchange this projection over authenticated loopback HTTP;
6
+ * neither process opens or mutates the other's source DB. The cache may be
7
+ * deleted at any time and rebuilt from the source rows on the next handover.
8
+ */
9
+ import { createHash } from 'crypto';
10
+ import { mkdirSync, readFileSync, renameSync, writeFileSync } from 'fs';
11
+ import { join } from 'path';
12
+ import { request } from 'http';
13
+ import { getDataDir } from '../session-registry.js';
14
+ export const APME_ACTIVITY_SCHEMA = 'agentdeck-activity/v1';
15
+ const CACHE_FILE = 'apme-peer-activity.json';
16
+ const MAX_ROWS = 500;
17
+ const MAX_BODY_BYTES = 5 * 1024 * 1024;
18
+ const FUZZY_HANDOVER_GAP_MS = 5 * 60 * 1000;
19
+ function canonicalAgent(value) {
20
+ const v = value.trim().toLowerCase();
21
+ if (v === 'codex' || v === 'codex-app')
22
+ return 'codex-cli';
23
+ if (v === 'open-code')
24
+ return 'opencode';
25
+ return v || 'unknown';
26
+ }
27
+ function canonicalSession(agentType, value) {
28
+ let v = value.trim();
29
+ const prefixes = agentType === 'codex-cli' ? ['codex:']
30
+ : agentType === 'opencode' ? ['opencode:'] : [];
31
+ for (const prefix of prefixes) {
32
+ if (v.toLowerCase().startsWith(prefix))
33
+ v = v.slice(prefix.length);
34
+ }
35
+ return v || 'unknown';
36
+ }
37
+ function normalizedTask(value) {
38
+ return value.trim().replace(/\s+/g, ' ').slice(0, 2_000);
39
+ }
40
+ function digest(value) {
41
+ return createHash('sha256').update(value).digest('hex').slice(0, 24);
42
+ }
43
+ export function activityOriginKey(input) {
44
+ const agent = canonicalAgent(input.agentType);
45
+ const session = canonicalSession(agent, input.sessionId);
46
+ return `activity:v1:${digest(`${agent}\0${session}\0${input.taskIndex}\0${normalizedTask(input.firstPrompt)}`)}`;
47
+ }
48
+ export function localActivityRows(store, limit = MAX_ROWS) {
49
+ const page = store.listTaskPage({ limit: Math.min(Math.max(limit, 1), MAX_ROWS) });
50
+ return page.tasks.map((task) => {
51
+ const turns = store.listTurnsForTask(task.id);
52
+ const now = Date.now();
53
+ // "Time used" means agent-working time, not wall time between the first
54
+ // and last prompt. Summing closed turn intervals keeps a lunch break or an
55
+ // overnight user think-time out of the number; only the currently-open
56
+ // turn accrues up to now.
57
+ const activeDurationMs = turns.reduce((total, turn) => {
58
+ const started = typeof turn.started_at === 'number' ? turn.started_at : null;
59
+ if (started == null)
60
+ return total;
61
+ const ended = typeof turn.ended_at === 'number' ? turn.ended_at : now;
62
+ return total + Math.max(0, ended - started);
63
+ }, 0);
64
+ const agentType = canonicalAgent(String(task.agentType));
65
+ const sessionId = canonicalSession(agentType, task.sessionId);
66
+ const firstPrompt = normalizedTask(task.firstPrompt ?? '');
67
+ const label = normalizedTask(task.summary ?? firstPrompt) || '(task details unavailable)';
68
+ const endedAt = task.endedAt ?? null;
69
+ return {
70
+ originKey: activityOriginKey({ agentType, sessionId, taskIndex: task.taskIndex, firstPrompt }),
71
+ agentType,
72
+ sessionId,
73
+ taskIndex: task.taskIndex,
74
+ projectName: task.projectName ?? null,
75
+ modelId: task.modelId ?? null,
76
+ task: label.slice(0, 500),
77
+ startedAt: task.startedAt,
78
+ endedAt,
79
+ durationMs: activeDurationMs,
80
+ turnCount: task.turnCount,
81
+ inputTokens: task.inputTokens ?? null,
82
+ outputTokens: task.outputTokens ?? null,
83
+ costUsd: task.costUsd ?? null,
84
+ overallScore: task.overallScore ?? task.compositeScore ?? null,
85
+ provenance: ['node'],
86
+ };
87
+ });
88
+ }
89
+ function intervalsTouch(a, b) {
90
+ const aEnd = a.endedAt ?? a.startedAt;
91
+ const bEnd = b.endedAt ?? b.startedAt;
92
+ return a.startedAt <= bEnd + FUZZY_HANDOVER_GAP_MS
93
+ && b.startedAt <= aEnd + FUZZY_HANDOVER_GAP_MS;
94
+ }
95
+ function isSameActivity(a, b) {
96
+ // Even a deterministic key is not a native task id: task_index can reset
97
+ // after a daemon restart and a user can repeat the same first prompt later.
98
+ // Time agreement is therefore mandatory on every merge path.
99
+ if (a.originKey === b.originKey)
100
+ return intervalsTouch(a, b);
101
+ // Conservative legacy/handover fallback: never match on text alone. Native
102
+ // session + agent + task index must all agree, and the time intervals must
103
+ // overlap or nearly touch. A resumed same-session task hours later remains
104
+ // separate even when it repeats the same prompt.
105
+ return a.agentType === b.agentType
106
+ && a.sessionId === b.sessionId
107
+ && a.taskIndex === b.taskIndex
108
+ && intervalsTouch(a, b);
109
+ }
110
+ function quality(row) {
111
+ return (row.task && row.task !== '(task details unavailable)' ? 4 : 0)
112
+ + (row.endedAt != null ? 2 : 0)
113
+ + (row.modelId ? 1 : 0)
114
+ + (row.overallScore != null ? 1 : 0)
115
+ + (row.inputTokens != null || row.outputTokens != null || row.costUsd != null ? 1 : 0);
116
+ }
117
+ function mergePair(a, b) {
118
+ const rich = quality(b) > quality(a) ? b : a;
119
+ const other = rich === a ? b : a;
120
+ const ended = [a.endedAt, b.endedAt].filter((v) => typeof v === 'number');
121
+ const startedAt = Math.min(a.startedAt, b.startedAt);
122
+ const endedAt = ended.length ? Math.max(...ended) : null;
123
+ return {
124
+ ...rich,
125
+ originKey: [a.originKey, b.originKey].sort()[0],
126
+ projectName: rich.projectName ?? other.projectName,
127
+ modelId: rich.modelId ?? other.modelId,
128
+ task: rich.task || other.task,
129
+ startedAt,
130
+ endedAt,
131
+ // Durations already represent summed turn-working intervals. Rebuilding
132
+ // from the merged wall-clock bounds would put user think time back in.
133
+ durationMs: Math.max(a.durationMs, b.durationMs),
134
+ turnCount: Math.max(a.turnCount, b.turnCount),
135
+ inputTokens: maxNullable(a.inputTokens, b.inputTokens),
136
+ outputTokens: maxNullable(a.outputTokens, b.outputTokens),
137
+ costUsd: maxNullable(a.costUsd, b.costUsd),
138
+ overallScore: maxNullable(a.overallScore, b.overallScore),
139
+ provenance: Array.from(new Set([...a.provenance, ...b.provenance])).sort(),
140
+ };
141
+ }
142
+ function maxNullable(a, b) {
143
+ if (a == null)
144
+ return b;
145
+ if (b == null)
146
+ return a;
147
+ return Math.max(a, b);
148
+ }
149
+ export function mergeActivityRows(rows, limit = MAX_ROWS) {
150
+ const merged = [];
151
+ for (const row of [...rows].sort((a, b) => a.startedAt - b.startedAt || a.originKey.localeCompare(b.originKey))) {
152
+ const index = merged.findIndex((candidate) => isSameActivity(candidate, row));
153
+ if (index >= 0)
154
+ merged[index] = mergePair(merged[index], row);
155
+ else
156
+ merged.push(row);
157
+ }
158
+ return merged.sort((a, b) => b.startedAt - a.startedAt).slice(0, limit);
159
+ }
160
+ export function summarizeActivity(rows) {
161
+ const groups = new Map();
162
+ for (const row of rows) {
163
+ const existing = groups.get(row.agentType);
164
+ const lastAt = row.endedAt ?? row.startedAt;
165
+ if (!existing) {
166
+ groups.set(row.agentType, {
167
+ agentType: row.agentType, taskCount: 1, durationMs: row.durationMs,
168
+ firstAt: row.startedAt, lastAt,
169
+ });
170
+ }
171
+ else {
172
+ existing.taskCount += 1;
173
+ existing.durationMs += row.durationMs;
174
+ existing.firstAt = Math.min(existing.firstAt, row.startedAt);
175
+ existing.lastAt = Math.max(existing.lastAt, lastAt);
176
+ }
177
+ }
178
+ return [...groups.values()].sort((a, b) => b.durationMs - a.durationMs || a.agentType.localeCompare(b.agentType));
179
+ }
180
+ function cachePath() { return join(getDataDir(), CACHE_FILE); }
181
+ export function loadPeerActivityRows() {
182
+ try {
183
+ const parsed = JSON.parse(readFileSync(cachePath(), 'utf8'));
184
+ if (parsed.schema !== APME_ACTIVITY_SCHEMA || !Array.isArray(parsed.rows))
185
+ return [];
186
+ return parsed.rows.filter(isActivityRow).slice(0, MAX_ROWS);
187
+ }
188
+ catch {
189
+ return [];
190
+ }
191
+ }
192
+ export function savePeerActivityRows(rows) {
193
+ const merged = mergeActivityRows([...loadPeerActivityRows(), ...rows]);
194
+ const snapshot = makeActivitySnapshot(merged);
195
+ const path = cachePath();
196
+ mkdirSync(getDataDir(), { recursive: true });
197
+ const tmp = `${path}.${process.pid}.tmp`;
198
+ writeFileSync(tmp, JSON.stringify(snapshot), { encoding: 'utf8', mode: 0o600 });
199
+ renameSync(tmp, path);
200
+ }
201
+ export function makeActivitySnapshot(rows) {
202
+ const merged = mergeActivityRows(rows);
203
+ return { schema: APME_ACTIVITY_SCHEMA, capturedAt: Date.now(), rows: merged, agents: summarizeActivity(merged) };
204
+ }
205
+ export function activitySnapshotForStore(store, limit = MAX_ROWS) {
206
+ return makeActivitySnapshot([...localActivityRows(store, limit), ...loadPeerActivityRows()]);
207
+ }
208
+ function isActivityRow(value) {
209
+ if (!value || typeof value !== 'object')
210
+ return false;
211
+ const row = value;
212
+ return typeof row.originKey === 'string'
213
+ && typeof row.agentType === 'string'
214
+ && typeof row.sessionId === 'string'
215
+ && typeof row.taskIndex === 'number'
216
+ && typeof row.task === 'string'
217
+ && typeof row.startedAt === 'number'
218
+ && typeof row.durationMs === 'number'
219
+ && Array.isArray(row.provenance);
220
+ }
221
+ /** Capture a same-user Swift daemon's projection before asking it to yield.
222
+ * Failure is deliberately non-blocking: activity sync must never prevent the
223
+ * CLI daemon from taking over the port. */
224
+ export function capturePeerActivity(port, token) {
225
+ const query = typeof token === 'string' && token ? `?token=${encodeURIComponent(token)}` : '';
226
+ return new Promise((resolve) => {
227
+ const req = request({
228
+ hostname: '127.0.0.1', port, path: `/apme/activity${query}`, method: 'GET', timeout: 2500,
229
+ }, (res) => {
230
+ if ((res.statusCode ?? 500) >= 300) {
231
+ res.resume();
232
+ resolve(false);
233
+ return;
234
+ }
235
+ const chunks = [];
236
+ let bytes = 0;
237
+ res.on('data', (chunk) => {
238
+ bytes += chunk.length;
239
+ if (bytes > MAX_BODY_BYTES) {
240
+ req.destroy();
241
+ return;
242
+ }
243
+ chunks.push(chunk);
244
+ });
245
+ res.on('end', () => {
246
+ try {
247
+ const parsed = JSON.parse(Buffer.concat(chunks).toString('utf8'));
248
+ if (parsed.schema !== APME_ACTIVITY_SCHEMA || !Array.isArray(parsed.rows)) {
249
+ resolve(false);
250
+ return;
251
+ }
252
+ savePeerActivityRows(parsed.rows.filter(isActivityRow));
253
+ resolve(true);
254
+ }
255
+ catch {
256
+ resolve(false);
257
+ }
258
+ });
259
+ });
260
+ req.on('error', () => resolve(false));
261
+ req.on('timeout', () => { req.destroy(); resolve(false); });
262
+ req.end();
263
+ });
264
+ }
265
+ //# sourceMappingURL=activity-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-history.js","sourceRoot":"","sources":["../../src/apme/activity-history.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-html.d.ts","sourceRoot":"","sources":["../../src/apme/dashboard-html.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,wBAAgB,iBAAiB,IAAI,MAAM,CAkyB1C"}
1
+ {"version":3,"file":"dashboard-html.d.ts","sourceRoot":"","sources":["../../src/apme/dashboard-html.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,wBAAgB,iBAAiB,IAAI,MAAM,CAo0B1C"}
@@ -100,6 +100,11 @@ tr.selected td{background:rgba(99,102,241,0.15);border-left:2px solid var(--acce
100
100
  .panel{display:none}.panel.visible{display:block;height:100%}
101
101
  /* Graph needs a column flex box so the canvas can claim the leftover height. */
102
102
  .panel#panel-graph.visible{display:flex;flex-direction:column}
103
+ .activity-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;padding:10px;background:var(--surface);border-bottom:1px solid var(--border)}
104
+ .activity-card{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px}
105
+ .activity-card .agent{font-size:11px;color:var(--muted);font-weight:600}
106
+ .activity-card .time{font-size:20px;font-weight:700;margin:4px 0;color:var(--text)}
107
+ .activity-card .count{font-size:10px;color:var(--dim)}
103
108
  .empty{color:var(--dim);font-style:italic;padding:20px;text-align:center}
104
109
  </style>
105
110
  </head>
@@ -113,7 +118,8 @@ tr.selected td{background:rgba(99,102,241,0.15);border-left:2px solid var(--acce
113
118
  <!-- Left: runs list + tabs -->
114
119
  <div class="left">
115
120
  <div class="tabs">
116
- <button class="tab active" onclick="showTab('runs')">Runs</button>
121
+ <button class="tab active" onclick="showTab('activity')">Activity</button>
122
+ <button class="tab" onclick="showTab('runs')">Runs</button>
117
123
  <button class="tab" onclick="showTab('tasks')">Tasks</button>
118
124
  <button class="tab" onclick="showTab('graph')">Graph</button>
119
125
  <button class="tab" onclick="showTab('recommend')">Recommend</button>
@@ -121,7 +127,13 @@ tr.selected td{background:rgba(99,102,241,0.15);border-left:2px solid var(--acce
121
127
  <button class="tab" onclick="showTab('categories')">Categories</button>
122
128
  </div>
123
129
  <div class="table-wrap">
124
- <div class="panel visible" id="panel-runs">
130
+ <div class="panel visible" id="panel-activity">
131
+ <div class="activity-cards" id="activity-cards"></div>
132
+ <table><thead><tr>
133
+ <th>Agent</th><th>Task</th><th>Project</th><th>When</th><th>Time</th>
134
+ </tr></thead><tbody id="activity-body"></tbody></table>
135
+ </div>
136
+ <div class="panel" id="panel-runs">
125
137
  <div style="display:flex;gap:6px;padding:8px 10px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0">
126
138
  <select id="f-agent" onchange="applyFilter()" style="background:var(--bg);color:var(--muted);border:1px solid var(--border);border-radius:4px;padding:4px 8px;font-size:11px"><option value="">All Agents</option></select>
127
139
  <select id="f-model" onchange="applyFilter()" style="background:var(--bg);color:var(--muted);border:1px solid var(--border);border-radius:4px;padding:4px 8px;font-size:11px"><option value="">All Models</option></select>
@@ -172,7 +184,7 @@ tr.selected td{background:rgba(99,102,241,0.15);border-left:2px solid var(--acce
172
184
 
173
185
  <!-- Right: detail -->
174
186
  <div class="right" id="detail-panel">
175
- <div class="detail-empty">Select a run to view details</div>
187
+ <div class="detail-empty">Select an activity to view details</div>
176
188
  </div>
177
189
  </div>
178
190
 
@@ -180,6 +192,7 @@ tr.selected td{background:rgba(99,102,241,0.15);border-left:2px solid var(--acce
180
192
  const B=location.origin;let selId=null;let allRuns=[];
181
193
  let selTaskId=null,taskOffset=0,taskTotal=0,tasksLoaded=false,taskSearchTimer=null;const TASK_PAGE=50;
182
194
  let graphSim=null;
195
+ let activityRows=[];
183
196
  const AUTH=new URLSearchParams(location.search).get('token')||'';
184
197
  function api(path){const sep=path.includes('?')?'&':'?';return B+path+(AUTH?sep+'token='+encodeURIComponent(AUTH):'')}
185
198
 
@@ -193,13 +206,33 @@ function showTab(n){
193
206
  // while its panel is display:none.
194
207
  if(n==='tasks'&&!tasksLoaded){tasksLoaded=true;loadTasks(0)}
195
208
  if(n==='graph'){requestAnimationFrame(()=>loadGraph())}
209
+ if(n==='activity'){loadActivity()}
196
210
  }
197
211
  function fs(s){if(s==null)return'<span class="score score-na">—</span>';const p=Math.round(s*100),c=p>=70?'high':p>=40?'mid':'low';return'<span class="score score-'+c+'">'+p+'%</span>'}
198
212
  function fo(o){if(!o)return'';return'<span class="badge badge-'+o+'">'+o+'</span>'}
199
- function fd(ms){if(!ms)return'';const s=Math.round(ms/1000);return s>=3600?Math.floor(s/3600)+'h'+Math.floor((s%3600)/60)+'m':s>=60?Math.floor(s/60)+'m'+s%60+'s':s+'s'}
213
+ function fd(ms){if(ms==null)return'';const s=Math.max(0,Math.round(ms/1000));return s>=3600?Math.floor(s/3600)+'h'+Math.floor((s%3600)/60)+'m':s>=60?Math.floor(s/60)+'m'+s%60+'s':s+'s'}
200
214
  function esc(s){return(s||'').replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;')}
201
215
  function barColor(pct){return pct>=70?'var(--green)':pct>=40?'var(--yellow)':'var(--red)'}
202
216
 
217
+ async function loadActivity(){
218
+ try{
219
+ const r=await fetch(api('/apme/activity'));const d=await r.json();activityRows=d.rows||[];
220
+ const cards=document.getElementById('activity-cards');
221
+ cards.innerHTML=(d.agents||[]).map(a=>'<div class="activity-card"><div class="agent">'+esc(a.agentType)+'</div><div class="time">'+fd(a.durationMs)+'</div><div class="count">'+a.taskCount+' task'+(a.taskCount===1?'':'s')+'</div></div>').join('')||'<div class="empty">No activity yet</div>';
222
+ const body=document.getElementById('activity-body');
223
+ body.innerHTML=activityRows.map((x,i)=>'<tr onclick="selectActivity('+i+')"><td>'+esc(x.agentType)+'</td><td class="task-col" title="'+esc(x.task)+'">'+esc(x.task.slice(0,90))+'</td><td>'+esc(x.projectName||'—')+'</td><td>'+new Date(x.startedAt).toLocaleString([],{month:'short',day:'numeric',hour:'2-digit',minute:'2-digit'})+'</td><td>'+fd(x.durationMs)+'</td></tr>').join('')||'<tr><td colspan="5" class="empty">No collected tasks yet</td></tr>';
224
+ document.getElementById('status').textContent=activityRows.length+' tasks · '+new Date().toLocaleTimeString();
225
+ }catch(e){document.getElementById('status').textContent='Error: '+e.message}
226
+ }
227
+ function selectActivity(i){
228
+ const x=activityRows[i];if(!x)return;
229
+ const merged=(x.provenance||[]).length>1?' · Swift + CLI merged':'';
230
+ let h='<div class="detail-header"><h2>'+esc(x.task)+'</h2><div class="meta-row"><span>'+esc(x.agentType)+'</span><span>'+esc(x.projectName||'No project')+'</span><span>'+new Date(x.startedAt).toLocaleString()+' · '+fd(x.durationMs)+'</span></div></div>';
231
+ h+='<div class="metric-grid"><div class="metric-card"><div class="val">'+x.turnCount+'</div><div class="lbl">Turns</div></div><div class="metric-card"><div class="val">'+((x.inputTokens||0)+(x.outputTokens||0)).toLocaleString()+'</div><div class="lbl">Tokens</div></div><div class="metric-card"><div class="val">'+(x.overallScore==null?'—':Math.round(x.overallScore*100)+'%')+'</div><div class="lbl">Score</div></div></div>';
232
+ h+='<div class="section" style="margin-top:16px"><div class="section-head">Collection</div><div style="color:var(--muted);line-height:1.6">Duplicates are collapsed by agent, native session, task index and time overlap. Source records remain unchanged'+merged+'.</div></div>';
233
+ document.getElementById('detail-panel').innerHTML=h;
234
+ }
235
+
203
236
  function populateFilters(runs){
204
237
  const sets={agent:new Set(),model:new Set(),project:new Set(),cat:new Set(),outcome:new Set()};
205
238
  for(const r of runs){
@@ -274,7 +307,7 @@ async function loadRuns(){
274
307
  try{
275
308
  const r=await fetch(api('/apme/runs?limit=50'));const d=await r.json();allRuns=(d.runs||[]).filter(r=>r.taskCategory!=='_empty'&&r.taskPrompt);
276
309
  populateFilters(allRuns);renderRuns(allRuns);
277
- document.getElementById('status').textContent=allRuns.length+' runs · '+new Date().toLocaleTimeString();
310
+ if(document.getElementById('panel-runs').classList.contains('visible'))document.getElementById('status').textContent=allRuns.length+' runs · '+new Date().toLocaleTimeString();
278
311
  }catch(e){document.getElementById('status').textContent='Error: '+e.message}
279
312
  }
280
313
 
@@ -799,11 +832,12 @@ function showTabById(n){
799
832
  if(btn)btn.click();
800
833
  }
801
834
 
802
- loadRuns();loadRecommend();loadScorecard();loadCategories();
835
+ loadActivity();loadRuns();loadRecommend();loadScorecard();loadCategories();
803
836
  setInterval(loadRuns,15000);setInterval(loadRecommend,30000);setInterval(loadScorecard,30000);setInterval(loadCategories,30000);
804
837
  // Tasks refresh only while its tab is up — the query is server-paged and there
805
838
  // is no reason to run it against the store every 15s in the background.
806
839
  setInterval(()=>{if(document.getElementById('panel-tasks').classList.contains('visible'))loadTasks(taskOffset)},15000);
840
+ setInterval(()=>{if(document.getElementById('panel-activity').classList.contains('visible'))loadActivity()},15000);
807
841
  </script>
808
842
  </body>
809
843
  </html>`;
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-html.js","sourceRoot":"","sources":["../../src/apme/dashboard-html.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,UAAU,iBAAiB;IAC/B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAgyBD,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"dashboard-html.js","sourceRoot":"","sources":["../../src/apme/dashboard-html.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,UAAU,iBAAiB;IAC/B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAk0BD,CAAC;AACT,CAAC"}
@@ -2,6 +2,7 @@
2
2
  * APME HTTP routes — mounted by the daemon's raw createServer handler.
3
3
  *
4
4
  * Routes:
5
+ * GET /apme/activity — merged Swift/CLI activity projection
5
6
  * GET /apme/runs?limit=&agent=&model= — recent runs with their evals
6
7
  * GET /apme/run/:id — single run detail (steps + evals)
7
8
  * GET /apme/scorecard — model scorecard (v_model_scorecard)
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/apme/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAK7C,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,UAAU,GAAG,IAAI,GACtB,OAAO,CAAC,OAAO,CAAC,CAgQlB;AAyCD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAMzG"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/apme/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM7C,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,UAAU,GAAG,IAAI,GACtB,OAAO,CAAC,OAAO,CAAC,CAwQlB;AAyCD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAMzG"}
package/dist/apme/http.js CHANGED
@@ -2,6 +2,7 @@
2
2
  * APME HTTP routes — mounted by the daemon's raw createServer handler.
3
3
  *
4
4
  * Routes:
5
+ * GET /apme/activity — merged Swift/CLI activity projection
5
6
  * GET /apme/runs?limit=&agent=&model= — recent runs with their evals
6
7
  * GET /apme/run/:id — single run detail (steps + evals)
7
8
  * GET /apme/scorecard — model scorecard (v_model_scorecard)
@@ -15,6 +16,7 @@
15
16
  import { loadApmeConfig } from './settings.js';
16
17
  import { apmeDashboardHtml } from './dashboard-html.js';
17
18
  import { EVAL_SCHEMA_VERSION } from '@agentdeck/shared';
19
+ import { activitySnapshotForStore } from './activity-history.js';
18
20
  export async function handleApmeRequest(req, res, apme) {
19
21
  const url = new URL(req.url ?? '/', `http://${req.headers.host ?? 'localhost'}`);
20
22
  if (!url.pathname.startsWith('/apme'))
@@ -58,6 +60,13 @@ export async function handleApmeRequest(req, res, apme) {
58
60
  sendJson(res, 200, { schema: EVAL_SCHEMA_VERSION, runs: withEvals });
59
61
  return true;
60
62
  }
63
+ // Content-minimized, daemon-owner-neutral history for the simple activity
64
+ // dashboard and Swift↔CLI handover cache. This is a derived projection;
65
+ // importing it never mutates APME source rows.
66
+ if (method === 'GET' && path === '/apme/activity') {
67
+ sendJson(res, 200, activitySnapshotForStore(apme.store));
68
+ return true;
69
+ }
61
70
  if (method === 'GET' && path.startsWith('/apme/run/')) {
62
71
  const id = path.slice('/apme/run/'.length);
63
72
  const run = apme.store.getRun(id);
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/apme/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/apme/http.ts"],"names":[],"mappings":"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"}
@@ -160,6 +160,26 @@ export declare function effectiveJudgeModelTag(cfg: ApmeJudgeConfig): string;
160
160
  * and request a model the MLX server has never heard of — silent failure.
161
161
  * Mirrors the `resetBackendCoupledFields` path inside `loadApmeConfig`. */
162
162
  export declare function sanitizeForMlx(judgeCfg: ApmeJudgeConfig): ApmeJudgeConfig;
163
+ /** Mirror of `sanitizeForMlx` for the reverse leg of the default chain.
164
+ * An MLX cfg carries an MLX `endpoint` (`http://127.0.0.1:8800`), and
165
+ * `callFoundationModels` treats a set endpoint as an explicit FM relay URL —
166
+ * so handing the cfg over unchanged POSTs the judge prompt at the MLX server
167
+ * we just failed to reach and never tries the on-device model at all. */
168
+ export declare function sanitizeForFoundationModels(judgeCfg: ApmeJudgeConfig): ApmeJudgeConfig;
169
+ /** Resolve which backend will ACTUALLY answer, for callers that must decide
170
+ * something before the call — the REVIEW runner sizes its diff budget and
171
+ * picks its prompt shape from the backend, and it refuses to run at all when
172
+ * the probe is not ready. Without this, flipping the default to `mlx` would
173
+ * have turned "no MLX server" from a working on-device review into a setup
174
+ * guide, i.e. removed a capability from every machine that has no MLX.
175
+ *
176
+ * Returns the configured backend when it probes ready; otherwise the fallback
177
+ * leg of the default chain when that probes ready; otherwise the configured
178
+ * backend's failed probe, so the caller reports what the user asked for. */
179
+ export declare function resolveJudgeBackend(cfg: ApmeJudgeConfig): Promise<{
180
+ cfg: ApmeJudgeConfig;
181
+ probe: JudgeBackendStatus;
182
+ }>;
163
183
  /** Result of a judge call that knows which backend ACTUALLY produced the
164
184
  * text — important when the FM→MLX fallback path runs, because the caller
165
185
  * needs the effective label (not the original cfg.backend) for the