@wrongstack/cli 0.297.0 → 0.298.1

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 (510) hide show
  1. package/dist/{acp-A5OSIU2P.js → acp-S4LZQB66.js} +91 -23
  2. package/dist/{auth-CJWQJVRH.js → auth-NLLGEYQR.js} +3 -3
  3. package/dist/boot/governance-evidence-candidate.d.ts +3 -0
  4. package/dist/boot/governance-shadow-bridge.d.ts +19 -0
  5. package/dist/boot/governance-trace-context.d.ts +64 -0
  6. package/dist/boot/tui-session-resume.d.ts +10 -1
  7. package/dist/chimera-reviewer-policy.d.ts +89 -1
  8. package/dist/chimera-subagent-ladder.d.ts +72 -0
  9. package/dist/{chunk-AZESNNIC.js → chunk-4HH3YGG4.js} +3 -3
  10. package/dist/{chunk-QUNHS6O3.js → chunk-4U3DMA2Y.js} +2 -2
  11. package/dist/{chunk-IHBYBYGA.js → chunk-A6Q5KGLV.js} +51 -18
  12. package/dist/{chunk-ABXK4VVY.js → chunk-ARWGQUB3.js} +2 -1
  13. package/dist/{chunk-7JABKXET.js → chunk-C5GH4YBL.js} +1018 -175
  14. package/dist/{chunk-TADVX644.js → chunk-GO3TJICK.js} +11 -2
  15. package/dist/{chunk-JBTFWWKV.js → chunk-I2BM6FK6.js} +9 -4
  16. package/dist/{chunk-AXVZMEWG.js → chunk-I5MEUFDI.js} +2 -2
  17. package/dist/{chunk-XWEGWYDU.js → chunk-PEKUKUCH.js} +4 -71
  18. package/dist/chunk-U3SS4NRH.js +10 -0
  19. package/dist/{chunk-QZKWRNIP.js → chunk-V3XH6XBJ.js} +12 -9
  20. package/dist/{cli-main-GOY5YGVL.js → cli-main-7QLL2PY6.js} +957 -271
  21. package/dist/cli-main-helpers.d.ts +42 -2
  22. package/dist/{execution-A4PGK4XV.js → execution-HJ643JGZ.js} +834 -676
  23. package/dist/execution-chimera-cascade.d.ts +7 -1
  24. package/dist/execution-chimera-review.d.ts +35 -0
  25. package/dist/fleet/host-types.d.ts +6 -1
  26. package/dist/fleet-statusline.d.ts +1 -0
  27. package/dist/governance-V2Z42RBE.js +65 -0
  28. package/dist/governance-hq-telemetry.d.ts +17 -0
  29. package/dist/{hq-GBPGXIR5.js → hq-WO6CLUSI.js} +2 -2
  30. package/dist/hq-server/auth.d.ts +33 -2
  31. package/dist/hq-server/login-attempt-store.d.ts +73 -0
  32. package/dist/hq-server/routes/auth-handlers.d.ts +73 -5
  33. package/dist/hq-server/routes.d.ts +5 -5
  34. package/dist/hq-server/types.d.ts +36 -2
  35. package/dist/hq-server/utils.d.ts +51 -6
  36. package/dist/{hq-server-YQUUMTPU.js → hq-server-6TSAORAC.js} +2 -2
  37. package/dist/hq-server.d.ts +10 -0
  38. package/dist/index.js +52 -24
  39. package/dist/live-settings-input.d.ts +4 -3
  40. package/dist/plugin-management.d.ts +3 -8
  41. package/dist/{plugin-usage-OU6X6LM3.js → plugin-usage-VTL7ZTVC.js} +2 -2
  42. package/dist/{plugins-4LJ5IUBI.js → plugins-ETY6W3DC.js} +3 -3
  43. package/dist/settings-menu.d.ts +1 -1
  44. package/dist/slash-commands/fallback.d.ts +2 -0
  45. package/dist/slash-commands/goal-refiner.d.ts +1 -1
  46. package/dist/subcommands/handlers/acp-connection-gate.d.ts +20 -0
  47. package/dist/subcommands/handlers/governance.d.ts +8 -0
  48. package/dist/{update-YC4TYW2Y.js → update-MV6TUACD.js} +3 -3
  49. package/dist/utils/win32-cmd.d.ts +9 -6
  50. package/dist/{version-help-DROHZRW6.js → version-help-ASKQYXDJ.js} +2 -2
  51. package/dist/{webui-server-XKFUOKMJ.js → webui-server-PCLSXX6L.js} +10 -3
  52. package/dist/wiring/brain-and-orchestration.d.ts +2 -0
  53. package/dist/wiring/provider-runtime-setup.d.ts +2 -2
  54. package/package.json +24 -23
  55. package/dist/acp-A5OSIU2P.js.map +0 -7
  56. package/dist/acp-registry-cache.d.ts.map +0 -1
  57. package/dist/acp-server-agent.d.ts.map +0 -1
  58. package/dist/arg-parser.d.ts.map +0 -1
  59. package/dist/audit-2ZSFGNIF.js.map +0 -7
  60. package/dist/auth-CJWQJVRH.js.map +0 -7
  61. package/dist/auth-menu/add-provider.d.ts.map +0 -1
  62. package/dist/auth-menu/anthropic-oauth.d.ts.map +0 -1
  63. package/dist/auth-menu/auth-menu-audit.d.ts.map +0 -1
  64. package/dist/auth-menu/direct.d.ts.map +0 -1
  65. package/dist/auth-menu/github-copilot-oauth.d.ts.map +0 -1
  66. package/dist/auth-menu/helpers.d.ts.map +0 -1
  67. package/dist/auth-menu/index.d.ts.map +0 -1
  68. package/dist/auth-menu/local-presets.d.ts.map +0 -1
  69. package/dist/auth-menu/local.d.ts.map +0 -1
  70. package/dist/auth-menu/loopback-server.d.ts.map +0 -1
  71. package/dist/auth-menu/oauth-menu.d.ts.map +0 -1
  72. package/dist/auth-menu/openai-codex-oauth.d.ts.map +0 -1
  73. package/dist/auth-menu/panel-service.d.ts.map +0 -1
  74. package/dist/auth-menu/provider-menu.d.ts.map +0 -1
  75. package/dist/auth-menu/shared.d.ts.map +0 -1
  76. package/dist/auth-menu/top-menu.d.ts.map +0 -1
  77. package/dist/auth-menu/types.d.ts.map +0 -1
  78. package/dist/auth-menu.d.ts.map +0 -1
  79. package/dist/bench-7ZDWSNEF.js.map +0 -7
  80. package/dist/boot/auto-discover-providers.d.ts.map +0 -1
  81. package/dist/boot/brain-decision-log.d.ts.map +0 -1
  82. package/dist/boot/config-backup-recovery.d.ts.map +0 -1
  83. package/dist/boot/container-wiring.d.ts.map +0 -1
  84. package/dist/boot/dispatch-singleshot.d.ts.map +0 -1
  85. package/dist/boot/dispatch-tui.d.ts.map +0 -1
  86. package/dist/boot/dispatch-webui.d.ts.map +0 -1
  87. package/dist/boot/event-wiring.d.ts.map +0 -1
  88. package/dist/boot/execution-mode.d.ts.map +0 -1
  89. package/dist/boot/launch-banner.d.ts.map +0 -1
  90. package/dist/boot/launch-menu.d.ts.map +0 -1
  91. package/dist/boot/short-circuit-desktop.d.ts.map +0 -1
  92. package/dist/boot/short-circuit-flags.d.ts.map +0 -1
  93. package/dist/boot/short-circuit-hq.d.ts.map +0 -1
  94. package/dist/boot/simpleui-full-auto.d.ts.map +0 -1
  95. package/dist/boot/system-prompt-builder.d.ts.map +0 -1
  96. package/dist/boot/system-prompt.d.ts.map +0 -1
  97. package/dist/boot/tool-registry.d.ts.map +0 -1
  98. package/dist/boot/tui-coordinator-callbacks.d.ts.map +0 -1
  99. package/dist/boot/tui-coordinator-setup.d.ts.map +0 -1
  100. package/dist/boot/tui-debug-stream.d.ts.map +0 -1
  101. package/dist/boot/tui-goal-wiring.d.ts.map +0 -1
  102. package/dist/boot/tui-live-sessions.d.ts.map +0 -1
  103. package/dist/boot/tui-project-picker-callback.d.ts.map +0 -1
  104. package/dist/boot/tui-project-spawn.d.ts.map +0 -1
  105. package/dist/boot/tui-project-switch.d.ts.map +0 -1
  106. package/dist/boot/tui-runtime-state.d.ts.map +0 -1
  107. package/dist/boot/tui-sdd-callback.d.ts.map +0 -1
  108. package/dist/boot/tui-session-resume.d.ts.map +0 -1
  109. package/dist/boot/tui-settings-adapter.d.ts.map +0 -1
  110. package/dist/boot-config.d.ts.map +0 -1
  111. package/dist/boot.d.ts.map +0 -1
  112. package/dist/brain-menu/panel-service.d.ts.map +0 -1
  113. package/dist/chimera-review-task.d.ts.map +0 -1
  114. package/dist/chimera-reviewer-policy.d.ts.map +0 -1
  115. package/dist/chronicle-QQEQFSSE.js.map +0 -7
  116. package/dist/chunk-5N34EWJR.js.map +0 -7
  117. package/dist/chunk-66T43Q4Y.js.map +0 -7
  118. package/dist/chunk-7JABKXET.js.map +0 -7
  119. package/dist/chunk-7OCVIDC7.js.map +0 -7
  120. package/dist/chunk-ABXK4VVY.js.map +0 -7
  121. package/dist/chunk-AXVZMEWG.js.map +0 -7
  122. package/dist/chunk-AZESNNIC.js.map +0 -7
  123. package/dist/chunk-BGFM3PD7.js.map +0 -7
  124. package/dist/chunk-DPJZQCVP.js.map +0 -7
  125. package/dist/chunk-F4PEGAJZ.js.map +0 -7
  126. package/dist/chunk-IHBYBYGA.js.map +0 -7
  127. package/dist/chunk-JBSQ7ONN.js.map +0 -7
  128. package/dist/chunk-JBTFWWKV.js.map +0 -7
  129. package/dist/chunk-JUHRI6OV.js.map +0 -7
  130. package/dist/chunk-JW75HY4F.js.map +0 -7
  131. package/dist/chunk-OP47B3IX.js.map +0 -7
  132. package/dist/chunk-PJHET45A.js.map +0 -7
  133. package/dist/chunk-Q5GTM25S.js.map +0 -7
  134. package/dist/chunk-QD544J2B.js.map +0 -7
  135. package/dist/chunk-QUNHS6O3.js.map +0 -7
  136. package/dist/chunk-QZKWRNIP.js.map +0 -7
  137. package/dist/chunk-TADVX644.js.map +0 -7
  138. package/dist/chunk-TGDHN4LM.js.map +0 -7
  139. package/dist/chunk-TYO2OVAD.js.map +0 -7
  140. package/dist/chunk-VCYZ3WZV.js.map +0 -7
  141. package/dist/chunk-VJUEZZYB.js +0 -29
  142. package/dist/chunk-VJUEZZYB.js.map +0 -7
  143. package/dist/chunk-WHOIR577.js.map +0 -7
  144. package/dist/chunk-XJXDOF63.js.map +0 -7
  145. package/dist/chunk-XTIXVJXP.js.map +0 -7
  146. package/dist/chunk-XWEGWYDU.js.map +0 -7
  147. package/dist/chunk-YWUPHRGB.js.map +0 -7
  148. package/dist/cli-bundled-prompts.d.ts.map +0 -1
  149. package/dist/cli-bundled-skills.d.ts.map +0 -1
  150. package/dist/cli-context.d.ts.map +0 -1
  151. package/dist/cli-entry-main.d.ts.map +0 -1
  152. package/dist/cli-entry-point.d.ts.map +0 -1
  153. package/dist/cli-eternal-flag.d.ts.map +0 -1
  154. package/dist/cli-main-GOY5YGVL.js.map +0 -7
  155. package/dist/cli-main-helpers.d.ts.map +0 -1
  156. package/dist/cli-main.d.ts.map +0 -1
  157. package/dist/cli-update-notice.d.ts.map +0 -1
  158. package/dist/config-doctor.d.ts.map +0 -1
  159. package/dist/config-history.d.ts.map +0 -1
  160. package/dist/context-limit.d.ts.map +0 -1
  161. package/dist/context-overflow-diagnostic.d.ts.map +0 -1
  162. package/dist/diag-doctor-OQ3AA63O.js.map +0 -7
  163. package/dist/diff-renderer.d.ts.map +0 -1
  164. package/dist/execute-deps.d.ts.map +0 -1
  165. package/dist/execution-A4PGK4XV.js.map +0 -7
  166. package/dist/execution-chimera-ask.d.ts +0 -10
  167. package/dist/execution-chimera-ask.d.ts.map +0 -1
  168. package/dist/execution-chimera-cascade.d.ts.map +0 -1
  169. package/dist/execution-cleanup.d.ts.map +0 -1
  170. package/dist/execution-kanban-dispatch.d.ts.map +0 -1
  171. package/dist/execution-repl-fleet-callbacks.d.ts.map +0 -1
  172. package/dist/execution-storage-observability.d.ts.map +0 -1
  173. package/dist/execution-tui-next-step-callbacks.d.ts.map +0 -1
  174. package/dist/execution.d.ts.map +0 -1
  175. package/dist/export-TPORYVRZ.js.map +0 -7
  176. package/dist/fleet/host-acp-runner-cache.d.ts.map +0 -1
  177. package/dist/fleet/host-acp.d.ts.map +0 -1
  178. package/dist/fleet/host-concurrency.d.ts.map +0 -1
  179. package/dist/fleet/host-context.d.ts.map +0 -1
  180. package/dist/fleet/host-director-builder.d.ts.map +0 -1
  181. package/dist/fleet/host-director-event-bridges.d.ts.map +0 -1
  182. package/dist/fleet/host-director-services.d.ts.map +0 -1
  183. package/dist/fleet/host-event-bridge.d.ts.map +0 -1
  184. package/dist/fleet/host-helpers.d.ts.map +0 -1
  185. package/dist/fleet/host-learning-tracker.d.ts.map +0 -1
  186. package/dist/fleet/host-learning.d.ts.map +0 -1
  187. package/dist/fleet/host-lifecycle-events.d.ts.map +0 -1
  188. package/dist/fleet/host-paths.d.ts.map +0 -1
  189. package/dist/fleet/host-provider.d.ts.map +0 -1
  190. package/dist/fleet/host-session-writer.d.ts.map +0 -1
  191. package/dist/fleet/host-shadow-pass.d.ts.map +0 -1
  192. package/dist/fleet/host-spawn-types.d.ts.map +0 -1
  193. package/dist/fleet/host-status.d.ts.map +0 -1
  194. package/dist/fleet/host-subagent-factory.d.ts.map +0 -1
  195. package/dist/fleet/host-supervisor.d.ts.map +0 -1
  196. package/dist/fleet/host-task-result-report.d.ts.map +0 -1
  197. package/dist/fleet/host-types.d.ts.map +0 -1
  198. package/dist/fleet/host.d.ts.map +0 -1
  199. package/dist/fleet/routing.d.ts.map +0 -1
  200. package/dist/fleet/status-broadcast.d.ts.map +0 -1
  201. package/dist/fleet/supervisor-registry.d.ts.map +0 -1
  202. package/dist/fleet-statusline.d.ts.map +0 -1
  203. package/dist/goal-host.d.ts.map +0 -1
  204. package/dist/hooks-wiring.d.ts.map +0 -1
  205. package/dist/hq-GBPGXIR5.js.map +0 -7
  206. package/dist/hq-command-controller.d.ts.map +0 -1
  207. package/dist/hq-publisher.d.ts.map +0 -1
  208. package/dist/hq-recovery-html.d.ts.map +0 -1
  209. package/dist/hq-server/audit-actor.d.ts.map +0 -1
  210. package/dist/hq-server/auth-state.d.ts.map +0 -1
  211. package/dist/hq-server/auth.d.ts.map +0 -1
  212. package/dist/hq-server/preflight.d.ts.map +0 -1
  213. package/dist/hq-server/project-root.d.ts.map +0 -1
  214. package/dist/hq-server/routes/auth-handlers.d.ts.map +0 -1
  215. package/dist/hq-server/routes/session-handlers.d.ts.map +0 -1
  216. package/dist/hq-server/routes/system-handlers.d.ts.map +0 -1
  217. package/dist/hq-server/routes.d.ts.map +0 -1
  218. package/dist/hq-server/snapshot.d.ts.map +0 -1
  219. package/dist/hq-server/startup.d.ts.map +0 -1
  220. package/dist/hq-server/trust-boundary.d.ts.map +0 -1
  221. package/dist/hq-server/types.d.ts.map +0 -1
  222. package/dist/hq-server/utils.d.ts.map +0 -1
  223. package/dist/hq-server/ws.d.ts.map +0 -1
  224. package/dist/hq-server-YQUUMTPU.js.map +0 -7
  225. package/dist/hq-server.d.ts.map +0 -1
  226. package/dist/hq-static-serve.d.ts.map +0 -1
  227. package/dist/hq-ttl-U2FAYFAT.js.map +0 -7
  228. package/dist/hq-tunnel-RFKGC4HI.js.map +0 -7
  229. package/dist/hq-tunnel.d.ts.map +0 -1
  230. package/dist/index.d.ts.map +0 -1
  231. package/dist/index.js.map +0 -7
  232. package/dist/init-E2NDDOHI.js.map +0 -7
  233. package/dist/input-reader.d.ts.map +0 -1
  234. package/dist/kanban-dispatch-route.d.ts.map +0 -1
  235. package/dist/kanban-hq-sync.d.ts.map +0 -1
  236. package/dist/kanban-run-mirror-EKVNGXWW.js.map +0 -7
  237. package/dist/launch-hints.d.ts.map +0 -1
  238. package/dist/live-settings-input.d.ts.map +0 -1
  239. package/dist/mailbox-bridge-bootstrap.d.ts.map +0 -1
  240. package/dist/mailbox-serve-DBOOOOWZ.js.map +0 -7
  241. package/dist/mcp-CYLPUEHC.js.map +0 -7
  242. package/dist/mcp-serve.d.ts.map +0 -1
  243. package/dist/modeldiag-HENYJ4N7.js.map +0 -7
  244. package/dist/multi-agent.d.ts.map +0 -1
  245. package/dist/next-task-predictor.d.ts.map +0 -1
  246. package/dist/permission-prompt.d.ts.map +0 -1
  247. package/dist/permissions-FNYLZIL4.js.map +0 -7
  248. package/dist/picker-key-state.d.ts.map +0 -1
  249. package/dist/picker-model-picker.d.ts.map +0 -1
  250. package/dist/picker-ui.d.ts.map +0 -1
  251. package/dist/picker.d.ts.map +0 -1
  252. package/dist/plugin-api-factory.d.ts.map +0 -1
  253. package/dist/plugin-management.d.ts.map +0 -1
  254. package/dist/plugin-usage-OU6X6LM3.js.map +0 -7
  255. package/dist/plugins-4LJ5IUBI.js.map +0 -7
  256. package/dist/pre-launch/launch-prompts.d.ts.map +0 -1
  257. package/dist/pre-launch/project-check.d.ts.map +0 -1
  258. package/dist/pre-launch.d.ts.map +0 -1
  259. package/dist/preflight.d.ts.map +0 -1
  260. package/dist/profile-config-path.d.ts.map +0 -1
  261. package/dist/project-BLQ3ALVL.js.map +0 -7
  262. package/dist/project-manifest-GE25PW4S.js.map +0 -7
  263. package/dist/project-picker-BOCWHBXP.js.map +0 -7
  264. package/dist/project-picker.d.ts.map +0 -1
  265. package/dist/projects-XE76NFNZ.js.map +0 -7
  266. package/dist/provider-config-utils.d.ts.map +0 -1
  267. package/dist/provider-helpers.d.ts.map +0 -1
  268. package/dist/provider-id.d.ts.map +0 -1
  269. package/dist/providers-models-GDELBHZK.js.map +0 -7
  270. package/dist/quick-VIO2BEHS.js.map +0 -7
  271. package/dist/renderer.d.ts.map +0 -1
  272. package/dist/repl-auto-proceed.d.ts.map +0 -1
  273. package/dist/repl-client-registration.d.ts.map +0 -1
  274. package/dist/repl-input.d.ts.map +0 -1
  275. package/dist/repl-options.d.ts.map +0 -1
  276. package/dist/repl-rendering.d.ts.map +0 -1
  277. package/dist/repl-suggestions.d.ts.map +0 -1
  278. package/dist/repl.d.ts.map +0 -1
  279. package/dist/replay-KCTXNMZQ.js.map +0 -7
  280. package/dist/rewind-EJMVFVLS.js.map +0 -7
  281. package/dist/sdd-runtime-AIJCJGWC.js.map +0 -7
  282. package/dist/services/autonomy-mode.d.ts.map +0 -1
  283. package/dist/services/commit-message.d.ts.map +0 -1
  284. package/dist/services/dispatch-classifier.d.ts.map +0 -1
  285. package/dist/services/mcp-management.d.ts.map +0 -1
  286. package/dist/services/project-facts.d.ts.map +0 -1
  287. package/dist/services/project-manifest.d.ts.map +0 -1
  288. package/dist/services/sdd/project-context.d.ts.map +0 -1
  289. package/dist/services/sdd/spec-detection.d.ts.map +0 -1
  290. package/dist/services/sdd/state.d.ts.map +0 -1
  291. package/dist/services/sdd/task-manager.d.ts.map +0 -1
  292. package/dist/services/sdd-runtime.d.ts.map +0 -1
  293. package/dist/services/statusline-config.d.ts.map +0 -1
  294. package/dist/services/suggestion-store.d.ts.map +0 -1
  295. package/dist/session-event-wiring.d.ts.map +0 -1
  296. package/dist/session-stats.d.ts.map +0 -1
  297. package/dist/sessions-config-NLCMK3BY.js.map +0 -7
  298. package/dist/settings-menu.d.ts.map +0 -1
  299. package/dist/shutdown-cleanup.d.ts.map +0 -1
  300. package/dist/simpleui-dist-JIFGUJO7.js.map +0 -7
  301. package/dist/simpleui-dist.d.ts.map +0 -1
  302. package/dist/slash-commands/acp.d.ts.map +0 -1
  303. package/dist/slash-commands/agent-improve.d.ts.map +0 -1
  304. package/dist/slash-commands/agents.d.ts.map +0 -1
  305. package/dist/slash-commands/audit.d.ts.map +0 -1
  306. package/dist/slash-commands/auth.d.ts.map +0 -1
  307. package/dist/slash-commands/autonomy.d.ts.map +0 -1
  308. package/dist/slash-commands/brain.d.ts.map +0 -1
  309. package/dist/slash-commands/btw.d.ts.map +0 -1
  310. package/dist/slash-commands/clear.d.ts.map +0 -1
  311. package/dist/slash-commands/codebase-reindex.d.ts.map +0 -1
  312. package/dist/slash-commands/collab.d.ts.map +0 -1
  313. package/dist/slash-commands/command-context.d.ts.map +0 -1
  314. package/dist/slash-commands/commit-llm.d.ts.map +0 -1
  315. package/dist/slash-commands/compact.d.ts.map +0 -1
  316. package/dist/slash-commands/context.d.ts.map +0 -1
  317. package/dist/slash-commands/coordinator.d.ts.map +0 -1
  318. package/dist/slash-commands/delegate.d.ts.map +0 -1
  319. package/dist/slash-commands/design.d.ts.map +0 -1
  320. package/dist/slash-commands/dev.d.ts.map +0 -1
  321. package/dist/slash-commands/diag-stats.d.ts.map +0 -1
  322. package/dist/slash-commands/dispatch-llm.d.ts.map +0 -1
  323. package/dist/slash-commands/doctor.d.ts.map +0 -1
  324. package/dist/slash-commands/enhance.d.ts.map +0 -1
  325. package/dist/slash-commands/ensemble.d.ts.map +0 -1
  326. package/dist/slash-commands/f-keys.d.ts.map +0 -1
  327. package/dist/slash-commands/fallback.d.ts.map +0 -1
  328. package/dist/slash-commands/fix-classifier.d.ts.map +0 -1
  329. package/dist/slash-commands/fix.d.ts.map +0 -1
  330. package/dist/slash-commands/fleet.d.ts.map +0 -1
  331. package/dist/slash-commands/git.d.ts.map +0 -1
  332. package/dist/slash-commands/gitid.d.ts.map +0 -1
  333. package/dist/slash-commands/goal-refiner.d.ts.map +0 -1
  334. package/dist/slash-commands/goal.d.ts.map +0 -1
  335. package/dist/slash-commands/health.d.ts.map +0 -1
  336. package/dist/slash-commands/help.d.ts.map +0 -1
  337. package/dist/slash-commands/helpers.d.ts.map +0 -1
  338. package/dist/slash-commands/hq.d.ts.map +0 -1
  339. package/dist/slash-commands/index.d.ts.map +0 -1
  340. package/dist/slash-commands/init.d.ts.map +0 -1
  341. package/dist/slash-commands/interrupt.d.ts.map +0 -1
  342. package/dist/slash-commands/kanban-agent-helpers.d.ts.map +0 -1
  343. package/dist/slash-commands/kanban-format.d.ts.map +0 -1
  344. package/dist/slash-commands/kanban-help.d.ts.map +0 -1
  345. package/dist/slash-commands/kanban.d.ts.map +0 -1
  346. package/dist/slash-commands/mailbox-demo.d.ts.map +0 -1
  347. package/dist/slash-commands/mailbox-serve.d.ts.map +0 -1
  348. package/dist/slash-commands/mailbox.d.ts.map +0 -1
  349. package/dist/slash-commands/mcp-utils.d.ts.map +0 -1
  350. package/dist/slash-commands/mcp.d.ts.map +0 -1
  351. package/dist/slash-commands/memory-compact.d.ts.map +0 -1
  352. package/dist/slash-commands/memory-flags.d.ts.map +0 -1
  353. package/dist/slash-commands/memory-formatters.d.ts.map +0 -1
  354. package/dist/slash-commands/memory.d.ts.map +0 -1
  355. package/dist/slash-commands/metrics.d.ts.map +0 -1
  356. package/dist/slash-commands/mode.d.ts.map +0 -1
  357. package/dist/slash-commands/modelcaps.d.ts.map +0 -1
  358. package/dist/slash-commands/models.d.ts.map +0 -1
  359. package/dist/slash-commands/mouse.d.ts.map +0 -1
  360. package/dist/slash-commands/next.d.ts.map +0 -1
  361. package/dist/slash-commands/plan.d.ts.map +0 -1
  362. package/dist/slash-commands/plugin.d.ts.map +0 -1
  363. package/dist/slash-commands/profile.d.ts.map +0 -1
  364. package/dist/slash-commands/project-utils.d.ts.map +0 -1
  365. package/dist/slash-commands/project.d.ts.map +0 -1
  366. package/dist/slash-commands/provider-status.d.ts.map +0 -1
  367. package/dist/slash-commands/prune.d.ts.map +0 -1
  368. package/dist/slash-commands/refiner.d.ts.map +0 -1
  369. package/dist/slash-commands/review.d.ts.map +0 -1
  370. package/dist/slash-commands/sdd/rendering.d.ts.map +0 -1
  371. package/dist/slash-commands/sdd-command-helpers.d.ts.map +0 -1
  372. package/dist/slash-commands/sdd-format.d.ts.map +0 -1
  373. package/dist/slash-commands/sdd.d.ts.map +0 -1
  374. package/dist/slash-commands/security.d.ts.map +0 -1
  375. package/dist/slash-commands/session.d.ts.map +0 -1
  376. package/dist/slash-commands/setmodel.d.ts.map +0 -1
  377. package/dist/slash-commands/settings.d.ts.map +0 -1
  378. package/dist/slash-commands/shadow.d.ts.map +0 -1
  379. package/dist/slash-commands/slash-deep-help.d.ts.map +0 -1
  380. package/dist/slash-commands/spawn-agents.d.ts.map +0 -1
  381. package/dist/slash-commands/statusline.d.ts.map +0 -1
  382. package/dist/slash-commands/suggest.d.ts.map +0 -1
  383. package/dist/slash-commands/suggestion-store.d.ts.map +0 -1
  384. package/dist/slash-commands/supervisor.d.ts.map +0 -1
  385. package/dist/slash-commands/surfaces.d.ts.map +0 -1
  386. package/dist/slash-commands/tasks.d.ts.map +0 -1
  387. package/dist/slash-commands/techstack.d.ts.map +0 -1
  388. package/dist/slash-commands/telegram-pairing.d.ts.map +0 -1
  389. package/dist/slash-commands/telegram-settings.d.ts.map +0 -1
  390. package/dist/slash-commands/telegram-setup.d.ts.map +0 -1
  391. package/dist/slash-commands/todos.d.ts.map +0 -1
  392. package/dist/slash-commands/tool.d.ts.map +0 -1
  393. package/dist/slash-commands/tools.d.ts.map +0 -1
  394. package/dist/slash-commands/tuneup.d.ts.map +0 -1
  395. package/dist/slash-commands/working-dir.d.ts.map +0 -1
  396. package/dist/slash-commands/worktree.d.ts.map +0 -1
  397. package/dist/slash-commands/yolo.d.ts.map +0 -1
  398. package/dist/spinner.d.ts.map +0 -1
  399. package/dist/subcommands/contracts.d.ts.map +0 -1
  400. package/dist/subcommands/handlers/acp.d.ts.map +0 -1
  401. package/dist/subcommands/handlers/audit.d.ts.map +0 -1
  402. package/dist/subcommands/handlers/auth-local-help.d.ts.map +0 -1
  403. package/dist/subcommands/handlers/auth.d.ts.map +0 -1
  404. package/dist/subcommands/handlers/bench-run-help.d.ts.map +0 -1
  405. package/dist/subcommands/handlers/bench.d.ts.map +0 -1
  406. package/dist/subcommands/handlers/chronicle.d.ts.map +0 -1
  407. package/dist/subcommands/handlers/config-history.d.ts.map +0 -1
  408. package/dist/subcommands/handlers/diag-doctor.d.ts.map +0 -1
  409. package/dist/subcommands/handlers/export.d.ts.map +0 -1
  410. package/dist/subcommands/handlers/helpers.d.ts.map +0 -1
  411. package/dist/subcommands/handlers/hq.d.ts.map +0 -1
  412. package/dist/subcommands/handlers/init.d.ts.map +0 -1
  413. package/dist/subcommands/handlers/mailbox-serve.d.ts.map +0 -1
  414. package/dist/subcommands/handlers/mcp.d.ts.map +0 -1
  415. package/dist/subcommands/handlers/model-smoke-test.d.ts.map +0 -1
  416. package/dist/subcommands/handlers/modeldiag-profiles.d.ts.map +0 -1
  417. package/dist/subcommands/handlers/modeldiag.d.ts.map +0 -1
  418. package/dist/subcommands/handlers/models-add-help.d.ts.map +0 -1
  419. package/dist/subcommands/handlers/per-subcommand-deep-help-table.d.ts.map +0 -1
  420. package/dist/subcommands/handlers/per-subcommand-help-data.d.ts.map +0 -1
  421. package/dist/subcommands/handlers/per-subcommand-help-table.d.ts.map +0 -1
  422. package/dist/subcommands/handlers/per-subcommand-help-types.d.ts.map +0 -1
  423. package/dist/subcommands/handlers/per-subcommand-help.d.ts.map +0 -1
  424. package/dist/subcommands/handlers/permissions.d.ts.map +0 -1
  425. package/dist/subcommands/handlers/plugin-usage.d.ts.map +0 -1
  426. package/dist/subcommands/handlers/project.d.ts.map +0 -1
  427. package/dist/subcommands/handlers/projects.d.ts.map +0 -1
  428. package/dist/subcommands/handlers/providers-models.d.ts.map +0 -1
  429. package/dist/subcommands/handlers/quick.d.ts.map +0 -1
  430. package/dist/subcommands/handlers/replay.d.ts.map +0 -1
  431. package/dist/subcommands/handlers/rewind.d.ts.map +0 -1
  432. package/dist/subcommands/handlers/sessions-config.d.ts.map +0 -1
  433. package/dist/subcommands/handlers/sessions-fleet.d.ts.map +0 -1
  434. package/dist/subcommands/handlers/tools-skills.d.ts.map +0 -1
  435. package/dist/subcommands/handlers/update.d.ts.map +0 -1
  436. package/dist/subcommands/handlers/version-help.d.ts.map +0 -1
  437. package/dist/subcommands/index.d.ts.map +0 -1
  438. package/dist/theme.d.ts.map +0 -1
  439. package/dist/tools-skills-UNKLOB7M.js.map +0 -7
  440. package/dist/tui-thinking-word.d.ts.map +0 -1
  441. package/dist/tuneup.d.ts.map +0 -1
  442. package/dist/update-YC4TYW2Y.js.map +0 -7
  443. package/dist/update-check-UMYTOH7Z.js.map +0 -7
  444. package/dist/update-check.d.ts.map +0 -1
  445. package/dist/utils/delay-format.d.ts.map +0 -1
  446. package/dist/utils/hq-ttl.d.ts.map +0 -1
  447. package/dist/utils/win32-cmd.d.ts.map +0 -1
  448. package/dist/utils.d.ts.map +0 -1
  449. package/dist/version-help-DROHZRW6.js.map +0 -7
  450. package/dist/version.d.ts.map +0 -1
  451. package/dist/webui-server/client-registration.d.ts.map +0 -1
  452. package/dist/webui-server/connection-handler.d.ts.map +0 -1
  453. package/dist/webui-server/context-breakdown.d.ts.map +0 -1
  454. package/dist/webui-server/contracts.d.ts.map +0 -1
  455. package/dist/webui-server/cost-helpers.d.ts.map +0 -1
  456. package/dist/webui-server/kanban-host-adapter.d.ts.map +0 -1
  457. package/dist/webui-server/kanban-run-mirror.d.ts.map +0 -1
  458. package/dist/webui-server/kanban-supervisor.d.ts.map +0 -1
  459. package/dist/webui-server/lifecycle.d.ts.map +0 -1
  460. package/dist/webui-server/listen-helpers.d.ts.map +0 -1
  461. package/dist/webui-server/logger-shim.d.ts.map +0 -1
  462. package/dist/webui-server/node-pty-loader.d.ts.map +0 -1
  463. package/dist/webui-server/prefs-seeding.d.ts.map +0 -1
  464. package/dist/webui-server/privileged-actions.d.ts.map +0 -1
  465. package/dist/webui-server/provider-config.d.ts.map +0 -1
  466. package/dist/webui-server/session-start-payload.d.ts.map +0 -1
  467. package/dist/webui-server/setup-events.d.ts.map +0 -1
  468. package/dist/webui-server/static-serve.d.ts.map +0 -1
  469. package/dist/webui-server/stream-coalescer.d.ts.map +0 -1
  470. package/dist/webui-server/terminal-log-view.d.ts.map +0 -1
  471. package/dist/webui-server-XKFUOKMJ.js.map +0 -7
  472. package/dist/webui-server-options.d.ts.map +0 -1
  473. package/dist/webui-server.d.ts.map +0 -1
  474. package/dist/wiring/brain-and-orchestration.d.ts.map +0 -1
  475. package/dist/wiring/codebase-index.d.ts.map +0 -1
  476. package/dist/wiring/command-host-adapters.d.ts.map +0 -1
  477. package/dist/wiring/command-host-state.d.ts.map +0 -1
  478. package/dist/wiring/controllers.d.ts.map +0 -1
  479. package/dist/wiring/dep-watcher-bridge.d.ts.map +0 -1
  480. package/dist/wiring/dep-watcher.d.ts.map +0 -1
  481. package/dist/wiring/design-studio.d.ts.map +0 -1
  482. package/dist/wiring/director-setup.d.ts.map +0 -1
  483. package/dist/wiring/eternal-command-handlers.d.ts.map +0 -1
  484. package/dist/wiring/fleet-command-handlers.d.ts.map +0 -1
  485. package/dist/wiring/hq-telemetry.d.ts.map +0 -1
  486. package/dist/wiring/lifecycle-plugins.d.ts.map +0 -1
  487. package/dist/wiring/mailbox-bridge-bootstrap.d.ts.map +0 -1
  488. package/dist/wiring/management-tools.d.ts.map +0 -1
  489. package/dist/wiring/metrics.d.ts.map +0 -1
  490. package/dist/wiring/pipeline.d.ts.map +0 -1
  491. package/dist/wiring/plugins.d.ts.map +0 -1
  492. package/dist/wiring/provider-runtime-setup.d.ts.map +0 -1
  493. package/dist/wiring/provider-runtime.d.ts.map +0 -1
  494. package/dist/wiring/provider-status.d.ts.map +0 -1
  495. package/dist/wiring/provider-utility-tools.d.ts.map +0 -1
  496. package/dist/wiring/provider.d.ts.map +0 -1
  497. package/dist/wiring/replay.d.ts.map +0 -1
  498. package/dist/wiring/runtime-controller-deps.d.ts.map +0 -1
  499. package/dist/wiring/runtime-dispatch-state.d.ts.map +0 -1
  500. package/dist/wiring/runtime-lifecycle-deps.d.ts.map +0 -1
  501. package/dist/wiring/runtime-picker-deps.d.ts.map +0 -1
  502. package/dist/wiring/sage.d.ts.map +0 -1
  503. package/dist/wiring/sdd-handlers.d.ts.map +0 -1
  504. package/dist/wiring/security-command.d.ts.map +0 -1
  505. package/dist/wiring/session-command-handlers.d.ts.map +0 -1
  506. package/dist/wiring/session-registry.d.ts.map +0 -1
  507. package/dist/wiring/session.d.ts.map +0 -1
  508. package/dist/wiring/slash-commands.d.ts.map +0 -1
  509. package/dist/wiring/to-execute-deps.d.ts.map +0 -1
  510. package/dist/wiring/tools.d.ts.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"tui-runtime-state.d.ts","sourceRoot":"","sources":["../../src/boot/tui-runtime-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAG9B,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,MAAM,EAAE,WAAW,CAAC;IACpB,6DAA6D;IAC7D,kBAAkB,EAAE,YAAY,GAAG,SAAS,CAAC;IAC7C,4EAA4E;IAC5E,uBAAuB,CAAC,EACpB,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,qBAAqB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GACtE,SAAS,CAAC;IACd,yEAAyE;IACzE,2BAA2B,EAAE,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IAItE,mGAAmG;IACnG,oBAAoB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAClD,sEAAsE;IACtE,qBAAqB,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACpD,4EAA4E;IAC5E,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACrC,4EAA4E;IAC5E,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC,CAAC;CAC3D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tui-sdd-callback.d.ts","sourceRoot":"","sources":["../../src/boot/tui-sdd-callback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAGtD;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAkCnE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tui-session-resume.d.ts","sourceRoot":"","sources":["../../src/boot/tui-session-resume.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,eAAe,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,YAAY,CAAC;IAC3B,sBAAsB,EAClB,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GAClF,SAAS,CAAC;IACd,wFAAwF;IACxF,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,oBAAoB,EACzB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CA2PrC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tui-settings-adapter.d.ts","sourceRoot":"","sources":["../../src/boot/tui-settings-adapter.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAU,WAAW,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEtF,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAEvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AASnE,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,WAAW,CAAC;IACpB,qBAAqB,EAAE;QAAE,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS,CAAC;IAClG,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CACjE;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,YAAY,EAAE,CAAC,CAAC,EAAE,iBAAiB,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAChE;AAYD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,sBAAsB,GAAG,eAAe,CAsgBlF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"boot-config.d.ts","sourceRoot":"","sources":["../src/boot-config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,mBAAmB,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,iEAAiE;AACjE,KAAK,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAE3E;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GACtC,OAAO,CAAC,gBAAgB,CAAC,CAc3B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../src/boot.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAqB,KAAK,WAAW,EAAY,MAAM,wBAAwB,CAAC;AAEvF,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAWhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAYxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAgDpD;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CAiB1D;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;IACxC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,gFAAgF;IAChF,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACpC,2FAA2F;IAC3F,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAClC;AAsBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGtE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,OAAO,EACpB,UAAU,EAAE,OAAO,GAAG,SAAS,EAC/B,IAAI,EAAE,OAAO,GACZ,OAAO,CAET;AAED;;;;;GAKG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,CAgfxE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"panel-service.d.ts","sourceRoot":"","sources":["../../src/brain-menu/panel-service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAoB,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAEjF,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,iBAAiB,CAAC;AAE1E,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,YAAY,CAAC;CAC5B;AAQD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,cAAc,CAkIhF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"chimera-review-task.d.ts","sourceRoot":"","sources":["../src/chimera-review-task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,2BAA2B,EAC3B,0BAA0B,EAC3B,MAAM,yBAAyB,CAAC;AAIjC,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAQtF;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAW7D;AAED,wBAAgB,iCAAiC,CAAC,CAAC,EAAE,0BAA0B,GAAG,MAAM,CAyFvF;AAED,wBAAgB,kCAAkC,CAChD,SAAS,EAAE,gBAAgB,EAC3B,CAAC,EAAE,2BAA2B,GAC7B,MAAM,CA2CR"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"chimera-reviewer-policy.d.ts","sourceRoot":"","sources":["../src/chimera-reviewer-policy.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC3C,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS;AACpD,0DAA0D;AAC1D,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,EAAE,CAQV;AASD,uEAAuE;AACvE,wBAAgB,+BAA+B,CAAC,KAAK,SAAI,GAAG,IAAI,CAE/D;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,SAAS,MAAM,EAAE,GAChC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAA;CAAE,CAqB/D;AAED;;;GAGG;AACH,eAAO,MAAM,8BAA8B,gFAOhC,CAAC;AAEZ,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CASzF"}
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/subcommands/handlers/chronicle.ts"],
4
- "sourcesContent": ["import { statSync } from 'node:fs';\nimport {\n type ChronicleFacet,\n type ChronicleMetricsView,\n type ChronicleQuery,\n createChronicleProjectAccess,\n} from '@wrongstack/core/chronicle';\nimport type { SubcommandHandler } from '../index.js';\n\nconst facets = new Set<ChronicleFacet>([\n 'eventType',\n 'outcome',\n 'projectId',\n 'sessionId',\n 'agentId',\n 'taskId',\n 'providerId',\n 'modelId',\n 'resourceKind',\n 'resourcePath',\n 'toolCallId',\n]);\n\n/** `wstack chronicle` \u2014 query the cross-session provenance ledger. */\nexport const chronicleCmd: SubcommandHandler = async (args, deps) => {\n const operation = args[0] ?? 'query';\n if (operation === 'help' || operation === '--help' || operation === '-h') {\n deps.renderer.write(usage());\n return 0;\n }\n let access: ReturnType<typeof createChronicleProjectAccess> | undefined;\n try {\n access = createChronicleProjectAccess({\n projectRoot: deps.projectRoot,\n userHome: deps.userHome,\n });\n if (operation === 'status') {\n const health = await access.call('ping', {});\n deps.renderer.write(\n `${JSON.stringify(\n {\n mode: access.mode,\n owner: {\n pid: health.pid,\n uptimeMs: health.uptimeMs,\n clients: health.clients,\n activeRequests: health.activeRequests,\n endpoint: health.endpoint,\n },\n pipeline: {\n collection: 'session-event-adapters',\n processing:\n access.mode === 'server' ? 'project-chronicle-server' : 'inline-chronicle-fallback',\n storage: health.chronicleDirectory,\n serving: 'wstack-chronicle-cli',\n },\n journal: health.journal,\n watcher: health.watcher,\n },\n null,\n 2,\n )}\\n`,\n );\n return 0;\n }\n\n // `wstack chronicle prune [--dry-run] [--days N]`\n if (operation === 'prune') {\n const dryRun = args.includes('--dry-run') || args.includes('-n');\n const daysIndex = args.indexOf('--days');\n const rawDays =\n daysIndex >= 0 && daysIndex + 1 < args.length ? args[daysIndex + 1] : undefined;\n const days = rawDays ? parseInt(rawDays, 10) : 30;\n if (!Number.isFinite(days) || days < 1) {\n deps.renderer.writeError(\n `Invalid retention days: ${rawDays ?? ''}. Use --days N (positive integer).\\n`,\n );\n return 1;\n }\n const result = await access.call('purge', { retentionDays: days, dryRun });\n if (dryRun) {\n // \"entries\" rather than \"files\": SQLite purges whole day-chains, the\n // legacy store purged partition files. Both are entries to the caller.\n deps.renderer.write(`Dry-run: would delete ${result.candidates?.length ?? 0} entries`);\n if (result.candidates?.length) {\n const totalBytes = result.candidates.reduce((sum: number, f: string) => {\n try {\n return sum + statSync(f).size;\n } catch {\n return sum;\n }\n }, 0);\n deps.renderer.write(` (${formatBytes(totalBytes)}):\\n`);\n for (const file of result.candidates!) {\n const s = tryStat(file);\n const age = s ? `${Math.round((Date.now() - s.mtimeMs) / 86400000)}d` : '?';\n deps.renderer.write(` ${file} (${age}, ${formatBytes(s?.size ?? 0)})\\n`);\n }\n } else {\n deps.renderer.write('.\\n');\n }\n } else {\n const bytes = result.deletedBytes;\n deps.renderer.write(`Purged ${result.deletedCount} entries (${formatBytes(bytes)})`);\n if (result.errors.length) deps.renderer.write(`, ${result.errors.length} errors`);\n deps.renderer.write('.\\n');\n for (const err of result.errors) {\n deps.renderer.writeError(` Error: ${err.file}: ${err.reason}\\n`);\n }\n }\n return result.errors.length > 0 ? 1 : 0;\n }\n\n // `wstack chronicle metrics [providers|tasks|files|summary] [key=value ...]`\n // Incrementally ingests new journal bytes into metrics.db, then queries the\n // derived aggregates instead of streaming raw partitions.\n if (operation === 'metrics') {\n const hasView = Boolean(args[1] && !args[1].includes('='));\n const rawView = hasView ? args[1]! : 'summary';\n if (!isMetricsView(rawView)) {\n deps.renderer.writeError(\n `Unknown metrics view: ${rawView}. Use providers|tasks|files|summary.\\n`,\n );\n return 1;\n }\n const view: ChronicleMetricsView = rawView;\n const filters = parseQuery(args.slice(hasView ? 2 : 1));\n try {\n const result = await access.call('metrics', {\n view,\n ...(view === 'providers'\n ? {\n providers: {\n ...(filters.from ? { from: filters.from } : {}),\n ...(filters.to ? { to: filters.to } : {}),\n },\n }\n : {}),\n ...(view === 'tasks'\n ? {\n tasks: {\n ...(filters.sessionId ? { sessionId: filters.sessionId } : {}),\n ...(filters.limit ? { limit: filters.limit } : {}),\n },\n }\n : {}),\n ...(view === 'files'\n ? {\n files: {\n ...(filters.path ? { path: filters.path } : {}),\n ...(filters.taskId ? { taskId: filters.taskId } : {}),\n ...(filters.sessionId ? { sessionId: filters.sessionId } : {}),\n ...(filters.limit ? { limit: filters.limit } : {}),\n },\n }\n : {}),\n });\n deps.renderer.write(\n JSON.stringify({ refreshed: result.refreshed, [view]: result.data }, null, 2) + '\\n',\n );\n return 0;\n } catch (error) {\n deps.renderer.writeError(`${error instanceof Error ? error.message : String(error)}\\n`);\n return 1;\n }\n }\n\n if (operation === 'facet') {\n const field = args[1] as ChronicleFacet | undefined;\n if (!field || !facets.has(field)) {\n deps.renderer.writeError(`Unknown facet. Use: ${[...facets].join(', ')}\\n`);\n return 1;\n }\n const query = parseQuery(args.slice(2));\n const result = await access.call('facet', { field, query });\n deps.renderer.write(JSON.stringify({ field, ...result }, null, 2) + '\\n');\n return 0;\n }\n if (operation !== 'query') {\n deps.renderer.writeError(`Unknown Chronicle operation: ${operation}\\n${usage()}`);\n return 1;\n }\n const result = await access.call('query', { query: parseQuery(args.slice(1)) });\n deps.renderer.write(JSON.stringify(result, null, 2) + '\\n');\n return 0;\n } catch (error) {\n deps.renderer.writeError(`${error instanceof Error ? error.message : String(error)}\\n`);\n return 1;\n } finally {\n await access?.close();\n }\n};\n\nfunction isMetricsView(value: string): value is ChronicleMetricsView {\n return ['providers', 'tasks', 'files', 'summary'].includes(value);\n}\n\nfunction parseQuery(tokens: string[]): ChronicleQuery {\n const query: ChronicleQuery = {};\n for (const token of tokens) {\n const split = token.indexOf('=');\n if (split < 1) continue;\n const key = token.slice(0, split),\n value = token.slice(split + 1);\n if (key === 'eventType') query.eventTypes = value.split(',').filter(Boolean);\n else if (key === 'outcome')\n query.outcomes = value.split(',').filter(Boolean) as NonNullable<ChronicleQuery['outcomes']>;\n else if (key === 'resourceKind')\n query.resourceKind = value as NonNullable<ChronicleQuery['resourceKind']>;\n else if (key === 'line' || key === 'limit') query[key] = Number(value);\n else if (key === 'order' && (value === 'asc' || value === 'desc')) query.order = value;\n else if (key.startsWith('tag.')) {\n const tags = query.tags ?? {};\n tags[key.slice(4)] = value;\n query.tags = tags;\n } else if (key.startsWith('attr.')) {\n const attributes = query.attributes ?? {};\n attributes[key.slice(5)] = parseValue(value);\n query.attributes = attributes;\n } else if (isStringQueryKey(key)) query[key] = value;\n }\n return query;\n}\n\nfunction isStringQueryKey(\n key: string,\n): key is\n | 'from'\n | 'to'\n | 'projectId'\n | 'sessionId'\n | 'agentId'\n | 'taskId'\n | 'providerId'\n | 'modelId'\n | 'traceId'\n | 'logicalRequestId'\n | 'attemptId'\n | 'toolCallId'\n | 'resourceId'\n | 'path'\n | 'text'\n | 'cursor' {\n return [\n 'from',\n 'to',\n 'projectId',\n 'sessionId',\n 'agentId',\n 'taskId',\n 'providerId',\n 'modelId',\n 'traceId',\n 'logicalRequestId',\n 'attemptId',\n 'toolCallId',\n 'resourceId',\n 'path',\n 'text',\n 'cursor',\n ].includes(key);\n}\n\nfunction parseValue(value: string): unknown {\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n}\n\nfunction usage(): string {\n return (\n 'Usage:\\n' +\n ' wstack chronicle query [field=value ...]\\n' +\n ' wstack chronicle status\\n' +\n ' wstack chronicle facet <field> [field=value ...]\\n' +\n ' wstack chronicle metrics [providers|tasks|files|summary] [field=value ...]\\n' +\n ' wstack chronicle prune [--days N] [--dry-run]\\n\\n' +\n 'Examples:\\n' +\n ' wstack chronicle status\\n' +\n ' wstack chronicle query path=src/app.ts line=42\\n' +\n ' wstack chronicle query providerId=openai outcome=failure\\n' +\n ' wstack chronicle query eventType=tool.executed sessionId=<id> limit=50\\n' +\n ' wstack chronicle query attr.tool.name=read\\n' +\n ' wstack chronicle facet modelId from=2026-07-01T00:00:00Z\\n' +\n ' wstack chronicle metrics providers from=2026-07-01\\n' +\n ' wstack chronicle metrics files path=src/app.ts\\n' +\n ' wstack chronicle metrics tasks limit=20\\n' +\n ' wstack chronicle prune --days 7 --dry-run\\n' +\n ' wstack chronicle prune --days 30\\n'\n );\n}\n\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1048576) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / 1048576).toFixed(1)} MB`;\n}\n\nfunction tryStat(file: string): { size: number; mtimeMs: number } | undefined {\n try {\n const s = statSync(file);\n return { size: s.size, mtimeMs: s.mtimeMs };\n } catch {\n return undefined;\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["result"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/project-picker.ts"],
4
- "sourcesContent": ["/**\n * Interactive project picker for the CLI.\n *\n * Renders an arrow-navigable, scrollable menu listing known projects,\n * plus actions like \"Start new session\" and \"Previous sessions\".\n * Uses raw terminal input to capture arrow keys and Enter.\n *\n * @module project-picker\n */\nimport { color } from '@wrongstack/core/utils';\nimport type { ProjectEntry } from './services/project-manifest.js';\nimport { loadManifest } from './services/project-manifest.js';\n\n// \u2500\u2500 ANSI constants \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst CSI = '\\x1b[';\nconst CURSOR_HIDE = `${CSI}?25l`;\nconst CURSOR_SHOW = `${CSI}?25h`;\nconst CLEAR_SCREEN = `${CSI}2J`;\nconst CURSOR_HOME = `${CSI}H`;\n\nconst ARROW_UP = '\\x1b[A';\nconst ARROW_DOWN = '\\x1b[B';\nconst ARROW_UP_ALT = '\\x1bOA';\nconst ARROW_DOWN_ALT = '\\x1bOB';\nconst PAGE_UP = '\\x1b[5~';\nconst PAGE_DOWN = '\\x1b[6~';\nconst ENTER = '\\r';\nconst CTRL_C = '\\x03';\nconst ESC = '\\x1b';\nconst BS = '\\x7f';\n\n// \u2500\u2500 Types \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface PickerItem {\n key: string; // unique identifier\n label: string; // primary display line\n subtitle?: string | undefined; // secondary dim line (e.g. path)\n meta?: string | undefined; // right-aligned info (e.g. \"yesterday\")\n kind: 'project' | 'action';\n}\n\nexport interface PickerConfig {\n title: string;\n items: PickerItem[];\n globalConfigPath?: string | undefined;\n}\n\nexport interface PickerResult {\n kind: 'project' | 'action';\n key: string;\n /** Resolved project entry (only set when kind === 'project') */\n project?: ProjectEntry | undefined;\n /** Action identifier: 'new-session', 'prev-sessions', 'quit' */\n action?: 'new-session' | 'prev-sessions' | 'quit' | undefined;\n}\n\n// \u2500\u2500 Helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nfunction fmtLastSeen(iso: string | undefined): string {\n if (!iso) return 'never';\n const diff = Date.now() - new Date(iso).getTime();\n const min = Math.floor(diff / 60000);\n if (min < 1) return 'just now';\n if (min < 60) return `${min}m ago`;\n const hours = Math.floor(min / 60);\n if (hours < 24) return `${hours}h ago`;\n const days = Math.floor(hours / 24);\n if (days === 1) return 'yesterday';\n if (days < 30) return `${days}d ago`;\n if (days < 365) return `${Math.floor(days / 30)}mo ago`;\n return `${Math.floor(days / 365)}y ago`;\n}\n\n/**\n * Get the terminal height, defaulting to 24 if it can't be determined.\n */\nfunction terminalHeight(): number {\n return process.stdout.rows || 24;\n}\n\n/**\n * Build the picker items from the projects manifest plus built-in actions.\n */\nexport async function buildPickerItems(opts: {\n globalConfigPath?: string | undefined;\n currentProjectRoot?: string | undefined;\n}): Promise<PickerItem[]> {\n const manifest = await loadManifest(opts.globalConfigPath);\n const sorted = [...manifest.projects].sort((a, b) => {\n if (a.lastSeen && b.lastSeen) {\n const cmp = b.lastSeen.localeCompare(a.lastSeen);\n return cmp !== 0 ? cmp : a.name.localeCompare(b.name);\n }\n if (a.lastSeen) return -1;\n if (b.lastSeen) return 1;\n return a.name.localeCompare(b.name);\n });\n\n const items: PickerItem[] = [];\n\n for (const p of sorted) {\n const isCurrent = p.root === opts.currentProjectRoot;\n const marker = isCurrent ? '\u25CF' : ' ';\n items.push({\n key: p.slug,\n label: `${marker} ${p.name}`,\n subtitle: p.root,\n meta: fmtLastSeen(p.lastSeen),\n kind: 'project',\n });\n }\n\n // Divider + action items\n items.push(\n { key: '__divider__', label: '\u2500'.repeat(32), kind: 'action' },\n { key: 'new-session', label: '+ Start new session', kind: 'action', meta: 'current project' },\n { key: 'prev-sessions', label: '\u23F1 Previous sessions', kind: 'action', meta: 'resume' },\n { key: 'quit', label: 'q Quit', kind: 'action' },\n );\n\n return items;\n}\n\n// \u2500\u2500 Rendering \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nfunction renderPickerFrame(\n items: PickerItem[],\n selectedIdx: number,\n scrollOffset: number,\n visibleHeight: number,\n title: string,\n filter: string,\n out: NodeJS.WriteStream,\n): void {\n const width = out.columns || 80;\n const pad = ' '.repeat(2);\n\n // Clear screen and move home\n out.write(CLEAR_SCREEN);\n out.write(CURSOR_HOME);\n\n // Title\n out.write(`\\n${pad}${color.bold(color.amber(title))}\\n`);\n\n // Search/filter bar \u2014 always visible when filter is non-empty\n if (filter.length > 0) {\n out.write(`${pad}${color.cyan('Filter:')} ${filter}${color.dim('\u2588')}\\n`);\n // Divider after filter bar\n const divider = color.dim('\u2500'.repeat(Math.min(width - 4, 60)));\n out.write(`${pad}${divider}\\n`);\n } else {\n // Normal divider\n const divider = color.dim('\u2500'.repeat(Math.min(width - 4, 60)));\n out.write(`${pad}${divider}\\n`);\n }\n\n // Empty state\n if (items.length === 0) {\n if (filter.length > 0) {\n out.write(`\\n${pad}${color.dim('No projects match your filter.')}\\n`);\n out.write(`${pad}${color.dim('Press ESC to clear filter, or backspace to refine.')}\\n`);\n } else {\n out.write(`\\n${pad}${color.dim('No projects registered.')}\\n`);\n out.write(`${pad}${color.dim('Use /project add <path> to register one.')}\\n`);\n }\n return;\n }\n\n // Adjust visible height: filter bar adds 2 lines (filter line + divider)\n const filterOverhead = filter.length > 0 ? 2 : 0;\n const effectiveVisible = Math.max(3, visibleHeight - filterOverhead);\n const maxIdx = Math.min(items.length, scrollOffset + effectiveVisible);\n\n for (let i = scrollOffset; i < maxIdx; i++) {\n const item = items[i];\n if (!item) continue;\n\n const isSelected = i === selectedIdx;\n const prefix = isSelected ? color.bold(color.cyan(' \u25B8 ')) : ' ';\n\n if (item.key === '__divider__') {\n out.write(`\\n${pad}${color.dim(item.label)}\\n`);\n continue;\n }\n\n // Build the line: [marker] label \u2026 meta\n const labelText = isSelected ? color.bold(item.label) : item.label;\n const metaText = item.meta ? color.dim(` ${item.meta}`) : '';\n\n // Truncate subtitle if too long\n let sub = '';\n if (item.subtitle) {\n const maxSub = width - 10;\n const truncated =\n item.subtitle.length > maxSub\n ? `\u2026${item.subtitle.slice(item.subtitle.length - maxSub + 1)}`\n : item.subtitle;\n sub = `\\n${pad} ${color.dim(truncated)}`;\n }\n\n const line = `${prefix} ${labelText}${metaText}`;\n out.write(`${line}${sub}\\n`);\n }\n\n // Scroll indicator\n if (items.length > effectiveVisible) {\n const pct = Math.round((scrollOffset / Math.max(1, items.length - effectiveVisible)) * 100);\n out.write(\n `\\n${pad}${color.dim(`\u2191 ${scrollOffset + 1}-${Math.min(scrollOffset + effectiveVisible, items.length)} of ${items.length} (${pct}%) \u2193`)}\\n`,\n );\n }\n\n // Footer hint \u2014 context-sensitive\n if (filter.length > 0) {\n out.write(\n `\\n${pad}${color.dim('type to filter \u2191\u2193 navigate \u21B5 select ESC clear Ctrl+C quit')}\\n`,\n );\n } else {\n out.write(\n `\\n${pad}${color.dim('type to filter \u2191\u2193 navigate PgUp PgDn page \u21B5 select q quit')}\\n`,\n );\n }\n}\n\n/**\n * Filter items by a case-insensitive substring match against label and subtitle.\n * Only project items are filtered; action items and dividers always appear.\n *\n * @public \u2014 exported for testing\n */\nexport function filterItems(allItems: PickerItem[], filter: string): PickerItem[] {\n if (filter.length === 0) return allItems;\n\n const lower = filter.toLowerCase();\n const projectItems = allItems.filter((item) => {\n if (item.kind !== 'project') return true; // actions/dividers pass through\n const labelMatch = item.label.toLowerCase().includes(lower);\n const subMatch = item.subtitle?.toLowerCase().includes(lower);\n return labelMatch || subMatch;\n });\n\n // If filter yields no project results, still show action items + divider\n // So the user can ESC clear or quit\n return projectItems;\n}\n\n/**\n * Compute the effective visible height accounting for the filter bar overhead.\n *\n * @public \u2014 exported for testing\n */\nexport function effectiveVisibleHeight(baseVisibleHeight: number, filter: string): number {\n const overhead = filter.length > 0 ? 2 : 0; // filter bar + its divider\n return Math.max(3, baseVisibleHeight - overhead);\n}\n\n/**\n * Skip divider items at the given index, moving forward or backward.\n * Returns the adjusted index, clamped to bounds.\n *\n * @public \u2014 exported for testing\n */\nexport function skipDivider(items: PickerItem[], idx: number, direction: -1 | 1): number {\n let i = idx;\n while (i >= 0 && i < items.length && items[i]?.key === '__divider__') {\n i += direction;\n }\n return Math.max(0, Math.min(items.length - 1, i));\n}\n\n/**\n * Run the interactive project picker. Returns the selection or undefined on cancel.\n */\nexport async function runProjectPicker(opts: {\n globalConfigPath?: string | undefined;\n currentProjectRoot?: string | undefined;\n}): Promise<PickerResult | undefined> {\n const stdin = process.stdin;\n const out = process.stdout;\n\n if (!stdin.isTTY || !out.isTTY) {\n // Non-TTY fallback: return undefined (caller should provide a usable message)\n return undefined;\n }\n\n const allItems = await buildPickerItems(opts);\n if (allItems.length === 0) return undefined;\n\n const title = 'Project Switch';\n const reservedTop = 4; // title + divider + padding\n const reservedBottom = 3; // scroll indicator + footer\n const headerHeight = reservedTop + reservedBottom;\n const baseVisibleHeight = Math.max(5, terminalHeight() - headerHeight);\n\n return new Promise<PickerResult | undefined>((resolve) => {\n const wasRaw = stdin.isRaw;\n const wasPaused = stdin.isPaused();\n let filter = '';\n let displayItems = allItems;\n let selectedIdx = 0;\n let scrollOffset = 0;\n let buf = '';\n\n const visibleHeight = () => effectiveVisibleHeight(baseVisibleHeight, filter);\n\n const render = () => {\n renderPickerFrame(\n displayItems,\n selectedIdx,\n scrollOffset,\n visibleHeight(),\n title,\n filter,\n out,\n );\n };\n\n const applyFilter = (newFilter: string) => {\n filter = newFilter;\n displayItems = filterItems(allItems, filter);\n // Reset position to top\n selectedIdx = 0;\n scrollOffset = 0;\n // Skip divider at position 0\n if (displayItems[0]?.key === '__divider__') {\n selectedIdx = skipDivider(displayItems, selectedIdx, 1);\n }\n };\n\n const navigateDown = () => {\n if (selectedIdx < displayItems.length - 1) {\n selectedIdx = skipDivider(displayItems, selectedIdx + 1, 1);\n }\n const vh = visibleHeight();\n if (selectedIdx >= scrollOffset + vh) {\n scrollOffset = selectedIdx - vh + 1;\n }\n };\n\n const navigateUp = () => {\n if (selectedIdx > 0) {\n selectedIdx = skipDivider(displayItems, selectedIdx - 1, -1);\n }\n if (selectedIdx < scrollOffset) {\n scrollOffset = selectedIdx;\n }\n };\n\n const pageUp = () => {\n const pageSize = Math.max(1, visibleHeight() - 1);\n const target = selectedIdx - pageSize;\n selectedIdx = Math.max(0, target);\n selectedIdx = skipDivider(displayItems, selectedIdx, -1);\n if (selectedIdx < scrollOffset) {\n scrollOffset = Math.max(0, selectedIdx - 1);\n }\n };\n\n const pageDown = () => {\n const pageSize = Math.max(1, visibleHeight() - 1);\n const target = selectedIdx + pageSize;\n selectedIdx = Math.min(displayItems.length - 1, target);\n selectedIdx = skipDivider(displayItems, selectedIdx, 1);\n const vh = visibleHeight();\n if (selectedIdx >= scrollOffset + vh) {\n scrollOffset = Math.min(displayItems.length - vh, selectedIdx - vh + 1);\n if (scrollOffset < 0) scrollOffset = 0;\n }\n };\n\n const cleanup = () => {\n stdin.off('data', onData);\n if (wasRaw) {\n try {\n stdin.setRawMode(wasRaw);\n } catch {\n /* ignore */\n }\n }\n if (wasPaused) stdin.pause();\n out.write(CURSOR_SHOW);\n };\n\n /**\n * Check if a single character is printable (should be added to filter).\n * Excludes control characters (0x00-0x1F) and DEL (0x7F).\n */\n const isPrintable = (ch: string): boolean => {\n if (ch.length !== 1) return false;\n const code = ch.charCodeAt(0);\n return code >= 0x20 && code < 0x7f;\n };\n\n const onData = (chunk: Buffer) => {\n const str = chunk.toString();\n buf += str;\n\n // Escape sequences (ESC + [...])\n if (buf.startsWith(ESC) && buf.length >= 3) {\n // \u2500\u2500 4-byte sequences (PageUp/Down: ESC [ 5/6 ~) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n if (buf.length >= 4) {\n if (buf === PAGE_UP) {\n buf = '';\n pageUp();\n render();\n return;\n }\n if (buf === PAGE_DOWN) {\n buf = '';\n pageDown();\n render();\n return;\n }\n }\n\n // \u2500\u2500 3-byte sequences (arrows: ESC [ A / B / O A / O B) \u2500\u2500\n if (buf.length === 3) {\n if (buf === ARROW_UP || buf === ARROW_UP_ALT) {\n buf = '';\n navigateUp();\n render();\n return;\n }\n if (buf === ARROW_DOWN || buf === ARROW_DOWN_ALT) {\n buf = '';\n navigateDown();\n render();\n return;\n }\n }\n\n // Known lengths but unknown sequence \u2014 let it buffer more\n if (buf.length < 4) return;\n\n // Unknown escape sequence \u2014 clear buffer\n buf = '';\n return;\n }\n\n // Single-byte inputs\n if (buf.length === 1) {\n const ch = buf;\n\n // Ctrl+C \u2014 always quit\n if (ch === CTRL_C) {\n cleanup();\n out.write(CURSOR_SHOW);\n out.write('\\n');\n resolve(undefined);\n return;\n }\n\n // Escape\n if (ch === ESC) {\n if (filter.length > 0) {\n // First ESC clears the filter\n applyFilter('');\n buf = '';\n render();\n return;\n }\n // No filter active \u2014 quit\n cleanup();\n out.write(CURSOR_SHOW);\n out.write('\\n');\n resolve(undefined);\n return;\n }\n\n // Backspace \u2014 remove last char from filter\n if (ch === BS || ch === '\\b') {\n if (filter.length > 0) {\n applyFilter(filter.slice(0, -1));\n }\n buf = '';\n render();\n return;\n }\n\n // Enter/Return\n if (ch === ENTER) {\n const item = displayItems[selectedIdx];\n cleanup();\n out.write(CURSOR_SHOW);\n out.write('\\n');\n\n if (!item || item.key === '__divider__') {\n resolve(undefined);\n return;\n }\n\n if (item.key === 'quit') {\n resolve(undefined);\n return;\n }\n\n if (item.key === 'new-session') {\n resolve({ kind: 'action', key: 'new-session', action: 'new-session' });\n return;\n }\n\n if (item.key === 'prev-sessions') {\n resolve({ kind: 'action', key: 'prev-sessions', action: 'prev-sessions' });\n return;\n }\n\n // Project item\n resolve({ kind: 'project', key: item.key });\n return;\n }\n\n // Special single-char navigation (only when filter is empty)\n if (filter.length === 0) {\n if (ch === 'q' || ch === 'Q') {\n cleanup();\n out.write(CURSOR_SHOW);\n out.write('\\n');\n resolve(undefined);\n return;\n }\n if (ch === 'j') {\n buf = '';\n navigateDown();\n render();\n return;\n }\n if (ch === 'k') {\n buf = '';\n navigateUp();\n render();\n return;\n }\n }\n\n // Printable character \u2192 add to filter\n if (isPrintable(ch)) {\n applyFilter(filter + ch);\n buf = '';\n render();\n return;\n }\n\n buf = '';\n return;\n }\n };\n\n // Setup raw mode\n try {\n stdin.setRawMode(true);\n } catch {\n // Can't set raw mode \u2014 fallback\n resolve(undefined);\n return;\n }\n stdin.resume();\n out.write(CURSOR_HIDE);\n\n // Skip divider items to start on a valid entry\n selectedIdx = skipDivider(displayItems, 0, 1);\n\n // Initial render\n render();\n\n stdin.on('data', onData);\n\n // Handle stdin close (pipe broken, etc.)\n stdin.once('close', () => {\n cleanup();\n out.write(CURSOR_SHOW);\n resolve(undefined);\n });\n });\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/provider-helpers.ts"],
4
- "sourcesContent": ["/**\n * Shared provider-config helpers used by the picker, main boot sequence,\n * and subcommands. Keeps provider key detection and alias resolution in\n * one place so the logic doesn't drift between call sites.\n */\nimport type { Config, ModelsRegistry, ProviderConfig, ResolvedProvider } from '@wrongstack/core/types';\n\n// (Removed) CATALOG_REFRESHABLE_MODEL_PROVIDERS \u2014 a four-entry hand-list that\n// decided whose models were allowed to come from models.dev. See visibleModelIds.\n\nfunction uniqueModelIds(primary: readonly string[], fallback: readonly string[]): string[] {\n const seen = new Set<string>();\n const out: string[] = [];\n for (const id of [...primary, ...fallback]) {\n const trimmed = id.trim();\n if (!trimmed || seen.has(trimmed)) continue;\n seen.add(trimmed);\n out.push(trimmed);\n }\n return out;\n}\n\n/** Return the provider's visible model ids: models.dev plus anything the saved\n * config names that the catalog does not carry.\n *\n * `cfg.models` is ADDITIVE, never subtractive. It used to be a strict allowlist\n * for every provider except a four-entry hand-list (chatgpt/openai/codex/\n * openai-codex), which had two failure modes that showed up in real configs:\n *\n * - A saved `models: []` \u2014 written by an auth flow that had nothing to cache\n * yet \u2014 pinned the provider to ZERO selectable models forever. A configured\n * GitHub Copilot listed nothing at all.\n * - A preset's hand-maintained list went stale against the catalog and hid\n * real models on the user's own plan: `kimi-for-coding` offered 2 of the 4\n * models models.dev publishes for it, hiding `k3` (131_072 output) behind\n * `kimi-for-coding` (32_768). `alibaba-token-plan` hid 11 of 22.\n *\n * models.dev publishes a dedicated provider entry per subscription plan, so the\n * catalog already describes exactly what a plan includes \u2014 a second,\n * hand-curated copy could only ever drift below it. Narrowing what the user\n * sees is `favoriteModels`' job, not this list's.\n *\n * A model the credential cannot actually serve now surfaces as an error at\n * request time rather than being silently unselectable, which is the better\n * failure: visible and actionable. */\nexport function visibleModelIds(\n providerId: string,\n config: Config,\n catalogModelIds: string[],\n cfg?: ProviderConfig | undefined,\n): string[] {\n const entry = cfg ?? config.providers?.[providerId];\n if (entry?.models === undefined) return [...catalogModelIds];\n return uniqueModelIds(entry.models, catalogModelIds);\n}\n\n/**\n * Is `apiBase` a loopback URL (localhost / 127.0.0.0-8 / ::1 / 0.0.0.0)?\n * Such a host is a server running on the same machine, never a remote API.\n */\nfunction isLoopbackUrl(apiBase: string | undefined): boolean {\n if (!apiBase) return false;\n let host: string;\n try {\n host = new URL(apiBase).hostname.toLowerCase();\n } catch {\n return false;\n }\n // URL keeps the brackets around IPv6 hosts (e.g. \"[::1]\") \u2014 strip them.\n host = host.replace(/^\\[|\\]$/g, '');\n if (host === 'localhost' || host === '::1' || host === '0.0.0.0') return true;\n return /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/.test(host);\n}\n\n/**\n * Is this a keyless local gateway \u2014 a server on a loopback address that\n * declares no API-key env vars (omniroute, LiteLLM/vLLM/LM Studio/Ollama\n * running locally, \u2026)? These need no credential, so they belong in the\n * picker even though `hasApiKey` returns false for them. Accepts the\n * minimal shape both call sites can supply.\n */\nexport function isKeylessLocalProvider(provider: {\n apiBase?: string | undefined;\n envVars?: string[] | undefined;\n}): boolean {\n if (provider.envVars && provider.envVars.length > 0) return false;\n return isLoopbackUrl(provider.apiBase);\n}\n\n/**\n * Does this provider have an API key available \u2014 either in the\n * environment (via one of its known env vars) or stored in config\n * (encrypted or plaintext)? Used to filter the picker to providers\n * the user can actually use right now.\n */\nexport function hasApiKey(provider: ResolvedProvider, config?: Config): boolean {\n if (provider.envVars.some((v) => !!process.env[v])) return true;\n const entry = config?.providers?.[provider.id];\n if (!entry) return false;\n if (typeof entry.apiKey === 'string' && entry.apiKey.length > 0) return true;\n if (Array.isArray(entry.apiKeys) && entry.apiKeys.some((k) => k?.apiKey)) return true;\n return false;\n}\n\n/**\n * Build the list of providers the user can switch to mid-session.\n * Only includes providers that have an API key available (env var or\n * stored config). Falls back to the full catalog when no keys are found.\n *\n * Models are inlined from the catalog (or from `cfg.models` for custom\n * entries) so the picker can show a real selection.\n */\nexport async function buildPickableProviders(\n modelsRegistry: ModelsRegistry,\n config: Config,\n): Promise<Array<{ id: string; family: string; models: string[] }>> {\n const overlay = config.providers ?? {};\n let catalog: Awaited<ReturnType<typeof modelsRegistry.listProviders>> = [];\n try {\n catalog = await modelsRegistry.listProviders();\n } catch {\n // catalog unavailable \u2014 keyed-by-config-only path still works\n }\n const catalogById = new Map(catalog.map((p) => [p.id, p]));\n // Selectable when the provider has a usable key OR is a keyless local\n // gateway (omniroute/LiteLLM/\u2026 on a loopback address, which needs no\n // credential). Mirrors `runPicker`'s filter so the `/model` switch and\n // the startup picker agree on what's offered.\n const isSelectable = (id: string): boolean => {\n const entry = overlay[id];\n const catalogEntry = catalogById.get(id);\n const envHit = catalogEntry?.envVars.some((v) => !!process.env[v]);\n if (envHit) return true;\n if (typeof entry?.apiKey === 'string' && entry.apiKey.length > 0) return true;\n if (Array.isArray(entry?.apiKeys) && entry.apiKeys.some((k) => k?.apiKey)) return true;\n return isKeylessLocalProvider({\n apiBase: entry?.baseUrl ?? catalogEntry?.apiBase,\n envVars: entry?.envVars ?? catalogEntry?.envVars,\n });\n };\n const seen = new Set<string>();\n const out: Array<{ id: string; family: string; models: string[] }> = [];\n for (const [id, cfg] of Object.entries(overlay)) {\n if (!isSelectable(id)) continue;\n seen.add(id);\n const catalogType = cfg.type && cfg.type !== id ? cfg.type : id;\n const inherited = catalogById.get(catalogType);\n const family = cfg.family ?? inherited?.family ?? 'unsupported';\n if (family === 'unsupported') continue;\n const models = visibleModelIds(id, config, (inherited?.models ?? []).map((m) => m.id), cfg);\n out.push({ id, family, models });\n }\n for (const p of catalog) {\n if (seen.has(p.id)) continue;\n if (p.family === 'unsupported') continue;\n if (!isSelectable(p.id)) continue;\n out.push({ id: p.id, family: p.family, models: p.models.map((m) => m.id) });\n }\n return out;\n}\n\n/**\n * Resolve a provider id that may be an alias. When the user has\n * `providers[id].type` pointing at a different catalog entry, return\n * the catalog id so downstream lookups still work. Returns the\n * original id unchanged when it's a direct catalog match.\n */\nexport function resolveProviderAlias(providerId: string, config: Config): string {\n const savedAlias = config.providers?.[providerId];\n if (savedAlias?.type && savedAlias.type !== providerId) {\n return savedAlias.type;\n }\n return providerId;\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }