@evalops/maestro 0.10.22 → 0.10.24
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 +4 -4
- package/dist/agent/agent.d.ts +2 -2
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +1 -1
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/keys.d.ts +2 -5
- package/dist/agent/keys.d.ts.map +1 -1
- package/dist/agent/keys.js +4 -5
- package/dist/agent/keys.js.map +1 -1
- package/dist/agent/modes.d.ts +2 -2
- package/dist/agent/modes.d.ts.map +1 -1
- package/dist/agent/modes.js +6 -7
- package/dist/agent/modes.js.map +1 -1
- package/dist/agent/providers/anthropic.d.ts.map +1 -1
- package/dist/agent/providers/anthropic.js +4 -4
- package/dist/agent/providers/anthropic.js.map +1 -1
- package/dist/agent/providers/google.js +1 -1
- package/dist/agent/swarm/executor.d.ts +2 -0
- package/dist/agent/swarm/executor.d.ts.map +1 -1
- package/dist/agent/swarm/executor.js +208 -35
- package/dist/agent/swarm/executor.js.map +1 -1
- package/dist/agent/swarm/types.d.ts +2 -0
- package/dist/agent/swarm/types.d.ts.map +1 -1
- package/dist/agent/swarm/types.js.map +1 -1
- package/dist/agent/tool-capability-types.d.ts +36 -0
- package/dist/agent/tool-capability-types.d.ts.map +1 -0
- package/dist/agent/tool-capability-types.js +2 -0
- package/dist/agent/tool-capability-types.js.map +1 -0
- package/dist/agent/transport/tool-execution-bridge.d.ts +13 -0
- package/dist/agent/transport/tool-execution-bridge.d.ts.map +1 -1
- package/dist/agent/transport/tool-execution-bridge.js +28 -15
- package/dist/agent/transport/tool-execution-bridge.js.map +1 -1
- package/dist/agent/transport/transport-utils.d.ts.map +1 -1
- package/dist/agent/transport/transport-utils.js +2 -3
- package/dist/agent/transport/transport-utils.js.map +1 -1
- package/dist/agent/transport.js +1 -1
- package/dist/agent/transport.js.map +1 -1
- package/dist/agent/type-guards.d.ts +1 -1
- package/dist/agent/type-guards.js +1 -1
- package/dist/agent/type-guards.js.map +1 -1
- package/dist/agent/types.d.ts +5 -3
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js +2 -2
- package/dist/agent/types.js.map +1 -1
- package/dist/app-server/daemon-lifecycle-api.d.ts +31 -0
- package/dist/app-server/daemon-lifecycle-api.d.ts.map +1 -0
- package/dist/app-server/daemon-lifecycle-api.js +259 -0
- package/dist/app-server/daemon-lifecycle-api.js.map +1 -0
- package/dist/app-server/external-agent-import-api.d.ts +30 -0
- package/dist/app-server/external-agent-import-api.d.ts.map +1 -0
- package/dist/app-server/external-agent-import-api.js +553 -0
- package/dist/app-server/external-agent-import-api.js.map +1 -0
- package/dist/app-server/host-control-api.d.ts +30 -0
- package/dist/app-server/host-control-api.d.ts.map +1 -0
- package/dist/app-server/host-control-api.js +343 -0
- package/dist/app-server/host-control-api.js.map +1 -0
- package/dist/app-server/in-process-client.d.ts +2 -2
- package/dist/app-server/in-process-client.d.ts.map +1 -1
- package/dist/app-server/in-process-client.js.map +1 -1
- package/dist/app-server/network-governance-api.d.ts +26 -0
- package/dist/app-server/network-governance-api.d.ts.map +1 -0
- package/dist/app-server/network-governance-api.js +476 -0
- package/dist/app-server/network-governance-api.js.map +1 -0
- package/dist/app-server/plugin-bundle-api.d.ts +17 -0
- package/dist/app-server/plugin-bundle-api.d.ts.map +1 -0
- package/dist/app-server/plugin-bundle-api.js +219 -0
- package/dist/app-server/plugin-bundle-api.js.map +1 -0
- package/dist/app-server/policy-control-api.d.ts +14 -0
- package/dist/app-server/policy-control-api.d.ts.map +1 -0
- package/dist/app-server/policy-control-api.js +200 -0
- package/dist/app-server/policy-control-api.js.map +1 -0
- package/dist/app-server/protocol-modes-api.d.ts +22 -0
- package/dist/app-server/protocol-modes-api.d.ts.map +1 -0
- package/dist/app-server/protocol-modes-api.js +124 -0
- package/dist/app-server/protocol-modes-api.js.map +1 -0
- package/dist/app-server/sandbox-proof-api.d.ts +21 -0
- package/dist/app-server/sandbox-proof-api.d.ts.map +1 -0
- package/dist/app-server/sandbox-proof-api.js +127 -0
- package/dist/app-server/sandbox-proof-api.js.map +1 -0
- package/dist/app-server/session-api.d.ts +93 -3
- package/dist/app-server/session-api.d.ts.map +1 -1
- package/dist/app-server/session-api.js +706 -18
- package/dist/app-server/session-api.js.map +1 -1
- package/dist/audit/logger.d.ts +1 -1
- package/dist/bootstrap/auth-setup.d.ts.map +1 -1
- package/dist/bootstrap/auth-setup.js +17 -2
- package/dist/bootstrap/auth-setup.js.map +1 -1
- package/dist/bootstrap/model-resolution-setup.d.ts.map +1 -1
- package/dist/bootstrap/model-resolution-setup.js +19 -4
- package/dist/bootstrap/model-resolution-setup.js.map +1 -1
- package/dist/cli/args.d.ts +2 -2
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +2 -2
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/commands/a2a.d.ts.map +1 -1
- package/dist/cli/commands/a2a.js +226 -14
- package/dist/cli/commands/a2a.js.map +1 -1
- package/dist/cli/commands/anthropic.d.ts +1 -1
- package/dist/cli/commands/anthropic.d.ts.map +1 -1
- package/dist/cli/commands/anthropic.js +3 -68
- package/dist/cli/commands/anthropic.js.map +1 -1
- package/dist/cli/commands/modes.js +1 -1
- package/dist/cli/commands/modes.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +5 -7
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/rpc-mode.d.ts +1 -1
- package/dist/cli/rpc-mode.js +1 -1
- package/dist/cli/rpc-mode.js.map +1 -1
- package/dist/cli/session.js +1 -1
- package/dist/cli/session.js.map +1 -1
- package/dist/cli-tui/commands/command-catalog.d.ts.map +1 -1
- package/dist/cli-tui/commands/command-catalog.js +7 -12
- package/dist/cli-tui/commands/command-catalog.js.map +1 -1
- package/dist/cli-tui/commands/subcommands/auth-commands.d.ts +1 -1
- package/dist/cli-tui/commands/subcommands/auth-commands.d.ts.map +1 -1
- package/dist/cli-tui/commands/subcommands/auth-commands.js +4 -12
- package/dist/cli-tui/commands/subcommands/auth-commands.js.map +1 -1
- package/dist/cli-tui/custom-editor.d.ts +1 -1
- package/dist/cli-tui/custom-editor.js +2 -2
- package/dist/cli-tui/custom-editor.js.map +1 -1
- package/dist/cli-tui/oauth/oauth-flow-controller.d.ts.map +1 -1
- package/dist/cli-tui/oauth/oauth-flow-controller.js +19 -23
- package/dist/cli-tui/oauth/oauth-flow-controller.js.map +1 -1
- package/dist/cli-tui/selectors/model-selector.d.ts.map +1 -1
- package/dist/cli-tui/selectors/model-selector.js +0 -1
- package/dist/cli-tui/selectors/model-selector.js.map +1 -1
- package/dist/cli-tui/selectors/oauth-selector-view.d.ts +2 -2
- package/dist/cli-tui/selectors/oauth-selector-view.d.ts.map +1 -1
- package/dist/cli-tui/selectors/oauth-selector-view.js.map +1 -1
- package/dist/cli-tui/selectors/oauth-selector.d.ts +2 -2
- package/dist/cli-tui/selectors/oauth-selector.d.ts.map +1 -1
- package/dist/cli-tui/selectors/oauth-selector.js +3 -4
- package/dist/cli-tui/selectors/oauth-selector.js.map +1 -1
- package/dist/cli-tui/tui-renderer/mcp-events-setup.js +1 -1
- package/dist/cli-tui/tui-renderer/mcp-events-setup.js.map +1 -1
- package/dist/cli-tui/tui-renderer.js +2 -2
- package/dist/cli-tui/tui-renderer.js.map +1 -1
- package/dist/cli-tui/utils/footer-utils.d.ts +1 -1
- package/dist/cli-tui/utils/footer-utils.js +1 -1
- package/dist/cli-tui/utils/footer-utils.js.map +1 -1
- package/dist/cli.js +15171 -14298
- package/dist/commands/prompts.d.ts +1 -1
- package/dist/commands/prompts.js +1 -1
- package/dist/commands/prompts.js.map +1 -1
- package/dist/config/constants.d.ts +2 -2
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +2 -2
- package/dist/config/constants.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.js +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/toml-config.js +3 -3
- package/dist/config/toml-config.js.map +1 -1
- package/dist/db/client.d.ts +2 -2
- package/dist/db/client.js +2 -2
- package/dist/db/client.js.map +1 -1
- package/dist/db/migrate.d.ts +1 -1
- package/dist/db/migrate.js +1 -1
- package/dist/db/migrate.js.map +1 -1
- package/dist/db/schema.d.ts +2 -2
- package/dist/db/schema.js +1 -1
- package/dist/db/schema.js.map +1 -1
- package/dist/errors/index.d.ts +2 -2
- package/dist/errors/index.js +2 -2
- package/dist/errors/index.js.map +1 -1
- package/dist/main.d.ts +4 -5
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +17 -14
- package/dist/main.js.map +1 -1
- package/dist/mcp/config.d.ts +15 -2
- package/dist/mcp/config.d.ts.map +1 -1
- package/dist/mcp/config.js +50 -26
- package/dist/mcp/config.js.map +1 -1
- package/dist/mcp/fathom-cua.d.ts.map +1 -1
- package/dist/mcp/fathom-cua.js +10 -0
- package/dist/mcp/fathom-cua.js.map +1 -1
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +32 -1
- package/dist/mcp/manager.js.map +1 -1
- package/dist/mcp/tool-bridge.d.ts.map +1 -1
- package/dist/mcp/tool-bridge.js +12 -3
- package/dist/mcp/tool-bridge.js.map +1 -1
- package/dist/mcp/tool-capabilities.d.ts +5 -0
- package/dist/mcp/tool-capabilities.d.ts.map +1 -0
- package/dist/mcp/tool-capabilities.js +271 -0
- package/dist/mcp/tool-capabilities.js.map +1 -0
- package/dist/mcp/types.d.ts +6 -1
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/mcp/types.js.map +1 -1
- package/dist/models/config-loader.d.ts +1 -1
- package/dist/models/factory-integration.d.ts +1 -1
- package/dist/models/factory-integration.js +1 -1
- package/dist/models/factory-integration.js.map +1 -1
- package/dist/node_modules/@evalops/contracts/dist/artifacts.d.ts +58 -0
- package/dist/node_modules/@evalops/contracts/dist/artifacts.d.ts.map +1 -0
- package/dist/node_modules/@evalops/contracts/dist/artifacts.js +191 -0
- package/dist/node_modules/@evalops/contracts/dist/artifacts.js.map +1 -0
- package/dist/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts +10 -10
- package/dist/node_modules/@evalops/contracts/dist/index.d.ts +4 -3
- package/dist/node_modules/@evalops/contracts/dist/index.d.ts.map +1 -1
- package/dist/node_modules/@evalops/contracts/dist/index.js +3 -2
- package/dist/node_modules/@evalops/contracts/dist/index.js.map +1 -1
- package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts +1182 -14
- package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts.map +1 -1
- package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.js +450 -1
- package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.js.map +1 -1
- package/dist/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts +1 -1
- package/dist/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts +3 -3
- package/dist/node_modules/@evalops/contracts/package.json +1 -1
- package/dist/node_modules/@evalops/tui/package.json +1 -1
- package/dist/oauth/connectors.d.ts +2 -2
- package/dist/oauth/connectors.d.ts.map +1 -1
- package/dist/oauth/connectors.js +3 -5
- package/dist/oauth/connectors.js.map +1 -1
- package/dist/oauth/github-copilot.d.ts +1 -1
- package/dist/oauth/github-copilot.js +1 -1
- package/dist/oauth/github-copilot.js.map +1 -1
- package/dist/oauth/index.d.ts +10 -8
- package/dist/oauth/index.d.ts.map +1 -1
- package/dist/oauth/index.js +54 -31
- package/dist/oauth/index.js.map +1 -1
- package/dist/oauth/openai.d.ts +1 -1
- package/dist/oauth/openai.js +2 -2
- package/dist/oauth/openai.js.map +1 -1
- package/dist/platform/a2a-completion-audit.d.ts +41 -0
- package/dist/platform/a2a-completion-audit.d.ts.map +1 -0
- package/dist/platform/a2a-completion-audit.js +177 -0
- package/dist/platform/a2a-completion-audit.js.map +1 -0
- package/dist/platform/a2a-task-ledger.d.ts.map +1 -1
- package/dist/platform/a2a-task-ledger.js +17 -0
- package/dist/platform/a2a-task-ledger.js.map +1 -1
- package/dist/platform/a2a-telemetry-inspect.d.ts +58 -0
- package/dist/platform/a2a-telemetry-inspect.d.ts.map +1 -0
- package/dist/platform/a2a-telemetry-inspect.js +224 -0
- package/dist/platform/a2a-telemetry-inspect.js.map +1 -0
- package/dist/platform/agent-registry-client.d.ts +8 -0
- package/dist/platform/agent-registry-client.d.ts.map +1 -1
- package/dist/platform/agent-registry-client.js +9 -1
- package/dist/platform/agent-registry-client.js.map +1 -1
- package/dist/providers/api-keys.d.ts +2 -2
- package/dist/providers/api-keys.js +2 -2
- package/dist/providers/api-keys.js.map +1 -1
- package/dist/providers/auth.d.ts +3 -6
- package/dist/providers/auth.d.ts.map +1 -1
- package/dist/providers/auth.js +1 -40
- package/dist/providers/auth.js.map +1 -1
- package/dist/rpc/index.d.ts +2 -2
- package/dist/rpc/index.js +2 -2
- package/dist/rpc/index.js.map +1 -1
- package/dist/rpc/rpc-types.d.ts +1 -1
- package/dist/rpc/rpc-types.js +1 -1
- package/dist/rpc/rpc-types.js.map +1 -1
- package/dist/safety/nested-agent-guard.js +1 -1
- package/dist/safety/nested-agent-guard.js.map +1 -1
- package/dist/safety/policy.d.ts +2 -2
- package/dist/safety/policy.js +2 -2
- package/dist/safety/policy.js.map +1 -1
- package/dist/safety/validators/network-policy-validator.d.ts +8 -0
- package/dist/safety/validators/network-policy-validator.d.ts.map +1 -1
- package/dist/safety/validators/network-policy-validator.js +29 -4
- package/dist/safety/validators/network-policy-validator.js.map +1 -1
- package/dist/sandbox/local-sandbox.d.ts +1 -1
- package/dist/sandbox/local-sandbox.js +1 -1
- package/dist/sandbox/local-sandbox.js.map +1 -1
- package/dist/server/app-context.d.ts +2 -0
- package/dist/server/app-context.d.ts.map +1 -1
- package/dist/server/app-context.js.map +1 -1
- package/dist/server/handlers/attachments.d.ts.map +1 -1
- package/dist/server/handlers/attachments.js +1 -0
- package/dist/server/handlers/attachments.js.map +1 -1
- package/dist/server/handlers/models.d.ts.map +1 -1
- package/dist/server/handlers/models.js +3 -1
- package/dist/server/handlers/models.js.map +1 -1
- package/dist/server/handlers/session-artifacts.d.ts.map +1 -1
- package/dist/server/handlers/session-artifacts.js +13 -74
- package/dist/server/handlers/session-artifacts.js.map +1 -1
- package/dist/server/handlers/session-attachments.d.ts.map +1 -1
- package/dist/server/handlers/session-attachments.js +2 -0
- package/dist/server/handlers/session-attachments.js.map +1 -1
- package/dist/server/handlers/sessions.js +1 -1
- package/dist/server/handlers/sessions.js.map +1 -1
- package/dist/server/handlers/status.d.ts +2 -0
- package/dist/server/handlers/status.d.ts.map +1 -1
- package/dist/server/handlers/status.js +3 -2
- package/dist/server/handlers/status.js.map +1 -1
- package/dist/server/headless-runtime-service.d.ts.map +1 -1
- package/dist/server/headless-runtime-service.js +32 -3
- package/dist/server/headless-runtime-service.js.map +1 -1
- package/dist/server/hosted-session-manager.d.ts +2 -0
- package/dist/server/hosted-session-manager.d.ts.map +1 -1
- package/dist/server/hosted-session-manager.js +9 -0
- package/dist/server/hosted-session-manager.js.map +1 -1
- package/dist/server/model-selection.d.ts.map +1 -1
- package/dist/server/model-selection.js +9 -1
- package/dist/server/model-selection.js.map +1 -1
- package/dist/server/rate-limiter.d.ts +1 -1
- package/dist/server/rate-limiter.js +1 -1
- package/dist/server/rate-limiter.js.map +1 -1
- package/dist/server/router.d.ts +2 -2
- package/dist/server/router.js.map +1 -1
- package/dist/server/session-serialization.d.ts +9 -9
- package/dist/server/session-serialization.js +15 -15
- package/dist/server/session-serialization.js.map +1 -1
- package/dist/session/manager.d.ts +5 -0
- package/dist/session/manager.d.ts.map +1 -1
- package/dist/session/manager.js +56 -8
- package/dist/session/manager.js.map +1 -1
- package/dist/session/session-catalog.d.ts +2 -0
- package/dist/session/session-catalog.d.ts.map +1 -1
- package/dist/session/session-catalog.js +6 -0
- package/dist/session/session-catalog.js.map +1 -1
- package/dist/session/session-context.d.ts +2 -0
- package/dist/session/session-context.d.ts.map +1 -1
- package/dist/session/session-context.js +15 -0
- package/dist/session/session-context.js.map +1 -1
- package/dist/session/types.d.ts +7 -0
- package/dist/session/types.d.ts.map +1 -1
- package/dist/session/types.js.map +1 -1
- package/dist/session/wire-format.generated.d.ts +1 -0
- package/dist/session/wire-format.generated.d.ts.map +1 -1
- package/dist/session/wire-format.generated.js +1 -0
- package/dist/session/wire-format.generated.js.map +1 -1
- package/dist/shared-memory/contract.d.ts +4 -4
- package/dist/shared-memory/contract.js +2 -2
- package/dist/shared-memory/contract.js.map +1 -1
- package/dist/telemetry/index.d.ts +2 -2
- package/dist/telemetry/index.d.ts.map +1 -1
- package/dist/telemetry/index.js +2 -2
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/maestro-event-bus.d.ts +57 -0
- package/dist/telemetry/maestro-event-bus.d.ts.map +1 -1
- package/dist/telemetry/maestro-event-bus.js +59 -1
- package/dist/telemetry/maestro-event-bus.js.map +1 -1
- package/dist/telemetry/maestro-event-catalog.d.ts +17 -1
- package/dist/telemetry/maestro-event-catalog.d.ts.map +1 -1
- package/dist/telemetry/maestro-event-catalog.js +24 -0
- package/dist/telemetry/maestro-event-catalog.js.map +1 -1
- package/dist/telemetry/mcp-beacon.d.ts +2 -0
- package/dist/telemetry/mcp-beacon.d.ts.map +1 -1
- package/dist/telemetry/mcp-beacon.js +15 -0
- package/dist/telemetry/mcp-beacon.js.map +1 -1
- package/dist/telemetry/metrics.d.ts +62 -0
- package/dist/telemetry/metrics.d.ts.map +1 -1
- package/dist/telemetry/metrics.js +84 -0
- package/dist/telemetry/metrics.js.map +1 -1
- package/dist/telemetry.d.ts +44 -0
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +84 -2
- package/dist/telemetry.js.map +1 -1
- package/dist/theme/theme-loader.js +2 -2
- package/dist/theme/theme-loader.js.map +1 -1
- package/dist/theme/theme-schema.json +2 -2
- package/dist/theme/theme.d.ts +1 -1
- package/dist/theme/theme.js.map +1 -1
- package/dist/tools/background/task-types.d.ts +1 -1
- package/dist/tools/extract-document.d.ts +1 -0
- package/dist/tools/extract-document.d.ts.map +1 -1
- package/dist/tools/extract-document.js +2 -1
- package/dist/tools/extract-document.js.map +1 -1
- package/dist/tools/index.d.ts +55 -55
- package/dist/tools/index.js +1 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/tool-dsl.d.ts +1 -1
- package/dist/tools/tool-dsl.js +1 -1
- package/dist/tools/tool-dsl.js.map +1 -1
- package/dist/utils/document-extractor.d.ts +1 -0
- package/dist/utils/document-extractor.d.ts.map +1 -1
- package/dist/utils/document-extractor.js +320 -40
- package/dist/utils/document-extractor.js.map +1 -1
- package/dist/utils/logger.d.ts +1 -1
- package/dist/utils/logger.js +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/version.json +2 -2
- package/dist/web-server.d.ts +1 -1
- package/dist/web-server.d.ts.map +1 -1
- package/dist/web-server.js +12 -8
- package/dist/web-server.js.map +1 -1
- package/package.json +4 -2
- package/dist/oauth/anthropic.d.ts +0 -17
- package/dist/oauth/anthropic.d.ts.map +0 -1
- package/dist/oauth/anthropic.js +0 -81
- package/dist/oauth/anthropic.js.map +0 -1
- package/dist/providers/anthropic-auth.d.ts +0 -75
- package/dist/providers/anthropic-auth.d.ts.map +0 -1
- package/dist/providers/anthropic-auth.js +0 -221
- package/dist/providers/anthropic-auth.js.map +0 -1
package/dist/agent/keys.d.ts
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
type
|
|
2
|
-
apiKey?: string;
|
|
3
|
-
authType?: "api-key" | "anthropic-oauth";
|
|
4
|
-
};
|
|
1
|
+
type SupportedStoredAuthType = "api-key";
|
|
5
2
|
export declare function getStoredCredentials(providerId: string): {
|
|
6
3
|
apiKey?: string;
|
|
7
|
-
authType?:
|
|
4
|
+
authType?: SupportedStoredAuthType;
|
|
8
5
|
};
|
|
9
6
|
export {};
|
|
10
7
|
//# sourceMappingURL=keys.d.ts.map
|
package/dist/agent/keys.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/agent/keys.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/agent/keys.ts"],"names":[],"mappings":"AAUA,KAAK,uBAAuB,GAAG,SAAS,CAAC;AAgDzC,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,uBAAuB,CAAC;CACnC,CA6CA"}
|
package/dist/agent/keys.js
CHANGED
|
@@ -75,11 +75,10 @@ export function getStoredCredentials(providerId) {
|
|
|
75
75
|
for (const store of stores) {
|
|
76
76
|
const cred = store[providerId];
|
|
77
77
|
if (cred?.apiKey) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
: undefined;
|
|
78
|
+
if (cred.authType && cred.authType !== "api-key") {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
const authType = cred.authType === "api-key" ? "api-key" : undefined;
|
|
83
82
|
return { apiKey: cred.apiKey, authType };
|
|
84
83
|
}
|
|
85
84
|
}
|
package/dist/agent/keys.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/agent/keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/agent/keys.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\nimport { join, resolve, sep } from \"node:path\";\nimport { PATHS } from \"../config/constants.js\";\nimport { getHomeDir, resolveEnvPath } from \"../utils/path-expansion.js\";\n\ntype StoredKey = {\n\tapiKey?: string;\n\tauthType?: string;\n};\n\ntype SupportedStoredAuthType = \"api-key\";\n\ntype KeyStore = Record<string, StoredKey>;\n\nconst DEFAULT_KEYS_PATH = join(PATHS.MAESTRO_HOME, \"keys.json\");\nconst PROJECT_KEYS_PATH = join(process.cwd(), \".maestro\", \"keys.json\");\n\nfunction getFactoryPaths(): { keysPath: string; configPath: string } {\n\tconst factoryHome =\n\t\tresolveEnvPath(process.env.FACTORY_HOME) ?? join(getHomeDir(), \".factory\");\n\treturn {\n\t\tkeysPath: join(factoryHome, \"keys.json\"),\n\t\tconfigPath: join(factoryHome, \"config.json\"),\n\t};\n}\n\nfunction sanitizePath(pathOverride?: string): string | undefined {\n\tconst candidate =\n\t\tpathOverride ??\n\t\tresolveEnvPath(process.env.MAESTRO_KEYS_PATH) ??\n\t\tDEFAULT_KEYS_PATH;\n\tif (!candidate) return undefined;\n\tconst resolved = resolve(candidate);\n\tconst allowedRoots = [getHomeDir(), PATHS.MAESTRO_HOME, process.cwd()].map(\n\t\t(p) => resolve(p),\n\t);\n\t// Use proper path containment check - require path separator after root\n\t// to prevent /home/user-evil matching when root is /home/user\n\tconst isAllowed = allowedRoots.some((root) => {\n\t\tif (resolved === root) return true;\n\t\treturn resolved.startsWith(root + sep);\n\t});\n\tif (!isAllowed) return undefined;\n\treturn resolved;\n}\n\nfunction loadStore(pathOverride?: string): KeyStore {\n\tconst path = sanitizePath(pathOverride);\n\tif (!path || !existsSync(path)) return {};\n\ttry {\n\t\tconst raw = readFileSync(path, \"utf8\");\n\t\tconst parsed = JSON.parse(raw) as KeyStore;\n\t\treturn parsed ?? {};\n\t} catch {\n\t\treturn {};\n\t}\n}\n\nexport function getStoredCredentials(providerId: string): {\n\tapiKey?: string;\n\tauthType?: SupportedStoredAuthType;\n} {\n\tconst stores = [loadStore(PROJECT_KEYS_PATH), loadStore()];\n\n\t// Factory keys.json (if present)\n\tconst { keysPath: factoryKeysPath, configPath: factoryConfigPath } =\n\t\tgetFactoryPaths();\n\tstores.push(loadStore(factoryKeysPath));\n\n\t// Factory config.json (api_keys map or custom_models api_key)\n\tif (existsSync(factoryConfigPath)) {\n\t\ttry {\n\t\t\tconst raw = readFileSync(factoryConfigPath, \"utf8\");\n\t\t\tconst parsed = JSON.parse(raw) as {\n\t\t\t\tapi_keys?: Record<string, string>;\n\t\t\t\tcustom_models?: Array<{ provider?: string; api_key?: string }>;\n\t\t\t};\n\t\t\tconst apiKeys = parsed.api_keys ?? {};\n\t\t\tconst models = parsed.custom_models ?? [];\n\t\t\tconst aggregated: Record<string, StoredKey> = {};\n\t\t\tfor (const [prov, key] of Object.entries(apiKeys)) {\n\t\t\t\tif (key) aggregated[prov] = { apiKey: key, authType: \"api-key\" };\n\t\t\t}\n\t\t\tfor (const entry of models) {\n\t\t\t\tconst prov = entry.provider ?? \"factory\";\n\t\t\t\tif (entry.api_key && !aggregated[prov]) {\n\t\t\t\t\taggregated[prov] = { apiKey: entry.api_key, authType: \"api-key\" };\n\t\t\t\t}\n\t\t\t}\n\t\t\tstores.push(aggregated);\n\t\t} catch {\n\t\t\t// ignore malformed factory config\n\t\t}\n\t}\n\n\tfor (const store of stores) {\n\t\tconst cred = store[providerId];\n\t\tif (cred?.apiKey) {\n\t\t\tif (cred.authType && cred.authType !== \"api-key\") {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst authType = cred.authType === \"api-key\" ? \"api-key\" : undefined;\n\t\t\treturn { apiKey: cred.apiKey, authType };\n\t\t}\n\t}\n\treturn {};\n}\n"]}
|
package/dist/agent/modes.d.ts
CHANGED
|
@@ -175,10 +175,10 @@ export declare const MODEL_BY_TIER: Record<ModelTier, ModelMapping>;
|
|
|
175
175
|
* Get the model ID for a given tier and provider.
|
|
176
176
|
*
|
|
177
177
|
* @param tier - The capability tier (opus/sonnet/haiku)
|
|
178
|
-
* @param provider - The LLM provider (defaults to
|
|
178
|
+
* @param provider - The LLM provider (defaults to openai-codex)
|
|
179
179
|
* @returns The concrete model ID string for the provider
|
|
180
180
|
*
|
|
181
|
-
* Falls back to the
|
|
181
|
+
* Falls back to the OpenAI Codex model if the requested provider
|
|
182
182
|
* doesn't have a mapping for the tier.
|
|
183
183
|
*/
|
|
184
184
|
export declare function getModelForTier(tier: ModelTier, provider?: ModelProvider): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modes.d.ts","sourceRoot":"","sources":["../../src/agent/modes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"modes.d.ts","sourceRoot":"","sources":["../../src/agent/modes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKxD;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GAClB,OAAO,GACP,MAAM,GACN,MAAM,GACN,QAAQ,GACR,UAAU,GACV,QAAQ,CAAC;AAEZ;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEpD,gEAAgE;AAChE,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,QAAQ,GAAG,cAAc,GAAG,QAAQ,CAAC;AAE/E,iEAAiE;AACjE,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAElE,sDAAsD;AACtD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,gEAAgE;AAChE,MAAM,WAAW,wBAAwB;IACxC,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,eAAe,EAAE,eAAe,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,cAAc,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IAC1B,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,WAAW,EAAE,SAAS,CAAC;IACvB,oDAAoD;IACpD,YAAY,EAAE,SAAS,CAAC;IACxB,2CAA2C;IAC3C,cAAc,EAAE,OAAO,CAAC;IACxB,6EAA6E;IAC7E,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,uCAAuC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,OAAO,EAAE,OAAO,CAAC;IACjB,kEAAkE;IAClE,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC5D,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AASD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,UAAU,CAmItD,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,YAAY,CAsBzD,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC9B,IAAI,EAAE,SAAS,EACf,QAAQ,GAAE,aAA8B,GACtC,MAAM,CAGR;AAkCD;;GAEG;AACH,wBAAgB,uBAAuB,CACtC,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,YAAY,EAClB,QAAQ,GAAE,aAA8B,GACtC,wBAAwB,CAuC1B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,CAEzD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC9B,IAAI,EAAE,SAAS,EACf,QAAQ,GAAE,aAA8B,GACtC,MAAM,CAGR;AAWD;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,SAAS,CAE1C;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAWpD;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAM3D;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,IAAI,SAAS,CAO1C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAGzD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE;IACrC,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC,CAOjD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,WAAW,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,CAkE9D"}
|
package/dist/agent/modes.js
CHANGED
|
@@ -235,16 +235,15 @@ export const MODEL_BY_TIER = {
|
|
|
235
235
|
* Get the model ID for a given tier and provider.
|
|
236
236
|
*
|
|
237
237
|
* @param tier - The capability tier (opus/sonnet/haiku)
|
|
238
|
-
* @param provider - The LLM provider (defaults to
|
|
238
|
+
* @param provider - The LLM provider (defaults to openai-codex)
|
|
239
239
|
* @returns The concrete model ID string for the provider
|
|
240
240
|
*
|
|
241
|
-
* Falls back to the
|
|
241
|
+
* Falls back to the OpenAI Codex model if the requested provider
|
|
242
242
|
* doesn't have a mapping for the tier.
|
|
243
243
|
*/
|
|
244
|
-
export function getModelForTier(tier, provider = "
|
|
244
|
+
export function getModelForTier(tier, provider = "openai-codex") {
|
|
245
245
|
const mapping = MODEL_BY_TIER[tier];
|
|
246
|
-
|
|
247
|
-
return mapping[provider] ?? mapping.anthropic;
|
|
246
|
+
return mapping[provider] ?? mapping["openai-codex"] ?? "gpt-5.5";
|
|
248
247
|
}
|
|
249
248
|
function isModelTier(model) {
|
|
250
249
|
return model in MODEL_BY_TIER;
|
|
@@ -272,7 +271,7 @@ function defaultReasoningEffort(config) {
|
|
|
272
271
|
/**
|
|
273
272
|
* Resolve the concrete model/provider a subagent should use in a mode.
|
|
274
273
|
*/
|
|
275
|
-
export function resolveSubagentDispatch(mode, type, provider = "
|
|
274
|
+
export function resolveSubagentDispatch(mode, type, provider = "openai-codex") {
|
|
276
275
|
const config = getModeConfig(mode);
|
|
277
276
|
const dispatch = config.subagents?.[type];
|
|
278
277
|
const source = dispatch ? "mode" : "fallback";
|
|
@@ -318,7 +317,7 @@ export function getModeConfig(mode) {
|
|
|
318
317
|
/**
|
|
319
318
|
* Get the recommended model for a mode and provider.
|
|
320
319
|
*/
|
|
321
|
-
export function getModelForMode(mode, provider = "
|
|
320
|
+
export function getModelForMode(mode, provider = "openai-codex") {
|
|
322
321
|
const config = getModeConfig(mode);
|
|
323
322
|
return getModelForTier(config.primaryTier, provider);
|
|
324
323
|
}
|
package/dist/agent/modes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modes.js","sourceRoot":"","sources":["../../src/agent/modes.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Agent Modes - Different operating modes for the agent.\n *\n * This module implements a tiered model selection system inspired by Amp's\n * smart/rush/free modes. Each mode represents a different balance between\n * response quality, speed, and cost:\n *\n * - **smart**: Uses the highest capability model (opus) for complex reasoning\n * tasks. Enables thinking/reasoning mode with extended context windows.\n * Best for: Architecture decisions, complex refactoring, debugging.\n *\n * - **rush**: Uses mid-tier models (sonnet) for faster responses. Disables\n * thinking mode to reduce latency. Best for: Quick fixes, simple edits,\n * straightforward code generation.\n *\n * - **free**: Uses the most cost-effective models (haiku) with minimal\n * features. Best for: Simple questions, file searches, documentation\n * lookups where speed and cost matter more than depth.\n *\n * - **custom**: User-defined configuration allowing fine-tuned control\n * over model selection and feature toggles.\n *\n * ## Architecture\n *\n * The mode system uses a two-level abstraction:\n * 1. **ModelTier** (opus/sonnet/haiku): Logical capability levels\n * 2. **ModelMapping**: Provider-specific model IDs for each tier\n *\n * This allows the same mode configuration to work across different\n * LLM providers (Anthropic, OpenAI, Google) by mapping tiers to\n * provider-specific model identifiers.\n *\n * ## Usage\n *\n * ```typescript\n * // Set mode based on task\n * setCurrentMode(suggestMode(\"refactor the auth module\")); // → \"smart\"\n *\n * // Get model for current provider\n * const model = getModelForMode(getCurrentMode(), \"anthropic\");\n * ```\n *\n * ## Environment Variables\n *\n * - `MAESTRO_MODE`: Override the default mode at startup\n */\n\nimport { recordStagedRolloutSurfaceUsage } from \"../telemetry.js\";\nimport { createLogger } from \"../utils/logger.js\";\nimport type { SubagentType } from \"./subagent-specs.js\";\n\n// Logger scoped to agent modes for debugging mode transitions\nconst logger = createLogger(\"agent:modes\");\n\n/**\n * Available agent modes representing different quality/speed/cost tradeoffs.\n *\n * - \"smart\": Maximum capability, uses opus-class models with reasoning enabled\n * - \"rush\": Balanced speed, uses sonnet-class models without reasoning overhead\n * - \"free\": Cost-optimized, uses haiku-class models for simple operations\n * - \"custom\": User-defined settings for specialized workflows\n */\nexport type AgentMode =\n\t| \"smart\"\n\t| \"rush\"\n\t| \"free\"\n\t| \"custom\"\n\t| \"frontier\"\n\t| \"replay\";\n\n/**\n * Model tier representing capability levels that map to provider-specific models.\n *\n * The tier abstraction allows the same configuration to work across providers:\n * - \"opus\": Highest capability (claude-opus, gpt-5.2, gemini-thinking)\n * - \"sonnet\": Balanced capability (claude-sonnet, gpt-4o, gemini-flash)\n * - \"haiku\": Fast/efficient (claude-haiku, gpt-4o-mini, gemini-flash-lite)\n */\nexport type ModelTier = \"opus\" | \"sonnet\" | \"haiku\";\n\n/** Supported model providers for tier and subagent dispatch. */\nexport type ModelProvider = \"anthropic\" | \"openai\" | \"openai-codex\" | \"google\";\n\n/** Reasoning budget hint passed to subagents that support it. */\nexport type ReasoningEffort = \"low\" | \"medium\" | \"high\" | \"xhigh\";\n\n/** Where the resolved subagent dispatch came from. */\nexport type DispatchSource = \"mode\" | \"fallback\";\n\n/**\n * Per-subagent model routing override.\n *\n * `model` can be a logical model tier (`opus`, `sonnet`, `haiku`) or an\n * explicit model ID. Explicit model IDs may be provider-prefixed, for example\n * `openai-codex/gpt-5.5`.\n */\nexport interface SubagentDispatch {\n\tmodel: ModelTier | string;\n\tprovider?: ModelProvider;\n\treasoningEffort?: ReasoningEffort;\n\tmaxTokens?: number;\n\ttemperature?: number;\n\ttimeoutMs?: number;\n\tpromptTemplate?: string;\n}\n\n/** Fully resolved model routing for one subagent invocation. */\nexport interface ResolvedSubagentDispatch {\n\tmode: AgentMode;\n\ttype: SubagentType;\n\tprovider: ModelProvider;\n\tmodel: string;\n\tmodelTier?: ModelTier;\n\treasoningEffort: ReasoningEffort;\n\tmaxTokens?: number;\n\ttemperature?: number;\n\ttimeoutMs?: number;\n\tpromptTemplate?: string;\n\tsource: DispatchSource;\n}\n\n/**\n * Mode configuration that determines model selection and behavior.\n *\n * Each mode has a complete configuration that controls:\n * - Which model tier to use (primary and fallback)\n * - Whether to enable extended reasoning/thinking\n * - Context and retry limits\n * - UI hints for cost/speed display\n */\nexport interface ModeConfig {\n\t/** Display name for the mode */\n\tdisplayName: string;\n\t/** Description of what this mode does */\n\tdescription: string;\n\t/** Primary model tier to use */\n\tprimaryTier: ModelTier;\n\t/** Fallback model tier if primary is unavailable */\n\tfallbackTier: ModelTier;\n\t/** Whether to enable thinking/reasoning */\n\tenableThinking: boolean;\n\t/** Default reasoning effort for mode-level and fallback subagent routing. */\n\treasoningEffort?: ReasoningEffort;\n\t/** Maximum thinking budget (tokens) */\n\tthinkingBudget: number;\n\t/** Whether to use extended context */\n\tuseExtendedContext: boolean;\n\t/** Retry configuration */\n\tmaxRetries: number;\n\t/** Cost multiplier hint (for UI display) */\n\tcostMultiplier: number;\n\t/** Speed hint (1-10, higher is faster) */\n\tspeedHint: number;\n\t/** Whether this mode is shown in default user-facing mode lists. */\n\tvisible: boolean;\n\t/** Optional dispatch table for mode-specific subagent routing. */\n\tsubagents?: Partial<Record<SubagentType, SubagentDispatch>>;\n\t/** Owner responsible for promotion or removal when hidden. */\n\trolloutOwner?: string;\n}\n\n/**\n * Model mapping for different providers.\n */\nexport interface ModelMapping {\n\tanthropic: string;\n\topenai?: string;\n\t\"openai-codex\"?: string;\n\tgoogle?: string;\n}\n\nconst PROVIDERS: ModelProvider[] = [\n\t\"anthropic\",\n\t\"openai\",\n\t\"openai-codex\",\n\t\"google\",\n];\n\n/**\n * Default mode configurations defining the behavior of each agent mode.\n *\n * These configurations are the canonical source of truth for how each mode\n * behaves. The settings are carefully tuned based on model capabilities\n * and typical use case requirements:\n *\n * - **smart**: Full-featured for complex tasks (16k thinking budget, 3 retries)\n * - **rush**: Optimized for speed (no thinking, 2 retries, smaller context)\n * - **free**: Minimal resource usage (no thinking, 1 retry, no extended context)\n * - **custom**: Balanced defaults that users can override\n */\nexport const MODE_CONFIGS: Record<AgentMode, ModeConfig> = {\n\t// Smart mode: Maximum capability for complex reasoning tasks\n\tsmart: {\n\t\tdisplayName: \"Smart\",\n\t\tdescription: \"Best quality, uses opus for complex tasks\",\n\t\tprimaryTier: \"opus\",\n\t\tfallbackTier: \"sonnet\",\n\t\tenableThinking: true,\n\t\treasoningEffort: \"medium\",\n\t\tthinkingBudget: 16000,\n\t\tuseExtendedContext: true,\n\t\tmaxRetries: 3,\n\t\tcostMultiplier: 1.0,\n\t\tspeedHint: 5,\n\t\tvisible: true,\n\t\tsubagents: {\n\t\t\texplorer: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\tplanner: { model: \"opus\", reasoningEffort: \"high\" },\n\t\t\tcoder: { model: \"openai-codex/gpt-5.5\", reasoningEffort: \"medium\" },\n\t\t\treviewer: { model: \"sonnet\", reasoningEffort: \"medium\" },\n\t\t\tresearcher: { model: \"sonnet\", reasoningEffort: \"medium\" },\n\t\t\tminimal: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t},\n\t},\n\t// Rush mode: Speed-optimized for quick iterations\n\trush: {\n\t\tdisplayName: \"Rush\",\n\t\tdescription: \"Fast responses, uses sonnet for speed\",\n\t\tprimaryTier: \"sonnet\",\n\t\tfallbackTier: \"haiku\",\n\t\tenableThinking: false,\n\t\treasoningEffort: \"low\",\n\t\tthinkingBudget: 4000,\n\t\tuseExtendedContext: false,\n\t\tmaxRetries: 2,\n\t\tcostMultiplier: 0.5,\n\t\tspeedHint: 8,\n\t\tvisible: true,\n\t\tsubagents: {\n\t\t\texplorer: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\tplanner: { model: \"sonnet\", reasoningEffort: \"low\" },\n\t\t\tcoder: { model: \"sonnet\", reasoningEffort: \"low\" },\n\t\t\treviewer: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\tresearcher: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\tminimal: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t},\n\t},\n\t// Free mode: Cost-optimized for simple tasks\n\tfree: {\n\t\tdisplayName: \"Free\",\n\t\tdescription: \"Most cost-effective, uses haiku\",\n\t\tprimaryTier: \"haiku\",\n\t\tfallbackTier: \"haiku\",\n\t\tenableThinking: false,\n\t\treasoningEffort: \"low\",\n\t\tthinkingBudget: 2000,\n\t\tuseExtendedContext: false,\n\t\tmaxRetries: 1,\n\t\tcostMultiplier: 0.1,\n\t\tspeedHint: 10,\n\t\tvisible: true,\n\t\tsubagents: {\n\t\t\texplorer: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\tplanner: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\tcoder: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\treviewer: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\tresearcher: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\tminimal: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t},\n\t},\n\t// Custom mode: User-configurable defaults (can be overridden at runtime)\n\tcustom: {\n\t\tdisplayName: \"Custom\",\n\t\tdescription: \"User-defined configuration\",\n\t\tprimaryTier: \"sonnet\",\n\t\tfallbackTier: \"haiku\",\n\t\tenableThinking: true,\n\t\treasoningEffort: \"medium\",\n\t\tthinkingBudget: 8000,\n\t\tuseExtendedContext: true,\n\t\tmaxRetries: 2,\n\t\tcostMultiplier: 0.7,\n\t\tspeedHint: 6,\n\t\tvisible: true,\n\t},\n\tfrontier: {\n\t\tdisplayName: \"Frontier\",\n\t\tdescription: \"Experimental high-capability orchestration mode\",\n\t\tprimaryTier: \"opus\",\n\t\tfallbackTier: \"sonnet\",\n\t\tenableThinking: true,\n\t\treasoningEffort: \"high\",\n\t\tthinkingBudget: 20000,\n\t\tuseExtendedContext: true,\n\t\tmaxRetries: 3,\n\t\tcostMultiplier: 1.25,\n\t\tspeedHint: 4,\n\t\tvisible: false,\n\t\tsubagents: {\n\t\t\texplorer: { model: \"sonnet\", reasoningEffort: \"medium\" },\n\t\t\tplanner: { model: \"opus\", reasoningEffort: \"xhigh\" },\n\t\t\tcoder: { model: \"openai-codex/gpt-5.5\", reasoningEffort: \"high\" },\n\t\t\treviewer: { model: \"openai-codex/gpt-5.5\", reasoningEffort: \"medium\" },\n\t\t\tresearcher: { model: \"sonnet\", reasoningEffort: \"medium\" },\n\t\t\tminimal: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t},\n\t\trolloutOwner: \"agent-runtime\",\n\t},\n\treplay: {\n\t\tdisplayName: \"Replay\",\n\t\tdescription: \"Deterministic scripted scenario replay\",\n\t\tprimaryTier: \"haiku\",\n\t\tfallbackTier: \"haiku\",\n\t\tenableThinking: false,\n\t\treasoningEffort: \"low\",\n\t\tthinkingBudget: 0,\n\t\tuseExtendedContext: false,\n\t\tmaxRetries: 0,\n\t\tcostMultiplier: 0,\n\t\tspeedHint: 10,\n\t\tvisible: false,\n\t\tsubagents: {\n\t\t\texplorer: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\tplanner: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\tcoder: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\treviewer: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\tresearcher: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\tminimal: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t},\n\t\trolloutOwner: \"agent-evals\",\n\t},\n};\n\n/**\n * Model mappings by tier for each provider.\n *\n * This lookup table maps abstract capability tiers to concrete model IDs\n * for each supported LLM provider. When adding new providers or updating\n * model versions, update this table to maintain consistent tier behavior.\n *\n * Note: Model IDs include version dates to ensure reproducibility.\n * Update these periodically as providers release improved versions.\n */\nexport const MODEL_BY_TIER: Record<ModelTier, ModelMapping> = {\n\t// Opus tier: Highest capability models with advanced reasoning\n\topus: {\n\t\tanthropic: \"claude-opus-4-6\",\n\t\topenai: \"gpt-5.2\",\n\t\t\"openai-codex\": \"gpt-5.5\",\n\t\tgoogle: \"gemini-2.0-flash-thinking-exp\",\n\t},\n\t// Sonnet tier: Balanced performance models for general use\n\tsonnet: {\n\t\tanthropic: \"claude-sonnet-4-5-20250929\",\n\t\topenai: \"gpt-4o\",\n\t\t\"openai-codex\": \"gpt-5.4\",\n\t\tgoogle: \"gemini-2.0-flash-exp\",\n\t},\n\t// Haiku tier: Fast, efficient models for simple tasks\n\thaiku: {\n\t\tanthropic: \"claude-haiku-4-5-20251001\",\n\t\topenai: \"gpt-4o-mini\",\n\t\t\"openai-codex\": \"gpt-5.4-mini\",\n\t\tgoogle: \"gemini-2.0-flash-lite-exp\",\n\t},\n};\n\n/**\n * Get the model ID for a given tier and provider.\n *\n * @param tier - The capability tier (opus/sonnet/haiku)\n * @param provider - The LLM provider (defaults to anthropic)\n * @returns The concrete model ID string for the provider\n *\n * Falls back to the Anthropic model if the requested provider\n * doesn't have a mapping for the tier.\n */\nexport function getModelForTier(\n\ttier: ModelTier,\n\tprovider: ModelProvider = \"anthropic\",\n): string {\n\tconst mapping = MODEL_BY_TIER[tier];\n\t// Fall back to Anthropic if provider doesn't have a mapping\n\treturn mapping[provider] ?? mapping.anthropic;\n}\n\nfunction isModelTier(model: string): model is ModelTier {\n\treturn model in MODEL_BY_TIER;\n}\n\nfunction isModelProvider(provider: string): provider is ModelProvider {\n\treturn PROVIDERS.includes(provider as ModelProvider);\n}\n\nfunction splitExplicitModel(model: string): {\n\tprovider?: ModelProvider;\n\tmodel: string;\n} {\n\tconst slashIndex = model.indexOf(\"/\");\n\tif (slashIndex <= 0) {\n\t\treturn { model };\n\t}\n\n\tconst provider = model.slice(0, slashIndex);\n\tif (!isModelProvider(provider)) {\n\t\treturn { model };\n\t}\n\n\treturn {\n\t\tprovider,\n\t\tmodel: model.slice(slashIndex + 1),\n\t};\n}\n\nfunction defaultReasoningEffort(config: ModeConfig): ReasoningEffort {\n\treturn config.reasoningEffort ?? (config.enableThinking ? \"medium\" : \"low\");\n}\n\n/**\n * Resolve the concrete model/provider a subagent should use in a mode.\n */\nexport function resolveSubagentDispatch(\n\tmode: AgentMode,\n\ttype: SubagentType,\n\tprovider: ModelProvider = \"anthropic\",\n): ResolvedSubagentDispatch {\n\tconst config = getModeConfig(mode);\n\tconst dispatch = config.subagents?.[type];\n\tconst source: DispatchSource = dispatch ? \"mode\" : \"fallback\";\n\tconst requestedModel = dispatch?.model ?? config.primaryTier;\n\tconst reasoningEffort =\n\t\tdispatch?.reasoningEffort ?? defaultReasoningEffort(config);\n\n\tif (isModelTier(requestedModel)) {\n\t\tconst resolvedProvider = dispatch?.provider ?? provider;\n\t\treturn {\n\t\t\tmode,\n\t\t\ttype,\n\t\t\tprovider: resolvedProvider,\n\t\t\tmodel: getModelForTier(requestedModel, resolvedProvider),\n\t\t\tmodelTier: requestedModel,\n\t\t\treasoningEffort,\n\t\t\tmaxTokens: dispatch?.maxTokens,\n\t\t\ttemperature: dispatch?.temperature,\n\t\t\ttimeoutMs: dispatch?.timeoutMs,\n\t\t\tpromptTemplate: dispatch?.promptTemplate,\n\t\t\tsource,\n\t\t};\n\t}\n\n\tconst explicit = splitExplicitModel(requestedModel);\n\tconst resolvedProvider = dispatch?.provider ?? explicit.provider ?? provider;\n\treturn {\n\t\tmode,\n\t\ttype,\n\t\tprovider: resolvedProvider,\n\t\tmodel: explicit.model,\n\t\treasoningEffort,\n\t\tmaxTokens: dispatch?.maxTokens,\n\t\ttemperature: dispatch?.temperature,\n\t\ttimeoutMs: dispatch?.timeoutMs,\n\t\tpromptTemplate: dispatch?.promptTemplate,\n\t\tsource,\n\t};\n}\n\n/**\n * Get the configuration for a mode.\n */\nexport function getModeConfig(mode: AgentMode): ModeConfig {\n\treturn MODE_CONFIGS[mode];\n}\n\n/**\n * Get the recommended model for a mode and provider.\n */\nexport function getModelForMode(\n\tmode: AgentMode,\n\tprovider: ModelProvider = \"anthropic\",\n): string {\n\tconst config = getModeConfig(mode);\n\treturn getModelForTier(config.primaryTier, provider);\n}\n\n/**\n * Current agent mode state (module-level singleton).\n *\n * This tracks the active mode for the current process. In multi-session\n * scenarios, each session should manage its own mode state rather than\n * relying on this global.\n */\nlet currentMode: AgentMode = \"smart\";\n\n/**\n * Get the current agent mode.\n *\n * @returns The currently active agent mode\n */\nexport function getCurrentMode(): AgentMode {\n\treturn currentMode;\n}\n\n/**\n * Set the current agent mode.\n *\n * This updates the global mode state and logs the transition for debugging.\n * Mode changes take effect immediately for subsequent operations.\n *\n * @param mode - The new mode to activate\n */\nexport function setCurrentMode(mode: AgentMode): void {\n\tlogger.info(\"Setting agent mode\", { mode });\n\tcurrentMode = mode;\n\tconst config = getModeConfig(mode);\n\tif (config.visible === false) {\n\t\tvoid recordStagedRolloutSurfaceUsage(\"hidden_mode_used\", {\n\t\t\tsurfaceId: `mode:${mode}`,\n\t\t\tsurfaceType: \"mode\",\n\t\t\towner: config.rolloutOwner,\n\t\t});\n\t}\n}\n\n/**\n * Parse mode from string (case-insensitive).\n *\n * Validates user input and converts to a valid AgentMode type.\n *\n * @param modeStr - User-provided mode string (e.g., \"Smart\", \"RUSH\")\n * @returns The parsed AgentMode, or null if invalid\n */\nexport function parseMode(modeStr: string): AgentMode | null {\n\tconst normalized = modeStr.toLowerCase().trim();\n\tif (normalized in MODE_CONFIGS) {\n\t\treturn normalized as AgentMode;\n\t}\n\treturn null;\n}\n\n/**\n * Get mode from environment variable.\n *\n * Reads MAESTRO_MODE from environment and validates it.\n * Defaults to \"smart\" if not set or invalid.\n *\n * @returns The configured mode or \"smart\" as default\n */\nexport function getModeFromEnv(): AgentMode {\n\tconst envMode = process.env.MAESTRO_MODE?.toLowerCase();\n\tif (envMode && envMode in MODE_CONFIGS) {\n\t\treturn envMode as AgentMode;\n\t}\n\t// Default to smart mode for best quality when not specified\n\treturn \"smart\";\n}\n\n/**\n * Format mode for display.\n */\nexport function formatModeDisplay(mode: AgentMode): string {\n\tconst config = getModeConfig(mode);\n\treturn `${config.displayName} - ${config.description}`;\n}\n\n/**\n * Get all available modes with their descriptions.\n */\nexport function getAllModes(options?: {\n\tincludeHidden?: boolean;\n}): Array<{ mode: AgentMode; config: ModeConfig }> {\n\treturn (Object.entries(MODE_CONFIGS) as [AgentMode, ModeConfig][])\n\t\t.filter(([, config]) => options?.includeHidden === true || config.visible)\n\t\t.map(([mode, config]) => ({\n\t\t\tmode,\n\t\t\tconfig,\n\t\t}));\n}\n\n/**\n * Suggest a mode based on task complexity heuristics.\n *\n * This function analyzes the task description to recommend an appropriate\n * mode based on keyword matching. It uses a scoring system to determine\n * task complexity:\n *\n * **Scoring Algorithm:**\n * 1. Count matches against complex/simple/info indicator word lists\n * 2. Compare scores to determine dominant category\n * 3. Return mode matching the highest score\n *\n * **Keyword Categories:**\n * - Complex (→ smart): refactor, architect, design, implement, build...\n * - Simple (→ rush): fix, typo, rename, update, small changes...\n * - Info (→ free): what, where, explain, find, search queries...\n *\n * @param taskDescription - The user's task description to analyze\n * @returns The recommended AgentMode based on task complexity\n *\n * @example\n * suggestMode(\"refactor the authentication module\") // → \"smart\"\n * suggestMode(\"fix typo in README\") // → \"rush\"\n * suggestMode(\"what does this function do?\") // → \"free\"\n */\nexport function suggestMode(taskDescription: string): AgentMode {\n\tconst lowerTask = taskDescription.toLowerCase();\n\n\t// Complex tasks → smart mode (require deep reasoning)\n\tconst complexIndicators = [\n\t\t\"refactor\",\n\t\t\"architect\",\n\t\t\"design\",\n\t\t\"implement\",\n\t\t\"create\",\n\t\t\"build\",\n\t\t\"complex\",\n\t\t\"system\",\n\t\t\"full\",\n\t\t\"entire\",\n\t\t\"comprehensive\",\n\t];\n\n\t// Simple tasks → rush mode (straightforward modifications)\n\tconst simpleIndicators = [\n\t\t\"fix\",\n\t\t\"typo\",\n\t\t\"simple\",\n\t\t\"quick\",\n\t\t\"small\",\n\t\t\"minor\",\n\t\t\"rename\",\n\t\t\"update\",\n\t\t\"change\",\n\t];\n\n\t// Information tasks → free mode (queries, not modifications)\n\tconst infoIndicators = [\n\t\t\"what\",\n\t\t\"where\",\n\t\t\"explain\",\n\t\t\"describe\",\n\t\t\"list\",\n\t\t\"show\",\n\t\t\"find\",\n\t\t\"search\",\n\t];\n\n\t// Calculate match scores for each category\n\tconst complexScore = complexIndicators.filter((i) =>\n\t\tlowerTask.includes(i),\n\t).length;\n\tconst simpleScore = simpleIndicators.filter((i) =>\n\t\tlowerTask.includes(i),\n\t).length;\n\tconst infoScore = infoIndicators.filter((i) => lowerTask.includes(i)).length;\n\n\t// Determine mode based on highest scoring category\n\tif (complexScore > simpleScore && complexScore > infoScore) {\n\t\treturn \"smart\";\n\t}\n\tif (infoScore > simpleScore) {\n\t\treturn \"free\";\n\t}\n\tif (simpleScore > 0) {\n\t\treturn \"rush\";\n\t}\n\n\t// Default to smart mode when no clear indicators found\n\t// (better to over-estimate complexity than under-estimate)\n\treturn \"smart\";\n}\n"]}
|
|
1
|
+
{"version":3,"file":"modes.js","sourceRoot":"","sources":["../../src/agent/modes.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Agent Modes - Different operating modes for the agent.\n *\n * This module implements a tiered model selection system inspired by Amp's\n * smart/rush/free modes. Each mode represents a different balance between\n * response quality, speed, and cost:\n *\n * - **smart**: Uses the highest capability model (opus) for complex reasoning\n * tasks. Enables thinking/reasoning mode with extended context windows.\n * Best for: Architecture decisions, complex refactoring, debugging.\n *\n * - **rush**: Uses mid-tier models (sonnet) for faster responses. Disables\n * thinking mode to reduce latency. Best for: Quick fixes, simple edits,\n * straightforward code generation.\n *\n * - **free**: Uses the most cost-effective models (haiku) with minimal\n * features. Best for: Simple questions, file searches, documentation\n * lookups where speed and cost matter more than depth.\n *\n * - **custom**: User-defined configuration allowing fine-tuned control\n * over model selection and feature toggles.\n *\n * ## Architecture\n *\n * The mode system uses a two-level abstraction:\n * 1. **ModelTier** (opus/sonnet/haiku): Logical capability levels\n * 2. **ModelMapping**: Provider-specific model IDs for each tier\n *\n * This allows the same mode configuration to work across different\n * LLM providers (Anthropic, OpenAI, Google) by mapping tiers to\n * provider-specific model identifiers.\n *\n * ## Usage\n *\n * ```typescript\n * // Set mode based on task\n * setCurrentMode(suggestMode(\"refactor the auth module\")); // → \"smart\"\n *\n * // Get model for current provider\n * const model = getModelForMode(getCurrentMode(), \"anthropic\");\n * ```\n *\n * ## Environment Variables\n *\n * - `MAESTRO_MODE`: Override the default mode at startup\n */\n\nimport { recordStagedRolloutSurfaceUsage } from \"../telemetry.js\";\nimport { createLogger } from \"../utils/logger.js\";\nimport type { SubagentType } from \"./subagent-specs.js\";\n\n// Logger scoped to agent modes for debugging mode transitions\nconst logger = createLogger(\"agent:modes\");\n\n/**\n * Available agent modes representing different quality/speed/cost tradeoffs.\n *\n * - \"smart\": Maximum capability, uses opus-class models with reasoning enabled\n * - \"rush\": Balanced speed, uses sonnet-class models without reasoning overhead\n * - \"free\": Cost-optimized, uses haiku-class models for simple operations\n * - \"custom\": User-defined settings for specialized workflows\n */\nexport type AgentMode =\n\t| \"smart\"\n\t| \"rush\"\n\t| \"free\"\n\t| \"custom\"\n\t| \"frontier\"\n\t| \"replay\";\n\n/**\n * Model tier representing capability levels that map to provider-specific models.\n *\n * The tier abstraction allows the same configuration to work across providers:\n * - \"opus\": Highest capability (claude-opus, gpt-5.2, gemini-thinking)\n * - \"sonnet\": Balanced capability (claude-sonnet, gpt-4o, gemini-flash)\n * - \"haiku\": Fast/efficient (claude-haiku, gpt-4o-mini, gemini-flash-lite)\n */\nexport type ModelTier = \"opus\" | \"sonnet\" | \"haiku\";\n\n/** Supported model providers for tier and subagent dispatch. */\nexport type ModelProvider = \"anthropic\" | \"openai\" | \"openai-codex\" | \"google\";\n\n/** Reasoning budget hint passed to subagents that support it. */\nexport type ReasoningEffort = \"low\" | \"medium\" | \"high\" | \"xhigh\";\n\n/** Where the resolved subagent dispatch came from. */\nexport type DispatchSource = \"mode\" | \"fallback\";\n\n/**\n * Per-subagent model routing override.\n *\n * `model` can be a logical model tier (`opus`, `sonnet`, `haiku`) or an\n * explicit model ID. Explicit model IDs may be provider-prefixed, for example\n * `openai-codex/gpt-5.5`.\n */\nexport interface SubagentDispatch {\n\tmodel: ModelTier | string;\n\tprovider?: ModelProvider;\n\treasoningEffort?: ReasoningEffort;\n\tmaxTokens?: number;\n\ttemperature?: number;\n\ttimeoutMs?: number;\n\tpromptTemplate?: string;\n}\n\n/** Fully resolved model routing for one subagent invocation. */\nexport interface ResolvedSubagentDispatch {\n\tmode: AgentMode;\n\ttype: SubagentType;\n\tprovider: ModelProvider;\n\tmodel: string;\n\tmodelTier?: ModelTier;\n\treasoningEffort: ReasoningEffort;\n\tmaxTokens?: number;\n\ttemperature?: number;\n\ttimeoutMs?: number;\n\tpromptTemplate?: string;\n\tsource: DispatchSource;\n}\n\n/**\n * Mode configuration that determines model selection and behavior.\n *\n * Each mode has a complete configuration that controls:\n * - Which model tier to use (primary and fallback)\n * - Whether to enable extended reasoning/thinking\n * - Context and retry limits\n * - UI hints for cost/speed display\n */\nexport interface ModeConfig {\n\t/** Display name for the mode */\n\tdisplayName: string;\n\t/** Description of what this mode does */\n\tdescription: string;\n\t/** Primary model tier to use */\n\tprimaryTier: ModelTier;\n\t/** Fallback model tier if primary is unavailable */\n\tfallbackTier: ModelTier;\n\t/** Whether to enable thinking/reasoning */\n\tenableThinking: boolean;\n\t/** Default reasoning effort for mode-level and fallback subagent routing. */\n\treasoningEffort?: ReasoningEffort;\n\t/** Maximum thinking budget (tokens) */\n\tthinkingBudget: number;\n\t/** Whether to use extended context */\n\tuseExtendedContext: boolean;\n\t/** Retry configuration */\n\tmaxRetries: number;\n\t/** Cost multiplier hint (for UI display) */\n\tcostMultiplier: number;\n\t/** Speed hint (1-10, higher is faster) */\n\tspeedHint: number;\n\t/** Whether this mode is shown in default user-facing mode lists. */\n\tvisible: boolean;\n\t/** Optional dispatch table for mode-specific subagent routing. */\n\tsubagents?: Partial<Record<SubagentType, SubagentDispatch>>;\n\t/** Owner responsible for promotion or removal when hidden. */\n\trolloutOwner?: string;\n}\n\n/**\n * Model mapping for different providers.\n */\nexport interface ModelMapping {\n\tanthropic: string;\n\topenai?: string;\n\t\"openai-codex\"?: string;\n\tgoogle?: string;\n}\n\nconst PROVIDERS: ModelProvider[] = [\n\t\"anthropic\",\n\t\"openai\",\n\t\"openai-codex\",\n\t\"google\",\n];\n\n/**\n * Default mode configurations defining the behavior of each agent mode.\n *\n * These configurations are the canonical source of truth for how each mode\n * behaves. The settings are carefully tuned based on model capabilities\n * and typical use case requirements:\n *\n * - **smart**: Full-featured for complex tasks (16k thinking budget, 3 retries)\n * - **rush**: Optimized for speed (no thinking, 2 retries, smaller context)\n * - **free**: Minimal resource usage (no thinking, 1 retry, no extended context)\n * - **custom**: Balanced defaults that users can override\n */\nexport const MODE_CONFIGS: Record<AgentMode, ModeConfig> = {\n\t// Smart mode: Maximum capability for complex reasoning tasks\n\tsmart: {\n\t\tdisplayName: \"Smart\",\n\t\tdescription: \"Best quality, uses opus for complex tasks\",\n\t\tprimaryTier: \"opus\",\n\t\tfallbackTier: \"sonnet\",\n\t\tenableThinking: true,\n\t\treasoningEffort: \"medium\",\n\t\tthinkingBudget: 16000,\n\t\tuseExtendedContext: true,\n\t\tmaxRetries: 3,\n\t\tcostMultiplier: 1.0,\n\t\tspeedHint: 5,\n\t\tvisible: true,\n\t\tsubagents: {\n\t\t\texplorer: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\tplanner: { model: \"opus\", reasoningEffort: \"high\" },\n\t\t\tcoder: { model: \"openai-codex/gpt-5.5\", reasoningEffort: \"medium\" },\n\t\t\treviewer: { model: \"sonnet\", reasoningEffort: \"medium\" },\n\t\t\tresearcher: { model: \"sonnet\", reasoningEffort: \"medium\" },\n\t\t\tminimal: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t},\n\t},\n\t// Rush mode: Speed-optimized for quick iterations\n\trush: {\n\t\tdisplayName: \"Rush\",\n\t\tdescription: \"Fast responses, uses sonnet for speed\",\n\t\tprimaryTier: \"sonnet\",\n\t\tfallbackTier: \"haiku\",\n\t\tenableThinking: false,\n\t\treasoningEffort: \"low\",\n\t\tthinkingBudget: 4000,\n\t\tuseExtendedContext: false,\n\t\tmaxRetries: 2,\n\t\tcostMultiplier: 0.5,\n\t\tspeedHint: 8,\n\t\tvisible: true,\n\t\tsubagents: {\n\t\t\texplorer: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\tplanner: { model: \"sonnet\", reasoningEffort: \"low\" },\n\t\t\tcoder: { model: \"sonnet\", reasoningEffort: \"low\" },\n\t\t\treviewer: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\tresearcher: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\tminimal: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t},\n\t},\n\t// Free mode: Cost-optimized for simple tasks\n\tfree: {\n\t\tdisplayName: \"Free\",\n\t\tdescription: \"Most cost-effective, uses haiku\",\n\t\tprimaryTier: \"haiku\",\n\t\tfallbackTier: \"haiku\",\n\t\tenableThinking: false,\n\t\treasoningEffort: \"low\",\n\t\tthinkingBudget: 2000,\n\t\tuseExtendedContext: false,\n\t\tmaxRetries: 1,\n\t\tcostMultiplier: 0.1,\n\t\tspeedHint: 10,\n\t\tvisible: true,\n\t\tsubagents: {\n\t\t\texplorer: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\tplanner: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\tcoder: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\treviewer: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\tresearcher: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\tminimal: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t},\n\t},\n\t// Custom mode: User-configurable defaults (can be overridden at runtime)\n\tcustom: {\n\t\tdisplayName: \"Custom\",\n\t\tdescription: \"User-defined configuration\",\n\t\tprimaryTier: \"sonnet\",\n\t\tfallbackTier: \"haiku\",\n\t\tenableThinking: true,\n\t\treasoningEffort: \"medium\",\n\t\tthinkingBudget: 8000,\n\t\tuseExtendedContext: true,\n\t\tmaxRetries: 2,\n\t\tcostMultiplier: 0.7,\n\t\tspeedHint: 6,\n\t\tvisible: true,\n\t},\n\tfrontier: {\n\t\tdisplayName: \"Frontier\",\n\t\tdescription: \"Experimental high-capability orchestration mode\",\n\t\tprimaryTier: \"opus\",\n\t\tfallbackTier: \"sonnet\",\n\t\tenableThinking: true,\n\t\treasoningEffort: \"high\",\n\t\tthinkingBudget: 20000,\n\t\tuseExtendedContext: true,\n\t\tmaxRetries: 3,\n\t\tcostMultiplier: 1.25,\n\t\tspeedHint: 4,\n\t\tvisible: false,\n\t\tsubagents: {\n\t\t\texplorer: { model: \"sonnet\", reasoningEffort: \"medium\" },\n\t\t\tplanner: { model: \"opus\", reasoningEffort: \"xhigh\" },\n\t\t\tcoder: { model: \"openai-codex/gpt-5.5\", reasoningEffort: \"high\" },\n\t\t\treviewer: { model: \"openai-codex/gpt-5.5\", reasoningEffort: \"medium\" },\n\t\t\tresearcher: { model: \"sonnet\", reasoningEffort: \"medium\" },\n\t\t\tminimal: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t},\n\t\trolloutOwner: \"agent-runtime\",\n\t},\n\treplay: {\n\t\tdisplayName: \"Replay\",\n\t\tdescription: \"Deterministic scripted scenario replay\",\n\t\tprimaryTier: \"haiku\",\n\t\tfallbackTier: \"haiku\",\n\t\tenableThinking: false,\n\t\treasoningEffort: \"low\",\n\t\tthinkingBudget: 0,\n\t\tuseExtendedContext: false,\n\t\tmaxRetries: 0,\n\t\tcostMultiplier: 0,\n\t\tspeedHint: 10,\n\t\tvisible: false,\n\t\tsubagents: {\n\t\t\texplorer: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\tplanner: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\tcoder: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\treviewer: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\tresearcher: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t\tminimal: { model: \"haiku\", reasoningEffort: \"low\" },\n\t\t},\n\t\trolloutOwner: \"agent-evals\",\n\t},\n};\n\n/**\n * Model mappings by tier for each provider.\n *\n * This lookup table maps abstract capability tiers to concrete model IDs\n * for each supported LLM provider. When adding new providers or updating\n * model versions, update this table to maintain consistent tier behavior.\n *\n * Note: Model IDs include version dates to ensure reproducibility.\n * Update these periodically as providers release improved versions.\n */\nexport const MODEL_BY_TIER: Record<ModelTier, ModelMapping> = {\n\t// Opus tier: Highest capability models with advanced reasoning\n\topus: {\n\t\tanthropic: \"claude-opus-4-6\",\n\t\topenai: \"gpt-5.2\",\n\t\t\"openai-codex\": \"gpt-5.5\",\n\t\tgoogle: \"gemini-2.0-flash-thinking-exp\",\n\t},\n\t// Sonnet tier: Balanced performance models for general use\n\tsonnet: {\n\t\tanthropic: \"claude-sonnet-4-5-20250929\",\n\t\topenai: \"gpt-4o\",\n\t\t\"openai-codex\": \"gpt-5.4\",\n\t\tgoogle: \"gemini-2.0-flash-exp\",\n\t},\n\t// Haiku tier: Fast, efficient models for simple tasks\n\thaiku: {\n\t\tanthropic: \"claude-haiku-4-5-20251001\",\n\t\topenai: \"gpt-4o-mini\",\n\t\t\"openai-codex\": \"gpt-5.4-mini\",\n\t\tgoogle: \"gemini-2.0-flash-lite-exp\",\n\t},\n};\n\n/**\n * Get the model ID for a given tier and provider.\n *\n * @param tier - The capability tier (opus/sonnet/haiku)\n * @param provider - The LLM provider (defaults to openai-codex)\n * @returns The concrete model ID string for the provider\n *\n * Falls back to the OpenAI Codex model if the requested provider\n * doesn't have a mapping for the tier.\n */\nexport function getModelForTier(\n\ttier: ModelTier,\n\tprovider: ModelProvider = \"openai-codex\",\n): string {\n\tconst mapping = MODEL_BY_TIER[tier];\n\treturn mapping[provider] ?? mapping[\"openai-codex\"] ?? \"gpt-5.5\";\n}\n\nfunction isModelTier(model: string): model is ModelTier {\n\treturn model in MODEL_BY_TIER;\n}\n\nfunction isModelProvider(provider: string): provider is ModelProvider {\n\treturn PROVIDERS.includes(provider as ModelProvider);\n}\n\nfunction splitExplicitModel(model: string): {\n\tprovider?: ModelProvider;\n\tmodel: string;\n} {\n\tconst slashIndex = model.indexOf(\"/\");\n\tif (slashIndex <= 0) {\n\t\treturn { model };\n\t}\n\n\tconst provider = model.slice(0, slashIndex);\n\tif (!isModelProvider(provider)) {\n\t\treturn { model };\n\t}\n\n\treturn {\n\t\tprovider,\n\t\tmodel: model.slice(slashIndex + 1),\n\t};\n}\n\nfunction defaultReasoningEffort(config: ModeConfig): ReasoningEffort {\n\treturn config.reasoningEffort ?? (config.enableThinking ? \"medium\" : \"low\");\n}\n\n/**\n * Resolve the concrete model/provider a subagent should use in a mode.\n */\nexport function resolveSubagentDispatch(\n\tmode: AgentMode,\n\ttype: SubagentType,\n\tprovider: ModelProvider = \"openai-codex\",\n): ResolvedSubagentDispatch {\n\tconst config = getModeConfig(mode);\n\tconst dispatch = config.subagents?.[type];\n\tconst source: DispatchSource = dispatch ? \"mode\" : \"fallback\";\n\tconst requestedModel = dispatch?.model ?? config.primaryTier;\n\tconst reasoningEffort =\n\t\tdispatch?.reasoningEffort ?? defaultReasoningEffort(config);\n\n\tif (isModelTier(requestedModel)) {\n\t\tconst resolvedProvider = dispatch?.provider ?? provider;\n\t\treturn {\n\t\t\tmode,\n\t\t\ttype,\n\t\t\tprovider: resolvedProvider,\n\t\t\tmodel: getModelForTier(requestedModel, resolvedProvider),\n\t\t\tmodelTier: requestedModel,\n\t\t\treasoningEffort,\n\t\t\tmaxTokens: dispatch?.maxTokens,\n\t\t\ttemperature: dispatch?.temperature,\n\t\t\ttimeoutMs: dispatch?.timeoutMs,\n\t\t\tpromptTemplate: dispatch?.promptTemplate,\n\t\t\tsource,\n\t\t};\n\t}\n\n\tconst explicit = splitExplicitModel(requestedModel);\n\tconst resolvedProvider = dispatch?.provider ?? explicit.provider ?? provider;\n\treturn {\n\t\tmode,\n\t\ttype,\n\t\tprovider: resolvedProvider,\n\t\tmodel: explicit.model,\n\t\treasoningEffort,\n\t\tmaxTokens: dispatch?.maxTokens,\n\t\ttemperature: dispatch?.temperature,\n\t\ttimeoutMs: dispatch?.timeoutMs,\n\t\tpromptTemplate: dispatch?.promptTemplate,\n\t\tsource,\n\t};\n}\n\n/**\n * Get the configuration for a mode.\n */\nexport function getModeConfig(mode: AgentMode): ModeConfig {\n\treturn MODE_CONFIGS[mode];\n}\n\n/**\n * Get the recommended model for a mode and provider.\n */\nexport function getModelForMode(\n\tmode: AgentMode,\n\tprovider: ModelProvider = \"openai-codex\",\n): string {\n\tconst config = getModeConfig(mode);\n\treturn getModelForTier(config.primaryTier, provider);\n}\n\n/**\n * Current agent mode state (module-level singleton).\n *\n * This tracks the active mode for the current process. In multi-session\n * scenarios, each session should manage its own mode state rather than\n * relying on this global.\n */\nlet currentMode: AgentMode = \"smart\";\n\n/**\n * Get the current agent mode.\n *\n * @returns The currently active agent mode\n */\nexport function getCurrentMode(): AgentMode {\n\treturn currentMode;\n}\n\n/**\n * Set the current agent mode.\n *\n * This updates the global mode state and logs the transition for debugging.\n * Mode changes take effect immediately for subsequent operations.\n *\n * @param mode - The new mode to activate\n */\nexport function setCurrentMode(mode: AgentMode): void {\n\tlogger.info(\"Setting agent mode\", { mode });\n\tcurrentMode = mode;\n\tconst config = getModeConfig(mode);\n\tif (config.visible === false) {\n\t\tvoid recordStagedRolloutSurfaceUsage(\"hidden_mode_used\", {\n\t\t\tsurfaceId: `mode:${mode}`,\n\t\t\tsurfaceType: \"mode\",\n\t\t\towner: config.rolloutOwner,\n\t\t});\n\t}\n}\n\n/**\n * Parse mode from string (case-insensitive).\n *\n * Validates user input and converts to a valid AgentMode type.\n *\n * @param modeStr - User-provided mode string (e.g., \"Smart\", \"RUSH\")\n * @returns The parsed AgentMode, or null if invalid\n */\nexport function parseMode(modeStr: string): AgentMode | null {\n\tconst normalized = modeStr.toLowerCase().trim();\n\tif (normalized in MODE_CONFIGS) {\n\t\treturn normalized as AgentMode;\n\t}\n\treturn null;\n}\n\n/**\n * Get mode from environment variable.\n *\n * Reads MAESTRO_MODE from environment and validates it.\n * Defaults to \"smart\" if not set or invalid.\n *\n * @returns The configured mode or \"smart\" as default\n */\nexport function getModeFromEnv(): AgentMode {\n\tconst envMode = process.env.MAESTRO_MODE?.toLowerCase();\n\tif (envMode && envMode in MODE_CONFIGS) {\n\t\treturn envMode as AgentMode;\n\t}\n\t// Default to smart mode for best quality when not specified\n\treturn \"smart\";\n}\n\n/**\n * Format mode for display.\n */\nexport function formatModeDisplay(mode: AgentMode): string {\n\tconst config = getModeConfig(mode);\n\treturn `${config.displayName} - ${config.description}`;\n}\n\n/**\n * Get all available modes with their descriptions.\n */\nexport function getAllModes(options?: {\n\tincludeHidden?: boolean;\n}): Array<{ mode: AgentMode; config: ModeConfig }> {\n\treturn (Object.entries(MODE_CONFIGS) as [AgentMode, ModeConfig][])\n\t\t.filter(([, config]) => options?.includeHidden === true || config.visible)\n\t\t.map(([mode, config]) => ({\n\t\t\tmode,\n\t\t\tconfig,\n\t\t}));\n}\n\n/**\n * Suggest a mode based on task complexity heuristics.\n *\n * This function analyzes the task description to recommend an appropriate\n * mode based on keyword matching. It uses a scoring system to determine\n * task complexity:\n *\n * **Scoring Algorithm:**\n * 1. Count matches against complex/simple/info indicator word lists\n * 2. Compare scores to determine dominant category\n * 3. Return mode matching the highest score\n *\n * **Keyword Categories:**\n * - Complex (→ smart): refactor, architect, design, implement, build...\n * - Simple (→ rush): fix, typo, rename, update, small changes...\n * - Info (→ free): what, where, explain, find, search queries...\n *\n * @param taskDescription - The user's task description to analyze\n * @returns The recommended AgentMode based on task complexity\n *\n * @example\n * suggestMode(\"refactor the authentication module\") // → \"smart\"\n * suggestMode(\"fix typo in README\") // → \"rush\"\n * suggestMode(\"what does this function do?\") // → \"free\"\n */\nexport function suggestMode(taskDescription: string): AgentMode {\n\tconst lowerTask = taskDescription.toLowerCase();\n\n\t// Complex tasks → smart mode (require deep reasoning)\n\tconst complexIndicators = [\n\t\t\"refactor\",\n\t\t\"architect\",\n\t\t\"design\",\n\t\t\"implement\",\n\t\t\"create\",\n\t\t\"build\",\n\t\t\"complex\",\n\t\t\"system\",\n\t\t\"full\",\n\t\t\"entire\",\n\t\t\"comprehensive\",\n\t];\n\n\t// Simple tasks → rush mode (straightforward modifications)\n\tconst simpleIndicators = [\n\t\t\"fix\",\n\t\t\"typo\",\n\t\t\"simple\",\n\t\t\"quick\",\n\t\t\"small\",\n\t\t\"minor\",\n\t\t\"rename\",\n\t\t\"update\",\n\t\t\"change\",\n\t];\n\n\t// Information tasks → free mode (queries, not modifications)\n\tconst infoIndicators = [\n\t\t\"what\",\n\t\t\"where\",\n\t\t\"explain\",\n\t\t\"describe\",\n\t\t\"list\",\n\t\t\"show\",\n\t\t\"find\",\n\t\t\"search\",\n\t];\n\n\t// Calculate match scores for each category\n\tconst complexScore = complexIndicators.filter((i) =>\n\t\tlowerTask.includes(i),\n\t).length;\n\tconst simpleScore = simpleIndicators.filter((i) =>\n\t\tlowerTask.includes(i),\n\t).length;\n\tconst infoScore = infoIndicators.filter((i) => lowerTask.includes(i)).length;\n\n\t// Determine mode based on highest scoring category\n\tif (complexScore > simpleScore && complexScore > infoScore) {\n\t\treturn \"smart\";\n\t}\n\tif (infoScore > simpleScore) {\n\t\treturn \"free\";\n\t}\n\tif (simpleScore > 0) {\n\t\treturn \"rush\";\n\t}\n\n\t// Default to smart mode when no clear indicators found\n\t// (better to over-estimate complexity than under-estimate)\n\treturn \"smart\";\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/agent/providers/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyGG;
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/agent/providers/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyGG;AASH,OAAO,KAAK,EAGX,qBAAqB,EACrB,OAAO,EACP,KAAK,EAEL,eAAe,EACf,aAAa,EAMb,MAAM,aAAa,CAAC;AAyErB,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACtD,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC3B;AA6KD,wBAAuB,eAAe,CACrC,KAAK,EAAE,KAAK,CAAC,oBAAoB,CAAC,EAClC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,gBAAgB,GACvB,cAAc,CAAC,qBAAqB,EAAE,IAAI,EAAE,OAAO,CAAC,CAsoBtD"}
|
|
@@ -104,7 +104,6 @@
|
|
|
104
104
|
*
|
|
105
105
|
* @module agent/providers/anthropic
|
|
106
106
|
*/
|
|
107
|
-
import { CLAUDE_CODE_BETA_HEADER } from "../../providers/anthropic-auth.js";
|
|
108
107
|
import { fetchWithRetry } from "../../providers/network-config.js";
|
|
109
108
|
import { createTimeoutReader, isStreamIdleTimeoutError, } from "../../providers/stream-idle-timeout.js";
|
|
110
109
|
import { createLogger } from "../../utils/logger.js";
|
|
@@ -112,6 +111,7 @@ import { mapThinkingLevelToAnthropicBudget } from "../thinking-level-mapper.js";
|
|
|
112
111
|
import { createToolArgumentNormalizer, describeValueType, isRecord, } from "./tool-arguments.js";
|
|
113
112
|
import { transformMessages } from "./transform-messages.js";
|
|
114
113
|
const logger = createLogger("agent:providers:anthropic");
|
|
114
|
+
const ANTHROPIC_BEARER_BETA_HEADER = "oauth-2025-04-20,claude-code-20250219,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14,advanced-tool-use-2025-11-20";
|
|
115
115
|
const toolArgumentNormalizer = createToolArgumentNormalizer({
|
|
116
116
|
logger,
|
|
117
117
|
providerLabel: "Anthropic",
|
|
@@ -424,11 +424,11 @@ export async function* streamAnthropic(model, context, options) {
|
|
|
424
424
|
"anthropic-version": "2023-06-01",
|
|
425
425
|
...options.headers,
|
|
426
426
|
};
|
|
427
|
-
const
|
|
428
|
-
if (
|
|
427
|
+
const isBearerToken = options.authType === "bearer-token";
|
|
428
|
+
if (isBearerToken) {
|
|
429
429
|
headers.authorization = `Bearer ${apiKey}`;
|
|
430
430
|
headers["anthropic-beta"] = [
|
|
431
|
-
|
|
431
|
+
ANTHROPIC_BEARER_BETA_HEADER,
|
|
432
432
|
...(options.taskBudget ? [ANTHROPIC_TASK_BUDGETS_BETA_HEADER] : []),
|
|
433
433
|
].join(",");
|
|
434
434
|
}
|