@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
@@ -29,6 +29,8 @@ export function claudeHookToSpans(ctx, event, data) {
29
29
  });
30
30
  if (event === 'UserPromptSubmit') {
31
31
  const prompt = extractPrompt(data);
32
+ if (isTaskNotificationPrompt(prompt))
33
+ return [];
32
34
  if (/^\s*\/clear\s*$/i.test(prompt)) {
33
35
  return [make('task_boundary', { 'agentdeck.boundary_signal': 'clear' })];
34
36
  }
@@ -82,4 +84,7 @@ function extractPrompt(data) {
82
84
  return fromMessage;
83
85
  return typeof data.prompt === 'string' ? data.prompt : '';
84
86
  }
87
+ function isTaskNotificationPrompt(prompt) {
88
+ return prompt.trim().toLowerCase().startsWith('<task-notification>');
89
+ }
85
90
  //# sourceMappingURL=claude-hook.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude-hook.js","sourceRoot":"","sources":["../../../src/apme/adapters/claude-hook.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-hook.js","sourceRoot":"","sources":["../../../src/apme/adapters/claude-hook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Codex CLI hook → TelemetrySpan adapter.
3
+ *
4
+ * Mirror of `claude-hook.ts:claudeHookToSpans` for the codex_* event family
5
+ * installed by `hooks/src/codex-install.ts`. Codex hook payloads use the
6
+ * same shape as Claude (stdin JSON forwarded as the POST body) — only the
7
+ * event name prefix differs — so the span shapes are kept aligned with the
8
+ * Claude adapter so downstream APME ingestion handles both transparently.
9
+ *
10
+ * Schema source: Codex CLI command-hook stdin JSON; canonical reference is
11
+ * apple/AgentDeck/Daemon/Server/DaemonServer.swift:handleHookEvent (codex
12
+ * branches) and the `~/.codex/config.toml` body assembled by
13
+ * hooks/src/codex-install.ts:managedBlockBody.
14
+ */
15
+ import type { AdapterContext, TelemetrySpan } from '@agentdeck/shared';
16
+ export declare function codexHookToSpans(ctx: AdapterContext, event: string, data: Record<string, unknown>): TelemetrySpan[];
17
+ //# sourceMappingURL=codex-hook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-hook.d.ts","sourceRoot":"","sources":["../../../src/apme/adapters/codex-hook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EAEd,MAAM,mBAAmB,CAAC;AAG3B,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,aAAa,EAAE,CA8DjB"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Codex CLI hook → TelemetrySpan adapter.
3
+ *
4
+ * Mirror of `claude-hook.ts:claudeHookToSpans` for the codex_* event family
5
+ * installed by `hooks/src/codex-install.ts`. Codex hook payloads use the
6
+ * same shape as Claude (stdin JSON forwarded as the POST body) — only the
7
+ * event name prefix differs — so the span shapes are kept aligned with the
8
+ * Claude adapter so downstream APME ingestion handles both transparently.
9
+ *
10
+ * Schema source: Codex CLI command-hook stdin JSON; canonical reference is
11
+ * apple/AgentDeck/Daemon/Server/DaemonServer.swift:handleHookEvent (codex
12
+ * branches) and the `~/.codex/config.toml` body assembled by
13
+ * hooks/src/codex-install.ts:managedBlockBody.
14
+ */
15
+ import { randomUUID } from 'crypto';
16
+ import { spanNameForKind } from '@agentdeck/shared';
17
+ export function codexHookToSpans(ctx, event, data) {
18
+ const ts = Date.now();
19
+ const baseAttrs = {
20
+ 'agentdeck.agent_type': ctx.agentType,
21
+ ...(ctx.cwd ? { 'agentdeck.cwd': ctx.cwd } : {}),
22
+ };
23
+ const make = (kind, attributes) => ({
24
+ traceId: ctx.traceId,
25
+ spanId: randomUUID(),
26
+ parentSpanId: ctx.activeTurnId,
27
+ name: spanNameForKind(kind),
28
+ kind,
29
+ ts,
30
+ attributes: { ...baseAttrs, ...attributes },
31
+ });
32
+ if (event === 'codex_user_prompt_submit') {
33
+ const prompt = extractPrompt(data);
34
+ if (/^\s*\/clear\s*$/i.test(prompt)) {
35
+ return [make('task_boundary', { 'agentdeck.boundary_signal': 'clear' })];
36
+ }
37
+ return [
38
+ make('turn_start', {
39
+ 'agentdeck.prompt_text': prompt,
40
+ 'agentdeck.raw_payload': data,
41
+ }),
42
+ ];
43
+ }
44
+ if (event === 'codex_tool_start') {
45
+ const toolName = typeof data.tool_name === 'string' ? data.tool_name : undefined;
46
+ return [
47
+ make('tool_call', {
48
+ ...(toolName ? { 'gen_ai.tool.name': toolName, 'agentdeck.tool_name': toolName } : {}),
49
+ 'agentdeck.raw_payload': data,
50
+ }),
51
+ ];
52
+ }
53
+ if (event === 'codex_tool_end') {
54
+ const toolName = typeof data.tool_name === 'string' ? data.tool_name : undefined;
55
+ return [
56
+ make('tool_result', {
57
+ ...(toolName ? { 'gen_ai.tool.name': toolName, 'agentdeck.tool_name': toolName } : {}),
58
+ 'agentdeck.raw_payload': data,
59
+ }),
60
+ ];
61
+ }
62
+ // codex_session_start, codex_stop, codex_turn_complete, etc. are recorded
63
+ // verbatim so the collector still writes a `steps` row for timeline /
64
+ // tuner queries. State transitions (IDLE / PROCESSING) live in
65
+ // state-machine.ts:handleHookEvent — APME doesn't need its own.
66
+ return [
67
+ make('raw_step', {
68
+ 'agentdeck.raw_event': event,
69
+ 'agentdeck.raw_payload': data,
70
+ }),
71
+ ];
72
+ }
73
+ /** Codex hook payload uses Claude-compatible shapes when the upstream CLI
74
+ * forwards them (the stdin JSON is whatever Codex's lifecycle hook layer
75
+ * emits). Most variants nest the prompt under `message.content`; some
76
+ * embed a top-level `prompt`. Returns `''` if neither shape is present. */
77
+ function extractPrompt(data) {
78
+ const fromMessage = (() => {
79
+ const msg = data.message;
80
+ if (msg && typeof msg === 'object') {
81
+ const content = msg.content;
82
+ return typeof content === 'string' ? content : '';
83
+ }
84
+ return '';
85
+ })();
86
+ if (fromMessage)
87
+ return fromMessage;
88
+ if (typeof data.prompt === 'string')
89
+ return data.prompt;
90
+ // Codex sometimes sends `{ user_prompt: "..." }`; accept that shape too.
91
+ if (typeof data.user_prompt === 'string')
92
+ return data.user_prompt;
93
+ return '';
94
+ }
95
+ //# sourceMappingURL=codex-hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-hook.js","sourceRoot":"","sources":["../../../src/apme/adapters/codex-hook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * CodexTurnManager — turn-boundary reconstruction for Codex CLI sessions.
3
+ *
4
+ * Two signal sources are wired into one state machine:
5
+ *
6
+ * 1. **Hook mode** (primary) — `~/.codex/config.toml` lifecycle hooks send
7
+ * `codex_user_prompt_submit` / `codex_tool_start` / `codex_tool_end` /
8
+ * `codex_stop` to the daemon. These are unambiguous turn boundaries.
9
+ * APME span ingestion for hooks happens in `bridge/src/index.ts`'s
10
+ * hook branch via `codexHookToSpans` — this manager only adds the
11
+ * timeline-visible entries (chat_start / tool_request / chat_response /
12
+ * chat_end) so the dashboard sees them.
13
+ *
14
+ * 2. **PTY-parser fallback** (legacy / hook-miss path) — when no codex_*
15
+ * hook has fired in the last 30 s, the manager falls back to the
16
+ * pre-hook PTY-only logic: spinner_start opens a turn, prompt-source
17
+ * idle (with deferred close + status-line false-positive guard +
18
+ * tool-silence latch + PTY tail snapshot) closes it.
19
+ *
20
+ * The 30 s "hook-fresh" window demotes parser signals to no-ops while
21
+ * hooks are flowing, which eliminates the seven-state-variable race we
22
+ * landed seven Codex review iterations on. If hooks stop firing (Codex
23
+ * Ink-TUI repaint glitch), parser fallback re-engages automatically.
24
+ *
25
+ * Extracted from `bridge/src/index.ts wireAgentApme` so the codex segment
26
+ * can be unit-tested with fake collector / fake ringbuffer / fake adapter.
27
+ */
28
+ import type { AgentType } from '@agentdeck/shared';
29
+ import type { AdapterHookEvent, AdapterParserEvent } from '@agentdeck/shared';
30
+ import type { BridgeCore } from '../../bridge-core.js';
31
+ import type { ApmeModule } from '../index.js';
32
+ import type { PtyRingBuffer } from '../../pty-ringbuffer.js';
33
+ export declare class CodexTurnManager {
34
+ private readonly core;
35
+ private readonly apme;
36
+ private readonly ptyRingBuffer;
37
+ private readonly sessionId;
38
+ private readonly agentType;
39
+ private chatStart;
40
+ private lastPromptText;
41
+ private idleCloseTimer;
42
+ private inToolSilence;
43
+ private toolActiveSinceLastSpinner;
44
+ private toolSilenceTimer;
45
+ private pendingPromptIdle;
46
+ private pendingTailSnapshot;
47
+ private hookActive;
48
+ private lastHookTs;
49
+ constructor(core: BridgeCore, apme: ApmeModule, ptyRingBuffer: PtyRingBuffer, sessionId: string, agentType: AgentType);
50
+ /** Process a codex_* hook event. Hooks are authoritative — they own
51
+ * the turn boundaries while fresh. APME span ingestion already happens
52
+ * in `bridge/src/index.ts` via `codexHookToSpans`; this method only
53
+ * adds the timeline-visible entries the dashboard renders. */
54
+ onHookEvent(evt: AdapterHookEvent): void;
55
+ /** Process a PTY parser event. While a hook is fresh, this is a no-op
56
+ * for turn-boundary signals (hook owns them). Outside the freshness
57
+ * window we run the legacy PTY-only state machine. */
58
+ onParserEvent(evt: AdapterParserEvent): void;
59
+ /** Clear timers so a session shutdown leaves no lingering work. */
60
+ cleanup(): void;
61
+ private hookFresh;
62
+ private makeCtx;
63
+ private addTimelineEntry;
64
+ /** Add a timeline entry AND feed it through APME ingestion. Use this
65
+ * on the PTY-fallback path where no upstream hook adapter has done
66
+ * the ingestion. */
67
+ private addEntryAndIngest;
68
+ /** Hook-path chat_start opener: timeline entry only. The APME turn
69
+ * was opened upstream by codexHookToSpans → ingestSpan(turn_start)
70
+ * in the index.ts hook branch. Re-ingesting here would close the
71
+ * just-opened turn and immediately reopen another. */
72
+ private openTimelineChatStart;
73
+ /** PTY-path chat_start opener: timeline entry AND APME ingestion. */
74
+ private ensureChatStart;
75
+ /** Close the turn that started at `startedAt`: extract the response
76
+ * tail (live ringbuffer or passed snapshot), emit chat_response +
77
+ * chat_end timeline entries, and ingest the response span. The
78
+ * snapshot path is used when closing in response to a delayed signal
79
+ * (auto-clear timer or next spinner_start) — by that point the live
80
+ * ringbuffer contains turn N+1 content that would contaminate N's
81
+ * response. */
82
+ private closeTurn;
83
+ private scheduleClose;
84
+ private exitToolSilence;
85
+ }
86
+ //# sourceMappingURL=codex-turn-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-turn-manager.d.ts","sourceRoot":"","sources":["../../../src/apme/adapters/codex-turn-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAkB,SAAS,EAAiB,MAAM,mBAAmB,CAAC;AAClF,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAwB7D,qBAAa,gBAAgB;IAezB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAjB5B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,0BAA0B,CAAS;IAC3C,OAAO,CAAC,gBAAgB,CAA8C;IACtE,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,mBAAmB,CAAuB;IAElD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAK;gBAGJ,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,UAAU,EAChB,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,SAAS;IAKvC;;;mEAG+D;IAC/D,WAAW,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI;IAiDxC;;2DAEuD;IACvD,aAAa,CAAC,GAAG,EAAE,kBAAkB,GAAG,IAAI;IA2G5C,mEAAmE;IACnE,OAAO,IAAI,IAAI;IAOf,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,gBAAgB;IAIxB;;yBAEqB;IACrB,OAAO,CAAC,iBAAiB;IAQzB;;;2DAGuD;IACvD,OAAO,CAAC,qBAAqB;IAwC7B,qEAAqE;IACrE,OAAO,CAAC,eAAe;IAuCvB;;;;;;oBAMgB;IAChB,OAAO,CAAC,SAAS;IA2EjB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,eAAe;CAOxB"}