@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
@@ -0,0 +1,112 @@
1
+ import Foundation
2
+ #if canImport(FoundationModels)
3
+ import FoundationModels
4
+ #endif
5
+
6
+ struct HelperRequest: Decodable {
7
+ let id: Int
8
+ let type: String?
9
+ let prompt: String?
10
+ let instructions: String?
11
+ let temperature: Double?
12
+ }
13
+
14
+ @main
15
+ struct AgentDeckFMHelper {
16
+ static func main() async {
17
+ do {
18
+ for try await line in FileHandle.standardInput.bytes.lines {
19
+ await handle(line)
20
+ }
21
+ } catch {
22
+ write(["id": -1, "error": "stdin_error", "reason": String(describing: error)])
23
+ }
24
+ }
25
+
26
+ private static func handle(_ line: String) async {
27
+ guard let data = line.data(using: .utf8),
28
+ let request = try? JSONDecoder().decode(HelperRequest.self, from: data) else {
29
+ write(["id": -1, "error": "bad_request", "reason": "invalid JSON line"])
30
+ return
31
+ }
32
+
33
+ if request.type == "health" {
34
+ write(healthResponse(id: request.id))
35
+ return
36
+ }
37
+
38
+ guard let prompt = request.prompt, !prompt.isEmpty else {
39
+ write(["id": request.id, "error": "bad_request", "reason": "missing prompt"])
40
+ return
41
+ }
42
+
43
+ #if canImport(FoundationModels)
44
+ if #available(macOS 26.0, *) {
45
+ guard case .available = SystemLanguageModel.default.availability else {
46
+ write([
47
+ "id": request.id,
48
+ "error": "unavailable",
49
+ "reason": unavailableReason(),
50
+ ])
51
+ return
52
+ }
53
+
54
+ do {
55
+ let session = LanguageModelSession(
56
+ instructions: request.instructions ?? "You are an exacting code evaluator. Reply with strict JSON only."
57
+ )
58
+ let options = GenerationOptions(temperature: request.temperature ?? 0)
59
+ let response = try await session.respond(to: prompt, options: options)
60
+ write(["id": request.id, "text": response.content])
61
+ } catch {
62
+ write(["id": request.id, "error": "session_error", "reason": String(describing: error)])
63
+ }
64
+ } else {
65
+ write(["id": request.id, "error": "unavailable", "reason": "macOS 26 or later required"])
66
+ }
67
+ #else
68
+ write(["id": request.id, "error": "unavailable", "reason": "FoundationModels framework not present"])
69
+ #endif
70
+ }
71
+
72
+ private static func healthResponse(id: Int) -> [String: Any] {
73
+ #if canImport(FoundationModels)
74
+ if #available(macOS 26.0, *) {
75
+ if case .available = SystemLanguageModel.default.availability {
76
+ return ["id": id, "status": "ready"]
77
+ }
78
+ return ["id": id, "status": "unavailable", "reason": unavailableReason()]
79
+ }
80
+ return ["id": id, "status": "unavailable", "reason": "macOS 26 or later required"]
81
+ #else
82
+ return ["id": id, "status": "unavailable", "reason": "FoundationModels framework not present"]
83
+ #endif
84
+ }
85
+
86
+ private static func unavailableReason() -> String {
87
+ #if canImport(FoundationModels)
88
+ if #available(macOS 26.0, *) {
89
+ switch SystemLanguageModel.default.availability {
90
+ case .available:
91
+ return "available"
92
+ case .unavailable(let reason):
93
+ return "unavailable: \(reason)"
94
+ @unknown default:
95
+ return "unavailable: unknown state"
96
+ }
97
+ }
98
+ return "macOS 26 or later required"
99
+ #else
100
+ return "FoundationModels framework not present"
101
+ #endif
102
+ }
103
+
104
+ private static func write(_ object: [String: Any]) {
105
+ guard JSONSerialization.isValidJSONObject(object),
106
+ let data = try? JSONSerialization.data(withJSONObject: object),
107
+ let text = String(data: data, encoding: .utf8) else {
108
+ return
109
+ }
110
+ FileHandle.standardOutput.write(Data((text + "\n").utf8))
111
+ }
112
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentdeck/bridge",
3
- "version": "0.2.2",
3
+ "version": "1.0.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -10,27 +10,32 @@
10
10
  },
11
11
  "files": [
12
12
  "dist",
13
- "!dist/__tests__"
13
+ "!dist/__tests__",
14
+ "assets/fonts",
15
+ "assets/fm-helper",
16
+ "fm-helper",
17
+ "scripts/build-fm-helper.mjs"
14
18
  ],
15
19
  "main": "./dist/index.js",
16
20
  "bin": {
17
21
  "agentdeck": "./dist/cli.js"
18
22
  },
19
23
  "dependencies": {
24
+ "@anthropic-ai/sdk": "^0.111.0",
20
25
  "bonjour-service": "^1.3.0",
21
26
  "commander": "^14.0.3",
22
27
  "express": "^5.2.1",
23
28
  "qrcode": "^1.5.4",
24
29
  "strip-ansi": "^7.2.0",
25
30
  "ws": "^8.20.0",
26
- "@agentdeck/shared": "0.2.0"
31
+ "@agentdeck/hooks": "1.0.0",
32
+ "@agentdeck/shared": "1.0.0"
27
33
  },
28
34
  "optionalDependencies": {
29
35
  "@picovoice/porcupine-node": "^4.0.2",
30
36
  "@picovoice/pvrecorder-node": "^1.2.8",
31
37
  "@resvg/resvg-js": "^2.6.2",
32
38
  "better-sqlite3": "^12.9.0",
33
- "node-hid": "^3.3.0",
34
39
  "node-pty": "^1.1.0"
35
40
  },
36
41
  "compatibleClaudeCode": ">=2.1.50",
@@ -43,6 +48,7 @@
43
48
  },
44
49
  "scripts": {
45
50
  "build": "tsc",
51
+ "build:fm-helper": "node scripts/build-fm-helper.mjs",
46
52
  "dev": "tsc --watch",
47
53
  "clean": "rm -rf dist",
48
54
  "typecheck": "tsc --noEmit",
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env node
2
+ import { execFileSync } from 'node:child_process';
3
+ import { chmodSync, mkdirSync } from 'node:fs';
4
+ import { dirname, join } from 'node:path';
5
+ import { fileURLToPath } from 'node:url';
6
+
7
+ const root = dirname(dirname(fileURLToPath(import.meta.url)));
8
+ const source = join(root, 'fm-helper', 'AgentDeckFMHelper.swift');
9
+ const out = join(root, 'assets', 'fm-helper', 'agentdeck-fm-helper');
10
+ const arch = process.arch === 'arm64' ? 'arm64' : 'x86_64';
11
+ const target = `${arch}-apple-macos26.0`;
12
+
13
+ if (process.platform !== 'darwin') {
14
+ console.log('[fm-helper] skipped: darwin only');
15
+ process.exit(0);
16
+ }
17
+
18
+ mkdirSync(dirname(out), { recursive: true });
19
+ const swiftc = execFileSync('/usr/bin/xcrun', ['--find', 'swiftc'], { encoding: 'utf8' }).trim();
20
+ // swiftc is run directly (not via `xcrun swiftc`), so SDKROOT isn't set and the
21
+ // stdlib can't be found ("unable to load standard library for target ..."). Pass
22
+ // the SDK path explicitly so the build is reproducible from the npm lifecycle.
23
+ const sdk = execFileSync('/usr/bin/xcrun', ['--sdk', 'macosx', '--show-sdk-path'], { encoding: 'utf8' }).trim();
24
+ execFileSync(swiftc, ['-parse-as-library', '-sdk', sdk, '-target', target, source, '-o', out], { stdio: 'inherit' });
25
+ chmodSync(out, 0o755);
26
+ console.log(`[fm-helper] built ${out}`);
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 SerendipityBound
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,64 +0,0 @@
1
- /**
2
- * APME Rubric Auto-Tuner — Phase 3.
3
- *
4
- * Closes the improvement loop between deterministic results, the LLM judge,
5
- * and the user's vibe check. Algorithm (OPRO-style, ACE-inspired):
6
- *
7
- * 1. Collect recent runs + their evals + vibe feedback.
8
- * 2. Detect disagreement samples:
9
- * - tests_pass=1 but llm_judge.overall<0.5 (false negative)
10
- * - tests_pass=0 but llm_judge.overall>0.8 (false positive)
11
- * - user vibe rejected but judge.overall>0.7
12
- * - user vibe approved but judge.overall<0.5
13
- * 3. Compute baseline correlation between llm_judge.overall and vibe.
14
- * 4. Ask the same judge backend to propose a new rubric prompt + weights,
15
- * conditioned on the disagreement samples (this is OPRO's meta-optimizer
16
- * step — the model learns from its own mistakes).
17
- * 5. Shadow-score the samples under the proposed rubric; keep it only if
18
- * vibe-correlation improves. Never auto-accept a worse rubric.
19
- * 6. On accept, append to `rubrics` with parentVer lineage; on reject, log
20
- * the attempt so a human can inspect later.
21
- *
22
- * The tuner never silently falls back to a different backend per the
23
- * cost-sensitive defaults contract.
24
- */
25
- import type { ApmeStore } from './store.js';
26
- import type { ApmeConfig, ApmeJudgeConfig } from './settings.js';
27
- export interface DisagreementSample {
28
- runId: string;
29
- taskPrompt: string;
30
- judgeOverall: number | null;
31
- testsPass: number | null;
32
- vibe: 'approve' | 'reject' | 'neutral' | null;
33
- note: string;
34
- }
35
- export interface TuneOutcome {
36
- accepted: boolean;
37
- reason: string;
38
- baselineCorrelation: number | null;
39
- proposedCorrelation: number | null;
40
- newVersion: number | null;
41
- }
42
- export declare class ApmeTuner {
43
- private readonly store;
44
- private configOverride;
45
- private judgeOverride;
46
- constructor(store: ApmeStore);
47
- _setConfig(cfg: ApmeConfig): void;
48
- _setJudgeFn(fn: ((prompt: string, cfg: ApmeJudgeConfig) => Promise<string>) | null): void;
49
- /** Trigger a tuning pass. Returns the new rubric version if accepted. */
50
- tune(): Promise<TuneOutcome>;
51
- /** Check if the current rubric should be re-tuned. */
52
- shouldRetune(): Promise<boolean>;
53
- }
54
- export declare function collectDisagreements(store: ApmeStore, limit: number): DisagreementSample[];
55
- export declare function vibeCorrelation(samples: DisagreementSample[]): number | null;
56
- export declare function correlation(xs: number[], ys: number[]): number | null;
57
- export interface RubricProposal {
58
- prompt: string;
59
- weights: Record<string, number>;
60
- notes?: string;
61
- }
62
- export declare function parseProposal(text: string): RubricProposal | null;
63
- export declare function extractOverall(text: string): number | null;
64
- //# sourceMappingURL=tuner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tuner.d.ts","sourceRoot":"","sources":["../../src/apme/tuner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAMjE,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC;IAC9C,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAID,qBAAa,SAAS;IAIR,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHlC,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,aAAa,CAA4E;gBAEpE,KAAK,EAAE,SAAS;IAE7C,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;IACjC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI;IAIzF,yEAAyE;IACnE,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC;IAiGlC,sDAAsD;IAChD,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;CAQvC;AAID,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAqC1F;AAID,wBAAgB,eAAe,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,MAAM,GAAG,IAAI,CAM5E;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAgBrE;AAgDD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAoBjE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAa1D"}
@@ -1,297 +0,0 @@
1
- /**
2
- * APME Rubric Auto-Tuner — Phase 3.
3
- *
4
- * Closes the improvement loop between deterministic results, the LLM judge,
5
- * and the user's vibe check. Algorithm (OPRO-style, ACE-inspired):
6
- *
7
- * 1. Collect recent runs + their evals + vibe feedback.
8
- * 2. Detect disagreement samples:
9
- * - tests_pass=1 but llm_judge.overall<0.5 (false negative)
10
- * - tests_pass=0 but llm_judge.overall>0.8 (false positive)
11
- * - user vibe rejected but judge.overall>0.7
12
- * - user vibe approved but judge.overall<0.5
13
- * 3. Compute baseline correlation between llm_judge.overall and vibe.
14
- * 4. Ask the same judge backend to propose a new rubric prompt + weights,
15
- * conditioned on the disagreement samples (this is OPRO's meta-optimizer
16
- * step — the model learns from its own mistakes).
17
- * 5. Shadow-score the samples under the proposed rubric; keep it only if
18
- * vibe-correlation improves. Never auto-accept a worse rubric.
19
- * 6. On accept, append to `rubrics` with parentVer lineage; on reject, log
20
- * the attempt so a human can inspect later.
21
- *
22
- * The tuner never silently falls back to a different backend per the
23
- * cost-sensitive defaults contract.
24
- */
25
- import { debug } from '../logger.js';
26
- import { loadApmeConfig } from './settings.js';
27
- import { callJudge } from './runner.js';
28
- // ─── Tuner ─────────────────────────────────────────────────────────────────────
29
- export class ApmeTuner {
30
- store;
31
- configOverride = null;
32
- judgeOverride = null;
33
- constructor(store) {
34
- this.store = store;
35
- }
36
- _setConfig(cfg) { this.configOverride = cfg; }
37
- _setJudgeFn(fn) {
38
- this.judgeOverride = fn;
39
- }
40
- /** Trigger a tuning pass. Returns the new rubric version if accepted. */
41
- async tune() {
42
- if (!this.store.enabled) {
43
- return { accepted: false, reason: 'store disabled', baselineCorrelation: null, proposedCorrelation: null, newVersion: null };
44
- }
45
- const cfg = this.configOverride ?? loadApmeConfig();
46
- if (!cfg.autoTune) {
47
- return { accepted: false, reason: 'autoTune disabled', baselineCorrelation: null, proposedCorrelation: null, newVersion: null };
48
- }
49
- const samples = collectDisagreements(this.store, 30);
50
- if (samples.length < 3) {
51
- return { accepted: false, reason: `insufficient samples (${samples.length}/3)`, baselineCorrelation: null, proposedCorrelation: null, newVersion: null };
52
- }
53
- const rubric = this.store.getCurrentRubric('general');
54
- if (!rubric) {
55
- return { accepted: false, reason: 'no base rubric', baselineCorrelation: null, proposedCorrelation: null, newVersion: null };
56
- }
57
- const baseline = vibeCorrelation(samples);
58
- debug('APME', `tune baseline correlation=${baseline ?? 'n/a'} samples=${samples.length}`);
59
- // Ask the judge to propose a new rubric.
60
- const metaPrompt = buildMetaPrompt(rubric.prompt, rubric.weights, samples);
61
- let judgeText;
62
- try {
63
- judgeText = this.judgeOverride
64
- ? await this.judgeOverride(metaPrompt, cfg.judge)
65
- : await callJudge(metaPrompt, cfg.judge);
66
- }
67
- catch (err) {
68
- debug('APME', `tune judge call failed: ${String(err)}`);
69
- return { accepted: false, reason: `judge call failed: ${String(err)}`, baselineCorrelation: baseline, proposedCorrelation: null, newVersion: null };
70
- }
71
- const proposed = parseProposal(judgeText);
72
- if (!proposed) {
73
- return { accepted: false, reason: 'proposal unparseable', baselineCorrelation: baseline, proposedCorrelation: null, newVersion: null };
74
- }
75
- // Shadow-score: re-run the judge on each disagreement sample using the
76
- // proposed rubric. Correlate the new overall scores against user vibe.
77
- const shadowScores = [];
78
- for (const sample of samples) {
79
- if (!sample.vibe || sample.vibe === 'neutral')
80
- continue;
81
- const scorePrompt = buildShadowPrompt(proposed.prompt, sample);
82
- let shadowText;
83
- try {
84
- shadowText = this.judgeOverride
85
- ? await this.judgeOverride(scorePrompt, cfg.judge)
86
- : await callJudge(scorePrompt, cfg.judge);
87
- }
88
- catch (err) {
89
- debug('APME', `tune shadow call failed: ${String(err)}`);
90
- continue;
91
- }
92
- const overall = extractOverall(shadowText);
93
- if (overall !== null) {
94
- shadowScores.push({ judgeOverall: overall, vibe: sample.vibe });
95
- }
96
- }
97
- const proposedCorr = shadowScores.length >= 3 ? correlation(shadowScores.map((s) => s.judgeOverall), shadowScores.map((s) => vibeToNumber(s.vibe))) : null;
98
- debug('APME', `tune proposed correlation=${proposedCorr ?? 'n/a'} shadow=${shadowScores.length}`);
99
- const improves = (baseline === null || proposedCorr !== null) &&
100
- (proposedCorr ?? -Infinity) > (baseline ?? -Infinity) + 0.05;
101
- if (!improves) {
102
- return {
103
- accepted: false,
104
- reason: `proposed correlation did not improve (baseline=${baseline ?? 'n/a'}, proposed=${proposedCorr ?? 'n/a'})`,
105
- baselineCorrelation: baseline,
106
- proposedCorrelation: proposedCorr,
107
- newVersion: null,
108
- };
109
- }
110
- const newVersion = this.store.appendRubric({
111
- purpose: rubric.purpose,
112
- prompt: proposed.prompt,
113
- weights: JSON.stringify(proposed.weights),
114
- createdAt: Date.now(),
115
- parentVer: rubric.version,
116
- notes: `auto-tune: baseline=${baseline ?? 'n/a'} → proposed=${proposedCorr ?? 'n/a'} over ${shadowScores.length} samples`,
117
- });
118
- debug('APME', `tune accepted v${newVersion} (parent=${rubric.version})`);
119
- return {
120
- accepted: true,
121
- reason: `correlation improved ${baseline ?? 'n/a'} → ${proposedCorr ?? 'n/a'}`,
122
- baselineCorrelation: baseline,
123
- proposedCorrelation: proposedCorr,
124
- newVersion,
125
- };
126
- }
127
- /** Check if the current rubric should be re-tuned. */
128
- async shouldRetune() {
129
- if (!this.store.enabled)
130
- return false;
131
- const samples = collectDisagreements(this.store, 30);
132
- if (samples.length < 10)
133
- return false;
134
- const corr = vibeCorrelation(samples);
135
- // Low correlation with user vibe ⇒ rubric drifted.
136
- return corr !== null && corr < 0.4;
137
- }
138
- }
139
- // ─── Disagreement detection ───────────────────────────────────────────────────
140
- export function collectDisagreements(store, limit) {
141
- const runs = store.listRuns({ limit: Math.max(limit * 3, 60) });
142
- const out = [];
143
- for (const run of runs) {
144
- const evals = store.listEvalsForRun(run.id);
145
- const tests = evals.find((e) => e.layer === 'deterministic' && e.metric === 'tests_pass');
146
- const judge = evals.find((e) => e.layer === 'llm_judge' && e.metric === 'overall');
147
- const vibeRow = store.latestVibeForRun(run.id);
148
- const vibeVerdict = vibeRow ? vibeRow.verdict : null;
149
- const judgeOverall = judge?.score ?? null;
150
- const testsPass = tests?.score ?? null;
151
- // Disagreement heuristics:
152
- let note = '';
153
- if (tests && judge && tests.score === 1 && judge.score < 0.5)
154
- note = 'tests pass but judge fails';
155
- else if (tests && judge && tests.score === 0 && judge.score > 0.8)
156
- note = 'tests fail but judge passes';
157
- else if (vibeVerdict === 'reject' && judge && judge.score > 0.7)
158
- note = 'user rejected but judge approved';
159
- else if (vibeVerdict === 'approve' && judge && judge.score < 0.5)
160
- note = 'user approved but judge rejected';
161
- else if (vibeVerdict && vibeVerdict !== 'neutral' && judge) {
162
- // Even without explicit disagreement, vibe-labeled runs are valuable.
163
- note = 'vibe labeled';
164
- }
165
- else {
166
- continue;
167
- }
168
- out.push({
169
- runId: run.id,
170
- taskPrompt: (run.taskPrompt ?? '').slice(0, 400),
171
- judgeOverall,
172
- testsPass,
173
- vibe: vibeVerdict,
174
- note,
175
- });
176
- if (out.length >= limit)
177
- break;
178
- }
179
- return out;
180
- }
181
- // ─── Correlation math ─────────────────────────────────────────────────────────
182
- export function vibeCorrelation(samples) {
183
- const pairs = samples
184
- .filter((s) => s.vibe && s.vibe !== 'neutral' && s.judgeOverall !== null)
185
- .map((s) => [s.judgeOverall, vibeToNumber(s.vibe)]);
186
- if (pairs.length < 3)
187
- return null;
188
- return correlation(pairs.map((p) => p[0]), pairs.map((p) => p[1]));
189
- }
190
- export function correlation(xs, ys) {
191
- if (xs.length !== ys.length || xs.length < 2)
192
- return null;
193
- const n = xs.length;
194
- const mx = xs.reduce((a, b) => a + b, 0) / n;
195
- const my = ys.reduce((a, b) => a + b, 0) / n;
196
- let num = 0, dx = 0, dy = 0;
197
- for (let i = 0; i < n; i++) {
198
- const a = xs[i] - mx;
199
- const b = ys[i] - my;
200
- num += a * b;
201
- dx += a * a;
202
- dy += b * b;
203
- }
204
- const denom = Math.sqrt(dx * dy);
205
- if (denom === 0)
206
- return null;
207
- return num / denom;
208
- }
209
- function vibeToNumber(v) {
210
- if (v === 'approve')
211
- return 1;
212
- if (v === 'reject')
213
- return 0;
214
- return 0.5;
215
- }
216
- // ─── Meta-prompts ─────────────────────────────────────────────────────────────
217
- function buildMetaPrompt(currentPrompt, currentWeights, samples) {
218
- const lines = [];
219
- lines.push('You are a rubric meta-optimizer. The current judge rubric disagrees with ground truth on the following samples.');
220
- lines.push('Propose a *revised* rubric prompt and axis weights that would resolve these disagreements while staying concise (<800 chars).');
221
- lines.push('');
222
- lines.push('--- CURRENT RUBRIC PROMPT ---');
223
- lines.push(currentPrompt);
224
- lines.push('');
225
- lines.push(`--- CURRENT WEIGHTS ---`);
226
- lines.push(currentWeights);
227
- lines.push('');
228
- lines.push('--- DISAGREEMENT SAMPLES ---');
229
- for (const s of samples) {
230
- lines.push(`- runId=${s.runId} tests_pass=${s.testsPass ?? 'n/a'} judge_overall=${s.judgeOverall ?? 'n/a'} vibe=${s.vibe ?? 'n/a'} :: ${s.note}`);
231
- if (s.taskPrompt)
232
- lines.push(` task: ${s.taskPrompt}`);
233
- }
234
- lines.push('');
235
- lines.push('Respond with strict JSON only:');
236
- lines.push('{"prompt":"...","weights":{"intent":N,"correctness":N,"style":N,"convention":N},"notes":"..."}');
237
- return lines.join('\n');
238
- }
239
- function buildShadowPrompt(newRubricPrompt, sample) {
240
- return [
241
- newRubricPrompt,
242
- '',
243
- '--- SAMPLE ---',
244
- `task: ${sample.taskPrompt || '(not captured)'}`,
245
- `tests_pass: ${sample.testsPass ?? 'n/a'}`,
246
- `prior_judge_overall: ${sample.judgeOverall ?? 'n/a'}`,
247
- `user_vibe: ${sample.vibe ?? 'n/a'}`,
248
- '',
249
- 'Respond with strict JSON only: {"overall":N,"reasoning":"..."}',
250
- ].join('\n');
251
- }
252
- export function parseProposal(text) {
253
- const match = text.match(/\{[\s\S]*\}/);
254
- if (!match)
255
- return null;
256
- try {
257
- const obj = JSON.parse(match[0]);
258
- if (typeof obj.prompt !== 'string' || obj.prompt.length < 20)
259
- return null;
260
- if (!obj.weights || typeof obj.weights !== 'object')
261
- return null;
262
- const weights = {};
263
- for (const [k, v] of Object.entries(obj.weights)) {
264
- if (typeof v === 'number' && isFinite(v) && v >= 0)
265
- weights[k] = v;
266
- }
267
- if (Object.keys(weights).length === 0)
268
- return null;
269
- return {
270
- prompt: obj.prompt,
271
- weights,
272
- notes: typeof obj.notes === 'string' ? obj.notes : undefined,
273
- };
274
- }
275
- catch {
276
- return null;
277
- }
278
- }
279
- export function extractOverall(text) {
280
- const match = text.match(/\{[\s\S]*\}/);
281
- if (!match)
282
- return null;
283
- try {
284
- const obj = JSON.parse(match[0]);
285
- const v = obj.overall;
286
- if (typeof v !== 'number' || !isFinite(v))
287
- return null;
288
- let n = v;
289
- if (n > 1 && n <= 10)
290
- n = n / 10;
291
- return Math.max(0, Math.min(1, n));
292
- }
293
- catch {
294
- return null;
295
- }
296
- }
297
- //# sourceMappingURL=tuner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tuner.js","sourceRoot":"","sources":["../../src/apme/tuner.ts"],"names":[],"mappings":"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"}