@evalops/maestro 0.10.8 → 0.10.10

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 (1001) hide show
  1. package/README.md +3 -1
  2. package/dist/agent/action-approval.d.ts +6 -0
  3. package/dist/agent/action-approval.d.ts.map +1 -1
  4. package/dist/agent/action-approval.js.map +1 -1
  5. package/dist/agent/agent.d.ts +13 -1
  6. package/dist/agent/agent.d.ts.map +1 -1
  7. package/dist/agent/agent.js +368 -1
  8. package/dist/agent/agent.js.map +1 -1
  9. package/dist/agent/auto-compaction.d.ts +4 -4
  10. package/dist/agent/auto-compaction.d.ts.map +1 -1
  11. package/dist/agent/auto-compaction.js.map +1 -1
  12. package/dist/agent/compaction-cleanup.d.ts +2 -0
  13. package/dist/agent/compaction-cleanup.d.ts.map +1 -1
  14. package/dist/agent/compaction-cleanup.js +17 -2
  15. package/dist/agent/compaction-cleanup.js.map +1 -1
  16. package/dist/agent/compaction.d.ts +3 -1
  17. package/dist/agent/compaction.d.ts.map +1 -1
  18. package/dist/agent/compaction.js +10 -2
  19. package/dist/agent/compaction.js.map +1 -1
  20. package/dist/agent/context-manager.d.ts +4 -0
  21. package/dist/agent/context-manager.d.ts.map +1 -1
  22. package/dist/agent/context-manager.js +8 -0
  23. package/dist/agent/context-manager.js.map +1 -1
  24. package/dist/agent/context-providers.d.ts +2 -0
  25. package/dist/agent/context-providers.d.ts.map +1 -1
  26. package/dist/agent/context-providers.js +3 -2
  27. package/dist/agent/context-providers.js.map +1 -1
  28. package/dist/agent/providers/google-gemini-cli.js +17 -5
  29. package/dist/agent/providers/google.js +174 -144
  30. package/dist/agent/providers/openai-codex-responses.d.ts +4 -0
  31. package/dist/agent/providers/openai-codex-responses.d.ts.map +1 -0
  32. package/dist/agent/providers/openai-codex-responses.js +637 -0
  33. package/dist/agent/providers/openai-codex-responses.js.map +1 -0
  34. package/dist/agent/providers/openai-codex-session.d.ts +18 -0
  35. package/dist/agent/providers/openai-codex-session.d.ts.map +1 -0
  36. package/dist/agent/providers/openai-codex-session.js +53 -0
  37. package/dist/agent/providers/openai-codex-session.js.map +1 -0
  38. package/dist/agent/providers/openai-responses-sdk.d.ts.map +1 -1
  39. package/dist/agent/providers/openai-responses-sdk.js +16 -6
  40. package/dist/agent/providers/openai-responses-sdk.js.map +1 -1
  41. package/dist/agent/providers/openai-shared.d.ts +12 -5
  42. package/dist/agent/providers/openai-shared.d.ts.map +1 -1
  43. package/dist/agent/providers/openai-shared.js +291 -2
  44. package/dist/agent/providers/openai-shared.js.map +1 -1
  45. package/dist/agent/providers/openai.d.ts +1 -1
  46. package/dist/agent/providers/openai.d.ts.map +1 -1
  47. package/dist/agent/providers/openai.js +48 -20
  48. package/dist/agent/providers/openai.js.map +1 -1
  49. package/dist/agent/providers/vertex.js +7 -0
  50. package/dist/agent/tracing.d.ts +16 -5
  51. package/dist/agent/tracing.d.ts.map +1 -1
  52. package/dist/agent/tracing.js +44 -2
  53. package/dist/agent/tracing.js.map +1 -1
  54. package/dist/agent/transport/create-provider-stream.d.ts.map +1 -1
  55. package/dist/agent/transport/create-provider-stream.js +9 -0
  56. package/dist/agent/transport/create-provider-stream.js.map +1 -1
  57. package/dist/agent/transport/tool-execution-bridge.d.ts +86 -0
  58. package/dist/agent/transport/tool-execution-bridge.d.ts.map +1 -0
  59. package/dist/agent/transport/tool-execution-bridge.js +665 -0
  60. package/dist/agent/transport/tool-execution-bridge.js.map +1 -0
  61. package/dist/agent/transport/tool-execution.d.ts +3 -0
  62. package/dist/agent/transport/tool-execution.d.ts.map +1 -1
  63. package/dist/agent/transport/tool-execution.js +16 -1
  64. package/dist/agent/transport/tool-execution.js.map +1 -1
  65. package/dist/agent/transport/tool-safety-pipeline.d.ts +7 -1
  66. package/dist/agent/transport/tool-safety-pipeline.d.ts.map +1 -1
  67. package/dist/agent/transport/tool-safety-pipeline.js +207 -40
  68. package/dist/agent/transport/tool-safety-pipeline.js.map +1 -1
  69. package/dist/agent/transport/tool-update-queue.d.ts +2 -0
  70. package/dist/agent/transport/tool-update-queue.d.ts.map +1 -1
  71. package/dist/agent/transport/tool-update-queue.js.map +1 -1
  72. package/dist/agent/transport.d.ts +3 -0
  73. package/dist/agent/transport.d.ts.map +1 -1
  74. package/dist/agent/transport.js +96 -16
  75. package/dist/agent/transport.js.map +1 -1
  76. package/dist/agent/types.d.ts +50 -2
  77. package/dist/agent/types.d.ts.map +1 -1
  78. package/dist/agent/types.js.map +1 -1
  79. package/dist/approvals/platform-action-approval.d.ts +32 -0
  80. package/dist/approvals/platform-action-approval.d.ts.map +1 -0
  81. package/dist/approvals/platform-action-approval.js +210 -0
  82. package/dist/approvals/platform-action-approval.js.map +1 -0
  83. package/dist/approvals/service-client.d.ts +56 -0
  84. package/dist/approvals/service-client.d.ts.map +1 -0
  85. package/dist/approvals/service-client.js +316 -0
  86. package/dist/approvals/service-client.js.map +1 -0
  87. package/dist/audit/logger.d.ts +4 -4
  88. package/dist/bootstrap/auth-setup.d.ts +2 -2
  89. package/dist/bootstrap/auth-setup.d.ts.map +1 -1
  90. package/dist/bootstrap/auth-setup.js +4 -7
  91. package/dist/bootstrap/auth-setup.js.map +1 -1
  92. package/dist/cli/args.d.ts +2 -0
  93. package/dist/cli/args.d.ts.map +1 -1
  94. package/dist/cli/args.js +28 -0
  95. package/dist/cli/args.js.map +1 -1
  96. package/dist/cli/commands/codex.d.ts +2 -0
  97. package/dist/cli/commands/codex.d.ts.map +1 -0
  98. package/dist/cli/commands/codex.js +65 -0
  99. package/dist/cli/commands/codex.js.map +1 -0
  100. package/dist/cli/commands/config.js +1 -1
  101. package/dist/cli/commands/config.js.map +1 -1
  102. package/dist/cli/commands/evalops.d.ts +2 -0
  103. package/dist/cli/commands/evalops.d.ts.map +1 -0
  104. package/dist/cli/commands/evalops.js +69 -0
  105. package/dist/cli/commands/evalops.js.map +1 -0
  106. package/dist/cli/commands/hosted-runner.d.ts +23 -0
  107. package/dist/cli/commands/hosted-runner.d.ts.map +1 -0
  108. package/dist/cli/commands/hosted-runner.js +241 -0
  109. package/dist/cli/commands/hosted-runner.js.map +1 -0
  110. package/dist/cli/commands/memory.d.ts.map +1 -1
  111. package/dist/cli/commands/memory.js +23 -30
  112. package/dist/cli/commands/memory.js.map +1 -1
  113. package/dist/cli/commands/remote.d.ts +3 -0
  114. package/dist/cli/commands/remote.d.ts.map +1 -0
  115. package/dist/cli/commands/remote.js +631 -0
  116. package/dist/cli/commands/remote.js.map +1 -0
  117. package/dist/cli/commands/stats.d.ts +7 -0
  118. package/dist/cli/commands/stats.d.ts.map +1 -0
  119. package/dist/cli/commands/stats.js +167 -0
  120. package/dist/cli/commands/stats.js.map +1 -0
  121. package/dist/cli/headless-protocol.d.ts +16 -1
  122. package/dist/cli/headless-protocol.d.ts.map +1 -1
  123. package/dist/cli/headless-protocol.js +60 -4
  124. package/dist/cli/headless-protocol.js.map +1 -1
  125. package/dist/cli/headless.d.ts.map +1 -1
  126. package/dist/cli/headless.js +1 -0
  127. package/dist/cli/headless.js.map +1 -1
  128. package/dist/cli/help.d.ts.map +1 -1
  129. package/dist/cli/help.js +36 -1
  130. package/dist/cli/help.js.map +1 -1
  131. package/dist/cli/jsonl-writer.d.ts.map +1 -1
  132. package/dist/cli/jsonl-writer.js +19 -6
  133. package/dist/cli/jsonl-writer.js.map +1 -1
  134. package/dist/cli-tui/client-tools/client-tool-controller.d.ts.map +1 -1
  135. package/dist/cli-tui/client-tools/client-tool-controller.js +17 -1
  136. package/dist/cli-tui/client-tools/client-tool-controller.js.map +1 -1
  137. package/dist/cli-tui/commands/access-command.js +1 -1
  138. package/dist/cli-tui/commands/access-command.js.map +1 -1
  139. package/dist/cli-tui/commands/audit-command.js +1 -1
  140. package/dist/cli-tui/commands/audit-command.js.map +1 -1
  141. package/dist/cli-tui/commands/command-catalog.d.ts +29 -0
  142. package/dist/cli-tui/commands/command-catalog.d.ts.map +1 -0
  143. package/dist/cli-tui/commands/command-catalog.js +645 -0
  144. package/dist/cli-tui/commands/command-catalog.js.map +1 -0
  145. package/dist/cli-tui/commands/command-registry-adapter.d.ts +12 -0
  146. package/dist/cli-tui/commands/command-registry-adapter.d.ts.map +1 -0
  147. package/dist/cli-tui/commands/command-registry-adapter.js +120 -0
  148. package/dist/cli-tui/commands/command-registry-adapter.js.map +1 -0
  149. package/dist/cli-tui/commands/command-suite-catalog.d.ts +14 -0
  150. package/dist/cli-tui/commands/command-suite-catalog.d.ts.map +1 -0
  151. package/dist/cli-tui/commands/command-suite-catalog.js +147 -0
  152. package/dist/cli-tui/commands/command-suite-catalog.js.map +1 -0
  153. package/dist/cli-tui/commands/{grouped-command-handlers.d.ts → command-suite-handlers.d.ts} +27 -26
  154. package/dist/cli-tui/commands/command-suite-handlers.d.ts.map +1 -0
  155. package/dist/cli-tui/commands/command-suite-handlers.js +110 -0
  156. package/dist/cli-tui/commands/command-suite-handlers.js.map +1 -0
  157. package/dist/cli-tui/commands/hotkeys-command.d.ts +1 -1
  158. package/dist/cli-tui/commands/hotkeys-command.d.ts.map +1 -1
  159. package/dist/cli-tui/commands/hotkeys-command.js +2 -2
  160. package/dist/cli-tui/commands/hotkeys-command.js.map +1 -1
  161. package/dist/cli-tui/commands/limits-command.js +1 -1
  162. package/dist/cli-tui/commands/limits-command.js.map +1 -1
  163. package/dist/cli-tui/commands/pii-command.js +1 -1
  164. package/dist/cli-tui/commands/pii-command.js.map +1 -1
  165. package/dist/cli-tui/commands/registry.d.ts +1 -1
  166. package/dist/cli-tui/commands/registry.d.ts.map +1 -1
  167. package/dist/cli-tui/commands/registry.js +29 -921
  168. package/dist/cli-tui/commands/registry.js.map +1 -1
  169. package/dist/cli-tui/commands/{grouped → subcommands}/auth-commands.d.ts +2 -1
  170. package/dist/cli-tui/commands/subcommands/auth-commands.d.ts.map +1 -0
  171. package/dist/cli-tui/commands/{grouped → subcommands}/auth-commands.js +22 -6
  172. package/dist/cli-tui/commands/subcommands/auth-commands.js.map +1 -0
  173. package/dist/cli-tui/commands/{grouped → subcommands}/config-commands.d.ts +0 -1
  174. package/dist/cli-tui/commands/subcommands/config-commands.d.ts.map +1 -0
  175. package/dist/cli-tui/commands/{grouped → subcommands}/config-commands.js +2 -2
  176. package/dist/cli-tui/commands/subcommands/config-commands.js.map +1 -0
  177. package/dist/cli-tui/commands/{grouped → subcommands}/diag-commands.d.ts +1 -2
  178. package/dist/cli-tui/commands/subcommands/diag-commands.d.ts.map +1 -0
  179. package/dist/cli-tui/commands/{grouped → subcommands}/diag-commands.js +5 -7
  180. package/dist/cli-tui/commands/subcommands/diag-commands.js.map +1 -0
  181. package/dist/cli-tui/commands/{grouped → subcommands}/git-commands.d.ts +0 -2
  182. package/dist/cli-tui/commands/subcommands/git-commands.d.ts.map +1 -0
  183. package/dist/cli-tui/commands/{grouped → subcommands}/git-commands.js +2 -2
  184. package/dist/cli-tui/commands/subcommands/git-commands.js.map +1 -0
  185. package/dist/cli-tui/commands/{grouped → subcommands}/index.d.ts +2 -2
  186. package/dist/cli-tui/commands/subcommands/index.d.ts.map +1 -0
  187. package/dist/cli-tui/commands/{grouped → subcommands}/index.js +2 -2
  188. package/dist/cli-tui/commands/subcommands/index.js.map +1 -0
  189. package/dist/cli-tui/commands/{grouped → subcommands}/safety-commands.d.ts +0 -1
  190. package/dist/cli-tui/commands/subcommands/safety-commands.d.ts.map +1 -0
  191. package/dist/cli-tui/commands/{grouped → subcommands}/safety-commands.js +12 -12
  192. package/dist/cli-tui/commands/subcommands/safety-commands.js.map +1 -0
  193. package/dist/cli-tui/commands/{grouped → subcommands}/session-commands.d.ts +1 -2
  194. package/dist/cli-tui/commands/subcommands/session-commands.d.ts.map +1 -0
  195. package/dist/cli-tui/commands/{grouped → subcommands}/session-commands.js +3 -3
  196. package/dist/cli-tui/commands/subcommands/session-commands.js.map +1 -0
  197. package/dist/cli-tui/commands/{grouped → subcommands}/tools-commands.d.ts +0 -1
  198. package/dist/cli-tui/commands/subcommands/tools-commands.d.ts.map +1 -0
  199. package/dist/cli-tui/commands/{grouped → subcommands}/tools-commands.js +2 -2
  200. package/dist/cli-tui/commands/subcommands/tools-commands.js.map +1 -0
  201. package/dist/cli-tui/commands/{grouped → subcommands}/ui-commands.d.ts +0 -1
  202. package/dist/cli-tui/commands/subcommands/ui-commands.d.ts.map +1 -0
  203. package/dist/cli-tui/commands/{grouped → subcommands}/ui-commands.js +5 -5
  204. package/dist/cli-tui/commands/subcommands/ui-commands.js.map +1 -0
  205. package/dist/cli-tui/commands/{grouped → subcommands}/undo-commands.d.ts +1 -2
  206. package/dist/cli-tui/commands/subcommands/undo-commands.d.ts.map +1 -0
  207. package/dist/cli-tui/commands/{grouped → subcommands}/undo-commands.js +6 -6
  208. package/dist/cli-tui/commands/subcommands/undo-commands.js.map +1 -0
  209. package/dist/cli-tui/commands/subcommands/usage-commands.d.ts.map +1 -0
  210. package/dist/cli-tui/commands/{grouped → subcommands}/usage-commands.js +2 -2
  211. package/dist/cli-tui/commands/subcommands/usage-commands.js.map +1 -0
  212. package/dist/cli-tui/commands/{grouped → subcommands}/utils.d.ts +15 -15
  213. package/dist/cli-tui/commands/subcommands/utils.d.ts.map +1 -0
  214. package/dist/cli-tui/commands/{grouped → subcommands}/utils.js +13 -8
  215. package/dist/cli-tui/commands/subcommands/utils.js.map +1 -0
  216. package/dist/cli-tui/commands/types.d.ts +3 -3
  217. package/dist/cli-tui/commands/types.d.ts.map +1 -1
  218. package/dist/cli-tui/commands/types.js.map +1 -1
  219. package/dist/cli-tui/editor-view.d.ts +1 -1
  220. package/dist/cli-tui/editor-view.d.ts.map +1 -1
  221. package/dist/cli-tui/editor-view.js +1 -1
  222. package/dist/cli-tui/editor-view.js.map +1 -1
  223. package/dist/cli-tui/oauth/oauth-flow-controller.d.ts +4 -0
  224. package/dist/cli-tui/oauth/oauth-flow-controller.d.ts.map +1 -1
  225. package/dist/cli-tui/oauth/oauth-flow-controller.js +76 -5
  226. package/dist/cli-tui/oauth/oauth-flow-controller.js.map +1 -1
  227. package/dist/cli-tui/run/run-controller.d.ts +2 -2
  228. package/dist/cli-tui/run/run-controller.d.ts.map +1 -1
  229. package/dist/cli-tui/run/run-controller.js +3 -2
  230. package/dist/cli-tui/run/run-controller.js.map +1 -1
  231. package/dist/cli-tui/run/run-shell-command.d.ts.map +1 -1
  232. package/dist/cli-tui/run/run-shell-command.js +11 -3
  233. package/dist/cli-tui/run/run-shell-command.js.map +1 -1
  234. package/dist/cli-tui/run/streaming-shell-command.d.ts.map +1 -1
  235. package/dist/cli-tui/run/streaming-shell-command.js +11 -3
  236. package/dist/cli-tui/run/streaming-shell-command.js.map +1 -1
  237. package/dist/cli-tui/selectors/model-selector.d.ts.map +1 -1
  238. package/dist/cli-tui/selectors/model-selector.js +1 -0
  239. package/dist/cli-tui/selectors/model-selector.js.map +1 -1
  240. package/dist/cli-tui/tui-renderer/agent-event-bridge.d.ts +8 -0
  241. package/dist/cli-tui/tui-renderer/agent-event-bridge.d.ts.map +1 -1
  242. package/dist/cli-tui/tui-renderer/agent-event-bridge.js +23 -2
  243. package/dist/cli-tui/tui-renderer/agent-event-bridge.js.map +1 -1
  244. package/dist/cli-tui/tui-renderer/command-registry-options.d.ts +3 -3
  245. package/dist/cli-tui/tui-renderer/command-registry-options.d.ts.map +1 -1
  246. package/dist/cli-tui/tui-renderer/command-registry-options.js +12 -2
  247. package/dist/cli-tui/tui-renderer/command-registry-options.js.map +1 -1
  248. package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts +32 -0
  249. package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts.map +1 -0
  250. package/dist/cli-tui/tui-renderer/command-suite-wiring.js +108 -0
  251. package/dist/cli-tui/tui-renderer/command-suite-wiring.js.map +1 -0
  252. package/dist/cli-tui/tui-renderer/input-controller.d.ts +2 -2
  253. package/dist/cli-tui/tui-renderer/input-controller.d.ts.map +1 -1
  254. package/dist/cli-tui/tui-renderer/input-controller.js +2 -2
  255. package/dist/cli-tui/tui-renderer/input-controller.js.map +1 -1
  256. package/dist/cli-tui/tui-renderer/ui-state-controller.d.ts +1 -1
  257. package/dist/cli-tui/tui-renderer/ui-state-controller.js +1 -1
  258. package/dist/cli-tui/tui-renderer/ui-state-controller.js.map +1 -1
  259. package/dist/cli-tui/tui-renderer.d.ts +1 -3
  260. package/dist/cli-tui/tui-renderer.d.ts.map +1 -1
  261. package/dist/cli-tui/tui-renderer.js +37 -83
  262. package/dist/cli-tui/tui-renderer.js.map +1 -1
  263. package/dist/cli-tui/utils/runtime-badges.d.ts +8 -0
  264. package/dist/cli-tui/utils/runtime-badges.d.ts.map +1 -1
  265. package/dist/cli-tui/utils/runtime-badges.js +58 -0
  266. package/dist/cli-tui/utils/runtime-badges.js.map +1 -1
  267. package/dist/cli.js +41771 -22892
  268. package/dist/cli.js.map +1 -1
  269. package/dist/config/env-vars.d.ts +4 -0
  270. package/dist/config/env-vars.d.ts.map +1 -1
  271. package/dist/config/env-vars.js +4 -0
  272. package/dist/config/env-vars.js.map +1 -1
  273. package/dist/config/feature-flags.d.ts +44 -0
  274. package/dist/config/feature-flags.d.ts.map +1 -1
  275. package/dist/config/feature-flags.js +214 -0
  276. package/dist/config/feature-flags.js.map +1 -1
  277. package/dist/connectors/service-client.d.ts +98 -0
  278. package/dist/connectors/service-client.d.ts.map +1 -0
  279. package/dist/connectors/service-client.js +459 -0
  280. package/dist/connectors/service-client.js.map +1 -0
  281. package/dist/conversation/render-model.d.ts.map +1 -1
  282. package/dist/conversation/render-model.js +53 -3
  283. package/dist/conversation/render-model.js.map +1 -1
  284. package/dist/db/health.d.ts +8 -0
  285. package/dist/db/health.d.ts.map +1 -0
  286. package/dist/db/health.js +64 -0
  287. package/dist/db/health.js.map +1 -0
  288. package/dist/db/migrate.d.ts +301 -0
  289. package/dist/db/migrate.d.ts.map +1 -1
  290. package/dist/db/migrate.js +186 -0
  291. package/dist/db/migrate.js.map +1 -1
  292. package/dist/db/migrations/0000_initial.sql +308 -0
  293. package/dist/db/migrations/0001_shared_sessions.sql +18 -0
  294. package/dist/db/migrations/0002_usage_metrics.sql +28 -0
  295. package/dist/db/migrations/0003_execution_traces.sql +18 -0
  296. package/dist/db/migrations/0004_workspace_config.sql +11 -0
  297. package/dist/db/migrations/0005_revenue_attribution.sql +31 -0
  298. package/dist/db/migrations/0006_hosted_session_storage.sql +51 -0
  299. package/dist/db/migrations/0007_reconcile_legacy_audit_hash_cache.sql +24 -0
  300. package/dist/db/migrations/0008_reconcile_legacy_webhook_deliveries.sql +290 -0
  301. package/dist/db/migrations/meta/0000_snapshot.json +2438 -0
  302. package/dist/db/migrations/meta/_journal.json +69 -0
  303. package/dist/db/schema.d.ts +2232 -844
  304. package/dist/db/schema.d.ts.map +1 -1
  305. package/dist/db/schema.js +187 -1
  306. package/dist/db/schema.js.map +1 -1
  307. package/dist/export-html.d.ts.map +1 -1
  308. package/dist/export-html.js +7 -4
  309. package/dist/export-html.js.map +1 -1
  310. package/dist/headless/utility-command-manager.d.ts +2 -1
  311. package/dist/headless/utility-command-manager.d.ts.map +1 -1
  312. package/dist/headless/utility-command-manager.js +12 -6
  313. package/dist/headless/utility-command-manager.js.map +1 -1
  314. package/dist/headless/utility-file-read.d.ts +1 -0
  315. package/dist/headless/utility-file-read.d.ts.map +1 -1
  316. package/dist/headless/utility-file-read.js +5 -1
  317. package/dist/headless/utility-file-read.js.map +1 -1
  318. package/dist/headless/utility-file-search.d.ts +1 -0
  319. package/dist/headless/utility-file-search.d.ts.map +1 -1
  320. package/dist/headless/utility-file-search.js +4 -1
  321. package/dist/headless/utility-file-search.js.map +1 -1
  322. package/dist/headless/utility-file-watch-manager.d.ts +2 -1
  323. package/dist/headless/utility-file-watch-manager.d.ts.map +1 -1
  324. package/dist/headless/utility-file-watch-manager.js +6 -2
  325. package/dist/headless/utility-file-watch-manager.js.map +1 -1
  326. package/dist/headless/workspace-root.d.ts +8 -0
  327. package/dist/headless/workspace-root.d.ts.map +1 -0
  328. package/dist/headless/workspace-root.js +74 -0
  329. package/dist/headless/workspace-root.js.map +1 -0
  330. package/dist/hooks/notification-hooks.d.ts +5 -0
  331. package/dist/hooks/notification-hooks.d.ts.map +1 -1
  332. package/dist/hooks/notification-hooks.js +4 -0
  333. package/dist/hooks/notification-hooks.js.map +1 -1
  334. package/dist/lsp/diagnostic-deltas.d.ts +20 -0
  335. package/dist/lsp/diagnostic-deltas.d.ts.map +1 -0
  336. package/dist/lsp/diagnostic-deltas.js +92 -0
  337. package/dist/lsp/diagnostic-deltas.js.map +1 -0
  338. package/dist/lsp/diagnostic-repair.d.ts +48 -0
  339. package/dist/lsp/diagnostic-repair.d.ts.map +1 -0
  340. package/dist/lsp/diagnostic-repair.js +143 -0
  341. package/dist/lsp/diagnostic-repair.js.map +1 -0
  342. package/dist/main.d.ts.map +1 -1
  343. package/dist/main.js +122 -37
  344. package/dist/main.js.map +1 -1
  345. package/dist/mcp/config.d.ts +4 -2
  346. package/dist/mcp/config.d.ts.map +1 -1
  347. package/dist/mcp/config.js +58 -14
  348. package/dist/mcp/config.js.map +1 -1
  349. package/dist/mcp/index.d.ts +1 -0
  350. package/dist/mcp/index.d.ts.map +1 -1
  351. package/dist/mcp/index.js +1 -0
  352. package/dist/mcp/index.js.map +1 -1
  353. package/dist/mcp/manager.d.ts +1 -0
  354. package/dist/mcp/manager.d.ts.map +1 -1
  355. package/dist/mcp/manager.js +1 -0
  356. package/dist/mcp/manager.js.map +1 -1
  357. package/dist/mcp/platform-plugin.d.ts +3 -0
  358. package/dist/mcp/platform-plugin.d.ts.map +1 -0
  359. package/dist/mcp/platform-plugin.js +83 -0
  360. package/dist/mcp/platform-plugin.js.map +1 -0
  361. package/dist/mcp/tool-bridge.d.ts +15 -0
  362. package/dist/mcp/tool-bridge.d.ts.map +1 -1
  363. package/dist/mcp/tool-bridge.js +194 -6
  364. package/dist/mcp/tool-bridge.js.map +1 -1
  365. package/dist/memory/platform-memory-client.d.ts +130 -0
  366. package/dist/memory/platform-memory-client.d.ts.map +1 -0
  367. package/dist/memory/platform-memory-client.js +330 -0
  368. package/dist/memory/platform-memory-client.js.map +1 -0
  369. package/dist/memory/service-client.d.ts.map +1 -1
  370. package/dist/memory/service-client.js +1 -2
  371. package/dist/memory/service-client.js.map +1 -1
  372. package/dist/models/builtin.d.ts.map +1 -1
  373. package/dist/models/builtin.js +137 -0
  374. package/dist/models/builtin.js.map +1 -1
  375. package/dist/models/config-loader.d.ts +10 -10
  376. package/dist/models/config-loader.d.ts.map +1 -1
  377. package/dist/models/config-loader.js +1 -0
  378. package/dist/models/config-loader.js.map +1 -1
  379. package/dist/models/registry.d.ts +1 -0
  380. package/dist/models/registry.d.ts.map +1 -1
  381. package/dist/models/registry.js +1 -0
  382. package/dist/models/registry.js.map +1 -1
  383. package/dist/oauth/connectors.d.ts +25 -0
  384. package/dist/oauth/connectors.d.ts.map +1 -0
  385. package/dist/oauth/connectors.js +253 -0
  386. package/dist/oauth/connectors.js.map +1 -0
  387. package/dist/oauth/device-identity.d.ts +18 -0
  388. package/dist/oauth/device-identity.d.ts.map +1 -0
  389. package/dist/oauth/device-identity.js +193 -0
  390. package/dist/oauth/device-identity.js.map +1 -0
  391. package/dist/oauth/evalops.d.ts.map +1 -1
  392. package/dist/oauth/evalops.js +73 -14
  393. package/dist/oauth/evalops.js.map +1 -1
  394. package/dist/oauth/index.d.ts +1 -1
  395. package/dist/oauth/index.d.ts.map +1 -1
  396. package/dist/oauth/index.js +31 -1
  397. package/dist/oauth/index.js.map +1 -1
  398. package/dist/oauth/openai-codex.d.ts +16 -0
  399. package/dist/oauth/openai-codex.d.ts.map +1 -0
  400. package/dist/oauth/openai-codex.js +300 -0
  401. package/dist/oauth/openai-codex.js.map +1 -0
  402. package/dist/opentelemetry.d.ts.map +1 -1
  403. package/dist/opentelemetry.js +9 -2
  404. package/dist/opentelemetry.js.map +1 -1
  405. package/dist/platform/agent-runtime-client.d.ts +279 -0
  406. package/dist/platform/agent-runtime-client.d.ts.map +1 -0
  407. package/dist/platform/agent-runtime-client.js +515 -0
  408. package/dist/platform/agent-runtime-client.js.map +1 -0
  409. package/dist/platform/cerebro-facts-client.d.ts +56 -0
  410. package/dist/platform/cerebro-facts-client.d.ts.map +1 -0
  411. package/dist/platform/cerebro-facts-client.js +297 -0
  412. package/dist/platform/cerebro-facts-client.js.map +1 -0
  413. package/dist/platform/client.d.ts +2 -1
  414. package/dist/platform/client.d.ts.map +1 -1
  415. package/dist/platform/client.js +9 -26
  416. package/dist/platform/client.js.map +1 -1
  417. package/dist/platform/core-services.d.ts +128 -0
  418. package/dist/platform/core-services.d.ts.map +1 -1
  419. package/dist/platform/core-services.js +128 -0
  420. package/dist/platform/core-services.js.map +1 -1
  421. package/dist/platform/maestro-timeline-client.d.ts +22 -0
  422. package/dist/platform/maestro-timeline-client.d.ts.map +1 -0
  423. package/dist/platform/maestro-timeline-client.js +373 -0
  424. package/dist/platform/maestro-timeline-client.js.map +1 -0
  425. package/dist/platform/tool-execution-client.d.ts +104 -0
  426. package/dist/platform/tool-execution-client.d.ts.map +1 -0
  427. package/dist/platform/tool-execution-client.js +284 -0
  428. package/dist/platform/tool-execution-client.js.map +1 -0
  429. package/dist/prompts/service-client.d.ts.map +1 -1
  430. package/dist/prompts/service-client.js +5 -2
  431. package/dist/prompts/service-client.js.map +1 -1
  432. package/dist/providers/anthropic-auth.d.ts.map +1 -1
  433. package/dist/providers/anthropic-auth.js +8 -6
  434. package/dist/providers/anthropic-auth.js.map +1 -1
  435. package/dist/providers/api-keys.d.ts +1 -0
  436. package/dist/providers/api-keys.d.ts.map +1 -1
  437. package/dist/providers/api-keys.js +5 -0
  438. package/dist/providers/api-keys.js.map +1 -1
  439. package/dist/providers/auth.d.ts +2 -1
  440. package/dist/providers/auth.d.ts.map +1 -1
  441. package/dist/providers/auth.js +26 -3
  442. package/dist/providers/auth.js.map +1 -1
  443. package/dist/remote-runner/attach-client.d.ts +41 -0
  444. package/dist/remote-runner/attach-client.d.ts.map +1 -0
  445. package/dist/remote-runner/attach-client.js +692 -0
  446. package/dist/remote-runner/attach-client.js.map +1 -0
  447. package/dist/remote-runner/client.d.ts +205 -0
  448. package/dist/remote-runner/client.d.ts.map +1 -0
  449. package/dist/remote-runner/client.js +633 -0
  450. package/dist/remote-runner/client.js.map +1 -0
  451. package/dist/safety/action-firewall.d.ts +6 -1
  452. package/dist/safety/action-firewall.d.ts.map +1 -1
  453. package/dist/safety/action-firewall.js +62 -26
  454. package/dist/safety/action-firewall.js.map +1 -1
  455. package/dist/safety/governance-service-client.d.ts +36 -0
  456. package/dist/safety/governance-service-client.d.ts.map +1 -0
  457. package/dist/safety/governance-service-client.js +279 -0
  458. package/dist/safety/governance-service-client.js.map +1 -0
  459. package/dist/safety/policy.d.ts +13 -2
  460. package/dist/safety/policy.d.ts.map +1 -1
  461. package/dist/safety/policy.js +474 -52
  462. package/dist/safety/policy.js.map +1 -1
  463. package/dist/sdk-tools.d.ts +21 -0
  464. package/dist/sdk-tools.d.ts.map +1 -1
  465. package/dist/sdk-tools.js +16 -0
  466. package/dist/sdk-tools.js.map +1 -1
  467. package/dist/server/app-context.d.ts +25 -0
  468. package/dist/server/app-context.d.ts.map +1 -1
  469. package/dist/server/app-context.js.map +1 -1
  470. package/dist/server/approval-service.d.ts +7 -8
  471. package/dist/server/approval-service.d.ts.map +1 -1
  472. package/dist/server/approval-service.js +12 -24
  473. package/dist/server/approval-service.js.map +1 -1
  474. package/dist/server/authz.d.ts +23 -2
  475. package/dist/server/authz.d.ts.map +1 -1
  476. package/dist/server/authz.js +153 -17
  477. package/dist/server/authz.js.map +1 -1
  478. package/dist/server/handlers/approvals.d.ts.map +1 -1
  479. package/dist/server/handlers/approvals.js +3 -10
  480. package/dist/server/handlers/approvals.js.map +1 -1
  481. package/dist/server/handlers/branch.d.ts.map +1 -1
  482. package/dist/server/handlers/branch.js +29 -20
  483. package/dist/server/handlers/branch.js.map +1 -1
  484. package/dist/server/handlers/bridge.d.ts.map +1 -1
  485. package/dist/server/handlers/bridge.js +3 -2
  486. package/dist/server/handlers/bridge.js.map +1 -1
  487. package/dist/server/handlers/chat-ws.d.ts.map +1 -1
  488. package/dist/server/handlers/chat-ws.js +23 -31
  489. package/dist/server/handlers/chat-ws.js.map +1 -1
  490. package/dist/server/handlers/chat.d.ts.map +1 -1
  491. package/dist/server/handlers/chat.js +105 -46
  492. package/dist/server/handlers/chat.js.map +1 -1
  493. package/dist/server/handlers/compliance.d.ts +3 -0
  494. package/dist/server/handlers/compliance.d.ts.map +1 -0
  495. package/dist/server/handlers/compliance.js +53 -0
  496. package/dist/server/handlers/compliance.js.map +1 -0
  497. package/dist/server/handlers/context.d.ts.map +1 -1
  498. package/dist/server/handlers/context.js +3 -8
  499. package/dist/server/handlers/context.js.map +1 -1
  500. package/dist/server/handlers/fleet.d.ts +4 -0
  501. package/dist/server/handlers/fleet.d.ts.map +1 -0
  502. package/dist/server/handlers/fleet.js +9 -0
  503. package/dist/server/handlers/fleet.js.map +1 -0
  504. package/dist/server/handlers/headless-sessions.d.ts +4 -0
  505. package/dist/server/handlers/headless-sessions.d.ts.map +1 -1
  506. package/dist/server/handlers/headless-sessions.js +168 -3
  507. package/dist/server/handlers/headless-sessions.js.map +1 -1
  508. package/dist/server/handlers/health.d.ts +31 -2
  509. package/dist/server/handlers/health.d.ts.map +1 -1
  510. package/dist/server/handlers/health.js +82 -8
  511. package/dist/server/handlers/health.js.map +1 -1
  512. package/dist/server/handlers/hosted-runner-drain.d.ts +128 -0
  513. package/dist/server/handlers/hosted-runner-drain.d.ts.map +1 -0
  514. package/dist/server/handlers/hosted-runner-drain.js +373 -0
  515. package/dist/server/handlers/hosted-runner-drain.js.map +1 -0
  516. package/dist/server/handlers/hosted-runner-identity.d.ts +17 -0
  517. package/dist/server/handlers/hosted-runner-identity.d.ts.map +1 -0
  518. package/dist/server/handlers/hosted-runner-identity.js +39 -0
  519. package/dist/server/handlers/hosted-runner-identity.js.map +1 -0
  520. package/dist/server/handlers/intelligent-router.d.ts +3 -0
  521. package/dist/server/handlers/intelligent-router.d.ts.map +1 -0
  522. package/dist/server/handlers/intelligent-router.js +141 -0
  523. package/dist/server/handlers/intelligent-router.js.map +1 -0
  524. package/dist/server/handlers/models.d.ts.map +1 -1
  525. package/dist/server/handlers/models.js +14 -0
  526. package/dist/server/handlers/models.js.map +1 -1
  527. package/dist/server/handlers/pending-requests.d.ts +8 -0
  528. package/dist/server/handlers/pending-requests.d.ts.map +1 -0
  529. package/dist/server/handlers/pending-requests.js +149 -0
  530. package/dist/server/handlers/pending-requests.js.map +1 -0
  531. package/dist/server/handlers/revenue-attribution.d.ts +3 -0
  532. package/dist/server/handlers/revenue-attribution.d.ts.map +1 -0
  533. package/dist/server/handlers/revenue-attribution.js +45 -0
  534. package/dist/server/handlers/revenue-attribution.js.map +1 -0
  535. package/dist/server/handlers/runtime-app-server-ws.d.ts +10 -0
  536. package/dist/server/handlers/runtime-app-server-ws.d.ts.map +1 -0
  537. package/dist/server/handlers/runtime-app-server-ws.js +206 -0
  538. package/dist/server/handlers/runtime-app-server-ws.js.map +1 -0
  539. package/dist/server/handlers/session-artifacts.js +2 -2
  540. package/dist/server/handlers/session-artifacts.js.map +1 -1
  541. package/dist/server/handlers/session-attachments.js +3 -3
  542. package/dist/server/handlers/session-attachments.js.map +1 -1
  543. package/dist/server/handlers/session-timeline.d.ts +11 -0
  544. package/dist/server/handlers/session-timeline.d.ts.map +1 -0
  545. package/dist/server/handlers/session-timeline.js +77 -0
  546. package/dist/server/handlers/session-timeline.js.map +1 -0
  547. package/dist/server/handlers/sessions.d.ts +11 -0
  548. package/dist/server/handlers/sessions.d.ts.map +1 -1
  549. package/dist/server/handlers/sessions.js +68 -100
  550. package/dist/server/handlers/sessions.js.map +1 -1
  551. package/dist/server/handlers/traces.d.ts +3 -0
  552. package/dist/server/handlers/traces.d.ts.map +1 -0
  553. package/dist/server/handlers/traces.js +60 -0
  554. package/dist/server/handlers/traces.js.map +1 -0
  555. package/dist/server/handlers/usage-analytics.d.ts +3 -0
  556. package/dist/server/handlers/usage-analytics.d.ts.map +1 -0
  557. package/dist/server/handlers/usage-analytics.js +40 -0
  558. package/dist/server/handlers/usage-analytics.js.map +1 -0
  559. package/dist/server/handlers/workspace-config.d.ts +3 -0
  560. package/dist/server/handlers/workspace-config.d.ts.map +1 -0
  561. package/dist/server/handlers/workspace-config.js +62 -0
  562. package/dist/server/handlers/workspace-config.js.map +1 -0
  563. package/dist/server/headless-in-process-host.d.ts +8 -1
  564. package/dist/server/headless-in-process-host.d.ts.map +1 -1
  565. package/dist/server/headless-in-process-host.js +6 -0
  566. package/dist/server/headless-in-process-host.js.map +1 -1
  567. package/dist/server/headless-runtime-service.d.ts +99 -1
  568. package/dist/server/headless-runtime-service.d.ts.map +1 -1
  569. package/dist/server/headless-runtime-service.js +286 -23
  570. package/dist/server/headless-runtime-service.js.map +1 -1
  571. package/dist/server/hosted-session-manager.d.ts +103 -0
  572. package/dist/server/hosted-session-manager.d.ts.map +1 -0
  573. package/dist/server/hosted-session-manager.js +629 -0
  574. package/dist/server/hosted-session-manager.js.map +1 -0
  575. package/dist/server/pending-request-payload.d.ts +4 -0
  576. package/dist/server/pending-request-payload.d.ts.map +1 -0
  577. package/dist/server/pending-request-payload.js +107 -0
  578. package/dist/server/pending-request-payload.js.map +1 -0
  579. package/dist/server/request-context.d.ts +4 -0
  580. package/dist/server/request-context.d.ts.map +1 -1
  581. package/dist/server/request-context.js +9 -0
  582. package/dist/server/request-context.js.map +1 -1
  583. package/dist/server/routes.d.ts.map +1 -1
  584. package/dist/server/routes.js +149 -1
  585. package/dist/server/routes.js.map +1 -1
  586. package/dist/server/runtime-ws-access.d.ts +16 -0
  587. package/dist/server/runtime-ws-access.d.ts.map +1 -0
  588. package/dist/server/runtime-ws-access.js +21 -0
  589. package/dist/server/runtime-ws-access.js.map +1 -0
  590. package/dist/server/server-middlewares.d.ts +1 -1
  591. package/dist/server/server-middlewares.d.ts.map +1 -1
  592. package/dist/server/server-middlewares.js +35 -27
  593. package/dist/server/server-middlewares.js.map +1 -1
  594. package/dist/server/server-request-manager.d.ts +8 -27
  595. package/dist/server/server-request-manager.d.ts.map +1 -1
  596. package/dist/server/server-request-manager.js +7 -0
  597. package/dist/server/server-request-manager.js.map +1 -1
  598. package/dist/server/server-utils.d.ts +2 -1
  599. package/dist/server/server-utils.d.ts.map +1 -1
  600. package/dist/server/server-utils.js +11 -1
  601. package/dist/server/server-utils.js.map +1 -1
  602. package/dist/server/session-event-env.d.ts +2 -0
  603. package/dist/server/session-event-env.d.ts.map +1 -0
  604. package/dist/server/session-event-env.js +8 -0
  605. package/dist/server/session-event-env.js.map +1 -0
  606. package/dist/server/session-initialization.d.ts +25 -4
  607. package/dist/server/session-initialization.d.ts.map +1 -1
  608. package/dist/server/session-initialization.js +22 -5
  609. package/dist/server/session-initialization.js.map +1 -1
  610. package/dist/server/session-scope.d.ts +4 -0
  611. package/dist/server/session-scope.d.ts.map +1 -1
  612. package/dist/server/session-scope.js +44 -4
  613. package/dist/server/session-scope.js.map +1 -1
  614. package/dist/server/session-timeline.d.ts +13 -0
  615. package/dist/server/session-timeline.d.ts.map +1 -0
  616. package/dist/server/session-timeline.js +566 -0
  617. package/dist/server/session-timeline.js.map +1 -0
  618. package/dist/services/compliance/controls.d.ts +6 -0
  619. package/dist/services/compliance/controls.d.ts.map +1 -0
  620. package/dist/services/compliance/controls.js +113 -0
  621. package/dist/services/compliance/controls.js.map +1 -0
  622. package/dist/services/compliance/index.d.ts +6 -0
  623. package/dist/services/compliance/index.d.ts.map +1 -0
  624. package/dist/services/compliance/index.js +5 -0
  625. package/dist/services/compliance/index.js.map +1 -0
  626. package/dist/services/compliance/normalize.d.ts +23 -0
  627. package/dist/services/compliance/normalize.d.ts.map +1 -0
  628. package/dist/services/compliance/normalize.js +226 -0
  629. package/dist/services/compliance/normalize.js.map +1 -0
  630. package/dist/services/compliance/recorder.d.ts +22 -0
  631. package/dist/services/compliance/recorder.d.ts.map +1 -0
  632. package/dist/services/compliance/recorder.js +89 -0
  633. package/dist/services/compliance/recorder.js.map +1 -0
  634. package/dist/services/compliance/service.d.ts +24 -0
  635. package/dist/services/compliance/service.d.ts.map +1 -0
  636. package/dist/services/compliance/service.js +426 -0
  637. package/dist/services/compliance/service.js.map +1 -0
  638. package/dist/services/compliance/types.d.ts +185 -0
  639. package/dist/services/compliance/types.d.ts.map +1 -0
  640. package/dist/services/compliance/types.js +2 -0
  641. package/dist/services/compliance/types.js.map +1 -0
  642. package/dist/services/intelligent-router/index.d.ts +5 -0
  643. package/dist/services/intelligent-router/index.d.ts.map +1 -0
  644. package/dist/services/intelligent-router/index.js +5 -0
  645. package/dist/services/intelligent-router/index.js.map +1 -0
  646. package/dist/services/intelligent-router/normalize.d.ts +9 -0
  647. package/dist/services/intelligent-router/normalize.d.ts.map +1 -0
  648. package/dist/services/intelligent-router/normalize.js +169 -0
  649. package/dist/services/intelligent-router/normalize.js.map +1 -0
  650. package/dist/services/intelligent-router/recorder.d.ts +24 -0
  651. package/dist/services/intelligent-router/recorder.d.ts.map +1 -0
  652. package/dist/services/intelligent-router/recorder.js +98 -0
  653. package/dist/services/intelligent-router/recorder.js.map +1 -0
  654. package/dist/services/intelligent-router/service.d.ts +22 -0
  655. package/dist/services/intelligent-router/service.d.ts.map +1 -0
  656. package/dist/services/intelligent-router/service.js +328 -0
  657. package/dist/services/intelligent-router/service.js.map +1 -0
  658. package/dist/services/intelligent-router/types.d.ts +98 -0
  659. package/dist/services/intelligent-router/types.d.ts.map +1 -0
  660. package/dist/services/intelligent-router/types.js +7 -0
  661. package/dist/services/intelligent-router/types.js.map +1 -0
  662. package/dist/services/revenue-attribution/index.d.ts +4 -0
  663. package/dist/services/revenue-attribution/index.d.ts.map +1 -0
  664. package/dist/services/revenue-attribution/index.js +4 -0
  665. package/dist/services/revenue-attribution/index.js.map +1 -0
  666. package/dist/services/revenue-attribution/normalize.d.ts +13 -0
  667. package/dist/services/revenue-attribution/normalize.d.ts.map +1 -0
  668. package/dist/services/revenue-attribution/normalize.js +155 -0
  669. package/dist/services/revenue-attribution/normalize.js.map +1 -0
  670. package/dist/services/revenue-attribution/service.d.ts +21 -0
  671. package/dist/services/revenue-attribution/service.d.ts.map +1 -0
  672. package/dist/services/revenue-attribution/service.js +248 -0
  673. package/dist/services/revenue-attribution/service.js.map +1 -0
  674. package/dist/services/revenue-attribution/types.d.ts +96 -0
  675. package/dist/services/revenue-attribution/types.d.ts.map +1 -0
  676. package/dist/services/revenue-attribution/types.js +7 -0
  677. package/dist/services/revenue-attribution/types.js.map +1 -0
  678. package/dist/services/traces/index.d.ts +5 -0
  679. package/dist/services/traces/index.d.ts.map +1 -0
  680. package/dist/services/traces/index.js +4 -0
  681. package/dist/services/traces/index.js.map +1 -0
  682. package/dist/services/traces/normalize.d.ts +20 -0
  683. package/dist/services/traces/normalize.d.ts.map +1 -0
  684. package/dist/services/traces/normalize.js +261 -0
  685. package/dist/services/traces/normalize.js.map +1 -0
  686. package/dist/services/traces/otel.d.ts +3 -0
  687. package/dist/services/traces/otel.d.ts.map +1 -0
  688. package/dist/services/traces/otel.js +173 -0
  689. package/dist/services/traces/otel.js.map +1 -0
  690. package/dist/services/traces/service.d.ts +17 -0
  691. package/dist/services/traces/service.d.ts.map +1 -0
  692. package/dist/services/traces/service.js +197 -0
  693. package/dist/services/traces/service.js.map +1 -0
  694. package/dist/services/traces/types.d.ts +130 -0
  695. package/dist/services/traces/types.d.ts.map +1 -0
  696. package/dist/services/traces/types.js +8 -0
  697. package/dist/services/traces/types.js.map +1 -0
  698. package/dist/services/usage-analytics/aggregation.d.ts +18 -0
  699. package/dist/services/usage-analytics/aggregation.d.ts.map +1 -0
  700. package/dist/services/usage-analytics/aggregation.js +130 -0
  701. package/dist/services/usage-analytics/aggregation.js.map +1 -0
  702. package/dist/services/usage-analytics/index.d.ts +5 -0
  703. package/dist/services/usage-analytics/index.d.ts.map +1 -0
  704. package/dist/services/usage-analytics/index.js +4 -0
  705. package/dist/services/usage-analytics/index.js.map +1 -0
  706. package/dist/services/usage-analytics/recorder.d.ts +16 -0
  707. package/dist/services/usage-analytics/recorder.d.ts.map +1 -0
  708. package/dist/services/usage-analytics/recorder.js +128 -0
  709. package/dist/services/usage-analytics/recorder.js.map +1 -0
  710. package/dist/services/usage-analytics/service.d.ts +15 -0
  711. package/dist/services/usage-analytics/service.d.ts.map +1 -0
  712. package/dist/services/usage-analytics/service.js +210 -0
  713. package/dist/services/usage-analytics/service.js.map +1 -0
  714. package/dist/services/usage-analytics/types.d.ts +80 -0
  715. package/dist/services/usage-analytics/types.d.ts.map +1 -0
  716. package/dist/services/usage-analytics/types.js +2 -0
  717. package/dist/services/usage-analytics/types.js.map +1 -0
  718. package/dist/services/workspace-config/index.d.ts +6 -0
  719. package/dist/services/workspace-config/index.d.ts.map +1 -0
  720. package/dist/services/workspace-config/index.js +5 -0
  721. package/dist/services/workspace-config/index.js.map +1 -0
  722. package/dist/services/workspace-config/middleware.d.ts +5 -0
  723. package/dist/services/workspace-config/middleware.d.ts.map +1 -0
  724. package/dist/services/workspace-config/middleware.js +98 -0
  725. package/dist/services/workspace-config/middleware.js.map +1 -0
  726. package/dist/services/workspace-config/normalize.d.ts +17 -0
  727. package/dist/services/workspace-config/normalize.d.ts.map +1 -0
  728. package/dist/services/workspace-config/normalize.js +148 -0
  729. package/dist/services/workspace-config/normalize.js.map +1 -0
  730. package/dist/services/workspace-config/policy.d.ts +16 -0
  731. package/dist/services/workspace-config/policy.d.ts.map +1 -0
  732. package/dist/services/workspace-config/policy.js +77 -0
  733. package/dist/services/workspace-config/policy.js.map +1 -0
  734. package/dist/services/workspace-config/service.d.ts +20 -0
  735. package/dist/services/workspace-config/service.d.ts.map +1 -0
  736. package/dist/services/workspace-config/service.js +162 -0
  737. package/dist/services/workspace-config/service.js.map +1 -0
  738. package/dist/services/workspace-config/types.d.ts +71 -0
  739. package/dist/services/workspace-config/types.d.ts.map +1 -0
  740. package/dist/services/workspace-config/types.js +2 -0
  741. package/dist/services/workspace-config/types.js.map +1 -0
  742. package/dist/session/manager.d.ts.map +1 -1
  743. package/dist/session/manager.js +10 -0
  744. package/dist/session/manager.js.map +1 -1
  745. package/dist/session/migration.d.ts.map +1 -1
  746. package/dist/session/migration.js +2 -1
  747. package/dist/session/migration.js.map +1 -1
  748. package/dist/session/session-memory.d.ts.map +1 -1
  749. package/dist/session/session-memory.js +7 -1
  750. package/dist/session/session-memory.js.map +1 -1
  751. package/dist/session/types.d.ts +1 -2
  752. package/dist/session/types.d.ts.map +1 -1
  753. package/dist/session/types.js +1 -22
  754. package/dist/session/types.js.map +1 -1
  755. package/dist/session/wire-format.d.ts +7 -0
  756. package/dist/session/wire-format.d.ts.map +1 -0
  757. package/dist/session/wire-format.generated.d.ts +95 -0
  758. package/dist/session/wire-format.generated.d.ts.map +1 -0
  759. package/dist/session/wire-format.generated.js +111 -0
  760. package/dist/session/wire-format.generated.js.map +1 -0
  761. package/dist/session/wire-format.js +145 -0
  762. package/dist/session/wire-format.js.map +1 -0
  763. package/dist/shared-memory/client.d.ts.map +1 -1
  764. package/dist/shared-memory/client.js +22 -22
  765. package/dist/shared-memory/client.js.map +1 -1
  766. package/dist/skills/artifact-metadata.d.ts +16 -0
  767. package/dist/skills/artifact-metadata.d.ts.map +1 -0
  768. package/dist/skills/artifact-metadata.js +86 -0
  769. package/dist/skills/artifact-metadata.js.map +1 -0
  770. package/dist/skills/loader.d.ts +2 -2
  771. package/dist/skills/loader.d.ts.map +1 -1
  772. package/dist/skills/loader.js +1 -0
  773. package/dist/skills/loader.js.map +1 -1
  774. package/dist/skills/service-client.d.ts +42 -0
  775. package/dist/skills/service-client.d.ts.map +1 -0
  776. package/dist/skills/service-client.js +258 -0
  777. package/dist/skills/service-client.js.map +1 -0
  778. package/dist/skills/tool.d.ts +3 -0
  779. package/dist/skills/tool.d.ts.map +1 -1
  780. package/dist/skills/tool.js +67 -5
  781. package/dist/skills/tool.js.map +1 -1
  782. package/dist/telemetry/index.d.ts +4 -0
  783. package/dist/telemetry/index.d.ts.map +1 -1
  784. package/dist/telemetry/index.js +5 -0
  785. package/dist/telemetry/index.js.map +1 -1
  786. package/dist/telemetry/maestro-event-bus.d.ts +440 -0
  787. package/dist/telemetry/maestro-event-bus.d.ts.map +1 -0
  788. package/dist/telemetry/maestro-event-bus.js +784 -0
  789. package/dist/telemetry/maestro-event-bus.js.map +1 -0
  790. package/dist/telemetry/maestro-event-catalog.d.ts +48 -0
  791. package/dist/telemetry/maestro-event-catalog.d.ts.map +1 -0
  792. package/dist/telemetry/maestro-event-catalog.js +69 -0
  793. package/dist/telemetry/maestro-event-catalog.js.map +1 -0
  794. package/dist/telemetry/maestro-platform-replay-fixture.d.ts +24 -0
  795. package/dist/telemetry/maestro-platform-replay-fixture.d.ts.map +1 -0
  796. package/dist/telemetry/maestro-platform-replay-fixture.js +400 -0
  797. package/dist/telemetry/maestro-platform-replay-fixture.js.map +1 -0
  798. package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts +29 -0
  799. package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts.map +1 -0
  800. package/dist/telemetry/maestro-publisher-conformance-fixture.js +240 -0
  801. package/dist/telemetry/maestro-publisher-conformance-fixture.js.map +1 -0
  802. package/dist/telemetry/meter-service-client.d.ts +0 -33
  803. package/dist/telemetry/meter-service-client.d.ts.map +1 -1
  804. package/dist/telemetry/meter-service-client.js +22 -50
  805. package/dist/telemetry/meter-service-client.js.map +1 -1
  806. package/dist/telemetry/turn-tracker.d.ts.map +1 -1
  807. package/dist/telemetry/turn-tracker.js +5 -5
  808. package/dist/telemetry/turn-tracker.js.map +1 -1
  809. package/dist/telemetry/wide-events.d.ts +8 -0
  810. package/dist/telemetry/wide-events.d.ts.map +1 -1
  811. package/dist/telemetry/wide-events.js +28 -0
  812. package/dist/telemetry/wide-events.js.map +1 -1
  813. package/dist/telemetry.d.ts +1 -1
  814. package/dist/telemetry.d.ts.map +1 -1
  815. package/dist/telemetry.js +14 -4
  816. package/dist/telemetry.js.map +1 -1
  817. package/dist/timeline/redaction.d.ts +5 -0
  818. package/dist/timeline/redaction.d.ts.map +1 -0
  819. package/dist/timeline/redaction.js +119 -0
  820. package/dist/timeline/redaction.js.map +1 -0
  821. package/dist/tools/ask-user.d.ts +26 -0
  822. package/dist/tools/ask-user.d.ts.map +1 -1
  823. package/dist/tools/ask-user.js +33 -1
  824. package/dist/tools/ask-user.js.map +1 -1
  825. package/dist/tools/background/task-types.d.ts +1 -1
  826. package/dist/tools/edit.d.ts +2 -0
  827. package/dist/tools/edit.d.ts.map +1 -1
  828. package/dist/tools/edit.js +27 -7
  829. package/dist/tools/edit.js.map +1 -1
  830. package/dist/tools/index.d.ts +9 -0
  831. package/dist/tools/index.d.ts.map +1 -1
  832. package/dist/tools/pipeline.d.ts.map +1 -1
  833. package/dist/tools/pipeline.js +16 -7
  834. package/dist/tools/pipeline.js.map +1 -1
  835. package/dist/tools/write.d.ts +2 -0
  836. package/dist/tools/write.d.ts.map +1 -1
  837. package/dist/tools/write.js +24 -6
  838. package/dist/tools/write.js.map +1 -1
  839. package/dist/tracking/cost-tracker.d.ts +15 -12
  840. package/dist/tracking/cost-tracker.d.ts.map +1 -1
  841. package/dist/tracking/cost-tracker.js +29 -40
  842. package/dist/tracking/cost-tracker.js.map +1 -1
  843. package/dist/utils/checkpoint-profiler.d.ts +29 -0
  844. package/dist/utils/checkpoint-profiler.d.ts.map +1 -0
  845. package/dist/utils/checkpoint-profiler.js +118 -0
  846. package/dist/utils/checkpoint-profiler.js.map +1 -0
  847. package/dist/utils/downstream-http.d.ts +21 -0
  848. package/dist/utils/downstream-http.d.ts.map +1 -0
  849. package/dist/utils/downstream-http.js +151 -0
  850. package/dist/utils/downstream-http.js.map +1 -0
  851. package/dist/utils/downstream.d.ts +18 -0
  852. package/dist/utils/downstream.d.ts.map +1 -0
  853. package/dist/utils/downstream.js +47 -0
  854. package/dist/utils/downstream.js.map +1 -0
  855. package/dist/utils/logger.d.ts +3 -1
  856. package/dist/utils/logger.d.ts.map +1 -1
  857. package/dist/utils/logger.js +12 -1
  858. package/dist/utils/logger.js.map +1 -1
  859. package/dist/utils/oauth-http.d.ts +8 -0
  860. package/dist/utils/oauth-http.d.ts.map +1 -0
  861. package/dist/utils/oauth-http.js +41 -0
  862. package/dist/utils/oauth-http.js.map +1 -0
  863. package/dist/utils/path-utils.d.ts +2 -0
  864. package/dist/utils/path-utils.d.ts.map +1 -0
  865. package/dist/utils/path-utils.js +12 -0
  866. package/dist/utils/path-utils.js.map +1 -0
  867. package/dist/utils/path-validation.d.ts +1 -1
  868. package/dist/utils/path-validation.d.ts.map +1 -1
  869. package/dist/utils/path-validation.js +3 -3
  870. package/dist/utils/path-validation.js.map +1 -1
  871. package/dist/version.json +2 -2
  872. package/dist/web-server.d.ts +7 -1
  873. package/dist/web-server.d.ts.map +1 -1
  874. package/dist/web-server.js +117 -15
  875. package/dist/web-server.js.map +1 -1
  876. package/dist/webhooks/delivery.d.ts.map +1 -1
  877. package/dist/webhooks/delivery.js +9 -12
  878. package/dist/webhooks/delivery.js.map +1 -1
  879. package/node_modules/@bufbuild/protobuf/dist/cjs/descriptors.d.ts +12 -5
  880. package/node_modules/@bufbuild/protobuf/dist/cjs/from-binary.js +7 -7
  881. package/node_modules/@bufbuild/protobuf/dist/cjs/from-json.d.ts +1 -1
  882. package/node_modules/@bufbuild/protobuf/dist/cjs/from-json.js +1 -1
  883. package/node_modules/@bufbuild/protobuf/dist/cjs/reflect/path.d.ts +1 -1
  884. package/node_modules/@bufbuild/protobuf/dist/cjs/registry.js +24 -1
  885. package/node_modules/@bufbuild/protobuf/dist/cjs/to-json.d.ts +1 -1
  886. package/node_modules/@bufbuild/protobuf/dist/cjs/to-json.js +9 -10
  887. package/node_modules/@bufbuild/protobuf/dist/cjs/types.d.ts +1 -1
  888. package/node_modules/@bufbuild/protobuf/dist/cjs/wire/binary-encoding.d.ts +9 -7
  889. package/node_modules/@bufbuild/protobuf/dist/cjs/wire/binary-encoding.js +18 -8
  890. package/node_modules/@bufbuild/protobuf/dist/cjs/wire/text-encoding.d.ts +4 -2
  891. package/node_modules/@bufbuild/protobuf/dist/cjs/wire/text-encoding.js +8 -1
  892. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/api_pb.d.ts +1 -1
  893. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +2 -2
  894. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.d.ts +37 -23
  895. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.js +1 -1
  896. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.d.ts +32 -36
  897. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/go_features_pb.d.ts +65 -0
  898. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/go_features_pb.js +38 -2
  899. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.d.ts +5 -5
  900. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/type_pb.d.ts +3 -3
  901. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/wrappers.d.ts +10 -0
  902. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/wrappers.js +24 -0
  903. package/node_modules/@bufbuild/protobuf/dist/esm/descriptors.d.ts +12 -5
  904. package/node_modules/@bufbuild/protobuf/dist/esm/from-binary.js +7 -7
  905. package/node_modules/@bufbuild/protobuf/dist/esm/from-json.d.ts +1 -1
  906. package/node_modules/@bufbuild/protobuf/dist/esm/from-json.js +2 -2
  907. package/node_modules/@bufbuild/protobuf/dist/esm/reflect/path.d.ts +1 -1
  908. package/node_modules/@bufbuild/protobuf/dist/esm/registry.js +24 -1
  909. package/node_modules/@bufbuild/protobuf/dist/esm/to-json.d.ts +1 -1
  910. package/node_modules/@bufbuild/protobuf/dist/esm/to-json.js +10 -11
  911. package/node_modules/@bufbuild/protobuf/dist/esm/types.d.ts +1 -1
  912. package/node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.d.ts +9 -7
  913. package/node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.js +18 -8
  914. package/node_modules/@bufbuild/protobuf/dist/esm/wire/text-encoding.d.ts +4 -2
  915. package/node_modules/@bufbuild/protobuf/dist/esm/wire/text-encoding.js +8 -1
  916. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/api_pb.d.ts +1 -1
  917. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +2 -2
  918. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/descriptor_pb.d.ts +37 -23
  919. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/descriptor_pb.js +1 -1
  920. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/field_mask_pb.d.ts +32 -36
  921. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/go_features_pb.d.ts +65 -0
  922. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/go_features_pb.js +37 -1
  923. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/timestamp_pb.d.ts +5 -5
  924. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/type_pb.d.ts +3 -3
  925. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/wrappers.d.ts +10 -0
  926. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/wrappers.js +23 -0
  927. package/node_modules/@bufbuild/protobuf/package.json +1 -1
  928. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts +305 -2
  929. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts.map +1 -1
  930. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js +34 -4
  931. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js.map +1 -1
  932. package/node_modules/@evalops/contracts/dist/index.d.ts +88 -0
  933. package/node_modules/@evalops/contracts/dist/index.d.ts.map +1 -1
  934. package/node_modules/@evalops/contracts/dist/index.js +2 -0
  935. package/node_modules/@evalops/contracts/dist/index.js.map +1 -1
  936. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts +77 -77
  937. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts.map +1 -1
  938. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js +1 -1
  939. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js.map +1 -1
  940. package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts +182 -0
  941. package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts.map +1 -0
  942. package/node_modules/@evalops/contracts/dist/runtime-app-server.js +83 -0
  943. package/node_modules/@evalops/contracts/dist/runtime-app-server.js.map +1 -0
  944. package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts +133 -0
  945. package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts.map +1 -0
  946. package/node_modules/@evalops/contracts/dist/runtime-server-request.js +68 -0
  947. package/node_modules/@evalops/contracts/dist/runtime-server-request.js.map +1 -0
  948. package/node_modules/@evalops/contracts/dist/schemas.d.ts +178 -0
  949. package/node_modules/@evalops/contracts/dist/schemas.d.ts.map +1 -1
  950. package/node_modules/@evalops/contracts/dist/schemas.js +165 -0
  951. package/node_modules/@evalops/contracts/dist/schemas.js.map +1 -1
  952. package/node_modules/@evalops/contracts/dist/typebox-utils.d.ts +2 -0
  953. package/node_modules/@evalops/contracts/dist/typebox-utils.d.ts.map +1 -0
  954. package/node_modules/@evalops/contracts/dist/typebox-utils.js +5 -0
  955. package/node_modules/@evalops/contracts/dist/typebox-utils.js.map +1 -0
  956. package/node_modules/@evalops/contracts/dist/validators.d.ts +4 -1
  957. package/node_modules/@evalops/contracts/dist/validators.d.ts.map +1 -1
  958. package/node_modules/@evalops/contracts/dist/validators.js +4 -1
  959. package/node_modules/@evalops/contracts/dist/validators.js.map +1 -1
  960. package/node_modules/@evalops/contracts/package.json +1 -1
  961. package/node_modules/@evalops/tui/package.json +1 -1
  962. package/node_modules/string-width/index.js +93 -9
  963. package/node_modules/string-width/package.json +1 -1
  964. package/package.json +32 -25
  965. package/dist/cli-tui/commands/grouped/auth-commands.d.ts.map +0 -1
  966. package/dist/cli-tui/commands/grouped/auth-commands.js.map +0 -1
  967. package/dist/cli-tui/commands/grouped/config-commands.d.ts.map +0 -1
  968. package/dist/cli-tui/commands/grouped/config-commands.js.map +0 -1
  969. package/dist/cli-tui/commands/grouped/diag-commands.d.ts.map +0 -1
  970. package/dist/cli-tui/commands/grouped/diag-commands.js.map +0 -1
  971. package/dist/cli-tui/commands/grouped/git-commands.d.ts.map +0 -1
  972. package/dist/cli-tui/commands/grouped/git-commands.js.map +0 -1
  973. package/dist/cli-tui/commands/grouped/index.d.ts.map +0 -1
  974. package/dist/cli-tui/commands/grouped/index.js.map +0 -1
  975. package/dist/cli-tui/commands/grouped/safety-commands.d.ts.map +0 -1
  976. package/dist/cli-tui/commands/grouped/safety-commands.js.map +0 -1
  977. package/dist/cli-tui/commands/grouped/session-commands.d.ts.map +0 -1
  978. package/dist/cli-tui/commands/grouped/session-commands.js.map +0 -1
  979. package/dist/cli-tui/commands/grouped/tools-commands.d.ts.map +0 -1
  980. package/dist/cli-tui/commands/grouped/tools-commands.js.map +0 -1
  981. package/dist/cli-tui/commands/grouped/ui-commands.d.ts.map +0 -1
  982. package/dist/cli-tui/commands/grouped/ui-commands.js.map +0 -1
  983. package/dist/cli-tui/commands/grouped/undo-commands.d.ts.map +0 -1
  984. package/dist/cli-tui/commands/grouped/undo-commands.js.map +0 -1
  985. package/dist/cli-tui/commands/grouped/usage-commands.d.ts.map +0 -1
  986. package/dist/cli-tui/commands/grouped/usage-commands.js.map +0 -1
  987. package/dist/cli-tui/commands/grouped/utils.d.ts.map +0 -1
  988. package/dist/cli-tui/commands/grouped/utils.js.map +0 -1
  989. package/dist/cli-tui/commands/grouped-command-handlers.d.ts.map +0 -1
  990. package/dist/cli-tui/commands/grouped-command-handlers.js +0 -135
  991. package/dist/cli-tui/commands/grouped-command-handlers.js.map +0 -1
  992. package/dist/cli-tui/tui-renderer/grouped-handlers-wiring.d.ts +0 -78
  993. package/dist/cli-tui/tui-renderer/grouped-handlers-wiring.d.ts.map +0 -1
  994. package/dist/cli-tui/tui-renderer/grouped-handlers-wiring.js +0 -129
  995. package/dist/cli-tui/tui-renderer/grouped-handlers-wiring.js.map +0 -1
  996. package/node_modules/@evalops/memory/dist/client.d.ts +0 -94
  997. package/node_modules/@evalops/memory/dist/client.js +0 -503
  998. package/node_modules/@evalops/memory/gen/proto/dist/memory/v1/memory_pb.d.ts +0 -608
  999. package/node_modules/@evalops/memory/gen/proto/dist/memory/v1/memory_pb.js +0 -187
  1000. package/node_modules/@evalops/memory/package.json +0 -26
  1001. /package/dist/cli-tui/commands/{grouped → subcommands}/usage-commands.d.ts +0 -0
@@ -13,15 +13,15 @@
13
13
  */
14
14
  import { SecurityAdvisor, formatAdvisory, } from "../../../safety/security-advisor.js";
15
15
  import { getEventStats, getRecentEvents, } from "../../../telemetry/security-events.js";
16
- import { createGroupedCommandHandler } from "./utils.js";
16
+ import { createSubcommandHandler } from "./utils.js";
17
17
  export function createSafetyCommandHandler(deps) {
18
- return createGroupedCommandHandler({
18
+ return createSubcommandHandler({
19
19
  defaultSubcommand: "status",
20
20
  showHelp: showSafetyHelp,
21
21
  routes: [
22
22
  {
23
23
  match: ["status", "info"],
24
- execute: () => showSafetyStatus(deps),
24
+ execute: ({ ctx }) => showSafetyStatus(ctx, deps),
25
25
  },
26
26
  {
27
27
  match: ["approvals", "approval", "approve"],
@@ -37,18 +37,18 @@ export function createSafetyCommandHandler(deps) {
37
37
  },
38
38
  {
39
39
  match: ["events", "security", "logs"],
40
- execute: ({ ctx }) => showSecurityEvents(ctx, deps),
40
+ execute: ({ ctx }) => showSecurityEvents(ctx),
41
41
  },
42
42
  {
43
43
  match: ["threats", "threat", "advisory"],
44
- execute: () => showThreatLevel(deps),
44
+ execute: ({ ctx }) => showThreatLevel(ctx),
45
45
  },
46
46
  ],
47
47
  });
48
48
  }
49
- function showSafetyStatus(deps) {
49
+ function showSafetyStatus(ctx, deps) {
50
50
  const state = deps.getSafetyState();
51
- deps.showInfo(`Safety Settings:
51
+ ctx.showInfo(`Safety Settings:
52
52
  Approval Mode: ${state.approvalMode}
53
53
  Plan Mode: ${state.planMode ? "on" : "off"}
54
54
  Guardian: ${state.guardianEnabled ? "enabled" : "disabled"}
@@ -87,7 +87,7 @@ function formatEvent(event) {
87
87
  /**
88
88
  * Show recent security events
89
89
  */
90
- function showSecurityEvents(ctx, deps) {
90
+ function showSecurityEvents(ctx) {
91
91
  // Parse limit from arguments
92
92
  const args = ctx.argumentText.split(/\s+/).filter(Boolean);
93
93
  const subArg = args[1]; // Skip "events" subcommand
@@ -95,7 +95,7 @@ function showSecurityEvents(ctx, deps) {
95
95
  const events = getRecentEvents(limit);
96
96
  const stats = getEventStats();
97
97
  if (events.length === 0) {
98
- deps.showInfo(`Security Events:
98
+ ctx.showInfo(`Security Events:
99
99
  No security events recorded in this session.
100
100
 
101
101
  Stats: 0 total events
@@ -107,7 +107,7 @@ function showSecurityEvents(ctx, deps) {
107
107
  .reverse() // Most recent first
108
108
  .map((e) => ` ${formatEvent(e)}`)
109
109
  .join("\n");
110
- deps.showInfo(`Security Events (last ${events.length}):
110
+ ctx.showInfo(`Security Events (last ${events.length}):
111
111
  ${eventLines}
112
112
 
113
113
  Stats:
@@ -119,7 +119,7 @@ Use /safety threats for threat assessment.`);
119
119
  /**
120
120
  * Show threat level and advisories
121
121
  */
122
- function showThreatLevel(deps) {
122
+ function showThreatLevel(ctx) {
123
123
  const advisor = new SecurityAdvisor({ enableRealtime: false });
124
124
  const threat = advisor.getThreatLevel();
125
125
  const advisories = advisor.analyze();
@@ -143,7 +143,7 @@ function showThreatLevel(deps) {
143
143
  output += "\n No active advisories.\n";
144
144
  }
145
145
  output += "\nUse /safety events [N] to see recent events.";
146
- deps.showInfo(output);
146
+ ctx.showInfo(output);
147
147
  advisor.dispose();
148
148
  }
149
149
  //# sourceMappingURL=safety-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety-commands.js","sourceRoot":"","sources":["../../../../src/cli-tui/commands/subcommands/safety-commands.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Consolidated /safety command handler.\n *\n * Combines: /approvals, /plan-mode, /guardian, /security events\n *\n * Usage:\n * /safety - Show safety settings overview\n * /safety approvals [mode] - Approval mode (auto|prompt|fail)\n * /safety plan [on|off] - Toggle plan mode\n * /safety guardian [cmd] - Guardian scanning (run|status|enable|disable)\n * /safety events [N] - Show recent N security events (default: 10)\n * /safety threats - Show threat level and advisories\n */\n\nimport {\n\tSecurityAdvisor,\n\tformatAdvisory,\n} from \"../../../safety/security-advisor.js\";\nimport {\n\ttype SecurityEvent,\n\tgetEventStats,\n\tgetRecentEvents,\n} from \"../../../telemetry/security-events.js\";\nimport type { CommandExecutionContext } from \"../types.js\";\nimport { createSubcommandHandler } from \"./utils.js\";\n\nexport interface SafetyCommandDeps {\n\thandleApprovals: (ctx: CommandExecutionContext) => void;\n\thandlePlanMode: (ctx: CommandExecutionContext) => void;\n\thandleGuardian: (ctx: CommandExecutionContext) => Promise<void> | void;\n\tgetSafetyState: () => {\n\t\tapprovalMode: string;\n\t\tplanMode: boolean;\n\t\tguardianEnabled: boolean;\n\t};\n}\n\nexport function createSafetyCommandHandler(deps: SafetyCommandDeps) {\n\treturn createSubcommandHandler({\n\t\tdefaultSubcommand: \"status\",\n\t\tshowHelp: showSafetyHelp,\n\t\troutes: [\n\t\t\t{\n\t\t\t\tmatch: [\"status\", \"info\"],\n\t\t\t\texecute: ({ ctx }) => showSafetyStatus(ctx, deps),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"approvals\", \"approval\", \"approve\"],\n\t\t\t\texecute: ({ rewriteContext }) =>\n\t\t\t\t\tdeps.handleApprovals(rewriteContext(\"approvals\")),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"plan\", \"plan-mode\", \"planmode\"],\n\t\t\t\texecute: ({ rewriteContext }) =>\n\t\t\t\t\tdeps.handlePlanMode(rewriteContext(\"plan-mode\")),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"guardian\", \"guard\", \"scan\"],\n\t\t\t\texecute: ({ rewriteContext }) =>\n\t\t\t\t\tdeps.handleGuardian(rewriteContext(\"guardian\")),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"events\", \"security\", \"logs\"],\n\t\t\t\texecute: ({ ctx }) => showSecurityEvents(ctx),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"threats\", \"threat\", \"advisory\"],\n\t\t\t\texecute: ({ ctx }) => showThreatLevel(ctx),\n\t\t\t},\n\t\t],\n\t});\n}\n\nfunction showSafetyStatus(\n\tctx: CommandExecutionContext,\n\tdeps: SafetyCommandDeps,\n): void {\n\tconst state = deps.getSafetyState();\n\tctx.showInfo(`Safety Settings:\n Approval Mode: ${state.approvalMode}\n Plan Mode: ${state.planMode ? \"on\" : \"off\"}\n Guardian: ${state.guardianEnabled ? \"enabled\" : \"disabled\"}\n\nUse /safety <setting> to change a setting.`);\n}\n\nfunction showSafetyHelp(ctx: CommandExecutionContext): void {\n\tctx.showInfo(`Safety Commands:\n /safety Show safety settings\n /safety approvals [mode] Set approval mode (auto|prompt|fail)\n /safety plan [on|off] Toggle plan mode (ask before mutations)\n /safety guardian [cmd] Guardian scanning:\n - run: scan staged files\n - status: show last scan\n - enable/disable: toggle enforcement\n /safety events [N] Show recent N security events (default: 10)\n /safety threats Show threat level and advisories\n\nDirect shortcuts still work: /approvals, /plan-mode, /guardian`);\n}\n\n/**\n * Format a security event for display\n */\nfunction formatEvent(event: SecurityEvent): string {\n\tconst severityIcon: Record<string, string> = {\n\t\tcritical: \"🔴\",\n\t\thigh: \"🟠\",\n\t\tmedium: \"🟡\",\n\t\tlow: \"🔵\",\n\t};\n\tconst icon = severityIcon[event.severity] ?? \"•\";\n\tconst time = new Date(event.timestamp).toLocaleTimeString();\n\tconst tool = event.toolName ? ` [${event.toolName}]` : \"\";\n\treturn `${icon} ${time}${tool} ${event.description}`;\n}\n\n/**\n * Show recent security events\n */\nfunction showSecurityEvents(ctx: CommandExecutionContext): void {\n\t// Parse limit from arguments\n\tconst args = ctx.argumentText.split(/\\s+/).filter(Boolean);\n\tconst subArg = args[1]; // Skip \"events\" subcommand\n\tconst limit = subArg ? Number.parseInt(subArg, 10) || 10 : 10;\n\n\tconst events = getRecentEvents(limit);\n\tconst stats = getEventStats();\n\n\tif (events.length === 0) {\n\t\tctx.showInfo(`Security Events:\n No security events recorded in this session.\n\n Stats: 0 total events\n\n Use /safety threats to see threat assessment.`);\n\t\treturn;\n\t}\n\n\tconst eventLines = events\n\t\t.reverse() // Most recent first\n\t\t.map((e) => ` ${formatEvent(e)}`)\n\t\t.join(\"\\n\");\n\n\tctx.showInfo(`Security Events (last ${events.length}):\n${eventLines}\n\nStats:\n Total: ${stats.total} | Critical: ${stats.bySeverity.critical} | High: ${stats.bySeverity.high} | Medium: ${stats.bySeverity.medium} | Low: ${stats.bySeverity.low}\n Recent high-severity (1h): ${stats.recentHigh}\n\nUse /safety threats for threat assessment.`);\n}\n\n/**\n * Show threat level and advisories\n */\nfunction showThreatLevel(ctx: CommandExecutionContext): void {\n\tconst advisor = new SecurityAdvisor({ enableRealtime: false });\n\tconst threat = advisor.getThreatLevel();\n\tconst advisories = advisor.analyze();\n\n\tconst levelIcon: Record<string, string> = {\n\t\tinfo: \"✅\",\n\t\twarning: \"⚠️\",\n\t\talert: \"🚨\",\n\t\tcritical: \"🔴\",\n\t};\n\n\tlet output = `Threat Assessment:\n Level: ${levelIcon[threat.level] ?? \"•\"} ${threat.level.toUpperCase()} (score: ${threat.score.toFixed(1)})\n ${threat.summary}\n`;\n\n\tif (advisories.length > 0) {\n\t\toutput += `\\nActive Advisories (${advisories.length}):\\n`;\n\t\tfor (const adv of advisories) {\n\t\t\toutput += `\\n${formatAdvisory(adv)}\\n`;\n\t\t}\n\t} else {\n\t\toutput += \"\\n No active advisories.\\n\";\n\t}\n\n\toutput += \"\\nUse /safety events [N] to see recent events.\";\n\n\tctx.showInfo(output);\n\tadvisor.dispose();\n}\n"]}
@@ -21,7 +21,7 @@
21
21
  import type { CommandExecutionContext } from "../types.js";
22
22
  export interface SessionCommandDeps {
23
23
  handleSessionInfo: (ctx: CommandExecutionContext) => void;
24
- handleNewChat: () => void | Promise<void>;
24
+ handleNewChat: (ctx: CommandExecutionContext) => void | Promise<void>;
25
25
  handleClear: () => Promise<void> | void;
26
26
  handleSessionsList: (ctx: CommandExecutionContext) => Promise<void> | void;
27
27
  handleBranch: (ctx: CommandExecutionContext) => Promise<void> | void;
@@ -31,7 +31,6 @@ export interface SessionCommandDeps {
31
31
  handleShare: (ctx: CommandExecutionContext) => Promise<void> | void;
32
32
  handleRecover: (ctx: CommandExecutionContext) => Promise<void> | void;
33
33
  handleCleanup: (ctx: CommandExecutionContext) => Promise<void> | void;
34
- showInfo: (message: string) => void;
35
34
  }
36
35
  export declare function createSessionCommandHandler(deps: SessionCommandDeps): (ctx: CommandExecutionContext) => Promise<void>;
37
36
  //# sourceMappingURL=session-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-commands.d.ts","sourceRoot":"","sources":["../../../../src/cli-tui/commands/subcommands/session-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAG3D,MAAM,WAAW,kBAAkB;IAClC,iBAAiB,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAC1D,aAAa,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACxC,kBAAkB,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC3E,YAAY,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACrE,UAAU,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnE,WAAW,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpE,YAAY,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACrE,WAAW,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpE,aAAa,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtE,aAAa,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACtE;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,kBAAkB,mDAiGnE"}
@@ -18,9 +18,9 @@
18
18
  * /session unfavorite - Remove favorite mark
19
19
  * /session summary - Add manual summary
20
20
  */
21
- import { createGroupedCommandHandler, isSessionId } from "./utils.js";
21
+ import { createSubcommandHandler, isSessionId } from "./utils.js";
22
22
  export function createSessionCommandHandler(deps) {
23
- return createGroupedCommandHandler({
23
+ return createSubcommandHandler({
24
24
  defaultSubcommand: "info",
25
25
  showHelp: showSessionHelp,
26
26
  routes: [
@@ -28,7 +28,7 @@ export function createSessionCommandHandler(deps) {
28
28
  match: ["info", "status"],
29
29
  execute: ({ ctx }) => deps.handleSessionInfo(ctx),
30
30
  },
31
- { match: ["new"], execute: () => deps.handleNewChat() },
31
+ { match: ["new"], execute: ({ ctx }) => deps.handleNewChat(ctx) },
32
32
  { match: ["clear"], execute: () => deps.handleClear() },
33
33
  {
34
34
  match: ["list", "ls", "history"],
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-commands.js","sourceRoot":"","sources":["../../../../src/cli-tui/commands/subcommands/session-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAgBlE,MAAM,UAAU,2BAA2B,CAAC,IAAwB;IACnE,OAAO,uBAAuB,CAAC;QAC9B,iBAAiB,EAAE,MAAM;QACzB,QAAQ,EAAE,eAAe;QACzB,MAAM,EAAE;YACP;gBACC,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;gBACzB,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;aACjD;YACD,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;YACjE,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;YACvD;gBACC,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC;gBAChC,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAC/B,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;aACzD;YACD;gBACC,KAAK,EAAE,CAAC,MAAM,CAAC;gBACf,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAChD,IAAI,CAAC,kBAAkB,CACtB,aAAa,CACZ,kBAAkB,gBAAgB,EAAE,EACpC,QAAQ,gBAAgB,EAAE,CAAC,IAAI,EAAE,CACjC,CACD;aACF;YACD;gBACC,KAAK,EAAE,CAAC,QAAQ,CAAC;gBACjB,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAC/B,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;aAC5C;YACD;gBACC,KAAK,EAAE,CAAC,MAAM,CAAC;gBACf,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAC/B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;aACxC;YACD;gBACC,KAAK,EAAE,CAAC,OAAO,CAAC;gBAChB,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAC/B,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;aAC1C;YACD;gBACC,KAAK,EAAE,CAAC,QAAQ,CAAC;gBACjB,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAC/B,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;aAC5C;YACD;gBACC,KAAK,EAAE,CAAC,OAAO,CAAC;gBAChB,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAC/B,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;aAC1C;YACD;gBACC,KAAK,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC;gBAC1B,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAC9B,IAAI,CAAC,kBAAkB,CACtB,aAAa,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAC/C;aACF;YACD;gBACC,KAAK,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC;gBAC9B,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAC9B,IAAI,CAAC,kBAAkB,CACtB,aAAa,CAAC,sBAAsB,EAAE,YAAY,CAAC,CACnD;aACF;YACD;gBACC,KAAK,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;gBAC/B,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAChD,IAAI,CAAC,iBAAiB,CACrB,aAAa,CACZ,oBAAoB,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAC7C,WAAW,gBAAgB,EAAE,CAAC,IAAI,EAAE,CACpC,CACD;aACF;YACD;gBACC,KAAK,EAAE,CAAC,SAAS,CAAC;gBAClB,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAC/B,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;aAC9C;YACD;gBACC,KAAK,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;gBAC3B,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAC/B,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;aAC9C;SACD;QACD,SAAS,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,EAAE;YACvD,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,CAAC,kBAAkB,CAC5B,aAAa,CAAC,kBAAkB,UAAU,EAAE,EAAE,QAAQ,UAAU,EAAE,CAAC,CACnE,CAAC;gBACF,OAAO;YACR,CAAC;YACD,GAAG,CAAC,SAAS,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;YACnD,eAAe,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,GAA4B;IACpD,GAAG,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;YAiBF,CAAC,CAAC;AACd,CAAC","sourcesContent":["/**\n * Consolidated /session command handler.\n *\n * Combines: /new, /clear, /session, /sessions, /branch, /queue, /export, /share\n *\n * Usage:\n * /session - Show current session info (default)\n * /session new - Start a fresh chat session\n * /session clear - Clear context and start fresh\n * /session list - List recent sessions\n * /session load <id> - Load a session by ID\n * /session branch [n] - Branch from message n\n * /session tree - Navigate the session tree\n * /session queue - Show/manage message queue\n * /session export - Export session to file\n * /session share - Generate shareable HTML\n * /session favorite - Mark current session as favorite\n * /session unfavorite - Remove favorite mark\n * /session summary - Add manual summary\n */\n\nimport type { CommandExecutionContext } from \"../types.js\";\nimport { createSubcommandHandler, isSessionId } from \"./utils.js\";\n\nexport interface SessionCommandDeps {\n\thandleSessionInfo: (ctx: CommandExecutionContext) => void;\n\thandleNewChat: (ctx: CommandExecutionContext) => void | Promise<void>;\n\thandleClear: () => Promise<void> | void;\n\thandleSessionsList: (ctx: CommandExecutionContext) => Promise<void> | void;\n\thandleBranch: (ctx: CommandExecutionContext) => Promise<void> | void;\n\thandleTree: (ctx: CommandExecutionContext) => Promise<void> | void;\n\thandleQueue: (ctx: CommandExecutionContext) => Promise<void> | void;\n\thandleExport: (ctx: CommandExecutionContext) => Promise<void> | void;\n\thandleShare: (ctx: CommandExecutionContext) => Promise<void> | void;\n\thandleRecover: (ctx: CommandExecutionContext) => Promise<void> | void;\n\thandleCleanup: (ctx: CommandExecutionContext) => Promise<void> | void;\n}\n\nexport function createSessionCommandHandler(deps: SessionCommandDeps) {\n\treturn createSubcommandHandler({\n\t\tdefaultSubcommand: \"info\",\n\t\tshowHelp: showSessionHelp,\n\t\troutes: [\n\t\t\t{\n\t\t\t\tmatch: [\"info\", \"status\"],\n\t\t\t\texecute: ({ ctx }) => deps.handleSessionInfo(ctx),\n\t\t\t},\n\t\t\t{ match: [\"new\"], execute: ({ ctx }) => deps.handleNewChat(ctx) },\n\t\t\t{ match: [\"clear\"], execute: () => deps.handleClear() },\n\t\t\t{\n\t\t\t\tmatch: [\"list\", \"ls\", \"history\"],\n\t\t\t\texecute: ({ rewriteContext }) =>\n\t\t\t\t\tdeps.handleSessionsList(rewriteContext(\"sessions list\")),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"load\"],\n\t\t\t\texecute: ({ customContext, restArgumentText }) =>\n\t\t\t\t\tdeps.handleSessionsList(\n\t\t\t\t\t\tcustomContext(\n\t\t\t\t\t\t\t`/sessions load ${restArgumentText}`,\n\t\t\t\t\t\t\t`load ${restArgumentText}`.trim(),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"branch\"],\n\t\t\t\texecute: ({ rewriteContext }) =>\n\t\t\t\t\tdeps.handleBranch(rewriteContext(\"branch\")),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"tree\"],\n\t\t\t\texecute: ({ rewriteContext }) =>\n\t\t\t\t\tdeps.handleTree(rewriteContext(\"tree\")),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"queue\"],\n\t\t\t\texecute: ({ rewriteContext }) =>\n\t\t\t\t\tdeps.handleQueue(rewriteContext(\"queue\")),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"export\"],\n\t\t\t\texecute: ({ rewriteContext }) =>\n\t\t\t\t\tdeps.handleExport(rewriteContext(\"export\")),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"share\"],\n\t\t\t\texecute: ({ rewriteContext }) =>\n\t\t\t\t\tdeps.handleShare(rewriteContext(\"share\")),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"favorite\", \"fav\"],\n\t\t\t\texecute: ({ customContext }) =>\n\t\t\t\t\tdeps.handleSessionsList(\n\t\t\t\t\t\tcustomContext(\"/sessions favorite\", \"favorite\"),\n\t\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"unfavorite\", \"unfav\"],\n\t\t\t\texecute: ({ customContext }) =>\n\t\t\t\t\tdeps.handleSessionsList(\n\t\t\t\t\t\tcustomContext(\"/sessions unfavorite\", \"unfavorite\"),\n\t\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"summary\", \"summarize\"],\n\t\t\t\texecute: ({ customContext, restArgumentText }) =>\n\t\t\t\t\tdeps.handleSessionInfo(\n\t\t\t\t\t\tcustomContext(\n\t\t\t\t\t\t\t`/session summary ${restArgumentText}`.trim(),\n\t\t\t\t\t\t\t`summary ${restArgumentText}`.trim(),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"recover\"],\n\t\t\t\texecute: ({ rewriteContext }) =>\n\t\t\t\t\tdeps.handleRecover(rewriteContext(\"recover\")),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"cleanup\", \"prune\"],\n\t\t\t\texecute: ({ rewriteContext }) =>\n\t\t\t\t\tdeps.handleCleanup(rewriteContext(\"cleanup\")),\n\t\t\t},\n\t\t],\n\t\tonUnknown: async ({ ctx, subcommand, customContext }) => {\n\t\t\tif (isSessionId(subcommand)) {\n\t\t\t\tawait deps.handleSessionsList(\n\t\t\t\t\tcustomContext(`/sessions load ${subcommand}`, `load ${subcommand}`),\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tctx.showError(`Unknown subcommand: ${subcommand}`);\n\t\t\tshowSessionHelp(ctx);\n\t\t},\n\t});\n}\n\nfunction showSessionHelp(ctx: CommandExecutionContext): void {\n\tctx.showInfo(`Session Commands:\n /session Show current session info\n /session new Start a fresh chat session\n /session clear Clear context and start fresh\n /session list List recent sessions\n /session load <id> Load a session by ID or index\n /session branch [n] Branch from user message n\n /session tree Navigate the session tree\n /session queue Show/manage message queue\n /session export Export session to file\n /session share Generate shareable HTML\n /session favorite Mark as favorite\n /session unfavorite Remove favorite mark\n /session summary \"x\" Add manual summary\n /session recover Restore from latest auto-recovery backup\n /session cleanup Prune old sessions (respects favorites)\n\nAliases: /s`);\n}\n"]}
@@ -22,7 +22,6 @@ export interface ToolsCommandDeps {
22
22
  handleWorkflow: (ctx: CommandExecutionContext) => void | Promise<void>;
23
23
  handleRun: (ctx: CommandExecutionContext) => void | Promise<void>;
24
24
  handleCommands: (ctx: CommandExecutionContext) => void | Promise<void>;
25
- showInfo: (message: string) => void;
26
25
  }
27
26
  export declare function createToolsCommandHandler(deps: ToolsCommandDeps): (ctx: CommandExecutionContext) => Promise<void>;
28
27
  //# sourceMappingURL=tools-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools-commands.d.ts","sourceRoot":"","sources":["../../../../src/cli-tui/commands/subcommands/tools-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAG3D,MAAM,WAAW,gBAAgB;IAChC,WAAW,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,SAAS,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,SAAS,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,cAAc,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,SAAS,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,cAAc,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,gBAAgB,mDAsD/D"}
@@ -14,9 +14,9 @@
14
14
  * /tools run <script> - Run npm scripts
15
15
  * /tools commands - User command management
16
16
  */
17
- import { createGroupedCommandHandler } from "./utils.js";
17
+ import { createSubcommandHandler } from "./utils.js";
18
18
  export function createToolsCommandHandler(deps) {
19
- return createGroupedCommandHandler({
19
+ return createSubcommandHandler({
20
20
  defaultSubcommand: "list",
21
21
  showHelp: showToolsHelp,
22
22
  routes: [
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools-commands.js","sourceRoot":"","sources":["../../../../src/cli-tui/commands/subcommands/tools-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAWrD,MAAM,UAAU,yBAAyB,CAAC,IAAsB;IAC/D,OAAO,uBAAuB,CAAC;QAC9B,iBAAiB,EAAE,MAAM;QACzB,QAAQ,EAAE,aAAa;QACvB,MAAM,EAAE;YACP;gBACC,KAAK,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC;gBACnC,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAC9B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;aACvD;YACD;gBACC,KAAK,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC;gBACvC,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAC9B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;aAC/D;YACD;gBACC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;gBACzB,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAC9B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;aACzD;YACD;gBACC,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;gBACzB,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;aACtE;YACD;gBACC,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;gBAC1B,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;aACtE;YACD;gBACC,KAAK,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC;gBACtC,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAC/B,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;aAChD;YACD;gBACC,KAAK,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;gBAC/B,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;aACtE;YACD;gBACC,KAAK,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC;gBAClC,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAC/B,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;aAChD;SACD;QACD,SAAS,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE;YAC7D,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,CAAC,SAAS,CACnB,aAAa,CAAC,QAAQ,GAAG,CAAC,YAAY,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC,CAC3D,CAAC;gBACF,OAAO;YACR,CAAC;YACD,GAAG,CAAC,SAAS,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;YACnD,aAAa,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,GAA4B;IAClD,GAAG,CAAC,QAAQ,CAAC;;;;;;;;;;;4EAW8D,CAAC,CAAC;AAC9E,CAAC","sourcesContent":["/**\n * Consolidated /tools command handler.\n *\n * Combines: /tools, /mcp, /lsp, /workflow, /run, /commands\n *\n * Usage:\n * /tools - Show available tools\n * /tools list - List all tools\n * /tools failures - Show tool failures\n * /tools clear - Clear tool logs\n * /tools mcp - Show, search, or manage MCP servers, approvals, and auth presets\n * /tools lsp [cmd] - LSP server management\n * /tools workflow [cmd] - Run workflows\n * /tools run <script> - Run npm scripts\n * /tools commands - User command management\n */\n\nimport type { CommandExecutionContext } from \"../types.js\";\nimport { createSubcommandHandler } from \"./utils.js\";\n\nexport interface ToolsCommandDeps {\n\thandleTools: (ctx: CommandExecutionContext) => void | Promise<void>;\n\thandleMcp: (ctx: CommandExecutionContext) => void | Promise<void>;\n\thandleLsp: (ctx: CommandExecutionContext) => void | Promise<void>;\n\thandleWorkflow: (ctx: CommandExecutionContext) => void | Promise<void>;\n\thandleRun: (ctx: CommandExecutionContext) => void | Promise<void>;\n\thandleCommands: (ctx: CommandExecutionContext) => void | Promise<void>;\n}\n\nexport function createToolsCommandHandler(deps: ToolsCommandDeps) {\n\treturn createSubcommandHandler({\n\t\tdefaultSubcommand: \"list\",\n\t\tshowHelp: showToolsHelp,\n\t\troutes: [\n\t\t\t{\n\t\t\t\tmatch: [\"list\", \"all\", \"available\"],\n\t\t\t\texecute: ({ customContext }) =>\n\t\t\t\t\tdeps.handleTools(customContext(\"/tools list\", \"list\")),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"failures\", \"errors\", \"failed\"],\n\t\t\t\texecute: ({ customContext }) =>\n\t\t\t\t\tdeps.handleTools(customContext(\"/tools failures\", \"failures\")),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"clear\", \"reset\"],\n\t\t\t\texecute: ({ customContext }) =>\n\t\t\t\t\tdeps.handleTools(customContext(\"/tools clear\", \"clear\")),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"mcp\", \"servers\"],\n\t\t\t\texecute: ({ rewriteContext }) => deps.handleMcp(rewriteContext(\"mcp\")),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"lsp\", \"language\"],\n\t\t\t\texecute: ({ rewriteContext }) => deps.handleLsp(rewriteContext(\"lsp\")),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"workflow\", \"workflows\", \"wf\"],\n\t\t\t\texecute: ({ rewriteContext }) =>\n\t\t\t\t\tdeps.handleWorkflow(rewriteContext(\"workflow\")),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"run\", \"script\", \"npm\"],\n\t\t\t\texecute: ({ rewriteContext }) => deps.handleRun(rewriteContext(\"run\")),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"commands\", \"cmd\", \"user\"],\n\t\t\t\texecute: ({ rewriteContext }) =>\n\t\t\t\t\tdeps.handleCommands(rewriteContext(\"commands\")),\n\t\t\t},\n\t\t],\n\t\tonUnknown: async ({ ctx, subcommand, args, customContext }) => {\n\t\t\tif (args[0] && !args[0].startsWith(\"-\")) {\n\t\t\t\tawait deps.handleRun(\n\t\t\t\t\tcustomContext(`/run ${ctx.argumentText}`, ctx.argumentText),\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tctx.showError(`Unknown subcommand: ${subcommand}`);\n\t\t\tshowToolsHelp(ctx);\n\t\t},\n\t});\n}\n\nfunction showToolsHelp(ctx: CommandExecutionContext): void {\n\tctx.showInfo(`Tools Commands:\n /tools Show available tools\n /tools list List all tools\n /tools failures Show tool failures\n /tools clear Clear tool logs\n /tools mcp Show, search, or manage MCP servers, approvals, and auth presets\n /tools lsp [cmd] LSP (status|start|stop|restart|detect)\n /tools workflow [cmd] Workflows (list|run|validate|show)\n /tools run <script> Run npm script\n /tools commands User command management\n\nDirect shortcuts still work: /tools, /mcp, /lsp, /workflow, /run, /commands`);\n}\n"]}
@@ -19,7 +19,6 @@ export interface UiCommandDeps {
19
19
  handleFooter: (ctx: CommandExecutionContext) => void;
20
20
  handleZen: (ctx: CommandExecutionContext) => void;
21
21
  handleCompactTools: (ctx: CommandExecutionContext) => void;
22
- showInfo: (message: string) => void;
23
22
  getUiState: () => {
24
23
  zenMode: boolean;
25
24
  cleanMode: string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-commands.d.ts","sourceRoot":"","sources":["../../../../src/cli-tui/commands/subcommands/ui-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAG3D,MAAM,WAAW,aAAa;IAC7B,WAAW,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,IAAI,CAAC;IACpD,WAAW,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,IAAI,CAAC;IACpD,YAAY,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,IAAI,CAAC;IACrD,SAAS,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAClD,kBAAkB,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAC3D,UAAU,EAAE,MAAM;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,OAAO,CAAC;KACtB,CAAC;CACF;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,mDA6CzD"}
@@ -12,15 +12,15 @@
12
12
  * /ui zen [on|off] - Toggle zen mode
13
13
  * /ui compact [on|off] - Toggle tool output folding
14
14
  */
15
- import { createGroupedCommandHandler } from "./utils.js";
15
+ import { createSubcommandHandler } from "./utils.js";
16
16
  export function createUiCommandHandler(deps) {
17
- return createGroupedCommandHandler({
17
+ return createSubcommandHandler({
18
18
  defaultSubcommand: "status",
19
19
  showHelp: showUiHelp,
20
20
  routes: [
21
21
  {
22
22
  match: ["status", "info"],
23
- execute: () => showUiStatus(deps),
23
+ execute: ({ ctx }) => showUiStatus(ctx, deps),
24
24
  },
25
25
  {
26
26
  match: ["theme", "color", "colors"],
@@ -49,9 +49,9 @@ export function createUiCommandHandler(deps) {
49
49
  ],
50
50
  });
51
51
  }
52
- function showUiStatus(deps) {
52
+ function showUiStatus(ctx, deps) {
53
53
  const state = deps.getUiState();
54
- deps.showInfo(`UI Settings:
54
+ ctx.showInfo(`UI Settings:
55
55
  Zen Mode: ${state.zenMode ? "on" : "off"}
56
56
  Clean Mode: ${state.cleanMode}
57
57
  Footer: ${state.footerMode}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-commands.js","sourceRoot":"","sources":["../../../../src/cli-tui/commands/subcommands/ui-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAgBrD,MAAM,UAAU,sBAAsB,CAAC,IAAmB;IACzD,OAAO,uBAAuB,CAAC;QAC9B,iBAAiB,EAAE,QAAQ;QAC3B,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE;YACP;gBACC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;gBACzB,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC;aAC7C;YACD;gBACC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;gBACnC,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAC/B,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;aAC1C;YACD;gBACC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;gBACzB,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAC/B,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;aAC1C;YACD;gBACC,KAAK,EAAE,CAAC,QAAQ,CAAC;gBACjB,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAC/B,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;aAC5C;YACD;gBACC,KAAK,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC;gBAClC,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAChD,IAAI,CAAC,YAAY,CAChB,aAAa,CACZ,WAAW,gBAAgB,IAAI,SAAS,EAAE,EAC1C,gBAAgB,IAAI,SAAS,CAC7B,CACD;aACF;YACD;gBACC,KAAK,EAAE,CAAC,KAAK,CAAC;gBACd,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;aACtE;YACD;gBACC,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;gBAC1B,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAC/B,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;aACzD;SACD;KACD,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,GAA4B,EAAE,IAAmB;IACtE,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAChC,GAAG,CAAC,QAAQ,CAAC;cACA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;gBAC1B,KAAK,CAAC,SAAS;YACnB,KAAK,CAAC,UAAU;mBACT,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;;uCAEb,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,UAAU,CAAC,GAA4B;IAC/C,GAAG,CAAC,QAAQ,CAAC;;;;;;;;;mDASqC,CAAC,CAAC;AACrD,CAAC","sourcesContent":["/**\n * Consolidated /ui command handler.\n *\n * Combines: /theme, /clean, /footer, /alerts, /zen, /compact-tools\n *\n * Usage:\n * /ui - Show current UI settings\n * /ui theme - Open theme selector\n * /ui clean [mode] - Toggle text deduplication (off|soft|aggressive)\n * /ui footer [mode] - Footer style (ensemble|solo|history|clear)\n * /ui alerts [cmd] - Alert management (history|clear)\n * /ui zen [on|off] - Toggle zen mode\n * /ui compact [on|off] - Toggle tool output folding\n */\n\nimport type { CommandExecutionContext } from \"../types.js\";\nimport { createSubcommandHandler } from \"./utils.js\";\n\nexport interface UiCommandDeps {\n\thandleTheme: (ctx: CommandExecutionContext) => void;\n\thandleClean: (ctx: CommandExecutionContext) => void;\n\thandleFooter: (ctx: CommandExecutionContext) => void;\n\thandleZen: (ctx: CommandExecutionContext) => void;\n\thandleCompactTools: (ctx: CommandExecutionContext) => void;\n\tgetUiState: () => {\n\t\tzenMode: boolean;\n\t\tcleanMode: string;\n\t\tfooterMode: string;\n\t\tcompactTools: boolean;\n\t};\n}\n\nexport function createUiCommandHandler(deps: UiCommandDeps) {\n\treturn createSubcommandHandler({\n\t\tdefaultSubcommand: \"status\",\n\t\tshowHelp: showUiHelp,\n\t\troutes: [\n\t\t\t{\n\t\t\t\tmatch: [\"status\", \"info\"],\n\t\t\t\texecute: ({ ctx }) => showUiStatus(ctx, deps),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"theme\", \"color\", \"colors\"],\n\t\t\t\texecute: ({ rewriteContext }) =>\n\t\t\t\t\tdeps.handleTheme(rewriteContext(\"theme\")),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"clean\", \"dedup\"],\n\t\t\t\texecute: ({ rewriteContext }) =>\n\t\t\t\t\tdeps.handleClean(rewriteContext(\"clean\")),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"footer\"],\n\t\t\t\texecute: ({ rewriteContext }) =>\n\t\t\t\t\tdeps.handleFooter(rewriteContext(\"footer\")),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"alerts\", \"notifications\"],\n\t\t\t\texecute: ({ customContext, restArgumentText }) =>\n\t\t\t\t\tdeps.handleFooter(\n\t\t\t\t\t\tcustomContext(\n\t\t\t\t\t\t\t`/footer ${restArgumentText || \"history\"}`,\n\t\t\t\t\t\t\trestArgumentText || \"history\",\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"zen\"],\n\t\t\t\texecute: ({ rewriteContext }) => deps.handleZen(rewriteContext(\"zen\")),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"compact\", \"fold\"],\n\t\t\t\texecute: ({ rewriteContext }) =>\n\t\t\t\t\tdeps.handleCompactTools(rewriteContext(\"compact-tools\")),\n\t\t\t},\n\t\t],\n\t});\n}\n\nfunction showUiStatus(ctx: CommandExecutionContext, deps: UiCommandDeps): void {\n\tconst state = deps.getUiState();\n\tctx.showInfo(`UI Settings:\n Zen Mode: ${state.zenMode ? \"on\" : \"off\"}\n Clean Mode: ${state.cleanMode}\n Footer: ${state.footerMode}\n Compact Tools: ${state.compactTools ? \"on\" : \"off\"}\n\nUse /ui <setting> to change a setting.`);\n}\n\nfunction showUiHelp(ctx: CommandExecutionContext): void {\n\tctx.showInfo(`UI Commands:\n /ui Show current UI settings\n /ui theme Open theme selector\n /ui clean [mode] Text deduplication (off|soft|aggressive)\n /ui footer [mode] Footer style (ensemble|solo)\n /ui alerts [cmd] Alerts (history|clear)\n /ui zen [on|off] Toggle zen mode\n /ui compact [on|off] Toggle tool output folding\n\nDirect shortcuts still work: /theme, /zen, /footer`);\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Grouped /undo command handler.
2
+ * Command-suite /undo handler.
3
3
  *
4
4
  * Combines: /undo, /checkpoint, /changes
5
5
  *
@@ -15,7 +15,6 @@ export interface UndoCommandDeps {
15
15
  handleUndo: (ctx: CommandExecutionContext) => Promise<void> | void;
16
16
  handleCheckpoint: (ctx: CommandExecutionContext) => Promise<void> | void;
17
17
  handleChanges: (ctx: CommandExecutionContext) => void;
18
- showInfo: (message: string) => void;
19
18
  getUndoState: () => {
20
19
  canUndo: boolean;
21
20
  undoCount: number;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"undo-commands.d.ts","sourceRoot":"","sources":["../../../../src/cli-tui/commands/subcommands/undo-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAG3D,MAAM,WAAW,eAAe;IAC/B,UAAU,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnE,gBAAgB,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACzE,aAAa,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,IAAI,CAAC;IACtD,YAAY,EAAE,MAAM;QACnB,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;CACF;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,eAAe,mDA4C7D"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Grouped /undo command handler.
2
+ * Command-suite /undo handler.
3
3
  *
4
4
  * Combines: /undo, /checkpoint, /changes
5
5
  *
@@ -10,9 +10,9 @@
10
10
  * /undo changes - List tracked file changes
11
11
  * /undo history - Show undo/redo history
12
12
  */
13
- import { createGroupedCommandHandler, isNumericArg } from "./utils.js";
13
+ import { createSubcommandHandler, isNumericArg } from "./utils.js";
14
14
  export function createUndoCommandHandler(deps) {
15
- return createGroupedCommandHandler({
15
+ return createSubcommandHandler({
16
16
  defaultSubcommand: "undo",
17
17
  showHelp: showUndoHelp,
18
18
  routes: [
@@ -30,7 +30,7 @@ export function createUndoCommandHandler(deps) {
30
30
  },
31
31
  {
32
32
  match: ["history", "list", "status"],
33
- execute: () => showUndoHistory(deps),
33
+ execute: ({ ctx }) => showUndoHistory(ctx, deps),
34
34
  },
35
35
  ],
36
36
  onUnknown: async ({ ctx, subcommand, args, customContext }) => {
@@ -47,12 +47,12 @@ export function createUndoCommandHandler(deps) {
47
47
  },
48
48
  });
49
49
  }
50
- function showUndoHistory(deps) {
50
+ function showUndoHistory(ctx, deps) {
51
51
  const state = deps.getUndoState();
52
52
  const checkpointList = state.checkpoints.length > 0
53
53
  ? state.checkpoints.map((c) => ` - ${c}`).join("\n")
54
54
  : " (none)";
55
- deps.showInfo(`Undo Status:
55
+ ctx.showInfo(`Undo Status:
56
56
  Can Undo: ${state.canUndo ? "yes" : "no"} (${state.undoCount} tracked changes)
57
57
 
58
58
  Checkpoints:
@@ -0,0 +1 @@
1
+ {"version":3,"file":"undo-commands.js","sourceRoot":"","sources":["../../../../src/cli-tui/commands/subcommands/undo-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAanE,MAAM,UAAU,wBAAwB,CAAC,IAAqB;IAC7D,OAAO,uBAAuB,CAAC;QAC9B,iBAAiB,EAAE,MAAM;QACzB,QAAQ,EAAE,YAAY;QACtB,MAAM,EAAE;YACP;gBACC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;gBACjC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;aAC1C;YACD;gBACC,KAAK,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC;gBACjD,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAC/B,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;aACpD;YACD;gBACC,KAAK,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC;gBACtC,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAChD,IAAI,CAAC,aAAa,CACjB,aAAa,CAAC,YAAY,gBAAgB,EAAE,EAAE,gBAAgB,CAAC,CAC/D;aACF;YACD;gBACC,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC;gBACpC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC;aAChD;SACD;QACD,SAAS,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE;YAC7D,IAAI,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,UAAU,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;gBACxE,OAAO;YACR,CAAC;YACD,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,CAAC,gBAAgB,CAC1B,aAAa,CACZ,uBAAuB,GAAG,CAAC,YAAY,EAAE,EACzC,WAAW,GAAG,CAAC,YAAY,EAAE,CAC7B,CACD,CAAC;gBACF,OAAO;YACR,CAAC;YACD,GAAG,CAAC,SAAS,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;YACnD,YAAY,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACvB,GAA4B,EAC5B,IAAqB;IAErB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IAClC,MAAM,cAAc,GACnB,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;QAC3B,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACrD,CAAC,CAAC,UAAU,CAAC;IAEf,GAAG,CAAC,QAAQ,CAAC;cACA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,SAAS;;;EAG5D,cAAc;;0CAE0B,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,YAAY,CAAC,GAA4B;IACjD,GAAG,CAAC,QAAQ,CAAC;;;;;;;;mDAQqC,CAAC,CAAC;AACrD,CAAC","sourcesContent":["/**\n * Command-suite /undo handler.\n *\n * Combines: /undo, /checkpoint, /changes\n *\n * Usage:\n * /undo - Undo last action\n * /undo [N] - Undo last N actions\n * /undo checkpoint [name] - Create/restore checkpoint\n * /undo changes - List tracked file changes\n * /undo history - Show undo/redo history\n */\n\nimport type { CommandExecutionContext } from \"../types.js\";\nimport { createSubcommandHandler, isNumericArg } from \"./utils.js\";\n\nexport interface UndoCommandDeps {\n\thandleUndo: (ctx: CommandExecutionContext) => Promise<void> | void;\n\thandleCheckpoint: (ctx: CommandExecutionContext) => Promise<void> | void;\n\thandleChanges: (ctx: CommandExecutionContext) => void;\n\tgetUndoState: () => {\n\t\tcanUndo: boolean;\n\t\tundoCount: number;\n\t\tcheckpoints: string[];\n\t};\n}\n\nexport function createUndoCommandHandler(deps: UndoCommandDeps) {\n\treturn createSubcommandHandler({\n\t\tdefaultSubcommand: \"undo\",\n\t\tshowHelp: showUndoHelp,\n\t\troutes: [\n\t\t\t{\n\t\t\t\tmatch: [\"undo\", \"back\", \"revert\"],\n\t\t\t\texecute: ({ ctx }) => deps.handleUndo(ctx),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"checkpoint\", \"save\", \"snap\", \"snapshot\"],\n\t\t\t\texecute: ({ rewriteContext }) =>\n\t\t\t\t\tdeps.handleCheckpoint(rewriteContext(\"checkpoint\")),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"changes\", \"files\", \"tracked\"],\n\t\t\t\texecute: ({ customContext, restArgumentText }) =>\n\t\t\t\t\tdeps.handleChanges(\n\t\t\t\t\t\tcustomContext(`/changes ${restArgumentText}`, restArgumentText),\n\t\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"history\", \"list\", \"status\"],\n\t\t\t\texecute: ({ ctx }) => showUndoHistory(ctx, deps),\n\t\t\t},\n\t\t],\n\t\tonUnknown: async ({ ctx, subcommand, args, customContext }) => {\n\t\t\tif (isNumericArg(subcommand)) {\n\t\t\t\tawait deps.handleUndo(customContext(`/undo ${subcommand}`, subcommand));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (args[0] && !args[0].startsWith(\"-\")) {\n\t\t\t\tawait deps.handleCheckpoint(\n\t\t\t\t\tcustomContext(\n\t\t\t\t\t\t`/checkpoint restore ${ctx.argumentText}`,\n\t\t\t\t\t\t`restore ${ctx.argumentText}`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tctx.showError(`Unknown subcommand: ${subcommand}`);\n\t\t\tshowUndoHelp(ctx);\n\t\t},\n\t});\n}\n\nfunction showUndoHistory(\n\tctx: CommandExecutionContext,\n\tdeps: UndoCommandDeps,\n): void {\n\tconst state = deps.getUndoState();\n\tconst checkpointList =\n\t\tstate.checkpoints.length > 0\n\t\t\t? state.checkpoints.map((c) => ` - ${c}`).join(\"\\n\")\n\t\t\t: \" (none)\";\n\n\tctx.showInfo(`Undo Status:\n Can Undo: ${state.canUndo ? \"yes\" : \"no\"} (${state.undoCount} tracked changes)\n\nCheckpoints:\n${checkpointList}\n\nUse /undo or /undo <N> to revert changes.`);\n}\n\nfunction showUndoHelp(ctx: CommandExecutionContext): void {\n\tctx.showInfo(`Undo Commands:\n /undo Undo last action\n /undo <N> Undo last N actions\n /undo checkpoint [name] Create named checkpoint\n /undo checkpoint restore <name> Restore checkpoint\n /undo changes List tracked file changes\n /undo history Show undo status and checkpoints\n\nDirect shortcuts still work: /checkpoint, /changes`);\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-commands.d.ts","sourceRoot":"","sources":["../../../../src/cli-tui/commands/subcommands/usage-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAG3D,MAAM,WAAW,gBAAgB;IAChC,UAAU,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnE,WAAW,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpE,WAAW,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACpE;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,gBAAgB,mDAyC/D"}
@@ -9,9 +9,9 @@
9
9
  * /usage quota [cmd] - Token quota (detailed|models|alerts|limit <n>)
10
10
  * /usage stats - Combined status and cost
11
11
  */
12
- import { createGroupedCommandHandler } from "./utils.js";
12
+ import { createSubcommandHandler } from "./utils.js";
13
13
  export function createUsageCommandHandler(deps) {
14
- return createGroupedCommandHandler({
14
+ return createSubcommandHandler({
15
15
  defaultSubcommand: "overview",
16
16
  showHelp: showUsageHelp,
17
17
  routes: [
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-commands.js","sourceRoot":"","sources":["../../../../src/cli-tui/commands/subcommands/usage-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAQrD,MAAM,UAAU,yBAAyB,CAAC,IAAsB;IAC/D,OAAO,uBAAuB,CAAC;QAC9B,iBAAiB,EAAE,UAAU;QAC7B,QAAQ,EAAE,aAAa;QACvB,MAAM,EAAE;YACP;gBACC,KAAK,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC;gBAC9B,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;aAC3C;YACD;gBACC,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;gBACjC,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAC/B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;aACxC;YACD;gBACC,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC;gBAC7C,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAC/B,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;aAC1C;YACD;gBACC,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;gBACvB,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;aAC3C;SACD;QACD,SAAS,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,EAAE;YACvD,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACzE,MAAM,IAAI,CAAC,UAAU,CACpB,aAAa,CAAC,SAAS,GAAG,CAAC,YAAY,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC,CAC5D,CAAC;gBACF,OAAO;YACR,CAAC;YACD,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3D,MAAM,IAAI,CAAC,WAAW,CACrB,aAAa,CAAC,UAAU,GAAG,CAAC,YAAY,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC,CAC7D,CAAC;gBACF,OAAO;YACR,CAAC;YACD,GAAG,CAAC,SAAS,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;YACnD,aAAa,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,GAA4B;IAClD,GAAG,CAAC,QAAQ,CAAC;;;;;;;;;;;mDAWqC,CAAC,CAAC;AACrD,CAAC","sourcesContent":["/**\n * Consolidated /usage command handler.\n *\n * Combines: /cost, /quota, /stats\n *\n * Usage:\n * /usage - Show usage overview\n * /usage cost [period] - Show costs (breakdown <period>|clear)\n * /usage quota [cmd] - Token quota (detailed|models|alerts|limit <n>)\n * /usage stats - Combined status and cost\n */\n\nimport type { CommandExecutionContext } from \"../types.js\";\nimport { createSubcommandHandler } from \"./utils.js\";\n\nexport interface UsageCommandDeps {\n\thandleCost: (ctx: CommandExecutionContext) => Promise<void> | void;\n\thandleQuota: (ctx: CommandExecutionContext) => Promise<void> | void;\n\thandleStats: (ctx: CommandExecutionContext) => Promise<void> | void;\n}\n\nexport function createUsageCommandHandler(deps: UsageCommandDeps) {\n\treturn createSubcommandHandler({\n\t\tdefaultSubcommand: \"overview\",\n\t\tshowHelp: showUsageHelp,\n\t\troutes: [\n\t\t\t{\n\t\t\t\tmatch: [\"overview\", \"summary\"],\n\t\t\t\texecute: ({ ctx }) => deps.handleStats(ctx),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"cost\", \"costs\", \"spend\"],\n\t\t\t\texecute: ({ rewriteContext }) =>\n\t\t\t\t\tdeps.handleCost(rewriteContext(\"cost\")),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"quota\", \"tokens\", \"limit\", \"limits\"],\n\t\t\t\texecute: ({ rewriteContext }) =>\n\t\t\t\t\tdeps.handleQuota(rewriteContext(\"quota\")),\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatch: [\"stats\", \"all\"],\n\t\t\t\texecute: ({ ctx }) => deps.handleStats(ctx),\n\t\t\t},\n\t\t],\n\t\tonUnknown: async ({ ctx, subcommand, customContext }) => {\n\t\t\tif ([\"breakdown\", \"clear\", \"week\", \"month\", \"day\"].includes(subcommand)) {\n\t\t\t\tawait deps.handleCost(\n\t\t\t\t\tcustomContext(`/cost ${ctx.argumentText}`, ctx.argumentText),\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ([\"detailed\", \"models\", \"alerts\"].includes(subcommand)) {\n\t\t\t\tawait deps.handleQuota(\n\t\t\t\t\tcustomContext(`/quota ${ctx.argumentText}`, ctx.argumentText),\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tctx.showError(`Unknown subcommand: ${subcommand}`);\n\t\t\tshowUsageHelp(ctx);\n\t\t},\n\t});\n}\n\nfunction showUsageHelp(ctx: CommandExecutionContext): void {\n\tctx.showInfo(`Usage Commands:\n /usage Show usage overview\n /usage cost Show cost summary\n /usage cost breakdown <period> Detailed cost breakdown\n /usage cost clear Clear cost history\n /usage quota Show token quota status\n /usage quota detailed Full quota details (enterprise)\n /usage quota models Per-model breakdown (enterprise)\n /usage quota limit <n> Set session token limit\n /usage stats Combined status and cost\n\nDirect shortcuts still work: /cost, /quota, /stats`);\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  /**
2
- * Shared utilities for grouped command handlers.
2
+ * Shared utilities for subcommand suite handlers.
3
3
  *
4
4
  * Provides consistent argument parsing and context rewriting
5
- * across all grouped command implementations.
5
+ * across all subcommand suite implementations.
6
6
  */
7
7
  import type { AutocompleteItem } from "@evalops/tui";
8
8
  import type { CommandExecutionContext } from "../types.js";
@@ -20,32 +20,32 @@ export interface ParsedSubcommand {
20
20
  customContext: (rawInput: string, argumentText: string) => CommandExecutionContext;
21
21
  }
22
22
  /**
23
- * Runtime context passed to declarative grouped command routes.
23
+ * Runtime context passed to declarative subcommand suite routes.
24
24
  */
25
- export interface GroupedCommandRouteContext extends ParsedSubcommand {
25
+ export interface SubcommandRouteContext extends ParsedSubcommand {
26
26
  ctx: CommandExecutionContext;
27
27
  /** Arguments after the matched subcommand */
28
28
  restArgs: string[];
29
29
  /** Original argument text after the matched subcommand */
30
30
  restArgumentText: string;
31
- /** Show the grouped command help for the current command */
31
+ /** Show the subcommand suite help for the current command */
32
32
  showHelp: () => void;
33
33
  }
34
34
  /**
35
- * One grouped subcommand route, matched either by aliases or custom logic.
35
+ * One subcommand route, matched either by aliases or custom logic.
36
36
  */
37
- export interface GroupedCommandRoute {
38
- match: readonly string[] | ((context: GroupedCommandRouteContext) => boolean);
39
- execute: (context: GroupedCommandRouteContext) => void | Promise<void>;
37
+ export interface SubcommandRoute {
38
+ match: readonly string[] | ((context: SubcommandRouteContext) => boolean);
39
+ execute: (context: SubcommandRouteContext) => void | Promise<void>;
40
40
  }
41
41
  /**
42
- * Declarative grouped command handler configuration.
42
+ * Declarative subcommand suite handler configuration.
43
43
  */
44
- export interface GroupedCommandHandlerOptions {
44
+ export interface SubcommandHandlerOptions {
45
45
  defaultSubcommand: string;
46
- routes: readonly GroupedCommandRoute[];
46
+ routes: readonly SubcommandRoute[];
47
47
  showHelp: (ctx: CommandExecutionContext) => void;
48
- onUnknown?: (context: GroupedCommandRouteContext) => void | Promise<void>;
48
+ onUnknown?: (context: SubcommandRouteContext) => void | Promise<void>;
49
49
  }
50
50
  /**
51
51
  * Parse subcommand arguments from a context with a default subcommand.
@@ -64,7 +64,7 @@ export interface GroupedCommandHandlerOptions {
64
64
  * ```
65
65
  */
66
66
  export declare function parseSubcommand(ctx: CommandExecutionContext, defaultSubcommand: string): ParsedSubcommand;
67
- export declare function createGroupedCommandHandler({ defaultSubcommand, routes, showHelp, onUnknown, }: GroupedCommandHandlerOptions): (ctx: CommandExecutionContext) => Promise<void>;
67
+ export declare function createSubcommandHandler({ defaultSubcommand, routes, showHelp, onUnknown, }: SubcommandHandlerOptions): (ctx: CommandExecutionContext) => Promise<void>;
68
68
  /**
69
69
  * Check if a string matches common help aliases.
70
70
  */
@@ -100,7 +100,7 @@ export interface SubcommandDef {
100
100
  aliases?: string[];
101
101
  }
102
102
  /**
103
- * Create an autocomplete provider for grouped command subcommands.
103
+ * Create an autocomplete provider for command suite subcommands.
104
104
  *
105
105
  * @example
106
106
  * ```ts
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/cli-tui/commands/subcommands/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,8DAA8D;IAC9D,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,uBAAuB,CAAC;IACzD,gEAAgE;IAChE,aAAa,EAAE,CACd,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,KAChB,uBAAuB,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC/D,GAAG,EAAE,uBAAuB,CAAC;IAC7B,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,0DAA0D;IAC1D,gBAAgB,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,sBAAsB,KAAK,OAAO,CAAC,CAAC;IAC1E,OAAO,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnE;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACxC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;IACnC,QAAQ,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,IAAI,CAAC;IACjD,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtE;AAQD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAC9B,GAAG,EAAE,uBAAuB,EAC5B,iBAAiB,EAAE,MAAM,GACvB,gBAAgB,CAoBlB;AAED,wBAAgB,uBAAuB,CAAC,EACvC,iBAAiB,EACjB,MAAM,EACN,QAAQ,EACR,SAAS,GACT,EAAE,wBAAwB,IAEzB,KAAK,uBAAuB,KAC1B,OAAO,CAAC,IAAI,CAAC,CAiChB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;CAMjB,CAAC;AAEX;;GAEG;AACH,wBAAgB,YAAY,CAC3B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,SAAS,MAAM,EAAE,GACxB,OAAO,CAET;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CAC1C,WAAW,EAAE,SAAS,aAAa,EAAE,GACnC,CAAC,MAAM,EAAE,MAAM,KAAK,gBAAgB,EAAE,GAAG,IAAI,CA4B/C;AAMD,eAAO,MAAM,mBAAmB,EAAE,aAAa,EA6B9C,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,aAAa,EAqC3C,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,aAAa,EAQ7C,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,aAAa,EAwBzC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,aAAa,EA2B7C,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,aAAa,EAQ1C,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,aAAa,EAa3C,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,aAAa,EAiB5C,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,aAAa,EAqB3C,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,aAAa,EA6B7C,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,aAAa,EA6B5C,CAAC"}
@@ -1,10 +1,10 @@
1
1
  /**
2
- * Shared utilities for grouped command handlers.
2
+ * Shared utilities for subcommand suite handlers.
3
3
  *
4
4
  * Provides consistent argument parsing and context rewriting
5
- * across all grouped command implementations.
5
+ * across all subcommand suite implementations.
6
6
  */
7
- function isGroupedCommandAliasMatch(match) {
7
+ function isSubcommandAliasMatch(match) {
8
8
  return Array.isArray(match);
9
9
  }
10
10
  /**
@@ -38,8 +38,8 @@ export function parseSubcommand(ctx, defaultSubcommand) {
38
38
  });
39
39
  return { subcommand, args, rewriteContext, customContext };
40
40
  }
41
- export function createGroupedCommandHandler({ defaultSubcommand, routes, showHelp, onUnknown, }) {
42
- return async function handleGroupedCommand(ctx) {
41
+ export function createSubcommandHandler({ defaultSubcommand, routes, showHelp, onUnknown, }) {
42
+ return async function handleSubcommand(ctx) {
43
43
  const parsed = parseSubcommand(ctx, defaultSubcommand);
44
44
  const routeContext = {
45
45
  ctx,
@@ -52,7 +52,7 @@ export function createGroupedCommandHandler({ defaultSubcommand, routes, showHel
52
52
  showHelp(ctx);
53
53
  return;
54
54
  }
55
- const route = routes.find((candidate) => isGroupedCommandAliasMatch(candidate.match)
55
+ const route = routes.find((candidate) => isSubcommandAliasMatch(candidate.match)
56
56
  ? matchesAlias(routeContext.subcommand, candidate.match)
57
57
  : candidate.match(routeContext));
58
58
  if (route) {
@@ -102,7 +102,7 @@ export function matchesAlias(subcommand, aliases) {
102
102
  return aliases.includes(subcommand.toLowerCase());
103
103
  }
104
104
  /**
105
- * Create an autocomplete provider for grouped command subcommands.
105
+ * Create an autocomplete provider for command suite subcommands.
106
106
  *
107
107
  * @example
108
108
  * ```ts
@@ -137,7 +137,7 @@ export function createSubcommandCompletions(subcommands) {
137
137
  };
138
138
  }
139
139
  // ═══════════════════════════════════════════════════════════════════════════
140
- // Predefined subcommand completions for grouped commands
140
+ // Predefined subcommand completions for command suites
141
141
  // ═══════════════════════════════════════════════════════════════════════════
142
142
  export const SESSION_SUBCOMMANDS = [
143
143
  {
@@ -286,6 +286,11 @@ export const AUTH_SUBCOMMANDS = [
286
286
  },
287
287
  { name: "login", description: "Authenticate", aliases: ["signin"] },
288
288
  { name: "logout", description: "Remove credentials", aliases: ["signout"] },
289
+ {
290
+ name: "source-of-truth",
291
+ description: "Set connector source-of-truth policy",
292
+ aliases: ["sot", "policy"],
293
+ },
289
294
  ];
290
295
  export const USAGE_SUBCOMMANDS = [
291
296
  {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/cli-tui/commands/subcommands/utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Shared utilities for subcommand suite handlers.\n *\n * Provides consistent argument parsing and context rewriting\n * across all subcommand suite implementations.\n */\n\nimport type { AutocompleteItem } from \"@evalops/tui\";\nimport type { CommandExecutionContext } from \"../types.js\";\n\n/**\n * Result of parsing subcommand arguments.\n */\nexport interface ParsedSubcommand {\n\t/** The subcommand name (first argument, lowercased) */\n\tsubcommand: string;\n\t/** All arguments split by whitespace */\n\targs: string[];\n\t/** Creates a new context for delegating to another command */\n\trewriteContext: (cmd: string) => CommandExecutionContext;\n\t/** Creates a context with custom raw input and argument text */\n\tcustomContext: (\n\t\trawInput: string,\n\t\targumentText: string,\n\t) => CommandExecutionContext;\n}\n\n/**\n * Runtime context passed to declarative subcommand suite routes.\n */\nexport interface SubcommandRouteContext extends ParsedSubcommand {\n\tctx: CommandExecutionContext;\n\t/** Arguments after the matched subcommand */\n\trestArgs: string[];\n\t/** Original argument text after the matched subcommand */\n\trestArgumentText: string;\n\t/** Show the subcommand suite help for the current command */\n\tshowHelp: () => void;\n}\n\n/**\n * One subcommand route, matched either by aliases or custom logic.\n */\nexport interface SubcommandRoute {\n\tmatch: readonly string[] | ((context: SubcommandRouteContext) => boolean);\n\texecute: (context: SubcommandRouteContext) => void | Promise<void>;\n}\n\n/**\n * Declarative subcommand suite handler configuration.\n */\nexport interface SubcommandHandlerOptions {\n\tdefaultSubcommand: string;\n\troutes: readonly SubcommandRoute[];\n\tshowHelp: (ctx: CommandExecutionContext) => void;\n\tonUnknown?: (context: SubcommandRouteContext) => void | Promise<void>;\n}\n\nfunction isSubcommandAliasMatch(\n\tmatch: SubcommandRoute[\"match\"],\n): match is readonly string[] {\n\treturn Array.isArray(match);\n}\n\n/**\n * Parse subcommand arguments from a context with a default subcommand.\n *\n * @example\n * ```ts\n * const { subcommand, args, rewriteContext } = parseSubcommand(ctx, \"status\");\n * switch (subcommand) {\n * case \"status\":\n * deps.handleStatus();\n * break;\n * case \"start\":\n * await deps.handleStart(rewriteContext(\"start\"));\n * break;\n * }\n * ```\n */\nexport function parseSubcommand(\n\tctx: CommandExecutionContext,\n\tdefaultSubcommand: string,\n): ParsedSubcommand {\n\tconst args = ctx.argumentText.trim().split(/\\s+/);\n\tconst subcommand = args[0]?.toLowerCase() || defaultSubcommand;\n\n\tconst rewriteContext = (cmd: string): CommandExecutionContext => ({\n\t\t...ctx,\n\t\trawInput: `/${cmd} ${args.slice(1).join(\" \")}`.trim(),\n\t\targumentText: args.slice(1).join(\" \"),\n\t});\n\n\tconst customContext = (\n\t\trawInput: string,\n\t\targumentText: string,\n\t): CommandExecutionContext => ({\n\t\t...ctx,\n\t\trawInput,\n\t\targumentText,\n\t});\n\n\treturn { subcommand, args, rewriteContext, customContext };\n}\n\nexport function createSubcommandHandler({\n\tdefaultSubcommand,\n\troutes,\n\tshowHelp,\n\tonUnknown,\n}: SubcommandHandlerOptions) {\n\treturn async function handleSubcommand(\n\t\tctx: CommandExecutionContext,\n\t): Promise<void> {\n\t\tconst parsed = parseSubcommand(ctx, defaultSubcommand);\n\t\tconst routeContext: SubcommandRouteContext = {\n\t\t\tctx,\n\t\t\t...parsed,\n\t\t\trestArgs: parsed.args.slice(1),\n\t\t\trestArgumentText: parsed.args.slice(1).join(\" \"),\n\t\t\tshowHelp: () => showHelp(ctx),\n\t\t};\n\n\t\tif (isHelpRequest(routeContext.subcommand)) {\n\t\t\tshowHelp(ctx);\n\t\t\treturn;\n\t\t}\n\n\t\tconst route = routes.find((candidate) =>\n\t\t\tisSubcommandAliasMatch(candidate.match)\n\t\t\t\t? matchesAlias(routeContext.subcommand, candidate.match)\n\t\t\t\t: candidate.match(routeContext),\n\t\t);\n\t\tif (route) {\n\t\t\tawait route.execute(routeContext);\n\t\t\treturn;\n\t\t}\n\n\t\tif (onUnknown) {\n\t\t\tawait onUnknown(routeContext);\n\t\t\treturn;\n\t\t}\n\n\t\tctx.showError(`Unknown subcommand: ${routeContext.subcommand}`);\n\t\tshowHelp(ctx);\n\t};\n}\n\n/**\n * Check if a string matches common help aliases.\n */\nexport function isHelpRequest(subcommand: string): boolean {\n\treturn [\"help\", \"?\", \"-h\", \"--help\"].includes(subcommand);\n}\n\n/**\n * Check if a string looks like a numeric argument.\n */\nexport function isNumericArg(value: string): boolean {\n\treturn /^\\d+$/.test(value);\n}\n\n/**\n * Check if a string looks like a session ID (hex string or number).\n */\nexport function isSessionId(value: string): boolean {\n\treturn /^[a-f0-9-]+$/i.test(value) || /^\\d+$/.test(value);\n}\n\n/**\n * Common aliases for subcommands across handlers.\n */\nexport const COMMON_ALIASES = {\n\tstatus: [\"status\", \"st\", \"info\"],\n\tlist: [\"list\", \"ls\", \"all\"],\n\thelp: [\"help\", \"?\", \"-h\", \"--help\"],\n\tenable: [\"enable\", \"on\", \"yes\", \"true\", \"1\"],\n\tdisable: [\"disable\", \"off\", \"no\", \"false\", \"0\"],\n} as const;\n\n/**\n * Check if a subcommand matches any of the given aliases.\n */\nexport function matchesAlias(\n\tsubcommand: string,\n\taliases: readonly string[],\n): boolean {\n\treturn aliases.includes(subcommand.toLowerCase());\n}\n\n/**\n * Subcommand definition for autocomplete.\n */\nexport interface SubcommandDef {\n\tname: string;\n\tdescription: string;\n\taliases?: string[];\n}\n\n/**\n * Create an autocomplete provider for command suite subcommands.\n *\n * @example\n * ```ts\n * const completions = createSubcommandCompletions([\n * { name: \"status\", description: \"Show status\", aliases: [\"st\"] },\n * { name: \"list\", description: \"List items\", aliases: [\"ls\"] },\n * ]);\n * // Use in command definition:\n * { name: \"mygroup\", getArgumentCompletions: completions }\n * ```\n */\nexport function createSubcommandCompletions(\n\tsubcommands: readonly SubcommandDef[],\n): (prefix: string) => AutocompleteItem[] | null {\n\treturn (prefix: string): AutocompleteItem[] | null => {\n\t\tconst lowerPrefix = prefix.toLowerCase().trim();\n\n\t\t// If there's a space, we're past the subcommand - no completions\n\t\tif (lowerPrefix.includes(\" \")) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Filter subcommands matching the prefix\n\t\tconst matches = subcommands.filter(\n\t\t\t(sub) =>\n\t\t\t\tsub.name.toLowerCase().startsWith(lowerPrefix) ||\n\t\t\t\tsub.aliases?.some((a) => a.toLowerCase().startsWith(lowerPrefix)),\n\t\t);\n\n\t\tif (matches.length === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn matches.map((sub) => ({\n\t\t\tvalue: sub.name,\n\t\t\tlabel: sub.aliases?.length\n\t\t\t\t? `${sub.name} (${sub.aliases.join(\", \")})`\n\t\t\t\t: sub.name,\n\t\t\tdescription: sub.description,\n\t\t}));\n\t};\n}\n\n// ═══════════════════════════════════════════════════════════════════════════\n// Predefined subcommand completions for command suites\n// ═══════════════════════════════════════════════════════════════════════════\n\nexport const SESSION_SUBCOMMANDS: SubcommandDef[] = [\n\t{\n\t\tname: \"info\",\n\t\tdescription: \"Show current session info\",\n\t\taliases: [\"status\"],\n\t},\n\t{ name: \"new\", description: \"Start a fresh chat session\" },\n\t{ name: \"clear\", description: \"Clear context and start fresh\" },\n\t{\n\t\tname: \"list\",\n\t\tdescription: \"List recent sessions\",\n\t\taliases: [\"ls\", \"history\"],\n\t},\n\t{ name: \"load\", description: \"Load a session by ID\" },\n\t{ name: \"branch\", description: \"Branch from user message n\" },\n\t{ name: \"queue\", description: \"Show/manage message queue\" },\n\t{ name: \"export\", description: \"Export session to file\" },\n\t{ name: \"share\", description: \"Generate shareable HTML\" },\n\t{ name: \"favorite\", description: \"Mark as favorite\", aliases: [\"fav\"] },\n\t{\n\t\tname: \"unfavorite\",\n\t\tdescription: \"Remove favorite mark\",\n\t\taliases: [\"unfav\"],\n\t},\n\t{\n\t\tname: \"summary\",\n\t\tdescription: \"Add manual summary\",\n\t\taliases: [\"summarize\"],\n\t},\n];\n\nexport const DIAG_SUBCOMMANDS: SubcommandDef[] = [\n\t{ name: \"status\", description: \"Health snapshot\", aliases: [\"health\"] },\n\t{\n\t\tname: \"about\",\n\t\tdescription: \"Build and version info\",\n\t\taliases: [\"version\", \"info\"],\n\t},\n\t{\n\t\tname: \"context\",\n\t\tdescription: \"Token usage visualization\",\n\t\taliases: [\"tokens\"],\n\t},\n\t{\n\t\tname: \"stats\",\n\t\tdescription: \"Combined status and cost\",\n\t\taliases: [\"overview\"],\n\t},\n\t{\n\t\tname: \"background\",\n\t\tdescription: \"Background task config\",\n\t\taliases: [\"bg\"],\n\t},\n\t{ name: \"lsp\", description: \"LSP server status\" },\n\t{ name: \"mcp\", description: \"MCP server management\" },\n\t{ name: \"keys\", description: \"API key status\", aliases: [\"api\"] },\n\t{ name: \"telemetry\", description: \"Telemetry status\", aliases: [\"telem\"] },\n\t{ name: \"training\", description: \"Training preference\", aliases: [\"train\"] },\n\t{\n\t\tname: \"otel\",\n\t\tdescription: \"OpenTelemetry config\",\n\t\taliases: [\"opentelemetry\"],\n\t},\n\t{ name: \"config\", description: \"Configuration validation\", aliases: [\"cfg\"] },\n\t{ name: \"pii\", description: \"PII detection patterns\" },\n\t{ name: \"access\", description: \"Directory access rules\" },\n\t{ name: \"audit\", description: \"Audit log (enterprise)\" },\n\t{ name: \"bedrock\", description: \"AWS Bedrock status\", aliases: [\"aws\"] },\n];\n\nexport const ACCESS_SUBCOMMANDS: SubcommandDef[] = [\n\t{ name: \"safe\", description: \"Safe roots for file writes\" },\n\t{\n\t\tname: \"restricted\",\n\t\tdescription: \"System-protected paths\",\n\t\taliases: [\"blocked\"],\n\t},\n\t{ name: \"test\", description: \"Test a path against containment rules\" },\n];\n\nexport const UI_SUBCOMMANDS: SubcommandDef[] = [\n\t{\n\t\tname: \"status\",\n\t\tdescription: \"Show current UI settings\",\n\t\taliases: [\"info\"],\n\t},\n\t{\n\t\tname: \"theme\",\n\t\tdescription: \"Open theme selector\",\n\t\taliases: [\"color\", \"colors\"],\n\t},\n\t{ name: \"clean\", description: \"Text deduplication mode\", aliases: [\"dedup\"] },\n\t{ name: \"footer\", description: \"Footer style\" },\n\t{\n\t\tname: \"alerts\",\n\t\tdescription: \"Alert management\",\n\t\taliases: [\"notifications\"],\n\t},\n\t{ name: \"zen\", description: \"Toggle zen mode\" },\n\t{\n\t\tname: \"compact\",\n\t\tdescription: \"Toggle tool output folding\",\n\t\taliases: [\"fold\"],\n\t},\n];\n\nexport const SAFETY_SUBCOMMANDS: SubcommandDef[] = [\n\t{ name: \"status\", description: \"Show safety settings\", aliases: [\"info\"] },\n\t{\n\t\tname: \"approvals\",\n\t\tdescription: \"Set approval mode\",\n\t\taliases: [\"approval\", \"approve\"],\n\t},\n\t{\n\t\tname: \"plan\",\n\t\tdescription: \"Toggle plan mode\",\n\t\taliases: [\"plan-mode\", \"planmode\"],\n\t},\n\t{\n\t\tname: \"guardian\",\n\t\tdescription: \"Guardian scanning\",\n\t\taliases: [\"guard\", \"scan\"],\n\t},\n\t{\n\t\tname: \"events\",\n\t\tdescription: \"Show recent security events\",\n\t\taliases: [\"security\", \"logs\"],\n\t},\n\t{\n\t\tname: \"threats\",\n\t\tdescription: \"Show threat level and advisories\",\n\t\taliases: [\"threat\", \"advisory\"],\n\t},\n];\n\nexport const GIT_SUBCOMMANDS: SubcommandDef[] = [\n\t{ name: \"status\", description: \"Show git status\", aliases: [\"st\"] },\n\t{ name: \"diff\", description: \"Show diff for file\", aliases: [\"d\"] },\n\t{\n\t\tname: \"review\",\n\t\tdescription: \"Summarize status and diff\",\n\t\taliases: [\"summary\"],\n\t},\n];\n\nexport const AUTH_SUBCOMMANDS: SubcommandDef[] = [\n\t{\n\t\tname: \"status\",\n\t\tdescription: \"Show auth status\",\n\t\taliases: [\"info\", \"whoami\"],\n\t},\n\t{ name: \"login\", description: \"Authenticate\", aliases: [\"signin\"] },\n\t{ name: \"logout\", description: \"Remove credentials\", aliases: [\"signout\"] },\n\t{\n\t\tname: \"source-of-truth\",\n\t\tdescription: \"Set connector source-of-truth policy\",\n\t\taliases: [\"sot\", \"policy\"],\n\t},\n];\n\nexport const USAGE_SUBCOMMANDS: SubcommandDef[] = [\n\t{\n\t\tname: \"overview\",\n\t\tdescription: \"Show usage overview\",\n\t\taliases: [\"summary\"],\n\t},\n\t{\n\t\tname: \"cost\",\n\t\tdescription: \"Show cost summary\",\n\t\taliases: [\"costs\", \"spend\"],\n\t},\n\t{\n\t\tname: \"quota\",\n\t\tdescription: \"Show token quota\",\n\t\taliases: [\"tokens\", \"limit\", \"limits\"],\n\t},\n\t{ name: \"stats\", description: \"Combined status and cost\", aliases: [\"all\"] },\n];\n\nexport const UNDO_SUBCOMMANDS: SubcommandDef[] = [\n\t{\n\t\tname: \"undo\",\n\t\tdescription: \"Undo last action\",\n\t\taliases: [\"back\", \"revert\"],\n\t},\n\t{\n\t\tname: \"checkpoint\",\n\t\tdescription: \"Create/restore checkpoint\",\n\t\taliases: [\"save\", \"snap\", \"snapshot\"],\n\t},\n\t{\n\t\tname: \"changes\",\n\t\tdescription: \"List tracked file changes\",\n\t\taliases: [\"files\", \"tracked\"],\n\t},\n\t{\n\t\tname: \"history\",\n\t\tdescription: \"Show undo status\",\n\t\taliases: [\"list\", \"status\"],\n\t},\n];\n\nexport const CONFIG_SUBCOMMANDS: SubcommandDef[] = [\n\t{\n\t\tname: \"validate\",\n\t\tdescription: \"Validate configuration\",\n\t\taliases: [\"check\", \"status\"],\n\t},\n\t{ name: \"sources\", description: \"Show config sources\" },\n\t{ name: \"providers\", description: \"Show provider configuration\" },\n\t{ name: \"env\", description: \"Show environment variables\" },\n\t{\n\t\tname: \"import\",\n\t\tdescription: \"Import configuration presets\",\n\t\taliases: [\"preset\", \"presets\"],\n\t},\n\t{\n\t\tname: \"framework\",\n\t\tdescription: \"Set/show default framework\",\n\t\taliases: [\"fw\"],\n\t},\n\t{\n\t\tname: \"composer\",\n\t\tdescription: \"Manage custom composer configs\",\n\t\taliases: [\"persona\", \"agent\"],\n\t},\n\t{\n\t\tname: \"init\",\n\t\tdescription: \"Create AGENTS.md scaffolding\",\n\t\taliases: [\"scaffold\", \"setup\"],\n\t},\n];\n\nexport const TOOLS_SUBCOMMANDS: SubcommandDef[] = [\n\t{\n\t\tname: \"list\",\n\t\tdescription: \"List all tools\",\n\t\taliases: [\"all\", \"available\"],\n\t},\n\t{\n\t\tname: \"failures\",\n\t\tdescription: \"Show tool failures\",\n\t\taliases: [\"errors\", \"failed\"],\n\t},\n\t{ name: \"clear\", description: \"Clear tool logs\", aliases: [\"reset\"] },\n\t{\n\t\tname: \"mcp\",\n\t\tdescription: \"Show or manage MCP servers\",\n\t\taliases: [\"servers\"],\n\t},\n\t{ name: \"lsp\", description: \"LSP server management\", aliases: [\"language\"] },\n\t{\n\t\tname: \"workflow\",\n\t\tdescription: \"Run workflows\",\n\t\taliases: [\"workflows\", \"wf\"],\n\t},\n\t{ name: \"run\", description: \"Run npm scripts\", aliases: [\"script\", \"npm\"] },\n\t{\n\t\tname: \"commands\",\n\t\tdescription: \"User command management\",\n\t\taliases: [\"cmd\", \"user\"],\n\t},\n];\n"]}