@wrongstack/cli 0.295.1 → 0.296.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) hide show
  1. package/data/providers.json +0 -24
  2. package/dist/acp-A5OSIU2P.js +824 -0
  3. package/dist/acp-A5OSIU2P.js.map +7 -0
  4. package/dist/acp-server-agent.d.ts.map +1 -1
  5. package/dist/arg-parser.d.ts.map +1 -1
  6. package/dist/audit-2ZSFGNIF.js +102 -0
  7. package/dist/audit-2ZSFGNIF.js.map +7 -0
  8. package/dist/auth-CJWQJVRH.js +504 -0
  9. package/dist/auth-CJWQJVRH.js.map +7 -0
  10. package/dist/auth-menu/auth-menu-audit.d.ts +0 -4
  11. package/dist/auth-menu/auth-menu-audit.d.ts.map +1 -1
  12. package/dist/bench-7ZDWSNEF.js +278 -0
  13. package/dist/bench-7ZDWSNEF.js.map +7 -0
  14. package/dist/boot/brain-decision-log.d.ts +7 -5
  15. package/dist/boot/brain-decision-log.d.ts.map +1 -1
  16. package/dist/boot/dispatch-webui.d.ts +5 -8
  17. package/dist/boot/dispatch-webui.d.ts.map +1 -1
  18. package/dist/boot/system-prompt-builder.d.ts +3 -0
  19. package/dist/boot/system-prompt-builder.d.ts.map +1 -1
  20. package/dist/boot/tui-coordinator-callbacks.d.ts +45 -0
  21. package/dist/boot/tui-coordinator-callbacks.d.ts.map +1 -0
  22. package/dist/boot/tui-project-switch.d.ts +2 -3
  23. package/dist/boot/tui-project-switch.d.ts.map +1 -1
  24. package/dist/boot/tui-runtime-state.d.ts +5 -6
  25. package/dist/boot/tui-runtime-state.d.ts.map +1 -1
  26. package/dist/boot/tui-session-resume.d.ts.map +1 -1
  27. package/dist/boot/tui-settings-adapter.d.ts +2 -3
  28. package/dist/boot/tui-settings-adapter.d.ts.map +1 -1
  29. package/dist/boot.d.ts.map +1 -1
  30. package/dist/brain-menu/panel-service.d.ts.map +1 -1
  31. package/dist/chimera-review-task.d.ts +6 -0
  32. package/dist/chimera-review-task.d.ts.map +1 -0
  33. package/dist/chimera-reviewer-policy.d.ts +34 -0
  34. package/dist/chimera-reviewer-policy.d.ts.map +1 -0
  35. package/dist/chronicle-QQEQFSSE.js +256 -0
  36. package/dist/chronicle-QQEQFSSE.js.map +7 -0
  37. package/dist/chunk-5N34EWJR.js +418 -0
  38. package/dist/chunk-5N34EWJR.js.map +7 -0
  39. package/dist/chunk-66T43Q4Y.js +90 -0
  40. package/dist/chunk-66T43Q4Y.js.map +7 -0
  41. package/dist/chunk-7OCVIDC7.js +11 -0
  42. package/dist/chunk-7OCVIDC7.js.map +7 -0
  43. package/dist/chunk-ABXK4VVY.js +84 -0
  44. package/dist/chunk-ABXK4VVY.js.map +7 -0
  45. package/dist/chunk-AXVZMEWG.js +306 -0
  46. package/dist/chunk-AXVZMEWG.js.map +7 -0
  47. package/dist/chunk-AZESNNIC.js +216 -0
  48. package/dist/chunk-AZESNNIC.js.map +7 -0
  49. package/dist/chunk-BGFM3PD7.js +41 -0
  50. package/dist/chunk-BGFM3PD7.js.map +7 -0
  51. package/dist/chunk-BQCAJ7FI.js +425 -0
  52. package/dist/chunk-BQCAJ7FI.js.map +7 -0
  53. package/dist/chunk-DPJZQCVP.js +13 -0
  54. package/dist/chunk-DPJZQCVP.js.map +7 -0
  55. package/dist/chunk-F4PEGAJZ.js +176 -0
  56. package/dist/chunk-F4PEGAJZ.js.map +7 -0
  57. package/dist/chunk-IHBYBYGA.js +443 -0
  58. package/dist/chunk-IHBYBYGA.js.map +7 -0
  59. package/dist/chunk-JBSQ7ONN.js +1023 -0
  60. package/dist/chunk-JBSQ7ONN.js.map +7 -0
  61. package/dist/chunk-JBTFWWKV.js +1325 -0
  62. package/dist/chunk-JBTFWWKV.js.map +7 -0
  63. package/dist/chunk-JUHRI6OV.js +100 -0
  64. package/dist/chunk-JUHRI6OV.js.map +7 -0
  65. package/dist/chunk-OI7GWJDS.js +3303 -0
  66. package/dist/chunk-OI7GWJDS.js.map +7 -0
  67. package/dist/chunk-OP47B3IX.js +142 -0
  68. package/dist/chunk-OP47B3IX.js.map +7 -0
  69. package/dist/chunk-PJHET45A.js +158 -0
  70. package/dist/chunk-PJHET45A.js.map +7 -0
  71. package/dist/chunk-Q5GTM25S.js +17 -0
  72. package/dist/chunk-Q5GTM25S.js.map +7 -0
  73. package/dist/chunk-QD544J2B.js +19 -0
  74. package/dist/chunk-QD544J2B.js.map +7 -0
  75. package/dist/chunk-QUNHS6O3.js +258 -0
  76. package/dist/chunk-QUNHS6O3.js.map +7 -0
  77. package/dist/chunk-TADVX644.js +480 -0
  78. package/dist/chunk-TADVX644.js.map +7 -0
  79. package/dist/chunk-TGDHN4LM.js +81 -0
  80. package/dist/chunk-TGDHN4LM.js.map +7 -0
  81. package/dist/chunk-TYO2OVAD.js +50 -0
  82. package/dist/chunk-TYO2OVAD.js.map +7 -0
  83. package/dist/chunk-VCYZ3WZV.js +14 -0
  84. package/dist/chunk-VCYZ3WZV.js.map +7 -0
  85. package/dist/chunk-VJUEZZYB.js +29 -0
  86. package/dist/chunk-VJUEZZYB.js.map +7 -0
  87. package/dist/chunk-WHOIR577.js +1 -0
  88. package/dist/chunk-WHOIR577.js.map +7 -0
  89. package/dist/chunk-WY7KKOUK.js +460 -0
  90. package/dist/chunk-WY7KKOUK.js.map +7 -0
  91. package/dist/chunk-XJXDOF63.js +28 -0
  92. package/dist/chunk-XJXDOF63.js.map +7 -0
  93. package/dist/chunk-XWEGWYDU.js +560 -0
  94. package/dist/chunk-XWEGWYDU.js.map +7 -0
  95. package/dist/chunk-YWUPHRGB.js +346 -0
  96. package/dist/chunk-YWUPHRGB.js.map +7 -0
  97. package/dist/chunk-Z7YGASQP.js +313 -0
  98. package/dist/chunk-Z7YGASQP.js.map +7 -0
  99. package/dist/cli-entry-main.d.ts +2 -0
  100. package/dist/cli-entry-main.d.ts.map +1 -0
  101. package/dist/cli-entry-point.d.ts +3 -3
  102. package/dist/cli-entry-point.d.ts.map +1 -1
  103. package/dist/cli-main-RTY35OPD.js +29268 -0
  104. package/dist/cli-main-RTY35OPD.js.map +7 -0
  105. package/dist/cli-main-helpers.d.ts +21 -0
  106. package/dist/cli-main-helpers.d.ts.map +1 -0
  107. package/dist/cli-main.d.ts +25 -1
  108. package/dist/cli-main.d.ts.map +1 -1
  109. package/dist/context-limit.d.ts +48 -0
  110. package/dist/context-limit.d.ts.map +1 -1
  111. package/dist/diag-doctor-OQ3AA63O.js +170 -0
  112. package/dist/diag-doctor-OQ3AA63O.js.map +7 -0
  113. package/dist/execute-deps.d.ts +11 -12
  114. package/dist/execute-deps.d.ts.map +1 -1
  115. package/dist/execution-O7I5DYE6.js +4682 -0
  116. package/dist/execution-O7I5DYE6.js.map +7 -0
  117. package/dist/execution-chimera-ask.d.ts +10 -0
  118. package/dist/execution-chimera-ask.d.ts.map +1 -0
  119. package/dist/execution-chimera-cascade.d.ts +15 -0
  120. package/dist/execution-chimera-cascade.d.ts.map +1 -0
  121. package/dist/execution-cleanup.d.ts +23 -0
  122. package/dist/execution-cleanup.d.ts.map +1 -0
  123. package/dist/execution-kanban-dispatch.d.ts +10 -0
  124. package/dist/execution-kanban-dispatch.d.ts.map +1 -0
  125. package/dist/execution-repl-fleet-callbacks.d.ts +11 -0
  126. package/dist/execution-repl-fleet-callbacks.d.ts.map +1 -0
  127. package/dist/execution-storage-observability.d.ts +3 -0
  128. package/dist/execution-storage-observability.d.ts.map +1 -0
  129. package/dist/execution-tui-next-step-callbacks.d.ts +20 -0
  130. package/dist/execution-tui-next-step-callbacks.d.ts.map +1 -0
  131. package/dist/execution.d.ts +2 -139
  132. package/dist/execution.d.ts.map +1 -1
  133. package/dist/export-TPORYVRZ.js +64 -0
  134. package/dist/export-TPORYVRZ.js.map +7 -0
  135. package/dist/fleet/host-acp-runner-cache.d.ts +9 -0
  136. package/dist/fleet/host-acp-runner-cache.d.ts.map +1 -0
  137. package/dist/fleet/host-acp.d.ts +3 -0
  138. package/dist/fleet/host-acp.d.ts.map +1 -0
  139. package/dist/fleet/host-concurrency.d.ts +2 -0
  140. package/dist/fleet/host-concurrency.d.ts.map +1 -0
  141. package/dist/fleet/host-context.d.ts +5 -0
  142. package/dist/fleet/host-context.d.ts.map +1 -0
  143. package/dist/fleet/host-director-builder.d.ts +24 -0
  144. package/dist/fleet/host-director-builder.d.ts.map +1 -0
  145. package/dist/fleet/host-director-event-bridges.d.ts +37 -0
  146. package/dist/fleet/host-director-event-bridges.d.ts.map +1 -0
  147. package/dist/fleet/host-director-services.d.ts +20 -0
  148. package/dist/fleet/host-director-services.d.ts.map +1 -0
  149. package/dist/fleet/host-event-bridge.d.ts +17 -0
  150. package/dist/fleet/host-event-bridge.d.ts.map +1 -0
  151. package/dist/fleet/host-helpers.d.ts +22 -0
  152. package/dist/fleet/host-helpers.d.ts.map +1 -0
  153. package/dist/fleet/host-learning-tracker.d.ts +11 -0
  154. package/dist/fleet/host-learning-tracker.d.ts.map +1 -0
  155. package/dist/fleet/host-learning.d.ts +4 -0
  156. package/dist/fleet/host-learning.d.ts.map +1 -0
  157. package/dist/fleet/host-lifecycle-events.d.ts +4 -0
  158. package/dist/fleet/host-lifecycle-events.d.ts.map +1 -0
  159. package/dist/fleet/host-paths.d.ts +3 -0
  160. package/dist/fleet/host-paths.d.ts.map +1 -0
  161. package/dist/fleet/host-provider.d.ts +22 -0
  162. package/dist/fleet/host-provider.d.ts.map +1 -0
  163. package/dist/fleet/host-session-writer.d.ts +3 -0
  164. package/dist/fleet/host-session-writer.d.ts.map +1 -0
  165. package/dist/fleet/host-shadow-pass.d.ts +21 -0
  166. package/dist/fleet/host-shadow-pass.d.ts.map +1 -0
  167. package/dist/fleet/host-spawn-types.d.ts +25 -0
  168. package/dist/fleet/host-spawn-types.d.ts.map +1 -0
  169. package/dist/fleet/host-status.d.ts +48 -0
  170. package/dist/fleet/host-status.d.ts.map +1 -0
  171. package/dist/fleet/host-subagent-factory.d.ts +16 -0
  172. package/dist/fleet/host-subagent-factory.d.ts.map +1 -0
  173. package/dist/fleet/host-supervisor.d.ts +16 -0
  174. package/dist/fleet/host-supervisor.d.ts.map +1 -0
  175. package/dist/fleet/host-task-result-report.d.ts +11 -0
  176. package/dist/fleet/host-task-result-report.d.ts.map +1 -0
  177. package/dist/fleet/host-types.d.ts +89 -0
  178. package/dist/fleet/host-types.d.ts.map +1 -0
  179. package/dist/fleet/host.d.ts +10 -357
  180. package/dist/fleet/host.d.ts.map +1 -1
  181. package/dist/hq-JUYKUNJX.js +547 -0
  182. package/dist/hq-JUYKUNJX.js.map +7 -0
  183. package/dist/hq-command-controller.d.ts +2 -2
  184. package/dist/hq-command-controller.d.ts.map +1 -1
  185. package/dist/hq-server/auth.d.ts +15 -4
  186. package/dist/hq-server/auth.d.ts.map +1 -1
  187. package/dist/hq-server/project-root.d.ts +5 -0
  188. package/dist/hq-server/project-root.d.ts.map +1 -0
  189. package/dist/hq-server/routes/auth-handlers.d.ts +25 -0
  190. package/dist/hq-server/routes/auth-handlers.d.ts.map +1 -0
  191. package/dist/hq-server/routes/session-handlers.d.ts +8 -0
  192. package/dist/hq-server/routes/session-handlers.d.ts.map +1 -0
  193. package/dist/hq-server/routes.d.ts +8 -6
  194. package/dist/hq-server/routes.d.ts.map +1 -1
  195. package/dist/hq-server/snapshot.d.ts +44 -0
  196. package/dist/hq-server/snapshot.d.ts.map +1 -1
  197. package/dist/hq-server/types.d.ts +22 -4
  198. package/dist/hq-server/types.d.ts.map +1 -1
  199. package/dist/hq-server/utils.d.ts +8 -0
  200. package/dist/hq-server/utils.d.ts.map +1 -1
  201. package/dist/hq-server/ws.d.ts +1 -1
  202. package/dist/hq-server/ws.d.ts.map +1 -1
  203. package/dist/hq-server-6AQ3BXZA.js +39 -0
  204. package/dist/hq-server-6AQ3BXZA.js.map +7 -0
  205. package/dist/hq-server.d.ts +3 -3
  206. package/dist/hq-server.d.ts.map +1 -1
  207. package/dist/hq-ttl-U2FAYFAT.js +8 -0
  208. package/dist/hq-ttl-U2FAYFAT.js.map +7 -0
  209. package/dist/hq-tunnel-RFKGC4HI.js +114 -0
  210. package/dist/hq-tunnel-RFKGC4HI.js.map +7 -0
  211. package/dist/hq-tunnel.d.ts +1 -1
  212. package/dist/hq-tunnel.d.ts.map +1 -1
  213. package/dist/index.d.ts +2 -1
  214. package/dist/index.d.ts.map +1 -1
  215. package/dist/index.js +2503 -53026
  216. package/dist/index.js.map +4 -4
  217. package/dist/init-E2NDDOHI.js +27 -0
  218. package/dist/init-E2NDDOHI.js.map +7 -0
  219. package/dist/kanban-dispatch-route.d.ts +14 -0
  220. package/dist/kanban-dispatch-route.d.ts.map +1 -0
  221. package/dist/kanban-hq-sync.d.ts +2 -0
  222. package/dist/kanban-hq-sync.d.ts.map +1 -1
  223. package/dist/kanban-run-mirror-EKVNGXWW.js +12 -0
  224. package/dist/kanban-run-mirror-EKVNGXWW.js.map +7 -0
  225. package/dist/live-settings-input.d.ts +69 -0
  226. package/dist/live-settings-input.d.ts.map +1 -0
  227. package/dist/mailbox-serve-2UWHEN3M.js +302 -0
  228. package/dist/mailbox-serve-2UWHEN3M.js.map +7 -0
  229. package/dist/mcp-CYLPUEHC.js +413 -0
  230. package/dist/mcp-CYLPUEHC.js.map +7 -0
  231. package/dist/modeldiag-HENYJ4N7.js +1290 -0
  232. package/dist/modeldiag-HENYJ4N7.js.map +7 -0
  233. package/dist/permissions-FNYLZIL4.js +115 -0
  234. package/dist/permissions-FNYLZIL4.js.map +7 -0
  235. package/dist/picker-key-state.d.ts +7 -0
  236. package/dist/picker-key-state.d.ts.map +1 -0
  237. package/dist/picker-model-picker.d.ts +6 -0
  238. package/dist/picker-model-picker.d.ts.map +1 -0
  239. package/dist/picker-ui.d.ts +17 -0
  240. package/dist/picker-ui.d.ts.map +1 -0
  241. package/dist/picker.d.ts +4 -37
  242. package/dist/picker.d.ts.map +1 -1
  243. package/dist/plugin-usage-OU6X6LM3.js +40 -0
  244. package/dist/plugin-usage-OU6X6LM3.js.map +7 -0
  245. package/dist/plugins-4LJ5IUBI.js +24 -0
  246. package/dist/plugins-4LJ5IUBI.js.map +7 -0
  247. package/dist/pre-launch.d.ts +0 -1
  248. package/dist/pre-launch.d.ts.map +1 -1
  249. package/dist/project-BLQ3ALVL.js +76 -0
  250. package/dist/project-BLQ3ALVL.js.map +7 -0
  251. package/dist/project-manifest-GE25PW4S.js +18 -0
  252. package/dist/project-manifest-GE25PW4S.js.map +7 -0
  253. package/dist/project-picker-BOCWHBXP.js +17 -0
  254. package/dist/project-picker-BOCWHBXP.js.map +7 -0
  255. package/dist/projects-XE76NFNZ.js +38 -0
  256. package/dist/projects-XE76NFNZ.js.map +7 -0
  257. package/dist/provider-helpers.d.ts +22 -6
  258. package/dist/provider-helpers.d.ts.map +1 -1
  259. package/dist/providers-models-GDELBHZK.js +589 -0
  260. package/dist/providers-models-GDELBHZK.js.map +7 -0
  261. package/dist/quick-VIO2BEHS.js +10 -0
  262. package/dist/quick-VIO2BEHS.js.map +7 -0
  263. package/dist/repl-auto-proceed.d.ts +19 -0
  264. package/dist/repl-auto-proceed.d.ts.map +1 -0
  265. package/dist/repl-client-registration.d.ts +7 -0
  266. package/dist/repl-client-registration.d.ts.map +1 -0
  267. package/dist/repl-input.d.ts +11 -0
  268. package/dist/repl-input.d.ts.map +1 -0
  269. package/dist/repl-options.d.ts +54 -0
  270. package/dist/repl-options.d.ts.map +1 -0
  271. package/dist/repl-rendering.d.ts +4 -0
  272. package/dist/repl-rendering.d.ts.map +1 -0
  273. package/dist/repl-suggestions.d.ts +21 -0
  274. package/dist/repl-suggestions.d.ts.map +1 -0
  275. package/dist/repl.d.ts +3 -162
  276. package/dist/repl.d.ts.map +1 -1
  277. package/dist/replay-KCTXNMZQ.js +75 -0
  278. package/dist/replay-KCTXNMZQ.js.map +7 -0
  279. package/dist/rewind-EJMVFVLS.js +185 -0
  280. package/dist/rewind-EJMVFVLS.js.map +7 -0
  281. package/dist/sdd-runtime-JG4EEKL6.js +54 -0
  282. package/dist/sdd-runtime-JG4EEKL6.js.map +7 -0
  283. package/dist/services/sdd/project-context.d.ts +1 -1
  284. package/dist/services/sdd/project-context.d.ts.map +1 -1
  285. package/dist/services/sdd/task-manager.d.ts.map +1 -1
  286. package/dist/services/statusline-config.d.ts +1 -1
  287. package/dist/services/statusline-config.d.ts.map +1 -1
  288. package/dist/session-event-wiring.d.ts +2 -2
  289. package/dist/session-event-wiring.d.ts.map +1 -1
  290. package/dist/sessions-config-NLCMK3BY.js +409 -0
  291. package/dist/sessions-config-NLCMK3BY.js.map +7 -0
  292. package/dist/settings-menu.d.ts +3 -18
  293. package/dist/settings-menu.d.ts.map +1 -1
  294. package/dist/simpleui-dist-JIFGUJO7.js +93 -0
  295. package/dist/simpleui-dist-JIFGUJO7.js.map +7 -0
  296. package/dist/slash-commands/brain.d.ts.map +1 -1
  297. package/dist/slash-commands/clear.d.ts.map +1 -1
  298. package/dist/slash-commands/fallback.d.ts.map +1 -1
  299. package/dist/slash-commands/kanban-agent-helpers.d.ts +18 -0
  300. package/dist/slash-commands/kanban-agent-helpers.d.ts.map +1 -0
  301. package/dist/slash-commands/kanban-format.d.ts +16 -0
  302. package/dist/slash-commands/kanban-format.d.ts.map +1 -0
  303. package/dist/slash-commands/kanban-help.d.ts +2 -0
  304. package/dist/slash-commands/kanban-help.d.ts.map +1 -0
  305. package/dist/slash-commands/kanban.d.ts.map +1 -1
  306. package/dist/slash-commands/mailbox-demo.d.ts.map +1 -1
  307. package/dist/slash-commands/mailbox.d.ts +2 -1
  308. package/dist/slash-commands/mailbox.d.ts.map +1 -1
  309. package/dist/slash-commands/memory-compact.d.ts +5 -0
  310. package/dist/slash-commands/memory-compact.d.ts.map +1 -0
  311. package/dist/slash-commands/memory-flags.d.ts +36 -0
  312. package/dist/slash-commands/memory-flags.d.ts.map +1 -0
  313. package/dist/slash-commands/memory-formatters.d.ts +16 -0
  314. package/dist/slash-commands/memory-formatters.d.ts.map +1 -0
  315. package/dist/slash-commands/memory.d.ts.map +1 -1
  316. package/dist/slash-commands/mouse.d.ts +2 -2
  317. package/dist/slash-commands/review.d.ts.map +1 -1
  318. package/dist/slash-commands/sdd-command-helpers.d.ts +23 -0
  319. package/dist/slash-commands/sdd-command-helpers.d.ts.map +1 -0
  320. package/dist/slash-commands/sdd-format.d.ts +32 -0
  321. package/dist/slash-commands/sdd-format.d.ts.map +1 -0
  322. package/dist/slash-commands/sdd.d.ts.map +1 -1
  323. package/dist/slash-commands/settings.d.ts.map +1 -1
  324. package/dist/subcommands/handlers/chronicle.d.ts.map +1 -1
  325. package/dist/subcommands/handlers/mailbox-serve.d.ts.map +1 -1
  326. package/dist/subcommands/handlers/model-smoke-test.d.ts +51 -0
  327. package/dist/subcommands/handlers/model-smoke-test.d.ts.map +1 -0
  328. package/dist/subcommands/handlers/modeldiag-profiles.d.ts +64 -0
  329. package/dist/subcommands/handlers/modeldiag-profiles.d.ts.map +1 -0
  330. package/dist/subcommands/handlers/modeldiag.d.ts.map +1 -1
  331. package/dist/subcommands/handlers/per-subcommand-deep-help-table.d.ts +3 -0
  332. package/dist/subcommands/handlers/per-subcommand-deep-help-table.d.ts.map +1 -0
  333. package/dist/subcommands/handlers/per-subcommand-help-data.d.ts +3 -0
  334. package/dist/subcommands/handlers/per-subcommand-help-data.d.ts.map +1 -0
  335. package/dist/subcommands/handlers/per-subcommand-help-table.d.ts +36 -0
  336. package/dist/subcommands/handlers/per-subcommand-help-table.d.ts.map +1 -0
  337. package/dist/subcommands/handlers/per-subcommand-help-types.d.ts +18 -0
  338. package/dist/subcommands/handlers/per-subcommand-help-types.d.ts.map +1 -0
  339. package/dist/subcommands/handlers/per-subcommand-help.d.ts +2 -80
  340. package/dist/subcommands/handlers/per-subcommand-help.d.ts.map +1 -1
  341. package/dist/subcommands/handlers/rewind.d.ts.map +1 -1
  342. package/dist/subcommands/index.d.ts +7 -0
  343. package/dist/subcommands/index.d.ts.map +1 -1
  344. package/dist/tools-skills-UNKLOB7M.js +29 -0
  345. package/dist/tools-skills-UNKLOB7M.js.map +7 -0
  346. package/dist/update-YC4TYW2Y.js +16 -0
  347. package/dist/update-YC4TYW2Y.js.map +7 -0
  348. package/dist/update-check-UMYTOH7Z.js +18 -0
  349. package/dist/update-check-UMYTOH7Z.js.map +7 -0
  350. package/dist/version-help-DROHZRW6.js +11 -0
  351. package/dist/version-help-DROHZRW6.js.map +7 -0
  352. package/dist/webui-server/connection-handler.d.ts.map +1 -1
  353. package/dist/webui-server/kanban-host-adapter.d.ts +5 -1
  354. package/dist/webui-server/kanban-host-adapter.d.ts.map +1 -1
  355. package/dist/webui-server/listen-helpers.d.ts +18 -0
  356. package/dist/webui-server/listen-helpers.d.ts.map +1 -0
  357. package/dist/webui-server/node-pty-loader.d.ts +6 -0
  358. package/dist/webui-server/node-pty-loader.d.ts.map +1 -0
  359. package/dist/webui-server-ZF5KVGC5.js +1460 -0
  360. package/dist/webui-server-ZF5KVGC5.js.map +7 -0
  361. package/dist/webui-server-options.d.ts +191 -0
  362. package/dist/webui-server-options.d.ts.map +1 -0
  363. package/dist/webui-server.d.ts +2 -178
  364. package/dist/webui-server.d.ts.map +1 -1
  365. package/dist/wiring/brain-and-orchestration.d.ts.map +1 -1
  366. package/dist/wiring/codebase-index.d.ts.map +1 -1
  367. package/dist/wiring/command-host-state.d.ts +4 -4
  368. package/dist/wiring/dep-watcher-bridge.d.ts +23 -0
  369. package/dist/wiring/dep-watcher-bridge.d.ts.map +1 -0
  370. package/dist/wiring/dep-watcher.d.ts.map +1 -1
  371. package/dist/wiring/hq-telemetry.d.ts +2 -2
  372. package/dist/wiring/lifecycle-plugins.d.ts +4 -3
  373. package/dist/wiring/lifecycle-plugins.d.ts.map +1 -1
  374. package/dist/wiring/mailbox-bridge-bootstrap.d.ts +1 -1
  375. package/dist/wiring/management-tools.d.ts +15 -0
  376. package/dist/wiring/management-tools.d.ts.map +1 -0
  377. package/dist/wiring/pipeline.d.ts +2 -1
  378. package/dist/wiring/pipeline.d.ts.map +1 -1
  379. package/dist/wiring/plugins.d.ts +1 -1
  380. package/dist/wiring/plugins.d.ts.map +1 -1
  381. package/dist/wiring/provider-runtime-setup.d.ts +14 -1
  382. package/dist/wiring/provider-runtime-setup.d.ts.map +1 -1
  383. package/dist/wiring/provider.d.ts.map +1 -1
  384. package/dist/wiring/runtime-controller-deps.d.ts +1 -1
  385. package/dist/wiring/runtime-controller-deps.d.ts.map +1 -1
  386. package/dist/wiring/sage.d.ts.map +1 -1
  387. package/dist/wiring/session-registry.d.ts +38 -0
  388. package/dist/wiring/session-registry.d.ts.map +1 -0
  389. package/dist/wiring/session.d.ts +10 -6
  390. package/dist/wiring/session.d.ts.map +1 -1
  391. package/dist/wiring/tools.d.ts.map +1 -1
  392. package/package.json +22 -22
  393. package/dist/cli-recovery-prompt.d.ts +0 -19
  394. package/dist/cli-recovery-prompt.d.ts.map +0 -1
  395. package/dist/first-run-auth-gate.d.ts +0 -20
  396. package/dist/first-run-auth-gate.d.ts.map +0 -1
  397. package/dist/pre-launch/indexing-question.d.ts +0 -28
  398. package/dist/pre-launch/indexing-question.d.ts.map +0 -1
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/hq-publisher.ts", "../src/kanban-hq-sync.ts"],
4
+ "sourcesContent": ["import { createHqPublisherFromEnv, resolveHqConfig } from '@wrongstack/core/hq';\nimport type { CreateHqPublisherOptions } from '@wrongstack/core/hq';\nimport type { HqPublisher, HqSocketLike } from '@wrongstack/core/hq';\nimport { WebSocket } from 'ws';\nimport { createKanbanHqSync } from './kanban-hq-sync.js';\n\ntype CliHqPublisherOptions = Omit<CreateHqPublisherOptions, 'socketFactory'> & {\n socketFactory?: CreateHqPublisherOptions['socketFactory'];\n};\n\nexport interface CliHqConnection {\n getPublisher(): HqPublisher | undefined;\n stop(): void;\n}\n\nexport interface CliHqConnectionOptions extends CliHqPublisherOptions {\n onConnect?: ((publisher: HqPublisher) => void) | undefined;\n retryIntervalMs?: number | undefined;\n}\n\nfunction nodeWsSocketFactory(url: string): HqSocketLike {\n return new WebSocket(url) as unknown as HqSocketLike;\n}\n\nexport function createCliHqPublisher(options: CliHqPublisherOptions): HqPublisher | undefined {\n return createHqPublisherFromEnv({\n ...options,\n socketFactory: options.socketFactory ?? nodeWsSocketFactory,\n });\n}\n\nfunction hqExplicitlyDisabled(options: CliHqPublisherOptions): boolean {\n const envEnabled = process.env['WRONGSTACK_HQ_ENABLED']?.trim();\n if (envEnabled !== undefined && envEnabled.length > 0) return envEnabled === '0';\n if (options.config?.enabled !== undefined) return options.config.enabled === false;\n return options.appConfig?.hq?.enabled === false;\n}\n\nfunction resolvedHqConnectionKey(options: CliHqPublisherOptions): string | undefined {\n if (options.config !== undefined) {\n return options.config.enabled === false\n ? undefined\n : `${options.config.url}\\n${options.config.token ?? ''}`;\n }\n const config = resolveHqConfig({ config: options.appConfig?.hq });\n return config === undefined ? undefined : `${config.url}\\n${config.token ?? ''}`;\n}\n\nexport function startCliHqConnection(options: CliHqConnectionOptions): CliHqConnection {\n const shouldOwnKanbanSync = options.onKanbanSnapshot === undefined;\n let kanbanSync: ReturnType<typeof createKanbanHqSync> | undefined;\n const publisherOptions: CliHqConnectionOptions = shouldOwnKanbanSync\n ? {\n ...options,\n onKanbanSnapshot: (snapshot) => kanbanSync?.handleRemote(snapshot),\n }\n : options;\n let publisher: HqPublisher | undefined;\n let publisherKey: string | undefined;\n let timer: ReturnType<typeof setInterval> | undefined;\n\n const tryConnect = (): void => {\n const nextKey = resolvedHqConnectionKey(options);\n if (nextKey === undefined) return;\n if (publisher !== undefined && publisherKey === nextKey) return;\n\n publisher?.close();\n publisher = undefined;\n publisherKey = undefined;\n\n const next = createCliHqPublisher(publisherOptions);\n if (next === undefined) return;\n publisher = next;\n publisherKey = nextKey;\n if (shouldOwnKanbanSync) {\n kanbanSync?.stop();\n kanbanSync = createKanbanHqSync(options.projectRoot, next.project.projectId);\n }\n next.connect();\n if (kanbanSync !== undefined) {\n kanbanSync.attachPublisher(next).catch((error: unknown) => {\n process.emitWarning(\n `WrongStack kanban HQ sync attach failed (best-effort, retried on reconnect): ${\n error instanceof Error ? error.message : String(error)\n }`,\n { code: 'WRONGSTACK_HQ_KANBAN_SYNC_FAILED' },\n );\n });\n }\n options.onConnect?.(next);\n };\n\n tryConnect();\n if (!hqExplicitlyDisabled(options)) {\n timer = setInterval(tryConnect, options.retryIntervalMs ?? 2_500);\n timer.unref?.();\n }\n\n return {\n getPublisher: () => publisher,\n stop: () => {\n if (timer !== undefined) {\n clearInterval(timer);\n timer = undefined;\n }\n kanbanSync?.stop();\n publisher?.close();\n publisher = undefined;\n publisherKey = undefined;\n },\n };\n}\n", "import type {\n HqKanbanBoardRecord,\n HqKanbanSnapshotPayload,\n HqKanbanTombstone,\n HqPublisher,\n} from '@wrongstack/core/hq';\nimport { deriveHqProjectId } from '@wrongstack/core/hq';\nimport {\n bridgeKanbanSupervisor,\n deleteBoard,\n type KanbanBoard,\n listBoardIds,\n readBoard,\n readKanbanMetadata,\n writeBoard,\n writeKanbanMetadata,\n} from '@wrongstack/kanban';\n\ninterface LocalSyncState {\n boards: Record<string, { revision: number; updatedAt: string }>;\n tombstones: Record<string, HqKanbanTombstone>;\n}\n\nexport interface KanbanHqSync {\n attachPublisher(publisher: HqPublisher): Promise<void>;\n handleRemote(snapshot: HqKanbanSnapshotPayload): Promise<void>;\n /** Explicit refresh seam for hosts/tests; daemon events call the same path. */\n refresh(boardId?: string): void;\n stop(): void;\n}\n\nconst SYNC_STATE_KEY = 'hq-sync-state-v1';\n// The HQ WebSocket server deliberately caps inbound frames at 1 MiB. Keep\n// project-state payloads comfortably below that limit so the event envelope,\n// UTF-8 expansion, and future protocol metadata still have headroom.\nconst MAX_KANBAN_SNAPSHOT_PAYLOAD_BYTES = 512 * 1024;\nconst KANBAN_TOMBSTONE_RETENTION_MS = 30 * 24 * 60 * 60 * 1000;\n\n// Cap the number of boards read per publish cycle so a large project doesn't\n// load hundreds of board payloads in a single burst. Remaining boards spill to\n// the next cycle.\nconst MAX_BOARDS_PER_PUBLISH = 50;\n\n// Kanban\u2194HQ sync is best-effort telemetry: every detached promise in this\n// module must land here instead of surfacing as an unhandled rejection (which\n// kills the host process on Node \u226515). Failed publishes self-heal \u2014 the state\n// fingerprint stays unwritten, so the next watcher event or reconnect\n// full-snapshot re-detects the same diff.\nfunction warnSyncFailure(error: unknown): void {\n process.emitWarning(\n `WrongStack kanban HQ sync failed (best-effort, will retry on next change): ${\n error instanceof Error ? error.message : String(error)\n }`,\n { code: 'WRONGSTACK_HQ_KANBAN_SYNC_FAILED' },\n );\n}\n\nexport function createKanbanHqSync(\n projectRoot: string,\n projectId = deriveHqProjectId(projectRoot),\n): KanbanHqSync {\n let publisher: HqPublisher | undefined;\n let unsubscribeDaemon: (() => void) | undefined;\n let daemonConnectionCount = 0;\n let timer: ReturnType<typeof setTimeout> | undefined;\n const pendingBoardIds = new Set<string>();\n let fullRescanPending = false;\n let applyingRemote = false;\n let stopped = false;\n let operationChain: Promise<void> = Promise.resolve();\n // Remote snapshots waiting to be applied, coalesced per boardId (latest\n // revision wins). Applying a snapshot does one IPC read/write per board;\n // when snapshots arrive faster than the owner can commit them, queueing each one\n // individually on `operationChain` retains every payload in memory \u2014 an\n // unbounded queue that has driven long fleet sessions into OOM. Coalescing\n // bounds pending memory to one record per distinct board.\n let pendingRemote: HqKanbanSnapshotPayload | null = null;\n let remoteApplyQueued = false;\n\n const runExclusive = <T>(operation: () => Promise<T>): Promise<T> => {\n let resolveResult!: (value: T | PromiseLike<T>) => void;\n let rejectResult!: (reason?: unknown) => void;\n const result = new Promise<T>((resolve, reject) => {\n resolveResult = resolve;\n rejectResult = reject;\n });\n operationChain = operationChain.then(async () => {\n try {\n resolveResult(await operation());\n } catch (error) {\n rejectResult(error);\n }\n });\n return result;\n };\n\n // Schedule the next publish cycle with a fixed debounce. The caller\n // (schedulePublish) already collapses rapid events into one batch, and\n // runExclusive serializes execution \u2014 no Date.now()-based interval is\n // needed because the 100ms debounce plus serialization chain already\n // prevents back-to-back publish bursts.\n const scheduleNext = (): void => {\n if (stopped || timer !== undefined || applyingRemote) return;\n timer = setTimeout(() => {\n timer = undefined;\n const rescan = fullRescanPending;\n const dirtyBoardIds = [...pendingBoardIds];\n fullRescanPending = false;\n pendingBoardIds.clear();\n runExclusive(() => publishLocal(false, rescan ? undefined : dirtyBoardIds)).catch(\n warnSyncFailure,\n );\n }, 100);\n timer.unref?.();\n };\n\n const schedulePublish = (boardId: string | null): void => {\n if (stopped || applyingRemote || publisher === undefined) return;\n if (boardId === null) fullRescanPending = true;\n else pendingBoardIds.add(boardId);\n if (timer !== undefined) clearTimeout(timer);\n timer = undefined;\n scheduleNext();\n };\n\n const publishLocal = async (\n fullSnapshot: boolean,\n dirtyBoardIds?: readonly string[],\n ): Promise<void> => {\n const target = publisher;\n if (target === undefined || stopped) return;\n const state = await readState(projectRoot);\n const prunedTombstones = pruneExpiredTombstones(state, Date.now());\n let stateChanged = fullSnapshot || prunedTombstones;\n const boards: HqKanbanBoardRecord[] = [];\n const tombstones: HqKanbanTombstone[] = [];\n const fullScan = fullSnapshot || dirtyBoardIds === undefined;\n const allBoardIds: readonly string[] = fullScan\n ? await listBoardIds(projectRoot)\n : dirtyBoardIds;\n let boardIds = allBoardIds;\n\n // Batch limit: only cap true delta publishes, never a full scan (initial\n // snapshot OR full rescan). When fullScan is true, ALL boards must be\n // loaded into `present` so the deletion-detection loop below does NOT\n // false-tombstone the boards this cycle didn't reach.\n if (!fullScan && boardIds.length > MAX_BOARDS_PER_PUBLISH) {\n for (const id of boardIds.slice(MAX_BOARDS_PER_PUBLISH)) {\n pendingBoardIds.add(id);\n }\n scheduleNext();\n boardIds = boardIds.slice(0, MAX_BOARDS_PER_PUBLISH);\n }\n\n const present = new Set<string>();\n const now = new Date().toISOString();\n for (const boardId of boardIds) {\n const board = await readBoard(projectRoot, boardId);\n if (board === null) {\n const known = state.boards[boardId];\n if (known !== undefined && state.tombstones[boardId] === undefined) {\n const tombstone = {\n boardId,\n revision: known.revision + 1,\n deletedAt: now,\n };\n state.tombstones[boardId] = tombstone;\n tombstones.push(tombstone);\n stateChanged = true;\n }\n continue;\n }\n present.add(boardId);\n const record = boardRecord(board);\n const known = state.boards[boardId];\n const hadTombstone = state.tombstones[boardId] !== undefined;\n if (\n fullSnapshot ||\n hadTombstone ||\n known === undefined ||\n compareVersions(known.revision, known.updatedAt, record.revision, record.updatedAt) !== 0\n ) {\n boards.push(record);\n }\n if (\n known === undefined ||\n known.revision !== record.revision ||\n known.updatedAt !== record.updatedAt ||\n hadTombstone\n ) {\n stateChanged = true;\n }\n state.boards[boardId] = { revision: record.revision, updatedAt: record.updatedAt };\n delete state.tombstones[boardId];\n }\n if (fullScan) {\n for (const [boardId, known] of Object.entries(state.boards)) {\n if (\n present.has(boardId) ||\n state.tombstones[boardId] !== undefined ||\n isExpiredVersion(known.updatedAt, Date.now())\n ) {\n continue;\n }\n const tombstone = {\n boardId,\n revision: known.revision + 1,\n deletedAt: now,\n };\n state.tombstones[boardId] = tombstone;\n tombstones.push(tombstone);\n stateChanged = true;\n }\n }\n if (stateChanged) await writeState(projectRoot, state);\n\n // A filesystem event caused by applying an HQ snapshot often arrives after\n // `applyingRemote` has been cleared. The persisted state fingerprint above\n // lets that event collapse to an empty delta instead of echoing the entire\n // project back to HQ and starting an N-client broadcast storm.\n if (!fullSnapshot && boards.length === 0 && tombstones.length === 0) return;\n\n for (const payload of chunkSnapshotPayload(\n projectId,\n now,\n boards,\n fullSnapshot ? Object.values(state.tombstones) : tombstones,\n )) {\n target.publishEvent({\n type: 'kanban.snapshot',\n payload,\n maxSummaryLength: 100_000,\n });\n }\n };\n\n const attachPublisher = (next: HqPublisher): Promise<void> => {\n publisher = next;\n return runExclusive(async () => {\n if (\n unsubscribeDaemon === undefined &&\n (process.env['NODE_ENV'] !== 'test' || process.env['WRONGSTACK_KANBAN_FORCE_IPC'] === '1')\n ) {\n unsubscribeDaemon = bridgeKanbanSupervisor(\n projectRoot,\n (event) => {\n const data = event.data as { boardId?: string } | undefined;\n // Non-board-scoped events conservatively request a full rescan.\n schedulePublish(data?.boardId ?? null);\n },\n {\n autoReconnect: true,\n reconnectDelayMs: 1_000,\n // Events emitted while the daemon was down cannot be replayed.\n // Reconcile the authoritative snapshot after every connection.\n onConnected: () => {\n daemonConnectionCount++;\n if (daemonConnectionCount > 1) schedulePublish(null);\n },\n },\n );\n }\n await publishLocal(true);\n });\n };\n\n const applyRemote = async (snapshot: HqKanbanSnapshotPayload): Promise<void> => {\n if (snapshot.projectId !== projectId || stopped) return;\n applyingRemote = true;\n try {\n const state = await readState(projectRoot);\n for (const remote of snapshot.boards) {\n const local = await readBoard(projectRoot, remote.boardId);\n if (\n local !== null &&\n compareVersions(\n local.revision ?? 0,\n local.updatedAt,\n remote.revision,\n remote.updatedAt,\n ) >= 0\n ) {\n continue;\n }\n await writeBoard(projectRoot, remote.board as unknown as KanbanBoard);\n state.boards[remote.boardId] = {\n revision: remote.revision,\n updatedAt: remote.updatedAt,\n };\n delete state.tombstones[remote.boardId];\n }\n for (const tombstone of snapshot.tombstones) {\n const local = await readBoard(projectRoot, tombstone.boardId);\n if (\n local !== null &&\n compareVersions(\n local.revision ?? 0,\n local.updatedAt,\n tombstone.revision,\n tombstone.deletedAt,\n ) >= 0\n ) {\n continue;\n }\n if (local !== null) await deleteBoard(projectRoot, tombstone.boardId);\n state.boards[tombstone.boardId] = {\n revision: Math.max(0, tombstone.revision - 1),\n updatedAt: tombstone.deletedAt,\n };\n state.tombstones[tombstone.boardId] = tombstone;\n }\n await writeState(projectRoot, state);\n } finally {\n applyingRemote = false;\n }\n };\n\n const handleRemote = (snapshot: HqKanbanSnapshotPayload): Promise<void> => {\n if (snapshot.projectId !== projectId || stopped) return Promise.resolve();\n pendingRemote =\n pendingRemote === null ? snapshot : coalesceRemoteSnapshots(pendingRemote, snapshot);\n // At most one apply pass is ever queued: it drains whatever has been\n // coalesced by the time it runs, so bursts collapse instead of chaining.\n if (remoteApplyQueued) return Promise.resolve();\n remoteApplyQueued = true;\n return runExclusive(async () => {\n remoteApplyQueued = false;\n const batch = pendingRemote;\n pendingRemote = null;\n if (batch !== null) await applyRemote(batch);\n }).catch(warnSyncFailure);\n };\n\n return {\n attachPublisher,\n handleRemote,\n refresh: (boardId?: string) => schedulePublish(boardId ?? null),\n stop: () => {\n stopped = true;\n if (timer !== undefined) clearTimeout(timer);\n pendingBoardIds.clear();\n fullRescanPending = false;\n pendingRemote = null;\n unsubscribeDaemon?.();\n unsubscribeDaemon = undefined;\n publisher = undefined;\n },\n };\n}\n\nfunction boardRecord(board: KanbanBoard): HqKanbanBoardRecord {\n return {\n boardId: board.id,\n revision: board.revision ?? 0,\n updatedAt: board.updatedAt,\n board: structuredClone(board) as unknown as Record<string, unknown>,\n };\n}\n\nfunction chunkSnapshotPayload(\n projectId: string,\n generatedAt: string,\n boards: HqKanbanBoardRecord[],\n tombstones: HqKanbanTombstone[],\n): HqKanbanSnapshotPayload[] {\n const chunks: HqKanbanSnapshotPayload[] = [];\n const emptyPayload = (): HqKanbanSnapshotPayload => ({\n projectId,\n generatedAt,\n boards: [],\n tombstones: [],\n });\n const emptyPayloadBytes = Buffer.byteLength(JSON.stringify(emptyPayload()), 'utf8');\n let currentBoards: HqKanbanBoardRecord[] = [];\n let currentTombstones: HqKanbanTombstone[] = [];\n let currentBytes = emptyPayloadBytes;\n\n const pushCurrent = (): void => {\n if (currentBoards.length === 0 && currentTombstones.length === 0) return;\n chunks.push({\n projectId,\n generatedAt,\n boards: currentBoards,\n tombstones: currentTombstones,\n });\n currentBoards = [];\n currentTombstones = [];\n currentBytes = emptyPayloadBytes;\n };\n\n const append = (\n kind: 'boards' | 'tombstones',\n item: HqKanbanBoardRecord | HqKanbanTombstone,\n ): void => {\n const itemBytes = Buffer.byteLength(JSON.stringify(item), 'utf8');\n const itemCount = kind === 'boards' ? currentBoards.length : currentTombstones.length;\n const additionalBytes = itemBytes + (itemCount > 0 ? 1 : 0);\n if (emptyPayloadBytes + itemBytes > MAX_KANBAN_SNAPSHOT_PAYLOAD_BYTES) {\n process.emitWarning(\n `Kanban ${kind === 'boards' ? 'board' : 'tombstone'} ${item.boardId} exceeds the ${MAX_KANBAN_SNAPSHOT_PAYLOAD_BYTES}-byte snapshot chunk target`,\n { code: 'WRONGSTACK_HQ_KANBAN_OVERSIZED_RECORD' },\n );\n }\n if (\n (currentBoards.length > 0 || currentTombstones.length > 0) &&\n currentBytes + additionalBytes > MAX_KANBAN_SNAPSHOT_PAYLOAD_BYTES\n ) {\n pushCurrent();\n }\n if (kind === 'boards') {\n currentBoards.push(item as HqKanbanBoardRecord);\n } else {\n currentTombstones.push(item as HqKanbanTombstone);\n }\n currentBytes +=\n itemBytes +\n (kind === 'boards'\n ? currentBoards.length > 1\n ? 1\n : 0\n : currentTombstones.length > 1\n ? 1\n : 0);\n };\n\n for (const board of boards) append('boards', board);\n for (const tombstone of tombstones) append('tombstones', tombstone);\n pushCurrent();\n\n // An empty snapshot is meaningful on first attach: it registers the project\n // state channel even when the project has no boards yet.\n return chunks.length > 0 ? chunks : [emptyPayload()];\n}\n\n/** Merge two pending remote snapshots into one, keeping \u2014 per boardId \u2014 the\n * record with the highest (revision, timestamp), whether board or tombstone.\n * Equivalent to applying both snapshots in arrival order when revisions are\n * monotonically increasing (which HQ guarantees in practice): the only\n * divergence is a lower-revision board arriving after a higher-revision\n * tombstone for the same boardId, where coalescing correctly keeps the\n * tombstone whereas naive sequential apply would resurrect the stale board. */\nfunction coalesceRemoteSnapshots(\n older: HqKanbanSnapshotPayload,\n newer: HqKanbanSnapshotPayload,\n): HqKanbanSnapshotPayload {\n type RemoteRecord =\n | { kind: 'board'; revision: number; time: string; record: HqKanbanBoardRecord }\n | { kind: 'tombstone'; revision: number; time: string; record: HqKanbanTombstone };\n const byBoardId = new Map<string, RemoteRecord>();\n const put = (candidate: RemoteRecord, boardId: string): void => {\n const existing = byBoardId.get(boardId);\n // On a full (revision, time) tie, prefer the newer-arriving record so a\n // same-timestamp content update in the second snapshot is not silently\n // discarded in favor of the older-arriving one.\n if (\n existing === undefined ||\n compareVersions(existing.revision, existing.time, candidate.revision, candidate.time) <= 0\n ) {\n byBoardId.set(boardId, candidate);\n }\n };\n for (const snapshot of [older, newer]) {\n for (const record of snapshot.boards) {\n put(\n { kind: 'board', revision: record.revision, time: record.updatedAt, record },\n record.boardId,\n );\n }\n for (const record of snapshot.tombstones) {\n put(\n { kind: 'tombstone', revision: record.revision, time: record.deletedAt, record },\n record.boardId,\n );\n }\n }\n const merged: HqKanbanSnapshotPayload = {\n projectId: newer.projectId,\n generatedAt: newer.generatedAt,\n boards: [],\n tombstones: [],\n };\n for (const entry of byBoardId.values()) {\n if (entry.kind === 'board') merged.boards.push(entry.record);\n else merged.tombstones.push(entry.record);\n }\n return merged;\n}\n\nfunction compareVersions(\n aRevision: number,\n aTime: string,\n bRevision: number,\n bTime: string,\n): number {\n if (aRevision !== bRevision) return aRevision - bRevision;\n return aTime.localeCompare(bTime);\n}\n\nfunction isExpiredVersion(timestamp: string, now: number): boolean {\n const parsed = Date.parse(timestamp);\n return !Number.isNaN(parsed) && parsed <= now - KANBAN_TOMBSTONE_RETENTION_MS;\n}\n\nfunction pruneExpiredTombstones(state: LocalSyncState, now: number): boolean {\n let changed = false;\n for (const [boardId, tombstone] of Object.entries(state.tombstones)) {\n if (!isExpiredVersion(tombstone.deletedAt, now)) continue;\n delete state.tombstones[boardId];\n delete state.boards[boardId];\n changed = true;\n }\n return changed;\n}\n\nasync function readState(projectRoot: string): Promise<LocalSyncState> {\n try {\n const raw = await readKanbanMetadata(projectRoot, SYNC_STATE_KEY);\n if (raw === null) return { boards: {}, tombstones: {} };\n const parsed = JSON.parse(raw) as Partial<LocalSyncState>;\n return { boards: parsed.boards ?? {}, tombstones: parsed.tombstones ?? {} };\n } catch {\n return { boards: {}, tombstones: {} };\n }\n}\n\nasync function writeState(projectRoot: string, state: LocalSyncState): Promise<void> {\n await writeKanbanMetadata(projectRoot, SYNC_STATE_KEY, JSON.stringify(state));\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["known"]
7
+ }
@@ -0,0 +1,28 @@
1
+
2
+ // src/version.ts
3
+ import { createRequire } from "node:module";
4
+ var req = createRequire(import.meta.url);
5
+ function readOwnVersion() {
6
+ const candidates = ["../package.json", "../../package.json"];
7
+ for (const rel of candidates) {
8
+ try {
9
+ const pkg = req(rel);
10
+ if (typeof pkg.version === "string" && pkg.version.length > 0) return pkg.version;
11
+ } catch {
12
+ }
13
+ }
14
+ return "dev";
15
+ }
16
+ var CLI_VERSION = readOwnVersion();
17
+ var API_VERSION = "0.0.0";
18
+ try {
19
+ const corePkg = req("@wrongstack/core/package.json");
20
+ if (corePkg.wrongstackApiVersion) API_VERSION = corePkg.wrongstackApiVersion;
21
+ } catch {
22
+ }
23
+
24
+ export {
25
+ CLI_VERSION,
26
+ API_VERSION
27
+ };
28
+ //# sourceMappingURL=chunk-XJXDOF63.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/version.ts"],
4
+ "sourcesContent": ["import { createRequire } from 'node:module';\n\nconst req = createRequire(import.meta.url);\n\nfunction readOwnVersion(): string {\n const candidates = ['../package.json', '../../package.json'];\n for (const rel of candidates) {\n try {\n const pkg = req(rel) as { version?: unknown | undefined };\n if (typeof pkg.version === 'string' && pkg.version.length > 0) return pkg.version;\n } catch {\n // try next\n }\n }\n return 'dev';\n}\n\nexport const CLI_VERSION = readOwnVersion();\n\nlet API_VERSION = '0.0.0';\ntry {\n const corePkg = req('@wrongstack/core/package.json') as {\n wrongstackApiVersion?: string | undefined;\n };\n if (corePkg.wrongstackApiVersion) API_VERSION = corePkg.wrongstackApiVersion;\n} catch {\n /* fallback */\n}\n\nexport { API_VERSION };\n"],
5
+ "mappings": ";;;AAAA,SAAS,qBAAqB;AAE9B,IAAM,MAAM,cAAc,YAAY,GAAG;AAEzC,SAAS,iBAAyB;AAChC,QAAM,aAAa,CAAC,mBAAmB,oBAAoB;AAC3D,aAAW,OAAO,YAAY;AAC5B,QAAI;AACF,YAAM,MAAM,IAAI,GAAG;AACnB,UAAI,OAAO,IAAI,YAAY,YAAY,IAAI,QAAQ,SAAS,EAAG,QAAO,IAAI;AAAA,IAC5E,QAAQ;AAAA,IAER;AAAA,EACF;AACA,SAAO;AACT;AAEO,IAAM,cAAc,eAAe;AAE1C,IAAI,cAAc;AAClB,IAAI;AACF,QAAM,UAAU,IAAI,+BAA+B;AAGnD,MAAI,QAAQ,qBAAsB,eAAc,QAAQ;AAC1D,QAAQ;AAER;",
6
+ "names": []
7
+ }