@agentdeck/bridge 0.2.2 → 0.2.3
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/fonts/IBMPlexSans-Bold.ttf +0 -0
- package/assets/fonts/IBMPlexSans-Regular.ttf +0 -0
- package/assets/fonts/JetBrainsMono-Bold.ttf +0 -0
- package/assets/fonts/JetBrainsMono-Regular.ttf +0 -0
- package/assets/fonts/LICENSES.md +22 -0
- package/dist/adapters/claude-code.d.ts +6 -0
- package/dist/adapters/claude-code.d.ts.map +1 -1
- package/dist/adapters/claude-code.js +8 -0
- package/dist/adapters/claude-code.js.map +1 -1
- package/dist/adapters/openclaw.d.ts +24 -0
- package/dist/adapters/openclaw.d.ts.map +1 -1
- package/dist/adapters/openclaw.js +291 -35
- package/dist/adapters/openclaw.js.map +1 -1
- package/dist/adapters/opencode-adapter.d.ts +59 -0
- package/dist/adapters/opencode-adapter.d.ts.map +1 -1
- package/dist/adapters/opencode-adapter.js +297 -35
- package/dist/adapters/opencode-adapter.js.map +1 -1
- package/dist/adb-reverse.d.ts +1 -1
- package/dist/adb-reverse.js +1 -1
- package/dist/antigravity-local.d.ts +1 -0
- package/dist/antigravity-local.d.ts.map +1 -1
- package/dist/antigravity-local.js +33 -0
- package/dist/antigravity-local.js.map +1 -1
- package/dist/apme/adapters/claude-hook.d.ts.map +1 -1
- package/dist/apme/adapters/claude-hook.js +5 -0
- package/dist/apme/adapters/claude-hook.js.map +1 -1
- package/dist/apme/adapters/codex-hook.d.ts +17 -0
- package/dist/apme/adapters/codex-hook.d.ts.map +1 -0
- package/dist/apme/adapters/codex-hook.js +95 -0
- package/dist/apme/adapters/codex-hook.js.map +1 -0
- package/dist/apme/adapters/codex-turn-manager.d.ts +86 -0
- package/dist/apme/adapters/codex-turn-manager.d.ts.map +1 -0
- package/dist/apme/adapters/codex-turn-manager.js +496 -0
- package/dist/apme/adapters/codex-turn-manager.js.map +1 -0
- package/dist/apme/adapters/openclaw-hook.d.ts +99 -0
- package/dist/apme/adapters/openclaw-hook.d.ts.map +1 -0
- package/dist/apme/adapters/openclaw-hook.js +234 -0
- package/dist/apme/adapters/openclaw-hook.js.map +1 -0
- package/dist/apme/adapters/opencode-hook.d.ts +56 -0
- package/dist/apme/adapters/opencode-hook.d.ts.map +1 -0
- package/dist/apme/adapters/opencode-hook.js +182 -0
- package/dist/apme/adapters/opencode-hook.js.map +1 -0
- package/dist/apme/adapters/timeline.d.ts.map +1 -1
- package/dist/apme/adapters/timeline.js +6 -1
- package/dist/apme/adapters/timeline.js.map +1 -1
- package/dist/apme/antigravity-transcript.d.ts +18 -0
- package/dist/apme/antigravity-transcript.d.ts.map +1 -0
- package/dist/apme/antigravity-transcript.js +94 -0
- package/dist/apme/antigravity-transcript.js.map +1 -0
- package/dist/apme/classify-turn.d.ts +13 -0
- package/dist/apme/classify-turn.d.ts.map +1 -0
- package/dist/apme/classify-turn.js +49 -0
- package/dist/apme/classify-turn.js.map +1 -0
- package/dist/apme/claude-transcript-reader.d.ts +10 -0
- package/dist/apme/claude-transcript-reader.d.ts.map +1 -1
- package/dist/apme/claude-transcript-reader.js +35 -0
- package/dist/apme/claude-transcript-reader.js.map +1 -1
- package/dist/apme/collector.d.ts +129 -6
- package/dist/apme/collector.d.ts.map +1 -1
- package/dist/apme/collector.js +470 -23
- package/dist/apme/collector.js.map +1 -1
- package/dist/apme/dashboard-html.d.ts.map +1 -1
- package/dist/apme/dashboard-html.js +87 -11
- package/dist/apme/dashboard-html.js.map +1 -1
- package/dist/apme/http.d.ts.map +1 -1
- package/dist/apme/http.js +43 -6
- package/dist/apme/http.js.map +1 -1
- package/dist/apme/index.d.ts +26 -5
- package/dist/apme/index.d.ts.map +1 -1
- package/dist/apme/index.js +135 -9
- package/dist/apme/index.js.map +1 -1
- package/dist/apme/pareto.d.ts +39 -0
- package/dist/apme/pareto.d.ts.map +1 -0
- package/dist/apme/pareto.js +59 -0
- package/dist/apme/pareto.js.map +1 -0
- package/dist/apme/recommend.d.ts +3 -0
- package/dist/apme/recommend.d.ts.map +1 -1
- package/dist/apme/recommend.js +43 -1
- package/dist/apme/recommend.js.map +1 -1
- package/dist/apme/runner.d.ts +92 -4
- package/dist/apme/runner.d.ts.map +1 -1
- package/dist/apme/runner.js +586 -70
- package/dist/apme/runner.js.map +1 -1
- package/dist/apme/sample-to-timeline.d.ts +26 -0
- package/dist/apme/sample-to-timeline.d.ts.map +1 -0
- package/dist/apme/sample-to-timeline.js +95 -0
- package/dist/apme/sample-to-timeline.js.map +1 -0
- package/dist/apme/scorers/index.d.ts +47 -0
- package/dist/apme/scorers/index.d.ts.map +1 -0
- package/dist/apme/scorers/index.js +96 -0
- package/dist/apme/scorers/index.js.map +1 -0
- package/dist/apme/settings.d.ts +14 -10
- package/dist/apme/settings.d.ts.map +1 -1
- package/dist/apme/settings.js +34 -8
- package/dist/apme/settings.js.map +1 -1
- package/dist/apme/store.d.ts +33 -1
- package/dist/apme/store.d.ts.map +1 -1
- package/dist/apme/store.js +334 -25
- package/dist/apme/store.js.map +1 -1
- package/dist/awaiting-overlay.d.ts +99 -0
- package/dist/awaiting-overlay.d.ts.map +1 -0
- package/dist/awaiting-overlay.js +148 -0
- package/dist/awaiting-overlay.js.map +1 -0
- package/dist/ble-sync-spawn.d.ts +63 -0
- package/dist/ble-sync-spawn.d.ts.map +1 -0
- package/dist/ble-sync-spawn.js +196 -0
- package/dist/ble-sync-spawn.js.map +1 -0
- package/dist/bridge-core.d.ts +24 -1
- package/dist/bridge-core.d.ts.map +1 -1
- package/dist/bridge-core.js +157 -24
- package/dist/bridge-core.js.map +1 -1
- package/dist/broadcast.d.ts +3 -0
- package/dist/broadcast.d.ts.map +1 -0
- package/dist/broadcast.js +122 -0
- package/dist/broadcast.js.map +1 -0
- package/dist/check-deps.d.ts.map +1 -1
- package/dist/check-deps.js +25 -9
- package/dist/check-deps.js.map +1 -1
- package/dist/cli.d.ts +15 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +1021 -93
- package/dist/cli.js.map +1 -1
- package/dist/codex-auth.d.ts +21 -0
- package/dist/codex-auth.d.ts.map +1 -1
- package/dist/codex-auth.js +52 -1
- package/dist/codex-auth.js.map +1 -1
- package/dist/codex-output-parser.d.ts +8 -0
- package/dist/codex-output-parser.d.ts.map +1 -1
- package/dist/codex-output-parser.js +110 -25
- package/dist/codex-output-parser.js.map +1 -1
- package/dist/codex-rate-limits.d.ts +16 -0
- package/dist/codex-rate-limits.d.ts.map +1 -0
- package/dist/codex-rate-limits.js +197 -0
- package/dist/codex-rate-limits.js.map +1 -0
- package/dist/codex-rollout-response.d.ts +31 -0
- package/dist/codex-rollout-response.d.ts.map +1 -0
- package/dist/codex-rollout-response.js +135 -0
- package/dist/codex-rollout-response.js.map +1 -0
- package/dist/daemon-server.d.ts +85 -0
- package/dist/daemon-server.d.ts.map +1 -1
- package/dist/daemon-server.js +1627 -159
- package/dist/daemon-server.js.map +1 -1
- package/dist/daemon.js +15 -6
- package/dist/daemon.js.map +1 -1
- package/dist/display-dim.d.ts +9 -0
- package/dist/display-dim.d.ts.map +1 -0
- package/dist/display-dim.js +53 -0
- package/dist/display-dim.js.map +1 -0
- package/dist/display-monitor.d.ts +15 -2
- package/dist/display-monitor.d.ts.map +1 -1
- package/dist/display-monitor.js +104 -26
- package/dist/display-monitor.js.map +1 -1
- package/dist/esp32-serial.d.ts +160 -1
- package/dist/esp32-serial.d.ts.map +1 -1
- package/dist/esp32-serial.js +950 -153
- package/dist/esp32-serial.js.map +1 -1
- package/dist/fallback-task-timeline.d.ts +42 -0
- package/dist/fallback-task-timeline.d.ts.map +1 -0
- package/dist/fallback-task-timeline.js +112 -0
- package/dist/fallback-task-timeline.js.map +1 -0
- package/dist/foundation-models-helper.d.ts +11 -0
- package/dist/foundation-models-helper.d.ts.map +1 -0
- package/dist/foundation-models-helper.js +241 -0
- package/dist/foundation-models-helper.js.map +1 -0
- package/dist/hook-migration.js +1 -1
- package/dist/hook-migration.js.map +1 -1
- package/dist/hook-server.d.ts +2 -3
- package/dist/hook-server.d.ts.map +1 -1
- package/dist/hook-server.js +22 -10
- package/dist/hook-server.js.map +1 -1
- package/dist/idotmatrix/idotmatrix-daemon-sync.d.ts +33 -0
- package/dist/idotmatrix/idotmatrix-daemon-sync.d.ts.map +1 -0
- package/dist/idotmatrix/idotmatrix-daemon-sync.js +164 -0
- package/dist/idotmatrix/idotmatrix-daemon-sync.js.map +1 -0
- package/dist/idotmatrix/idotmatrix-discover.d.ts +18 -0
- package/dist/idotmatrix/idotmatrix-discover.d.ts.map +1 -0
- package/dist/idotmatrix/idotmatrix-discover.js +85 -0
- package/dist/idotmatrix/idotmatrix-discover.js.map +1 -0
- package/dist/idotmatrix/idotmatrix-settings.d.ts +20 -0
- package/dist/idotmatrix/idotmatrix-settings.d.ts.map +1 -0
- package/dist/idotmatrix/idotmatrix-settings.js +57 -0
- package/dist/idotmatrix/idotmatrix-settings.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +215 -179
- package/dist/index.js.map +1 -1
- package/dist/log-stream.d.ts +15 -16
- package/dist/log-stream.d.ts.map +1 -1
- package/dist/log-stream.js +18 -96
- package/dist/log-stream.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +12 -3
- package/dist/logger.js.map +1 -1
- package/dist/mdns.d.ts +17 -0
- package/dist/mdns.d.ts.map +1 -1
- package/dist/mdns.js +52 -18
- package/dist/mdns.js.map +1 -1
- package/dist/modules/adb-module.d.ts +1 -1
- package/dist/modules/adb-module.d.ts.map +1 -1
- package/dist/modules/adb-module.js +4 -3
- package/dist/modules/adb-module.js.map +1 -1
- package/dist/modules/broadcast-module.d.ts +17 -0
- package/dist/modules/broadcast-module.d.ts.map +1 -0
- package/dist/modules/broadcast-module.js +26 -0
- package/dist/modules/broadcast-module.js.map +1 -0
- package/dist/modules/idotmatrix-module.d.ts +9 -0
- package/dist/modules/idotmatrix-module.d.ts.map +1 -0
- package/dist/modules/idotmatrix-module.js +46 -0
- package/dist/modules/idotmatrix-module.js.map +1 -0
- package/dist/modules/index.d.ts +3 -1
- package/dist/modules/index.d.ts.map +1 -1
- package/dist/modules/index.js +9 -3
- package/dist/modules/index.js.map +1 -1
- package/dist/modules/pixoo-module.d.ts.map +1 -1
- package/dist/modules/pixoo-module.js +14 -4
- package/dist/modules/pixoo-module.js.map +1 -1
- package/dist/modules/serial-module.d.ts +4 -0
- package/dist/modules/serial-module.d.ts.map +1 -1
- package/dist/modules/serial-module.js +14 -12
- package/dist/modules/serial-module.js.map +1 -1
- package/dist/modules/timebox-module.d.ts +9 -0
- package/dist/modules/timebox-module.d.ts.map +1 -0
- package/dist/modules/timebox-module.js +46 -0
- package/dist/modules/timebox-module.js.map +1 -0
- package/dist/modules/types.d.ts +4 -2
- package/dist/modules/types.d.ts.map +1 -1
- package/dist/openclaw-session.d.ts +18 -0
- package/dist/openclaw-session.d.ts.map +1 -0
- package/dist/openclaw-session.js +34 -0
- package/dist/openclaw-session.js.map +1 -0
- package/dist/output-parser.d.ts +30 -0
- package/dist/output-parser.d.ts.map +1 -1
- package/dist/output-parser.js +125 -9
- package/dist/output-parser.js.map +1 -1
- package/dist/passive-observer.d.ts +26 -0
- package/dist/passive-observer.d.ts.map +1 -1
- package/dist/passive-observer.js +258 -49
- package/dist/passive-observer.js.map +1 -1
- package/dist/permission-resolver.d.ts +47 -0
- package/dist/permission-resolver.d.ts.map +1 -0
- package/dist/permission-resolver.js +103 -0
- package/dist/permission-resolver.js.map +1 -0
- package/dist/pixoo/micro-glyphs.d.ts +49 -0
- package/dist/pixoo/micro-glyphs.d.ts.map +1 -0
- package/dist/pixoo/micro-glyphs.js +276 -0
- package/dist/pixoo/micro-glyphs.js.map +1 -0
- package/dist/pixoo/pixoo-bridge.d.ts +2 -2
- package/dist/pixoo/pixoo-bridge.d.ts.map +1 -1
- package/dist/pixoo/pixoo-bridge.js +93 -25
- package/dist/pixoo/pixoo-bridge.js.map +1 -1
- package/dist/pixoo/pixoo-camera.d.ts +19 -3
- package/dist/pixoo/pixoo-camera.d.ts.map +1 -1
- package/dist/pixoo/pixoo-camera.js +62 -27
- package/dist/pixoo/pixoo-camera.js.map +1 -1
- package/dist/pixoo/pixoo-client.d.ts +13 -3
- package/dist/pixoo/pixoo-client.d.ts.map +1 -1
- package/dist/pixoo/pixoo-client.js +51 -22
- package/dist/pixoo/pixoo-client.js.map +1 -1
- package/dist/pixoo/pixoo-discover.d.ts +37 -0
- package/dist/pixoo/pixoo-discover.d.ts.map +1 -0
- package/dist/pixoo/pixoo-discover.js +105 -0
- package/dist/pixoo/pixoo-discover.js.map +1 -0
- package/dist/pixoo/pixoo-renderer.d.ts +8 -3
- package/dist/pixoo/pixoo-renderer.d.ts.map +1 -1
- package/dist/pixoo/pixoo-renderer.js +189 -60
- package/dist/pixoo/pixoo-renderer.js.map +1 -1
- package/dist/pixoo/pixoo-settings.d.ts +6 -0
- package/dist/pixoo/pixoo-settings.d.ts.map +1 -1
- package/dist/pixoo/pixoo-settings.js +9 -0
- package/dist/pixoo/pixoo-settings.js.map +1 -1
- package/dist/pixoo/pixoo-sprites.d.ts +60 -11
- package/dist/pixoo/pixoo-sprites.d.ts.map +1 -1
- package/dist/pixoo/pixoo-sprites.js +512 -209
- package/dist/pixoo/pixoo-sprites.js.map +1 -1
- package/dist/pty-manager.d.ts.map +1 -1
- package/dist/pty-manager.js +8 -2
- package/dist/pty-manager.js.map +1 -1
- package/dist/session-activity.d.ts +14 -0
- package/dist/session-activity.d.ts.map +1 -0
- package/dist/session-activity.js +160 -0
- package/dist/session-activity.js.map +1 -0
- package/dist/session-aggregator.d.ts +17 -0
- package/dist/session-aggregator.d.ts.map +1 -1
- package/dist/session-aggregator.js +48 -9
- package/dist/session-aggregator.js.map +1 -1
- package/dist/session-registry.d.ts +71 -3
- package/dist/session-registry.d.ts.map +1 -1
- package/dist/session-registry.js +137 -8
- package/dist/session-registry.js.map +1 -1
- package/dist/session-timeline-relay.d.ts.map +1 -1
- package/dist/session-timeline-relay.js +13 -4
- package/dist/session-timeline-relay.js.map +1 -1
- package/dist/session-transcript-timeline.d.ts +49 -0
- package/dist/session-transcript-timeline.d.ts.map +1 -0
- package/dist/session-transcript-timeline.js +276 -0
- package/dist/session-transcript-timeline.js.map +1 -0
- package/dist/state-machine.d.ts +6 -1
- package/dist/state-machine.d.ts.map +1 -1
- package/dist/state-machine.js +86 -28
- package/dist/state-machine.js.map +1 -1
- package/dist/timebox/timebox-daemon-sync.d.ts +19 -0
- package/dist/timebox/timebox-daemon-sync.d.ts.map +1 -0
- package/dist/timebox/timebox-daemon-sync.js +135 -0
- package/dist/timebox/timebox-daemon-sync.js.map +1 -0
- package/dist/timebox/timebox-discover.d.ts +19 -0
- package/dist/timebox/timebox-discover.d.ts.map +1 -0
- package/dist/timebox/timebox-discover.js +87 -0
- package/dist/timebox/timebox-discover.js.map +1 -0
- package/dist/timebox/timebox-settings.d.ts +32 -0
- package/dist/timebox/timebox-settings.d.ts.map +1 -0
- package/dist/timebox/timebox-settings.js +80 -0
- package/dist/timebox/timebox-settings.js.map +1 -0
- package/dist/timeline-store.d.ts +63 -3
- package/dist/timeline-store.d.ts.map +1 -1
- package/dist/timeline-store.js +292 -14
- package/dist/timeline-store.js.map +1 -1
- package/dist/timeline-summarizer.d.ts.map +1 -1
- package/dist/timeline-summarizer.js +29 -5
- package/dist/timeline-summarizer.js.map +1 -1
- package/dist/tui/ansi.d.ts +0 -4
- package/dist/tui/ansi.d.ts.map +1 -1
- package/dist/tui/ansi.js +14 -7
- package/dist/tui/ansi.js.map +1 -1
- package/dist/tui/dashboard.d.ts +1 -0
- package/dist/tui/dashboard.d.ts.map +1 -1
- package/dist/tui/dashboard.js +24 -7
- package/dist/tui/dashboard.js.map +1 -1
- package/dist/tui/renderer.d.ts +36 -0
- package/dist/tui/renderer.d.ts.map +1 -1
- package/dist/tui/renderer.js +303 -119
- package/dist/tui/renderer.js.map +1 -1
- package/dist/tui/terrarium.d.ts.map +1 -1
- package/dist/tui/terrarium.js +37 -49
- package/dist/tui/terrarium.js.map +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -2
- package/dist/types.js.map +1 -1
- package/dist/usage-api.d.ts.map +1 -1
- package/dist/usage-api.js +7 -1
- package/dist/usage-api.js.map +1 -1
- package/dist/usage-event.d.ts +10 -3
- package/dist/usage-event.d.ts.map +1 -1
- package/dist/usage-event.js +74 -12
- package/dist/usage-event.js.map +1 -1
- package/dist/utility-proxy.d.ts.map +1 -1
- package/dist/utility-proxy.js +8 -0
- package/dist/utility-proxy.js.map +1 -1
- package/dist/utils/project-name.d.ts +3 -0
- package/dist/utils/project-name.d.ts.map +1 -1
- package/dist/utils/project-name.js +44 -2
- package/dist/utils/project-name.js.map +1 -1
- package/dist/windows-service.d.ts +26 -0
- package/dist/windows-service.d.ts.map +1 -0
- package/dist/windows-service.js +145 -0
- package/dist/windows-service.js.map +1 -0
- package/dist/ws-server.d.ts +22 -1
- package/dist/ws-server.d.ts.map +1 -1
- package/dist/ws-server.js +89 -4
- package/dist/ws-server.js.map +1 -1
- package/fm-helper/AgentDeckFMHelper.swift +112 -0
- package/package.json +9 -3
- package/scripts/build-fm-helper.mjs +26 -0
- package/LICENSE +0 -21
- package/dist/apme/tuner.d.ts +0 -64
- package/dist/apme/tuner.d.ts.map +0 -1
- package/dist/apme/tuner.js +0 -297
- package/dist/apme/tuner.js.map +0 -1
- package/dist/d200h/hid-protocol.d.ts +0 -62
- package/dist/d200h/hid-protocol.d.ts.map +0 -1
- package/dist/d200h/hid-protocol.js +0 -124
- package/dist/d200h/hid-protocol.js.map +0 -1
- package/dist/d200h/image-renderer.d.ts +0 -36
- package/dist/d200h/image-renderer.d.ts.map +0 -1
- package/dist/d200h/image-renderer.js +0 -487
- package/dist/d200h/image-renderer.js.map +0 -1
- package/dist/modules/d200h-module.d.ts +0 -43
- package/dist/modules/d200h-module.d.ts.map +0 -1
- package/dist/modules/d200h-module.js +0 -360
- package/dist/modules/d200h-module.js.map +0 -1
- package/dist/modules/d200h-renderer.d.ts +0 -7
- package/dist/modules/d200h-renderer.d.ts.map +0 -1
- package/dist/modules/d200h-renderer.js +0 -321
- package/dist/modules/d200h-renderer.js.map +0 -1
package/dist/hook-server.js
CHANGED
|
@@ -7,6 +7,10 @@ import { writeFileSync, unlinkSync } from 'fs';
|
|
|
7
7
|
import { debug } from './logger.js';
|
|
8
8
|
import { isLocalConnection, validateToken } from './auth.js';
|
|
9
9
|
import { onFrameRendered, offFrameRendered, setPreviewFps, getPreviewFps } from './pixoo/pixoo-bridge.js';
|
|
10
|
+
import { STATE_COLORS } from '@agentdeck/shared';
|
|
11
|
+
// Canonical state→color map for the inline status pages, with UPPERCASE
|
|
12
|
+
// aliases since the pages historically key on upper-cased state names.
|
|
13
|
+
const STATE_COLORS_JS = JSON.stringify(Object.fromEntries(Object.entries(STATE_COLORS).flatMap(([k, v]) => [[k, v], [k.toUpperCase(), v]])));
|
|
10
14
|
export class HookServer extends EventEmitter {
|
|
11
15
|
app;
|
|
12
16
|
server;
|
|
@@ -23,7 +27,6 @@ export class HookServer extends EventEmitter {
|
|
|
23
27
|
sseIdCounter = 0;
|
|
24
28
|
lastStateEvent = null;
|
|
25
29
|
lastUsageEvent = null;
|
|
26
|
-
pairingToken = null;
|
|
27
30
|
// Metadata for status page / health
|
|
28
31
|
meta = {};
|
|
29
32
|
constructor() {
|
|
@@ -53,7 +56,7 @@ export class HookServer extends EventEmitter {
|
|
|
53
56
|
setDeviceInfoGetter(getter) {
|
|
54
57
|
this.deviceInfoGetter = getter;
|
|
55
58
|
}
|
|
56
|
-
/** Register a getter that returns the current Pixoo
|
|
59
|
+
/** Register a getter that returns the current Pixoo RGB frame. */
|
|
57
60
|
setPixooFrameGetter(getter) {
|
|
58
61
|
this.pixooFrameGetter = getter;
|
|
59
62
|
}
|
|
@@ -106,7 +109,6 @@ export class HookServer extends EventEmitter {
|
|
|
106
109
|
effortLevel: this.meta.effortLevel,
|
|
107
110
|
wsClients: this.meta.clientCount ?? 0,
|
|
108
111
|
sseClients: this.sseClients.length,
|
|
109
|
-
pairingToken: this.pairingToken,
|
|
110
112
|
});
|
|
111
113
|
});
|
|
112
114
|
// Usage data endpoint (local only, no auth — daemon relays from sibling bridges)
|
|
@@ -197,6 +199,15 @@ export class HookServer extends EventEmitter {
|
|
|
197
199
|
const data = req.body || {};
|
|
198
200
|
debug('Hook', `POST /hooks/${eventName} (${JSON.stringify(data).slice(0, 120)})`);
|
|
199
201
|
this.emit('hook', { event: eventName, data });
|
|
202
|
+
// Managed (`agentdeck claude`) sessions own a PTY that handles permission
|
|
203
|
+
// prompts natively, so they never gate via the hook. The PreToolUse hook
|
|
204
|
+
// script echoes our response to Claude's stdout, so reply with an EMPTY
|
|
205
|
+
// body for PreToolUse (echo → nothing → Claude's normal/ PTY flow). All
|
|
206
|
+
// other events ack as before.
|
|
207
|
+
if (eventName === 'PreToolUse') {
|
|
208
|
+
res.type('application/json').send('');
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
200
211
|
// Respond quickly so the hook doesn't block Claude
|
|
201
212
|
res.json({ received: true });
|
|
202
213
|
});
|
|
@@ -273,13 +284,16 @@ export class HookServer extends EventEmitter {
|
|
|
273
284
|
});
|
|
274
285
|
});
|
|
275
286
|
// Pixoo live preview — serves BMP of current frame
|
|
276
|
-
this.app.get('/pixoo/frame', (
|
|
287
|
+
this.app.get('/pixoo/frame', (req, res) => {
|
|
277
288
|
if (!this.pixooFrameGetter) {
|
|
278
289
|
res.status(503).json({ error: 'Pixoo renderer not available' });
|
|
279
290
|
return;
|
|
280
291
|
}
|
|
281
|
-
const
|
|
282
|
-
const
|
|
292
|
+
const sizeParam = req.query?.size;
|
|
293
|
+
const size = sizeParam === '11' ? 11 : sizeParam === '32' ? 32 : 64;
|
|
294
|
+
const layout = req.query?.layout === 'micro' ? 'micro' : 'standard';
|
|
295
|
+
const rgb = this.pixooFrameGetter(size, layout);
|
|
296
|
+
const bmp = rgbToBmp(rgb, size, size);
|
|
283
297
|
res.set({
|
|
284
298
|
'Content-Type': 'image/bmp',
|
|
285
299
|
'Cache-Control': 'no-store',
|
|
@@ -406,7 +420,7 @@ h1{font-size:20px;color:#94a3b8;margin-bottom:16px}
|
|
|
406
420
|
<script>
|
|
407
421
|
const es=new EventSource("${sseUrl}");
|
|
408
422
|
const $=id=>document.getElementById(id);
|
|
409
|
-
const colors
|
|
423
|
+
const colors=${STATE_COLORS_JS};
|
|
410
424
|
es.addEventListener('state_update',e=>{
|
|
411
425
|
const d=JSON.parse(e.data);
|
|
412
426
|
const s=d.state||'DISCONNECTED';
|
|
@@ -575,9 +589,7 @@ document.querySelectorAll('.fps-btn').forEach(btn=>{
|
|
|
575
589
|
});
|
|
576
590
|
|
|
577
591
|
// State colors
|
|
578
|
-
const stateColors
|
|
579
|
-
AWAITING_OPTION:'#f59e0b',AWAITING_PERMISSION:'#f59e0b',AWAITING_DIFF:'#f59e0b',
|
|
580
|
-
DISCONNECTED:'#ef4444'};
|
|
592
|
+
const stateColors=${STATE_COLORS_JS};
|
|
581
593
|
|
|
582
594
|
// SSE for state info
|
|
583
595
|
const es=new EventSource('/sse');
|
package/dist/hook-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-server.js","sourceRoot":"","sources":["../src/hook-server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hook-server.js","sourceRoot":"","sources":["../src/hook-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* iDotMatrix daemon-managed BLE sync.
|
|
3
|
+
*
|
|
4
|
+
* The Node daemon cannot speak BLE in-process, so when an iDotMatrix device is
|
|
5
|
+
* configured we auto-spawn the Python `sync.py` client (bleak) and manage its
|
|
6
|
+
* lifecycle — start on daemon boot, respawn with backoff if it dies, kill on
|
|
7
|
+
* shutdown. This is what lets the device run with **only the CLI daemon up**
|
|
8
|
+
* (no separate `agentdeck idotmatrix sync`, no Swift app holding the BLE link).
|
|
9
|
+
*
|
|
10
|
+
* sync.py polls the daemon's `/pixoo/frame?size=32` and pushes over BLE, so it
|
|
11
|
+
* tracks the same frames every other surface shows. Only the first configured
|
|
12
|
+
* device is driven (BLE is single-connection; matches the CLI behaviour).
|
|
13
|
+
*
|
|
14
|
+
* This is daemon-only (terminal-managed / Homebrew) code — it never runs in the
|
|
15
|
+
* App Store Swift build, so spawning a subprocess here does not touch the
|
|
16
|
+
* Apple 2.5.2 sandbox invariants.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Start (or no-op if already running) the managed BLE sync for the first
|
|
20
|
+
* configured iDotMatrix device, fed by the daemon at `httpPort`.
|
|
21
|
+
*/
|
|
22
|
+
export declare function startIDotMatrixSync(httpPort: number): void;
|
|
23
|
+
/**
|
|
24
|
+
* Stop the managed BLE sync and cancel any pending respawn.
|
|
25
|
+
*
|
|
26
|
+
* When `awaitFarewell` is true (daemon shutdown), wait for the child to exit so
|
|
27
|
+
* its OFFLINE-frame farewell finishes painting before the daemon process exits —
|
|
28
|
+
* otherwise launchd tears the job down and SIGKILLs the orphaned child
|
|
29
|
+
* mid-farewell, freezing the panel on its last dashboard frame. When false
|
|
30
|
+
* (re-config restart), just signal the child and return synchronously.
|
|
31
|
+
*/
|
|
32
|
+
export declare function stopIDotMatrixSync(awaitFarewell?: boolean): Promise<void>;
|
|
33
|
+
//# sourceMappingURL=idotmatrix-daemon-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idotmatrix-daemon-sync.d.ts","sourceRoot":"","sources":["../../src/idotmatrix/idotmatrix-daemon-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AA+CH;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CA8B1D;AAoDD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,aAAa,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB7E"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* iDotMatrix daemon-managed BLE sync.
|
|
3
|
+
*
|
|
4
|
+
* The Node daemon cannot speak BLE in-process, so when an iDotMatrix device is
|
|
5
|
+
* configured we auto-spawn the Python `sync.py` client (bleak) and manage its
|
|
6
|
+
* lifecycle — start on daemon boot, respawn with backoff if it dies, kill on
|
|
7
|
+
* shutdown. This is what lets the device run with **only the CLI daemon up**
|
|
8
|
+
* (no separate `agentdeck idotmatrix sync`, no Swift app holding the BLE link).
|
|
9
|
+
*
|
|
10
|
+
* sync.py polls the daemon's `/pixoo/frame?size=32` and pushes over BLE, so it
|
|
11
|
+
* tracks the same frames every other surface shows. Only the first configured
|
|
12
|
+
* device is driven (BLE is single-connection; matches the CLI behaviour).
|
|
13
|
+
*
|
|
14
|
+
* This is daemon-only (terminal-managed / Homebrew) code — it never runs in the
|
|
15
|
+
* App Store Swift build, so spawning a subprocess here does not touch the
|
|
16
|
+
* Apple 2.5.2 sandbox invariants.
|
|
17
|
+
*/
|
|
18
|
+
import { existsSync } from 'fs';
|
|
19
|
+
import { join, dirname } from 'path';
|
|
20
|
+
import { fileURLToPath } from 'url';
|
|
21
|
+
import { loadIDotMatrixDevices } from './idotmatrix-settings.js';
|
|
22
|
+
import { createSyncCycleSquelch, spawnPythonSync, terminateSyncChild } from '../ble-sync-spawn.js';
|
|
23
|
+
let child = null;
|
|
24
|
+
let stopping = false;
|
|
25
|
+
let respawnTimer = null;
|
|
26
|
+
let consecutiveFailures = 0;
|
|
27
|
+
let startedAt = 0;
|
|
28
|
+
/** Address+brightness of the device the running child is driving (for reload-on-change). */
|
|
29
|
+
let runningKey = null;
|
|
30
|
+
/** Identity of the driven config — a change means the running child is stale. */
|
|
31
|
+
function deviceKey(d) {
|
|
32
|
+
return `${d.address.toLowerCase()}@${d.brightness ?? 100}`;
|
|
33
|
+
}
|
|
34
|
+
const MAX_BACKOFF_MS = 60_000;
|
|
35
|
+
const BASE_BACKOFF_MS = 5_000;
|
|
36
|
+
/** If the process stayed up at least this long, treat the next exit as fresh. */
|
|
37
|
+
const HEALTHY_UPTIME_MS = 30_000;
|
|
38
|
+
function log(msg) {
|
|
39
|
+
// Match the daemon's `[agentdeck]` stderr prefix.
|
|
40
|
+
console.error(`[agentdeck] [idotmatrix] ${msg}`);
|
|
41
|
+
}
|
|
42
|
+
// Repeated identical respawn cycles (panel off/out of range) collapse into an
|
|
43
|
+
// hourly summary instead of flooding the daemon log all night.
|
|
44
|
+
const squelch = createSyncCycleSquelch(log);
|
|
45
|
+
function resolvePaths() {
|
|
46
|
+
// This file compiles to bridge/dist/idotmatrix/idotmatrix-daemon-sync.js, so
|
|
47
|
+
// the repo root is three levels up.
|
|
48
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
49
|
+
const projectRoot = join(here, '..', '..', '..');
|
|
50
|
+
return {
|
|
51
|
+
venvPython: join(projectRoot, '.venv', 'bin', 'python'),
|
|
52
|
+
syncScript: join(projectRoot, 'bridge', 'src', 'idotmatrix', 'sync.py'),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Start (or no-op if already running) the managed BLE sync for the first
|
|
57
|
+
* configured iDotMatrix device, fed by the daemon at `httpPort`.
|
|
58
|
+
*/
|
|
59
|
+
export function startIDotMatrixSync(httpPort) {
|
|
60
|
+
stopping = false;
|
|
61
|
+
const devices = loadIDotMatrixDevices();
|
|
62
|
+
if (devices.length === 0)
|
|
63
|
+
return; // nothing configured → nothing to drive
|
|
64
|
+
if (child) {
|
|
65
|
+
// Already running. If the configured device/brightness is unchanged this is
|
|
66
|
+
// a no-op; if it changed (re-pair, brightness edit), tear the stale child
|
|
67
|
+
// down so the respawn below picks up the new config instead of silently
|
|
68
|
+
// driving the old panel forever.
|
|
69
|
+
if (runningKey === deviceKey(devices[0]))
|
|
70
|
+
return;
|
|
71
|
+
log('configured iDotMatrix changed; restarting BLE sync');
|
|
72
|
+
// Fast stop on re-config (no farewell wait — we repaint immediately with the
|
|
73
|
+
// new device). Runs synchronously up to the SIGTERM, so `stopping = false`
|
|
74
|
+
// below still lands after the child is signalled.
|
|
75
|
+
void stopIDotMatrixSync();
|
|
76
|
+
stopping = false;
|
|
77
|
+
}
|
|
78
|
+
const { venvPython, syncScript } = resolvePaths();
|
|
79
|
+
if (!existsSync(venvPython) || !existsSync(syncScript)) {
|
|
80
|
+
log(`BLE sync unavailable (missing ${!existsSync(venvPython) ? 'Python venv (.venv)' : 'sync.py'}); ` +
|
|
81
|
+
`iDotMatrix will not be driven by the daemon`);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
spawnSync(venvPython, syncScript, httpPort);
|
|
85
|
+
}
|
|
86
|
+
function spawnSync(venvPython, syncScript, httpPort) {
|
|
87
|
+
if (stopping)
|
|
88
|
+
return;
|
|
89
|
+
const devices = loadIDotMatrixDevices();
|
|
90
|
+
if (devices.length === 0)
|
|
91
|
+
return; // device removed while we were backing off
|
|
92
|
+
const device = devices[0];
|
|
93
|
+
const addr = device.address;
|
|
94
|
+
const brightness = device.brightness ?? 100;
|
|
95
|
+
const url = `http://127.0.0.1:${httpPort}`;
|
|
96
|
+
squelch.logStart(`Starting BLE sync for ${device.name ?? addr} (bridge ${url}, brightness ${brightness}%)`);
|
|
97
|
+
startedAt = Date.now();
|
|
98
|
+
runningKey = deviceKey(device);
|
|
99
|
+
// iDotMatrix software brightness boost canonical = 1.6 — keep in sync:
|
|
100
|
+
// sync.py (run_sync boost default), IDotMatrixModule.swift (boostBrightnessContrast).
|
|
101
|
+
// stdout/stderr are captured into small rings so clean exits and crashes both
|
|
102
|
+
// leave enough context without flooding the daemon log while running.
|
|
103
|
+
const { proc, stderrTail, outputTail } = spawnPythonSync(venvPython, [
|
|
104
|
+
syncScript, '-a', addr, '-u', url, '-b', String(brightness), '--boost', '1.6',
|
|
105
|
+
]);
|
|
106
|
+
child = proc;
|
|
107
|
+
proc.on('error', (err) => {
|
|
108
|
+
log(`BLE sync failed to spawn: ${err.message}`);
|
|
109
|
+
});
|
|
110
|
+
proc.on('exit', (code, signal) => {
|
|
111
|
+
if (child === proc)
|
|
112
|
+
child = null;
|
|
113
|
+
if (stopping)
|
|
114
|
+
return;
|
|
115
|
+
// A long healthy run resets the backoff so a one-off crash recovers fast.
|
|
116
|
+
// Clean code=0 exits are abnormal for daemon-managed sync children (normal
|
|
117
|
+
// shutdown is gated by `stopping` above), so repeated BLE disconnect exits
|
|
118
|
+
// must still escalate instead of flapping every 5 seconds forever.
|
|
119
|
+
const uptimeMs = Date.now() - startedAt;
|
|
120
|
+
if (code !== 0 && uptimeMs > HEALTHY_UPTIME_MS)
|
|
121
|
+
consecutiveFailures = 0;
|
|
122
|
+
consecutiveFailures += 1;
|
|
123
|
+
const delay = Math.min(MAX_BACKOFF_MS, BASE_BACKOFF_MS * consecutiveFailures);
|
|
124
|
+
const tail = stderrTail() || outputTail();
|
|
125
|
+
const why = tail ? `; output: ${tail}` : '';
|
|
126
|
+
squelch.logExit(code, signal, uptimeMs, tail, `BLE sync exited (code=${code} signal=${signal})${why}; respawning in ${Math.round(delay / 1000)}s`);
|
|
127
|
+
respawnTimer = setTimeout(() => spawnSync(venvPython, syncScript, httpPort), delay);
|
|
128
|
+
if (respawnTimer.unref)
|
|
129
|
+
respawnTimer.unref();
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Stop the managed BLE sync and cancel any pending respawn.
|
|
134
|
+
*
|
|
135
|
+
* When `awaitFarewell` is true (daemon shutdown), wait for the child to exit so
|
|
136
|
+
* its OFFLINE-frame farewell finishes painting before the daemon process exits —
|
|
137
|
+
* otherwise launchd tears the job down and SIGKILLs the orphaned child
|
|
138
|
+
* mid-farewell, freezing the panel on its last dashboard frame. When false
|
|
139
|
+
* (re-config restart), just signal the child and return synchronously.
|
|
140
|
+
*/
|
|
141
|
+
export async function stopIDotMatrixSync(awaitFarewell = false) {
|
|
142
|
+
stopping = true;
|
|
143
|
+
if (respawnTimer) {
|
|
144
|
+
clearTimeout(respawnTimer);
|
|
145
|
+
respawnTimer = null;
|
|
146
|
+
}
|
|
147
|
+
const proc = child;
|
|
148
|
+
child = null;
|
|
149
|
+
runningKey = null;
|
|
150
|
+
if (!proc)
|
|
151
|
+
return;
|
|
152
|
+
if (awaitFarewell) {
|
|
153
|
+
await terminateSyncChild(proc);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
try {
|
|
157
|
+
proc.kill('SIGTERM');
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
/* already gone */
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=idotmatrix-daemon-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idotmatrix-daemon-sync.js","sourceRoot":"","sources":["../../src/idotmatrix/idotmatrix-daemon-sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Daemon-side auto-discovery for iDotMatrix panels (BLE).
|
|
3
|
+
*
|
|
4
|
+
* Reuses `scan.py` (bleak) — the same scanner the CLI `idotmatrix scan` drives —
|
|
5
|
+
* but runs it automatically at daemon start when no iDotMatrix is configured, so
|
|
6
|
+
* a fresh install finds the panel without a manual `idotmatrix add`. Auto-add
|
|
7
|
+
* only happens when zero devices are configured and `idotmatrixAutoDiscover`
|
|
8
|
+
* isn't disabled in settings.
|
|
9
|
+
*
|
|
10
|
+
* Terminal-managed CLI daemon code (spawns Python); never runs in the App Store
|
|
11
|
+
* Swift build, which discovers over CoreBluetooth natively.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* BLE-scan for an iDotMatrix panel and add the first match to settings.
|
|
15
|
+
* @returns number of devices added (0 or 1).
|
|
16
|
+
*/
|
|
17
|
+
export declare function autoDiscoverIDotMatrix(): Promise<number>;
|
|
18
|
+
//# sourceMappingURL=idotmatrix-discover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idotmatrix-discover.d.ts","sourceRoot":"","sources":["../../src/idotmatrix/idotmatrix-discover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAgEH;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC,CAc9D"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Daemon-side auto-discovery for iDotMatrix panels (BLE).
|
|
3
|
+
*
|
|
4
|
+
* Reuses `scan.py` (bleak) — the same scanner the CLI `idotmatrix scan` drives —
|
|
5
|
+
* but runs it automatically at daemon start when no iDotMatrix is configured, so
|
|
6
|
+
* a fresh install finds the panel without a manual `idotmatrix add`. Auto-add
|
|
7
|
+
* only happens when zero devices are configured and `idotmatrixAutoDiscover`
|
|
8
|
+
* isn't disabled in settings.
|
|
9
|
+
*
|
|
10
|
+
* Terminal-managed CLI daemon code (spawns Python); never runs in the App Store
|
|
11
|
+
* Swift build, which discovers over CoreBluetooth natively.
|
|
12
|
+
*/
|
|
13
|
+
import { spawn } from 'child_process';
|
|
14
|
+
import { existsSync } from 'fs';
|
|
15
|
+
import { dirname, join } from 'path';
|
|
16
|
+
import { fileURLToPath } from 'url';
|
|
17
|
+
import { addIDotMatrixDevice, isIDotMatrixAutoDiscoverEnabled, loadIDotMatrixDevices, } from './idotmatrix-settings.js';
|
|
18
|
+
function log(msg) {
|
|
19
|
+
console.error(`[agentdeck] [idotmatrix] ${msg}`);
|
|
20
|
+
}
|
|
21
|
+
function resolvePaths() {
|
|
22
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
23
|
+
const projectRoot = join(here, '..', '..', '..');
|
|
24
|
+
return {
|
|
25
|
+
venvPython: join(projectRoot, '.venv', 'bin', 'python'),
|
|
26
|
+
scanScript: join(projectRoot, 'bridge', 'src', 'idotmatrix', 'scan.py'),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/** Run scan.py and parse its JSON, with a hard outer timeout. */
|
|
30
|
+
function runScan(venvPython, scanScript, timeoutMs) {
|
|
31
|
+
return new Promise((resolve) => {
|
|
32
|
+
const proc = spawn(venvPython, [scanScript], { stdio: ['ignore', 'pipe', 'ignore'] });
|
|
33
|
+
let out = '';
|
|
34
|
+
const timer = setTimeout(() => {
|
|
35
|
+
try {
|
|
36
|
+
proc.kill('SIGKILL');
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
/* already gone */
|
|
40
|
+
}
|
|
41
|
+
resolve([]);
|
|
42
|
+
}, timeoutMs);
|
|
43
|
+
if (timer.unref)
|
|
44
|
+
timer.unref();
|
|
45
|
+
proc.stdout?.on('data', (d) => {
|
|
46
|
+
out += d.toString();
|
|
47
|
+
});
|
|
48
|
+
proc.on('error', () => {
|
|
49
|
+
clearTimeout(timer);
|
|
50
|
+
resolve([]);
|
|
51
|
+
});
|
|
52
|
+
proc.on('close', () => {
|
|
53
|
+
clearTimeout(timer);
|
|
54
|
+
try {
|
|
55
|
+
const parsed = JSON.parse(out);
|
|
56
|
+
resolve(Array.isArray(parsed) ? parsed : []);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
resolve([]);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* BLE-scan for an iDotMatrix panel and add the first match to settings.
|
|
66
|
+
* @returns number of devices added (0 or 1).
|
|
67
|
+
*/
|
|
68
|
+
export async function autoDiscoverIDotMatrix() {
|
|
69
|
+
if (!isIDotMatrixAutoDiscoverEnabled())
|
|
70
|
+
return 0;
|
|
71
|
+
if (loadIDotMatrixDevices().length > 0)
|
|
72
|
+
return 0; // only when nothing configured
|
|
73
|
+
const { venvPython, scanScript } = resolvePaths();
|
|
74
|
+
if (!existsSync(venvPython) || !existsSync(scanScript))
|
|
75
|
+
return 0;
|
|
76
|
+
const results = await runScan(venvPython, scanScript, 8_000);
|
|
77
|
+
const match = results.find((r) => r.is_idotmatrix && r.address);
|
|
78
|
+
if (!match)
|
|
79
|
+
return 0;
|
|
80
|
+
const added = addIDotMatrixDevice({ address: match.address, name: match.name });
|
|
81
|
+
if (added)
|
|
82
|
+
log(`auto-discovered iDotMatrix ${match.address} (${match.name})`);
|
|
83
|
+
return added ? 1 : 0;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=idotmatrix-discover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idotmatrix-discover.js","sourceRoot":"","sources":["../../src/idotmatrix/idotmatrix-discover.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* iDotMatrix device settings CRUD — reads/writes idotmatrixDevices[] in ~/.agentdeck/settings.json.
|
|
3
|
+
* Preserves all other settings in the file.
|
|
4
|
+
*/
|
|
5
|
+
export interface IDotMatrixDevice {
|
|
6
|
+
address: string;
|
|
7
|
+
name?: string;
|
|
8
|
+
brightness?: number;
|
|
9
|
+
}
|
|
10
|
+
export declare function loadIDotMatrixDevices(): IDotMatrixDevice[];
|
|
11
|
+
export declare function saveIDotMatrixDevices(devices: IDotMatrixDevice[]): void;
|
|
12
|
+
export declare function addIDotMatrixDevice(device: IDotMatrixDevice): boolean;
|
|
13
|
+
export declare function removeIDotMatrixDevice(address: string): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Whether the daemon may BLE-scan for an iDotMatrix panel when none is
|
|
16
|
+
* configured. Defaults to true (zero-config plug-and-play); set
|
|
17
|
+
* `idotmatrixAutoDiscover: false` in settings.json to opt out.
|
|
18
|
+
*/
|
|
19
|
+
export declare function isIDotMatrixAutoDiscoverEnabled(): boolean;
|
|
20
|
+
//# sourceMappingURL=idotmatrix-settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idotmatrix-settings.d.ts","sourceRoot":"","sources":["../../src/idotmatrix/idotmatrix-settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAmBD,wBAAgB,qBAAqB,IAAI,gBAAgB,EAAE,CAG1D;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAIvE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAMrE;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAM/D;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,IAAI,OAAO,CAEzD"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* iDotMatrix device settings CRUD — reads/writes idotmatrixDevices[] in ~/.agentdeck/settings.json.
|
|
3
|
+
* Preserves all other settings in the file.
|
|
4
|
+
*/
|
|
5
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs';
|
|
6
|
+
import { join } from 'path';
|
|
7
|
+
import { homedir } from 'os';
|
|
8
|
+
const SETTINGS_DIR = join(homedir(), '.agentdeck');
|
|
9
|
+
const SETTINGS_PATH = join(SETTINGS_DIR, 'settings.json');
|
|
10
|
+
function readSettings() {
|
|
11
|
+
try {
|
|
12
|
+
if (!existsSync(SETTINGS_PATH))
|
|
13
|
+
return {};
|
|
14
|
+
return JSON.parse(readFileSync(SETTINGS_PATH, 'utf-8'));
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return {};
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function writeSettings(settings) {
|
|
21
|
+
mkdirSync(SETTINGS_DIR, { recursive: true });
|
|
22
|
+
writeFileSync(SETTINGS_PATH, JSON.stringify(settings, null, 2) + '\n');
|
|
23
|
+
}
|
|
24
|
+
export function loadIDotMatrixDevices() {
|
|
25
|
+
const settings = readSettings();
|
|
26
|
+
return Array.isArray(settings.idotmatrixDevices) ? settings.idotmatrixDevices : [];
|
|
27
|
+
}
|
|
28
|
+
export function saveIDotMatrixDevices(devices) {
|
|
29
|
+
const settings = readSettings();
|
|
30
|
+
settings.idotmatrixDevices = devices;
|
|
31
|
+
writeSettings(settings);
|
|
32
|
+
}
|
|
33
|
+
export function addIDotMatrixDevice(device) {
|
|
34
|
+
const devices = loadIDotMatrixDevices();
|
|
35
|
+
if (devices.some(d => d.address.toLowerCase() === device.address.toLowerCase()))
|
|
36
|
+
return false;
|
|
37
|
+
devices.push(device);
|
|
38
|
+
saveIDotMatrixDevices(devices);
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
export function removeIDotMatrixDevice(address) {
|
|
42
|
+
const devices = loadIDotMatrixDevices();
|
|
43
|
+
const filtered = devices.filter(d => d.address.toLowerCase() !== address.toLowerCase());
|
|
44
|
+
if (filtered.length === devices.length)
|
|
45
|
+
return false;
|
|
46
|
+
saveIDotMatrixDevices(filtered);
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Whether the daemon may BLE-scan for an iDotMatrix panel when none is
|
|
51
|
+
* configured. Defaults to true (zero-config plug-and-play); set
|
|
52
|
+
* `idotmatrixAutoDiscover: false` in settings.json to opt out.
|
|
53
|
+
*/
|
|
54
|
+
export function isIDotMatrixAutoDiscoverEnabled() {
|
|
55
|
+
return readSettings().idotmatrixAutoDiscover !== false;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=idotmatrix-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idotmatrix-settings.js","sourceRoot":"","sources":["../../src/idotmatrix/idotmatrix-settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAQ7B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AACnD,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;AAE1D,SAAS,YAAY;IACnB,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;YAAE,OAAO,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,QAAiC;IACtD,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAA2B;IAC/D,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,QAAQ,CAAC,iBAAiB,GAAG,OAAO,CAAC;IACrC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAwB;IAC1D,MAAM,OAAO,GAAG,qBAAqB,EAAE,CAAC;IACxC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9F,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,MAAM,OAAO,GAAG,qBAAqB,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACxF,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACrD,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,+BAA+B;IAC7C,OAAO,YAAY,EAAE,CAAC,sBAAsB,KAAK,KAAK,CAAC;AACzD,CAAC"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwDH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAUxD,OAAO,EAOL,KAAK,SAAS,EAQf,MAAM,YAAY,CAAC;AAwDpB,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAID,wBAAsB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA2mCtE"}
|