@agentdeck/bridge 0.2.2 → 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/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 +133 -6
- package/dist/apme/collector.d.ts.map +1 -1
- package/dist/apme/collector.js +471 -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 +117 -11
- package/dist/apme/dashboard-html.js.map +1 -1
- package/dist/apme/http.d.ts.map +1 -1
- package/dist/apme/http.js +52 -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 +146 -9
- 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/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 +99 -4
- package/dist/apme/runner.d.ts.map +1 -1
- package/dist/apme/runner.js +743 -72
- 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 +17 -11
- package/dist/apme/settings.d.ts.map +1 -1
- package/dist/apme/settings.js +30 -9
- 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 +112 -0
- package/dist/awaiting-overlay.d.ts.map +1 -0
- package/dist/awaiting-overlay.js +179 -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 +34 -1
- package/dist/bridge-core.d.ts.map +1 -1
- package/dist/bridge-core.js +207 -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/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 +15 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +1030 -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/d200h/image-renderer.d.ts +4 -16
- package/dist/d200h/image-renderer.d.ts.map +1 -1
- package/dist/d200h/image-renderer.js +46 -212
- package/dist/d200h/image-renderer.js.map +1 -1
- package/dist/daemon-server.d.ts +85 -0
- package/dist/daemon-server.d.ts.map +1 -1
- package/dist/daemon-server.js +1975 -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 +190 -1
- package/dist/esp32-serial.d.ts.map +1 -1
- package/dist/esp32-serial.js +1090 -156
- 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 +119 -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 +23 -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 +217 -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 +3 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +18 -5
- 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/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/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/d200h-module.d.ts +22 -0
- package/dist/modules/d200h-module.d.ts.map +1 -1
- package/dist/modules/d200h-module.js +200 -65
- package/dist/modules/d200h-module.js.map +1 -1
- 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/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/modules/types.d.ts +4 -2
- package/dist/modules/types.d.ts.map +1 -1
- 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/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/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 +30 -0
- package/dist/output-parser.d.ts.map +1 -1
- package/dist/output-parser.js +172 -18
- package/dist/output-parser.js.map +1 -1
- package/dist/passive-observer.d.ts +32 -0
- package/dist/passive-observer.d.ts.map +1 -1
- package/dist/passive-observer.js +288 -49
- package/dist/passive-observer.js.map +1 -1
- package/dist/permission-resolver.d.ts +55 -0
- package/dist/permission-resolver.d.ts.map +1 -0
- package/dist/permission-resolver.js +112 -0
- package/dist/permission-resolver.js.map +1 -0
- package/dist/pixoo/micro-glyphs.d.ts +18 -0
- package/dist/pixoo/micro-glyphs.d.ts.map +1 -0
- package/dist/pixoo/micro-glyphs.js +143 -0
- package/dist/pixoo/micro-glyphs.js.map +1 -0
- 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 +16 -8
- package/dist/pixoo/pixoo-bridge.d.ts.map +1 -1
- package/dist/pixoo/pixoo-bridge.js +127 -35
- 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 +27 -3
- package/dist/pixoo/pixoo-renderer.d.ts.map +1 -1
- package/dist/pixoo/pixoo-renderer.js +533 -135
- 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 +84 -11
- package/dist/pixoo/pixoo-sprites.d.ts.map +1 -1
- package/dist/pixoo/pixoo-sprites.js +620 -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/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-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 +25 -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-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 +74 -3
- package/dist/session-registry.d.ts.map +1 -1
- package/dist/session-registry.js +140 -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 +112 -3
- package/dist/timeline-store.d.ts.map +1 -1
- package/dist/timeline-store.js +460 -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/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/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 +38 -11
- 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 +355 -121
- package/dist/tui/renderer.js.map +1 -1
- package/dist/tui/terrarium.d.ts.map +1 -1
- package/dist/tui/terrarium.js +44 -51
- 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 +98 -13
- 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/version-check.d.ts.map +1 -1
- package/dist/version-check.js +1 -17
- package/dist/version-check.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 +17 -3
- package/dist/ws-server.d.ts.map +1 -1
- package/dist/ws-server.js +78 -8
- package/dist/ws-server.js.map +1 -1
- package/fm-helper/AgentDeckFMHelper.swift +112 -0
- package/package.json +10 -4
- 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
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared spawn helper for the daemon-managed Python BLE sync clients
|
|
3
|
+
* (iDotMatrix `sync.py`, Timebox `sync_ble.py`).
|
|
4
|
+
*
|
|
5
|
+
* Both clients were previously spawned with `stdio: 'ignore'`, which keeps the
|
|
6
|
+
* child's verbose stdout from flooding the daemon log — but also discards the
|
|
7
|
+
* crash traceback on stderr. A missing `bleak`/`idotmatrix` dependency, a stale
|
|
8
|
+
* venv, or a bad BLE address then looks identical to a clean exit: the panel
|
|
9
|
+
* goes dark and the daemon logs only "respawning in Ns" with no cause. This
|
|
10
|
+
* helper pipes stdout/stderr into small ring buffers so the manager can log
|
|
11
|
+
* *why* the sync died without flooding the daemon log while it is running.
|
|
12
|
+
*/
|
|
13
|
+
import { spawn } from 'child_process';
|
|
14
|
+
/**
|
|
15
|
+
* Spawn a Python sync child with stdout/stderr captured into bounded tail
|
|
16
|
+
* buffers. Output is not streamed live; callers read it only if the child exits.
|
|
17
|
+
*/
|
|
18
|
+
export function spawnPythonSync(venvPython, args, maxTailLines = 8) {
|
|
19
|
+
// [stdin ignored, stdout/stderr piped into small rings for diagnostics]
|
|
20
|
+
const proc = spawn(venvPython, args, { stdio: ['ignore', 'pipe', 'pipe'] });
|
|
21
|
+
const stderrTail = [];
|
|
22
|
+
const outputTail = [];
|
|
23
|
+
let stderrPartial = '';
|
|
24
|
+
let stdoutPartial = '';
|
|
25
|
+
const capture = (label, chunk) => {
|
|
26
|
+
let partial = label === 'stderr' ? stderrPartial : stdoutPartial;
|
|
27
|
+
partial += chunk.toString();
|
|
28
|
+
const lines = partial.split('\n');
|
|
29
|
+
partial = lines.pop() ?? '';
|
|
30
|
+
for (const line of lines) {
|
|
31
|
+
const trimmed = line.trimEnd();
|
|
32
|
+
if (!trimmed)
|
|
33
|
+
continue;
|
|
34
|
+
const tagged = `${label}: ${trimmed}`;
|
|
35
|
+
outputTail.push(tagged);
|
|
36
|
+
if (outputTail.length > maxTailLines)
|
|
37
|
+
outputTail.shift();
|
|
38
|
+
if (label === 'stderr') {
|
|
39
|
+
stderrTail.push(trimmed);
|
|
40
|
+
if (stderrTail.length > maxTailLines)
|
|
41
|
+
stderrTail.shift();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (label === 'stderr')
|
|
45
|
+
stderrPartial = partial;
|
|
46
|
+
else
|
|
47
|
+
stdoutPartial = partial;
|
|
48
|
+
};
|
|
49
|
+
proc.stdout?.on('data', (chunk) => capture('stdout', chunk));
|
|
50
|
+
proc.stderr?.on('data', (chunk) => capture('stderr', chunk));
|
|
51
|
+
return {
|
|
52
|
+
proc,
|
|
53
|
+
stderrTail: () => {
|
|
54
|
+
const lines = stderrPartial.trim() ? [...stderrTail, stderrPartial.trim()] : stderrTail;
|
|
55
|
+
return lines.slice(-maxTailLines).join(' | ');
|
|
56
|
+
},
|
|
57
|
+
outputTail: () => {
|
|
58
|
+
const lines = [...outputTail];
|
|
59
|
+
if (stdoutPartial.trim())
|
|
60
|
+
lines.push(`stdout: ${stdoutPartial.trim()}`);
|
|
61
|
+
if (stderrPartial.trim())
|
|
62
|
+
lines.push(`stderr: ${stderrPartial.trim()}`);
|
|
63
|
+
return lines.slice(-maxTailLines).join(' | ');
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/** Emit a repeated-cycle summary at most this often while suppressing. */
|
|
68
|
+
const SQUELCH_SUMMARY_INTERVAL_MS = 60 * 60_000;
|
|
69
|
+
/** A run this long means the previous respawn loop ended; the next exit logs fresh. */
|
|
70
|
+
const SQUELCH_RESET_UPTIME_MS = 5 * 60_000;
|
|
71
|
+
/**
|
|
72
|
+
* Collapse variable parts so consecutive exits from the same failure loop
|
|
73
|
+
* compare equal: timestamps/addresses/hashes are masked, and the ` | `-joined
|
|
74
|
+
* output tail is reduced to its set of distinct lines — the ring buffer
|
|
75
|
+
* captures 1 or 2 copies of the same retry error depending on timing, which
|
|
76
|
+
* must not read as a different cycle.
|
|
77
|
+
*/
|
|
78
|
+
function cycleSignature(code, signal, tail) {
|
|
79
|
+
const masked = tail.replace(/[0-9A-Fa-f]{4,}/g, '#').replace(/\d+/g, '#');
|
|
80
|
+
const segments = [...new Set(masked.split(' | ').map((s) => s.trim()))].sort();
|
|
81
|
+
return `${code}|${signal}|${segments.join(' | ')}`;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Log gate for the respawn loop of a managed BLE sync child.
|
|
85
|
+
*
|
|
86
|
+
* A powered-off or out-of-range panel makes the sync child exit the same way
|
|
87
|
+
* every backoff period, all night — thousands of identical start/exit pairs in
|
|
88
|
+
* the daemon log. The gate logs the first two occurrences of an exit cycle in
|
|
89
|
+
* full, then suppresses identical repeats (including their respawn start
|
|
90
|
+
* lines), emitting an hourly count summary instead. Any *different* exit —
|
|
91
|
+
* new error text, non-zero code, a crash after a long healthy run — flushes
|
|
92
|
+
* the summary and logs immediately, so novel failures are never hidden.
|
|
93
|
+
*/
|
|
94
|
+
export function createSyncCycleSquelch(log) {
|
|
95
|
+
let lastSignature = null;
|
|
96
|
+
let repeats = 0; // suppressed repeats of lastSignature (beyond the logged first occurrence)
|
|
97
|
+
let suppressedSinceSummary = 0;
|
|
98
|
+
let suppressedSince = 0;
|
|
99
|
+
let lastSummaryAt = 0;
|
|
100
|
+
let lastLine = '';
|
|
101
|
+
const flush = () => {
|
|
102
|
+
if (suppressedSinceSummary > 0) {
|
|
103
|
+
log(`suppressed ${suppressedSinceSummary} repeats of the same sync cycle since ` +
|
|
104
|
+
`${new Date(suppressedSince).toISOString()}; latest: ${lastLine}`);
|
|
105
|
+
}
|
|
106
|
+
lastSignature = null;
|
|
107
|
+
repeats = 0;
|
|
108
|
+
suppressedSinceSummary = 0;
|
|
109
|
+
};
|
|
110
|
+
return {
|
|
111
|
+
logStart(line) {
|
|
112
|
+
if (repeats > 0)
|
|
113
|
+
return; // inside a suppressed repeating cycle
|
|
114
|
+
log(line);
|
|
115
|
+
},
|
|
116
|
+
logExit(code, signal, uptimeMs, tail, line) {
|
|
117
|
+
// A long healthy run means the old loop ended; whatever exits next is a
|
|
118
|
+
// fresh incident even if the text matches the old one.
|
|
119
|
+
if (uptimeMs >= SQUELCH_RESET_UPTIME_MS)
|
|
120
|
+
flush();
|
|
121
|
+
const signature = cycleSignature(code, signal, tail);
|
|
122
|
+
if (signature !== lastSignature) {
|
|
123
|
+
flush();
|
|
124
|
+
lastSignature = signature;
|
|
125
|
+
log(line);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
repeats += 1;
|
|
129
|
+
suppressedSinceSummary += 1;
|
|
130
|
+
lastLine = line;
|
|
131
|
+
const now = Date.now();
|
|
132
|
+
if (repeats === 1) {
|
|
133
|
+
// Second identical cycle: log it once more, then go quiet.
|
|
134
|
+
suppressedSinceSummary = 0;
|
|
135
|
+
suppressedSince = now;
|
|
136
|
+
lastSummaryAt = now;
|
|
137
|
+
log(`${line} — repeating cycle; suppressing identical start/exit logs (hourly summary, a different exit logs immediately)`);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
if (now - lastSummaryAt >= SQUELCH_SUMMARY_INTERVAL_MS) {
|
|
141
|
+
log(`suppressed ${suppressedSinceSummary} repeats of the same sync cycle in the last ` +
|
|
142
|
+
`${Math.round((now - lastSummaryAt) / 60_000)}m; latest: ${lastLine}`);
|
|
143
|
+
lastSummaryAt = now;
|
|
144
|
+
suppressedSinceSummary = 0;
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* SIGTERM a managed sync child and wait (bounded) for it to exit, so the child's
|
|
151
|
+
* OFFLINE / blank farewell frame finishes painting before the daemon process
|
|
152
|
+
* exits.
|
|
153
|
+
*
|
|
154
|
+
* The Python sync clients trap SIGTERM, break their loop, push a final OFFLINE
|
|
155
|
+
* (iDotMatrix) or black (Timebox) frame over BLE, then disconnect. That push
|
|
156
|
+
* takes ~1s. If we only fire SIGTERM and return immediately (the old behaviour),
|
|
157
|
+
* the daemon exits right away; when the daemon is a launchd job, launchd then
|
|
158
|
+
* tears the job down and SIGKILLs the orphaned child mid-farewell — leaving the
|
|
159
|
+
* stateful BLE panel frozen on its last dashboard frame instead of OFFLINE.
|
|
160
|
+
* Awaiting the child's exit here keeps the daemon alive just long enough for the
|
|
161
|
+
* farewell to land. Escalates to SIGKILL if the child overruns `timeoutMs`.
|
|
162
|
+
*/
|
|
163
|
+
export function terminateSyncChild(proc, timeoutMs = 3_000) {
|
|
164
|
+
return new Promise((resolve) => {
|
|
165
|
+
if (proc.exitCode !== null || proc.signalCode !== null) {
|
|
166
|
+
resolve();
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
let settled = false;
|
|
170
|
+
const finish = () => {
|
|
171
|
+
if (settled)
|
|
172
|
+
return;
|
|
173
|
+
settled = true;
|
|
174
|
+
clearTimeout(timer);
|
|
175
|
+
resolve();
|
|
176
|
+
};
|
|
177
|
+
const timer = setTimeout(() => {
|
|
178
|
+
try {
|
|
179
|
+
proc.kill('SIGKILL');
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
/* already gone */
|
|
183
|
+
}
|
|
184
|
+
finish();
|
|
185
|
+
}, timeoutMs);
|
|
186
|
+
timer.unref?.();
|
|
187
|
+
proc.once('exit', finish);
|
|
188
|
+
try {
|
|
189
|
+
proc.kill('SIGTERM');
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
finish();
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=ble-sync-spawn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ble-sync-spawn.js","sourceRoot":"","sources":["../src/ble-sync-spawn.ts"],"names":[],"mappings":"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"}
|
package/dist/bridge-core.d.ts
CHANGED
|
@@ -9,12 +9,28 @@ import { BridgeTimelineStore } from './timeline-store.js';
|
|
|
9
9
|
import type { BridgeLogStream } from './log-stream.js';
|
|
10
10
|
import { type ApiUsageData } from './usage-api.js';
|
|
11
11
|
import type { ApmeModule } from './apme/index.js';
|
|
12
|
-
import { type BridgeEvent, type StateSnapshot, type AgentType, type AgentCapabilities, type ModelCatalogEntry, type VoiceAssistantState } from './types.js';
|
|
12
|
+
import { type BridgeEvent, type StateSnapshot, type AgentType, type AgentCapabilities, type ModelCatalogEntry, type VoiceAssistantState, type TimelineEntry } from './types.js';
|
|
13
|
+
export declare const INITIAL_TIMELINE_HISTORY_MAX_BYTES: number;
|
|
14
|
+
/** Attach host-local "HH:MM" to a timeline entry. Devices have no timezone
|
|
15
|
+
* (their NTP runs UTC), so rendering `ts` directly shows a 9-hour-off clock
|
|
16
|
+
* in KST. Stamped at the SOURCE (broadcast + history) so both the serial and
|
|
17
|
+
* WS transports carry it; native apps simply ignore the extra field. */
|
|
18
|
+
export declare function stampLocalHm<T extends {
|
|
19
|
+
ts?: number;
|
|
20
|
+
localHm?: string;
|
|
21
|
+
}>(entry: T): T;
|
|
22
|
+
export declare function buildCappedTimelineHistory(entries: TimelineEntry[], maxBytes?: number, extraFields?: Record<string, unknown>): BridgeEvent | null;
|
|
13
23
|
export interface BridgeCoreOptions {
|
|
14
24
|
port: number;
|
|
15
25
|
sessionId?: string;
|
|
16
26
|
projectName: string;
|
|
17
27
|
httpServer: Server;
|
|
28
|
+
/**
|
|
29
|
+
* True for the daemon hub. The hub aggregates many agents and has no single
|
|
30
|
+
* session model, so it must always expose the account-level Claude subscription
|
|
31
|
+
* quota in usage events rather than gating it on the (arbitrary) active model.
|
|
32
|
+
*/
|
|
33
|
+
isDaemon?: boolean;
|
|
18
34
|
}
|
|
19
35
|
/**
|
|
20
36
|
* Shared infrastructure extracted from index.ts and daemon-server.ts.
|
|
@@ -47,6 +63,7 @@ export declare class BridgeCore {
|
|
|
47
63
|
cachedAntigravityStatus: import("./antigravity-local.js").AntigravityStatusInfo | null;
|
|
48
64
|
cachedGatewayAvailable: boolean;
|
|
49
65
|
cachedGatewayConnected: boolean;
|
|
66
|
+
cachedGatewayAuthStatus: 'gateway_not_found' | 'gateway_reachable' | 'gateway_token_missing' | 'pairing_required' | 'approval_pending' | 'connected' | 'auth_failed' | 'token_mismatch' | 'device_auth_invalid' | 'unsupported_protocol';
|
|
50
67
|
cachedGatewayHasError: boolean;
|
|
51
68
|
cachedModelCatalog: ModelCatalogEntry[] | null;
|
|
52
69
|
cachedVoiceAssistantState: VoiceAssistantState;
|
|
@@ -55,6 +72,7 @@ export declare class BridgeCore {
|
|
|
55
72
|
private intervals;
|
|
56
73
|
private timeouts;
|
|
57
74
|
private lastSessionsListBroadcast;
|
|
75
|
+
private lastSessionsListEvent;
|
|
58
76
|
private shutdownInProgress;
|
|
59
77
|
private shutdownCallbacks;
|
|
60
78
|
private sseBroadcast?;
|
|
@@ -69,6 +87,8 @@ export declare class BridgeCore {
|
|
|
69
87
|
private apmeAgentType;
|
|
70
88
|
private apmeCwd;
|
|
71
89
|
private static readonly USAGE_STALE_TTL;
|
|
90
|
+
/** True when this core backs the daemon hub (see BridgeCoreOptions.isDaemon). */
|
|
91
|
+
readonly isDaemon: boolean;
|
|
72
92
|
constructor(opts: BridgeCoreOptions);
|
|
73
93
|
/** Set optional SSE broadcast callback (for HookServer-based sessions) */
|
|
74
94
|
setSseBroadcast(cb: (evt: BridgeEvent) => void): void;
|
|
@@ -132,6 +152,19 @@ export declare class BridgeCore {
|
|
|
132
152
|
private hasClients;
|
|
133
153
|
/** Broadcast enriched sessions list (debounced 2s from state_changed) */
|
|
134
154
|
broadcastSessionsList(): Promise<void>;
|
|
155
|
+
/** The most recent sessions_list event, for the ESP32 serial heartbeat
|
|
156
|
+
* re-sync. Null until the first broadcast. */
|
|
157
|
+
getLastSessionsListEvent(): BridgeEvent | null;
|
|
158
|
+
/**
|
|
159
|
+
* Attach each session's latest MILESTONE timeline row (TIMELINE parity for
|
|
160
|
+
* glance devices): `lastEventText` (row text), `lastEventTask` (resolved
|
|
161
|
+
* enclosing-task label) and `lastEventHm` (host-local HH:MM). Display boards
|
|
162
|
+
* (IPS10 cards) render these instead of depending on their tiny on-device
|
|
163
|
+
* timeline ring, which starts empty after every board reboot. Dashboards
|
|
164
|
+
* carry the full timeline and ignore the fields. Swift daemon mirror:
|
|
165
|
+
* DaemonServer.noteTimelineEntryForBoards / buildSessionsListEvent.
|
|
166
|
+
*/
|
|
167
|
+
private attachLastEventFields;
|
|
135
168
|
/** Debounced sessions list broadcast (for state_changed handler) */
|
|
136
169
|
maybeBroadcastSessionsList(): void;
|
|
137
170
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge-core.d.ts","sourceRoot":"","sources":["../src/bridge-core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,SAAS,MAAM,IAAI,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"bridge-core.d.ts","sourceRoot":"","sources":["../src/bridge-core.ts"],"names":[],"mappings":"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"}
|