@evalops/maestro 0.10.17 → 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/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +6 -0
- package/dist/cli/commands/init.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 +136 -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 +49209 -26165
- 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/agent-bootstrap.d.ts +1 -0
- package/dist/evalops/agent-bootstrap.d.ts.map +1 -1
- package/dist/evalops/agent-bootstrap.js +41 -1
- package/dist/evalops/agent-bootstrap.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 +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -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 +217 -0
- package/dist/platform/a2a-client.d.ts.map +1 -0
- package/dist/platform/a2a-client.js +589 -0
- package/dist/platform/a2a-client.js.map +1 -0
- 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 +2 -0
- package/dist/platform/client.d.ts.map +1 -1
- package/dist/platform/client.js +7 -14
- 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
|
@@ -1,39 +1,34 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
2
|
-
import { basename, dirname, join, resolve } from "node:path";
|
|
1
|
+
import { existsSync, lstatSync, mkdirSync, readFileSync, readdirSync, realpathSync, statSync, writeFileSync, } from "node:fs";
|
|
2
|
+
import { basename, dirname, isAbsolute, join, relative, resolve, } from "node:path";
|
|
3
|
+
import * as Diff from "diff";
|
|
4
|
+
import { truncateUtf8 } from "../system-prompt.js";
|
|
3
5
|
const TEMPLATE = `# Repository Guidelines
|
|
4
6
|
|
|
5
|
-
Use this as the contributor quickstart for **{{PROJECT_NAME}}**.
|
|
7
|
+
Use this as the contributor quickstart for **{{PROJECT_NAME}}**.
|
|
6
8
|
|
|
7
|
-
## Project Structure
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
- Call out any generated code or directories that should not be hand-edited.
|
|
9
|
+
## Project Structure
|
|
10
|
+
- Map the main source, test, docs, scripts, and config paths.
|
|
11
|
+
- Call out generated, vendored, or build-output directories agents should not edit.
|
|
11
12
|
|
|
12
|
-
##
|
|
13
|
-
- Install
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
- Quality gates: \`npm run lint\`, \`npm run format\`.
|
|
17
|
-
- Tests: \`npm test\`, \`npm run test:unit\`, or \`npm run test:e2e\`. Include any required setup (e.g., \`docker compose up\` for services).
|
|
13
|
+
## Commands
|
|
14
|
+
- Install: \`npm install\` (or the repo's package manager).
|
|
15
|
+
- Develop: \`npm run dev\`; Build: \`npm run build\`.
|
|
16
|
+
- Quality: \`npm run lint\`, \`npm run format\`, and \`npm test\`.
|
|
18
17
|
|
|
19
|
-
##
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
- Favor small, focused modules and pure functions; document non-obvious behavior with brief comments.
|
|
18
|
+
## Style
|
|
19
|
+
- Follow the checked-in formatter and linter; keep naming consistent with nearby code.
|
|
20
|
+
- Prefer small, focused changes and comments only for non-obvious behavior.
|
|
23
21
|
|
|
24
|
-
## Testing
|
|
25
|
-
-
|
|
26
|
-
- Cover success, error, and boundary cases
|
|
27
|
-
- For long suites, run focused tests: \`npm test -- <pattern>\`; add coverage goals if required.
|
|
22
|
+
## Testing
|
|
23
|
+
- Add or update tests beside changed behavior.
|
|
24
|
+
- Cover success, error, and boundary cases with deterministic fixtures.
|
|
28
25
|
|
|
29
|
-
##
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
- Run the project's lint/test/build commands expected by CI before requesting review.
|
|
26
|
+
## Pull Requests
|
|
27
|
+
- Use imperative commit subjects and keep PRs scoped.
|
|
28
|
+
- Include behavior changes, linked issues, validation steps, and screenshots for UI changes.
|
|
33
29
|
|
|
34
|
-
## Security
|
|
35
|
-
- Do not commit secrets;
|
|
36
|
-
- Document new environment variables, migrations, and destructive scripts; prefer least-privilege defaults.
|
|
30
|
+
## Security
|
|
31
|
+
- Do not commit secrets; document new environment variables and migrations.
|
|
37
32
|
`;
|
|
38
33
|
const GENERATION_PROMPT = `Generate a file named AGENTS.md that serves as a contributor guide for this repository.
|
|
39
34
|
|
|
@@ -42,7 +37,7 @@ Your goal is to produce a clear, concise, and well-structured document with desc
|
|
|
42
37
|
Document Requirements:
|
|
43
38
|
- Title the document "Repository Guidelines".
|
|
44
39
|
- Use Markdown headings (#, ##, etc.) for structure.
|
|
45
|
-
- Keep the document concise;
|
|
40
|
+
- Keep the document concise; about 20 lines and 150-250 words is optimal.
|
|
46
41
|
- Keep explanations short, direct, and specific to this repository.
|
|
47
42
|
- Provide examples where helpful (commands, directory paths, naming patterns).
|
|
48
43
|
- Maintain a professional, instructional tone.
|
|
@@ -57,9 +52,26 @@ Recommended Sections:
|
|
|
57
52
|
|
|
58
53
|
Instructions:
|
|
59
54
|
- Use the available tools to inspect this repository as needed (e.g., list directories, read configs, inspect scripts) before writing.
|
|
55
|
+
- If existing AI tool rule files are supplied below, preserve their intent in the generated AGENTS.md instead of ignoring or mechanically concatenating them.
|
|
56
|
+
- If an existing AGENTS.md or AGENT.md is supplied below, update its guidance instead of discarding hand-written project specifics.
|
|
57
|
+
- Add a short HTML comment near the top noting which AI rule sources contributed.
|
|
60
58
|
- Overwrite the entire contents of AGENTS.md at the target path.
|
|
61
59
|
- Keep output scoped to the single Markdown file; do not create extra files.
|
|
62
60
|
- Write the final document directly to the AGENTS.md file and return a brief confirmation when done.`;
|
|
61
|
+
const MAX_IMPORTED_RULE_BYTES = 12_000;
|
|
62
|
+
const RULE_WALK_IGNORE_DIRS = new Set([
|
|
63
|
+
".git",
|
|
64
|
+
".hg",
|
|
65
|
+
".svn",
|
|
66
|
+
"node_modules",
|
|
67
|
+
"dist",
|
|
68
|
+
"build",
|
|
69
|
+
"coverage",
|
|
70
|
+
".next",
|
|
71
|
+
".turbo",
|
|
72
|
+
".cache",
|
|
73
|
+
"tmp",
|
|
74
|
+
]);
|
|
63
75
|
function buildAgentsTemplate(projectName) {
|
|
64
76
|
return TEMPLATE.replace(/{{PROJECT_NAME}}/g, projectName);
|
|
65
77
|
}
|
|
@@ -73,19 +85,195 @@ function resolveTargetPath(targetPath) {
|
|
|
73
85
|
}
|
|
74
86
|
return join(resolved, "AGENTS.md");
|
|
75
87
|
}
|
|
76
|
-
|
|
77
|
-
|
|
88
|
+
function isMarkdownRuleFile(fileName) {
|
|
89
|
+
const lower = fileName.toLowerCase();
|
|
90
|
+
return lower.endsWith(".md") || lower.endsWith(".mdc");
|
|
91
|
+
}
|
|
92
|
+
function isPathInside(root, candidate) {
|
|
93
|
+
const relativePath = relative(root, candidate);
|
|
94
|
+
return (relativePath === "" ||
|
|
95
|
+
(!relativePath.startsWith("..") && !isAbsolute(relativePath)));
|
|
96
|
+
}
|
|
97
|
+
function readRuleSource(projectRoot, filePath, label) {
|
|
98
|
+
try {
|
|
99
|
+
const resolvedPath = resolve(filePath);
|
|
100
|
+
const linkStat = lstatSync(resolvedPath);
|
|
101
|
+
if (!linkStat.isFile()) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
const rootRealPath = realpathSync(projectRoot);
|
|
105
|
+
const fileRealPath = realpathSync(resolvedPath);
|
|
106
|
+
if (!isPathInside(rootRealPath, fileRealPath)) {
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
const stat = statSync(resolvedPath);
|
|
110
|
+
if (!stat.isFile()) {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
const raw = readFileSync(resolvedPath);
|
|
114
|
+
const truncated = raw.byteLength > MAX_IMPORTED_RULE_BYTES;
|
|
115
|
+
const content = truncated
|
|
116
|
+
? truncateUtf8(raw, MAX_IMPORTED_RULE_BYTES).content
|
|
117
|
+
: raw.toString("utf-8");
|
|
118
|
+
return {
|
|
119
|
+
path: resolvedPath,
|
|
120
|
+
relativePath: relative(projectRoot, resolvedPath) || basename(resolvedPath),
|
|
121
|
+
label,
|
|
122
|
+
content,
|
|
123
|
+
truncated,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
function walkRuleFiles(dir, predicate) {
|
|
131
|
+
let entries;
|
|
132
|
+
try {
|
|
133
|
+
entries = readdirSync(dir, { withFileTypes: true });
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return [];
|
|
137
|
+
}
|
|
138
|
+
const files = [];
|
|
139
|
+
for (const entry of entries) {
|
|
140
|
+
const entryPath = join(dir, entry.name);
|
|
141
|
+
if (entry.isDirectory()) {
|
|
142
|
+
if (!RULE_WALK_IGNORE_DIRS.has(entry.name)) {
|
|
143
|
+
files.push(...walkRuleFiles(entryPath, predicate));
|
|
144
|
+
}
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
if (entry.isFile() && predicate(entry.name)) {
|
|
148
|
+
files.push(entryPath);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return files.sort((a, b) => a.localeCompare(b));
|
|
152
|
+
}
|
|
153
|
+
export function discoverAgentRuleSources(projectRoot, targetPath, includeTarget = false) {
|
|
154
|
+
const root = resolve(projectRoot);
|
|
155
|
+
const target = targetPath ? resolve(targetPath) : null;
|
|
156
|
+
const sources = new Map();
|
|
157
|
+
const addSource = (filePath, label) => {
|
|
158
|
+
const resolvedPath = resolve(filePath);
|
|
159
|
+
const source = readRuleSource(root, resolvedPath, label);
|
|
160
|
+
if (!source) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
sources.set(resolvedPath, source);
|
|
164
|
+
};
|
|
165
|
+
if (target && includeTarget && existsSync(target)) {
|
|
166
|
+
addSource(target, "Existing AGENTS.md");
|
|
167
|
+
}
|
|
168
|
+
for (const candidate of ["AGENTS.md", "AGENT.md"]) {
|
|
169
|
+
const candidatePath = join(root, candidate);
|
|
170
|
+
if (!target || resolve(candidatePath) !== target) {
|
|
171
|
+
addSource(candidatePath, "Existing Maestro agent instructions");
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
for (const cursorRule of walkRuleFiles(join(root, ".cursor", "rules"), (name) => isMarkdownRuleFile(name))) {
|
|
175
|
+
addSource(cursorRule, "Cursor rule");
|
|
176
|
+
}
|
|
177
|
+
addSource(join(root, ".cursorrules"), "Cursor rules");
|
|
178
|
+
for (const claudeRule of walkRuleFiles(root, (name) => name === "CLAUDE.md")) {
|
|
179
|
+
addSource(claudeRule, "Claude instructions");
|
|
180
|
+
}
|
|
181
|
+
addSource(join(root, ".windsurfrules"), "Windsurf rules");
|
|
182
|
+
addSource(join(root, ".clinerules"), "Cline rules");
|
|
183
|
+
addSource(join(root, ".goosehints"), "Goose hints");
|
|
184
|
+
addSource(join(root, ".github", "copilot-instructions.md"), "Copilot instructions");
|
|
185
|
+
return Array.from(sources.values()).sort((a, b) => a.relativePath.localeCompare(b.relativePath));
|
|
186
|
+
}
|
|
187
|
+
function formatRuleSourceSummary(sources) {
|
|
188
|
+
if (sources.length === 0) {
|
|
189
|
+
return "";
|
|
190
|
+
}
|
|
191
|
+
const sourcePaths = sources.map((source) => formatRulePathForHtmlComment(source.relativePath));
|
|
192
|
+
return [
|
|
193
|
+
"## Imported AI Tooling Rules",
|
|
194
|
+
`<!-- Imported by maestro /init from: ${sourcePaths.join(", ")} -->`,
|
|
195
|
+
"",
|
|
196
|
+
"Review and fold these existing AI-tool instructions into the sections above:",
|
|
197
|
+
"",
|
|
198
|
+
...sources.map((source) => {
|
|
199
|
+
const truncatedNote = source.truncated ? " (truncated)" : "";
|
|
200
|
+
return `- ${formatRulePathForMarkdown(source.relativePath)}: ${source.label}${truncatedNote}`;
|
|
201
|
+
}),
|
|
202
|
+
"",
|
|
203
|
+
].join("\n");
|
|
204
|
+
}
|
|
205
|
+
function formatRulePathForMarkdown(relativePath) {
|
|
206
|
+
return JSON.stringify(relativePath);
|
|
207
|
+
}
|
|
208
|
+
function formatRulePathForHtmlComment(relativePath) {
|
|
209
|
+
return JSON.stringify(relativePath).replace(/-{2,}/g, (dashes) => dashes.split("").join(" "));
|
|
210
|
+
}
|
|
211
|
+
function buildAgentsInitContent(projectName, ruleSources) {
|
|
212
|
+
return `${buildAgentsTemplate(projectName).trimEnd()}\n\n${formatRuleSourceSummary(ruleSources)}`;
|
|
213
|
+
}
|
|
214
|
+
function buildAgentsInitDiff(targetPath, oldContent, newContent) {
|
|
215
|
+
return Diff.createTwoFilesPatch(targetPath, targetPath, oldContent, newContent, "current", "proposed");
|
|
216
|
+
}
|
|
217
|
+
function markdownFenceFor(content) {
|
|
218
|
+
const longestBacktickRun = Math.max(0, ...(content.match(/`+/g) ?? []).map((run) => run.length));
|
|
219
|
+
return "`".repeat(Math.max(3, longestBacktickRun + 1));
|
|
220
|
+
}
|
|
221
|
+
function formatRuleSourcesForPrompt(sources) {
|
|
222
|
+
if (sources.length === 0) {
|
|
223
|
+
return "";
|
|
224
|
+
}
|
|
225
|
+
const blocks = sources.map((source) => {
|
|
226
|
+
const fence = markdownFenceFor(source.content);
|
|
227
|
+
return [
|
|
228
|
+
`### ${formatRulePathForMarkdown(source.relativePath)} (${source.label})`,
|
|
229
|
+
source.truncated
|
|
230
|
+
? `The content below was truncated to ${MAX_IMPORTED_RULE_BYTES} bytes.`
|
|
231
|
+
: "",
|
|
232
|
+
`${fence}md`,
|
|
233
|
+
source.content.trimEnd(),
|
|
234
|
+
fence,
|
|
235
|
+
]
|
|
236
|
+
.filter(Boolean)
|
|
237
|
+
.join("\n");
|
|
238
|
+
});
|
|
239
|
+
return ["", "Existing AI tool rule files to merge:", "", ...blocks].join("\n\n");
|
|
240
|
+
}
|
|
241
|
+
export function buildAgentsInitPrompt(targetPath, sources = discoverAgentRuleSources(dirname(targetPath), targetPath, existsSync(targetPath))) {
|
|
242
|
+
return `${GENERATION_PROMPT}\n\nTarget path: ${targetPath}${formatRuleSourcesForPrompt(sources)}`;
|
|
78
243
|
}
|
|
79
244
|
export function handleAgentsInit(inputPath, options = {}) {
|
|
80
245
|
const target = resolveTargetPath(inputPath);
|
|
81
246
|
const directory = dirname(target);
|
|
82
247
|
const projectName = basename(directory);
|
|
83
248
|
const exists = existsSync(target);
|
|
84
|
-
|
|
85
|
-
|
|
249
|
+
const ruleSources = discoverAgentRuleSources(directory, target, exists);
|
|
250
|
+
const nextContent = buildAgentsInitContent(projectName, ruleSources);
|
|
251
|
+
if (exists) {
|
|
252
|
+
const previousContent = readFileSync(target, "utf-8");
|
|
253
|
+
const diff = buildAgentsInitDiff(target, previousContent, nextContent);
|
|
254
|
+
if (!options.force) {
|
|
255
|
+
return {
|
|
256
|
+
path: target,
|
|
257
|
+
action: "preview",
|
|
258
|
+
diff,
|
|
259
|
+
sources: ruleSources,
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
mkdirSync(directory, { recursive: true });
|
|
263
|
+
writeFileSync(target, nextContent, "utf-8");
|
|
264
|
+
return {
|
|
265
|
+
path: target,
|
|
266
|
+
action: "updated",
|
|
267
|
+
diff,
|
|
268
|
+
sources: ruleSources,
|
|
269
|
+
};
|
|
86
270
|
}
|
|
87
271
|
mkdirSync(directory, { recursive: true });
|
|
88
|
-
writeFileSync(target,
|
|
89
|
-
return
|
|
272
|
+
writeFileSync(target, nextContent, "utf-8");
|
|
273
|
+
return {
|
|
274
|
+
path: target,
|
|
275
|
+
action: "created",
|
|
276
|
+
sources: ruleSources,
|
|
277
|
+
};
|
|
90
278
|
}
|
|
91
279
|
//# sourceMappingURL=agents.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../../src/cli/commands/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7D,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkChB,CAAC;AAEF,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;qGAwB2E,CAAC;AAEtG,SAAS,mBAAmB,CAAC,WAAmB;IAC/C,OAAO,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;AAC3D,CAAC;AAMD,SAAS,iBAAiB,CAAC,UAAmB;IAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5C,OAAO,QAAQ,CAAC;IACjB,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,UAAkB;IACvD,OAAO,GAAG,iBAAiB,oBAAoB,UAAU,EAAE,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC/B,SAAkB,EAClB,UAA6B,EAAE;IAE/B,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,aAAa,CAAC,MAAM,EAAE,mBAAmB,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;IACjE,OAAO,MAAM,CAAC;AACf,CAAC","sourcesContent":["import { existsSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { basename, dirname, join, resolve } from \"node:path\";\n\nconst TEMPLATE = `# Repository Guidelines\n\nUse this as the contributor quickstart for **{{PROJECT_NAME}}**. Keep it concise, specific, and updated as the project evolves.\n\n## Project Structure & Module Organization\n- Summarize top-level folders (e.g., \\`src/\\` for core code, \\`tests/\\` or \\`__tests__/\\` for suites, \\`docs/\\` for references, \\`scripts/\\` for tooling, \\`packages/\\` for monorepo packages, \\`apps/\\` for deployables, \\`assets/\\` for static files).\n- Note where configs live (\\`package.json\\`, \\`tsconfig.json\\`, bundler/tooling configs) and where CI definitions reside (typically \\`.github/workflows/\\`).\n- Call out any generated code or directories that should not be hand-edited.\n\n## Build, Test, and Development Commands\n- Install dependencies: \\`npm install\\` (or \\`pnpm install\\`, \\`yarn install\\`, \\`bun install\\` as applicable).\n- Start development: \\`npm run dev\\` (mention default port or entrypoint).\n- Build: \\`npm run build\\` (or \\`make build\\` for binaries/containers).\n- Quality gates: \\`npm run lint\\`, \\`npm run format\\`.\n- Tests: \\`npm test\\`, \\`npm run test:unit\\`, or \\`npm run test:e2e\\`. Include any required setup (e.g., \\`docker compose up\\` for services).\n\n## Coding Style & Naming Conventions\n- Enforce formatter (Prettier/Biome) and linter (ESLint or project default); prefer 2-space indent and consistent semicolons per config.\n- Naming: camelCase for variables/functions, PascalCase for components/classes, SCREAMING_SNAKE_CASE for constants; keep file names predictable (e.g., \\`feature-name.test.ts\\`).\n- Favor small, focused modules and pure functions; document non-obvious behavior with brief comments.\n\n## Testing Guidelines\n- Primary framework (e.g., Vitest/Jest); colocate tests as \\`*.test.ts\\` near sources or group under \\`tests/\\`.\n- Cover success, error, and boundary cases; keep fixtures deterministic and minimal.\n- For long suites, run focused tests: \\`npm test -- <pattern>\\`; add coverage goals if required.\n\n## Commit & Pull Request Guidelines\n- Branch from \\`main\\`; use imperative commit subjects (e.g., \\`Add auth middleware\\`), optionally scoped.\n- PRs: describe behavior changes, link issues, note skipped checks, and attach screenshots for UI. Include validation steps a reviewer can run.\n- Run the project's lint/test/build commands expected by CI before requesting review.\n\n## Security & Configuration Tips\n- Do not commit secrets; rely on local \\`.env.local\\` and checked-in \\`.env.example\\`.\n- Document new environment variables, migrations, and destructive scripts; prefer least-privilege defaults.\n`;\n\nconst GENERATION_PROMPT = `Generate a file named AGENTS.md that serves as a contributor guide for this repository.\n\nYour goal is to produce a clear, concise, and well-structured document with descriptive headings and actionable explanations for each section. Follow the outline below, but adapt as needed—add sections if relevant, and omit those that do not apply to this project.\n\nDocument Requirements:\n- Title the document \"Repository Guidelines\".\n- Use Markdown headings (#, ##, etc.) for structure.\n- Keep the document concise; 200-400 words is optimal.\n- Keep explanations short, direct, and specific to this repository.\n- Provide examples where helpful (commands, directory paths, naming patterns).\n- Maintain a professional, instructional tone.\n\nRecommended Sections:\n- Project Structure & Module Organization: Outline where source code, tests, docs, configs, and assets live.\n- Build, Test, and Development Commands: List key commands for installing, building, testing, and running locally with short explanations.\n- Coding Style & Naming Conventions: Indentation rules, style preferences, naming patterns, formatting/linting tools.\n- Testing Guidelines: Frameworks, coverage expectations, naming conventions, and how to run tests.\n- Commit & Pull Request Guidelines: Commit message conventions, PR requirements (descriptions, linked issues, screenshots), and pre-review checks.\n- (Optional) Security & Configuration Tips, Architecture Overview, or Agent-Specific Instructions if applicable.\n\nInstructions:\n- Use the available tools to inspect this repository as needed (e.g., list directories, read configs, inspect scripts) before writing.\n- Overwrite the entire contents of AGENTS.md at the target path.\n- Keep output scoped to the single Markdown file; do not create extra files.\n- Write the final document directly to the AGENTS.md file and return a brief confirmation when done.`;\n\nfunction buildAgentsTemplate(projectName: string): string {\n\treturn TEMPLATE.replace(/{{PROJECT_NAME}}/g, projectName);\n}\n\nexport interface AgentsInitOptions {\n\tforce?: boolean;\n}\n\nfunction resolveTargetPath(targetPath?: string): string {\n\tif (!targetPath) {\n\t\treturn join(process.cwd(), \"AGENTS.md\");\n\t}\n\tconst resolved = resolve(targetPath);\n\tif (resolved.toLowerCase().endsWith(\".md\")) {\n\t\treturn resolved;\n\t}\n\treturn join(resolved, \"AGENTS.md\");\n}\n\nexport function buildAgentsInitPrompt(targetPath: string): string {\n\treturn `${GENERATION_PROMPT}\\n\\nTarget path: ${targetPath}`;\n}\n\nexport function handleAgentsInit(\n\tinputPath?: string,\n\toptions: AgentsInitOptions = {},\n): string {\n\tconst target = resolveTargetPath(inputPath);\n\tconst directory = dirname(target);\n\tconst projectName = basename(directory);\n\tconst exists = existsSync(target);\n\tif (exists && !options.force) {\n\t\tthrow new Error(`AGENTS.md already exists at ${target}`);\n\t}\n\tmkdirSync(directory, { recursive: true });\n\twriteFileSync(target, buildAgentsTemplate(projectName), \"utf-8\");\n\treturn target;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../../src/cli/commands/agents.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\texistsSync,\n\tlstatSync,\n\tmkdirSync,\n\treadFileSync,\n\treaddirSync,\n\trealpathSync,\n\tstatSync,\n\twriteFileSync,\n} from \"node:fs\";\nimport type { Dirent } from \"node:fs\";\nimport {\n\tbasename,\n\tdirname,\n\tisAbsolute,\n\tjoin,\n\trelative,\n\tresolve,\n} from \"node:path\";\nimport * as Diff from \"diff\";\nimport { truncateUtf8 } from \"../system-prompt.js\";\n\nconst TEMPLATE = `# Repository Guidelines\n\nUse this as the contributor quickstart for **{{PROJECT_NAME}}**.\n\n## Project Structure\n- Map the main source, test, docs, scripts, and config paths.\n- Call out generated, vendored, or build-output directories agents should not edit.\n\n## Commands\n- Install: \\`npm install\\` (or the repo's package manager).\n- Develop: \\`npm run dev\\`; Build: \\`npm run build\\`.\n- Quality: \\`npm run lint\\`, \\`npm run format\\`, and \\`npm test\\`.\n\n## Style\n- Follow the checked-in formatter and linter; keep naming consistent with nearby code.\n- Prefer small, focused changes and comments only for non-obvious behavior.\n\n## Testing\n- Add or update tests beside changed behavior.\n- Cover success, error, and boundary cases with deterministic fixtures.\n\n## Pull Requests\n- Use imperative commit subjects and keep PRs scoped.\n- Include behavior changes, linked issues, validation steps, and screenshots for UI changes.\n\n## Security\n- Do not commit secrets; document new environment variables and migrations.\n`;\n\nconst GENERATION_PROMPT = `Generate a file named AGENTS.md that serves as a contributor guide for this repository.\n\nYour goal is to produce a clear, concise, and well-structured document with descriptive headings and actionable explanations for each section. Follow the outline below, but adapt as needed—add sections if relevant, and omit those that do not apply to this project.\n\nDocument Requirements:\n- Title the document \"Repository Guidelines\".\n- Use Markdown headings (#, ##, etc.) for structure.\n- Keep the document concise; about 20 lines and 150-250 words is optimal.\n- Keep explanations short, direct, and specific to this repository.\n- Provide examples where helpful (commands, directory paths, naming patterns).\n- Maintain a professional, instructional tone.\n\nRecommended Sections:\n- Project Structure & Module Organization: Outline where source code, tests, docs, configs, and assets live.\n- Build, Test, and Development Commands: List key commands for installing, building, testing, and running locally with short explanations.\n- Coding Style & Naming Conventions: Indentation rules, style preferences, naming patterns, formatting/linting tools.\n- Testing Guidelines: Frameworks, coverage expectations, naming conventions, and how to run tests.\n- Commit & Pull Request Guidelines: Commit message conventions, PR requirements (descriptions, linked issues, screenshots), and pre-review checks.\n- (Optional) Security & Configuration Tips, Architecture Overview, or Agent-Specific Instructions if applicable.\n\nInstructions:\n- Use the available tools to inspect this repository as needed (e.g., list directories, read configs, inspect scripts) before writing.\n- If existing AI tool rule files are supplied below, preserve their intent in the generated AGENTS.md instead of ignoring or mechanically concatenating them.\n- If an existing AGENTS.md or AGENT.md is supplied below, update its guidance instead of discarding hand-written project specifics.\n- Add a short HTML comment near the top noting which AI rule sources contributed.\n- Overwrite the entire contents of AGENTS.md at the target path.\n- Keep output scoped to the single Markdown file; do not create extra files.\n- Write the final document directly to the AGENTS.md file and return a brief confirmation when done.`;\n\nconst MAX_IMPORTED_RULE_BYTES = 12_000;\nconst RULE_WALK_IGNORE_DIRS = new Set([\n\t\".git\",\n\t\".hg\",\n\t\".svn\",\n\t\"node_modules\",\n\t\"dist\",\n\t\"build\",\n\t\"coverage\",\n\t\".next\",\n\t\".turbo\",\n\t\".cache\",\n\t\"tmp\",\n]);\n\nexport interface AgentRuleSource {\n\tpath: string;\n\trelativePath: string;\n\tlabel: string;\n\tcontent: string;\n\ttruncated: boolean;\n}\n\nfunction buildAgentsTemplate(projectName: string): string {\n\treturn TEMPLATE.replace(/{{PROJECT_NAME}}/g, projectName);\n}\n\nexport interface AgentsInitOptions {\n\tforce?: boolean;\n}\n\nexport interface AgentsInitResult {\n\tpath: string;\n\taction: \"created\" | \"updated\" | \"preview\";\n\tdiff?: string;\n\tsources: AgentRuleSource[];\n}\n\nfunction resolveTargetPath(targetPath?: string): string {\n\tif (!targetPath) {\n\t\treturn join(process.cwd(), \"AGENTS.md\");\n\t}\n\tconst resolved = resolve(targetPath);\n\tif (resolved.toLowerCase().endsWith(\".md\")) {\n\t\treturn resolved;\n\t}\n\treturn join(resolved, \"AGENTS.md\");\n}\n\nfunction isMarkdownRuleFile(fileName: string): boolean {\n\tconst lower = fileName.toLowerCase();\n\treturn lower.endsWith(\".md\") || lower.endsWith(\".mdc\");\n}\n\nfunction isPathInside(root: string, candidate: string): boolean {\n\tconst relativePath = relative(root, candidate);\n\treturn (\n\t\trelativePath === \"\" ||\n\t\t(!relativePath.startsWith(\"..\") && !isAbsolute(relativePath))\n\t);\n}\n\nfunction readRuleSource(\n\tprojectRoot: string,\n\tfilePath: string,\n\tlabel: string,\n): AgentRuleSource | null {\n\ttry {\n\t\tconst resolvedPath = resolve(filePath);\n\t\tconst linkStat = lstatSync(resolvedPath);\n\t\tif (!linkStat.isFile()) {\n\t\t\treturn null;\n\t\t}\n\t\tconst rootRealPath = realpathSync(projectRoot);\n\t\tconst fileRealPath = realpathSync(resolvedPath);\n\t\tif (!isPathInside(rootRealPath, fileRealPath)) {\n\t\t\treturn null;\n\t\t}\n\t\tconst stat = statSync(resolvedPath);\n\t\tif (!stat.isFile()) {\n\t\t\treturn null;\n\t\t}\n\t\tconst raw = readFileSync(resolvedPath);\n\t\tconst truncated = raw.byteLength > MAX_IMPORTED_RULE_BYTES;\n\t\tconst content = truncated\n\t\t\t? truncateUtf8(raw, MAX_IMPORTED_RULE_BYTES).content\n\t\t\t: raw.toString(\"utf-8\");\n\t\treturn {\n\t\t\tpath: resolvedPath,\n\t\t\trelativePath:\n\t\t\t\trelative(projectRoot, resolvedPath) || basename(resolvedPath),\n\t\t\tlabel,\n\t\t\tcontent,\n\t\t\ttruncated,\n\t\t};\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction walkRuleFiles(\n\tdir: string,\n\tpredicate: (fileName: string) => boolean,\n): string[] {\n\tlet entries: Dirent[];\n\ttry {\n\t\tentries = readdirSync(dir, { withFileTypes: true });\n\t} catch {\n\t\treturn [];\n\t}\n\n\tconst files: string[] = [];\n\tfor (const entry of entries) {\n\t\tconst entryPath = join(dir, entry.name);\n\t\tif (entry.isDirectory()) {\n\t\t\tif (!RULE_WALK_IGNORE_DIRS.has(entry.name)) {\n\t\t\t\tfiles.push(...walkRuleFiles(entryPath, predicate));\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tif (entry.isFile() && predicate(entry.name)) {\n\t\t\tfiles.push(entryPath);\n\t\t}\n\t}\n\treturn files.sort((a, b) => a.localeCompare(b));\n}\n\nexport function discoverAgentRuleSources(\n\tprojectRoot: string,\n\ttargetPath?: string,\n\tincludeTarget = false,\n): AgentRuleSource[] {\n\tconst root = resolve(projectRoot);\n\tconst target = targetPath ? resolve(targetPath) : null;\n\tconst sources = new Map<string, AgentRuleSource>();\n\n\tconst addSource = (filePath: string, label: string): void => {\n\t\tconst resolvedPath = resolve(filePath);\n\t\tconst source = readRuleSource(root, resolvedPath, label);\n\t\tif (!source) {\n\t\t\treturn;\n\t\t}\n\t\tsources.set(resolvedPath, source);\n\t};\n\n\tif (target && includeTarget && existsSync(target)) {\n\t\taddSource(target, \"Existing AGENTS.md\");\n\t}\n\tfor (const candidate of [\"AGENTS.md\", \"AGENT.md\"]) {\n\t\tconst candidatePath = join(root, candidate);\n\t\tif (!target || resolve(candidatePath) !== target) {\n\t\t\taddSource(candidatePath, \"Existing Maestro agent instructions\");\n\t\t}\n\t}\n\n\tfor (const cursorRule of walkRuleFiles(\n\t\tjoin(root, \".cursor\", \"rules\"),\n\t\t(name) => isMarkdownRuleFile(name),\n\t)) {\n\t\taddSource(cursorRule, \"Cursor rule\");\n\t}\n\taddSource(join(root, \".cursorrules\"), \"Cursor rules\");\n\tfor (const claudeRule of walkRuleFiles(\n\t\troot,\n\t\t(name) => name === \"CLAUDE.md\",\n\t)) {\n\t\taddSource(claudeRule, \"Claude instructions\");\n\t}\n\taddSource(join(root, \".windsurfrules\"), \"Windsurf rules\");\n\taddSource(join(root, \".clinerules\"), \"Cline rules\");\n\taddSource(join(root, \".goosehints\"), \"Goose hints\");\n\taddSource(\n\t\tjoin(root, \".github\", \"copilot-instructions.md\"),\n\t\t\"Copilot instructions\",\n\t);\n\n\treturn Array.from(sources.values()).sort((a, b) =>\n\t\ta.relativePath.localeCompare(b.relativePath),\n\t);\n}\n\nfunction formatRuleSourceSummary(sources: AgentRuleSource[]): string {\n\tif (sources.length === 0) {\n\t\treturn \"\";\n\t}\n\tconst sourcePaths = sources.map((source) =>\n\t\tformatRulePathForHtmlComment(source.relativePath),\n\t);\n\treturn [\n\t\t\"## Imported AI Tooling Rules\",\n\t\t`<!-- Imported by maestro /init from: ${sourcePaths.join(\", \")} -->`,\n\t\t\"\",\n\t\t\"Review and fold these existing AI-tool instructions into the sections above:\",\n\t\t\"\",\n\t\t...sources.map((source) => {\n\t\t\tconst truncatedNote = source.truncated ? \" (truncated)\" : \"\";\n\t\t\treturn `- ${formatRulePathForMarkdown(source.relativePath)}: ${source.label}${truncatedNote}`;\n\t\t}),\n\t\t\"\",\n\t].join(\"\\n\");\n}\n\nfunction formatRulePathForMarkdown(relativePath: string): string {\n\treturn JSON.stringify(relativePath);\n}\n\nfunction formatRulePathForHtmlComment(relativePath: string): string {\n\treturn JSON.stringify(relativePath).replace(/-{2,}/g, (dashes) =>\n\t\tdashes.split(\"\").join(\" \"),\n\t);\n}\n\nfunction buildAgentsInitContent(\n\tprojectName: string,\n\truleSources: AgentRuleSource[],\n): string {\n\treturn `${buildAgentsTemplate(projectName).trimEnd()}\\n\\n${formatRuleSourceSummary(ruleSources)}`;\n}\n\nfunction buildAgentsInitDiff(\n\ttargetPath: string,\n\toldContent: string,\n\tnewContent: string,\n): string {\n\treturn Diff.createTwoFilesPatch(\n\t\ttargetPath,\n\t\ttargetPath,\n\t\toldContent,\n\t\tnewContent,\n\t\t\"current\",\n\t\t\"proposed\",\n\t);\n}\n\nfunction markdownFenceFor(content: string): string {\n\tconst longestBacktickRun = Math.max(\n\t\t0,\n\t\t...(content.match(/`+/g) ?? []).map((run) => run.length),\n\t);\n\treturn \"`\".repeat(Math.max(3, longestBacktickRun + 1));\n}\n\nfunction formatRuleSourcesForPrompt(sources: AgentRuleSource[]): string {\n\tif (sources.length === 0) {\n\t\treturn \"\";\n\t}\n\tconst blocks = sources.map((source) => {\n\t\tconst fence = markdownFenceFor(source.content);\n\t\treturn [\n\t\t\t`### ${formatRulePathForMarkdown(source.relativePath)} (${source.label})`,\n\t\t\tsource.truncated\n\t\t\t\t? `The content below was truncated to ${MAX_IMPORTED_RULE_BYTES} bytes.`\n\t\t\t\t: \"\",\n\t\t\t`${fence}md`,\n\t\t\tsource.content.trimEnd(),\n\t\t\tfence,\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(\"\\n\");\n\t});\n\treturn [\"\", \"Existing AI tool rule files to merge:\", \"\", ...blocks].join(\n\t\t\"\\n\\n\",\n\t);\n}\n\nexport function buildAgentsInitPrompt(\n\ttargetPath: string,\n\tsources: AgentRuleSource[] = discoverAgentRuleSources(\n\t\tdirname(targetPath),\n\t\ttargetPath,\n\t\texistsSync(targetPath),\n\t),\n): string {\n\treturn `${GENERATION_PROMPT}\\n\\nTarget path: ${targetPath}${formatRuleSourcesForPrompt(sources)}`;\n}\n\nexport function handleAgentsInit(\n\tinputPath?: string,\n\toptions: AgentsInitOptions = {},\n): AgentsInitResult {\n\tconst target = resolveTargetPath(inputPath);\n\tconst directory = dirname(target);\n\tconst projectName = basename(directory);\n\tconst exists = existsSync(target);\n\tconst ruleSources = discoverAgentRuleSources(directory, target, exists);\n\tconst nextContent = buildAgentsInitContent(projectName, ruleSources);\n\tif (exists) {\n\t\tconst previousContent = readFileSync(target, \"utf-8\");\n\t\tconst diff = buildAgentsInitDiff(target, previousContent, nextContent);\n\t\tif (!options.force) {\n\t\t\treturn {\n\t\t\t\tpath: target,\n\t\t\t\taction: \"preview\",\n\t\t\t\tdiff,\n\t\t\t\tsources: ruleSources,\n\t\t\t};\n\t\t}\n\t\tmkdirSync(directory, { recursive: true });\n\t\twriteFileSync(target, nextContent, \"utf-8\");\n\t\treturn {\n\t\t\tpath: target,\n\t\t\taction: \"updated\",\n\t\t\tdiff,\n\t\t\tsources: ruleSources,\n\t\t};\n\t}\n\tmkdirSync(directory, { recursive: true });\n\twriteFileSync(target, nextContent, \"utf-8\");\n\treturn {\n\t\tpath: target,\n\t\taction: \"created\",\n\t\tsources: ruleSources,\n\t};\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function handleCodexCommand(subcommand?: string,
|
|
1
|
+
export declare function handleCodexCommand(subcommand?: string, params?: string[]): Promise<void>;
|
|
2
2
|
//# sourceMappingURL=codex.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/codex.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/codex.ts"],"names":[],"mappings":"AAWA,wBAAsB,kBAAkB,CACvC,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,GAAE,MAAM,EAAO,GACnB,OAAO,CAAC,IAAI,CAAC,CAsBf"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { createInterface } from "node:readline/promises";
|
|
2
1
|
import chalk from "chalk";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
2
|
+
import { createCodexAppServerClient, } from "../../codex/app-server-client.js";
|
|
3
|
+
import { compileCodexDynamicToolSpecs, selectCodexDefaultTools, } from "../../codex/compatibility.js";
|
|
4
|
+
import { codingTools } from "../../tools/index.js";
|
|
5
|
+
export async function handleCodexCommand(subcommand, params = []) {
|
|
6
6
|
switch (subcommand) {
|
|
7
7
|
case "login":
|
|
8
|
-
await handleLogin();
|
|
8
|
+
await handleLogin(params);
|
|
9
9
|
return;
|
|
10
10
|
case "logout":
|
|
11
11
|
await handleLogout();
|
|
@@ -13,53 +13,159 @@ export async function handleCodexCommand(subcommand, _params = []) {
|
|
|
13
13
|
case "status":
|
|
14
14
|
await handleStatus();
|
|
15
15
|
return;
|
|
16
|
+
case "doctor":
|
|
17
|
+
await handleDoctor();
|
|
18
|
+
return;
|
|
16
19
|
default:
|
|
17
|
-
console.error(chalk.red('Unknown codex subcommand. Try "maestro codex login", "logout", or "
|
|
20
|
+
console.error(chalk.red('Unknown codex subcommand. Try "maestro codex login", "logout", "status", or "doctor".'));
|
|
18
21
|
process.exit(1);
|
|
19
22
|
}
|
|
20
23
|
}
|
|
21
|
-
async function
|
|
22
|
-
const
|
|
24
|
+
async function handleLogin(params = []) {
|
|
25
|
+
const deviceFlow = params.includes("--device") || params.includes("--device-code");
|
|
26
|
+
console.log(chalk.bold("Maestro OpenAI Codex Login"));
|
|
27
|
+
const client = createCodexAppServerClient();
|
|
23
28
|
try {
|
|
24
|
-
|
|
29
|
+
await client.initialize();
|
|
30
|
+
const login = await client.startChatGptLogin(deviceFlow ? "device" : "browser");
|
|
31
|
+
if (isBrowserLogin(login)) {
|
|
32
|
+
console.log(chalk.yellow("Open this URL in your browser to sign in with ChatGPT:"));
|
|
33
|
+
console.log(chalk.underline(login.authUrl));
|
|
34
|
+
console.log(chalk.dim("Waiting for ChatGPT sign-in to complete..."));
|
|
35
|
+
await client.waitForLoginCompletion(login.loginId);
|
|
36
|
+
}
|
|
37
|
+
else if (isDeviceCodeLogin(login)) {
|
|
38
|
+
console.log(chalk.yellow("Open this URL and enter the code:"));
|
|
39
|
+
console.log(chalk.underline(login.verificationUrl));
|
|
40
|
+
console.log(chalk.bold(login.userCode));
|
|
41
|
+
console.log(chalk.dim("Waiting for ChatGPT sign-in to complete..."));
|
|
42
|
+
await client.waitForLoginCompletion(login.loginId);
|
|
43
|
+
}
|
|
44
|
+
else if (isApiKeyLogin(login)) {
|
|
45
|
+
console.log(chalk.green("OpenAI Codex is already configured with an API key."));
|
|
46
|
+
console.log(chalk.dim('Select provider "openai-codex" or a model like "openai-codex/gpt-5.5".'));
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
throw new Error(`Unsupported Codex login response: ${login.type}`);
|
|
51
|
+
}
|
|
52
|
+
const account = await client.readAccount(true);
|
|
53
|
+
console.log(chalk.green(`Signed in with ChatGPT${accountLabel(account)}.`));
|
|
54
|
+
console.log(chalk.dim('Select provider "openai-codex" or a model like "openai-codex/gpt-5.5".'));
|
|
25
55
|
}
|
|
26
56
|
finally {
|
|
27
|
-
|
|
57
|
+
client.close();
|
|
28
58
|
}
|
|
29
59
|
}
|
|
30
|
-
async function handleLogin() {
|
|
31
|
-
console.log(chalk.bold("Maestro OpenAI Codex Login"));
|
|
32
|
-
await login("openai-codex", {
|
|
33
|
-
onAuthUrl: (url) => {
|
|
34
|
-
console.log(chalk.yellow("Open this URL in your browser to authenticate with OpenAI:"));
|
|
35
|
-
console.log(chalk.underline(url));
|
|
36
|
-
},
|
|
37
|
-
onPromptCode: promptCode,
|
|
38
|
-
onStatus: (status) => console.log(chalk.dim(status)),
|
|
39
|
-
});
|
|
40
|
-
console.log(chalk.green("OpenAI Codex credentials saved successfully."));
|
|
41
|
-
console.log(chalk.dim('Select provider "openai-codex" or a model like "openai-codex/gpt-5.5".'));
|
|
42
|
-
}
|
|
43
60
|
async function handleLogout() {
|
|
44
|
-
|
|
45
|
-
|
|
61
|
+
const client = createCodexAppServerClient();
|
|
62
|
+
try {
|
|
63
|
+
await client.initialize();
|
|
64
|
+
await client.logout();
|
|
65
|
+
console.log(chalk.green("Signed out of ChatGPT for OpenAI Codex."));
|
|
66
|
+
}
|
|
67
|
+
finally {
|
|
68
|
+
client.close();
|
|
69
|
+
}
|
|
46
70
|
}
|
|
47
71
|
async function handleStatus() {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
72
|
+
const client = createCodexAppServerClient();
|
|
73
|
+
try {
|
|
74
|
+
await client.initialize();
|
|
75
|
+
const account = await client.readAccount(true);
|
|
76
|
+
if (!account.account) {
|
|
77
|
+
console.log(chalk.yellow("No ChatGPT sign-in for OpenAI Codex."));
|
|
78
|
+
console.log(chalk.dim('Run "maestro codex login" to sign in with ChatGPT.'));
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
console.log(chalk.green(`OpenAI Codex is signed in${accountLabel(account)}.`));
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
client.close();
|
|
52
85
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
:
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
86
|
+
}
|
|
87
|
+
async function handleDoctor() {
|
|
88
|
+
console.log(chalk.bold("Maestro Codex Doctor"));
|
|
89
|
+
const client = createCodexAppServerClient();
|
|
90
|
+
try {
|
|
91
|
+
await client.initialize({ experimentalApi: true });
|
|
92
|
+
const account = await client.readAccount(true);
|
|
93
|
+
if (!account.account) {
|
|
94
|
+
console.log(chalk.yellow("ChatGPT sign-in: missing"));
|
|
95
|
+
console.log(chalk.dim('Run "maestro codex login" to sign in with ChatGPT.'));
|
|
96
|
+
process.exitCode = 1;
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
console.log(chalk.green(`ChatGPT sign-in: ${accountDoctorLabel(account)}`));
|
|
100
|
+
}
|
|
101
|
+
const selectedTools = selectCodexDefaultTools(codingTools);
|
|
102
|
+
const compiled = compileCodexDynamicToolSpecs(selectedTools);
|
|
103
|
+
console.log(chalk.green(`Default Codex tool profile: ${selectedTools.length} tools (${selectedTools
|
|
104
|
+
.map((tool) => tool.name)
|
|
105
|
+
.join(", ")})`));
|
|
106
|
+
const errors = compiled.diagnostics.filter((diagnostic) => diagnostic.severity === "error");
|
|
107
|
+
if (errors.length > 0) {
|
|
108
|
+
process.exitCode = 1;
|
|
109
|
+
console.log(chalk.red(`Dynamic tool schema: ${errors.length} error(s)`));
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
console.log(chalk.green("Dynamic tool schema: compatible"));
|
|
113
|
+
}
|
|
114
|
+
for (const diagnostic of compiled.diagnostics) {
|
|
115
|
+
const formatter = diagnostic.severity === "error"
|
|
116
|
+
? chalk.red
|
|
117
|
+
: diagnostic.severity === "warning"
|
|
118
|
+
? chalk.yellow
|
|
119
|
+
: chalk.dim;
|
|
120
|
+
console.log(formatter(`${diagnostic.code}: ${diagnostic.message}`));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
finally {
|
|
124
|
+
client.close();
|
|
62
125
|
}
|
|
63
|
-
|
|
126
|
+
}
|
|
127
|
+
function accountLabel(state) {
|
|
128
|
+
const account = state.account;
|
|
129
|
+
if (!account || account.type !== "chatgpt") {
|
|
130
|
+
return "";
|
|
131
|
+
}
|
|
132
|
+
const plan = typeof account.planType === "string" && account.planType.length > 0
|
|
133
|
+
? `, ${account.planType}`
|
|
134
|
+
: "";
|
|
135
|
+
return ` as ${account.email}${plan}`;
|
|
136
|
+
}
|
|
137
|
+
function accountDoctorLabel(state) {
|
|
138
|
+
const account = state.account;
|
|
139
|
+
if (!account) {
|
|
140
|
+
return "missing";
|
|
141
|
+
}
|
|
142
|
+
if (account.type === "chatgpt") {
|
|
143
|
+
const plan = typeof account.planType === "string" && account.planType.length > 0
|
|
144
|
+
? `, ${account.planType}`
|
|
145
|
+
: "";
|
|
146
|
+
return `${account.email}${plan}`;
|
|
147
|
+
}
|
|
148
|
+
if (account.type === "apiKey") {
|
|
149
|
+
return "API key";
|
|
150
|
+
}
|
|
151
|
+
return account.type;
|
|
152
|
+
}
|
|
153
|
+
function isBrowserLogin(value) {
|
|
154
|
+
return (Boolean(value && typeof value === "object") &&
|
|
155
|
+
value.type === "chatgpt" &&
|
|
156
|
+
typeof value.loginId === "string" &&
|
|
157
|
+
typeof value.authUrl === "string");
|
|
158
|
+
}
|
|
159
|
+
function isApiKeyLogin(value) {
|
|
160
|
+
return (Boolean(value && typeof value === "object") &&
|
|
161
|
+
value.type === "apiKey");
|
|
162
|
+
}
|
|
163
|
+
function isDeviceCodeLogin(value) {
|
|
164
|
+
return (Boolean(value && typeof value === "object") &&
|
|
165
|
+
value.type === "chatgptDeviceCode" &&
|
|
166
|
+
typeof value.loginId === "string" &&
|
|
167
|
+
typeof value.verificationUrl ===
|
|
168
|
+
"string" &&
|
|
169
|
+
typeof value.userCode === "string");
|
|
64
170
|
}
|
|
65
171
|
//# sourceMappingURL=codex.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/cli/commands/codex.ts"],"names":[],"mappings":"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","sourcesContent":["import { createInterface } from \"node:readline/promises\";\nimport chalk from \"chalk\";\nimport { hasOAuthCredentials, login, logout } from \"../../oauth/index.js\";\nimport { loadOAuthCredentials } from \"../../oauth/storage.js\";\n\nexport async function handleCodexCommand(\n\tsubcommand?: string,\n\t_params: string[] = [],\n): Promise<void> {\n\tswitch (subcommand) {\n\t\tcase \"login\":\n\t\t\tawait handleLogin();\n\t\t\treturn;\n\t\tcase \"logout\":\n\t\t\tawait handleLogout();\n\t\t\treturn;\n\t\tcase \"status\":\n\t\t\tawait handleStatus();\n\t\t\treturn;\n\t\tdefault:\n\t\t\tconsole.error(\n\t\t\t\tchalk.red(\n\t\t\t\t\t'Unknown codex subcommand. Try \"maestro codex login\", \"logout\", or \"status\".',\n\t\t\t\t),\n\t\t\t);\n\t\t\tprocess.exit(1);\n\t}\n}\n\nasync function promptCode(): Promise<string> {\n\tconst rl = createInterface({ input: process.stdin, output: process.stdout });\n\ttry {\n\t\treturn await rl.question(\n\t\t\t\"Paste the OpenAI redirect URL or authorization code: \",\n\t\t);\n\t} finally {\n\t\trl.close();\n\t}\n}\n\nasync function handleLogin(): Promise<void> {\n\tconsole.log(chalk.bold(\"Maestro OpenAI Codex Login\"));\n\tawait login(\"openai-codex\", {\n\t\tonAuthUrl: (url) => {\n\t\t\tconsole.log(\n\t\t\t\tchalk.yellow(\n\t\t\t\t\t\"Open this URL in your browser to authenticate with OpenAI:\",\n\t\t\t\t),\n\t\t\t);\n\t\t\tconsole.log(chalk.underline(url));\n\t\t},\n\t\tonPromptCode: promptCode,\n\t\tonStatus: (status) => console.log(chalk.dim(status)),\n\t});\n\tconsole.log(chalk.green(\"OpenAI Codex credentials saved successfully.\"));\n\tconsole.log(\n\t\tchalk.dim(\n\t\t\t'Select provider \"openai-codex\" or a model like \"openai-codex/gpt-5.5\".',\n\t\t),\n\t);\n}\n\nasync function handleLogout(): Promise<void> {\n\tawait logout(\"openai-codex\");\n\tconsole.log(chalk.green(\"Removed stored OpenAI Codex credentials.\"));\n}\n\nasync function handleStatus(): Promise<void> {\n\tif (!hasOAuthCredentials(\"openai-codex\")) {\n\t\tconsole.log(chalk.yellow(\"No stored OpenAI Codex credentials.\"));\n\t\tconsole.log(\n\t\t\tchalk.dim('Run \"maestro codex login\" to authenticate with OpenAI.'),\n\t\t);\n\t\treturn;\n\t}\n\tconst credentials = loadOAuthCredentials(\"openai-codex\");\n\tconst remainingMs = Math.max(\n\t\t0,\n\t\t(credentials?.expires ?? Date.now()) - Date.now(),\n\t);\n\tconst minutes = Math.round(remainingMs / 60_000);\n\tconst accountId =\n\t\ttypeof credentials?.metadata?.accountId === \"string\"\n\t\t\t? credentials.metadata.accountId\n\t\t\t: undefined;\n\tconsole.log(chalk.green(\"Stored OpenAI Codex credentials detected.\"));\n\tif (accountId) {\n\t\tconsole.log(chalk.dim(`ChatGPT account id: ${accountId}`));\n\t}\n\tconsole.log(\n\t\tchalk.dim(\n\t\t\t`Access token expires in ~${minutes} minute${minutes === 1 ? \"\" : \"s\"} (auto-refresh enabled).`,\n\t\t),\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/cli/commands/codex.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from \"chalk\";\nimport {\n\ttype CodexAccountReadResult,\n\tcreateCodexAppServerClient,\n} from \"../../codex/app-server-client.js\";\nimport {\n\tcompileCodexDynamicToolSpecs,\n\tselectCodexDefaultTools,\n} from \"../../codex/compatibility.js\";\nimport { codingTools } from \"../../tools/index.js\";\n\nexport async function handleCodexCommand(\n\tsubcommand?: string,\n\tparams: string[] = [],\n): Promise<void> {\n\tswitch (subcommand) {\n\t\tcase \"login\":\n\t\t\tawait handleLogin(params);\n\t\t\treturn;\n\t\tcase \"logout\":\n\t\t\tawait handleLogout();\n\t\t\treturn;\n\t\tcase \"status\":\n\t\t\tawait handleStatus();\n\t\t\treturn;\n\t\tcase \"doctor\":\n\t\t\tawait handleDoctor();\n\t\t\treturn;\n\t\tdefault:\n\t\t\tconsole.error(\n\t\t\t\tchalk.red(\n\t\t\t\t\t'Unknown codex subcommand. Try \"maestro codex login\", \"logout\", \"status\", or \"doctor\".',\n\t\t\t\t),\n\t\t\t);\n\t\t\tprocess.exit(1);\n\t}\n}\n\nasync function handleLogin(params: string[] = []): Promise<void> {\n\tconst deviceFlow =\n\t\tparams.includes(\"--device\") || params.includes(\"--device-code\");\n\tconsole.log(chalk.bold(\"Maestro OpenAI Codex Login\"));\n\tconst client = createCodexAppServerClient();\n\ttry {\n\t\tawait client.initialize();\n\t\tconst login = await client.startChatGptLogin(\n\t\t\tdeviceFlow ? \"device\" : \"browser\",\n\t\t);\n\t\tif (isBrowserLogin(login)) {\n\t\t\tconsole.log(\n\t\t\t\tchalk.yellow(\"Open this URL in your browser to sign in with ChatGPT:\"),\n\t\t\t);\n\t\t\tconsole.log(chalk.underline(login.authUrl));\n\t\t\tconsole.log(chalk.dim(\"Waiting for ChatGPT sign-in to complete...\"));\n\t\t\tawait client.waitForLoginCompletion(login.loginId);\n\t\t} else if (isDeviceCodeLogin(login)) {\n\t\t\tconsole.log(chalk.yellow(\"Open this URL and enter the code:\"));\n\t\t\tconsole.log(chalk.underline(login.verificationUrl));\n\t\t\tconsole.log(chalk.bold(login.userCode));\n\t\t\tconsole.log(chalk.dim(\"Waiting for ChatGPT sign-in to complete...\"));\n\t\t\tawait client.waitForLoginCompletion(login.loginId);\n\t\t} else if (isApiKeyLogin(login)) {\n\t\t\tconsole.log(\n\t\t\t\tchalk.green(\"OpenAI Codex is already configured with an API key.\"),\n\t\t\t);\n\t\t\tconsole.log(\n\t\t\t\tchalk.dim(\n\t\t\t\t\t'Select provider \"openai-codex\" or a model like \"openai-codex/gpt-5.5\".',\n\t\t\t\t),\n\t\t\t);\n\t\t\treturn;\n\t\t} else {\n\t\t\tthrow new Error(`Unsupported Codex login response: ${login.type}`);\n\t\t}\n\t\tconst account = await client.readAccount(true);\n\t\tconsole.log(chalk.green(`Signed in with ChatGPT${accountLabel(account)}.`));\n\t\tconsole.log(\n\t\t\tchalk.dim(\n\t\t\t\t'Select provider \"openai-codex\" or a model like \"openai-codex/gpt-5.5\".',\n\t\t\t),\n\t\t);\n\t} finally {\n\t\tclient.close();\n\t}\n}\n\nasync function handleLogout(): Promise<void> {\n\tconst client = createCodexAppServerClient();\n\ttry {\n\t\tawait client.initialize();\n\t\tawait client.logout();\n\t\tconsole.log(chalk.green(\"Signed out of ChatGPT for OpenAI Codex.\"));\n\t} finally {\n\t\tclient.close();\n\t}\n}\n\nasync function handleStatus(): Promise<void> {\n\tconst client = createCodexAppServerClient();\n\ttry {\n\t\tawait client.initialize();\n\t\tconst account = await client.readAccount(true);\n\t\tif (!account.account) {\n\t\t\tconsole.log(chalk.yellow(\"No ChatGPT sign-in for OpenAI Codex.\"));\n\t\t\tconsole.log(\n\t\t\t\tchalk.dim('Run \"maestro codex login\" to sign in with ChatGPT.'),\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tconsole.log(\n\t\t\tchalk.green(`OpenAI Codex is signed in${accountLabel(account)}.`),\n\t\t);\n\t} finally {\n\t\tclient.close();\n\t}\n}\n\nasync function handleDoctor(): Promise<void> {\n\tconsole.log(chalk.bold(\"Maestro Codex Doctor\"));\n\tconst client = createCodexAppServerClient();\n\ttry {\n\t\tawait client.initialize({ experimentalApi: true });\n\t\tconst account = await client.readAccount(true);\n\t\tif (!account.account) {\n\t\t\tconsole.log(chalk.yellow(\"ChatGPT sign-in: missing\"));\n\t\t\tconsole.log(\n\t\t\t\tchalk.dim('Run \"maestro codex login\" to sign in with ChatGPT.'),\n\t\t\t);\n\t\t\tprocess.exitCode = 1;\n\t\t} else {\n\t\t\tconsole.log(\n\t\t\t\tchalk.green(`ChatGPT sign-in: ${accountDoctorLabel(account)}`),\n\t\t\t);\n\t\t}\n\n\t\tconst selectedTools = selectCodexDefaultTools(codingTools);\n\t\tconst compiled = compileCodexDynamicToolSpecs(selectedTools);\n\t\tconsole.log(\n\t\t\tchalk.green(\n\t\t\t\t`Default Codex tool profile: ${selectedTools.length} tools (${selectedTools\n\t\t\t\t\t.map((tool) => tool.name)\n\t\t\t\t\t.join(\", \")})`,\n\t\t\t),\n\t\t);\n\n\t\tconst errors = compiled.diagnostics.filter(\n\t\t\t(diagnostic) => diagnostic.severity === \"error\",\n\t\t);\n\t\tif (errors.length > 0) {\n\t\t\tprocess.exitCode = 1;\n\t\t\tconsole.log(chalk.red(`Dynamic tool schema: ${errors.length} error(s)`));\n\t\t} else {\n\t\t\tconsole.log(chalk.green(\"Dynamic tool schema: compatible\"));\n\t\t}\n\t\tfor (const diagnostic of compiled.diagnostics) {\n\t\t\tconst formatter =\n\t\t\t\tdiagnostic.severity === \"error\"\n\t\t\t\t\t? chalk.red\n\t\t\t\t\t: diagnostic.severity === \"warning\"\n\t\t\t\t\t\t? chalk.yellow\n\t\t\t\t\t\t: chalk.dim;\n\t\t\tconsole.log(formatter(`${diagnostic.code}: ${diagnostic.message}`));\n\t\t}\n\t} finally {\n\t\tclient.close();\n\t}\n}\n\nfunction accountLabel(state: CodexAccountReadResult): string {\n\tconst account = state.account;\n\tif (!account || account.type !== \"chatgpt\") {\n\t\treturn \"\";\n\t}\n\tconst plan =\n\t\ttypeof account.planType === \"string\" && account.planType.length > 0\n\t\t\t? `, ${account.planType}`\n\t\t\t: \"\";\n\treturn ` as ${account.email}${plan}`;\n}\n\nfunction accountDoctorLabel(state: CodexAccountReadResult): string {\n\tconst account = state.account;\n\tif (!account) {\n\t\treturn \"missing\";\n\t}\n\tif (account.type === \"chatgpt\") {\n\t\tconst plan =\n\t\t\ttypeof account.planType === \"string\" && account.planType.length > 0\n\t\t\t\t? `, ${account.planType}`\n\t\t\t\t: \"\";\n\t\treturn `${account.email}${plan}`;\n\t}\n\tif (account.type === \"apiKey\") {\n\t\treturn \"API key\";\n\t}\n\treturn account.type;\n}\n\nfunction isBrowserLogin(\n\tvalue: unknown,\n): value is { type: \"chatgpt\"; loginId: string; authUrl: string } {\n\treturn (\n\t\tBoolean(value && typeof value === \"object\") &&\n\t\t(value as { type?: unknown }).type === \"chatgpt\" &&\n\t\ttypeof (value as { loginId?: unknown }).loginId === \"string\" &&\n\t\ttypeof (value as { authUrl?: unknown }).authUrl === \"string\"\n\t);\n}\n\nfunction isApiKeyLogin(value: unknown): value is { type: \"apiKey\" } {\n\treturn (\n\t\tBoolean(value && typeof value === \"object\") &&\n\t\t(value as { type?: unknown }).type === \"apiKey\"\n\t);\n}\n\nfunction isDeviceCodeLogin(value: unknown): value is {\n\ttype: \"chatgptDeviceCode\";\n\tloginId: string;\n\tverificationUrl: string;\n\tuserCode: string;\n} {\n\treturn (\n\t\tBoolean(value && typeof value === \"object\") &&\n\t\t(value as { type?: unknown }).type === \"chatgptDeviceCode\" &&\n\t\ttypeof (value as { loginId?: unknown }).loginId === \"string\" &&\n\t\ttypeof (value as { verificationUrl?: unknown }).verificationUrl ===\n\t\t\t\"string\" &&\n\t\ttypeof (value as { userCode?: unknown }).userCode === \"string\"\n\t);\n}\n"]}
|