@mastra/code-sdk 0.0.0-livekit-beta-v3-20260709031728
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 +41 -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/dependencies.d.ts +9 -0
- package/dist/plugins/dependencies.d.ts.map +1 -0
- package/dist/plugins/dependencies.js +141 -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 +200 -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 +378 -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 +3 -0
- package/dist/plugins/package-link.d.ts.map +1 -0
- package/dist/plugins/package-link.js +77 -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
package/dist/schema.js
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { DEFAULT_CONFIG_DIR, DEFAULT_OM_MODEL_ID } from "./constants.js";
|
|
3
|
+
const stateSchema = z.object({
|
|
4
|
+
// Session-scoped selection.
|
|
5
|
+
// validates state against this schema, so they MUST be declared here — Zod
|
|
6
|
+
// strips unknown keys on parse, which would otherwise silently discard the
|
|
7
|
+
// seeded model and leave the controller with no model selected.
|
|
8
|
+
currentModelId: z.string().optional(),
|
|
9
|
+
modeId: z.string().optional(),
|
|
10
|
+
subagentModelId: z.string().optional(),
|
|
11
|
+
projectPath: z.string().optional(),
|
|
12
|
+
projectName: z.string().optional(),
|
|
13
|
+
githubProjectId: z.string().optional(),
|
|
14
|
+
sandboxId: z.string().optional(),
|
|
15
|
+
sandboxWorkdir: z.string().optional(),
|
|
16
|
+
worktreePath: z.string().optional(),
|
|
17
|
+
branch: z.string().optional(),
|
|
18
|
+
configDir: z.string().default(DEFAULT_CONFIG_DIR),
|
|
19
|
+
homeDir: z.string().optional(),
|
|
20
|
+
gitBranch: z.string().optional(),
|
|
21
|
+
lastCommand: z.string().optional(),
|
|
22
|
+
// Observational Memory model settings
|
|
23
|
+
observerModelId: z.string().default(DEFAULT_OM_MODEL_ID),
|
|
24
|
+
reflectorModelId: z.string().default(DEFAULT_OM_MODEL_ID),
|
|
25
|
+
// Observational Memory threshold settings
|
|
26
|
+
observationThreshold: z.number().default(3e4),
|
|
27
|
+
reflectionThreshold: z.number().default(4e4),
|
|
28
|
+
// Whether observations and reflections use the terse caveman-style instruction.
|
|
29
|
+
// Off by default — caveman style is opt-in via `/om` settings; observers and
|
|
30
|
+
// reflectors fall back to their built-in (prose) behavior unless enabled.
|
|
31
|
+
cavemanObservations: z.boolean().default(false),
|
|
32
|
+
// Whether OM forwards image/file attachment parts to the Observer LLM.
|
|
33
|
+
// 'auto' (default) checks the provider capabilities registry to decide.
|
|
34
|
+
// true/false forces the setting regardless of model capabilities.
|
|
35
|
+
observeAttachments: z.union([z.literal("auto"), z.boolean()]).default("auto"),
|
|
36
|
+
// Observational Memory scope — 'thread' (per-conversation) or 'resource' (shared across threads)
|
|
37
|
+
omScope: z.enum(["thread", "resource"]).optional(),
|
|
38
|
+
// Thinking level for model reasoning effort
|
|
39
|
+
thinkingLevel: z.enum(["off", "low", "medium", "high", "xhigh"]).default("off"),
|
|
40
|
+
// YOLO mode — auto-approve all tool calls
|
|
41
|
+
yolo: z.boolean().default(false),
|
|
42
|
+
// Permission rules — per-category and per-tool approval policies
|
|
43
|
+
permissionRules: z.object({
|
|
44
|
+
categories: z.record(z.string(), z.enum(["allow", "ask", "deny"])).default({}),
|
|
45
|
+
tools: z.record(z.string(), z.enum(["allow", "ask", "deny"])).default({})
|
|
46
|
+
}).default({ categories: {}, tools: {} }),
|
|
47
|
+
// Smart editing mode — use AST-based analysis for code edits
|
|
48
|
+
smartEditing: z.boolean().default(true),
|
|
49
|
+
// Notification mode — alert when TUI needs user attention
|
|
50
|
+
notifications: z.enum(["bell", "system", "both", "off"]).default("off"),
|
|
51
|
+
// Task list (ephemeral per-thread, cleared on thread switch/creation)
|
|
52
|
+
tasks: z.array(
|
|
53
|
+
z.object({
|
|
54
|
+
id: z.string().optional(),
|
|
55
|
+
content: z.string(),
|
|
56
|
+
status: z.enum(["pending", "in_progress", "completed"]),
|
|
57
|
+
activeForm: z.string()
|
|
58
|
+
})
|
|
59
|
+
).default([]),
|
|
60
|
+
// Sandbox allowed paths (per-thread, absolute paths allowed in addition to project root)
|
|
61
|
+
sandboxAllowedPaths: z.array(z.string()).default([]),
|
|
62
|
+
// Asset directories contributed by active plugins.
|
|
63
|
+
pluginSkillPaths: z.array(z.string()).default([]),
|
|
64
|
+
pluginCommandPaths: z.array(z.string()).default([]),
|
|
65
|
+
pluginInstructions: z.array(z.string()).default([]),
|
|
66
|
+
// Active plan (set when a plan is approved in Plan mode)
|
|
67
|
+
activePlan: z.object({
|
|
68
|
+
title: z.string(),
|
|
69
|
+
plan: z.string(),
|
|
70
|
+
approvedAt: z.string()
|
|
71
|
+
}).nullable().default(null),
|
|
72
|
+
// Active browser settings (tracks what's actually running vs. what's in the settings file)
|
|
73
|
+
activeBrowserSettings: z.object({
|
|
74
|
+
enabled: z.boolean(),
|
|
75
|
+
provider: z.enum(["stagehand", "agent-browser"]),
|
|
76
|
+
headless: z.boolean().optional(),
|
|
77
|
+
viewport: z.object({
|
|
78
|
+
width: z.number(),
|
|
79
|
+
height: z.number()
|
|
80
|
+
}).optional(),
|
|
81
|
+
cdpUrl: z.string().optional(),
|
|
82
|
+
stagehand: z.object({
|
|
83
|
+
env: z.enum(["LOCAL", "BROWSERBASE"]),
|
|
84
|
+
apiKey: z.string().optional(),
|
|
85
|
+
projectId: z.string().optional()
|
|
86
|
+
}).optional()
|
|
87
|
+
}).optional()
|
|
88
|
+
});
|
|
89
|
+
export {
|
|
90
|
+
stateSchema
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/schema.ts"],"sourcesContent":["import { z } from 'zod';\nimport { DEFAULT_CONFIG_DIR, DEFAULT_OM_MODEL_ID } from './constants.js';\n\nexport type PermissionPolicy = 'allow' | 'ask' | 'deny';\n\nexport type MastraCodeSessionState = {\n currentModelId: string;\n modeId: string;\n};\n\nexport type MastraCodeComposedState = MastraCodeState & MastraCodeSessionState;\n\nexport interface MastraCodeState {\n [key: string]: unknown;\n [key: `subagentModelId_${string}`]: string | undefined;\n subagentModelId?: string;\n projectPath?: string;\n projectName?: string;\n /** When set, this project is a GitHub/cloud-sandbox-backed project. */\n githubProjectId?: string;\n /** Persisted sandbox id for reattaching the project's cloud workspace. */\n sandboxId?: string;\n /** Path inside the sandbox the repo is cloned into. */\n sandboxWorkdir?: string;\n /** Active git worktree path inside the sandbox for the current unit of work. */\n worktreePath?: string;\n /** Active feature branch checked out in the worktree. */\n branch?: string;\n configDir: string;\n homeDir?: string;\n gitBranch?: string;\n lastCommand?: string;\n observerModelId: string;\n reflectorModelId: string;\n observationThreshold: number;\n reflectionThreshold: number;\n cavemanObservations: boolean;\n observeAttachments: 'auto' | boolean;\n omScope?: 'thread' | 'resource';\n thinkingLevel: 'off' | 'low' | 'medium' | 'high' | 'xhigh';\n yolo: boolean;\n permissionRules: {\n categories: Record<string, PermissionPolicy>;\n tools: Record<string, PermissionPolicy>;\n };\n smartEditing: boolean;\n notifications: 'bell' | 'system' | 'both' | 'off';\n tasks: Array<{\n id?: string;\n content: string;\n status: 'pending' | 'in_progress' | 'completed';\n activeForm: string;\n }>;\n sandboxAllowedPaths: string[];\n pluginSkillPaths: string[];\n pluginCommandPaths: string[];\n pluginInstructions: string[];\n activePlan: {\n title: string;\n plan: string;\n approvedAt: string;\n } | null;\n activeBrowserSettings?: {\n enabled: boolean;\n provider: 'stagehand' | 'agent-browser';\n headless?: boolean;\n viewport?: {\n width: number;\n height: number;\n };\n cdpUrl?: string;\n stagehand?: {\n env: 'LOCAL' | 'BROWSERBASE';\n apiKey?: string;\n projectId?: string;\n };\n };\n}\n\nexport const stateSchema = z.object({\n // Session-scoped selection.\n // validates state against this schema, so they MUST be declared here — Zod\n // strips unknown keys on parse, which would otherwise silently discard the\n // seeded model and leave the controller with no model selected.\n currentModelId: z.string().optional(),\n modeId: z.string().optional(),\n subagentModelId: z.string().optional(),\n projectPath: z.string().optional(),\n projectName: z.string().optional(),\n githubProjectId: z.string().optional(),\n sandboxId: z.string().optional(),\n sandboxWorkdir: z.string().optional(),\n worktreePath: z.string().optional(),\n branch: z.string().optional(),\n configDir: z.string().default(DEFAULT_CONFIG_DIR),\n homeDir: z.string().optional(),\n gitBranch: z.string().optional(),\n lastCommand: z.string().optional(),\n // Observational Memory model settings\n observerModelId: z.string().default(DEFAULT_OM_MODEL_ID),\n reflectorModelId: z.string().default(DEFAULT_OM_MODEL_ID),\n // Observational Memory threshold settings\n observationThreshold: z.number().default(30_000),\n reflectionThreshold: z.number().default(40_000),\n // Whether observations and reflections use the terse caveman-style instruction.\n // Off by default — caveman style is opt-in via `/om` settings; observers and\n // reflectors fall back to their built-in (prose) behavior unless enabled.\n cavemanObservations: z.boolean().default(false),\n // Whether OM forwards image/file attachment parts to the Observer LLM.\n // 'auto' (default) checks the provider capabilities registry to decide.\n // true/false forces the setting regardless of model capabilities.\n observeAttachments: z.union([z.literal('auto'), z.boolean()]).default('auto'),\n // Observational Memory scope — 'thread' (per-conversation) or 'resource' (shared across threads)\n omScope: z.enum(['thread', 'resource']).optional(),\n // Thinking level for model reasoning effort\n thinkingLevel: z.enum(['off', 'low', 'medium', 'high', 'xhigh']).default('off'),\n // YOLO mode — auto-approve all tool calls\n yolo: z.boolean().default(false),\n // Permission rules — per-category and per-tool approval policies\n permissionRules: z\n .object({\n categories: z.record(z.string(), z.enum(['allow', 'ask', 'deny'])).default({}),\n tools: z.record(z.string(), z.enum(['allow', 'ask', 'deny'])).default({}),\n })\n .default({ categories: {}, tools: {} }),\n // Smart editing mode — use AST-based analysis for code edits\n smartEditing: z.boolean().default(true),\n // Notification mode — alert when TUI needs user attention\n notifications: z.enum(['bell', 'system', 'both', 'off']).default('off'),\n // Task list (ephemeral per-thread, cleared on thread switch/creation)\n tasks: z\n .array(\n z.object({\n id: z.string().optional(),\n content: z.string(),\n status: z.enum(['pending', 'in_progress', 'completed']),\n activeForm: z.string(),\n }),\n )\n .default([]),\n // Sandbox allowed paths (per-thread, absolute paths allowed in addition to project root)\n sandboxAllowedPaths: z.array(z.string()).default([]),\n // Asset directories contributed by active plugins.\n pluginSkillPaths: z.array(z.string()).default([]),\n pluginCommandPaths: z.array(z.string()).default([]),\n pluginInstructions: z.array(z.string()).default([]),\n // Active plan (set when a plan is approved in Plan mode)\n activePlan: z\n .object({\n title: z.string(),\n plan: z.string(),\n approvedAt: z.string(),\n })\n .nullable()\n .default(null),\n // Active browser settings (tracks what's actually running vs. what's in the settings file)\n activeBrowserSettings: z\n .object({\n enabled: z.boolean(),\n provider: z.enum(['stagehand', 'agent-browser']),\n headless: z.boolean().optional(),\n viewport: z\n .object({\n width: z.number(),\n height: z.number(),\n })\n .optional(),\n cdpUrl: z.string().optional(),\n stagehand: z\n .object({\n env: z.enum(['LOCAL', 'BROWSERBASE']),\n apiKey: z.string().optional(),\n projectId: z.string().optional(),\n })\n .optional(),\n })\n .optional(),\n});\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mastra brand palette (immutable — stays constant regardless of theme).
|
|
3
|
+
*
|
|
4
|
+
* Lives outside the TUI so non-TUI code (e.g. mode metadata colors in
|
|
5
|
+
* `createMastraCode`) can use brand colors without importing TUI modules.
|
|
6
|
+
* The TUI's `theme.ts` re-exports this and layers contrast adaptation on top.
|
|
7
|
+
*/
|
|
8
|
+
export declare const mastraBrand: {
|
|
9
|
+
readonly purple: "#7f45e0";
|
|
10
|
+
readonly green: "#16c858";
|
|
11
|
+
readonly orange: "#fdac53";
|
|
12
|
+
readonly pink: "#ff69cc";
|
|
13
|
+
readonly blue: "#2563eb";
|
|
14
|
+
readonly red: "#DC5663";
|
|
15
|
+
readonly yellow: "#e7e67b";
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=theme-palette.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-palette.d.ts","sourceRoot":"","sources":["../src/theme-palette.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,WAAW;;;;;;;;CAQd,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const mastraBrand = {
|
|
2
|
+
purple: "#7f45e0",
|
|
3
|
+
// #b588fe brand is too washed out for terminal
|
|
4
|
+
green: "#16c858",
|
|
5
|
+
// brand green (dark mode primary)
|
|
6
|
+
orange: "#fdac53",
|
|
7
|
+
pink: "#ff69cc",
|
|
8
|
+
blue: "#2563eb",
|
|
9
|
+
// #6ccdfb brand is to washed out
|
|
10
|
+
red: "#DC5663",
|
|
11
|
+
// #ff4758 too intense
|
|
12
|
+
yellow: "#e7e67b"
|
|
13
|
+
};
|
|
14
|
+
export {
|
|
15
|
+
mastraBrand
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=theme-palette.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/theme-palette.ts"],"sourcesContent":["/**\n * Mastra brand palette (immutable — stays constant regardless of theme).\n *\n * Lives outside the TUI so non-TUI code (e.g. mode metadata colors in\n * `createMastraCode`) can use brand colors without importing TUI modules.\n * The TUI's `theme.ts` re-exports this and layers contrast adaptation on top.\n */\nexport const mastraBrand = {\n purple: '#7f45e0', // #b588fe brand is too washed out for terminal\n green: '#16c858', // brand green (dark mode primary)\n orange: '#fdac53',\n pink: '#ff69cc',\n blue: '#2563eb', // #6ccdfb brand is to washed out\n red: '#DC5663', // #ff4758 too intense\n yellow: '#e7e67b',\n} as const;\n"],"mappings":"AAOO,MAAM,cAAc;AAAA,EACzB,QAAQ;AAAA;AAAA,EACR,OAAO;AAAA;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,MAAM;AAAA;AAAA,EACN,KAAK;AAAA;AAAA,EACL,QAAQ;AACV;","names":[]}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mastracode tool name constants.
|
|
3
|
+
*
|
|
4
|
+
* These are the names exposed to the LLM via workspace tool name remapping.
|
|
5
|
+
* Used throughout mastracode for permissions, TUI rendering, tool guidance,
|
|
6
|
+
* subagent allowedTools, etc.
|
|
7
|
+
*
|
|
8
|
+
* The workspace tools get remapped from their core names (e.g. `mastra_workspace_read_file`)
|
|
9
|
+
* to these names (e.g. `view`) via the `name` property in workspace tool config.
|
|
10
|
+
*/
|
|
11
|
+
export declare const MC_TOOLS: {
|
|
12
|
+
readonly VIEW: "view";
|
|
13
|
+
readonly WRITE_FILE: "write_file";
|
|
14
|
+
readonly STRING_REPLACE_LSP: "string_replace_lsp";
|
|
15
|
+
readonly FIND_FILES: "find_files";
|
|
16
|
+
readonly DELETE_FILE: "delete_file";
|
|
17
|
+
readonly FILE_STAT: "file_stat";
|
|
18
|
+
readonly MKDIR: "mkdir";
|
|
19
|
+
readonly SEARCH_CONTENT: "search_content";
|
|
20
|
+
readonly AST_SMART_EDIT: "ast_smart_edit";
|
|
21
|
+
readonly EXECUTE_COMMAND: "execute_command";
|
|
22
|
+
readonly GET_PROCESS_OUTPUT: "get_process_output";
|
|
23
|
+
readonly KILL_PROCESS: "kill_process";
|
|
24
|
+
readonly LSP_INSPECT: "lsp_inspect";
|
|
25
|
+
readonly NOTIFICATION_INBOX: "notification_inbox";
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Workspace tool name remapping config.
|
|
29
|
+
* Maps core workspace tool constants to mastracode's tool names.
|
|
30
|
+
* Pass this (or spread it) into `Workspace({ tools: ... })`.
|
|
31
|
+
*/
|
|
32
|
+
export declare const TOOL_NAME_OVERRIDES: {
|
|
33
|
+
readonly mastra_workspace_read_file: {
|
|
34
|
+
readonly name: "view";
|
|
35
|
+
};
|
|
36
|
+
readonly mastra_workspace_write_file: {
|
|
37
|
+
readonly name: "write_file";
|
|
38
|
+
};
|
|
39
|
+
readonly mastra_workspace_edit_file: {
|
|
40
|
+
readonly name: "string_replace_lsp";
|
|
41
|
+
};
|
|
42
|
+
readonly mastra_workspace_list_files: {
|
|
43
|
+
readonly name: "find_files";
|
|
44
|
+
};
|
|
45
|
+
readonly mastra_workspace_delete: {
|
|
46
|
+
readonly name: "delete_file";
|
|
47
|
+
};
|
|
48
|
+
readonly mastra_workspace_file_stat: {
|
|
49
|
+
readonly name: "file_stat";
|
|
50
|
+
};
|
|
51
|
+
readonly mastra_workspace_mkdir: {
|
|
52
|
+
readonly name: "mkdir";
|
|
53
|
+
};
|
|
54
|
+
readonly mastra_workspace_grep: {
|
|
55
|
+
readonly name: "search_content";
|
|
56
|
+
};
|
|
57
|
+
readonly mastra_workspace_ast_edit: {
|
|
58
|
+
readonly name: "ast_smart_edit";
|
|
59
|
+
};
|
|
60
|
+
readonly mastra_workspace_execute_command: {
|
|
61
|
+
readonly name: "execute_command";
|
|
62
|
+
};
|
|
63
|
+
readonly mastra_workspace_get_process_output: {
|
|
64
|
+
readonly name: "get_process_output";
|
|
65
|
+
};
|
|
66
|
+
readonly mastra_workspace_kill_process: {
|
|
67
|
+
readonly name: "kill_process";
|
|
68
|
+
};
|
|
69
|
+
readonly mastra_workspace_lsp_inspect: {
|
|
70
|
+
readonly name: "lsp_inspect";
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=tool-names.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-names.d.ts","sourceRoot":"","sources":["../src/tool-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;CA0BX,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CActB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { WORKSPACE_TOOLS } from "@mastra/core/workspace";
|
|
2
|
+
const MC_TOOLS = {
|
|
3
|
+
// Filesystem
|
|
4
|
+
VIEW: "view",
|
|
5
|
+
WRITE_FILE: "write_file",
|
|
6
|
+
STRING_REPLACE_LSP: "string_replace_lsp",
|
|
7
|
+
FIND_FILES: "find_files",
|
|
8
|
+
DELETE_FILE: "delete_file",
|
|
9
|
+
FILE_STAT: "file_stat",
|
|
10
|
+
MKDIR: "mkdir",
|
|
11
|
+
// Search
|
|
12
|
+
SEARCH_CONTENT: "search_content",
|
|
13
|
+
// Code intelligence
|
|
14
|
+
AST_SMART_EDIT: "ast_smart_edit",
|
|
15
|
+
// Sandbox
|
|
16
|
+
EXECUTE_COMMAND: "execute_command",
|
|
17
|
+
GET_PROCESS_OUTPUT: "get_process_output",
|
|
18
|
+
KILL_PROCESS: "kill_process",
|
|
19
|
+
// Code intelligence
|
|
20
|
+
LSP_INSPECT: "lsp_inspect",
|
|
21
|
+
// Notifications
|
|
22
|
+
NOTIFICATION_INBOX: "notification_inbox"
|
|
23
|
+
};
|
|
24
|
+
const TOOL_NAME_OVERRIDES = {
|
|
25
|
+
[WORKSPACE_TOOLS.FILESYSTEM.READ_FILE]: { name: MC_TOOLS.VIEW },
|
|
26
|
+
[WORKSPACE_TOOLS.FILESYSTEM.WRITE_FILE]: { name: MC_TOOLS.WRITE_FILE },
|
|
27
|
+
[WORKSPACE_TOOLS.FILESYSTEM.EDIT_FILE]: { name: MC_TOOLS.STRING_REPLACE_LSP },
|
|
28
|
+
[WORKSPACE_TOOLS.FILESYSTEM.LIST_FILES]: { name: MC_TOOLS.FIND_FILES },
|
|
29
|
+
[WORKSPACE_TOOLS.FILESYSTEM.DELETE]: { name: MC_TOOLS.DELETE_FILE },
|
|
30
|
+
[WORKSPACE_TOOLS.FILESYSTEM.FILE_STAT]: { name: MC_TOOLS.FILE_STAT },
|
|
31
|
+
[WORKSPACE_TOOLS.FILESYSTEM.MKDIR]: { name: MC_TOOLS.MKDIR },
|
|
32
|
+
[WORKSPACE_TOOLS.FILESYSTEM.GREP]: { name: MC_TOOLS.SEARCH_CONTENT },
|
|
33
|
+
[WORKSPACE_TOOLS.FILESYSTEM.AST_EDIT]: { name: MC_TOOLS.AST_SMART_EDIT },
|
|
34
|
+
[WORKSPACE_TOOLS.SANDBOX.EXECUTE_COMMAND]: { name: MC_TOOLS.EXECUTE_COMMAND },
|
|
35
|
+
[WORKSPACE_TOOLS.SANDBOX.GET_PROCESS_OUTPUT]: { name: MC_TOOLS.GET_PROCESS_OUTPUT },
|
|
36
|
+
[WORKSPACE_TOOLS.SANDBOX.KILL_PROCESS]: { name: MC_TOOLS.KILL_PROCESS },
|
|
37
|
+
[WORKSPACE_TOOLS.LSP.LSP_INSPECT]: { name: MC_TOOLS.LSP_INSPECT }
|
|
38
|
+
};
|
|
39
|
+
export {
|
|
40
|
+
MC_TOOLS,
|
|
41
|
+
TOOL_NAME_OVERRIDES
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=tool-names.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tool-names.ts"],"sourcesContent":["/**\n * Mastracode tool name constants.\n *\n * These are the names exposed to the LLM via workspace tool name remapping.\n * Used throughout mastracode for permissions, TUI rendering, tool guidance,\n * subagent allowedTools, etc.\n *\n * The workspace tools get remapped from their core names (e.g. `mastra_workspace_read_file`)\n * to these names (e.g. `view`) via the `name` property in workspace tool config.\n */\n\nimport { WORKSPACE_TOOLS } from '@mastra/core/workspace';\n\nexport const MC_TOOLS = {\n // Filesystem\n VIEW: 'view',\n WRITE_FILE: 'write_file',\n STRING_REPLACE_LSP: 'string_replace_lsp',\n FIND_FILES: 'find_files',\n DELETE_FILE: 'delete_file',\n FILE_STAT: 'file_stat',\n MKDIR: 'mkdir',\n\n // Search\n SEARCH_CONTENT: 'search_content',\n\n // Code intelligence\n AST_SMART_EDIT: 'ast_smart_edit',\n\n // Sandbox\n EXECUTE_COMMAND: 'execute_command',\n GET_PROCESS_OUTPUT: 'get_process_output',\n KILL_PROCESS: 'kill_process',\n\n // Code intelligence\n LSP_INSPECT: 'lsp_inspect',\n\n // Notifications\n NOTIFICATION_INBOX: 'notification_inbox',\n} as const;\n\n/**\n * Workspace tool name remapping config.\n * Maps core workspace tool constants to mastracode's tool names.\n * Pass this (or spread it) into `Workspace({ tools: ... })`.\n */\nexport const TOOL_NAME_OVERRIDES = {\n [WORKSPACE_TOOLS.FILESYSTEM.READ_FILE]: { name: MC_TOOLS.VIEW },\n [WORKSPACE_TOOLS.FILESYSTEM.WRITE_FILE]: { name: MC_TOOLS.WRITE_FILE },\n [WORKSPACE_TOOLS.FILESYSTEM.EDIT_FILE]: { name: MC_TOOLS.STRING_REPLACE_LSP },\n [WORKSPACE_TOOLS.FILESYSTEM.LIST_FILES]: { name: MC_TOOLS.FIND_FILES },\n [WORKSPACE_TOOLS.FILESYSTEM.DELETE]: { name: MC_TOOLS.DELETE_FILE },\n [WORKSPACE_TOOLS.FILESYSTEM.FILE_STAT]: { name: MC_TOOLS.FILE_STAT },\n [WORKSPACE_TOOLS.FILESYSTEM.MKDIR]: { name: MC_TOOLS.MKDIR },\n [WORKSPACE_TOOLS.FILESYSTEM.GREP]: { name: MC_TOOLS.SEARCH_CONTENT },\n [WORKSPACE_TOOLS.FILESYSTEM.AST_EDIT]: { name: MC_TOOLS.AST_SMART_EDIT },\n [WORKSPACE_TOOLS.SANDBOX.EXECUTE_COMMAND]: { name: MC_TOOLS.EXECUTE_COMMAND },\n [WORKSPACE_TOOLS.SANDBOX.GET_PROCESS_OUTPUT]: { name: MC_TOOLS.GET_PROCESS_OUTPUT },\n [WORKSPACE_TOOLS.SANDBOX.KILL_PROCESS]: { name: MC_TOOLS.KILL_PROCESS },\n [WORKSPACE_TOOLS.LSP.LSP_INSPECT]: { name: MC_TOOLS.LSP_INSPECT },\n} as const;\n"],"mappings":"AAWA,SAAS,uBAAuB;AAEzB,MAAM,WAAW;AAAA;AAAA,EAEtB,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,oBAAoB;AAAA,EACpB,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,WAAW;AAAA,EACX,OAAO;AAAA;AAAA,EAGP,gBAAgB;AAAA;AAAA,EAGhB,gBAAgB;AAAA;AAAA,EAGhB,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,cAAc;AAAA;AAAA,EAGd,aAAa;AAAA;AAAA,EAGb,oBAAoB;AACtB;AAOO,MAAM,sBAAsB;AAAA,EACjC,CAAC,gBAAgB,WAAW,SAAS,GAAG,EAAE,MAAM,SAAS,KAAK;AAAA,EAC9D,CAAC,gBAAgB,WAAW,UAAU,GAAG,EAAE,MAAM,SAAS,WAAW;AAAA,EACrE,CAAC,gBAAgB,WAAW,SAAS,GAAG,EAAE,MAAM,SAAS,mBAAmB;AAAA,EAC5E,CAAC,gBAAgB,WAAW,UAAU,GAAG,EAAE,MAAM,SAAS,WAAW;AAAA,EACrE,CAAC,gBAAgB,WAAW,MAAM,GAAG,EAAE,MAAM,SAAS,YAAY;AAAA,EAClE,CAAC,gBAAgB,WAAW,SAAS,GAAG,EAAE,MAAM,SAAS,UAAU;AAAA,EACnE,CAAC,gBAAgB,WAAW,KAAK,GAAG,EAAE,MAAM,SAAS,MAAM;AAAA,EAC3D,CAAC,gBAAgB,WAAW,IAAI,GAAG,EAAE,MAAM,SAAS,eAAe;AAAA,EACnE,CAAC,gBAAgB,WAAW,QAAQ,GAAG,EAAE,MAAM,SAAS,eAAe;AAAA,EACvE,CAAC,gBAAgB,QAAQ,eAAe,GAAG,EAAE,MAAM,SAAS,gBAAgB;AAAA,EAC5E,CAAC,gBAAgB,QAAQ,kBAAkB,GAAG,EAAE,MAAM,SAAS,mBAAmB;AAAA,EAClF,CAAC,gBAAgB,QAAQ,YAAY,GAAG,EAAE,MAAM,SAAS,aAAa;AAAA,EACtE,CAAC,gBAAgB,IAAI,WAAW,GAAG,EAAE,MAAM,SAAS,YAAY;AAClE;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { createWebSearchTool, createWebExtractTool, hasTavilyKey } from "./web-search.js";
|
|
2
|
+
import { requestSandboxAccessTool } from "./request-sandbox-access.js";
|
|
3
|
+
export {
|
|
4
|
+
createWebExtractTool,
|
|
5
|
+
createWebSearchTool,
|
|
6
|
+
hasTavilyKey,
|
|
7
|
+
requestSandboxAccessTool
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/tools/index.ts"],"sourcesContent":["/**\n * Tool exports for Mastra Code\n */\n\nexport { createWebSearchTool, createWebExtractTool, hasTavilyKey } from './web-search.js';\nexport { requestSandboxAccessTool } from './request-sandbox-access.js';\n"],"mappings":"AAIA,SAAS,qBAAqB,sBAAsB,oBAAoB;AACxE,SAAS,gCAAgC;","names":[]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* request_access tool — requests permission to access a directory outside the project root.
|
|
3
|
+
* The user can approve or deny the request via TUI dialog.
|
|
4
|
+
*/
|
|
5
|
+
export declare const requestSandboxAccessTool: import("@mastra/core/tools").Tool<unknown, unknown, unknown, unknown, import("@mastra/core/tools").ToolExecutionContext<unknown, unknown, unknown>, string, unknown>;
|
|
6
|
+
//# sourceMappingURL=request-sandbox-access.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-sandbox-access.d.ts","sourceRoot":"","sources":["../../src/tools/request-sandbox-access.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2BH,eAAO,MAAM,wBAAwB,sKA6F5B,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import * as os from "node:os";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import { createTool } from "@mastra/core/tools";
|
|
4
|
+
import { LocalFilesystem } from "@mastra/core/workspace";
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { isPathAllowed, getAllowedPathsFromContext } from "./utils.js";
|
|
7
|
+
function expandTilde(p) {
|
|
8
|
+
if (p === "~") return os.homedir();
|
|
9
|
+
if (p.startsWith("~/") || p.startsWith("~\\")) return path.join(os.homedir(), p.slice(2));
|
|
10
|
+
return p;
|
|
11
|
+
}
|
|
12
|
+
const requestSandboxAccessInputSchema = z.object({
|
|
13
|
+
path: z.string().min(1).describe("The absolute path to the directory you need access to."),
|
|
14
|
+
reason: z.string().min(1).describe("Brief explanation of why you need access to this directory.")
|
|
15
|
+
});
|
|
16
|
+
const requestSandboxAccessTool = createTool({
|
|
17
|
+
id: "request_access",
|
|
18
|
+
description: `Request permission to access a directory outside the current project. Use this when you need to read or write files in a directory that is not within the project root. The user will be prompted to approve or deny the request.`,
|
|
19
|
+
inputSchema: requestSandboxAccessInputSchema,
|
|
20
|
+
suspendSchema: z.object({
|
|
21
|
+
kind: z.literal("sandbox_access_request"),
|
|
22
|
+
path: z.string(),
|
|
23
|
+
reason: z.string()
|
|
24
|
+
}),
|
|
25
|
+
resumeSchema: z.union([z.string(), z.array(z.string())]),
|
|
26
|
+
execute: async ({ path: requestedPath, reason }, context) => {
|
|
27
|
+
try {
|
|
28
|
+
const agentControllerCtx = context?.requestContext?.get("controller");
|
|
29
|
+
const expanded = expandTilde(requestedPath);
|
|
30
|
+
const absolutePath = path.isAbsolute(expanded) ? expanded : path.resolve(process.cwd(), expanded);
|
|
31
|
+
const projectRoot = process.cwd();
|
|
32
|
+
const allowedPaths = getAllowedPathsFromContext(context);
|
|
33
|
+
if (isPathAllowed(absolutePath, projectRoot, allowedPaths)) {
|
|
34
|
+
return {
|
|
35
|
+
content: `Access already granted: "${absolutePath}" is within the project root or allowed paths.`,
|
|
36
|
+
isError: false
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const suspend = context?.agent?.suspend ?? context?.suspend;
|
|
40
|
+
const resumeData = context?.agent?.resumeData ?? context?.resumeData;
|
|
41
|
+
if (resumeData === void 0) {
|
|
42
|
+
if (!suspend) {
|
|
43
|
+
return {
|
|
44
|
+
content: `Cannot request sandbox access: interactive context not available. The user should manually run /sandbox add ${absolutePath}`,
|
|
45
|
+
isError: true
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
await suspend({ kind: "sandbox_access_request", path: absolutePath, reason });
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const answerText = Array.isArray(resumeData) ? resumeData.join(", ") : String(resumeData);
|
|
52
|
+
const approved = answerText.toLowerCase().startsWith("y") || answerText.toLowerCase() === "approve";
|
|
53
|
+
if (approved) {
|
|
54
|
+
const controllerState = agentControllerCtx?.getState();
|
|
55
|
+
const currentAllowed = controllerState?.sandboxAllowedPaths ?? [];
|
|
56
|
+
const nextAllowed = currentAllowed.includes(absolutePath) ? currentAllowed : [...currentAllowed, absolutePath];
|
|
57
|
+
if (!currentAllowed.includes(absolutePath)) {
|
|
58
|
+
await agentControllerCtx?.setState({
|
|
59
|
+
sandboxAllowedPaths: nextAllowed
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
const fs = agentControllerCtx?.workspace?.filesystem ?? context?.workspace?.filesystem;
|
|
63
|
+
if (fs instanceof LocalFilesystem) {
|
|
64
|
+
fs.setAllowedPaths((prev) => [...prev, absolutePath]);
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
content: `Access granted: "${absolutePath}" has been added to allowed paths. You can now access files in this directory.`,
|
|
68
|
+
isError: false
|
|
69
|
+
};
|
|
70
|
+
} else {
|
|
71
|
+
return {
|
|
72
|
+
content: `Access denied: The user declined access to "${absolutePath}".`,
|
|
73
|
+
isError: false
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
} catch (error) {
|
|
77
|
+
const msg = error instanceof Error ? error.message : "Unknown error";
|
|
78
|
+
return {
|
|
79
|
+
content: `Failed to request sandbox access: ${msg}`,
|
|
80
|
+
isError: true
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
export {
|
|
86
|
+
requestSandboxAccessTool
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=request-sandbox-access.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/tools/request-sandbox-access.ts"],"sourcesContent":["/**\n * request_access tool — requests permission to access a directory outside the project root.\n * The user can approve or deny the request via TUI dialog.\n */\n\nimport * as os from 'node:os';\nimport * as path from 'node:path';\nimport type { AgentControllerRequestContext } from '@mastra/core/agent-controller';\nimport { createTool } from '@mastra/core/tools';\nimport { LocalFilesystem } from '@mastra/core/workspace';\nimport { z } from 'zod';\nimport type { MastraCodeState } from '../schema.js';\nimport { isPathAllowed, getAllowedPathsFromContext } from './utils.js';\n\nfunction expandTilde(p: string): string {\n if (p === '~') return os.homedir();\n if (p.startsWith('~/') || p.startsWith('~\\\\')) return path.join(os.homedir(), p.slice(2));\n return p;\n}\n\ntype RequestSandboxAccessInput = {\n path: string;\n reason: string;\n};\n\nconst requestSandboxAccessInputSchema = z.object({\n path: z.string().min(1).describe('The absolute path to the directory you need access to.'),\n reason: z.string().min(1).describe('Brief explanation of why you need access to this directory.'),\n});\n\nexport const requestSandboxAccessTool = createTool({\n id: 'request_access',\n description: `Request permission to access a directory outside the current project. Use this when you need to read or write files in a directory that is not within the project root. The user will be prompted to approve or deny the request.`,\n inputSchema: requestSandboxAccessInputSchema,\n suspendSchema: z.object({\n kind: z.literal('sandbox_access_request'),\n path: z.string(),\n reason: z.string(),\n }),\n resumeSchema: z.union([z.string(), z.array(z.string())]),\n execute: async ({ path: requestedPath, reason }: RequestSandboxAccessInput, context: any) => {\n try {\n const agentControllerCtx = context?.requestContext?.get('controller') as\n | AgentControllerRequestContext<MastraCodeState>\n | undefined;\n\n // Resolve to absolute path (expand ~ first since Node path APIs don't handle it)\n const expanded = expandTilde(requestedPath);\n const absolutePath = path.isAbsolute(expanded) ? expanded : path.resolve(process.cwd(), expanded);\n\n // Check if already allowed\n const projectRoot = process.cwd();\n const allowedPaths = getAllowedPathsFromContext(context);\n if (isPathAllowed(absolutePath, projectRoot, allowedPaths)) {\n return {\n content: `Access already granted: \"${absolutePath}\" is within the project root or allowed paths.`,\n isError: false,\n };\n }\n\n const suspend = context?.agent?.suspend ?? context?.suspend;\n const resumeData = context?.agent?.resumeData ?? context?.resumeData;\n\n // First pass: pause via the native tool-suspension primitive so the host can\n // prompt the user. The suspend payload carries the request details; the host\n // resumes with the user's answer as resume data.\n if (resumeData === undefined) {\n if (!suspend) {\n return {\n content: `Cannot request sandbox access: interactive context not available. The user should manually run /sandbox add ${absolutePath}`,\n isError: true,\n };\n }\n await suspend({ kind: 'sandbox_access_request', path: absolutePath, reason });\n return;\n }\n\n const answerText = Array.isArray(resumeData) ? resumeData.join(', ') : String(resumeData);\n const approved = answerText.toLowerCase().startsWith('y') || answerText.toLowerCase() === 'approve';\n if (approved) {\n // Persist to controller state first (and await it) so the value is\n // committed before the next tool call re-derives the workspace's\n // allowed paths from state. The workspace factory rebuilds the\n // filesystem allowlist from `sandboxAllowedPaths` on every call\n // (getDynamicWorkspace), so an unawaited setState would let that\n // rebuild clobber the in-turn widen below before the grant lands.\n const controllerState = agentControllerCtx?.getState();\n const currentAllowed = (controllerState?.sandboxAllowedPaths as string[] | undefined) ?? [];\n const nextAllowed = currentAllowed.includes(absolutePath) ? currentAllowed : [...currentAllowed, absolutePath];\n if (!currentAllowed.includes(absolutePath)) {\n await agentControllerCtx?.setState({\n sandboxAllowedPaths: nextAllowed,\n });\n }\n\n // Also update the live workspace filesystem immediately so tools in\n // the same turn (e.g. `view`) can access the path without waiting for\n // a fresh workspace build. The resolved workspace is carried on the\n // controller request context — the tool-execution context does not expose\n // it — so read the filesystem from there.\n const fs = agentControllerCtx?.workspace?.filesystem ?? context?.workspace?.filesystem;\n if (fs instanceof LocalFilesystem) {\n fs.setAllowedPaths((prev: readonly string[]) => [...prev, absolutePath]);\n }\n\n return {\n content: `Access granted: \"${absolutePath}\" has been added to allowed paths. You can now access files in this directory.`,\n isError: false,\n };\n } else {\n return {\n content: `Access denied: The user declined access to \"${absolutePath}\".`,\n isError: false,\n };\n }\n } catch (error) {\n const msg = error instanceof Error ? error.message : 'Unknown error';\n return {\n content: `Failed to request sandbox access: ${msg}`,\n isError: true,\n };\n }\n },\n} as any);\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check whether `targetPath` falls inside `projectRoot` or any of the
|
|
3
|
+
* additional `allowedPaths`. All arguments are expected to be absolute.
|
|
4
|
+
*
|
|
5
|
+
* Returns `true` when access should be **allowed**.
|
|
6
|
+
*/
|
|
7
|
+
export declare function isPathAllowed(targetPath: string, projectRoot: string, allowedPaths?: string[]): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Read allowed paths from the Mastra controller runtime context.
|
|
10
|
+
* Combines skill paths (computed dynamically from projectPath and configDir)
|
|
11
|
+
* with user-approved sandbox paths from controller state so that both parent
|
|
12
|
+
* and subagent tools have the same access.
|
|
13
|
+
* Returns default skill paths when the context is unavailable (e.g. in tests).
|
|
14
|
+
*/
|
|
15
|
+
export declare function getAllowedPathsFromContext(toolContext: {
|
|
16
|
+
requestContext?: {
|
|
17
|
+
get: (key: string) => unknown;
|
|
18
|
+
};
|
|
19
|
+
} | undefined): string[];
|
|
20
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/tools/utils.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,GAAE,MAAM,EAAO,GAAG,OAAO,CAK3G;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE;IAAE,cAAc,CAAC,EAAE;QAAE,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;KAAE,CAAA;CAAE,GAAG,SAAS,GAC9E,MAAM,EAAE,CAgBV"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as path from "node:path";
|
|
2
|
+
import { buildSkillPaths } from "../agents/workspace.js";
|
|
3
|
+
import { DEFAULT_CONFIG_DIR } from "../constants.js";
|
|
4
|
+
function isPathAllowed(targetPath, projectRoot, allowedPaths = []) {
|
|
5
|
+
const resolved = path.resolve(targetPath);
|
|
6
|
+
const roots = [projectRoot, ...allowedPaths].map((p) => path.resolve(p));
|
|
7
|
+
return roots.some((root) => resolved === root || resolved.startsWith(root + path.sep));
|
|
8
|
+
}
|
|
9
|
+
function getAllowedPathsFromContext(toolContext) {
|
|
10
|
+
const agentControllerCtx = toolContext?.requestContext?.get("controller");
|
|
11
|
+
const state = agentControllerCtx?.getState?.() ?? agentControllerCtx?.session?.state?.get?.();
|
|
12
|
+
const projectPath = state?.projectPath ? path.resolve(state.projectPath) : process.cwd();
|
|
13
|
+
const configDir = state?.configDir ?? DEFAULT_CONFIG_DIR;
|
|
14
|
+
const skillPaths = buildSkillPaths(projectPath, configDir);
|
|
15
|
+
const sandboxPaths = state?.sandboxAllowedPaths ?? [];
|
|
16
|
+
return [...skillPaths, ...sandboxPaths];
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
getAllowedPathsFromContext,
|
|
20
|
+
isPathAllowed
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/tools/utils.ts"],"sourcesContent":["import * as path from 'node:path';\nimport { buildSkillPaths } from '../agents/workspace.js';\nimport { DEFAULT_CONFIG_DIR } from '../constants.js';\n\n/**\n * Check whether `targetPath` falls inside `projectRoot` or any of the\n * additional `allowedPaths`. All arguments are expected to be absolute.\n *\n * Returns `true` when access should be **allowed**.\n */\nexport function isPathAllowed(targetPath: string, projectRoot: string, allowedPaths: string[] = []): boolean {\n const resolved = path.resolve(targetPath);\n const roots = [projectRoot, ...allowedPaths].map(p => path.resolve(p));\n\n return roots.some(root => resolved === root || resolved.startsWith(root + path.sep));\n}\n\n/**\n * Read allowed paths from the Mastra controller runtime context.\n * Combines skill paths (computed dynamically from projectPath and configDir)\n * with user-approved sandbox paths from controller state so that both parent\n * and subagent tools have the same access.\n * Returns default skill paths when the context is unavailable (e.g. in tests).\n */\nexport function getAllowedPathsFromContext(\n toolContext: { requestContext?: { get: (key: string) => unknown } } | undefined,\n): string[] {\n const agentControllerCtx = toolContext?.requestContext?.get('controller') as\n | {\n getState?: () => { sandboxAllowedPaths?: string[]; projectPath?: string; configDir?: string };\n session?: {\n state?: { get?: () => { sandboxAllowedPaths?: string[]; projectPath?: string; configDir?: string } };\n };\n }\n | undefined;\n const state = agentControllerCtx?.getState?.() ?? agentControllerCtx?.session?.state?.get?.();\n const projectPath = state?.projectPath ? path.resolve(state.projectPath) : process.cwd();\n const configDir = state?.configDir ?? DEFAULT_CONFIG_DIR;\n const skillPaths = buildSkillPaths(projectPath, configDir);\n const sandboxPaths = state?.sandboxAllowedPaths ?? [];\n\n return [...skillPaths, ...sandboxPaths];\n}\n"],"mappings":"AAAA,YAAY,UAAU;AACtB,SAAS,uBAAuB;AAChC,SAAS,0BAA0B;AAQ5B,SAAS,cAAc,YAAoB,aAAqB,eAAyB,CAAC,GAAY;AAC3G,QAAM,WAAW,KAAK,QAAQ,UAAU;AACxC,QAAM,QAAQ,CAAC,aAAa,GAAG,YAAY,EAAE,IAAI,OAAK,KAAK,QAAQ,CAAC,CAAC;AAErE,SAAO,MAAM,KAAK,UAAQ,aAAa,QAAQ,SAAS,WAAW,OAAO,KAAK,GAAG,CAAC;AACrF;AASO,SAAS,2BACd,aACU;AACV,QAAM,qBAAqB,aAAa,gBAAgB,IAAI,YAAY;AAQxE,QAAM,QAAQ,oBAAoB,WAAW,KAAK,oBAAoB,SAAS,OAAO,MAAM;AAC5F,QAAM,cAAc,OAAO,cAAc,KAAK,QAAQ,MAAM,WAAW,IAAI,QAAQ,IAAI;AACvF,QAAM,YAAY,OAAO,aAAa;AACtC,QAAM,aAAa,gBAAgB,aAAa,SAAS;AACzD,QAAM,eAAe,OAAO,uBAAuB,CAAC;AAEpD,SAAO,CAAC,GAAG,YAAY,GAAG,YAAY;AACxC;","names":[]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check whether a Tavily API key is available in the environment.
|
|
3
|
+
* Used by main.ts to decide whether to include Tavily tools or fall back
|
|
4
|
+
* to Anthropic's native web search.
|
|
5
|
+
*/
|
|
6
|
+
export declare function hasTavilyKey(): boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Wraps the @mastra/tavily search tool with mastracode-specific behavior:
|
|
9
|
+
* relevance filtering, markdown string formatting, and token truncation.
|
|
10
|
+
* The underlying Tavily tool handles client init, input validation, and the API call.
|
|
11
|
+
*/
|
|
12
|
+
export declare function createWebSearchTool(): import("@mastra/core/tools").Tool<{
|
|
13
|
+
query: string;
|
|
14
|
+
searchDepth?: "basic" | "advanced" | "fast" | "ultra-fast" | undefined;
|
|
15
|
+
maxResults?: number | undefined;
|
|
16
|
+
includeAnswer?: boolean | "basic" | "advanced" | undefined;
|
|
17
|
+
includeImages?: boolean | undefined;
|
|
18
|
+
includeImageDescriptions?: boolean | undefined;
|
|
19
|
+
includeRawContent?: false | "markdown" | "text" | undefined;
|
|
20
|
+
includeDomains?: string[] | undefined;
|
|
21
|
+
excludeDomains?: string[] | undefined;
|
|
22
|
+
timeRange?: "day" | "week" | "month" | "year" | undefined;
|
|
23
|
+
}, unknown, unknown, unknown, import("@mastra/core/tools").ToolExecutionContext<unknown, unknown, unknown>, "web-search", unknown>;
|
|
24
|
+
/**
|
|
25
|
+
* Wraps the @mastra/tavily extract tool with mastracode-specific behavior:
|
|
26
|
+
* markdown string formatting and token truncation.
|
|
27
|
+
*/
|
|
28
|
+
export declare function createWebExtractTool(): import("@mastra/core/tools").Tool<{
|
|
29
|
+
urls: string[];
|
|
30
|
+
extractDepth?: "basic" | "advanced" | undefined;
|
|
31
|
+
query?: string | undefined;
|
|
32
|
+
includeImages?: boolean | undefined;
|
|
33
|
+
format?: "markdown" | "text" | undefined;
|
|
34
|
+
}, unknown, unknown, unknown, import("@mastra/core/tools").ToolExecutionContext<unknown, unknown, unknown>, "web-extract", unknown>;
|
|
35
|
+
//# sourceMappingURL=web-search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-search.d.ts","sourceRoot":"","sources":["../../src/tools/web-search.ts"],"names":[],"mappings":"AAUA;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB;;;;;;;;;;;mIA8BlC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB;;;;;;oIAwBnC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { createTool } from "@mastra/core/tools";
|
|
2
|
+
import { createTavilySearchTool, createTavilyExtractTool } from "@mastra/tavily";
|
|
3
|
+
import { truncateStringForTokenEstimate } from "../utils/token-estimator.js";
|
|
4
|
+
const MAX_WEB_SEARCH_TOKENS = 2e3;
|
|
5
|
+
const MAX_WEB_EXTRACT_TOKENS = 2e3;
|
|
6
|
+
const MIN_RELEVANCE_SCORE = 0.25;
|
|
7
|
+
function hasTavilyKey() {
|
|
8
|
+
return !!process.env.TAVILY_API_KEY;
|
|
9
|
+
}
|
|
10
|
+
function createWebSearchTool() {
|
|
11
|
+
const tavilySearchTool = createTavilySearchTool();
|
|
12
|
+
return createTool({
|
|
13
|
+
id: "web-search",
|
|
14
|
+
description: tavilySearchTool.description,
|
|
15
|
+
inputSchema: tavilySearchTool.inputSchema,
|
|
16
|
+
execute: async (input, context) => {
|
|
17
|
+
const output = await tavilySearchTool.execute(input, context);
|
|
18
|
+
const parts = [];
|
|
19
|
+
if (output.answer) {
|
|
20
|
+
parts.push(`Answer: ${output.answer}`);
|
|
21
|
+
}
|
|
22
|
+
const filtered = output.results.filter((r) => (r.score ?? 1) >= MIN_RELEVANCE_SCORE);
|
|
23
|
+
for (const r of filtered) {
|
|
24
|
+
parts.push(`## ${r.title}
|
|
25
|
+
${r.url}
|
|
26
|
+
${r.content}`);
|
|
27
|
+
}
|
|
28
|
+
const images = (output.images || []).map((img) => img.url).filter(Boolean);
|
|
29
|
+
if (images.length > 0) {
|
|
30
|
+
parts.push(`Images:
|
|
31
|
+
${images.join("\n")}`);
|
|
32
|
+
}
|
|
33
|
+
const text = parts.join("\n\n");
|
|
34
|
+
return truncateStringForTokenEstimate(text, MAX_WEB_SEARCH_TOKENS);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function createWebExtractTool() {
|
|
39
|
+
const tavilyExtractTool = createTavilyExtractTool();
|
|
40
|
+
return createTool({
|
|
41
|
+
id: "web-extract",
|
|
42
|
+
description: tavilyExtractTool.description,
|
|
43
|
+
inputSchema: tavilyExtractTool.inputSchema,
|
|
44
|
+
execute: async (input, context) => {
|
|
45
|
+
const output = await tavilyExtractTool.execute(input, context);
|
|
46
|
+
const parts = [];
|
|
47
|
+
for (const r of output.results) {
|
|
48
|
+
parts.push(`## ${r.url}
|
|
49
|
+
${r.rawContent}`);
|
|
50
|
+
}
|
|
51
|
+
for (const r of output.failedResults) {
|
|
52
|
+
parts.push(`## ${r.url}
|
|
53
|
+
Error: ${r.error}`);
|
|
54
|
+
}
|
|
55
|
+
const text = parts.join("\n\n");
|
|
56
|
+
return truncateStringForTokenEstimate(text, MAX_WEB_EXTRACT_TOKENS);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
export {
|
|
61
|
+
createWebExtractTool,
|
|
62
|
+
createWebSearchTool,
|
|
63
|
+
hasTavilyKey
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=web-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/tools/web-search.ts"],"sourcesContent":["import { createTool } from '@mastra/core/tools';\nimport { createTavilySearchTool, createTavilyExtractTool } from '@mastra/tavily';\n\nimport { truncateStringForTokenEstimate } from '../utils/token-estimator.js';\n\nconst MAX_WEB_SEARCH_TOKENS = 2_000;\nconst MAX_WEB_EXTRACT_TOKENS = 2_000;\n\nconst MIN_RELEVANCE_SCORE = 0.25;\n\n/**\n * Check whether a Tavily API key is available in the environment.\n * Used by main.ts to decide whether to include Tavily tools or fall back\n * to Anthropic's native web search.\n */\nexport function hasTavilyKey(): boolean {\n return !!process.env.TAVILY_API_KEY;\n}\n\n/**\n * Wraps the @mastra/tavily search tool with mastracode-specific behavior:\n * relevance filtering, markdown string formatting, and token truncation.\n * The underlying Tavily tool handles client init, input validation, and the API call.\n */\nexport function createWebSearchTool() {\n const tavilySearchTool = createTavilySearchTool();\n\n return createTool({\n id: 'web-search',\n description: tavilySearchTool.description!,\n inputSchema: tavilySearchTool.inputSchema!,\n execute: async (input, context) => {\n const output: any = await tavilySearchTool.execute!(input as any, context as any);\n\n const parts: string[] = [];\n\n if (output.answer) {\n parts.push(`Answer: ${output.answer}`);\n }\n\n const filtered = output.results.filter((r: any) => (r.score ?? 1) >= MIN_RELEVANCE_SCORE);\n for (const r of filtered) {\n parts.push(`## ${r.title}\\n${r.url}\\n${r.content}`);\n }\n\n const images = (output.images || []).map((img: any) => img.url).filter(Boolean);\n if (images.length > 0) {\n parts.push(`Images:\\n${images.join('\\n')}`);\n }\n\n const text = parts.join('\\n\\n');\n return truncateStringForTokenEstimate(text, MAX_WEB_SEARCH_TOKENS);\n },\n });\n}\n\n/**\n * Wraps the @mastra/tavily extract tool with mastracode-specific behavior:\n * markdown string formatting and token truncation.\n */\nexport function createWebExtractTool() {\n const tavilyExtractTool = createTavilyExtractTool();\n\n return createTool({\n id: 'web-extract',\n description: tavilyExtractTool.description!,\n inputSchema: tavilyExtractTool.inputSchema!,\n execute: async (input, context) => {\n const output: any = await tavilyExtractTool.execute!(input as any, context as any);\n\n const parts: string[] = [];\n\n for (const r of output.results) {\n parts.push(`## ${r.url}\\n${r.rawContent}`);\n }\n\n for (const r of output.failedResults) {\n parts.push(`## ${r.url}\\nError: ${r.error}`);\n }\n\n const text = parts.join('\\n\\n');\n return truncateStringForTokenEstimate(text, MAX_WEB_EXTRACT_TOKENS);\n },\n });\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAC3B,SAAS,wBAAwB,+BAA+B;AAEhE,SAAS,sCAAsC;AAE/C,MAAM,wBAAwB;AAC9B,MAAM,yBAAyB;AAE/B,MAAM,sBAAsB;AAOrB,SAAS,eAAwB;AACtC,SAAO,CAAC,CAAC,QAAQ,IAAI;AACvB;AAOO,SAAS,sBAAsB;AACpC,QAAM,mBAAmB,uBAAuB;AAEhD,SAAO,WAAW;AAAA,IAChB,IAAI;AAAA,IACJ,aAAa,iBAAiB;AAAA,IAC9B,aAAa,iBAAiB;AAAA,IAC9B,SAAS,OAAO,OAAO,YAAY;AACjC,YAAM,SAAc,MAAM,iBAAiB,QAAS,OAAc,OAAc;AAEhF,YAAM,QAAkB,CAAC;AAEzB,UAAI,OAAO,QAAQ;AACjB,cAAM,KAAK,WAAW,OAAO,MAAM,EAAE;AAAA,MACvC;AAEA,YAAM,WAAW,OAAO,QAAQ,OAAO,CAAC,OAAY,EAAE,SAAS,MAAM,mBAAmB;AACxF,iBAAW,KAAK,UAAU;AACxB,cAAM,KAAK,MAAM,EAAE,KAAK;AAAA,EAAK,EAAE,GAAG;AAAA,EAAK,EAAE,OAAO,EAAE;AAAA,MACpD;AAEA,YAAM,UAAU,OAAO,UAAU,CAAC,GAAG,IAAI,CAAC,QAAa,IAAI,GAAG,EAAE,OAAO,OAAO;AAC9E,UAAI,OAAO,SAAS,GAAG;AACrB,cAAM,KAAK;AAAA,EAAY,OAAO,KAAK,IAAI,CAAC,EAAE;AAAA,MAC5C;AAEA,YAAM,OAAO,MAAM,KAAK,MAAM;AAC9B,aAAO,+BAA+B,MAAM,qBAAqB;AAAA,IACnE;AAAA,EACF,CAAC;AACH;AAMO,SAAS,uBAAuB;AACrC,QAAM,oBAAoB,wBAAwB;AAElD,SAAO,WAAW;AAAA,IAChB,IAAI;AAAA,IACJ,aAAa,kBAAkB;AAAA,IAC/B,aAAa,kBAAkB;AAAA,IAC/B,SAAS,OAAO,OAAO,YAAY;AACjC,YAAM,SAAc,MAAM,kBAAkB,QAAS,OAAc,OAAc;AAEjF,YAAM,QAAkB,CAAC;AAEzB,iBAAW,KAAK,OAAO,SAAS;AAC9B,cAAM,KAAK,MAAM,EAAE,GAAG;AAAA,EAAK,EAAE,UAAU,EAAE;AAAA,MAC3C;AAEA,iBAAW,KAAK,OAAO,eAAe;AACpC,cAAM,KAAK,MAAM,EAAE,GAAG;AAAA,SAAY,EAAE,KAAK,EAAE;AAAA,MAC7C;AAEA,YAAM,OAAO,MAAM,KAAK,MAAM;AAC9B,aAAO,+BAA+B,MAAM,sBAAsB;AAAA,IACpE;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binaries.d.ts","sourceRoot":"","sources":["../../src/utils/binaries.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAmDD,wBAAgB,oBAAoB,IAAI,YAAY,EAAE,CAOrD;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAiBzE"}
|