@wrongstack/cli 0.295.0 → 0.296.2

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 (471) 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 +1 -5
  11. package/dist/auth-menu/auth-menu-audit.d.ts.map +1 -1
  12. package/dist/auth-menu/local.d.ts +1 -1
  13. package/dist/auth-menu/local.d.ts.map +1 -1
  14. package/dist/auth-menu/shared.d.ts +1 -1
  15. package/dist/auth-menu/shared.d.ts.map +1 -1
  16. package/dist/bench-7ZDWSNEF.js +278 -0
  17. package/dist/bench-7ZDWSNEF.js.map +7 -0
  18. package/dist/boot/brain-decision-log.d.ts +7 -5
  19. package/dist/boot/brain-decision-log.d.ts.map +1 -1
  20. package/dist/boot/dispatch-webui.d.ts +4 -8
  21. package/dist/boot/dispatch-webui.d.ts.map +1 -1
  22. package/dist/boot/launch-menu.d.ts +1 -1
  23. package/dist/boot/launch-menu.d.ts.map +1 -1
  24. package/dist/boot/system-prompt-builder.d.ts +4 -1
  25. package/dist/boot/system-prompt-builder.d.ts.map +1 -1
  26. package/dist/boot/tui-coordinator-callbacks.d.ts +45 -0
  27. package/dist/boot/tui-coordinator-callbacks.d.ts.map +1 -0
  28. package/dist/boot/tui-coordinator-setup.d.ts +2 -2
  29. package/dist/boot/tui-coordinator-setup.d.ts.map +1 -1
  30. package/dist/boot/tui-project-picker-callback.d.ts +1 -1
  31. package/dist/boot/tui-project-picker-callback.d.ts.map +1 -1
  32. package/dist/boot/tui-project-switch.d.ts +3 -4
  33. package/dist/boot/tui-project-switch.d.ts.map +1 -1
  34. package/dist/boot/tui-runtime-state.d.ts +5 -6
  35. package/dist/boot/tui-runtime-state.d.ts.map +1 -1
  36. package/dist/boot/tui-session-resume.d.ts.map +1 -1
  37. package/dist/boot/tui-settings-adapter.d.ts +2 -3
  38. package/dist/boot/tui-settings-adapter.d.ts.map +1 -1
  39. package/dist/boot-config.d.ts +2 -2
  40. package/dist/boot-config.d.ts.map +1 -1
  41. package/dist/boot.d.ts +1 -1
  42. package/dist/boot.d.ts.map +1 -1
  43. package/dist/brain-menu/panel-service.d.ts.map +1 -1
  44. package/dist/chimera-review-task.d.ts +6 -0
  45. package/dist/chimera-review-task.d.ts.map +1 -0
  46. package/dist/chimera-reviewer-policy.d.ts +34 -0
  47. package/dist/chimera-reviewer-policy.d.ts.map +1 -0
  48. package/dist/chronicle-QQEQFSSE.js +256 -0
  49. package/dist/chronicle-QQEQFSSE.js.map +7 -0
  50. package/dist/chunk-5N34EWJR.js +418 -0
  51. package/dist/chunk-5N34EWJR.js.map +7 -0
  52. package/dist/chunk-66T43Q4Y.js +90 -0
  53. package/dist/chunk-66T43Q4Y.js.map +7 -0
  54. package/dist/chunk-7OCVIDC7.js +11 -0
  55. package/dist/chunk-7OCVIDC7.js.map +7 -0
  56. package/dist/chunk-ABXK4VVY.js +84 -0
  57. package/dist/chunk-ABXK4VVY.js.map +7 -0
  58. package/dist/chunk-AXVZMEWG.js +306 -0
  59. package/dist/chunk-AXVZMEWG.js.map +7 -0
  60. package/dist/chunk-AZESNNIC.js +216 -0
  61. package/dist/chunk-AZESNNIC.js.map +7 -0
  62. package/dist/chunk-BGFM3PD7.js +41 -0
  63. package/dist/chunk-BGFM3PD7.js.map +7 -0
  64. package/dist/chunk-DPJZQCVP.js +13 -0
  65. package/dist/chunk-DPJZQCVP.js.map +7 -0
  66. package/dist/chunk-F4PEGAJZ.js +176 -0
  67. package/dist/chunk-F4PEGAJZ.js.map +7 -0
  68. package/dist/chunk-IHBYBYGA.js +443 -0
  69. package/dist/chunk-IHBYBYGA.js.map +7 -0
  70. package/dist/chunk-IN4GXGYW.js +425 -0
  71. package/dist/chunk-IN4GXGYW.js.map +7 -0
  72. package/dist/chunk-JBSQ7ONN.js +1023 -0
  73. package/dist/chunk-JBSQ7ONN.js.map +7 -0
  74. package/dist/chunk-JBTFWWKV.js +1325 -0
  75. package/dist/chunk-JBTFWWKV.js.map +7 -0
  76. package/dist/chunk-JUHRI6OV.js +100 -0
  77. package/dist/chunk-JUHRI6OV.js.map +7 -0
  78. package/dist/chunk-OP47B3IX.js +142 -0
  79. package/dist/chunk-OP47B3IX.js.map +7 -0
  80. package/dist/chunk-PJHET45A.js +158 -0
  81. package/dist/chunk-PJHET45A.js.map +7 -0
  82. package/dist/chunk-Q5GTM25S.js +17 -0
  83. package/dist/chunk-Q5GTM25S.js.map +7 -0
  84. package/dist/chunk-QD544J2B.js +19 -0
  85. package/dist/chunk-QD544J2B.js.map +7 -0
  86. package/dist/chunk-QUNHS6O3.js +258 -0
  87. package/dist/chunk-QUNHS6O3.js.map +7 -0
  88. package/dist/chunk-TADVX644.js +480 -0
  89. package/dist/chunk-TADVX644.js.map +7 -0
  90. package/dist/chunk-TGDHN4LM.js +81 -0
  91. package/dist/chunk-TGDHN4LM.js.map +7 -0
  92. package/dist/chunk-TYO2OVAD.js +50 -0
  93. package/dist/chunk-TYO2OVAD.js.map +7 -0
  94. package/dist/chunk-VCYZ3WZV.js +14 -0
  95. package/dist/chunk-VCYZ3WZV.js.map +7 -0
  96. package/dist/chunk-VJUEZZYB.js +29 -0
  97. package/dist/chunk-VJUEZZYB.js.map +7 -0
  98. package/dist/chunk-WHOIR577.js +1 -0
  99. package/dist/chunk-WHOIR577.js.map +7 -0
  100. package/dist/chunk-WY7KKOUK.js +460 -0
  101. package/dist/chunk-WY7KKOUK.js.map +7 -0
  102. package/dist/chunk-X5DQTPXT.js +3059 -0
  103. package/dist/chunk-X5DQTPXT.js.map +7 -0
  104. package/dist/chunk-XJXDOF63.js +28 -0
  105. package/dist/chunk-XJXDOF63.js.map +7 -0
  106. package/dist/chunk-XWEGWYDU.js +560 -0
  107. package/dist/chunk-XWEGWYDU.js.map +7 -0
  108. package/dist/chunk-YWUPHRGB.js +346 -0
  109. package/dist/chunk-YWUPHRGB.js.map +7 -0
  110. package/dist/chunk-Z7YGASQP.js +313 -0
  111. package/dist/chunk-Z7YGASQP.js.map +7 -0
  112. package/dist/cli-entry-main.d.ts +2 -0
  113. package/dist/cli-entry-main.d.ts.map +1 -0
  114. package/dist/cli-entry-point.d.ts +3 -3
  115. package/dist/cli-entry-point.d.ts.map +1 -1
  116. package/dist/cli-eternal-flag.d.ts +2 -2
  117. package/dist/cli-eternal-flag.d.ts.map +1 -1
  118. package/dist/cli-main-6AU6E4XZ.js +29126 -0
  119. package/dist/cli-main-6AU6E4XZ.js.map +7 -0
  120. package/dist/cli-main-helpers.d.ts +21 -0
  121. package/dist/cli-main-helpers.d.ts.map +1 -0
  122. package/dist/cli-main.d.ts +25 -1
  123. package/dist/cli-main.d.ts.map +1 -1
  124. package/dist/context-limit.d.ts +48 -0
  125. package/dist/context-limit.d.ts.map +1 -1
  126. package/dist/diag-doctor-OQ3AA63O.js +170 -0
  127. package/dist/diag-doctor-OQ3AA63O.js.map +7 -0
  128. package/dist/execute-deps.d.ts +10 -12
  129. package/dist/execute-deps.d.ts.map +1 -1
  130. package/dist/execution-V26SE52F.js +4656 -0
  131. package/dist/execution-V26SE52F.js.map +7 -0
  132. package/dist/execution-chimera-ask.d.ts +10 -0
  133. package/dist/execution-chimera-ask.d.ts.map +1 -0
  134. package/dist/execution-chimera-cascade.d.ts +15 -0
  135. package/dist/execution-chimera-cascade.d.ts.map +1 -0
  136. package/dist/execution-cleanup.d.ts +23 -0
  137. package/dist/execution-cleanup.d.ts.map +1 -0
  138. package/dist/execution-kanban-dispatch.d.ts +10 -0
  139. package/dist/execution-kanban-dispatch.d.ts.map +1 -0
  140. package/dist/execution-repl-fleet-callbacks.d.ts +11 -0
  141. package/dist/execution-repl-fleet-callbacks.d.ts.map +1 -0
  142. package/dist/execution-storage-observability.d.ts +3 -0
  143. package/dist/execution-storage-observability.d.ts.map +1 -0
  144. package/dist/execution-tui-next-step-callbacks.d.ts +20 -0
  145. package/dist/execution-tui-next-step-callbacks.d.ts.map +1 -0
  146. package/dist/execution.d.ts +2 -139
  147. package/dist/execution.d.ts.map +1 -1
  148. package/dist/export-TPORYVRZ.js +64 -0
  149. package/dist/export-TPORYVRZ.js.map +7 -0
  150. package/dist/fleet/host-acp-runner-cache.d.ts +9 -0
  151. package/dist/fleet/host-acp-runner-cache.d.ts.map +1 -0
  152. package/dist/fleet/host-acp.d.ts +3 -0
  153. package/dist/fleet/host-acp.d.ts.map +1 -0
  154. package/dist/fleet/host-concurrency.d.ts +2 -0
  155. package/dist/fleet/host-concurrency.d.ts.map +1 -0
  156. package/dist/fleet/host-context.d.ts +5 -0
  157. package/dist/fleet/host-context.d.ts.map +1 -0
  158. package/dist/fleet/host-director-builder.d.ts +24 -0
  159. package/dist/fleet/host-director-builder.d.ts.map +1 -0
  160. package/dist/fleet/host-director-event-bridges.d.ts +37 -0
  161. package/dist/fleet/host-director-event-bridges.d.ts.map +1 -0
  162. package/dist/fleet/host-director-services.d.ts +20 -0
  163. package/dist/fleet/host-director-services.d.ts.map +1 -0
  164. package/dist/fleet/host-event-bridge.d.ts +17 -0
  165. package/dist/fleet/host-event-bridge.d.ts.map +1 -0
  166. package/dist/fleet/host-helpers.d.ts +22 -0
  167. package/dist/fleet/host-helpers.d.ts.map +1 -0
  168. package/dist/fleet/host-learning-tracker.d.ts +11 -0
  169. package/dist/fleet/host-learning-tracker.d.ts.map +1 -0
  170. package/dist/fleet/host-learning.d.ts +4 -0
  171. package/dist/fleet/host-learning.d.ts.map +1 -0
  172. package/dist/fleet/host-lifecycle-events.d.ts +4 -0
  173. package/dist/fleet/host-lifecycle-events.d.ts.map +1 -0
  174. package/dist/fleet/host-paths.d.ts +3 -0
  175. package/dist/fleet/host-paths.d.ts.map +1 -0
  176. package/dist/fleet/host-provider.d.ts +22 -0
  177. package/dist/fleet/host-provider.d.ts.map +1 -0
  178. package/dist/fleet/host-session-writer.d.ts +3 -0
  179. package/dist/fleet/host-session-writer.d.ts.map +1 -0
  180. package/dist/fleet/host-shadow-pass.d.ts +21 -0
  181. package/dist/fleet/host-shadow-pass.d.ts.map +1 -0
  182. package/dist/fleet/host-spawn-types.d.ts +25 -0
  183. package/dist/fleet/host-spawn-types.d.ts.map +1 -0
  184. package/dist/fleet/host-status.d.ts +48 -0
  185. package/dist/fleet/host-status.d.ts.map +1 -0
  186. package/dist/fleet/host-subagent-factory.d.ts +16 -0
  187. package/dist/fleet/host-subagent-factory.d.ts.map +1 -0
  188. package/dist/fleet/host-supervisor.d.ts +16 -0
  189. package/dist/fleet/host-supervisor.d.ts.map +1 -0
  190. package/dist/fleet/host-task-result-report.d.ts +11 -0
  191. package/dist/fleet/host-task-result-report.d.ts.map +1 -0
  192. package/dist/fleet/host-types.d.ts +89 -0
  193. package/dist/fleet/host-types.d.ts.map +1 -0
  194. package/dist/fleet/host.d.ts +10 -357
  195. package/dist/fleet/host.d.ts.map +1 -1
  196. package/dist/fleet/routing.d.ts +1 -1
  197. package/dist/fleet/routing.d.ts.map +1 -1
  198. package/dist/fleet/status-broadcast.d.ts.map +1 -1
  199. package/dist/goal-host.d.ts +2 -2
  200. package/dist/goal-host.d.ts.map +1 -1
  201. package/dist/hq-BECGICEZ.js +547 -0
  202. package/dist/hq-BECGICEZ.js.map +7 -0
  203. package/dist/hq-command-controller.d.ts +2 -2
  204. package/dist/hq-command-controller.d.ts.map +1 -1
  205. package/dist/hq-publisher.d.ts +2 -2
  206. package/dist/hq-publisher.d.ts.map +1 -1
  207. package/dist/hq-server/auth-state.d.ts +1 -1
  208. package/dist/hq-server/auth-state.d.ts.map +1 -1
  209. package/dist/hq-server/project-root.d.ts +5 -0
  210. package/dist/hq-server/project-root.d.ts.map +1 -0
  211. package/dist/hq-server/routes/auth-handlers.d.ts +32 -0
  212. package/dist/hq-server/routes/auth-handlers.d.ts.map +1 -0
  213. package/dist/hq-server/routes/session-handlers.d.ts +8 -0
  214. package/dist/hq-server/routes/session-handlers.d.ts.map +1 -0
  215. package/dist/hq-server/routes/system-handlers.d.ts +16 -0
  216. package/dist/hq-server/routes/system-handlers.d.ts.map +1 -0
  217. package/dist/hq-server/routes.d.ts +6 -6
  218. package/dist/hq-server/routes.d.ts.map +1 -1
  219. package/dist/hq-server/ws.d.ts +1 -1
  220. package/dist/hq-server/ws.d.ts.map +1 -1
  221. package/dist/hq-server-FJOVOERO.js +39 -0
  222. package/dist/hq-server-FJOVOERO.js.map +7 -0
  223. package/dist/hq-server.d.ts.map +1 -1
  224. package/dist/hq-ttl-U2FAYFAT.js +8 -0
  225. package/dist/hq-ttl-U2FAYFAT.js.map +7 -0
  226. package/dist/hq-tunnel-YZLRONPV.js +111 -0
  227. package/dist/hq-tunnel-YZLRONPV.js.map +7 -0
  228. package/dist/index.d.ts +2 -1
  229. package/dist/index.d.ts.map +1 -1
  230. package/dist/index.js +2507 -52632
  231. package/dist/index.js.map +4 -4
  232. package/dist/init-E2NDDOHI.js +27 -0
  233. package/dist/init-E2NDDOHI.js.map +7 -0
  234. package/dist/input-reader.d.ts +1 -1
  235. package/dist/input-reader.d.ts.map +1 -1
  236. package/dist/kanban-dispatch-route.d.ts +14 -0
  237. package/dist/kanban-dispatch-route.d.ts.map +1 -0
  238. package/dist/kanban-hq-sync.d.ts +2 -0
  239. package/dist/kanban-hq-sync.d.ts.map +1 -1
  240. package/dist/kanban-run-mirror-EKVNGXWW.js +12 -0
  241. package/dist/kanban-run-mirror-EKVNGXWW.js.map +7 -0
  242. package/dist/live-settings-input.d.ts +69 -0
  243. package/dist/live-settings-input.d.ts.map +1 -0
  244. package/dist/mailbox-serve-2UWHEN3M.js +302 -0
  245. package/dist/mailbox-serve-2UWHEN3M.js.map +7 -0
  246. package/dist/mcp-CYLPUEHC.js +413 -0
  247. package/dist/mcp-CYLPUEHC.js.map +7 -0
  248. package/dist/mcp-serve.d.ts +1 -1
  249. package/dist/mcp-serve.d.ts.map +1 -1
  250. package/dist/modeldiag-HENYJ4N7.js +1290 -0
  251. package/dist/modeldiag-HENYJ4N7.js.map +7 -0
  252. package/dist/next-task-predictor.d.ts +1 -1
  253. package/dist/next-task-predictor.d.ts.map +1 -1
  254. package/dist/permissions-FNYLZIL4.js +115 -0
  255. package/dist/permissions-FNYLZIL4.js.map +7 -0
  256. package/dist/picker-key-state.d.ts +7 -0
  257. package/dist/picker-key-state.d.ts.map +1 -0
  258. package/dist/picker-model-picker.d.ts +6 -0
  259. package/dist/picker-model-picker.d.ts.map +1 -0
  260. package/dist/picker-ui.d.ts +17 -0
  261. package/dist/picker-ui.d.ts.map +1 -0
  262. package/dist/picker.d.ts +4 -37
  263. package/dist/picker.d.ts.map +1 -1
  264. package/dist/plugin-management.d.ts +1 -1
  265. package/dist/plugin-management.d.ts.map +1 -1
  266. package/dist/plugin-usage-OU6X6LM3.js +40 -0
  267. package/dist/plugin-usage-OU6X6LM3.js.map +7 -0
  268. package/dist/plugins-4LJ5IUBI.js +24 -0
  269. package/dist/plugins-4LJ5IUBI.js.map +7 -0
  270. package/dist/pre-launch.d.ts +0 -1
  271. package/dist/pre-launch.d.ts.map +1 -1
  272. package/dist/project-BLQ3ALVL.js +76 -0
  273. package/dist/project-BLQ3ALVL.js.map +7 -0
  274. package/dist/project-manifest-GE25PW4S.js +18 -0
  275. package/dist/project-manifest-GE25PW4S.js.map +7 -0
  276. package/dist/project-picker-BOCWHBXP.js +17 -0
  277. package/dist/project-picker-BOCWHBXP.js.map +7 -0
  278. package/dist/projects-XE76NFNZ.js +38 -0
  279. package/dist/projects-XE76NFNZ.js.map +7 -0
  280. package/dist/provider-helpers.d.ts +22 -6
  281. package/dist/provider-helpers.d.ts.map +1 -1
  282. package/dist/providers-models-GDELBHZK.js +589 -0
  283. package/dist/providers-models-GDELBHZK.js.map +7 -0
  284. package/dist/quick-VIO2BEHS.js +10 -0
  285. package/dist/quick-VIO2BEHS.js.map +7 -0
  286. package/dist/repl-auto-proceed.d.ts +19 -0
  287. package/dist/repl-auto-proceed.d.ts.map +1 -0
  288. package/dist/repl-client-registration.d.ts +7 -0
  289. package/dist/repl-client-registration.d.ts.map +1 -0
  290. package/dist/repl-input.d.ts +11 -0
  291. package/dist/repl-input.d.ts.map +1 -0
  292. package/dist/repl-options.d.ts +54 -0
  293. package/dist/repl-options.d.ts.map +1 -0
  294. package/dist/repl-rendering.d.ts +4 -0
  295. package/dist/repl-rendering.d.ts.map +1 -0
  296. package/dist/repl-suggestions.d.ts +21 -0
  297. package/dist/repl-suggestions.d.ts.map +1 -0
  298. package/dist/repl.d.ts +3 -162
  299. package/dist/repl.d.ts.map +1 -1
  300. package/dist/replay-KCTXNMZQ.js +75 -0
  301. package/dist/replay-KCTXNMZQ.js.map +7 -0
  302. package/dist/rewind-EJMVFVLS.js +185 -0
  303. package/dist/rewind-EJMVFVLS.js.map +7 -0
  304. package/dist/sdd-runtime-IKPROVV2.js +54 -0
  305. package/dist/sdd-runtime-IKPROVV2.js.map +7 -0
  306. package/dist/services/dispatch-classifier.d.ts +1 -1
  307. package/dist/services/dispatch-classifier.d.ts.map +1 -1
  308. package/dist/services/project-facts.d.ts.map +1 -1
  309. package/dist/services/sdd/project-context.d.ts +1 -1
  310. package/dist/services/sdd/project-context.d.ts.map +1 -1
  311. package/dist/services/sdd/task-manager.d.ts +1 -1
  312. package/dist/services/sdd/task-manager.d.ts.map +1 -1
  313. package/dist/services/statusline-config.d.ts +1 -1
  314. package/dist/services/statusline-config.d.ts.map +1 -1
  315. package/dist/session-event-wiring.d.ts +5 -2
  316. package/dist/session-event-wiring.d.ts.map +1 -1
  317. package/dist/sessions-config-NLCMK3BY.js +409 -0
  318. package/dist/sessions-config-NLCMK3BY.js.map +7 -0
  319. package/dist/settings-menu.d.ts +4 -19
  320. package/dist/settings-menu.d.ts.map +1 -1
  321. package/dist/simpleui-dist-JIFGUJO7.js +93 -0
  322. package/dist/simpleui-dist-JIFGUJO7.js.map +7 -0
  323. package/dist/slash-commands/agent-improve.d.ts +6 -5
  324. package/dist/slash-commands/agent-improve.d.ts.map +1 -1
  325. package/dist/slash-commands/brain.d.ts.map +1 -1
  326. package/dist/slash-commands/btw.d.ts +1 -1
  327. package/dist/slash-commands/btw.d.ts.map +1 -1
  328. package/dist/slash-commands/clear.d.ts +1 -1
  329. package/dist/slash-commands/clear.d.ts.map +1 -1
  330. package/dist/slash-commands/fallback.d.ts.map +1 -1
  331. package/dist/slash-commands/goal-refiner.d.ts +2 -2
  332. package/dist/slash-commands/goal-refiner.d.ts.map +1 -1
  333. package/dist/slash-commands/interrupt.d.ts +1 -1
  334. package/dist/slash-commands/interrupt.d.ts.map +1 -1
  335. package/dist/slash-commands/kanban-agent-helpers.d.ts +18 -0
  336. package/dist/slash-commands/kanban-agent-helpers.d.ts.map +1 -0
  337. package/dist/slash-commands/kanban-format.d.ts +16 -0
  338. package/dist/slash-commands/kanban-format.d.ts.map +1 -0
  339. package/dist/slash-commands/kanban-help.d.ts +2 -0
  340. package/dist/slash-commands/kanban-help.d.ts.map +1 -0
  341. package/dist/slash-commands/kanban.d.ts +1 -1
  342. package/dist/slash-commands/kanban.d.ts.map +1 -1
  343. package/dist/slash-commands/mailbox-demo.d.ts.map +1 -1
  344. package/dist/slash-commands/mailbox.d.ts +3 -2
  345. package/dist/slash-commands/mailbox.d.ts.map +1 -1
  346. package/dist/slash-commands/memory-compact.d.ts +5 -0
  347. package/dist/slash-commands/memory-compact.d.ts.map +1 -0
  348. package/dist/slash-commands/memory-flags.d.ts +36 -0
  349. package/dist/slash-commands/memory-flags.d.ts.map +1 -0
  350. package/dist/slash-commands/memory-formatters.d.ts +16 -0
  351. package/dist/slash-commands/memory-formatters.d.ts.map +1 -0
  352. package/dist/slash-commands/memory.d.ts.map +1 -1
  353. package/dist/slash-commands/mouse.d.ts +2 -2
  354. package/dist/slash-commands/refiner.d.ts +1 -1
  355. package/dist/slash-commands/refiner.d.ts.map +1 -1
  356. package/dist/slash-commands/review.d.ts.map +1 -1
  357. package/dist/slash-commands/sdd-command-helpers.d.ts +23 -0
  358. package/dist/slash-commands/sdd-command-helpers.d.ts.map +1 -0
  359. package/dist/slash-commands/sdd-format.d.ts +32 -0
  360. package/dist/slash-commands/sdd-format.d.ts.map +1 -0
  361. package/dist/slash-commands/sdd.d.ts +1 -1
  362. package/dist/slash-commands/sdd.d.ts.map +1 -1
  363. package/dist/slash-commands/tool.d.ts +1 -1
  364. package/dist/slash-commands/tool.d.ts.map +1 -1
  365. package/dist/slash-commands/working-dir.d.ts +1 -1
  366. package/dist/slash-commands/working-dir.d.ts.map +1 -1
  367. package/dist/subcommands/handlers/chronicle.d.ts.map +1 -1
  368. package/dist/subcommands/handlers/mailbox-serve.d.ts.map +1 -1
  369. package/dist/subcommands/handlers/model-smoke-test.d.ts +51 -0
  370. package/dist/subcommands/handlers/model-smoke-test.d.ts.map +1 -0
  371. package/dist/subcommands/handlers/modeldiag-profiles.d.ts +64 -0
  372. package/dist/subcommands/handlers/modeldiag-profiles.d.ts.map +1 -0
  373. package/dist/subcommands/handlers/modeldiag.d.ts.map +1 -1
  374. package/dist/subcommands/handlers/per-subcommand-deep-help-table.d.ts +3 -0
  375. package/dist/subcommands/handlers/per-subcommand-deep-help-table.d.ts.map +1 -0
  376. package/dist/subcommands/handlers/per-subcommand-help-data.d.ts +3 -0
  377. package/dist/subcommands/handlers/per-subcommand-help-data.d.ts.map +1 -0
  378. package/dist/subcommands/handlers/per-subcommand-help-table.d.ts +36 -0
  379. package/dist/subcommands/handlers/per-subcommand-help-table.d.ts.map +1 -0
  380. package/dist/subcommands/handlers/per-subcommand-help-types.d.ts +18 -0
  381. package/dist/subcommands/handlers/per-subcommand-help-types.d.ts.map +1 -0
  382. package/dist/subcommands/handlers/per-subcommand-help.d.ts +2 -80
  383. package/dist/subcommands/handlers/per-subcommand-help.d.ts.map +1 -1
  384. package/dist/subcommands/handlers/rewind.d.ts.map +1 -1
  385. package/dist/subcommands/index.d.ts +7 -0
  386. package/dist/subcommands/index.d.ts.map +1 -1
  387. package/dist/tools-skills-UNKLOB7M.js +29 -0
  388. package/dist/tools-skills-UNKLOB7M.js.map +7 -0
  389. package/dist/update-YC4TYW2Y.js +16 -0
  390. package/dist/update-YC4TYW2Y.js.map +7 -0
  391. package/dist/update-check-UMYTOH7Z.js +18 -0
  392. package/dist/update-check-UMYTOH7Z.js.map +7 -0
  393. package/dist/version-help-DROHZRW6.js +11 -0
  394. package/dist/version-help-DROHZRW6.js.map +7 -0
  395. package/dist/webui-server/connection-handler.d.ts +2 -1
  396. package/dist/webui-server/connection-handler.d.ts.map +1 -1
  397. package/dist/webui-server/kanban-host-adapter.d.ts +9 -5
  398. package/dist/webui-server/kanban-host-adapter.d.ts.map +1 -1
  399. package/dist/webui-server/listen-helpers.d.ts +18 -0
  400. package/dist/webui-server/listen-helpers.d.ts.map +1 -0
  401. package/dist/webui-server/node-pty-loader.d.ts +6 -0
  402. package/dist/webui-server/node-pty-loader.d.ts.map +1 -0
  403. package/dist/webui-server/prefs-seeding.d.ts.map +1 -1
  404. package/dist/webui-server/terminal-log-view.d.ts +30 -0
  405. package/dist/webui-server/terminal-log-view.d.ts.map +1 -0
  406. package/dist/webui-server-G3TISUIY.js +1459 -0
  407. package/dist/webui-server-G3TISUIY.js.map +7 -0
  408. package/dist/webui-server-options.d.ts +189 -0
  409. package/dist/webui-server-options.d.ts.map +1 -0
  410. package/dist/webui-server.d.ts +2 -178
  411. package/dist/webui-server.d.ts.map +1 -1
  412. package/dist/wiring/brain-and-orchestration.d.ts +2 -2
  413. package/dist/wiring/brain-and-orchestration.d.ts.map +1 -1
  414. package/dist/wiring/codebase-index.d.ts.map +1 -1
  415. package/dist/wiring/command-host-adapters.d.ts +2 -2
  416. package/dist/wiring/command-host-adapters.d.ts.map +1 -1
  417. package/dist/wiring/command-host-state.d.ts +7 -7
  418. package/dist/wiring/command-host-state.d.ts.map +1 -1
  419. package/dist/wiring/dep-watcher-bridge.d.ts +23 -0
  420. package/dist/wiring/dep-watcher-bridge.d.ts.map +1 -0
  421. package/dist/wiring/dep-watcher.d.ts +1 -1
  422. package/dist/wiring/dep-watcher.d.ts.map +1 -1
  423. package/dist/wiring/director-setup.d.ts +4 -4
  424. package/dist/wiring/director-setup.d.ts.map +1 -1
  425. package/dist/wiring/eternal-command-handlers.d.ts +5 -5
  426. package/dist/wiring/eternal-command-handlers.d.ts.map +1 -1
  427. package/dist/wiring/fleet-command-handlers.d.ts +2 -2
  428. package/dist/wiring/fleet-command-handlers.d.ts.map +1 -1
  429. package/dist/wiring/hq-telemetry.d.ts +5 -5
  430. package/dist/wiring/hq-telemetry.d.ts.map +1 -1
  431. package/dist/wiring/lifecycle-plugins.d.ts +9 -8
  432. package/dist/wiring/lifecycle-plugins.d.ts.map +1 -1
  433. package/dist/wiring/mailbox-bridge-bootstrap.d.ts +1 -1
  434. package/dist/wiring/management-tools.d.ts +15 -0
  435. package/dist/wiring/management-tools.d.ts.map +1 -0
  436. package/dist/wiring/pipeline.d.ts +4 -3
  437. package/dist/wiring/pipeline.d.ts.map +1 -1
  438. package/dist/wiring/plugins.d.ts +1 -1
  439. package/dist/wiring/plugins.d.ts.map +1 -1
  440. package/dist/wiring/provider-runtime-setup.d.ts +18 -5
  441. package/dist/wiring/provider-runtime-setup.d.ts.map +1 -1
  442. package/dist/wiring/provider-status.d.ts +3 -3
  443. package/dist/wiring/provider-status.d.ts.map +1 -1
  444. package/dist/wiring/provider-utility-tools.d.ts +4 -4
  445. package/dist/wiring/provider-utility-tools.d.ts.map +1 -1
  446. package/dist/wiring/provider.d.ts.map +1 -1
  447. package/dist/wiring/replay.d.ts +2 -2
  448. package/dist/wiring/replay.d.ts.map +1 -1
  449. package/dist/wiring/runtime-controller-deps.d.ts +4 -4
  450. package/dist/wiring/runtime-controller-deps.d.ts.map +1 -1
  451. package/dist/wiring/runtime-dispatch-state.d.ts +5 -5
  452. package/dist/wiring/runtime-dispatch-state.d.ts.map +1 -1
  453. package/dist/wiring/runtime-picker-deps.d.ts +3 -3
  454. package/dist/wiring/runtime-picker-deps.d.ts.map +1 -1
  455. package/dist/wiring/sage.d.ts.map +1 -1
  456. package/dist/wiring/sdd-handlers.d.ts.map +1 -1
  457. package/dist/wiring/session-command-handlers.d.ts +5 -5
  458. package/dist/wiring/session-command-handlers.d.ts.map +1 -1
  459. package/dist/wiring/session-registry.d.ts +38 -0
  460. package/dist/wiring/session-registry.d.ts.map +1 -0
  461. package/dist/wiring/session.d.ts +7 -5
  462. package/dist/wiring/session.d.ts.map +1 -1
  463. package/dist/wiring/tools.d.ts +2 -2
  464. package/dist/wiring/tools.d.ts.map +1 -1
  465. package/package.json +22 -22
  466. package/dist/cli-recovery-prompt.d.ts +0 -19
  467. package/dist/cli-recovery-prompt.d.ts.map +0 -1
  468. package/dist/first-run-auth-gate.d.ts +0 -20
  469. package/dist/first-run-auth-gate.d.ts.map +0 -1
  470. package/dist/pre-launch/indexing-question.d.ts +0 -28
  471. package/dist/pre-launch/indexing-question.d.ts.map +0 -1
@@ -0,0 +1,84 @@
1
+ import {
2
+ API_VERSION,
3
+ CLI_VERSION
4
+ } from "./chunk-XJXDOF63.js";
5
+
6
+ // src/subcommands/handlers/version-help.ts
7
+ import * as os from "node:os";
8
+ import { color } from "@wrongstack/core/utils";
9
+ var versionCmd = async (_args, deps) => {
10
+ deps.renderer.write(
11
+ `WrongStack ${CLI_VERSION} (apiVersion ${API_VERSION}, node ${process.version}, ${os.platform()})
12
+ `
13
+ );
14
+ return 0;
15
+ };
16
+ var helpCmd = async (_args, deps) => {
17
+ const lines = [
18
+ color.bold("WrongStack \u2014 usage"),
19
+ "",
20
+ " wstack Start REPL",
21
+ ' wstack "<task>" Run task and exit',
22
+ " wstack desktop Open WrongStack Desktop (alias: --desktop)",
23
+ " wstack webui Serve the project WebUI (alias: --webui)",
24
+ " wstack simpleui Serve the minimal chat UI (alias: --simpleui)",
25
+ " wstack hq Start HQ command center (alias: --hq)",
26
+ ' wstack --eternal "<mission>" Launch eternal-autonomy loop against a goal \u2014 Ctrl+C to stop',
27
+ " wstack resume [<id>] Resume a session",
28
+ " wstack sessions List recent sessions",
29
+ " wstack auth Interactive setup + key manager (add/edit/delete)",
30
+ " wstack auth <provider> Add API key for a provider",
31
+ " wstack auth list Quick listing of saved providers and keys",
32
+ " wstack auth status <id> Detailed view of one provider",
33
+ " wstack auth remove <id> Delete a provider (asks for confirmation)",
34
+ " wstack auth <provider> Add a key for a provider (--label, --family, \u2026)",
35
+ " wstack config [show|edit] Show or edit effective config",
36
+ " wstack tools List registered tools",
37
+ " wstack skills List discovered skills",
38
+ " wstack providers [--all] List providers from models.dev",
39
+ " wstack models [<provider>] List models",
40
+ " wstack models refresh Force-refresh cache",
41
+ " wstack models add <mid> Add/override custom model (--max-context, --tools, --vision, \u2026)",
42
+ " wstack models remove <mid> Remove a custom model",
43
+ " wstack models list List all custom models",
44
+ " wstack mcp [list] List MCP servers",
45
+ " wstack plugin [list|report|menu|official|install|toggle|remove|enable|disable] Manage plugins",
46
+ " wstack project id|init|rekey Manage the committed repository identity",
47
+ " wstack projects List tracked projects",
48
+ " wstack diag Full diagnostics",
49
+ " wstack doctor Health checks",
50
+ " wstack export <id> [opts] Render a session",
51
+ " wstack usage Token + cost summary",
52
+ " wstack version Print version",
53
+ "",
54
+ color.bold("Common flags"),
55
+ " --yolo / --no-yolo Force auto-approval on or off at startup",
56
+ " --confirm-destructive Deprecated \u2014 YOLO no longer prompts by destructiveness",
57
+ " --yolo-destructive Deprecated compatibility flag; YOLO no longer prompts by destructiveness",
58
+ " --tui / --no-tui Force or disable TUI mode",
59
+ " --mouse Full mouse mode in the TUI (in-app scroll + clickable UI)",
60
+ " --desktop Open WrongStack Desktop (requires @wrongstack/desktop)",
61
+ " --hq [--host <h>] [--port <n>] [--password <secret>] [--tunnel] [--open]",
62
+ " Start HQ; --tunnel publishes a temporary HTTPS URL",
63
+ " --webui [--host <h>] [--port <n>] [--webui-token <t>] [--open]",
64
+ " [--webui-public-url <url>] [--webui-public-ws-url <url>] [--webui-require-token]",
65
+ " Serve the browser UI + WS bridge (prints a token URL,",
66
+ " --open pops the browser; shares this terminal's agent)",
67
+ " --simpleui [same network flags as --webui] [--open]",
68
+ " Serve the independent minimal chat UI",
69
+ " --full-auto SimpleUI: runtime-only YOLO + Director + autonomy override",
70
+ ' --eternal "<mission>" Start an eternal-autonomy loop',
71
+ " --no-hints Hide launch hints",
72
+ " --skip-index Skip codebase indexing on startup",
73
+ " --chimera-auto-fix off|ask|auto",
74
+ " How to handle Chimera review findings (default: config value)"
75
+ ];
76
+ deps.renderer.write(lines.join("\n") + "\n");
77
+ return 0;
78
+ };
79
+
80
+ export {
81
+ versionCmd,
82
+ helpCmd
83
+ };
84
+ //# sourceMappingURL=chunk-ABXK4VVY.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/subcommands/handlers/version-help.ts"],
4
+ "sourcesContent": ["import * as os from 'node:os';\nimport { color } from '@wrongstack/core/utils';\nimport { API_VERSION, CLI_VERSION } from '../../version.js';\nimport type { SubcommandHandler } from '../index.js';\n\nexport const versionCmd: SubcommandHandler = async (_args, deps) => {\n deps.renderer.write(\n `WrongStack ${CLI_VERSION} (apiVersion ${API_VERSION}, node ${process.version}, ${os.platform()})\\n`,\n );\n return 0;\n};\n\nexport const helpCmd: SubcommandHandler = async (_args, deps) => {\n const lines = [\n color.bold('WrongStack \u2014 usage'),\n '',\n ' wstack Start REPL',\n ' wstack \"<task>\" Run task and exit',\n ' wstack desktop Open WrongStack Desktop (alias: --desktop)',\n ' wstack webui Serve the project WebUI (alias: --webui)',\n ' wstack simpleui Serve the minimal chat UI (alias: --simpleui)',\n ' wstack hq Start HQ command center (alias: --hq)',\n ' wstack --eternal \"<mission>\" Launch eternal-autonomy loop against a goal \u2014 Ctrl+C to stop',\n ' wstack resume [<id>] Resume a session',\n ' wstack sessions List recent sessions',\n ' wstack auth Interactive setup + key manager (add/edit/delete)',\n ' wstack auth <provider> Add API key for a provider',\n ' wstack auth list Quick listing of saved providers and keys',\n ' wstack auth status <id> Detailed view of one provider',\n ' wstack auth remove <id> Delete a provider (asks for confirmation)',\n ' wstack auth <provider> Add a key for a provider (--label, --family, \u2026)',\n ' wstack config [show|edit] Show or edit effective config',\n ' wstack tools List registered tools',\n ' wstack skills List discovered skills',\n ' wstack providers [--all] List providers from models.dev',\n ' wstack models [<provider>] List models',\n ' wstack models refresh Force-refresh cache',\n ' wstack models add <mid> Add/override custom model (--max-context, --tools, --vision, \u2026)',\n ' wstack models remove <mid> Remove a custom model',\n ' wstack models list List all custom models',\n ' wstack mcp [list] List MCP servers',\n ' wstack plugin [list|report|menu|official|install|toggle|remove|enable|disable] Manage plugins',\n ' wstack project id|init|rekey Manage the committed repository identity',\n ' wstack projects List tracked projects',\n ' wstack diag Full diagnostics',\n ' wstack doctor Health checks',\n ' wstack export <id> [opts] Render a session',\n ' wstack usage Token + cost summary',\n ' wstack version Print version',\n '',\n color.bold('Common flags'),\n ' --yolo / --no-yolo Force auto-approval on or off at startup',\n ' --confirm-destructive Deprecated \u2014 YOLO no longer prompts by destructiveness',\n ' --yolo-destructive Deprecated compatibility flag; YOLO no longer prompts by destructiveness',\n ' --tui / --no-tui Force or disable TUI mode',\n ' --mouse Full mouse mode in the TUI (in-app scroll + clickable UI)',\n ' --desktop Open WrongStack Desktop (requires @wrongstack/desktop)',\n ' --hq [--host <h>] [--port <n>] [--password <secret>] [--tunnel] [--open]',\n ' Start HQ; --tunnel publishes a temporary HTTPS URL',\n ' --webui [--host <h>] [--port <n>] [--webui-token <t>] [--open]',\n ' [--webui-public-url <url>] [--webui-public-ws-url <url>] [--webui-require-token]',\n ' Serve the browser UI + WS bridge (prints a token URL,',\n \" --open pops the browser; shares this terminal's agent)\",\n ' --simpleui [same network flags as --webui] [--open]',\n ' Serve the independent minimal chat UI',\n ' --full-auto SimpleUI: runtime-only YOLO + Director + autonomy override',\n ' --eternal \"<mission>\" Start an eternal-autonomy loop',\n ' --no-hints Hide launch hints',\n ' --skip-index Skip codebase indexing on startup',\n ' --chimera-auto-fix off|ask|auto',\n ' How to handle Chimera review findings (default: config value)',\n ];\n deps.renderer.write(lines.join('\\n') + '\\n');\n return 0;\n};\n"],
5
+ "mappings": ";;;;;;;AAAA,YAAY,QAAQ;AACpB,SAAS,aAAa;AAIf,IAAM,aAAgC,OAAO,OAAO,SAAS;AAClE,OAAK,SAAS;AAAA,IACZ,cAAc,WAAW,gBAAgB,WAAW,UAAU,QAAQ,OAAO,KAAQ,YAAS,CAAC;AAAA;AAAA,EACjG;AACA,SAAO;AACT;AAEO,IAAM,UAA6B,OAAO,OAAO,SAAS;AAC/D,QAAM,QAAQ;AAAA,IACZ,MAAM,KAAK,yBAAoB;AAAA,IAC/B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM,KAAK,cAAc;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,OAAK,SAAS,MAAM,MAAM,KAAK,IAAI,IAAI,IAAI;AAC3C,SAAO;AACT;",
6
+ "names": []
7
+ }
@@ -0,0 +1,306 @@
1
+ import {
2
+ buildWin32CmdShimInvocation
3
+ } from "./chunk-VJUEZZYB.js";
4
+ import {
5
+ checkForUpdate
6
+ } from "./chunk-F4PEGAJZ.js";
7
+
8
+ // src/subcommands/handlers/update.ts
9
+ import { spawn } from "node:child_process";
10
+ import { existsSync, realpathSync } from "node:fs";
11
+ var MAX_UPDATE_OUTPUT_CHARS = 256 * 1024;
12
+ async function runUpdateCommand(args, deps) {
13
+ const cwd = deps.cwd;
14
+ if (deps.flags?.["help"] === true || deps.flags?.["help"] === "true") {
15
+ writeUpdateUsage(deps.renderer);
16
+ return 0;
17
+ }
18
+ const unsupportedFlag = Object.keys(deps.flags ?? {}).find(
19
+ (flag) => ![
20
+ "check-only",
21
+ "c",
22
+ "pm",
23
+ "package-manager",
24
+ "allow-scripts",
25
+ "lifecycle-scripts",
26
+ "npm",
27
+ "pnpm",
28
+ "yarn",
29
+ "bun",
30
+ "help",
31
+ "no-banner",
32
+ "verbose",
33
+ "trace"
34
+ ].includes(flag)
35
+ );
36
+ if (unsupportedFlag) {
37
+ deps.renderer.write(`Unknown update option: --${unsupportedFlag}
38
+ `);
39
+ writeUpdateUsage(deps.renderer);
40
+ return 1;
41
+ }
42
+ const parsed = parseUpdateArgs(mergeUpdateArgs(args, deps.flags));
43
+ if (parsed.error) {
44
+ deps.renderer.write(`${parsed.error}
45
+ `);
46
+ writeUpdateUsage(deps.renderer);
47
+ return 1;
48
+ }
49
+ const packageName = detectUpdatePackageName();
50
+ const info = await checkForUpdate({
51
+ packageName,
52
+ forceRefresh: true,
53
+ homeFn: () => deps.userHome
54
+ });
55
+ if (info.checkFailed) {
56
+ deps.renderer.write(
57
+ `Update check failed for ${packageName}. Check your internet connection and try again.
58
+ `
59
+ );
60
+ return 1;
61
+ }
62
+ if (parsed.checkOnly) {
63
+ if (info.outdated) {
64
+ deps.renderer.write(`Update available: v${info.current} \u2192 v${info.latest}
65
+ `);
66
+ } else {
67
+ deps.renderer.write(`You are on the latest version: v${info.current}
68
+ `);
69
+ }
70
+ return 0;
71
+ }
72
+ if (!info.outdated) {
73
+ deps.renderer.write(`You are already on the latest version: v${info.current}
74
+ `);
75
+ return 0;
76
+ }
77
+ const packageManager = parsed.packageManager ?? detectUpdatePackageManager();
78
+ const updateCommand = buildUpdateCommand(packageManager, packageName, info.latest, {
79
+ allowScripts: parsed.allowScripts
80
+ });
81
+ deps.renderer.write(`Updating wrongstack from v${info.current} to v${info.latest}...
82
+ `);
83
+ deps.renderer.write(`Running: ${updateCommand.display}
84
+ `);
85
+ try {
86
+ const result = await new Promise((resolve, reject) => {
87
+ const child = spawn(updateCommand.executable, updateCommand.args, {
88
+ cwd,
89
+ stdio: "pipe",
90
+ signal: AbortSignal.timeout(12e4),
91
+ windowsHide: true,
92
+ ...updateCommand.windowsVerbatimArguments ? { windowsVerbatimArguments: updateCommand.windowsVerbatimArguments } : {}
93
+ });
94
+ let stdout = "";
95
+ let stderr = "";
96
+ child.stdout?.on("data", (data) => {
97
+ stdout = appendOutputTail(stdout, data);
98
+ });
99
+ child.stderr?.on("data", (data) => {
100
+ stderr = appendOutputTail(stderr, data);
101
+ });
102
+ child.on("error", reject);
103
+ child.on("close", (code, signal) => resolve({ code, signal, stdout, stderr }));
104
+ });
105
+ if (result.code === 0 && result.signal === null) {
106
+ deps.renderer.write(
107
+ `
108
+ Updated to v${info.latest}. Restart wrongstack to use the new version.
109
+ `
110
+ );
111
+ const warning = installWarningSummary(`${result.stderr}
112
+ ${result.stdout}`);
113
+ if (warning) deps.renderer.write(`
114
+ ${warning}
115
+ `);
116
+ } else {
117
+ const termination = result.code === null ? `terminated by ${result.signal ?? "an unknown signal"}` : `failed with exit code ${result.code}`;
118
+ deps.renderer.write(`
119
+ Update ${termination}.
120
+ `);
121
+ const detail = `${result.stderr}
122
+ ${result.stdout}`.trim();
123
+ if (detail) deps.renderer.write(`
124
+ ${detail}
125
+ `);
126
+ deps.renderer.write(
127
+ `
128
+ Try the matching global update command manually:
129
+ ${updateCommand.display}
130
+ ` + otherManagerCommands(packageManager, packageName, info.latest, {
131
+ allowScripts: parsed.allowScripts
132
+ })
133
+ );
134
+ }
135
+ return result.code ?? 1;
136
+ } catch (err) {
137
+ const msg = err instanceof Error ? err.message : String(err);
138
+ if (msg.includes("ENOENT")) {
139
+ deps.renderer.write(`
140
+ Update failed: ${packageManager} not found in PATH.
141
+ `);
142
+ return 1;
143
+ }
144
+ deps.renderer.write(`
145
+ Update failed: ${msg}
146
+ `);
147
+ return 1;
148
+ }
149
+ }
150
+ var updateCmd = async (args, deps) => runUpdateCommand(args, deps);
151
+ function writeUpdateUsage(renderer) {
152
+ renderer.write(
153
+ "Usage: wrongstack update [--check-only] [--pm npm|pnpm|yarn|bun] [--allow-scripts]\n"
154
+ );
155
+ }
156
+ function mergeUpdateArgs(args, flags) {
157
+ const merged = [...args];
158
+ if (!flags) return merged;
159
+ const addBoolean = (name, alias = name) => {
160
+ if (flags[name] === true || flags[name] === "true") merged.push(`--${alias}`);
161
+ };
162
+ addBoolean("check-only");
163
+ if (flags["c"] === true || flags["c"] === "true") merged.push("-c");
164
+ addBoolean("allow-scripts");
165
+ addBoolean("lifecycle-scripts");
166
+ for (const pm of ["npm", "pnpm", "yarn", "bun"]) addBoolean(pm);
167
+ const pmFlag = flags["pm"] ?? flags["package-manager"];
168
+ if (typeof pmFlag === "string") merged.push("--pm", pmFlag);
169
+ else if (pmFlag === true) merged.push("--pm");
170
+ return merged;
171
+ }
172
+ function parseUpdateArgs(args) {
173
+ let checkOnly = false;
174
+ let packageManager;
175
+ let allowScripts = false;
176
+ for (let i = 0; i < args.length; i++) {
177
+ const arg = args[i];
178
+ if (arg === void 0) continue;
179
+ if (arg === "--check-only" || arg === "-c") {
180
+ checkOnly = true;
181
+ continue;
182
+ }
183
+ if (arg === "--pm" || arg === "--package-manager") {
184
+ const value = args[++i];
185
+ const pm = parsePackageManager(value);
186
+ if (!pm)
187
+ return {
188
+ checkOnly,
189
+ packageManager,
190
+ allowScripts,
191
+ error: `Invalid package manager: ${value ?? "<missing>"}`
192
+ };
193
+ packageManager = pm;
194
+ continue;
195
+ }
196
+ const pmEq = arg.match(/^--(?:pm|package-manager)=(.+)$/)?.[1];
197
+ if (pmEq) {
198
+ const pm = parsePackageManager(pmEq);
199
+ if (!pm)
200
+ return { checkOnly, packageManager, allowScripts, error: `Invalid package manager: ${pmEq}` };
201
+ packageManager = pm;
202
+ continue;
203
+ }
204
+ const shorthand = arg.match(/^--(npm|pnpm|yarn|bun)$/)?.[1];
205
+ if (shorthand) {
206
+ packageManager = shorthand;
207
+ }
208
+ if (arg === "--allow-scripts" || arg === "--lifecycle-scripts") {
209
+ allowScripts = true;
210
+ }
211
+ }
212
+ return { checkOnly, packageManager, allowScripts, error: void 0 };
213
+ }
214
+ function parsePackageManager(value) {
215
+ if (value === "npm" || value === "pnpm" || value === "yarn" || value === "bun") return value;
216
+ return void 0;
217
+ }
218
+ function detectUpdatePackageManager(env = process.env, argv = process.argv) {
219
+ const forced = parsePackageManager(env.WRONGSTACK_UPDATE_PM);
220
+ if (forced) return forced;
221
+ const userAgent = env.npm_config_user_agent ?? "";
222
+ if (/\bpnpm\//i.test(userAgent)) return "pnpm";
223
+ if (/\byarn\//i.test(userAgent)) return "yarn";
224
+ if (/\bbun\//i.test(userAgent)) return "bun";
225
+ if (/\bnpm\//i.test(userAgent)) return "npm";
226
+ const execPath = `${env.npm_execpath ?? ""} ${argv[1] ?? ""}`;
227
+ const realPaths = [env.npm_execpath, argv[1]].filter((p) => typeof p === "string" && p.length > 0).map((p) => {
228
+ try {
229
+ return existsSync(p) ? realpathSync(p) : p;
230
+ } catch {
231
+ return p;
232
+ }
233
+ }).join(" ");
234
+ const hint = `${execPath} ${realPaths}`.replace(/\\/g, "/").toLowerCase();
235
+ if (hint.includes("/pnpm/") || hint.includes("/.pnpm/") || hint.includes("pnpm-global"))
236
+ return "pnpm";
237
+ if (hint.includes("/yarn/") || hint.includes("/.yarn/")) return "yarn";
238
+ if (hint.includes("/bun/") || hint.includes("/.bun/")) return "bun";
239
+ return "npm";
240
+ }
241
+ function detectUpdatePackageName(argv = process.argv) {
242
+ const entry = (argv[1] ?? "").replace(/\\/g, "/").toLowerCase();
243
+ return entry.includes("/node_modules/@wrongstack/cli/") || entry.includes("/packages/cli/dist/") ? "@wrongstack/cli" : "wrongstack";
244
+ }
245
+ function buildUpdateCommand(packageManager, packageName, version, opts = { allowScripts: false }) {
246
+ const ignoreScripts = !opts.allowScripts;
247
+ const target = `${packageName}@${version}`;
248
+ switch (packageManager) {
249
+ case "pnpm":
250
+ return command(
251
+ packageManager,
252
+ ignoreScripts ? ["add", "-g", "--ignore-scripts", target] : ["add", "-g", target]
253
+ );
254
+ case "yarn":
255
+ return command(
256
+ packageManager,
257
+ ignoreScripts ? ["global", "add", "--ignore-scripts", target] : ["global", "add", target]
258
+ );
259
+ case "bun":
260
+ return command(
261
+ packageManager,
262
+ ignoreScripts ? ["add", "-g", "--ignore-scripts", target] : ["add", "-g", target]
263
+ );
264
+ case "npm":
265
+ return command(
266
+ packageManager,
267
+ ignoreScripts ? ["install", "-g", "--ignore-scripts", target] : ["install", "-g", target]
268
+ );
269
+ }
270
+ }
271
+ function command(pm, args) {
272
+ const display = `${pm} ${args.join(" ")}`;
273
+ if (process.platform === "win32" && pm !== "bun") {
274
+ const shim = buildWin32CmdShimInvocation(pm, args);
275
+ return {
276
+ executable: shim.command,
277
+ args: shim.args,
278
+ display,
279
+ windowsVerbatimArguments: shim.windowsVerbatimArguments
280
+ };
281
+ }
282
+ return { executable: pm, args, display };
283
+ }
284
+ function otherManagerCommands(selected, packageName, version, opts = { allowScripts: false }) {
285
+ const commands = ["npm", "pnpm", "yarn", "bun"].filter((pm) => pm !== selected).map((pm) => ` ${buildUpdateCommand(pm, packageName, version, opts).display}`);
286
+ return commands.length > 0 ? `
287
+ Other package managers:
288
+ ${commands.join("\n")}
289
+ ` : "";
290
+ }
291
+ function appendOutputTail(current, chunk) {
292
+ const next = current + String(chunk);
293
+ return next.length <= MAX_UPDATE_OUTPUT_CHARS ? next : next.slice(next.length - MAX_UPDATE_OUTPUT_CHARS);
294
+ }
295
+ function installWarningSummary(output) {
296
+ if (!/allow-scripts|allowScripts/i.test(output)) return null;
297
+ return "Install completed, but npm reported blocked lifecycle scripts. If a native optional feature is missing, rerun the update with npm script approval for the named package.";
298
+ }
299
+
300
+ export {
301
+ runUpdateCommand,
302
+ updateCmd,
303
+ detectUpdatePackageManager,
304
+ detectUpdatePackageName
305
+ };
306
+ //# sourceMappingURL=chunk-AXVZMEWG.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/subcommands/handlers/update.ts"],
4
+ "sourcesContent": ["import { spawn } from 'node:child_process';\nimport { existsSync, realpathSync } from 'node:fs';\nimport type { TerminalRenderer } from '../../renderer.js';\nimport { checkForUpdate, type UpdatePackageName } from '../../update-check.js';\nimport { buildWin32CmdShimInvocation } from '../../utils/win32-cmd.js';\nimport type { SubcommandDeps, SubcommandHandler } from '../index.js';\n\ntype PackageManager = 'npm' | 'pnpm' | 'yarn' | 'bun';\n\ninterface ParsedUpdateArgs {\n checkOnly: boolean;\n packageManager: PackageManager | undefined;\n /** Default false \u2014 pass --ignore-scripts to the package manager. */\n allowScripts: boolean;\n error: string | undefined;\n}\n\ninterface UpdateCommand {\n executable: string;\n args: string[];\n display: string;\n windowsVerbatimArguments?: true | undefined;\n}\n\ninterface UpdateProcessResult {\n code: number | null;\n signal: NodeJS.Signals | null;\n stdout: string;\n stderr: string;\n}\n\nconst MAX_UPDATE_OUTPUT_CHARS = 256 * 1024;\n\nexport interface UpdateCommandDeps {\n cwd: string;\n userHome: string;\n renderer: Pick<TerminalRenderer, 'write'>;\n flags?: SubcommandDeps['flags'] | undefined;\n}\n\n/** `wrongstack update` \u2014 Update the CLI via the detected global package manager. */\nexport async function runUpdateCommand(args: string[], deps: UpdateCommandDeps): Promise<number> {\n const cwd = deps.cwd;\n\n if (deps.flags?.['help'] === true || deps.flags?.['help'] === 'true') {\n writeUpdateUsage(deps.renderer);\n return 0;\n }\n const unsupportedFlag = Object.keys(deps.flags ?? {}).find(\n (flag) =>\n ![\n 'check-only',\n 'c',\n 'pm',\n 'package-manager',\n 'allow-scripts',\n 'lifecycle-scripts',\n 'npm',\n 'pnpm',\n 'yarn',\n 'bun',\n 'help',\n 'no-banner',\n 'verbose',\n 'trace',\n ].includes(flag),\n );\n if (unsupportedFlag) {\n deps.renderer.write(`Unknown update option: --${unsupportedFlag}\\n`);\n writeUpdateUsage(deps.renderer);\n return 1;\n }\n\n const parsed = parseUpdateArgs(mergeUpdateArgs(args, deps.flags));\n if (parsed.error) {\n deps.renderer.write(`${parsed.error}\\n`);\n writeUpdateUsage(deps.renderer);\n return 1;\n }\n\n const packageName = detectUpdatePackageName();\n const info = await checkForUpdate({\n packageName,\n forceRefresh: true,\n homeFn: () => deps.userHome,\n });\n\n if (info.checkFailed) {\n deps.renderer.write(\n `Update check failed for ${packageName}. Check your internet connection and try again.\\n`,\n );\n return 1;\n }\n\n if (parsed.checkOnly) {\n if (info.outdated) {\n deps.renderer.write(`Update available: v${info.current} \u2192 v${info.latest}\\n`);\n } else {\n deps.renderer.write(`You are on the latest version: v${info.current}\\n`);\n }\n return 0;\n }\n\n if (!info.outdated) {\n deps.renderer.write(`You are already on the latest version: v${info.current}\\n`);\n return 0;\n }\n\n const packageManager = parsed.packageManager ?? detectUpdatePackageManager();\n const updateCommand = buildUpdateCommand(packageManager, packageName, info.latest, {\n allowScripts: parsed.allowScripts,\n });\n\n deps.renderer.write(`Updating wrongstack from v${info.current} to v${info.latest}...\\n`);\n deps.renderer.write(`Running: ${updateCommand.display}\\n`);\n\n try {\n const result = await new Promise<UpdateProcessResult>((resolve, reject) => {\n const child = spawn(updateCommand.executable, updateCommand.args, {\n cwd,\n stdio: 'pipe',\n signal: AbortSignal.timeout(120_000),\n windowsHide: true,\n ...(updateCommand.windowsVerbatimArguments\n ? { windowsVerbatimArguments: updateCommand.windowsVerbatimArguments }\n : {}),\n });\n let stdout = '';\n let stderr = '';\n child.stdout?.on('data', (data) => {\n stdout = appendOutputTail(stdout, data);\n });\n child.stderr?.on('data', (data) => {\n stderr = appendOutputTail(stderr, data);\n });\n child.on('error', reject);\n child.on('close', (code, signal) => resolve({ code, signal, stdout, stderr }));\n });\n\n if (result.code === 0 && result.signal === null) {\n deps.renderer.write(\n `\\nUpdated to v${info.latest}. Restart wrongstack to use the new version.\\n`,\n );\n const warning = installWarningSummary(`${result.stderr}\\n${result.stdout}`);\n if (warning) deps.renderer.write(`\\n${warning}\\n`);\n } else {\n // A bare \"exit code 243\" is opaque \u2014 npm's actual reason (EACCES, a custom\n // prefix it can't write, a pnpm/yarn/bun global that npm doesn't own) lives\n // in stderr. Surface it, then show pinned equivalent commands.\n const termination =\n result.code === null\n ? `terminated by ${result.signal ?? 'an unknown signal'}`\n : `failed with exit code ${result.code}`;\n deps.renderer.write(`\\nUpdate ${termination}.\\n`);\n const detail = `${result.stderr}\\n${result.stdout}`.trim();\n if (detail) deps.renderer.write(`\\n${detail}\\n`);\n deps.renderer.write(\n `\\nTry the matching global update command manually:\\n ${updateCommand.display}\\n` +\n otherManagerCommands(packageManager, packageName, info.latest, {\n allowScripts: parsed.allowScripts,\n }),\n );\n }\n return result.code ?? 1;\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n if (msg.includes('ENOENT')) {\n deps.renderer.write(`\\nUpdate failed: ${packageManager} not found in PATH.\\n`);\n return 1;\n }\n deps.renderer.write(`\\nUpdate failed: ${msg}\\n`);\n return 1;\n }\n}\n\nexport const updateCmd: SubcommandHandler = async (args, deps) => runUpdateCommand(args, deps);\n\nfunction writeUpdateUsage(renderer: Pick<TerminalRenderer, 'write'>): void {\n renderer.write(\n 'Usage: wrongstack update [--check-only] [--pm npm|pnpm|yarn|bun] [--allow-scripts]\\n',\n );\n}\n\n/** Rehydrate update flags stripped by the top-level parser before subcommand dispatch. */\nfunction mergeUpdateArgs(args: string[], flags: SubcommandDeps['flags'] | undefined): string[] {\n const merged = [...args];\n if (!flags) return merged;\n\n const addBoolean = (name: string, alias = name): void => {\n if (flags[name] === true || flags[name] === 'true') merged.push(`--${alias}`);\n };\n addBoolean('check-only');\n if (flags['c'] === true || flags['c'] === 'true') merged.push('-c');\n addBoolean('allow-scripts');\n addBoolean('lifecycle-scripts');\n for (const pm of ['npm', 'pnpm', 'yarn', 'bun'] as const) addBoolean(pm);\n\n const pmFlag = flags['pm'] ?? flags['package-manager'];\n if (typeof pmFlag === 'string') merged.push('--pm', pmFlag);\n else if (pmFlag === true) merged.push('--pm');\n return merged;\n}\n\nfunction parseUpdateArgs(args: string[]): ParsedUpdateArgs {\n let checkOnly = false;\n let packageManager: PackageManager | undefined;\n let allowScripts = false;\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg === undefined) continue;\n if (arg === '--check-only' || arg === '-c') {\n checkOnly = true;\n continue;\n }\n if (arg === '--pm' || arg === '--package-manager') {\n const value = args[++i];\n const pm = parsePackageManager(value);\n if (!pm)\n return {\n checkOnly,\n packageManager,\n allowScripts,\n error: `Invalid package manager: ${value ?? '<missing>'}`,\n };\n packageManager = pm;\n continue;\n }\n const pmEq = arg.match(/^--(?:pm|package-manager)=(.+)$/)?.[1];\n if (pmEq) {\n const pm = parsePackageManager(pmEq);\n if (!pm)\n return { checkOnly, packageManager, allowScripts, error: `Invalid package manager: ${pmEq}` };\n packageManager = pm;\n continue;\n }\n const shorthand = arg.match(/^--(npm|pnpm|yarn|bun)$/)?.[1];\n if (shorthand) {\n packageManager = shorthand as PackageManager;\n }\n if (arg === '--allow-scripts' || arg === '--lifecycle-scripts') {\n allowScripts = true;\n }\n }\n\n return { checkOnly, packageManager, allowScripts, error: undefined };\n}\n\nfunction parsePackageManager(value: string | undefined): PackageManager | undefined {\n if (value === 'npm' || value === 'pnpm' || value === 'yarn' || value === 'bun') return value;\n return undefined;\n}\n\nexport function detectUpdatePackageManager(\n env: NodeJS.ProcessEnv = process.env,\n argv: string[] = process.argv,\n): PackageManager {\n const forced = parsePackageManager(env.WRONGSTACK_UPDATE_PM);\n if (forced) return forced;\n\n const userAgent = env.npm_config_user_agent ?? '';\n if (/\\bpnpm\\//i.test(userAgent)) return 'pnpm';\n if (/\\byarn\\//i.test(userAgent)) return 'yarn';\n if (/\\bbun\\//i.test(userAgent)) return 'bun';\n if (/\\bnpm\\//i.test(userAgent)) return 'npm';\n\n const execPath = `${env.npm_execpath ?? ''} ${argv[1] ?? ''}`;\n const realPaths = [env.npm_execpath, argv[1]]\n .filter((p): p is string => typeof p === 'string' && p.length > 0)\n .map((p) => {\n try {\n return existsSync(p) ? realpathSync(p) : p;\n } catch {\n return p;\n }\n })\n .join(' ');\n const hint = `${execPath} ${realPaths}`.replace(/\\\\/g, '/').toLowerCase();\n if (hint.includes('/pnpm/') || hint.includes('/.pnpm/') || hint.includes('pnpm-global'))\n return 'pnpm';\n if (hint.includes('/yarn/') || hint.includes('/.yarn/')) return 'yarn';\n if (hint.includes('/bun/') || hint.includes('/.bun/')) return 'bun';\n return 'npm';\n}\n\n/** Detect whether the running binary belongs to the umbrella or direct CLI package. */\nexport function detectUpdatePackageName(argv: string[] = process.argv): UpdatePackageName {\n const entry = (argv[1] ?? '').replace(/\\\\/g, '/').toLowerCase();\n return entry.includes('/node_modules/@wrongstack/cli/') || entry.includes('/packages/cli/dist/')\n ? '@wrongstack/cli'\n : 'wrongstack';\n}\n\nfunction buildUpdateCommand(\n packageManager: PackageManager,\n packageName: UpdatePackageName,\n version: string,\n opts: { allowScripts: boolean } = { allowScripts: false },\n): UpdateCommand {\n // Default to --ignore-scripts so a compromised `wrongstack@latest` cannot\n // run arbitrary code in the user's postinstall. Opt back in with\n // --allow-scripts for the legacy behavior. The flag is supported on all\n // four managers (`npm install -g`, `pnpm add -g`, `yarn global add`,\n // `bun add -g`).\n const ignoreScripts = !opts.allowScripts;\n const target = `${packageName}@${version}`;\n switch (packageManager) {\n case 'pnpm':\n return command(\n packageManager,\n ignoreScripts ? ['add', '-g', '--ignore-scripts', target] : ['add', '-g', target],\n );\n case 'yarn':\n return command(\n packageManager,\n ignoreScripts\n ? ['global', 'add', '--ignore-scripts', target]\n : ['global', 'add', target],\n );\n case 'bun':\n return command(\n packageManager,\n ignoreScripts ? ['add', '-g', '--ignore-scripts', target] : ['add', '-g', target],\n );\n case 'npm':\n return command(\n packageManager,\n ignoreScripts\n ? ['install', '-g', '--ignore-scripts', target]\n : ['install', '-g', target],\n );\n }\n}\n\nfunction command(pm: PackageManager, args: string[]): UpdateCommand {\n const display = `${pm} ${args.join(' ')}`;\n if (process.platform === 'win32' && pm !== 'bun') {\n const shim = buildWin32CmdShimInvocation(pm, args);\n return {\n executable: shim.command,\n args: shim.args,\n display,\n windowsVerbatimArguments: shim.windowsVerbatimArguments,\n };\n }\n return { executable: pm, args, display };\n}\n\nfunction otherManagerCommands(\n selected: PackageManager,\n packageName: UpdatePackageName,\n version: string,\n opts: { allowScripts: boolean } = { allowScripts: false },\n): string {\n const commands = (['npm', 'pnpm', 'yarn', 'bun'] as const)\n .filter((pm) => pm !== selected)\n .map((pm) => ` ${buildUpdateCommand(pm, packageName, version, opts).display}`);\n return commands.length > 0 ? `\\nOther package managers:\\n${commands.join('\\n')}\\n` : '';\n}\n\nfunction appendOutputTail(current: string, chunk: unknown): string {\n const next = current + String(chunk);\n return next.length <= MAX_UPDATE_OUTPUT_CHARS\n ? next\n : next.slice(next.length - MAX_UPDATE_OUTPUT_CHARS);\n}\n\nfunction installWarningSummary(output: string): string | null {\n if (!/allow-scripts|allowScripts/i.test(output)) return null;\n return (\n 'Install completed, but npm reported blocked lifecycle scripts. If a native optional ' +\n 'feature is missing, rerun the update with npm script approval for the named package.'\n );\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,216 @@
1
+ import {
2
+ fallbackCodexProviderModels,
3
+ filterCurrentCodexModelIds,
4
+ isCodexCatalogModel
5
+ } from "./chunk-TADVX644.js";
6
+
7
+ // src/acp-registry-cache.ts
8
+ import {
9
+ fetchAcpRegistry
10
+ } from "@wrongstack/acp";
11
+ import * as fs from "node:fs/promises";
12
+ import * as path from "node:path";
13
+ function acpRegistryCachePath(paths) {
14
+ return path.join(paths.cacheDir, "acp-registry.json");
15
+ }
16
+ async function loadCachedAcpRegistry(paths) {
17
+ try {
18
+ const raw = await fs.readFile(acpRegistryCachePath(paths), "utf8");
19
+ const env = JSON.parse(raw);
20
+ if (!Array.isArray(env.agents)) return null;
21
+ const byId = {};
22
+ for (const a of env.agents) {
23
+ if (!a?.id || !a.acp?.command) continue;
24
+ byId[a.id] = {
25
+ command: a.acp.command,
26
+ args: a.acp.args ?? [],
27
+ ...a.acp.env ? { env: a.acp.env } : {}
28
+ };
29
+ }
30
+ return { fetchedAt: env.fetchedAt ?? "", byId, agents: env.agents };
31
+ } catch {
32
+ return null;
33
+ }
34
+ }
35
+ async function refreshAcpRegistry(paths, opts) {
36
+ const result = await fetchAcpRegistry({
37
+ ...opts?.signal ? { signal: opts.signal } : {},
38
+ ...opts?.timeoutMs ? { timeoutMs: opts.timeoutMs } : {}
39
+ });
40
+ const location = acpRegistryCachePath(paths);
41
+ await fs.mkdir(path.dirname(location), { recursive: true });
42
+ const env = { fetchedAt: result.fetchedAt, agents: result.agents };
43
+ await fs.writeFile(location, JSON.stringify(env), "utf8");
44
+ return { count: result.agents.length, location, fetchedAt: result.fetchedAt };
45
+ }
46
+
47
+ // src/shutdown-cleanup.ts
48
+ function createGracefulShutdown(cleanup) {
49
+ const exitCode = cleanup.exitCode ?? 0;
50
+ let started = false;
51
+ let installed = false;
52
+ const runOnce = (force) => {
53
+ if (started) {
54
+ if (force) process.exit(exitCode);
55
+ return;
56
+ }
57
+ started = true;
58
+ void cleanup.run().catch(() => {
59
+ }).finally(() => {
60
+ if (force) {
61
+ process.exitCode = exitCode;
62
+ const t = setTimeout(() => process.exit(exitCode), 500);
63
+ t.unref();
64
+ }
65
+ });
66
+ };
67
+ const signalHandler = () => runOnce(true);
68
+ const beforeExitHandler = () => runOnce(false);
69
+ return {
70
+ install() {
71
+ if (installed) return;
72
+ installed = true;
73
+ process.once("SIGINT", signalHandler);
74
+ process.once("SIGTERM", signalHandler);
75
+ process.once("beforeExit", beforeExitHandler);
76
+ },
77
+ uninstall() {
78
+ if (!installed) return;
79
+ installed = false;
80
+ process.removeListener("SIGINT", signalHandler);
81
+ process.removeListener("SIGTERM", signalHandler);
82
+ process.removeListener("beforeExit", beforeExitHandler);
83
+ },
84
+ get cleanupStarted() {
85
+ return started;
86
+ }
87
+ };
88
+ }
89
+
90
+ // src/wiring/provider.ts
91
+ import { ConfigError } from "@wrongstack/core/types";
92
+ import { ProviderRegistry } from "@wrongstack/core/registry";
93
+ import {
94
+ buildProviderFactoriesFromRegistry,
95
+ installCatalogModelOutputLimits,
96
+ makeProviderFromConfig,
97
+ withCatalogCapabilities
98
+ } from "@wrongstack/providers";
99
+ async function setupProvider(params) {
100
+ const { config, modelsRegistry, logger } = params;
101
+ const savedProviderCfg = config.providers?.[config.provider];
102
+ let resolvedProvider = await modelsRegistry.getProvider(config.provider).catch(() => void 0);
103
+ if (!resolvedProvider && savedProviderCfg?.type && savedProviderCfg.type !== config.provider) {
104
+ resolvedProvider = await modelsRegistry.getProvider(savedProviderCfg.type).catch(() => void 0);
105
+ }
106
+ if (!resolvedProvider) {
107
+ if (savedProviderCfg?.family) {
108
+ const family = savedProviderCfg.family;
109
+ const savedModels = savedProviderCfg.models;
110
+ let models;
111
+ if (savedModels && savedModels.length > 0) {
112
+ models = savedModels.map((m) => ({ id: m, name: m }));
113
+ } else if (family === "openai-codex") {
114
+ const openaiProvider = await modelsRegistry.getProvider("openai").catch(() => void 0);
115
+ if (openaiProvider) {
116
+ const catalogById = new Map(
117
+ openaiProvider.models.filter(isCodexCatalogModel).map((m) => [m.id, { id: m.id, name: m.name }])
118
+ );
119
+ const catalogModels = filterCurrentCodexModelIds(catalogById.keys()).map((id) => catalogById.get(id)).filter((m) => Boolean(m));
120
+ if (catalogModels.length > 0) {
121
+ models = catalogModels;
122
+ } else {
123
+ models = fallbackCodexProviderModels();
124
+ }
125
+ } else {
126
+ models = fallbackCodexProviderModels();
127
+ }
128
+ } else {
129
+ models = [];
130
+ }
131
+ resolvedProvider = {
132
+ id: config.provider,
133
+ name: config.provider,
134
+ family,
135
+ apiBase: savedProviderCfg.baseUrl,
136
+ envVars: savedProviderCfg.envVars ?? [],
137
+ models,
138
+ npm: void 0
139
+ };
140
+ } else {
141
+ logger.warn(
142
+ `Provider "${config.provider}" not found in models.dev. Continuing with raw config.`
143
+ );
144
+ }
145
+ } else if (resolvedProvider.family === "unsupported" && !savedProviderCfg?.family) {
146
+ throw new ConfigError({
147
+ message: `Provider "${config.provider}" uses an unsupported wire family (${resolvedProvider.npm}). Install a plugin to enable it, or pick a different provider.`,
148
+ code: "CONFIG_INVALID",
149
+ context: { provider: config.provider, family: resolvedProvider.npm, kind: "unsupported" }
150
+ });
151
+ }
152
+ if (config.features.modelsRegistry) {
153
+ await installCatalogModelOutputLimits({
154
+ registry: modelsRegistry,
155
+ getConfig: () => config,
156
+ log: (message) => logger.debug(message)
157
+ });
158
+ }
159
+ const providerRegistry = new ProviderRegistry();
160
+ if (config.features.modelsRegistry) {
161
+ try {
162
+ const factories = await buildProviderFactoriesFromRegistry({
163
+ registry: modelsRegistry,
164
+ log: logger
165
+ });
166
+ for (const f of factories) providerRegistry.register(f);
167
+ } catch (err) {
168
+ throw new ConfigError({
169
+ message: `Failed to load models.dev registry: ${err instanceof Error ? err.message : err}
170
+ Try \`wstack models refresh\` once you have network access, or run with --no-features.`,
171
+ code: "CONFIG_INVALID",
172
+ context: { phase: "registry-build", provider: config.provider },
173
+ cause: err
174
+ });
175
+ }
176
+ }
177
+ const providerConfig = config.providers?.[config.provider] ?? {
178
+ type: config.provider,
179
+ apiKey: config.apiKey,
180
+ baseUrl: config.baseUrl
181
+ };
182
+ let provider;
183
+ try {
184
+ const cfgWithType = { ...providerConfig, type: config.provider };
185
+ if (config.features.modelsRegistry && providerRegistry.has(config.provider)) {
186
+ provider = providerRegistry.create(cfgWithType);
187
+ } else {
188
+ provider = makeProviderFromConfig(config.provider, cfgWithType);
189
+ }
190
+ } catch (err) {
191
+ throw new ConfigError({
192
+ message: `Failed to create provider: ${err instanceof Error ? err.message : err}`,
193
+ code: "CONFIG_INVALID",
194
+ context: { phase: "provider-create", provider: config.provider },
195
+ cause: err
196
+ });
197
+ }
198
+ if (config.features.modelsRegistry) {
199
+ provider = await withCatalogCapabilities(
200
+ modelsRegistry,
201
+ config.provider,
202
+ provider,
203
+ { ...providerConfig, type: config.provider, model: config.model },
204
+ logger
205
+ );
206
+ }
207
+ return { resolvedProvider, provider, providerRegistry };
208
+ }
209
+
210
+ export {
211
+ setupProvider,
212
+ loadCachedAcpRegistry,
213
+ refreshAcpRegistry,
214
+ createGracefulShutdown
215
+ };
216
+ //# sourceMappingURL=chunk-AZESNNIC.js.map