@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.
- package/README.md +3 -1
- package/dist/agent/action-approval.d.ts +6 -0
- package/dist/agent/action-approval.d.ts.map +1 -1
- package/dist/agent/action-approval.js.map +1 -1
- package/dist/agent/agent.d.ts +13 -1
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +368 -1
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/auto-compaction.d.ts +4 -4
- package/dist/agent/auto-compaction.d.ts.map +1 -1
- package/dist/agent/auto-compaction.js.map +1 -1
- package/dist/agent/compaction-cleanup.d.ts +2 -0
- package/dist/agent/compaction-cleanup.d.ts.map +1 -1
- package/dist/agent/compaction-cleanup.js +17 -2
- package/dist/agent/compaction-cleanup.js.map +1 -1
- package/dist/agent/compaction.d.ts +3 -1
- package/dist/agent/compaction.d.ts.map +1 -1
- package/dist/agent/compaction.js +10 -2
- package/dist/agent/compaction.js.map +1 -1
- package/dist/agent/context-manager.d.ts +4 -0
- package/dist/agent/context-manager.d.ts.map +1 -1
- package/dist/agent/context-manager.js +8 -0
- package/dist/agent/context-manager.js.map +1 -1
- package/dist/agent/context-providers.d.ts +2 -0
- package/dist/agent/context-providers.d.ts.map +1 -1
- package/dist/agent/context-providers.js +3 -2
- package/dist/agent/context-providers.js.map +1 -1
- package/dist/agent/providers/google-gemini-cli.js +17 -5
- package/dist/agent/providers/google.js +174 -144
- package/dist/agent/providers/openai-codex-responses.d.ts +4 -0
- package/dist/agent/providers/openai-codex-responses.d.ts.map +1 -0
- package/dist/agent/providers/openai-codex-responses.js +637 -0
- package/dist/agent/providers/openai-codex-responses.js.map +1 -0
- package/dist/agent/providers/openai-codex-session.d.ts +18 -0
- package/dist/agent/providers/openai-codex-session.d.ts.map +1 -0
- package/dist/agent/providers/openai-codex-session.js +53 -0
- package/dist/agent/providers/openai-codex-session.js.map +1 -0
- package/dist/agent/providers/openai-responses-sdk.d.ts.map +1 -1
- package/dist/agent/providers/openai-responses-sdk.js +16 -6
- package/dist/agent/providers/openai-responses-sdk.js.map +1 -1
- package/dist/agent/providers/openai-shared.d.ts +12 -5
- package/dist/agent/providers/openai-shared.d.ts.map +1 -1
- package/dist/agent/providers/openai-shared.js +291 -2
- package/dist/agent/providers/openai-shared.js.map +1 -1
- package/dist/agent/providers/openai.d.ts +1 -1
- package/dist/agent/providers/openai.d.ts.map +1 -1
- package/dist/agent/providers/openai.js +48 -20
- package/dist/agent/providers/openai.js.map +1 -1
- package/dist/agent/providers/vertex.js +7 -0
- package/dist/agent/tracing.d.ts +16 -5
- package/dist/agent/tracing.d.ts.map +1 -1
- package/dist/agent/tracing.js +44 -2
- package/dist/agent/tracing.js.map +1 -1
- package/dist/agent/transport/create-provider-stream.d.ts.map +1 -1
- package/dist/agent/transport/create-provider-stream.js +9 -0
- package/dist/agent/transport/create-provider-stream.js.map +1 -1
- package/dist/agent/transport/tool-execution-bridge.d.ts +86 -0
- package/dist/agent/transport/tool-execution-bridge.d.ts.map +1 -0
- package/dist/agent/transport/tool-execution-bridge.js +665 -0
- package/dist/agent/transport/tool-execution-bridge.js.map +1 -0
- package/dist/agent/transport/tool-execution.d.ts +3 -0
- package/dist/agent/transport/tool-execution.d.ts.map +1 -1
- package/dist/agent/transport/tool-execution.js +16 -1
- package/dist/agent/transport/tool-execution.js.map +1 -1
- package/dist/agent/transport/tool-safety-pipeline.d.ts +7 -1
- package/dist/agent/transport/tool-safety-pipeline.d.ts.map +1 -1
- package/dist/agent/transport/tool-safety-pipeline.js +207 -40
- package/dist/agent/transport/tool-safety-pipeline.js.map +1 -1
- package/dist/agent/transport/tool-update-queue.d.ts +2 -0
- package/dist/agent/transport/tool-update-queue.d.ts.map +1 -1
- package/dist/agent/transport/tool-update-queue.js.map +1 -1
- package/dist/agent/transport.d.ts +3 -0
- package/dist/agent/transport.d.ts.map +1 -1
- package/dist/agent/transport.js +96 -16
- package/dist/agent/transport.js.map +1 -1
- package/dist/agent/types.d.ts +50 -2
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/approvals/platform-action-approval.d.ts +32 -0
- package/dist/approvals/platform-action-approval.d.ts.map +1 -0
- package/dist/approvals/platform-action-approval.js +210 -0
- package/dist/approvals/platform-action-approval.js.map +1 -0
- package/dist/approvals/service-client.d.ts +56 -0
- package/dist/approvals/service-client.d.ts.map +1 -0
- package/dist/approvals/service-client.js +316 -0
- package/dist/approvals/service-client.js.map +1 -0
- package/dist/audit/logger.d.ts +4 -4
- package/dist/bootstrap/auth-setup.d.ts +2 -2
- package/dist/bootstrap/auth-setup.d.ts.map +1 -1
- package/dist/bootstrap/auth-setup.js +4 -7
- package/dist/bootstrap/auth-setup.js.map +1 -1
- package/dist/cli/args.d.ts +2 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +29 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/commands/codex.d.ts +2 -0
- package/dist/cli/commands/codex.d.ts.map +1 -0
- package/dist/cli/commands/codex.js +65 -0
- package/dist/cli/commands/codex.js.map +1 -0
- package/dist/cli/commands/config.js +1 -1
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/evalops.d.ts +2 -0
- package/dist/cli/commands/evalops.d.ts.map +1 -0
- package/dist/cli/commands/evalops.js +74 -0
- package/dist/cli/commands/evalops.js.map +1 -0
- package/dist/cli/commands/hosted-runner.d.ts +23 -0
- package/dist/cli/commands/hosted-runner.d.ts.map +1 -0
- package/dist/cli/commands/hosted-runner.js +241 -0
- package/dist/cli/commands/hosted-runner.js.map +1 -0
- package/dist/cli/commands/init.d.ts +4 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +140 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/memory.d.ts.map +1 -1
- package/dist/cli/commands/memory.js +23 -30
- package/dist/cli/commands/memory.js.map +1 -1
- package/dist/cli/commands/remote.d.ts +3 -0
- package/dist/cli/commands/remote.d.ts.map +1 -0
- package/dist/cli/commands/remote.js +631 -0
- package/dist/cli/commands/remote.js.map +1 -0
- package/dist/cli/commands/stats.d.ts +7 -0
- package/dist/cli/commands/stats.d.ts.map +1 -0
- package/dist/cli/commands/stats.js +167 -0
- package/dist/cli/commands/stats.js.map +1 -0
- package/dist/cli/headless-protocol.d.ts +16 -1
- package/dist/cli/headless-protocol.d.ts.map +1 -1
- package/dist/cli/headless-protocol.js +60 -4
- package/dist/cli/headless-protocol.js.map +1 -1
- package/dist/cli/headless.d.ts.map +1 -1
- package/dist/cli/headless.js +1 -0
- package/dist/cli/headless.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +44 -1
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/jsonl-writer.d.ts.map +1 -1
- package/dist/cli/jsonl-writer.js +19 -6
- package/dist/cli/jsonl-writer.js.map +1 -1
- package/dist/cli-tui/client-tools/client-tool-controller.d.ts.map +1 -1
- package/dist/cli-tui/client-tools/client-tool-controller.js +17 -1
- package/dist/cli-tui/client-tools/client-tool-controller.js.map +1 -1
- package/dist/cli-tui/commands/access-command.js +1 -1
- package/dist/cli-tui/commands/access-command.js.map +1 -1
- package/dist/cli-tui/commands/audit-command.js +1 -1
- package/dist/cli-tui/commands/audit-command.js.map +1 -1
- package/dist/cli-tui/commands/command-catalog.d.ts +29 -0
- package/dist/cli-tui/commands/command-catalog.d.ts.map +1 -0
- package/dist/cli-tui/commands/command-catalog.js +645 -0
- package/dist/cli-tui/commands/command-catalog.js.map +1 -0
- package/dist/cli-tui/commands/command-registry-adapter.d.ts +12 -0
- package/dist/cli-tui/commands/command-registry-adapter.d.ts.map +1 -0
- package/dist/cli-tui/commands/command-registry-adapter.js +120 -0
- package/dist/cli-tui/commands/command-registry-adapter.js.map +1 -0
- package/dist/cli-tui/commands/command-suite-catalog.d.ts +14 -0
- package/dist/cli-tui/commands/command-suite-catalog.d.ts.map +1 -0
- package/dist/cli-tui/commands/command-suite-catalog.js +147 -0
- package/dist/cli-tui/commands/command-suite-catalog.js.map +1 -0
- package/dist/cli-tui/commands/{grouped-command-handlers.d.ts → command-suite-handlers.d.ts} +27 -26
- package/dist/cli-tui/commands/command-suite-handlers.d.ts.map +1 -0
- package/dist/cli-tui/commands/command-suite-handlers.js +110 -0
- package/dist/cli-tui/commands/command-suite-handlers.js.map +1 -0
- package/dist/cli-tui/commands/hotkeys-command.d.ts +1 -1
- package/dist/cli-tui/commands/hotkeys-command.d.ts.map +1 -1
- package/dist/cli-tui/commands/hotkeys-command.js +2 -2
- package/dist/cli-tui/commands/hotkeys-command.js.map +1 -1
- package/dist/cli-tui/commands/limits-command.js +1 -1
- package/dist/cli-tui/commands/limits-command.js.map +1 -1
- package/dist/cli-tui/commands/pii-command.js +1 -1
- package/dist/cli-tui/commands/pii-command.js.map +1 -1
- package/dist/cli-tui/commands/registry.d.ts +1 -1
- package/dist/cli-tui/commands/registry.d.ts.map +1 -1
- package/dist/cli-tui/commands/registry.js +29 -921
- package/dist/cli-tui/commands/registry.js.map +1 -1
- package/dist/cli-tui/commands/{grouped → subcommands}/auth-commands.d.ts +2 -1
- package/dist/cli-tui/commands/subcommands/auth-commands.d.ts.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/auth-commands.js +22 -6
- package/dist/cli-tui/commands/subcommands/auth-commands.js.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/config-commands.d.ts +0 -1
- package/dist/cli-tui/commands/subcommands/config-commands.d.ts.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/config-commands.js +2 -2
- package/dist/cli-tui/commands/subcommands/config-commands.js.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/diag-commands.d.ts +1 -2
- package/dist/cli-tui/commands/subcommands/diag-commands.d.ts.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/diag-commands.js +5 -7
- package/dist/cli-tui/commands/subcommands/diag-commands.js.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/git-commands.d.ts +0 -2
- package/dist/cli-tui/commands/subcommands/git-commands.d.ts.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/git-commands.js +2 -2
- package/dist/cli-tui/commands/subcommands/git-commands.js.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/index.d.ts +2 -2
- package/dist/cli-tui/commands/subcommands/index.d.ts.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/index.js +2 -2
- package/dist/cli-tui/commands/subcommands/index.js.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/safety-commands.d.ts +0 -1
- package/dist/cli-tui/commands/subcommands/safety-commands.d.ts.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/safety-commands.js +12 -12
- package/dist/cli-tui/commands/subcommands/safety-commands.js.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/session-commands.d.ts +1 -2
- package/dist/cli-tui/commands/subcommands/session-commands.d.ts.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/session-commands.js +3 -3
- package/dist/cli-tui/commands/subcommands/session-commands.js.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/tools-commands.d.ts +0 -1
- package/dist/cli-tui/commands/subcommands/tools-commands.d.ts.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/tools-commands.js +2 -2
- package/dist/cli-tui/commands/subcommands/tools-commands.js.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/ui-commands.d.ts +0 -1
- package/dist/cli-tui/commands/subcommands/ui-commands.d.ts.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/ui-commands.js +5 -5
- package/dist/cli-tui/commands/subcommands/ui-commands.js.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/undo-commands.d.ts +1 -2
- package/dist/cli-tui/commands/subcommands/undo-commands.d.ts.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/undo-commands.js +6 -6
- package/dist/cli-tui/commands/subcommands/undo-commands.js.map +1 -0
- package/dist/cli-tui/commands/subcommands/usage-commands.d.ts.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/usage-commands.js +2 -2
- package/dist/cli-tui/commands/subcommands/usage-commands.js.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/utils.d.ts +15 -15
- package/dist/cli-tui/commands/subcommands/utils.d.ts.map +1 -0
- package/dist/cli-tui/commands/{grouped → subcommands}/utils.js +13 -8
- package/dist/cli-tui/commands/subcommands/utils.js.map +1 -0
- package/dist/cli-tui/commands/types.d.ts +3 -3
- package/dist/cli-tui/commands/types.d.ts.map +1 -1
- package/dist/cli-tui/commands/types.js.map +1 -1
- package/dist/cli-tui/editor-view.d.ts +1 -1
- package/dist/cli-tui/editor-view.d.ts.map +1 -1
- package/dist/cli-tui/editor-view.js +1 -1
- package/dist/cli-tui/editor-view.js.map +1 -1
- package/dist/cli-tui/oauth/oauth-flow-controller.d.ts +4 -0
- package/dist/cli-tui/oauth/oauth-flow-controller.d.ts.map +1 -1
- package/dist/cli-tui/oauth/oauth-flow-controller.js +76 -5
- package/dist/cli-tui/oauth/oauth-flow-controller.js.map +1 -1
- package/dist/cli-tui/run/run-controller.d.ts +2 -2
- package/dist/cli-tui/run/run-controller.d.ts.map +1 -1
- package/dist/cli-tui/run/run-controller.js +3 -2
- package/dist/cli-tui/run/run-controller.js.map +1 -1
- package/dist/cli-tui/run/run-shell-command.d.ts.map +1 -1
- package/dist/cli-tui/run/run-shell-command.js +11 -3
- package/dist/cli-tui/run/run-shell-command.js.map +1 -1
- package/dist/cli-tui/run/streaming-shell-command.d.ts.map +1 -1
- package/dist/cli-tui/run/streaming-shell-command.js +11 -3
- package/dist/cli-tui/run/streaming-shell-command.js.map +1 -1
- package/dist/cli-tui/selectors/model-selector.d.ts.map +1 -1
- package/dist/cli-tui/selectors/model-selector.js +1 -0
- package/dist/cli-tui/selectors/model-selector.js.map +1 -1
- package/dist/cli-tui/tui-renderer/agent-event-bridge.d.ts +8 -0
- package/dist/cli-tui/tui-renderer/agent-event-bridge.d.ts.map +1 -1
- package/dist/cli-tui/tui-renderer/agent-event-bridge.js +23 -2
- package/dist/cli-tui/tui-renderer/agent-event-bridge.js.map +1 -1
- package/dist/cli-tui/tui-renderer/command-registry-options.d.ts +3 -3
- package/dist/cli-tui/tui-renderer/command-registry-options.d.ts.map +1 -1
- package/dist/cli-tui/tui-renderer/command-registry-options.js +12 -2
- package/dist/cli-tui/tui-renderer/command-registry-options.js.map +1 -1
- package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts +32 -0
- package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts.map +1 -0
- package/dist/cli-tui/tui-renderer/command-suite-wiring.js +108 -0
- package/dist/cli-tui/tui-renderer/command-suite-wiring.js.map +1 -0
- package/dist/cli-tui/tui-renderer/input-controller.d.ts +2 -2
- package/dist/cli-tui/tui-renderer/input-controller.d.ts.map +1 -1
- package/dist/cli-tui/tui-renderer/input-controller.js +2 -2
- package/dist/cli-tui/tui-renderer/input-controller.js.map +1 -1
- package/dist/cli-tui/tui-renderer/ui-state-controller.d.ts +1 -1
- package/dist/cli-tui/tui-renderer/ui-state-controller.js +1 -1
- package/dist/cli-tui/tui-renderer/ui-state-controller.js.map +1 -1
- package/dist/cli-tui/tui-renderer.d.ts +1 -3
- package/dist/cli-tui/tui-renderer.d.ts.map +1 -1
- package/dist/cli-tui/tui-renderer.js +37 -83
- package/dist/cli-tui/tui-renderer.js.map +1 -1
- package/dist/cli-tui/utils/runtime-badges.d.ts +8 -0
- package/dist/cli-tui/utils/runtime-badges.d.ts.map +1 -1
- package/dist/cli-tui/utils/runtime-badges.js +58 -0
- package/dist/cli-tui/utils/runtime-badges.js.map +1 -1
- package/dist/cli.js +42555 -23133
- package/dist/cli.js.map +1 -1
- package/dist/config/env-vars.d.ts +4 -0
- package/dist/config/env-vars.d.ts.map +1 -1
- package/dist/config/env-vars.js +4 -0
- package/dist/config/env-vars.js.map +1 -1
- package/dist/config/feature-flags.d.ts +44 -0
- package/dist/config/feature-flags.d.ts.map +1 -1
- package/dist/config/feature-flags.js +214 -0
- package/dist/config/feature-flags.js.map +1 -1
- package/dist/connectors/service-client.d.ts +98 -0
- package/dist/connectors/service-client.d.ts.map +1 -0
- package/dist/connectors/service-client.js +459 -0
- package/dist/connectors/service-client.js.map +1 -0
- package/dist/conversation/render-model.d.ts.map +1 -1
- package/dist/conversation/render-model.js +53 -3
- package/dist/conversation/render-model.js.map +1 -1
- package/dist/db/health.d.ts +8 -0
- package/dist/db/health.d.ts.map +1 -0
- package/dist/db/health.js +64 -0
- package/dist/db/health.js.map +1 -0
- package/dist/db/migrate.d.ts +301 -0
- package/dist/db/migrate.d.ts.map +1 -1
- package/dist/db/migrate.js +186 -0
- package/dist/db/migrate.js.map +1 -1
- package/dist/db/migrations/0000_initial.sql +308 -0
- package/dist/db/migrations/0001_shared_sessions.sql +18 -0
- package/dist/db/migrations/0002_usage_metrics.sql +28 -0
- package/dist/db/migrations/0003_execution_traces.sql +18 -0
- package/dist/db/migrations/0004_workspace_config.sql +11 -0
- package/dist/db/migrations/0005_revenue_attribution.sql +31 -0
- package/dist/db/migrations/0006_hosted_session_storage.sql +51 -0
- package/dist/db/migrations/0007_reconcile_legacy_audit_hash_cache.sql +24 -0
- package/dist/db/migrations/0008_reconcile_legacy_webhook_deliveries.sql +290 -0
- package/dist/db/migrations/meta/0000_snapshot.json +2438 -0
- package/dist/db/migrations/meta/_journal.json +69 -0
- package/dist/db/schema.d.ts +2232 -844
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +187 -1
- package/dist/db/schema.js.map +1 -1
- package/dist/evalops/agent-bootstrap.d.ts +73 -0
- package/dist/evalops/agent-bootstrap.d.ts.map +1 -0
- package/dist/evalops/agent-bootstrap.js +380 -0
- package/dist/evalops/agent-bootstrap.js.map +1 -0
- package/dist/export-html.d.ts.map +1 -1
- package/dist/export-html.js +7 -4
- package/dist/export-html.js.map +1 -1
- package/dist/headless/utility-command-manager.d.ts +2 -1
- package/dist/headless/utility-command-manager.d.ts.map +1 -1
- package/dist/headless/utility-command-manager.js +12 -6
- package/dist/headless/utility-command-manager.js.map +1 -1
- package/dist/headless/utility-file-read.d.ts +1 -0
- package/dist/headless/utility-file-read.d.ts.map +1 -1
- package/dist/headless/utility-file-read.js +5 -1
- package/dist/headless/utility-file-read.js.map +1 -1
- package/dist/headless/utility-file-search.d.ts +1 -0
- package/dist/headless/utility-file-search.d.ts.map +1 -1
- package/dist/headless/utility-file-search.js +4 -1
- package/dist/headless/utility-file-search.js.map +1 -1
- package/dist/headless/utility-file-watch-manager.d.ts +2 -1
- package/dist/headless/utility-file-watch-manager.d.ts.map +1 -1
- package/dist/headless/utility-file-watch-manager.js +6 -2
- package/dist/headless/utility-file-watch-manager.js.map +1 -1
- package/dist/headless/workspace-root.d.ts +8 -0
- package/dist/headless/workspace-root.d.ts.map +1 -0
- package/dist/headless/workspace-root.js +74 -0
- package/dist/headless/workspace-root.js.map +1 -0
- package/dist/hooks/notification-hooks.d.ts +5 -0
- package/dist/hooks/notification-hooks.d.ts.map +1 -1
- package/dist/hooks/notification-hooks.js +4 -0
- package/dist/hooks/notification-hooks.js.map +1 -1
- package/dist/lsp/diagnostic-deltas.d.ts +20 -0
- package/dist/lsp/diagnostic-deltas.d.ts.map +1 -0
- package/dist/lsp/diagnostic-deltas.js +92 -0
- package/dist/lsp/diagnostic-deltas.js.map +1 -0
- package/dist/lsp/diagnostic-repair.d.ts +48 -0
- package/dist/lsp/diagnostic-repair.d.ts.map +1 -0
- package/dist/lsp/diagnostic-repair.js +143 -0
- package/dist/lsp/diagnostic-repair.js.map +1 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +127 -37
- package/dist/main.js.map +1 -1
- package/dist/mcp/config.d.ts +4 -2
- package/dist/mcp/config.d.ts.map +1 -1
- package/dist/mcp/config.js +58 -14
- package/dist/mcp/config.js.map +1 -1
- package/dist/mcp/index.d.ts +1 -0
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +1 -0
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/manager.d.ts +1 -0
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +1 -0
- package/dist/mcp/manager.js.map +1 -1
- package/dist/mcp/platform-plugin.d.ts +3 -0
- package/dist/mcp/platform-plugin.d.ts.map +1 -0
- package/dist/mcp/platform-plugin.js +117 -0
- package/dist/mcp/platform-plugin.js.map +1 -0
- package/dist/mcp/tool-bridge.d.ts +15 -0
- package/dist/mcp/tool-bridge.d.ts.map +1 -1
- package/dist/mcp/tool-bridge.js +194 -6
- package/dist/mcp/tool-bridge.js.map +1 -1
- package/dist/memory/platform-memory-client.d.ts +130 -0
- package/dist/memory/platform-memory-client.d.ts.map +1 -0
- package/dist/memory/platform-memory-client.js +330 -0
- package/dist/memory/platform-memory-client.js.map +1 -0
- package/dist/memory/service-client.d.ts.map +1 -1
- package/dist/memory/service-client.js +1 -2
- package/dist/memory/service-client.js.map +1 -1
- package/dist/models/builtin.d.ts.map +1 -1
- package/dist/models/builtin.js +137 -0
- package/dist/models/builtin.js.map +1 -1
- package/dist/models/config-loader.d.ts +10 -10
- package/dist/models/config-loader.d.ts.map +1 -1
- package/dist/models/config-loader.js +1 -0
- package/dist/models/config-loader.js.map +1 -1
- package/dist/models/registry.d.ts +1 -0
- package/dist/models/registry.d.ts.map +1 -1
- package/dist/models/registry.js +1 -0
- package/dist/models/registry.js.map +1 -1
- package/dist/oauth/connectors.d.ts +25 -0
- package/dist/oauth/connectors.d.ts.map +1 -0
- package/dist/oauth/connectors.js +253 -0
- package/dist/oauth/connectors.js.map +1 -0
- package/dist/oauth/device-identity.d.ts +18 -0
- package/dist/oauth/device-identity.d.ts.map +1 -0
- package/dist/oauth/device-identity.js +193 -0
- package/dist/oauth/device-identity.js.map +1 -0
- package/dist/oauth/evalops.d.ts.map +1 -1
- package/dist/oauth/evalops.js +74 -15
- package/dist/oauth/evalops.js.map +1 -1
- package/dist/oauth/index.d.ts +1 -1
- package/dist/oauth/index.d.ts.map +1 -1
- package/dist/oauth/index.js +31 -1
- package/dist/oauth/index.js.map +1 -1
- package/dist/oauth/openai-codex.d.ts +16 -0
- package/dist/oauth/openai-codex.d.ts.map +1 -0
- package/dist/oauth/openai-codex.js +300 -0
- package/dist/oauth/openai-codex.js.map +1 -0
- package/dist/opentelemetry.d.ts.map +1 -1
- package/dist/opentelemetry.js +9 -2
- package/dist/opentelemetry.js.map +1 -1
- package/dist/platform/agent-runtime-client.d.ts +279 -0
- package/dist/platform/agent-runtime-client.d.ts.map +1 -0
- package/dist/platform/agent-runtime-client.js +515 -0
- package/dist/platform/agent-runtime-client.js.map +1 -0
- package/dist/platform/cerebro-facts-client.d.ts +56 -0
- package/dist/platform/cerebro-facts-client.d.ts.map +1 -0
- package/dist/platform/cerebro-facts-client.js +297 -0
- package/dist/platform/cerebro-facts-client.js.map +1 -0
- package/dist/platform/client.d.ts +2 -1
- package/dist/platform/client.d.ts.map +1 -1
- package/dist/platform/client.js +9 -26
- package/dist/platform/client.js.map +1 -1
- package/dist/platform/core-services.d.ts +128 -0
- package/dist/platform/core-services.d.ts.map +1 -1
- package/dist/platform/core-services.js +128 -0
- package/dist/platform/core-services.js.map +1 -1
- package/dist/platform/maestro-timeline-client.d.ts +22 -0
- package/dist/platform/maestro-timeline-client.d.ts.map +1 -0
- package/dist/platform/maestro-timeline-client.js +373 -0
- package/dist/platform/maestro-timeline-client.js.map +1 -0
- package/dist/platform/tool-execution-client.d.ts +104 -0
- package/dist/platform/tool-execution-client.d.ts.map +1 -0
- package/dist/platform/tool-execution-client.js +284 -0
- package/dist/platform/tool-execution-client.js.map +1 -0
- package/dist/prompts/service-client.d.ts.map +1 -1
- package/dist/prompts/service-client.js +5 -2
- package/dist/prompts/service-client.js.map +1 -1
- package/dist/providers/anthropic-auth.d.ts.map +1 -1
- package/dist/providers/anthropic-auth.js +8 -6
- package/dist/providers/anthropic-auth.js.map +1 -1
- package/dist/providers/api-keys.d.ts +1 -0
- package/dist/providers/api-keys.d.ts.map +1 -1
- package/dist/providers/api-keys.js +5 -0
- package/dist/providers/api-keys.js.map +1 -1
- package/dist/providers/auth.d.ts +2 -1
- package/dist/providers/auth.d.ts.map +1 -1
- package/dist/providers/auth.js +26 -3
- package/dist/providers/auth.js.map +1 -1
- package/dist/remote-runner/attach-client.d.ts +41 -0
- package/dist/remote-runner/attach-client.d.ts.map +1 -0
- package/dist/remote-runner/attach-client.js +692 -0
- package/dist/remote-runner/attach-client.js.map +1 -0
- package/dist/remote-runner/client.d.ts +205 -0
- package/dist/remote-runner/client.d.ts.map +1 -0
- package/dist/remote-runner/client.js +633 -0
- package/dist/remote-runner/client.js.map +1 -0
- package/dist/safety/action-firewall.d.ts +6 -1
- package/dist/safety/action-firewall.d.ts.map +1 -1
- package/dist/safety/action-firewall.js +62 -26
- package/dist/safety/action-firewall.js.map +1 -1
- package/dist/safety/governance-service-client.d.ts +36 -0
- package/dist/safety/governance-service-client.d.ts.map +1 -0
- package/dist/safety/governance-service-client.js +279 -0
- package/dist/safety/governance-service-client.js.map +1 -0
- package/dist/safety/policy.d.ts +13 -2
- package/dist/safety/policy.d.ts.map +1 -1
- package/dist/safety/policy.js +474 -52
- package/dist/safety/policy.js.map +1 -1
- package/dist/sdk-tools.d.ts +21 -0
- package/dist/sdk-tools.d.ts.map +1 -1
- package/dist/sdk-tools.js +16 -0
- package/dist/sdk-tools.js.map +1 -1
- package/dist/server/app-context.d.ts +25 -0
- package/dist/server/app-context.d.ts.map +1 -1
- package/dist/server/app-context.js.map +1 -1
- package/dist/server/approval-service.d.ts +7 -8
- package/dist/server/approval-service.d.ts.map +1 -1
- package/dist/server/approval-service.js +12 -24
- package/dist/server/approval-service.js.map +1 -1
- package/dist/server/authz.d.ts +23 -2
- package/dist/server/authz.d.ts.map +1 -1
- package/dist/server/authz.js +153 -17
- package/dist/server/authz.js.map +1 -1
- package/dist/server/handlers/approvals.d.ts.map +1 -1
- package/dist/server/handlers/approvals.js +3 -10
- package/dist/server/handlers/approvals.js.map +1 -1
- package/dist/server/handlers/branch.d.ts.map +1 -1
- package/dist/server/handlers/branch.js +29 -20
- package/dist/server/handlers/branch.js.map +1 -1
- package/dist/server/handlers/bridge.d.ts.map +1 -1
- package/dist/server/handlers/bridge.js +3 -2
- package/dist/server/handlers/bridge.js.map +1 -1
- package/dist/server/handlers/chat-ws.d.ts.map +1 -1
- package/dist/server/handlers/chat-ws.js +23 -31
- package/dist/server/handlers/chat-ws.js.map +1 -1
- package/dist/server/handlers/chat.d.ts.map +1 -1
- package/dist/server/handlers/chat.js +105 -46
- package/dist/server/handlers/chat.js.map +1 -1
- package/dist/server/handlers/compliance.d.ts +3 -0
- package/dist/server/handlers/compliance.d.ts.map +1 -0
- package/dist/server/handlers/compliance.js +53 -0
- package/dist/server/handlers/compliance.js.map +1 -0
- package/dist/server/handlers/context.d.ts.map +1 -1
- package/dist/server/handlers/context.js +3 -8
- package/dist/server/handlers/context.js.map +1 -1
- package/dist/server/handlers/fleet.d.ts +4 -0
- package/dist/server/handlers/fleet.d.ts.map +1 -0
- package/dist/server/handlers/fleet.js +9 -0
- package/dist/server/handlers/fleet.js.map +1 -0
- package/dist/server/handlers/headless-sessions.d.ts +4 -0
- package/dist/server/handlers/headless-sessions.d.ts.map +1 -1
- package/dist/server/handlers/headless-sessions.js +168 -3
- package/dist/server/handlers/headless-sessions.js.map +1 -1
- package/dist/server/handlers/health.d.ts +31 -2
- package/dist/server/handlers/health.d.ts.map +1 -1
- package/dist/server/handlers/health.js +82 -8
- package/dist/server/handlers/health.js.map +1 -1
- package/dist/server/handlers/hosted-runner-drain.d.ts +128 -0
- package/dist/server/handlers/hosted-runner-drain.d.ts.map +1 -0
- package/dist/server/handlers/hosted-runner-drain.js +373 -0
- package/dist/server/handlers/hosted-runner-drain.js.map +1 -0
- package/dist/server/handlers/hosted-runner-identity.d.ts +17 -0
- package/dist/server/handlers/hosted-runner-identity.d.ts.map +1 -0
- package/dist/server/handlers/hosted-runner-identity.js +39 -0
- package/dist/server/handlers/hosted-runner-identity.js.map +1 -0
- package/dist/server/handlers/intelligent-router.d.ts +3 -0
- package/dist/server/handlers/intelligent-router.d.ts.map +1 -0
- package/dist/server/handlers/intelligent-router.js +141 -0
- package/dist/server/handlers/intelligent-router.js.map +1 -0
- package/dist/server/handlers/models.d.ts.map +1 -1
- package/dist/server/handlers/models.js +14 -0
- package/dist/server/handlers/models.js.map +1 -1
- package/dist/server/handlers/pending-requests.d.ts +8 -0
- package/dist/server/handlers/pending-requests.d.ts.map +1 -0
- package/dist/server/handlers/pending-requests.js +149 -0
- package/dist/server/handlers/pending-requests.js.map +1 -0
- package/dist/server/handlers/revenue-attribution.d.ts +3 -0
- package/dist/server/handlers/revenue-attribution.d.ts.map +1 -0
- package/dist/server/handlers/revenue-attribution.js +45 -0
- package/dist/server/handlers/revenue-attribution.js.map +1 -0
- package/dist/server/handlers/runtime-app-server-ws.d.ts +10 -0
- package/dist/server/handlers/runtime-app-server-ws.d.ts.map +1 -0
- package/dist/server/handlers/runtime-app-server-ws.js +206 -0
- package/dist/server/handlers/runtime-app-server-ws.js.map +1 -0
- package/dist/server/handlers/session-artifacts.js +2 -2
- package/dist/server/handlers/session-artifacts.js.map +1 -1
- package/dist/server/handlers/session-attachments.js +3 -3
- package/dist/server/handlers/session-attachments.js.map +1 -1
- package/dist/server/handlers/session-timeline.d.ts +11 -0
- package/dist/server/handlers/session-timeline.d.ts.map +1 -0
- package/dist/server/handlers/session-timeline.js +77 -0
- package/dist/server/handlers/session-timeline.js.map +1 -0
- package/dist/server/handlers/sessions.d.ts +11 -0
- package/dist/server/handlers/sessions.d.ts.map +1 -1
- package/dist/server/handlers/sessions.js +68 -100
- package/dist/server/handlers/sessions.js.map +1 -1
- package/dist/server/handlers/traces.d.ts +3 -0
- package/dist/server/handlers/traces.d.ts.map +1 -0
- package/dist/server/handlers/traces.js +60 -0
- package/dist/server/handlers/traces.js.map +1 -0
- package/dist/server/handlers/usage-analytics.d.ts +3 -0
- package/dist/server/handlers/usage-analytics.d.ts.map +1 -0
- package/dist/server/handlers/usage-analytics.js +40 -0
- package/dist/server/handlers/usage-analytics.js.map +1 -0
- package/dist/server/handlers/workspace-config.d.ts +3 -0
- package/dist/server/handlers/workspace-config.d.ts.map +1 -0
- package/dist/server/handlers/workspace-config.js +62 -0
- package/dist/server/handlers/workspace-config.js.map +1 -0
- package/dist/server/headless-in-process-host.d.ts +8 -1
- package/dist/server/headless-in-process-host.d.ts.map +1 -1
- package/dist/server/headless-in-process-host.js +6 -0
- package/dist/server/headless-in-process-host.js.map +1 -1
- package/dist/server/headless-runtime-service.d.ts +99 -1
- package/dist/server/headless-runtime-service.d.ts.map +1 -1
- package/dist/server/headless-runtime-service.js +286 -23
- package/dist/server/headless-runtime-service.js.map +1 -1
- package/dist/server/hosted-session-manager.d.ts +103 -0
- package/dist/server/hosted-session-manager.d.ts.map +1 -0
- package/dist/server/hosted-session-manager.js +629 -0
- package/dist/server/hosted-session-manager.js.map +1 -0
- package/dist/server/pending-request-payload.d.ts +4 -0
- package/dist/server/pending-request-payload.d.ts.map +1 -0
- package/dist/server/pending-request-payload.js +107 -0
- package/dist/server/pending-request-payload.js.map +1 -0
- package/dist/server/request-context.d.ts +4 -0
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-context.js +9 -0
- package/dist/server/request-context.js.map +1 -1
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +149 -1
- package/dist/server/routes.js.map +1 -1
- package/dist/server/runtime-ws-access.d.ts +16 -0
- package/dist/server/runtime-ws-access.d.ts.map +1 -0
- package/dist/server/runtime-ws-access.js +21 -0
- package/dist/server/runtime-ws-access.js.map +1 -0
- package/dist/server/server-middlewares.d.ts +1 -1
- package/dist/server/server-middlewares.d.ts.map +1 -1
- package/dist/server/server-middlewares.js +35 -27
- package/dist/server/server-middlewares.js.map +1 -1
- package/dist/server/server-request-manager.d.ts +8 -27
- package/dist/server/server-request-manager.d.ts.map +1 -1
- package/dist/server/server-request-manager.js +7 -0
- package/dist/server/server-request-manager.js.map +1 -1
- package/dist/server/server-utils.d.ts +2 -1
- package/dist/server/server-utils.d.ts.map +1 -1
- package/dist/server/server-utils.js +11 -1
- package/dist/server/server-utils.js.map +1 -1
- package/dist/server/session-event-env.d.ts +2 -0
- package/dist/server/session-event-env.d.ts.map +1 -0
- package/dist/server/session-event-env.js +8 -0
- package/dist/server/session-event-env.js.map +1 -0
- package/dist/server/session-initialization.d.ts +25 -4
- package/dist/server/session-initialization.d.ts.map +1 -1
- package/dist/server/session-initialization.js +22 -5
- package/dist/server/session-initialization.js.map +1 -1
- package/dist/server/session-scope.d.ts +4 -0
- package/dist/server/session-scope.d.ts.map +1 -1
- package/dist/server/session-scope.js +44 -4
- package/dist/server/session-scope.js.map +1 -1
- package/dist/server/session-timeline.d.ts +13 -0
- package/dist/server/session-timeline.d.ts.map +1 -0
- package/dist/server/session-timeline.js +566 -0
- package/dist/server/session-timeline.js.map +1 -0
- package/dist/services/compliance/controls.d.ts +6 -0
- package/dist/services/compliance/controls.d.ts.map +1 -0
- package/dist/services/compliance/controls.js +113 -0
- package/dist/services/compliance/controls.js.map +1 -0
- package/dist/services/compliance/index.d.ts +6 -0
- package/dist/services/compliance/index.d.ts.map +1 -0
- package/dist/services/compliance/index.js +5 -0
- package/dist/services/compliance/index.js.map +1 -0
- package/dist/services/compliance/normalize.d.ts +23 -0
- package/dist/services/compliance/normalize.d.ts.map +1 -0
- package/dist/services/compliance/normalize.js +226 -0
- package/dist/services/compliance/normalize.js.map +1 -0
- package/dist/services/compliance/recorder.d.ts +22 -0
- package/dist/services/compliance/recorder.d.ts.map +1 -0
- package/dist/services/compliance/recorder.js +89 -0
- package/dist/services/compliance/recorder.js.map +1 -0
- package/dist/services/compliance/service.d.ts +24 -0
- package/dist/services/compliance/service.d.ts.map +1 -0
- package/dist/services/compliance/service.js +426 -0
- package/dist/services/compliance/service.js.map +1 -0
- package/dist/services/compliance/types.d.ts +185 -0
- package/dist/services/compliance/types.d.ts.map +1 -0
- package/dist/services/compliance/types.js +2 -0
- package/dist/services/compliance/types.js.map +1 -0
- package/dist/services/intelligent-router/index.d.ts +5 -0
- package/dist/services/intelligent-router/index.d.ts.map +1 -0
- package/dist/services/intelligent-router/index.js +5 -0
- package/dist/services/intelligent-router/index.js.map +1 -0
- package/dist/services/intelligent-router/normalize.d.ts +9 -0
- package/dist/services/intelligent-router/normalize.d.ts.map +1 -0
- package/dist/services/intelligent-router/normalize.js +169 -0
- package/dist/services/intelligent-router/normalize.js.map +1 -0
- package/dist/services/intelligent-router/recorder.d.ts +24 -0
- package/dist/services/intelligent-router/recorder.d.ts.map +1 -0
- package/dist/services/intelligent-router/recorder.js +98 -0
- package/dist/services/intelligent-router/recorder.js.map +1 -0
- package/dist/services/intelligent-router/service.d.ts +22 -0
- package/dist/services/intelligent-router/service.d.ts.map +1 -0
- package/dist/services/intelligent-router/service.js +328 -0
- package/dist/services/intelligent-router/service.js.map +1 -0
- package/dist/services/intelligent-router/types.d.ts +98 -0
- package/dist/services/intelligent-router/types.d.ts.map +1 -0
- package/dist/services/intelligent-router/types.js +7 -0
- package/dist/services/intelligent-router/types.js.map +1 -0
- package/dist/services/revenue-attribution/index.d.ts +4 -0
- package/dist/services/revenue-attribution/index.d.ts.map +1 -0
- package/dist/services/revenue-attribution/index.js +4 -0
- package/dist/services/revenue-attribution/index.js.map +1 -0
- package/dist/services/revenue-attribution/normalize.d.ts +13 -0
- package/dist/services/revenue-attribution/normalize.d.ts.map +1 -0
- package/dist/services/revenue-attribution/normalize.js +155 -0
- package/dist/services/revenue-attribution/normalize.js.map +1 -0
- package/dist/services/revenue-attribution/service.d.ts +21 -0
- package/dist/services/revenue-attribution/service.d.ts.map +1 -0
- package/dist/services/revenue-attribution/service.js +248 -0
- package/dist/services/revenue-attribution/service.js.map +1 -0
- package/dist/services/revenue-attribution/types.d.ts +96 -0
- package/dist/services/revenue-attribution/types.d.ts.map +1 -0
- package/dist/services/revenue-attribution/types.js +7 -0
- package/dist/services/revenue-attribution/types.js.map +1 -0
- package/dist/services/traces/index.d.ts +5 -0
- package/dist/services/traces/index.d.ts.map +1 -0
- package/dist/services/traces/index.js +4 -0
- package/dist/services/traces/index.js.map +1 -0
- package/dist/services/traces/normalize.d.ts +20 -0
- package/dist/services/traces/normalize.d.ts.map +1 -0
- package/dist/services/traces/normalize.js +261 -0
- package/dist/services/traces/normalize.js.map +1 -0
- package/dist/services/traces/otel.d.ts +3 -0
- package/dist/services/traces/otel.d.ts.map +1 -0
- package/dist/services/traces/otel.js +173 -0
- package/dist/services/traces/otel.js.map +1 -0
- package/dist/services/traces/service.d.ts +17 -0
- package/dist/services/traces/service.d.ts.map +1 -0
- package/dist/services/traces/service.js +197 -0
- package/dist/services/traces/service.js.map +1 -0
- package/dist/services/traces/types.d.ts +130 -0
- package/dist/services/traces/types.d.ts.map +1 -0
- package/dist/services/traces/types.js +8 -0
- package/dist/services/traces/types.js.map +1 -0
- package/dist/services/usage-analytics/aggregation.d.ts +18 -0
- package/dist/services/usage-analytics/aggregation.d.ts.map +1 -0
- package/dist/services/usage-analytics/aggregation.js +130 -0
- package/dist/services/usage-analytics/aggregation.js.map +1 -0
- package/dist/services/usage-analytics/index.d.ts +5 -0
- package/dist/services/usage-analytics/index.d.ts.map +1 -0
- package/dist/services/usage-analytics/index.js +4 -0
- package/dist/services/usage-analytics/index.js.map +1 -0
- package/dist/services/usage-analytics/recorder.d.ts +16 -0
- package/dist/services/usage-analytics/recorder.d.ts.map +1 -0
- package/dist/services/usage-analytics/recorder.js +128 -0
- package/dist/services/usage-analytics/recorder.js.map +1 -0
- package/dist/services/usage-analytics/service.d.ts +15 -0
- package/dist/services/usage-analytics/service.d.ts.map +1 -0
- package/dist/services/usage-analytics/service.js +210 -0
- package/dist/services/usage-analytics/service.js.map +1 -0
- package/dist/services/usage-analytics/types.d.ts +80 -0
- package/dist/services/usage-analytics/types.d.ts.map +1 -0
- package/dist/services/usage-analytics/types.js +2 -0
- package/dist/services/usage-analytics/types.js.map +1 -0
- package/dist/services/workspace-config/index.d.ts +6 -0
- package/dist/services/workspace-config/index.d.ts.map +1 -0
- package/dist/services/workspace-config/index.js +5 -0
- package/dist/services/workspace-config/index.js.map +1 -0
- package/dist/services/workspace-config/middleware.d.ts +5 -0
- package/dist/services/workspace-config/middleware.d.ts.map +1 -0
- package/dist/services/workspace-config/middleware.js +98 -0
- package/dist/services/workspace-config/middleware.js.map +1 -0
- package/dist/services/workspace-config/normalize.d.ts +17 -0
- package/dist/services/workspace-config/normalize.d.ts.map +1 -0
- package/dist/services/workspace-config/normalize.js +148 -0
- package/dist/services/workspace-config/normalize.js.map +1 -0
- package/dist/services/workspace-config/policy.d.ts +16 -0
- package/dist/services/workspace-config/policy.d.ts.map +1 -0
- package/dist/services/workspace-config/policy.js +77 -0
- package/dist/services/workspace-config/policy.js.map +1 -0
- package/dist/services/workspace-config/service.d.ts +20 -0
- package/dist/services/workspace-config/service.d.ts.map +1 -0
- package/dist/services/workspace-config/service.js +162 -0
- package/dist/services/workspace-config/service.js.map +1 -0
- package/dist/services/workspace-config/types.d.ts +71 -0
- package/dist/services/workspace-config/types.d.ts.map +1 -0
- package/dist/services/workspace-config/types.js +2 -0
- package/dist/services/workspace-config/types.js.map +1 -0
- package/dist/session/manager.d.ts.map +1 -1
- package/dist/session/manager.js +10 -0
- package/dist/session/manager.js.map +1 -1
- package/dist/session/migration.d.ts.map +1 -1
- package/dist/session/migration.js +2 -1
- package/dist/session/migration.js.map +1 -1
- package/dist/session/session-memory.d.ts.map +1 -1
- package/dist/session/session-memory.js +7 -1
- package/dist/session/session-memory.js.map +1 -1
- package/dist/session/types.d.ts +1 -2
- package/dist/session/types.d.ts.map +1 -1
- package/dist/session/types.js +1 -22
- package/dist/session/types.js.map +1 -1
- package/dist/session/wire-format.d.ts +7 -0
- package/dist/session/wire-format.d.ts.map +1 -0
- package/dist/session/wire-format.generated.d.ts +95 -0
- package/dist/session/wire-format.generated.d.ts.map +1 -0
- package/dist/session/wire-format.generated.js +111 -0
- package/dist/session/wire-format.generated.js.map +1 -0
- package/dist/session/wire-format.js +145 -0
- package/dist/session/wire-format.js.map +1 -0
- package/dist/shared-memory/client.d.ts.map +1 -1
- package/dist/shared-memory/client.js +22 -22
- package/dist/shared-memory/client.js.map +1 -1
- package/dist/skills/artifact-metadata.d.ts +16 -0
- package/dist/skills/artifact-metadata.d.ts.map +1 -0
- package/dist/skills/artifact-metadata.js +86 -0
- package/dist/skills/artifact-metadata.js.map +1 -0
- package/dist/skills/loader.d.ts +2 -2
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js +1 -0
- package/dist/skills/loader.js.map +1 -1
- package/dist/skills/service-client.d.ts +42 -0
- package/dist/skills/service-client.d.ts.map +1 -0
- package/dist/skills/service-client.js +258 -0
- package/dist/skills/service-client.js.map +1 -0
- package/dist/skills/tool.d.ts +3 -0
- package/dist/skills/tool.d.ts.map +1 -1
- package/dist/skills/tool.js +67 -5
- package/dist/skills/tool.js.map +1 -1
- package/dist/telemetry/index.d.ts +4 -0
- package/dist/telemetry/index.d.ts.map +1 -1
- package/dist/telemetry/index.js +5 -0
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/maestro-event-bus.d.ts +440 -0
- package/dist/telemetry/maestro-event-bus.d.ts.map +1 -0
- package/dist/telemetry/maestro-event-bus.js +784 -0
- package/dist/telemetry/maestro-event-bus.js.map +1 -0
- package/dist/telemetry/maestro-event-catalog.d.ts +48 -0
- package/dist/telemetry/maestro-event-catalog.d.ts.map +1 -0
- package/dist/telemetry/maestro-event-catalog.js +69 -0
- package/dist/telemetry/maestro-event-catalog.js.map +1 -0
- package/dist/telemetry/maestro-platform-replay-fixture.d.ts +24 -0
- package/dist/telemetry/maestro-platform-replay-fixture.d.ts.map +1 -0
- package/dist/telemetry/maestro-platform-replay-fixture.js +400 -0
- package/dist/telemetry/maestro-platform-replay-fixture.js.map +1 -0
- package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts +29 -0
- package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts.map +1 -0
- package/dist/telemetry/maestro-publisher-conformance-fixture.js +240 -0
- package/dist/telemetry/maestro-publisher-conformance-fixture.js.map +1 -0
- package/dist/telemetry/meter-service-client.d.ts +0 -33
- package/dist/telemetry/meter-service-client.d.ts.map +1 -1
- package/dist/telemetry/meter-service-client.js +22 -50
- package/dist/telemetry/meter-service-client.js.map +1 -1
- package/dist/telemetry/turn-tracker.d.ts.map +1 -1
- package/dist/telemetry/turn-tracker.js +5 -5
- package/dist/telemetry/turn-tracker.js.map +1 -1
- package/dist/telemetry/wide-events.d.ts +8 -0
- package/dist/telemetry/wide-events.d.ts.map +1 -1
- package/dist/telemetry/wide-events.js +28 -0
- package/dist/telemetry/wide-events.js.map +1 -1
- package/dist/telemetry.d.ts +1 -1
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +14 -4
- package/dist/telemetry.js.map +1 -1
- package/dist/timeline/redaction.d.ts +5 -0
- package/dist/timeline/redaction.d.ts.map +1 -0
- package/dist/timeline/redaction.js +119 -0
- package/dist/timeline/redaction.js.map +1 -0
- package/dist/tools/ask-user.d.ts +26 -0
- package/dist/tools/ask-user.d.ts.map +1 -1
- package/dist/tools/ask-user.js +33 -1
- package/dist/tools/ask-user.js.map +1 -1
- package/dist/tools/background/task-types.d.ts +1 -1
- package/dist/tools/edit.d.ts +2 -0
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/edit.js +27 -7
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/index.d.ts +9 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/pipeline.d.ts.map +1 -1
- package/dist/tools/pipeline.js +16 -7
- package/dist/tools/pipeline.js.map +1 -1
- package/dist/tools/write.d.ts +2 -0
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/tools/write.js +24 -6
- package/dist/tools/write.js.map +1 -1
- package/dist/tracking/cost-tracker.d.ts +15 -12
- package/dist/tracking/cost-tracker.d.ts.map +1 -1
- package/dist/tracking/cost-tracker.js +29 -40
- package/dist/tracking/cost-tracker.js.map +1 -1
- package/dist/utils/checkpoint-profiler.d.ts +29 -0
- package/dist/utils/checkpoint-profiler.d.ts.map +1 -0
- package/dist/utils/checkpoint-profiler.js +118 -0
- package/dist/utils/checkpoint-profiler.js.map +1 -0
- package/dist/utils/downstream-http.d.ts +21 -0
- package/dist/utils/downstream-http.d.ts.map +1 -0
- package/dist/utils/downstream-http.js +151 -0
- package/dist/utils/downstream-http.js.map +1 -0
- package/dist/utils/downstream.d.ts +18 -0
- package/dist/utils/downstream.d.ts.map +1 -0
- package/dist/utils/downstream.js +47 -0
- package/dist/utils/downstream.js.map +1 -0
- package/dist/utils/logger.d.ts +3 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +12 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/oauth-http.d.ts +8 -0
- package/dist/utils/oauth-http.d.ts.map +1 -0
- package/dist/utils/oauth-http.js +41 -0
- package/dist/utils/oauth-http.js.map +1 -0
- package/dist/utils/path-utils.d.ts +2 -0
- package/dist/utils/path-utils.d.ts.map +1 -0
- package/dist/utils/path-utils.js +12 -0
- package/dist/utils/path-utils.js.map +1 -0
- package/dist/utils/path-validation.d.ts +1 -1
- package/dist/utils/path-validation.d.ts.map +1 -1
- package/dist/utils/path-validation.js +3 -3
- package/dist/utils/path-validation.js.map +1 -1
- package/dist/version.json +2 -2
- package/dist/web-server.d.ts +7 -1
- package/dist/web-server.d.ts.map +1 -1
- package/dist/web-server.js +117 -15
- package/dist/web-server.js.map +1 -1
- package/dist/webhooks/delivery.d.ts.map +1 -1
- package/dist/webhooks/delivery.js +9 -12
- package/dist/webhooks/delivery.js.map +1 -1
- package/node_modules/@bufbuild/protobuf/dist/cjs/descriptors.d.ts +12 -5
- package/node_modules/@bufbuild/protobuf/dist/cjs/from-binary.js +7 -7
- package/node_modules/@bufbuild/protobuf/dist/cjs/from-json.d.ts +1 -1
- package/node_modules/@bufbuild/protobuf/dist/cjs/from-json.js +1 -1
- package/node_modules/@bufbuild/protobuf/dist/cjs/reflect/path.d.ts +1 -1
- package/node_modules/@bufbuild/protobuf/dist/cjs/registry.js +24 -1
- package/node_modules/@bufbuild/protobuf/dist/cjs/to-json.d.ts +1 -1
- package/node_modules/@bufbuild/protobuf/dist/cjs/to-json.js +9 -10
- package/node_modules/@bufbuild/protobuf/dist/cjs/types.d.ts +1 -1
- package/node_modules/@bufbuild/protobuf/dist/cjs/wire/binary-encoding.d.ts +9 -7
- package/node_modules/@bufbuild/protobuf/dist/cjs/wire/binary-encoding.js +18 -8
- package/node_modules/@bufbuild/protobuf/dist/cjs/wire/text-encoding.d.ts +4 -2
- package/node_modules/@bufbuild/protobuf/dist/cjs/wire/text-encoding.js +8 -1
- package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/api_pb.d.ts +1 -1
- package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +2 -2
- package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.d.ts +37 -23
- package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.js +1 -1
- package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.d.ts +32 -36
- package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/go_features_pb.d.ts +65 -0
- package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/go_features_pb.js +38 -2
- package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.d.ts +5 -5
- package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/type_pb.d.ts +3 -3
- package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/wrappers.d.ts +10 -0
- package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/wrappers.js +24 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/descriptors.d.ts +12 -5
- package/node_modules/@bufbuild/protobuf/dist/esm/from-binary.js +7 -7
- package/node_modules/@bufbuild/protobuf/dist/esm/from-json.d.ts +1 -1
- package/node_modules/@bufbuild/protobuf/dist/esm/from-json.js +2 -2
- package/node_modules/@bufbuild/protobuf/dist/esm/reflect/path.d.ts +1 -1
- package/node_modules/@bufbuild/protobuf/dist/esm/registry.js +24 -1
- package/node_modules/@bufbuild/protobuf/dist/esm/to-json.d.ts +1 -1
- package/node_modules/@bufbuild/protobuf/dist/esm/to-json.js +10 -11
- package/node_modules/@bufbuild/protobuf/dist/esm/types.d.ts +1 -1
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.d.ts +9 -7
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.js +18 -8
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/text-encoding.d.ts +4 -2
- package/node_modules/@bufbuild/protobuf/dist/esm/wire/text-encoding.js +8 -1
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/api_pb.d.ts +1 -1
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +2 -2
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/descriptor_pb.d.ts +37 -23
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/descriptor_pb.js +1 -1
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/field_mask_pb.d.ts +32 -36
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/go_features_pb.d.ts +65 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/go_features_pb.js +37 -1
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/timestamp_pb.d.ts +5 -5
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/type_pb.d.ts +3 -3
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/wrappers.d.ts +10 -0
- package/node_modules/@bufbuild/protobuf/dist/esm/wkt/wrappers.js +23 -0
- package/node_modules/@bufbuild/protobuf/package.json +1 -1
- package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts +305 -2
- package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js +34 -4
- package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js.map +1 -1
- package/node_modules/@evalops/contracts/dist/index.d.ts +88 -0
- package/node_modules/@evalops/contracts/dist/index.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/index.js +2 -0
- package/node_modules/@evalops/contracts/dist/index.js.map +1 -1
- package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts +77 -77
- package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js +1 -1
- package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js.map +1 -1
- package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts +182 -0
- package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts.map +1 -0
- package/node_modules/@evalops/contracts/dist/runtime-app-server.js +83 -0
- package/node_modules/@evalops/contracts/dist/runtime-app-server.js.map +1 -0
- package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts +133 -0
- package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts.map +1 -0
- package/node_modules/@evalops/contracts/dist/runtime-server-request.js +68 -0
- package/node_modules/@evalops/contracts/dist/runtime-server-request.js.map +1 -0
- package/node_modules/@evalops/contracts/dist/schemas.d.ts +178 -0
- package/node_modules/@evalops/contracts/dist/schemas.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/schemas.js +165 -0
- package/node_modules/@evalops/contracts/dist/schemas.js.map +1 -1
- package/node_modules/@evalops/contracts/dist/typebox-utils.d.ts +2 -0
- package/node_modules/@evalops/contracts/dist/typebox-utils.d.ts.map +1 -0
- package/node_modules/@evalops/contracts/dist/typebox-utils.js +5 -0
- package/node_modules/@evalops/contracts/dist/typebox-utils.js.map +1 -0
- package/node_modules/@evalops/contracts/dist/validators.d.ts +4 -1
- package/node_modules/@evalops/contracts/dist/validators.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/validators.js +4 -1
- package/node_modules/@evalops/contracts/dist/validators.js.map +1 -1
- package/node_modules/@evalops/contracts/package.json +1 -1
- package/node_modules/@evalops/tui/package.json +1 -1
- package/node_modules/string-width/index.js +93 -9
- package/node_modules/string-width/package.json +1 -1
- package/package.json +32 -25
- package/dist/cli-tui/commands/grouped/auth-commands.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped/auth-commands.js.map +0 -1
- package/dist/cli-tui/commands/grouped/config-commands.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped/config-commands.js.map +0 -1
- package/dist/cli-tui/commands/grouped/diag-commands.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped/diag-commands.js.map +0 -1
- package/dist/cli-tui/commands/grouped/git-commands.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped/git-commands.js.map +0 -1
- package/dist/cli-tui/commands/grouped/index.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped/index.js.map +0 -1
- package/dist/cli-tui/commands/grouped/safety-commands.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped/safety-commands.js.map +0 -1
- package/dist/cli-tui/commands/grouped/session-commands.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped/session-commands.js.map +0 -1
- package/dist/cli-tui/commands/grouped/tools-commands.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped/tools-commands.js.map +0 -1
- package/dist/cli-tui/commands/grouped/ui-commands.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped/ui-commands.js.map +0 -1
- package/dist/cli-tui/commands/grouped/undo-commands.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped/undo-commands.js.map +0 -1
- package/dist/cli-tui/commands/grouped/usage-commands.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped/usage-commands.js.map +0 -1
- package/dist/cli-tui/commands/grouped/utils.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped/utils.js.map +0 -1
- package/dist/cli-tui/commands/grouped-command-handlers.d.ts.map +0 -1
- package/dist/cli-tui/commands/grouped-command-handlers.js +0 -135
- package/dist/cli-tui/commands/grouped-command-handlers.js.map +0 -1
- package/dist/cli-tui/tui-renderer/grouped-handlers-wiring.d.ts +0 -78
- package/dist/cli-tui/tui-renderer/grouped-handlers-wiring.d.ts.map +0 -1
- package/dist/cli-tui/tui-renderer/grouped-handlers-wiring.js +0 -129
- package/dist/cli-tui/tui-renderer/grouped-handlers-wiring.js.map +0 -1
- package/node_modules/@evalops/memory/dist/client.d.ts +0 -94
- package/node_modules/@evalops/memory/dist/client.js +0 -503
- package/node_modules/@evalops/memory/gen/proto/dist/memory/v1/memory_pb.d.ts +0 -608
- package/node_modules/@evalops/memory/gen/proto/dist/memory/v1/memory_pb.js +0 -187
- package/node_modules/@evalops/memory/package.json +0 -26
- /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);
|
package/dist/cli/args.js.map
CHANGED
|
@@ -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 @@
|
|
|
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
|
|
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 @@
|
|
|
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"}
|