@mastra/code-sdk 0.0.0-mastracode-cloud-20260706153555
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/CHANGELOG.md +22 -0
- package/LICENSE.md +30 -0
- package/README.md +50 -0
- package/dist/acp/agent.d.ts +35 -0
- package/dist/acp/agent.d.ts.map +1 -0
- package/dist/acp/agent.js +173 -0
- package/dist/acp/agent.js.map +1 -0
- package/dist/acp/event-mapper.d.ts +22 -0
- package/dist/acp/event-mapper.d.ts.map +1 -0
- package/dist/acp/event-mapper.js +166 -0
- package/dist/acp/event-mapper.js.map +1 -0
- package/dist/acp/index.d.ts +8 -0
- package/dist/acp/index.d.ts.map +1 -0
- package/dist/acp/index.js +54 -0
- package/dist/acp/index.js.map +1 -0
- package/dist/acp/server.d.ts +7 -0
- package/dist/acp/server.d.ts.map +1 -0
- package/dist/acp/server.js +34 -0
- package/dist/acp/server.js.map +1 -0
- package/dist/acp.d.ts +2 -0
- package/dist/acp.d.ts.map +1 -0
- package/dist/acp.js +5 -0
- package/dist/acp.js.map +1 -0
- package/dist/agents/instructions.d.ts +6 -0
- package/dist/agents/instructions.d.ts.map +1 -0
- package/dist/agents/instructions.js +41 -0
- package/dist/agents/instructions.js.map +1 -0
- package/dist/agents/mastracode-gateway.d.ts +65 -0
- package/dist/agents/mastracode-gateway.d.ts.map +1 -0
- package/dist/agents/mastracode-gateway.js +442 -0
- package/dist/agents/mastracode-gateway.js.map +1 -0
- package/dist/agents/memory.d.ts +13 -0
- package/dist/agents/memory.d.ts.map +1 -0
- package/dist/agents/memory.js +107 -0
- package/dist/agents/memory.js.map +1 -0
- package/dist/agents/model.d.ts +55 -0
- package/dist/agents/model.d.ts.map +1 -0
- package/dist/agents/model.js +115 -0
- package/dist/agents/model.js.map +1 -0
- package/dist/agents/modes/build.d.ts +10 -0
- package/dist/agents/modes/build.d.ts.map +1 -0
- package/dist/agents/modes/build.js +45 -0
- package/dist/agents/modes/build.js.map +1 -0
- package/dist/agents/modes/explore.d.ts +10 -0
- package/dist/agents/modes/explore.d.ts.map +1 -0
- package/dist/agents/modes/explore.js +38 -0
- package/dist/agents/modes/explore.js.map +1 -0
- package/dist/agents/modes/plan.d.ts +6 -0
- package/dist/agents/modes/plan.d.ts.map +1 -0
- package/dist/agents/modes/plan.js +38 -0
- package/dist/agents/modes/plan.js.map +1 -0
- package/dist/agents/prompts/agent-instructions.d.ts +20 -0
- package/dist/agents/prompts/agent-instructions.d.ts.map +1 -0
- package/dist/agents/prompts/agent-instructions.js +82 -0
- package/dist/agents/prompts/agent-instructions.js.map +1 -0
- package/dist/agents/prompts/build.d.ts +12 -0
- package/dist/agents/prompts/build.d.ts.map +1 -0
- package/dist/agents/prompts/build.js +73 -0
- package/dist/agents/prompts/build.js.map +1 -0
- package/dist/agents/prompts/fast.d.ts +5 -0
- package/dist/agents/prompts/fast.d.ts.map +1 -0
- package/dist/agents/prompts/fast.js +22 -0
- package/dist/agents/prompts/fast.js.map +1 -0
- package/dist/agents/prompts/index.d.ts +19 -0
- package/dist/agents/prompts/index.d.ts.map +1 -0
- package/dist/agents/prompts/index.js +57 -0
- package/dist/agents/prompts/index.js.map +1 -0
- package/dist/agents/prompts/model.d.ts +5 -0
- package/dist/agents/prompts/model.d.ts.map +1 -0
- package/dist/agents/prompts/model.js +22 -0
- package/dist/agents/prompts/model.js.map +1 -0
- package/dist/agents/prompts/plan.d.ts +6 -0
- package/dist/agents/prompts/plan.d.ts.map +1 -0
- package/dist/agents/prompts/plan.js +107 -0
- package/dist/agents/prompts/plan.js.map +1 -0
- package/dist/agents/prompts/tool-guidance.d.ts +13 -0
- package/dist/agents/prompts/tool-guidance.d.ts.map +1 -0
- package/dist/agents/prompts/tool-guidance.js +181 -0
- package/dist/agents/prompts/tool-guidance.js.map +1 -0
- package/dist/agents/sandbox-filesystem.d.ts +89 -0
- package/dist/agents/sandbox-filesystem.d.ts.map +1 -0
- package/dist/agents/sandbox-filesystem.js +268 -0
- package/dist/agents/sandbox-filesystem.js.map +1 -0
- package/dist/agents/sandbox-reattach.d.ts +19 -0
- package/dist/agents/sandbox-reattach.d.ts.map +1 -0
- package/dist/agents/sandbox-reattach.js +17 -0
- package/dist/agents/sandbox-reattach.js.map +1 -0
- package/dist/agents/thread-caveman-state.d.ts +17 -0
- package/dist/agents/thread-caveman-state.d.ts.map +1 -0
- package/dist/agents/thread-caveman-state.js +96 -0
- package/dist/agents/thread-caveman-state.js.map +1 -0
- package/dist/agents/tool-availability.d.ts +10 -0
- package/dist/agents/tool-availability.d.ts.map +1 -0
- package/dist/agents/tool-availability.js +105 -0
- package/dist/agents/tool-availability.js.map +1 -0
- package/dist/agents/tools.d.ts +18 -0
- package/dist/agents/tools.d.ts.map +1 -0
- package/dist/agents/tools.js +126 -0
- package/dist/agents/tools.js.map +1 -0
- package/dist/agents/workspace.d.ts +22 -0
- package/dist/agents/workspace.d.ts.map +1 -0
- package/dist/agents/workspace.js +194 -0
- package/dist/agents/workspace.js.map +1 -0
- package/dist/analytics.d.ts +18 -0
- package/dist/analytics.d.ts.map +1 -0
- package/dist/analytics.js +152 -0
- package/dist/analytics.js.map +1 -0
- package/dist/auth/index.d.ts +9 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +11 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/pkce.d.ts +13 -0
- package/dist/auth/pkce.d.ts.map +1 -0
- package/dist/auth/pkce.js +21 -0
- package/dist/auth/pkce.js.map +1 -0
- package/dist/auth/providers/anthropic.d.ts +17 -0
- package/dist/auth/providers/anthropic.d.ts.map +1 -0
- package/dist/auth/providers/anthropic.js +94 -0
- package/dist/auth/providers/anthropic.js.map +1 -0
- package/dist/auth/providers/github-copilot.d.ts +100 -0
- package/dist/auth/providers/github-copilot.d.ts.map +1 -0
- package/dist/auth/providers/github-copilot.js +302 -0
- package/dist/auth/providers/github-copilot.js.map +1 -0
- package/dist/auth/providers/openai-codex.d.ts +95 -0
- package/dist/auth/providers/openai-codex.d.ts.map +1 -0
- package/dist/auth/providers/openai-codex.js +527 -0
- package/dist/auth/providers/openai-codex.js.map +1 -0
- package/dist/auth/storage.d.ts +91 -0
- package/dist/auth/storage.d.ts.map +1 -0
- package/dist/auth/storage.js +187 -0
- package/dist/auth/storage.js.map +1 -0
- package/dist/auth/types.d.ts +68 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +1 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/clipboard/index.d.ts +26 -0
- package/dist/clipboard/index.d.ts.map +1 -0
- package/dist/clipboard/index.js +192 -0
- package/dist/clipboard/index.js.map +1 -0
- package/dist/constants.d.ts +10 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +23 -0
- package/dist/constants.js.map +1 -0
- package/dist/error-classification.d.ts +10 -0
- package/dist/error-classification.d.ts.map +1 -0
- package/dist/error-classification.js +14 -0
- package/dist/error-classification.js.map +1 -0
- package/dist/evals/context-builder.d.ts +41 -0
- package/dist/evals/context-builder.d.ts.map +1 -0
- package/dist/evals/context-builder.js +120 -0
- package/dist/evals/context-builder.js.map +1 -0
- package/dist/evals/index.d.ts +4 -0
- package/dist/evals/index.d.ts.map +1 -0
- package/dist/evals/index.js +8 -0
- package/dist/evals/index.js.map +1 -0
- package/dist/evals/scorers/classify-command.d.ts +31 -0
- package/dist/evals/scorers/classify-command.d.ts.map +1 -0
- package/dist/evals/scorers/classify-command.js +52 -0
- package/dist/evals/scorers/classify-command.js.map +1 -0
- package/dist/evals/scorers/efficiency.d.ts +44 -0
- package/dist/evals/scorers/efficiency.d.ts.map +1 -0
- package/dist/evals/scorers/efficiency.js +201 -0
- package/dist/evals/scorers/efficiency.js.map +1 -0
- package/dist/evals/scorers/extract-tools.d.ts +25 -0
- package/dist/evals/scorers/extract-tools.d.ts.map +1 -0
- package/dist/evals/scorers/extract-tools.js +56 -0
- package/dist/evals/scorers/extract-tools.js.map +1 -0
- package/dist/evals/scorers/index.d.ts +3 -0
- package/dist/evals/scorers/index.d.ts.map +1 -0
- package/dist/evals/scorers/index.js +7 -0
- package/dist/evals/scorers/index.js.map +1 -0
- package/dist/evals/scorers/outcome.d.ts +49 -0
- package/dist/evals/scorers/outcome.d.ts.map +1 -0
- package/dist/evals/scorers/outcome.js +238 -0
- package/dist/evals/scorers/outcome.js.map +1 -0
- package/dist/headless/cli.d.ts +42 -0
- package/dist/headless/cli.d.ts.map +1 -0
- package/dist/headless/cli.js +196 -0
- package/dist/headless/cli.js.map +1 -0
- package/dist/headless/flags.d.ts +33 -0
- package/dist/headless/flags.d.ts.map +1 -0
- package/dist/headless/flags.js +188 -0
- package/dist/headless/flags.js.map +1 -0
- package/dist/headless/format.d.ts +38 -0
- package/dist/headless/format.d.ts.map +1 -0
- package/dist/headless/format.js +85 -0
- package/dist/headless/format.js.map +1 -0
- package/dist/headless/index.d.ts +25 -0
- package/dist/headless/index.d.ts.map +1 -0
- package/dist/headless/index.js +32 -0
- package/dist/headless/index.js.map +1 -0
- package/dist/headless/policy.d.ts +17 -0
- package/dist/headless/policy.d.ts.map +1 -0
- package/dist/headless/policy.js +38 -0
- package/dist/headless/policy.js.map +1 -0
- package/dist/headless/run-mc.d.ts +7 -0
- package/dist/headless/run-mc.d.ts.map +1 -0
- package/dist/headless/run-mc.js +296 -0
- package/dist/headless/run-mc.js.map +1 -0
- package/dist/headless/types.d.ts +134 -0
- package/dist/headless/types.d.ts.map +1 -0
- package/dist/headless/types.js +9 -0
- package/dist/headless/types.js.map +1 -0
- package/dist/hooks/config.d.ts +11 -0
- package/dist/hooks/config.d.ts.map +1 -0
- package/dist/hooks/config.js +78 -0
- package/dist/hooks/config.js.map +1 -0
- package/dist/hooks/executor.d.ts +13 -0
- package/dist/hooks/executor.d.ts.map +1 -0
- package/dist/hooks/executor.js +125 -0
- package/dist/hooks/executor.js.map +1 -0
- package/dist/hooks/index.d.ts +6 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +16 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/manager.d.ts +47 -0
- package/dist/hooks/manager.d.ts.map +1 -0
- package/dist/hooks/manager.js +284 -0
- package/dist/hooks/manager.js.map +1 -0
- package/dist/hooks/types.d.ts +152 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/types.js +7 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/index.d.ts +241 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +712 -0
- package/dist/index.js.map +1 -0
- package/dist/ipc/ipc-reporter.d.ts +14 -0
- package/dist/ipc/ipc-reporter.d.ts.map +1 -0
- package/dist/ipc/ipc-reporter.js +24 -0
- package/dist/ipc/ipc-reporter.js.map +1 -0
- package/dist/lsp/client.d.ts +56 -0
- package/dist/lsp/client.d.ts.map +1 -0
- package/dist/lsp/client.js +309 -0
- package/dist/lsp/client.js.map +1 -0
- package/dist/lsp/index.d.ts +4 -0
- package/dist/lsp/index.d.ts.map +1 -0
- package/dist/lsp/index.js +9 -0
- package/dist/lsp/index.js.map +1 -0
- package/dist/lsp/language.d.ts +9 -0
- package/dist/lsp/language.d.ts.map +1 -0
- package/dist/lsp/language.js +48 -0
- package/dist/lsp/language.js.map +1 -0
- package/dist/lsp/manager.d.ts +34 -0
- package/dist/lsp/manager.d.ts.map +1 -0
- package/dist/lsp/manager.js +97 -0
- package/dist/lsp/manager.js.map +1 -0
- package/dist/lsp/server.d.ts +27 -0
- package/dist/lsp/server.d.ts.map +1 -0
- package/dist/lsp/server.js +128 -0
- package/dist/lsp/server.js.map +1 -0
- package/dist/lsp/workspace.d.ts +9 -0
- package/dist/lsp/workspace.d.ts.map +1 -0
- package/dist/lsp/workspace.js +52 -0
- package/dist/lsp/workspace.js.map +1 -0
- package/dist/mcp/config.d.ts +34 -0
- package/dist/mcp/config.d.ts.map +1 -0
- package/dist/mcp/config.js +205 -0
- package/dist/mcp/config.js.map +1 -0
- package/dist/mcp/index.d.ts +5 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +10 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/manager.d.ts +49 -0
- package/dist/mcp/manager.d.ts.map +1 -0
- package/dist/mcp/manager.js +374 -0
- package/dist/mcp/manager.js.map +1 -0
- package/dist/mcp/types.d.ts +85 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +1 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/onboarding/custom-packs.d.ts +7 -0
- package/dist/onboarding/custom-packs.d.ts.map +1 -0
- package/dist/onboarding/custom-packs.js +20 -0
- package/dist/onboarding/custom-packs.js.map +1 -0
- package/dist/onboarding/custom-providers.d.ts +4 -0
- package/dist/onboarding/custom-providers.d.ts.map +1 -0
- package/dist/onboarding/custom-providers.js +28 -0
- package/dist/onboarding/custom-providers.js.map +1 -0
- package/dist/onboarding/index.d.ts +5 -0
- package/dist/onboarding/index.d.ts.map +1 -0
- package/dist/onboarding/index.js +21 -0
- package/dist/onboarding/index.js.map +1 -0
- package/dist/onboarding/om-settings.d.ts +20 -0
- package/dist/onboarding/om-settings.d.ts.map +1 -0
- package/dist/onboarding/om-settings.js +26 -0
- package/dist/onboarding/om-settings.js.map +1 -0
- package/dist/onboarding/packs.d.ts +48 -0
- package/dist/onboarding/packs.d.ts.map +1 -0
- package/dist/onboarding/packs.js +111 -0
- package/dist/onboarding/packs.js.map +1 -0
- package/dist/onboarding/settings.d.ts +323 -0
- package/dist/onboarding/settings.d.ts.map +1 -0
- package/dist/onboarding/settings.js +594 -0
- package/dist/onboarding/settings.js.map +1 -0
- package/dist/permissions.d.ts +55 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +119 -0
- package/dist/permissions.js.map +1 -0
- package/dist/plugin.d.ts +81 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +30 -0
- package/dist/plugin.js.map +1 -0
- package/dist/plugins/install.d.ts +20 -0
- package/dist/plugins/install.d.ts.map +1 -0
- package/dist/plugins/install.js +179 -0
- package/dist/plugins/install.js.map +1 -0
- package/dist/plugins/loader.d.ts +15 -0
- package/dist/plugins/loader.d.ts.map +1 -0
- package/dist/plugins/loader.js +221 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/manager.d.ts +60 -0
- package/dist/plugins/manager.d.ts.map +1 -0
- package/dist/plugins/manager.js +369 -0
- package/dist/plugins/manager.js.map +1 -0
- package/dist/plugins/manifest.d.ts +14 -0
- package/dist/plugins/manifest.d.ts.map +1 -0
- package/dist/plugins/manifest.js +75 -0
- package/dist/plugins/manifest.js.map +1 -0
- package/dist/plugins/package-link.d.ts +2 -0
- package/dist/plugins/package-link.d.ts.map +1 -0
- package/dist/plugins/package-link.js +20 -0
- package/dist/plugins/package-link.js.map +1 -0
- package/dist/plugins/paths.d.ts +10 -0
- package/dist/plugins/paths.d.ts.map +1 -0
- package/dist/plugins/paths.js +26 -0
- package/dist/plugins/paths.js.map +1 -0
- package/dist/plugins/registry.d.ts +8 -0
- package/dist/plugins/registry.d.ts.map +1 -0
- package/dist/plugins/registry.js +96 -0
- package/dist/plugins/registry.js.map +1 -0
- package/dist/plugins/scaffold.d.ts +10 -0
- package/dist/plugins/scaffold.d.ts.map +1 -0
- package/dist/plugins/scaffold.js +152 -0
- package/dist/plugins/scaffold.js.map +1 -0
- package/dist/plugins/types.d.ts +45 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +1 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/processors/plan-rejection-abort.d.ts +12 -0
- package/dist/processors/plan-rejection-abort.d.ts.map +1 -0
- package/dist/processors/plan-rejection-abort.js +53 -0
- package/dist/processors/plan-rejection-abort.js.map +1 -0
- package/dist/providers/amazon-bedrock-gateway.d.ts +40 -0
- package/dist/providers/amazon-bedrock-gateway.d.ts.map +1 -0
- package/dist/providers/amazon-bedrock-gateway.js +79 -0
- package/dist/providers/amazon-bedrock-gateway.js.map +1 -0
- package/dist/providers/amazon-bedrock.d.ts +28 -0
- package/dist/providers/amazon-bedrock.d.ts.map +1 -0
- package/dist/providers/amazon-bedrock.js +62 -0
- package/dist/providers/amazon-bedrock.js.map +1 -0
- package/dist/providers/claude-max.d.ts +50 -0
- package/dist/providers/claude-max.d.ts.map +1 -0
- package/dist/providers/claude-max.js +151 -0
- package/dist/providers/claude-max.js.map +1 -0
- package/dist/providers/github-copilot.d.ts +58 -0
- package/dist/providers/github-copilot.d.ts.map +1 -0
- package/dist/providers/github-copilot.js +263 -0
- package/dist/providers/github-copilot.js.map +1 -0
- package/dist/providers/openai-codex.d.ts +70 -0
- package/dist/providers/openai-codex.d.ts.map +1 -0
- package/dist/providers/openai-codex.js +291 -0
- package/dist/providers/openai-codex.js.map +1 -0
- package/dist/schema.d.ts +167 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +92 -0
- package/dist/schema.js.map +1 -0
- package/dist/theme-palette.d.ts +17 -0
- package/dist/theme-palette.d.ts.map +1 -0
- package/dist/theme-palette.js +17 -0
- package/dist/theme-palette.js.map +1 -0
- package/dist/tool-names.d.ts +73 -0
- package/dist/tool-names.d.ts.map +1 -0
- package/dist/tool-names.js +43 -0
- package/dist/tool-names.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +9 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/request-sandbox-access.d.ts +6 -0
- package/dist/tools/request-sandbox-access.d.ts.map +1 -0
- package/dist/tools/request-sandbox-access.js +88 -0
- package/dist/tools/request-sandbox-access.js.map +1 -0
- package/dist/tools/utils.d.ts +20 -0
- package/dist/tools/utils.d.ts.map +1 -0
- package/dist/tools/utils.js +22 -0
- package/dist/tools/utils.js.map +1 -0
- package/dist/tools/web-search.d.ts +35 -0
- package/dist/tools/web-search.d.ts.map +1 -0
- package/dist/tools/web-search.js +65 -0
- package/dist/tools/web-search.js.map +1 -0
- package/dist/utils/binaries.d.ts +7 -0
- package/dist/utils/binaries.d.ts.map +1 -0
- package/dist/utils/binaries.js +74 -0
- package/dist/utils/binaries.js.map +1 -0
- package/dist/utils/debug-log.d.ts +12 -0
- package/dist/utils/debug-log.d.ts.map +1 -0
- package/dist/utils/debug-log.js +55 -0
- package/dist/utils/debug-log.js.map +1 -0
- package/dist/utils/errors.d.ts +36 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +207 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/gateway-sync.d.ts +26 -0
- package/dist/utils/gateway-sync.d.ts.map +1 -0
- package/dist/utils/gateway-sync.js +49 -0
- package/dist/utils/gateway-sync.js.map +1 -0
- package/dist/utils/plan-diff.d.ts +25 -0
- package/dist/utils/plan-diff.d.ts.map +1 -0
- package/dist/utils/plan-diff.js +43 -0
- package/dist/utils/plan-diff.js.map +1 -0
- package/dist/utils/plans.d.ts +56 -0
- package/dist/utils/plans.d.ts.map +1 -0
- package/dist/utils/plans.js +99 -0
- package/dist/utils/plans.js.map +1 -0
- package/dist/utils/project.d.ts +161 -0
- package/dist/utils/project.d.ts.map +1 -0
- package/dist/utils/project.js +302 -0
- package/dist/utils/project.js.map +1 -0
- package/dist/utils/signals-pubsub.d.ts +41 -0
- package/dist/utils/signals-pubsub.d.ts.map +1 -0
- package/dist/utils/signals-pubsub.js +104 -0
- package/dist/utils/signals-pubsub.js.map +1 -0
- package/dist/utils/slash-command-loader.d.ts +48 -0
- package/dist/utils/slash-command-loader.d.ts.map +1 -0
- package/dist/utils/slash-command-loader.js +155 -0
- package/dist/utils/slash-command-loader.js.map +1 -0
- package/dist/utils/slash-command-processor.d.ts +14 -0
- package/dist/utils/slash-command-processor.d.ts.map +1 -0
- package/dist/utils/slash-command-processor.js +96 -0
- package/dist/utils/slash-command-processor.js.map +1 -0
- package/dist/utils/stdin-pipe.d.ts +33 -0
- package/dist/utils/stdin-pipe.d.ts.map +1 -0
- package/dist/utils/stdin-pipe.js +72 -0
- package/dist/utils/stdin-pipe.js.map +1 -0
- package/dist/utils/storage-factory.d.ts +50 -0
- package/dist/utils/storage-factory.d.ts.map +1 -0
- package/dist/utils/storage-factory.js +98 -0
- package/dist/utils/storage-factory.js.map +1 -0
- package/dist/utils/thread-lock.d.ts +26 -0
- package/dist/utils/thread-lock.d.ts.map +1 -0
- package/dist/utils/thread-lock.js +108 -0
- package/dist/utils/thread-lock.js.map +1 -0
- package/dist/utils/token-estimator.d.ts +3 -0
- package/dist/utils/token-estimator.d.ts.map +1 -0
- package/dist/utils/token-estimator.js +21 -0
- package/dist/utils/token-estimator.js.map +1 -0
- package/dist/utils/update-check.d.ts +52 -0
- package/dist/utils/update-check.d.ts.map +1 -0
- package/dist/utils/update-check.js +177 -0
- package/dist/utils/update-check.js.map +1 -0
- package/dist/voice/stt-registry.d.ts +64 -0
- package/dist/voice/stt-registry.d.ts.map +1 -0
- package/dist/voice/stt-registry.js +126 -0
- package/dist/voice/stt-registry.js.map +1 -0
- package/package.json +92 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { runMC } from "./run-mc.js";
|
|
2
|
+
import { autoApprovePolicy, denyPolicy, permissionModeToPolicy } from "./policy.js";
|
|
3
|
+
import {
|
|
4
|
+
formatHuman,
|
|
5
|
+
formatJsonl,
|
|
6
|
+
renderTextResult,
|
|
7
|
+
renderJsonResult,
|
|
8
|
+
createHumanFormatState,
|
|
9
|
+
truncate
|
|
10
|
+
} from "./format.js";
|
|
11
|
+
import { runMCCli, hasHeadlessFlag, parseHeadlessArgs, printHeadlessUsage } from "./cli.js";
|
|
12
|
+
import { VALID_MODES, VALID_THINKING_LEVELS, VALID_PERMISSION_MODES } from "./types.js";
|
|
13
|
+
export {
|
|
14
|
+
VALID_MODES,
|
|
15
|
+
VALID_PERMISSION_MODES,
|
|
16
|
+
VALID_THINKING_LEVELS,
|
|
17
|
+
autoApprovePolicy,
|
|
18
|
+
createHumanFormatState,
|
|
19
|
+
denyPolicy,
|
|
20
|
+
formatHuman,
|
|
21
|
+
formatJsonl,
|
|
22
|
+
hasHeadlessFlag,
|
|
23
|
+
parseHeadlessArgs,
|
|
24
|
+
permissionModeToPolicy,
|
|
25
|
+
printHeadlessUsage,
|
|
26
|
+
renderJsonResult,
|
|
27
|
+
renderTextResult,
|
|
28
|
+
runMC,
|
|
29
|
+
runMCCli,
|
|
30
|
+
truncate
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/headless/index.ts"],"sourcesContent":["/**\n * Public headless / programmatic API for MastraCode.\n *\n * Programmatic (CI / Node) usage:\n * ```ts\n * import { createMastraCode } from 'mastracode';\n * import { runMC } from 'mastracode/headless';\n *\n * const { controller, session } = await createMastraCode({ settingsPath });\n * const run = runMC({ controller, session, prompt: 'Fix the bug' });\n * for await (const event of run) { ... } // optional live events\n * const result = await run.result; // typed RunMCResult\n * ```\n *\n * The CLI adapter (`runMCCli`) wraps the same `createMastraCode` → `runMC` flow.\n */\n\n// Core runner\nexport { runMC } from './run-mc.js';\n\n// Resolution policy\nexport { autoApprovePolicy, denyPolicy, permissionModeToPolicy } from './policy.js';\n\n// Formatters (pure, sink-agnostic)\nexport {\n formatHuman,\n formatJsonl,\n renderTextResult,\n renderJsonResult,\n createHumanFormatState,\n truncate,\n} from './format.js';\nexport type { FormattedOutput, HumanFormatState } from './format.js';\n\n// CLI adapter\nexport { runMCCli, hasHeadlessFlag, parseHeadlessArgs, printHeadlessUsage } from './cli.js';\nexport type { HeadlessArgs, OutputMode } from './cli.js';\n\n// Shared types\nexport type {\n RunMCOptions,\n RunMCResult,\n RunMCStatus,\n RunMCUsage,\n RunMCToolCall,\n RunMCToolResult,\n RunMCError,\n RunMCThreadOptions,\n MCRun,\n ResolutionPolicy,\n RunMode,\n ThinkingLevel,\n PermissionMode,\n} from './types.js';\nexport { VALID_MODES, VALID_THINKING_LEVELS, VALID_PERMISSION_MODES } from './types.js';\n"],"mappings":"AAkBA,SAAS,aAAa;AAGtB,SAAS,mBAAmB,YAAY,8BAA8B;AAGtE;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAIP,SAAS,UAAU,iBAAiB,mBAAmB,0BAA0B;AAmBjF,SAAS,aAAa,uBAAuB,8BAA8B;","names":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { PermissionMode, ResolutionPolicy } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Default policy — reproduces the historical headless behavior:
|
|
4
|
+
* - approve every tool approval request,
|
|
5
|
+
* - auto-approve `request_access` / sandbox access suspensions ("Yes"),
|
|
6
|
+
* - auto-approve `submit_plan` suspensions (`{ action: 'approved' }`),
|
|
7
|
+
* - answer any other suspension with a "use your best judgment" instruction.
|
|
8
|
+
*/
|
|
9
|
+
export declare const autoApprovePolicy: ResolutionPolicy;
|
|
10
|
+
/**
|
|
11
|
+
* Strict policy — refuses every tool approval and aborts on any suspension.
|
|
12
|
+
* Useful for CI gating where unattended tool execution must not happen.
|
|
13
|
+
*/
|
|
14
|
+
export declare const denyPolicy: ResolutionPolicy;
|
|
15
|
+
/** Resolve a named {@link PermissionMode} to its built-in {@link ResolutionPolicy}. */
|
|
16
|
+
export declare function permissionModeToPolicy(mode: PermissionMode): ResolutionPolicy;
|
|
17
|
+
//# sourceMappingURL=policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/headless/policy.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,gBAoB/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,gBAUxB,CAAC;AAEF,uFAAuF;AACvF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB,CAQ7E"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
const autoApprovePolicy = {
|
|
2
|
+
onToolApproval(_event) {
|
|
3
|
+
return "approve";
|
|
4
|
+
},
|
|
5
|
+
onSuspension(event) {
|
|
6
|
+
const payload = event.suspendPayload ?? {};
|
|
7
|
+
if (event.toolName === "request_access" || payload.kind === "sandbox_access_request") {
|
|
8
|
+
return { resumeData: "Yes" };
|
|
9
|
+
}
|
|
10
|
+
if (event.toolName === "submit_plan") {
|
|
11
|
+
return { resumeData: { action: "approved" } };
|
|
12
|
+
}
|
|
13
|
+
return { resumeData: "Proceed with your best judgment. Do not ask further questions." };
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
const denyPolicy = {
|
|
17
|
+
onToolApproval(_event) {
|
|
18
|
+
return "deny";
|
|
19
|
+
},
|
|
20
|
+
onSuspension(_event) {
|
|
21
|
+
return { abort: true };
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
function permissionModeToPolicy(mode) {
|
|
25
|
+
switch (mode) {
|
|
26
|
+
case "deny":
|
|
27
|
+
return denyPolicy;
|
|
28
|
+
case "auto":
|
|
29
|
+
default:
|
|
30
|
+
return autoApprovePolicy;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export {
|
|
34
|
+
autoApprovePolicy,
|
|
35
|
+
denyPolicy,
|
|
36
|
+
permissionModeToPolicy
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/headless/policy.ts"],"sourcesContent":["/**\n * Resolution policies decide how `runMC` resumes interactive events\n * (`tool_approval_required`, `tool_suspended`) without a human in the loop.\n *\n * Policies are pure decision objects: they inspect the event and return a\n * decision. The runner is responsible for applying the decision to the session\n * and for any side effects (emitting labels, etc.). This keeps policies testable\n * and lets CI swap in stricter behavior without touching the runner.\n */\nimport type { AgentControllerEvent } from '@mastra/core/agent-controller';\n\nimport type { PermissionMode, ResolutionPolicy } from './types.js';\n\n/**\n * Default policy — reproduces the historical headless behavior:\n * - approve every tool approval request,\n * - auto-approve `request_access` / sandbox access suspensions (\"Yes\"),\n * - auto-approve `submit_plan` suspensions (`{ action: 'approved' }`),\n * - answer any other suspension with a \"use your best judgment\" instruction.\n */\nexport const autoApprovePolicy: ResolutionPolicy = {\n onToolApproval(_event: Extract<AgentControllerEvent, { type: 'tool_approval_required' }>): 'approve' | 'deny' {\n return 'approve';\n },\n\n onSuspension(\n event: Extract<AgentControllerEvent, { type: 'tool_suspended' }>,\n ): { resumeData: unknown } | { abort: true } {\n const payload = (event.suspendPayload ?? {}) as Record<string, unknown>;\n\n if (event.toolName === 'request_access' || payload.kind === 'sandbox_access_request') {\n return { resumeData: 'Yes' };\n }\n\n if (event.toolName === 'submit_plan') {\n return { resumeData: { action: 'approved' } };\n }\n\n return { resumeData: 'Proceed with your best judgment. Do not ask further questions.' };\n },\n};\n\n/**\n * Strict policy — refuses every tool approval and aborts on any suspension.\n * Useful for CI gating where unattended tool execution must not happen.\n */\nexport const denyPolicy: ResolutionPolicy = {\n onToolApproval(_event: Extract<AgentControllerEvent, { type: 'tool_approval_required' }>): 'approve' | 'deny' {\n return 'deny';\n },\n\n onSuspension(\n _event: Extract<AgentControllerEvent, { type: 'tool_suspended' }>,\n ): { resumeData: unknown } | { abort: true } {\n return { abort: true };\n },\n};\n\n/** Resolve a named {@link PermissionMode} to its built-in {@link ResolutionPolicy}. */\nexport function permissionModeToPolicy(mode: PermissionMode): ResolutionPolicy {\n switch (mode) {\n case 'deny':\n return denyPolicy;\n case 'auto':\n default:\n return autoApprovePolicy;\n }\n}\n"],"mappings":"AAoBO,MAAM,oBAAsC;AAAA,EACjD,eAAe,QAA+F;AAC5G,WAAO;AAAA,EACT;AAAA,EAEA,aACE,OAC2C;AAC3C,UAAM,UAAW,MAAM,kBAAkB,CAAC;AAE1C,QAAI,MAAM,aAAa,oBAAoB,QAAQ,SAAS,0BAA0B;AACpF,aAAO,EAAE,YAAY,MAAM;AAAA,IAC7B;AAEA,QAAI,MAAM,aAAa,eAAe;AACpC,aAAO,EAAE,YAAY,EAAE,QAAQ,WAAW,EAAE;AAAA,IAC9C;AAEA,WAAO,EAAE,YAAY,iEAAiE;AAAA,EACxF;AACF;AAMO,MAAM,aAA+B;AAAA,EAC1C,eAAe,QAA+F;AAC5G,WAAO;AAAA,EACT;AAAA,EAEA,aACE,QAC2C;AAC3C,WAAO,EAAE,OAAO,KAAK;AAAA,EACvB;AACF;AAGO,SAAS,uBAAuB,MAAwC;AAC7E,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL;AACE,aAAO;AAAA,EACX;AACF;","names":[]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { MCRun, RunMCOptions } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Run a headless MastraCode turn. Returns an {@link MCRun} handle that is
|
|
4
|
+
* async-iterable over controller events and resolves to a {@link RunMCResult}.
|
|
5
|
+
*/
|
|
6
|
+
export declare function runMC<TState extends Record<string, unknown>>(options: RunMCOptions<TState>): MCRun;
|
|
7
|
+
//# sourceMappingURL=run-mc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-mc.d.ts","sourceRoot":"","sources":["../../src/headless/run-mc.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,KAAK,EAAoB,YAAY,EAA4B,MAAM,YAAY,CAAC;AAyIlG;;;GAGG;AACH,wBAAgB,KAAK,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,KAAK,CAqOlG"}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
import { autoApprovePolicy } from "./policy.js";
|
|
2
|
+
function extractAssistantText(message) {
|
|
3
|
+
return message.content.filter((c) => c.type === "text").map((c) => c.text).join("");
|
|
4
|
+
}
|
|
5
|
+
function exitCodeForStatus(status) {
|
|
6
|
+
switch (status) {
|
|
7
|
+
case "completed":
|
|
8
|
+
return 0;
|
|
9
|
+
case "timeout":
|
|
10
|
+
return 2;
|
|
11
|
+
default:
|
|
12
|
+
return 1;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function aggregate(event, acc) {
|
|
16
|
+
switch (event.type) {
|
|
17
|
+
case "message_end":
|
|
18
|
+
if (event.message.role === "assistant") {
|
|
19
|
+
acc.text += extractAssistantText(event.message);
|
|
20
|
+
}
|
|
21
|
+
break;
|
|
22
|
+
case "tool_start":
|
|
23
|
+
acc.toolCalls.push({ id: event.toolCallId, name: event.toolName, args: event.args });
|
|
24
|
+
break;
|
|
25
|
+
case "tool_end": {
|
|
26
|
+
const matching = acc.toolCalls.find((c) => c.id === event.toolCallId);
|
|
27
|
+
acc.toolResults.push({
|
|
28
|
+
id: event.toolCallId,
|
|
29
|
+
name: matching?.name ?? "",
|
|
30
|
+
result: event.result,
|
|
31
|
+
isError: event.isError
|
|
32
|
+
});
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
case "usage_update":
|
|
36
|
+
acc.usage = {
|
|
37
|
+
inputTokens: event.usage.promptTokens,
|
|
38
|
+
outputTokens: event.usage.completionTokens,
|
|
39
|
+
totalTokens: event.usage.totalTokens
|
|
40
|
+
};
|
|
41
|
+
break;
|
|
42
|
+
case "error":
|
|
43
|
+
acc.error = {
|
|
44
|
+
name: event.error.name,
|
|
45
|
+
message: event.error.message,
|
|
46
|
+
stack: event.error.stack
|
|
47
|
+
};
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async function resolveThread(session, threadId) {
|
|
52
|
+
const threads = await session.thread.list();
|
|
53
|
+
const byId = threads.find((t) => t.id === threadId);
|
|
54
|
+
if (byId) return { threadId: byId.id };
|
|
55
|
+
return { error: `No thread found with ID "${threadId}"` };
|
|
56
|
+
}
|
|
57
|
+
class EventQueue {
|
|
58
|
+
#buffer = [];
|
|
59
|
+
#resolvers = [];
|
|
60
|
+
#closed = false;
|
|
61
|
+
#maxBuffer;
|
|
62
|
+
constructor(maxBuffer = 1e4) {
|
|
63
|
+
this.#maxBuffer = maxBuffer;
|
|
64
|
+
}
|
|
65
|
+
push(value) {
|
|
66
|
+
if (this.#closed) return;
|
|
67
|
+
const resolve = this.#resolvers.shift();
|
|
68
|
+
if (resolve) {
|
|
69
|
+
resolve({ value, done: false });
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
this.#buffer.push(value);
|
|
73
|
+
if (this.#buffer.length > this.#maxBuffer) {
|
|
74
|
+
this.#buffer.shift();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
close() {
|
|
78
|
+
if (this.#closed) return;
|
|
79
|
+
this.#closed = true;
|
|
80
|
+
for (const resolve of this.#resolvers.splice(0)) {
|
|
81
|
+
resolve({ value: void 0, done: true });
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
[Symbol.asyncIterator]() {
|
|
85
|
+
return {
|
|
86
|
+
next: () => {
|
|
87
|
+
if (this.#buffer.length > 0) {
|
|
88
|
+
return Promise.resolve({ value: this.#buffer.shift(), done: false });
|
|
89
|
+
}
|
|
90
|
+
if (this.#closed) {
|
|
91
|
+
return Promise.resolve({ value: void 0, done: true });
|
|
92
|
+
}
|
|
93
|
+
return new Promise((resolve) => this.#resolvers.push(resolve));
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
function runMC(options) {
|
|
99
|
+
const { controller, session, prompt } = options;
|
|
100
|
+
const policy = options.policy ?? autoApprovePolicy;
|
|
101
|
+
const queue = new EventQueue();
|
|
102
|
+
const acc = { text: "", toolCalls: [], toolResults: [] };
|
|
103
|
+
let timeoutId;
|
|
104
|
+
let timedOut = false;
|
|
105
|
+
let aborted = false;
|
|
106
|
+
let maxTurnsExceeded = false;
|
|
107
|
+
let assistantTurns = 0;
|
|
108
|
+
let settled = false;
|
|
109
|
+
let unsubscribe;
|
|
110
|
+
let resolveResult;
|
|
111
|
+
const result = new Promise((resolve) => {
|
|
112
|
+
resolveResult = resolve;
|
|
113
|
+
});
|
|
114
|
+
function finish(status) {
|
|
115
|
+
if (settled) return;
|
|
116
|
+
settled = true;
|
|
117
|
+
if (timeoutId) clearTimeout(timeoutId);
|
|
118
|
+
unsubscribe?.();
|
|
119
|
+
queue.close();
|
|
120
|
+
resolveResult({
|
|
121
|
+
status,
|
|
122
|
+
text: acc.text,
|
|
123
|
+
finishReason: acc.finishReason,
|
|
124
|
+
usage: acc.usage,
|
|
125
|
+
toolCalls: acc.toolCalls,
|
|
126
|
+
toolResults: acc.toolResults,
|
|
127
|
+
threadId: acc.threadId ?? session.thread.getId() ?? void 0,
|
|
128
|
+
error: acc.error,
|
|
129
|
+
exitCode: exitCodeForStatus(status)
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
function fail(message, name = "Error") {
|
|
133
|
+
if (!acc.error) acc.error = { name, message };
|
|
134
|
+
finish("error");
|
|
135
|
+
}
|
|
136
|
+
function abort() {
|
|
137
|
+
if (settled) return;
|
|
138
|
+
aborted = true;
|
|
139
|
+
session.abort();
|
|
140
|
+
}
|
|
141
|
+
if (options.signal) {
|
|
142
|
+
if (options.signal.aborted) {
|
|
143
|
+
queueMicrotask(() => abort());
|
|
144
|
+
} else {
|
|
145
|
+
options.signal.addEventListener("abort", () => abort(), { once: true });
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
void (async () => {
|
|
149
|
+
if (options.timeoutMs) {
|
|
150
|
+
timeoutId = setTimeout(() => {
|
|
151
|
+
timedOut = true;
|
|
152
|
+
session.abort();
|
|
153
|
+
}, options.timeoutMs);
|
|
154
|
+
}
|
|
155
|
+
try {
|
|
156
|
+
if (options.model) {
|
|
157
|
+
const available = await controller.listAvailableModels();
|
|
158
|
+
const match = available.find((m) => m.id === options.model);
|
|
159
|
+
if (!match) return fail(`Unknown model: "${options.model}"`);
|
|
160
|
+
if (!match.hasApiKey) {
|
|
161
|
+
const keyHint = match.apiKeyEnvVar ? ` Set ${match.apiKeyEnvVar} to use this model.` : "";
|
|
162
|
+
return fail(`Model "${options.model}" has no API key configured.${keyHint}`);
|
|
163
|
+
}
|
|
164
|
+
await session.model.switch({ modelId: options.model });
|
|
165
|
+
} else if (options.mode) {
|
|
166
|
+
const modelId = options.modeDefaults?.[options.mode];
|
|
167
|
+
if (modelId) {
|
|
168
|
+
const available = await controller.listAvailableModels();
|
|
169
|
+
const match = available.find((m) => m.id === modelId);
|
|
170
|
+
if (!match) return fail(`Unknown model "${modelId}" configured for mode "${options.mode}"`);
|
|
171
|
+
if (!match.hasApiKey) {
|
|
172
|
+
const keyHint = match.apiKeyEnvVar ? ` Set ${match.apiKeyEnvVar} to use this model.` : "";
|
|
173
|
+
return fail(`Model "${modelId}" (mode: ${options.mode}) has no API key configured.${keyHint}`);
|
|
174
|
+
}
|
|
175
|
+
await session.model.switch({ modelId });
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (options.thinkingLevel) {
|
|
179
|
+
await session.state.set({ thinkingLevel: options.thinkingLevel });
|
|
180
|
+
}
|
|
181
|
+
} catch (err) {
|
|
182
|
+
return fail(`Failed to resolve run config: ${err.message}`);
|
|
183
|
+
}
|
|
184
|
+
unsubscribe = session.subscribe((event) => {
|
|
185
|
+
if (settled) return;
|
|
186
|
+
if (event.type === "tool_approval_required") {
|
|
187
|
+
let decision;
|
|
188
|
+
try {
|
|
189
|
+
decision = policy.onToolApproval(event);
|
|
190
|
+
} catch (err) {
|
|
191
|
+
fail(`Resolution policy failed: ${err.message}`);
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
session.respondToToolApproval({
|
|
195
|
+
decision: decision === "approve" ? "approve" : "decline",
|
|
196
|
+
toolCallId: event.toolCallId
|
|
197
|
+
});
|
|
198
|
+
queue.push(event);
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
if (event.type === "tool_suspended") {
|
|
202
|
+
let outcome;
|
|
203
|
+
try {
|
|
204
|
+
outcome = policy.onSuspension(event);
|
|
205
|
+
} catch (err) {
|
|
206
|
+
fail(`Resolution policy failed: ${err.message}`);
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
if ("abort" in outcome) {
|
|
210
|
+
queue.push(event);
|
|
211
|
+
abort();
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
void session.respondToToolSuspension({ toolCallId: event.toolCallId, resumeData: outcome.resumeData });
|
|
215
|
+
queue.push(event);
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
aggregate(event, acc);
|
|
219
|
+
queue.push(event);
|
|
220
|
+
if (event.type === "message_end" && event.message.role === "assistant" && options.maxTurns !== void 0) {
|
|
221
|
+
assistantTurns += 1;
|
|
222
|
+
if (assistantTurns >= options.maxTurns && !maxTurnsExceeded) {
|
|
223
|
+
maxTurnsExceeded = true;
|
|
224
|
+
abort();
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
if (event.type === "agent_end") {
|
|
228
|
+
acc.finishReason = event.reason;
|
|
229
|
+
if (timedOut) {
|
|
230
|
+
finish("timeout");
|
|
231
|
+
} else if (event.reason === "error") {
|
|
232
|
+
finish("error");
|
|
233
|
+
} else if (maxTurnsExceeded && event.reason !== "complete") {
|
|
234
|
+
finish("max_turns");
|
|
235
|
+
} else if ((event.reason === "aborted" || aborted) && !maxTurnsExceeded) {
|
|
236
|
+
finish("aborted");
|
|
237
|
+
} else {
|
|
238
|
+
finish("completed");
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
try {
|
|
243
|
+
if (options.resourceId) {
|
|
244
|
+
await controller.setResourceId(session, { resourceId: options.resourceId });
|
|
245
|
+
}
|
|
246
|
+
} catch (err) {
|
|
247
|
+
return fail(`Failed to set resource id: ${err.message}`);
|
|
248
|
+
}
|
|
249
|
+
try {
|
|
250
|
+
const thread = options.thread;
|
|
251
|
+
if (thread?.id) {
|
|
252
|
+
const resolved = await resolveThread(session, thread.id);
|
|
253
|
+
if ("error" in resolved) return fail(resolved.error);
|
|
254
|
+
await session.thread.switch({ threadId: resolved.threadId });
|
|
255
|
+
} else if (thread?.continueLatest) {
|
|
256
|
+
const threads = await session.thread.list();
|
|
257
|
+
if (threads.length > 0) {
|
|
258
|
+
const sorted = [...threads].sort((a, b) => b.updatedAt.getTime() - a.updatedAt.getTime());
|
|
259
|
+
await session.thread.switch({ threadId: sorted[0].id });
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
} catch (err) {
|
|
263
|
+
return fail(`Failed to select thread: ${err.message}`);
|
|
264
|
+
}
|
|
265
|
+
if (options.thread?.clone) {
|
|
266
|
+
try {
|
|
267
|
+
await session.thread.clone();
|
|
268
|
+
} catch (err) {
|
|
269
|
+
return fail(`Failed to clone thread: ${err.message}`);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
if (options.title) {
|
|
273
|
+
try {
|
|
274
|
+
await session.thread.rename({ title: options.title });
|
|
275
|
+
} catch (err) {
|
|
276
|
+
return fail(`Failed to set thread title: ${err.message}`);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
try {
|
|
280
|
+
await session.sendMessage({ content: prompt });
|
|
281
|
+
} catch (err) {
|
|
282
|
+
return fail(`Failed to send message: ${err.message}`);
|
|
283
|
+
}
|
|
284
|
+
})();
|
|
285
|
+
return {
|
|
286
|
+
result,
|
|
287
|
+
abort,
|
|
288
|
+
[Symbol.asyncIterator]() {
|
|
289
|
+
return queue[Symbol.asyncIterator]();
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
export {
|
|
294
|
+
runMC
|
|
295
|
+
};
|
|
296
|
+
//# sourceMappingURL=run-mc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/headless/run-mc.ts"],"sourcesContent":["/**\n * Core programmatic runner for MastraCode headless runs.\n *\n * `runMC` is a pure async runner: it takes an already-built `controller` +\n * `session` (from `createMastraCode(...)`), resolves run config, subscribes to\n * the session, applies a {@link ResolutionPolicy} for approvals/suspensions,\n * sends the prompt, and aggregates events into a {@link RunMCResult}.\n *\n * It never touches `process.*` and never calls `process.exit`. The returned\n * {@link MCRun} is async-iterable over controller events and also resolves to a\n * final result via `result`.\n */\nimport type { AgentControllerEvent, AgentControllerMessage, Session } from '@mastra/core/agent-controller';\n\nimport { autoApprovePolicy } from './policy.js';\nimport type { MCRun, ResolutionPolicy, RunMCOptions, RunMCResult, RunMCStatus } from './types.js';\n\nfunction extractAssistantText(message: AgentControllerMessage): string {\n return message.content\n .filter((c): c is { type: 'text'; text: string } => c.type === 'text')\n .map(c => c.text)\n .join('');\n}\n\nfunction exitCodeForStatus(status: RunMCStatus): number {\n switch (status) {\n case 'completed':\n return 0;\n case 'timeout':\n return 2;\n default:\n return 1;\n }\n}\n\ninterface MutableResult {\n text: string;\n finishReason?: string;\n usage?: RunMCResult['usage'];\n toolCalls: RunMCResult['toolCalls'];\n toolResults: RunMCResult['toolResults'];\n error?: RunMCResult['error'];\n threadId?: string;\n}\n\nfunction aggregate(event: AgentControllerEvent, acc: MutableResult): void {\n switch (event.type) {\n case 'message_end':\n if (event.message.role === 'assistant') {\n acc.text += extractAssistantText(event.message);\n }\n break;\n case 'tool_start':\n acc.toolCalls.push({ id: event.toolCallId, name: event.toolName, args: event.args });\n break;\n case 'tool_end': {\n const matching = acc.toolCalls.find(c => c.id === event.toolCallId);\n acc.toolResults.push({\n id: event.toolCallId,\n name: matching?.name ?? '',\n result: event.result,\n isError: event.isError,\n });\n break;\n }\n case 'usage_update':\n acc.usage = {\n inputTokens: event.usage.promptTokens,\n outputTokens: event.usage.completionTokens,\n totalTokens: event.usage.totalTokens,\n };\n break;\n case 'error':\n acc.error = {\n name: event.error.name,\n message: event.error.message,\n stack: event.error.stack,\n };\n break;\n }\n}\n\n/** Resolve a thread by its exact ID. Titles are not unique, so we don't match on them. */\nasync function resolveThread<TState extends Record<string, unknown>>(\n session: Session<TState>,\n threadId: string,\n): Promise<{ threadId: string } | { error: string }> {\n const threads = await session.thread.list();\n\n const byId = threads.find(t => t.id === threadId);\n if (byId) return { threadId: byId.id };\n\n return { error: `No thread found with ID \"${threadId}\"` };\n}\n\n/**\n * A simple back-pressured async queue. Events are pushed in; consumers pull via\n * the async iterator. `close()` ends iteration after draining buffered events.\n *\n * Buffered events are bounded by `maxBuffer`: if a consumer never iterates (the\n * result-only path, `await run.result` without `for await (...)`) — or simply\n * falls far behind — the oldest buffered events are dropped instead of growing\n * without limit. The aggregated {@link RunMCResult} is built independently of\n * this queue, so dropping buffered events never affects the final result.\n */\nclass EventQueue<T> {\n #buffer: T[] = [];\n #resolvers: Array<(r: IteratorResult<T>) => void> = [];\n #closed = false;\n readonly #maxBuffer: number;\n\n constructor(maxBuffer = 10_000) {\n this.#maxBuffer = maxBuffer;\n }\n\n push(value: T): void {\n if (this.#closed) return;\n const resolve = this.#resolvers.shift();\n if (resolve) {\n resolve({ value, done: false });\n return;\n }\n this.#buffer.push(value);\n if (this.#buffer.length > this.#maxBuffer) {\n // Bound memory: drop the oldest event once over the cap.\n this.#buffer.shift();\n }\n }\n\n close(): void {\n if (this.#closed) return;\n this.#closed = true;\n for (const resolve of this.#resolvers.splice(0)) {\n resolve({ value: undefined as unknown as T, done: true });\n }\n }\n\n [Symbol.asyncIterator](): AsyncIterator<T> {\n return {\n next: (): Promise<IteratorResult<T>> => {\n if (this.#buffer.length > 0) {\n return Promise.resolve({ value: this.#buffer.shift()!, done: false });\n }\n if (this.#closed) {\n return Promise.resolve({ value: undefined as unknown as T, done: true });\n }\n return new Promise<IteratorResult<T>>(resolve => this.#resolvers.push(resolve));\n },\n };\n }\n}\n\n/**\n * Run a headless MastraCode turn. Returns an {@link MCRun} handle that is\n * async-iterable over controller events and resolves to a {@link RunMCResult}.\n */\nexport function runMC<TState extends Record<string, unknown>>(options: RunMCOptions<TState>): MCRun {\n const { controller, session, prompt } = options;\n const policy: ResolutionPolicy = options.policy ?? autoApprovePolicy;\n\n const queue = new EventQueue<AgentControllerEvent>();\n const acc: MutableResult = { text: '', toolCalls: [], toolResults: [] };\n\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n let timedOut = false;\n let aborted = false;\n let maxTurnsExceeded = false;\n let assistantTurns = 0;\n let settled = false;\n let unsubscribe: (() => void) | undefined;\n let resolveResult!: (r: RunMCResult) => void;\n\n const result = new Promise<RunMCResult>(resolve => {\n resolveResult = resolve;\n });\n\n function finish(status: RunMCStatus): void {\n if (settled) return;\n settled = true;\n if (timeoutId) clearTimeout(timeoutId);\n unsubscribe?.();\n queue.close();\n resolveResult({\n status,\n text: acc.text,\n finishReason: acc.finishReason,\n usage: acc.usage,\n toolCalls: acc.toolCalls,\n toolResults: acc.toolResults,\n threadId: acc.threadId ?? session.thread.getId() ?? undefined,\n error: acc.error,\n exitCode: exitCodeForStatus(status),\n });\n }\n\n function fail(message: string, name = 'Error'): void {\n if (!acc.error) acc.error = { name, message };\n finish('error');\n }\n\n function abort(): void {\n if (settled) return;\n aborted = true;\n session.abort();\n }\n\n if (options.signal) {\n if (options.signal.aborted) {\n // Defer so the caller can attach iteration / result handlers first.\n queueMicrotask(() => abort());\n } else {\n options.signal.addEventListener('abort', () => abort(), { once: true });\n }\n }\n\n // Kick off the run asynchronously so the MCRun handle is returned synchronously.\n void (async () => {\n if (options.timeoutMs) {\n timeoutId = setTimeout(() => {\n timedOut = true;\n session.abort();\n }, options.timeoutMs);\n }\n\n // --- Config resolution (model / mode / thinking) ---\n try {\n if (options.model) {\n const available = await controller.listAvailableModels();\n const match = available.find(m => m.id === options.model);\n if (!match) return fail(`Unknown model: \"${options.model}\"`);\n if (!match.hasApiKey) {\n const keyHint = match.apiKeyEnvVar ? ` Set ${match.apiKeyEnvVar} to use this model.` : '';\n return fail(`Model \"${options.model}\" has no API key configured.${keyHint}`);\n }\n await session.model.switch({ modelId: options.model });\n } else if (options.mode) {\n const modelId = options.modeDefaults?.[options.mode];\n if (modelId) {\n const available = await controller.listAvailableModels();\n const match = available.find(m => m.id === modelId);\n if (!match) return fail(`Unknown model \"${modelId}\" configured for mode \"${options.mode}\"`);\n if (!match.hasApiKey) {\n const keyHint = match.apiKeyEnvVar ? ` Set ${match.apiKeyEnvVar} to use this model.` : '';\n return fail(`Model \"${modelId}\" (mode: ${options.mode}) has no API key configured.${keyHint}`);\n }\n await session.model.switch({ modelId });\n }\n // No configured model for mode → fall through to default (no failure).\n }\n\n if (options.thinkingLevel) {\n await session.state.set({ thinkingLevel: options.thinkingLevel } as unknown as Partial<TState>);\n }\n } catch (err) {\n return fail(`Failed to resolve run config: ${(err as Error).message}`);\n }\n\n // --- Subscribe ---\n unsubscribe = session.subscribe(event => {\n if (settled) return;\n\n if (event.type === 'tool_approval_required') {\n let decision: 'approve' | 'deny';\n try {\n decision = policy.onToolApproval(event);\n } catch (err) {\n fail(`Resolution policy failed: ${(err as Error).message}`);\n return;\n }\n session.respondToToolApproval({\n decision: decision === 'approve' ? 'approve' : 'decline',\n toolCallId: event.toolCallId,\n });\n queue.push(event);\n return;\n }\n\n if (event.type === 'tool_suspended') {\n let outcome: ReturnType<ResolutionPolicy['onSuspension']>;\n try {\n outcome = policy.onSuspension(event);\n } catch (err) {\n fail(`Resolution policy failed: ${(err as Error).message}`);\n return;\n }\n if ('abort' in outcome) {\n queue.push(event);\n abort();\n return;\n }\n void session.respondToToolSuspension({ toolCallId: event.toolCallId, resumeData: outcome.resumeData });\n queue.push(event);\n return;\n }\n\n aggregate(event, acc);\n queue.push(event);\n\n // Count agentic turns (one assistant response = one turn). When the cap is\n // reached, abort the run; agent_end then resolves as 'max_turns'.\n if (event.type === 'message_end' && event.message.role === 'assistant' && options.maxTurns !== undefined) {\n assistantTurns += 1;\n if (assistantTurns >= options.maxTurns && !maxTurnsExceeded) {\n maxTurnsExceeded = true;\n abort();\n }\n }\n\n if (event.type === 'agent_end') {\n acc.finishReason = event.reason;\n if (timedOut) {\n finish('timeout');\n } else if (event.reason === 'error') {\n finish('error');\n } else if (maxTurnsExceeded && event.reason !== 'complete') {\n // The cap forced an abort while the agent still had work to do.\n finish('max_turns');\n } else if ((event.reason === 'aborted' || aborted) && !maxTurnsExceeded) {\n finish('aborted');\n } else {\n finish('completed');\n }\n }\n });\n\n // --- Resource id ---\n try {\n if (options.resourceId) {\n await controller.setResourceId(session, { resourceId: options.resourceId });\n }\n } catch (err) {\n return fail(`Failed to set resource id: ${(err as Error).message}`);\n }\n\n // --- Thread selection ---\n try {\n const thread = options.thread;\n if (thread?.id) {\n const resolved = await resolveThread(session, thread.id);\n if ('error' in resolved) return fail(resolved.error);\n await session.thread.switch({ threadId: resolved.threadId });\n } else if (thread?.continueLatest) {\n const threads = await session.thread.list();\n if (threads.length > 0) {\n const sorted = [...threads].sort((a, b) => b.updatedAt.getTime() - a.updatedAt.getTime());\n await session.thread.switch({ threadId: sorted[0]!.id });\n }\n }\n } catch (err) {\n return fail(`Failed to select thread: ${(err as Error).message}`);\n }\n\n // --- Clone ---\n if (options.thread?.clone) {\n try {\n await session.thread.clone();\n } catch (err) {\n return fail(`Failed to clone thread: ${(err as Error).message}`);\n }\n }\n\n // --- Title ---\n if (options.title) {\n try {\n await session.thread.rename({ title: options.title });\n } catch (err) {\n return fail(`Failed to set thread title: ${(err as Error).message}`);\n }\n }\n\n // --- Send ---\n try {\n await session.sendMessage({ content: prompt });\n } catch (err) {\n return fail(`Failed to send message: ${(err as Error).message}`);\n }\n })();\n\n return {\n result,\n abort,\n [Symbol.asyncIterator](): AsyncIterator<AgentControllerEvent> {\n return queue[Symbol.asyncIterator]();\n },\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types for the headless / programmatic MastraCode API.
|
|
3
|
+
*
|
|
4
|
+
* These types are consumed by the core runner (`runMC`), the resolution policy,
|
|
5
|
+
* the output formatters, and the CLI adapter. They are intentionally free of any
|
|
6
|
+
* `process.*` access so the core API is usable from CI / Node code.
|
|
7
|
+
*/
|
|
8
|
+
import type { AgentController, AgentControllerEvent, Session } from '@mastra/core/agent-controller';
|
|
9
|
+
export type RunMode = 'build' | 'plan' | 'fast';
|
|
10
|
+
export type ThinkingLevel = 'off' | 'low' | 'medium' | 'high' | 'xhigh';
|
|
11
|
+
export declare const VALID_MODES: readonly ["build", "plan", "fast"];
|
|
12
|
+
export declare const VALID_THINKING_LEVELS: readonly ["off", "low", "medium", "high", "xhigh"];
|
|
13
|
+
/**
|
|
14
|
+
* Named permission modes for non-interactive runs. Maps to a built-in
|
|
15
|
+
* {@link ResolutionPolicy}:
|
|
16
|
+
* - `auto` — approve every tool and auto-resolve suspensions (the default).
|
|
17
|
+
* - `deny` — refuse every tool approval and abort on any suspension.
|
|
18
|
+
*/
|
|
19
|
+
export type PermissionMode = 'auto' | 'deny';
|
|
20
|
+
export declare const VALID_PERMISSION_MODES: readonly ["auto", "deny"];
|
|
21
|
+
/** How `runMC` should resume `tool_approval_required` and `tool_suspended` events. */
|
|
22
|
+
export interface ResolutionPolicy {
|
|
23
|
+
/**
|
|
24
|
+
* Called for every `tool_approval_required` event. Return the decision; the
|
|
25
|
+
* runner forwards it to `session.respondToToolApproval`.
|
|
26
|
+
*/
|
|
27
|
+
onToolApproval(event: Extract<AgentControllerEvent, {
|
|
28
|
+
type: 'tool_approval_required';
|
|
29
|
+
}>): 'approve' | 'deny';
|
|
30
|
+
/**
|
|
31
|
+
* Called for every `tool_suspended` event. Return `resumeData` to resume the
|
|
32
|
+
* tool, or `{ abort: true }` to abort the run.
|
|
33
|
+
*/
|
|
34
|
+
onSuspension(event: Extract<AgentControllerEvent, {
|
|
35
|
+
type: 'tool_suspended';
|
|
36
|
+
}>): {
|
|
37
|
+
resumeData: unknown;
|
|
38
|
+
} | {
|
|
39
|
+
abort: true;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/** Thread selection / mutation options resolved up front by `runMC`. */
|
|
43
|
+
export interface RunMCThreadOptions {
|
|
44
|
+
/** Resume a specific thread by its exact id. */
|
|
45
|
+
id?: string;
|
|
46
|
+
/** Resume the most recently updated thread instead of creating a new one. */
|
|
47
|
+
continueLatest?: boolean;
|
|
48
|
+
/** Clone the resolved (or current) thread before running — work on a copy. */
|
|
49
|
+
clone?: boolean;
|
|
50
|
+
}
|
|
51
|
+
export interface RunMCOptions<TState extends Record<string, unknown> = Record<string, unknown>> {
|
|
52
|
+
/** Controller built via `createMastraCode(...)`. */
|
|
53
|
+
controller: AgentController<TState>;
|
|
54
|
+
/** Session built via `createMastraCode(...)`. */
|
|
55
|
+
session: Session<TState>;
|
|
56
|
+
/** The task to run. */
|
|
57
|
+
prompt: string;
|
|
58
|
+
/** Explicit model id override. Takes precedence over `mode`. */
|
|
59
|
+
model?: string;
|
|
60
|
+
/** Execution mode; resolves a model from `modeDefaults` when `model` is absent. */
|
|
61
|
+
mode?: RunMode;
|
|
62
|
+
/** Per-mode default model ids (resolved from settings at startup). */
|
|
63
|
+
modeDefaults?: Record<string, string>;
|
|
64
|
+
/** Thinking-effort level. */
|
|
65
|
+
thinkingLevel?: ThinkingLevel;
|
|
66
|
+
/** Thread selection / mutation. */
|
|
67
|
+
thread?: RunMCThreadOptions;
|
|
68
|
+
/** Resource id for thread scoping. */
|
|
69
|
+
resourceId?: string;
|
|
70
|
+
/** Set or rename the thread title before running. */
|
|
71
|
+
title?: string;
|
|
72
|
+
/** Abort with `status: 'timeout'` (exit code 2) if not complete within this many ms. */
|
|
73
|
+
timeoutMs?: number;
|
|
74
|
+
/**
|
|
75
|
+
* Maximum number of agentic turns (assistant responses). When the limit is
|
|
76
|
+
* reached the run aborts with `status: 'max_turns'` (exit code 1). No limit
|
|
77
|
+
* by default.
|
|
78
|
+
*/
|
|
79
|
+
maxTurns?: number;
|
|
80
|
+
/** How approvals / suspensions are resolved. Defaults to {@link autoApprovePolicy}. */
|
|
81
|
+
policy?: ResolutionPolicy;
|
|
82
|
+
/** External abort signal; aborting it aborts the run. */
|
|
83
|
+
signal?: AbortSignal;
|
|
84
|
+
}
|
|
85
|
+
export type RunMCStatus = 'completed' | 'error' | 'aborted' | 'timeout' | 'max_turns';
|
|
86
|
+
export interface RunMCUsage {
|
|
87
|
+
inputTokens?: number;
|
|
88
|
+
outputTokens?: number;
|
|
89
|
+
totalTokens?: number;
|
|
90
|
+
}
|
|
91
|
+
export interface RunMCToolCall {
|
|
92
|
+
id: string;
|
|
93
|
+
name: string;
|
|
94
|
+
args: unknown;
|
|
95
|
+
}
|
|
96
|
+
export interface RunMCToolResult {
|
|
97
|
+
id: string;
|
|
98
|
+
name: string;
|
|
99
|
+
result: unknown;
|
|
100
|
+
isError: boolean;
|
|
101
|
+
}
|
|
102
|
+
export interface RunMCError {
|
|
103
|
+
name: string;
|
|
104
|
+
message: string;
|
|
105
|
+
stack?: string;
|
|
106
|
+
}
|
|
107
|
+
export interface RunMCResult {
|
|
108
|
+
status: RunMCStatus;
|
|
109
|
+
/** Aggregated assistant text across all message_end events. */
|
|
110
|
+
text: string;
|
|
111
|
+
/** Underlying finish reason from `agent_end`, when the run finished normally. */
|
|
112
|
+
finishReason?: string;
|
|
113
|
+
usage?: RunMCUsage;
|
|
114
|
+
toolCalls: RunMCToolCall[];
|
|
115
|
+
toolResults: RunMCToolResult[];
|
|
116
|
+
threadId?: string;
|
|
117
|
+
error?: RunMCError;
|
|
118
|
+
/** 0 success, 1 error/aborted/max_turns, 2 timeout. */
|
|
119
|
+
exitCode: number;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* A handle to an in-flight `runMC` run. It is async-iterable over controller
|
|
123
|
+
* events and also resolves to a final {@link RunMCResult} via `result`.
|
|
124
|
+
*
|
|
125
|
+
* Both `for await (const e of run)` and `await run.result` work on the same run;
|
|
126
|
+
* awaiting `result` without iterating still drains events internally.
|
|
127
|
+
*/
|
|
128
|
+
export interface MCRun extends AsyncIterable<AgentControllerEvent> {
|
|
129
|
+
/** Resolves once the run completes, times out, errors, or is aborted. */
|
|
130
|
+
result: Promise<RunMCResult>;
|
|
131
|
+
/** Abort the in-flight run. */
|
|
132
|
+
abort(): void;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/headless/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const VALID_MODES = ["build", "plan", "fast"];
|
|
2
|
+
const VALID_THINKING_LEVELS = ["off", "low", "medium", "high", "xhigh"];
|
|
3
|
+
const VALID_PERMISSION_MODES = ["auto", "deny"];
|
|
4
|
+
export {
|
|
5
|
+
VALID_MODES,
|
|
6
|
+
VALID_PERMISSION_MODES,
|
|
7
|
+
VALID_THINKING_LEVELS
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/headless/types.ts"],"sourcesContent":["/**\n * Shared types for the headless / programmatic MastraCode API.\n *\n * These types are consumed by the core runner (`runMC`), the resolution policy,\n * the output formatters, and the CLI adapter. They are intentionally free of any\n * `process.*` access so the core API is usable from CI / Node code.\n */\nimport type { AgentController, AgentControllerEvent, Session } from '@mastra/core/agent-controller';\n\nexport type RunMode = 'build' | 'plan' | 'fast';\nexport type ThinkingLevel = 'off' | 'low' | 'medium' | 'high' | 'xhigh';\n\nexport const VALID_MODES = ['build', 'plan', 'fast'] as const;\nexport const VALID_THINKING_LEVELS = ['off', 'low', 'medium', 'high', 'xhigh'] as const;\n\n/**\n * Named permission modes for non-interactive runs. Maps to a built-in\n * {@link ResolutionPolicy}:\n * - `auto` — approve every tool and auto-resolve suspensions (the default).\n * - `deny` — refuse every tool approval and abort on any suspension.\n */\nexport type PermissionMode = 'auto' | 'deny';\nexport const VALID_PERMISSION_MODES = ['auto', 'deny'] as const;\n\n/** How `runMC` should resume `tool_approval_required` and `tool_suspended` events. */\nexport interface ResolutionPolicy {\n /**\n * Called for every `tool_approval_required` event. Return the decision; the\n * runner forwards it to `session.respondToToolApproval`.\n */\n onToolApproval(event: Extract<AgentControllerEvent, { type: 'tool_approval_required' }>): 'approve' | 'deny';\n /**\n * Called for every `tool_suspended` event. Return `resumeData` to resume the\n * tool, or `{ abort: true }` to abort the run.\n */\n onSuspension(\n event: Extract<AgentControllerEvent, { type: 'tool_suspended' }>,\n ): { resumeData: unknown } | { abort: true };\n}\n\n/** Thread selection / mutation options resolved up front by `runMC`. */\nexport interface RunMCThreadOptions {\n /** Resume a specific thread by its exact id. */\n id?: string;\n /** Resume the most recently updated thread instead of creating a new one. */\n continueLatest?: boolean;\n /** Clone the resolved (or current) thread before running — work on a copy. */\n clone?: boolean;\n}\n\nexport interface RunMCOptions<TState extends Record<string, unknown> = Record<string, unknown>> {\n /** Controller built via `createMastraCode(...)`. */\n controller: AgentController<TState>;\n /** Session built via `createMastraCode(...)`. */\n session: Session<TState>;\n /** The task to run. */\n prompt: string;\n\n /** Explicit model id override. Takes precedence over `mode`. */\n model?: string;\n /** Execution mode; resolves a model from `modeDefaults` when `model` is absent. */\n mode?: RunMode;\n /** Per-mode default model ids (resolved from settings at startup). */\n modeDefaults?: Record<string, string>;\n /** Thinking-effort level. */\n thinkingLevel?: ThinkingLevel;\n /** Thread selection / mutation. */\n thread?: RunMCThreadOptions;\n /** Resource id for thread scoping. */\n resourceId?: string;\n /** Set or rename the thread title before running. */\n title?: string;\n /** Abort with `status: 'timeout'` (exit code 2) if not complete within this many ms. */\n timeoutMs?: number;\n /**\n * Maximum number of agentic turns (assistant responses). When the limit is\n * reached the run aborts with `status: 'max_turns'` (exit code 1). No limit\n * by default.\n */\n maxTurns?: number;\n /** How approvals / suspensions are resolved. Defaults to {@link autoApprovePolicy}. */\n policy?: ResolutionPolicy;\n /** External abort signal; aborting it aborts the run. */\n signal?: AbortSignal;\n}\n\nexport type RunMCStatus = 'completed' | 'error' | 'aborted' | 'timeout' | 'max_turns';\n\nexport interface RunMCUsage {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n}\n\nexport interface RunMCToolCall {\n id: string;\n name: string;\n args: unknown;\n}\n\nexport interface RunMCToolResult {\n id: string;\n name: string;\n result: unknown;\n isError: boolean;\n}\n\nexport interface RunMCError {\n name: string;\n message: string;\n stack?: string;\n}\n\nexport interface RunMCResult {\n status: RunMCStatus;\n /** Aggregated assistant text across all message_end events. */\n text: string;\n /** Underlying finish reason from `agent_end`, when the run finished normally. */\n finishReason?: string;\n usage?: RunMCUsage;\n toolCalls: RunMCToolCall[];\n toolResults: RunMCToolResult[];\n threadId?: string;\n error?: RunMCError;\n /** 0 success, 1 error/aborted/max_turns, 2 timeout. */\n exitCode: number;\n}\n\n/**\n * A handle to an in-flight `runMC` run. It is async-iterable over controller\n * events and also resolves to a final {@link RunMCResult} via `result`.\n *\n * Both `for await (const e of run)` and `await run.result` work on the same run;\n * awaiting `result` without iterating still drains events internally.\n */\nexport interface MCRun extends AsyncIterable<AgentControllerEvent> {\n /** Resolves once the run completes, times out, errors, or is aborted. */\n result: Promise<RunMCResult>;\n /** Abort the in-flight run. */\n abort(): void;\n}\n"],"mappings":"AAYO,MAAM,cAAc,CAAC,SAAS,QAAQ,MAAM;AAC5C,MAAM,wBAAwB,CAAC,OAAO,OAAO,UAAU,QAAQ,OAAO;AAStE,MAAM,yBAAyB,CAAC,QAAQ,MAAM;","names":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook configuration loading from filesystem.
|
|
3
|
+
* Loads from global (~/.mastracode/hooks.json) and project (.mastracode/hooks.json).
|
|
4
|
+
* Global hooks run first, project hooks append.
|
|
5
|
+
*/
|
|
6
|
+
import type { HooksConfig, HookEventName } from './types.js';
|
|
7
|
+
export declare const VALID_EVENTS: HookEventName[];
|
|
8
|
+
export declare function loadHooksConfig(projectDir: string, configDirName?: string, homeDir?: string): HooksConfig;
|
|
9
|
+
export declare function getProjectHooksPath(projectDir: string, configDirName?: string): string;
|
|
10
|
+
export declare function getGlobalHooksPath(configDirName?: string, homeDir?: string): string;
|
|
11
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/hooks/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAkB,aAAa,EAAE,MAAM,YAAY,CAAC;AAE7E,eAAO,MAAM,YAAY,EAAE,aAAa,EAevC,CAAC;AAEF,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,SAAqB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAQrH;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,SAAqB,GAAG,MAAM,CAElG;AAED,wBAAgB,kBAAkB,CAAC,aAAa,SAAqB,EAAE,OAAO,SAAe,GAAG,MAAM,CAErG"}
|