@agentdeck/shared 1.1.0 → 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.
Files changed (40) hide show
  1. package/dist/action-fold.d.ts +71 -0
  2. package/dist/action-fold.d.ts.map +1 -0
  3. package/dist/action-fold.js +93 -0
  4. package/dist/action-fold.js.map +1 -0
  5. package/dist/connection-status.d.ts +11 -2
  6. package/dist/connection-status.d.ts.map +1 -1
  7. package/dist/connection-status.js +11 -2
  8. package/dist/connection-status.js.map +1 -1
  9. package/dist/d200h-layout.d.ts +4 -0
  10. package/dist/d200h-layout.d.ts.map +1 -1
  11. package/dist/d200h-layout.js +30 -10
  12. package/dist/d200h-layout.js.map +1 -1
  13. package/dist/esp32-boards.d.ts.map +1 -1
  14. package/dist/esp32-boards.js +34 -0
  15. package/dist/esp32-boards.js.map +1 -1
  16. package/dist/eval-schema.d.ts +58 -1
  17. package/dist/eval-schema.d.ts.map +1 -1
  18. package/dist/eval-schema.js +23 -0
  19. package/dist/eval-schema.js.map +1 -1
  20. package/dist/index.d.ts +2 -0
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +2 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/pairing-code.d.ts +69 -0
  25. package/dist/pairing-code.d.ts.map +1 -1
  26. package/dist/pairing-code.js +138 -0
  27. package/dist/pairing-code.js.map +1 -1
  28. package/dist/protocol.d.ts +33 -0
  29. package/dist/protocol.d.ts.map +1 -1
  30. package/dist/protocol.js +2 -0
  31. package/dist/protocol.js.map +1 -1
  32. package/dist/task-title.d.ts +51 -0
  33. package/dist/task-title.d.ts.map +1 -0
  34. package/dist/task-title.js +111 -0
  35. package/dist/task-title.js.map +1 -0
  36. package/dist/timeline-task-display.d.ts +8 -4
  37. package/dist/timeline-task-display.d.ts.map +1 -1
  38. package/dist/timeline-task-display.js +9 -3
  39. package/dist/timeline-task-display.js.map +1 -1
  40. package/package.json +1 -1
@@ -120,6 +120,40 @@ export const ESP32_BOARDS = [
120
120
  'Pick the download-mode port, not the running one.',
121
121
  ],
122
122
  },
123
+ {
124
+ id: 'nm_epd_420', env: 'nm_epd_420', name: 'RockBase NM-EPD-420',
125
+ display: '4.2" 400x300 tri-color e-ink GDEY042Z98',
126
+ aliases: [],
127
+ chipFamily: 'ESP32-S3', flashSize: '16MB', flashMode: 'dio', flashFreq: '80m',
128
+ bootloaderOffset: 0x0, uploadBaud: 115200, esptoolFlags: [],
129
+ before: 'default_reset', after: 'hard_reset', stub: true, nativeUsb: true,
130
+ ota: false,
131
+ webFlash: false, webFlashStatus: 'unverified',
132
+ webFlashVerified: '2026-08-30 · owned hardware identified as ESP32-S3 rev v0.2 with 16MB flash and 8MB PSRAM; full factory flash backed up before the first AgentDeck write. Browser flashing has not been measured.',
133
+ notes: [
134
+ 'Standard tri-color SKU: every admitted repaint is a full-window refresh; the firmware rate gate is 10 seconds.',
135
+ 'BOOT/GPIO0 is RTC wake + primary/PTT; USER/GPIO45 is the invariant escape control. ES8311 is full-duplex I2S and the speaker PA enable is GPIO41.',
136
+ 'The huge-app layout has one 3MB app slot; USB is the recovery/update path.',
137
+ ],
138
+ },
139
+ {
140
+ id: 'lilygo_epd47', env: 'lilygo_epd47', name: 'LilyGo T5 ePaper S3',
141
+ display: '4.7" 960x540 grayscale e-ink ED047TC2',
142
+ aliases: ['epd47'],
143
+ chipFamily: 'ESP32-S3', flashSize: '16MB', flashMode: 'dio', flashFreq: '80m',
144
+ bootloaderOffset: 0x0, uploadBaud: 115200, esptoolFlags: [],
145
+ before: 'default_reset', after: 'hard_reset', stub: true, nativeUsb: true,
146
+ ota: true,
147
+ webFlash: false, webFlashStatus: 'unverified',
148
+ webFlashVerified: '2026-08-30 · owned V2.4 N16R8 hardware identified as ESP32-S3 rev v0.2 with 16MB flash and 8MB embedded PSRAM; full factory flash backed up before the first AgentDeck write. The built image header and physical boot are DIO: forcing QIO caused a TG0WDT reset loop, while DIO recovered immediately and remained stable. Browser flashing has not been measured.',
149
+ notes: [
150
+ 'The official ED047TC2 driver consumes one persistent 4-bit 259200-byte framebuffer allocated once in PSRAM.',
151
+ 'Flash transport is DIO. Do not override the merged image header to QIO; the owned V2.4 unit watchdog-reset until reflashed as DIO.',
152
+ 'GPIO21 is the only app/wake button; GPIO0 is bootloader recovery and RST is hard reset. No onboard microphone, codec or speaker amplifier path.',
153
+ 'The GT911 touch panel is a separate 8-pin 0.5mm FPC into header P6, not part of the display tail. An unseated FPC is indistinguishable in firmware from a no-touch SKU or a dead controller: the full 0x08-0x77 sweep simply returns the PCF8563 RTC at 0x51 alone. Reseat P6 and power-cycle 3V3 before treating touch silence as a firmware problem.',
154
+ 'The 16MB layout carries two 6.25MB OTA slots; USB remains the recovery path.',
155
+ ],
156
+ },
123
157
  {
124
158
  id: 'ttgo_t_display', env: 'ttgo', name: 'TTGO T-Display', display: '1.14" 240x135 ST7789',
125
159
  aliases: ['ttgo'],
@@ -1 +1 @@
1
- {"version":3,"file":"esp32-boards.js","sourceRoot":"","sources":["../src/esp32-boards.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"esp32-boards.js","sourceRoot":"","sources":["../src/esp32-boards.ts"],"names":[],"mappings":"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"}
@@ -332,26 +332,83 @@ export interface ApmeTaskListRow extends ApmeTaskRow {
332
332
  /** The task's own first prompt; falls back to the run prompt when the task
333
333
  * predates per-turn prompt capture. */
334
334
  firstPrompt: string | null;
335
+ /** The task's own first turn prompt with NO run-prompt fallback — the only
336
+ * legitimate input to title derivation (a fallback would name task 2+ of a
337
+ * split run after task 0's intent). */
338
+ ownFirstPrompt: string | null;
335
339
  turnCount: number;
336
340
  /** Turns whose assistant reply was archived. `turnCount - answeredTurns > 0`
337
341
  * marks a unit the judge can only partly see. */
338
342
  answeredTurns: number;
339
343
  eventCount: number;
340
344
  toolCount: number;
345
+ /** Sum of files modified + created across the task's turns. */
346
+ filesTouched: number;
341
347
  evalCount: number;
342
348
  overallScore: number | null;
349
+ /** True when the row matches the Work board's attention bucket (orphaned
350
+ * boundary, unarchived reply on a closed task, or a red-band score). The
351
+ * flag is computed by the same SQL expression that filters the Attention
352
+ * tab, so a striped row and the tab's membership can never disagree. */
353
+ attention: boolean;
354
+ }
355
+ /** Generic idle-gap boundary, in ms: a session whose last turn CLOSED this
356
+ * long ago with no new prompt closes its active task with
357
+ * `boundary_signal='idle_gap'`. Shared because BOTH daemons enforce it
358
+ * (Node `ApmeCollector.armIdleGapTimer`, Swift `ApmeCollector.idleGapSec` —
359
+ * the Swift value is this constant in seconds; change the two together).
360
+ *
361
+ * Why 15 minutes (measured 2026-08-28 on the real store): 96% of claude-code
362
+ * inter-turn gaps (87% codex) are under 15 min, and nearly everything above
363
+ * is also past the 30-minute orphan reaper — already split today, just
364
+ * mislabeled `orphaned` and judged hours late (codex tasks averaged 2.4 h
365
+ * open; 10% ever judged). */
366
+ export declare const AGENT_IDLE_GAP_MS = 900000;
367
+ /** Attention is triage, so it is bounded by recency: measured on the real
368
+ * store (2026-08-28), an unwindowed bucket held 1,412 of 1,519 tasks — the
369
+ * entire pre-idle-gap orphan history — which is an archive, not a to-do
370
+ * list. Both daemons build the same attention SQL from this window (Swift's
371
+ * `ApmeStore.taskAttentionWindowMs` literal is grep-pinned to this value by
372
+ * apme-display-rules-sync.test.ts; change the two together). */
373
+ export declare const TASK_ATTENTION_WINDOW_MS: number;
374
+ /** The judged-score red band that pulls a recent task into the attention
375
+ * bucket (`overall < this`). Same cross-daemon contract and grep gate as
376
+ * the window above (Swift: `ApmeStore.taskAttentionRedScore`). */
377
+ export declare const TASK_ATTENTION_RED_SCORE = 0.4;
378
+ /** Work-board lifecycle buckets. `attention` is a cross-cutting triage bucket;
379
+ * the other four partition a task's lifecycle. One SQL definition per bucket
380
+ * lives in the store (`TASK_VIEW_SQL`) — filter, row flag and tab badge all
381
+ * read it. */
382
+ export type ApmeTaskView = 'attention' | 'inprogress' | 'judged' | 'reported' | 'orphaned';
383
+ /** A task list row enriched at the HTTP layer with the display projections the
384
+ * Work board renders — the intent-derived title (`deriveTaskTitle`) and the
385
+ * folded action line (`foldActionCounts`). Kept out of `ApmeTaskListRow` so
386
+ * the store returns raw facts and the projections stay in their SSOTs. */
387
+ export interface ApmeWorkBoardRow extends ApmeTaskListRow {
388
+ /** Intent title from the task's first prompt, or null (render `Task N`). */
389
+ title: string | null;
390
+ /** `Edit×9 Read×24 · 2 files`, or null when there is nothing to fold. */
391
+ actionFold: string | null;
392
+ /** Subagent dispatches / agent-to-agent messages this task made
393
+ * (`agentCoordinationSummary`), or null for a plain single-agent task. */
394
+ coordination: {
395
+ dispatches: number;
396
+ messages: number;
397
+ } | null;
343
398
  }
344
399
  export interface ApmeTaskListResponse extends ApmeApiEnvelope {
345
400
  total: number;
346
401
  limit: number;
347
402
  offset: number;
348
- tasks: ApmeTaskListRow[];
403
+ tasks: ApmeWorkBoardRow[];
349
404
  facets: {
350
405
  agents: string[];
351
406
  projects: string[];
352
407
  categories: string[];
353
408
  outcomes: string[];
354
409
  };
410
+ /** Tab badges for the Work board — same bucket definitions as `view`. */
411
+ viewCounts: Record<'all' | ApmeTaskView, number>;
355
412
  }
356
413
  export interface ApmeRunDetailResponse extends ApmeApiEnvelope {
357
414
  run: ApmeRunRow;
@@ -1 +1 @@
1
- {"version":3,"file":"eval-schema.d.ts","sourceRoot":"","sources":["../src/eval-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eval-schema.d.ts","sourceRoot":"","sources":["../src/eval-schema.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,29 @@ export function stopDeliveryLoss(row) {
29
29
  const lost = row.syntheticStop + row.nextPrompt;
30
30
  return { adjudicated, lost, ratio: adjudicated > 0 ? lost / adjudicated : null };
31
31
  }
32
+ /** Generic idle-gap boundary, in ms: a session whose last turn CLOSED this
33
+ * long ago with no new prompt closes its active task with
34
+ * `boundary_signal='idle_gap'`. Shared because BOTH daemons enforce it
35
+ * (Node `ApmeCollector.armIdleGapTimer`, Swift `ApmeCollector.idleGapSec` —
36
+ * the Swift value is this constant in seconds; change the two together).
37
+ *
38
+ * Why 15 minutes (measured 2026-08-28 on the real store): 96% of claude-code
39
+ * inter-turn gaps (87% codex) are under 15 min, and nearly everything above
40
+ * is also past the 30-minute orphan reaper — already split today, just
41
+ * mislabeled `orphaned` and judged hours late (codex tasks averaged 2.4 h
42
+ * open; 10% ever judged). */
43
+ export const AGENT_IDLE_GAP_MS = 900_000;
44
+ /** Attention is triage, so it is bounded by recency: measured on the real
45
+ * store (2026-08-28), an unwindowed bucket held 1,412 of 1,519 tasks — the
46
+ * entire pre-idle-gap orphan history — which is an archive, not a to-do
47
+ * list. Both daemons build the same attention SQL from this window (Swift's
48
+ * `ApmeStore.taskAttentionWindowMs` literal is grep-pinned to this value by
49
+ * apme-display-rules-sync.test.ts; change the two together). */
50
+ export const TASK_ATTENTION_WINDOW_MS = 7 * 24 * 60 * 60 * 1000;
51
+ /** The judged-score red band that pulls a recent task into the attention
52
+ * bucket (`overall < this`). Same cross-daemon contract and grep gate as
53
+ * the window above (Swift: `ApmeStore.taskAttentionRedScore`). */
54
+ export const TASK_ATTENTION_RED_SCORE = 0.4;
32
55
  // ─── Helpers ──────────────────────────────────────────────────────────────────
33
56
  /** Wrap any payload with the schema version envelope. Used by the bridge's
34
57
  * HTTP routes so callers don't have to remember the constant. */
@@ -1 +1 @@
1
- {"version":3,"file":"eval-schema.js","sourceRoot":"","sources":["../src/eval-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,kFAAkF;AAClF,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAA4B,CAAC;AAkThE;;;;;;;;;mBASmB;AACnB,MAAM,UAAU,gBAAgB,CAAC,GAAwB;IACvD,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC;IAClE,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC;IAChD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACnF,CAAC;AAsFD,iFAAiF;AAEjF;kEACkE;AAClE,MAAM,UAAU,kBAAkB,CAChC,IAAO;IAEP,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI,EAAE,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"eval-schema.js","sourceRoot":"","sources":["../src/eval-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,kFAAkF;AAClF,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAA4B,CAAC;AAkThE;;;;;;;;;mBASmB;AACnB,MAAM,UAAU,gBAAgB,CAAC,GAAwB;IACvD,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC;IAClE,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC;IAChD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACnF,CAAC;AAmED;;;;;;;;;;8BAU8B;AAC9B,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC;AAEzC;;;;;iEAKiE;AACjE,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEhE;;mEAEmE;AACnE,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAsD5C,iFAAiF;AAEjF;kEACkE;AAClE,MAAM,UAAU,kBAAkB,CAChC,IAAO;IAEP,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI,EAAE,CAAC;AAClD,CAAC"}
package/dist/index.d.ts CHANGED
@@ -17,6 +17,8 @@ export * from './model-provider.js';
17
17
  export * from './timeline-icons.js';
18
18
  export * from './timeline-label.js';
19
19
  export * from './timeline-task-display.js';
20
+ export * from './task-title.js';
21
+ export * from './action-fold.js';
20
22
  export * from './timeline-markdown.js';
21
23
  export * from './format-utils.js';
22
24
  export * from './timeline-summarizer.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC"}
package/dist/index.js CHANGED
@@ -17,6 +17,8 @@ export * from './model-provider.js';
17
17
  export * from './timeline-icons.js';
18
18
  export * from './timeline-label.js';
19
19
  export * from './timeline-task-display.js';
20
+ export * from './task-title.js';
21
+ export * from './action-fold.js';
20
22
  export * from './timeline-markdown.js';
21
23
  export * from './format-utils.js';
22
24
  export * from './timeline-summarizer.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC"}
@@ -99,6 +99,75 @@ export declare function isPairingCode(code: unknown): boolean;
99
99
  * Read aloud and typed on a reader's keyboard, so it is chunked. The chunk is
100
100
  * half the code, which for six digits is the same grouping a phone number uses.
101
101
  */
102
+ /**
103
+ * The daemon port a bare address means, mirroring the canonical port the daemon
104
+ * prefers. Typing an address is the fallback for a device that cannot discover
105
+ * one, and on that path nobody is around to notice a port typo — so the default
106
+ * has to be the port the daemon actually wants, not a guess.
107
+ */
108
+ /**
109
+ * Handshake header a client uses to say WHICH device it is.
110
+ *
111
+ * Approval needs an identity, and until now the only one available was the
112
+ * source address: the decision happens at the WebSocket upgrade, before any
113
+ * frame, so `client_register` — where a device says its name — has not arrived
114
+ * yet. On a LAN an address is a weak but non-trivial identity. Behind NAT it
115
+ * stops being an identity at all: every device shares one source address, so
116
+ * approving one approves all of them. That is the failure this closes.
117
+ *
118
+ * A header rather than a query parameter so it stays out of URLs, which get
119
+ * logged, copied into bug reports, and pasted into chat.
120
+ *
121
+ * What this is NOT: proof. The link is plaintext `ws://`, so anything in the
122
+ * handshake is replayable by a passive observer on the same segment — exactly
123
+ * as true of the existing `?token=`, which every paired device already carries
124
+ * that way. So this is no weaker than what ships today, and it buys the two
125
+ * things an address cannot: devices behind one NAT are told apart, and one
126
+ * device can be revoked without rotating the token the whole fleet shares.
127
+ * Making it unforgeable needs a challenge-response over a channel that is not
128
+ * plaintext; that is a separate piece of work and this does not pretend to it.
129
+ */
130
+ export declare const DEVICE_ID_HEADER = "x-agentdeck-device";
131
+ /** Characters in a device id — 128 bits, the same shape as the auth token. */
132
+ export declare const DEVICE_ID_LENGTH = 32;
133
+ /**
134
+ * Reduce a client-supplied device id to its canonical form, or null.
135
+ *
136
+ * Strict because this string is a map key on the daemon and a row the operator
137
+ * approves: accepting a loose one would let a client vary its own identity
138
+ * between connects (case, padding) and appear as several devices, which is
139
+ * noise in the approval list and a way to outlive a revocation.
140
+ */
141
+ export declare function normalizeDeviceId(input: unknown): string | null;
142
+ /** Short form for a row the operator reads — never used as a key. */
143
+ export declare function shortDeviceId(id: string): string;
144
+ export declare const DEFAULT_DAEMON_PORT = 9120;
145
+ export interface DaemonAddress {
146
+ host: string;
147
+ port: number;
148
+ }
149
+ /**
150
+ * Parse an operator-typed daemon address into host + port.
151
+ *
152
+ * This exists because the pairing CODE path is gated on discovery: a client
153
+ * spends a code against a daemon it found over mDNS, so on a network where
154
+ * multicast is filtered — which is the normal state of a guest SSID, an
155
+ * isolating AP, or a segmented VLAN — the six-digit path is unreachable by
156
+ * exactly the camera-less devices it was built for. Letting the address be
157
+ * typed restores it without reintroducing the 32-character token those devices
158
+ * were stuck copying.
159
+ *
160
+ * Shared rather than written per client because the two surfaces must agree on
161
+ * what a bare `192.168.1.5` means. If Android defaulted to 9120 and iOS to
162
+ * something else, the same string typed on two devices in the same room would
163
+ * reach different daemons, and the failure would look like a bad code.
164
+ *
165
+ * Deliberately permissive about what it strips (scheme, path, query) and strict
166
+ * about what it accepts (a non-empty host, a port in range): people paste the
167
+ * URL they were shown, and a rejected paste is a dead end on a device with a
168
+ * bad keyboard.
169
+ */
170
+ export declare function parseDaemonAddress(input: unknown): DaemonAddress | null;
102
171
  export declare function formatPairingCode(code: string): string;
103
172
  /**
104
173
  * The whole redemption decision, as a pure function of the window and the
@@ -1 +1 @@
1
- {"version":3,"file":"pairing-code.d.ts","sourceRoot":"","sources":["../src/pairing-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,6DAA6D;AAC7D,eAAO,MAAM,iBAAiB,SAAU,CAAC;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,0EAA0E;AAC1E,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,8EAA8E;AAC9E,MAAM,WAAW,qBAAqB;IACpC,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,MAAM,wBAAwB;AAClC,0CAA0C;AACxC,UAAU;AACZ,4EAA4E;GAC1E,WAAW;AACb,8CAA8C;GAC5C,SAAS;AACX,oDAAoD;GAClD,WAAW;AACb,wDAAwD;GACtD,UAAU;AACZ,sEAAsE;GACpE,WAAW,CAAC;AAEhB,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,wBAAwB,CAAC;IAClC;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0EAA0E;IAC1E,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAKlE;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAEpD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKtD;AAUD;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,qBAAqB,GAAG,IAAI,EACpC,SAAS,EAAE,OAAO,EAClB,GAAG,EAAE,MAAM,GACV,uBAAuB,CA4BzB;AAED,kFAAkF;AAClF,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGvG"}
1
+ {"version":3,"file":"pairing-code.d.ts","sourceRoot":"","sources":["../src/pairing-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,6DAA6D;AAC7D,eAAO,MAAM,iBAAiB,SAAU,CAAC;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,0EAA0E;AAC1E,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,8EAA8E;AAC9E,MAAM,WAAW,qBAAqB;IACpC,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,MAAM,wBAAwB;AAClC,0CAA0C;AACxC,UAAU;AACZ,4EAA4E;GAC1E,WAAW;AACb,8CAA8C;GAC5C,SAAS;AACX,oDAAoD;GAClD,WAAW;AACb,wDAAwD;GACtD,UAAU;AACZ,sEAAsE;GACpE,WAAW,CAAC;AAEhB,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,wBAAwB,CAAC;IAClC;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0EAA0E;IAC1E,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAKlE;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAEpD;AAED;;;;;GAKG;AACH;;;;;GAKG;AACH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AAErD,8EAA8E;AAC9E,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAK/D;AAED,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CAiDvE;AAQD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKtD;AAUD;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,qBAAqB,GAAG,IAAI,EACpC,SAAS,EAAE,OAAO,EAClB,GAAG,EAAE,MAAM,GACV,uBAAuB,CA4BzB;AAED,kFAAkF;AAClF,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGvG"}
@@ -71,6 +71,144 @@ export function isPairingCode(code) {
71
71
  * Read aloud and typed on a reader's keyboard, so it is chunked. The chunk is
72
72
  * half the code, which for six digits is the same grouping a phone number uses.
73
73
  */
74
+ /**
75
+ * The daemon port a bare address means, mirroring the canonical port the daemon
76
+ * prefers. Typing an address is the fallback for a device that cannot discover
77
+ * one, and on that path nobody is around to notice a port typo — so the default
78
+ * has to be the port the daemon actually wants, not a guess.
79
+ */
80
+ /**
81
+ * Handshake header a client uses to say WHICH device it is.
82
+ *
83
+ * Approval needs an identity, and until now the only one available was the
84
+ * source address: the decision happens at the WebSocket upgrade, before any
85
+ * frame, so `client_register` — where a device says its name — has not arrived
86
+ * yet. On a LAN an address is a weak but non-trivial identity. Behind NAT it
87
+ * stops being an identity at all: every device shares one source address, so
88
+ * approving one approves all of them. That is the failure this closes.
89
+ *
90
+ * A header rather than a query parameter so it stays out of URLs, which get
91
+ * logged, copied into bug reports, and pasted into chat.
92
+ *
93
+ * What this is NOT: proof. The link is plaintext `ws://`, so anything in the
94
+ * handshake is replayable by a passive observer on the same segment — exactly
95
+ * as true of the existing `?token=`, which every paired device already carries
96
+ * that way. So this is no weaker than what ships today, and it buys the two
97
+ * things an address cannot: devices behind one NAT are told apart, and one
98
+ * device can be revoked without rotating the token the whole fleet shares.
99
+ * Making it unforgeable needs a challenge-response over a channel that is not
100
+ * plaintext; that is a separate piece of work and this does not pretend to it.
101
+ */
102
+ export const DEVICE_ID_HEADER = 'x-agentdeck-device';
103
+ /** Characters in a device id — 128 bits, the same shape as the auth token. */
104
+ export const DEVICE_ID_LENGTH = 32;
105
+ /**
106
+ * Reduce a client-supplied device id to its canonical form, or null.
107
+ *
108
+ * Strict because this string is a map key on the daemon and a row the operator
109
+ * approves: accepting a loose one would let a client vary its own identity
110
+ * between connects (case, padding) and appear as several devices, which is
111
+ * noise in the approval list and a way to outlive a revocation.
112
+ */
113
+ export function normalizeDeviceId(input) {
114
+ if (typeof input !== 'string')
115
+ return null;
116
+ const trimmed = input.trim().toLowerCase();
117
+ if (trimmed.length !== DEVICE_ID_LENGTH)
118
+ return null;
119
+ return /^[0-9a-f]+$/.test(trimmed) ? trimmed : null;
120
+ }
121
+ /** Short form for a row the operator reads — never used as a key. */
122
+ export function shortDeviceId(id) {
123
+ const normalized = normalizeDeviceId(id);
124
+ return normalized ? normalized.slice(0, 8) : id;
125
+ }
126
+ export const DEFAULT_DAEMON_PORT = 9120;
127
+ /**
128
+ * Parse an operator-typed daemon address into host + port.
129
+ *
130
+ * This exists because the pairing CODE path is gated on discovery: a client
131
+ * spends a code against a daemon it found over mDNS, so on a network where
132
+ * multicast is filtered — which is the normal state of a guest SSID, an
133
+ * isolating AP, or a segmented VLAN — the six-digit path is unreachable by
134
+ * exactly the camera-less devices it was built for. Letting the address be
135
+ * typed restores it without reintroducing the 32-character token those devices
136
+ * were stuck copying.
137
+ *
138
+ * Shared rather than written per client because the two surfaces must agree on
139
+ * what a bare `192.168.1.5` means. If Android defaulted to 9120 and iOS to
140
+ * something else, the same string typed on two devices in the same room would
141
+ * reach different daemons, and the failure would look like a bad code.
142
+ *
143
+ * Deliberately permissive about what it strips (scheme, path, query) and strict
144
+ * about what it accepts (a non-empty host, a port in range): people paste the
145
+ * URL they were shown, and a rejected paste is a dead end on a device with a
146
+ * bad keyboard.
147
+ */
148
+ export function parseDaemonAddress(input) {
149
+ if (typeof input !== 'string')
150
+ return null;
151
+ let text = input.trim();
152
+ if (!text)
153
+ return null;
154
+ const scheme = text.indexOf('://');
155
+ if (scheme >= 0)
156
+ text = text.slice(scheme + 3);
157
+ // Anything after the authority is not ours to interpret — notably `?token=`,
158
+ // which someone pasting the QR window's URL will bring along.
159
+ for (const cut of ['/', '?', '#']) {
160
+ const at = text.indexOf(cut);
161
+ if (at >= 0)
162
+ text = text.slice(0, at);
163
+ }
164
+ if (!text)
165
+ return null;
166
+ let host = text;
167
+ let port = DEFAULT_DAEMON_PORT;
168
+ if (text.startsWith('[')) {
169
+ // Bracketed IPv6 literal: `[::1]` or `[::1]:9120`.
170
+ const close = text.indexOf(']');
171
+ if (close < 0)
172
+ return null;
173
+ host = text.slice(1, close);
174
+ const rest = text.slice(close + 1);
175
+ if (rest.startsWith(':')) {
176
+ const parsed = parsePort(rest.slice(1));
177
+ if (parsed === null)
178
+ return null;
179
+ port = parsed;
180
+ }
181
+ else if (rest.length > 0) {
182
+ return null;
183
+ }
184
+ }
185
+ else {
186
+ const colons = text.split(':').length - 1;
187
+ if (colons === 1) {
188
+ const at = text.lastIndexOf(':');
189
+ const parsed = parsePort(text.slice(at + 1));
190
+ if (parsed === null)
191
+ return null;
192
+ host = text.slice(0, at);
193
+ port = parsed;
194
+ }
195
+ else if (colons > 1) {
196
+ // A bare IPv6 literal carries colons of its own and no port, so a
197
+ // trailing `:9120` here is indistinguishable from part of the address.
198
+ // Treat the whole thing as the host and take the default port.
199
+ host = text;
200
+ }
201
+ }
202
+ if (!host)
203
+ return null;
204
+ return { host, port };
205
+ }
206
+ function parsePort(text) {
207
+ if (!/^[0-9]{1,5}$/.test(text))
208
+ return null;
209
+ const value = Number(text);
210
+ return value >= 1 && value <= 65535 ? value : null;
211
+ }
74
212
  export function formatPairingCode(code) {
75
213
  const normalized = normalizePairingCode(code);
76
214
  if (!normalized)
@@ -1 +1 @@
1
- {"version":3,"file":"pairing-code.js","sourceRoot":"","sources":["../src/pairing-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,yEAAyE;AACzE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC,6DAA6D;AAC7D,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAE7C,0EAA0E;AAC1E,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AA0C7C;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,mBAAmB;QAAE,OAAO,IAAI,CAAC;IACvD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,aAAa,CAAC,IAAa;IACzC,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;AACzE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,IAAI,GAAG,mBAAmB,GAAG,CAAC,CAAC;IACrC,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AAClE,CAAC;AAED,qFAAqF;AACrF,SAAS,UAAU,CAAC,CAAS,EAAE,CAAS;IACtC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7E,OAAO,IAAI,KAAK,CAAC,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAoC,EACpC,SAAkB,EAClB,GAAW;IAEX,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACpF,CAAC;IACD,IAAI,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QAC5B,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACjF,CAAC;IACD,IAAI,MAAM,CAAC,oBAAoB,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,IAAI,2BAA2B,EAAE,CAAC;QAC7F,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACnF,CAAC;IAED,MAAM,IAAI,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,cAAc,GAAG,2BAA2B,GAAG,MAAM,CAAC,cAAc,CAAC;IAC3E,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACjG,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,iBAAiB,GAAG,cAAc,GAAG,CAAC,CAAC;QAC7C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,IAAI,CAAC,EAAE,CAAC;IACjG,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAC;IACxD,OAAO;QACL,OAAO,EAAE,UAAU;QACnB,MAAM,EAAE,GAAG;QACX,iBAAiB,EAAE,cAAc;QACjC,MAAM,EAAE,eAAe,IAAI,CAAC;KAC7B,CAAC;AACJ,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,6BAA6B,CAAC,MAAoC,EAAE,GAAW;IAC7F,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC;IACtB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"pairing-code.js","sourceRoot":"","sources":["../src/pairing-code.ts"],"names":[],"mappings":"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"}
@@ -613,6 +613,10 @@ export interface DeviceInfoMessage {
613
613
  otaSlotSize?: number;
614
614
  otaFreeSketchSpace?: number;
615
615
  otaReason?: string;
616
+ /** Actual physical panel refreshes since boot; absent on non-e-ink/legacy firmware. */
617
+ repaintCount?: number;
618
+ /** Hard anti-ghost/full-waveform subset of repaintCount since boot. */
619
+ fullRefreshCount?: number;
616
620
  /**
617
621
  * Peripheral capability advertisement (docs/esp32-companion-concepts.md
618
622
  * § Peripheral primitives) — what this board can sense/actuate beyond its
@@ -1001,6 +1005,27 @@ export interface SurfaceFirmwareAdvert {
1001
1005
  size: number;
1002
1006
  md5: string;
1003
1007
  }
1008
+ /** Immutable, licensed offline course package advertised by a Surface
1009
+ * provider. The binary body is retrieved separately from `/learning/pack` so
1010
+ * an unchanged Card Feed stays small. */
1011
+ export interface SurfaceLearningPackAdvert {
1012
+ id: string;
1013
+ version: number;
1014
+ format: number;
1015
+ size: number;
1016
+ md5: string;
1017
+ licenseSpdx: string;
1018
+ }
1019
+ /** Immutable OFL font bundle used by portable readers for automatic script
1020
+ * coverage. The binary body is retrieved separately from `/fonts/pack`. */
1021
+ export interface SurfaceFontPackAdvert {
1022
+ id: string;
1023
+ version: number;
1024
+ format: number;
1025
+ size: number;
1026
+ md5: string;
1027
+ licenseSpdx: string;
1028
+ }
1004
1029
  export interface CardFeedResponse {
1005
1030
  type: 'card_feed';
1006
1031
  /** Contract revision — bump on breaking shape changes. */
@@ -1033,6 +1058,12 @@ export interface CardFeedResponse {
1033
1058
  size: number;
1034
1059
  md5: string;
1035
1060
  };
1061
+ /** Present on full and unchanged responses when the client negotiated
1062
+ * `learning.pack.update`. */
1063
+ learningPack?: SurfaceLearningPackAdvert;
1064
+ /** Present on full and unchanged responses when the client negotiated
1065
+ * `font.pack.update`. */
1066
+ fontPack?: SurfaceFontPackAdvert;
1036
1067
  cards: FeedCard[];
1037
1068
  }
1038
1069
  /** One decision recorded on-device, replayed via `POST /outbox`. The fields
@@ -1090,6 +1121,8 @@ export interface OutboxPushResponse {
1090
1121
  /** HTTP paths on the daemon port (BRIDGE_HTTP_PORT). */
1091
1122
  export declare const CARD_FEED_PATH = "/feed";
1092
1123
  export declare const CARD_OUTBOX_PATH = "/outbox";
1124
+ export declare const LEARNING_PACK_PATH = "/learning/pack";
1125
+ export declare const FONT_PACK_PATH = "/fonts/pack";
1093
1126
  /**
1094
1127
  * Glance Frame (M8) — the daemon-rendered pixel form of the glance, for
1095
1128
  * clients that display rather than lay out. `GET /glance-frame?board=<id>`