@evalops/maestro 0.10.18 → 0.10.20
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 +56 -1
- package/dist/agent/action-approval.d.ts +12 -2
- package/dist/agent/action-approval.d.ts.map +1 -1
- package/dist/agent/action-approval.js +19 -32
- package/dist/agent/action-approval.js.map +1 -1
- package/dist/agent/agent.d.ts +1 -0
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +26 -0
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/compaction.d.ts +2 -0
- package/dist/agent/compaction.d.ts.map +1 -1
- package/dist/agent/compaction.js +4 -2
- package/dist/agent/compaction.js.map +1 -1
- package/dist/agent/index.d.ts +1 -1
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +1 -1
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/modes.d.ts +56 -4
- package/dist/agent/modes.d.ts.map +1 -1
- package/dist/agent/modes.js +163 -2
- package/dist/agent/modes.js.map +1 -1
- package/dist/agent/prompt-recovery.d.ts.map +1 -1
- package/dist/agent/prompt-recovery.js +1 -3
- package/dist/agent/prompt-recovery.js.map +1 -1
- package/dist/agent/providers/anthropic.d.ts.map +1 -1
- package/dist/agent/providers/anthropic.js +9 -1
- package/dist/agent/providers/anthropic.js.map +1 -1
- package/dist/agent/providers/codex-app-server.d.ts +12 -0
- package/dist/agent/providers/codex-app-server.d.ts.map +1 -0
- package/dist/agent/providers/codex-app-server.js +788 -0
- package/dist/agent/providers/codex-app-server.js.map +1 -0
- package/dist/agent/providers/google-gemini-cli.js +14 -3
- package/dist/agent/providers/google.js +22 -3
- package/dist/agent/providers/scripted.d.ts +11 -0
- package/dist/agent/providers/scripted.d.ts.map +1 -0
- package/dist/agent/providers/scripted.js +399 -0
- package/dist/agent/providers/scripted.js.map +1 -0
- package/dist/agent/providers/vertex.js +14 -3
- package/dist/agent/scenario-source.d.ts +19 -0
- package/dist/agent/scenario-source.d.ts.map +1 -0
- package/dist/agent/scenario-source.js +112 -0
- package/dist/agent/scenario-source.js.map +1 -0
- package/dist/agent/subagent-specs.d.ts +1 -1
- package/dist/agent/subagent-specs.js +1 -1
- package/dist/agent/subagent-specs.js.map +1 -1
- package/dist/agent/swarm/executor.d.ts +25 -0
- package/dist/agent/swarm/executor.d.ts.map +1 -1
- package/dist/agent/swarm/executor.js +795 -20
- package/dist/agent/swarm/executor.js.map +1 -1
- package/dist/agent/swarm/runtime-events.d.ts +11 -0
- package/dist/agent/swarm/runtime-events.d.ts.map +1 -0
- package/dist/agent/swarm/runtime-events.js +26 -0
- package/dist/agent/swarm/runtime-events.js.map +1 -0
- package/dist/agent/swarm/types.d.ts +78 -0
- package/dist/agent/swarm/types.d.ts.map +1 -1
- package/dist/agent/swarm/types.js.map +1 -1
- package/dist/agent/tracing.d.ts +1 -1
- package/dist/agent/tracing.d.ts.map +1 -1
- package/dist/agent/tracing.js +17 -9
- 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 +14 -0
- package/dist/agent/transport/create-provider-stream.js.map +1 -1
- package/dist/agent/transport/stable-stringify.d.ts +2 -0
- package/dist/agent/transport/stable-stringify.d.ts.map +1 -0
- package/dist/agent/transport/stable-stringify.js +14 -0
- package/dist/agent/transport/stable-stringify.js.map +1 -0
- package/dist/agent/transport/tool-execution-bridge.d.ts.map +1 -1
- package/dist/agent/transport/tool-execution-bridge.js +2 -15
- package/dist/agent/transport/tool-execution-bridge.js.map +1 -1
- package/dist/agent/transport/tool-safety-pipeline.d.ts +5 -1
- package/dist/agent/transport/tool-safety-pipeline.d.ts.map +1 -1
- package/dist/agent/transport/tool-safety-pipeline.js +184 -36
- package/dist/agent/transport/tool-safety-pipeline.js.map +1 -1
- package/dist/agent/transport.d.ts +8 -0
- package/dist/agent/transport.d.ts.map +1 -1
- package/dist/agent/transport.js +1613 -68
- package/dist/agent/transport.js.map +1 -1
- package/dist/agent/types.d.ts +170 -2
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/api/enterprise-routes.d.ts.map +1 -1
- package/dist/api/enterprise-routes.js +34 -3
- package/dist/api/enterprise-routes.js.map +1 -1
- package/dist/app-server/in-process-client.d.ts +32 -0
- package/dist/app-server/in-process-client.d.ts.map +1 -0
- package/dist/app-server/in-process-client.js +73 -0
- package/dist/app-server/in-process-client.js.map +1 -0
- package/dist/app-server/session-api.d.ts +36 -0
- package/dist/app-server/session-api.d.ts.map +1 -0
- package/dist/app-server/session-api.js +713 -0
- package/dist/app-server/session-api.js.map +1 -0
- package/dist/approvals/platform-action-approval.d.ts +3 -1
- package/dist/approvals/platform-action-approval.d.ts.map +1 -1
- package/dist/approvals/platform-action-approval.js +16 -9
- package/dist/approvals/platform-action-approval.js.map +1 -1
- package/dist/approvals/service-client.d.ts.map +1 -1
- package/dist/approvals/service-client.js +7 -7
- package/dist/approvals/service-client.js.map +1 -1
- package/dist/audit/logger.d.ts +4 -4
- package/dist/bootstrap/agent-creation-setup.d.ts +4 -0
- package/dist/bootstrap/agent-creation-setup.d.ts.map +1 -1
- package/dist/bootstrap/agent-creation-setup.js +3 -1
- package/dist/bootstrap/agent-creation-setup.js.map +1 -1
- package/dist/bootstrap/auth-setup.js +1 -1
- package/dist/bootstrap/auth-setup.js.map +1 -1
- package/dist/bootstrap/event-subscriptions-setup.d.ts +6 -0
- package/dist/bootstrap/event-subscriptions-setup.d.ts.map +1 -1
- package/dist/bootstrap/event-subscriptions-setup.js +26 -2
- package/dist/bootstrap/event-subscriptions-setup.js.map +1 -1
- package/dist/bootstrap/model-resolution-setup.d.ts.map +1 -1
- package/dist/bootstrap/model-resolution-setup.js +4 -1
- package/dist/bootstrap/model-resolution-setup.js.map +1 -1
- package/dist/bootstrap/tools-setup.d.ts +2 -1
- package/dist/bootstrap/tools-setup.d.ts.map +1 -1
- package/dist/bootstrap/tools-setup.js +5 -1
- package/dist/bootstrap/tools-setup.js.map +1 -1
- package/dist/cli/args.d.ts +9 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +130 -5
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/commands/a2a.d.ts +9 -0
- package/dist/cli/commands/a2a.d.ts.map +1 -0
- package/dist/cli/commands/a2a.js +1714 -0
- package/dist/cli/commands/a2a.js.map +1 -0
- package/dist/cli/commands/agents.d.ts +16 -2
- package/dist/cli/commands/agents.d.ts.map +1 -1
- package/dist/cli/commands/agents.js +223 -35
- package/dist/cli/commands/agents.js.map +1 -1
- package/dist/cli/commands/codex.d.ts +1 -1
- package/dist/cli/commands/codex.d.ts.map +1 -1
- package/dist/cli/commands/codex.js +145 -39
- package/dist/cli/commands/codex.js.map +1 -1
- package/dist/cli/commands/context.d.ts +10 -0
- package/dist/cli/commands/context.d.ts.map +1 -0
- package/dist/cli/commands/context.js +176 -0
- package/dist/cli/commands/context.js.map +1 -0
- package/dist/cli/commands/hosted-runner.d.ts +1 -0
- package/dist/cli/commands/hosted-runner.d.ts.map +1 -1
- package/dist/cli/commands/hosted-runner.js +9 -1
- package/dist/cli/commands/hosted-runner.js.map +1 -1
- package/dist/cli/commands/modes.d.ts +8 -0
- package/dist/cli/commands/modes.d.ts.map +1 -0
- package/dist/cli/commands/modes.js +151 -0
- package/dist/cli/commands/modes.js.map +1 -0
- package/dist/cli/commands/operating-plane.d.ts +14 -0
- package/dist/cli/commands/operating-plane.d.ts.map +1 -0
- package/dist/cli/commands/operating-plane.js +160 -0
- package/dist/cli/commands/operating-plane.js.map +1 -0
- package/dist/cli/commands/run.d.ts +87 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +356 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/scenario.d.ts +7 -0
- package/dist/cli/commands/scenario.d.ts.map +1 -0
- package/dist/cli/commands/scenario.js +195 -0
- package/dist/cli/commands/scenario.js.map +1 -0
- package/dist/cli/commands/skill.d.ts +7 -0
- package/dist/cli/commands/skill.d.ts.map +1 -0
- package/dist/cli/commands/skill.js +286 -0
- package/dist/cli/commands/skill.js.map +1 -0
- package/dist/cli/headless-protocol.d.ts +55 -1
- package/dist/cli/headless-protocol.d.ts.map +1 -1
- package/dist/cli/headless-protocol.js +446 -7
- package/dist/cli/headless-protocol.js.map +1 -1
- package/dist/cli/headless-runtime-selection.d.ts +38 -0
- package/dist/cli/headless-runtime-selection.d.ts.map +1 -0
- package/dist/cli/headless-runtime-selection.js +48 -0
- package/dist/cli/headless-runtime-selection.js.map +1 -0
- package/dist/cli/headless.d.ts +5 -1
- package/dist/cli/headless.d.ts.map +1 -1
- package/dist/cli/headless.js +11 -1
- package/dist/cli/headless.js.map +1 -1
- package/dist/cli/help.d.ts +3 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +135 -30
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/system-prompt.d.ts +22 -4
- package/dist/cli/system-prompt.d.ts.map +1 -1
- package/dist/cli/system-prompt.js +224 -127
- package/dist/cli/system-prompt.js.map +1 -1
- package/dist/cli-tui/commands/a2a-handlers.d.ts +7 -0
- package/dist/cli-tui/commands/a2a-handlers.d.ts.map +1 -0
- package/dist/cli-tui/commands/a2a-handlers.js +160 -0
- package/dist/cli-tui/commands/a2a-handlers.js.map +1 -0
- package/dist/cli-tui/commands/command-catalog.d.ts.map +1 -1
- package/dist/cli-tui/commands/command-catalog.js +15 -0
- package/dist/cli-tui/commands/command-catalog.js.map +1 -1
- package/dist/cli-tui/commands/command-registry-adapter.js +10 -1
- package/dist/cli-tui/commands/command-registry-adapter.js.map +1 -1
- package/dist/cli-tui/commands/handlers/mode-handler.d.ts.map +1 -1
- package/dist/cli-tui/commands/handlers/mode-handler.js +22 -10
- package/dist/cli-tui/commands/handlers/mode-handler.js.map +1 -1
- package/dist/cli-tui/commands/mcp-handlers.d.ts.map +1 -1
- package/dist/cli-tui/commands/mcp-handlers.js +6 -5
- package/dist/cli-tui/commands/mcp-handlers.js.map +1 -1
- package/dist/cli-tui/commands/types.d.ts +1 -0
- 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/commands/utility-handlers.d.ts +4 -0
- package/dist/cli-tui/commands/utility-handlers.d.ts.map +1 -1
- package/dist/cli-tui/commands/utility-handlers.js +45 -6
- package/dist/cli-tui/commands/utility-handlers.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 +14 -5
- 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 +14 -5
- package/dist/cli-tui/run/streaming-shell-command.js.map +1 -1
- package/dist/cli-tui/selectors/model-selector.d.ts +1 -0
- package/dist/cli-tui/selectors/model-selector.d.ts.map +1 -1
- package/dist/cli-tui/selectors/model-selector.js +6 -2
- package/dist/cli-tui/selectors/model-selector.js.map +1 -1
- package/dist/cli-tui/tui-renderer/command-registry-options.d.ts.map +1 -1
- package/dist/cli-tui/tui-renderer/command-registry-options.js +5 -0
- package/dist/cli-tui/tui-renderer/command-registry-options.js.map +1 -1
- package/dist/cli-tui/utils/commands/review-prompt.d.ts +1 -1
- package/dist/cli-tui/utils/commands/review-prompt.d.ts.map +1 -1
- package/dist/cli-tui/utils/commands/review-prompt.js +8 -3
- package/dist/cli-tui/utils/commands/review-prompt.js.map +1 -1
- package/dist/cli-tui/utils/runtime-badges.d.ts +1 -0
- package/dist/cli-tui/utils/runtime-badges.d.ts.map +1 -1
- package/dist/cli-tui/utils/runtime-badges.js +7 -0
- package/dist/cli-tui/utils/runtime-badges.js.map +1 -1
- package/dist/cli-tui/utils/text-formatting.d.ts +1 -0
- package/dist/cli-tui/utils/text-formatting.d.ts.map +1 -1
- package/dist/cli-tui/utils/text-formatting.js +5 -0
- package/dist/cli-tui/utils/text-formatting.js.map +1 -1
- package/dist/cli.js +49158 -26161
- package/dist/cli.js.map +1 -1
- package/dist/codex/app-server-client.d.ts +139 -0
- package/dist/codex/app-server-client.d.ts.map +1 -0
- package/dist/codex/app-server-client.js +352 -0
- package/dist/codex/app-server-client.js.map +1 -0
- package/dist/codex/compatibility.d.ts +48 -0
- package/dist/codex/compatibility.d.ts.map +1 -0
- package/dist/codex/compatibility.js +344 -0
- package/dist/codex/compatibility.js.map +1 -0
- package/dist/codex/subagent-dispatch-table.d.ts +66 -0
- package/dist/codex/subagent-dispatch-table.d.ts.map +1 -0
- package/dist/codex/subagent-dispatch-table.js +127 -0
- package/dist/codex/subagent-dispatch-table.js.map +1 -0
- package/dist/codex/subagent-workgraph.d.ts +56 -0
- package/dist/codex/subagent-workgraph.d.ts.map +1 -0
- package/dist/codex/subagent-workgraph.js +89 -0
- package/dist/codex/subagent-workgraph.js.map +1 -0
- package/dist/config/constants.d.ts +3 -1
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +9 -0
- package/dist/config/constants.js.map +1 -1
- package/dist/config/feature-flags.d.ts +10 -1
- package/dist/config/feature-flags.d.ts.map +1 -1
- package/dist/config/feature-flags.js +17 -6
- package/dist/config/feature-flags.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/toml-config.d.ts +32 -0
- package/dist/config/toml-config.d.ts.map +1 -1
- package/dist/config/toml-config.js +152 -43
- package/dist/config/toml-config.js.map +1 -1
- package/dist/connectors/service-client.d.ts.map +1 -1
- package/dist/connectors/service-client.js +4 -7
- package/dist/connectors/service-client.js.map +1 -1
- package/dist/context/manifest-types.d.ts +59 -0
- package/dist/context/manifest-types.d.ts.map +1 -0
- package/dist/context/manifest-types.js +2 -0
- package/dist/context/manifest-types.js.map +1 -0
- package/dist/context/manifest.d.ts +16 -0
- package/dist/context/manifest.d.ts.map +1 -0
- package/dist/context/manifest.js +503 -0
- package/dist/context/manifest.js.map +1 -0
- package/dist/db/schema.d.ts +10 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js.map +1 -1
- package/dist/evalops/env-aliases.d.ts +13 -0
- package/dist/evalops/env-aliases.d.ts.map +1 -0
- package/dist/evalops/env-aliases.js +60 -0
- package/dist/evalops/env-aliases.js.map +1 -0
- package/dist/evalops/managed-context.d.ts.map +1 -1
- package/dist/evalops/managed-context.js +28 -62
- package/dist/evalops/managed-context.js.map +1 -1
- package/dist/guardian/config.d.ts.map +1 -1
- package/dist/guardian/config.js +1 -0
- package/dist/guardian/config.js.map +1 -1
- package/dist/guardian/runner.d.ts +2 -0
- package/dist/guardian/runner.d.ts.map +1 -1
- package/dist/guardian/runner.js +105 -2
- package/dist/guardian/runner.js.map +1 -1
- package/dist/guardian/types.d.ts +1 -0
- package/dist/guardian/types.d.ts.map +1 -1
- package/dist/guardian/types.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +267 -55
- package/dist/main.js.map +1 -1
- package/dist/mcp/config.d.ts.map +1 -1
- package/dist/mcp/config.js +89 -7
- package/dist/mcp/config.js.map +1 -1
- package/dist/mcp/manager.d.ts +5 -1
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +159 -4
- package/dist/mcp/manager.js.map +1 -1
- package/dist/mcp/platform-plugin.d.ts.map +1 -1
- package/dist/mcp/platform-plugin.js +9 -26
- package/dist/mcp/platform-plugin.js.map +1 -1
- package/dist/mcp/schema.d.ts +15 -0
- package/dist/mcp/schema.d.ts.map +1 -1
- package/dist/mcp/schema.js +24 -0
- package/dist/mcp/schema.js.map +1 -1
- package/dist/mcp/tool-bridge.d.ts +39 -10
- package/dist/mcp/tool-bridge.d.ts.map +1 -1
- package/dist/mcp/tool-bridge.js +101 -24
- package/dist/mcp/tool-bridge.js.map +1 -1
- package/dist/mcp/types.d.ts +27 -0
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/mcp/types.js.map +1 -1
- package/dist/mcp/workspace-trust.d.ts +10 -0
- package/dist/mcp/workspace-trust.d.ts.map +1 -0
- package/dist/mcp/workspace-trust.js +295 -0
- package/dist/mcp/workspace-trust.js.map +1 -0
- package/dist/memory/service-client.d.ts +1 -0
- package/dist/memory/service-client.d.ts.map +1 -1
- package/dist/memory/service-client.js +194 -9
- package/dist/memory/service-client.js.map +1 -1
- package/dist/models/builtin.d.ts.map +1 -1
- package/dist/models/builtin.js +66 -25
- 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 +2 -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/device-identity.d.ts.map +1 -1
- package/dist/oauth/device-identity.js +1 -3
- package/dist/oauth/device-identity.js.map +1 -1
- package/dist/oauth/evalops.d.ts.map +1 -1
- package/dist/oauth/evalops.js +2 -5
- package/dist/oauth/evalops.js.map +1 -1
- package/dist/opentelemetry.d.ts.map +1 -1
- package/dist/opentelemetry.js +12 -12
- package/dist/opentelemetry.js.map +1 -1
- package/dist/package-version.d.ts +2 -0
- package/dist/package-version.d.ts.map +1 -0
- package/dist/package-version.js +11 -0
- package/dist/package-version.js.map +1 -0
- package/dist/packages/constants.d.ts +3 -0
- package/dist/packages/constants.d.ts.map +1 -0
- package/dist/packages/constants.js +3 -0
- package/dist/packages/constants.js.map +1 -0
- package/dist/packages/inspection.d.ts.map +1 -1
- package/dist/packages/inspection.js +2 -1
- package/dist/packages/inspection.js.map +1 -1
- package/dist/packages/search.d.ts.map +1 -1
- package/dist/packages/search.js +1 -1
- package/dist/packages/search.js.map +1 -1
- package/dist/platform/a2a-capability-market.d.ts +21 -0
- package/dist/platform/a2a-capability-market.d.ts.map +1 -0
- package/dist/platform/a2a-capability-market.js +176 -0
- package/dist/platform/a2a-capability-market.js.map +1 -0
- package/dist/platform/a2a-client.d.ts +119 -0
- package/dist/platform/a2a-client.d.ts.map +1 -1
- package/dist/platform/a2a-client.js +413 -24
- package/dist/platform/a2a-client.js.map +1 -1
- package/dist/platform/a2a-fleet.d.ts +41 -0
- package/dist/platform/a2a-fleet.d.ts.map +1 -0
- package/dist/platform/a2a-fleet.js +109 -0
- package/dist/platform/a2a-fleet.js.map +1 -0
- package/dist/platform/a2a-maestro-peer.d.ts +20 -0
- package/dist/platform/a2a-maestro-peer.d.ts.map +1 -0
- package/dist/platform/a2a-maestro-peer.js +176 -0
- package/dist/platform/a2a-maestro-peer.js.map +1 -0
- package/dist/platform/a2a-peer-pairing.d.ts +107 -0
- package/dist/platform/a2a-peer-pairing.d.ts.map +1 -0
- package/dist/platform/a2a-peer-pairing.js +489 -0
- package/dist/platform/a2a-peer-pairing.js.map +1 -0
- package/dist/platform/a2a-peer-registry.d.ts +68 -0
- package/dist/platform/a2a-peer-registry.d.ts.map +1 -0
- package/dist/platform/a2a-peer-registry.js +320 -0
- package/dist/platform/a2a-peer-registry.js.map +1 -0
- package/dist/platform/a2a-task-ledger.d.ts +86 -0
- package/dist/platform/a2a-task-ledger.d.ts.map +1 -0
- package/dist/platform/a2a-task-ledger.js +546 -0
- package/dist/platform/a2a-task-ledger.js.map +1 -0
- package/dist/platform/a2a-work-graph.d.ts +43 -0
- package/dist/platform/a2a-work-graph.d.ts.map +1 -0
- package/dist/platform/a2a-work-graph.js +267 -0
- package/dist/platform/a2a-work-graph.js.map +1 -0
- package/dist/platform/agent-registry-client.d.ts +327 -0
- package/dist/platform/agent-registry-client.d.ts.map +1 -0
- package/dist/platform/agent-registry-client.js +803 -0
- package/dist/platform/agent-registry-client.js.map +1 -0
- package/dist/platform/agent-runtime-client.d.ts +135 -1
- package/dist/platform/agent-runtime-client.d.ts.map +1 -1
- package/dist/platform/agent-runtime-client.js +467 -10
- package/dist/platform/agent-runtime-client.js.map +1 -1
- package/dist/platform/cerebro-facts-client.d.ts.map +1 -1
- package/dist/platform/cerebro-facts-client.js +4 -7
- package/dist/platform/cerebro-facts-client.js.map +1 -1
- package/dist/platform/client.d.ts.map +1 -1
- package/dist/platform/client.js +3 -12
- package/dist/platform/client.js.map +1 -1
- package/dist/platform/core-services.d.ts +68 -0
- package/dist/platform/core-services.d.ts.map +1 -1
- package/dist/platform/core-services.js +68 -0
- package/dist/platform/core-services.js.map +1 -1
- package/dist/platform/fermata-eval-client.d.ts +195 -0
- package/dist/platform/fermata-eval-client.d.ts.map +1 -0
- package/dist/platform/fermata-eval-client.js +146 -0
- package/dist/platform/fermata-eval-client.js.map +1 -0
- package/dist/platform/fermata-scenario-suite.d.ts +99 -0
- package/dist/platform/fermata-scenario-suite.d.ts.map +1 -0
- package/dist/platform/fermata-scenario-suite.js +459 -0
- package/dist/platform/fermata-scenario-suite.js.map +1 -0
- package/dist/platform/maestro-timeline-client.d.ts.map +1 -1
- package/dist/platform/maestro-timeline-client.js +5 -11
- package/dist/platform/maestro-timeline-client.js.map +1 -1
- package/dist/platform/operating-plane-client.d.ts +156 -0
- package/dist/platform/operating-plane-client.d.ts.map +1 -0
- package/dist/platform/operating-plane-client.js +131 -0
- package/dist/platform/operating-plane-client.js.map +1 -0
- package/dist/platform/operating-plane-summary.d.ts +47 -0
- package/dist/platform/operating-plane-summary.d.ts.map +1 -0
- package/dist/platform/operating-plane-summary.js +209 -0
- package/dist/platform/operating-plane-summary.js.map +1 -0
- package/dist/platform/tool-execution-client.d.ts.map +1 -1
- package/dist/platform/tool-execution-client.js +4 -11
- package/dist/platform/tool-execution-client.js.map +1 -1
- package/dist/prompts/service-client.d.ts.map +1 -1
- package/dist/prompts/service-client.js +3 -5
- package/dist/prompts/service-client.js.map +1 -1
- package/dist/prompts/system-prompt.d.ts +3 -0
- package/dist/prompts/system-prompt.d.ts.map +1 -1
- package/dist/prompts/system-prompt.js +13 -3
- package/dist/prompts/system-prompt.js.map +1 -1
- package/dist/prompts/types.d.ts +2 -0
- package/dist/prompts/types.d.ts.map +1 -1
- package/dist/prompts/types.js.map +1 -1
- package/dist/providers/api-keys.d.ts +1 -1
- package/dist/providers/api-keys.d.ts.map +1 -1
- package/dist/providers/api-keys.js +2 -1
- package/dist/providers/api-keys.js.map +1 -1
- package/dist/providers/auth.d.ts.map +1 -1
- package/dist/providers/auth.js +48 -25
- package/dist/providers/auth.js.map +1 -1
- package/dist/remote-runner/attach-client.d.ts.map +1 -1
- package/dist/remote-runner/attach-client.js +1 -0
- package/dist/remote-runner/attach-client.js.map +1 -1
- package/dist/remote-runner/client.d.ts.map +1 -1
- package/dist/remote-runner/client.js +4 -7
- package/dist/remote-runner/client.js.map +1 -1
- package/dist/rpc/rpc-types.d.ts.map +1 -1
- package/dist/rpc/rpc-types.js +1 -0
- package/dist/rpc/rpc-types.js.map +1 -1
- package/dist/safety/action-firewall.d.ts.map +1 -1
- package/dist/safety/action-firewall.js +69 -6
- package/dist/safety/action-firewall.js.map +1 -1
- package/dist/safety/attack-patterns.d.ts.map +1 -1
- package/dist/safety/attack-patterns.js +31 -14
- package/dist/safety/attack-patterns.js.map +1 -1
- package/dist/safety/bash-parser.d.ts.map +1 -1
- package/dist/safety/bash-parser.js +4 -3
- package/dist/safety/bash-parser.js.map +1 -1
- package/dist/safety/execpolicy.d.ts +15 -3
- package/dist/safety/execpolicy.d.ts.map +1 -1
- package/dist/safety/execpolicy.js +248 -37
- package/dist/safety/execpolicy.js.map +1 -1
- package/dist/safety/governance-service-client.d.ts.map +1 -1
- package/dist/safety/governance-service-client.js +4 -7
- package/dist/safety/governance-service-client.js.map +1 -1
- package/dist/safety/guarded-files.d.ts +34 -0
- package/dist/safety/guarded-files.d.ts.map +1 -0
- package/dist/safety/guarded-files.js +372 -0
- package/dist/safety/guarded-files.js.map +1 -0
- package/dist/safety/loop-detector.d.ts.map +1 -1
- package/dist/safety/loop-detector.js +6 -1
- package/dist/safety/loop-detector.js.map +1 -1
- package/dist/safety/permission-profile.d.ts +47 -0
- package/dist/safety/permission-profile.d.ts.map +1 -0
- package/dist/safety/permission-profile.js +349 -0
- package/dist/safety/permission-profile.js.map +1 -0
- package/dist/safety/safety-middleware.d.ts +5 -1
- package/dist/safety/safety-middleware.d.ts.map +1 -1
- package/dist/safety/safety-middleware.js +3 -2
- package/dist/safety/safety-middleware.js.map +1 -1
- package/dist/safety/suspicious-patterns.d.ts.map +1 -1
- package/dist/safety/suspicious-patterns.js +12 -7
- package/dist/safety/suspicious-patterns.js.map +1 -1
- package/dist/safety/tool-categorization.js +1 -1
- package/dist/safety/tool-categorization.js.map +1 -1
- package/dist/safety/validators/path-policy-validator.d.ts.map +1 -1
- package/dist/safety/validators/path-policy-validator.js +7 -0
- package/dist/safety/validators/path-policy-validator.js.map +1 -1
- package/dist/sandbox/index.d.ts +6 -1
- package/dist/sandbox/index.d.ts.map +1 -1
- package/dist/sandbox/index.js +30 -4
- package/dist/sandbox/index.js.map +1 -1
- package/dist/sandbox/native-sandbox.d.ts +3 -0
- package/dist/sandbox/native-sandbox.d.ts.map +1 -1
- package/dist/sandbox/native-sandbox.js +139 -18
- package/dist/sandbox/native-sandbox.js.map +1 -1
- package/dist/sentry.d.ts +17 -0
- package/dist/sentry.d.ts.map +1 -0
- package/dist/sentry.js +91 -0
- package/dist/sentry.js.map +1 -0
- package/dist/server/agent-runtime-ledger.d.ts +141 -0
- package/dist/server/agent-runtime-ledger.d.ts.map +1 -0
- package/dist/server/agent-runtime-ledger.js +334 -0
- package/dist/server/agent-runtime-ledger.js.map +1 -0
- package/dist/server/agent-trajectory-inspection.d.ts +104 -0
- package/dist/server/agent-trajectory-inspection.d.ts.map +1 -0
- package/dist/server/agent-trajectory-inspection.js +168 -0
- package/dist/server/agent-trajectory-inspection.js.map +1 -0
- package/dist/server/agent-trajectory-replay.d.ts +56 -0
- package/dist/server/agent-trajectory-replay.d.ts.map +1 -0
- package/dist/server/agent-trajectory-replay.js +214 -0
- package/dist/server/agent-trajectory-replay.js.map +1 -0
- package/dist/server/agent-trajectory-scenarios.d.ts +109 -0
- package/dist/server/agent-trajectory-scenarios.d.ts.map +1 -0
- package/dist/server/agent-trajectory-scenarios.js +822 -0
- package/dist/server/agent-trajectory-scenarios.js.map +1 -0
- package/dist/server/agent-trajectory-scorers.d.ts +61 -0
- package/dist/server/agent-trajectory-scorers.d.ts.map +1 -0
- package/dist/server/agent-trajectory-scorers.js +162 -0
- package/dist/server/agent-trajectory-scorers.js.map +1 -0
- package/dist/server/agent-trajectory-validation.d.ts +7 -0
- package/dist/server/agent-trajectory-validation.d.ts.map +1 -0
- package/dist/server/agent-trajectory-validation.js +101 -0
- package/dist/server/agent-trajectory-validation.js.map +1 -0
- package/dist/server/agent-trajectory.d.ts +50 -0
- package/dist/server/agent-trajectory.d.ts.map +1 -0
- package/dist/server/agent-trajectory.js +159 -0
- package/dist/server/agent-trajectory.js.map +1 -0
- package/dist/server/app-context.d.ts +18 -0
- package/dist/server/app-context.d.ts.map +1 -1
- package/dist/server/app-context.js.map +1 -1
- package/dist/server/handlers/headless-sessions.d.ts.map +1 -1
- package/dist/server/handlers/headless-sessions.js +64 -27
- package/dist/server/handlers/headless-sessions.js.map +1 -1
- package/dist/server/handlers/health.d.ts +6 -0
- package/dist/server/handlers/health.d.ts.map +1 -1
- package/dist/server/handlers/health.js +6 -0
- package/dist/server/handlers/health.js.map +1 -1
- package/dist/server/handlers/hosted-runner-drain.d.ts +69 -1
- package/dist/server/handlers/hosted-runner-drain.d.ts.map +1 -1
- package/dist/server/handlers/hosted-runner-drain.js +309 -18
- package/dist/server/handlers/hosted-runner-drain.js.map +1 -1
- package/dist/server/handlers/hosted-runner-identity.d.ts +16 -0
- package/dist/server/handlers/hosted-runner-identity.d.ts.map +1 -1
- package/dist/server/handlers/hosted-runner-identity.js +43 -0
- package/dist/server/handlers/hosted-runner-identity.js.map +1 -1
- package/dist/server/handlers/mode.d.ts.map +1 -1
- package/dist/server/handlers/mode.js +3 -1
- package/dist/server/handlers/mode.js.map +1 -1
- package/dist/server/handlers/pending-requests.d.ts.map +1 -1
- package/dist/server/handlers/pending-requests.js +336 -51
- package/dist/server/handlers/pending-requests.js.map +1 -1
- package/dist/server/handlers/platform-a2a-push.d.ts +6 -0
- package/dist/server/handlers/platform-a2a-push.d.ts.map +1 -0
- package/dist/server/handlers/platform-a2a-push.js +136 -0
- package/dist/server/handlers/platform-a2a-push.js.map +1 -0
- package/dist/server/handlers/sessions.d.ts.map +1 -1
- package/dist/server/handlers/sessions.js +21 -1
- package/dist/server/handlers/sessions.js.map +1 -1
- package/dist/server/headless-runtime-service.d.ts +9 -2
- package/dist/server/headless-runtime-service.d.ts.map +1 -1
- package/dist/server/headless-runtime-service.js +39 -0
- package/dist/server/headless-runtime-service.js.map +1 -1
- package/dist/server/hosted-agent-runtime-progress.d.ts +144 -0
- package/dist/server/hosted-agent-runtime-progress.d.ts.map +1 -0
- package/dist/server/hosted-agent-runtime-progress.js +1650 -0
- package/dist/server/hosted-agent-runtime-progress.js.map +1 -0
- package/dist/server/hosted-runner-lease.d.ts +41 -0
- package/dist/server/hosted-runner-lease.d.ts.map +1 -0
- package/dist/server/hosted-runner-lease.js +140 -0
- package/dist/server/hosted-runner-lease.js.map +1 -0
- package/dist/server/hosted-session-manager.d.ts +16 -8
- package/dist/server/hosted-session-manager.d.ts.map +1 -1
- package/dist/server/hosted-session-manager.js +98 -76
- package/dist/server/hosted-session-manager.js.map +1 -1
- package/dist/server/junit-xml.d.ts +2 -0
- package/dist/server/junit-xml.d.ts.map +1 -0
- package/dist/server/junit-xml.js +9 -0
- package/dist/server/junit-xml.js.map +1 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +6 -0
- package/dist/server/routes.js.map +1 -1
- package/dist/server/scenario-recorder.d.ts +56 -0
- package/dist/server/scenario-recorder.d.ts.map +1 -0
- package/dist/server/scenario-recorder.js +109 -0
- package/dist/server/scenario-recorder.js.map +1 -0
- package/dist/server/scripted-scenario-runner.d.ts +46 -0
- package/dist/server/scripted-scenario-runner.d.ts.map +1 -0
- package/dist/server/scripted-scenario-runner.js +190 -0
- package/dist/server/scripted-scenario-runner.js.map +1 -0
- package/dist/server/server-middlewares.d.ts +6 -2
- package/dist/server/server-middlewares.d.ts.map +1 -1
- package/dist/server/server-middlewares.js +8 -2
- package/dist/server/server-middlewares.js.map +1 -1
- package/dist/server/server-request-manager.d.ts +9 -1
- package/dist/server/server-request-manager.d.ts.map +1 -1
- package/dist/server/server-request-manager.js +49 -4
- package/dist/server/server-request-manager.js.map +1 -1
- package/dist/services/intelligent-router/service.d.ts +2 -0
- package/dist/services/intelligent-router/service.d.ts.map +1 -1
- package/dist/services/intelligent-router/service.js +4 -0
- package/dist/services/intelligent-router/service.js.map +1 -1
- package/dist/services/service-authority.d.ts +25 -0
- package/dist/services/service-authority.d.ts.map +1 -0
- package/dist/services/service-authority.js +143 -0
- package/dist/services/service-authority.js.map +1 -0
- package/dist/services/workspace-config/service.d.ts +2 -0
- package/dist/services/workspace-config/service.d.ts.map +1 -1
- package/dist/services/workspace-config/service.js +4 -0
- package/dist/services/workspace-config/service.js.map +1 -1
- package/dist/session/manager.d.ts +8 -2
- package/dist/session/manager.d.ts.map +1 -1
- package/dist/session/manager.js +19 -4
- package/dist/session/manager.js.map +1 -1
- package/dist/session/session-branch.d.ts.map +1 -1
- package/dist/session/session-branch.js +5 -1
- package/dist/session/session-branch.js.map +1 -1
- package/dist/session/session-catalog.d.ts +7 -2
- package/dist/session/session-catalog.d.ts.map +1 -1
- package/dist/session/session-catalog.js +13 -2
- package/dist/session/session-catalog.js.map +1 -1
- package/dist/session/session-context.d.ts +6 -2
- package/dist/session/session-context.d.ts.map +1 -1
- package/dist/session/session-context.js +44 -4
- package/dist/session/session-context.js.map +1 -1
- package/dist/session/session-graph-projection.d.ts +32 -0
- package/dist/session/session-graph-projection.d.ts.map +1 -0
- package/dist/session/session-graph-projection.js +133 -0
- package/dist/session/session-graph-projection.js.map +1 -0
- package/dist/session/types.d.ts +18 -0
- package/dist/session/types.d.ts.map +1 -1
- package/dist/session/types.js +8 -0
- package/dist/session/types.js.map +1 -1
- package/dist/session/wire-format.generated.d.ts +3 -0
- package/dist/session/wire-format.generated.d.ts.map +1 -1
- package/dist/session/wire-format.generated.js +20 -0
- package/dist/session/wire-format.generated.js.map +1 -1
- package/dist/skills/eval-harness.d.ts +38 -0
- package/dist/skills/eval-harness.d.ts.map +1 -0
- package/dist/skills/eval-harness.js +112 -0
- package/dist/skills/eval-harness.js.map +1 -0
- package/dist/skills/index.d.ts +5 -1
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +5 -1
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/linter.d.ts +36 -0
- package/dist/skills/linter.d.ts.map +1 -0
- package/dist/skills/linter.js +398 -0
- package/dist/skills/linter.js.map +1 -0
- package/dist/skills/loader.d.ts +36 -6
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js +169 -86
- package/dist/skills/loader.js.map +1 -1
- package/dist/skills/package-contract.d.ts +45 -0
- package/dist/skills/package-contract.d.ts.map +1 -0
- package/dist/skills/package-contract.js +153 -0
- package/dist/skills/package-contract.js.map +1 -0
- package/dist/skills/runtime-activation.d.ts +68 -0
- package/dist/skills/runtime-activation.d.ts.map +1 -0
- package/dist/skills/runtime-activation.js +228 -0
- package/dist/skills/runtime-activation.js.map +1 -0
- package/dist/skills/service-client.d.ts.map +1 -1
- package/dist/skills/service-client.js +3 -4
- package/dist/skills/service-client.js.map +1 -1
- package/dist/skills/tool.d.ts.map +1 -1
- package/dist/skills/tool.js +2 -0
- package/dist/skills/tool.js.map +1 -1
- package/dist/skills/types.d.ts +14 -0
- package/dist/skills/types.d.ts.map +1 -1
- package/dist/skills/types.js.map +1 -1
- package/dist/telemetry/agent-operating-plane-context.d.ts +24 -0
- package/dist/telemetry/agent-operating-plane-context.d.ts.map +1 -0
- package/dist/telemetry/agent-operating-plane-context.js +54 -0
- package/dist/telemetry/agent-operating-plane-context.js.map +1 -0
- package/dist/telemetry/beacon.d.ts +24 -0
- package/dist/telemetry/beacon.d.ts.map +1 -0
- package/dist/telemetry/beacon.js +115 -0
- package/dist/telemetry/beacon.js.map +1 -0
- package/dist/telemetry/cli-command-aggregator.d.ts +36 -0
- package/dist/telemetry/cli-command-aggregator.d.ts.map +1 -0
- package/dist/telemetry/cli-command-aggregator.js +251 -0
- package/dist/telemetry/cli-command-aggregator.js.map +1 -0
- package/dist/telemetry/cli-startup.d.ts +21 -0
- package/dist/telemetry/cli-startup.d.ts.map +1 -0
- package/dist/telemetry/cli-startup.js +83 -0
- package/dist/telemetry/cli-startup.js.map +1 -0
- package/dist/telemetry/disablement.d.ts +13 -0
- package/dist/telemetry/disablement.d.ts.map +1 -0
- package/dist/telemetry/disablement.js +19 -0
- package/dist/telemetry/disablement.js.map +1 -0
- package/dist/telemetry/index.d.ts +6 -2
- package/dist/telemetry/index.d.ts.map +1 -1
- package/dist/telemetry/index.js +6 -2
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/maestro-event-bus.d.ts +52 -0
- package/dist/telemetry/maestro-event-bus.d.ts.map +1 -1
- package/dist/telemetry/maestro-event-bus.js +179 -3
- package/dist/telemetry/maestro-event-bus.js.map +1 -1
- package/dist/telemetry/maestro-event-catalog.d.ts +3 -1
- package/dist/telemetry/maestro-event-catalog.d.ts.map +1 -1
- package/dist/telemetry/maestro-event-catalog.js +2 -0
- package/dist/telemetry/maestro-event-catalog.js.map +1 -1
- package/dist/telemetry/maestro-platform-replay-fixture.d.ts.map +1 -1
- package/dist/telemetry/maestro-platform-replay-fixture.js +74 -9
- package/dist/telemetry/maestro-platform-replay-fixture.js.map +1 -1
- package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts +1 -1
- package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts.map +1 -1
- package/dist/telemetry/maestro-publisher-conformance-fixture.js +46 -11
- package/dist/telemetry/maestro-publisher-conformance-fixture.js.map +1 -1
- package/dist/telemetry/mcp-beacon.d.ts +20 -0
- package/dist/telemetry/mcp-beacon.d.ts.map +1 -0
- package/dist/telemetry/mcp-beacon.js +54 -0
- package/dist/telemetry/mcp-beacon.js.map +1 -0
- package/dist/telemetry/metadata-normalization.d.ts +7 -0
- package/dist/telemetry/metadata-normalization.d.ts.map +1 -0
- package/dist/telemetry/metadata-normalization.js +189 -0
- package/dist/telemetry/metadata-normalization.js.map +1 -0
- package/dist/telemetry/meter-service-client.d.ts.map +1 -1
- package/dist/telemetry/meter-service-client.js +5 -10
- package/dist/telemetry/meter-service-client.js.map +1 -1
- package/dist/telemetry/metrics.d.ts +123 -0
- package/dist/telemetry/metrics.d.ts.map +1 -0
- package/dist/telemetry/metrics.js +184 -0
- package/dist/telemetry/metrics.js.map +1 -0
- package/dist/telemetry/turn-tracker.d.ts +1 -0
- package/dist/telemetry/turn-tracker.d.ts.map +1 -1
- package/dist/telemetry/turn-tracker.js +22 -1
- package/dist/telemetry/turn-tracker.js.map +1 -1
- package/dist/telemetry/wide-events.d.ts +31 -1
- package/dist/telemetry/wide-events.d.ts.map +1 -1
- package/dist/telemetry/wide-events.js +229 -1
- package/dist/telemetry/wide-events.js.map +1 -1
- package/dist/telemetry.d.ts +39 -3
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +160 -3
- package/dist/telemetry.js.map +1 -1
- package/dist/testing/test-verification-hook.d.ts.map +1 -1
- package/dist/testing/test-verification-hook.js +34 -21
- package/dist/testing/test-verification-hook.js.map +1 -1
- package/dist/tools/apply-patch-parser.d.ts +26 -0
- package/dist/tools/apply-patch-parser.d.ts.map +1 -0
- package/dist/tools/apply-patch-parser.js +146 -0
- package/dist/tools/apply-patch-parser.js.map +1 -0
- package/dist/tools/apply-patch.d.ts +42 -0
- package/dist/tools/apply-patch.d.ts.map +1 -0
- package/dist/tools/apply-patch.js +648 -0
- package/dist/tools/apply-patch.js.map +1 -0
- package/dist/tools/ask-user.d.ts +1 -0
- package/dist/tools/ask-user.d.ts.map +1 -1
- package/dist/tools/background/tool-handler.d.ts +1 -0
- package/dist/tools/background/tool-handler.d.ts.map +1 -1
- package/dist/tools/bash.d.ts +1 -0
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/codesearch.d.ts +1 -0
- package/dist/tools/codesearch.d.ts.map +1 -1
- package/dist/tools/conductor-client.d.ts +1 -0
- package/dist/tools/conductor-client.d.ts.map +1 -1
- package/dist/tools/conductor-client.js +63 -0
- package/dist/tools/conductor-client.js.map +1 -1
- package/dist/tools/diff.d.ts +1 -0
- package/dist/tools/diff.d.ts.map +1 -1
- package/dist/tools/edit.d.ts +1 -0
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/extract-document.d.ts +1 -0
- package/dist/tools/extract-document.d.ts.map +1 -1
- package/dist/tools/find.d.ts +10 -0
- package/dist/tools/find.d.ts.map +1 -1
- package/dist/tools/find.js +236 -27
- package/dist/tools/find.js.map +1 -1
- package/dist/tools/gh.d.ts +3 -0
- package/dist/tools/gh.d.ts.map +1 -1
- package/dist/tools/index.d.ts +50 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +4 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list.d.ts +1 -0
- package/dist/tools/list.d.ts.map +1 -1
- package/dist/tools/notebook.d.ts +1 -0
- package/dist/tools/notebook.d.ts.map +1 -1
- package/dist/tools/oracle.d.ts +1 -0
- package/dist/tools/oracle.d.ts.map +1 -1
- package/dist/tools/oracle.js +17 -32
- package/dist/tools/oracle.js.map +1 -1
- package/dist/tools/parallel-execution.d.ts +13 -2
- package/dist/tools/parallel-execution.d.ts.map +1 -1
- package/dist/tools/parallel-execution.js +178 -7
- package/dist/tools/parallel-execution.js.map +1 -1
- package/dist/tools/parallel-ripgrep.d.ts +1 -0
- package/dist/tools/parallel-ripgrep.d.ts.map +1 -1
- package/dist/tools/pipeline.d.ts +4 -0
- package/dist/tools/pipeline.d.ts.map +1 -1
- package/dist/tools/read.d.ts +1 -0
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/search.d.ts +1 -0
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/status.d.ts +1 -0
- package/dist/tools/status.d.ts.map +1 -1
- package/dist/tools/todo.d.ts +1 -0
- package/dist/tools/todo.d.ts.map +1 -1
- package/dist/tools/tool-dsl.d.ts +5 -1
- package/dist/tools/tool-dsl.d.ts.map +1 -1
- package/dist/tools/tool-dsl.js +1 -0
- package/dist/tools/tool-dsl.js.map +1 -1
- package/dist/tools/tool-result-cache.d.ts.map +1 -1
- package/dist/tools/tool-result-cache.js +1 -0
- package/dist/tools/tool-result-cache.js.map +1 -1
- package/dist/tools/typebox-tool.d.ts.map +1 -1
- package/dist/tools/typebox-tool.js +3 -0
- package/dist/tools/typebox-tool.js.map +1 -1
- package/dist/tools/webfetch.d.ts +1 -0
- package/dist/tools/webfetch.d.ts.map +1 -1
- package/dist/tools/websearch.d.ts +1 -0
- package/dist/tools/websearch.d.ts.map +1 -1
- package/dist/tools/write.d.ts +1 -0
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/utils/abort-error.d.ts +2 -0
- package/dist/utils/abort-error.d.ts.map +1 -0
- package/dist/utils/abort-error.js +7 -0
- package/dist/utils/abort-error.js.map +1 -0
- package/dist/utils/downstream.d.ts.map +1 -1
- package/dist/utils/downstream.js +4 -0
- package/dist/utils/downstream.js.map +1 -1
- package/dist/utils/logger.d.ts +3 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +14 -3
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/path-containment.d.ts +2 -0
- package/dist/utils/path-containment.d.ts.map +1 -0
- package/dist/utils/path-containment.js +14 -0
- package/dist/utils/path-containment.js.map +1 -0
- package/dist/utils/prompt-safe-text.d.ts +7 -0
- package/dist/utils/prompt-safe-text.d.ts.map +1 -0
- package/dist/utils/prompt-safe-text.js +44 -0
- package/dist/utils/prompt-safe-text.js.map +1 -0
- package/dist/version.json +2 -2
- package/dist/web-server.d.ts.map +1 -1
- package/dist/web-server.js +32 -7
- package/dist/web-server.js.map +1 -1
- package/dist/workspace/root-resolver.d.ts +4 -1
- package/dist/workspace/root-resolver.d.ts.map +1 -1
- package/dist/workspace/root-resolver.js +16 -6
- package/dist/workspace/root-resolver.js.map +1 -1
- package/node_modules/@evalops/contracts/dist/advisor-effort.d.ts +8 -0
- package/node_modules/@evalops/contracts/dist/advisor-effort.d.ts.map +1 -0
- package/node_modules/@evalops/contracts/dist/advisor-effort.js +35 -0
- package/node_modules/@evalops/contracts/dist/advisor-effort.js.map +1 -0
- package/node_modules/@evalops/contracts/dist/delegation-prompt.d.ts +10 -0
- package/node_modules/@evalops/contracts/dist/delegation-prompt.d.ts.map +1 -0
- package/node_modules/@evalops/contracts/dist/delegation-prompt.js +48 -0
- package/node_modules/@evalops/contracts/dist/delegation-prompt.js.map +1 -0
- package/node_modules/@evalops/contracts/dist/guarded-files-settings.d.ts +20 -0
- package/node_modules/@evalops/contracts/dist/guarded-files-settings.d.ts.map +1 -0
- package/node_modules/@evalops/contracts/dist/guarded-files-settings.js +147 -0
- package/node_modules/@evalops/contracts/dist/guarded-files-settings.js.map +1 -0
- package/node_modules/@evalops/contracts/dist/headless-protocol-generated.d.ts +2 -0
- package/node_modules/@evalops/contracts/dist/headless-protocol-generated.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/headless-protocol-generated.js +1 -0
- package/node_modules/@evalops/contracts/dist/headless-protocol-generated.js.map +1 -1
- package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts +280 -5
- 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 +36 -1
- package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js.map +1 -1
- package/node_modules/@evalops/contracts/dist/index.d.ts +15 -1
- package/node_modules/@evalops/contracts/dist/index.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/index.js +6 -0
- package/node_modules/@evalops/contracts/dist/index.js.map +1 -1
- package/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts +593 -0
- package/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts.map +1 -0
- package/node_modules/@evalops/contracts/dist/maestro-app-server.js +218 -0
- package/node_modules/@evalops/contracts/dist/maestro-app-server.js.map +1 -0
- package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts +91 -0
- 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 +92 -61
- 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 +3 -0
- package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/runtime-constraints.d.ts +28 -0
- package/node_modules/@evalops/contracts/dist/runtime-constraints.d.ts.map +1 -0
- package/node_modules/@evalops/contracts/dist/runtime-constraints.js +71 -0
- package/node_modules/@evalops/contracts/dist/runtime-constraints.js.map +1 -0
- package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts +7 -0
- package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/runtime-server-request.js +2 -0
- package/node_modules/@evalops/contracts/dist/runtime-server-request.js.map +1 -1
- package/node_modules/@evalops/contracts/dist/scenario.d.ts +191 -0
- package/node_modules/@evalops/contracts/dist/scenario.d.ts.map +1 -0
- package/node_modules/@evalops/contracts/dist/scenario.js +4 -0
- package/node_modules/@evalops/contracts/dist/scenario.js.map +1 -0
- package/node_modules/@evalops/contracts/dist/schemas.d.ts +17 -3
- package/node_modules/@evalops/contracts/dist/schemas.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/schemas.js +16 -0
- package/node_modules/@evalops/contracts/dist/schemas.js.map +1 -1
- package/node_modules/@evalops/contracts/package.json +1 -1
- package/node_modules/@evalops/tui/package.json +1 -1
- package/package.json +41 -7
- package/skills/incident-triage/SKILL.md +40 -0
- package/skills/incident-triage/mcp.json +14 -0
- package/skills/incident-triage/reference/triage.md +20 -0
- package/skills/incident-triage/toolbox/incident-timeline +22 -0
- package/skills/incident-triage/toolbox/incident-timeline.cmd +16 -0
- package/skills/pr-review/SKILL.md +40 -0
- package/skills/pr-review/mcp.json +14 -0
- package/skills/pr-review/reference/rubric.md +20 -0
- package/skills/pr-review/toolbox/review-summary +20 -0
- package/skills/pr-review/toolbox/review-summary.cmd +14 -0
- package/skills/release-verification/SKILL.md +40 -0
- package/skills/release-verification/mcp.json +15 -0
- package/skills/release-verification/reference/checklist.md +21 -0
- package/skills/release-verification/toolbox/release-readiness +18 -0
- package/skills/release-verification/toolbox/release-readiness.cmd +12 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type UnifiedContextManifest, type UnifiedContextManifestDiff } from "../../context/manifest.js";
|
|
2
|
+
export interface ContextExplainOptions {
|
|
3
|
+
cwd?: string;
|
|
4
|
+
json?: boolean;
|
|
5
|
+
liveMcp?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function renderContextManifestSummary(manifest: UnifiedContextManifest): string;
|
|
8
|
+
export declare function renderContextManifestDiff(diff: UnifiedContextManifestDiff): string;
|
|
9
|
+
export declare function handleContextCommand(subcommand?: string, args?: string[], options?: ContextExplainOptions): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/context.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAG/B,MAAM,2BAA2B,CAAC;AAGnC,MAAM,WAAW,qBAAqB;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAqBD,wBAAgB,4BAA4B,CAC3C,QAAQ,EAAE,sBAAsB,GAC9B,MAAM,CA6DR;AAED,wBAAgB,yBAAyB,CACxC,IAAI,EAAE,0BAA0B,GAC9B,MAAM,CA4CR;AA0DD,wBAAsB,oBAAoB,CACzC,UAAU,CAAC,EAAE,MAAM,EACnB,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,GAAE,qBAA0B,GACjC,OAAO,CAAC,IAAI,CAAC,CA8Cf"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { relative, resolve } from "node:path";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { diffUnifiedContextManifests, loadUnifiedContextManifest, } from "../../context/manifest.js";
|
|
4
|
+
import { getHomeDir } from "../../utils/path-expansion.js";
|
|
5
|
+
function formatPath(path, cwd, homeDir = getHomeDir()) {
|
|
6
|
+
const resolvedPath = resolve(path);
|
|
7
|
+
const resolvedCwd = resolve(cwd);
|
|
8
|
+
const resolvedHome = resolve(homeDir);
|
|
9
|
+
if (resolvedPath === resolvedCwd) {
|
|
10
|
+
return ".";
|
|
11
|
+
}
|
|
12
|
+
if (resolvedPath.startsWith(`${resolvedCwd}/`)) {
|
|
13
|
+
return relative(resolvedCwd, resolvedPath);
|
|
14
|
+
}
|
|
15
|
+
if (resolvedPath === resolvedHome) {
|
|
16
|
+
return "~";
|
|
17
|
+
}
|
|
18
|
+
if (resolvedPath.startsWith(`${resolvedHome}/`)) {
|
|
19
|
+
return `~/${relative(resolvedHome, resolvedPath)}`;
|
|
20
|
+
}
|
|
21
|
+
return resolvedPath;
|
|
22
|
+
}
|
|
23
|
+
export function renderContextManifestSummary(manifest) {
|
|
24
|
+
const lines = [];
|
|
25
|
+
lines.push(`Prompt context for ${manifest.cwd}`);
|
|
26
|
+
const budget = manifest.projectDocs.maxBytes === undefined
|
|
27
|
+
? `${manifest.projectDocs.bytesRead.toLocaleString()} bytes used (unlimited)`
|
|
28
|
+
: `${manifest.projectDocs.bytesRead.toLocaleString()} / ${manifest.projectDocs.maxBytes.toLocaleString()} bytes used`;
|
|
29
|
+
lines.push(`Budget: ${budget}`);
|
|
30
|
+
lines.push(`Candidate order: ${manifest.projectDocs.candidates.join(", ")}`);
|
|
31
|
+
lines.push("");
|
|
32
|
+
const projectDocs = manifest.entries.filter((entry) => entry.kind === "project_doc");
|
|
33
|
+
if (projectDocs.length === 0) {
|
|
34
|
+
lines.push("Loaded files: none");
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
lines.push("Loaded files:");
|
|
38
|
+
for (const entry of projectDocs) {
|
|
39
|
+
const entryPath = entry.path ?? entry.id;
|
|
40
|
+
const flags = [
|
|
41
|
+
String(entry.metadata?.sourceKind ?? "project"),
|
|
42
|
+
`${(entry.bytesRead ?? 0).toLocaleString()} bytes`,
|
|
43
|
+
entry.contentHash ? `sha256:${entry.contentHash.slice(0, 12)}` : null,
|
|
44
|
+
entry.metadata?.truncated ? "truncated" : null,
|
|
45
|
+
].filter((flag) => Boolean(flag));
|
|
46
|
+
lines.push(`${(entry.precedenceIndex ?? 0) + 1}. ${formatPath(entryPath, manifest.cwd)} (${flags.join(", ")})`);
|
|
47
|
+
if (entry.scopeDir) {
|
|
48
|
+
lines.push(` scope: ${formatPath(entry.scopeDir, manifest.cwd)}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const mcpEntries = manifest.entries.filter((entry) => entry.kind.startsWith("mcp_"));
|
|
53
|
+
if (mcpEntries.length > 0) {
|
|
54
|
+
lines.push("");
|
|
55
|
+
lines.push("MCP context:");
|
|
56
|
+
for (const entry of mcpEntries) {
|
|
57
|
+
const location = entry.uri ?? entry.promptName ?? entry.serverName ?? entry.id;
|
|
58
|
+
lines.push(`- ${entry.kind} ${location} (${entry.status})`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (manifest.diagnostics.length > 0) {
|
|
62
|
+
lines.push("");
|
|
63
|
+
lines.push("Diagnostics:");
|
|
64
|
+
for (const diagnostic of manifest.diagnostics) {
|
|
65
|
+
const location = diagnostic.path ?? diagnostic.scopeDir;
|
|
66
|
+
const suffix = location ? ` [${formatPath(location, manifest.cwd)}]` : "";
|
|
67
|
+
lines.push(`- ${diagnostic.severity} ${diagnostic.code}: ${diagnostic.message}${suffix}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return lines.join("\n");
|
|
71
|
+
}
|
|
72
|
+
export function renderContextManifestDiff(diff) {
|
|
73
|
+
const lines = [];
|
|
74
|
+
lines.push("Context diff");
|
|
75
|
+
lines.push(`Before: ${diff.beforeCwd}`);
|
|
76
|
+
lines.push(`After: ${diff.afterCwd}`);
|
|
77
|
+
lines.push("");
|
|
78
|
+
lines.push(`Summary: ${diff.added.length} added, ${diff.removed.length} removed, ${diff.changed.length} changed, ${diff.unchanged.length} unchanged`);
|
|
79
|
+
const appendGroup = (title, prefix, entries) => {
|
|
80
|
+
if (entries.length === 0) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
lines.push("");
|
|
84
|
+
lines.push(`${title}:`);
|
|
85
|
+
for (const entry of entries) {
|
|
86
|
+
const changes = entry.changes && entry.changes.length > 0
|
|
87
|
+
? ` [${entry.changes.join(", ")}]`
|
|
88
|
+
: "";
|
|
89
|
+
lines.push(`${prefix} ${entry.kind} ${entry.label}${changes}`);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
appendGroup("Added", "+", diff.added);
|
|
93
|
+
appendGroup("Removed", "-", diff.removed);
|
|
94
|
+
appendGroup("Changed", "~", diff.changed);
|
|
95
|
+
if (diff.diagnostics.length > 0) {
|
|
96
|
+
lines.push("");
|
|
97
|
+
lines.push("Diagnostics:");
|
|
98
|
+
for (const diagnostic of diff.diagnostics) {
|
|
99
|
+
lines.push(`- ${diagnostic.severity} ${diagnostic.code}: ${diagnostic.message}`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return lines.join("\n");
|
|
103
|
+
}
|
|
104
|
+
async function loadContextManifestForCommand(cwd, liveMcp) {
|
|
105
|
+
if (!liveMcp) {
|
|
106
|
+
return loadUnifiedContextManifest(cwd);
|
|
107
|
+
}
|
|
108
|
+
const { loadMcpConfig, mcpManager } = await import("../../mcp/index.js");
|
|
109
|
+
try {
|
|
110
|
+
await mcpManager.configure(loadMcpConfig(cwd, { includeEnvLimits: true }));
|
|
111
|
+
await mcpManager.connectAll();
|
|
112
|
+
return loadUnifiedContextManifest(cwd, {
|
|
113
|
+
mcpStatus: mcpManager.getStatus(),
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
finally {
|
|
117
|
+
await mcpManager.disconnectAll();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
async function loadContextManifestPairForCommand(beforeCwd, afterCwd, liveMcp) {
|
|
121
|
+
if (!liveMcp) {
|
|
122
|
+
return {
|
|
123
|
+
before: loadUnifiedContextManifest(beforeCwd),
|
|
124
|
+
after: loadUnifiedContextManifest(afterCwd),
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
const { loadMcpConfig, mcpManager } = await import("../../mcp/index.js");
|
|
128
|
+
try {
|
|
129
|
+
await mcpManager.configure(loadMcpConfig(beforeCwd, { includeEnvLimits: true }));
|
|
130
|
+
await mcpManager.connectAll();
|
|
131
|
+
const before = loadUnifiedContextManifest(beforeCwd, {
|
|
132
|
+
mcpStatus: mcpManager.getStatus(),
|
|
133
|
+
});
|
|
134
|
+
await mcpManager.configure(loadMcpConfig(afterCwd, { includeEnvLimits: true }));
|
|
135
|
+
await mcpManager.connectAll();
|
|
136
|
+
const after = loadUnifiedContextManifest(afterCwd, {
|
|
137
|
+
mcpStatus: mcpManager.getStatus(),
|
|
138
|
+
});
|
|
139
|
+
return { before, after };
|
|
140
|
+
}
|
|
141
|
+
finally {
|
|
142
|
+
await mcpManager.disconnectAll();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
export async function handleContextCommand(subcommand, args = [], options = {}) {
|
|
146
|
+
const liveMcp = options.liveMcp ?? args.includes("--live-mcp");
|
|
147
|
+
const command = subcommand ?? "explain";
|
|
148
|
+
if (command !== "explain" && command !== "diff") {
|
|
149
|
+
console.error(chalk.red(`Unknown context subcommand: ${command}. Try "maestro context explain"`));
|
|
150
|
+
process.exit(1);
|
|
151
|
+
}
|
|
152
|
+
const positionalArgs = args.filter((arg) => !arg.startsWith("-"));
|
|
153
|
+
if (command === "diff") {
|
|
154
|
+
const beforeCwd = resolve(options.cwd ??
|
|
155
|
+
(positionalArgs.length >= 2 ? positionalArgs[0] : process.cwd()));
|
|
156
|
+
const afterCwd = resolve(positionalArgs.length >= 2
|
|
157
|
+
? positionalArgs[1]
|
|
158
|
+
: (positionalArgs[0] ?? process.cwd()));
|
|
159
|
+
const { before, after } = await loadContextManifestPairForCommand(beforeCwd, afterCwd, liveMcp);
|
|
160
|
+
const diff = diffUnifiedContextManifests(before, after);
|
|
161
|
+
if (options.json ?? args.includes("--json")) {
|
|
162
|
+
console.log(JSON.stringify(diff, null, 2));
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
console.log(renderContextManifestDiff(diff));
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
const cwd = resolve(options.cwd ?? positionalArgs[0] ?? process.cwd());
|
|
169
|
+
const manifest = await loadContextManifestForCommand(cwd, liveMcp);
|
|
170
|
+
if (options.json ?? args.includes("--json")) {
|
|
171
|
+
console.log(JSON.stringify(manifest, null, 2));
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
console.log(renderContextManifestSummary(manifest));
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/cli/commands/context.ts"],"names":[],"mappings":"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","sourcesContent":["import { relative, resolve } from \"node:path\";\nimport chalk from \"chalk\";\nimport {\n\ttype UnifiedContextManifest,\n\ttype UnifiedContextManifestDiff,\n\tdiffUnifiedContextManifests,\n\tloadUnifiedContextManifest,\n} from \"../../context/manifest.js\";\nimport { getHomeDir } from \"../../utils/path-expansion.js\";\n\nexport interface ContextExplainOptions {\n\tcwd?: string;\n\tjson?: boolean;\n\tliveMcp?: boolean;\n}\n\nfunction formatPath(path: string, cwd: string, homeDir = getHomeDir()): string {\n\tconst resolvedPath = resolve(path);\n\tconst resolvedCwd = resolve(cwd);\n\tconst resolvedHome = resolve(homeDir);\n\tif (resolvedPath === resolvedCwd) {\n\t\treturn \".\";\n\t}\n\tif (resolvedPath.startsWith(`${resolvedCwd}/`)) {\n\t\treturn relative(resolvedCwd, resolvedPath);\n\t}\n\tif (resolvedPath === resolvedHome) {\n\t\treturn \"~\";\n\t}\n\tif (resolvedPath.startsWith(`${resolvedHome}/`)) {\n\t\treturn `~/${relative(resolvedHome, resolvedPath)}`;\n\t}\n\treturn resolvedPath;\n}\n\nexport function renderContextManifestSummary(\n\tmanifest: UnifiedContextManifest,\n): string {\n\tconst lines: string[] = [];\n\tlines.push(`Prompt context for ${manifest.cwd}`);\n\tconst budget =\n\t\tmanifest.projectDocs.maxBytes === undefined\n\t\t\t? `${manifest.projectDocs.bytesRead.toLocaleString()} bytes used (unlimited)`\n\t\t\t: `${manifest.projectDocs.bytesRead.toLocaleString()} / ${manifest.projectDocs.maxBytes.toLocaleString()} bytes used`;\n\tlines.push(`Budget: ${budget}`);\n\tlines.push(`Candidate order: ${manifest.projectDocs.candidates.join(\", \")}`);\n\tlines.push(\"\");\n\n\tconst projectDocs = manifest.entries.filter(\n\t\t(entry) => entry.kind === \"project_doc\",\n\t);\n\tif (projectDocs.length === 0) {\n\t\tlines.push(\"Loaded files: none\");\n\t} else {\n\t\tlines.push(\"Loaded files:\");\n\t\tfor (const entry of projectDocs) {\n\t\t\tconst entryPath = entry.path ?? entry.id;\n\t\t\tconst flags = [\n\t\t\t\tString(entry.metadata?.sourceKind ?? \"project\"),\n\t\t\t\t`${(entry.bytesRead ?? 0).toLocaleString()} bytes`,\n\t\t\t\tentry.contentHash ? `sha256:${entry.contentHash.slice(0, 12)}` : null,\n\t\t\t\tentry.metadata?.truncated ? \"truncated\" : null,\n\t\t\t].filter((flag): flag is string => Boolean(flag));\n\t\t\tlines.push(\n\t\t\t\t`${(entry.precedenceIndex ?? 0) + 1}. ${formatPath(entryPath, manifest.cwd)} (${flags.join(\", \")})`,\n\t\t\t);\n\t\t\tif (entry.scopeDir) {\n\t\t\t\tlines.push(` scope: ${formatPath(entry.scopeDir, manifest.cwd)}`);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst mcpEntries = manifest.entries.filter((entry) =>\n\t\tentry.kind.startsWith(\"mcp_\"),\n\t);\n\tif (mcpEntries.length > 0) {\n\t\tlines.push(\"\");\n\t\tlines.push(\"MCP context:\");\n\t\tfor (const entry of mcpEntries) {\n\t\t\tconst location =\n\t\t\t\tentry.uri ?? entry.promptName ?? entry.serverName ?? entry.id;\n\t\t\tlines.push(`- ${entry.kind} ${location} (${entry.status})`);\n\t\t}\n\t}\n\n\tif (manifest.diagnostics.length > 0) {\n\t\tlines.push(\"\");\n\t\tlines.push(\"Diagnostics:\");\n\t\tfor (const diagnostic of manifest.diagnostics) {\n\t\t\tconst location = diagnostic.path ?? diagnostic.scopeDir;\n\t\t\tconst suffix = location ? ` [${formatPath(location, manifest.cwd)}]` : \"\";\n\t\t\tlines.push(\n\t\t\t\t`- ${diagnostic.severity} ${diagnostic.code}: ${diagnostic.message}${suffix}`,\n\t\t\t);\n\t\t}\n\t}\n\n\treturn lines.join(\"\\n\");\n}\n\nexport function renderContextManifestDiff(\n\tdiff: UnifiedContextManifestDiff,\n): string {\n\tconst lines: string[] = [];\n\tlines.push(\"Context diff\");\n\tlines.push(`Before: ${diff.beforeCwd}`);\n\tlines.push(`After: ${diff.afterCwd}`);\n\tlines.push(\"\");\n\tlines.push(\n\t\t`Summary: ${diff.added.length} added, ${diff.removed.length} removed, ${diff.changed.length} changed, ${diff.unchanged.length} unchanged`,\n\t);\n\n\tconst appendGroup = (\n\t\ttitle: string,\n\t\tprefix: string,\n\t\tentries: UnifiedContextManifestDiff[\"added\"],\n\t): void => {\n\t\tif (entries.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tlines.push(\"\");\n\t\tlines.push(`${title}:`);\n\t\tfor (const entry of entries) {\n\t\t\tconst changes =\n\t\t\t\tentry.changes && entry.changes.length > 0\n\t\t\t\t\t? ` [${entry.changes.join(\", \")}]`\n\t\t\t\t\t: \"\";\n\t\t\tlines.push(`${prefix} ${entry.kind} ${entry.label}${changes}`);\n\t\t}\n\t};\n\n\tappendGroup(\"Added\", \"+\", diff.added);\n\tappendGroup(\"Removed\", \"-\", diff.removed);\n\tappendGroup(\"Changed\", \"~\", diff.changed);\n\n\tif (diff.diagnostics.length > 0) {\n\t\tlines.push(\"\");\n\t\tlines.push(\"Diagnostics:\");\n\t\tfor (const diagnostic of diff.diagnostics) {\n\t\t\tlines.push(\n\t\t\t\t`- ${diagnostic.severity} ${diagnostic.code}: ${diagnostic.message}`,\n\t\t\t);\n\t\t}\n\t}\n\n\treturn lines.join(\"\\n\");\n}\n\nasync function loadContextManifestForCommand(\n\tcwd: string,\n\tliveMcp: boolean,\n): Promise<UnifiedContextManifest> {\n\tif (!liveMcp) {\n\t\treturn loadUnifiedContextManifest(cwd);\n\t}\n\n\tconst { loadMcpConfig, mcpManager } = await import(\"../../mcp/index.js\");\n\ttry {\n\t\tawait mcpManager.configure(loadMcpConfig(cwd, { includeEnvLimits: true }));\n\t\tawait mcpManager.connectAll();\n\t\treturn loadUnifiedContextManifest(cwd, {\n\t\t\tmcpStatus: mcpManager.getStatus(),\n\t\t});\n\t} finally {\n\t\tawait mcpManager.disconnectAll();\n\t}\n}\n\nasync function loadContextManifestPairForCommand(\n\tbeforeCwd: string,\n\tafterCwd: string,\n\tliveMcp: boolean,\n): Promise<{ before: UnifiedContextManifest; after: UnifiedContextManifest }> {\n\tif (!liveMcp) {\n\t\treturn {\n\t\t\tbefore: loadUnifiedContextManifest(beforeCwd),\n\t\t\tafter: loadUnifiedContextManifest(afterCwd),\n\t\t};\n\t}\n\n\tconst { loadMcpConfig, mcpManager } = await import(\"../../mcp/index.js\");\n\ttry {\n\t\tawait mcpManager.configure(\n\t\t\tloadMcpConfig(beforeCwd, { includeEnvLimits: true }),\n\t\t);\n\t\tawait mcpManager.connectAll();\n\t\tconst before = loadUnifiedContextManifest(beforeCwd, {\n\t\t\tmcpStatus: mcpManager.getStatus(),\n\t\t});\n\n\t\tawait mcpManager.configure(\n\t\t\tloadMcpConfig(afterCwd, { includeEnvLimits: true }),\n\t\t);\n\t\tawait mcpManager.connectAll();\n\t\tconst after = loadUnifiedContextManifest(afterCwd, {\n\t\t\tmcpStatus: mcpManager.getStatus(),\n\t\t});\n\n\t\treturn { before, after };\n\t} finally {\n\t\tawait mcpManager.disconnectAll();\n\t}\n}\n\nexport async function handleContextCommand(\n\tsubcommand?: string,\n\targs: string[] = [],\n\toptions: ContextExplainOptions = {},\n): Promise<void> {\n\tconst liveMcp = options.liveMcp ?? args.includes(\"--live-mcp\");\n\tconst command = subcommand ?? \"explain\";\n\tif (command !== \"explain\" && command !== \"diff\") {\n\t\tconsole.error(\n\t\t\tchalk.red(\n\t\t\t\t`Unknown context subcommand: ${command}. Try \"maestro context explain\"`,\n\t\t\t),\n\t\t);\n\t\tprocess.exit(1);\n\t}\n\n\tconst positionalArgs = args.filter((arg) => !arg.startsWith(\"-\"));\n\n\tif (command === \"diff\") {\n\t\tconst beforeCwd = resolve(\n\t\t\toptions.cwd ??\n\t\t\t\t(positionalArgs.length >= 2 ? positionalArgs[0]! : process.cwd()),\n\t\t);\n\t\tconst afterCwd = resolve(\n\t\t\tpositionalArgs.length >= 2\n\t\t\t\t? positionalArgs[1]!\n\t\t\t\t: (positionalArgs[0] ?? process.cwd()),\n\t\t);\n\t\tconst { before, after } = await loadContextManifestPairForCommand(\n\t\t\tbeforeCwd,\n\t\t\tafterCwd,\n\t\t\tliveMcp,\n\t\t);\n\t\tconst diff = diffUnifiedContextManifests(before, after);\n\t\tif (options.json ?? args.includes(\"--json\")) {\n\t\t\tconsole.log(JSON.stringify(diff, null, 2));\n\t\t\treturn;\n\t\t}\n\t\tconsole.log(renderContextManifestDiff(diff));\n\t\treturn;\n\t}\n\n\tconst cwd = resolve(options.cwd ?? positionalArgs[0] ?? process.cwd());\n\tconst manifest = await loadContextManifestForCommand(cwd, liveMcp);\n\tif (options.json ?? args.includes(\"--json\")) {\n\t\tconsole.log(JSON.stringify(manifest, null, 2));\n\t\treturn;\n\t}\n\n\tconsole.log(renderContextManifestSummary(manifest));\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted-runner.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/hosted-runner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AASvE,MAAM,WAAW,kBAAkB;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,0BAA0B;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"hosted-runner.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/hosted-runner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AASvE,MAAM,WAAW,kBAAkB;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,0BAA0B;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AA6JD,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED,wBAAsB,yBAAyB,CAC9C,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,OAAO,GAAE,0BAA+B,GACtC,OAAO,CAAC,kBAAkB,CAAC,CAqE7B;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAoC7E;AAED,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,kBAAkB,GACxB,mBAAmB,CAgBrB;AAED,wBAAsB,yBAAyB,CAC9C,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,GAAE,0BAA+B,GACtC,OAAO,CAAC,IAAI,CAAC,CAoBf"}
|
|
@@ -12,6 +12,7 @@ Options:
|
|
|
12
12
|
--host <host> Bind host when --listen is not used
|
|
13
13
|
--port <port> Bind port when --listen is not used
|
|
14
14
|
--workspace-id <id> EvalOps workspace id for metadata
|
|
15
|
+
--agent-id <id> Platform agent-registry agent id for metadata
|
|
15
16
|
--agent-run-id <id> Platform AgentRun id for metadata
|
|
16
17
|
--maestro-session-id <id> Existing Maestro session id for metadata
|
|
17
18
|
--attach-audience <aud> Expected attach audience metadata
|
|
@@ -23,7 +24,7 @@ Environment:
|
|
|
23
24
|
MAESTRO_WORKSPACE_ROOT
|
|
24
25
|
MAESTRO_REMOTE_RUNNER_SNAPSHOT_ROOT, REMOTE_RUNNER_SNAPSHOT_ROOT
|
|
25
26
|
MAESTRO_HOSTED_RUNNER_LISTEN, MAESTRO_HOSTED_RUNNER_HOST, MAESTRO_HOSTED_RUNNER_PORT, PORT
|
|
26
|
-
MAESTRO_REMOTE_RUNNER_WORKSPACE_ID, MAESTRO_AGENT_RUN_ID, MAESTRO_SESSION_ID
|
|
27
|
+
MAESTRO_REMOTE_RUNNER_WORKSPACE_ID, MAESTRO_AGENT_ID, MAESTRO_AGENT_RUN_ID, MAESTRO_SESSION_ID
|
|
27
28
|
MAESTRO_ATTACH_AUDIENCE`;
|
|
28
29
|
function parseHostedRunnerOptions(args) {
|
|
29
30
|
const flags = new Map();
|
|
@@ -167,6 +168,8 @@ export async function resolveHostedRunnerConfig(args, env = process.env, options
|
|
|
167
168
|
"MAESTRO_REMOTE_RUNNER_WORKSPACE_ID",
|
|
168
169
|
"MAESTRO_WORKSPACE_ID",
|
|
169
170
|
]),
|
|
171
|
+
agentId: getLastFlag(parsed, "agent-id") ??
|
|
172
|
+
getEnvValue(env, ["MAESTRO_REMOTE_RUNNER_AGENT_ID", "MAESTRO_AGENT_ID"]),
|
|
170
173
|
agentRunId: getLastFlag(parsed, "agent-run-id") ?? env.MAESTRO_AGENT_RUN_ID,
|
|
171
174
|
maestroSessionId: getLastFlag(parsed, "maestro-session-id") ?? env.MAESTRO_SESSION_ID,
|
|
172
175
|
attachAudience: getLastFlag(parsed, "attach-audience") ?? env.MAESTRO_ATTACH_AUDIENCE,
|
|
@@ -193,6 +196,10 @@ export function applyHostedRunnerEnvironment(config) {
|
|
|
193
196
|
if (config.agentRunId) {
|
|
194
197
|
process.env.MAESTRO_AGENT_RUN_ID = config.agentRunId;
|
|
195
198
|
}
|
|
199
|
+
if (config.agentId) {
|
|
200
|
+
process.env.MAESTRO_AGENT_ID = config.agentId;
|
|
201
|
+
process.env.MAESTRO_REMOTE_RUNNER_AGENT_ID = config.agentId;
|
|
202
|
+
}
|
|
196
203
|
if (config.maestroSessionId) {
|
|
197
204
|
process.env.MAESTRO_SESSION_ID = config.maestroSessionId;
|
|
198
205
|
}
|
|
@@ -211,6 +218,7 @@ export function toHostedRunnerContext(config) {
|
|
|
211
218
|
listenHost: config.host,
|
|
212
219
|
listenPort: config.port,
|
|
213
220
|
workspaceId: config.workspaceId,
|
|
221
|
+
agentId: config.agentId,
|
|
214
222
|
agentRunId: config.agentRunId,
|
|
215
223
|
attachAudience: config.attachAudience,
|
|
216
224
|
configuredMaestroSessionId: config.maestroSessionId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted-runner.js","sourceRoot":"","sources":["../../../src/cli/commands/hosted-runner.ts"],"names":[],"mappings":"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","sourcesContent":["import { realpath, stat } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport chalk from \"chalk\";\nimport type { HostedRunnerContext } from \"../../server/app-context.js\";\n\ntype HostedRunnerFlagValue = true | string;\n\ninterface HostedRunnerOptions {\n\tflags: Map<string, HostedRunnerFlagValue[]>;\n\tpositionals: string[];\n}\n\nexport interface HostedRunnerConfig {\n\trunnerSessionId: string;\n\townerInstanceId?: string;\n\tworkspaceRoot: string;\n\tsnapshotRoot: string;\n\thost?: string;\n\tport: number;\n\tworkspaceId?: string;\n\tagentRunId?: string;\n\tmaestroSessionId?: string;\n\tattachAudience?: string;\n}\n\ninterface HostedRunnerResolveOptions {\n\tdefaultPort?: number;\n}\n\nconst HOSTED_RUNNER_USAGE = `maestro hosted-runner [options]\n\nOptions:\n --runner-session-id <id> Platform remote-runner session id (required)\n --owner-instance-id <id> Platform runtime owner generation for attach fencing\n --workspace-root <path> Workspace root mounted into the runtime pod (required)\n --snapshot-root <path> Directory for drain snapshot manifests\n --listen <host:port> Address to bind, for example 0.0.0.0:8080\n --host <host> Bind host when --listen is not used\n --port <port> Bind port when --listen is not used\n --workspace-id <id> EvalOps workspace id for metadata\n --agent-run-id <id> Platform AgentRun id for metadata\n --maestro-session-id <id> Existing Maestro session id for metadata\n --attach-audience <aud> Expected attach audience metadata\n --help Show this help\n\nEnvironment:\n MAESTRO_RUNNER_SESSION_ID, REMOTE_RUNNER_SESSION_ID\n MAESTRO_REMOTE_RUNNER_OWNER_INSTANCE_ID, REMOTE_RUNNER_OWNER_INSTANCE_ID\n MAESTRO_WORKSPACE_ROOT\n MAESTRO_REMOTE_RUNNER_SNAPSHOT_ROOT, REMOTE_RUNNER_SNAPSHOT_ROOT\n MAESTRO_HOSTED_RUNNER_LISTEN, MAESTRO_HOSTED_RUNNER_HOST, MAESTRO_HOSTED_RUNNER_PORT, PORT\n MAESTRO_REMOTE_RUNNER_WORKSPACE_ID, MAESTRO_AGENT_RUN_ID, MAESTRO_SESSION_ID\n MAESTRO_ATTACH_AUDIENCE`;\n\nfunction parseHostedRunnerOptions(\n\targs: readonly string[],\n): HostedRunnerOptions {\n\tconst flags = new Map<string, HostedRunnerFlagValue[]>();\n\tconst positionals: string[] = [];\n\n\tfor (let index = 0; index < args.length; index += 1) {\n\t\tconst arg = args[index];\n\t\tif (!arg) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (arg === \"--\") {\n\t\t\tpositionals.push(...args.slice(index + 1));\n\t\t\tbreak;\n\t\t}\n\t\tif (!arg.startsWith(\"--\")) {\n\t\t\tpositionals.push(arg);\n\t\t\tcontinue;\n\t\t}\n\t\tconst equalsIndex = arg.indexOf(\"=\");\n\t\tconst key = equalsIndex >= 0 ? arg.slice(2, equalsIndex) : arg.slice(2);\n\t\tconst inlineValue =\n\t\t\tequalsIndex >= 0 ? arg.slice(equalsIndex + 1) : undefined;\n\t\tconst next = args[index + 1];\n\t\tconst value =\n\t\t\tinlineValue !== undefined\n\t\t\t\t? inlineValue\n\t\t\t\t: next && !next.startsWith(\"--\")\n\t\t\t\t\t? next\n\t\t\t\t\t: true;\n\t\tif (inlineValue === undefined && value !== true) {\n\t\t\tindex += 1;\n\t\t}\n\t\tconst values = flags.get(key) ?? [];\n\t\tvalues.push(value);\n\t\tflags.set(key, values);\n\t}\n\n\treturn { flags, positionals };\n}\n\nfunction getLastFlag(\n\toptions: HostedRunnerOptions,\n\tkey: string,\n): string | undefined {\n\tconst values = options.flags.get(key);\n\tconst value = values?.at(-1);\n\treturn typeof value === \"string\" ? value.trim() : undefined;\n}\n\nfunction hasFlag(options: HostedRunnerOptions, key: string): boolean {\n\treturn options.flags.has(key);\n}\n\nfunction getEnvValue(\n\tenv: NodeJS.ProcessEnv,\n\tkeys: readonly string[],\n): string | undefined {\n\tfor (const key of keys) {\n\t\tconst value = env[key]?.trim();\n\t\tif (value) {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction parsePort(\n\tvalue: string | undefined,\n\tlabel: string,\n): number | undefined {\n\tif (!value) {\n\t\treturn undefined;\n\t}\n\tif (!/^\\d+$/.test(value.trim())) {\n\t\tthrow new Error(`${label} must be a TCP port between 1 and 65535`);\n\t}\n\tconst port = Number.parseInt(value, 10);\n\tif (!Number.isInteger(port) || port <= 0 || port > 65535) {\n\t\tthrow new Error(`${label} must be a TCP port between 1 and 65535`);\n\t}\n\treturn port;\n}\n\nfunction parseListen(value: string | undefined): {\n\thost?: string;\n\tport?: number;\n} {\n\tif (!value) {\n\t\treturn {};\n\t}\n\tconst trimmed = value.trim();\n\tif (/^\\d+$/.test(trimmed)) {\n\t\treturn { port: parsePort(trimmed, \"--listen\") };\n\t}\n\tconst separatorIndex = trimmed.lastIndexOf(\":\");\n\tif (separatorIndex <= 0 || separatorIndex === trimmed.length - 1) {\n\t\tthrow new Error(\"--listen must be <host:port> or <port>\");\n\t}\n\treturn {\n\t\thost: trimmed.slice(0, separatorIndex),\n\t\tport: parsePort(trimmed.slice(separatorIndex + 1), \"--listen\"),\n\t};\n}\n\nasync function resolveWorkspaceRoot(path: string | undefined): Promise<string> {\n\tif (!path) {\n\t\tthrow new Error(\n\t\t\t\"maestro hosted-runner requires --workspace-root or MAESTRO_WORKSPACE_ROOT\",\n\t\t);\n\t}\n\tconst workspaceRoot = resolve(path);\n\tconst stats = await stat(workspaceRoot);\n\tif (!stats.isDirectory()) {\n\t\tthrow new Error(`Hosted runner workspace root is not a directory: ${path}`);\n\t}\n\treturn realpath(workspaceRoot);\n}\n\nfunction resolveSnapshotRoot(\n\tpath: string | undefined,\n\tworkspaceRoot: string,\n): string {\n\tif (!path) {\n\t\treturn resolve(workspaceRoot, \".maestro\", \"runner-snapshots\");\n\t}\n\treturn resolve(workspaceRoot, path);\n}\n\nexport function formatHostedRunnerUsage(): string {\n\treturn HOSTED_RUNNER_USAGE;\n}\n\nexport async function resolveHostedRunnerConfig(\n\targs: readonly string[],\n\tenv: NodeJS.ProcessEnv = process.env,\n\toptions: HostedRunnerResolveOptions = {},\n): Promise<HostedRunnerConfig> {\n\tconst parsed = parseHostedRunnerOptions(args);\n\tif (parsed.positionals.length > 0) {\n\t\tthrow new Error(\n\t\t\t`Unexpected hosted-runner argument: ${parsed.positionals[0]}`,\n\t\t);\n\t}\n\n\tconst runnerSessionId =\n\t\tgetLastFlag(parsed, \"runner-session-id\") ??\n\t\tgetEnvValue(env, [\"MAESTRO_RUNNER_SESSION_ID\", \"REMOTE_RUNNER_SESSION_ID\"]);\n\tif (!runnerSessionId) {\n\t\tthrow new Error(\n\t\t\t\"maestro hosted-runner requires --runner-session-id or MAESTRO_RUNNER_SESSION_ID\",\n\t\t);\n\t}\n\n\tconst listen = parseListen(\n\t\tgetLastFlag(parsed, \"listen\") ?? env.MAESTRO_HOSTED_RUNNER_LISTEN,\n\t);\n\tconst port =\n\t\tlisten.port ??\n\t\tparsePort(getLastFlag(parsed, \"port\"), \"--port\") ??\n\t\tparsePort(env.MAESTRO_HOSTED_RUNNER_PORT, \"MAESTRO_HOSTED_RUNNER_PORT\") ??\n\t\tparsePort(env.PORT, \"PORT\") ??\n\t\toptions.defaultPort ??\n\t\t8080;\n\tconst workspaceRoot = await resolveWorkspaceRoot(\n\t\tgetLastFlag(parsed, \"workspace-root\") ??\n\t\t\tgetEnvValue(env, [\"MAESTRO_WORKSPACE_ROOT\", \"WORKSPACE_ROOT\"]),\n\t);\n\n\treturn {\n\t\trunnerSessionId,\n\t\townerInstanceId:\n\t\t\tgetLastFlag(parsed, \"owner-instance-id\") ??\n\t\t\tgetEnvValue(env, [\n\t\t\t\t\"MAESTRO_REMOTE_RUNNER_OWNER_INSTANCE_ID\",\n\t\t\t\t\"REMOTE_RUNNER_OWNER_INSTANCE_ID\",\n\t\t\t]),\n\t\tworkspaceRoot,\n\t\tsnapshotRoot: resolveSnapshotRoot(\n\t\t\tgetLastFlag(parsed, \"snapshot-root\") ??\n\t\t\t\tgetEnvValue(env, [\n\t\t\t\t\t\"MAESTRO_REMOTE_RUNNER_SNAPSHOT_ROOT\",\n\t\t\t\t\t\"REMOTE_RUNNER_SNAPSHOT_ROOT\",\n\t\t\t\t]),\n\t\t\tworkspaceRoot,\n\t\t),\n\t\thost:\n\t\t\tlisten.host ??\n\t\t\tgetLastFlag(parsed, \"host\") ??\n\t\t\tenv.MAESTRO_HOSTED_RUNNER_HOST,\n\t\tport,\n\t\tworkspaceId:\n\t\t\tgetLastFlag(parsed, \"workspace-id\") ??\n\t\t\tgetEnvValue(env, [\n\t\t\t\t\"MAESTRO_REMOTE_RUNNER_WORKSPACE_ID\",\n\t\t\t\t\"MAESTRO_WORKSPACE_ID\",\n\t\t\t]),\n\t\tagentRunId: getLastFlag(parsed, \"agent-run-id\") ?? env.MAESTRO_AGENT_RUN_ID,\n\t\tmaestroSessionId:\n\t\t\tgetLastFlag(parsed, \"maestro-session-id\") ?? env.MAESTRO_SESSION_ID,\n\t\tattachAudience:\n\t\t\tgetLastFlag(parsed, \"attach-audience\") ?? env.MAESTRO_ATTACH_AUDIENCE,\n\t};\n}\n\nexport function applyHostedRunnerEnvironment(config: HostedRunnerConfig): void {\n\tprocess.env.MAESTRO_HOSTED_RUNNER_MODE = \"1\";\n\tprocess.env.MAESTRO_RUNNER_SESSION_ID = config.runnerSessionId;\n\tprocess.env.MAESTRO_WORKSPACE_ROOT = config.workspaceRoot;\n\tprocess.env.MAESTRO_REMOTE_RUNNER_SNAPSHOT_ROOT = config.snapshotRoot;\n\tif (config.ownerInstanceId) {\n\t\tprocess.env.MAESTRO_REMOTE_RUNNER_OWNER_INSTANCE_ID =\n\t\t\tconfig.ownerInstanceId;\n\t\tprocess.env.REMOTE_RUNNER_OWNER_INSTANCE_ID = config.ownerInstanceId;\n\t}\n\tprocess.env.MAESTRO_PROFILE ??= \"hosted-runner\";\n\tprocess.env.MAESTRO_WEB_REQUIRE_KEY ??= \"1\";\n\tprocess.env.MAESTRO_WEB_REQUIRE_REDIS ??= \"0\";\n\tprocess.env.MAESTRO_WEB_REQUIRE_CSRF ??= \"0\";\n\tprocess.env.MAESTRO_AGENT_DIR ??= resolve(\n\t\tconfig.workspaceRoot,\n\t\t\".maestro\",\n\t\t\"agent\",\n\t);\n\tif (config.workspaceId) {\n\t\tprocess.env.MAESTRO_REMOTE_RUNNER_WORKSPACE_ID = config.workspaceId;\n\t}\n\tif (config.agentRunId) {\n\t\tprocess.env.MAESTRO_AGENT_RUN_ID = config.agentRunId;\n\t}\n\tif (config.maestroSessionId) {\n\t\tprocess.env.MAESTRO_SESSION_ID = config.maestroSessionId;\n\t}\n\tif (config.attachAudience) {\n\t\tprocess.env.MAESTRO_ATTACH_AUDIENCE = config.attachAudience;\n\t}\n\tprocess.chdir(config.workspaceRoot);\n}\n\nexport function toHostedRunnerContext(\n\tconfig: HostedRunnerConfig,\n): HostedRunnerContext {\n\treturn {\n\t\tenabled: true,\n\t\trunnerSessionId: config.runnerSessionId,\n\t\townerInstanceId: config.ownerInstanceId,\n\t\tworkspaceRoot: config.workspaceRoot,\n\t\tsnapshotRoot: config.snapshotRoot,\n\t\tlistenHost: config.host,\n\t\tlistenPort: config.port,\n\t\tworkspaceId: config.workspaceId,\n\t\tagentRunId: config.agentRunId,\n\t\tattachAudience: config.attachAudience,\n\t\tconfiguredMaestroSessionId: config.maestroSessionId,\n\t\tactiveMaestroSessionId: config.maestroSessionId,\n\t};\n}\n\nexport async function handleHostedRunnerCommand(\n\targs: readonly string[],\n\toptions: HostedRunnerResolveOptions = {},\n): Promise<void> {\n\tconst parsed = parseHostedRunnerOptions(args);\n\tif (hasFlag(parsed, \"help\")) {\n\t\tconsole.log(formatHostedRunnerUsage());\n\t\treturn;\n\t}\n\n\ttry {\n\t\tconst config = await resolveHostedRunnerConfig(args, process.env, options);\n\t\tapplyHostedRunnerEnvironment(config);\n\t\tconst { startWebServer } = await import(\"../../web-server.js\");\n\t\tawait startWebServer(config.port, {\n\t\t\thost: config.host,\n\t\t\thostedRunner: toHostedRunnerContext(config),\n\t\t});\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tconsole.error(chalk.red(message));\n\t\tprocess.exit(1);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"hosted-runner.js","sourceRoot":"","sources":["../../../src/cli/commands/hosted-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AA4B1B,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;0BAwBF,CAAC;AAE3B,SAAS,wBAAwB,CAChC,IAAuB;IAEvB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAmC,CAAC;IACzD,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,SAAS;QACV,CAAC;QACD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAClB,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM;QACP,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,SAAS;QACV,CAAC;QACD,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,WAAW,GAChB,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC7B,MAAM,KAAK,GACV,WAAW,KAAK,SAAS;YACxB,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAC/B,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,CAAC;QACV,IAAI,WAAW,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACjD,KAAK,IAAI,CAAC,CAAC;QACZ,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,WAAW,CACnB,OAA4B,EAC5B,GAAW;IAEX,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7D,CAAC;AAED,SAAS,OAAO,CAAC,OAA4B,EAAE,GAAW;IACzD,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,WAAW,CACnB,GAAsB,EACtB,IAAuB;IAEvB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC;QAC/B,IAAI,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,SAAS,SAAS,CACjB,KAAyB,EACzB,KAAa;IAEb,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,yCAAyC,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,yCAAyC,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,WAAW,CAAC,KAAyB;IAI7C,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;IACX,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC;IACjD,CAAC;IACD,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,cAAc,IAAI,CAAC,IAAI,cAAc,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO;QACN,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC;QACtC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;KAC9D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,IAAwB;IAC3D,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACd,2EAA2E,CAC3E,CAAC;IACH,CAAC;IACD,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,oDAAoD,IAAI,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,mBAAmB,CAC3B,IAAwB,EACxB,aAAqB;IAErB,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,uBAAuB;IACtC,OAAO,mBAAmB,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC9C,IAAuB,EACvB,MAAyB,OAAO,CAAC,GAAG,EACpC,UAAsC,EAAE;IAExC,MAAM,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACd,sCAAsC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAC7D,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GACpB,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC;QACxC,WAAW,CAAC,GAAG,EAAE,CAAC,2BAA2B,EAAE,0BAA0B,CAAC,CAAC,CAAC;IAC7E,IAAI,CAAC,eAAe,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACd,iFAAiF,CACjF,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CACzB,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,GAAG,CAAC,4BAA4B,CACjE,CAAC;IACF,MAAM,IAAI,GACT,MAAM,CAAC,IAAI;QACX,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC;QAChD,SAAS,CAAC,GAAG,CAAC,0BAA0B,EAAE,4BAA4B,CAAC;QACvE,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;QAC3B,OAAO,CAAC,WAAW;QACnB,IAAI,CAAC;IACN,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAC/C,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC;QACpC,WAAW,CAAC,GAAG,EAAE,CAAC,wBAAwB,EAAE,gBAAgB,CAAC,CAAC,CAC/D,CAAC;IAEF,OAAO;QACN,eAAe;QACf,eAAe,EACd,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC;YACxC,WAAW,CAAC,GAAG,EAAE;gBAChB,yCAAyC;gBACzC,iCAAiC;aACjC,CAAC;QACH,aAAa;QACb,YAAY,EAAE,mBAAmB,CAChC,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC;YACnC,WAAW,CAAC,GAAG,EAAE;gBAChB,qCAAqC;gBACrC,6BAA6B;aAC7B,CAAC,EACH,aAAa,CACb;QACD,IAAI,EACH,MAAM,CAAC,IAAI;YACX,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;YAC3B,GAAG,CAAC,0BAA0B;QAC/B,IAAI;QACJ,WAAW,EACV,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC;YACnC,WAAW,CAAC,GAAG,EAAE;gBAChB,oCAAoC;gBACpC,sBAAsB;aACtB,CAAC;QACH,OAAO,EACN,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC;YAC/B,WAAW,CAAC,GAAG,EAAE,CAAC,gCAAgC,EAAE,kBAAkB,CAAC,CAAC;QACzE,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,GAAG,CAAC,oBAAoB;QAC3E,gBAAgB,EACf,WAAW,CAAC,MAAM,EAAE,oBAAoB,CAAC,IAAI,GAAG,CAAC,kBAAkB;QACpE,cAAc,EACb,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI,GAAG,CAAC,uBAAuB;KACtE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,MAA0B;IACtE,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,GAAG,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,MAAM,CAAC,eAAe,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,MAAM,CAAC,aAAa,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,mCAAmC,GAAG,MAAM,CAAC,YAAY,CAAC;IACtE,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,uCAAuC;YAClD,MAAM,CAAC,eAAe,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,+BAA+B,GAAG,MAAM,CAAC,eAAe,CAAC;IACtE,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,eAAe,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,GAAG,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,GAAG,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,GAAG,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,OAAO,CACxC,MAAM,CAAC,aAAa,EACpB,UAAU,EACV,OAAO,CACP,CAAC;IACF,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,kCAAkC,GAAG,MAAM,CAAC,WAAW,CAAC;IACrE,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,MAAM,CAAC,UAAU,CAAC;IACtD,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,8BAA8B,GAAG,MAAM,CAAC,OAAO,CAAC;IAC7D,CAAC;IACD,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAC1D,CAAC;IACD,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,MAAM,CAAC,cAAc,CAAC;IAC7D,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,qBAAqB,CACpC,MAA0B;IAE1B,OAAO;QACN,OAAO,EAAE,IAAI;QACb,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,UAAU,EAAE,MAAM,CAAC,IAAI;QACvB,UAAU,EAAE,MAAM,CAAC,IAAI;QACvB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,0BAA0B,EAAE,MAAM,CAAC,gBAAgB;QACnD,sBAAsB,EAAE,MAAM,CAAC,gBAAgB;KAC/C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC9C,IAAuB,EACvB,UAAsC,EAAE;IAExC,MAAM,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC,CAAC;QACvC,OAAO;IACR,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC3E,4BAA4B,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAC/D,MAAM,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE;YACjC,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,YAAY,EAAE,qBAAqB,CAAC,MAAM,CAAC;SAC3C,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACF,CAAC","sourcesContent":["import { realpath, stat } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport chalk from \"chalk\";\nimport type { HostedRunnerContext } from \"../../server/app-context.js\";\n\ntype HostedRunnerFlagValue = true | string;\n\ninterface HostedRunnerOptions {\n\tflags: Map<string, HostedRunnerFlagValue[]>;\n\tpositionals: string[];\n}\n\nexport interface HostedRunnerConfig {\n\trunnerSessionId: string;\n\townerInstanceId?: string;\n\tworkspaceRoot: string;\n\tsnapshotRoot: string;\n\thost?: string;\n\tport: number;\n\tworkspaceId?: string;\n\tagentId?: string;\n\tagentRunId?: string;\n\tmaestroSessionId?: string;\n\tattachAudience?: string;\n}\n\ninterface HostedRunnerResolveOptions {\n\tdefaultPort?: number;\n}\n\nconst HOSTED_RUNNER_USAGE = `maestro hosted-runner [options]\n\nOptions:\n --runner-session-id <id> Platform remote-runner session id (required)\n --owner-instance-id <id> Platform runtime owner generation for attach fencing\n --workspace-root <path> Workspace root mounted into the runtime pod (required)\n --snapshot-root <path> Directory for drain snapshot manifests\n --listen <host:port> Address to bind, for example 0.0.0.0:8080\n --host <host> Bind host when --listen is not used\n --port <port> Bind port when --listen is not used\n --workspace-id <id> EvalOps workspace id for metadata\n --agent-id <id> Platform agent-registry agent id for metadata\n --agent-run-id <id> Platform AgentRun id for metadata\n --maestro-session-id <id> Existing Maestro session id for metadata\n --attach-audience <aud> Expected attach audience metadata\n --help Show this help\n\nEnvironment:\n MAESTRO_RUNNER_SESSION_ID, REMOTE_RUNNER_SESSION_ID\n MAESTRO_REMOTE_RUNNER_OWNER_INSTANCE_ID, REMOTE_RUNNER_OWNER_INSTANCE_ID\n MAESTRO_WORKSPACE_ROOT\n MAESTRO_REMOTE_RUNNER_SNAPSHOT_ROOT, REMOTE_RUNNER_SNAPSHOT_ROOT\n MAESTRO_HOSTED_RUNNER_LISTEN, MAESTRO_HOSTED_RUNNER_HOST, MAESTRO_HOSTED_RUNNER_PORT, PORT\n MAESTRO_REMOTE_RUNNER_WORKSPACE_ID, MAESTRO_AGENT_ID, MAESTRO_AGENT_RUN_ID, MAESTRO_SESSION_ID\n MAESTRO_ATTACH_AUDIENCE`;\n\nfunction parseHostedRunnerOptions(\n\targs: readonly string[],\n): HostedRunnerOptions {\n\tconst flags = new Map<string, HostedRunnerFlagValue[]>();\n\tconst positionals: string[] = [];\n\n\tfor (let index = 0; index < args.length; index += 1) {\n\t\tconst arg = args[index];\n\t\tif (!arg) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (arg === \"--\") {\n\t\t\tpositionals.push(...args.slice(index + 1));\n\t\t\tbreak;\n\t\t}\n\t\tif (!arg.startsWith(\"--\")) {\n\t\t\tpositionals.push(arg);\n\t\t\tcontinue;\n\t\t}\n\t\tconst equalsIndex = arg.indexOf(\"=\");\n\t\tconst key = equalsIndex >= 0 ? arg.slice(2, equalsIndex) : arg.slice(2);\n\t\tconst inlineValue =\n\t\t\tequalsIndex >= 0 ? arg.slice(equalsIndex + 1) : undefined;\n\t\tconst next = args[index + 1];\n\t\tconst value =\n\t\t\tinlineValue !== undefined\n\t\t\t\t? inlineValue\n\t\t\t\t: next && !next.startsWith(\"--\")\n\t\t\t\t\t? next\n\t\t\t\t\t: true;\n\t\tif (inlineValue === undefined && value !== true) {\n\t\t\tindex += 1;\n\t\t}\n\t\tconst values = flags.get(key) ?? [];\n\t\tvalues.push(value);\n\t\tflags.set(key, values);\n\t}\n\n\treturn { flags, positionals };\n}\n\nfunction getLastFlag(\n\toptions: HostedRunnerOptions,\n\tkey: string,\n): string | undefined {\n\tconst values = options.flags.get(key);\n\tconst value = values?.at(-1);\n\treturn typeof value === \"string\" ? value.trim() : undefined;\n}\n\nfunction hasFlag(options: HostedRunnerOptions, key: string): boolean {\n\treturn options.flags.has(key);\n}\n\nfunction getEnvValue(\n\tenv: NodeJS.ProcessEnv,\n\tkeys: readonly string[],\n): string | undefined {\n\tfor (const key of keys) {\n\t\tconst value = env[key]?.trim();\n\t\tif (value) {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction parsePort(\n\tvalue: string | undefined,\n\tlabel: string,\n): number | undefined {\n\tif (!value) {\n\t\treturn undefined;\n\t}\n\tif (!/^\\d+$/.test(value.trim())) {\n\t\tthrow new Error(`${label} must be a TCP port between 1 and 65535`);\n\t}\n\tconst port = Number.parseInt(value, 10);\n\tif (!Number.isInteger(port) || port <= 0 || port > 65535) {\n\t\tthrow new Error(`${label} must be a TCP port between 1 and 65535`);\n\t}\n\treturn port;\n}\n\nfunction parseListen(value: string | undefined): {\n\thost?: string;\n\tport?: number;\n} {\n\tif (!value) {\n\t\treturn {};\n\t}\n\tconst trimmed = value.trim();\n\tif (/^\\d+$/.test(trimmed)) {\n\t\treturn { port: parsePort(trimmed, \"--listen\") };\n\t}\n\tconst separatorIndex = trimmed.lastIndexOf(\":\");\n\tif (separatorIndex <= 0 || separatorIndex === trimmed.length - 1) {\n\t\tthrow new Error(\"--listen must be <host:port> or <port>\");\n\t}\n\treturn {\n\t\thost: trimmed.slice(0, separatorIndex),\n\t\tport: parsePort(trimmed.slice(separatorIndex + 1), \"--listen\"),\n\t};\n}\n\nasync function resolveWorkspaceRoot(path: string | undefined): Promise<string> {\n\tif (!path) {\n\t\tthrow new Error(\n\t\t\t\"maestro hosted-runner requires --workspace-root or MAESTRO_WORKSPACE_ROOT\",\n\t\t);\n\t}\n\tconst workspaceRoot = resolve(path);\n\tconst stats = await stat(workspaceRoot);\n\tif (!stats.isDirectory()) {\n\t\tthrow new Error(`Hosted runner workspace root is not a directory: ${path}`);\n\t}\n\treturn realpath(workspaceRoot);\n}\n\nfunction resolveSnapshotRoot(\n\tpath: string | undefined,\n\tworkspaceRoot: string,\n): string {\n\tif (!path) {\n\t\treturn resolve(workspaceRoot, \".maestro\", \"runner-snapshots\");\n\t}\n\treturn resolve(workspaceRoot, path);\n}\n\nexport function formatHostedRunnerUsage(): string {\n\treturn HOSTED_RUNNER_USAGE;\n}\n\nexport async function resolveHostedRunnerConfig(\n\targs: readonly string[],\n\tenv: NodeJS.ProcessEnv = process.env,\n\toptions: HostedRunnerResolveOptions = {},\n): Promise<HostedRunnerConfig> {\n\tconst parsed = parseHostedRunnerOptions(args);\n\tif (parsed.positionals.length > 0) {\n\t\tthrow new Error(\n\t\t\t`Unexpected hosted-runner argument: ${parsed.positionals[0]}`,\n\t\t);\n\t}\n\n\tconst runnerSessionId =\n\t\tgetLastFlag(parsed, \"runner-session-id\") ??\n\t\tgetEnvValue(env, [\"MAESTRO_RUNNER_SESSION_ID\", \"REMOTE_RUNNER_SESSION_ID\"]);\n\tif (!runnerSessionId) {\n\t\tthrow new Error(\n\t\t\t\"maestro hosted-runner requires --runner-session-id or MAESTRO_RUNNER_SESSION_ID\",\n\t\t);\n\t}\n\n\tconst listen = parseListen(\n\t\tgetLastFlag(parsed, \"listen\") ?? env.MAESTRO_HOSTED_RUNNER_LISTEN,\n\t);\n\tconst port =\n\t\tlisten.port ??\n\t\tparsePort(getLastFlag(parsed, \"port\"), \"--port\") ??\n\t\tparsePort(env.MAESTRO_HOSTED_RUNNER_PORT, \"MAESTRO_HOSTED_RUNNER_PORT\") ??\n\t\tparsePort(env.PORT, \"PORT\") ??\n\t\toptions.defaultPort ??\n\t\t8080;\n\tconst workspaceRoot = await resolveWorkspaceRoot(\n\t\tgetLastFlag(parsed, \"workspace-root\") ??\n\t\t\tgetEnvValue(env, [\"MAESTRO_WORKSPACE_ROOT\", \"WORKSPACE_ROOT\"]),\n\t);\n\n\treturn {\n\t\trunnerSessionId,\n\t\townerInstanceId:\n\t\t\tgetLastFlag(parsed, \"owner-instance-id\") ??\n\t\t\tgetEnvValue(env, [\n\t\t\t\t\"MAESTRO_REMOTE_RUNNER_OWNER_INSTANCE_ID\",\n\t\t\t\t\"REMOTE_RUNNER_OWNER_INSTANCE_ID\",\n\t\t\t]),\n\t\tworkspaceRoot,\n\t\tsnapshotRoot: resolveSnapshotRoot(\n\t\t\tgetLastFlag(parsed, \"snapshot-root\") ??\n\t\t\t\tgetEnvValue(env, [\n\t\t\t\t\t\"MAESTRO_REMOTE_RUNNER_SNAPSHOT_ROOT\",\n\t\t\t\t\t\"REMOTE_RUNNER_SNAPSHOT_ROOT\",\n\t\t\t\t]),\n\t\t\tworkspaceRoot,\n\t\t),\n\t\thost:\n\t\t\tlisten.host ??\n\t\t\tgetLastFlag(parsed, \"host\") ??\n\t\t\tenv.MAESTRO_HOSTED_RUNNER_HOST,\n\t\tport,\n\t\tworkspaceId:\n\t\t\tgetLastFlag(parsed, \"workspace-id\") ??\n\t\t\tgetEnvValue(env, [\n\t\t\t\t\"MAESTRO_REMOTE_RUNNER_WORKSPACE_ID\",\n\t\t\t\t\"MAESTRO_WORKSPACE_ID\",\n\t\t\t]),\n\t\tagentId:\n\t\t\tgetLastFlag(parsed, \"agent-id\") ??\n\t\t\tgetEnvValue(env, [\"MAESTRO_REMOTE_RUNNER_AGENT_ID\", \"MAESTRO_AGENT_ID\"]),\n\t\tagentRunId: getLastFlag(parsed, \"agent-run-id\") ?? env.MAESTRO_AGENT_RUN_ID,\n\t\tmaestroSessionId:\n\t\t\tgetLastFlag(parsed, \"maestro-session-id\") ?? env.MAESTRO_SESSION_ID,\n\t\tattachAudience:\n\t\t\tgetLastFlag(parsed, \"attach-audience\") ?? env.MAESTRO_ATTACH_AUDIENCE,\n\t};\n}\n\nexport function applyHostedRunnerEnvironment(config: HostedRunnerConfig): void {\n\tprocess.env.MAESTRO_HOSTED_RUNNER_MODE = \"1\";\n\tprocess.env.MAESTRO_RUNNER_SESSION_ID = config.runnerSessionId;\n\tprocess.env.MAESTRO_WORKSPACE_ROOT = config.workspaceRoot;\n\tprocess.env.MAESTRO_REMOTE_RUNNER_SNAPSHOT_ROOT = config.snapshotRoot;\n\tif (config.ownerInstanceId) {\n\t\tprocess.env.MAESTRO_REMOTE_RUNNER_OWNER_INSTANCE_ID =\n\t\t\tconfig.ownerInstanceId;\n\t\tprocess.env.REMOTE_RUNNER_OWNER_INSTANCE_ID = config.ownerInstanceId;\n\t}\n\tprocess.env.MAESTRO_PROFILE ??= \"hosted-runner\";\n\tprocess.env.MAESTRO_WEB_REQUIRE_KEY ??= \"1\";\n\tprocess.env.MAESTRO_WEB_REQUIRE_REDIS ??= \"0\";\n\tprocess.env.MAESTRO_WEB_REQUIRE_CSRF ??= \"0\";\n\tprocess.env.MAESTRO_AGENT_DIR ??= resolve(\n\t\tconfig.workspaceRoot,\n\t\t\".maestro\",\n\t\t\"agent\",\n\t);\n\tif (config.workspaceId) {\n\t\tprocess.env.MAESTRO_REMOTE_RUNNER_WORKSPACE_ID = config.workspaceId;\n\t}\n\tif (config.agentRunId) {\n\t\tprocess.env.MAESTRO_AGENT_RUN_ID = config.agentRunId;\n\t}\n\tif (config.agentId) {\n\t\tprocess.env.MAESTRO_AGENT_ID = config.agentId;\n\t\tprocess.env.MAESTRO_REMOTE_RUNNER_AGENT_ID = config.agentId;\n\t}\n\tif (config.maestroSessionId) {\n\t\tprocess.env.MAESTRO_SESSION_ID = config.maestroSessionId;\n\t}\n\tif (config.attachAudience) {\n\t\tprocess.env.MAESTRO_ATTACH_AUDIENCE = config.attachAudience;\n\t}\n\tprocess.chdir(config.workspaceRoot);\n}\n\nexport function toHostedRunnerContext(\n\tconfig: HostedRunnerConfig,\n): HostedRunnerContext {\n\treturn {\n\t\tenabled: true,\n\t\trunnerSessionId: config.runnerSessionId,\n\t\townerInstanceId: config.ownerInstanceId,\n\t\tworkspaceRoot: config.workspaceRoot,\n\t\tsnapshotRoot: config.snapshotRoot,\n\t\tlistenHost: config.host,\n\t\tlistenPort: config.port,\n\t\tworkspaceId: config.workspaceId,\n\t\tagentId: config.agentId,\n\t\tagentRunId: config.agentRunId,\n\t\tattachAudience: config.attachAudience,\n\t\tconfiguredMaestroSessionId: config.maestroSessionId,\n\t\tactiveMaestroSessionId: config.maestroSessionId,\n\t};\n}\n\nexport async function handleHostedRunnerCommand(\n\targs: readonly string[],\n\toptions: HostedRunnerResolveOptions = {},\n): Promise<void> {\n\tconst parsed = parseHostedRunnerOptions(args);\n\tif (hasFlag(parsed, \"help\")) {\n\t\tconsole.log(formatHostedRunnerUsage());\n\t\treturn;\n\t}\n\n\ttry {\n\t\tconst config = await resolveHostedRunnerConfig(args, process.env, options);\n\t\tapplyHostedRunnerEnvironment(config);\n\t\tconst { startWebServer } = await import(\"../../web-server.js\");\n\t\tawait startWebServer(config.port, {\n\t\t\thost: config.host,\n\t\t\thostedRunner: toHostedRunnerContext(config),\n\t\t});\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tconsole.error(chalk.red(message));\n\t\tprocess.exit(1);\n\t}\n}\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type ModeCommandOptions = {
|
|
2
|
+
provider?: string;
|
|
3
|
+
json?: boolean;
|
|
4
|
+
includeHidden?: boolean;
|
|
5
|
+
};
|
|
6
|
+
export declare function handleModesCommand(subcommand: string | undefined, messages?: string[], options?: ModeCommandOptions): Promise<void>;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=modes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modes.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/modes.ts"],"names":[],"mappings":"AAyBA,KAAK,kBAAkB,GAAG;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AA8JF,wBAAsB,kBAAkB,CACvC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,QAAQ,GAAE,MAAM,EAAO,EACvB,OAAO,GAAE,kBAAuB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAwCf"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { getAllModes, getModeConfig, getModelForMode, getModelForTier, parseMode, resolveSubagentDispatch, } from "../../agent/modes.js";
|
|
3
|
+
import { SUBAGENT_SPECS, } from "../../agent/subagent-specs.js";
|
|
4
|
+
import { recordStagedRolloutSurfaceUsage } from "../../telemetry.js";
|
|
5
|
+
const PROVIDERS = [
|
|
6
|
+
"anthropic",
|
|
7
|
+
"openai",
|
|
8
|
+
"openai-codex",
|
|
9
|
+
"google",
|
|
10
|
+
];
|
|
11
|
+
function parseProvider(provider) {
|
|
12
|
+
if (!provider) {
|
|
13
|
+
return "anthropic";
|
|
14
|
+
}
|
|
15
|
+
if (PROVIDERS.includes(provider)) {
|
|
16
|
+
return provider;
|
|
17
|
+
}
|
|
18
|
+
throw new Error(`Unknown provider "${provider}". Supported providers: ${PROVIDERS.join(", ")}`);
|
|
19
|
+
}
|
|
20
|
+
function allSubagentTypes() {
|
|
21
|
+
return Object.keys(SUBAGENT_SPECS);
|
|
22
|
+
}
|
|
23
|
+
function buildModeDescription(mode, provider) {
|
|
24
|
+
const config = getModeConfig(mode);
|
|
25
|
+
return {
|
|
26
|
+
mode,
|
|
27
|
+
displayName: config.displayName,
|
|
28
|
+
description: config.description,
|
|
29
|
+
visible: config.visible,
|
|
30
|
+
primary: {
|
|
31
|
+
tier: config.primaryTier,
|
|
32
|
+
provider,
|
|
33
|
+
model: getModelForMode(mode, provider),
|
|
34
|
+
},
|
|
35
|
+
fallback: {
|
|
36
|
+
tier: config.fallbackTier,
|
|
37
|
+
provider,
|
|
38
|
+
model: getModelForTier(config.fallbackTier, provider),
|
|
39
|
+
},
|
|
40
|
+
reasoningEffort: config.reasoningEffort ?? (config.enableThinking ? "medium" : "low"),
|
|
41
|
+
thinking: {
|
|
42
|
+
enabled: config.enableThinking,
|
|
43
|
+
budget: config.thinkingBudget,
|
|
44
|
+
},
|
|
45
|
+
context: {
|
|
46
|
+
extended: config.useExtendedContext,
|
|
47
|
+
},
|
|
48
|
+
retries: config.maxRetries,
|
|
49
|
+
costMultiplier: config.costMultiplier,
|
|
50
|
+
speedHint: config.speedHint,
|
|
51
|
+
subagents: allSubagentTypes().map((type) => {
|
|
52
|
+
const dispatch = resolveSubagentDispatch(mode, type, provider);
|
|
53
|
+
const spec = SUBAGENT_SPECS[type];
|
|
54
|
+
return {
|
|
55
|
+
...dispatch,
|
|
56
|
+
displayName: spec.displayName,
|
|
57
|
+
description: spec.description,
|
|
58
|
+
};
|
|
59
|
+
}),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function pad(value, width) {
|
|
63
|
+
return value.length >= width ? value : value.padEnd(width);
|
|
64
|
+
}
|
|
65
|
+
function renderModeDescription(description) {
|
|
66
|
+
const visibility = description.visible ? "visible" : "hidden";
|
|
67
|
+
const lines = [
|
|
68
|
+
`Mode: ${description.displayName} (${description.mode})`,
|
|
69
|
+
description.description,
|
|
70
|
+
"",
|
|
71
|
+
`Visibility: ${visibility}`,
|
|
72
|
+
`Primary: ${description.primary.tier} -> ${description.primary.provider}/${description.primary.model}`,
|
|
73
|
+
`Fallback: ${description.fallback.tier} -> ${description.fallback.provider}/${description.fallback.model}`,
|
|
74
|
+
`Reasoning: ${description.reasoningEffort}`,
|
|
75
|
+
`Thinking: ${description.thinking.enabled ? "enabled" : "disabled"} (budget ${description.thinking.budget})`,
|
|
76
|
+
`Context: ${description.context.extended ? "extended" : "standard"}`,
|
|
77
|
+
`Retries: ${description.retries}`,
|
|
78
|
+
"",
|
|
79
|
+
`Subagent dispatch (provider: ${description.primary.provider})`,
|
|
80
|
+
`${pad("Type", 12)} ${pad("Source", 8)} ${pad("Provider", 14)} ${pad("Model", 34)} ${pad("Effort", 8)} Tier`,
|
|
81
|
+
`${"-".repeat(12)} ${"-".repeat(8)} ${"-".repeat(14)} ${"-".repeat(34)} ${"-".repeat(8)} ${"-".repeat(8)}`,
|
|
82
|
+
];
|
|
83
|
+
for (const dispatch of description.subagents) {
|
|
84
|
+
lines.push([
|
|
85
|
+
pad(dispatch.type, 12),
|
|
86
|
+
pad(dispatch.source, 8),
|
|
87
|
+
pad(dispatch.provider, 14),
|
|
88
|
+
pad(dispatch.model, 34),
|
|
89
|
+
pad(dispatch.reasoningEffort, 8),
|
|
90
|
+
dispatch.modelTier ?? "-",
|
|
91
|
+
].join(" "));
|
|
92
|
+
}
|
|
93
|
+
return lines.join("\n");
|
|
94
|
+
}
|
|
95
|
+
function renderModesList(includeHidden) {
|
|
96
|
+
const lines = ["Agent modes:", ""];
|
|
97
|
+
for (const { mode, config } of getAllModes({ includeHidden })) {
|
|
98
|
+
const hiddenSuffix = config.visible === false ? " [hidden]" : "";
|
|
99
|
+
lines.push(`${mode}${hiddenSuffix}`);
|
|
100
|
+
lines.push(` ${config.description}`);
|
|
101
|
+
lines.push(` describe: maestro modes describe ${mode}`);
|
|
102
|
+
}
|
|
103
|
+
return lines.join("\n");
|
|
104
|
+
}
|
|
105
|
+
function usage() {
|
|
106
|
+
return [
|
|
107
|
+
"Usage:",
|
|
108
|
+
" maestro modes list",
|
|
109
|
+
" maestro modes describe <mode> [--provider <provider>] [--json]",
|
|
110
|
+
"",
|
|
111
|
+
"Examples:",
|
|
112
|
+
" maestro modes describe smart",
|
|
113
|
+
" maestro modes describe frontier --provider openai --json",
|
|
114
|
+
].join("\n");
|
|
115
|
+
}
|
|
116
|
+
export async function handleModesCommand(subcommand, messages = [], options = {}) {
|
|
117
|
+
const provider = parseProvider(options.provider);
|
|
118
|
+
const command = subcommand ?? "list";
|
|
119
|
+
if (command === "help" || command === "--help" || command === "-h") {
|
|
120
|
+
console.log(usage());
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
if (command === "list") {
|
|
124
|
+
console.log(renderModesList(options.includeHidden === true));
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
const modeName = command === "describe" ? messages[0] : command;
|
|
128
|
+
const mode = modeName ? parseMode(modeName) : null;
|
|
129
|
+
if (!mode) {
|
|
130
|
+
const suffix = modeName ? `: ${modeName}` : "";
|
|
131
|
+
console.error(chalk.red(`Unknown mode${suffix}`));
|
|
132
|
+
console.log(chalk.dim(usage()));
|
|
133
|
+
process.exit(1);
|
|
134
|
+
}
|
|
135
|
+
const description = buildModeDescription(mode, provider);
|
|
136
|
+
if (!description.visible) {
|
|
137
|
+
const config = getModeConfig(mode);
|
|
138
|
+
await recordStagedRolloutSurfaceUsage("hidden_mode_used", {
|
|
139
|
+
surfaceId: `mode:${mode}`,
|
|
140
|
+
surfaceType: "mode",
|
|
141
|
+
owner: config.rolloutOwner,
|
|
142
|
+
source: "cli:modes:describe",
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
if (options.json) {
|
|
146
|
+
console.log(JSON.stringify(description, null, 2));
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
console.log(renderModeDescription(description));
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=modes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modes.js","sourceRoot":"","sources":["../../../src/cli/commands/modes.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from \"chalk\";\nimport {\n\ttype AgentMode,\n\ttype ModelProvider,\n\ttype ResolvedSubagentDispatch,\n\tgetAllModes,\n\tgetModeConfig,\n\tgetModelForMode,\n\tgetModelForTier,\n\tparseMode,\n\tresolveSubagentDispatch,\n} from \"../../agent/modes.js\";\nimport {\n\tSUBAGENT_SPECS,\n\ttype SubagentType,\n} from \"../../agent/subagent-specs.js\";\nimport { recordStagedRolloutSurfaceUsage } from \"../../telemetry.js\";\n\nconst PROVIDERS: ModelProvider[] = [\n\t\"anthropic\",\n\t\"openai\",\n\t\"openai-codex\",\n\t\"google\",\n];\n\ntype ModeCommandOptions = {\n\tprovider?: string;\n\tjson?: boolean;\n\tincludeHidden?: boolean;\n};\n\ntype ModeDescription = {\n\tmode: AgentMode;\n\tdisplayName: string;\n\tdescription: string;\n\tvisible: boolean;\n\tprimary: {\n\t\ttier: string;\n\t\tprovider: ModelProvider;\n\t\tmodel: string;\n\t};\n\tfallback: {\n\t\ttier: string;\n\t\tprovider: ModelProvider;\n\t\tmodel: string;\n\t};\n\treasoningEffort: string;\n\tthinking: {\n\t\tenabled: boolean;\n\t\tbudget: number;\n\t};\n\tcontext: {\n\t\textended: boolean;\n\t};\n\tretries: number;\n\tcostMultiplier: number;\n\tspeedHint: number;\n\tsubagents: Array<\n\t\tResolvedSubagentDispatch & {\n\t\t\tdisplayName: string;\n\t\t\tdescription: string;\n\t\t}\n\t>;\n};\n\nfunction parseProvider(provider: string | undefined): ModelProvider {\n\tif (!provider) {\n\t\treturn \"anthropic\";\n\t}\n\tif (PROVIDERS.includes(provider as ModelProvider)) {\n\t\treturn provider as ModelProvider;\n\t}\n\tthrow new Error(\n\t\t`Unknown provider \"${provider}\". Supported providers: ${PROVIDERS.join(\", \")}`,\n\t);\n}\n\nfunction allSubagentTypes(): SubagentType[] {\n\treturn Object.keys(SUBAGENT_SPECS) as SubagentType[];\n}\n\nfunction buildModeDescription(\n\tmode: AgentMode,\n\tprovider: ModelProvider,\n): ModeDescription {\n\tconst config = getModeConfig(mode);\n\treturn {\n\t\tmode,\n\t\tdisplayName: config.displayName,\n\t\tdescription: config.description,\n\t\tvisible: config.visible,\n\t\tprimary: {\n\t\t\ttier: config.primaryTier,\n\t\t\tprovider,\n\t\t\tmodel: getModelForMode(mode, provider),\n\t\t},\n\t\tfallback: {\n\t\t\ttier: config.fallbackTier,\n\t\t\tprovider,\n\t\t\tmodel: getModelForTier(config.fallbackTier, provider),\n\t\t},\n\t\treasoningEffort:\n\t\t\tconfig.reasoningEffort ?? (config.enableThinking ? \"medium\" : \"low\"),\n\t\tthinking: {\n\t\t\tenabled: config.enableThinking,\n\t\t\tbudget: config.thinkingBudget,\n\t\t},\n\t\tcontext: {\n\t\t\textended: config.useExtendedContext,\n\t\t},\n\t\tretries: config.maxRetries,\n\t\tcostMultiplier: config.costMultiplier,\n\t\tspeedHint: config.speedHint,\n\t\tsubagents: allSubagentTypes().map((type) => {\n\t\t\tconst dispatch = resolveSubagentDispatch(mode, type, provider);\n\t\t\tconst spec = SUBAGENT_SPECS[type];\n\t\t\treturn {\n\t\t\t\t...dispatch,\n\t\t\t\tdisplayName: spec.displayName,\n\t\t\t\tdescription: spec.description,\n\t\t\t};\n\t\t}),\n\t};\n}\n\nfunction pad(value: string, width: number): string {\n\treturn value.length >= width ? value : value.padEnd(width);\n}\n\nfunction renderModeDescription(description: ModeDescription): string {\n\tconst visibility = description.visible ? \"visible\" : \"hidden\";\n\tconst lines = [\n\t\t`Mode: ${description.displayName} (${description.mode})`,\n\t\tdescription.description,\n\t\t\"\",\n\t\t`Visibility: ${visibility}`,\n\t\t`Primary: ${description.primary.tier} -> ${description.primary.provider}/${description.primary.model}`,\n\t\t`Fallback: ${description.fallback.tier} -> ${description.fallback.provider}/${description.fallback.model}`,\n\t\t`Reasoning: ${description.reasoningEffort}`,\n\t\t`Thinking: ${description.thinking.enabled ? \"enabled\" : \"disabled\"} (budget ${description.thinking.budget})`,\n\t\t`Context: ${description.context.extended ? \"extended\" : \"standard\"}`,\n\t\t`Retries: ${description.retries}`,\n\t\t\"\",\n\t\t`Subagent dispatch (provider: ${description.primary.provider})`,\n\t\t`${pad(\"Type\", 12)} ${pad(\"Source\", 8)} ${pad(\"Provider\", 14)} ${pad(\"Model\", 34)} ${pad(\"Effort\", 8)} Tier`,\n\t\t`${\"-\".repeat(12)} ${\"-\".repeat(8)} ${\"-\".repeat(14)} ${\"-\".repeat(34)} ${\"-\".repeat(8)} ${\"-\".repeat(8)}`,\n\t];\n\n\tfor (const dispatch of description.subagents) {\n\t\tlines.push(\n\t\t\t[\n\t\t\t\tpad(dispatch.type, 12),\n\t\t\t\tpad(dispatch.source, 8),\n\t\t\t\tpad(dispatch.provider, 14),\n\t\t\t\tpad(dispatch.model, 34),\n\t\t\t\tpad(dispatch.reasoningEffort, 8),\n\t\t\t\tdispatch.modelTier ?? \"-\",\n\t\t\t].join(\" \"),\n\t\t);\n\t}\n\n\treturn lines.join(\"\\n\");\n}\n\nfunction renderModesList(includeHidden: boolean): string {\n\tconst lines = [\"Agent modes:\", \"\"];\n\tfor (const { mode, config } of getAllModes({ includeHidden })) {\n\t\tconst hiddenSuffix = config.visible === false ? \" [hidden]\" : \"\";\n\t\tlines.push(`${mode}${hiddenSuffix}`);\n\t\tlines.push(` ${config.description}`);\n\t\tlines.push(` describe: maestro modes describe ${mode}`);\n\t}\n\treturn lines.join(\"\\n\");\n}\n\nfunction usage(): string {\n\treturn [\n\t\t\"Usage:\",\n\t\t\" maestro modes list\",\n\t\t\" maestro modes describe <mode> [--provider <provider>] [--json]\",\n\t\t\"\",\n\t\t\"Examples:\",\n\t\t\" maestro modes describe smart\",\n\t\t\" maestro modes describe frontier --provider openai --json\",\n\t].join(\"\\n\");\n}\n\nexport async function handleModesCommand(\n\tsubcommand: string | undefined,\n\tmessages: string[] = [],\n\toptions: ModeCommandOptions = {},\n): Promise<void> {\n\tconst provider = parseProvider(options.provider);\n\tconst command = subcommand ?? \"list\";\n\n\tif (command === \"help\" || command === \"--help\" || command === \"-h\") {\n\t\tconsole.log(usage());\n\t\treturn;\n\t}\n\n\tif (command === \"list\") {\n\t\tconsole.log(renderModesList(options.includeHidden === true));\n\t\treturn;\n\t}\n\n\tconst modeName = command === \"describe\" ? messages[0] : command;\n\tconst mode = modeName ? parseMode(modeName) : null;\n\tif (!mode) {\n\t\tconst suffix = modeName ? `: ${modeName}` : \"\";\n\t\tconsole.error(chalk.red(`Unknown mode${suffix}`));\n\t\tconsole.log(chalk.dim(usage()));\n\t\tprocess.exit(1);\n\t}\n\n\tconst description = buildModeDescription(mode, provider);\n\tif (!description.visible) {\n\t\tconst config = getModeConfig(mode);\n\t\tawait recordStagedRolloutSurfaceUsage(\"hidden_mode_used\", {\n\t\t\tsurfaceId: `mode:${mode}`,\n\t\t\tsurfaceType: \"mode\",\n\t\t\towner: config.rolloutOwner,\n\t\t\tsource: \"cli:modes:describe\",\n\t\t});\n\t}\n\n\tif (options.json) {\n\t\tconsole.log(JSON.stringify(description, null, 2));\n\t\treturn;\n\t}\n\n\tconsole.log(renderModeDescription(description));\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type OperatingPlaneInspection, type OperatingPlaneRunQuery } from "../../platform/operating-plane-client.js";
|
|
2
|
+
export interface ParsedOperatingPlaneArgs {
|
|
3
|
+
subcommand: string;
|
|
4
|
+
query: OperatingPlaneRunQuery;
|
|
5
|
+
json: boolean;
|
|
6
|
+
help: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface HandleOperatingPlaneCommandOptions {
|
|
9
|
+
inspect?: (query: OperatingPlaneRunQuery) => Promise<OperatingPlaneInspection>;
|
|
10
|
+
write?: (line: string) => void;
|
|
11
|
+
}
|
|
12
|
+
export declare function handleOperatingPlaneCommand(args: string[], options?: HandleOperatingPlaneCommandOptions): Promise<void>;
|
|
13
|
+
export declare function parseOperatingPlaneArgs(args: string[]): ParsedOperatingPlaneArgs;
|
|
14
|
+
//# sourceMappingURL=operating-plane.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operating-plane.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/operating-plane.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAE3B,MAAM,0CAA0C,CAAC;AAMlD,MAAM,WAAW,wBAAwB;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,sBAAsB,CAAC;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,kCAAkC;IAClD,OAAO,CAAC,EAAE,CACT,KAAK,EAAE,sBAAsB,KACzB,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACvC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B;AAqBD,wBAAsB,2BAA2B,CAChD,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,kCAAuC,GAC9C,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,wBAAgB,uBAAuB,CACtC,IAAI,EAAE,MAAM,EAAE,GACZ,wBAAwB,CA8C1B"}
|