@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.
- package/assets/fm-helper/agentdeck-fm-helper +0 -0
- package/dist/apme/collector.d.ts +4 -0
- package/dist/apme/collector.d.ts.map +1 -1
- package/dist/apme/collector.js +1 -0
- package/dist/apme/collector.js.map +1 -1
- package/dist/apme/dashboard-html.d.ts.map +1 -1
- package/dist/apme/dashboard-html.js +30 -0
- package/dist/apme/dashboard-html.js.map +1 -1
- package/dist/apme/http.d.ts.map +1 -1
- package/dist/apme/http.js +9 -0
- package/dist/apme/http.js.map +1 -1
- package/dist/apme/index.d.ts.map +1 -1
- package/dist/apme/index.js +14 -3
- package/dist/apme/index.js.map +1 -1
- package/dist/apme/judge-detect.d.ts +26 -0
- package/dist/apme/judge-detect.d.ts.map +1 -0
- package/dist/apme/judge-detect.js +69 -0
- package/dist/apme/judge-detect.js.map +1 -0
- package/dist/apme/runner.d.ts +7 -0
- package/dist/apme/runner.d.ts.map +1 -1
- package/dist/apme/runner.js +188 -33
- package/dist/apme/runner.js.map +1 -1
- package/dist/apme/settings.d.ts +10 -8
- package/dist/apme/settings.d.ts.map +1 -1
- package/dist/apme/settings.js +11 -16
- package/dist/apme/settings.js.map +1 -1
- package/dist/awaiting-overlay.d.ts +17 -4
- package/dist/awaiting-overlay.d.ts.map +1 -1
- package/dist/awaiting-overlay.js +39 -8
- package/dist/awaiting-overlay.js.map +1 -1
- package/dist/bridge-core.d.ts +10 -0
- package/dist/bridge-core.d.ts.map +1 -1
- package/dist/bridge-core.js +50 -0
- package/dist/bridge-core.js.map +1 -1
- package/dist/claude-permission-rules.d.ts +55 -0
- package/dist/claude-permission-rules.d.ts.map +1 -0
- package/dist/claude-permission-rules.js +197 -0
- package/dist/claude-permission-rules.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +10 -1
- package/dist/cli.js.map +1 -1
- package/dist/d200h/hid-protocol.d.ts +62 -0
- package/dist/d200h/hid-protocol.d.ts.map +1 -0
- package/dist/d200h/hid-protocol.js +124 -0
- package/dist/d200h/hid-protocol.js.map +1 -0
- package/dist/d200h/image-renderer.d.ts +24 -0
- package/dist/d200h/image-renderer.d.ts.map +1 -0
- package/dist/d200h/image-renderer.js +321 -0
- package/dist/d200h/image-renderer.js.map +1 -0
- package/dist/daemon-server.d.ts.map +1 -1
- package/dist/daemon-server.js +374 -26
- package/dist/daemon-server.js.map +1 -1
- package/dist/daemon.js +1 -1
- package/dist/esp32-serial.d.ts +30 -0
- package/dist/esp32-serial.d.ts.map +1 -1
- package/dist/esp32-serial.js +148 -11
- package/dist/esp32-serial.js.map +1 -1
- package/dist/fallback-task-timeline.d.ts.map +1 -1
- package/dist/fallback-task-timeline.js +9 -2
- package/dist/fallback-task-timeline.js.map +1 -1
- package/dist/hook-server.d.ts.map +1 -1
- package/dist/hook-server.js +6 -5
- package/dist/hook-server.js.map +1 -1
- package/dist/idotmatrix/idotmatrix-daemon-sync.js +2 -2
- package/dist/idotmatrix/idotmatrix-daemon-sync.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +3 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +6 -2
- package/dist/logger.js.map +1 -1
- package/dist/model-catalog.d.ts +1 -1
- package/dist/model-catalog.d.ts.map +1 -1
- package/dist/model-catalog.js +2 -4
- package/dist/model-catalog.js.map +1 -1
- package/dist/modules/d200h-module.d.ts +65 -0
- package/dist/modules/d200h-module.d.ts.map +1 -0
- package/dist/modules/d200h-module.js +495 -0
- package/dist/modules/d200h-module.js.map +1 -0
- package/dist/modules/d200h-renderer.d.ts +7 -0
- package/dist/modules/d200h-renderer.d.ts.map +1 -0
- package/dist/modules/d200h-renderer.js +321 -0
- package/dist/modules/d200h-renderer.js.map +1 -0
- package/dist/modules/trmnl-module.d.ts +38 -0
- package/dist/modules/trmnl-module.d.ts.map +1 -0
- package/dist/modules/trmnl-module.js +111 -0
- package/dist/modules/trmnl-module.js.map +1 -0
- package/dist/observed-steering.d.ts +93 -0
- package/dist/observed-steering.d.ts.map +1 -0
- package/dist/observed-steering.js +247 -0
- package/dist/observed-steering.js.map +1 -0
- package/dist/opencode-steering.d.ts +36 -0
- package/dist/opencode-steering.d.ts.map +1 -0
- package/dist/opencode-steering.js +84 -0
- package/dist/opencode-steering.js.map +1 -0
- package/dist/output-parser.d.ts.map +1 -1
- package/dist/output-parser.js +48 -10
- package/dist/output-parser.js.map +1 -1
- package/dist/passive-observer.d.ts +6 -0
- package/dist/passive-observer.d.ts.map +1 -1
- package/dist/passive-observer.js +31 -1
- package/dist/passive-observer.js.map +1 -1
- package/dist/permission-resolver.d.ts +13 -5
- package/dist/permission-resolver.d.ts.map +1 -1
- package/dist/permission-resolver.js +18 -9
- package/dist/permission-resolver.js.map +1 -1
- package/dist/pixoo/micro-glyphs.d.ts +10 -41
- package/dist/pixoo/micro-glyphs.d.ts.map +1 -1
- package/dist/pixoo/micro-glyphs.js +130 -263
- package/dist/pixoo/micro-glyphs.js.map +1 -1
- package/dist/pixoo/official-dot-glyphs.generated.d.ts +8 -0
- package/dist/pixoo/official-dot-glyphs.generated.d.ts.map +1 -0
- package/dist/pixoo/official-dot-glyphs.generated.js +247 -0
- package/dist/pixoo/official-dot-glyphs.generated.js.map +1 -0
- package/dist/pixoo/pixoo-bridge.d.ts +14 -6
- package/dist/pixoo/pixoo-bridge.d.ts.map +1 -1
- package/dist/pixoo/pixoo-bridge.js +63 -39
- package/dist/pixoo/pixoo-bridge.js.map +1 -1
- package/dist/pixoo/pixoo-renderer.d.ts +21 -2
- package/dist/pixoo/pixoo-renderer.d.ts.map +1 -1
- package/dist/pixoo/pixoo-renderer.js +401 -132
- package/dist/pixoo/pixoo-renderer.js.map +1 -1
- package/dist/pixoo/pixoo-sprites.d.ts +24 -0
- package/dist/pixoo/pixoo-sprites.d.ts.map +1 -1
- package/dist/pixoo/pixoo-sprites.js +108 -0
- package/dist/pixoo/pixoo-sprites.js.map +1 -1
- package/dist/review-runner.d.ts +113 -0
- package/dist/review-runner.d.ts.map +1 -0
- package/dist/review-runner.js +428 -0
- package/dist/review-runner.js.map +1 -0
- package/dist/session-aggregator.d.ts +8 -0
- package/dist/session-aggregator.d.ts.map +1 -1
- package/dist/session-aggregator.js.map +1 -1
- package/dist/session-focus-relay.d.ts.map +1 -1
- package/dist/session-focus-relay.js +7 -1
- package/dist/session-focus-relay.js.map +1 -1
- package/dist/session-registry.d.ts +3 -0
- package/dist/session-registry.d.ts.map +1 -1
- package/dist/session-registry.js +3 -0
- package/dist/session-registry.js.map +1 -1
- package/dist/timeline-store.d.ts +49 -0
- package/dist/timeline-store.d.ts.map +1 -1
- package/dist/timeline-store.js +175 -7
- package/dist/timeline-store.js.map +1 -1
- package/dist/trmnl/byos-server.d.ts +39 -0
- package/dist/trmnl/byos-server.d.ts.map +1 -0
- package/dist/trmnl/byos-server.js +301 -0
- package/dist/trmnl/byos-server.js.map +1 -0
- package/dist/trmnl/frame-cache.d.ts +37 -0
- package/dist/trmnl/frame-cache.d.ts.map +1 -0
- package/dist/trmnl/frame-cache.js +157 -0
- package/dist/trmnl/frame-cache.js.map +1 -0
- package/dist/trmnl/image-renderer.d.ts +27 -0
- package/dist/trmnl/image-renderer.d.ts.map +1 -0
- package/dist/trmnl/image-renderer.js +235 -0
- package/dist/trmnl/image-renderer.js.map +1 -0
- package/dist/trmnl/trmnl-settings.d.ts +96 -0
- package/dist/trmnl/trmnl-settings.d.ts.map +1 -0
- package/dist/trmnl/trmnl-settings.js +177 -0
- package/dist/trmnl/trmnl-settings.js.map +1 -0
- package/dist/trmnl/trmnl-telemetry.d.ts +47 -0
- package/dist/trmnl/trmnl-telemetry.d.ts.map +1 -0
- package/dist/trmnl/trmnl-telemetry.js +56 -0
- package/dist/trmnl/trmnl-telemetry.js.map +1 -0
- package/dist/tui/dashboard.d.ts.map +1 -1
- package/dist/tui/dashboard.js +14 -4
- package/dist/tui/dashboard.js.map +1 -1
- package/dist/tui/renderer.d.ts.map +1 -1
- package/dist/tui/renderer.js +63 -13
- package/dist/tui/renderer.js.map +1 -1
- package/dist/tui/terrarium.d.ts.map +1 -1
- package/dist/tui/terrarium.js +7 -2
- package/dist/tui/terrarium.js.map +1 -1
- package/dist/usage-event.d.ts.map +1 -1
- package/dist/usage-event.js +25 -2
- package/dist/usage-event.js.map +1 -1
- package/dist/version-check.d.ts.map +1 -1
- package/dist/version-check.js +1 -17
- package/dist/version-check.js.map +1 -1
- package/dist/ws-server.d.ts +0 -7
- package/dist/ws-server.d.ts.map +1 -1
- package/dist/ws-server.js +5 -20
- package/dist/ws-server.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,49 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Timebox Mini 11×11 "Agent Beacon" renderer.
|
|
3
3
|
*
|
|
4
|
-
* The
|
|
5
|
-
*
|
|
6
|
-
*
|
|
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
|
|
12
|
-
* and
|
|
13
|
-
*
|
|
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
|
|
14
|
+
export type MicroAggregate = 'idle' | 'processing' | 'awaiting' | 'error';
|
|
30
15
|
export declare const MICRO_SIZE = 11;
|
|
31
|
-
/**
|
|
32
|
-
|
|
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
|
|
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
|
-
*
|
|
2
|
+
* Timebox Mini 11×11 "Agent Beacon" renderer.
|
|
3
3
|
*
|
|
4
|
-
* The
|
|
5
|
-
*
|
|
6
|
-
*
|
|
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
|
|
12
|
-
* and
|
|
13
|
-
*
|
|
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
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
'
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
'
|
|
200
|
-
'
|
|
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
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
const
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
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
|
|
270
|
-
|
|
271
|
-
buf
|
|
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":"AAAA
|
|
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"}
|