@agentdeck/bridge 0.2.3 → 1.0.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 (185) hide show
  1. package/assets/fm-helper/agentdeck-fm-helper +0 -0
  2. package/dist/apme/collector.d.ts +4 -0
  3. package/dist/apme/collector.d.ts.map +1 -1
  4. package/dist/apme/collector.js +1 -0
  5. package/dist/apme/collector.js.map +1 -1
  6. package/dist/apme/dashboard-html.d.ts.map +1 -1
  7. package/dist/apme/dashboard-html.js +30 -0
  8. package/dist/apme/dashboard-html.js.map +1 -1
  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/index.d.ts.map +1 -1
  13. package/dist/apme/index.js +14 -3
  14. package/dist/apme/index.js.map +1 -1
  15. package/dist/apme/judge-detect.d.ts +26 -0
  16. package/dist/apme/judge-detect.d.ts.map +1 -0
  17. package/dist/apme/judge-detect.js +69 -0
  18. package/dist/apme/judge-detect.js.map +1 -0
  19. package/dist/apme/runner.d.ts +7 -0
  20. package/dist/apme/runner.d.ts.map +1 -1
  21. package/dist/apme/runner.js +188 -33
  22. package/dist/apme/runner.js.map +1 -1
  23. package/dist/apme/settings.d.ts +10 -8
  24. package/dist/apme/settings.d.ts.map +1 -1
  25. package/dist/apme/settings.js +11 -16
  26. package/dist/apme/settings.js.map +1 -1
  27. package/dist/awaiting-overlay.d.ts +17 -4
  28. package/dist/awaiting-overlay.d.ts.map +1 -1
  29. package/dist/awaiting-overlay.js +39 -8
  30. package/dist/awaiting-overlay.js.map +1 -1
  31. package/dist/bridge-core.d.ts +10 -0
  32. package/dist/bridge-core.d.ts.map +1 -1
  33. package/dist/bridge-core.js +50 -0
  34. package/dist/bridge-core.js.map +1 -1
  35. package/dist/claude-permission-rules.d.ts +55 -0
  36. package/dist/claude-permission-rules.d.ts.map +1 -0
  37. package/dist/claude-permission-rules.js +197 -0
  38. package/dist/claude-permission-rules.js.map +1 -0
  39. package/dist/cli.d.ts.map +1 -1
  40. package/dist/cli.js +10 -1
  41. package/dist/cli.js.map +1 -1
  42. package/dist/d200h/hid-protocol.d.ts +62 -0
  43. package/dist/d200h/hid-protocol.d.ts.map +1 -0
  44. package/dist/d200h/hid-protocol.js +124 -0
  45. package/dist/d200h/hid-protocol.js.map +1 -0
  46. package/dist/d200h/image-renderer.d.ts +24 -0
  47. package/dist/d200h/image-renderer.d.ts.map +1 -0
  48. package/dist/d200h/image-renderer.js +321 -0
  49. package/dist/d200h/image-renderer.js.map +1 -0
  50. package/dist/daemon-server.d.ts.map +1 -1
  51. package/dist/daemon-server.js +374 -26
  52. package/dist/daemon-server.js.map +1 -1
  53. package/dist/daemon.js +1 -1
  54. package/dist/esp32-serial.d.ts +30 -0
  55. package/dist/esp32-serial.d.ts.map +1 -1
  56. package/dist/esp32-serial.js +148 -11
  57. package/dist/esp32-serial.js.map +1 -1
  58. package/dist/fallback-task-timeline.d.ts.map +1 -1
  59. package/dist/fallback-task-timeline.js +9 -2
  60. package/dist/fallback-task-timeline.js.map +1 -1
  61. package/dist/hook-server.d.ts.map +1 -1
  62. package/dist/hook-server.js +6 -5
  63. package/dist/hook-server.js.map +1 -1
  64. package/dist/idotmatrix/idotmatrix-daemon-sync.js +2 -2
  65. package/dist/idotmatrix/idotmatrix-daemon-sync.js.map +1 -1
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +2 -0
  68. package/dist/index.js.map +1 -1
  69. package/dist/logger.d.ts +3 -1
  70. package/dist/logger.d.ts.map +1 -1
  71. package/dist/logger.js +6 -2
  72. package/dist/logger.js.map +1 -1
  73. package/dist/model-catalog.d.ts +1 -1
  74. package/dist/model-catalog.d.ts.map +1 -1
  75. package/dist/model-catalog.js +2 -4
  76. package/dist/model-catalog.js.map +1 -1
  77. package/dist/modules/d200h-module.d.ts +65 -0
  78. package/dist/modules/d200h-module.d.ts.map +1 -0
  79. package/dist/modules/d200h-module.js +495 -0
  80. package/dist/modules/d200h-module.js.map +1 -0
  81. package/dist/modules/d200h-renderer.d.ts +7 -0
  82. package/dist/modules/d200h-renderer.d.ts.map +1 -0
  83. package/dist/modules/d200h-renderer.js +321 -0
  84. package/dist/modules/d200h-renderer.js.map +1 -0
  85. package/dist/modules/trmnl-module.d.ts +38 -0
  86. package/dist/modules/trmnl-module.d.ts.map +1 -0
  87. package/dist/modules/trmnl-module.js +111 -0
  88. package/dist/modules/trmnl-module.js.map +1 -0
  89. package/dist/observed-steering.d.ts +93 -0
  90. package/dist/observed-steering.d.ts.map +1 -0
  91. package/dist/observed-steering.js +247 -0
  92. package/dist/observed-steering.js.map +1 -0
  93. package/dist/opencode-steering.d.ts +36 -0
  94. package/dist/opencode-steering.d.ts.map +1 -0
  95. package/dist/opencode-steering.js +84 -0
  96. package/dist/opencode-steering.js.map +1 -0
  97. package/dist/output-parser.d.ts.map +1 -1
  98. package/dist/output-parser.js +48 -10
  99. package/dist/output-parser.js.map +1 -1
  100. package/dist/passive-observer.d.ts +6 -0
  101. package/dist/passive-observer.d.ts.map +1 -1
  102. package/dist/passive-observer.js +31 -1
  103. package/dist/passive-observer.js.map +1 -1
  104. package/dist/permission-resolver.d.ts +13 -5
  105. package/dist/permission-resolver.d.ts.map +1 -1
  106. package/dist/permission-resolver.js +18 -9
  107. package/dist/permission-resolver.js.map +1 -1
  108. package/dist/pixoo/micro-glyphs.d.ts +10 -41
  109. package/dist/pixoo/micro-glyphs.d.ts.map +1 -1
  110. package/dist/pixoo/micro-glyphs.js +130 -263
  111. package/dist/pixoo/micro-glyphs.js.map +1 -1
  112. package/dist/pixoo/official-dot-glyphs.generated.d.ts +8 -0
  113. package/dist/pixoo/official-dot-glyphs.generated.d.ts.map +1 -0
  114. package/dist/pixoo/official-dot-glyphs.generated.js +247 -0
  115. package/dist/pixoo/official-dot-glyphs.generated.js.map +1 -0
  116. package/dist/pixoo/pixoo-bridge.d.ts +14 -6
  117. package/dist/pixoo/pixoo-bridge.d.ts.map +1 -1
  118. package/dist/pixoo/pixoo-bridge.js +63 -39
  119. package/dist/pixoo/pixoo-bridge.js.map +1 -1
  120. package/dist/pixoo/pixoo-renderer.d.ts +21 -2
  121. package/dist/pixoo/pixoo-renderer.d.ts.map +1 -1
  122. package/dist/pixoo/pixoo-renderer.js +401 -132
  123. package/dist/pixoo/pixoo-renderer.js.map +1 -1
  124. package/dist/pixoo/pixoo-sprites.d.ts +24 -0
  125. package/dist/pixoo/pixoo-sprites.d.ts.map +1 -1
  126. package/dist/pixoo/pixoo-sprites.js +108 -0
  127. package/dist/pixoo/pixoo-sprites.js.map +1 -1
  128. package/dist/review-runner.d.ts +113 -0
  129. package/dist/review-runner.d.ts.map +1 -0
  130. package/dist/review-runner.js +428 -0
  131. package/dist/review-runner.js.map +1 -0
  132. package/dist/session-aggregator.d.ts +8 -0
  133. package/dist/session-aggregator.d.ts.map +1 -1
  134. package/dist/session-aggregator.js.map +1 -1
  135. package/dist/session-focus-relay.d.ts.map +1 -1
  136. package/dist/session-focus-relay.js +7 -1
  137. package/dist/session-focus-relay.js.map +1 -1
  138. package/dist/session-registry.d.ts +3 -0
  139. package/dist/session-registry.d.ts.map +1 -1
  140. package/dist/session-registry.js +3 -0
  141. package/dist/session-registry.js.map +1 -1
  142. package/dist/timeline-store.d.ts +49 -0
  143. package/dist/timeline-store.d.ts.map +1 -1
  144. package/dist/timeline-store.js +175 -7
  145. package/dist/timeline-store.js.map +1 -1
  146. package/dist/trmnl/byos-server.d.ts +39 -0
  147. package/dist/trmnl/byos-server.d.ts.map +1 -0
  148. package/dist/trmnl/byos-server.js +301 -0
  149. package/dist/trmnl/byos-server.js.map +1 -0
  150. package/dist/trmnl/frame-cache.d.ts +37 -0
  151. package/dist/trmnl/frame-cache.d.ts.map +1 -0
  152. package/dist/trmnl/frame-cache.js +157 -0
  153. package/dist/trmnl/frame-cache.js.map +1 -0
  154. package/dist/trmnl/image-renderer.d.ts +27 -0
  155. package/dist/trmnl/image-renderer.d.ts.map +1 -0
  156. package/dist/trmnl/image-renderer.js +235 -0
  157. package/dist/trmnl/image-renderer.js.map +1 -0
  158. package/dist/trmnl/trmnl-settings.d.ts +96 -0
  159. package/dist/trmnl/trmnl-settings.d.ts.map +1 -0
  160. package/dist/trmnl/trmnl-settings.js +177 -0
  161. package/dist/trmnl/trmnl-settings.js.map +1 -0
  162. package/dist/trmnl/trmnl-telemetry.d.ts +47 -0
  163. package/dist/trmnl/trmnl-telemetry.d.ts.map +1 -0
  164. package/dist/trmnl/trmnl-telemetry.js +56 -0
  165. package/dist/trmnl/trmnl-telemetry.js.map +1 -0
  166. package/dist/tui/dashboard.d.ts.map +1 -1
  167. package/dist/tui/dashboard.js +14 -4
  168. package/dist/tui/dashboard.js.map +1 -1
  169. package/dist/tui/renderer.d.ts.map +1 -1
  170. package/dist/tui/renderer.js +63 -13
  171. package/dist/tui/renderer.js.map +1 -1
  172. package/dist/tui/terrarium.d.ts.map +1 -1
  173. package/dist/tui/terrarium.js +7 -2
  174. package/dist/tui/terrarium.js.map +1 -1
  175. package/dist/usage-event.d.ts.map +1 -1
  176. package/dist/usage-event.js +25 -2
  177. package/dist/usage-event.js.map +1 -1
  178. package/dist/version-check.d.ts.map +1 -1
  179. package/dist/version-check.js +1 -17
  180. package/dist/version-check.js.map +1 -1
  181. package/dist/ws-server.d.ts +0 -7
  182. package/dist/ws-server.d.ts.map +1 -1
  183. package/dist/ws-server.js +5 -20
  184. package/dist/ws-server.js.map +1 -1
  185. package/package.json +4 -4
@@ -1,49 +1,18 @@
1
1
  /**
2
- * Native 11×11 creature glyphs for the Timebox Mini micro layout.
2
+ * Timebox Mini 11×11 "Agent Beacon" renderer.
3
3
  *
4
- * The Timebox Mini has only 121 LEDs. Downscaling the 32×32 terrarium creature to
5
- * 11×11 bottoms out at a fuzzy silhouette so for this device the creatures are
6
- * **hand-authored directly at 11×11** as bold, high-contrast bitmaps. Every pixel
7
- * is intentional, which is dramatically more legible than any downscale. Treat
8
- * this screen as a status badge, not a shrunken aquarium: one dominant creature,
9
- * no labels, no HUD chrome, and only the pixels that identify the canonical mark.
4
+ * The panel is too small for a miniature terrarium. It gets its own visual
5
+ * language instead: a stable 9×9 official agent mark sits inside a one-pixel
6
+ * status rail. Identity never deforms; only the rail animates.
10
7
  *
11
- * The glyphs are the canonical brand marks (matching assets/logos/*_creature_gen.png
12
- * and design/brand/*.svg), not loose creature approximations:
13
- * Claude → rusty robot (rectangular body, dark cutout eyes, arms, legs)
14
- * Codex → lavender cloud carrying a white `>_` terminal prompt
15
- * OpenClaw→ red lobster (side claws, antennae, teal eyes)
16
- * OpenCode→ hollow rectangular ring logo
17
- * Antigravity→ peak/arc logo
18
- * The MicroCreature keys are legacy internal codenames kept for the renderer
19
- * mapping — only the art behind them is brand-true.
20
- *
21
- * Each glyph is an 11-row × 11-col string grid. Characters map to colors:
22
- * '.' transparent (shows the status-color background)
23
- * 'B' body 'A' arm/antenna/leg 'C' claw 'D' joint/shadow 'E' eye 'K' cutout 'M' prompt mark 'F' logo frame
24
- * Antigravity additionally uses gradient bands: L/T/Q/Y/O/R/P/V/U/N plus K for black cutout.
25
- * `work` is an optional second frame for a simple processing animation (leg wiggle).
8
+ * The 9×9 masks are generated directly from design/brand/*.svg. This file owns
9
+ * only device-specific color and motion, keeping geometry canonical while
10
+ * making every one of the Timebox's 121 LEDs intentional.
26
11
  */
27
12
  export type RGB = readonly [number, number, number];
28
13
  export type MicroCreature = 'octopus' | 'jellyfish' | 'opencode' | 'crayfish' | 'antigravity';
29
- export type MicroState = 'idle' | 'working' | 'asking';
14
+ export type MicroAggregate = 'idle' | 'processing' | 'awaiting' | 'error';
30
15
  export declare const MICRO_SIZE = 11;
31
- /**
32
- * Dark status-color field so the bright creature pops.
33
- *
34
- * Idle is a steady green so a resting session reads as calm/still. Both active
35
- * states animate the field so the tiny panel visibly "does something" while the
36
- * agent is busy — the device only re-pushes when the frame changes, so a
37
- * breathing field is also what keeps working sessions live on screen:
38
- * • processing → a slow blue "breathing" pulse (calm, ~3s cycle)
39
- * • awaiting → a faster, brighter amber pulse (urgent)
40
- * Error is a steady deep red (no motion — a frozen alarm reads as more severe).
41
- */
42
- export declare function microStatusBg(state: 'idle' | 'processing' | 'awaiting' | 'error', animFrame: number): RGB;
43
- /**
44
- * Paint a creature glyph onto an 11×11 RGB buffer (only non-transparent pixels).
45
- * `working` alternates two leg frames; `asking` reuses the idle pose (the amber
46
- * field already signals "awaiting").
47
- */
48
- export declare function paintMicroGlyph(buf: Uint8Array, creature: MicroCreature, state: MicroState, animFrame: number): void;
16
+ /** Paint a complete 11×11 Agent Beacon frame. */
17
+ export declare function paintTimeboxBeacon(buf: Uint8Array, creature: MicroCreature | null, aggregate: MicroAggregate, animFrame: number): void;
49
18
  //# sourceMappingURL=micro-glyphs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"micro-glyphs.d.ts","sourceRoot":"","sources":["../../src/pixoo/micro-glyphs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,MAAM,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACpD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,CAAC;AAC9F,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEvD,eAAO,MAAM,UAAU,KAAK,CAAC;AA6M7B;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU,GAAG,OAAO,EACnD,SAAS,EAAE,MAAM,GAChB,GAAG,CAeL;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,UAAU,EACf,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,MAAM,GAChB,IAAI,CAoBN"}
1
+ {"version":3,"file":"micro-glyphs.d.ts","sourceRoot":"","sources":["../../src/pixoo/micro-glyphs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,MAAM,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACpD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,CAAC;AAC9F,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,YAAY,GAAG,UAAU,GAAG,OAAO,CAAC;AAE1E,eAAO,MAAM,UAAU,KAAK,CAAC;AA8H7B,iDAAiD;AACjD,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,UAAU,EACf,QAAQ,EAAE,aAAa,GAAG,IAAI,EAC9B,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE,MAAM,GAChB,IAAI,CAMN"}
@@ -1,276 +1,143 @@
1
1
  /**
2
- * Native 11×11 creature glyphs for the Timebox Mini micro layout.
2
+ * Timebox Mini 11×11 "Agent Beacon" renderer.
3
3
  *
4
- * The Timebox Mini has only 121 LEDs. Downscaling the 32×32 terrarium creature to
5
- * 11×11 bottoms out at a fuzzy silhouette so for this device the creatures are
6
- * **hand-authored directly at 11×11** as bold, high-contrast bitmaps. Every pixel
7
- * is intentional, which is dramatically more legible than any downscale. Treat
8
- * this screen as a status badge, not a shrunken aquarium: one dominant creature,
9
- * no labels, no HUD chrome, and only the pixels that identify the canonical mark.
4
+ * The panel is too small for a miniature terrarium. It gets its own visual
5
+ * language instead: a stable 9×9 official agent mark sits inside a one-pixel
6
+ * status rail. Identity never deforms; only the rail animates.
10
7
  *
11
- * The glyphs are the canonical brand marks (matching assets/logos/*_creature_gen.png
12
- * and design/brand/*.svg), not loose creature approximations:
13
- * Claude → rusty robot (rectangular body, dark cutout eyes, arms, legs)
14
- * Codex → lavender cloud carrying a white `>_` terminal prompt
15
- * OpenClaw→ red lobster (side claws, antennae, teal eyes)
16
- * OpenCode→ hollow rectangular ring logo
17
- * Antigravity→ peak/arc logo
18
- * The MicroCreature keys are legacy internal codenames kept for the renderer
19
- * mapping — only the art behind them is brand-true.
20
- *
21
- * Each glyph is an 11-row × 11-col string grid. Characters map to colors:
22
- * '.' transparent (shows the status-color background)
23
- * 'B' body 'A' arm/antenna/leg 'C' claw 'D' joint/shadow 'E' eye 'K' cutout 'M' prompt mark 'F' logo frame
24
- * Antigravity additionally uses gradient bands: L/T/Q/Y/O/R/P/V/U/N plus K for black cutout.
25
- * `work` is an optional second frame for a simple processing animation (leg wiggle).
8
+ * The 9×9 masks are generated directly from design/brand/*.svg. This file owns
9
+ * only device-specific color and motion, keeping geometry canonical while
10
+ * making every one of the Timebox's 121 LEDs intentional.
26
11
  */
12
+ import { OFFICIAL_TIMEBOX_GLYPHS, OFFICIAL_TIMEBOX_GLYPH_SIZE, } from './official-dot-glyphs.generated.js';
27
13
  export const MICRO_SIZE = 11;
28
- // Claude Code rusty robot (design/brand/claudecode.svg): broad rectangular
29
- // body, full-width side arms, straight vertical legs, and two narrow vertical
30
- // cutout eyes. The eyes occupy two LED rows because the SVG holes are taller
31
- // than they are wide; the legs stay aligned instead of wiggling.
32
- const OCTOPUS = {
33
- // `E` is the lit "active" eye used only in the work pose: the rusty robot's
34
- // dark cutout eyes (`K`) light up cyan while it is processing, so the panel
35
- // reads as "thinking" at a glance instead of a frozen idle robot.
36
- colors: { B: [235, 130, 90], D: [150, 84, 64], K: [0, 0, 0], E: [120, 226, 255] },
37
- idle: [
38
- '...........',
39
- '.BBBBBBBBB.',
40
- '.BBBBBBBBB.',
41
- '.BBKBBBKBB.',
42
- '.BBKBBBKBB.',
43
- 'BBBBBBBBBBB',
44
- 'BBBBBBBBBBB',
45
- '.BBBBBBBBB.',
46
- '..BB...BB..',
47
- '..BB...BB..',
48
- '...........',
49
- ],
50
- // Working: eyes light up + the legs take a stride (left up / right planted),
51
- // so the alternation with `idle` gives a visible blink + walk while busy.
52
- work: [
53
- '...........',
54
- '.BBBBBBBBB.',
55
- '.BBBBBBBBB.',
56
- '.BBEBBBEBB.',
57
- '.BBEBBBEBB.',
58
- 'BBBBBBBBBBB',
59
- 'BBBBBBBBBBB',
60
- '.BBBBBBBBB.',
61
- '..BB...BB..',
62
- '...B...BB..',
63
- '...........',
64
- ],
65
- };
66
- // Codex — lavender cloud (assets/logos/cloud_creature_gen.png, design/brand/codex.svg):
67
- // puffy cloud outline with no dangling legs, plus an oversized `>_` prompt. The
68
- // prompt is deliberately brighter than the body so it survives the LED diffuser.
69
- const JELLYFISH = {
70
- // `M` is PURE white (not off-white) and the body is a deeper indigo than the
71
- // old lavender so the `>_` prompt actually pops on the LED diffuser instead of
72
- // washing into the cloud. The mark is a bold 2px chevron + full-width cursor.
73
- colors: { B: [86, 92, 220], M: [255, 255, 255] },
74
- idle: [
75
- '...........',
76
- '...BBBBB...',
77
- '.BBBBBBBBB.',
78
- 'BBBBBBBBBBB',
79
- 'BBMMBBBBBBB',
80
- 'BBBMMBBBBBB',
81
- 'BBMMBBBBBBB',
82
- 'BBBBBBBBBBB',
83
- 'BBBMMMMMBBB',
84
- '.BBBBBBBBB.',
85
- '...BBBBB...',
86
- ],
87
- // Working: the cursor blinks off so the alternation reads as a live terminal
88
- // prompt (chevron steady, underscore pulsing) while Codex is processing.
89
- work: [
90
- '...........',
91
- '...BBBBB...',
92
- '.BBBBBBBBB.',
93
- 'BBBBBBBBBBB',
94
- 'BBMMBBBBBBB',
95
- 'BBBMMBBBBBB',
96
- 'BBMMBBBBBBB',
97
- 'BBBBBBBBBBB',
98
- 'BBBBBBBBBBB',
99
- '.BBBBBBBBB.',
100
- '...BBBBB...',
101
- ],
102
- };
103
- // OpenCode — canonical opencode.svg: a single tall rectangular ring, not two
104
- // overlapping squares and not a filled core. Light stroke so it reads on LEDs
105
- // (#3a3a3a brand gray is too dark for this panel).
106
- const OPENCODE = {
107
- colors: { F: [232, 232, 232] },
108
- idle: [
109
- '...........',
110
- '..FFFFFFF..',
111
- '..FFFFFFF..',
112
- '..FF...FF..',
113
- '..FF...FF..',
114
- '..FF...FF..',
115
- '..FF...FF..',
116
- '..FF...FF..',
117
- '..FFFFFFF..',
118
- '..FFFFFFF..',
119
- '...........',
120
- ],
121
- // Working: the ring thickens inward (hole narrows to 1px), so the alternation
122
- // with `idle` reads as a steady pulse while OpenCode is processing.
123
- work: [
124
- '...........',
125
- '..FFFFFFF..',
126
- '..FFFFFFF..',
127
- '..FFF.FFF..',
128
- '..FFF.FFF..',
129
- '..FFF.FFF..',
130
- '..FFF.FFF..',
131
- '..FFF.FFF..',
132
- '..FFFFFFF..',
133
- '..FFFFFFF..',
134
- '...........',
135
- ],
136
- };
137
- // Antigravity — rainbow peak/arc mark, simplified for an 11×11 matrix. The
138
- // central hollow is transparent, not black, so the status field shows through
139
- // like the open space in the official arc silhouette.
140
- const ANTIGRAVITY = {
141
- colors: {
142
- L: [92, 214, 77],
143
- T: [31, 198, 179],
144
- Q: [58, 199, 235],
145
- Y: [245, 203, 36],
146
- O: [255, 132, 16],
147
- R: [255, 82, 65],
148
- P: [183, 92, 182],
149
- V: [102, 111, 225],
150
- U: [36, 126, 255],
151
- N: [41, 184, 238],
152
- },
153
- idle: [
154
- '.....O.....',
155
- '....YOR....',
156
- '...LYORP...',
157
- '...LYORPV..',
158
- '...LTQRPV..',
159
- '..LTQRPVU..',
160
- '..TQ...VU..',
161
- '..Q.....U..',
162
- '.NQ.....UU.',
163
- '.N.......UU',
164
- '...........',
165
- ],
166
- work: [
167
- '....YO.....',
168
- '....YORP...',
169
- '...LYORPV..',
170
- '...LTQRPV..',
171
- '..LTQRPVU..',
172
- '..TQ...VU..',
173
- '..Q.....U..',
174
- '.NQ.....UU.',
175
- '.N.......UU',
176
- '...........',
177
- '...........',
178
- ],
14
+ const BACKGROUND = [2, 6, 10];
15
+ const IDLE_RAIL = [38, 170, 116];
16
+ const PROCESSING_RAIL = [82, 220, 255];
17
+ const AWAITING_RAIL = [255, 184, 54];
18
+ const ERROR_RAIL = [255, 70, 70];
19
+ const AGENT_COLORS = {
20
+ claudeCode: [235, 130, 90],
21
+ codex: [112, 124, 255],
22
+ openCode: [238, 238, 238],
23
+ openClaw: [255, 92, 92],
179
24
  };
180
- // OpenClaw red mechanical lobster (assets/logos/lobster_creature_gen.png,
181
- // Pixoo LOD): side claws, small antennae, teal eyes, and a tapered body. The
182
- // full asset's raised claws are too tall for 11px and read as a different head.
183
- const CRAYFISH = {
184
- colors: { B: [255, 92, 92], C: [210, 52, 52], A: [225, 180, 170], E: [0, 229, 204] },
185
- idle: [
186
- '...A...A...',
187
- '....A.A....',
188
- '....BBB....',
189
- '...BEBEB...',
190
- 'C.BBBBBBB.C',
191
- 'CC.BBBBB.CC',
192
- '.CBBBBBBB.C',
193
- '..BBBBBBB..',
194
- '...BBBBB...',
195
- '...BB.BB...',
196
- '..BB...BB..',
197
- ],
198
- work: [
199
- '....A.A....',
200
- '...A...A...',
201
- '....BBB....',
202
- '...BEBEB...',
203
- '.CBBBBBBB.C',
204
- 'CC.BBBBB.CC',
205
- 'C.BBBBBBB.C',
206
- '..BBBBBBB..',
207
- '...BBBBB...',
208
- '...B.B.B...',
209
- '..BB...BB..',
210
- ],
211
- };
212
- const GLYPHS = {
213
- octopus: OCTOPUS,
214
- jellyfish: JELLYFISH,
215
- opencode: OPENCODE,
216
- crayfish: CRAYFISH,
217
- antigravity: ANTIGRAVITY,
218
- };
219
- /**
220
- * Dark status-color field so the bright creature pops.
221
- *
222
- * Idle is a steady green so a resting session reads as calm/still. Both active
223
- * states animate the field so the tiny panel visibly "does something" while the
224
- * agent is busy — the device only re-pushes when the frame changes, so a
225
- * breathing field is also what keeps working sessions live on screen:
226
- * • processing → a slow blue "breathing" pulse (calm, ~3s cycle)
227
- * • awaiting → a faster, brighter amber pulse (urgent)
228
- * Error is a steady deep red (no motion — a frozen alarm reads as more severe).
229
- */
230
- export function microStatusBg(state, animFrame) {
231
- switch (state) {
232
- case 'error': return [64, 18, 18];
233
- case 'awaiting': {
234
- const p = 0.78 + 0.22 * ((Math.sin(animFrame * 0.25) + 1) / 2);
235
- return [Math.round(74 * p), Math.round(50 * p), Math.round(10 * p)];
236
- }
237
- case 'processing': {
238
- // Breathe between a dim floor and a brighter blue on a ~3s cycle. Sampled
239
- // at the device's ~1.5s poll this reads as a steady "working" heartbeat.
240
- const p = 0.68 + 0.32 * ((Math.sin(animFrame * 0.18) + 1) / 2);
241
- return [Math.round(16 * p), Math.round(40 * p), Math.round(88 * p)];
242
- }
243
- default: return [16, 56, 28];
25
+ const PERIMETER = [
26
+ ...Array.from({ length: 11 }, (_, x) => [x, 0]),
27
+ ...Array.from({ length: 10 }, (_, i) => [10, i + 1]),
28
+ ...Array.from({ length: 10 }, (_, i) => [9 - i, 10]),
29
+ ...Array.from({ length: 9 }, (_, i) => [0, 9 - i]),
30
+ ];
31
+ function setPixel(buf, x, y, color, intensity = 1) {
32
+ if (x < 0 || x >= MICRO_SIZE || y < 0 || y >= MICRO_SIZE)
33
+ return;
34
+ const i = (y * MICRO_SIZE + x) * 3;
35
+ buf[i] = Math.round(color[0] * intensity);
36
+ buf[i + 1] = Math.round(color[1] * intensity);
37
+ buf[i + 2] = Math.round(color[2] * intensity);
38
+ }
39
+ function officialName(creature) {
40
+ switch (creature) {
41
+ case 'octopus': return 'claudeCode';
42
+ case 'jellyfish': return 'codex';
43
+ case 'opencode': return 'openCode';
44
+ case 'crayfish': return 'openClaw';
45
+ case 'antigravity': return 'antigravity';
244
46
  }
245
47
  }
246
- /**
247
- * Paint a creature glyph onto an 11×11 RGB buffer (only non-transparent pixels).
248
- * `working` alternates two leg frames; `asking` reuses the idle pose (the amber
249
- * field already signals "awaiting").
250
- */
251
- export function paintMicroGlyph(buf, creature, state, animFrame) {
252
- const g = GLYPHS[creature];
253
- const grid = state === 'working' && g.work && ((animFrame >> 2) & 1) ? g.work : g.idle;
254
- const drift = creature === 'antigravity' ? Math.floor(animFrame / 6) % 4 : 0;
255
- const offsetX = creature === 'antigravity' && state === 'working'
256
- ? (drift === 1 ? 1 : drift === 3 ? -1 : 0)
257
- : 0;
258
- const offsetY = creature === 'antigravity' && state !== 'idle' && (drift === 0 || drift === 1) ? -1 : 0;
259
- for (let y = 0; y < MICRO_SIZE; y++) {
260
- const row = grid[y];
261
- for (let x = 0; x < MICRO_SIZE; x++) {
262
- const col = g.colors[row[x]];
263
- if (!col)
264
- continue;
265
- const dx = x + offsetX;
266
- const dy = y + offsetY;
267
- if (dx < 0 || dx >= MICRO_SIZE || dy < 0 || dy >= MICRO_SIZE)
48
+ function antigravityColor(sourceX) {
49
+ const bands = [
50
+ [92, 214, 77], [245, 203, 36], [255, 132, 16],
51
+ [255, 82, 65], [183, 92, 182], [102, 111, 225], [36, 126, 255],
52
+ ];
53
+ const index = Math.min(bands.length - 1, Math.floor(sourceX * bands.length / OFFICIAL_TIMEBOX_GLYPH_SIZE));
54
+ return bands[index];
55
+ }
56
+ function paintOfficialMark(buf, creature, aggregate) {
57
+ const name = officialName(creature);
58
+ const mask = OFFICIAL_TIMEBOX_GLYPHS[name];
59
+ const stateIntensity = aggregate === 'idle' ? 0.92 : aggregate === 'error' ? 0.72 : 1;
60
+ for (let y = 0; y < OFFICIAL_TIMEBOX_GLYPH_SIZE; y++) {
61
+ for (let x = 0; x < OFFICIAL_TIMEBOX_GLYPH_SIZE; x++) {
62
+ const alpha = mask[y * OFFICIAL_TIMEBOX_GLYPH_SIZE + x];
63
+ // Four deliberate levels survive the Timebox's 4-bit channel packing while
64
+ // restoring the contour/shading that the old two-step body reduced to a
65
+ // flat block. Keep true cutouts black so the official negative space reads.
66
+ const coverage = alpha >= 224 ? 1 : alpha >= 144 ? 0.82 : alpha >= 56 ? 0.56 : alpha >= 20 ? 0.32 : 0;
67
+ if (coverage === 0)
268
68
  continue;
269
- const i = (dy * MICRO_SIZE + dx) * 3;
270
- buf[i] = col[0];
271
- buf[i + 1] = col[1];
272
- buf[i + 2] = col[2];
69
+ const color = name === 'antigravity' ? antigravityColor(x) : AGENT_COLORS[name];
70
+ const light = 0.88 + (1 - y / (OFFICIAL_TIMEBOX_GLYPH_SIZE - 1)) * 0.12;
71
+ setPixel(buf, x + 1, y + 1, color, coverage * stateIntensity * light);
273
72
  }
274
73
  }
74
+ // The official silhouette carries the lobster identity; two cyan eye pixels
75
+ // remain a device-tuned accessibility accent on the 9px reduction.
76
+ if (name === 'openClaw') {
77
+ setPixel(buf, 4, 4, [0, 229, 204], stateIntensity);
78
+ setPixel(buf, 7, 4, [0, 229, 204], stateIntensity);
79
+ }
80
+ }
81
+ function paintStandby(buf, animFrame) {
82
+ const pulse = 0.55 + 0.25 * ((Math.sin(animFrame * 0.18) + 1) / 2);
83
+ const tide = [76, 206, 220];
84
+ for (const [y, left, right] of [[4, 4, 6], [6, 3, 7], [8, 4, 6]]) {
85
+ for (let x = left; x <= right; x++)
86
+ setPixel(buf, x, y, tide, pulse);
87
+ }
88
+ }
89
+ function paintStatusRail(buf, aggregate, animFrame) {
90
+ const railColor = aggregate === 'processing' ? PROCESSING_RAIL
91
+ : aggregate === 'awaiting' ? AWAITING_RAIL
92
+ : aggregate === 'error' ? ERROR_RAIL : IDLE_RAIL;
93
+ const baseIntensity = aggregate === 'idle' ? 0.10 : 0.13;
94
+ for (const [x, y] of PERIMETER)
95
+ setPixel(buf, x, y, railColor, baseIntensity);
96
+ switch (aggregate) {
97
+ case 'processing': {
98
+ const head = Math.floor(animFrame / 3) % PERIMETER.length;
99
+ for (let trail = 0; trail < 5; trail++) {
100
+ const [x, y] = PERIMETER[(head - trail + PERIMETER.length) % PERIMETER.length];
101
+ setPixel(buf, x, y, PROCESSING_RAIL, 1 - trail * 0.17);
102
+ }
103
+ break;
104
+ }
105
+ case 'awaiting': {
106
+ const phase = (Math.floor(animFrame / 4) & 1) === 0;
107
+ const points = phase
108
+ ? [[0, 0], [1, 0], [0, 1], [10, 10], [9, 10], [10, 9]]
109
+ : [[10, 0], [9, 0], [10, 1], [0, 10], [1, 10], [0, 9]];
110
+ for (const [x, y] of points)
111
+ setPixel(buf, x, y, AWAITING_RAIL);
112
+ break;
113
+ }
114
+ case 'error': {
115
+ const intensity = 0.65 + 0.35 * ((Math.sin(animFrame * 0.35) + 1) / 2);
116
+ for (let i = 0; i < PERIMETER.length; i += 2) {
117
+ const [x, y] = PERIMETER[i];
118
+ setPixel(buf, x, y, ERROR_RAIL, intensity);
119
+ }
120
+ break;
121
+ }
122
+ case 'idle': {
123
+ const intensity = 0.56 + 0.16 * ((Math.sin(animFrame * 0.12) + 1) / 2);
124
+ for (const [x, y] of [[0, 0], [10, 0], [10, 10], [0, 10]]) {
125
+ setPixel(buf, x, y, IDLE_RAIL, intensity);
126
+ }
127
+ break;
128
+ }
129
+ }
130
+ }
131
+ /** Paint a complete 11×11 Agent Beacon frame. */
132
+ export function paintTimeboxBeacon(buf, creature, aggregate, animFrame) {
133
+ if (buf.length !== MICRO_SIZE * MICRO_SIZE * 3)
134
+ return;
135
+ for (let i = 0; i < MICRO_SIZE * MICRO_SIZE; i++)
136
+ buf.set(BACKGROUND, i * 3);
137
+ if (creature)
138
+ paintOfficialMark(buf, creature, aggregate);
139
+ else
140
+ paintStandby(buf, animFrame);
141
+ paintStatusRail(buf, aggregate, animFrame);
275
142
  }
276
143
  //# sourceMappingURL=micro-glyphs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"micro-glyphs.js","sourceRoot":"","sources":["../../src/pixoo/micro-glyphs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"micro-glyphs.js","sourceRoot":"","sources":["../../src/pixoo/micro-glyphs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export type OfficialDotGlyphName = 'claudeCode' | 'codex' | 'openCode' | 'openClaw' | 'antigravity';
2
+ export declare const OFFICIAL_DOT_GLYPH_SIZE = 24;
3
+ export declare const OFFICIAL_DOT_GLYPHS: Record<OfficialDotGlyphName, Uint8Array>;
4
+ export declare const OFFICIAL_TIMEBOX_GLYPH_SIZE = 9;
5
+ export declare const OFFICIAL_TIMEBOX_GLYPHS: Record<OfficialDotGlyphName, Uint8Array>;
6
+ export declare const OFFICIAL_TC001_GLYPH_SIZE = 8;
7
+ export declare const OFFICIAL_TC001_GLYPHS: Record<OfficialDotGlyphName, Uint8Array>;
8
+ //# sourceMappingURL=official-dot-glyphs.generated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"official-dot-glyphs.generated.d.ts","sourceRoot":"","sources":["../../src/pixoo/official-dot-glyphs.generated.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,CAAC;AACpG,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,oBAAoB,EAAE,UAAU,CAmIxE,CAAC;AAEF,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAC7C,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,oBAAoB,EAAE,UAAU,CAwD5E,CAAC;AAEF,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,oBAAoB,EAAE,UAAU,CAmD1E,CAAC"}