@wrongstack/cli 0.296.4 → 0.298.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (523) 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/dispatch-webui.d.ts +7 -0
  4. package/dist/boot/governance-evidence-candidate.d.ts +3 -0
  5. package/dist/boot/governance-shadow-bridge.d.ts +19 -0
  6. package/dist/boot/governance-trace-context.d.ts +64 -0
  7. package/dist/boot/launch-banner.d.ts +22 -0
  8. package/dist/boot/tui-session-resume.d.ts +10 -1
  9. package/dist/chimera-leader-wake.d.ts +57 -0
  10. package/dist/chimera-reviewer-policy.d.ts +89 -1
  11. package/dist/chimera-subagent-ladder.d.ts +72 -0
  12. package/dist/{chunk-AZESNNIC.js → chunk-4HH3YGG4.js} +3 -3
  13. package/dist/{chunk-IHBYBYGA.js → chunk-A6Q5KGLV.js} +51 -18
  14. package/dist/{chunk-ABXK4VVY.js → chunk-ARWGQUB3.js} +2 -1
  15. package/dist/{chunk-OI7GWJDS.js → chunk-C5GH4YBL.js} +1389 -184
  16. package/dist/{chunk-TADVX644.js → chunk-GO3TJICK.js} +11 -2
  17. package/dist/{chunk-JBTFWWKV.js → chunk-I2BM6FK6.js} +9 -4
  18. package/dist/{chunk-AXVZMEWG.js → chunk-I5MEUFDI.js} +2 -2
  19. package/dist/{chunk-WY7KKOUK.js → chunk-JW75HY4F.js} +31 -10
  20. package/dist/chunk-U3SS4NRH.js +10 -0
  21. package/dist/{chunk-Z7YGASQP.js → chunk-V3XH6XBJ.js} +30 -26
  22. package/dist/{chunk-BQCAJ7FI.js → chunk-XTIXVJXP.js} +16 -3
  23. package/dist/{cli-main-TOAWVJDY.js → cli-main-TJEU4OUY.js} +25912 -25134
  24. package/dist/cli-main-helpers.d.ts +42 -2
  25. package/dist/{execution-O7I5DYE6.js → execution-INOV5P7N.js} +1264 -650
  26. package/dist/execution-chimera-cascade.d.ts +7 -1
  27. package/dist/execution-chimera-review.d.ts +35 -0
  28. package/dist/fleet/host-types.d.ts +6 -1
  29. package/dist/fleet-statusline.d.ts +1 -0
  30. package/dist/goal-host.d.ts +1 -1
  31. package/dist/governance-V2Z42RBE.js +65 -0
  32. package/dist/governance-hq-telemetry.d.ts +17 -0
  33. package/dist/{hq-JUYKUNJX.js → hq-WO6CLUSI.js} +2 -2
  34. package/dist/hq-publisher.d.ts +3 -2
  35. package/dist/hq-server/auth.d.ts +33 -2
  36. package/dist/hq-server/login-attempt-store.d.ts +73 -0
  37. package/dist/hq-server/routes/auth-handlers.d.ts +73 -5
  38. package/dist/hq-server/routes.d.ts +5 -5
  39. package/dist/hq-server/types.d.ts +44 -2
  40. package/dist/hq-server/utils.d.ts +51 -6
  41. package/dist/hq-server/ws.d.ts +61 -2
  42. package/dist/{hq-server-6AQ3BXZA.js → hq-server-6TSAORAC.js} +2 -2
  43. package/dist/hq-server.d.ts +10 -0
  44. package/dist/index.js +337 -42
  45. package/dist/kanban-hq-sync.d.ts +13 -1
  46. package/dist/live-settings-input.d.ts +10 -1
  47. package/dist/{mailbox-serve-2UWHEN3M.js → mailbox-serve-DBOOOOWZ.js} +50 -8
  48. package/dist/{sdd-runtime-JG4EEKL6.js → sdd-runtime-AIJCJGWC.js} +2 -2
  49. package/dist/services/sdd/state.d.ts +3 -3
  50. package/dist/settings-menu.d.ts +1 -1
  51. package/dist/slash-commands/command-context.d.ts +2 -0
  52. package/dist/slash-commands/fallback.d.ts +2 -0
  53. package/dist/slash-commands/goal-refiner.d.ts +1 -1
  54. package/dist/slash-commands/goal.d.ts +1 -1
  55. package/dist/subcommands/handlers/acp-connection-gate.d.ts +20 -0
  56. package/dist/subcommands/handlers/governance.d.ts +8 -0
  57. package/dist/{update-YC4TYW2Y.js → update-MV6TUACD.js} +3 -3
  58. package/dist/utils/win32-cmd.d.ts +9 -6
  59. package/dist/{version-help-DROHZRW6.js → version-help-ASKQYXDJ.js} +2 -2
  60. package/dist/webui-server/kanban-host-adapter.d.ts +1 -1
  61. package/dist/webui-server/session-start-payload.d.ts +4 -0
  62. package/dist/{webui-server-ZF5KVGC5.js → webui-server-PCLSXX6L.js} +164 -134
  63. package/dist/webui-server-options.d.ts +7 -0
  64. package/dist/wiring/brain-and-orchestration.d.ts +2 -0
  65. package/dist/wiring/hq-telemetry.d.ts +4 -3
  66. package/dist/wiring/lifecycle-plugins.d.ts +5 -8
  67. package/dist/wiring/metrics.d.ts +1 -1
  68. package/dist/wiring/provider-runtime-setup.d.ts +2 -2
  69. package/package.json +23 -22
  70. package/dist/acp-A5OSIU2P.js.map +0 -7
  71. package/dist/acp-registry-cache.d.ts.map +0 -1
  72. package/dist/acp-server-agent.d.ts.map +0 -1
  73. package/dist/arg-parser.d.ts.map +0 -1
  74. package/dist/audit-2ZSFGNIF.js.map +0 -7
  75. package/dist/auth-CJWQJVRH.js.map +0 -7
  76. package/dist/auth-menu/add-provider.d.ts.map +0 -1
  77. package/dist/auth-menu/anthropic-oauth.d.ts.map +0 -1
  78. package/dist/auth-menu/auth-menu-audit.d.ts.map +0 -1
  79. package/dist/auth-menu/direct.d.ts.map +0 -1
  80. package/dist/auth-menu/github-copilot-oauth.d.ts.map +0 -1
  81. package/dist/auth-menu/helpers.d.ts.map +0 -1
  82. package/dist/auth-menu/index.d.ts.map +0 -1
  83. package/dist/auth-menu/local-presets.d.ts.map +0 -1
  84. package/dist/auth-menu/local.d.ts.map +0 -1
  85. package/dist/auth-menu/loopback-server.d.ts.map +0 -1
  86. package/dist/auth-menu/oauth-menu.d.ts.map +0 -1
  87. package/dist/auth-menu/openai-codex-oauth.d.ts.map +0 -1
  88. package/dist/auth-menu/panel-service.d.ts.map +0 -1
  89. package/dist/auth-menu/provider-menu.d.ts.map +0 -1
  90. package/dist/auth-menu/shared.d.ts.map +0 -1
  91. package/dist/auth-menu/top-menu.d.ts.map +0 -1
  92. package/dist/auth-menu/types.d.ts.map +0 -1
  93. package/dist/auth-menu.d.ts.map +0 -1
  94. package/dist/bench-7ZDWSNEF.js.map +0 -7
  95. package/dist/boot/auto-discover-providers.d.ts.map +0 -1
  96. package/dist/boot/brain-decision-log.d.ts.map +0 -1
  97. package/dist/boot/config-backup-recovery.d.ts.map +0 -1
  98. package/dist/boot/container-wiring.d.ts.map +0 -1
  99. package/dist/boot/dispatch-singleshot.d.ts.map +0 -1
  100. package/dist/boot/dispatch-tui.d.ts.map +0 -1
  101. package/dist/boot/dispatch-webui.d.ts.map +0 -1
  102. package/dist/boot/event-wiring.d.ts.map +0 -1
  103. package/dist/boot/execution-mode.d.ts.map +0 -1
  104. package/dist/boot/launch-menu.d.ts.map +0 -1
  105. package/dist/boot/short-circuit-desktop.d.ts.map +0 -1
  106. package/dist/boot/short-circuit-flags.d.ts.map +0 -1
  107. package/dist/boot/short-circuit-hq.d.ts.map +0 -1
  108. package/dist/boot/simpleui-full-auto.d.ts.map +0 -1
  109. package/dist/boot/system-prompt-builder.d.ts.map +0 -1
  110. package/dist/boot/system-prompt.d.ts.map +0 -1
  111. package/dist/boot/tool-registry.d.ts.map +0 -1
  112. package/dist/boot/tui-coordinator-callbacks.d.ts.map +0 -1
  113. package/dist/boot/tui-coordinator-setup.d.ts.map +0 -1
  114. package/dist/boot/tui-debug-stream.d.ts.map +0 -1
  115. package/dist/boot/tui-goal-wiring.d.ts.map +0 -1
  116. package/dist/boot/tui-live-sessions.d.ts.map +0 -1
  117. package/dist/boot/tui-project-picker-callback.d.ts.map +0 -1
  118. package/dist/boot/tui-project-spawn.d.ts.map +0 -1
  119. package/dist/boot/tui-project-switch.d.ts.map +0 -1
  120. package/dist/boot/tui-runtime-state.d.ts.map +0 -1
  121. package/dist/boot/tui-sdd-callback.d.ts.map +0 -1
  122. package/dist/boot/tui-session-resume.d.ts.map +0 -1
  123. package/dist/boot/tui-settings-adapter.d.ts.map +0 -1
  124. package/dist/boot-config.d.ts.map +0 -1
  125. package/dist/boot.d.ts.map +0 -1
  126. package/dist/brain-menu/panel-service.d.ts.map +0 -1
  127. package/dist/chimera-review-task.d.ts.map +0 -1
  128. package/dist/chimera-reviewer-policy.d.ts.map +0 -1
  129. package/dist/chronicle-QQEQFSSE.js.map +0 -7
  130. package/dist/chunk-5N34EWJR.js.map +0 -7
  131. package/dist/chunk-66T43Q4Y.js.map +0 -7
  132. package/dist/chunk-7OCVIDC7.js.map +0 -7
  133. package/dist/chunk-ABXK4VVY.js.map +0 -7
  134. package/dist/chunk-AXVZMEWG.js.map +0 -7
  135. package/dist/chunk-AZESNNIC.js.map +0 -7
  136. package/dist/chunk-BGFM3PD7.js.map +0 -7
  137. package/dist/chunk-BQCAJ7FI.js.map +0 -7
  138. package/dist/chunk-DPJZQCVP.js.map +0 -7
  139. package/dist/chunk-F4PEGAJZ.js.map +0 -7
  140. package/dist/chunk-IHBYBYGA.js.map +0 -7
  141. package/dist/chunk-JBSQ7ONN.js.map +0 -7
  142. package/dist/chunk-JBTFWWKV.js.map +0 -7
  143. package/dist/chunk-JUHRI6OV.js.map +0 -7
  144. package/dist/chunk-OI7GWJDS.js.map +0 -7
  145. package/dist/chunk-OP47B3IX.js.map +0 -7
  146. package/dist/chunk-PJHET45A.js.map +0 -7
  147. package/dist/chunk-Q5GTM25S.js.map +0 -7
  148. package/dist/chunk-QD544J2B.js.map +0 -7
  149. package/dist/chunk-QUNHS6O3.js.map +0 -7
  150. package/dist/chunk-TADVX644.js.map +0 -7
  151. package/dist/chunk-TGDHN4LM.js.map +0 -7
  152. package/dist/chunk-TYO2OVAD.js.map +0 -7
  153. package/dist/chunk-VCYZ3WZV.js.map +0 -7
  154. package/dist/chunk-VJUEZZYB.js +0 -29
  155. package/dist/chunk-VJUEZZYB.js.map +0 -7
  156. package/dist/chunk-WHOIR577.js.map +0 -7
  157. package/dist/chunk-WY7KKOUK.js.map +0 -7
  158. package/dist/chunk-XJXDOF63.js.map +0 -7
  159. package/dist/chunk-XWEGWYDU.js.map +0 -7
  160. package/dist/chunk-YWUPHRGB.js.map +0 -7
  161. package/dist/chunk-Z7YGASQP.js.map +0 -7
  162. package/dist/cli-bundled-prompts.d.ts.map +0 -1
  163. package/dist/cli-bundled-skills.d.ts.map +0 -1
  164. package/dist/cli-context.d.ts.map +0 -1
  165. package/dist/cli-entry-main.d.ts.map +0 -1
  166. package/dist/cli-entry-point.d.ts.map +0 -1
  167. package/dist/cli-eternal-flag.d.ts.map +0 -1
  168. package/dist/cli-main-TOAWVJDY.js.map +0 -7
  169. package/dist/cli-main-helpers.d.ts.map +0 -1
  170. package/dist/cli-main.d.ts.map +0 -1
  171. package/dist/cli-update-notice.d.ts.map +0 -1
  172. package/dist/config-doctor.d.ts.map +0 -1
  173. package/dist/config-history.d.ts.map +0 -1
  174. package/dist/context-limit.d.ts.map +0 -1
  175. package/dist/context-overflow-diagnostic.d.ts.map +0 -1
  176. package/dist/diag-doctor-OQ3AA63O.js.map +0 -7
  177. package/dist/diff-renderer.d.ts.map +0 -1
  178. package/dist/execute-deps.d.ts.map +0 -1
  179. package/dist/execution-O7I5DYE6.js.map +0 -7
  180. package/dist/execution-chimera-ask.d.ts.map +0 -1
  181. package/dist/execution-chimera-cascade.d.ts.map +0 -1
  182. package/dist/execution-cleanup.d.ts.map +0 -1
  183. package/dist/execution-kanban-dispatch.d.ts.map +0 -1
  184. package/dist/execution-repl-fleet-callbacks.d.ts.map +0 -1
  185. package/dist/execution-storage-observability.d.ts.map +0 -1
  186. package/dist/execution-tui-next-step-callbacks.d.ts.map +0 -1
  187. package/dist/execution.d.ts.map +0 -1
  188. package/dist/export-TPORYVRZ.js.map +0 -7
  189. package/dist/fleet/host-acp-runner-cache.d.ts.map +0 -1
  190. package/dist/fleet/host-acp.d.ts.map +0 -1
  191. package/dist/fleet/host-concurrency.d.ts.map +0 -1
  192. package/dist/fleet/host-context.d.ts.map +0 -1
  193. package/dist/fleet/host-director-builder.d.ts.map +0 -1
  194. package/dist/fleet/host-director-event-bridges.d.ts.map +0 -1
  195. package/dist/fleet/host-director-services.d.ts.map +0 -1
  196. package/dist/fleet/host-event-bridge.d.ts.map +0 -1
  197. package/dist/fleet/host-helpers.d.ts.map +0 -1
  198. package/dist/fleet/host-learning-tracker.d.ts.map +0 -1
  199. package/dist/fleet/host-learning.d.ts.map +0 -1
  200. package/dist/fleet/host-lifecycle-events.d.ts.map +0 -1
  201. package/dist/fleet/host-paths.d.ts.map +0 -1
  202. package/dist/fleet/host-provider.d.ts.map +0 -1
  203. package/dist/fleet/host-session-writer.d.ts.map +0 -1
  204. package/dist/fleet/host-shadow-pass.d.ts.map +0 -1
  205. package/dist/fleet/host-spawn-types.d.ts.map +0 -1
  206. package/dist/fleet/host-status.d.ts.map +0 -1
  207. package/dist/fleet/host-subagent-factory.d.ts.map +0 -1
  208. package/dist/fleet/host-supervisor.d.ts.map +0 -1
  209. package/dist/fleet/host-task-result-report.d.ts.map +0 -1
  210. package/dist/fleet/host-types.d.ts.map +0 -1
  211. package/dist/fleet/host.d.ts.map +0 -1
  212. package/dist/fleet/routing.d.ts.map +0 -1
  213. package/dist/fleet/status-broadcast.d.ts.map +0 -1
  214. package/dist/fleet/supervisor-registry.d.ts.map +0 -1
  215. package/dist/fleet-statusline.d.ts.map +0 -1
  216. package/dist/goal-host.d.ts.map +0 -1
  217. package/dist/hooks-wiring.d.ts.map +0 -1
  218. package/dist/hq-JUYKUNJX.js.map +0 -7
  219. package/dist/hq-command-controller.d.ts.map +0 -1
  220. package/dist/hq-publisher.d.ts.map +0 -1
  221. package/dist/hq-recovery-html.d.ts.map +0 -1
  222. package/dist/hq-server/audit-actor.d.ts.map +0 -1
  223. package/dist/hq-server/auth-state.d.ts.map +0 -1
  224. package/dist/hq-server/auth.d.ts.map +0 -1
  225. package/dist/hq-server/preflight.d.ts.map +0 -1
  226. package/dist/hq-server/project-root.d.ts.map +0 -1
  227. package/dist/hq-server/routes/auth-handlers.d.ts.map +0 -1
  228. package/dist/hq-server/routes/session-handlers.d.ts.map +0 -1
  229. package/dist/hq-server/routes/system-handlers.d.ts.map +0 -1
  230. package/dist/hq-server/routes.d.ts.map +0 -1
  231. package/dist/hq-server/snapshot.d.ts.map +0 -1
  232. package/dist/hq-server/startup.d.ts.map +0 -1
  233. package/dist/hq-server/trust-boundary.d.ts.map +0 -1
  234. package/dist/hq-server/types.d.ts.map +0 -1
  235. package/dist/hq-server/utils.d.ts.map +0 -1
  236. package/dist/hq-server/ws.d.ts.map +0 -1
  237. package/dist/hq-server-6AQ3BXZA.js.map +0 -7
  238. package/dist/hq-server.d.ts.map +0 -1
  239. package/dist/hq-static-serve.d.ts.map +0 -1
  240. package/dist/hq-ttl-U2FAYFAT.js.map +0 -7
  241. package/dist/hq-tunnel-RFKGC4HI.js.map +0 -7
  242. package/dist/hq-tunnel.d.ts.map +0 -1
  243. package/dist/index.d.ts.map +0 -1
  244. package/dist/index.js.map +0 -7
  245. package/dist/init-E2NDDOHI.js.map +0 -7
  246. package/dist/input-reader.d.ts.map +0 -1
  247. package/dist/kanban-dispatch-route.d.ts.map +0 -1
  248. package/dist/kanban-hq-sync.d.ts.map +0 -1
  249. package/dist/kanban-run-mirror-EKVNGXWW.js.map +0 -7
  250. package/dist/launch-hints.d.ts.map +0 -1
  251. package/dist/live-settings-input.d.ts.map +0 -1
  252. package/dist/mailbox-bridge-bootstrap.d.ts.map +0 -1
  253. package/dist/mailbox-serve-2UWHEN3M.js.map +0 -7
  254. package/dist/mcp-CYLPUEHC.js.map +0 -7
  255. package/dist/mcp-serve.d.ts.map +0 -1
  256. package/dist/modeldiag-HENYJ4N7.js.map +0 -7
  257. package/dist/multi-agent.d.ts.map +0 -1
  258. package/dist/next-task-predictor.d.ts.map +0 -1
  259. package/dist/permission-prompt.d.ts.map +0 -1
  260. package/dist/permissions-FNYLZIL4.js.map +0 -7
  261. package/dist/picker-key-state.d.ts.map +0 -1
  262. package/dist/picker-model-picker.d.ts.map +0 -1
  263. package/dist/picker-ui.d.ts.map +0 -1
  264. package/dist/picker.d.ts.map +0 -1
  265. package/dist/plugin-api-factory.d.ts.map +0 -1
  266. package/dist/plugin-management.d.ts.map +0 -1
  267. package/dist/plugin-usage-OU6X6LM3.js.map +0 -7
  268. package/dist/plugins-4LJ5IUBI.js.map +0 -7
  269. package/dist/pre-launch/launch-prompts.d.ts.map +0 -1
  270. package/dist/pre-launch/project-check.d.ts.map +0 -1
  271. package/dist/pre-launch.d.ts.map +0 -1
  272. package/dist/preflight.d.ts.map +0 -1
  273. package/dist/profile-config-path.d.ts.map +0 -1
  274. package/dist/project-BLQ3ALVL.js.map +0 -7
  275. package/dist/project-manifest-GE25PW4S.js.map +0 -7
  276. package/dist/project-picker-BOCWHBXP.js.map +0 -7
  277. package/dist/project-picker.d.ts.map +0 -1
  278. package/dist/projects-XE76NFNZ.js.map +0 -7
  279. package/dist/provider-config-utils.d.ts.map +0 -1
  280. package/dist/provider-helpers.d.ts.map +0 -1
  281. package/dist/provider-id.d.ts.map +0 -1
  282. package/dist/providers-models-GDELBHZK.js.map +0 -7
  283. package/dist/quick-VIO2BEHS.js.map +0 -7
  284. package/dist/renderer.d.ts.map +0 -1
  285. package/dist/repl-auto-proceed.d.ts.map +0 -1
  286. package/dist/repl-client-registration.d.ts.map +0 -1
  287. package/dist/repl-input.d.ts.map +0 -1
  288. package/dist/repl-options.d.ts.map +0 -1
  289. package/dist/repl-rendering.d.ts.map +0 -1
  290. package/dist/repl-suggestions.d.ts.map +0 -1
  291. package/dist/repl.d.ts.map +0 -1
  292. package/dist/replay-KCTXNMZQ.js.map +0 -7
  293. package/dist/rewind-EJMVFVLS.js.map +0 -7
  294. package/dist/sdd-runtime-JG4EEKL6.js.map +0 -7
  295. package/dist/services/autonomy-mode.d.ts.map +0 -1
  296. package/dist/services/commit-message.d.ts.map +0 -1
  297. package/dist/services/dispatch-classifier.d.ts.map +0 -1
  298. package/dist/services/mcp-management.d.ts.map +0 -1
  299. package/dist/services/project-facts.d.ts.map +0 -1
  300. package/dist/services/project-manifest.d.ts.map +0 -1
  301. package/dist/services/sdd/project-context.d.ts.map +0 -1
  302. package/dist/services/sdd/spec-detection.d.ts.map +0 -1
  303. package/dist/services/sdd/state.d.ts.map +0 -1
  304. package/dist/services/sdd/task-manager.d.ts.map +0 -1
  305. package/dist/services/sdd-runtime.d.ts.map +0 -1
  306. package/dist/services/statusline-config.d.ts.map +0 -1
  307. package/dist/services/suggestion-store.d.ts.map +0 -1
  308. package/dist/session-event-wiring.d.ts.map +0 -1
  309. package/dist/session-stats.d.ts.map +0 -1
  310. package/dist/sessions-config-NLCMK3BY.js.map +0 -7
  311. package/dist/settings-menu.d.ts.map +0 -1
  312. package/dist/shutdown-cleanup.d.ts.map +0 -1
  313. package/dist/simpleui-dist-JIFGUJO7.js.map +0 -7
  314. package/dist/simpleui-dist.d.ts.map +0 -1
  315. package/dist/slash-commands/acp.d.ts.map +0 -1
  316. package/dist/slash-commands/agent-improve.d.ts.map +0 -1
  317. package/dist/slash-commands/agents.d.ts.map +0 -1
  318. package/dist/slash-commands/audit.d.ts.map +0 -1
  319. package/dist/slash-commands/auth.d.ts.map +0 -1
  320. package/dist/slash-commands/autonomy.d.ts.map +0 -1
  321. package/dist/slash-commands/brain.d.ts.map +0 -1
  322. package/dist/slash-commands/btw.d.ts.map +0 -1
  323. package/dist/slash-commands/clear.d.ts.map +0 -1
  324. package/dist/slash-commands/codebase-reindex.d.ts.map +0 -1
  325. package/dist/slash-commands/collab.d.ts.map +0 -1
  326. package/dist/slash-commands/command-context.d.ts.map +0 -1
  327. package/dist/slash-commands/commit-llm.d.ts.map +0 -1
  328. package/dist/slash-commands/compact.d.ts.map +0 -1
  329. package/dist/slash-commands/context.d.ts.map +0 -1
  330. package/dist/slash-commands/coordinator.d.ts.map +0 -1
  331. package/dist/slash-commands/delegate.d.ts.map +0 -1
  332. package/dist/slash-commands/design.d.ts.map +0 -1
  333. package/dist/slash-commands/dev.d.ts.map +0 -1
  334. package/dist/slash-commands/diag-stats.d.ts.map +0 -1
  335. package/dist/slash-commands/dispatch-llm.d.ts.map +0 -1
  336. package/dist/slash-commands/doctor.d.ts.map +0 -1
  337. package/dist/slash-commands/enhance.d.ts.map +0 -1
  338. package/dist/slash-commands/ensemble.d.ts.map +0 -1
  339. package/dist/slash-commands/f-keys.d.ts.map +0 -1
  340. package/dist/slash-commands/fallback.d.ts.map +0 -1
  341. package/dist/slash-commands/fix-classifier.d.ts.map +0 -1
  342. package/dist/slash-commands/fix.d.ts.map +0 -1
  343. package/dist/slash-commands/fleet.d.ts.map +0 -1
  344. package/dist/slash-commands/git.d.ts.map +0 -1
  345. package/dist/slash-commands/gitid.d.ts.map +0 -1
  346. package/dist/slash-commands/goal-refiner.d.ts.map +0 -1
  347. package/dist/slash-commands/goal.d.ts.map +0 -1
  348. package/dist/slash-commands/health.d.ts.map +0 -1
  349. package/dist/slash-commands/help.d.ts.map +0 -1
  350. package/dist/slash-commands/helpers.d.ts.map +0 -1
  351. package/dist/slash-commands/hq.d.ts.map +0 -1
  352. package/dist/slash-commands/index.d.ts.map +0 -1
  353. package/dist/slash-commands/init.d.ts.map +0 -1
  354. package/dist/slash-commands/interrupt.d.ts.map +0 -1
  355. package/dist/slash-commands/kanban-agent-helpers.d.ts.map +0 -1
  356. package/dist/slash-commands/kanban-format.d.ts.map +0 -1
  357. package/dist/slash-commands/kanban-help.d.ts.map +0 -1
  358. package/dist/slash-commands/kanban.d.ts.map +0 -1
  359. package/dist/slash-commands/mailbox-demo.d.ts.map +0 -1
  360. package/dist/slash-commands/mailbox-serve.d.ts.map +0 -1
  361. package/dist/slash-commands/mailbox.d.ts.map +0 -1
  362. package/dist/slash-commands/mcp-utils.d.ts.map +0 -1
  363. package/dist/slash-commands/mcp.d.ts.map +0 -1
  364. package/dist/slash-commands/memory-compact.d.ts.map +0 -1
  365. package/dist/slash-commands/memory-flags.d.ts.map +0 -1
  366. package/dist/slash-commands/memory-formatters.d.ts.map +0 -1
  367. package/dist/slash-commands/memory.d.ts.map +0 -1
  368. package/dist/slash-commands/metrics.d.ts.map +0 -1
  369. package/dist/slash-commands/mode.d.ts.map +0 -1
  370. package/dist/slash-commands/modelcaps.d.ts.map +0 -1
  371. package/dist/slash-commands/models.d.ts.map +0 -1
  372. package/dist/slash-commands/mouse.d.ts.map +0 -1
  373. package/dist/slash-commands/next.d.ts.map +0 -1
  374. package/dist/slash-commands/plan.d.ts.map +0 -1
  375. package/dist/slash-commands/plugin.d.ts.map +0 -1
  376. package/dist/slash-commands/profile.d.ts.map +0 -1
  377. package/dist/slash-commands/project-utils.d.ts.map +0 -1
  378. package/dist/slash-commands/project.d.ts.map +0 -1
  379. package/dist/slash-commands/provider-status.d.ts.map +0 -1
  380. package/dist/slash-commands/prune.d.ts.map +0 -1
  381. package/dist/slash-commands/refiner.d.ts.map +0 -1
  382. package/dist/slash-commands/review.d.ts.map +0 -1
  383. package/dist/slash-commands/sdd/rendering.d.ts.map +0 -1
  384. package/dist/slash-commands/sdd-command-helpers.d.ts.map +0 -1
  385. package/dist/slash-commands/sdd-format.d.ts.map +0 -1
  386. package/dist/slash-commands/sdd.d.ts.map +0 -1
  387. package/dist/slash-commands/security.d.ts.map +0 -1
  388. package/dist/slash-commands/session.d.ts.map +0 -1
  389. package/dist/slash-commands/setmodel.d.ts.map +0 -1
  390. package/dist/slash-commands/settings.d.ts.map +0 -1
  391. package/dist/slash-commands/shadow.d.ts.map +0 -1
  392. package/dist/slash-commands/slash-deep-help.d.ts.map +0 -1
  393. package/dist/slash-commands/spawn-agents.d.ts.map +0 -1
  394. package/dist/slash-commands/statusline.d.ts.map +0 -1
  395. package/dist/slash-commands/suggest.d.ts.map +0 -1
  396. package/dist/slash-commands/suggestion-store.d.ts.map +0 -1
  397. package/dist/slash-commands/supervisor.d.ts.map +0 -1
  398. package/dist/slash-commands/surfaces.d.ts.map +0 -1
  399. package/dist/slash-commands/tasks.d.ts.map +0 -1
  400. package/dist/slash-commands/techstack.d.ts.map +0 -1
  401. package/dist/slash-commands/telegram-pairing.d.ts.map +0 -1
  402. package/dist/slash-commands/telegram-settings.d.ts.map +0 -1
  403. package/dist/slash-commands/telegram-setup.d.ts.map +0 -1
  404. package/dist/slash-commands/todos.d.ts.map +0 -1
  405. package/dist/slash-commands/tool.d.ts.map +0 -1
  406. package/dist/slash-commands/tools.d.ts.map +0 -1
  407. package/dist/slash-commands/tuneup.d.ts.map +0 -1
  408. package/dist/slash-commands/working-dir.d.ts.map +0 -1
  409. package/dist/slash-commands/worktree.d.ts.map +0 -1
  410. package/dist/slash-commands/yolo.d.ts.map +0 -1
  411. package/dist/spinner.d.ts.map +0 -1
  412. package/dist/subcommands/contracts.d.ts.map +0 -1
  413. package/dist/subcommands/handlers/acp.d.ts.map +0 -1
  414. package/dist/subcommands/handlers/audit.d.ts.map +0 -1
  415. package/dist/subcommands/handlers/auth-local-help.d.ts.map +0 -1
  416. package/dist/subcommands/handlers/auth.d.ts.map +0 -1
  417. package/dist/subcommands/handlers/bench-run-help.d.ts.map +0 -1
  418. package/dist/subcommands/handlers/bench.d.ts.map +0 -1
  419. package/dist/subcommands/handlers/chronicle.d.ts.map +0 -1
  420. package/dist/subcommands/handlers/config-history.d.ts.map +0 -1
  421. package/dist/subcommands/handlers/diag-doctor.d.ts.map +0 -1
  422. package/dist/subcommands/handlers/export.d.ts.map +0 -1
  423. package/dist/subcommands/handlers/helpers.d.ts.map +0 -1
  424. package/dist/subcommands/handlers/hq.d.ts.map +0 -1
  425. package/dist/subcommands/handlers/init.d.ts.map +0 -1
  426. package/dist/subcommands/handlers/mailbox-serve.d.ts.map +0 -1
  427. package/dist/subcommands/handlers/mcp.d.ts.map +0 -1
  428. package/dist/subcommands/handlers/model-smoke-test.d.ts.map +0 -1
  429. package/dist/subcommands/handlers/modeldiag-profiles.d.ts.map +0 -1
  430. package/dist/subcommands/handlers/modeldiag.d.ts.map +0 -1
  431. package/dist/subcommands/handlers/models-add-help.d.ts.map +0 -1
  432. package/dist/subcommands/handlers/per-subcommand-deep-help-table.d.ts.map +0 -1
  433. package/dist/subcommands/handlers/per-subcommand-help-data.d.ts.map +0 -1
  434. package/dist/subcommands/handlers/per-subcommand-help-table.d.ts.map +0 -1
  435. package/dist/subcommands/handlers/per-subcommand-help-types.d.ts.map +0 -1
  436. package/dist/subcommands/handlers/per-subcommand-help.d.ts.map +0 -1
  437. package/dist/subcommands/handlers/permissions.d.ts.map +0 -1
  438. package/dist/subcommands/handlers/plugin-usage.d.ts.map +0 -1
  439. package/dist/subcommands/handlers/project.d.ts.map +0 -1
  440. package/dist/subcommands/handlers/projects.d.ts.map +0 -1
  441. package/dist/subcommands/handlers/providers-models.d.ts.map +0 -1
  442. package/dist/subcommands/handlers/quick.d.ts.map +0 -1
  443. package/dist/subcommands/handlers/replay.d.ts.map +0 -1
  444. package/dist/subcommands/handlers/rewind.d.ts.map +0 -1
  445. package/dist/subcommands/handlers/sessions-config.d.ts.map +0 -1
  446. package/dist/subcommands/handlers/sessions-fleet.d.ts.map +0 -1
  447. package/dist/subcommands/handlers/tools-skills.d.ts.map +0 -1
  448. package/dist/subcommands/handlers/update.d.ts.map +0 -1
  449. package/dist/subcommands/handlers/version-help.d.ts.map +0 -1
  450. package/dist/subcommands/index.d.ts.map +0 -1
  451. package/dist/theme.d.ts.map +0 -1
  452. package/dist/tools-skills-UNKLOB7M.js.map +0 -7
  453. package/dist/tui-thinking-word.d.ts.map +0 -1
  454. package/dist/tuneup.d.ts.map +0 -1
  455. package/dist/update-YC4TYW2Y.js.map +0 -7
  456. package/dist/update-check-UMYTOH7Z.js.map +0 -7
  457. package/dist/update-check.d.ts.map +0 -1
  458. package/dist/utils/delay-format.d.ts.map +0 -1
  459. package/dist/utils/hq-ttl.d.ts.map +0 -1
  460. package/dist/utils/win32-cmd.d.ts.map +0 -1
  461. package/dist/utils.d.ts.map +0 -1
  462. package/dist/version-help-DROHZRW6.js.map +0 -7
  463. package/dist/version.d.ts.map +0 -1
  464. package/dist/webui-server/client-registration.d.ts.map +0 -1
  465. package/dist/webui-server/connection-handler.d.ts.map +0 -1
  466. package/dist/webui-server/context-breakdown.d.ts.map +0 -1
  467. package/dist/webui-server/contracts.d.ts.map +0 -1
  468. package/dist/webui-server/cost-helpers.d.ts.map +0 -1
  469. package/dist/webui-server/kanban-host-adapter.d.ts.map +0 -1
  470. package/dist/webui-server/kanban-run-mirror.d.ts.map +0 -1
  471. package/dist/webui-server/kanban-supervisor.d.ts.map +0 -1
  472. package/dist/webui-server/lifecycle.d.ts.map +0 -1
  473. package/dist/webui-server/listen-helpers.d.ts.map +0 -1
  474. package/dist/webui-server/logger-shim.d.ts.map +0 -1
  475. package/dist/webui-server/node-pty-loader.d.ts.map +0 -1
  476. package/dist/webui-server/prefs-seeding.d.ts.map +0 -1
  477. package/dist/webui-server/privileged-actions.d.ts.map +0 -1
  478. package/dist/webui-server/provider-config.d.ts.map +0 -1
  479. package/dist/webui-server/session-start-payload.d.ts.map +0 -1
  480. package/dist/webui-server/setup-events.d.ts.map +0 -1
  481. package/dist/webui-server/static-serve.d.ts.map +0 -1
  482. package/dist/webui-server/stream-coalescer.d.ts.map +0 -1
  483. package/dist/webui-server/terminal-log-view.d.ts.map +0 -1
  484. package/dist/webui-server-ZF5KVGC5.js.map +0 -7
  485. package/dist/webui-server-options.d.ts.map +0 -1
  486. package/dist/webui-server.d.ts.map +0 -1
  487. package/dist/wiring/brain-and-orchestration.d.ts.map +0 -1
  488. package/dist/wiring/codebase-index.d.ts.map +0 -1
  489. package/dist/wiring/command-host-adapters.d.ts.map +0 -1
  490. package/dist/wiring/command-host-state.d.ts.map +0 -1
  491. package/dist/wiring/controllers.d.ts.map +0 -1
  492. package/dist/wiring/dep-watcher-bridge.d.ts.map +0 -1
  493. package/dist/wiring/dep-watcher.d.ts.map +0 -1
  494. package/dist/wiring/design-studio.d.ts.map +0 -1
  495. package/dist/wiring/director-setup.d.ts.map +0 -1
  496. package/dist/wiring/eternal-command-handlers.d.ts.map +0 -1
  497. package/dist/wiring/fleet-command-handlers.d.ts.map +0 -1
  498. package/dist/wiring/hq-telemetry.d.ts.map +0 -1
  499. package/dist/wiring/lifecycle-plugins.d.ts.map +0 -1
  500. package/dist/wiring/mailbox-bridge-bootstrap.d.ts.map +0 -1
  501. package/dist/wiring/management-tools.d.ts.map +0 -1
  502. package/dist/wiring/metrics.d.ts.map +0 -1
  503. package/dist/wiring/pipeline.d.ts.map +0 -1
  504. package/dist/wiring/plugins.d.ts.map +0 -1
  505. package/dist/wiring/provider-runtime-setup.d.ts.map +0 -1
  506. package/dist/wiring/provider-runtime.d.ts.map +0 -1
  507. package/dist/wiring/provider-status.d.ts.map +0 -1
  508. package/dist/wiring/provider-utility-tools.d.ts.map +0 -1
  509. package/dist/wiring/provider.d.ts.map +0 -1
  510. package/dist/wiring/replay.d.ts.map +0 -1
  511. package/dist/wiring/runtime-controller-deps.d.ts.map +0 -1
  512. package/dist/wiring/runtime-dispatch-state.d.ts.map +0 -1
  513. package/dist/wiring/runtime-lifecycle-deps.d.ts.map +0 -1
  514. package/dist/wiring/runtime-picker-deps.d.ts.map +0 -1
  515. package/dist/wiring/sage.d.ts.map +0 -1
  516. package/dist/wiring/sdd-handlers.d.ts.map +0 -1
  517. package/dist/wiring/security-command.d.ts.map +0 -1
  518. package/dist/wiring/session-command-handlers.d.ts.map +0 -1
  519. package/dist/wiring/session-registry.d.ts.map +0 -1
  520. package/dist/wiring/session.d.ts.map +0 -1
  521. package/dist/wiring/slash-commands.d.ts.map +0 -1
  522. package/dist/wiring/to-execute-deps.d.ts.map +0 -1
  523. package/dist/wiring/tools.d.ts.map +0 -1
@@ -3,10 +3,69 @@
3
3
  *
4
4
  * @module hq-server/ws
5
5
  */
6
- import type { HqCommandAuditLog, HqEventEnvelope, HqPersistence, HqRedactionPolicy, HqToken, HqTranscriptEntry } from '@wrongstack/core/hq';
6
+ import type { HqClientResumeMessage, HqCommandAuditLog, HqEventEnvelope, HqPeerRehydrateReason, HqPersistence, HqRedactionPolicy, HqToken, HqTranscriptEntry } from '@wrongstack/core/hq';
7
7
  import { WebSocket } from 'ws';
8
8
  import type { ConnectedClient, HqSnapshotBroadcaster, TranscriptRing } from './types.js';
9
- export declare function handleBrowser(ws: WebSocket, snapshotBroadcaster: HqSnapshotBroadcaster, browsers: Set<WebSocket>): void;
9
+ /**
10
+ * Detect leader loss and emit the appropriate envelope. Currently wired
11
+ * on `client.closed` (graceful close) and the two heartbeat-timeout sites
12
+ * in `hq-server.ts`. An `auth-revoked` call site is a planned follow-up;
13
+ * the `reason` parameter already accepts it.
14
+ *
15
+ * Returns `true` when a leader-loss event was actually emitted. Note:
16
+ * the dedup gate (`PEER_DEDUP_WINDOW_MS`) suppresses re-emit for the same
17
+ * `(projectId, previousLeaderHandle)` and is intentionally NOT considered
18
+ * a "not the leader" outcome — the lost client is still the leader; the
19
+ * function returns `false` purely because there is nothing new to broadcast.
20
+ * Callers that need to log the loss should consult `lostClient.isLeader`
21
+ * separately.
22
+ *
23
+ * Dedup: a `peer.rehydrate` for the same `(projectId, previousLeaderHandle)`
24
+ * is suppressed if one was emitted within `PEER_DEDUP_WINDOW_MS` (1 h).
25
+ * `peer.lost` is not deduped — a project losing its last surviving client
26
+ * is significant enough to emit every time the topology changes.
27
+ */
28
+ export declare function detectLeaderLoss(lostClient: ConnectedClient, clients: Map<WebSocket, ConnectedClient>, browsers: Set<WebSocket>, reason: HqPeerRehydrateReason, eventSink?: {
29
+ eventLog: HqEventEnvelope[];
30
+ persistence?: HqPersistence | undefined;
31
+ }): boolean;
32
+ /**
33
+ * Server-side fanout of a `hq.kanban_snapshot` envelope after a merge.
34
+ *
35
+ * C2 — broadcasts the post-merge `delta` payload to:
36
+ * - every client whose `projectId` matches `projectId`, and
37
+ * - every browser in `browsers` (browsers are not project-scoped at the
38
+ * WS level; the browser-side projection filters by project when it
39
+ * applies the snapshot).
40
+ *
41
+ * The `delta` payload is the same touched-only payload the merge handler
42
+ * builds (full-set broadcasts drive V8 heap exhaustion on long-lived
43
+ * boards — see the merge handler's comment).
44
+ *
45
+ * Exported for direct unit testing in `tests/hq-kanban-fanout.test.ts`.
46
+ */
47
+ export declare function fanoutKanbanDelta(message: string, clients: Map<WebSocket, ConnectedClient>, browsers: Set<WebSocket>, projectId: string): {
48
+ clientsNotified: number;
49
+ browsersNotified: number;
50
+ };
51
+ /**
52
+ * Server-side handler for `client.resume` frames.
53
+ *
54
+ * Wired from `handleClient` (line 511) when the client frame type is
55
+ * `client.resume`. The handler:
56
+ * - Validates identity (clientId/projectId match against the WS).
57
+ * - Updates `client.lastSeenAt`.
58
+ * - Computes the cursor (what the client has received).
59
+ * - Filters `eventLog` for envelopes with `clientId === client.clientId && env.seq > cursor`.
60
+ * - Checks the log cannot serve the gap (log_unavailable).
61
+ * - Checks the gap is fresh (last_seen_too_old).
62
+ * - Checks the gap is not too large (gap_too_large).
63
+ * - Sends `hq.resume_gap` on success.
64
+ *
65
+ * Exported for direct unit testing in `tests/hq-resume-handler.test.ts`.
66
+ */
67
+ export declare function handleClientResume(ws: WebSocket, clients: Map<WebSocket, ConnectedClient>, eventLog: HqEventEnvelope[], frame: HqClientResumeMessage, snapshotBroadcaster?: HqSnapshotBroadcaster): void;
68
+ export declare function handleBrowser(ws: WebSocket, snapshotBroadcaster: HqSnapshotBroadcaster, browsers: Set<WebSocket>, eventLog: HqEventEnvelope[]): void;
10
69
  export declare function handleClient(ws: WebSocket, clients: Map<WebSocket, ConnectedClient>, browsers: Set<WebSocket>, eventLog: HqEventEnvelope[], auth: {
11
70
  token?: HqToken | undefined;
12
71
  getOperatorPolicy: () => Partial<HqRedactionPolicy> | undefined;
@@ -15,7 +15,7 @@ import {
15
15
  readLocalSubagentTranscript,
16
16
  sanitizeApiError,
17
17
  startHqServer
18
- } from "./chunk-OI7GWJDS.js";
18
+ } from "./chunk-C5GH4YBL.js";
19
19
  import "./chunk-Q5GTM25S.js";
20
20
  import "./chunk-7OCVIDC7.js";
21
21
  export {
@@ -36,4 +36,4 @@ export {
36
36
  sanitizeApiError,
37
37
  startHqServer
38
38
  };
39
- //# sourceMappingURL=hq-server-6AQ3BXZA.js.map
39
+ //# sourceMappingURL=hq-server-6TSAORAC.js.map
@@ -39,6 +39,16 @@ export interface HqServerOptions {
39
39
  allowInsecureOpen?: boolean;
40
40
  secureCookies?: boolean;
41
41
  requireBrowserAuth?: boolean;
42
+ /**
43
+ * Trust `Origin: file://` on the HTTP and WebSocket surfaces, for serving the
44
+ * HQ dashboard from a local file in air-gapped use. Default false.
45
+ *
46
+ * Off by default because the Host check does not contain a `file:` page — it
47
+ * can aim at the real HQ authority — so trusting it unconditionally let any
48
+ * locally-opened HTML file clear HQ's only cross-origin control (WS-081).
49
+ * Enable only when you actually serve the dashboard that way.
50
+ */
51
+ allowFileOrigin?: boolean;
42
52
  /**
43
53
  * Optional time-to-live (milliseconds) stamped on the first-run browser
44
54
  * and client tokens minted on a brand-new HQ data directory. Existing
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  makePromptDelegate,
7
7
  renderAgentsTemplate,
8
8
  renderDiff
9
- } from "./chunk-IHBYBYGA.js";
9
+ } from "./chunk-A6Q5KGLV.js";
10
10
  import {
11
11
  theme
12
12
  } from "./chunk-QD544J2B.js";
@@ -16,21 +16,21 @@ import {
16
16
  import {
17
17
  helpCmd,
18
18
  versionCmd
19
- } from "./chunk-ABXK4VVY.js";
19
+ } from "./chunk-ARWGQUB3.js";
20
20
  import {
21
21
  discoverAndMergeProviders
22
22
  } from "./chunk-TGDHN4LM.js";
23
23
  import {
24
24
  DEFAULT_PORT
25
- } from "./chunk-OI7GWJDS.js";
25
+ } from "./chunk-C5GH4YBL.js";
26
26
  import "./chunk-Q5GTM25S.js";
27
27
  import {
28
28
  CLI_VERSION
29
29
  } from "./chunk-XJXDOF63.js";
30
30
  import {
31
31
  runUpdateCommand
32
- } from "./chunk-AXVZMEWG.js";
33
- import "./chunk-VJUEZZYB.js";
32
+ } from "./chunk-I5MEUFDI.js";
33
+ import "./chunk-U3SS4NRH.js";
34
34
  import "./chunk-F4PEGAJZ.js";
35
35
  import {
36
36
  parseArgs,
@@ -54,7 +54,7 @@ import {
54
54
  import "./chunk-7OCVIDC7.js";
55
55
 
56
56
  // src/cli-entry-point.ts
57
- import { writeErr } from "@wrongstack/core/utils";
57
+ import { installCrashShield, writeErr } from "@wrongstack/core/utils";
58
58
  var SQLITE_WARNING_RE = /sqlite is an experimental feature/i;
59
59
  function installSqliteWarningFilter() {
60
60
  const originalEmit = process.emitWarning.bind(process);
@@ -91,6 +91,7 @@ function installBrokenPipeHandlers(options = {}) {
91
91
  function runAsMain(mainFn) {
92
92
  if (!isMain) return;
93
93
  installBrokenPipeHandlers();
94
+ installCrashShield();
94
95
  mainFn(process.argv.slice(2)).then(
95
96
  (c) => {
96
97
  process.exitCode = c;
@@ -1494,10 +1495,10 @@ function compactSingleLine(text) {
1494
1495
 
1495
1496
  // src/subcommands/index.ts
1496
1497
  var loaders = {
1497
- acp: async () => (await import("./acp-A5OSIU2P.js")).acpCmd,
1498
+ acp: async () => (await import("./acp-S4LZQB66.js")).acpCmd,
1498
1499
  init: async () => (await import("./init-E2NDDOHI.js")).initCmd,
1499
- auth: async () => (await import("./auth-CJWQJVRH.js")).authCmd,
1500
- update: async () => (await import("./update-YC4TYW2Y.js")).updateCmd,
1500
+ auth: async () => (await import("./auth-NLLGEYQR.js")).authCmd,
1501
+ update: async () => (await import("./update-MV6TUACD.js")).updateCmd,
1501
1502
  sessions: async () => (await import("./sessions-config-NLCMK3BY.js")).sessionsCmd,
1502
1503
  config: async () => (await import("./sessions-config-NLCMK3BY.js")).configCmd,
1503
1504
  rewind: async () => (await import("./rewind-EJMVFVLS.js")).rewindCmd,
@@ -1514,17 +1515,18 @@ var loaders = {
1514
1515
  doctor: async () => (await import("./diag-doctor-OQ3AA63O.js")).doctorCmd,
1515
1516
  export: async () => (await import("./export-TPORYVRZ.js")).exportCmd,
1516
1517
  usage: async () => (await import("./plugin-usage-OU6X6LM3.js")).usageCmd,
1517
- version: async () => (await import("./version-help-DROHZRW6.js")).versionCmd,
1518
- help: async () => (await import("./version-help-DROHZRW6.js")).helpCmd,
1518
+ version: async () => (await import("./version-help-ASKQYXDJ.js")).versionCmd,
1519
+ help: async () => (await import("./version-help-ASKQYXDJ.js")).helpCmd,
1519
1520
  projects: async () => (await import("./projects-XE76NFNZ.js")).projectsCmd,
1520
1521
  modeldiag: async () => (await import("./modeldiag-HENYJ4N7.js")).modeldiagCmd,
1521
1522
  quick: async () => (await import("./quick-VIO2BEHS.js")).quickCmd,
1522
1523
  bench: async () => (await import("./bench-7ZDWSNEF.js")).benchCmd,
1523
1524
  chronicle: async () => (await import("./chronicle-QQEQFSSE.js")).chronicleCmd,
1524
- hq: async () => (await import("./hq-JUYKUNJX.js")).hqCmd,
1525
- mailbox: async () => (await import("./mailbox-serve-2UWHEN3M.js")).mailboxServeCmd,
1525
+ hq: async () => (await import("./hq-WO6CLUSI.js")).hqCmd,
1526
+ mailbox: async () => (await import("./mailbox-serve-DBOOOOWZ.js")).mailboxServeCmd,
1526
1527
  permissions: async () => (await import("./permissions-FNYLZIL4.js")).permissionsCmd,
1527
- project: async () => (await import("./project-BLQ3ALVL.js")).projectCmd
1528
+ project: async () => (await import("./project-BLQ3ALVL.js")).projectCmd,
1529
+ governance: async () => (await import("./governance-V2Z42RBE.js")).governanceCmd
1528
1530
  };
1529
1531
  var subcommands = Object.fromEntries(
1530
1532
  Object.entries(loaders).map(([name, load]) => [
@@ -2157,7 +2159,7 @@ async function isPortInUse(host, port) {
2157
2159
  }
2158
2160
  async function handleHqShortCircuit(flags) {
2159
2161
  if (flags["hq"] !== true) return null;
2160
- const { startHqServer } = await import("./hq-server-6AQ3BXZA.js");
2162
+ const { startHqServer } = await import("./hq-server-6TSAORAC.js");
2161
2163
  const tunnelRequested = flags["tunnel"] === true;
2162
2164
  const host = typeof flags["host"] === "string" ? flags["host"] : tunnelRequested ? "127.0.0.1" : HQ_CLI_DEFAULT_HOST;
2163
2165
  if (tunnelRequested && !isLoopbackHost(host)) {
@@ -2316,9 +2318,122 @@ ${color8.green("Cloudflare Quick Tunnel ready:")} ${browserUrl}
2316
2318
  }
2317
2319
 
2318
2320
  // src/boot/launch-menu.ts
2319
- import { atomicWrite as atomicWrite3, color as color9, isStdinTTY as isStdinTTY2 } from "@wrongstack/core/utils";
2320
- import { HQ_CLI_DEFAULT_HOST as HQ_CLI_DEFAULT_HOST2 } from "@wrongstack/core/hq";
2321
2321
  import * as fs8 from "node:fs/promises";
2322
+ import { HQ_CLI_DEFAULT_HOST as HQ_CLI_DEFAULT_HOST2 } from "@wrongstack/core/hq";
2323
+ import { atomicWrite as atomicWrite3, color as color9, isStdinTTY as isStdinTTY2, setRawMode as setRawMode2 } from "@wrongstack/core/utils";
2324
+
2325
+ // src/boot/launch-banner.ts
2326
+ var STACK_ORANGE = { r: 253, g: 159, b: 2 };
2327
+ var SIGNAL_PINK = { r: 254, g: 46, b: 95 };
2328
+ function mixRgb(a, b, t) {
2329
+ const clamped = Math.min(1, Math.max(0, t));
2330
+ return {
2331
+ r: Math.round(a.r + (b.r - a.r) * clamped),
2332
+ g: Math.round(a.g + (b.g - a.g) * clamped),
2333
+ b: Math.round(a.b + (b.b - a.b) * clamped)
2334
+ };
2335
+ }
2336
+ function fg(c) {
2337
+ return `\x1B[38;2;${c.r};${c.g};${c.b}m`;
2338
+ }
2339
+ function colorsEnabled() {
2340
+ const flag = (value) => value !== void 0 && value.trim() !== "" && !/^(0|false|no|off)$/i.test(value.trim());
2341
+ if (flag(process.env.NO_COLOR)) return false;
2342
+ if (flag(process.env.FORCE_COLOR)) return true;
2343
+ return process.stdout.isTTY === true;
2344
+ }
2345
+ var WORDMARK_GLYPH_BITS = Object.freeze({
2346
+ W: Object.freeze(["10001", "10001", "10001", "10101", "10101", "10101", "01010"]),
2347
+ R: Object.freeze(["11110", "10001", "10001", "11110", "10100", "10010", "10001"]),
2348
+ O: Object.freeze(["01110", "10001", "10001", "10001", "10001", "10001", "01110"]),
2349
+ N: Object.freeze(["10001", "11001", "11001", "10101", "10011", "10011", "10001"]),
2350
+ G: Object.freeze(["01110", "10001", "10000", "10111", "10001", "10001", "01110"]),
2351
+ S: Object.freeze(["01111", "10000", "10000", "01110", "00001", "00001", "11110"]),
2352
+ T: Object.freeze(["11111", "00100", "00100", "00100", "00100", "00100", "00100"]),
2353
+ A: Object.freeze(["01110", "10001", "10001", "11111", "10001", "10001", "10001"]),
2354
+ C: Object.freeze(["01111", "10000", "10000", "10000", "10000", "10000", "01111"]),
2355
+ K: Object.freeze(["10001", "10010", "10100", "11000", "10100", "10010", "10001"])
2356
+ });
2357
+ var WORDMARK = "WRONGSTACK";
2358
+ var WORDMARK_PIXEL_ROWS = 7;
2359
+ var WORDMARK_ROWS = Math.ceil(WORDMARK_PIXEL_ROWS / 2);
2360
+ var GLYPH_WIDTH = 5;
2361
+ var WORDMARK_WIDTH = WORDMARK.length * GLYPH_WIDTH + WORDMARK.length - 1;
2362
+ function packedCell(top, bottom) {
2363
+ if (top === "1" && bottom === "1") return "\u2588";
2364
+ if (top === "1") return "\u2580";
2365
+ if (bottom === "1") return "\u2584";
2366
+ return " ";
2367
+ }
2368
+ function packedGlyphRow(glyph, row) {
2369
+ const top = glyph[row * 2] ?? "";
2370
+ const bottom = glyph[row * 2 + 1] ?? "";
2371
+ return Array.from(
2372
+ { length: GLYPH_WIDTH },
2373
+ (_, column) => packedCell(top[column], bottom[column])
2374
+ ).join("");
2375
+ }
2376
+ var WORDMARK_LINES = Object.freeze(
2377
+ Array.from(
2378
+ { length: WORDMARK_ROWS },
2379
+ (_, row) => [...WORDMARK].map((letter) => {
2380
+ const glyph = WORDMARK_GLYPH_BITS[letter];
2381
+ return glyph ? packedGlyphRow(glyph, row) : " ".repeat(GLYPH_WIDTH);
2382
+ }).join(" ")
2383
+ )
2384
+ );
2385
+ function gradientLine(text, colorOn) {
2386
+ if (!colorOn) return text;
2387
+ const length = text.length;
2388
+ let out = "\x1B[1m";
2389
+ for (let i = 0; i < length; i++) {
2390
+ const ch = text[i];
2391
+ if (ch === " ") {
2392
+ out += ch;
2393
+ continue;
2394
+ }
2395
+ const t = length > 1 ? i / (length - 1) : 0.5;
2396
+ out += `${fg(mixRgb(STACK_ORANGE, SIGNAL_PINK, t))}${ch}`;
2397
+ }
2398
+ return `${out}\x1B[0m`;
2399
+ }
2400
+ function dimLine(text, colorOn) {
2401
+ return colorOn ? `\x1B[2m${text}\x1B[22m` : text;
2402
+ }
2403
+ var MARK_COLS = 5;
2404
+ var PINK_HOME = 1;
2405
+ var MARK_WIDTH = MARK_COLS * 2 + (MARK_COLS - 1);
2406
+ function buildMarkLines(colorOn) {
2407
+ const orange = colorOn ? fg(STACK_ORANGE) : "";
2408
+ const pink = colorOn ? fg(SIGNAL_PINK) : "";
2409
+ const reset = colorOn ? "\x1B[0m" : "";
2410
+ return Array.from({ length: 3 }, (_, row) => {
2411
+ const cells = Array.from({ length: MARK_COLS }, (_2, column) => {
2412
+ if (column === PINK_HOME && (row === 1 || row === 2)) return `${pink}\u2588\u2588${reset}`;
2413
+ if (row < 2 && column !== PINK_HOME) return `${orange}\u2588\u2588${reset}`;
2414
+ return " ";
2415
+ });
2416
+ return cells.join(" ").trimEnd();
2417
+ });
2418
+ }
2419
+ function launchBannerLines(columns, version) {
2420
+ const colorOn = colorsEnabled();
2421
+ const tagline = version ? `v${version} \xB7 the wrong stack for all the right reasons` : "the wrong stack for all the right reasons";
2422
+ if (columns < WORDMARK_WIDTH + 4) {
2423
+ const compact = "\u2590\u2588\u258C W R O N G S T A C K";
2424
+ return [gradientLine(compact, colorOn), dimLine(tagline, colorOn)];
2425
+ }
2426
+ const markPad = " ".repeat(Math.max(0, Math.floor((WORDMARK_WIDTH - MARK_WIDTH) / 2)));
2427
+ const tagPad = " ".repeat(Math.max(0, Math.floor((WORDMARK_WIDTH - tagline.length) / 2)));
2428
+ return [
2429
+ ...buildMarkLines(colorOn).map((line) => markPad + line),
2430
+ "",
2431
+ ...WORDMARK_LINES.map((line) => gradientLine(line, colorOn)),
2432
+ tagPad + dimLine(tagline, colorOn)
2433
+ ];
2434
+ }
2435
+
2436
+ // src/boot/launch-menu.ts
2322
2437
  var DEFAULT_PORTS = {
2323
2438
  webui: 3456,
2324
2439
  simpleui: 3466,
@@ -2330,10 +2445,34 @@ function defaultHostFor(mode) {
2330
2445
  return mode === "hq" ? HQ_DEFAULT_HOST : DEFAULT_HOST;
2331
2446
  }
2332
2447
  var MODE_OPTIONS = [
2333
- { key: 1, mode: "tui-repl", label: "TUI / REPL", hint: "interactive terminal (default)", icon: "\u2328" },
2334
- { key: 2, mode: "webui", label: "WebUI", hint: `browser-based project UI (port ${DEFAULT_PORTS.webui})`, icon: "\u{1F310}" },
2335
- { key: 3, mode: "simpleui", label: "SimpleUI", hint: `lightweight browser UI (port ${DEFAULT_PORTS.simpleui})`, icon: "\u{1F4C4}" },
2336
- { key: 4, mode: "hq", label: "HQ", hint: `project-independent dashboard (port ${DEFAULT_PORT})`, icon: "\u{1F4CA}" }
2448
+ {
2449
+ key: 1,
2450
+ mode: "tui-repl",
2451
+ label: "TUI / REPL",
2452
+ hint: "interactive terminal (default)",
2453
+ icon: "\u2328"
2454
+ },
2455
+ {
2456
+ key: 2,
2457
+ mode: "webui",
2458
+ label: "WebUI",
2459
+ hint: `browser-based project UI (port ${DEFAULT_PORTS.webui})`,
2460
+ icon: "\u{1F310}"
2461
+ },
2462
+ {
2463
+ key: 3,
2464
+ mode: "simpleui",
2465
+ label: "SimpleUI",
2466
+ hint: `lightweight browser UI (port ${DEFAULT_PORTS.simpleui})`,
2467
+ icon: "\u{1F4C4}"
2468
+ },
2469
+ {
2470
+ key: 4,
2471
+ mode: "hq",
2472
+ label: "HQ",
2473
+ hint: `project-independent dashboard (port ${DEFAULT_PORT})`,
2474
+ icon: "\u{1F4CA}"
2475
+ }
2337
2476
  ];
2338
2477
  var MENU_TIMEOUT_MS = 8e3;
2339
2478
  var SUMMARY_TIMEOUT_MS = 5e3;
@@ -2365,6 +2504,7 @@ var KNOWN_SUBCOMMANDS = /* @__PURE__ */ new Set([
2365
2504
  "help",
2366
2505
  "provider",
2367
2506
  "project",
2507
+ "governance",
2368
2508
  "session",
2369
2509
  "sessions",
2370
2510
  "replay",
@@ -2389,6 +2529,7 @@ async function runLaunchMenu(deps) {
2389
2529
  }
2390
2530
  const { renderer, reader, lastChoice } = deps;
2391
2531
  const ports = { ...DEFAULT_PORTS, ...deps.defaultPorts ?? {} };
2532
+ writeBanner(renderer);
2392
2533
  if (lastChoice) {
2393
2534
  const accept = await promptSummaryGate(deps);
2394
2535
  if (accept === "use-last") {
@@ -2399,32 +2540,37 @@ async function runLaunchMenu(deps) {
2399
2540
  }
2400
2541
  }
2401
2542
  renderer.write(`
2402
- ${color9.bold("\u2731 WrongStack launch mode")} ${color9.dim(`v${CLI_VERSION}`)}
2403
- `);
2404
- renderer.write(` ${color9.dim("\u2500".repeat(48))}
2405
- `);
2406
- renderer.write(` ${color9.amber("?")} Choose how to run WrongStack:
2543
+ ${color9.amber("?")} Choose how to run WrongStack:
2407
2544
 
2408
2545
  `);
2409
- for (const opt of MODE_OPTIONS) {
2410
- renderer.write(
2411
- ` ${color9.bold(String(opt.key))}) ${opt.icon} ${color9.bold(opt.label)} ${color9.dim(opt.hint)}
2546
+ const arrowPick = await promptModeArrow(deps);
2547
+ let choice;
2548
+ if (arrowPick) {
2549
+ if (arrowPick.cancelled) {
2550
+ return { mode: "tui-repl", cancelled: true };
2551
+ }
2552
+ choice = { mode: arrowPick.mode };
2553
+ } else {
2554
+ for (const opt of MODE_OPTIONS) {
2555
+ renderer.write(
2556
+ ` ${color9.bold(String(opt.key))}) ${opt.icon} ${color9.bold(opt.label)} ${color9.dim(opt.hint)}
2412
2557
  `
2413
- );
2414
- }
2415
- renderer.write(`
2558
+ );
2559
+ }
2560
+ renderer.write(`
2416
2561
  ${color9.dim("\u2500".repeat(48))}
2417
2562
  `);
2418
- const answer = (await reader.readLine(
2419
- ` ${color9.amber("?")} Mode ${color9.dim("[1-4, q to quit]")} ${color9.dim(`(auto 1 in ${MENU_TIMEOUT_MS / 1e3}s)`)} `,
2420
- { timeoutMs: MENU_TIMEOUT_MS, defaultAnswer: "1" }
2421
- )).trim().toLowerCase();
2422
- if (answer === "q" || answer === "quit") {
2423
- renderer.write(color9.dim(" Goodbye!\n"));
2424
- return { mode: "tui-repl", cancelled: true };
2563
+ const answer = (await reader.readLine(
2564
+ ` ${color9.amber("?")} Mode ${color9.dim("[1-4, q to quit]")} ${color9.dim(`(auto 1 in ${MENU_TIMEOUT_MS / 1e3}s)`)} `,
2565
+ { timeoutMs: MENU_TIMEOUT_MS, defaultAnswer: "1" }
2566
+ )).trim().toLowerCase();
2567
+ if (answer === "q" || answer === "quit") {
2568
+ renderer.write(color9.dim(" Goodbye!\n"));
2569
+ return { mode: "tui-repl", cancelled: true };
2570
+ }
2571
+ const picked = MODE_OPTIONS.find((o) => String(o.key) === answer || o.mode === answer);
2572
+ choice = picked ? { mode: picked.mode } : { mode: "tui-repl" };
2425
2573
  }
2426
- const picked = MODE_OPTIONS.find((o) => String(o.key) === answer || o.mode === answer);
2427
- const choice = picked ? { mode: picked.mode } : { mode: "tui-repl" };
2428
2574
  if (choice.mode !== "tui-repl") {
2429
2575
  const port = await promptPort(deps, ports[choice.mode]);
2430
2576
  choice.port = port;
@@ -2434,6 +2580,155 @@ async function runLaunchMenu(deps) {
2434
2580
  }
2435
2581
  return finalize(choice, ports);
2436
2582
  }
2583
+ function writeBanner(renderer) {
2584
+ const columns = process.stdout.columns ?? 80;
2585
+ renderer.write("\n");
2586
+ for (const line of launchBannerLines(columns, CLI_VERSION)) {
2587
+ renderer.write(` ${line}
2588
+ `);
2589
+ }
2590
+ }
2591
+ function canUseArrowMenu() {
2592
+ if (process.env.VITEST || process.env.NODE_ENV === "test") return false;
2593
+ const stdin = process.stdin;
2594
+ return isStdinTTY2() && process.stdout.isTTY === true && typeof stdin.setRawMode === "function";
2595
+ }
2596
+ async function promptModeArrow(deps) {
2597
+ if (!canUseArrowMenu()) return null;
2598
+ const { renderer } = deps;
2599
+ const stdin = process.stdin;
2600
+ const out = (s) => renderer.write(s);
2601
+ return await new Promise((resolve2) => {
2602
+ let index = 0;
2603
+ let drawn = 0;
2604
+ let remaining = Math.round(MENU_TIMEOUT_MS / 1e3);
2605
+ let countdown = true;
2606
+ let settled = false;
2607
+ let interval;
2608
+ const wasRaw = stdin.isRaw === true;
2609
+ const wasPaused = stdin.isPaused();
2610
+ const rows = () => {
2611
+ const lines = [];
2612
+ for (let i = 0; i < MODE_OPTIONS.length; i++) {
2613
+ const opt = MODE_OPTIONS[i];
2614
+ const selected = i === index;
2615
+ const pointer = selected ? color9.pink("\u276F") : " ";
2616
+ const label = selected ? color9.amber(color9.bold(opt.label)) : color9.bold(opt.label);
2617
+ lines.push(
2618
+ ` ${pointer} ${color9.dim(String(opt.key))} ${opt.icon} ${label} ${color9.dim(opt.hint)}`
2619
+ );
2620
+ }
2621
+ lines.push("");
2622
+ const auto = countdown ? color9.dim(` \xB7 auto-launches ${MODE_OPTIONS[index].label} in ${remaining}s`) : "";
2623
+ lines.push(` ${color9.dim("\u2191\u2193 move \xB7 Enter launch \xB7 1-4 jump \xB7 q quit")}${auto}`);
2624
+ return lines;
2625
+ };
2626
+ const paint = () => {
2627
+ const lines = rows();
2628
+ let frame = drawn > 0 ? `\x1B[${drawn}A` : "";
2629
+ frame += `${lines.map((line) => `\x1B[2K${line}`).join("\n")}
2630
+ `;
2631
+ out(frame);
2632
+ drawn = lines.length;
2633
+ };
2634
+ const stopInput = () => {
2635
+ if (interval) {
2636
+ clearInterval(interval);
2637
+ interval = void 0;
2638
+ }
2639
+ stdin.off("data", onData);
2640
+ stdin.off("close", onClose);
2641
+ try {
2642
+ setRawMode2(stdin, wasRaw);
2643
+ } catch {
2644
+ }
2645
+ if (wasPaused) stdin.pause();
2646
+ };
2647
+ const settle = (result, finalLine) => {
2648
+ if (settled) return;
2649
+ settled = true;
2650
+ stopCountdown();
2651
+ stopInput();
2652
+ if (drawn > 0) out(`\x1B[${drawn}A`);
2653
+ out("\x1B[0J");
2654
+ out(finalLine);
2655
+ out("\x1B[?25h");
2656
+ resolve2(result);
2657
+ };
2658
+ const pick = () => {
2659
+ const opt = MODE_OPTIONS[index];
2660
+ settle(
2661
+ { cancelled: false, mode: opt.mode },
2662
+ ` ${color9.green("\u2714")} ${opt.icon} ${color9.bold(opt.label)} ${color9.dim(opt.hint)}
2663
+ `
2664
+ );
2665
+ };
2666
+ const cancel = () => {
2667
+ settle({ cancelled: true, mode: "tui-repl" }, color9.dim(" Goodbye!\n"));
2668
+ };
2669
+ const stopCountdown = () => {
2670
+ if (!countdown) return;
2671
+ countdown = false;
2672
+ if (interval) {
2673
+ clearInterval(interval);
2674
+ interval = void 0;
2675
+ }
2676
+ };
2677
+ const onData = (buf) => {
2678
+ const key = buf.toString("utf8");
2679
+ stopCountdown();
2680
+ if (key === "" || key === "q" || key === "Q" || key === "\x1B") {
2681
+ cancel();
2682
+ return;
2683
+ }
2684
+ if (key === "\r" || key === "\n") {
2685
+ pick();
2686
+ return;
2687
+ }
2688
+ if (key === "\x1B[A" || key === "\x1BOA" || key === "k") {
2689
+ index = (index + MODE_OPTIONS.length - 1) % MODE_OPTIONS.length;
2690
+ paint();
2691
+ return;
2692
+ }
2693
+ if (key === "\x1B[B" || key === "\x1BOB" || key === "j") {
2694
+ index = (index + 1) % MODE_OPTIONS.length;
2695
+ paint();
2696
+ return;
2697
+ }
2698
+ if (/^[0-9]$/.test(key)) {
2699
+ const digit = Number.parseInt(key, 10);
2700
+ if (digit >= 1 && digit <= MODE_OPTIONS.length) {
2701
+ index = digit - 1;
2702
+ pick();
2703
+ return;
2704
+ }
2705
+ }
2706
+ paint();
2707
+ };
2708
+ const onClose = () => {
2709
+ settle({ cancelled: true, mode: "tui-repl" }, "");
2710
+ };
2711
+ try {
2712
+ setRawMode2(stdin, true);
2713
+ stdin.resume();
2714
+ } catch {
2715
+ resolve2(null);
2716
+ return;
2717
+ }
2718
+ out("\x1B[?25l");
2719
+ paint();
2720
+ stdin.on("data", onData);
2721
+ stdin.once("close", onClose);
2722
+ interval = setInterval(() => {
2723
+ remaining -= 1;
2724
+ if (remaining <= 0) {
2725
+ pick();
2726
+ return;
2727
+ }
2728
+ paint();
2729
+ }, 1e3);
2730
+ });
2731
+ }
2437
2732
  async function promptSummaryGate(deps) {
2438
2733
  const { renderer, reader, lastChoice } = deps;
2439
2734
  if (!lastChoice) return "re-prompt";
@@ -2854,7 +3149,7 @@ async function initializeCli(argv) {
2854
3149
  async function main(argv) {
2855
3150
  const cliCtx = await initializeCli(argv);
2856
3151
  if (typeof cliCtx === "number") return cliCtx;
2857
- const { runInteractive } = await import("./cli-main-TOAWVJDY.js");
3152
+ const { runInteractive } = await import("./cli-main-TJEU4OUY.js");
2858
3153
  return runInteractive(cliCtx);
2859
3154
  }
2860
3155
 
@@ -4,7 +4,19 @@ export interface KanbanHqSync {
4
4
  handleRemote(snapshot: HqKanbanSnapshotPayload): Promise<void>;
5
5
  /** Explicit refresh seam for hosts/tests; daemon events call the same path. */
6
6
  refresh(boardId?: string): void;
7
+ getStats(): KanbanHqSyncStats;
7
8
  stop(): void;
8
9
  }
9
- export declare function createKanbanHqSync(projectRoot: string, projectId?: string): KanbanHqSync;
10
+ export interface KanbanHqSyncStats {
11
+ localPublishActive: boolean;
12
+ pendingBoardIds: number;
13
+ fullRescanPending: boolean;
14
+ remoteApplyQueued: boolean;
15
+ pendingRemoteBoards: number;
16
+ localPublishRuns: number;
17
+ coalescedLocalRefreshes: number;
18
+ }
19
+ export declare function createKanbanHqSync(projectRoot: string, projectId?: string, testHooks?: {
20
+ beforeLocalPublish?: (() => Promise<void>) | undefined;
21
+ }): KanbanHqSync;
10
22
  //# sourceMappingURL=kanban-hq-sync.d.ts.map
@@ -47,7 +47,7 @@ export interface LiveSettingsInput {
47
47
  breakerEnabled?: boolean | undefined;
48
48
  /** Auto kill/reset delay (ms) when the breaker trips. 0 = manual recovery. */
49
49
  breakerAutoKillResetMs?: number | undefined;
50
- /** TUI statusline density. Defaults to detailed when unset. */
50
+ /** TUI statusline density. Defaults to minimum when unset. */
51
51
  statuslineMode?: 'minimum' | 'detailed' | undefined;
52
52
  /** Single word shown in the TUI rainbow working-state chip. */
53
53
  thinkingWord?: string | undefined;
@@ -65,5 +65,14 @@ export interface LiveSettingsInput {
65
65
  showModelReasoning?: boolean | undefined;
66
66
  /** Optionally show the persistent AGENT SWARM and todo mission queue panel; defaults to true at the storage layer. */
67
67
  showAgentSwarmPanel?: boolean | undefined;
68
+ /** Show SAGE Memory Inject blocks in tool results. Default: false. */
69
+ showSageMemoryInject?: boolean | undefined;
70
+ /**
71
+ * When true, the read tool includes codebase-index symbols alongside
72
+ * file content. Persisted as `autonomy.readAdvancedMode`.
73
+ */
74
+ readSymbols?: boolean | undefined;
75
+ /** Minimum relation strength for SAGE memory injection. Default: 0.85. */
76
+ sageMemoryInjectThreshold?: number | undefined;
68
77
  }
69
78
  //# sourceMappingURL=live-settings-input.d.ts.map