@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.
Files changed (435) hide show
  1. package/assets/fm-helper/agentdeck-fm-helper +0 -0
  2. package/assets/fonts/IBMPlexSans-Bold.ttf +0 -0
  3. package/assets/fonts/IBMPlexSans-Regular.ttf +0 -0
  4. package/assets/fonts/JetBrainsMono-Bold.ttf +0 -0
  5. package/assets/fonts/JetBrainsMono-Regular.ttf +0 -0
  6. package/assets/fonts/LICENSES.md +22 -0
  7. package/dist/adapters/claude-code.d.ts +6 -0
  8. package/dist/adapters/claude-code.d.ts.map +1 -1
  9. package/dist/adapters/claude-code.js +8 -0
  10. package/dist/adapters/claude-code.js.map +1 -1
  11. package/dist/adapters/openclaw.d.ts +24 -0
  12. package/dist/adapters/openclaw.d.ts.map +1 -1
  13. package/dist/adapters/openclaw.js +291 -35
  14. package/dist/adapters/openclaw.js.map +1 -1
  15. package/dist/adapters/opencode-adapter.d.ts +59 -0
  16. package/dist/adapters/opencode-adapter.d.ts.map +1 -1
  17. package/dist/adapters/opencode-adapter.js +297 -35
  18. package/dist/adapters/opencode-adapter.js.map +1 -1
  19. package/dist/adb-reverse.d.ts +1 -1
  20. package/dist/adb-reverse.js +1 -1
  21. package/dist/antigravity-local.d.ts +1 -0
  22. package/dist/antigravity-local.d.ts.map +1 -1
  23. package/dist/antigravity-local.js +33 -0
  24. package/dist/antigravity-local.js.map +1 -1
  25. package/dist/apme/adapters/claude-hook.d.ts.map +1 -1
  26. package/dist/apme/adapters/claude-hook.js +5 -0
  27. package/dist/apme/adapters/claude-hook.js.map +1 -1
  28. package/dist/apme/adapters/codex-hook.d.ts +17 -0
  29. package/dist/apme/adapters/codex-hook.d.ts.map +1 -0
  30. package/dist/apme/adapters/codex-hook.js +95 -0
  31. package/dist/apme/adapters/codex-hook.js.map +1 -0
  32. package/dist/apme/adapters/codex-turn-manager.d.ts +86 -0
  33. package/dist/apme/adapters/codex-turn-manager.d.ts.map +1 -0
  34. package/dist/apme/adapters/codex-turn-manager.js +496 -0
  35. package/dist/apme/adapters/codex-turn-manager.js.map +1 -0
  36. package/dist/apme/adapters/openclaw-hook.d.ts +99 -0
  37. package/dist/apme/adapters/openclaw-hook.d.ts.map +1 -0
  38. package/dist/apme/adapters/openclaw-hook.js +234 -0
  39. package/dist/apme/adapters/openclaw-hook.js.map +1 -0
  40. package/dist/apme/adapters/opencode-hook.d.ts +56 -0
  41. package/dist/apme/adapters/opencode-hook.d.ts.map +1 -0
  42. package/dist/apme/adapters/opencode-hook.js +182 -0
  43. package/dist/apme/adapters/opencode-hook.js.map +1 -0
  44. package/dist/apme/adapters/timeline.d.ts.map +1 -1
  45. package/dist/apme/adapters/timeline.js +6 -1
  46. package/dist/apme/adapters/timeline.js.map +1 -1
  47. package/dist/apme/antigravity-transcript.d.ts +18 -0
  48. package/dist/apme/antigravity-transcript.d.ts.map +1 -0
  49. package/dist/apme/antigravity-transcript.js +94 -0
  50. package/dist/apme/antigravity-transcript.js.map +1 -0
  51. package/dist/apme/classify-turn.d.ts +13 -0
  52. package/dist/apme/classify-turn.d.ts.map +1 -0
  53. package/dist/apme/classify-turn.js +49 -0
  54. package/dist/apme/classify-turn.js.map +1 -0
  55. package/dist/apme/claude-transcript-reader.d.ts +10 -0
  56. package/dist/apme/claude-transcript-reader.d.ts.map +1 -1
  57. package/dist/apme/claude-transcript-reader.js +35 -0
  58. package/dist/apme/claude-transcript-reader.js.map +1 -1
  59. package/dist/apme/collector.d.ts +133 -6
  60. package/dist/apme/collector.d.ts.map +1 -1
  61. package/dist/apme/collector.js +471 -23
  62. package/dist/apme/collector.js.map +1 -1
  63. package/dist/apme/dashboard-html.d.ts.map +1 -1
  64. package/dist/apme/dashboard-html.js +117 -11
  65. package/dist/apme/dashboard-html.js.map +1 -1
  66. package/dist/apme/http.d.ts.map +1 -1
  67. package/dist/apme/http.js +52 -6
  68. package/dist/apme/http.js.map +1 -1
  69. package/dist/apme/index.d.ts +26 -5
  70. package/dist/apme/index.d.ts.map +1 -1
  71. package/dist/apme/index.js +146 -9
  72. package/dist/apme/index.js.map +1 -1
  73. package/dist/apme/judge-detect.d.ts +26 -0
  74. package/dist/apme/judge-detect.d.ts.map +1 -0
  75. package/dist/apme/judge-detect.js +69 -0
  76. package/dist/apme/judge-detect.js.map +1 -0
  77. package/dist/apme/pareto.d.ts +39 -0
  78. package/dist/apme/pareto.d.ts.map +1 -0
  79. package/dist/apme/pareto.js +59 -0
  80. package/dist/apme/pareto.js.map +1 -0
  81. package/dist/apme/recommend.d.ts +3 -0
  82. package/dist/apme/recommend.d.ts.map +1 -1
  83. package/dist/apme/recommend.js +43 -1
  84. package/dist/apme/recommend.js.map +1 -1
  85. package/dist/apme/runner.d.ts +99 -4
  86. package/dist/apme/runner.d.ts.map +1 -1
  87. package/dist/apme/runner.js +743 -72
  88. package/dist/apme/runner.js.map +1 -1
  89. package/dist/apme/sample-to-timeline.d.ts +26 -0
  90. package/dist/apme/sample-to-timeline.d.ts.map +1 -0
  91. package/dist/apme/sample-to-timeline.js +95 -0
  92. package/dist/apme/sample-to-timeline.js.map +1 -0
  93. package/dist/apme/scorers/index.d.ts +47 -0
  94. package/dist/apme/scorers/index.d.ts.map +1 -0
  95. package/dist/apme/scorers/index.js +96 -0
  96. package/dist/apme/scorers/index.js.map +1 -0
  97. package/dist/apme/settings.d.ts +17 -11
  98. package/dist/apme/settings.d.ts.map +1 -1
  99. package/dist/apme/settings.js +30 -9
  100. package/dist/apme/settings.js.map +1 -1
  101. package/dist/apme/store.d.ts +33 -1
  102. package/dist/apme/store.d.ts.map +1 -1
  103. package/dist/apme/store.js +334 -25
  104. package/dist/apme/store.js.map +1 -1
  105. package/dist/awaiting-overlay.d.ts +112 -0
  106. package/dist/awaiting-overlay.d.ts.map +1 -0
  107. package/dist/awaiting-overlay.js +179 -0
  108. package/dist/awaiting-overlay.js.map +1 -0
  109. package/dist/ble-sync-spawn.d.ts +63 -0
  110. package/dist/ble-sync-spawn.d.ts.map +1 -0
  111. package/dist/ble-sync-spawn.js +196 -0
  112. package/dist/ble-sync-spawn.js.map +1 -0
  113. package/dist/bridge-core.d.ts +34 -1
  114. package/dist/bridge-core.d.ts.map +1 -1
  115. package/dist/bridge-core.js +207 -24
  116. package/dist/bridge-core.js.map +1 -1
  117. package/dist/broadcast.d.ts +3 -0
  118. package/dist/broadcast.d.ts.map +1 -0
  119. package/dist/broadcast.js +122 -0
  120. package/dist/broadcast.js.map +1 -0
  121. package/dist/check-deps.d.ts.map +1 -1
  122. package/dist/check-deps.js +25 -9
  123. package/dist/check-deps.js.map +1 -1
  124. package/dist/claude-permission-rules.d.ts +55 -0
  125. package/dist/claude-permission-rules.d.ts.map +1 -0
  126. package/dist/claude-permission-rules.js +197 -0
  127. package/dist/claude-permission-rules.js.map +1 -0
  128. package/dist/cli.d.ts +15 -1
  129. package/dist/cli.d.ts.map +1 -1
  130. package/dist/cli.js +1030 -93
  131. package/dist/cli.js.map +1 -1
  132. package/dist/codex-auth.d.ts +21 -0
  133. package/dist/codex-auth.d.ts.map +1 -1
  134. package/dist/codex-auth.js +52 -1
  135. package/dist/codex-auth.js.map +1 -1
  136. package/dist/codex-output-parser.d.ts +8 -0
  137. package/dist/codex-output-parser.d.ts.map +1 -1
  138. package/dist/codex-output-parser.js +110 -25
  139. package/dist/codex-output-parser.js.map +1 -1
  140. package/dist/codex-rate-limits.d.ts +16 -0
  141. package/dist/codex-rate-limits.d.ts.map +1 -0
  142. package/dist/codex-rate-limits.js +197 -0
  143. package/dist/codex-rate-limits.js.map +1 -0
  144. package/dist/codex-rollout-response.d.ts +31 -0
  145. package/dist/codex-rollout-response.d.ts.map +1 -0
  146. package/dist/codex-rollout-response.js +135 -0
  147. package/dist/codex-rollout-response.js.map +1 -0
  148. package/dist/d200h/image-renderer.d.ts +4 -16
  149. package/dist/d200h/image-renderer.d.ts.map +1 -1
  150. package/dist/d200h/image-renderer.js +46 -212
  151. package/dist/d200h/image-renderer.js.map +1 -1
  152. package/dist/daemon-server.d.ts +85 -0
  153. package/dist/daemon-server.d.ts.map +1 -1
  154. package/dist/daemon-server.js +1975 -159
  155. package/dist/daemon-server.js.map +1 -1
  156. package/dist/daemon.js +15 -6
  157. package/dist/daemon.js.map +1 -1
  158. package/dist/display-dim.d.ts +9 -0
  159. package/dist/display-dim.d.ts.map +1 -0
  160. package/dist/display-dim.js +53 -0
  161. package/dist/display-dim.js.map +1 -0
  162. package/dist/display-monitor.d.ts +15 -2
  163. package/dist/display-monitor.d.ts.map +1 -1
  164. package/dist/display-monitor.js +104 -26
  165. package/dist/display-monitor.js.map +1 -1
  166. package/dist/esp32-serial.d.ts +190 -1
  167. package/dist/esp32-serial.d.ts.map +1 -1
  168. package/dist/esp32-serial.js +1090 -156
  169. package/dist/esp32-serial.js.map +1 -1
  170. package/dist/fallback-task-timeline.d.ts +42 -0
  171. package/dist/fallback-task-timeline.d.ts.map +1 -0
  172. package/dist/fallback-task-timeline.js +119 -0
  173. package/dist/fallback-task-timeline.js.map +1 -0
  174. package/dist/foundation-models-helper.d.ts +11 -0
  175. package/dist/foundation-models-helper.d.ts.map +1 -0
  176. package/dist/foundation-models-helper.js +241 -0
  177. package/dist/foundation-models-helper.js.map +1 -0
  178. package/dist/hook-migration.js +1 -1
  179. package/dist/hook-migration.js.map +1 -1
  180. package/dist/hook-server.d.ts +2 -3
  181. package/dist/hook-server.d.ts.map +1 -1
  182. package/dist/hook-server.js +23 -10
  183. package/dist/hook-server.js.map +1 -1
  184. package/dist/idotmatrix/idotmatrix-daemon-sync.d.ts +33 -0
  185. package/dist/idotmatrix/idotmatrix-daemon-sync.d.ts.map +1 -0
  186. package/dist/idotmatrix/idotmatrix-daemon-sync.js +164 -0
  187. package/dist/idotmatrix/idotmatrix-daemon-sync.js.map +1 -0
  188. package/dist/idotmatrix/idotmatrix-discover.d.ts +18 -0
  189. package/dist/idotmatrix/idotmatrix-discover.d.ts.map +1 -0
  190. package/dist/idotmatrix/idotmatrix-discover.js +85 -0
  191. package/dist/idotmatrix/idotmatrix-discover.js.map +1 -0
  192. package/dist/idotmatrix/idotmatrix-settings.d.ts +20 -0
  193. package/dist/idotmatrix/idotmatrix-settings.d.ts.map +1 -0
  194. package/dist/idotmatrix/idotmatrix-settings.js +57 -0
  195. package/dist/idotmatrix/idotmatrix-settings.js.map +1 -0
  196. package/dist/index.d.ts.map +1 -1
  197. package/dist/index.js +217 -179
  198. package/dist/index.js.map +1 -1
  199. package/dist/log-stream.d.ts +15 -16
  200. package/dist/log-stream.d.ts.map +1 -1
  201. package/dist/log-stream.js +18 -96
  202. package/dist/log-stream.js.map +1 -1
  203. package/dist/logger.d.ts +3 -1
  204. package/dist/logger.d.ts.map +1 -1
  205. package/dist/logger.js +18 -5
  206. package/dist/logger.js.map +1 -1
  207. package/dist/mdns.d.ts +17 -0
  208. package/dist/mdns.d.ts.map +1 -1
  209. package/dist/mdns.js +52 -18
  210. package/dist/mdns.js.map +1 -1
  211. package/dist/model-catalog.d.ts +1 -1
  212. package/dist/model-catalog.d.ts.map +1 -1
  213. package/dist/model-catalog.js +2 -4
  214. package/dist/model-catalog.js.map +1 -1
  215. package/dist/modules/adb-module.d.ts +1 -1
  216. package/dist/modules/adb-module.d.ts.map +1 -1
  217. package/dist/modules/adb-module.js +4 -3
  218. package/dist/modules/adb-module.js.map +1 -1
  219. package/dist/modules/broadcast-module.d.ts +17 -0
  220. package/dist/modules/broadcast-module.d.ts.map +1 -0
  221. package/dist/modules/broadcast-module.js +26 -0
  222. package/dist/modules/broadcast-module.js.map +1 -0
  223. package/dist/modules/d200h-module.d.ts +22 -0
  224. package/dist/modules/d200h-module.d.ts.map +1 -1
  225. package/dist/modules/d200h-module.js +200 -65
  226. package/dist/modules/d200h-module.js.map +1 -1
  227. package/dist/modules/idotmatrix-module.d.ts +9 -0
  228. package/dist/modules/idotmatrix-module.d.ts.map +1 -0
  229. package/dist/modules/idotmatrix-module.js +46 -0
  230. package/dist/modules/idotmatrix-module.js.map +1 -0
  231. package/dist/modules/index.d.ts +3 -1
  232. package/dist/modules/index.d.ts.map +1 -1
  233. package/dist/modules/index.js +9 -3
  234. package/dist/modules/index.js.map +1 -1
  235. package/dist/modules/pixoo-module.d.ts.map +1 -1
  236. package/dist/modules/pixoo-module.js +14 -4
  237. package/dist/modules/pixoo-module.js.map +1 -1
  238. package/dist/modules/serial-module.d.ts +4 -0
  239. package/dist/modules/serial-module.d.ts.map +1 -1
  240. package/dist/modules/serial-module.js +14 -12
  241. package/dist/modules/serial-module.js.map +1 -1
  242. package/dist/modules/timebox-module.d.ts +9 -0
  243. package/dist/modules/timebox-module.d.ts.map +1 -0
  244. package/dist/modules/timebox-module.js +46 -0
  245. package/dist/modules/timebox-module.js.map +1 -0
  246. package/dist/modules/trmnl-module.d.ts +38 -0
  247. package/dist/modules/trmnl-module.d.ts.map +1 -0
  248. package/dist/modules/trmnl-module.js +111 -0
  249. package/dist/modules/trmnl-module.js.map +1 -0
  250. package/dist/modules/types.d.ts +4 -2
  251. package/dist/modules/types.d.ts.map +1 -1
  252. package/dist/observed-steering.d.ts +93 -0
  253. package/dist/observed-steering.d.ts.map +1 -0
  254. package/dist/observed-steering.js +247 -0
  255. package/dist/observed-steering.js.map +1 -0
  256. package/dist/openclaw-session.d.ts +18 -0
  257. package/dist/openclaw-session.d.ts.map +1 -0
  258. package/dist/openclaw-session.js +34 -0
  259. package/dist/openclaw-session.js.map +1 -0
  260. package/dist/opencode-steering.d.ts +36 -0
  261. package/dist/opencode-steering.d.ts.map +1 -0
  262. package/dist/opencode-steering.js +84 -0
  263. package/dist/opencode-steering.js.map +1 -0
  264. package/dist/output-parser.d.ts +30 -0
  265. package/dist/output-parser.d.ts.map +1 -1
  266. package/dist/output-parser.js +172 -18
  267. package/dist/output-parser.js.map +1 -1
  268. package/dist/passive-observer.d.ts +32 -0
  269. package/dist/passive-observer.d.ts.map +1 -1
  270. package/dist/passive-observer.js +288 -49
  271. package/dist/passive-observer.js.map +1 -1
  272. package/dist/permission-resolver.d.ts +55 -0
  273. package/dist/permission-resolver.d.ts.map +1 -0
  274. package/dist/permission-resolver.js +112 -0
  275. package/dist/permission-resolver.js.map +1 -0
  276. package/dist/pixoo/micro-glyphs.d.ts +18 -0
  277. package/dist/pixoo/micro-glyphs.d.ts.map +1 -0
  278. package/dist/pixoo/micro-glyphs.js +143 -0
  279. package/dist/pixoo/micro-glyphs.js.map +1 -0
  280. package/dist/pixoo/official-dot-glyphs.generated.d.ts +8 -0
  281. package/dist/pixoo/official-dot-glyphs.generated.d.ts.map +1 -0
  282. package/dist/pixoo/official-dot-glyphs.generated.js +247 -0
  283. package/dist/pixoo/official-dot-glyphs.generated.js.map +1 -0
  284. package/dist/pixoo/pixoo-bridge.d.ts +16 -8
  285. package/dist/pixoo/pixoo-bridge.d.ts.map +1 -1
  286. package/dist/pixoo/pixoo-bridge.js +127 -35
  287. package/dist/pixoo/pixoo-bridge.js.map +1 -1
  288. package/dist/pixoo/pixoo-camera.d.ts +19 -3
  289. package/dist/pixoo/pixoo-camera.d.ts.map +1 -1
  290. package/dist/pixoo/pixoo-camera.js +62 -27
  291. package/dist/pixoo/pixoo-camera.js.map +1 -1
  292. package/dist/pixoo/pixoo-client.d.ts +13 -3
  293. package/dist/pixoo/pixoo-client.d.ts.map +1 -1
  294. package/dist/pixoo/pixoo-client.js +51 -22
  295. package/dist/pixoo/pixoo-client.js.map +1 -1
  296. package/dist/pixoo/pixoo-discover.d.ts +37 -0
  297. package/dist/pixoo/pixoo-discover.d.ts.map +1 -0
  298. package/dist/pixoo/pixoo-discover.js +105 -0
  299. package/dist/pixoo/pixoo-discover.js.map +1 -0
  300. package/dist/pixoo/pixoo-renderer.d.ts +27 -3
  301. package/dist/pixoo/pixoo-renderer.d.ts.map +1 -1
  302. package/dist/pixoo/pixoo-renderer.js +533 -135
  303. package/dist/pixoo/pixoo-renderer.js.map +1 -1
  304. package/dist/pixoo/pixoo-settings.d.ts +6 -0
  305. package/dist/pixoo/pixoo-settings.d.ts.map +1 -1
  306. package/dist/pixoo/pixoo-settings.js +9 -0
  307. package/dist/pixoo/pixoo-settings.js.map +1 -1
  308. package/dist/pixoo/pixoo-sprites.d.ts +84 -11
  309. package/dist/pixoo/pixoo-sprites.d.ts.map +1 -1
  310. package/dist/pixoo/pixoo-sprites.js +620 -209
  311. package/dist/pixoo/pixoo-sprites.js.map +1 -1
  312. package/dist/pty-manager.d.ts.map +1 -1
  313. package/dist/pty-manager.js +8 -2
  314. package/dist/pty-manager.js.map +1 -1
  315. package/dist/review-runner.d.ts +113 -0
  316. package/dist/review-runner.d.ts.map +1 -0
  317. package/dist/review-runner.js +428 -0
  318. package/dist/review-runner.js.map +1 -0
  319. package/dist/session-activity.d.ts +14 -0
  320. package/dist/session-activity.d.ts.map +1 -0
  321. package/dist/session-activity.js +160 -0
  322. package/dist/session-activity.js.map +1 -0
  323. package/dist/session-aggregator.d.ts +25 -0
  324. package/dist/session-aggregator.d.ts.map +1 -1
  325. package/dist/session-aggregator.js +48 -9
  326. package/dist/session-aggregator.js.map +1 -1
  327. package/dist/session-focus-relay.d.ts.map +1 -1
  328. package/dist/session-focus-relay.js +7 -1
  329. package/dist/session-focus-relay.js.map +1 -1
  330. package/dist/session-registry.d.ts +74 -3
  331. package/dist/session-registry.d.ts.map +1 -1
  332. package/dist/session-registry.js +140 -8
  333. package/dist/session-registry.js.map +1 -1
  334. package/dist/session-timeline-relay.d.ts.map +1 -1
  335. package/dist/session-timeline-relay.js +13 -4
  336. package/dist/session-timeline-relay.js.map +1 -1
  337. package/dist/session-transcript-timeline.d.ts +49 -0
  338. package/dist/session-transcript-timeline.d.ts.map +1 -0
  339. package/dist/session-transcript-timeline.js +276 -0
  340. package/dist/session-transcript-timeline.js.map +1 -0
  341. package/dist/state-machine.d.ts +6 -1
  342. package/dist/state-machine.d.ts.map +1 -1
  343. package/dist/state-machine.js +86 -28
  344. package/dist/state-machine.js.map +1 -1
  345. package/dist/timebox/timebox-daemon-sync.d.ts +19 -0
  346. package/dist/timebox/timebox-daemon-sync.d.ts.map +1 -0
  347. package/dist/timebox/timebox-daemon-sync.js +135 -0
  348. package/dist/timebox/timebox-daemon-sync.js.map +1 -0
  349. package/dist/timebox/timebox-discover.d.ts +19 -0
  350. package/dist/timebox/timebox-discover.d.ts.map +1 -0
  351. package/dist/timebox/timebox-discover.js +87 -0
  352. package/dist/timebox/timebox-discover.js.map +1 -0
  353. package/dist/timebox/timebox-settings.d.ts +32 -0
  354. package/dist/timebox/timebox-settings.d.ts.map +1 -0
  355. package/dist/timebox/timebox-settings.js +80 -0
  356. package/dist/timebox/timebox-settings.js.map +1 -0
  357. package/dist/timeline-store.d.ts +112 -3
  358. package/dist/timeline-store.d.ts.map +1 -1
  359. package/dist/timeline-store.js +460 -14
  360. package/dist/timeline-store.js.map +1 -1
  361. package/dist/timeline-summarizer.d.ts.map +1 -1
  362. package/dist/timeline-summarizer.js +29 -5
  363. package/dist/timeline-summarizer.js.map +1 -1
  364. package/dist/trmnl/byos-server.d.ts +39 -0
  365. package/dist/trmnl/byos-server.d.ts.map +1 -0
  366. package/dist/trmnl/byos-server.js +301 -0
  367. package/dist/trmnl/byos-server.js.map +1 -0
  368. package/dist/trmnl/frame-cache.d.ts +37 -0
  369. package/dist/trmnl/frame-cache.d.ts.map +1 -0
  370. package/dist/trmnl/frame-cache.js +157 -0
  371. package/dist/trmnl/frame-cache.js.map +1 -0
  372. package/dist/trmnl/image-renderer.d.ts +27 -0
  373. package/dist/trmnl/image-renderer.d.ts.map +1 -0
  374. package/dist/trmnl/image-renderer.js +235 -0
  375. package/dist/trmnl/image-renderer.js.map +1 -0
  376. package/dist/trmnl/trmnl-settings.d.ts +96 -0
  377. package/dist/trmnl/trmnl-settings.d.ts.map +1 -0
  378. package/dist/trmnl/trmnl-settings.js +177 -0
  379. package/dist/trmnl/trmnl-settings.js.map +1 -0
  380. package/dist/trmnl/trmnl-telemetry.d.ts +47 -0
  381. package/dist/trmnl/trmnl-telemetry.d.ts.map +1 -0
  382. package/dist/trmnl/trmnl-telemetry.js +56 -0
  383. package/dist/trmnl/trmnl-telemetry.js.map +1 -0
  384. package/dist/tui/ansi.d.ts +0 -4
  385. package/dist/tui/ansi.d.ts.map +1 -1
  386. package/dist/tui/ansi.js +14 -7
  387. package/dist/tui/ansi.js.map +1 -1
  388. package/dist/tui/dashboard.d.ts +1 -0
  389. package/dist/tui/dashboard.d.ts.map +1 -1
  390. package/dist/tui/dashboard.js +38 -11
  391. package/dist/tui/dashboard.js.map +1 -1
  392. package/dist/tui/renderer.d.ts +36 -0
  393. package/dist/tui/renderer.d.ts.map +1 -1
  394. package/dist/tui/renderer.js +355 -121
  395. package/dist/tui/renderer.js.map +1 -1
  396. package/dist/tui/terrarium.d.ts.map +1 -1
  397. package/dist/tui/terrarium.js +44 -51
  398. package/dist/tui/terrarium.js.map +1 -1
  399. package/dist/types.d.ts +2 -2
  400. package/dist/types.d.ts.map +1 -1
  401. package/dist/types.js +2 -2
  402. package/dist/types.js.map +1 -1
  403. package/dist/usage-api.d.ts.map +1 -1
  404. package/dist/usage-api.js +7 -1
  405. package/dist/usage-api.js.map +1 -1
  406. package/dist/usage-event.d.ts +10 -3
  407. package/dist/usage-event.d.ts.map +1 -1
  408. package/dist/usage-event.js +98 -13
  409. package/dist/usage-event.js.map +1 -1
  410. package/dist/utility-proxy.d.ts.map +1 -1
  411. package/dist/utility-proxy.js +8 -0
  412. package/dist/utility-proxy.js.map +1 -1
  413. package/dist/utils/project-name.d.ts +3 -0
  414. package/dist/utils/project-name.d.ts.map +1 -1
  415. package/dist/utils/project-name.js +44 -2
  416. package/dist/utils/project-name.js.map +1 -1
  417. package/dist/version-check.d.ts.map +1 -1
  418. package/dist/version-check.js +1 -17
  419. package/dist/version-check.js.map +1 -1
  420. package/dist/windows-service.d.ts +26 -0
  421. package/dist/windows-service.d.ts.map +1 -0
  422. package/dist/windows-service.js +145 -0
  423. package/dist/windows-service.js.map +1 -0
  424. package/dist/ws-server.d.ts +17 -3
  425. package/dist/ws-server.d.ts.map +1 -1
  426. package/dist/ws-server.js +78 -8
  427. package/dist/ws-server.js.map +1 -1
  428. package/fm-helper/AgentDeckFMHelper.swift +112 -0
  429. package/package.json +10 -4
  430. package/scripts/build-fm-helper.mjs +26 -0
  431. package/LICENSE +0 -21
  432. package/dist/apme/tuner.d.ts +0 -64
  433. package/dist/apme/tuner.d.ts.map +0 -1
  434. package/dist/apme/tuner.js +0 -297
  435. package/dist/apme/tuner.js.map +0 -1
@@ -11,8 +11,11 @@
11
11
  * No ADB, no firmware modification, no on-device agent needed.
12
12
  */
13
13
  import { buildZipPackets, buildBrightnessPacket, buildSmallWindowPacket, parseIncoming } from '../d200h/hid-protocol.js';
14
- import { renderDashboardZip, stateHash, initRenderer } from '../d200h/image-renderer.js';
14
+ import { renderDashboardZip, stateHash, initRenderer, isResvgLoaded, buildButtonCommandMap } from '../d200h/image-renderer.js';
15
15
  import { debug } from '../logger.js';
16
+ import { existsSync, mkdirSync, writeFileSync } from 'fs';
17
+ import { join } from 'path';
18
+ import { homedir } from 'os';
16
19
  const TAG = 'd200h';
17
20
  const VID = 0x2207;
18
21
  const PID = 0x0019;
@@ -21,37 +24,9 @@ const KEYBOARD_USAGE_PAGE = 1;
21
24
  const POLL_INTERVAL = 500; // Device detection polling (ms)
22
25
  const READ_INTERVAL = 20; // HID read polling (ms)
23
26
  const KEEPALIVE_INTERVAL = 30_000; // Keep-alive interval (ms)
24
- // Single-session deep dive layout (matches computeLayout else branch)
25
- const SINGLE_SESSION_COMMANDS = {
26
- 0: { type: 'mode_toggle' },
27
- 1: { type: 'focus_session_index', index: 0 },
28
- 2: null, // DetailInfo (no action)
29
- 3: { type: 'select_option', index: 0 },
30
- 4: { type: 'select_option', index: 1 },
31
- 5: { type: 'select_option', index: 2 },
32
- 6: { type: 'select_option', index: 3 },
33
- 7: null, // Model Info
34
- 8: { type: 'usage_toggle' },
35
- 9: { type: 'usage_toggle' },
36
- 10: { type: 'interrupt' },
37
- };
38
- // Multi-session overview layout (matches computeLayout if branch)
39
- const MULTI_SESSION_COMMANDS = {
40
- 0: { type: 'mode_toggle' },
41
- // Row 0 (sessions 0-3)
42
- 1: { type: 'focus_session_index', index: 0 },
43
- 2: { type: 'focus_session_index', index: 1 },
44
- 3: { type: 'focus_session_index', index: 2 },
45
- 4: { type: 'focus_session_index', index: 3 },
46
- // Row 1 (options 0-3)
47
- 5: { type: 'select_option', index: 0 },
48
- 6: { type: 'select_option', index: 1 },
49
- 7: { type: 'select_option', index: 2 },
50
- 8: { type: 'select_option', index: 3 },
51
- 9: null, // Model Info
52
- // Row 2
53
- 10: { type: 'interrupt' },
54
- };
27
+ // Button command mapping is derived per-frame from the render layout
28
+ // (`buildButtonCommandMap`), so a key always does exactly what its rendered
29
+ // tile shows. See `currentCommandMap` below.
55
30
  function isControllableSession(session) {
56
31
  return !!session?.port && session.controlMode !== 'observed';
57
32
  }
@@ -65,11 +40,41 @@ export class D200hModule {
65
40
  keepAliveTimer = null;
66
41
  commandHandler = null;
67
42
  lastStateHash = '';
68
- lastState = null;
43
+ lastState = {
44
+ state: 'IDLE',
45
+ projectName: '',
46
+ modelName: '',
47
+ mode: 'default',
48
+ agentType: 'daemon',
49
+ fiveHourPercent: 0,
50
+ sevenDayPercent: 0,
51
+ totalTokens: 0,
52
+ totalCost: 0,
53
+ options: [],
54
+ currentTool: '',
55
+ };
69
56
  lastSessions = [];
57
+ hostDisplayOn = true;
58
+ dimEnabled = true;
59
+ dimMode = 'off';
60
+ dimLevel = 10;
61
+ lastDimSignature = '';
62
+ displaySuppressed = false;
63
+ // When true, the Ulanzi Studio plugin owns the D200H — direct-HID stands down
64
+ // (releases the device, suspends reconnect) so the two don't fight over it.
65
+ externalOwner = false;
66
+ // Physical-key index → command for the currently displayed frame. Rebuilt
67
+ // from the render layout on every updateDisplay so input matches the pixels.
68
+ currentCommandMap = new Map();
70
69
  connected = false;
71
70
  isUpdating = false;
72
71
  pendingUpdate = null;
72
+ writeOK = 0;
73
+ writeFail = 0;
74
+ buttonPressCount = 0;
75
+ hidReportCount = 0;
76
+ lastWriteError = null;
77
+ lastOpenError = null;
73
78
  async shouldActivate(config) {
74
79
  if (config === false)
75
80
  return false;
@@ -98,17 +103,43 @@ export class D200hModule {
98
103
  this.lastState = evt;
99
104
  this.updateDisplay({ ...this.lastState, allSessions: this.lastSessions }).catch(() => { });
100
105
  }
106
+ else if (evt?.type === 'usage_update') {
107
+ // Usage (5H/7D/tokens/cost) rides usage_update, NOT state_update — merge it
108
+ // in so the gauges aren't stuck at 0 (same gap fixed in the TRMNL module).
109
+ this.lastState = {
110
+ ...this.lastState,
111
+ fiveHourPercent: evt.fiveHourPercent,
112
+ sevenDayPercent: evt.sevenDayPercent,
113
+ fiveHourResetsAt: evt.fiveHourResetsAt,
114
+ sevenDayResetsAt: evt.sevenDayResetsAt,
115
+ // Tri-state: distinguish "0% used" from "no quota data" so the gauges
116
+ // draw a "—" instead of a confident 0% (matches TRMNL / Ulanzi deck).
117
+ usageKnown: evt.usageStale === true
118
+ ? false
119
+ : (evt.fiveHourPercent != null || evt.sevenDayPercent != null),
120
+ totalTokens: evt.totalTokens ?? ((evt.inputTokens ?? 0) + (evt.outputTokens ?? 0)),
121
+ totalCost: evt.totalCost ?? evt.estimatedCostUsd ?? this.lastState?.totalCost ?? 0,
122
+ };
123
+ this.updateDisplay({ ...this.lastState, allSessions: this.lastSessions }).catch(() => { });
124
+ }
101
125
  else if (evt?.type === 'sessions_list') {
102
126
  this.lastSessions = (evt.sessions ?? []).filter(isControllableSession);
103
127
  if (this.lastState) {
104
128
  this.updateDisplay({ ...this.lastState, allSessions: this.lastSessions }).catch(() => { });
105
129
  }
106
130
  }
131
+ else if (evt?.type === 'display_state') {
132
+ this.applyDisplayState(evt);
133
+ }
107
134
  });
135
+ // Stand down direct-HID whenever the Ulanzi Studio plugin is connected, so
136
+ // the daemon and Ulanzi Studio never drive the same device at once. Fires
137
+ // immediately with the current state.
138
+ ctx.wsServer.onUlanziPluginPresence((present) => this.setExternalOwner(present));
108
139
  // Start device detection polling
109
140
  this.tryConnect();
110
141
  this.pollTimer = setInterval(() => {
111
- if (!this.connected) {
142
+ if (!this.connected && !this.externalOwner) {
112
143
  this.tryConnect();
113
144
  }
114
145
  }, POLL_INTERVAL);
@@ -138,13 +169,15 @@ export class D200hModule {
138
169
  statusSnapshot() {
139
170
  return {
140
171
  connected: this.connected,
172
+ externalOwner: this.externalOwner,
141
173
  managerOpened: this.hidModule !== null,
142
- writeOK: 0,
143
- writeFail: 0,
144
- buttonPressCount: 0,
145
- hidReportCount: 0,
146
- lastWriteError: null,
147
- lastOpenError: null,
174
+ resvgLoaded: isResvgLoaded(),
175
+ writeOK: this.writeOK,
176
+ writeFail: this.writeFail,
177
+ buttonPressCount: this.buttonPressCount,
178
+ hidReportCount: this.hidReportCount,
179
+ lastWriteError: this.lastWriteError,
180
+ lastOpenError: this.lastOpenError,
148
181
  };
149
182
  }
150
183
  // --- Private methods ---
@@ -181,7 +214,37 @@ export class D200hModule {
181
214
  }
182
215
  return null;
183
216
  }
217
+ /**
218
+ * Arbitrate device ownership with the Ulanzi Studio plugin. When it connects,
219
+ * release the D200H and suspend reconnect so Ulanzi Studio drives it; when it
220
+ * disconnects, resume direct-HID.
221
+ */
222
+ setExternalOwner(owner) {
223
+ if (this.externalOwner === owner)
224
+ return;
225
+ this.externalOwner = owner;
226
+ if (owner) {
227
+ debug(TAG, 'Ulanzi plugin active — releasing D200H to Ulanzi Studio');
228
+ if (this.pollTimer) {
229
+ clearInterval(this.pollTimer);
230
+ this.pollTimer = null;
231
+ }
232
+ this.disconnect();
233
+ }
234
+ else {
235
+ debug(TAG, 'Ulanzi plugin gone — resuming direct-HID');
236
+ if (!this.pollTimer) {
237
+ this.pollTimer = setInterval(() => {
238
+ if (!this.connected && !this.externalOwner)
239
+ this.tryConnect();
240
+ }, POLL_INTERVAL);
241
+ }
242
+ this.tryConnect();
243
+ }
244
+ }
184
245
  tryConnect() {
246
+ if (this.externalOwner)
247
+ return;
185
248
  if (!this.hidModule)
186
249
  return;
187
250
  const info = this.findDevice();
@@ -190,6 +253,7 @@ export class D200hModule {
190
253
  try {
191
254
  // Open consumer control interface (display updates + some events)
192
255
  this.consumerDevice = new this.hidModule.HID(info.consumerPath);
256
+ this.lastOpenError = null;
193
257
  debug(TAG, `Connected to D200H (serial: ${info.serial}) via Consumer Control`);
194
258
  // Try to open keyboard interface (button events) — may fail on macOS
195
259
  if (info.keyboardPath) {
@@ -197,23 +261,38 @@ export class D200hModule {
197
261
  this.keyboardDevice = new this.hidModule.HID(info.keyboardPath);
198
262
  debug(TAG, 'Opened keyboard interface for button events');
199
263
  }
200
- catch {
201
- debug(TAG, 'Keyboard interface not available (macOS restriction) — buttons via Consumer interface only');
264
+ catch (err) {
265
+ const errMsg = err?.message ?? String(err);
266
+ this.lastOpenError = `macOS Input Monitoring Permission Required: Please enable Input Monitoring for your terminal (e.g., iTerm, Terminal) in System Settings -> Privacy & Security -> Input Monitoring. (Error: ${errMsg})`;
267
+ debug(TAG, `Keyboard interface not available: ${this.lastOpenError}`);
268
+ // Trigger system preferences open once to guide the user
269
+ if (process.platform === 'darwin') {
270
+ import('child_process').then(({ exec }) => {
271
+ exec('open "x-apple.systempreferences:com.apple.preference.security?Privacy_ListenEvent"', (e) => {
272
+ if (e)
273
+ debug(TAG, `Failed to open System Settings: ${e.message}`);
274
+ });
275
+ }).catch(() => { });
276
+ }
202
277
  }
203
278
  }
204
279
  this.connected = true;
205
280
  // Start reading events
281
+ // If keyboard interface failed to open, buttons won't register, but
282
+ // readFrom still safely monitors events that might come via consumer control.
206
283
  this.startReading();
207
284
  // Start keep-alive
208
285
  this.keepAliveTimer = setInterval(() => this.sendKeepAlive(), KEEPALIVE_INTERVAL);
209
- // Set initial brightness
210
- this.writeToDevice(buildBrightnessPacket(100));
211
- // Send current state if available
212
- if (this.lastState) {
213
- this.updateDisplay(this.lastState);
214
- }
286
+ // Set initial brightness, honoring a cached display_state if the host
287
+ // was already asleep when the D200H reconnected.
288
+ this.applyDisplayBrightness();
289
+ // Send initial display update (render offline/idle layout immediately)
290
+ this.updateDisplay(this.lastState).catch((err) => {
291
+ debug(TAG, `Initial display update failed: ${err}`);
292
+ });
215
293
  }
216
294
  catch (err) {
295
+ this.lastOpenError = String(err);
217
296
  debug(TAG, `Failed to connect: ${err}`);
218
297
  this.disconnect();
219
298
  }
@@ -261,26 +340,24 @@ export class D200hModule {
261
340
  const event = parseIncoming(buf);
262
341
  if (!event)
263
342
  return;
343
+ this.hidReportCount++;
264
344
  if (event.type === 'button' && event.data.pressed) {
265
- const isMultiSession = this.lastSessions.length > 1;
266
- const commands = isMultiSession ? MULTI_SESSION_COMMANDS : SINGLE_SESSION_COMMANDS;
267
- let cmd = commands[event.data.index];
345
+ this.buttonPressCount++;
346
+ // Real button input received input path is empirically working.
347
+ // Clear any stale lastOpenError left by a failed keyboard-interface open
348
+ // (buttons arrive via the consumer-control interface regardless).
349
+ if (this.lastOpenError)
350
+ this.lastOpenError = null;
351
+ // The command is whatever the currently-displayed tile at this physical
352
+ // key does — derived from the same layout that was rendered, so the key
353
+ // can never act on stale or mismatched session ordering.
354
+ const cmd = this.currentCommandMap.get(event.data.index);
268
355
  if (cmd) {
269
- // Flatten dynamic session indices
270
- if (cmd.type === 'focus_session_index') {
271
- const tgt = this.lastSessions[cmd.index];
272
- if (tgt) {
273
- cmd = { type: 'focus_session', sessionId: tgt.id };
274
- }
275
- else {
276
- return; // Ignore empty sessions
277
- }
278
- }
279
356
  debug(TAG, `Button ${event.data.index} pressed → ${cmd.type}`);
280
357
  this.commandHandler?.(cmd);
281
358
  }
282
359
  else {
283
- debug(TAG, `Button ${event.data.index} pressed (unmapped)`);
360
+ debug(TAG, `Button ${event.data.index} pressed (inert tile)`);
284
361
  }
285
362
  }
286
363
  else if (event.type === 'device_info') {
@@ -310,11 +387,33 @@ export class D200hModule {
310
387
  this.isUpdating = true;
311
388
  try {
312
389
  const zip = renderDashboardZip(stateEvt);
390
+ // Rebuild the input map from the SAME state we just rendered, so a press
391
+ // always maps to what is currently on screen.
392
+ this.currentCommandMap = buildButtonCommandMap(stateEvt);
393
+ // Save ZIP to ~/.agentdeck/d200h-dumps/ for preview
394
+ try {
395
+ const dumpDir = join(homedir(), '.agentdeck', 'd200h-dumps');
396
+ if (!existsSync(dumpDir)) {
397
+ mkdirSync(dumpDir, { recursive: true });
398
+ }
399
+ const stamp = new Date().toISOString().replace(/[-T:]/g, '').split('.')[0];
400
+ const modeKey = (stateEvt?.mode || 'default').toLowerCase();
401
+ const sanitizedState = (stateEvt?.state || 'unknown').toLowerCase().replace(/[^a-z0-9_-]/g, '');
402
+ const sanitizedProject = (stateEvt?.projectName || '').toLowerCase().replace(/[^a-z0-9_-]/g, '');
403
+ const sanitized = [sanitizedState, sanitizedProject].filter(Boolean).join('-');
404
+ const filename = `${stamp}-set_buttons-${modeKey}-${zip.length}b-${sanitized}.zip`;
405
+ writeFileSync(join(dumpDir, filename), zip);
406
+ }
407
+ catch (dumpErr) {
408
+ debug(TAG, `Failed to dump ZIP to ~/.agentdeck/d200h-dumps/: ${dumpErr}`);
409
+ }
313
410
  const packets = buildZipPackets(zip);
314
411
  for (const pkt of packets) {
315
412
  if (!this.connected)
316
413
  break;
317
- this.writeToDevice(pkt);
414
+ if (!this.writeToDevice(pkt)) {
415
+ throw new Error(this.lastWriteError ?? 'D200H write failed');
416
+ }
318
417
  await new Promise(r => setTimeout(r, 8)); // Prevent hardware buffer overflow
319
418
  }
320
419
  debug(TAG, `Display updated: ${zip.length} bytes, ${packets.length} packets`);
@@ -340,15 +439,51 @@ export class D200hModule {
340
439
  const packet = buildSmallWindowPacket(1, 0, 0, timeStr, 0);
341
440
  this.writeToDevice(packet);
342
441
  }
442
+ applyDisplayState(evt) {
443
+ const dim = evt?.dim;
444
+ this.hostDisplayOn = evt?.displayOn ?? true;
445
+ const rawEnabled = dim?.enabled;
446
+ this.dimEnabled = typeof rawEnabled === 'boolean' ? rawEnabled : true;
447
+ this.dimMode = dim?.mode === 'min' ? 'min' : 'off';
448
+ const rawLevel = dim?.level;
449
+ const level = typeof rawLevel === 'number' && Number.isFinite(rawLevel) ? Math.round(rawLevel) : 10;
450
+ this.dimLevel = Math.max(1, Math.min(100, level));
451
+ const signature = `${this.hostDisplayOn}|${this.dimEnabled}|${this.dimMode}|${this.dimLevel}`;
452
+ if (signature === this.lastDimSignature)
453
+ return;
454
+ this.lastDimSignature = signature;
455
+ this.applyDisplayBrightness();
456
+ }
457
+ applyDisplayBrightness() {
458
+ if (!this.connected)
459
+ return;
460
+ const shouldSuppress = !this.hostDisplayOn && this.dimEnabled;
461
+ const target = shouldSuppress ? (this.dimMode === 'min' ? this.dimLevel : 0) : 100;
462
+ const wasSuppressed = this.displaySuppressed;
463
+ this.displaySuppressed = shouldSuppress;
464
+ this.writeToDevice(buildBrightnessPacket(target));
465
+ debug(TAG, `Display ${this.hostDisplayOn ? 'wake' : 'sleep'} — brightness ${target}`);
466
+ if (wasSuppressed && !shouldSuppress) {
467
+ this.lastStateHash = '';
468
+ this.updateDisplay({ ...this.lastState, allSessions: this.lastSessions }).catch(() => { });
469
+ }
470
+ }
343
471
  writeToDevice(packet) {
344
472
  if (!this.consumerDevice)
345
473
  return false;
346
474
  try {
347
- // node-hid v3 expects number[] for write
348
- this.consumerDevice.write(Array.from(packet));
475
+ // node-hid on macOS requires the first byte to be the Report ID.
476
+ // If the device does not use Report IDs (like D200H), the first byte must be 0x00.
477
+ // node-hid will strip this 0x00 before sending the remaining 1024 bytes to the device.
478
+ const dataToWrite = [0x00, ...Array.from(packet)];
479
+ this.consumerDevice.write(dataToWrite);
480
+ this.writeOK++;
481
+ this.lastWriteError = null;
349
482
  return true;
350
483
  }
351
484
  catch (err) {
485
+ this.writeFail++;
486
+ this.lastWriteError = err?.message ?? String(err);
352
487
  if (err?.message?.includes('could not write') || err?.message?.includes('could not send')) {
353
488
  debug(TAG, 'Write failed — device disconnected');
354
489
  this.disconnect();
@@ -1 +1 @@
1
- {"version":3,"file":"d200h-module.js","sourceRoot":"","sources":["../../src/modules/d200h-module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"d200h-module.js","sourceRoot":"","sources":["../../src/modules/d200h-module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { BridgeContext, DeviceModule } from './types.js';
2
+ export declare class IDotMatrixModule implements DeviceModule {
3
+ readonly name = "idotmatrix";
4
+ shouldActivate(config: 'auto' | boolean): Promise<boolean>;
5
+ start(ctx: BridgeContext): Promise<void>;
6
+ stop(): Promise<void>;
7
+ statusSnapshot(): Record<string, unknown>;
8
+ }
9
+ //# sourceMappingURL=idotmatrix-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idotmatrix-module.d.ts","sourceRoot":"","sources":["../../src/modules/idotmatrix-module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAQ9D,qBAAa,gBAAiB,YAAW,YAAY;IACnD,QAAQ,CAAC,IAAI,gBAAgB;IAEvB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAO1D,KAAK,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAaxC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAa1C"}
@@ -0,0 +1,46 @@
1
+ import { loadIDotMatrixDevices, isIDotMatrixAutoDiscoverEnabled, } from '../idotmatrix/idotmatrix-settings.js';
2
+ import { startIDotMatrixSync, stopIDotMatrixSync } from '../idotmatrix/idotmatrix-daemon-sync.js';
3
+ import { autoDiscoverIDotMatrix } from '../idotmatrix/idotmatrix-discover.js';
4
+ export class IDotMatrixModule {
5
+ name = 'idotmatrix';
6
+ async shouldActivate(config) {
7
+ if (config === false)
8
+ return false;
9
+ if (config === true)
10
+ return true;
11
+ // Activate when a device is configured OR auto-discovery may find one.
12
+ return loadIDotMatrixDevices().length > 0 || isIDotMatrixAutoDiscoverEnabled();
13
+ }
14
+ async start(ctx) {
15
+ // Start sync for any already-configured device immediately, then run a
16
+ // background BLE scan if none is configured. Discovery is non-blocking so
17
+ // daemon startup isn't delayed by the ~8s scan; when it adds a device we
18
+ // re-invoke startIDotMatrixSync (no-op if already running) to pick it up.
19
+ startIDotMatrixSync(ctx.port);
20
+ if (loadIDotMatrixDevices().length === 0 && isIDotMatrixAutoDiscoverEnabled()) {
21
+ void autoDiscoverIDotMatrix().then((added) => {
22
+ if (added > 0)
23
+ startIDotMatrixSync(ctx.port);
24
+ });
25
+ }
26
+ }
27
+ async stop() {
28
+ // Await the child's OFFLINE-frame farewell so the panel doesn't freeze on its
29
+ // last dashboard frame when the daemon exits.
30
+ await stopIDotMatrixSync(true);
31
+ }
32
+ statusSnapshot() {
33
+ const devices = loadIDotMatrixDevices();
34
+ return {
35
+ configuredDeviceCount: devices.length,
36
+ devices: devices.map((d) => ({
37
+ id: d.address,
38
+ transport: 'ble',
39
+ address: d.address,
40
+ name: d.name ?? 'iDotMatrix',
41
+ brightness: d.brightness ?? 100,
42
+ })),
43
+ };
44
+ }
45
+ }
46
+ //# sourceMappingURL=idotmatrix-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idotmatrix-module.js","sourceRoot":"","sources":["../../src/modules/idotmatrix-module.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,+BAA+B,GAChC,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAClG,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAE9E,MAAM,OAAO,gBAAgB;IAClB,IAAI,GAAG,YAAY,CAAC;IAE7B,KAAK,CAAC,cAAc,CAAC,MAAwB;QAC3C,IAAI,MAAM,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;QACnC,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACjC,uEAAuE;QACvE,OAAO,qBAAqB,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,+BAA+B,EAAE,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAkB;QAC5B,uEAAuE;QACvE,0EAA0E;QAC1E,yEAAyE;QACzE,0EAA0E;QAC1E,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,qBAAqB,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,+BAA+B,EAAE,EAAE,CAAC;YAC9E,KAAK,sBAAsB,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC3C,IAAI,KAAK,GAAG,CAAC;oBAAE,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,8EAA8E;QAC9E,8CAA8C;QAC9C,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,cAAc;QACZ,MAAM,OAAO,GAAG,qBAAqB,EAAE,CAAC;QACxC,OAAO;YACL,qBAAqB,EAAE,OAAO,CAAC,MAAM;YACrC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3B,EAAE,EAAE,CAAC,CAAC,OAAO;gBACb,SAAS,EAAE,KAAK;gBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,YAAY;gBAC5B,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,GAAG;aAChC,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;CACF"}
@@ -2,10 +2,12 @@ import type { DeviceModule, ModuleConfigs, BridgeContext } from './types.js';
2
2
  import type { AgentType } from '../types.js';
3
3
  export type { DeviceModule, ModuleConfigs, BridgeContext } from './types.js';
4
4
  export { MdnsModule } from './mdns-module.js';
5
+ export { BroadcastModule } from './broadcast-module.js';
5
6
  export { AdbModule } from './adb-module.js';
6
7
  export { SerialModule } from './serial-module.js';
7
8
  export { PixooModule } from './pixoo-module.js';
8
- export { D200hModule } from './d200h-module.js';
9
+ export { TimeboxModule } from './timebox-module.js';
10
+ export { IDotMatrixModule } from './idotmatrix-module.js';
9
11
  /**
10
12
  * Create default module instances for a given agent type.
11
13
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/modules/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAM7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,EAAE,CAQzE;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,YAAY,EAAE,CAAC,CAqBzB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CASxE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/modules/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAQ7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,EAAE,CAUzE;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,YAAY,EAAE,CAAC,CAqBzB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CASxE"}
@@ -1,24 +1,30 @@
1
1
  import { MdnsModule } from './mdns-module.js';
2
+ import { BroadcastModule } from './broadcast-module.js';
2
3
  import { AdbModule } from './adb-module.js';
3
4
  import { SerialModule } from './serial-module.js';
4
5
  import { PixooModule } from './pixoo-module.js';
5
- import { D200hModule } from './d200h-module.js';
6
+ import { TimeboxModule } from './timebox-module.js';
7
+ import { IDotMatrixModule } from './idotmatrix-module.js';
6
8
  import { debug } from '../logger.js';
7
9
  export { MdnsModule } from './mdns-module.js';
10
+ export { BroadcastModule } from './broadcast-module.js';
8
11
  export { AdbModule } from './adb-module.js';
9
12
  export { SerialModule } from './serial-module.js';
10
13
  export { PixooModule } from './pixoo-module.js';
11
- export { D200hModule } from './d200h-module.js';
14
+ export { TimeboxModule } from './timebox-module.js';
15
+ export { IDotMatrixModule } from './idotmatrix-module.js';
12
16
  /**
13
17
  * Create default module instances for a given agent type.
14
18
  */
15
19
  export function createDefaultModules(agentType) {
16
20
  return [
17
21
  new MdnsModule(agentType),
22
+ new BroadcastModule(agentType),
18
23
  new AdbModule(),
19
24
  new SerialModule(),
20
25
  new PixooModule(),
21
- new D200hModule(),
26
+ new TimeboxModule(),
27
+ new IDotMatrixModule(),
22
28
  ];
23
29
  }
24
30
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/modules/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAGrC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAoB;IACvD,OAAO;QACL,IAAI,UAAU,CAAC,SAAS,CAAC;QACzB,IAAI,SAAS,EAAE;QACf,IAAI,YAAY,EAAE;QAClB,IAAI,WAAW,EAAE;QACjB,IAAI,WAAW,EAAE;KAClB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAuB,EACvB,OAAsB,EACtB,GAAkB;IAElB,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAI,OAAwD,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;QAC7F,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,MAA0B,CAAC,CAAC;YAC5E,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACrB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,KAAK,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,qBAAqB,MAAM,GAAG,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,sBAAsB,GAAG,EAAE,CAAC,CAAC;YACzD,6CAA6C;QAC/C,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAuB;IACvD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,iBAAiB,GAAG,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/modules/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAGrC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAoB;IACvD,OAAO;QACL,IAAI,UAAU,CAAC,SAAS,CAAC;QACzB,IAAI,eAAe,CAAC,SAAS,CAAC;QAC9B,IAAI,SAAS,EAAE;QACf,IAAI,YAAY,EAAE;QAClB,IAAI,WAAW,EAAE;QACjB,IAAI,aAAa,EAAE;QACnB,IAAI,gBAAgB,EAAE;KACvB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAuB,EACvB,OAAsB,EACtB,GAAkB;IAElB,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAI,OAAwD,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;QAC7F,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,MAA0B,CAAC,CAAC;YAC5E,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACrB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,KAAK,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,qBAAqB,MAAM,GAAG,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,sBAAsB,GAAG,EAAE,CAAC,CAAC;YACzD,6CAA6C;QAC/C,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAuB;IACvD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,iBAAiB,GAAG,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"pixoo-module.d.ts","sourceRoot":"","sources":["../../src/modules/pixoo-module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAI9D,qBAAa,WAAY,YAAW,YAAY;IAC9C,QAAQ,CAAC,IAAI,WAAW;IAElB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ1D,KAAK,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
1
+ {"version":3,"file":"pixoo-module.d.ts","sourceRoot":"","sources":["../../src/modules/pixoo-module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAK9D,qBAAa,WAAY,YAAW,YAAY;IAC9C,QAAQ,CAAC,IAAI,WAAW;IAElB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAO1D,KAAK,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBxC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
@@ -1,5 +1,6 @@
1
1
  import { startPixooBridge, stopPixooBridge, broadcastPixoo, setPixooBroadcast } from '../pixoo/pixoo-bridge.js';
2
- import { loadPixooDevices } from '../pixoo/pixoo-settings.js';
2
+ import { loadPixooDevices, isPixooAutoDiscoverEnabled } from '../pixoo/pixoo-settings.js';
3
+ import { autoDiscoverPixoo } from '../pixoo/pixoo-discover.js';
3
4
  export class PixooModule {
4
5
  name = 'pixoo';
5
6
  async shouldActivate(config) {
@@ -7,15 +8,24 @@ export class PixooModule {
7
8
  return false;
8
9
  if (config === true)
9
10
  return true;
10
- // auto: check if any Pixoo devices are configured
11
- const devices = loadPixooDevices();
12
- return devices.length > 0;
11
+ // auto: a configured device OR auto-discovery may find one on the LAN.
12
+ return loadPixooDevices().length > 0 || isPixooAutoDiscoverEnabled();
13
13
  }
14
14
  async start(ctx) {
15
15
  const devices = loadPixooDevices();
16
16
  setPixooBroadcast((event) => ctx.wsServer.broadcast(event));
17
17
  startPixooBridge(devices);
18
18
  ctx.wsServer.onBroadcast(broadcastPixoo);
19
+ // No device configured → run a background LAN discovery (cloud API, then a
20
+ // bounded subnet sweep). startPixooBridge([]) above returned early without
21
+ // registering its status listener, so re-calling it after discovery adds
22
+ // devices wires the listener exactly once.
23
+ if (devices.length === 0 && isPixooAutoDiscoverEnabled()) {
24
+ void autoDiscoverPixoo().then((added) => {
25
+ if (added > 0)
26
+ startPixooBridge(loadPixooDevices());
27
+ });
28
+ }
19
29
  }
20
30
  async stop() {
21
31
  await stopPixooBridge();
@@ -1 +1 @@
1
- {"version":3,"file":"pixoo-module.js","sourceRoot":"","sources":["../../src/modules/pixoo-module.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAChH,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,OAAO,WAAW;IACb,IAAI,GAAG,OAAO,CAAC;IAExB,KAAK,CAAC,cAAc,CAAC,MAAwB;QAC3C,IAAI,MAAM,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;QACnC,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACjC,kDAAkD;QAClD,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;QACnC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAkB;QAC5B,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;QACnC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC1B,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,eAAe,EAAE,CAAC;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"pixoo-module.js","sourceRoot":"","sources":["../../src/modules/pixoo-module.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAChH,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,OAAO,WAAW;IACb,IAAI,GAAG,OAAO,CAAC;IAExB,KAAK,CAAC,cAAc,CAAC,MAAwB;QAC3C,IAAI,MAAM,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;QACnC,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACjC,uEAAuE;QACvE,OAAO,gBAAgB,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,0BAA0B,EAAE,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAkB;QAC5B,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;QACnC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC1B,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAEzC,2EAA2E;QAC3E,2EAA2E;QAC3E,yEAAyE;QACzE,2CAA2C;QAC3C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,0BAA0B,EAAE,EAAE,CAAC;YACzD,KAAK,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBACtC,IAAI,KAAK,GAAG,CAAC;oBAAE,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,eAAe,EAAE,CAAC;IAC1B,CAAC;CACF"}