@mastra/code-sdk 0.0.0-aggregate-trace-20261015182851
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/LICENSE.md +32 -0
- package/README.md +284 -0
- package/dist/acp/agent.d.ts +48 -0
- package/dist/acp/agent.d.ts.map +1 -0
- package/dist/acp/agent.js +416 -0
- package/dist/acp/agent.js.map +1 -0
- package/dist/acp/errors.d.ts +3 -0
- package/dist/acp/errors.d.ts.map +1 -0
- package/dist/acp/errors.js +14 -0
- package/dist/acp/errors.js.map +1 -0
- package/dist/acp/event-mapper.d.ts +28 -0
- package/dist/acp/event-mapper.d.ts.map +1 -0
- package/dist/acp/event-mapper.js +279 -0
- package/dist/acp/event-mapper.js.map +1 -0
- package/dist/acp/index.d.ts +9 -0
- package/dist/acp/index.d.ts.map +1 -0
- package/dist/acp/index.js +24 -0
- package/dist/acp/index.js.map +1 -0
- package/dist/acp/runtime.d.ts +5 -0
- package/dist/acp/runtime.d.ts.map +1 -0
- package/dist/acp/runtime.js +91 -0
- package/dist/acp/runtime.js.map +1 -0
- package/dist/acp/server.d.ts +4 -0
- package/dist/acp/server.d.ts.map +1 -0
- package/dist/acp/server.js +38 -0
- package/dist/acp/server.js.map +1 -0
- package/dist/acp/skills.d.ts +6 -0
- package/dist/acp/skills.d.ts.map +1 -0
- package/dist/acp/skills.js +33 -0
- package/dist/acp/skills.js.map +1 -0
- package/dist/acp.d.ts +2 -0
- package/dist/acp.d.ts.map +1 -0
- package/dist/acp.js +2 -0
- package/dist/agent-connections/messaging-processor.d.ts +17 -0
- package/dist/agent-connections/messaging-processor.d.ts.map +1 -0
- package/dist/agent-connections/messaging-processor.js +134 -0
- package/dist/agent-connections/messaging-processor.js.map +1 -0
- package/dist/agent-connections/ownership.d.ts +24 -0
- package/dist/agent-connections/ownership.d.ts.map +1 -0
- package/dist/agent-connections/ownership.js +99 -0
- package/dist/agent-connections/ownership.js.map +1 -0
- package/dist/agent-connections/registry.d.ts +20 -0
- package/dist/agent-connections/registry.d.ts.map +1 -0
- package/dist/agent-connections/registry.js +170 -0
- package/dist/agent-connections/registry.js.map +1 -0
- package/dist/agent-connections/session-advertisement.d.ts +27 -0
- package/dist/agent-connections/session-advertisement.d.ts.map +1 -0
- package/dist/agent-connections/session-advertisement.js +89 -0
- package/dist/agent-connections/session-advertisement.js.map +1 -0
- package/dist/agent-connections/signal-provider.d.ts +141 -0
- package/dist/agent-connections/signal-provider.d.ts.map +1 -0
- package/dist/agent-connections/signal-provider.js +38 -0
- package/dist/agent-connections/signal-provider.js.map +1 -0
- package/dist/agent-connections/state-processor.d.ts +23 -0
- package/dist/agent-connections/state-processor.d.ts.map +1 -0
- package/dist/agent-connections/state-processor.js +273 -0
- package/dist/agent-connections/state-processor.js.map +1 -0
- package/dist/agent-connections/thread-state.d.ts +41 -0
- package/dist/agent-connections/thread-state.d.ts.map +1 -0
- package/dist/agent-connections/thread-state.js +160 -0
- package/dist/agent-connections/thread-state.js.map +1 -0
- package/dist/agent-connections/tools.d.ts +133 -0
- package/dist/agent-connections/tools.d.ts.map +1 -0
- package/dist/agent-connections/tools.js +552 -0
- package/dist/agent-connections/tools.js.map +1 -0
- package/dist/agent-connections/types.d.ts +99 -0
- package/dist/agent-connections/types.d.ts.map +1 -0
- package/dist/agent-connections/types.js +7 -0
- package/dist/agent-connections/types.js.map +1 -0
- package/dist/agent-connections/untrusted-text.d.ts +5 -0
- package/dist/agent-connections/untrusted-text.d.ts.map +1 -0
- package/dist/agent-connections/untrusted-text.js +22 -0
- package/dist/agent-connections/untrusted-text.js.map +1 -0
- package/dist/agents/background-completion-events.d.ts +16 -0
- package/dist/agents/background-completion-events.d.ts.map +1 -0
- package/dist/agents/background-completion-events.js +19 -0
- package/dist/agents/background-completion-events.js.map +1 -0
- package/dist/agents/background-completion.d.ts +9 -0
- package/dist/agents/background-completion.d.ts.map +1 -0
- package/dist/agents/background-completion.js +59 -0
- package/dist/agents/background-completion.js.map +1 -0
- package/dist/agents/context-audit.d.ts +84 -0
- package/dist/agents/context-audit.d.ts.map +1 -0
- package/dist/agents/context-audit.js +118 -0
- package/dist/agents/context-audit.js.map +1 -0
- package/dist/agents/credential-resolver.d.ts +67 -0
- package/dist/agents/credential-resolver.d.ts.map +1 -0
- package/dist/agents/credential-resolver.js +136 -0
- package/dist/agents/credential-resolver.js.map +1 -0
- package/dist/agents/custom-provider-source.d.ts +35 -0
- package/dist/agents/custom-provider-source.d.ts.map +1 -0
- package/dist/agents/custom-provider-source.js +25 -0
- package/dist/agents/custom-provider-source.js.map +1 -0
- package/dist/agents/instructions.d.ts +40 -0
- package/dist/agents/instructions.d.ts.map +1 -0
- package/dist/agents/instructions.js +63 -0
- package/dist/agents/instructions.js.map +1 -0
- package/dist/agents/mastracode-gateway.d.ts +76 -0
- package/dist/agents/mastracode-gateway.d.ts.map +1 -0
- package/dist/agents/mastracode-gateway.js +434 -0
- package/dist/agents/mastracode-gateway.js.map +1 -0
- package/dist/agents/memory.d.ts +39 -0
- package/dist/agents/memory.d.ts.map +1 -0
- package/dist/agents/memory.js +266 -0
- package/dist/agents/memory.js.map +1 -0
- package/dist/agents/model.d.ts +123 -0
- package/dist/agents/model.d.ts.map +1 -0
- package/dist/agents/model.js +295 -0
- package/dist/agents/model.js.map +1 -0
- package/dist/agents/modes/build.d.ts +12 -0
- package/dist/agents/modes/build.d.ts.map +1 -0
- package/dist/agents/modes/build.js +36 -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 +28 -0
- package/dist/agents/modes/explore.js.map +1 -0
- package/dist/agents/modes/plan.d.ts +8 -0
- package/dist/agents/modes/plan.d.ts.map +1 -0
- package/dist/agents/modes/plan.js +46 -0
- package/dist/agents/modes/plan.js.map +1 -0
- package/dist/agents/prompts/agent-instructions.d.ts +99 -0
- package/dist/agents/prompts/agent-instructions.d.ts.map +1 -0
- package/dist/agents/prompts/agent-instructions.js +275 -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 +76 -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 +26 -0
- package/dist/agents/prompts/fast.js.map +1 -0
- package/dist/agents/prompts/index.d.ts +54 -0
- package/dist/agents/prompts/index.d.ts.map +1 -0
- package/dist/agents/prompts/index.js +127 -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 +23 -0
- package/dist/agents/prompts/model.js.map +1 -0
- package/dist/agents/prompts/plan.d.ts +8 -0
- package/dist/agents/prompts/plan.d.ts.map +1 -0
- package/dist/agents/prompts/plan.js +129 -0
- package/dist/agents/prompts/plan.js.map +1 -0
- package/dist/agents/prompts/tool-guidance.d.ts +18 -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 +151 -0
- package/dist/agents/sandbox-filesystem.d.ts.map +1 -0
- package/dist/agents/sandbox-filesystem.js +581 -0
- package/dist/agents/sandbox-filesystem.js.map +1 -0
- package/dist/agents/subagents/execute.d.ts +3 -0
- package/dist/agents/subagents/execute.d.ts.map +1 -0
- package/dist/agents/subagents/execute.js +27 -0
- package/dist/agents/subagents/execute.js.map +1 -0
- package/dist/agents/subagents/explore.d.ts +3 -0
- package/dist/agents/subagents/explore.d.ts.map +1 -0
- package/dist/agents/subagents/explore.js +18 -0
- package/dist/agents/subagents/explore.js.map +1 -0
- package/dist/agents/subagents/plan.d.ts +3 -0
- package/dist/agents/subagents/plan.d.ts.map +1 -0
- package/dist/agents/subagents/plan.js +18 -0
- package/dist/agents/subagents/plan.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 +107 -0
- package/dist/agents/thread-caveman-state.js.map +1 -0
- package/dist/agents/tool-availability.d.ts +12 -0
- package/dist/agents/tool-availability.d.ts.map +1 -0
- package/dist/agents/tool-availability.js +129 -0
- package/dist/agents/tool-availability.js.map +1 -0
- package/dist/agents/tools.d.ts +37 -0
- package/dist/agents/tools.d.ts.map +1 -0
- package/dist/agents/tools.js +131 -0
- package/dist/agents/tools.js.map +1 -0
- package/dist/agents/workflow-builder-agent.d.ts +2 -0
- package/dist/agents/workflow-builder-agent.d.ts.map +1 -0
- package/dist/agents/workflow-builder-agent.js +82 -0
- package/dist/agents/workflow-builder-agent.js.map +1 -0
- package/dist/agents/workspace.d.ts +33 -0
- package/dist/agents/workspace.d.ts.map +1 -0
- package/dist/agents/workspace.js +208 -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 +162 -0
- package/dist/analytics.js.map +1 -0
- package/dist/auth/account-rotation-processor.d.ts +182 -0
- package/dist/auth/account-rotation-processor.d.ts.map +1 -0
- package/dist/auth/account-rotation-processor.js +609 -0
- package/dist/auth/account-rotation-processor.js.map +1 -0
- package/dist/auth/account-routing-context.d.ts +13 -0
- package/dist/auth/account-routing-context.d.ts.map +1 -0
- package/dist/auth/account-routing-context.js +41 -0
- package/dist/auth/account-routing-context.js.map +1 -0
- package/dist/auth/authorization-input.d.ts +16 -0
- package/dist/auth/authorization-input.d.ts.map +1 -0
- package/dist/auth/authorization-input.js +42 -0
- package/dist/auth/authorization-input.js.map +1 -0
- package/dist/auth/device-code.d.ts +93 -0
- package/dist/auth/device-code.d.ts.map +1 -0
- package/dist/auth/device-code.js +129 -0
- package/dist/auth/device-code.js.map +1 -0
- package/dist/auth/index.d.ts +13 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +9 -0
- package/dist/auth/pkce.d.ts +13 -0
- package/dist/auth/pkce.d.ts.map +1 -0
- package/dist/auth/pkce.js +32 -0
- package/dist/auth/pkce.js.map +1 -0
- package/dist/auth/provider-auth-error.d.ts +12 -0
- package/dist/auth/provider-auth-error.d.ts.map +1 -0
- package/dist/auth/provider-auth-error.js +16 -0
- package/dist/auth/provider-auth-error.js.map +1 -0
- package/dist/auth/providers/anthropic.d.ts +40 -0
- package/dist/auth/providers/anthropic.d.ts.map +1 -0
- package/dist/auth/providers/anthropic.js +120 -0
- package/dist/auth/providers/anthropic.js.map +1 -0
- package/dist/auth/providers/github-copilot.d.ts +154 -0
- package/dist/auth/providers/github-copilot.d.ts.map +1 -0
- package/dist/auth/providers/github-copilot.js +362 -0
- package/dist/auth/providers/github-copilot.js.map +1 -0
- package/dist/auth/providers/kimi-coding.d.ts +38 -0
- package/dist/auth/providers/kimi-coding.d.ts.map +1 -0
- package/dist/auth/providers/kimi-coding.js +228 -0
- package/dist/auth/providers/kimi-coding.js.map +1 -0
- package/dist/auth/providers/openai-codex.d.ts +141 -0
- package/dist/auth/providers/openai-codex.d.ts.map +1 -0
- package/dist/auth/providers/openai-codex.js +533 -0
- package/dist/auth/providers/openai-codex.js.map +1 -0
- package/dist/auth/providers/xai.d.ts +64 -0
- package/dist/auth/providers/xai.d.ts.map +1 -0
- package/dist/auth/providers/xai.js +226 -0
- package/dist/auth/providers/xai.js.map +1 -0
- package/dist/auth/storage.d.ts +214 -0
- package/dist/auth/storage.d.ts.map +1 -0
- package/dist/auth/storage.js +774 -0
- package/dist/auth/storage.js.map +1 -0
- package/dist/auth/types.d.ts +164 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +1 -0
- package/dist/clipboard/index.d.ts +26 -0
- package/dist/clipboard/index.d.ts.map +1 -0
- package/dist/clipboard/index.js +226 -0
- package/dist/clipboard/index.js.map +1 -0
- package/dist/constants.d.ts +12 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +20 -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 +22 -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 +161 -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 +5 -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 +73 -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 +259 -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 +60 -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 +3 -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 +347 -0
- package/dist/evals/scorers/outcome.js.map +1 -0
- package/dist/experimental-agent.d.ts +11 -0
- package/dist/experimental-agent.d.ts.map +1 -0
- package/dist/experimental-agent.js +36 -0
- package/dist/experimental-agent.js.map +1 -0
- package/dist/goal-manager.d.ts +114 -0
- package/dist/goal-manager.d.ts.map +1 -0
- package/dist/goal-manager.js +354 -0
- package/dist/goal-manager.js.map +1 -0
- package/dist/goal-signal.d.ts +14 -0
- package/dist/goal-signal.d.ts.map +1 -0
- package/dist/goal-signal.js +17 -0
- package/dist/goal-signal.js.map +1 -0
- package/dist/headless/cli.d.ts +48 -0
- package/dist/headless/cli.d.ts.map +1 -0
- package/dist/headless/cli.js +239 -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 +203 -0
- package/dist/headless/flags.js.map +1 -0
- package/dist/headless/format.d.ts +39 -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 +6 -0
- package/dist/headless/policy.d.ts +17 -0
- package/dist/headless/policy.d.ts.map +1 -0
- package/dist/headless/policy.js +42 -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 +408 -0
- package/dist/headless/run-mc.js.map +1 -0
- package/dist/headless/types.d.ts +174 -0
- package/dist/headless/types.d.ts.map +1 -0
- package/dist/headless/types.js +19 -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 +80 -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 +129 -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 +5 -0
- package/dist/hooks/manager.d.ts +54 -0
- package/dist/hooks/manager.d.ts.map +1 -0
- package/dist/hooks/manager.js +241 -0
- package/dist/hooks/manager.js.map +1 -0
- package/dist/hooks/types.d.ts +172 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/types.js +8 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/index.d.ts +463 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1305 -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 +21 -0
- package/dist/ipc/ipc-reporter.js.map +1 -0
- package/dist/knowledge-inspector.d.ts +123 -0
- package/dist/knowledge-inspector.d.ts.map +1 -0
- package/dist/knowledge-inspector.js +516 -0
- package/dist/knowledge-inspector.js.map +1 -0
- package/dist/knowledge-scope.d.ts +35 -0
- package/dist/knowledge-scope.d.ts.map +1 -0
- package/dist/knowledge-scope.js +47 -0
- package/dist/knowledge-scope.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 +251 -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 +4 -0
- package/dist/lsp/language.d.ts +9 -0
- package/dist/lsp/language.d.ts.map +1 -0
- package/dist/lsp/language.js +44 -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 +82 -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 +159 -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 +55 -0
- package/dist/lsp/workspace.js.map +1 -0
- package/dist/mcp/config.d.ts +77 -0
- package/dist/mcp/config.d.ts.map +1 -0
- package/dist/mcp/config.js +316 -0
- package/dist/mcp/config.js.map +1 -0
- package/dist/mcp/index.d.ts +6 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +3 -0
- package/dist/mcp/manager.d.ts +102 -0
- package/dist/mcp/manager.d.ts.map +1 -0
- package/dist/mcp/manager.js +650 -0
- package/dist/mcp/manager.js.map +1 -0
- package/dist/mcp/state.d.ts +35 -0
- package/dist/mcp/state.d.ts.map +1 -0
- package/dist/mcp/state.js +97 -0
- package/dist/mcp/state.js.map +1 -0
- package/dist/mcp/types.d.ts +139 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +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 +30 -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 +3 -0
- package/dist/onboarding/om-settings.d.ts +47 -0
- package/dist/onboarding/om-settings.d.ts.map +1 -0
- package/dist/onboarding/om-settings.js +83 -0
- package/dist/onboarding/om-settings.js.map +1 -0
- package/dist/onboarding/pack-activation.d.ts +52 -0
- package/dist/onboarding/pack-activation.d.ts.map +1 -0
- package/dist/onboarding/pack-activation.js +108 -0
- package/dist/onboarding/pack-activation.js.map +1 -0
- package/dist/onboarding/packs.d.ts +102 -0
- package/dist/onboarding/packs.d.ts.map +1 -0
- package/dist/onboarding/packs.js +278 -0
- package/dist/onboarding/packs.js.map +1 -0
- package/dist/onboarding/settings.d.ts +538 -0
- package/dist/onboarding/settings.d.ts.map +1 -0
- package/dist/onboarding/settings.js +1060 -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 +142 -0
- package/dist/permissions.js.map +1 -0
- package/dist/plugin.d.ts +156 -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/dependencies.d.ts +9 -0
- package/dist/plugins/dependencies.d.ts.map +1 -0
- package/dist/plugins/dependencies.js +87 -0
- package/dist/plugins/dependencies.js.map +1 -0
- package/dist/plugins/install.d.ts +21 -0
- package/dist/plugins/install.d.ts.map +1 -0
- package/dist/plugins/install.js +190 -0
- package/dist/plugins/install.js.map +1 -0
- package/dist/plugins/loader.d.ts +19 -0
- package/dist/plugins/loader.d.ts.map +1 -0
- package/dist/plugins/loader.js +260 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/manager.d.ts +98 -0
- package/dist/plugins/manager.d.ts.map +1 -0
- package/dist/plugins/manager.js +456 -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 +50 -0
- package/dist/plugins/manifest.js.map +1 -0
- package/dist/plugins/package-link.d.ts +3 -0
- package/dist/plugins/package-link.d.ts.map +1 -0
- package/dist/plugins/package-link.js +61 -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 +25 -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 +112 -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 +116 -0
- package/dist/plugins/scaffold.js.map +1 -0
- package/dist/plugins/signal-lane.d.ts +58 -0
- package/dist/plugins/signal-lane.d.ts.map +1 -0
- package/dist/plugins/signal-lane.js +166 -0
- package/dist/plugins/signal-lane.js.map +1 -0
- package/dist/plugins/types.d.ts +81 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +1 -0
- package/dist/process-memory-diagnostics.d.ts +135 -0
- package/dist/process-memory-diagnostics.d.ts.map +1 -0
- package/dist/process-memory-diagnostics.js +499 -0
- package/dist/process-memory-diagnostics.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 +54 -0
- package/dist/processors/plan-rejection-abort.js.map +1 -0
- package/dist/providers/amazon-bedrock-gateway.d.ts +47 -0
- package/dist/providers/amazon-bedrock-gateway.d.ts.map +1 -0
- package/dist/providers/amazon-bedrock-gateway.js +144 -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 +102 -0
- package/dist/providers/amazon-bedrock.js.map +1 -0
- package/dist/providers/anthropic-prompt-cache.d.ts +19 -0
- package/dist/providers/anthropic-prompt-cache.d.ts.map +1 -0
- package/dist/providers/anthropic-prompt-cache.js +11 -0
- package/dist/providers/anthropic-prompt-cache.js.map +1 -0
- package/dist/providers/anthropic-thinking.d.ts +5 -0
- package/dist/providers/anthropic-thinking.d.ts.map +1 -0
- package/dist/providers/anthropic-thinking.js +25 -0
- package/dist/providers/anthropic-thinking.js.map +1 -0
- package/dist/providers/claude-max.d.ts +67 -0
- package/dist/providers/claude-max.d.ts.map +1 -0
- package/dist/providers/claude-max.js +226 -0
- package/dist/providers/claude-max.js.map +1 -0
- package/dist/providers/github-copilot-gateway.d.ts +35 -0
- package/dist/providers/github-copilot-gateway.d.ts.map +1 -0
- package/dist/providers/github-copilot-gateway.js +61 -0
- package/dist/providers/github-copilot-gateway.js.map +1 -0
- package/dist/providers/github-copilot.d.ts +60 -0
- package/dist/providers/github-copilot.d.ts.map +1 -0
- package/dist/providers/github-copilot.js +318 -0
- package/dist/providers/github-copilot.js.map +1 -0
- package/dist/providers/google-thinking.d.ts +31 -0
- package/dist/providers/google-thinking.d.ts.map +1 -0
- package/dist/providers/google-thinking.js +67 -0
- package/dist/providers/google-thinking.js.map +1 -0
- package/dist/providers/kimi-coding.d.ts +14 -0
- package/dist/providers/kimi-coding.d.ts.map +1 -0
- package/dist/providers/kimi-coding.js +78 -0
- package/dist/providers/kimi-coding.js.map +1 -0
- package/dist/providers/model-ids.d.ts +30 -0
- package/dist/providers/model-ids.d.ts.map +1 -0
- package/dist/providers/model-ids.js +79 -0
- package/dist/providers/model-ids.js.map +1 -0
- package/dist/providers/openai-codex.d.ts +84 -0
- package/dist/providers/openai-codex.d.ts.map +1 -0
- package/dist/providers/openai-codex.js +347 -0
- package/dist/providers/openai-codex.js.map +1 -0
- package/dist/providers/provider-thinking.d.ts +23 -0
- package/dist/providers/provider-thinking.d.ts.map +1 -0
- package/dist/providers/provider-thinking.js +64 -0
- package/dist/providers/provider-thinking.js.map +1 -0
- package/dist/providers/thinking-request.d.ts +14 -0
- package/dist/providers/thinking-request.d.ts.map +1 -0
- package/dist/providers/thinking-request.js +90 -0
- package/dist/providers/thinking-request.js.map +1 -0
- package/dist/providers/xai.d.ts +33 -0
- package/dist/providers/xai.d.ts.map +1 -0
- package/dist/providers/xai.js +71 -0
- package/dist/providers/xai.js.map +1 -0
- package/dist/schedules/index.d.ts +10 -0
- package/dist/schedules/index.d.ts.map +1 -0
- package/dist/schedules/index.js +6 -0
- package/dist/schedules/interval.d.ts +49 -0
- package/dist/schedules/interval.d.ts.map +1 -0
- package/dist/schedules/interval.js +215 -0
- package/dist/schedules/interval.js.map +1 -0
- package/dist/schedules/prompt.d.ts +36 -0
- package/dist/schedules/prompt.d.ts.map +1 -0
- package/dist/schedules/prompt.js +39 -0
- package/dist/schedules/prompt.js.map +1 -0
- package/dist/schedules/run-script.d.ts +8 -0
- package/dist/schedules/run-script.d.ts.map +1 -0
- package/dist/schedules/run-script.js +83 -0
- package/dist/schedules/run-script.js.map +1 -0
- package/dist/schedules/scheduler.d.ts +101 -0
- package/dist/schedules/scheduler.d.ts.map +1 -0
- package/dist/schedules/scheduler.js +169 -0
- package/dist/schedules/scheduler.js.map +1 -0
- package/dist/schedules/tools.d.ts +57 -0
- package/dist/schedules/tools.d.ts.map +1 -0
- package/dist/schedules/tools.js +220 -0
- package/dist/schedules/tools.js.map +1 -0
- package/dist/schema.d.ts +499 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +134 -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 +21 -0
- package/dist/theme-palette.js.map +1 -0
- package/dist/thinking-catalog.d.ts +4 -0
- package/dist/thinking-catalog.d.ts.map +1 -0
- package/dist/thinking-catalog.js +13 -0
- package/dist/thinking-catalog.js.map +1 -0
- package/dist/thinking.d.ts +37 -0
- package/dist/thinking.d.ts.map +1 -0
- package/dist/thinking.js +137 -0
- package/dist/thinking.js.map +1 -0
- package/dist/tool-names.d.ts +77 -0
- package/dist/tool-names.d.ts.map +1 -0
- package/dist/tool-names.js +56 -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 +3 -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 +80 -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 +32 -0
- package/dist/tools/utils.js.map +1 -0
- package/dist/tools/web-search.d.ts +114 -0
- package/dist/tools/web-search.d.ts.map +1 -0
- package/dist/tools/web-search.js +155 -0
- package/dist/tools/web-search.js.map +1 -0
- package/dist/tools/workflows/create-workflow.d.ts +7 -0
- package/dist/tools/workflows/create-workflow.d.ts.map +1 -0
- package/dist/tools/workflows/create-workflow.js +81 -0
- package/dist/tools/workflows/create-workflow.js.map +1 -0
- package/dist/tools/workflows/delete-workflow.d.ts +7 -0
- package/dist/tools/workflows/delete-workflow.d.ts.map +1 -0
- package/dist/tools/workflows/delete-workflow.js +21 -0
- package/dist/tools/workflows/delete-workflow.js.map +1 -0
- package/dist/tools/workflows/ephemeral-memory.d.ts +28 -0
- package/dist/tools/workflows/ephemeral-memory.d.ts.map +1 -0
- package/dist/tools/workflows/ephemeral-memory.js +44 -0
- package/dist/tools/workflows/ephemeral-memory.js.map +1 -0
- package/dist/tools/workflows/extract-json-schema.d.ts +12 -0
- package/dist/tools/workflows/extract-json-schema.d.ts.map +1 -0
- package/dist/tools/workflows/extract-json-schema.js +22 -0
- package/dist/tools/workflows/extract-json-schema.js.map +1 -0
- package/dist/tools/workflows/get-workflow.d.ts +11 -0
- package/dist/tools/workflows/get-workflow.d.ts.map +1 -0
- package/dist/tools/workflows/get-workflow.js +34 -0
- package/dist/tools/workflows/get-workflow.js.map +1 -0
- package/dist/tools/workflows/list-available-agents.d.ts +8 -0
- package/dist/tools/workflows/list-available-agents.d.ts.map +1 -0
- package/dist/tools/workflows/list-available-agents.js +32 -0
- package/dist/tools/workflows/list-available-agents.js.map +1 -0
- package/dist/tools/workflows/list-available-classifiers.d.ts +19 -0
- package/dist/tools/workflows/list-available-classifiers.d.ts.map +1 -0
- package/dist/tools/workflows/list-available-classifiers.js +56 -0
- package/dist/tools/workflows/list-available-classifiers.js.map +1 -0
- package/dist/tools/workflows/list-available-tools.d.ts +9 -0
- package/dist/tools/workflows/list-available-tools.d.ts.map +1 -0
- package/dist/tools/workflows/list-available-tools.js +40 -0
- package/dist/tools/workflows/list-available-tools.js.map +1 -0
- package/dist/tools/workflows/list-available-workflows.d.ts +9 -0
- package/dist/tools/workflows/list-available-workflows.d.ts.map +1 -0
- package/dist/tools/workflows/list-available-workflows.js +32 -0
- package/dist/tools/workflows/list-available-workflows.js.map +1 -0
- package/dist/tools/workflows/list-workflows.d.ts +9 -0
- package/dist/tools/workflows/list-workflows.d.ts.map +1 -0
- package/dist/tools/workflows/list-workflows.js +33 -0
- package/dist/tools/workflows/list-workflows.js.map +1 -0
- package/dist/tools/workflows/run-workflow.d.ts +9 -0
- package/dist/tools/workflows/run-workflow.d.ts.map +1 -0
- package/dist/tools/workflows/run-workflow.js +52 -0
- package/dist/tools/workflows/run-workflow.js.map +1 -0
- package/dist/tools/workflows/save-workflow.d.ts +1125 -0
- package/dist/tools/workflows/save-workflow.d.ts.map +1 -0
- package/dist/tools/workflows/save-workflow.js +28 -0
- package/dist/tools/workflows/save-workflow.js.map +1 -0
- package/dist/tools/workflows/tool-ids.d.ts +16 -0
- package/dist/tools/workflows/tool-ids.d.ts.map +1 -0
- package/dist/tools/workflows/tool-ids.js +20 -0
- package/dist/tools/workflows/tool-ids.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 +78 -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 +59 -0
- package/dist/utils/debug-log.js.map +1 -0
- package/dist/utils/discarding-scores-storage.d.ts +33 -0
- package/dist/utils/discarding-scores-storage.d.ts.map +1 -0
- package/dist/utils/discarding-scores-storage.js +54 -0
- package/dist/utils/discarding-scores-storage.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 +196 -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 +61 -0
- package/dist/utils/gateway-sync.js.map +1 -0
- package/dist/utils/maintenance-lock.d.ts +42 -0
- package/dist/utils/maintenance-lock.d.ts.map +1 -0
- package/dist/utils/maintenance-lock.js +199 -0
- package/dist/utils/maintenance-lock.js.map +1 -0
- package/dist/utils/notification-dispatch.d.ts +59 -0
- package/dist/utils/notification-dispatch.d.ts.map +1 -0
- package/dist/utils/notification-dispatch.js +109 -0
- package/dist/utils/notification-dispatch.js.map +1 -0
- package/dist/utils/open-url.d.ts +10 -0
- package/dist/utils/open-url.d.ts.map +1 -0
- package/dist/utils/open-url.js +30 -0
- package/dist/utils/open-url.js.map +1 -0
- package/dist/utils/path-security.d.ts +2 -0
- package/dist/utils/path-security.d.ts.map +1 -0
- package/dist/utils/path-security.js +10 -0
- package/dist/utils/path-security.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 +62 -0
- package/dist/utils/plan-diff.js.map +1 -0
- package/dist/utils/plans.d.ts +59 -0
- package/dist/utils/plans.d.ts.map +1 -0
- package/dist/utils/plans.js +117 -0
- package/dist/utils/plans.js.map +1 -0
- package/dist/utils/project.d.ts +160 -0
- package/dist/utils/project.d.ts.map +1 -0
- package/dist/utils/project.js +364 -0
- package/dist/utils/project.js.map +1 -0
- package/dist/utils/prune-cli.d.ts +24 -0
- package/dist/utils/prune-cli.d.ts.map +1 -0
- package/dist/utils/prune-cli.js +125 -0
- package/dist/utils/prune-cli.js.map +1 -0
- package/dist/utils/signals-pubsub.d.ts +101 -0
- package/dist/utils/signals-pubsub.d.ts.map +1 -0
- package/dist/utils/signals-pubsub.js +410 -0
- package/dist/utils/signals-pubsub.js.map +1 -0
- package/dist/utils/slash-command-loader.d.ts +52 -0
- package/dist/utils/slash-command-loader.d.ts.map +1 -0
- package/dist/utils/slash-command-loader.js +142 -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 +109 -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 +96 -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 +121 -0
- package/dist/utils/storage-factory.js.map +1 -0
- package/dist/utils/storage-maintenance.d.ts +121 -0
- package/dist/utils/storage-maintenance.d.ts.map +1 -0
- package/dist/utils/storage-maintenance.js +355 -0
- package/dist/utils/storage-maintenance.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 +112 -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 +151 -0
- package/dist/utils/update-check.d.ts.map +1 -0
- package/dist/utils/update-check.js +432 -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 +144 -0
- package/dist/voice/stt-registry.js.map +1 -0
- package/dist/workflows/register-primitives.d.ts +52 -0
- package/dist/workflows/register-primitives.d.ts.map +1 -0
- package/dist/workflows/register-primitives.js +40 -0
- package/dist/workflows/register-primitives.js.map +1 -0
- package/dist/workflows/service.d.ts +64 -0
- package/dist/workflows/service.d.ts.map +1 -0
- package/dist/workflows/service.js +53 -0
- package/dist/workflows/service.js.map +1 -0
- package/package.json +107 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { listBuiltinModePacks } from "../onboarding/packs.js";
|
|
2
|
+
import { loadSettings, resolveModelDefaults, saveSettings } from "../onboarding/settings.js";
|
|
3
|
+
import { releaseAllThreadLocks } from "../utils/thread-lock.js";
|
|
4
|
+
import { permissionModeToPolicy } from "./policy.js";
|
|
5
|
+
import { runMC } from "./run-mc.js";
|
|
6
|
+
import { createHumanFormatState, formatHuman, formatJsonl, renderJsonResult } from "./format.js";
|
|
7
|
+
import { activateModePackInSettings, resolveModePackArg, resolvePackSelection } from "../onboarding/pack-activation.js";
|
|
8
|
+
import { createProcessMemoryDiagnosticsFromEnvironment, startConfiguredProcessMemoryDiagnostics, stopProcessMemoryDiagnosticsWithTimeout } from "../process-memory-diagnostics.js";
|
|
9
|
+
import { setupDebugLogging } from "../utils/debug-log.js";
|
|
10
|
+
import { FLAGS, buildParseArgsOptions, renderFlagUsage } from "./flags.js";
|
|
11
|
+
import { createMastraCode } from "../index.js";
|
|
12
|
+
import { existsSync } from "fs";
|
|
13
|
+
import { parseArgs } from "util";
|
|
14
|
+
//#region src/headless/cli.ts
|
|
15
|
+
/**
|
|
16
|
+
* CLI adapter for headless MastraCode runs.
|
|
17
|
+
*
|
|
18
|
+
* This is the only headless layer that touches the process: it parses argv,
|
|
19
|
+
* reads stdin, bootstraps MastraCode via `createMastraCode`, drives `runMC`,
|
|
20
|
+
* renders events/results to stdout/stderr through the pure formatters, maps the
|
|
21
|
+
* result to an exit code, and owns teardown + `process.exit`.
|
|
22
|
+
*/
|
|
23
|
+
const parseArgsOptions = buildParseArgsOptions();
|
|
24
|
+
const STOP_NOTIFICATION_DISPATCH_TIMEOUT_MS = 2e3;
|
|
25
|
+
/**
|
|
26
|
+
* Returns true if `argv` selects headless mode. This must agree with what
|
|
27
|
+
* {@link parseHeadlessArgs} (and `runMCCli`) accept as a prompt: `--prompt`/`-p`
|
|
28
|
+
* or a bare positional prompt (e.g. `mastracode "Fix the bug"`). Note that a
|
|
29
|
+
* prompt piped via stdin without a flag is handled separately by the caller.
|
|
30
|
+
*/
|
|
31
|
+
function hasHeadlessFlag(argv) {
|
|
32
|
+
if (argv.some((a) => a === "--prompt" || a === "-p")) return true;
|
|
33
|
+
try {
|
|
34
|
+
const { values, positionals } = parseArgs({
|
|
35
|
+
args: argv.slice(2),
|
|
36
|
+
options: parseArgsOptions,
|
|
37
|
+
strict: false,
|
|
38
|
+
allowPositionals: true
|
|
39
|
+
});
|
|
40
|
+
return positionals.length > 0 && !values.help;
|
|
41
|
+
} catch {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Parse CLI arguments for headless mode. The flag table in `flags.ts` is the
|
|
47
|
+
* single source of truth: each flag carries its own coercion/validation, so this
|
|
48
|
+
* function just walks {@link FLAGS} and assembles the typed {@link HeadlessArgs}.
|
|
49
|
+
*/
|
|
50
|
+
function parseHeadlessArgs(argv) {
|
|
51
|
+
const { values, positionals } = parseArgs({
|
|
52
|
+
args: argv.slice(2),
|
|
53
|
+
options: parseArgsOptions,
|
|
54
|
+
strict: false,
|
|
55
|
+
allowPositionals: true
|
|
56
|
+
});
|
|
57
|
+
const args = {
|
|
58
|
+
output: "human",
|
|
59
|
+
continue_: false,
|
|
60
|
+
cloneThread: false
|
|
61
|
+
};
|
|
62
|
+
const sink = args;
|
|
63
|
+
for (const flag of FLAGS) {
|
|
64
|
+
if (!flag.field) continue;
|
|
65
|
+
const raw = values[flag.key];
|
|
66
|
+
if (raw === void 0) continue;
|
|
67
|
+
if (flag.type === "boolean") sink[flag.field] = Boolean(raw);
|
|
68
|
+
else if (typeof raw === "string") sink[flag.field] = flag.coerce ? flag.coerce(raw) : raw;
|
|
69
|
+
}
|
|
70
|
+
if (args.prompt === void 0 && positionals[0] !== void 0) args.prompt = positionals[0];
|
|
71
|
+
if (args.continue_ && args.thread) throw new Error("--continue and --thread cannot be used together");
|
|
72
|
+
return args;
|
|
73
|
+
}
|
|
74
|
+
function printHeadlessUsage() {
|
|
75
|
+
process.stdout.write(`
|
|
76
|
+
Usage: mastracode --prompt <text> [options]
|
|
77
|
+
|
|
78
|
+
Headless (non-interactive) mode options:
|
|
79
|
+
${renderFlagUsage()}
|
|
80
|
+
|
|
81
|
+
Thread behavior:
|
|
82
|
+
By default, a new thread is created for each run.
|
|
83
|
+
Use --continue to resume the most recent thread, or --thread to target a specific one.
|
|
84
|
+
Use --clone-thread to branch off a copy before running.
|
|
85
|
+
|
|
86
|
+
Settings file:
|
|
87
|
+
Uses the same settings.json as the interactive TUI. Pass --settings to use
|
|
88
|
+
a custom settings file (e.g., settings-ci.json for CI). All model, pack,
|
|
89
|
+
subagent, and OM configuration is resolved from settings at startup.
|
|
90
|
+
|
|
91
|
+
Exit codes:
|
|
92
|
+
0 Agent completed successfully
|
|
93
|
+
1 Error, aborted, or max turns reached
|
|
94
|
+
2 Timeout
|
|
95
|
+
|
|
96
|
+
Examples:
|
|
97
|
+
mastracode --prompt "Fix the bug in auth.ts"
|
|
98
|
+
mastracode --prompt "Add tests" --timeout 300 --output json
|
|
99
|
+
mastracode --prompt "Refactor" --output jsonl
|
|
100
|
+
mastracode --prompt "Review this PR" --permission-mode deny --max-turns 10
|
|
101
|
+
mastracode --settings ./settings-ci.json --prompt "Run tests"
|
|
102
|
+
mastracode -c --prompt "Continue where you left off"
|
|
103
|
+
echo "Summarize the repo" | mastracode --prompt -
|
|
104
|
+
`);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Headless CLI entry point: parse arguments, read stdin, initialize MastraCode,
|
|
108
|
+
* run via `runMC`, render output, and exit with the mapped code.
|
|
109
|
+
*/
|
|
110
|
+
async function runMCCli(predrainedInput, options) {
|
|
111
|
+
if (process.argv.includes("--help") || process.argv.includes("-h")) {
|
|
112
|
+
printHeadlessUsage();
|
|
113
|
+
process.exit(0);
|
|
114
|
+
}
|
|
115
|
+
let args;
|
|
116
|
+
try {
|
|
117
|
+
args = parseHeadlessArgs(process.argv);
|
|
118
|
+
} catch (e) {
|
|
119
|
+
process.stderr.write(`Error: ${e.message}\n`);
|
|
120
|
+
process.exit(1);
|
|
121
|
+
}
|
|
122
|
+
let prompt = args.prompt;
|
|
123
|
+
if (predrainedInput !== void 0) prompt = predrainedInput ?? "";
|
|
124
|
+
else if (prompt === "-" || !prompt && !process.stdin.isTTY) {
|
|
125
|
+
const chunks = [];
|
|
126
|
+
for await (const chunk of process.stdin) chunks.push(chunk);
|
|
127
|
+
prompt = Buffer.concat(chunks).toString("utf-8").trim();
|
|
128
|
+
}
|
|
129
|
+
if (!prompt) {
|
|
130
|
+
printHeadlessUsage();
|
|
131
|
+
process.stderr.write("Error: --prompt is required (or pipe via stdin)\n");
|
|
132
|
+
process.exit(1);
|
|
133
|
+
}
|
|
134
|
+
if (args.settings && !existsSync(args.settings)) {
|
|
135
|
+
process.stderr.write(`Error: Settings file not found: ${args.settings}\n`);
|
|
136
|
+
process.exit(1);
|
|
137
|
+
}
|
|
138
|
+
const settings = loadSettings(args.settings);
|
|
139
|
+
let packId;
|
|
140
|
+
if (args.pack !== void 0) {
|
|
141
|
+
const resolved = resolveModePackArg(settings, args.pack);
|
|
142
|
+
if ("error" in resolved) {
|
|
143
|
+
process.stderr.write(`Error: ${resolved.error}\n`);
|
|
144
|
+
process.exit(1);
|
|
145
|
+
}
|
|
146
|
+
packId = resolved.packId;
|
|
147
|
+
}
|
|
148
|
+
const processMemoryDiagnostics = await startConfiguredProcessMemoryDiagnostics(createProcessMemoryDiagnosticsFromEnvironment(process.env), (warning) => {
|
|
149
|
+
process.stderr.write(`Warning: ${warning}\n`);
|
|
150
|
+
});
|
|
151
|
+
let boot;
|
|
152
|
+
let exitCode = 1;
|
|
153
|
+
try {
|
|
154
|
+
boot = await createMastraCode({
|
|
155
|
+
settingsPath: args.settings,
|
|
156
|
+
coAuthor: options?.coAuthor
|
|
157
|
+
});
|
|
158
|
+
const { controller, session, mcpManager } = boot;
|
|
159
|
+
const effectiveDefaults = resolveModelDefaults(settings, listBuiltinModePacks());
|
|
160
|
+
if (mcpManager?.hasServers()) try {
|
|
161
|
+
await mcpManager.initInBackground();
|
|
162
|
+
} catch (err) {
|
|
163
|
+
process.stderr.write(`Warning: MCP server initialization failed: ${err.message ?? err}\n`);
|
|
164
|
+
}
|
|
165
|
+
setupDebugLogging();
|
|
166
|
+
const humanState = createHumanFormatState();
|
|
167
|
+
const run = runMC({
|
|
168
|
+
controller,
|
|
169
|
+
session,
|
|
170
|
+
prompt,
|
|
171
|
+
model: args.model,
|
|
172
|
+
mode: args.mode,
|
|
173
|
+
modeDefaults: effectiveDefaults,
|
|
174
|
+
...packId ? { pack: {
|
|
175
|
+
id: packId,
|
|
176
|
+
resolve: (modeId) => resolvePackSelection(settings, packId, modeId),
|
|
177
|
+
onApplied: () => {
|
|
178
|
+
activateModePackInSettings(settings, packId);
|
|
179
|
+
saveSettings(settings, args.settings);
|
|
180
|
+
}
|
|
181
|
+
} } : {},
|
|
182
|
+
thinkingLevel: args.thinkingLevel,
|
|
183
|
+
thread: {
|
|
184
|
+
id: args.thread,
|
|
185
|
+
continueLatest: args.continue_,
|
|
186
|
+
clone: args.cloneThread
|
|
187
|
+
},
|
|
188
|
+
resourceId: args.resourceId,
|
|
189
|
+
title: args.title,
|
|
190
|
+
timeoutMs: args.timeout ? args.timeout * 1e3 : void 0,
|
|
191
|
+
maxTurns: args.maxTurns,
|
|
192
|
+
policy: args.permissionMode ? permissionModeToPolicy(args.permissionMode) : void 0
|
|
193
|
+
});
|
|
194
|
+
for await (const event of run) if (args.output === "human") {
|
|
195
|
+
const out = formatHuman(event, humanState);
|
|
196
|
+
if (out.stdout) process.stdout.write(out.stdout);
|
|
197
|
+
if (out.stderr) process.stderr.write(out.stderr);
|
|
198
|
+
} else if (args.output === "jsonl") process.stdout.write(JSON.stringify(formatJsonl(event)) + "\n");
|
|
199
|
+
const result = await run.result;
|
|
200
|
+
exitCode = result.exitCode;
|
|
201
|
+
if (args.output === "json") process.stdout.write(renderJsonResult(result));
|
|
202
|
+
else if (args.output === "jsonl") process.stdout.write(JSON.stringify({
|
|
203
|
+
type: "result",
|
|
204
|
+
...result
|
|
205
|
+
}) + "\n");
|
|
206
|
+
if (result.status === "timeout") process.stderr.write(`\nTimeout elapsed. Aborted.\n`);
|
|
207
|
+
else if (result.error && args.output === "human") process.stderr.write(`Error: ${result.error.message}\n`);
|
|
208
|
+
} catch (err) {
|
|
209
|
+
process.stderr.write(`Error: ${err.message ?? err}\n`);
|
|
210
|
+
exitCode = 1;
|
|
211
|
+
} finally {
|
|
212
|
+
releaseAllThreadLocks();
|
|
213
|
+
if (boot) {
|
|
214
|
+
try {
|
|
215
|
+
boot.releaseThreadClaims();
|
|
216
|
+
} catch {}
|
|
217
|
+
try {
|
|
218
|
+
boot.stopPluginSignalProviders();
|
|
219
|
+
} catch {}
|
|
220
|
+
const { controller, mcpManager } = boot;
|
|
221
|
+
await Promise.race([boot.stopNotificationDispatch?.().catch(() => {}), new Promise((resolve) => setTimeout(resolve, STOP_NOTIFICATION_DISPATCH_TIMEOUT_MS).unref())]);
|
|
222
|
+
await Promise.allSettled([
|
|
223
|
+
mcpManager?.disconnect(),
|
|
224
|
+
controller.getMastra()?.stopWorkers(),
|
|
225
|
+
controller.stopIntervals()
|
|
226
|
+
]);
|
|
227
|
+
const signalsPubSub = boot.signalsPubSub;
|
|
228
|
+
await Promise.allSettled([signalsPubSub?.close?.()]);
|
|
229
|
+
}
|
|
230
|
+
await stopProcessMemoryDiagnosticsWithTimeout(processMemoryDiagnostics, (warning) => {
|
|
231
|
+
process.stderr.write(`Warning: ${warning}\n`);
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
process.exit(exitCode);
|
|
235
|
+
}
|
|
236
|
+
//#endregion
|
|
237
|
+
export { hasHeadlessFlag, parseHeadlessArgs, printHeadlessUsage, runMCCli };
|
|
238
|
+
|
|
239
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","names":[],"sources":["../../src/headless/cli.ts"],"sourcesContent":["/**\n * CLI adapter for headless MastraCode runs.\n *\n * This is the only headless layer that touches the process: it parses argv,\n * reads stdin, bootstraps MastraCode via `createMastraCode`, drives `runMC`,\n * renders events/results to stdout/stderr through the pure formatters, maps the\n * result to an exit code, and owns teardown + `process.exit`.\n */\nimport { existsSync } from 'node:fs';\nimport { parseArgs } from 'node:util';\n\nimport { createMastraCode } from '../index.js';\nimport { activateModePackInSettings, resolveModePackArg, resolvePackSelection } from '../onboarding/pack-activation.js';\nimport { listBuiltinModePacks } from '../onboarding/packs.js';\nimport { loadSettings, resolveModelDefaults, saveSettings } from '../onboarding/settings.js';\nimport {\n createProcessMemoryDiagnosticsFromEnvironment,\n startConfiguredProcessMemoryDiagnostics,\n stopProcessMemoryDiagnosticsWithTimeout,\n} from '../process-memory-diagnostics.js';\nimport { setupDebugLogging } from '../utils/debug-log.js';\nimport { releaseAllThreadLocks } from '../utils/thread-lock.js';\n\nimport { buildParseArgsOptions, FLAGS, renderFlagUsage } from './flags.js';\nimport { createHumanFormatState, formatHuman, formatJsonl, renderJsonResult } from './format.js';\nimport { permissionModeToPolicy } from './policy.js';\nimport { runMC } from './run-mc.js';\nimport type { PermissionMode, RunMode, ThinkingLevel } from './types.js';\n\n/** Consolidated output mode (replaces the old `--format` + `--output-format`). */\nexport type OutputMode = 'human' | 'json' | 'jsonl';\n\nexport interface HeadlessArgs {\n prompt?: string;\n /** Timeout in seconds (CLI surface); converted to ms before `runMC`. */\n timeout?: number;\n output: OutputMode;\n continue_: boolean;\n model?: string;\n pack?: string;\n mode?: RunMode;\n thinkingLevel?: ThinkingLevel;\n settings?: string;\n thread?: string;\n title?: string;\n cloneThread: boolean;\n resourceId?: string;\n /** Max agentic turns before the run aborts with exit code 1. */\n maxTurns?: number;\n /** Named permission mode resolving to a built-in policy. Defaults to `auto`. */\n permissionMode?: PermissionMode;\n}\n\nconst parseArgsOptions = buildParseArgsOptions();\nconst STOP_NOTIFICATION_DISPATCH_TIMEOUT_MS = 2_000;\n\n/**\n * Returns true if `argv` selects headless mode. This must agree with what\n * {@link parseHeadlessArgs} (and `runMCCli`) accept as a prompt: `--prompt`/`-p`\n * or a bare positional prompt (e.g. `mastracode \"Fix the bug\"`). Note that a\n * prompt piped via stdin without a flag is handled separately by the caller.\n */\nexport function hasHeadlessFlag(argv: string[]): boolean {\n if (argv.some(a => a === '--prompt' || a === '-p')) return true;\n try {\n const { values, positionals } = parseArgs({\n args: argv.slice(2),\n options: parseArgsOptions,\n strict: false,\n allowPositionals: true,\n });\n // A positional prompt only counts when not asking for help.\n return positionals.length > 0 && !values.help;\n } catch {\n return false;\n }\n}\n\n/**\n * Parse CLI arguments for headless mode. The flag table in `flags.ts` is the\n * single source of truth: each flag carries its own coercion/validation, so this\n * function just walks {@link FLAGS} and assembles the typed {@link HeadlessArgs}.\n */\nexport function parseHeadlessArgs(argv: string[]): HeadlessArgs {\n const { values, positionals } = parseArgs({\n args: argv.slice(2),\n options: parseArgsOptions,\n strict: false,\n allowPositionals: true,\n });\n\n // Seed defaults; per-flag values below override these.\n const args: HeadlessArgs = {\n output: 'human',\n continue_: false,\n cloneThread: false,\n };\n const sink = args as unknown as Record<string, unknown>;\n\n for (const flag of FLAGS) {\n if (!flag.field) continue; // e.g. --help, handled by the caller\n const raw = values[flag.key];\n if (raw === undefined) continue;\n\n if (flag.type === 'boolean') {\n sink[flag.field] = Boolean(raw);\n } else if (typeof raw === 'string') {\n sink[flag.field] = flag.coerce ? flag.coerce(raw) : raw;\n }\n }\n\n // A bare positional acts as the prompt when --prompt/-p is absent.\n if (args.prompt === undefined && positionals[0] !== undefined) {\n args.prompt = positionals[0];\n }\n\n if (args.continue_ && args.thread) {\n throw new Error('--continue and --thread cannot be used together');\n }\n\n return args;\n}\n\nexport function printHeadlessUsage(): void {\n process.stdout.write(`\nUsage: mastracode --prompt <text> [options]\n\nHeadless (non-interactive) mode options:\n${renderFlagUsage()}\n\nThread behavior:\n By default, a new thread is created for each run.\n Use --continue to resume the most recent thread, or --thread to target a specific one.\n Use --clone-thread to branch off a copy before running.\n\nSettings file:\n Uses the same settings.json as the interactive TUI. Pass --settings to use\n a custom settings file (e.g., settings-ci.json for CI). All model, pack,\n subagent, and OM configuration is resolved from settings at startup.\n\nExit codes:\n 0 Agent completed successfully\n 1 Error, aborted, or max turns reached\n 2 Timeout\n\nExamples:\n mastracode --prompt \"Fix the bug in auth.ts\"\n mastracode --prompt \"Add tests\" --timeout 300 --output json\n mastracode --prompt \"Refactor\" --output jsonl\n mastracode --prompt \"Review this PR\" --permission-mode deny --max-turns 10\n mastracode --settings ./settings-ci.json --prompt \"Run tests\"\n mastracode -c --prompt \"Continue where you left off\"\n echo \"Summarize the repo\" | mastracode --prompt -\n`);\n}\n\n/**\n * Headless CLI entry point: parse arguments, read stdin, initialize MastraCode,\n * run via `runMC`, render output, and exit with the mapped code.\n */\nexport async function runMCCli(\n predrainedInput?: string | null,\n options?: { coAuthor?: { name?: string; email?: string } },\n): Promise<never> {\n if (process.argv.includes('--help') || process.argv.includes('-h')) {\n printHeadlessUsage();\n process.exit(0);\n }\n\n let args: HeadlessArgs;\n try {\n args = parseHeadlessArgs(process.argv);\n } catch (e) {\n process.stderr.write(`Error: ${(e as Error).message}\\n`);\n process.exit(1);\n }\n\n let prompt = args.prompt;\n if (predrainedInput !== undefined) {\n prompt = predrainedInput ?? '';\n } else if (prompt === '-' || (!prompt && !process.stdin.isTTY)) {\n const chunks: Buffer[] = [];\n for await (const chunk of process.stdin) {\n chunks.push(chunk as Buffer);\n }\n prompt = Buffer.concat(chunks).toString('utf-8').trim();\n }\n\n if (!prompt) {\n printHeadlessUsage();\n process.stderr.write('Error: --prompt is required (or pipe via stdin)\\n');\n process.exit(1);\n }\n\n if (args.settings && !existsSync(args.settings)) {\n process.stderr.write(`Error: Settings file not found: ${args.settings}\\n`);\n process.exit(1);\n }\n\n // Resolve --pack up front: an unknown pack fails fast with the valid list,\n // before MastraCode boots. The selection itself is resolved inside runMC\n // after thread selection, because a resumed thread restores its persisted\n // mode — the mode that decides whether the pack has a model for this run.\n // Activation (which mirrors /models → Activate and becomes the global\n // default pack in settings) is saved via onApplied only once the pack has\n // actually been applied to the session — a rejected pack must not change\n // the persisted default on its way out.\n const settings = loadSettings(args.settings);\n let packId: string | undefined;\n if (args.pack !== undefined) {\n const resolved = resolveModePackArg(settings, args.pack);\n if ('error' in resolved) {\n process.stderr.write(`Error: ${resolved.error}\\n`);\n process.exit(1);\n }\n packId = resolved.packId;\n }\n\n const diagnosticsSetup = createProcessMemoryDiagnosticsFromEnvironment(process.env);\n const processMemoryDiagnostics = await startConfiguredProcessMemoryDiagnostics(diagnosticsSetup, warning => {\n process.stderr.write(`Warning: ${warning}\\n`);\n });\n\n let boot: Awaited<ReturnType<typeof createMastraCode>> | undefined;\n // Default to a non-zero exit so an unexpected throw before the run resolves\n // still surfaces as a failure to the caller / CI.\n let exitCode = 1;\n try {\n boot = await createMastraCode({ settingsPath: args.settings, coAuthor: options?.coAuthor });\n const { controller, session, mcpManager } = boot;\n\n const effectiveDefaults = resolveModelDefaults(settings, listBuiltinModePacks());\n\n if (mcpManager?.hasServers()) {\n try {\n await mcpManager.initInBackground();\n } catch (err) {\n process.stderr.write(`Warning: MCP server initialization failed: ${(err as Error).message ?? err}\\n`);\n }\n }\n\n setupDebugLogging();\n\n const humanState = createHumanFormatState();\n const run = runMC({\n controller,\n session,\n prompt,\n model: args.model,\n mode: args.mode,\n modeDefaults: effectiveDefaults,\n ...(packId\n ? {\n pack: {\n id: packId,\n resolve: (modeId: string) => resolvePackSelection(settings, packId, modeId),\n onApplied: () => {\n activateModePackInSettings(settings, packId);\n saveSettings(settings, args.settings);\n },\n },\n }\n : {}),\n thinkingLevel: args.thinkingLevel,\n thread: { id: args.thread, continueLatest: args.continue_, clone: args.cloneThread },\n resourceId: args.resourceId,\n title: args.title,\n timeoutMs: args.timeout ? args.timeout * 1000 : undefined,\n maxTurns: args.maxTurns,\n policy: args.permissionMode ? permissionModeToPolicy(args.permissionMode) : undefined,\n });\n\n // Stream live events for human + jsonl modes. (json mode prints only the final object.)\n for await (const event of run) {\n if (args.output === 'human') {\n const out = formatHuman(event, humanState);\n if (out.stdout) process.stdout.write(out.stdout);\n if (out.stderr) process.stderr.write(out.stderr);\n } else if (args.output === 'jsonl') {\n process.stdout.write(JSON.stringify(formatJsonl(event)) + '\\n');\n }\n }\n\n const result = await run.result;\n exitCode = result.exitCode;\n\n if (args.output === 'json') {\n process.stdout.write(renderJsonResult(result));\n } else if (args.output === 'jsonl') {\n process.stdout.write(JSON.stringify({ type: 'result', ...result }) + '\\n');\n }\n\n if (result.status === 'timeout') {\n process.stderr.write(`\\nTimeout elapsed. Aborted.\\n`);\n } else if (result.error && args.output === 'human') {\n process.stderr.write(`Error: ${result.error.message}\\n`);\n }\n } catch (err) {\n process.stderr.write(`Error: ${(err as Error).message ?? err}\\n`);\n exitCode = 1;\n } finally {\n // --- Teardown (always runs, even on a thrown error) ---\n releaseAllThreadLocks();\n if (boot) {\n // Stop plugin-contributed signal providers (and the plugin reload listener)\n // before quiescing workers: a provider that keeps polling past this point\n // could dispatch into a controller that is shutting down. Release thread\n // claims first so a restarted process need not wait out this teardown.\n try {\n boot.releaseThreadClaims();\n } catch {\n // Best-effort — the process is exiting.\n }\n try {\n boot.stopPluginSignalProviders();\n } catch {\n // Best-effort — the process is exiting.\n }\n const { controller, mcpManager } = boot;\n // Release notification dispatch leases before the pubsub that holds them\n // closes. Headless has no shutdown deadline, so don't let a stalled\n // in-flight dispatch hold up exit.\n await Promise.race([\n boot.stopNotificationDispatch?.().catch(() => {}),\n new Promise<void>(resolve => setTimeout(resolve, STOP_NOTIFICATION_DISPATCH_TIMEOUT_MS).unref()),\n ]);\n await Promise.allSettled([\n mcpManager?.disconnect(),\n controller.getMastra()?.stopWorkers(),\n controller.stopIntervals(),\n ]);\n // The signals pubsub is Mastra's event bus, so close it after the workers\n // stop. Call close() on the object; a detached method loses `this` and\n // rejects silently, leaving socket files behind.\n const signalsPubSub = boot.signalsPubSub as { close?: () => Promise<void> | void } | undefined;\n await Promise.allSettled([signalsPubSub?.close?.()]);\n }\n await stopProcessMemoryDiagnosticsWithTimeout(processMemoryDiagnostics, warning => {\n process.stderr.write(`Warning: ${warning}\\n`);\n });\n }\n\n process.exit(exitCode);\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export declare const VALID_OUTPUTS: readonly ["human", "json", "jsonl"];
|
|
2
|
+
/**
|
|
3
|
+
* One CLI flag. `key` is the long name (e.g. `output`); `field` is the
|
|
4
|
+
* {@link import('./cli.js').HeadlessArgs} property it populates. `coerce`
|
|
5
|
+
* converts the raw string and validates it. Boolean flags omit `coerce` and set
|
|
6
|
+
* `field` to `true` when present.
|
|
7
|
+
*/
|
|
8
|
+
export interface FlagSpec {
|
|
9
|
+
/** Long flag name without the leading `--`. */
|
|
10
|
+
key: string;
|
|
11
|
+
/** Single-character alias (without the leading `-`), if any. */
|
|
12
|
+
short?: string;
|
|
13
|
+
/** Whether the flag takes a value (`string`) or is a switch (`boolean`). */
|
|
14
|
+
type: 'string' | 'boolean';
|
|
15
|
+
/** Target field on `HeadlessArgs`. Omit for flags handled out-of-band (e.g. help). */
|
|
16
|
+
field?: string;
|
|
17
|
+
/** Coerce/validate a string value. Required for `type: 'string'` flags that map to a field. */
|
|
18
|
+
coerce?: (raw: string) => unknown;
|
|
19
|
+
/** `<...>` value placeholder shown in usage, e.g. `<text>`. */
|
|
20
|
+
placeholder?: string;
|
|
21
|
+
/** One-line (or multi-line) help description shown in usage. */
|
|
22
|
+
help: string | string[];
|
|
23
|
+
}
|
|
24
|
+
export declare const FLAGS: FlagSpec[];
|
|
25
|
+
/** `parseArgs` option config derived from {@link FLAGS}. */
|
|
26
|
+
export declare function buildParseArgsOptions(): Record<string, {
|
|
27
|
+
type: "string" | "boolean";
|
|
28
|
+
short?: string;
|
|
29
|
+
default?: boolean;
|
|
30
|
+
}>;
|
|
31
|
+
/** Render the aligned `--flag description` block of the usage text from {@link FLAGS}. */
|
|
32
|
+
export declare function renderFlagUsage(): string;
|
|
33
|
+
//# sourceMappingURL=flags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../src/headless/flags.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,aAAa,qCAAsC,CAAC;AA6BjE;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,+CAA+C;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+FAA+F;IAC/F,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAClC,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACzB;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,EA8I3B,CAAC;AAEF,4DAA4D;AAC5D,wBAAgB,qBAAqB;UACG,QAAQ,GAAG,SAAS;YAAU,MAAM;cAAY,OAAO;GAM9F;AAED,2FAA2F;AAC3F,wBAAgB,eAAe,IAAI,MAAM,CAmBxC"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { VALID_MODES, VALID_PERMISSION_MODES, VALID_THINKING_LEVELS } from "./types.js";
|
|
2
|
+
//#region src/headless/flags.ts
|
|
3
|
+
const VALID_OUTPUTS = [
|
|
4
|
+
"human",
|
|
5
|
+
"json",
|
|
6
|
+
"jsonl"
|
|
7
|
+
];
|
|
8
|
+
/** Reusable validators. Each throws a descriptive Error or returns the typed value. */
|
|
9
|
+
const validate = {
|
|
10
|
+
/** Restrict to a fixed set of string literals. */
|
|
11
|
+
enum(flag, allowed) {
|
|
12
|
+
return (raw) => {
|
|
13
|
+
if (!allowed.includes(raw)) throw new Error(`${flag} must be one of: ${allowed.join(", ")}`);
|
|
14
|
+
return raw;
|
|
15
|
+
};
|
|
16
|
+
},
|
|
17
|
+
/** Require a positive (>0) integer. */
|
|
18
|
+
positiveInt(flag) {
|
|
19
|
+
return (raw) => {
|
|
20
|
+
const parsed = Number(raw);
|
|
21
|
+
if (!Number.isInteger(parsed) || parsed <= 0) throw new Error(`${flag} must be a positive integer`);
|
|
22
|
+
return parsed;
|
|
23
|
+
};
|
|
24
|
+
},
|
|
25
|
+
/** Pass a string through unchanged. */
|
|
26
|
+
string(raw) {
|
|
27
|
+
return raw;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const FLAGS = [
|
|
31
|
+
{
|
|
32
|
+
key: "prompt",
|
|
33
|
+
short: "p",
|
|
34
|
+
type: "string",
|
|
35
|
+
field: "prompt",
|
|
36
|
+
coerce: validate.string,
|
|
37
|
+
placeholder: "<text>",
|
|
38
|
+
help: "The task to execute (required, or pipe via stdin)"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
key: "continue",
|
|
42
|
+
short: "c",
|
|
43
|
+
type: "boolean",
|
|
44
|
+
field: "continue_",
|
|
45
|
+
help: "Resume the most recent thread instead of creating a new one"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
key: "thread",
|
|
49
|
+
short: "t",
|
|
50
|
+
type: "string",
|
|
51
|
+
field: "thread",
|
|
52
|
+
coerce: validate.string,
|
|
53
|
+
placeholder: "<id>",
|
|
54
|
+
help: "Resume a specific thread by ID"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
key: "title",
|
|
58
|
+
type: "string",
|
|
59
|
+
field: "title",
|
|
60
|
+
coerce: validate.string,
|
|
61
|
+
placeholder: "<title>",
|
|
62
|
+
help: "Set or rename the thread title"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
key: "clone-thread",
|
|
66
|
+
type: "boolean",
|
|
67
|
+
field: "cloneThread",
|
|
68
|
+
help: "Clone the current thread before running (work on a copy)"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
key: "resource-id",
|
|
72
|
+
type: "string",
|
|
73
|
+
field: "resourceId",
|
|
74
|
+
coerce: validate.string,
|
|
75
|
+
placeholder: "<id>",
|
|
76
|
+
help: "Set the resource ID for thread scoping"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
key: "timeout",
|
|
80
|
+
type: "string",
|
|
81
|
+
field: "timeout",
|
|
82
|
+
coerce: validate.positiveInt("--timeout"),
|
|
83
|
+
placeholder: "<seconds>",
|
|
84
|
+
help: "Exit with code 2 if not complete within timeout"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
key: "max-turns",
|
|
88
|
+
type: "string",
|
|
89
|
+
field: "maxTurns",
|
|
90
|
+
coerce: validate.positiveInt("--max-turns"),
|
|
91
|
+
placeholder: "<n>",
|
|
92
|
+
help: "Abort after N agentic turns (exit code 1)"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
key: "permission-mode",
|
|
96
|
+
type: "string",
|
|
97
|
+
field: "permissionMode",
|
|
98
|
+
coerce: validate.enum("--permission-mode", VALID_PERMISSION_MODES),
|
|
99
|
+
placeholder: "<mode>",
|
|
100
|
+
help: [
|
|
101
|
+
"How tool approvals/suspensions resolve:",
|
|
102
|
+
" auto approve everything (default)",
|
|
103
|
+
" deny refuse approvals, abort on suspension"
|
|
104
|
+
]
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
key: "output",
|
|
108
|
+
short: "o",
|
|
109
|
+
type: "string",
|
|
110
|
+
field: "output",
|
|
111
|
+
coerce: validate.enum("--output", VALID_OUTPUTS),
|
|
112
|
+
placeholder: "<mode>",
|
|
113
|
+
help: [
|
|
114
|
+
"Output mode: \"human\" (default), \"json\", or \"jsonl\"",
|
|
115
|
+
" human streaming text to stdout, activity to stderr",
|
|
116
|
+
" json single final JSON object (text, usage, tools)",
|
|
117
|
+
" jsonl newline-delimited JSON event stream"
|
|
118
|
+
]
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
key: "model",
|
|
122
|
+
short: "m",
|
|
123
|
+
type: "string",
|
|
124
|
+
field: "model",
|
|
125
|
+
coerce: validate.string,
|
|
126
|
+
placeholder: "<id>",
|
|
127
|
+
help: "Model override (e.g., a provider/model id); wins over --pack for the active mode"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
key: "pack",
|
|
131
|
+
type: "string",
|
|
132
|
+
field: "pack",
|
|
133
|
+
coerce: validate.string,
|
|
134
|
+
placeholder: "<id>",
|
|
135
|
+
help: [
|
|
136
|
+
"Model pack to activate (like /models → Activate): a builtin pack id",
|
|
137
|
+
"(anthropic, openai, github-copilot) or a saved custom pack, by",
|
|
138
|
+
"\"custom:<name>\" or its bare name. Sets the pack for every mode and",
|
|
139
|
+
"becomes the global default pack. --model overrides it for the active mode."
|
|
140
|
+
]
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
key: "mode",
|
|
144
|
+
type: "string",
|
|
145
|
+
field: "mode",
|
|
146
|
+
coerce: validate.enum("--mode", VALID_MODES),
|
|
147
|
+
placeholder: "{build|plan|fast}",
|
|
148
|
+
help: "Execution mode — defaults to \"build\" if omitted"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
key: "thinking-level",
|
|
152
|
+
type: "string",
|
|
153
|
+
field: "thinkingLevel",
|
|
154
|
+
coerce: validate.enum("--thinking-level", VALID_THINKING_LEVELS),
|
|
155
|
+
placeholder: "<level>",
|
|
156
|
+
help: "Thinking level: off, low, medium, high, xhigh, max"
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
key: "settings",
|
|
160
|
+
type: "string",
|
|
161
|
+
field: "settings",
|
|
162
|
+
coerce: validate.string,
|
|
163
|
+
placeholder: "<path>",
|
|
164
|
+
help: "Path to settings.json file (default: global settings)"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
key: "help",
|
|
168
|
+
short: "h",
|
|
169
|
+
type: "boolean",
|
|
170
|
+
help: "Show this help and exit"
|
|
171
|
+
}
|
|
172
|
+
];
|
|
173
|
+
/** `parseArgs` option config derived from {@link FLAGS}. */
|
|
174
|
+
function buildParseArgsOptions() {
|
|
175
|
+
const options = {};
|
|
176
|
+
for (const flag of FLAGS) {
|
|
177
|
+
options[flag.key] = flag.type === "boolean" ? {
|
|
178
|
+
type: "boolean",
|
|
179
|
+
default: false
|
|
180
|
+
} : { type: "string" };
|
|
181
|
+
if (flag.short) options[flag.key].short = flag.short;
|
|
182
|
+
}
|
|
183
|
+
return options;
|
|
184
|
+
}
|
|
185
|
+
/** Render the aligned `--flag description` block of the usage text from {@link FLAGS}. */
|
|
186
|
+
function renderFlagUsage() {
|
|
187
|
+
const left = (flag) => {
|
|
188
|
+
return ` ${`--${flag.key}`}${flag.short ? `, -${flag.short}` : ""}${flag.placeholder ? ` ${flag.placeholder}` : ""}`;
|
|
189
|
+
};
|
|
190
|
+
const rows = FLAGS.map((flag) => ({
|
|
191
|
+
flag,
|
|
192
|
+
label: left(flag)
|
|
193
|
+
}));
|
|
194
|
+
const width = Math.max(...rows.map((r) => r.label.length)) + 2;
|
|
195
|
+
return rows.map(({ flag, label }) => {
|
|
196
|
+
const lines = Array.isArray(flag.help) ? flag.help : [flag.help];
|
|
197
|
+
return [`${label.padEnd(width)}${lines[0]}`, ...lines.slice(1).map((line) => `${" ".repeat(width)}${line}`)].join("\n");
|
|
198
|
+
}).join("\n");
|
|
199
|
+
}
|
|
200
|
+
//#endregion
|
|
201
|
+
export { FLAGS, VALID_OUTPUTS, buildParseArgsOptions, renderFlagUsage };
|
|
202
|
+
|
|
203
|
+
//# sourceMappingURL=flags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flags.js","names":[],"sources":["../../src/headless/flags.ts"],"sourcesContent":["/**\n * Declarative flag specification for the headless CLI.\n *\n * A single table is the source of truth for three things that previously drifted\n * apart in `cli.ts`:\n * 1. the `node:util` `parseArgs` option config,\n * 2. per-flag value coercion + validation, and\n * 3. the `--help` usage text.\n *\n * Adding a flag means adding one row here; parsing, validation, and the usage\n * listing all follow automatically.\n */\nimport type { OutputMode } from './cli.js';\nimport type { PermissionMode, RunMode, ThinkingLevel } from './types.js';\nimport { VALID_MODES, VALID_PERMISSION_MODES, VALID_THINKING_LEVELS } from './types.js';\n\nexport const VALID_OUTPUTS = ['human', 'json', 'jsonl'] as const;\n\n/** Reusable validators. Each throws a descriptive Error or returns the typed value. */\nconst validate = {\n /** Restrict to a fixed set of string literals. */\n enum<T extends string>(flag: string, allowed: readonly T[]) {\n return (raw: string): T => {\n if (!(allowed as readonly string[]).includes(raw)) {\n throw new Error(`${flag} must be one of: ${allowed.join(', ')}`);\n }\n return raw as T;\n };\n },\n /** Require a positive (>0) integer. */\n positiveInt(flag: string) {\n return (raw: string): number => {\n const parsed = Number(raw);\n if (!Number.isInteger(parsed) || parsed <= 0) {\n throw new Error(`${flag} must be a positive integer`);\n }\n return parsed;\n };\n },\n /** Pass a string through unchanged. */\n string(raw: string): string {\n return raw;\n },\n};\n\n/**\n * One CLI flag. `key` is the long name (e.g. `output`); `field` is the\n * {@link import('./cli.js').HeadlessArgs} property it populates. `coerce`\n * converts the raw string and validates it. Boolean flags omit `coerce` and set\n * `field` to `true` when present.\n */\nexport interface FlagSpec {\n /** Long flag name without the leading `--`. */\n key: string;\n /** Single-character alias (without the leading `-`), if any. */\n short?: string;\n /** Whether the flag takes a value (`string`) or is a switch (`boolean`). */\n type: 'string' | 'boolean';\n /** Target field on `HeadlessArgs`. Omit for flags handled out-of-band (e.g. help). */\n field?: string;\n /** Coerce/validate a string value. Required for `type: 'string'` flags that map to a field. */\n coerce?: (raw: string) => unknown;\n /** `<...>` value placeholder shown in usage, e.g. `<text>`. */\n placeholder?: string;\n /** One-line (or multi-line) help description shown in usage. */\n help: string | string[];\n}\n\nexport const FLAGS: FlagSpec[] = [\n {\n key: 'prompt',\n short: 'p',\n type: 'string',\n field: 'prompt',\n coerce: validate.string,\n placeholder: '<text>',\n help: 'The task to execute (required, or pipe via stdin)',\n },\n {\n key: 'continue',\n short: 'c',\n type: 'boolean',\n field: 'continue_',\n help: 'Resume the most recent thread instead of creating a new one',\n },\n {\n key: 'thread',\n short: 't',\n type: 'string',\n field: 'thread',\n coerce: validate.string,\n placeholder: '<id>',\n help: 'Resume a specific thread by ID',\n },\n {\n key: 'title',\n type: 'string',\n field: 'title',\n coerce: validate.string,\n placeholder: '<title>',\n help: 'Set or rename the thread title',\n },\n {\n key: 'clone-thread',\n type: 'boolean',\n field: 'cloneThread',\n help: 'Clone the current thread before running (work on a copy)',\n },\n {\n key: 'resource-id',\n type: 'string',\n field: 'resourceId',\n coerce: validate.string,\n placeholder: '<id>',\n help: 'Set the resource ID for thread scoping',\n },\n {\n key: 'timeout',\n type: 'string',\n field: 'timeout',\n coerce: validate.positiveInt('--timeout'),\n placeholder: '<seconds>',\n help: 'Exit with code 2 if not complete within timeout',\n },\n {\n key: 'max-turns',\n type: 'string',\n field: 'maxTurns',\n coerce: validate.positiveInt('--max-turns'),\n placeholder: '<n>',\n help: 'Abort after N agentic turns (exit code 1)',\n },\n {\n key: 'permission-mode',\n type: 'string',\n field: 'permissionMode',\n coerce: validate.enum<PermissionMode>('--permission-mode', VALID_PERMISSION_MODES),\n placeholder: '<mode>',\n help: [\n 'How tool approvals/suspensions resolve:',\n ' auto approve everything (default)',\n ' deny refuse approvals, abort on suspension',\n ],\n },\n {\n key: 'output',\n short: 'o',\n type: 'string',\n field: 'output',\n coerce: validate.enum<OutputMode>('--output', VALID_OUTPUTS),\n placeholder: '<mode>',\n help: [\n 'Output mode: \"human\" (default), \"json\", or \"jsonl\"',\n ' human streaming text to stdout, activity to stderr',\n ' json single final JSON object (text, usage, tools)',\n ' jsonl newline-delimited JSON event stream',\n ],\n },\n {\n key: 'model',\n short: 'm',\n type: 'string',\n field: 'model',\n coerce: validate.string,\n placeholder: '<id>',\n help: 'Model override (e.g., a provider/model id); wins over --pack for the active mode',\n },\n {\n key: 'pack',\n type: 'string',\n field: 'pack',\n coerce: validate.string,\n placeholder: '<id>',\n help: [\n 'Model pack to activate (like /models → Activate): a builtin pack id',\n '(anthropic, openai, github-copilot) or a saved custom pack, by',\n '\"custom:<name>\" or its bare name. Sets the pack for every mode and',\n 'becomes the global default pack. --model overrides it for the active mode.',\n ],\n },\n {\n key: 'mode',\n type: 'string',\n field: 'mode',\n coerce: validate.enum<RunMode>('--mode', VALID_MODES),\n placeholder: '{build|plan|fast}',\n help: 'Execution mode — defaults to \"build\" if omitted',\n },\n {\n key: 'thinking-level',\n type: 'string',\n field: 'thinkingLevel',\n coerce: validate.enum<ThinkingLevel>('--thinking-level', VALID_THINKING_LEVELS),\n placeholder: '<level>',\n help: 'Thinking level: off, low, medium, high, xhigh, max',\n },\n {\n key: 'settings',\n type: 'string',\n field: 'settings',\n coerce: validate.string,\n placeholder: '<path>',\n help: 'Path to settings.json file (default: global settings)',\n },\n {\n key: 'help',\n short: 'h',\n type: 'boolean',\n help: 'Show this help and exit',\n },\n];\n\n/** `parseArgs` option config derived from {@link FLAGS}. */\nexport function buildParseArgsOptions() {\n const options: Record<string, { type: 'string' | 'boolean'; short?: string; default?: boolean }> = {};\n for (const flag of FLAGS) {\n options[flag.key] = flag.type === 'boolean' ? { type: 'boolean', default: false } : { type: 'string' };\n if (flag.short) options[flag.key]!.short = flag.short;\n }\n return options;\n}\n\n/** Render the aligned `--flag description` block of the usage text from {@link FLAGS}. */\nexport function renderFlagUsage(): string {\n const left = (flag: FlagSpec): string => {\n const long = `--${flag.key}`;\n const short = flag.short ? `, -${flag.short}` : '';\n const value = flag.placeholder ? ` ${flag.placeholder}` : '';\n return ` ${long}${short}${value}`;\n };\n\n const rows = FLAGS.map(flag => ({ flag, label: left(flag) }));\n const width = Math.max(...rows.map(r => r.label.length)) + 2;\n\n return rows\n .map(({ flag, label }) => {\n const lines = Array.isArray(flag.help) ? flag.help : [flag.help];\n const first = `${label.padEnd(width)}${lines[0]}`;\n const rest = lines.slice(1).map(line => `${' '.repeat(width)}${line}`);\n return [first, ...rest].join('\\n');\n })\n .join('\\n');\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Output formatters for headless runs. All functions here are pure — they take
|
|
3
|
+
* an event (or a final result) and return strings / plain objects. They never
|
|
4
|
+
* touch `process.*`; the CLI adapter owns the sinks.
|
|
5
|
+
*/
|
|
6
|
+
import type { AgentControllerEvent } from '@mastra/core/agent-controller';
|
|
7
|
+
import type { RunMCResult } from './types.js';
|
|
8
|
+
/** Truncate a string to `max` characters, appending "..." if truncated. */
|
|
9
|
+
export declare function truncate(s: string, max: number): string;
|
|
10
|
+
/** Mutable per-stream cursor used by {@link formatHuman} to stream assistant text. */
|
|
11
|
+
export interface HumanFormatState {
|
|
12
|
+
activeAssistantMessageId?: string;
|
|
13
|
+
lastTextLength: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function createHumanFormatState(): HumanFormatState;
|
|
16
|
+
/** A chunk of formatted output destined for stdout and/or stderr. */
|
|
17
|
+
export interface FormattedOutput {
|
|
18
|
+
stdout?: string;
|
|
19
|
+
stderr?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Human-readable streaming formatter (the historical default). Assistant text
|
|
23
|
+
* streams to stdout; tool/subagent/shell/error activity goes to stderr. The
|
|
24
|
+
* `state` cursor is mutated so repeated `message_update` events only emit the
|
|
25
|
+
* newly-appended text.
|
|
26
|
+
*/
|
|
27
|
+
export declare function formatHuman(event: AgentControllerEvent, state: HumanFormatState): FormattedOutput;
|
|
28
|
+
/**
|
|
29
|
+
* JSONL (stream-json) formatter — returns a plain object to be `JSON.stringify`'d
|
|
30
|
+
* as one line per event by the sink. `Error` instances are normalized so their
|
|
31
|
+
* `name`/`message`/`stack` survive serialization (`JSON.stringify` turns a raw
|
|
32
|
+
* `Error` into `{}`).
|
|
33
|
+
*/
|
|
34
|
+
export declare function formatJsonl(event: AgentControllerEvent): Record<string, unknown>;
|
|
35
|
+
/** Render the final result for `--output text`: assistant text, newline-terminated. */
|
|
36
|
+
export declare function renderTextResult(result: RunMCResult): string;
|
|
37
|
+
/** Render the final result for `--output json`: one JSON object. */
|
|
38
|
+
export declare function renderJsonResult(result: RunMCResult): string;
|
|
39
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/headless/format.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,2EAA2E;AAC3E,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,sFAAsF;AACtF,MAAM,WAAW,gBAAgB;IAC/B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,sBAAsB,IAAI,gBAAgB,CAEzD;AAED,qEAAqE;AACrE,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,gBAAgB,GAAG,eAAe,CAuCjG;AAOD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMhF;AAED,uFAAuF;AACvF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAE5D;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAc5D"}
|