@evalops/maestro 0.10.8 → 0.10.11

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 (1009) 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 +29 -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 +74 -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/init.d.ts +4 -0
  111. package/dist/cli/commands/init.d.ts.map +1 -0
  112. package/dist/cli/commands/init.js +140 -0
  113. package/dist/cli/commands/init.js.map +1 -0
  114. package/dist/cli/commands/memory.d.ts.map +1 -1
  115. package/dist/cli/commands/memory.js +23 -30
  116. package/dist/cli/commands/memory.js.map +1 -1
  117. package/dist/cli/commands/remote.d.ts +3 -0
  118. package/dist/cli/commands/remote.d.ts.map +1 -0
  119. package/dist/cli/commands/remote.js +631 -0
  120. package/dist/cli/commands/remote.js.map +1 -0
  121. package/dist/cli/commands/stats.d.ts +7 -0
  122. package/dist/cli/commands/stats.d.ts.map +1 -0
  123. package/dist/cli/commands/stats.js +167 -0
  124. package/dist/cli/commands/stats.js.map +1 -0
  125. package/dist/cli/headless-protocol.d.ts +16 -1
  126. package/dist/cli/headless-protocol.d.ts.map +1 -1
  127. package/dist/cli/headless-protocol.js +60 -4
  128. package/dist/cli/headless-protocol.js.map +1 -1
  129. package/dist/cli/headless.d.ts.map +1 -1
  130. package/dist/cli/headless.js +1 -0
  131. package/dist/cli/headless.js.map +1 -1
  132. package/dist/cli/help.d.ts.map +1 -1
  133. package/dist/cli/help.js +44 -1
  134. package/dist/cli/help.js.map +1 -1
  135. package/dist/cli/jsonl-writer.d.ts.map +1 -1
  136. package/dist/cli/jsonl-writer.js +19 -6
  137. package/dist/cli/jsonl-writer.js.map +1 -1
  138. package/dist/cli-tui/client-tools/client-tool-controller.d.ts.map +1 -1
  139. package/dist/cli-tui/client-tools/client-tool-controller.js +17 -1
  140. package/dist/cli-tui/client-tools/client-tool-controller.js.map +1 -1
  141. package/dist/cli-tui/commands/access-command.js +1 -1
  142. package/dist/cli-tui/commands/access-command.js.map +1 -1
  143. package/dist/cli-tui/commands/audit-command.js +1 -1
  144. package/dist/cli-tui/commands/audit-command.js.map +1 -1
  145. package/dist/cli-tui/commands/command-catalog.d.ts +29 -0
  146. package/dist/cli-tui/commands/command-catalog.d.ts.map +1 -0
  147. package/dist/cli-tui/commands/command-catalog.js +645 -0
  148. package/dist/cli-tui/commands/command-catalog.js.map +1 -0
  149. package/dist/cli-tui/commands/command-registry-adapter.d.ts +12 -0
  150. package/dist/cli-tui/commands/command-registry-adapter.d.ts.map +1 -0
  151. package/dist/cli-tui/commands/command-registry-adapter.js +120 -0
  152. package/dist/cli-tui/commands/command-registry-adapter.js.map +1 -0
  153. package/dist/cli-tui/commands/command-suite-catalog.d.ts +14 -0
  154. package/dist/cli-tui/commands/command-suite-catalog.d.ts.map +1 -0
  155. package/dist/cli-tui/commands/command-suite-catalog.js +147 -0
  156. package/dist/cli-tui/commands/command-suite-catalog.js.map +1 -0
  157. package/dist/cli-tui/commands/{grouped-command-handlers.d.ts → command-suite-handlers.d.ts} +27 -26
  158. package/dist/cli-tui/commands/command-suite-handlers.d.ts.map +1 -0
  159. package/dist/cli-tui/commands/command-suite-handlers.js +110 -0
  160. package/dist/cli-tui/commands/command-suite-handlers.js.map +1 -0
  161. package/dist/cli-tui/commands/hotkeys-command.d.ts +1 -1
  162. package/dist/cli-tui/commands/hotkeys-command.d.ts.map +1 -1
  163. package/dist/cli-tui/commands/hotkeys-command.js +2 -2
  164. package/dist/cli-tui/commands/hotkeys-command.js.map +1 -1
  165. package/dist/cli-tui/commands/limits-command.js +1 -1
  166. package/dist/cli-tui/commands/limits-command.js.map +1 -1
  167. package/dist/cli-tui/commands/pii-command.js +1 -1
  168. package/dist/cli-tui/commands/pii-command.js.map +1 -1
  169. package/dist/cli-tui/commands/registry.d.ts +1 -1
  170. package/dist/cli-tui/commands/registry.d.ts.map +1 -1
  171. package/dist/cli-tui/commands/registry.js +29 -921
  172. package/dist/cli-tui/commands/registry.js.map +1 -1
  173. package/dist/cli-tui/commands/{grouped → subcommands}/auth-commands.d.ts +2 -1
  174. package/dist/cli-tui/commands/subcommands/auth-commands.d.ts.map +1 -0
  175. package/dist/cli-tui/commands/{grouped → subcommands}/auth-commands.js +22 -6
  176. package/dist/cli-tui/commands/subcommands/auth-commands.js.map +1 -0
  177. package/dist/cli-tui/commands/{grouped → subcommands}/config-commands.d.ts +0 -1
  178. package/dist/cli-tui/commands/subcommands/config-commands.d.ts.map +1 -0
  179. package/dist/cli-tui/commands/{grouped → subcommands}/config-commands.js +2 -2
  180. package/dist/cli-tui/commands/subcommands/config-commands.js.map +1 -0
  181. package/dist/cli-tui/commands/{grouped → subcommands}/diag-commands.d.ts +1 -2
  182. package/dist/cli-tui/commands/subcommands/diag-commands.d.ts.map +1 -0
  183. package/dist/cli-tui/commands/{grouped → subcommands}/diag-commands.js +5 -7
  184. package/dist/cli-tui/commands/subcommands/diag-commands.js.map +1 -0
  185. package/dist/cli-tui/commands/{grouped → subcommands}/git-commands.d.ts +0 -2
  186. package/dist/cli-tui/commands/subcommands/git-commands.d.ts.map +1 -0
  187. package/dist/cli-tui/commands/{grouped → subcommands}/git-commands.js +2 -2
  188. package/dist/cli-tui/commands/subcommands/git-commands.js.map +1 -0
  189. package/dist/cli-tui/commands/{grouped → subcommands}/index.d.ts +2 -2
  190. package/dist/cli-tui/commands/subcommands/index.d.ts.map +1 -0
  191. package/dist/cli-tui/commands/{grouped → subcommands}/index.js +2 -2
  192. package/dist/cli-tui/commands/subcommands/index.js.map +1 -0
  193. package/dist/cli-tui/commands/{grouped → subcommands}/safety-commands.d.ts +0 -1
  194. package/dist/cli-tui/commands/subcommands/safety-commands.d.ts.map +1 -0
  195. package/dist/cli-tui/commands/{grouped → subcommands}/safety-commands.js +12 -12
  196. package/dist/cli-tui/commands/subcommands/safety-commands.js.map +1 -0
  197. package/dist/cli-tui/commands/{grouped → subcommands}/session-commands.d.ts +1 -2
  198. package/dist/cli-tui/commands/subcommands/session-commands.d.ts.map +1 -0
  199. package/dist/cli-tui/commands/{grouped → subcommands}/session-commands.js +3 -3
  200. package/dist/cli-tui/commands/subcommands/session-commands.js.map +1 -0
  201. package/dist/cli-tui/commands/{grouped → subcommands}/tools-commands.d.ts +0 -1
  202. package/dist/cli-tui/commands/subcommands/tools-commands.d.ts.map +1 -0
  203. package/dist/cli-tui/commands/{grouped → subcommands}/tools-commands.js +2 -2
  204. package/dist/cli-tui/commands/subcommands/tools-commands.js.map +1 -0
  205. package/dist/cli-tui/commands/{grouped → subcommands}/ui-commands.d.ts +0 -1
  206. package/dist/cli-tui/commands/subcommands/ui-commands.d.ts.map +1 -0
  207. package/dist/cli-tui/commands/{grouped → subcommands}/ui-commands.js +5 -5
  208. package/dist/cli-tui/commands/subcommands/ui-commands.js.map +1 -0
  209. package/dist/cli-tui/commands/{grouped → subcommands}/undo-commands.d.ts +1 -2
  210. package/dist/cli-tui/commands/subcommands/undo-commands.d.ts.map +1 -0
  211. package/dist/cli-tui/commands/{grouped → subcommands}/undo-commands.js +6 -6
  212. package/dist/cli-tui/commands/subcommands/undo-commands.js.map +1 -0
  213. package/dist/cli-tui/commands/subcommands/usage-commands.d.ts.map +1 -0
  214. package/dist/cli-tui/commands/{grouped → subcommands}/usage-commands.js +2 -2
  215. package/dist/cli-tui/commands/subcommands/usage-commands.js.map +1 -0
  216. package/dist/cli-tui/commands/{grouped → subcommands}/utils.d.ts +15 -15
  217. package/dist/cli-tui/commands/subcommands/utils.d.ts.map +1 -0
  218. package/dist/cli-tui/commands/{grouped → subcommands}/utils.js +13 -8
  219. package/dist/cli-tui/commands/subcommands/utils.js.map +1 -0
  220. package/dist/cli-tui/commands/types.d.ts +3 -3
  221. package/dist/cli-tui/commands/types.d.ts.map +1 -1
  222. package/dist/cli-tui/commands/types.js.map +1 -1
  223. package/dist/cli-tui/editor-view.d.ts +1 -1
  224. package/dist/cli-tui/editor-view.d.ts.map +1 -1
  225. package/dist/cli-tui/editor-view.js +1 -1
  226. package/dist/cli-tui/editor-view.js.map +1 -1
  227. package/dist/cli-tui/oauth/oauth-flow-controller.d.ts +4 -0
  228. package/dist/cli-tui/oauth/oauth-flow-controller.d.ts.map +1 -1
  229. package/dist/cli-tui/oauth/oauth-flow-controller.js +76 -5
  230. package/dist/cli-tui/oauth/oauth-flow-controller.js.map +1 -1
  231. package/dist/cli-tui/run/run-controller.d.ts +2 -2
  232. package/dist/cli-tui/run/run-controller.d.ts.map +1 -1
  233. package/dist/cli-tui/run/run-controller.js +3 -2
  234. package/dist/cli-tui/run/run-controller.js.map +1 -1
  235. package/dist/cli-tui/run/run-shell-command.d.ts.map +1 -1
  236. package/dist/cli-tui/run/run-shell-command.js +11 -3
  237. package/dist/cli-tui/run/run-shell-command.js.map +1 -1
  238. package/dist/cli-tui/run/streaming-shell-command.d.ts.map +1 -1
  239. package/dist/cli-tui/run/streaming-shell-command.js +11 -3
  240. package/dist/cli-tui/run/streaming-shell-command.js.map +1 -1
  241. package/dist/cli-tui/selectors/model-selector.d.ts.map +1 -1
  242. package/dist/cli-tui/selectors/model-selector.js +1 -0
  243. package/dist/cli-tui/selectors/model-selector.js.map +1 -1
  244. package/dist/cli-tui/tui-renderer/agent-event-bridge.d.ts +8 -0
  245. package/dist/cli-tui/tui-renderer/agent-event-bridge.d.ts.map +1 -1
  246. package/dist/cli-tui/tui-renderer/agent-event-bridge.js +23 -2
  247. package/dist/cli-tui/tui-renderer/agent-event-bridge.js.map +1 -1
  248. package/dist/cli-tui/tui-renderer/command-registry-options.d.ts +3 -3
  249. package/dist/cli-tui/tui-renderer/command-registry-options.d.ts.map +1 -1
  250. package/dist/cli-tui/tui-renderer/command-registry-options.js +12 -2
  251. package/dist/cli-tui/tui-renderer/command-registry-options.js.map +1 -1
  252. package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts +32 -0
  253. package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts.map +1 -0
  254. package/dist/cli-tui/tui-renderer/command-suite-wiring.js +108 -0
  255. package/dist/cli-tui/tui-renderer/command-suite-wiring.js.map +1 -0
  256. package/dist/cli-tui/tui-renderer/input-controller.d.ts +2 -2
  257. package/dist/cli-tui/tui-renderer/input-controller.d.ts.map +1 -1
  258. package/dist/cli-tui/tui-renderer/input-controller.js +2 -2
  259. package/dist/cli-tui/tui-renderer/input-controller.js.map +1 -1
  260. package/dist/cli-tui/tui-renderer/ui-state-controller.d.ts +1 -1
  261. package/dist/cli-tui/tui-renderer/ui-state-controller.js +1 -1
  262. package/dist/cli-tui/tui-renderer/ui-state-controller.js.map +1 -1
  263. package/dist/cli-tui/tui-renderer.d.ts +1 -3
  264. package/dist/cli-tui/tui-renderer.d.ts.map +1 -1
  265. package/dist/cli-tui/tui-renderer.js +37 -83
  266. package/dist/cli-tui/tui-renderer.js.map +1 -1
  267. package/dist/cli-tui/utils/runtime-badges.d.ts +8 -0
  268. package/dist/cli-tui/utils/runtime-badges.d.ts.map +1 -1
  269. package/dist/cli-tui/utils/runtime-badges.js +58 -0
  270. package/dist/cli-tui/utils/runtime-badges.js.map +1 -1
  271. package/dist/cli.js +42555 -23133
  272. package/dist/cli.js.map +1 -1
  273. package/dist/config/env-vars.d.ts +4 -0
  274. package/dist/config/env-vars.d.ts.map +1 -1
  275. package/dist/config/env-vars.js +4 -0
  276. package/dist/config/env-vars.js.map +1 -1
  277. package/dist/config/feature-flags.d.ts +44 -0
  278. package/dist/config/feature-flags.d.ts.map +1 -1
  279. package/dist/config/feature-flags.js +214 -0
  280. package/dist/config/feature-flags.js.map +1 -1
  281. package/dist/connectors/service-client.d.ts +98 -0
  282. package/dist/connectors/service-client.d.ts.map +1 -0
  283. package/dist/connectors/service-client.js +459 -0
  284. package/dist/connectors/service-client.js.map +1 -0
  285. package/dist/conversation/render-model.d.ts.map +1 -1
  286. package/dist/conversation/render-model.js +53 -3
  287. package/dist/conversation/render-model.js.map +1 -1
  288. package/dist/db/health.d.ts +8 -0
  289. package/dist/db/health.d.ts.map +1 -0
  290. package/dist/db/health.js +64 -0
  291. package/dist/db/health.js.map +1 -0
  292. package/dist/db/migrate.d.ts +301 -0
  293. package/dist/db/migrate.d.ts.map +1 -1
  294. package/dist/db/migrate.js +186 -0
  295. package/dist/db/migrate.js.map +1 -1
  296. package/dist/db/migrations/0000_initial.sql +308 -0
  297. package/dist/db/migrations/0001_shared_sessions.sql +18 -0
  298. package/dist/db/migrations/0002_usage_metrics.sql +28 -0
  299. package/dist/db/migrations/0003_execution_traces.sql +18 -0
  300. package/dist/db/migrations/0004_workspace_config.sql +11 -0
  301. package/dist/db/migrations/0005_revenue_attribution.sql +31 -0
  302. package/dist/db/migrations/0006_hosted_session_storage.sql +51 -0
  303. package/dist/db/migrations/0007_reconcile_legacy_audit_hash_cache.sql +24 -0
  304. package/dist/db/migrations/0008_reconcile_legacy_webhook_deliveries.sql +290 -0
  305. package/dist/db/migrations/meta/0000_snapshot.json +2438 -0
  306. package/dist/db/migrations/meta/_journal.json +69 -0
  307. package/dist/db/schema.d.ts +2232 -844
  308. package/dist/db/schema.d.ts.map +1 -1
  309. package/dist/db/schema.js +187 -1
  310. package/dist/db/schema.js.map +1 -1
  311. package/dist/evalops/agent-bootstrap.d.ts +73 -0
  312. package/dist/evalops/agent-bootstrap.d.ts.map +1 -0
  313. package/dist/evalops/agent-bootstrap.js +380 -0
  314. package/dist/evalops/agent-bootstrap.js.map +1 -0
  315. package/dist/export-html.d.ts.map +1 -1
  316. package/dist/export-html.js +7 -4
  317. package/dist/export-html.js.map +1 -1
  318. package/dist/headless/utility-command-manager.d.ts +2 -1
  319. package/dist/headless/utility-command-manager.d.ts.map +1 -1
  320. package/dist/headless/utility-command-manager.js +12 -6
  321. package/dist/headless/utility-command-manager.js.map +1 -1
  322. package/dist/headless/utility-file-read.d.ts +1 -0
  323. package/dist/headless/utility-file-read.d.ts.map +1 -1
  324. package/dist/headless/utility-file-read.js +5 -1
  325. package/dist/headless/utility-file-read.js.map +1 -1
  326. package/dist/headless/utility-file-search.d.ts +1 -0
  327. package/dist/headless/utility-file-search.d.ts.map +1 -1
  328. package/dist/headless/utility-file-search.js +4 -1
  329. package/dist/headless/utility-file-search.js.map +1 -1
  330. package/dist/headless/utility-file-watch-manager.d.ts +2 -1
  331. package/dist/headless/utility-file-watch-manager.d.ts.map +1 -1
  332. package/dist/headless/utility-file-watch-manager.js +6 -2
  333. package/dist/headless/utility-file-watch-manager.js.map +1 -1
  334. package/dist/headless/workspace-root.d.ts +8 -0
  335. package/dist/headless/workspace-root.d.ts.map +1 -0
  336. package/dist/headless/workspace-root.js +74 -0
  337. package/dist/headless/workspace-root.js.map +1 -0
  338. package/dist/hooks/notification-hooks.d.ts +5 -0
  339. package/dist/hooks/notification-hooks.d.ts.map +1 -1
  340. package/dist/hooks/notification-hooks.js +4 -0
  341. package/dist/hooks/notification-hooks.js.map +1 -1
  342. package/dist/lsp/diagnostic-deltas.d.ts +20 -0
  343. package/dist/lsp/diagnostic-deltas.d.ts.map +1 -0
  344. package/dist/lsp/diagnostic-deltas.js +92 -0
  345. package/dist/lsp/diagnostic-deltas.js.map +1 -0
  346. package/dist/lsp/diagnostic-repair.d.ts +48 -0
  347. package/dist/lsp/diagnostic-repair.d.ts.map +1 -0
  348. package/dist/lsp/diagnostic-repair.js +143 -0
  349. package/dist/lsp/diagnostic-repair.js.map +1 -0
  350. package/dist/main.d.ts.map +1 -1
  351. package/dist/main.js +127 -37
  352. package/dist/main.js.map +1 -1
  353. package/dist/mcp/config.d.ts +4 -2
  354. package/dist/mcp/config.d.ts.map +1 -1
  355. package/dist/mcp/config.js +58 -14
  356. package/dist/mcp/config.js.map +1 -1
  357. package/dist/mcp/index.d.ts +1 -0
  358. package/dist/mcp/index.d.ts.map +1 -1
  359. package/dist/mcp/index.js +1 -0
  360. package/dist/mcp/index.js.map +1 -1
  361. package/dist/mcp/manager.d.ts +1 -0
  362. package/dist/mcp/manager.d.ts.map +1 -1
  363. package/dist/mcp/manager.js +1 -0
  364. package/dist/mcp/manager.js.map +1 -1
  365. package/dist/mcp/platform-plugin.d.ts +3 -0
  366. package/dist/mcp/platform-plugin.d.ts.map +1 -0
  367. package/dist/mcp/platform-plugin.js +117 -0
  368. package/dist/mcp/platform-plugin.js.map +1 -0
  369. package/dist/mcp/tool-bridge.d.ts +15 -0
  370. package/dist/mcp/tool-bridge.d.ts.map +1 -1
  371. package/dist/mcp/tool-bridge.js +194 -6
  372. package/dist/mcp/tool-bridge.js.map +1 -1
  373. package/dist/memory/platform-memory-client.d.ts +130 -0
  374. package/dist/memory/platform-memory-client.d.ts.map +1 -0
  375. package/dist/memory/platform-memory-client.js +330 -0
  376. package/dist/memory/platform-memory-client.js.map +1 -0
  377. package/dist/memory/service-client.d.ts.map +1 -1
  378. package/dist/memory/service-client.js +1 -2
  379. package/dist/memory/service-client.js.map +1 -1
  380. package/dist/models/builtin.d.ts.map +1 -1
  381. package/dist/models/builtin.js +137 -0
  382. package/dist/models/builtin.js.map +1 -1
  383. package/dist/models/config-loader.d.ts +10 -10
  384. package/dist/models/config-loader.d.ts.map +1 -1
  385. package/dist/models/config-loader.js +1 -0
  386. package/dist/models/config-loader.js.map +1 -1
  387. package/dist/models/registry.d.ts +1 -0
  388. package/dist/models/registry.d.ts.map +1 -1
  389. package/dist/models/registry.js +1 -0
  390. package/dist/models/registry.js.map +1 -1
  391. package/dist/oauth/connectors.d.ts +25 -0
  392. package/dist/oauth/connectors.d.ts.map +1 -0
  393. package/dist/oauth/connectors.js +253 -0
  394. package/dist/oauth/connectors.js.map +1 -0
  395. package/dist/oauth/device-identity.d.ts +18 -0
  396. package/dist/oauth/device-identity.d.ts.map +1 -0
  397. package/dist/oauth/device-identity.js +193 -0
  398. package/dist/oauth/device-identity.js.map +1 -0
  399. package/dist/oauth/evalops.d.ts.map +1 -1
  400. package/dist/oauth/evalops.js +74 -15
  401. package/dist/oauth/evalops.js.map +1 -1
  402. package/dist/oauth/index.d.ts +1 -1
  403. package/dist/oauth/index.d.ts.map +1 -1
  404. package/dist/oauth/index.js +31 -1
  405. package/dist/oauth/index.js.map +1 -1
  406. package/dist/oauth/openai-codex.d.ts +16 -0
  407. package/dist/oauth/openai-codex.d.ts.map +1 -0
  408. package/dist/oauth/openai-codex.js +300 -0
  409. package/dist/oauth/openai-codex.js.map +1 -0
  410. package/dist/opentelemetry.d.ts.map +1 -1
  411. package/dist/opentelemetry.js +9 -2
  412. package/dist/opentelemetry.js.map +1 -1
  413. package/dist/platform/agent-runtime-client.d.ts +279 -0
  414. package/dist/platform/agent-runtime-client.d.ts.map +1 -0
  415. package/dist/platform/agent-runtime-client.js +515 -0
  416. package/dist/platform/agent-runtime-client.js.map +1 -0
  417. package/dist/platform/cerebro-facts-client.d.ts +56 -0
  418. package/dist/platform/cerebro-facts-client.d.ts.map +1 -0
  419. package/dist/platform/cerebro-facts-client.js +297 -0
  420. package/dist/platform/cerebro-facts-client.js.map +1 -0
  421. package/dist/platform/client.d.ts +2 -1
  422. package/dist/platform/client.d.ts.map +1 -1
  423. package/dist/platform/client.js +9 -26
  424. package/dist/platform/client.js.map +1 -1
  425. package/dist/platform/core-services.d.ts +128 -0
  426. package/dist/platform/core-services.d.ts.map +1 -1
  427. package/dist/platform/core-services.js +128 -0
  428. package/dist/platform/core-services.js.map +1 -1
  429. package/dist/platform/maestro-timeline-client.d.ts +22 -0
  430. package/dist/platform/maestro-timeline-client.d.ts.map +1 -0
  431. package/dist/platform/maestro-timeline-client.js +373 -0
  432. package/dist/platform/maestro-timeline-client.js.map +1 -0
  433. package/dist/platform/tool-execution-client.d.ts +104 -0
  434. package/dist/platform/tool-execution-client.d.ts.map +1 -0
  435. package/dist/platform/tool-execution-client.js +284 -0
  436. package/dist/platform/tool-execution-client.js.map +1 -0
  437. package/dist/prompts/service-client.d.ts.map +1 -1
  438. package/dist/prompts/service-client.js +5 -2
  439. package/dist/prompts/service-client.js.map +1 -1
  440. package/dist/providers/anthropic-auth.d.ts.map +1 -1
  441. package/dist/providers/anthropic-auth.js +8 -6
  442. package/dist/providers/anthropic-auth.js.map +1 -1
  443. package/dist/providers/api-keys.d.ts +1 -0
  444. package/dist/providers/api-keys.d.ts.map +1 -1
  445. package/dist/providers/api-keys.js +5 -0
  446. package/dist/providers/api-keys.js.map +1 -1
  447. package/dist/providers/auth.d.ts +2 -1
  448. package/dist/providers/auth.d.ts.map +1 -1
  449. package/dist/providers/auth.js +26 -3
  450. package/dist/providers/auth.js.map +1 -1
  451. package/dist/remote-runner/attach-client.d.ts +41 -0
  452. package/dist/remote-runner/attach-client.d.ts.map +1 -0
  453. package/dist/remote-runner/attach-client.js +692 -0
  454. package/dist/remote-runner/attach-client.js.map +1 -0
  455. package/dist/remote-runner/client.d.ts +205 -0
  456. package/dist/remote-runner/client.d.ts.map +1 -0
  457. package/dist/remote-runner/client.js +633 -0
  458. package/dist/remote-runner/client.js.map +1 -0
  459. package/dist/safety/action-firewall.d.ts +6 -1
  460. package/dist/safety/action-firewall.d.ts.map +1 -1
  461. package/dist/safety/action-firewall.js +62 -26
  462. package/dist/safety/action-firewall.js.map +1 -1
  463. package/dist/safety/governance-service-client.d.ts +36 -0
  464. package/dist/safety/governance-service-client.d.ts.map +1 -0
  465. package/dist/safety/governance-service-client.js +279 -0
  466. package/dist/safety/governance-service-client.js.map +1 -0
  467. package/dist/safety/policy.d.ts +13 -2
  468. package/dist/safety/policy.d.ts.map +1 -1
  469. package/dist/safety/policy.js +474 -52
  470. package/dist/safety/policy.js.map +1 -1
  471. package/dist/sdk-tools.d.ts +21 -0
  472. package/dist/sdk-tools.d.ts.map +1 -1
  473. package/dist/sdk-tools.js +16 -0
  474. package/dist/sdk-tools.js.map +1 -1
  475. package/dist/server/app-context.d.ts +25 -0
  476. package/dist/server/app-context.d.ts.map +1 -1
  477. package/dist/server/app-context.js.map +1 -1
  478. package/dist/server/approval-service.d.ts +7 -8
  479. package/dist/server/approval-service.d.ts.map +1 -1
  480. package/dist/server/approval-service.js +12 -24
  481. package/dist/server/approval-service.js.map +1 -1
  482. package/dist/server/authz.d.ts +23 -2
  483. package/dist/server/authz.d.ts.map +1 -1
  484. package/dist/server/authz.js +153 -17
  485. package/dist/server/authz.js.map +1 -1
  486. package/dist/server/handlers/approvals.d.ts.map +1 -1
  487. package/dist/server/handlers/approvals.js +3 -10
  488. package/dist/server/handlers/approvals.js.map +1 -1
  489. package/dist/server/handlers/branch.d.ts.map +1 -1
  490. package/dist/server/handlers/branch.js +29 -20
  491. package/dist/server/handlers/branch.js.map +1 -1
  492. package/dist/server/handlers/bridge.d.ts.map +1 -1
  493. package/dist/server/handlers/bridge.js +3 -2
  494. package/dist/server/handlers/bridge.js.map +1 -1
  495. package/dist/server/handlers/chat-ws.d.ts.map +1 -1
  496. package/dist/server/handlers/chat-ws.js +23 -31
  497. package/dist/server/handlers/chat-ws.js.map +1 -1
  498. package/dist/server/handlers/chat.d.ts.map +1 -1
  499. package/dist/server/handlers/chat.js +105 -46
  500. package/dist/server/handlers/chat.js.map +1 -1
  501. package/dist/server/handlers/compliance.d.ts +3 -0
  502. package/dist/server/handlers/compliance.d.ts.map +1 -0
  503. package/dist/server/handlers/compliance.js +53 -0
  504. package/dist/server/handlers/compliance.js.map +1 -0
  505. package/dist/server/handlers/context.d.ts.map +1 -1
  506. package/dist/server/handlers/context.js +3 -8
  507. package/dist/server/handlers/context.js.map +1 -1
  508. package/dist/server/handlers/fleet.d.ts +4 -0
  509. package/dist/server/handlers/fleet.d.ts.map +1 -0
  510. package/dist/server/handlers/fleet.js +9 -0
  511. package/dist/server/handlers/fleet.js.map +1 -0
  512. package/dist/server/handlers/headless-sessions.d.ts +4 -0
  513. package/dist/server/handlers/headless-sessions.d.ts.map +1 -1
  514. package/dist/server/handlers/headless-sessions.js +168 -3
  515. package/dist/server/handlers/headless-sessions.js.map +1 -1
  516. package/dist/server/handlers/health.d.ts +31 -2
  517. package/dist/server/handlers/health.d.ts.map +1 -1
  518. package/dist/server/handlers/health.js +82 -8
  519. package/dist/server/handlers/health.js.map +1 -1
  520. package/dist/server/handlers/hosted-runner-drain.d.ts +128 -0
  521. package/dist/server/handlers/hosted-runner-drain.d.ts.map +1 -0
  522. package/dist/server/handlers/hosted-runner-drain.js +373 -0
  523. package/dist/server/handlers/hosted-runner-drain.js.map +1 -0
  524. package/dist/server/handlers/hosted-runner-identity.d.ts +17 -0
  525. package/dist/server/handlers/hosted-runner-identity.d.ts.map +1 -0
  526. package/dist/server/handlers/hosted-runner-identity.js +39 -0
  527. package/dist/server/handlers/hosted-runner-identity.js.map +1 -0
  528. package/dist/server/handlers/intelligent-router.d.ts +3 -0
  529. package/dist/server/handlers/intelligent-router.d.ts.map +1 -0
  530. package/dist/server/handlers/intelligent-router.js +141 -0
  531. package/dist/server/handlers/intelligent-router.js.map +1 -0
  532. package/dist/server/handlers/models.d.ts.map +1 -1
  533. package/dist/server/handlers/models.js +14 -0
  534. package/dist/server/handlers/models.js.map +1 -1
  535. package/dist/server/handlers/pending-requests.d.ts +8 -0
  536. package/dist/server/handlers/pending-requests.d.ts.map +1 -0
  537. package/dist/server/handlers/pending-requests.js +149 -0
  538. package/dist/server/handlers/pending-requests.js.map +1 -0
  539. package/dist/server/handlers/revenue-attribution.d.ts +3 -0
  540. package/dist/server/handlers/revenue-attribution.d.ts.map +1 -0
  541. package/dist/server/handlers/revenue-attribution.js +45 -0
  542. package/dist/server/handlers/revenue-attribution.js.map +1 -0
  543. package/dist/server/handlers/runtime-app-server-ws.d.ts +10 -0
  544. package/dist/server/handlers/runtime-app-server-ws.d.ts.map +1 -0
  545. package/dist/server/handlers/runtime-app-server-ws.js +206 -0
  546. package/dist/server/handlers/runtime-app-server-ws.js.map +1 -0
  547. package/dist/server/handlers/session-artifacts.js +2 -2
  548. package/dist/server/handlers/session-artifacts.js.map +1 -1
  549. package/dist/server/handlers/session-attachments.js +3 -3
  550. package/dist/server/handlers/session-attachments.js.map +1 -1
  551. package/dist/server/handlers/session-timeline.d.ts +11 -0
  552. package/dist/server/handlers/session-timeline.d.ts.map +1 -0
  553. package/dist/server/handlers/session-timeline.js +77 -0
  554. package/dist/server/handlers/session-timeline.js.map +1 -0
  555. package/dist/server/handlers/sessions.d.ts +11 -0
  556. package/dist/server/handlers/sessions.d.ts.map +1 -1
  557. package/dist/server/handlers/sessions.js +68 -100
  558. package/dist/server/handlers/sessions.js.map +1 -1
  559. package/dist/server/handlers/traces.d.ts +3 -0
  560. package/dist/server/handlers/traces.d.ts.map +1 -0
  561. package/dist/server/handlers/traces.js +60 -0
  562. package/dist/server/handlers/traces.js.map +1 -0
  563. package/dist/server/handlers/usage-analytics.d.ts +3 -0
  564. package/dist/server/handlers/usage-analytics.d.ts.map +1 -0
  565. package/dist/server/handlers/usage-analytics.js +40 -0
  566. package/dist/server/handlers/usage-analytics.js.map +1 -0
  567. package/dist/server/handlers/workspace-config.d.ts +3 -0
  568. package/dist/server/handlers/workspace-config.d.ts.map +1 -0
  569. package/dist/server/handlers/workspace-config.js +62 -0
  570. package/dist/server/handlers/workspace-config.js.map +1 -0
  571. package/dist/server/headless-in-process-host.d.ts +8 -1
  572. package/dist/server/headless-in-process-host.d.ts.map +1 -1
  573. package/dist/server/headless-in-process-host.js +6 -0
  574. package/dist/server/headless-in-process-host.js.map +1 -1
  575. package/dist/server/headless-runtime-service.d.ts +99 -1
  576. package/dist/server/headless-runtime-service.d.ts.map +1 -1
  577. package/dist/server/headless-runtime-service.js +286 -23
  578. package/dist/server/headless-runtime-service.js.map +1 -1
  579. package/dist/server/hosted-session-manager.d.ts +103 -0
  580. package/dist/server/hosted-session-manager.d.ts.map +1 -0
  581. package/dist/server/hosted-session-manager.js +629 -0
  582. package/dist/server/hosted-session-manager.js.map +1 -0
  583. package/dist/server/pending-request-payload.d.ts +4 -0
  584. package/dist/server/pending-request-payload.d.ts.map +1 -0
  585. package/dist/server/pending-request-payload.js +107 -0
  586. package/dist/server/pending-request-payload.js.map +1 -0
  587. package/dist/server/request-context.d.ts +4 -0
  588. package/dist/server/request-context.d.ts.map +1 -1
  589. package/dist/server/request-context.js +9 -0
  590. package/dist/server/request-context.js.map +1 -1
  591. package/dist/server/routes.d.ts.map +1 -1
  592. package/dist/server/routes.js +149 -1
  593. package/dist/server/routes.js.map +1 -1
  594. package/dist/server/runtime-ws-access.d.ts +16 -0
  595. package/dist/server/runtime-ws-access.d.ts.map +1 -0
  596. package/dist/server/runtime-ws-access.js +21 -0
  597. package/dist/server/runtime-ws-access.js.map +1 -0
  598. package/dist/server/server-middlewares.d.ts +1 -1
  599. package/dist/server/server-middlewares.d.ts.map +1 -1
  600. package/dist/server/server-middlewares.js +35 -27
  601. package/dist/server/server-middlewares.js.map +1 -1
  602. package/dist/server/server-request-manager.d.ts +8 -27
  603. package/dist/server/server-request-manager.d.ts.map +1 -1
  604. package/dist/server/server-request-manager.js +7 -0
  605. package/dist/server/server-request-manager.js.map +1 -1
  606. package/dist/server/server-utils.d.ts +2 -1
  607. package/dist/server/server-utils.d.ts.map +1 -1
  608. package/dist/server/server-utils.js +11 -1
  609. package/dist/server/server-utils.js.map +1 -1
  610. package/dist/server/session-event-env.d.ts +2 -0
  611. package/dist/server/session-event-env.d.ts.map +1 -0
  612. package/dist/server/session-event-env.js +8 -0
  613. package/dist/server/session-event-env.js.map +1 -0
  614. package/dist/server/session-initialization.d.ts +25 -4
  615. package/dist/server/session-initialization.d.ts.map +1 -1
  616. package/dist/server/session-initialization.js +22 -5
  617. package/dist/server/session-initialization.js.map +1 -1
  618. package/dist/server/session-scope.d.ts +4 -0
  619. package/dist/server/session-scope.d.ts.map +1 -1
  620. package/dist/server/session-scope.js +44 -4
  621. package/dist/server/session-scope.js.map +1 -1
  622. package/dist/server/session-timeline.d.ts +13 -0
  623. package/dist/server/session-timeline.d.ts.map +1 -0
  624. package/dist/server/session-timeline.js +566 -0
  625. package/dist/server/session-timeline.js.map +1 -0
  626. package/dist/services/compliance/controls.d.ts +6 -0
  627. package/dist/services/compliance/controls.d.ts.map +1 -0
  628. package/dist/services/compliance/controls.js +113 -0
  629. package/dist/services/compliance/controls.js.map +1 -0
  630. package/dist/services/compliance/index.d.ts +6 -0
  631. package/dist/services/compliance/index.d.ts.map +1 -0
  632. package/dist/services/compliance/index.js +5 -0
  633. package/dist/services/compliance/index.js.map +1 -0
  634. package/dist/services/compliance/normalize.d.ts +23 -0
  635. package/dist/services/compliance/normalize.d.ts.map +1 -0
  636. package/dist/services/compliance/normalize.js +226 -0
  637. package/dist/services/compliance/normalize.js.map +1 -0
  638. package/dist/services/compliance/recorder.d.ts +22 -0
  639. package/dist/services/compliance/recorder.d.ts.map +1 -0
  640. package/dist/services/compliance/recorder.js +89 -0
  641. package/dist/services/compliance/recorder.js.map +1 -0
  642. package/dist/services/compliance/service.d.ts +24 -0
  643. package/dist/services/compliance/service.d.ts.map +1 -0
  644. package/dist/services/compliance/service.js +426 -0
  645. package/dist/services/compliance/service.js.map +1 -0
  646. package/dist/services/compliance/types.d.ts +185 -0
  647. package/dist/services/compliance/types.d.ts.map +1 -0
  648. package/dist/services/compliance/types.js +2 -0
  649. package/dist/services/compliance/types.js.map +1 -0
  650. package/dist/services/intelligent-router/index.d.ts +5 -0
  651. package/dist/services/intelligent-router/index.d.ts.map +1 -0
  652. package/dist/services/intelligent-router/index.js +5 -0
  653. package/dist/services/intelligent-router/index.js.map +1 -0
  654. package/dist/services/intelligent-router/normalize.d.ts +9 -0
  655. package/dist/services/intelligent-router/normalize.d.ts.map +1 -0
  656. package/dist/services/intelligent-router/normalize.js +169 -0
  657. package/dist/services/intelligent-router/normalize.js.map +1 -0
  658. package/dist/services/intelligent-router/recorder.d.ts +24 -0
  659. package/dist/services/intelligent-router/recorder.d.ts.map +1 -0
  660. package/dist/services/intelligent-router/recorder.js +98 -0
  661. package/dist/services/intelligent-router/recorder.js.map +1 -0
  662. package/dist/services/intelligent-router/service.d.ts +22 -0
  663. package/dist/services/intelligent-router/service.d.ts.map +1 -0
  664. package/dist/services/intelligent-router/service.js +328 -0
  665. package/dist/services/intelligent-router/service.js.map +1 -0
  666. package/dist/services/intelligent-router/types.d.ts +98 -0
  667. package/dist/services/intelligent-router/types.d.ts.map +1 -0
  668. package/dist/services/intelligent-router/types.js +7 -0
  669. package/dist/services/intelligent-router/types.js.map +1 -0
  670. package/dist/services/revenue-attribution/index.d.ts +4 -0
  671. package/dist/services/revenue-attribution/index.d.ts.map +1 -0
  672. package/dist/services/revenue-attribution/index.js +4 -0
  673. package/dist/services/revenue-attribution/index.js.map +1 -0
  674. package/dist/services/revenue-attribution/normalize.d.ts +13 -0
  675. package/dist/services/revenue-attribution/normalize.d.ts.map +1 -0
  676. package/dist/services/revenue-attribution/normalize.js +155 -0
  677. package/dist/services/revenue-attribution/normalize.js.map +1 -0
  678. package/dist/services/revenue-attribution/service.d.ts +21 -0
  679. package/dist/services/revenue-attribution/service.d.ts.map +1 -0
  680. package/dist/services/revenue-attribution/service.js +248 -0
  681. package/dist/services/revenue-attribution/service.js.map +1 -0
  682. package/dist/services/revenue-attribution/types.d.ts +96 -0
  683. package/dist/services/revenue-attribution/types.d.ts.map +1 -0
  684. package/dist/services/revenue-attribution/types.js +7 -0
  685. package/dist/services/revenue-attribution/types.js.map +1 -0
  686. package/dist/services/traces/index.d.ts +5 -0
  687. package/dist/services/traces/index.d.ts.map +1 -0
  688. package/dist/services/traces/index.js +4 -0
  689. package/dist/services/traces/index.js.map +1 -0
  690. package/dist/services/traces/normalize.d.ts +20 -0
  691. package/dist/services/traces/normalize.d.ts.map +1 -0
  692. package/dist/services/traces/normalize.js +261 -0
  693. package/dist/services/traces/normalize.js.map +1 -0
  694. package/dist/services/traces/otel.d.ts +3 -0
  695. package/dist/services/traces/otel.d.ts.map +1 -0
  696. package/dist/services/traces/otel.js +173 -0
  697. package/dist/services/traces/otel.js.map +1 -0
  698. package/dist/services/traces/service.d.ts +17 -0
  699. package/dist/services/traces/service.d.ts.map +1 -0
  700. package/dist/services/traces/service.js +197 -0
  701. package/dist/services/traces/service.js.map +1 -0
  702. package/dist/services/traces/types.d.ts +130 -0
  703. package/dist/services/traces/types.d.ts.map +1 -0
  704. package/dist/services/traces/types.js +8 -0
  705. package/dist/services/traces/types.js.map +1 -0
  706. package/dist/services/usage-analytics/aggregation.d.ts +18 -0
  707. package/dist/services/usage-analytics/aggregation.d.ts.map +1 -0
  708. package/dist/services/usage-analytics/aggregation.js +130 -0
  709. package/dist/services/usage-analytics/aggregation.js.map +1 -0
  710. package/dist/services/usage-analytics/index.d.ts +5 -0
  711. package/dist/services/usage-analytics/index.d.ts.map +1 -0
  712. package/dist/services/usage-analytics/index.js +4 -0
  713. package/dist/services/usage-analytics/index.js.map +1 -0
  714. package/dist/services/usage-analytics/recorder.d.ts +16 -0
  715. package/dist/services/usage-analytics/recorder.d.ts.map +1 -0
  716. package/dist/services/usage-analytics/recorder.js +128 -0
  717. package/dist/services/usage-analytics/recorder.js.map +1 -0
  718. package/dist/services/usage-analytics/service.d.ts +15 -0
  719. package/dist/services/usage-analytics/service.d.ts.map +1 -0
  720. package/dist/services/usage-analytics/service.js +210 -0
  721. package/dist/services/usage-analytics/service.js.map +1 -0
  722. package/dist/services/usage-analytics/types.d.ts +80 -0
  723. package/dist/services/usage-analytics/types.d.ts.map +1 -0
  724. package/dist/services/usage-analytics/types.js +2 -0
  725. package/dist/services/usage-analytics/types.js.map +1 -0
  726. package/dist/services/workspace-config/index.d.ts +6 -0
  727. package/dist/services/workspace-config/index.d.ts.map +1 -0
  728. package/dist/services/workspace-config/index.js +5 -0
  729. package/dist/services/workspace-config/index.js.map +1 -0
  730. package/dist/services/workspace-config/middleware.d.ts +5 -0
  731. package/dist/services/workspace-config/middleware.d.ts.map +1 -0
  732. package/dist/services/workspace-config/middleware.js +98 -0
  733. package/dist/services/workspace-config/middleware.js.map +1 -0
  734. package/dist/services/workspace-config/normalize.d.ts +17 -0
  735. package/dist/services/workspace-config/normalize.d.ts.map +1 -0
  736. package/dist/services/workspace-config/normalize.js +148 -0
  737. package/dist/services/workspace-config/normalize.js.map +1 -0
  738. package/dist/services/workspace-config/policy.d.ts +16 -0
  739. package/dist/services/workspace-config/policy.d.ts.map +1 -0
  740. package/dist/services/workspace-config/policy.js +77 -0
  741. package/dist/services/workspace-config/policy.js.map +1 -0
  742. package/dist/services/workspace-config/service.d.ts +20 -0
  743. package/dist/services/workspace-config/service.d.ts.map +1 -0
  744. package/dist/services/workspace-config/service.js +162 -0
  745. package/dist/services/workspace-config/service.js.map +1 -0
  746. package/dist/services/workspace-config/types.d.ts +71 -0
  747. package/dist/services/workspace-config/types.d.ts.map +1 -0
  748. package/dist/services/workspace-config/types.js +2 -0
  749. package/dist/services/workspace-config/types.js.map +1 -0
  750. package/dist/session/manager.d.ts.map +1 -1
  751. package/dist/session/manager.js +10 -0
  752. package/dist/session/manager.js.map +1 -1
  753. package/dist/session/migration.d.ts.map +1 -1
  754. package/dist/session/migration.js +2 -1
  755. package/dist/session/migration.js.map +1 -1
  756. package/dist/session/session-memory.d.ts.map +1 -1
  757. package/dist/session/session-memory.js +7 -1
  758. package/dist/session/session-memory.js.map +1 -1
  759. package/dist/session/types.d.ts +1 -2
  760. package/dist/session/types.d.ts.map +1 -1
  761. package/dist/session/types.js +1 -22
  762. package/dist/session/types.js.map +1 -1
  763. package/dist/session/wire-format.d.ts +7 -0
  764. package/dist/session/wire-format.d.ts.map +1 -0
  765. package/dist/session/wire-format.generated.d.ts +95 -0
  766. package/dist/session/wire-format.generated.d.ts.map +1 -0
  767. package/dist/session/wire-format.generated.js +111 -0
  768. package/dist/session/wire-format.generated.js.map +1 -0
  769. package/dist/session/wire-format.js +145 -0
  770. package/dist/session/wire-format.js.map +1 -0
  771. package/dist/shared-memory/client.d.ts.map +1 -1
  772. package/dist/shared-memory/client.js +22 -22
  773. package/dist/shared-memory/client.js.map +1 -1
  774. package/dist/skills/artifact-metadata.d.ts +16 -0
  775. package/dist/skills/artifact-metadata.d.ts.map +1 -0
  776. package/dist/skills/artifact-metadata.js +86 -0
  777. package/dist/skills/artifact-metadata.js.map +1 -0
  778. package/dist/skills/loader.d.ts +2 -2
  779. package/dist/skills/loader.d.ts.map +1 -1
  780. package/dist/skills/loader.js +1 -0
  781. package/dist/skills/loader.js.map +1 -1
  782. package/dist/skills/service-client.d.ts +42 -0
  783. package/dist/skills/service-client.d.ts.map +1 -0
  784. package/dist/skills/service-client.js +258 -0
  785. package/dist/skills/service-client.js.map +1 -0
  786. package/dist/skills/tool.d.ts +3 -0
  787. package/dist/skills/tool.d.ts.map +1 -1
  788. package/dist/skills/tool.js +67 -5
  789. package/dist/skills/tool.js.map +1 -1
  790. package/dist/telemetry/index.d.ts +4 -0
  791. package/dist/telemetry/index.d.ts.map +1 -1
  792. package/dist/telemetry/index.js +5 -0
  793. package/dist/telemetry/index.js.map +1 -1
  794. package/dist/telemetry/maestro-event-bus.d.ts +440 -0
  795. package/dist/telemetry/maestro-event-bus.d.ts.map +1 -0
  796. package/dist/telemetry/maestro-event-bus.js +784 -0
  797. package/dist/telemetry/maestro-event-bus.js.map +1 -0
  798. package/dist/telemetry/maestro-event-catalog.d.ts +48 -0
  799. package/dist/telemetry/maestro-event-catalog.d.ts.map +1 -0
  800. package/dist/telemetry/maestro-event-catalog.js +69 -0
  801. package/dist/telemetry/maestro-event-catalog.js.map +1 -0
  802. package/dist/telemetry/maestro-platform-replay-fixture.d.ts +24 -0
  803. package/dist/telemetry/maestro-platform-replay-fixture.d.ts.map +1 -0
  804. package/dist/telemetry/maestro-platform-replay-fixture.js +400 -0
  805. package/dist/telemetry/maestro-platform-replay-fixture.js.map +1 -0
  806. package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts +29 -0
  807. package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts.map +1 -0
  808. package/dist/telemetry/maestro-publisher-conformance-fixture.js +240 -0
  809. package/dist/telemetry/maestro-publisher-conformance-fixture.js.map +1 -0
  810. package/dist/telemetry/meter-service-client.d.ts +0 -33
  811. package/dist/telemetry/meter-service-client.d.ts.map +1 -1
  812. package/dist/telemetry/meter-service-client.js +22 -50
  813. package/dist/telemetry/meter-service-client.js.map +1 -1
  814. package/dist/telemetry/turn-tracker.d.ts.map +1 -1
  815. package/dist/telemetry/turn-tracker.js +5 -5
  816. package/dist/telemetry/turn-tracker.js.map +1 -1
  817. package/dist/telemetry/wide-events.d.ts +8 -0
  818. package/dist/telemetry/wide-events.d.ts.map +1 -1
  819. package/dist/telemetry/wide-events.js +28 -0
  820. package/dist/telemetry/wide-events.js.map +1 -1
  821. package/dist/telemetry.d.ts +1 -1
  822. package/dist/telemetry.d.ts.map +1 -1
  823. package/dist/telemetry.js +14 -4
  824. package/dist/telemetry.js.map +1 -1
  825. package/dist/timeline/redaction.d.ts +5 -0
  826. package/dist/timeline/redaction.d.ts.map +1 -0
  827. package/dist/timeline/redaction.js +119 -0
  828. package/dist/timeline/redaction.js.map +1 -0
  829. package/dist/tools/ask-user.d.ts +26 -0
  830. package/dist/tools/ask-user.d.ts.map +1 -1
  831. package/dist/tools/ask-user.js +33 -1
  832. package/dist/tools/ask-user.js.map +1 -1
  833. package/dist/tools/background/task-types.d.ts +1 -1
  834. package/dist/tools/edit.d.ts +2 -0
  835. package/dist/tools/edit.d.ts.map +1 -1
  836. package/dist/tools/edit.js +27 -7
  837. package/dist/tools/edit.js.map +1 -1
  838. package/dist/tools/index.d.ts +9 -0
  839. package/dist/tools/index.d.ts.map +1 -1
  840. package/dist/tools/pipeline.d.ts.map +1 -1
  841. package/dist/tools/pipeline.js +16 -7
  842. package/dist/tools/pipeline.js.map +1 -1
  843. package/dist/tools/write.d.ts +2 -0
  844. package/dist/tools/write.d.ts.map +1 -1
  845. package/dist/tools/write.js +24 -6
  846. package/dist/tools/write.js.map +1 -1
  847. package/dist/tracking/cost-tracker.d.ts +15 -12
  848. package/dist/tracking/cost-tracker.d.ts.map +1 -1
  849. package/dist/tracking/cost-tracker.js +29 -40
  850. package/dist/tracking/cost-tracker.js.map +1 -1
  851. package/dist/utils/checkpoint-profiler.d.ts +29 -0
  852. package/dist/utils/checkpoint-profiler.d.ts.map +1 -0
  853. package/dist/utils/checkpoint-profiler.js +118 -0
  854. package/dist/utils/checkpoint-profiler.js.map +1 -0
  855. package/dist/utils/downstream-http.d.ts +21 -0
  856. package/dist/utils/downstream-http.d.ts.map +1 -0
  857. package/dist/utils/downstream-http.js +151 -0
  858. package/dist/utils/downstream-http.js.map +1 -0
  859. package/dist/utils/downstream.d.ts +18 -0
  860. package/dist/utils/downstream.d.ts.map +1 -0
  861. package/dist/utils/downstream.js +47 -0
  862. package/dist/utils/downstream.js.map +1 -0
  863. package/dist/utils/logger.d.ts +3 -1
  864. package/dist/utils/logger.d.ts.map +1 -1
  865. package/dist/utils/logger.js +12 -1
  866. package/dist/utils/logger.js.map +1 -1
  867. package/dist/utils/oauth-http.d.ts +8 -0
  868. package/dist/utils/oauth-http.d.ts.map +1 -0
  869. package/dist/utils/oauth-http.js +41 -0
  870. package/dist/utils/oauth-http.js.map +1 -0
  871. package/dist/utils/path-utils.d.ts +2 -0
  872. package/dist/utils/path-utils.d.ts.map +1 -0
  873. package/dist/utils/path-utils.js +12 -0
  874. package/dist/utils/path-utils.js.map +1 -0
  875. package/dist/utils/path-validation.d.ts +1 -1
  876. package/dist/utils/path-validation.d.ts.map +1 -1
  877. package/dist/utils/path-validation.js +3 -3
  878. package/dist/utils/path-validation.js.map +1 -1
  879. package/dist/version.json +2 -2
  880. package/dist/web-server.d.ts +7 -1
  881. package/dist/web-server.d.ts.map +1 -1
  882. package/dist/web-server.js +117 -15
  883. package/dist/web-server.js.map +1 -1
  884. package/dist/webhooks/delivery.d.ts.map +1 -1
  885. package/dist/webhooks/delivery.js +9 -12
  886. package/dist/webhooks/delivery.js.map +1 -1
  887. package/node_modules/@bufbuild/protobuf/dist/cjs/descriptors.d.ts +12 -5
  888. package/node_modules/@bufbuild/protobuf/dist/cjs/from-binary.js +7 -7
  889. package/node_modules/@bufbuild/protobuf/dist/cjs/from-json.d.ts +1 -1
  890. package/node_modules/@bufbuild/protobuf/dist/cjs/from-json.js +1 -1
  891. package/node_modules/@bufbuild/protobuf/dist/cjs/reflect/path.d.ts +1 -1
  892. package/node_modules/@bufbuild/protobuf/dist/cjs/registry.js +24 -1
  893. package/node_modules/@bufbuild/protobuf/dist/cjs/to-json.d.ts +1 -1
  894. package/node_modules/@bufbuild/protobuf/dist/cjs/to-json.js +9 -10
  895. package/node_modules/@bufbuild/protobuf/dist/cjs/types.d.ts +1 -1
  896. package/node_modules/@bufbuild/protobuf/dist/cjs/wire/binary-encoding.d.ts +9 -7
  897. package/node_modules/@bufbuild/protobuf/dist/cjs/wire/binary-encoding.js +18 -8
  898. package/node_modules/@bufbuild/protobuf/dist/cjs/wire/text-encoding.d.ts +4 -2
  899. package/node_modules/@bufbuild/protobuf/dist/cjs/wire/text-encoding.js +8 -1
  900. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/api_pb.d.ts +1 -1
  901. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +2 -2
  902. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.d.ts +37 -23
  903. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.js +1 -1
  904. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.d.ts +32 -36
  905. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/go_features_pb.d.ts +65 -0
  906. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/go_features_pb.js +38 -2
  907. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.d.ts +5 -5
  908. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/type_pb.d.ts +3 -3
  909. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/wrappers.d.ts +10 -0
  910. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/wrappers.js +24 -0
  911. package/node_modules/@bufbuild/protobuf/dist/esm/descriptors.d.ts +12 -5
  912. package/node_modules/@bufbuild/protobuf/dist/esm/from-binary.js +7 -7
  913. package/node_modules/@bufbuild/protobuf/dist/esm/from-json.d.ts +1 -1
  914. package/node_modules/@bufbuild/protobuf/dist/esm/from-json.js +2 -2
  915. package/node_modules/@bufbuild/protobuf/dist/esm/reflect/path.d.ts +1 -1
  916. package/node_modules/@bufbuild/protobuf/dist/esm/registry.js +24 -1
  917. package/node_modules/@bufbuild/protobuf/dist/esm/to-json.d.ts +1 -1
  918. package/node_modules/@bufbuild/protobuf/dist/esm/to-json.js +10 -11
  919. package/node_modules/@bufbuild/protobuf/dist/esm/types.d.ts +1 -1
  920. package/node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.d.ts +9 -7
  921. package/node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.js +18 -8
  922. package/node_modules/@bufbuild/protobuf/dist/esm/wire/text-encoding.d.ts +4 -2
  923. package/node_modules/@bufbuild/protobuf/dist/esm/wire/text-encoding.js +8 -1
  924. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/api_pb.d.ts +1 -1
  925. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +2 -2
  926. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/descriptor_pb.d.ts +37 -23
  927. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/descriptor_pb.js +1 -1
  928. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/field_mask_pb.d.ts +32 -36
  929. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/go_features_pb.d.ts +65 -0
  930. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/go_features_pb.js +37 -1
  931. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/timestamp_pb.d.ts +5 -5
  932. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/type_pb.d.ts +3 -3
  933. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/wrappers.d.ts +10 -0
  934. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/wrappers.js +23 -0
  935. package/node_modules/@bufbuild/protobuf/package.json +1 -1
  936. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts +305 -2
  937. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts.map +1 -1
  938. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js +34 -4
  939. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js.map +1 -1
  940. package/node_modules/@evalops/contracts/dist/index.d.ts +88 -0
  941. package/node_modules/@evalops/contracts/dist/index.d.ts.map +1 -1
  942. package/node_modules/@evalops/contracts/dist/index.js +2 -0
  943. package/node_modules/@evalops/contracts/dist/index.js.map +1 -1
  944. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts +77 -77
  945. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts.map +1 -1
  946. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js +1 -1
  947. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js.map +1 -1
  948. package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts +182 -0
  949. package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts.map +1 -0
  950. package/node_modules/@evalops/contracts/dist/runtime-app-server.js +83 -0
  951. package/node_modules/@evalops/contracts/dist/runtime-app-server.js.map +1 -0
  952. package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts +133 -0
  953. package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts.map +1 -0
  954. package/node_modules/@evalops/contracts/dist/runtime-server-request.js +68 -0
  955. package/node_modules/@evalops/contracts/dist/runtime-server-request.js.map +1 -0
  956. package/node_modules/@evalops/contracts/dist/schemas.d.ts +178 -0
  957. package/node_modules/@evalops/contracts/dist/schemas.d.ts.map +1 -1
  958. package/node_modules/@evalops/contracts/dist/schemas.js +165 -0
  959. package/node_modules/@evalops/contracts/dist/schemas.js.map +1 -1
  960. package/node_modules/@evalops/contracts/dist/typebox-utils.d.ts +2 -0
  961. package/node_modules/@evalops/contracts/dist/typebox-utils.d.ts.map +1 -0
  962. package/node_modules/@evalops/contracts/dist/typebox-utils.js +5 -0
  963. package/node_modules/@evalops/contracts/dist/typebox-utils.js.map +1 -0
  964. package/node_modules/@evalops/contracts/dist/validators.d.ts +4 -1
  965. package/node_modules/@evalops/contracts/dist/validators.d.ts.map +1 -1
  966. package/node_modules/@evalops/contracts/dist/validators.js +4 -1
  967. package/node_modules/@evalops/contracts/dist/validators.js.map +1 -1
  968. package/node_modules/@evalops/contracts/package.json +1 -1
  969. package/node_modules/@evalops/tui/package.json +1 -1
  970. package/node_modules/string-width/index.js +93 -9
  971. package/node_modules/string-width/package.json +1 -1
  972. package/package.json +32 -25
  973. package/dist/cli-tui/commands/grouped/auth-commands.d.ts.map +0 -1
  974. package/dist/cli-tui/commands/grouped/auth-commands.js.map +0 -1
  975. package/dist/cli-tui/commands/grouped/config-commands.d.ts.map +0 -1
  976. package/dist/cli-tui/commands/grouped/config-commands.js.map +0 -1
  977. package/dist/cli-tui/commands/grouped/diag-commands.d.ts.map +0 -1
  978. package/dist/cli-tui/commands/grouped/diag-commands.js.map +0 -1
  979. package/dist/cli-tui/commands/grouped/git-commands.d.ts.map +0 -1
  980. package/dist/cli-tui/commands/grouped/git-commands.js.map +0 -1
  981. package/dist/cli-tui/commands/grouped/index.d.ts.map +0 -1
  982. package/dist/cli-tui/commands/grouped/index.js.map +0 -1
  983. package/dist/cli-tui/commands/grouped/safety-commands.d.ts.map +0 -1
  984. package/dist/cli-tui/commands/grouped/safety-commands.js.map +0 -1
  985. package/dist/cli-tui/commands/grouped/session-commands.d.ts.map +0 -1
  986. package/dist/cli-tui/commands/grouped/session-commands.js.map +0 -1
  987. package/dist/cli-tui/commands/grouped/tools-commands.d.ts.map +0 -1
  988. package/dist/cli-tui/commands/grouped/tools-commands.js.map +0 -1
  989. package/dist/cli-tui/commands/grouped/ui-commands.d.ts.map +0 -1
  990. package/dist/cli-tui/commands/grouped/ui-commands.js.map +0 -1
  991. package/dist/cli-tui/commands/grouped/undo-commands.d.ts.map +0 -1
  992. package/dist/cli-tui/commands/grouped/undo-commands.js.map +0 -1
  993. package/dist/cli-tui/commands/grouped/usage-commands.d.ts.map +0 -1
  994. package/dist/cli-tui/commands/grouped/usage-commands.js.map +0 -1
  995. package/dist/cli-tui/commands/grouped/utils.d.ts.map +0 -1
  996. package/dist/cli-tui/commands/grouped/utils.js.map +0 -1
  997. package/dist/cli-tui/commands/grouped-command-handlers.d.ts.map +0 -1
  998. package/dist/cli-tui/commands/grouped-command-handlers.js +0 -135
  999. package/dist/cli-tui/commands/grouped-command-handlers.js.map +0 -1
  1000. package/dist/cli-tui/tui-renderer/grouped-handlers-wiring.d.ts +0 -78
  1001. package/dist/cli-tui/tui-renderer/grouped-handlers-wiring.d.ts.map +0 -1
  1002. package/dist/cli-tui/tui-renderer/grouped-handlers-wiring.js +0 -129
  1003. package/dist/cli-tui/tui-renderer/grouped-handlers-wiring.js.map +0 -1
  1004. package/node_modules/@evalops/memory/dist/client.d.ts +0 -94
  1005. package/node_modules/@evalops/memory/dist/client.js +0 -503
  1006. package/node_modules/@evalops/memory/gen/proto/dist/memory/v1/memory_pb.d.ts +0 -608
  1007. package/node_modules/@evalops/memory/gen/proto/dist/memory/v1/memory_pb.js +0 -187
  1008. package/node_modules/@evalops/memory/package.json +0 -26
  1009. /package/dist/cli-tui/commands/{grouped → subcommands}/usage-commands.d.ts +0 -0
package/dist/cli/args.js CHANGED
@@ -2,13 +2,19 @@ const COMMANDS = new Set([
2
2
  "config",
3
3
  "models",
4
4
  "cost",
5
+ "stats",
5
6
  "agents",
6
7
  "exec",
7
8
  "web",
9
+ "hosted-runner",
10
+ "init",
8
11
  "anthropic",
12
+ "evalops",
9
13
  "openai",
14
+ "codex",
10
15
  "hooks",
11
16
  "memory",
17
+ "remote",
12
18
  "export",
13
19
  "import",
14
20
  ]);
@@ -16,11 +22,15 @@ const SUBCOMMAND_COMMANDS = new Set([
16
22
  "config",
17
23
  "models",
18
24
  "cost",
25
+ "stats",
19
26
  "agents",
20
27
  "anthropic",
28
+ "evalops",
21
29
  "openai",
30
+ "codex",
22
31
  "hooks",
23
32
  "memory",
33
+ "remote",
24
34
  ]);
25
35
  export function parseArgs(args) {
26
36
  const result = {
@@ -34,6 +44,18 @@ export function parseArgs(args) {
34
44
  else if (arg === "--version" || arg === "-v") {
35
45
  result.version = true;
36
46
  }
47
+ else if (arg?.startsWith("--mode=")) {
48
+ const mode = arg.slice("--mode=".length);
49
+ if (mode === "text" ||
50
+ mode === "json" ||
51
+ mode === "rpc" ||
52
+ mode === "headless") {
53
+ result.mode = mode;
54
+ if (mode === "headless") {
55
+ result.headless = true;
56
+ }
57
+ }
58
+ }
37
59
  else if (arg === "--mode" && i + 1 < args.length) {
38
60
  const mode = args[++i];
39
61
  if (mode === "text" ||
@@ -41,6 +63,9 @@ export function parseArgs(args) {
41
63
  mode === "rpc" ||
42
64
  mode === "headless") {
43
65
  result.mode = mode;
66
+ if (mode === "headless") {
67
+ result.headless = true;
68
+ }
44
69
  }
45
70
  }
46
71
  else if (arg === "--headless") {
@@ -204,6 +229,10 @@ export function parseArgs(args) {
204
229
  result.subcommand = nextArg;
205
230
  i++;
206
231
  }
232
+ if (arg === "remote" || arg === "hosted-runner" || arg === "init") {
233
+ result.commandArgs = args.slice(i + 1);
234
+ break;
235
+ }
207
236
  }
208
237
  else {
209
238
  result.messages.push(arg);
@@ -1 +1 @@
1
- {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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","sourcesContent":["export type Mode = \"text\" | \"json\" | \"rpc\" | \"headless\";\n\nexport interface Args {\n\tprovider?: string;\n\tmodel?: string;\n\ttaskBudget?: number;\n\terror?: string;\n\tmodelsFile?: string;\n\tapiKey?: string;\n\tsystemPrompt?: string;\n\tappendSystemPrompt?: string;\n\t/** Port for `maestro web` (defaults to PORT env or 8080) */\n\tport?: number;\n\tcontinue?: boolean;\n\tresume?: boolean;\n\thelp?: boolean;\n\tversion?: boolean;\n\tmode?: Mode;\n\t/** Run in headless mode for native TUI communication */\n\theadless?: boolean;\n\tnoSession?: boolean;\n\tsession?: string;\n\tsafeMode?: boolean;\n\tcommand?: string;\n\tsubcommand?: string;\n\tapprovalMode?: \"auto\" | \"prompt\" | \"fail\";\n\tauthMode?: \"auto\" | \"api-key\" | \"claude\";\n\tforce?: boolean;\n\texecJson?: boolean;\n\texecFullAuto?: boolean;\n\texecReadOnly?: boolean;\n\t/** Sandbox mode: \"docker\", \"local\", \"native\", or \"none\" */\n\tsandbox?: string;\n\texecOutputSchema?: string;\n\texecOutputLast?: string;\n\texecResumeId?: string;\n\texecUseLast?: boolean;\n\tmodels?: string[];\n\ttools?: string[];\n\tmessages: string[];\n\t/** TOML config profile to activate */\n\tprofile?: string;\n\t/** CLI config overrides in key=value format */\n\tconfigOverrides?: string[];\n\t/** Start in read-only mode (activates explore composer) */\n\treadonly?: boolean;\n\t/** Composer profile to activate on startup */\n\tcomposer?: string;\n\texportFormat?: string;\n\tredactSecrets?: boolean;\n}\n\nconst COMMANDS = new Set([\n\t\"config\",\n\t\"models\",\n\t\"cost\",\n\t\"agents\",\n\t\"exec\",\n\t\"web\",\n\t\"anthropic\",\n\t\"openai\",\n\t\"hooks\",\n\t\"memory\",\n\t\"export\",\n\t\"import\",\n]);\nconst SUBCOMMAND_COMMANDS = new Set([\n\t\"config\",\n\t\"models\",\n\t\"cost\",\n\t\"agents\",\n\t\"anthropic\",\n\t\"openai\",\n\t\"hooks\",\n\t\"memory\",\n]);\n\nexport function parseArgs(args: string[]): Args {\n\tconst result: Args = {\n\t\tmessages: [],\n\t};\n\n\tfor (let i = 0; i < args.length; i++) {\n\t\tconst arg = args[i];\n\n\t\tif (arg === \"--help\" || arg === \"-h\") {\n\t\t\tresult.help = true;\n\t\t} else if (arg === \"--version\" || arg === \"-v\") {\n\t\t\tresult.version = true;\n\t\t} else if (arg === \"--mode\" && i + 1 < args.length) {\n\t\t\tconst mode = args[++i];\n\t\t\tif (\n\t\t\t\tmode === \"text\" ||\n\t\t\t\tmode === \"json\" ||\n\t\t\t\tmode === \"rpc\" ||\n\t\t\t\tmode === \"headless\"\n\t\t\t) {\n\t\t\t\tresult.mode = mode;\n\t\t\t}\n\t\t} else if (arg === \"--headless\") {\n\t\t\tresult.headless = true;\n\t\t\tresult.mode = \"headless\";\n\t\t} else if (arg === \"--continue\" || arg === \"-c\") {\n\t\t\tresult.continue = true;\n\t\t} else if (arg === \"--resume\" || arg === \"-r\") {\n\t\t\tif (result.command === \"exec\") {\n\t\t\t\tconst nextArg = args[i + 1];\n\t\t\t\tif (i + 1 < args.length && nextArg && !nextArg.startsWith(\"-\")) {\n\t\t\t\t\tresult.execResumeId = nextArg;\n\t\t\t\t\ti++;\n\t\t\t\t} else {\n\t\t\t\t\tresult.execUseLast = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresult.resume = true;\n\t\t\t}\n\t\t} else if (arg === \"--provider\" && i + 1 < args.length) {\n\t\t\tresult.provider = args[++i];\n\t\t} else if ((arg === \"--model\" || arg === \"-m\") && i + 1 < args.length) {\n\t\t\tresult.model = args[++i];\n\t\t} else if (arg === \"--task-budget\") {\n\t\t\tconst rawValue = args[i + 1];\n\t\t\tif (\n\t\t\t\trawValue === undefined ||\n\t\t\t\t(rawValue.startsWith(\"-\") && Number.isNaN(Number(rawValue)))\n\t\t\t) {\n\t\t\t\tresult.error = \"--task-budget requires a value\";\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\ti++;\n\t\t\tconst value = Number(rawValue);\n\t\t\tif (Number.isInteger(value) && value > 0) {\n\t\t\t\tresult.taskBudget = value;\n\t\t\t} else {\n\t\t\t\tresult.error = \"--task-budget must be a positive integer\";\n\t\t\t}\n\t\t} else if (arg === \"--models\" && i + 1 < args.length) {\n\t\t\tconst modelsArg = args[++i]!;\n\t\t\tconst patterns = modelsArg\n\t\t\t\t.split(\",\")\n\t\t\t\t.map((value) => value.trim())\n\t\t\t\t.filter((value) => value.length > 0);\n\t\t\tif (patterns.length > 0) {\n\t\t\t\tresult.models = patterns;\n\t\t\t}\n\t\t} else if (arg === \"--models-file\" && i + 1 < args.length) {\n\t\t\tresult.modelsFile = args[++i];\n\t\t} else if (arg === \"--api-key\" && i + 1 < args.length) {\n\t\t\tresult.apiKey = args[++i];\n\t\t} else if (arg === \"--port\" && i + 1 < args.length) {\n\t\t\tconst value = Number.parseInt(args[++i] ?? \"\", 10);\n\t\t\tif (Number.isFinite(value) && value > 0 && value < 65536) {\n\t\t\t\tresult.port = value;\n\t\t\t}\n\t\t} else if (arg === \"--system-prompt\" && i + 1 < args.length) {\n\t\t\tresult.systemPrompt = args[++i];\n\t\t} else if (arg === \"--append-system-prompt\" && i + 1 < args.length) {\n\t\t\tresult.appendSystemPrompt = args[++i];\n\t\t} else if (arg === \"--no-session\") {\n\t\t\tresult.noSession = true;\n\t\t} else if (arg === \"--session\" && i + 1 < args.length) {\n\t\t\tresult.session = args[++i];\n\t\t} else if (arg === \"--safe-mode\") {\n\t\t\tresult.safeMode = true;\n\t\t} else if (arg === \"--approval-mode\" && i + 1 < args.length) {\n\t\t\tconst mode = args[++i];\n\t\t\tif (mode === \"auto\" || mode === \"prompt\" || mode === \"fail\") {\n\t\t\t\tresult.approvalMode = mode;\n\t\t\t}\n\t\t} else if (arg === \"--auth\" && i + 1 < args.length) {\n\t\t\tconst value = args[++i];\n\t\t\tif (value === \"auto\" || value === \"api-key\" || value === \"claude\") {\n\t\t\t\tresult.authMode = value;\n\t\t\t}\n\t\t} else if (arg === \"--force\") {\n\t\t\tresult.force = true;\n\t\t} else if (arg === \"--json\") {\n\t\t\tresult.execJson = true;\n\t\t} else if (arg === \"--full-auto\") {\n\t\t\tresult.execFullAuto = true;\n\t\t} else if (arg === \"--read-only\") {\n\t\t\tresult.execReadOnly = true;\n\t\t} else if (arg === \"--sandbox\" && i + 1 < args.length) {\n\t\t\tresult.sandbox = args[++i];\n\t\t} else if (arg === \"--output-schema\" && i + 1 < args.length) {\n\t\t\tresult.execOutputSchema = args[++i];\n\t\t} else if (arg === \"--output-last-message\" && i + 1 < args.length) {\n\t\t\tresult.execOutputLast = args[++i];\n\t\t} else if (arg === \"--last\" && result.command === \"exec\") {\n\t\t\tresult.execUseLast = true;\n\t\t} else if (arg === \"--tools\" && i + 1 < args.length) {\n\t\t\tconst toolsArg = args[++i]!;\n\t\t\tconst toolNames = toolsArg\n\t\t\t\t.split(\",\")\n\t\t\t\t.map((value) => value.trim())\n\t\t\t\t.filter((value) => value.length > 0);\n\t\t\tif (toolNames.length > 0) {\n\t\t\t\tresult.tools = toolNames;\n\t\t\t}\n\t\t} else if (arg === \"--readonly\" || arg === \"--read-only-mode\") {\n\t\t\tresult.readonly = true;\n\t\t} else if (arg === \"--composer\" && i + 1 < args.length) {\n\t\t\tresult.composer = args[++i];\n\t\t} else if (arg === \"--format\" && i + 1 < args.length) {\n\t\t\tresult.exportFormat = args[++i];\n\t\t} else if (arg === \"--redact-secrets\") {\n\t\t\tresult.redactSecrets = true;\n\t\t} else if (arg === \"--profile\" && i + 1 < args.length) {\n\t\t\tresult.profile = args[++i];\n\t\t} else if (arg === \"--config\" && i + 1 < args.length) {\n\t\t\t// Config overrides in key=value format\n\t\t\tconst override = args[++i]!;\n\t\t\tif (!result.configOverrides) {\n\t\t\t\tresult.configOverrides = [];\n\t\t\t}\n\t\t\tresult.configOverrides.push(override);\n\t\t} else if (arg && !arg.startsWith(\"-\")) {\n\t\t\tif (!result.command && COMMANDS.has(arg)) {\n\t\t\t\tresult.command = arg;\n\t\t\t\tconst nextArg = args[i + 1];\n\t\t\t\tif (\n\t\t\t\t\tSUBCOMMAND_COMMANDS.has(arg) &&\n\t\t\t\t\ti + 1 < args.length &&\n\t\t\t\t\tnextArg &&\n\t\t\t\t\t!nextArg.startsWith(\"-\")\n\t\t\t\t) {\n\t\t\t\t\tresult.subcommand = nextArg;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresult.messages.push(arg);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n"]}
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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","sourcesContent":["export type Mode = \"text\" | \"json\" | \"rpc\" | \"headless\";\n\nexport interface Args {\n\tprovider?: string;\n\tmodel?: string;\n\ttaskBudget?: number;\n\terror?: string;\n\tmodelsFile?: string;\n\tapiKey?: string;\n\tsystemPrompt?: string;\n\tappendSystemPrompt?: string;\n\t/** Port for `maestro web` (defaults to PORT env or 8080) */\n\tport?: number;\n\tcontinue?: boolean;\n\tresume?: boolean;\n\thelp?: boolean;\n\tversion?: boolean;\n\tmode?: Mode;\n\t/** Run in headless mode for native TUI communication */\n\theadless?: boolean;\n\tnoSession?: boolean;\n\tsession?: string;\n\tsafeMode?: boolean;\n\tcommand?: string;\n\tsubcommand?: string;\n\t/** Raw arguments owned by command-group handlers. */\n\tcommandArgs?: string[];\n\tapprovalMode?: \"auto\" | \"prompt\" | \"fail\";\n\tauthMode?: \"auto\" | \"api-key\" | \"claude\";\n\tforce?: boolean;\n\texecJson?: boolean;\n\texecFullAuto?: boolean;\n\texecReadOnly?: boolean;\n\t/** Sandbox mode: \"docker\", \"local\", \"native\", or \"none\" */\n\tsandbox?: string;\n\texecOutputSchema?: string;\n\texecOutputLast?: string;\n\texecResumeId?: string;\n\texecUseLast?: boolean;\n\tmodels?: string[];\n\ttools?: string[];\n\tmessages: string[];\n\t/** TOML config profile to activate */\n\tprofile?: string;\n\t/** CLI config overrides in key=value format */\n\tconfigOverrides?: string[];\n\t/** Start in read-only mode (activates explore composer) */\n\treadonly?: boolean;\n\t/** Composer profile to activate on startup */\n\tcomposer?: string;\n\texportFormat?: string;\n\tredactSecrets?: boolean;\n}\n\nconst COMMANDS = new Set([\n\t\"config\",\n\t\"models\",\n\t\"cost\",\n\t\"stats\",\n\t\"agents\",\n\t\"exec\",\n\t\"web\",\n\t\"hosted-runner\",\n\t\"init\",\n\t\"anthropic\",\n\t\"evalops\",\n\t\"openai\",\n\t\"codex\",\n\t\"hooks\",\n\t\"memory\",\n\t\"remote\",\n\t\"export\",\n\t\"import\",\n]);\nconst SUBCOMMAND_COMMANDS = new Set([\n\t\"config\",\n\t\"models\",\n\t\"cost\",\n\t\"stats\",\n\t\"agents\",\n\t\"anthropic\",\n\t\"evalops\",\n\t\"openai\",\n\t\"codex\",\n\t\"hooks\",\n\t\"memory\",\n\t\"remote\",\n]);\n\nexport function parseArgs(args: string[]): Args {\n\tconst result: Args = {\n\t\tmessages: [],\n\t};\n\n\tfor (let i = 0; i < args.length; i++) {\n\t\tconst arg = args[i];\n\n\t\tif (arg === \"--help\" || arg === \"-h\") {\n\t\t\tresult.help = true;\n\t\t} else if (arg === \"--version\" || arg === \"-v\") {\n\t\t\tresult.version = true;\n\t\t} else if (arg?.startsWith(\"--mode=\")) {\n\t\t\tconst mode = arg.slice(\"--mode=\".length);\n\t\t\tif (\n\t\t\t\tmode === \"text\" ||\n\t\t\t\tmode === \"json\" ||\n\t\t\t\tmode === \"rpc\" ||\n\t\t\t\tmode === \"headless\"\n\t\t\t) {\n\t\t\t\tresult.mode = mode;\n\t\t\t\tif (mode === \"headless\") {\n\t\t\t\t\tresult.headless = true;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arg === \"--mode\" && i + 1 < args.length) {\n\t\t\tconst mode = args[++i];\n\t\t\tif (\n\t\t\t\tmode === \"text\" ||\n\t\t\t\tmode === \"json\" ||\n\t\t\t\tmode === \"rpc\" ||\n\t\t\t\tmode === \"headless\"\n\t\t\t) {\n\t\t\t\tresult.mode = mode;\n\t\t\t\tif (mode === \"headless\") {\n\t\t\t\t\tresult.headless = true;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arg === \"--headless\") {\n\t\t\tresult.headless = true;\n\t\t\tresult.mode = \"headless\";\n\t\t} else if (arg === \"--continue\" || arg === \"-c\") {\n\t\t\tresult.continue = true;\n\t\t} else if (arg === \"--resume\" || arg === \"-r\") {\n\t\t\tif (result.command === \"exec\") {\n\t\t\t\tconst nextArg = args[i + 1];\n\t\t\t\tif (i + 1 < args.length && nextArg && !nextArg.startsWith(\"-\")) {\n\t\t\t\t\tresult.execResumeId = nextArg;\n\t\t\t\t\ti++;\n\t\t\t\t} else {\n\t\t\t\t\tresult.execUseLast = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresult.resume = true;\n\t\t\t}\n\t\t} else if (arg === \"--provider\" && i + 1 < args.length) {\n\t\t\tresult.provider = args[++i];\n\t\t} else if ((arg === \"--model\" || arg === \"-m\") && i + 1 < args.length) {\n\t\t\tresult.model = args[++i];\n\t\t} else if (arg === \"--task-budget\") {\n\t\t\tconst rawValue = args[i + 1];\n\t\t\tif (\n\t\t\t\trawValue === undefined ||\n\t\t\t\t(rawValue.startsWith(\"-\") && Number.isNaN(Number(rawValue)))\n\t\t\t) {\n\t\t\t\tresult.error = \"--task-budget requires a value\";\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\ti++;\n\t\t\tconst value = Number(rawValue);\n\t\t\tif (Number.isInteger(value) && value > 0) {\n\t\t\t\tresult.taskBudget = value;\n\t\t\t} else {\n\t\t\t\tresult.error = \"--task-budget must be a positive integer\";\n\t\t\t}\n\t\t} else if (arg === \"--models\" && i + 1 < args.length) {\n\t\t\tconst modelsArg = args[++i]!;\n\t\t\tconst patterns = modelsArg\n\t\t\t\t.split(\",\")\n\t\t\t\t.map((value) => value.trim())\n\t\t\t\t.filter((value) => value.length > 0);\n\t\t\tif (patterns.length > 0) {\n\t\t\t\tresult.models = patterns;\n\t\t\t}\n\t\t} else if (arg === \"--models-file\" && i + 1 < args.length) {\n\t\t\tresult.modelsFile = args[++i];\n\t\t} else if (arg === \"--api-key\" && i + 1 < args.length) {\n\t\t\tresult.apiKey = args[++i];\n\t\t} else if (arg === \"--port\" && i + 1 < args.length) {\n\t\t\tconst value = Number.parseInt(args[++i] ?? \"\", 10);\n\t\t\tif (Number.isFinite(value) && value > 0 && value < 65536) {\n\t\t\t\tresult.port = value;\n\t\t\t}\n\t\t} else if (arg === \"--system-prompt\" && i + 1 < args.length) {\n\t\t\tresult.systemPrompt = args[++i];\n\t\t} else if (arg === \"--append-system-prompt\" && i + 1 < args.length) {\n\t\t\tresult.appendSystemPrompt = args[++i];\n\t\t} else if (arg === \"--no-session\") {\n\t\t\tresult.noSession = true;\n\t\t} else if (arg === \"--session\" && i + 1 < args.length) {\n\t\t\tresult.session = args[++i];\n\t\t} else if (arg === \"--safe-mode\") {\n\t\t\tresult.safeMode = true;\n\t\t} else if (arg === \"--approval-mode\" && i + 1 < args.length) {\n\t\t\tconst mode = args[++i];\n\t\t\tif (mode === \"auto\" || mode === \"prompt\" || mode === \"fail\") {\n\t\t\t\tresult.approvalMode = mode;\n\t\t\t}\n\t\t} else if (arg === \"--auth\" && i + 1 < args.length) {\n\t\t\tconst value = args[++i];\n\t\t\tif (value === \"auto\" || value === \"api-key\" || value === \"claude\") {\n\t\t\t\tresult.authMode = value;\n\t\t\t}\n\t\t} else if (arg === \"--force\") {\n\t\t\tresult.force = true;\n\t\t} else if (arg === \"--json\") {\n\t\t\tresult.execJson = true;\n\t\t} else if (arg === \"--full-auto\") {\n\t\t\tresult.execFullAuto = true;\n\t\t} else if (arg === \"--read-only\") {\n\t\t\tresult.execReadOnly = true;\n\t\t} else if (arg === \"--sandbox\" && i + 1 < args.length) {\n\t\t\tresult.sandbox = args[++i];\n\t\t} else if (arg === \"--output-schema\" && i + 1 < args.length) {\n\t\t\tresult.execOutputSchema = args[++i];\n\t\t} else if (arg === \"--output-last-message\" && i + 1 < args.length) {\n\t\t\tresult.execOutputLast = args[++i];\n\t\t} else if (arg === \"--last\" && result.command === \"exec\") {\n\t\t\tresult.execUseLast = true;\n\t\t} else if (arg === \"--tools\" && i + 1 < args.length) {\n\t\t\tconst toolsArg = args[++i]!;\n\t\t\tconst toolNames = toolsArg\n\t\t\t\t.split(\",\")\n\t\t\t\t.map((value) => value.trim())\n\t\t\t\t.filter((value) => value.length > 0);\n\t\t\tif (toolNames.length > 0) {\n\t\t\t\tresult.tools = toolNames;\n\t\t\t}\n\t\t} else if (arg === \"--readonly\" || arg === \"--read-only-mode\") {\n\t\t\tresult.readonly = true;\n\t\t} else if (arg === \"--composer\" && i + 1 < args.length) {\n\t\t\tresult.composer = args[++i];\n\t\t} else if (arg === \"--format\" && i + 1 < args.length) {\n\t\t\tresult.exportFormat = args[++i];\n\t\t} else if (arg === \"--redact-secrets\") {\n\t\t\tresult.redactSecrets = true;\n\t\t} else if (arg === \"--profile\" && i + 1 < args.length) {\n\t\t\tresult.profile = args[++i];\n\t\t} else if (arg === \"--config\" && i + 1 < args.length) {\n\t\t\t// Config overrides in key=value format\n\t\t\tconst override = args[++i]!;\n\t\t\tif (!result.configOverrides) {\n\t\t\t\tresult.configOverrides = [];\n\t\t\t}\n\t\t\tresult.configOverrides.push(override);\n\t\t} else if (arg && !arg.startsWith(\"-\")) {\n\t\t\tif (!result.command && COMMANDS.has(arg)) {\n\t\t\t\tresult.command = arg;\n\t\t\t\tconst nextArg = args[i + 1];\n\t\t\t\tif (\n\t\t\t\t\tSUBCOMMAND_COMMANDS.has(arg) &&\n\t\t\t\t\ti + 1 < args.length &&\n\t\t\t\t\tnextArg &&\n\t\t\t\t\t!nextArg.startsWith(\"-\")\n\t\t\t\t) {\n\t\t\t\t\tresult.subcommand = nextArg;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\tif (arg === \"remote\" || arg === \"hosted-runner\" || arg === \"init\") {\n\t\t\t\t\tresult.commandArgs = args.slice(i + 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresult.messages.push(arg);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare function handleCodexCommand(subcommand?: string, _params?: string[]): Promise<void>;
2
+ //# sourceMappingURL=codex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/codex.ts"],"names":[],"mappings":"AAKA,wBAAsB,kBAAkB,CACvC,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,MAAM,EAAO,GACpB,OAAO,CAAC,IAAI,CAAC,CAmBf"}
@@ -0,0 +1,65 @@
1
+ import { createInterface } from "node:readline/promises";
2
+ import chalk from "chalk";
3
+ import { hasOAuthCredentials, login, logout } from "../../oauth/index.js";
4
+ import { loadOAuthCredentials } from "../../oauth/storage.js";
5
+ export async function handleCodexCommand(subcommand, _params = []) {
6
+ switch (subcommand) {
7
+ case "login":
8
+ await handleLogin();
9
+ return;
10
+ case "logout":
11
+ await handleLogout();
12
+ return;
13
+ case "status":
14
+ await handleStatus();
15
+ return;
16
+ default:
17
+ console.error(chalk.red('Unknown codex subcommand. Try "maestro codex login", "logout", or "status".'));
18
+ process.exit(1);
19
+ }
20
+ }
21
+ async function promptCode() {
22
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
23
+ try {
24
+ return await rl.question("Paste the OpenAI redirect URL or authorization code: ");
25
+ }
26
+ finally {
27
+ rl.close();
28
+ }
29
+ }
30
+ async function handleLogin() {
31
+ console.log(chalk.bold("Maestro OpenAI Codex Login"));
32
+ await login("openai-codex", {
33
+ onAuthUrl: (url) => {
34
+ console.log(chalk.yellow("Open this URL in your browser to authenticate with OpenAI:"));
35
+ console.log(chalk.underline(url));
36
+ },
37
+ onPromptCode: promptCode,
38
+ onStatus: (status) => console.log(chalk.dim(status)),
39
+ });
40
+ console.log(chalk.green("OpenAI Codex credentials saved successfully."));
41
+ console.log(chalk.dim('Select provider "openai-codex" or a model like "openai-codex/gpt-5.5".'));
42
+ }
43
+ async function handleLogout() {
44
+ await logout("openai-codex");
45
+ console.log(chalk.green("Removed stored OpenAI Codex credentials."));
46
+ }
47
+ async function handleStatus() {
48
+ if (!hasOAuthCredentials("openai-codex")) {
49
+ console.log(chalk.yellow("No stored OpenAI Codex credentials."));
50
+ console.log(chalk.dim('Run "maestro codex login" to authenticate with OpenAI.'));
51
+ return;
52
+ }
53
+ const credentials = loadOAuthCredentials("openai-codex");
54
+ const remainingMs = Math.max(0, (credentials?.expires ?? Date.now()) - Date.now());
55
+ const minutes = Math.round(remainingMs / 60_000);
56
+ const accountId = typeof credentials?.metadata?.accountId === "string"
57
+ ? credentials.metadata.accountId
58
+ : undefined;
59
+ console.log(chalk.green("Stored OpenAI Codex credentials detected."));
60
+ if (accountId) {
61
+ console.log(chalk.dim(`ChatGPT account id: ${accountId}`));
62
+ }
63
+ console.log(chalk.dim(`Access token expires in ~${minutes} minute${minutes === 1 ? "" : "s"} (auto-refresh enabled).`));
64
+ }
65
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/cli/commands/codex.ts"],"names":[],"mappings":"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","sourcesContent":["import { createInterface } from \"node:readline/promises\";\nimport chalk from \"chalk\";\nimport { hasOAuthCredentials, login, logout } from \"../../oauth/index.js\";\nimport { loadOAuthCredentials } from \"../../oauth/storage.js\";\n\nexport async function handleCodexCommand(\n\tsubcommand?: string,\n\t_params: string[] = [],\n): Promise<void> {\n\tswitch (subcommand) {\n\t\tcase \"login\":\n\t\t\tawait handleLogin();\n\t\t\treturn;\n\t\tcase \"logout\":\n\t\t\tawait handleLogout();\n\t\t\treturn;\n\t\tcase \"status\":\n\t\t\tawait handleStatus();\n\t\t\treturn;\n\t\tdefault:\n\t\t\tconsole.error(\n\t\t\t\tchalk.red(\n\t\t\t\t\t'Unknown codex subcommand. Try \"maestro codex login\", \"logout\", or \"status\".',\n\t\t\t\t),\n\t\t\t);\n\t\t\tprocess.exit(1);\n\t}\n}\n\nasync function promptCode(): Promise<string> {\n\tconst rl = createInterface({ input: process.stdin, output: process.stdout });\n\ttry {\n\t\treturn await rl.question(\n\t\t\t\"Paste the OpenAI redirect URL or authorization code: \",\n\t\t);\n\t} finally {\n\t\trl.close();\n\t}\n}\n\nasync function handleLogin(): Promise<void> {\n\tconsole.log(chalk.bold(\"Maestro OpenAI Codex Login\"));\n\tawait login(\"openai-codex\", {\n\t\tonAuthUrl: (url) => {\n\t\t\tconsole.log(\n\t\t\t\tchalk.yellow(\n\t\t\t\t\t\"Open this URL in your browser to authenticate with OpenAI:\",\n\t\t\t\t),\n\t\t\t);\n\t\t\tconsole.log(chalk.underline(url));\n\t\t},\n\t\tonPromptCode: promptCode,\n\t\tonStatus: (status) => console.log(chalk.dim(status)),\n\t});\n\tconsole.log(chalk.green(\"OpenAI Codex credentials saved successfully.\"));\n\tconsole.log(\n\t\tchalk.dim(\n\t\t\t'Select provider \"openai-codex\" or a model like \"openai-codex/gpt-5.5\".',\n\t\t),\n\t);\n}\n\nasync function handleLogout(): Promise<void> {\n\tawait logout(\"openai-codex\");\n\tconsole.log(chalk.green(\"Removed stored OpenAI Codex credentials.\"));\n}\n\nasync function handleStatus(): Promise<void> {\n\tif (!hasOAuthCredentials(\"openai-codex\")) {\n\t\tconsole.log(chalk.yellow(\"No stored OpenAI Codex credentials.\"));\n\t\tconsole.log(\n\t\t\tchalk.dim('Run \"maestro codex login\" to authenticate with OpenAI.'),\n\t\t);\n\t\treturn;\n\t}\n\tconst credentials = loadOAuthCredentials(\"openai-codex\");\n\tconst remainingMs = Math.max(\n\t\t0,\n\t\t(credentials?.expires ?? Date.now()) - Date.now(),\n\t);\n\tconst minutes = Math.round(remainingMs / 60_000);\n\tconst accountId =\n\t\ttypeof credentials?.metadata?.accountId === \"string\"\n\t\t\t? credentials.metadata.accountId\n\t\t\t: undefined;\n\tconsole.log(chalk.green(\"Stored OpenAI Codex credentials detected.\"));\n\tif (accountId) {\n\t\tconsole.log(chalk.dim(`ChatGPT account id: ${accountId}`));\n\t}\n\tconsole.log(\n\t\tchalk.dim(\n\t\t\t`Access token expires in ~${minutes} minute${minutes === 1 ? \"\" : \"s\"} (auto-refresh enabled).`,\n\t\t),\n\t);\n}\n"]}
@@ -503,7 +503,7 @@ export async function handleConfigInit() {
503
503
  else {
504
504
  useEnv = false;
505
505
  const noKeyMessage = isEvalOpsManagedProvider(providerId)
506
- ? "\nManaged gateway preset does not use a local API key. Run /login evalops after setup."
506
+ ? "\nManaged gateway preset does not use a local API key. Run maestro evalops login after setup."
507
507
  : "\nLocal providers do not require API keys. Skipping step.";
508
508
  console.log(chalk.dim(noKeyMessage));
509
509
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport chalk from \"chalk\";\nimport { PATHS } from \"../../config/constants.js\";\nimport {\n\ttype ConfigInspection,\n\ttype ConfigValidationResult,\n\tgetConfigHierarchy,\n\tinspectConfig,\n\tvalidateConfig,\n} from \"../../models/registry.js\";\nimport {\n\tbadge,\n\tmuted,\n\tsectionHeading,\n\tseparator as themedSeparator,\n} from \"../../style/theme.js\";\n// Use the UMD build to avoid ESM subpath resolution issues in some environments\nimport { parseJsonc } from \"../../utils/jsonc-umd.js\";\nimport { getHomeDir } from \"../../utils/path-expansion.js\";\n\nimport type { Api } from \"../../agent/types.js\";\nimport { getEnvVarsForProvider } from \"../../providers/api-keys.js\";\nimport {\n\tgetEvalOpsManagedProviderDefinitions,\n\tisEvalOpsManagedProvider,\n} from \"../../providers/evalops-managed.js\";\n\ntype ProviderPreset = {\n\tid: string;\n\tname: string;\n\tapi: Api;\n\tdefaultModel: string;\n\tbaseUrl?: string;\n\trequiresApiKey: boolean;\n\tapiKeyEnv?: string;\n\tnote?: string;\n\tcontextWindow?: number;\n\tmaxTokens?: number;\n};\n\nfunction getManagedGatewayBaseUrl(): string {\n\treturn (\n\t\tprocess.env.MAESTRO_LLM_GATEWAY_URL?.trim() || \"http://127.0.0.1:8081/v1\"\n\t);\n}\n\nfunction getManagedGatewayProviderPresets(): ProviderPreset[] {\n\treturn getEvalOpsManagedProviderDefinitions().map((definition) => ({\n\t\tid: definition.id,\n\t\tname: definition.name,\n\t\tapi: definition.api,\n\t\tdefaultModel: definition.defaultModel,\n\t\tbaseUrl: getManagedGatewayBaseUrl(),\n\t\trequiresApiKey: false,\n\t\tnote: definition.note,\n\t}));\n}\n\nexport function getProviderPresets(): ProviderPreset[] {\n\treturn [\n\t\t{\n\t\t\tid: \"anthropic\",\n\t\t\tname: \"Anthropic (Claude)\",\n\t\t\tapi: \"anthropic-messages\",\n\t\t\tdefaultModel: \"claude-opus-4-6\",\n\t\t\tbaseUrl: \"https://api.anthropic.com\",\n\t\t\trequiresApiKey: true,\n\t\t\tapiKeyEnv: \"ANTHROPIC_API_KEY\",\n\t\t\tcontextWindow: 1000000,\n\t\t\tmaxTokens: 128000,\n\t\t},\n\t\t{\n\t\t\tid: \"openai\",\n\t\t\tname: \"OpenAI (Responses)\",\n\t\t\tapi: \"openai-responses\",\n\t\t\tdefaultModel: \"gpt-4o-mini\",\n\t\t\tbaseUrl: \"https://api.openai.com/v1\",\n\t\t\trequiresApiKey: true,\n\t\t\tapiKeyEnv: \"OPENAI_API_KEY\",\n\t\t},\n\t\t{\n\t\t\tid: \"groq\",\n\t\t\tname: \"Groq\",\n\t\t\tapi: \"openai-completions\",\n\t\t\tdefaultModel: \"llama-3.3-70b-versatile\",\n\t\t\tbaseUrl: \"https://api.groq.com/openai/v1\",\n\t\t\trequiresApiKey: true,\n\t\t\tapiKeyEnv: \"GROQ_API_KEY\",\n\t\t},\n\t\t{\n\t\t\tid: \"openrouter\",\n\t\t\tname: \"OpenRouter\",\n\t\t\tapi: \"openai-completions\",\n\t\t\tdefaultModel: \"openai/o4-mini\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\trequiresApiKey: true,\n\t\t\tapiKeyEnv: \"OPENROUTER_API_KEY\",\n\t\t\tnote: \"Supports many upstreams; accepts OpenAI-compatible keys\",\n\t\t},\n\t\t...getManagedGatewayProviderPresets(),\n\t\t{\n\t\t\tid: \"google-gemini\",\n\t\t\tname: \"Google Gemini API\",\n\t\t\tapi: \"google-generative-ai\",\n\t\t\tdefaultModel: \"gemini-2.0-flash\",\n\t\t\tbaseUrl: \"https://generativelanguage.googleapis.com/v1beta\",\n\t\t\trequiresApiKey: true,\n\t\t\tapiKeyEnv: \"GEMINI_API_KEY\",\n\t\t},\n\t\t{\n\t\t\tid: \"google-gemini-cli\",\n\t\t\tname: \"Google Gemini CLI (Cloud Code Assist)\",\n\t\t\tapi: \"google-gemini-cli\",\n\t\t\tdefaultModel: \"gemini-2.5-flash\",\n\t\t\tbaseUrl: \"https://cloudcode-pa.googleapis.com\",\n\t\t\trequiresApiKey: false,\n\t\t\tnote: \"Requires OAuth via /login (token includes projectId)\",\n\t\t},\n\t\t{\n\t\t\tid: \"google-antigravity\",\n\t\t\tname: \"Google Antigravity (Sandbox)\",\n\t\t\tapi: \"google-gemini-cli\",\n\t\t\tdefaultModel: \"gemini-3-pro-high\",\n\t\t\tbaseUrl: \"https://daily-cloudcode-pa.sandbox.googleapis.com\",\n\t\t\trequiresApiKey: false,\n\t\t\tnote: \"Requires OAuth via /login (token includes projectId)\",\n\t\t},\n\t\t{\n\t\t\tid: \"vertex-ai\",\n\t\t\tname: \"Google Vertex AI (Claude/Gemini)\",\n\t\t\tapi: \"anthropic-messages\",\n\t\t\tdefaultModel: \"claude-3-7-sonnet@20250219\",\n\t\t\tbaseUrl: \"https://us-central1-aiplatform.googleapis.com/v1beta1\",\n\t\t\trequiresApiKey: false,\n\t\t\tnote: \"Uses ADC; set GOOGLE_APPLICATION_CREDENTIALS or gcloud login\",\n\t\t},\n\t\t{\n\t\t\tid: \"bedrock\",\n\t\t\tname: \"AWS Bedrock\",\n\t\t\tapi: \"openai-completions\",\n\t\t\tdefaultModel: \"anthropic.claude-3-7-sonnet-20250219-v1:0\",\n\t\t\trequiresApiKey: false,\n\t\t\tnote: \"Uses AWS credentials + region envs\",\n\t\t},\n\t\t{\n\t\t\tid: \"mistral\",\n\t\t\tname: \"Mistral\",\n\t\t\tapi: \"openai-completions\",\n\t\t\tdefaultModel: \"mistral-large-latest\",\n\t\t\tbaseUrl: \"https://api.mistral.ai/v1\",\n\t\t\trequiresApiKey: true,\n\t\t\tapiKeyEnv: \"MISTRAL_API_KEY\",\n\t\t},\n\t\t{\n\t\t\tid: \"lmstudio\",\n\t\t\tname: \"LM Studio (local)\",\n\t\t\tapi: \"openai-responses\",\n\t\t\tdefaultModel: \"lmstudio/gemma-3n\",\n\t\t\tbaseUrl: \"http://127.0.0.1:1234/v1\",\n\t\t\trequiresApiKey: false,\n\t\t},\n\t\t{\n\t\t\tid: \"ollama\",\n\t\t\tname: \"Ollama (local)\",\n\t\t\tapi: \"openai-responses\",\n\t\t\tdefaultModel: \"ollama/llama3.2\",\n\t\t\tbaseUrl: \"http://localhost:11434/v1\",\n\t\t\trequiresApiKey: false,\n\t\t},\n\t];\n}\n\nexport interface ConfigShowRenderOptions {\n\thierarchy: string[];\n\thomeDir?: string;\n\tdisableColors?: boolean;\n}\n\n// Adapted from ansi-regex (MIT) to cover CSI and OSC escape sequences.\nconst ANSI_STRING_TERMINATORS = \"(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)\";\nconst ANSI_OSC_SEQUENCE = `(?:\\\\u001B\\\\][\\\\s\\\\S]*?${ANSI_STRING_TERMINATORS})`;\nconst ANSI_CSI_SEQUENCE =\n\t\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:\\\\d{1,4}(?:[;:]\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]\";\nconst ANSI_ESCAPE_SEQUENCE = new RegExp(\n\t`${ANSI_OSC_SEQUENCE}|${ANSI_CSI_SEQUENCE}`,\n\t\"g\",\n);\n\nfunction stripAnsi(value: string): string {\n\treturn value.replace(ANSI_ESCAPE_SEQUENCE, \"\");\n}\n\nconst normalizeForCompare = (value: string): string =>\n\tprocess.platform === \"win32\" ? value.toLowerCase() : value;\n\nfunction replaceHomePrefix(path: string, homeDir: string): string {\n\tconst normalizedPath = path.replace(/\\\\/g, \"/\");\n\tconst normalizedHome = homeDir.replace(/\\\\/g, \"/\");\n\tconst pathCheck = normalizeForCompare(normalizedPath);\n\tconst homeCheck = normalizeForCompare(normalizedHome);\n\tif (pathCheck === homeCheck) {\n\t\treturn \"~\";\n\t}\n\tif (pathCheck.startsWith(`${homeCheck}/`)) {\n\t\treturn `~${normalizedPath.slice(normalizedHome.length)}`;\n\t}\n\treturn path;\n}\n\nexport function buildConfigShowSections(\n\tinspection: ConfigInspection,\n\toptions: ConfigShowRenderOptions,\n): string[] {\n\tconst homeDir = options.homeDir ?? getHomeDir();\n\tconst rel = (path: string) => replaceHomePrefix(path, homeDir);\n\tconst output: string[] = [];\n\n\toutput.push(sectionHeading(\"Configuration Inspection\"));\n\toutput.push(\"\");\n\toutput.push(badge(\"Config Sources\", undefined, \"info\"));\n\tfor (const source of inspection.sources) {\n\t\tconst status = source.exists\n\t\t\t? badge(\"present\", undefined, \"success\")\n\t\t\t: badge(\"missing\", undefined, \"warn\");\n\t\tconst mark = options.hierarchy.includes(source.path) ? \"•\" : \" \";\n\t\toutput.push(` ${mark} ${status} ${muted(rel(source.path))}`);\n\t}\n\toutput.push(\"\");\n\n\tif (inspection.providers.length > 0) {\n\t\toutput.push(\n\t\t\tbadge(`Providers (${inspection.providers.length})`, undefined, \"info\"),\n\t\t);\n\t\tfor (const provider of inspection.providers) {\n\t\t\tconst isOverrideOnly = provider.modelCount === 0;\n\t\t\tconst heading = `${chalk.cyan(provider.id)} ${muted(\n\t\t\t\t`(${provider.modelCount} models)`,\n\t\t\t)}`;\n\t\t\tconst enabledBadge = provider.enabled\n\t\t\t\t? badge(\"enabled\", undefined, \"success\")\n\t\t\t\t: badge(\"disabled\", undefined, \"warn\");\n\t\t\tconst metaBadges: string[] = [];\n\t\t\tif (isOverrideOnly) {\n\t\t\t\tmetaBadges.push(badge(\"override-only\", undefined, \"info\"));\n\t\t\t\tif (provider.apiKeySource) {\n\t\t\t\t\tmetaBadges.push(badge(\"API key\", provider.apiKeySource, \"success\"));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst keyBadge = provider.apiKeySource\n\t\t\t\t\t? badge(\"API key\", provider.apiKeySource, \"success\")\n\t\t\t\t\t: badge(\"API key missing\", undefined, \"warn\");\n\t\t\t\tmetaBadges.push(keyBadge);\n\t\t\t}\n\t\t\tmetaBadges.push(enabledBadge);\n\t\t\tconst metaLine = metaBadges.join(` ${themedSeparator()} `);\n\t\t\toutput.push(` ${heading} ${themedSeparator()} ${metaLine}`);\n\t\t\toutput.push(` ${muted(provider.name)}`);\n\t\t\toutput.push(` ${muted(`Base URL: ${provider.baseUrl}`)}`);\n\t\t\tif (provider.options && Object.keys(provider.options).length > 0) {\n\t\t\t\toutput.push(muted(` Options: ${JSON.stringify(provider.options)}`));\n\t\t\t}\n\t\t\tif (provider.models.length <= 3) {\n\t\t\t\tfor (const model of provider.models) {\n\t\t\t\t\toutput.push(muted(` • ${formatModelLabel(model)}`));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst firstModel = provider.models[0];\n\t\t\t\tconst secondModel = provider.models[1];\n\t\t\t\tif (firstModel) {\n\t\t\t\t\toutput.push(muted(` • ${formatModelLabel(firstModel)}`));\n\t\t\t\t}\n\t\t\t\tif (secondModel) {\n\t\t\t\t\toutput.push(muted(` • ${formatModelLabel(secondModel)}`));\n\t\t\t\t}\n\t\t\t\toutput.push(muted(` ... and ${provider.models.length - 2} more`));\n\t\t\t}\n\t\t\toutput.push(\"\");\n\t\t}\n\t} else {\n\t\toutput.push(`${badge(\"No providers configured\", undefined, \"warn\")}`);\n\t\toutput.push(\"\");\n\t}\n\n\tif (inspection.fileReferences.length > 0) {\n\t\toutput.push(\n\t\t\tbadge(\n\t\t\t\t`File References (${inspection.fileReferences.length})`,\n\t\t\t\tundefined,\n\t\t\t\t\"info\",\n\t\t\t),\n\t\t);\n\t\tfor (const ref of inspection.fileReferences) {\n\t\t\tconst status = ref.exists\n\t\t\t\t? badge(\"present\", undefined, \"success\")\n\t\t\t\t: badge(\"missing\", undefined, \"danger\");\n\t\t\tconst size = ref.size ? ` (${formatBytes(ref.size)})` : \"\";\n\t\t\toutput.push(` ${status} ${muted(rel(ref.path))}${muted(size)}`);\n\t\t}\n\t\toutput.push(\"\");\n\t}\n\n\tif (inspection.envVars.length > 0) {\n\t\toutput.push(\n\t\t\tbadge(\n\t\t\t\t`Environment Variables (${inspection.envVars.length})`,\n\t\t\t\tundefined,\n\t\t\t\t\"info\",\n\t\t\t),\n\t\t);\n\t\tfor (const envVar of inspection.envVars) {\n\t\t\tconst status = envVar.set\n\t\t\t\t? badge(\"set\", undefined, \"success\")\n\t\t\t\t: badge(\"missing\", undefined, \"warn\");\n\t\t\tconst value = envVar.maskedValue ? envVar.maskedValue : \"(not set)\";\n\t\t\toutput.push(` ${status} ${chalk.cyan(envVar.name)}: ${muted(value)}`);\n\t\t}\n\t\toutput.push(\"\");\n\t}\n\n\tif (options.disableColors) {\n\t\treturn output.map((line) => stripAnsi(line));\n\t}\n\treturn output;\n}\n\n/**\n * Handle `maestro config validate` command\n */\nexport async function handleConfigValidate(): Promise<void> {\n\tconsole.log(sectionHeading(\"Validating Configuration\"));\n\n\tconst result: ConfigValidationResult = validateConfig();\n\tconst homeDir = getHomeDir();\n\n\t// Show config files\n\tif (result.summary.configFiles.length > 0) {\n\t\tconsole.log(muted(\"Config Files:\"));\n\t\tfor (const file of result.summary.configFiles) {\n\t\t\tconst relPath = replaceHomePrefix(file, homeDir);\n\t\t\tconsole.log(muted(` • ${relPath}`));\n\t\t}\n\t\tconsole.log();\n\t}\n\n\t// Show errors\n\tif (result.errors.length > 0) {\n\t\tconsole.log(badge(\"[ERROR] Errors\", undefined, \"danger\"));\n\t\tfor (const error of result.errors) {\n\t\t\tconsole.log(chalk.red(` • ${error}`));\n\t\t}\n\t\tconsole.log();\n\t}\n\n\t// Show warnings\n\tif (result.warnings.length > 0) {\n\t\tconsole.log(badge(\"[WARN] Warnings\", undefined, \"warn\"));\n\t\tfor (const warning of result.warnings) {\n\t\t\tconsole.log(chalk.yellow(` • ${warning}`));\n\t\t}\n\t\tconsole.log();\n\t}\n\n\t// Show summary\n\tconsole.log(muted(\"Summary:\"));\n\tconsole.log(\n\t\tmuted(` • ${badge(\"Providers\", String(result.summary.providers))}`),\n\t);\n\tconsole.log(muted(` • ${badge(\"Models\", String(result.summary.models))}`));\n\tconsole.log(\n\t\tmuted(\n\t\t\t` • ${badge(\n\t\t\t\t\"File References\",\n\t\t\t\tString(result.summary.fileReferences.length),\n\t\t\t)}`,\n\t\t),\n\t);\n\tconsole.log(\n\t\tmuted(\n\t\t\t` • ${badge(\n\t\t\t\t\"Environment Variables\",\n\t\t\t\tString(result.summary.envVars.length),\n\t\t\t)}`,\n\t\t),\n\t);\n\tconsole.log();\n\n\t// Final verdict\n\tif (result.valid) {\n\t\tconsole.log(`${badge(\"Configuration is valid\", undefined, \"success\")}\\n`);\n\t\tprocess.exit(0);\n\t} else {\n\t\tconsole.log(`${badge(\"Configuration has errors\", undefined, \"danger\")}\\n`);\n\t\tprocess.exit(1);\n\t}\n}\n\n/**\n * Legacy renderer for `maestro config show`\n */\nfunction renderConfigShowLegacy(\n\tinspection: ConfigInspection,\n\thierarchy: string[],\n\thomeDir: string,\n): void {\n\tconsole.log(sectionHeading(\"Configuration Inspection\"));\n\n\t// Show config sources\n\tconsole.log(badge(\"Config Sources\", undefined, \"info\"));\n\tfor (const source of inspection.sources) {\n\t\tconst relPath = replaceHomePrefix(source.path, homeDir);\n\t\tconst status = source.exists\n\t\t\t? badge(\"present\", undefined, \"success\")\n\t\t\t: badge(\"missing\", undefined, \"warn\");\n\t\tconst mark = hierarchy.includes(source.path) ? \"•\" : \" \";\n\t\tconsole.log(` ${mark} ${status} ${muted(relPath)}`);\n\t}\n\tconsole.log();\n\n\t// Show providers\n\tif (inspection.providers.length > 0) {\n\t\tconsole.log(\n\t\t\tbadge(`Providers (${inspection.providers.length})`, undefined, \"info\"),\n\t\t);\n\t\tfor (const provider of inspection.providers) {\n\t\t\tconst isOverrideOnly = provider.modelCount === 0;\n\t\t\tconst heading = `${chalk.cyan(provider.id)} ${muted(\n\t\t\t\t`(${provider.modelCount} models)`,\n\t\t\t)}`;\n\t\t\tconst enabledBadge = provider.enabled\n\t\t\t\t? badge(\"enabled\", undefined, \"success\")\n\t\t\t\t: badge(\"disabled\", undefined, \"warn\");\n\t\t\tconst metaBadges: string[] = [];\n\t\t\tif (isOverrideOnly) {\n\t\t\t\tmetaBadges.push(badge(\"override-only\", undefined, \"info\"));\n\t\t\t\tif (provider.apiKeySource) {\n\t\t\t\t\tmetaBadges.push(badge(\"API key\", provider.apiKeySource, \"success\"));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst keyBadge = provider.apiKeySource\n\t\t\t\t\t? badge(\"API key\", provider.apiKeySource, \"success\")\n\t\t\t\t\t: badge(\"API key missing\", undefined, \"warn\");\n\t\t\t\tmetaBadges.push(keyBadge);\n\t\t\t}\n\t\t\tmetaBadges.push(enabledBadge);\n\t\t\tconst metaLine = metaBadges.join(` ${themedSeparator()} `);\n\n\t\t\tconsole.log(` ${heading} ${themedSeparator()} ${metaLine}`);\n\t\t\tconsole.log(` ${muted(provider.name)}`);\n\t\t\tconsole.log(` ${muted(`Base URL: ${provider.baseUrl}`)}`);\n\t\t\tif (provider.options && Object.keys(provider.options).length > 0) {\n\t\t\t\tconsole.log(muted(` Options: ${JSON.stringify(provider.options)}`));\n\t\t\t}\n\n\t\t\t// Show models\n\t\t\tif (provider.models.length <= 3) {\n\t\t\t\tfor (const model of provider.models) {\n\t\t\t\t\tconsole.log(muted(` • ${formatModelLabel(model)}`));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst firstModel = provider.models[0];\n\t\t\t\tconst secondModel = provider.models[1];\n\t\t\t\tif (firstModel) {\n\t\t\t\t\tconsole.log(muted(` • ${formatModelLabel(firstModel)}`));\n\t\t\t\t}\n\t\t\t\tif (secondModel) {\n\t\t\t\t\tconsole.log(muted(` • ${formatModelLabel(secondModel)}`));\n\t\t\t\t}\n\t\t\t\tconsole.log(muted(` ... and ${provider.models.length - 2} more`));\n\t\t\t}\n\t\t\tconsole.log();\n\t\t}\n\t} else {\n\t\tconsole.log(`${badge(\"No providers configured\", undefined, \"warn\")}\\n`);\n\t}\n\n\t// Show file references\n\tif (inspection.fileReferences.length > 0) {\n\t\tconsole.log(\n\t\t\tbadge(\n\t\t\t\t`File References (${inspection.fileReferences.length})`,\n\t\t\t\tundefined,\n\t\t\t\t\"info\",\n\t\t\t),\n\t\t);\n\t\tfor (const ref of inspection.fileReferences) {\n\t\t\tconst relPath = replaceHomePrefix(ref.path, homeDir);\n\t\t\tconst status = ref.exists\n\t\t\t\t? badge(\"present\", undefined, \"success\")\n\t\t\t\t: badge(\"missing\", undefined, \"danger\");\n\t\t\tconst size = ref.size ? ` (${formatBytes(ref.size)})` : \"\";\n\t\t\tconsole.log(` ${status} ${muted(relPath)}${muted(size)}`);\n\t\t}\n\t\tconsole.log();\n\t}\n\n\t// Show environment variables\n\tif (inspection.envVars.length > 0) {\n\t\tconsole.log(\n\t\t\tbadge(\n\t\t\t\t`Environment Variables (${inspection.envVars.length})`,\n\t\t\t\tundefined,\n\t\t\t\t\"info\",\n\t\t\t),\n\t\t);\n\t\tfor (const envVar of inspection.envVars) {\n\t\t\tconst status = envVar.set\n\t\t\t\t? badge(\"set\", undefined, \"success\")\n\t\t\t\t: badge(\"missing\", undefined, \"warn\");\n\t\t\tconst value = envVar.maskedValue ? envVar.maskedValue : \"(not set)\";\n\t\t\tconsole.log(` ${status} ${chalk.cyan(envVar.name)}: ${muted(value)}`);\n\t\t}\n\t\tconsole.log();\n\t}\n}\n\n/**\n * Handle `maestro config show` command\n */\nexport async function handleConfigShow(): Promise<void> {\n\tconst inspection: ConfigInspection = inspectConfig();\n\tconst hierarchy = getConfigHierarchy();\n\tconst homeDir = getHomeDir();\n\tconst layoutPref = (\n\t\tprocess.env.MAESTRO_CONFIG_SHOW_LAYOUT ?? \"v2\"\n\t).toLowerCase();\n\n\tif (layoutPref === \"legacy\") {\n\t\trenderConfigShowLegacy(inspection, hierarchy, homeDir);\n\t} else {\n\t\tconst lines = buildConfigShowSections(inspection, {\n\t\t\thierarchy,\n\t\t\thomeDir,\n\t\t\tdisableColors: !process.stdout.isTTY,\n\t\t});\n\t\tfor (const line of lines) {\n\t\t\tconsole.log(line);\n\t\t}\n\t}\n\n\tprocess.exit(0);\n}\n\n/**\n * Handle `maestro config init` command\n */\nexport async function handleConfigInit(): Promise<void> {\n\tconsole.log(sectionHeading(\"Initialize Maestro Configuration\"));\n\n\tconst readline = await import(\"node:readline/promises\");\n\tconst rl = readline.createInterface({\n\t\tinput: process.stdin,\n\t\toutput: process.stdout,\n\t});\n\n\ttry {\n\t\tconst providerPresets = getProviderPresets();\n\n\t\t// Determine config location\n\t\tconst configDir = join(process.cwd(), \".maestro\");\n\t\tconst configPath = join(configDir, \"config.json\");\n\t\tconst promptsDir = join(configDir, \"prompts\");\n\n\t\t// Check if config already exists\n\t\tif (existsSync(configPath)) {\n\t\t\tconst overwrite = await rl.question(\n\t\t\t\tchalk.yellow(\n\t\t\t\t\t`Config already exists at ${configPath}. Overwrite? (y/N): `,\n\t\t\t\t),\n\t\t\t);\n\t\t\tif (overwrite.toLowerCase() !== \"y\") {\n\t\t\t\tconsole.log(muted(\"\\nCancelled.\"));\n\t\t\t\trl.close();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Optional flag: --preset <id> to skip menu\n\t\tconst args = process.argv.slice(2);\n\t\tconst presetFlagIndex = args.findIndex(\n\t\t\t(arg) => arg === \"--preset\" || arg === \"-p\",\n\t\t);\n\t\tconst presetId =\n\t\t\tpresetFlagIndex >= 0 ? (args[presetFlagIndex + 1] ?? \"\") : \"\";\n\n\t\t// Step 1: Choose provider\n\t\tconsole.log(`\\n${badge(\"1. Choose your provider\", undefined, \"info\")}`);\n\t\tproviderPresets.forEach((preset, idx) => {\n\t\t\tconst note = preset.note ? chalk.dim(` — ${preset.note}`) : \"\";\n\t\t\tconsole.log(` ${idx + 1}) ${preset.name}${note}`);\n\t\t});\n\n\t\tlet preset: ProviderPreset | undefined;\n\t\tif (presetId) {\n\t\t\tconst found = providerPresets.find(\n\t\t\t\t(p) => p.id.toLowerCase() === presetId.toLowerCase(),\n\t\t\t);\n\t\t\tif (!found) {\n\t\t\t\tconsole.log(\n\t\t\t\t\tchalk.yellow(\n\t\t\t\t\t\t`\\nUnknown preset \"${presetId}\", falling back to menu selection.`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpreset = found;\n\t\t\t\tconsole.log(chalk.green(`\\nUsing preset: ${preset.name}`));\n\t\t\t}\n\t\t}\n\n\t\tif (!preset) {\n\t\t\tconst providerChoice = await rl.question(\n\t\t\t\tchalk.cyan(`\\nProvider (1-${providerPresets.length}): `),\n\t\t\t);\n\n\t\t\tconst presetIndex =\n\t\t\t\tNumber.parseInt(providerChoice.trim(), 10) - 1 >= 0 &&\n\t\t\t\tNumber.parseInt(providerChoice.trim(), 10) - 1 < providerPresets.length\n\t\t\t\t\t? Number.parseInt(providerChoice.trim(), 10) - 1\n\t\t\t\t\t: 0;\n\t\t\tpreset = providerPresets[presetIndex] ?? providerPresets[0];\n\t\t}\n\n\t\t// At this point preset is guaranteed to be defined because providerPresets is non-empty\n\t\tif (!preset) {\n\t\t\tthrow new Error(\"No provider presets available\");\n\t\t}\n\n\t\tconst {\n\t\t\tid: providerId,\n\t\t\tname: providerName,\n\t\t\tbaseUrl,\n\t\t\tapi: apiType,\n\t\t} = preset;\n\t\tconst { defaultModel } = preset;\n\t\tconst requiresApiKey = preset.requiresApiKey;\n\n\t\tlet useEnv = true;\n\t\tlet apiKeyField: { apiKeyEnv?: string; apiKey?: string } = {};\n\t\tif (requiresApiKey) {\n\t\t\tconsole.log(\n\t\t\t\t`\\n${badge(\n\t\t\t\t\t\"2. How would you like to provide your API key?\",\n\t\t\t\t\tundefined,\n\t\t\t\t\t\"info\",\n\t\t\t\t)}`,\n\t\t\t);\n\t\t\tconsole.log(\" 1) Environment variable (recommended)\");\n\t\t\tconsole.log(\" 2) Direct in config (not recommended)\");\n\n\t\t\tconst keyChoice = await rl.question(chalk.cyan(\"\\nChoice (1-2): \"));\n\t\t\tuseEnv = keyChoice.trim() !== \"2\";\n\n\t\t\tif (useEnv) {\n\t\t\t\tconst fallbackEnv =\n\t\t\t\t\tgetEnvVarsForProvider(providerId)[0] ??\n\t\t\t\t\t`${providerId.toUpperCase().replace(/[^A-Z0-9]/g, \"_\")}_API_KEY`;\n\t\t\t\tconst envVarName = preset.apiKeyEnv ?? fallbackEnv;\n\t\t\t\tapiKeyField = { apiKeyEnv: envVarName };\n\t\t\t\tconsole.log(chalk.dim(`\\nUsing environment variable: ${envVarName}`));\n\t\t\t} else {\n\t\t\t\tconst apiKey = await rl.question(chalk.cyan(\"\\nEnter API key: \"));\n\t\t\t\tapiKeyField = { apiKey: apiKey.trim() };\n\t\t\t}\n\t\t} else {\n\t\t\tuseEnv = false;\n\t\t\tconst noKeyMessage = isEvalOpsManagedProvider(providerId)\n\t\t\t\t? \"\\nManaged gateway preset does not use a local API key. Run /login evalops after setup.\"\n\t\t\t\t: \"\\nLocal providers do not require API keys. Skipping step.\";\n\t\t\tconsole.log(chalk.dim(noKeyMessage));\n\t\t}\n\n\t\t// Step 3: Use file references for prompts\n\t\tconsole.log(\n\t\t\t`\\n${badge(\n\t\t\t\t\"3. Would you like to use file references for prompts?\",\n\t\t\t\tundefined,\n\t\t\t\t\"info\",\n\t\t\t)}`,\n\t\t);\n\t\tconsole.log(\" This creates a prompts/ folder for better organization.\");\n\n\t\tconst useFiles = await rl.question(\n\t\t\tchalk.cyan(\"\\nUse file references? (Y/n): \"),\n\t\t);\n\t\tconst createPrompts = useFiles.toLowerCase() !== \"n\";\n\n\t\t// Create directories\n\t\tmkdirSync(configDir, { recursive: true });\n\t\tif (createPrompts) {\n\t\t\tmkdirSync(promptsDir, { recursive: true });\n\t\t}\n\n\t\t// Create config\n\t\tconst config: LocalConfigFile = {\n\t\t\t$schema: \"https://composer-cli.dev/config.schema.json\",\n\t\t\tproviders: [\n\t\t\t\t{\n\t\t\t\t\tid: providerId,\n\t\t\t\t\tname: providerName,\n\t\t\t\t\t...(baseUrl && { baseUrl }),\n\t\t\t\t\tapi: apiType,\n\t\t\t\t\t...apiKeyField,\n\t\t\t\t\tmodels: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: defaultModel,\n\t\t\t\t\t\t\tname: createPrompts\n\t\t\t\t\t\t\t\t? \"{file:./prompts/system.md}\"\n\t\t\t\t\t\t\t\t: \"Default assistant\",\n\t\t\t\t\t\t\tcontextWindow: preset?.contextWindow ?? 200000,\n\t\t\t\t\t\t\tmaxTokens: preset?.maxTokens ?? 8192,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\t// Write config\n\t\twriteFileSync(configPath, JSON.stringify(config, null, 2));\n\t\tconsole.log(`\\n${badge(\"Created config\", configPath, \"success\")}`);\n\n\t\t// Create example prompt file\n\t\tif (createPrompts) {\n\t\t\tconst systemPromptPath = join(promptsDir, \"system.md\");\n\t\t\tconst examplePrompt = `# System Prompt\n\nYou are a helpful AI coding assistant.\n\n## Guidelines\n\n- Write clean, maintainable code\n- Follow best practices\n- Provide clear explanations\n- Test your suggestions\n\n## Style\n\n- Be concise but thorough\n- Use examples when helpful\n- Ask clarifying questions when needed\n`;\n\t\t\twriteFileSync(systemPromptPath, examplePrompt);\n\t\t\tconsole.log(badge(\"Created prompt\", systemPromptPath, \"success\"));\n\t\t}\n\n\t\t// Create .env.example if using environment variables\n\t\tif (useEnv) {\n\t\t\tconst envExamplePath = join(process.cwd(), \".env.example\");\n\t\t\tconst envVarName = apiKeyField.apiKeyEnv ?? \"\";\n\t\t\tconst envContent = existsSync(envExamplePath)\n\t\t\t\t? `\\n# Added by maestro init\\n${envVarName}=your-api-key-here\\n`\n\t\t\t\t: `# Maestro Configuration\\n${envVarName}=your-api-key-here\\n`;\n\n\t\t\tif (existsSync(envExamplePath)) {\n\t\t\t\tconst fs = await import(\"node:fs/promises\");\n\t\t\t\tawait fs.appendFile(envExamplePath, envContent);\n\t\t\t} else {\n\t\t\t\twriteFileSync(envExamplePath, envContent);\n\t\t\t}\n\t\t\tconsole.log(badge(\"Updated .env.example\", undefined, \"success\"));\n\t\t}\n\n\t\t// Show next steps\n\t\tconsole.log(sectionHeading(\"Configuration initialized successfully!\"));\n\t\tconsole.log(muted(\"Next steps:\"));\n\n\t\tif (useEnv) {\n\t\t\tconst envVarName = apiKeyField.apiKeyEnv ?? \"\";\n\t\t\tconsole.log(muted(` 1. Set ${envVarName} in your environment`));\n\t\t}\n\t\tif (createPrompts) {\n\t\t\tconsole.log(muted(\" 2. Edit .maestro/prompts/system.md\"));\n\t\t}\n\t\tconsole.log(muted(\" 3. Run: maestro models list\"));\n\t\tconsole.log(muted(' 4. Start using: maestro \"your prompt\"\\n'));\n\n\t\trl.close();\n\t} catch (error) {\n\t\trl.close();\n\t\tthrow error;\n\t}\n}\n\ntype LocalProviderTemplate = {\n\tid: string;\n\tname: string;\n\tbaseUrl: string;\n\tapi: string;\n\tmodel: {\n\t\tid: string;\n\t\tname: string;\n\t\tcontextWindow: number;\n\t\tmaxTokens: number;\n\t};\n};\n\nconst LOCAL_PROVIDER_TEMPLATES: Record<string, LocalProviderTemplate> = {\n\tlmstudio: {\n\t\tid: \"lmstudio\",\n\t\tname: \"LM Studio (local)\",\n\t\tbaseUrl: \"http://127.0.0.1:1234/v1\",\n\t\tapi: \"openai-responses\",\n\t\tmodel: {\n\t\t\tid: \"lmstudio/gemma-3n\",\n\t\t\tname: \"Gemma 3n (local)\",\n\t\t\tcontextWindow: 200_000,\n\t\t\tmaxTokens: 8192,\n\t\t},\n\t},\n\tollama: {\n\t\tid: \"ollama\",\n\t\tname: \"Ollama (local)\",\n\t\tbaseUrl: \"http://localhost:11434/v1\",\n\t\tapi: \"openai-responses\",\n\t\tmodel: {\n\t\t\tid: \"ollama/llama3.1\",\n\t\t\tname: \"Llama 3.1 (local)\",\n\t\t\tcontextWindow: 128_000,\n\t\t\tmaxTokens: 8192,\n\t\t},\n\t},\n};\n\ninterface LocalConfigFile {\n\t$schema?: string;\n\tproviders?: Array<{\n\t\tid: string;\n\t\tname: string;\n\t\tapi: string;\n\t\tbaseUrl?: string;\n\t\tmodels: Array<{\n\t\t\tid: string;\n\t\t\tname: string;\n\t\t\tcontextWindow: number;\n\t\t\tmaxTokens: number;\n\t\t\tinput?: Array<\"text\" | \"image\">;\n\t\t}>;\n\t\toptions?: Record<string, unknown>;\n\t}>;\n}\n\nfunction loadLocalConfig(path: string): LocalConfigFile {\n\tif (!existsSync(path)) {\n\t\treturn {\n\t\t\t$schema: \"https://composer-cli.dev/config.schema.json\",\n\t\t\tproviders: [],\n\t\t};\n\t}\n\tconst raw = readFileSync(path, \"utf-8\");\n\ttry {\n\t\tconst parsed = parseJsonc(raw, [], {\n\t\t\tallowTrailingComma: true,\n\t\t\tdisallowComments: false,\n\t\t});\n\t\tif (!parsed || typeof parsed !== \"object\") {\n\t\t\treturn {\n\t\t\t\t$schema: \"https://composer-cli.dev/config.schema.json\",\n\t\t\t\tproviders: [],\n\t\t\t};\n\t\t}\n\t\treturn parsed as LocalConfigFile;\n\t} catch (error) {\n\t\tthrow new Error(\n\t\t\t`Failed to parse ${path}: ${error instanceof Error ? error.message : String(error)}`,\n\t\t);\n\t}\n}\n\nfunction upsertLocalProvider(\n\tconfig: LocalConfigFile,\n\tprovider: LocalProviderTemplate,\n\toverrides: {\n\t\tid: string;\n\t\tname: string;\n\t\tbaseUrl: string;\n\t\tmodelId: string;\n\t\tmodelName: string;\n\t\tcontextWindow: number;\n\t\tmaxTokens: number;\n\t},\n): void {\n\tif (!Array.isArray(config.providers)) {\n\t\tconfig.providers = [];\n\t}\n\ttype ProviderEntry = NonNullable<LocalConfigFile[\"providers\"]>[number];\n\tconst entry: ProviderEntry = {\n\t\tid: overrides.id,\n\t\tname: overrides.name,\n\t\tapi: provider.api,\n\t\tbaseUrl: overrides.baseUrl,\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: overrides.modelId,\n\t\t\t\tname: overrides.modelName,\n\t\t\t\tcontextWindow: overrides.contextWindow,\n\t\t\t\tmaxTokens: overrides.maxTokens,\n\t\t\t\tinput: [\"text\"] as Array<\"text\" | \"image\">,\n\t\t\t},\n\t\t],\n\t};\n\tconst existingIndex = config.providers.findIndex(\n\t\t(p) => p?.id === overrides.id,\n\t);\n\tif (existingIndex >= 0) {\n\t\tconfig.providers[existingIndex] = entry;\n\t} else {\n\t\tconfig.providers.push(entry);\n\t}\n}\n\nasync function checkLocalEndpoint(\n\tname: string,\n\tbaseUrl: string,\n): Promise<string> {\n\ttry {\n\t\tconst url = new URL(baseUrl);\n\t\turl.pathname = \"/models\";\n\t\tconst response = await fetch(url.toString(), { method: \"GET\" });\n\t\tif (response.ok) {\n\t\t\treturn `${badge(name, undefined, \"success\")} ${chalk.dim(\n\t\t\t\t`responded with ${response.status}`,\n\t\t\t)}`;\n\t\t}\n\t\treturn `${badge(name, undefined, \"warn\")} ${chalk.dim(\n\t\t\t`HTTP ${response.status}`,\n\t\t)}`;\n\t} catch (error) {\n\t\treturn `${badge(name, undefined, \"danger\")} ${chalk.dim(\n\t\t\terror instanceof Error ? error.message : String(error),\n\t\t)}`;\n\t}\n}\n\nexport async function handleConfigLocal(): Promise<void> {\n\tconsole.log(sectionHeading(\"Local provider helper\"));\n\tconst readline = await import(\"node:readline/promises\");\n\tconst rl = readline.createInterface({\n\t\tinput: process.stdin,\n\t\toutput: process.stdout,\n\t});\n\n\ttry {\n\t\tconsole.log(\" 1) Add LM Studio provider\");\n\t\tconsole.log(\" 2) Add Ollama provider\");\n\t\tconsole.log(\" 3) Check local endpoints\");\n\t\tconsole.log(\" 4) Cancel\");\n\t\tconst choice = (await rl.question(chalk.cyan(\"\\nChoice (1-4): \"))).trim();\n\n\t\tif (choice === \"4\") {\n\t\t\tconsole.log(muted(\"\\nCancelled.\"));\n\t\t\trl.close();\n\t\t\treturn;\n\t\t}\n\n\t\tif (choice === \"3\") {\n\t\t\tconst lmstudioTemplate = LOCAL_PROVIDER_TEMPLATES.lmstudio;\n\t\t\tconst ollamaTemplate = LOCAL_PROVIDER_TEMPLATES.ollama;\n\t\t\tconst targets = [\n\t\t\t\t...(lmstudioTemplate\n\t\t\t\t\t? [{ name: \"LM Studio\", url: lmstudioTemplate.baseUrl }]\n\t\t\t\t\t: []),\n\t\t\t\t...(ollamaTemplate\n\t\t\t\t\t? [{ name: \"Ollama\", url: ollamaTemplate.baseUrl }]\n\t\t\t\t\t: []),\n\t\t\t];\n\t\t\tfor (const target of targets) {\n\t\t\t\tconsole.log(await checkLocalEndpoint(target.name, target.url));\n\t\t\t}\n\t\t\trl.close();\n\t\t\treturn;\n\t\t}\n\n\t\tconst templateKey = choice === \"2\" ? \"ollama\" : \"lmstudio\";\n\t\tconst template = LOCAL_PROVIDER_TEMPLATES[templateKey];\n\t\tif (!template) {\n\t\t\tconsole.log(chalk.red(`\\nUnknown template: ${templateKey}`));\n\t\t\trl.close();\n\t\t\treturn;\n\t\t}\n\n\t\tconst scope = (\n\t\t\tawait rl.question(\n\t\t\t\tchalk.cyan(\n\t\t\t\t\t\"\\nSave provider to:\\n 1) Project (.maestro/local.json)\\n 2) Home (~/.maestro/local.json)\\n\\nChoice (1-2): \",\n\t\t\t\t),\n\t\t\t)\n\t\t).trim();\n\t\tconst targetDir =\n\t\t\tscope === \"2\" ? PATHS.MAESTRO_HOME : join(process.cwd(), \".maestro\");\n\t\tmkdirSync(targetDir, { recursive: true });\n\t\tconst localPath = join(targetDir, \"local.json\");\n\t\tconst config = loadLocalConfig(localPath);\n\n\t\tconst providerId =\n\t\t\t(\n\t\t\t\tawait rl.question(chalk.cyan(`\\nProvider id (${template.id}): `))\n\t\t\t).trim() || template.id;\n\t\tconst providerName =\n\t\t\t(\n\t\t\t\tawait rl.question(chalk.cyan(`Provider name (${template.name}): `))\n\t\t\t).trim() || template.name;\n\t\tconst baseUrl =\n\t\t\t(\n\t\t\t\tawait rl.question(chalk.cyan(`Base URL (${template.baseUrl}): `))\n\t\t\t).trim() || template.baseUrl;\n\t\tconst modelId =\n\t\t\t(\n\t\t\t\tawait rl.question(chalk.cyan(`Model id (${template.model.id}): `))\n\t\t\t).trim() || template.model.id;\n\t\tconst modelName =\n\t\t\t(\n\t\t\t\tawait rl.question(chalk.cyan(`Model name (${template.model.name}): `))\n\t\t\t).trim() || template.model.name;\n\t\tconst contextWindowAnswer = (\n\t\t\tawait rl.question(\n\t\t\t\tchalk.cyan(`Context window (${template.model.contextWindow}): `),\n\t\t\t)\n\t\t).trim();\n\t\tconst maxTokensAnswer = (\n\t\t\tawait rl.question(\n\t\t\t\tchalk.cyan(`Max output tokens (${template.model.maxTokens}): `),\n\t\t\t)\n\t\t).trim();\n\t\tconst contextWindow =\n\t\t\tNumber.parseInt(contextWindowAnswer, 10) || template.model.contextWindow;\n\t\tconst maxTokens =\n\t\t\tNumber.parseInt(maxTokensAnswer, 10) || template.model.maxTokens;\n\n\t\tupsertLocalProvider(config, template, {\n\t\t\tid: providerId,\n\t\t\tname: providerName,\n\t\t\tbaseUrl,\n\t\t\tmodelId,\n\t\t\tmodelName,\n\t\t\tcontextWindow,\n\t\t\tmaxTokens,\n\t\t});\n\t\tif (!config.$schema) {\n\t\t\tconfig.$schema = \"https://composer-cli.dev/config.schema.json\";\n\t\t}\n\t\twriteFileSync(localPath, JSON.stringify(config, null, 2));\n\t\tconsole.log(`\\n${badge(\"Updated local config\", localPath, \"success\")}`);\n\t\tconsole.log(\n\t\t\tmuted(\n\t\t\t\t\"Reload your models (/model) after starting the local runtime to use the new provider.\",\n\t\t\t),\n\t\t);\n\t\tconsole.log(\n\t\t\tmuted(\"Tip: run `maestro config local` again to check connectivity.\"),\n\t\t);\n\n\t\trl.close();\n\t} catch (error) {\n\t\trl.close();\n\t\tthrow error;\n\t}\n}\n\n/**\n * Format bytes to human-readable string\n */\nfunction formatBytes(bytes: number): string {\n\tconst units = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\"];\n\tlet index = 0;\n\tlet value = bytes;\n\twhile (value >= 1024 && index < units.length - 1) {\n\t\tvalue /= 1024;\n\t\tindex += 1;\n\t}\n\treturn `${value.toFixed(1)} ${units[index]}`;\n}\n\nfunction formatModelLabel(model: {\n\tid: string;\n\treasoning?: boolean;\n\tinput?: string[];\n}): string {\n\tconst caps: string[] = [];\n\tif (model.reasoning) {\n\t\tcaps.push(\"thinking\");\n\t}\n\tif (model.input?.includes(\"image\")) {\n\t\tcaps.push(\"vision\");\n\t}\n\tconst suffix = caps.length ? ` ${chalk.dim(`[${caps.join(\", \")}]`)}` : \"\";\n\treturn `${model.id}${suffix}`;\n}\n"]}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport chalk from \"chalk\";\nimport { PATHS } from \"../../config/constants.js\";\nimport {\n\ttype ConfigInspection,\n\ttype ConfigValidationResult,\n\tgetConfigHierarchy,\n\tinspectConfig,\n\tvalidateConfig,\n} from \"../../models/registry.js\";\nimport {\n\tbadge,\n\tmuted,\n\tsectionHeading,\n\tseparator as themedSeparator,\n} from \"../../style/theme.js\";\n// Use the UMD build to avoid ESM subpath resolution issues in some environments\nimport { parseJsonc } from \"../../utils/jsonc-umd.js\";\nimport { getHomeDir } from \"../../utils/path-expansion.js\";\n\nimport type { Api } from \"../../agent/types.js\";\nimport { getEnvVarsForProvider } from \"../../providers/api-keys.js\";\nimport {\n\tgetEvalOpsManagedProviderDefinitions,\n\tisEvalOpsManagedProvider,\n} from \"../../providers/evalops-managed.js\";\n\ntype ProviderPreset = {\n\tid: string;\n\tname: string;\n\tapi: Api;\n\tdefaultModel: string;\n\tbaseUrl?: string;\n\trequiresApiKey: boolean;\n\tapiKeyEnv?: string;\n\tnote?: string;\n\tcontextWindow?: number;\n\tmaxTokens?: number;\n};\n\nfunction getManagedGatewayBaseUrl(): string {\n\treturn (\n\t\tprocess.env.MAESTRO_LLM_GATEWAY_URL?.trim() || \"http://127.0.0.1:8081/v1\"\n\t);\n}\n\nfunction getManagedGatewayProviderPresets(): ProviderPreset[] {\n\treturn getEvalOpsManagedProviderDefinitions().map((definition) => ({\n\t\tid: definition.id,\n\t\tname: definition.name,\n\t\tapi: definition.api,\n\t\tdefaultModel: definition.defaultModel,\n\t\tbaseUrl: getManagedGatewayBaseUrl(),\n\t\trequiresApiKey: false,\n\t\tnote: definition.note,\n\t}));\n}\n\nexport function getProviderPresets(): ProviderPreset[] {\n\treturn [\n\t\t{\n\t\t\tid: \"anthropic\",\n\t\t\tname: \"Anthropic (Claude)\",\n\t\t\tapi: \"anthropic-messages\",\n\t\t\tdefaultModel: \"claude-opus-4-6\",\n\t\t\tbaseUrl: \"https://api.anthropic.com\",\n\t\t\trequiresApiKey: true,\n\t\t\tapiKeyEnv: \"ANTHROPIC_API_KEY\",\n\t\t\tcontextWindow: 1000000,\n\t\t\tmaxTokens: 128000,\n\t\t},\n\t\t{\n\t\t\tid: \"openai\",\n\t\t\tname: \"OpenAI (Responses)\",\n\t\t\tapi: \"openai-responses\",\n\t\t\tdefaultModel: \"gpt-4o-mini\",\n\t\t\tbaseUrl: \"https://api.openai.com/v1\",\n\t\t\trequiresApiKey: true,\n\t\t\tapiKeyEnv: \"OPENAI_API_KEY\",\n\t\t},\n\t\t{\n\t\t\tid: \"groq\",\n\t\t\tname: \"Groq\",\n\t\t\tapi: \"openai-completions\",\n\t\t\tdefaultModel: \"llama-3.3-70b-versatile\",\n\t\t\tbaseUrl: \"https://api.groq.com/openai/v1\",\n\t\t\trequiresApiKey: true,\n\t\t\tapiKeyEnv: \"GROQ_API_KEY\",\n\t\t},\n\t\t{\n\t\t\tid: \"openrouter\",\n\t\t\tname: \"OpenRouter\",\n\t\t\tapi: \"openai-completions\",\n\t\t\tdefaultModel: \"openai/o4-mini\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\trequiresApiKey: true,\n\t\t\tapiKeyEnv: \"OPENROUTER_API_KEY\",\n\t\t\tnote: \"Supports many upstreams; accepts OpenAI-compatible keys\",\n\t\t},\n\t\t...getManagedGatewayProviderPresets(),\n\t\t{\n\t\t\tid: \"google-gemini\",\n\t\t\tname: \"Google Gemini API\",\n\t\t\tapi: \"google-generative-ai\",\n\t\t\tdefaultModel: \"gemini-2.0-flash\",\n\t\t\tbaseUrl: \"https://generativelanguage.googleapis.com/v1beta\",\n\t\t\trequiresApiKey: true,\n\t\t\tapiKeyEnv: \"GEMINI_API_KEY\",\n\t\t},\n\t\t{\n\t\t\tid: \"google-gemini-cli\",\n\t\t\tname: \"Google Gemini CLI (Cloud Code Assist)\",\n\t\t\tapi: \"google-gemini-cli\",\n\t\t\tdefaultModel: \"gemini-2.5-flash\",\n\t\t\tbaseUrl: \"https://cloudcode-pa.googleapis.com\",\n\t\t\trequiresApiKey: false,\n\t\t\tnote: \"Requires OAuth via /login (token includes projectId)\",\n\t\t},\n\t\t{\n\t\t\tid: \"google-antigravity\",\n\t\t\tname: \"Google Antigravity (Sandbox)\",\n\t\t\tapi: \"google-gemini-cli\",\n\t\t\tdefaultModel: \"gemini-3-pro-high\",\n\t\t\tbaseUrl: \"https://daily-cloudcode-pa.sandbox.googleapis.com\",\n\t\t\trequiresApiKey: false,\n\t\t\tnote: \"Requires OAuth via /login (token includes projectId)\",\n\t\t},\n\t\t{\n\t\t\tid: \"vertex-ai\",\n\t\t\tname: \"Google Vertex AI (Claude/Gemini)\",\n\t\t\tapi: \"anthropic-messages\",\n\t\t\tdefaultModel: \"claude-3-7-sonnet@20250219\",\n\t\t\tbaseUrl: \"https://us-central1-aiplatform.googleapis.com/v1beta1\",\n\t\t\trequiresApiKey: false,\n\t\t\tnote: \"Uses ADC; set GOOGLE_APPLICATION_CREDENTIALS or gcloud login\",\n\t\t},\n\t\t{\n\t\t\tid: \"bedrock\",\n\t\t\tname: \"AWS Bedrock\",\n\t\t\tapi: \"openai-completions\",\n\t\t\tdefaultModel: \"anthropic.claude-3-7-sonnet-20250219-v1:0\",\n\t\t\trequiresApiKey: false,\n\t\t\tnote: \"Uses AWS credentials + region envs\",\n\t\t},\n\t\t{\n\t\t\tid: \"mistral\",\n\t\t\tname: \"Mistral\",\n\t\t\tapi: \"openai-completions\",\n\t\t\tdefaultModel: \"mistral-large-latest\",\n\t\t\tbaseUrl: \"https://api.mistral.ai/v1\",\n\t\t\trequiresApiKey: true,\n\t\t\tapiKeyEnv: \"MISTRAL_API_KEY\",\n\t\t},\n\t\t{\n\t\t\tid: \"lmstudio\",\n\t\t\tname: \"LM Studio (local)\",\n\t\t\tapi: \"openai-responses\",\n\t\t\tdefaultModel: \"lmstudio/gemma-3n\",\n\t\t\tbaseUrl: \"http://127.0.0.1:1234/v1\",\n\t\t\trequiresApiKey: false,\n\t\t},\n\t\t{\n\t\t\tid: \"ollama\",\n\t\t\tname: \"Ollama (local)\",\n\t\t\tapi: \"openai-responses\",\n\t\t\tdefaultModel: \"ollama/llama3.2\",\n\t\t\tbaseUrl: \"http://localhost:11434/v1\",\n\t\t\trequiresApiKey: false,\n\t\t},\n\t];\n}\n\nexport interface ConfigShowRenderOptions {\n\thierarchy: string[];\n\thomeDir?: string;\n\tdisableColors?: boolean;\n}\n\n// Adapted from ansi-regex (MIT) to cover CSI and OSC escape sequences.\nconst ANSI_STRING_TERMINATORS = \"(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)\";\nconst ANSI_OSC_SEQUENCE = `(?:\\\\u001B\\\\][\\\\s\\\\S]*?${ANSI_STRING_TERMINATORS})`;\nconst ANSI_CSI_SEQUENCE =\n\t\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:\\\\d{1,4}(?:[;:]\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]\";\nconst ANSI_ESCAPE_SEQUENCE = new RegExp(\n\t`${ANSI_OSC_SEQUENCE}|${ANSI_CSI_SEQUENCE}`,\n\t\"g\",\n);\n\nfunction stripAnsi(value: string): string {\n\treturn value.replace(ANSI_ESCAPE_SEQUENCE, \"\");\n}\n\nconst normalizeForCompare = (value: string): string =>\n\tprocess.platform === \"win32\" ? value.toLowerCase() : value;\n\nfunction replaceHomePrefix(path: string, homeDir: string): string {\n\tconst normalizedPath = path.replace(/\\\\/g, \"/\");\n\tconst normalizedHome = homeDir.replace(/\\\\/g, \"/\");\n\tconst pathCheck = normalizeForCompare(normalizedPath);\n\tconst homeCheck = normalizeForCompare(normalizedHome);\n\tif (pathCheck === homeCheck) {\n\t\treturn \"~\";\n\t}\n\tif (pathCheck.startsWith(`${homeCheck}/`)) {\n\t\treturn `~${normalizedPath.slice(normalizedHome.length)}`;\n\t}\n\treturn path;\n}\n\nexport function buildConfigShowSections(\n\tinspection: ConfigInspection,\n\toptions: ConfigShowRenderOptions,\n): string[] {\n\tconst homeDir = options.homeDir ?? getHomeDir();\n\tconst rel = (path: string) => replaceHomePrefix(path, homeDir);\n\tconst output: string[] = [];\n\n\toutput.push(sectionHeading(\"Configuration Inspection\"));\n\toutput.push(\"\");\n\toutput.push(badge(\"Config Sources\", undefined, \"info\"));\n\tfor (const source of inspection.sources) {\n\t\tconst status = source.exists\n\t\t\t? badge(\"present\", undefined, \"success\")\n\t\t\t: badge(\"missing\", undefined, \"warn\");\n\t\tconst mark = options.hierarchy.includes(source.path) ? \"•\" : \" \";\n\t\toutput.push(` ${mark} ${status} ${muted(rel(source.path))}`);\n\t}\n\toutput.push(\"\");\n\n\tif (inspection.providers.length > 0) {\n\t\toutput.push(\n\t\t\tbadge(`Providers (${inspection.providers.length})`, undefined, \"info\"),\n\t\t);\n\t\tfor (const provider of inspection.providers) {\n\t\t\tconst isOverrideOnly = provider.modelCount === 0;\n\t\t\tconst heading = `${chalk.cyan(provider.id)} ${muted(\n\t\t\t\t`(${provider.modelCount} models)`,\n\t\t\t)}`;\n\t\t\tconst enabledBadge = provider.enabled\n\t\t\t\t? badge(\"enabled\", undefined, \"success\")\n\t\t\t\t: badge(\"disabled\", undefined, \"warn\");\n\t\t\tconst metaBadges: string[] = [];\n\t\t\tif (isOverrideOnly) {\n\t\t\t\tmetaBadges.push(badge(\"override-only\", undefined, \"info\"));\n\t\t\t\tif (provider.apiKeySource) {\n\t\t\t\t\tmetaBadges.push(badge(\"API key\", provider.apiKeySource, \"success\"));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst keyBadge = provider.apiKeySource\n\t\t\t\t\t? badge(\"API key\", provider.apiKeySource, \"success\")\n\t\t\t\t\t: badge(\"API key missing\", undefined, \"warn\");\n\t\t\t\tmetaBadges.push(keyBadge);\n\t\t\t}\n\t\t\tmetaBadges.push(enabledBadge);\n\t\t\tconst metaLine = metaBadges.join(` ${themedSeparator()} `);\n\t\t\toutput.push(` ${heading} ${themedSeparator()} ${metaLine}`);\n\t\t\toutput.push(` ${muted(provider.name)}`);\n\t\t\toutput.push(` ${muted(`Base URL: ${provider.baseUrl}`)}`);\n\t\t\tif (provider.options && Object.keys(provider.options).length > 0) {\n\t\t\t\toutput.push(muted(` Options: ${JSON.stringify(provider.options)}`));\n\t\t\t}\n\t\t\tif (provider.models.length <= 3) {\n\t\t\t\tfor (const model of provider.models) {\n\t\t\t\t\toutput.push(muted(` • ${formatModelLabel(model)}`));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst firstModel = provider.models[0];\n\t\t\t\tconst secondModel = provider.models[1];\n\t\t\t\tif (firstModel) {\n\t\t\t\t\toutput.push(muted(` • ${formatModelLabel(firstModel)}`));\n\t\t\t\t}\n\t\t\t\tif (secondModel) {\n\t\t\t\t\toutput.push(muted(` • ${formatModelLabel(secondModel)}`));\n\t\t\t\t}\n\t\t\t\toutput.push(muted(` ... and ${provider.models.length - 2} more`));\n\t\t\t}\n\t\t\toutput.push(\"\");\n\t\t}\n\t} else {\n\t\toutput.push(`${badge(\"No providers configured\", undefined, \"warn\")}`);\n\t\toutput.push(\"\");\n\t}\n\n\tif (inspection.fileReferences.length > 0) {\n\t\toutput.push(\n\t\t\tbadge(\n\t\t\t\t`File References (${inspection.fileReferences.length})`,\n\t\t\t\tundefined,\n\t\t\t\t\"info\",\n\t\t\t),\n\t\t);\n\t\tfor (const ref of inspection.fileReferences) {\n\t\t\tconst status = ref.exists\n\t\t\t\t? badge(\"present\", undefined, \"success\")\n\t\t\t\t: badge(\"missing\", undefined, \"danger\");\n\t\t\tconst size = ref.size ? ` (${formatBytes(ref.size)})` : \"\";\n\t\t\toutput.push(` ${status} ${muted(rel(ref.path))}${muted(size)}`);\n\t\t}\n\t\toutput.push(\"\");\n\t}\n\n\tif (inspection.envVars.length > 0) {\n\t\toutput.push(\n\t\t\tbadge(\n\t\t\t\t`Environment Variables (${inspection.envVars.length})`,\n\t\t\t\tundefined,\n\t\t\t\t\"info\",\n\t\t\t),\n\t\t);\n\t\tfor (const envVar of inspection.envVars) {\n\t\t\tconst status = envVar.set\n\t\t\t\t? badge(\"set\", undefined, \"success\")\n\t\t\t\t: badge(\"missing\", undefined, \"warn\");\n\t\t\tconst value = envVar.maskedValue ? envVar.maskedValue : \"(not set)\";\n\t\t\toutput.push(` ${status} ${chalk.cyan(envVar.name)}: ${muted(value)}`);\n\t\t}\n\t\toutput.push(\"\");\n\t}\n\n\tif (options.disableColors) {\n\t\treturn output.map((line) => stripAnsi(line));\n\t}\n\treturn output;\n}\n\n/**\n * Handle `maestro config validate` command\n */\nexport async function handleConfigValidate(): Promise<void> {\n\tconsole.log(sectionHeading(\"Validating Configuration\"));\n\n\tconst result: ConfigValidationResult = validateConfig();\n\tconst homeDir = getHomeDir();\n\n\t// Show config files\n\tif (result.summary.configFiles.length > 0) {\n\t\tconsole.log(muted(\"Config Files:\"));\n\t\tfor (const file of result.summary.configFiles) {\n\t\t\tconst relPath = replaceHomePrefix(file, homeDir);\n\t\t\tconsole.log(muted(` • ${relPath}`));\n\t\t}\n\t\tconsole.log();\n\t}\n\n\t// Show errors\n\tif (result.errors.length > 0) {\n\t\tconsole.log(badge(\"[ERROR] Errors\", undefined, \"danger\"));\n\t\tfor (const error of result.errors) {\n\t\t\tconsole.log(chalk.red(` • ${error}`));\n\t\t}\n\t\tconsole.log();\n\t}\n\n\t// Show warnings\n\tif (result.warnings.length > 0) {\n\t\tconsole.log(badge(\"[WARN] Warnings\", undefined, \"warn\"));\n\t\tfor (const warning of result.warnings) {\n\t\t\tconsole.log(chalk.yellow(` • ${warning}`));\n\t\t}\n\t\tconsole.log();\n\t}\n\n\t// Show summary\n\tconsole.log(muted(\"Summary:\"));\n\tconsole.log(\n\t\tmuted(` • ${badge(\"Providers\", String(result.summary.providers))}`),\n\t);\n\tconsole.log(muted(` • ${badge(\"Models\", String(result.summary.models))}`));\n\tconsole.log(\n\t\tmuted(\n\t\t\t` • ${badge(\n\t\t\t\t\"File References\",\n\t\t\t\tString(result.summary.fileReferences.length),\n\t\t\t)}`,\n\t\t),\n\t);\n\tconsole.log(\n\t\tmuted(\n\t\t\t` • ${badge(\n\t\t\t\t\"Environment Variables\",\n\t\t\t\tString(result.summary.envVars.length),\n\t\t\t)}`,\n\t\t),\n\t);\n\tconsole.log();\n\n\t// Final verdict\n\tif (result.valid) {\n\t\tconsole.log(`${badge(\"Configuration is valid\", undefined, \"success\")}\\n`);\n\t\tprocess.exit(0);\n\t} else {\n\t\tconsole.log(`${badge(\"Configuration has errors\", undefined, \"danger\")}\\n`);\n\t\tprocess.exit(1);\n\t}\n}\n\n/**\n * Legacy renderer for `maestro config show`\n */\nfunction renderConfigShowLegacy(\n\tinspection: ConfigInspection,\n\thierarchy: string[],\n\thomeDir: string,\n): void {\n\tconsole.log(sectionHeading(\"Configuration Inspection\"));\n\n\t// Show config sources\n\tconsole.log(badge(\"Config Sources\", undefined, \"info\"));\n\tfor (const source of inspection.sources) {\n\t\tconst relPath = replaceHomePrefix(source.path, homeDir);\n\t\tconst status = source.exists\n\t\t\t? badge(\"present\", undefined, \"success\")\n\t\t\t: badge(\"missing\", undefined, \"warn\");\n\t\tconst mark = hierarchy.includes(source.path) ? \"•\" : \" \";\n\t\tconsole.log(` ${mark} ${status} ${muted(relPath)}`);\n\t}\n\tconsole.log();\n\n\t// Show providers\n\tif (inspection.providers.length > 0) {\n\t\tconsole.log(\n\t\t\tbadge(`Providers (${inspection.providers.length})`, undefined, \"info\"),\n\t\t);\n\t\tfor (const provider of inspection.providers) {\n\t\t\tconst isOverrideOnly = provider.modelCount === 0;\n\t\t\tconst heading = `${chalk.cyan(provider.id)} ${muted(\n\t\t\t\t`(${provider.modelCount} models)`,\n\t\t\t)}`;\n\t\t\tconst enabledBadge = provider.enabled\n\t\t\t\t? badge(\"enabled\", undefined, \"success\")\n\t\t\t\t: badge(\"disabled\", undefined, \"warn\");\n\t\t\tconst metaBadges: string[] = [];\n\t\t\tif (isOverrideOnly) {\n\t\t\t\tmetaBadges.push(badge(\"override-only\", undefined, \"info\"));\n\t\t\t\tif (provider.apiKeySource) {\n\t\t\t\t\tmetaBadges.push(badge(\"API key\", provider.apiKeySource, \"success\"));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst keyBadge = provider.apiKeySource\n\t\t\t\t\t? badge(\"API key\", provider.apiKeySource, \"success\")\n\t\t\t\t\t: badge(\"API key missing\", undefined, \"warn\");\n\t\t\t\tmetaBadges.push(keyBadge);\n\t\t\t}\n\t\t\tmetaBadges.push(enabledBadge);\n\t\t\tconst metaLine = metaBadges.join(` ${themedSeparator()} `);\n\n\t\t\tconsole.log(` ${heading} ${themedSeparator()} ${metaLine}`);\n\t\t\tconsole.log(` ${muted(provider.name)}`);\n\t\t\tconsole.log(` ${muted(`Base URL: ${provider.baseUrl}`)}`);\n\t\t\tif (provider.options && Object.keys(provider.options).length > 0) {\n\t\t\t\tconsole.log(muted(` Options: ${JSON.stringify(provider.options)}`));\n\t\t\t}\n\n\t\t\t// Show models\n\t\t\tif (provider.models.length <= 3) {\n\t\t\t\tfor (const model of provider.models) {\n\t\t\t\t\tconsole.log(muted(` • ${formatModelLabel(model)}`));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst firstModel = provider.models[0];\n\t\t\t\tconst secondModel = provider.models[1];\n\t\t\t\tif (firstModel) {\n\t\t\t\t\tconsole.log(muted(` • ${formatModelLabel(firstModel)}`));\n\t\t\t\t}\n\t\t\t\tif (secondModel) {\n\t\t\t\t\tconsole.log(muted(` • ${formatModelLabel(secondModel)}`));\n\t\t\t\t}\n\t\t\t\tconsole.log(muted(` ... and ${provider.models.length - 2} more`));\n\t\t\t}\n\t\t\tconsole.log();\n\t\t}\n\t} else {\n\t\tconsole.log(`${badge(\"No providers configured\", undefined, \"warn\")}\\n`);\n\t}\n\n\t// Show file references\n\tif (inspection.fileReferences.length > 0) {\n\t\tconsole.log(\n\t\t\tbadge(\n\t\t\t\t`File References (${inspection.fileReferences.length})`,\n\t\t\t\tundefined,\n\t\t\t\t\"info\",\n\t\t\t),\n\t\t);\n\t\tfor (const ref of inspection.fileReferences) {\n\t\t\tconst relPath = replaceHomePrefix(ref.path, homeDir);\n\t\t\tconst status = ref.exists\n\t\t\t\t? badge(\"present\", undefined, \"success\")\n\t\t\t\t: badge(\"missing\", undefined, \"danger\");\n\t\t\tconst size = ref.size ? ` (${formatBytes(ref.size)})` : \"\";\n\t\t\tconsole.log(` ${status} ${muted(relPath)}${muted(size)}`);\n\t\t}\n\t\tconsole.log();\n\t}\n\n\t// Show environment variables\n\tif (inspection.envVars.length > 0) {\n\t\tconsole.log(\n\t\t\tbadge(\n\t\t\t\t`Environment Variables (${inspection.envVars.length})`,\n\t\t\t\tundefined,\n\t\t\t\t\"info\",\n\t\t\t),\n\t\t);\n\t\tfor (const envVar of inspection.envVars) {\n\t\t\tconst status = envVar.set\n\t\t\t\t? badge(\"set\", undefined, \"success\")\n\t\t\t\t: badge(\"missing\", undefined, \"warn\");\n\t\t\tconst value = envVar.maskedValue ? envVar.maskedValue : \"(not set)\";\n\t\t\tconsole.log(` ${status} ${chalk.cyan(envVar.name)}: ${muted(value)}`);\n\t\t}\n\t\tconsole.log();\n\t}\n}\n\n/**\n * Handle `maestro config show` command\n */\nexport async function handleConfigShow(): Promise<void> {\n\tconst inspection: ConfigInspection = inspectConfig();\n\tconst hierarchy = getConfigHierarchy();\n\tconst homeDir = getHomeDir();\n\tconst layoutPref = (\n\t\tprocess.env.MAESTRO_CONFIG_SHOW_LAYOUT ?? \"v2\"\n\t).toLowerCase();\n\n\tif (layoutPref === \"legacy\") {\n\t\trenderConfigShowLegacy(inspection, hierarchy, homeDir);\n\t} else {\n\t\tconst lines = buildConfigShowSections(inspection, {\n\t\t\thierarchy,\n\t\t\thomeDir,\n\t\t\tdisableColors: !process.stdout.isTTY,\n\t\t});\n\t\tfor (const line of lines) {\n\t\t\tconsole.log(line);\n\t\t}\n\t}\n\n\tprocess.exit(0);\n}\n\n/**\n * Handle `maestro config init` command\n */\nexport async function handleConfigInit(): Promise<void> {\n\tconsole.log(sectionHeading(\"Initialize Maestro Configuration\"));\n\n\tconst readline = await import(\"node:readline/promises\");\n\tconst rl = readline.createInterface({\n\t\tinput: process.stdin,\n\t\toutput: process.stdout,\n\t});\n\n\ttry {\n\t\tconst providerPresets = getProviderPresets();\n\n\t\t// Determine config location\n\t\tconst configDir = join(process.cwd(), \".maestro\");\n\t\tconst configPath = join(configDir, \"config.json\");\n\t\tconst promptsDir = join(configDir, \"prompts\");\n\n\t\t// Check if config already exists\n\t\tif (existsSync(configPath)) {\n\t\t\tconst overwrite = await rl.question(\n\t\t\t\tchalk.yellow(\n\t\t\t\t\t`Config already exists at ${configPath}. Overwrite? (y/N): `,\n\t\t\t\t),\n\t\t\t);\n\t\t\tif (overwrite.toLowerCase() !== \"y\") {\n\t\t\t\tconsole.log(muted(\"\\nCancelled.\"));\n\t\t\t\trl.close();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Optional flag: --preset <id> to skip menu\n\t\tconst args = process.argv.slice(2);\n\t\tconst presetFlagIndex = args.findIndex(\n\t\t\t(arg) => arg === \"--preset\" || arg === \"-p\",\n\t\t);\n\t\tconst presetId =\n\t\t\tpresetFlagIndex >= 0 ? (args[presetFlagIndex + 1] ?? \"\") : \"\";\n\n\t\t// Step 1: Choose provider\n\t\tconsole.log(`\\n${badge(\"1. Choose your provider\", undefined, \"info\")}`);\n\t\tproviderPresets.forEach((preset, idx) => {\n\t\t\tconst note = preset.note ? chalk.dim(` — ${preset.note}`) : \"\";\n\t\t\tconsole.log(` ${idx + 1}) ${preset.name}${note}`);\n\t\t});\n\n\t\tlet preset: ProviderPreset | undefined;\n\t\tif (presetId) {\n\t\t\tconst found = providerPresets.find(\n\t\t\t\t(p) => p.id.toLowerCase() === presetId.toLowerCase(),\n\t\t\t);\n\t\t\tif (!found) {\n\t\t\t\tconsole.log(\n\t\t\t\t\tchalk.yellow(\n\t\t\t\t\t\t`\\nUnknown preset \"${presetId}\", falling back to menu selection.`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpreset = found;\n\t\t\t\tconsole.log(chalk.green(`\\nUsing preset: ${preset.name}`));\n\t\t\t}\n\t\t}\n\n\t\tif (!preset) {\n\t\t\tconst providerChoice = await rl.question(\n\t\t\t\tchalk.cyan(`\\nProvider (1-${providerPresets.length}): `),\n\t\t\t);\n\n\t\t\tconst presetIndex =\n\t\t\t\tNumber.parseInt(providerChoice.trim(), 10) - 1 >= 0 &&\n\t\t\t\tNumber.parseInt(providerChoice.trim(), 10) - 1 < providerPresets.length\n\t\t\t\t\t? Number.parseInt(providerChoice.trim(), 10) - 1\n\t\t\t\t\t: 0;\n\t\t\tpreset = providerPresets[presetIndex] ?? providerPresets[0];\n\t\t}\n\n\t\t// At this point preset is guaranteed to be defined because providerPresets is non-empty\n\t\tif (!preset) {\n\t\t\tthrow new Error(\"No provider presets available\");\n\t\t}\n\n\t\tconst {\n\t\t\tid: providerId,\n\t\t\tname: providerName,\n\t\t\tbaseUrl,\n\t\t\tapi: apiType,\n\t\t} = preset;\n\t\tconst { defaultModel } = preset;\n\t\tconst requiresApiKey = preset.requiresApiKey;\n\n\t\tlet useEnv = true;\n\t\tlet apiKeyField: { apiKeyEnv?: string; apiKey?: string } = {};\n\t\tif (requiresApiKey) {\n\t\t\tconsole.log(\n\t\t\t\t`\\n${badge(\n\t\t\t\t\t\"2. How would you like to provide your API key?\",\n\t\t\t\t\tundefined,\n\t\t\t\t\t\"info\",\n\t\t\t\t)}`,\n\t\t\t);\n\t\t\tconsole.log(\" 1) Environment variable (recommended)\");\n\t\t\tconsole.log(\" 2) Direct in config (not recommended)\");\n\n\t\t\tconst keyChoice = await rl.question(chalk.cyan(\"\\nChoice (1-2): \"));\n\t\t\tuseEnv = keyChoice.trim() !== \"2\";\n\n\t\t\tif (useEnv) {\n\t\t\t\tconst fallbackEnv =\n\t\t\t\t\tgetEnvVarsForProvider(providerId)[0] ??\n\t\t\t\t\t`${providerId.toUpperCase().replace(/[^A-Z0-9]/g, \"_\")}_API_KEY`;\n\t\t\t\tconst envVarName = preset.apiKeyEnv ?? fallbackEnv;\n\t\t\t\tapiKeyField = { apiKeyEnv: envVarName };\n\t\t\t\tconsole.log(chalk.dim(`\\nUsing environment variable: ${envVarName}`));\n\t\t\t} else {\n\t\t\t\tconst apiKey = await rl.question(chalk.cyan(\"\\nEnter API key: \"));\n\t\t\t\tapiKeyField = { apiKey: apiKey.trim() };\n\t\t\t}\n\t\t} else {\n\t\t\tuseEnv = false;\n\t\t\tconst noKeyMessage = isEvalOpsManagedProvider(providerId)\n\t\t\t\t? \"\\nManaged gateway preset does not use a local API key. Run maestro evalops login after setup.\"\n\t\t\t\t: \"\\nLocal providers do not require API keys. Skipping step.\";\n\t\t\tconsole.log(chalk.dim(noKeyMessage));\n\t\t}\n\n\t\t// Step 3: Use file references for prompts\n\t\tconsole.log(\n\t\t\t`\\n${badge(\n\t\t\t\t\"3. Would you like to use file references for prompts?\",\n\t\t\t\tundefined,\n\t\t\t\t\"info\",\n\t\t\t)}`,\n\t\t);\n\t\tconsole.log(\" This creates a prompts/ folder for better organization.\");\n\n\t\tconst useFiles = await rl.question(\n\t\t\tchalk.cyan(\"\\nUse file references? (Y/n): \"),\n\t\t);\n\t\tconst createPrompts = useFiles.toLowerCase() !== \"n\";\n\n\t\t// Create directories\n\t\tmkdirSync(configDir, { recursive: true });\n\t\tif (createPrompts) {\n\t\t\tmkdirSync(promptsDir, { recursive: true });\n\t\t}\n\n\t\t// Create config\n\t\tconst config: LocalConfigFile = {\n\t\t\t$schema: \"https://composer-cli.dev/config.schema.json\",\n\t\t\tproviders: [\n\t\t\t\t{\n\t\t\t\t\tid: providerId,\n\t\t\t\t\tname: providerName,\n\t\t\t\t\t...(baseUrl && { baseUrl }),\n\t\t\t\t\tapi: apiType,\n\t\t\t\t\t...apiKeyField,\n\t\t\t\t\tmodels: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: defaultModel,\n\t\t\t\t\t\t\tname: createPrompts\n\t\t\t\t\t\t\t\t? \"{file:./prompts/system.md}\"\n\t\t\t\t\t\t\t\t: \"Default assistant\",\n\t\t\t\t\t\t\tcontextWindow: preset?.contextWindow ?? 200000,\n\t\t\t\t\t\t\tmaxTokens: preset?.maxTokens ?? 8192,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\t// Write config\n\t\twriteFileSync(configPath, JSON.stringify(config, null, 2));\n\t\tconsole.log(`\\n${badge(\"Created config\", configPath, \"success\")}`);\n\n\t\t// Create example prompt file\n\t\tif (createPrompts) {\n\t\t\tconst systemPromptPath = join(promptsDir, \"system.md\");\n\t\t\tconst examplePrompt = `# System Prompt\n\nYou are a helpful AI coding assistant.\n\n## Guidelines\n\n- Write clean, maintainable code\n- Follow best practices\n- Provide clear explanations\n- Test your suggestions\n\n## Style\n\n- Be concise but thorough\n- Use examples when helpful\n- Ask clarifying questions when needed\n`;\n\t\t\twriteFileSync(systemPromptPath, examplePrompt);\n\t\t\tconsole.log(badge(\"Created prompt\", systemPromptPath, \"success\"));\n\t\t}\n\n\t\t// Create .env.example if using environment variables\n\t\tif (useEnv) {\n\t\t\tconst envExamplePath = join(process.cwd(), \".env.example\");\n\t\t\tconst envVarName = apiKeyField.apiKeyEnv ?? \"\";\n\t\t\tconst envContent = existsSync(envExamplePath)\n\t\t\t\t? `\\n# Added by maestro init\\n${envVarName}=your-api-key-here\\n`\n\t\t\t\t: `# Maestro Configuration\\n${envVarName}=your-api-key-here\\n`;\n\n\t\t\tif (existsSync(envExamplePath)) {\n\t\t\t\tconst fs = await import(\"node:fs/promises\");\n\t\t\t\tawait fs.appendFile(envExamplePath, envContent);\n\t\t\t} else {\n\t\t\t\twriteFileSync(envExamplePath, envContent);\n\t\t\t}\n\t\t\tconsole.log(badge(\"Updated .env.example\", undefined, \"success\"));\n\t\t}\n\n\t\t// Show next steps\n\t\tconsole.log(sectionHeading(\"Configuration initialized successfully!\"));\n\t\tconsole.log(muted(\"Next steps:\"));\n\n\t\tif (useEnv) {\n\t\t\tconst envVarName = apiKeyField.apiKeyEnv ?? \"\";\n\t\t\tconsole.log(muted(` 1. Set ${envVarName} in your environment`));\n\t\t}\n\t\tif (createPrompts) {\n\t\t\tconsole.log(muted(\" 2. Edit .maestro/prompts/system.md\"));\n\t\t}\n\t\tconsole.log(muted(\" 3. Run: maestro models list\"));\n\t\tconsole.log(muted(' 4. Start using: maestro \"your prompt\"\\n'));\n\n\t\trl.close();\n\t} catch (error) {\n\t\trl.close();\n\t\tthrow error;\n\t}\n}\n\ntype LocalProviderTemplate = {\n\tid: string;\n\tname: string;\n\tbaseUrl: string;\n\tapi: string;\n\tmodel: {\n\t\tid: string;\n\t\tname: string;\n\t\tcontextWindow: number;\n\t\tmaxTokens: number;\n\t};\n};\n\nconst LOCAL_PROVIDER_TEMPLATES: Record<string, LocalProviderTemplate> = {\n\tlmstudio: {\n\t\tid: \"lmstudio\",\n\t\tname: \"LM Studio (local)\",\n\t\tbaseUrl: \"http://127.0.0.1:1234/v1\",\n\t\tapi: \"openai-responses\",\n\t\tmodel: {\n\t\t\tid: \"lmstudio/gemma-3n\",\n\t\t\tname: \"Gemma 3n (local)\",\n\t\t\tcontextWindow: 200_000,\n\t\t\tmaxTokens: 8192,\n\t\t},\n\t},\n\tollama: {\n\t\tid: \"ollama\",\n\t\tname: \"Ollama (local)\",\n\t\tbaseUrl: \"http://localhost:11434/v1\",\n\t\tapi: \"openai-responses\",\n\t\tmodel: {\n\t\t\tid: \"ollama/llama3.1\",\n\t\t\tname: \"Llama 3.1 (local)\",\n\t\t\tcontextWindow: 128_000,\n\t\t\tmaxTokens: 8192,\n\t\t},\n\t},\n};\n\ninterface LocalConfigFile {\n\t$schema?: string;\n\tproviders?: Array<{\n\t\tid: string;\n\t\tname: string;\n\t\tapi: string;\n\t\tbaseUrl?: string;\n\t\tmodels: Array<{\n\t\t\tid: string;\n\t\t\tname: string;\n\t\t\tcontextWindow: number;\n\t\t\tmaxTokens: number;\n\t\t\tinput?: Array<\"text\" | \"image\">;\n\t\t}>;\n\t\toptions?: Record<string, unknown>;\n\t}>;\n}\n\nfunction loadLocalConfig(path: string): LocalConfigFile {\n\tif (!existsSync(path)) {\n\t\treturn {\n\t\t\t$schema: \"https://composer-cli.dev/config.schema.json\",\n\t\t\tproviders: [],\n\t\t};\n\t}\n\tconst raw = readFileSync(path, \"utf-8\");\n\ttry {\n\t\tconst parsed = parseJsonc(raw, [], {\n\t\t\tallowTrailingComma: true,\n\t\t\tdisallowComments: false,\n\t\t});\n\t\tif (!parsed || typeof parsed !== \"object\") {\n\t\t\treturn {\n\t\t\t\t$schema: \"https://composer-cli.dev/config.schema.json\",\n\t\t\t\tproviders: [],\n\t\t\t};\n\t\t}\n\t\treturn parsed as LocalConfigFile;\n\t} catch (error) {\n\t\tthrow new Error(\n\t\t\t`Failed to parse ${path}: ${error instanceof Error ? error.message : String(error)}`,\n\t\t);\n\t}\n}\n\nfunction upsertLocalProvider(\n\tconfig: LocalConfigFile,\n\tprovider: LocalProviderTemplate,\n\toverrides: {\n\t\tid: string;\n\t\tname: string;\n\t\tbaseUrl: string;\n\t\tmodelId: string;\n\t\tmodelName: string;\n\t\tcontextWindow: number;\n\t\tmaxTokens: number;\n\t},\n): void {\n\tif (!Array.isArray(config.providers)) {\n\t\tconfig.providers = [];\n\t}\n\ttype ProviderEntry = NonNullable<LocalConfigFile[\"providers\"]>[number];\n\tconst entry: ProviderEntry = {\n\t\tid: overrides.id,\n\t\tname: overrides.name,\n\t\tapi: provider.api,\n\t\tbaseUrl: overrides.baseUrl,\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: overrides.modelId,\n\t\t\t\tname: overrides.modelName,\n\t\t\t\tcontextWindow: overrides.contextWindow,\n\t\t\t\tmaxTokens: overrides.maxTokens,\n\t\t\t\tinput: [\"text\"] as Array<\"text\" | \"image\">,\n\t\t\t},\n\t\t],\n\t};\n\tconst existingIndex = config.providers.findIndex(\n\t\t(p) => p?.id === overrides.id,\n\t);\n\tif (existingIndex >= 0) {\n\t\tconfig.providers[existingIndex] = entry;\n\t} else {\n\t\tconfig.providers.push(entry);\n\t}\n}\n\nasync function checkLocalEndpoint(\n\tname: string,\n\tbaseUrl: string,\n): Promise<string> {\n\ttry {\n\t\tconst url = new URL(baseUrl);\n\t\turl.pathname = \"/models\";\n\t\tconst response = await fetch(url.toString(), { method: \"GET\" });\n\t\tif (response.ok) {\n\t\t\treturn `${badge(name, undefined, \"success\")} ${chalk.dim(\n\t\t\t\t`responded with ${response.status}`,\n\t\t\t)}`;\n\t\t}\n\t\treturn `${badge(name, undefined, \"warn\")} ${chalk.dim(\n\t\t\t`HTTP ${response.status}`,\n\t\t)}`;\n\t} catch (error) {\n\t\treturn `${badge(name, undefined, \"danger\")} ${chalk.dim(\n\t\t\terror instanceof Error ? error.message : String(error),\n\t\t)}`;\n\t}\n}\n\nexport async function handleConfigLocal(): Promise<void> {\n\tconsole.log(sectionHeading(\"Local provider helper\"));\n\tconst readline = await import(\"node:readline/promises\");\n\tconst rl = readline.createInterface({\n\t\tinput: process.stdin,\n\t\toutput: process.stdout,\n\t});\n\n\ttry {\n\t\tconsole.log(\" 1) Add LM Studio provider\");\n\t\tconsole.log(\" 2) Add Ollama provider\");\n\t\tconsole.log(\" 3) Check local endpoints\");\n\t\tconsole.log(\" 4) Cancel\");\n\t\tconst choice = (await rl.question(chalk.cyan(\"\\nChoice (1-4): \"))).trim();\n\n\t\tif (choice === \"4\") {\n\t\t\tconsole.log(muted(\"\\nCancelled.\"));\n\t\t\trl.close();\n\t\t\treturn;\n\t\t}\n\n\t\tif (choice === \"3\") {\n\t\t\tconst lmstudioTemplate = LOCAL_PROVIDER_TEMPLATES.lmstudio;\n\t\t\tconst ollamaTemplate = LOCAL_PROVIDER_TEMPLATES.ollama;\n\t\t\tconst targets = [\n\t\t\t\t...(lmstudioTemplate\n\t\t\t\t\t? [{ name: \"LM Studio\", url: lmstudioTemplate.baseUrl }]\n\t\t\t\t\t: []),\n\t\t\t\t...(ollamaTemplate\n\t\t\t\t\t? [{ name: \"Ollama\", url: ollamaTemplate.baseUrl }]\n\t\t\t\t\t: []),\n\t\t\t];\n\t\t\tfor (const target of targets) {\n\t\t\t\tconsole.log(await checkLocalEndpoint(target.name, target.url));\n\t\t\t}\n\t\t\trl.close();\n\t\t\treturn;\n\t\t}\n\n\t\tconst templateKey = choice === \"2\" ? \"ollama\" : \"lmstudio\";\n\t\tconst template = LOCAL_PROVIDER_TEMPLATES[templateKey];\n\t\tif (!template) {\n\t\t\tconsole.log(chalk.red(`\\nUnknown template: ${templateKey}`));\n\t\t\trl.close();\n\t\t\treturn;\n\t\t}\n\n\t\tconst scope = (\n\t\t\tawait rl.question(\n\t\t\t\tchalk.cyan(\n\t\t\t\t\t\"\\nSave provider to:\\n 1) Project (.maestro/local.json)\\n 2) Home (~/.maestro/local.json)\\n\\nChoice (1-2): \",\n\t\t\t\t),\n\t\t\t)\n\t\t).trim();\n\t\tconst targetDir =\n\t\t\tscope === \"2\" ? PATHS.MAESTRO_HOME : join(process.cwd(), \".maestro\");\n\t\tmkdirSync(targetDir, { recursive: true });\n\t\tconst localPath = join(targetDir, \"local.json\");\n\t\tconst config = loadLocalConfig(localPath);\n\n\t\tconst providerId =\n\t\t\t(\n\t\t\t\tawait rl.question(chalk.cyan(`\\nProvider id (${template.id}): `))\n\t\t\t).trim() || template.id;\n\t\tconst providerName =\n\t\t\t(\n\t\t\t\tawait rl.question(chalk.cyan(`Provider name (${template.name}): `))\n\t\t\t).trim() || template.name;\n\t\tconst baseUrl =\n\t\t\t(\n\t\t\t\tawait rl.question(chalk.cyan(`Base URL (${template.baseUrl}): `))\n\t\t\t).trim() || template.baseUrl;\n\t\tconst modelId =\n\t\t\t(\n\t\t\t\tawait rl.question(chalk.cyan(`Model id (${template.model.id}): `))\n\t\t\t).trim() || template.model.id;\n\t\tconst modelName =\n\t\t\t(\n\t\t\t\tawait rl.question(chalk.cyan(`Model name (${template.model.name}): `))\n\t\t\t).trim() || template.model.name;\n\t\tconst contextWindowAnswer = (\n\t\t\tawait rl.question(\n\t\t\t\tchalk.cyan(`Context window (${template.model.contextWindow}): `),\n\t\t\t)\n\t\t).trim();\n\t\tconst maxTokensAnswer = (\n\t\t\tawait rl.question(\n\t\t\t\tchalk.cyan(`Max output tokens (${template.model.maxTokens}): `),\n\t\t\t)\n\t\t).trim();\n\t\tconst contextWindow =\n\t\t\tNumber.parseInt(contextWindowAnswer, 10) || template.model.contextWindow;\n\t\tconst maxTokens =\n\t\t\tNumber.parseInt(maxTokensAnswer, 10) || template.model.maxTokens;\n\n\t\tupsertLocalProvider(config, template, {\n\t\t\tid: providerId,\n\t\t\tname: providerName,\n\t\t\tbaseUrl,\n\t\t\tmodelId,\n\t\t\tmodelName,\n\t\t\tcontextWindow,\n\t\t\tmaxTokens,\n\t\t});\n\t\tif (!config.$schema) {\n\t\t\tconfig.$schema = \"https://composer-cli.dev/config.schema.json\";\n\t\t}\n\t\twriteFileSync(localPath, JSON.stringify(config, null, 2));\n\t\tconsole.log(`\\n${badge(\"Updated local config\", localPath, \"success\")}`);\n\t\tconsole.log(\n\t\t\tmuted(\n\t\t\t\t\"Reload your models (/model) after starting the local runtime to use the new provider.\",\n\t\t\t),\n\t\t);\n\t\tconsole.log(\n\t\t\tmuted(\"Tip: run `maestro config local` again to check connectivity.\"),\n\t\t);\n\n\t\trl.close();\n\t} catch (error) {\n\t\trl.close();\n\t\tthrow error;\n\t}\n}\n\n/**\n * Format bytes to human-readable string\n */\nfunction formatBytes(bytes: number): string {\n\tconst units = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\"];\n\tlet index = 0;\n\tlet value = bytes;\n\twhile (value >= 1024 && index < units.length - 1) {\n\t\tvalue /= 1024;\n\t\tindex += 1;\n\t}\n\treturn `${value.toFixed(1)} ${units[index]}`;\n}\n\nfunction formatModelLabel(model: {\n\tid: string;\n\treasoning?: boolean;\n\tinput?: string[];\n}): string {\n\tconst caps: string[] = [];\n\tif (model.reasoning) {\n\t\tcaps.push(\"thinking\");\n\t}\n\tif (model.input?.includes(\"image\")) {\n\t\tcaps.push(\"vision\");\n\t}\n\tconst suffix = caps.length ? ` ${chalk.dim(`[${caps.join(\", \")}]`)}` : \"\";\n\treturn `${model.id}${suffix}`;\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare function handleEvalOpsCommand(subcommand?: string): Promise<void>;
2
+ //# sourceMappingURL=evalops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evalops.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/evalops.ts"],"names":[],"mappings":"AAIA,wBAAsB,oBAAoB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB7E"}