@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language.d.ts","sourceRoot":"","sources":["../../src/lsp/language.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA+CtD,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGlE"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
const LANGUAGE_EXTENSIONS = {
|
|
2
|
+
// TypeScript/JavaScript
|
|
3
|
+
".ts": "typescript",
|
|
4
|
+
".tsx": "typescriptreact",
|
|
5
|
+
".js": "javascript",
|
|
6
|
+
".jsx": "javascriptreact",
|
|
7
|
+
".mjs": "javascript",
|
|
8
|
+
".cjs": "javascript",
|
|
9
|
+
// Python
|
|
10
|
+
".py": "python",
|
|
11
|
+
".pyi": "python",
|
|
12
|
+
// Go
|
|
13
|
+
".go": "go",
|
|
14
|
+
// Rust
|
|
15
|
+
".rs": "rust",
|
|
16
|
+
// C/C++
|
|
17
|
+
".c": "c",
|
|
18
|
+
".cpp": "cpp",
|
|
19
|
+
".cc": "cpp",
|
|
20
|
+
".cxx": "cpp",
|
|
21
|
+
".h": "c",
|
|
22
|
+
".hpp": "cpp",
|
|
23
|
+
// Java
|
|
24
|
+
".java": "java",
|
|
25
|
+
// JSON
|
|
26
|
+
".json": "json",
|
|
27
|
+
".jsonc": "jsonc",
|
|
28
|
+
// YAML
|
|
29
|
+
".yaml": "yaml",
|
|
30
|
+
".yml": "yaml",
|
|
31
|
+
// Markdown
|
|
32
|
+
".md": "markdown",
|
|
33
|
+
// HTML/CSS
|
|
34
|
+
".html": "html",
|
|
35
|
+
".css": "css",
|
|
36
|
+
".scss": "scss",
|
|
37
|
+
".sass": "sass",
|
|
38
|
+
".less": "less"
|
|
39
|
+
};
|
|
40
|
+
function getLanguageId(filePath) {
|
|
41
|
+
const ext = filePath.substring(filePath.lastIndexOf("."));
|
|
42
|
+
return LANGUAGE_EXTENSIONS[ext];
|
|
43
|
+
}
|
|
44
|
+
export {
|
|
45
|
+
LANGUAGE_EXTENSIONS,
|
|
46
|
+
getLanguageId
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=language.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lsp/language.ts"],"sourcesContent":["/**\n * Maps file extensions to LSP language identifiers\n */\nexport const LANGUAGE_EXTENSIONS: Record<string, string> = {\n // TypeScript/JavaScript\n '.ts': 'typescript',\n '.tsx': 'typescriptreact',\n '.js': 'javascript',\n '.jsx': 'javascriptreact',\n '.mjs': 'javascript',\n '.cjs': 'javascript',\n\n // Python\n '.py': 'python',\n '.pyi': 'python',\n\n // Go\n '.go': 'go',\n\n // Rust\n '.rs': 'rust',\n\n // C/C++\n '.c': 'c',\n '.cpp': 'cpp',\n '.cc': 'cpp',\n '.cxx': 'cpp',\n '.h': 'c',\n '.hpp': 'cpp',\n\n // Java\n '.java': 'java',\n\n // JSON\n '.json': 'json',\n '.jsonc': 'jsonc',\n\n // YAML\n '.yaml': 'yaml',\n '.yml': 'yaml',\n\n // Markdown\n '.md': 'markdown',\n\n // HTML/CSS\n '.html': 'html',\n '.css': 'css',\n '.scss': 'scss',\n '.sass': 'sass',\n '.less': 'less',\n};\n\n/**\n * Get LSP language ID for a file path\n */\nexport function getLanguageId(filePath: string): string | undefined {\n const ext = filePath.substring(filePath.lastIndexOf('.'));\n return LANGUAGE_EXTENSIONS[ext];\n}\n"],"mappings":"AAGO,MAAM,sBAA8C;AAAA;AAAA,EAEzD,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA;AAAA,EAGR,OAAO;AAAA,EACP,QAAQ;AAAA;AAAA,EAGR,OAAO;AAAA;AAAA,EAGP,OAAO;AAAA;AAAA,EAGP,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,QAAQ;AAAA;AAAA,EAGR,SAAS;AAAA;AAAA,EAGT,SAAS;AAAA,EACT,UAAU;AAAA;AAAA,EAGV,SAAS;AAAA,EACT,QAAQ;AAAA;AAAA,EAGR,OAAO;AAAA;AAAA,EAGP,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AACX;AAKO,SAAS,cAAc,UAAsC;AAClE,QAAM,MAAM,SAAS,UAAU,SAAS,YAAY,GAAG,CAAC;AACxD,SAAO,oBAAoB,GAAG;AAChC;","names":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { LSPClient } from './client.js';
|
|
2
|
+
/**
|
|
3
|
+
* Singleton LSP client manager that keeps clients alive and reuses them
|
|
4
|
+
* across tool calls for better performance and accuracy
|
|
5
|
+
*/
|
|
6
|
+
declare class LSPManager {
|
|
7
|
+
private clients;
|
|
8
|
+
private initializationPromises;
|
|
9
|
+
/**
|
|
10
|
+
* Get or create an LSP client for a file
|
|
11
|
+
* Returns null if no LSP server is available for the file
|
|
12
|
+
*/
|
|
13
|
+
getClient(filePath: string, workspaceRoot: string): Promise<LSPClient | null>;
|
|
14
|
+
/**
|
|
15
|
+
* Shutdown a specific client
|
|
16
|
+
*/
|
|
17
|
+
shutdownClient(workspaceRoot: string, serverName?: string): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Shutdown all clients
|
|
20
|
+
*/
|
|
21
|
+
shutdownAll(): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Get the number of active clients
|
|
24
|
+
*/
|
|
25
|
+
getActiveClientCount(): number;
|
|
26
|
+
/**
|
|
27
|
+
* Close a document in all active clients
|
|
28
|
+
* This is useful for tests that reuse the same file path
|
|
29
|
+
*/
|
|
30
|
+
closeDocument(filePath: string): void;
|
|
31
|
+
}
|
|
32
|
+
export declare const lspManager: LSPManager;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/lsp/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC;;;GAGG;AACH,cAAM,UAAU;IACd,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,sBAAsB,CAAyC;IAEvE;;;OAGG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IA2DnF;;OAEG;IACG,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe/E;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAOlC;;OAEG;IACH,oBAAoB,IAAI,MAAM;IAI9B;;;OAGG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAStC;AAGD,eAAO,MAAM,UAAU,YAAmB,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { LSPClient } from "./client.js";
|
|
2
|
+
import { getServersForFile } from "./server.js";
|
|
3
|
+
class LSPManager {
|
|
4
|
+
clients = /* @__PURE__ */ new Map();
|
|
5
|
+
initializationPromises = /* @__PURE__ */ new Map();
|
|
6
|
+
/**
|
|
7
|
+
* Get or create an LSP client for a file
|
|
8
|
+
* Returns null if no LSP server is available for the file
|
|
9
|
+
*/
|
|
10
|
+
async getClient(filePath, workspaceRoot) {
|
|
11
|
+
const servers = getServersForFile(filePath, workspaceRoot);
|
|
12
|
+
if (servers.length === 0) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
const serverInfo = servers.find(
|
|
16
|
+
(s) => s.languageIds.includes("typescript") || s.languageIds.includes("javascript") || s.languageIds.includes("python") || s.languageIds.includes("go")
|
|
17
|
+
) || servers[0];
|
|
18
|
+
if (!serverInfo) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const key = `${serverInfo.name}:${workspaceRoot}`;
|
|
22
|
+
if (this.clients.has(key)) {
|
|
23
|
+
return this.clients.get(key);
|
|
24
|
+
}
|
|
25
|
+
if (this.initializationPromises.has(key)) {
|
|
26
|
+
await this.initializationPromises.get(key);
|
|
27
|
+
return this.clients.get(key) || null;
|
|
28
|
+
}
|
|
29
|
+
const initPromise = (async () => {
|
|
30
|
+
const client = new LSPClient(serverInfo, workspaceRoot);
|
|
31
|
+
await client.initialize();
|
|
32
|
+
this.clients.set(key, client);
|
|
33
|
+
})();
|
|
34
|
+
this.initializationPromises.set(key, initPromise);
|
|
35
|
+
try {
|
|
36
|
+
await Promise.race([
|
|
37
|
+
initPromise,
|
|
38
|
+
new Promise(
|
|
39
|
+
(_, reject) => setTimeout(() => reject(new Error("LSP client initialization timed out")), 15e3)
|
|
40
|
+
)
|
|
41
|
+
]);
|
|
42
|
+
return this.clients.get(key) || null;
|
|
43
|
+
} catch {
|
|
44
|
+
this.clients.delete(key);
|
|
45
|
+
return null;
|
|
46
|
+
} finally {
|
|
47
|
+
this.initializationPromises.delete(key);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Shutdown a specific client
|
|
52
|
+
*/
|
|
53
|
+
async shutdownClient(workspaceRoot, serverName) {
|
|
54
|
+
const keysToRemove = [];
|
|
55
|
+
for (const [key, client] of this.clients.entries()) {
|
|
56
|
+
if (key.includes(workspaceRoot) && (!serverName || key.startsWith(serverName))) {
|
|
57
|
+
await client.shutdown();
|
|
58
|
+
keysToRemove.push(key);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
for (const key of keysToRemove) {
|
|
62
|
+
this.clients.delete(key);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Shutdown all clients
|
|
67
|
+
*/
|
|
68
|
+
async shutdownAll() {
|
|
69
|
+
const shutdownPromises = Array.from(this.clients.values()).map((client) => client.shutdown());
|
|
70
|
+
await Promise.all(shutdownPromises);
|
|
71
|
+
this.clients.clear();
|
|
72
|
+
this.initializationPromises.clear();
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get the number of active clients
|
|
76
|
+
*/
|
|
77
|
+
getActiveClientCount() {
|
|
78
|
+
return this.clients.size;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Close a document in all active clients
|
|
82
|
+
* This is useful for tests that reuse the same file path
|
|
83
|
+
*/
|
|
84
|
+
closeDocument(filePath) {
|
|
85
|
+
for (const client of this.clients.values()) {
|
|
86
|
+
try {
|
|
87
|
+
client.notifyClose(filePath);
|
|
88
|
+
} catch {
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const lspManager = new LSPManager();
|
|
94
|
+
export {
|
|
95
|
+
lspManager
|
|
96
|
+
};
|
|
97
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lsp/manager.ts"],"sourcesContent":["import { LSPClient } from './client.js';\nimport { getServersForFile } from './server.js';\n\n/**\n * Singleton LSP client manager that keeps clients alive and reuses them\n * across tool calls for better performance and accuracy\n */\nclass LSPManager {\n private clients: Map<string, LSPClient> = new Map();\n private initializationPromises: Map<string, Promise<void>> = new Map();\n\n /**\n * Get or create an LSP client for a file\n * Returns null if no LSP server is available for the file\n */\n async getClient(filePath: string, workspaceRoot: string): Promise<LSPClient | null> {\n const servers = getServersForFile(filePath, workspaceRoot);\n if (servers.length === 0) {\n return null;\n }\n\n // Use the first matching server (prioritize TypeScript/JavaScript)\n const serverInfo =\n servers.find(\n s =>\n s.languageIds.includes('typescript') ||\n s.languageIds.includes('javascript') ||\n s.languageIds.includes('python') ||\n s.languageIds.includes('go'),\n ) || servers[0];\n // Create a unique key for this server + workspace combination\n if (!serverInfo) {\n return null;\n }\n const key = `${serverInfo.name}:${workspaceRoot}`;\n\n // Return existing client if available\n if (this.clients.has(key)) {\n return this.clients.get(key)!;\n }\n\n // If initialization is in progress, wait for it\n if (this.initializationPromises.has(key)) {\n await this.initializationPromises.get(key);\n return this.clients.get(key) || null;\n }\n\n // Create and initialize new client with a timeout to prevent indefinite hangs\n // (e.g., npx resolution issues in pnpm-linked projects)\n const initPromise = (async () => {\n const client = new LSPClient(serverInfo, workspaceRoot);\n await client.initialize();\n this.clients.set(key, client);\n })();\n\n this.initializationPromises.set(key, initPromise);\n\n try {\n await Promise.race([\n initPromise,\n new Promise<void>((_, reject) =>\n setTimeout(() => reject(new Error('LSP client initialization timed out')), 15000),\n ),\n ]);\n return this.clients.get(key) || null;\n } catch {\n // If initialization timed out or failed, clean up\n this.clients.delete(key);\n return null;\n } finally {\n this.initializationPromises.delete(key);\n }\n }\n\n /**\n * Shutdown a specific client\n */\n async shutdownClient(workspaceRoot: string, serverName?: string): Promise<void> {\n const keysToRemove: string[] = [];\n\n for (const [key, client] of this.clients.entries()) {\n if (key.includes(workspaceRoot) && (!serverName || key.startsWith(serverName))) {\n await client.shutdown();\n keysToRemove.push(key);\n }\n }\n\n for (const key of keysToRemove) {\n this.clients.delete(key);\n }\n }\n\n /**\n * Shutdown all clients\n */\n async shutdownAll(): Promise<void> {\n const shutdownPromises = Array.from(this.clients.values()).map(client => client.shutdown());\n await Promise.all(shutdownPromises);\n this.clients.clear();\n this.initializationPromises.clear();\n }\n\n /**\n * Get the number of active clients\n */\n getActiveClientCount(): number {\n return this.clients.size;\n }\n\n /**\n * Close a document in all active clients\n * This is useful for tests that reuse the same file path\n */\n closeDocument(filePath: string): void {\n for (const client of this.clients.values()) {\n try {\n client.notifyClose(filePath);\n } catch {\n // Ignore errors if document wasn't open\n }\n }\n }\n}\n\n// Export singleton instance\nexport const lspManager = new LSPManager();\n"],"mappings":"AAAA,SAAS,iBAAiB;AAC1B,SAAS,yBAAyB;AAMlC,MAAM,WAAW;AAAA,EACP,UAAkC,oBAAI,IAAI;AAAA,EAC1C,yBAAqD,oBAAI,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA,EAMrE,MAAM,UAAU,UAAkB,eAAkD;AAClF,UAAM,UAAU,kBAAkB,UAAU,aAAa;AACzD,QAAI,QAAQ,WAAW,GAAG;AACxB,aAAO;AAAA,IACT;AAGA,UAAM,aACJ,QAAQ;AAAA,MACN,OACE,EAAE,YAAY,SAAS,YAAY,KACnC,EAAE,YAAY,SAAS,YAAY,KACnC,EAAE,YAAY,SAAS,QAAQ,KAC/B,EAAE,YAAY,SAAS,IAAI;AAAA,IAC/B,KAAK,QAAQ,CAAC;AAEhB,QAAI,CAAC,YAAY;AACf,aAAO;AAAA,IACT;AACA,UAAM,MAAM,GAAG,WAAW,IAAI,IAAI,aAAa;AAG/C,QAAI,KAAK,QAAQ,IAAI,GAAG,GAAG;AACzB,aAAO,KAAK,QAAQ,IAAI,GAAG;AAAA,IAC7B;AAGA,QAAI,KAAK,uBAAuB,IAAI,GAAG,GAAG;AACxC,YAAM,KAAK,uBAAuB,IAAI,GAAG;AACzC,aAAO,KAAK,QAAQ,IAAI,GAAG,KAAK;AAAA,IAClC;AAIA,UAAM,eAAe,YAAY;AAC/B,YAAM,SAAS,IAAI,UAAU,YAAY,aAAa;AACtD,YAAM,OAAO,WAAW;AACxB,WAAK,QAAQ,IAAI,KAAK,MAAM;AAAA,IAC9B,GAAG;AAEH,SAAK,uBAAuB,IAAI,KAAK,WAAW;AAEhD,QAAI;AACF,YAAM,QAAQ,KAAK;AAAA,QACjB;AAAA,QACA,IAAI;AAAA,UAAc,CAAC,GAAG,WACpB,WAAW,MAAM,OAAO,IAAI,MAAM,qCAAqC,CAAC,GAAG,IAAK;AAAA,QAClF;AAAA,MACF,CAAC;AACD,aAAO,KAAK,QAAQ,IAAI,GAAG,KAAK;AAAA,IAClC,QAAQ;AAEN,WAAK,QAAQ,OAAO,GAAG;AACvB,aAAO;AAAA,IACT,UAAE;AACA,WAAK,uBAAuB,OAAO,GAAG;AAAA,IACxC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAe,eAAuB,YAAoC;AAC9E,UAAM,eAAyB,CAAC;AAEhC,eAAW,CAAC,KAAK,MAAM,KAAK,KAAK,QAAQ,QAAQ,GAAG;AAClD,UAAI,IAAI,SAAS,aAAa,MAAM,CAAC,cAAc,IAAI,WAAW,UAAU,IAAI;AAC9E,cAAM,OAAO,SAAS;AACtB,qBAAa,KAAK,GAAG;AAAA,MACvB;AAAA,IACF;AAEA,eAAW,OAAO,cAAc;AAC9B,WAAK,QAAQ,OAAO,GAAG;AAAA,IACzB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAA6B;AACjC,UAAM,mBAAmB,MAAM,KAAK,KAAK,QAAQ,OAAO,CAAC,EAAE,IAAI,YAAU,OAAO,SAAS,CAAC;AAC1F,UAAM,QAAQ,IAAI,gBAAgB;AAClC,SAAK,QAAQ,MAAM;AACnB,SAAK,uBAAuB,MAAM;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA,EAKA,uBAA+B;AAC7B,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,cAAc,UAAwB;AACpC,eAAW,UAAU,KAAK,QAAQ,OAAO,GAAG;AAC1C,UAAI;AACF,eAAO,YAAY,QAAQ;AAAA,MAC7B,QAAQ;AAAA,MAER;AAAA,IACF;AAAA,EACF;AACF;AAGO,MAAM,aAAa,IAAI,WAAW;","names":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ChildProcess } from 'node:child_process';
|
|
2
|
+
/**
|
|
3
|
+
* LSP Server definition and spawning logic
|
|
4
|
+
*/
|
|
5
|
+
export interface LSPServerInfo {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
languageIds: string[];
|
|
9
|
+
root: (cwd: string) => string | null;
|
|
10
|
+
spawn: (root: string) => ChildProcess | Promise<{
|
|
11
|
+
process: ChildProcess;
|
|
12
|
+
initialization?: any;
|
|
13
|
+
} | undefined>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Find the nearest project root directory
|
|
17
|
+
*/
|
|
18
|
+
export declare function findNearestRoot(cwd: string, markers: string[]): string | null;
|
|
19
|
+
/**
|
|
20
|
+
* Built-in LSP server definitions
|
|
21
|
+
*/
|
|
22
|
+
export declare const BUILTIN_SERVERS: Record<string, LSPServerInfo>;
|
|
23
|
+
/**
|
|
24
|
+
* Get all servers that can handle a file
|
|
25
|
+
*/
|
|
26
|
+
export declare function getServersForFile(filePath: string, cwd: string): LSPServerInfo[];
|
|
27
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/lsp/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAQvD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACrC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,YAAY,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,YAAY,CAAC;QAAC,cAAc,CAAC,EAAE,GAAG,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC;CAC9G;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAgB7E;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CA4GzD,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,EAAE,CAOhF"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { createRequire } from "node:module";
|
|
4
|
+
import path, { join } from "node:path";
|
|
5
|
+
import { pathToFileURL } from "node:url";
|
|
6
|
+
import { getLanguageId } from "./language.js";
|
|
7
|
+
function findNearestRoot(cwd, markers) {
|
|
8
|
+
let current = cwd;
|
|
9
|
+
while (current !== "/") {
|
|
10
|
+
for (const marker of markers) {
|
|
11
|
+
if (existsSync(join(current, marker))) {
|
|
12
|
+
return current;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
const parent = join(current, "..");
|
|
16
|
+
if (parent === current) break;
|
|
17
|
+
current = parent;
|
|
18
|
+
}
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const BUILTIN_SERVERS = {
|
|
22
|
+
typescript: {
|
|
23
|
+
id: "typescript",
|
|
24
|
+
name: "TypeScript Language Server",
|
|
25
|
+
languageIds: ["typescript", "typescriptreact", "javascript", "javascriptreact"],
|
|
26
|
+
root: (cwd) => findNearestRoot(cwd, ["tsconfig.json", "package.json"]),
|
|
27
|
+
spawn: async (root) => {
|
|
28
|
+
const requireFromRoot = createRequire(pathToFileURL(path.join(root, "package.json")));
|
|
29
|
+
let tsserver;
|
|
30
|
+
try {
|
|
31
|
+
tsserver = requireFromRoot.resolve("typescript/lib/tsserver.js");
|
|
32
|
+
} catch {
|
|
33
|
+
tsserver = void 0;
|
|
34
|
+
}
|
|
35
|
+
if (!tsserver) {
|
|
36
|
+
return void 0;
|
|
37
|
+
}
|
|
38
|
+
const localBin = join(root, "node_modules", ".bin", "typescript-language-server");
|
|
39
|
+
const cwdBin = join(process.cwd(), "node_modules", ".bin", "typescript-language-server");
|
|
40
|
+
let tslsBinary;
|
|
41
|
+
if (existsSync(localBin)) {
|
|
42
|
+
tslsBinary = localBin;
|
|
43
|
+
} else if (existsSync(cwdBin)) {
|
|
44
|
+
tslsBinary = cwdBin;
|
|
45
|
+
} else {
|
|
46
|
+
tslsBinary = "npx";
|
|
47
|
+
}
|
|
48
|
+
const args = tslsBinary === "npx" ? ["typescript-language-server", "--stdio"] : ["--stdio"];
|
|
49
|
+
const proc = spawn(tslsBinary, args, {
|
|
50
|
+
cwd: root,
|
|
51
|
+
stdio: ["pipe", "pipe", "pipe"]
|
|
52
|
+
});
|
|
53
|
+
return {
|
|
54
|
+
process: proc,
|
|
55
|
+
initialization: {
|
|
56
|
+
tsserver: {
|
|
57
|
+
path: tsserver,
|
|
58
|
+
logVerbosity: "off"
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
eslint: {
|
|
65
|
+
id: "eslint",
|
|
66
|
+
name: "ESLint Language Server",
|
|
67
|
+
languageIds: ["typescript", "typescriptreact", "javascript", "javascriptreact"],
|
|
68
|
+
root: (cwd) => findNearestRoot(cwd, ["package.json", ".eslintrc.js", ".eslintrc.json", ".eslintrc.yml", ".eslintrc.yaml"]),
|
|
69
|
+
spawn: (root) => {
|
|
70
|
+
const binaryPath = join(process.cwd(), "node_modules", ".bin", "eslint-lsp");
|
|
71
|
+
return spawn(binaryPath, ["--stdio"], {
|
|
72
|
+
cwd: root,
|
|
73
|
+
stdio: ["pipe", "pipe", "pipe"]
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
python: {
|
|
78
|
+
id: "python",
|
|
79
|
+
name: "Python Language Server (Pyright)",
|
|
80
|
+
languageIds: ["python"],
|
|
81
|
+
root: (cwd) => findNearestRoot(cwd, ["pyproject.toml", "setup.py", "requirements.txt", ".git"]),
|
|
82
|
+
spawn: (root) => {
|
|
83
|
+
const localPath = join(process.cwd(), "node_modules", ".bin", "pyright-langserver");
|
|
84
|
+
const binaryPath = existsSync(localPath) ? localPath : "pyright-langserver";
|
|
85
|
+
return spawn(binaryPath, ["--stdio"], {
|
|
86
|
+
cwd: root,
|
|
87
|
+
stdio: ["pipe", "pipe", "pipe"]
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
go: {
|
|
92
|
+
id: "go",
|
|
93
|
+
name: "Go Language Server (gopls)",
|
|
94
|
+
languageIds: ["go"],
|
|
95
|
+
root: (cwd) => findNearestRoot(cwd, ["go.mod", ".git"]),
|
|
96
|
+
spawn: (root) => {
|
|
97
|
+
return spawn("gopls", ["serve"], {
|
|
98
|
+
cwd: root,
|
|
99
|
+
stdio: ["pipe", "pipe", "pipe"]
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
rust: {
|
|
104
|
+
id: "rust",
|
|
105
|
+
name: "Rust Language Server (rust-analyzer)",
|
|
106
|
+
languageIds: ["rust"],
|
|
107
|
+
root: (cwd) => findNearestRoot(cwd, ["Cargo.toml", ".git"]),
|
|
108
|
+
spawn: (root) => {
|
|
109
|
+
return spawn("rust-analyzer", ["--stdio"], {
|
|
110
|
+
cwd: root,
|
|
111
|
+
stdio: ["pipe", "pipe", "pipe"]
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
function getServersForFile(filePath, cwd) {
|
|
117
|
+
const languageId = getLanguageId(filePath);
|
|
118
|
+
if (!languageId) return [];
|
|
119
|
+
return Object.values(BUILTIN_SERVERS).filter(
|
|
120
|
+
(server) => server.languageIds.includes(languageId) && server.root(cwd) !== null
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
export {
|
|
124
|
+
BUILTIN_SERVERS,
|
|
125
|
+
findNearestRoot,
|
|
126
|
+
getServersForFile
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lsp/server.ts"],"sourcesContent":["import type { ChildProcess } from 'node:child_process';\nimport { spawn } from 'node:child_process';\nimport { existsSync } from 'node:fs';\nimport { createRequire } from 'node:module';\nimport path, { join } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport { getLanguageId } from './language.js';\n\n/**\n * LSP Server definition and spawning logic\n */\nexport interface LSPServerInfo {\n id: string;\n name: string;\n languageIds: string[];\n root: (cwd: string) => string | null;\n spawn: (root: string) => ChildProcess | Promise<{ process: ChildProcess; initialization?: any } | undefined>;\n}\n\n/**\n * Find the nearest project root directory\n */\nexport function findNearestRoot(cwd: string, markers: string[]): string | null {\n let current = cwd;\n\n while (current !== '/') {\n for (const marker of markers) {\n if (existsSync(join(current, marker))) {\n return current;\n }\n }\n\n const parent = join(current, '..');\n if (parent === current) break;\n current = parent;\n }\n\n return null;\n}\n\n/**\n * Built-in LSP server definitions\n */\nexport const BUILTIN_SERVERS: Record<string, LSPServerInfo> = {\n typescript: {\n id: 'typescript',\n name: 'TypeScript Language Server',\n languageIds: ['typescript', 'typescriptreact', 'javascript', 'javascriptreact'],\n root: (cwd: string) => findNearestRoot(cwd, ['tsconfig.json', 'package.json']),\n spawn: async (root: string) => {\n // Try to resolve TypeScript from the project directory\n const requireFromRoot = createRequire(pathToFileURL(path.join(root, 'package.json')));\n let tsserver: string | undefined;\n try {\n tsserver = requireFromRoot.resolve('typescript/lib/tsserver.js');\n } catch {\n tsserver = undefined;\n }\n if (!tsserver) {\n return undefined;\n }\n\n // Resolve typescript-language-server binary directly to avoid npx hangs\n // (npx can hang indefinitely in projects with pnpm links)\n const localBin = join(root, 'node_modules', '.bin', 'typescript-language-server');\n const cwdBin = join(process.cwd(), 'node_modules', '.bin', 'typescript-language-server');\n let tslsBinary: string;\n if (existsSync(localBin)) {\n tslsBinary = localBin;\n } else if (existsSync(cwdBin)) {\n tslsBinary = cwdBin;\n } else {\n // Fall back to npx as last resort, but this may hang with pnpm links\n tslsBinary = 'npx';\n }\n\n const args = tslsBinary === 'npx' ? ['typescript-language-server', '--stdio'] : ['--stdio'];\n\n const proc = spawn(tslsBinary, args, {\n cwd: root,\n stdio: ['pipe', 'pipe', 'pipe'],\n });\n\n return {\n process: proc,\n initialization: {\n tsserver: {\n path: tsserver,\n logVerbosity: 'off',\n },\n },\n };\n },\n },\n\n eslint: {\n id: 'eslint',\n name: 'ESLint Language Server',\n languageIds: ['typescript', 'typescriptreact', 'javascript', 'javascriptreact'],\n root: (cwd: string) =>\n findNearestRoot(cwd, ['package.json', '.eslintrc.js', '.eslintrc.json', '.eslintrc.yml', '.eslintrc.yaml']),\n spawn: (root: string) => {\n const binaryPath = join(process.cwd(), 'node_modules', '.bin', 'eslint-lsp');\n return spawn(binaryPath, ['--stdio'], {\n cwd: root,\n stdio: ['pipe', 'pipe', 'pipe'],\n });\n },\n },\n\n python: {\n id: 'python',\n name: 'Python Language Server (Pyright)',\n languageIds: ['python'],\n root: (cwd: string) => findNearestRoot(cwd, ['pyproject.toml', 'setup.py', 'requirements.txt', '.git']),\n spawn: (root: string) => {\n // Try node_modules first, then fall back to system PATH\n const localPath = join(process.cwd(), 'node_modules', '.bin', 'pyright-langserver');\n const binaryPath = existsSync(localPath) ? localPath : 'pyright-langserver';\n return spawn(binaryPath, ['--stdio'], {\n cwd: root,\n stdio: ['pipe', 'pipe', 'pipe'],\n });\n },\n },\n\n go: {\n id: 'go',\n name: 'Go Language Server (gopls)',\n languageIds: ['go'],\n root: (cwd: string) => findNearestRoot(cwd, ['go.mod', '.git']),\n spawn: (root: string) => {\n return spawn('gopls', ['serve'], {\n cwd: root,\n stdio: ['pipe', 'pipe', 'pipe'],\n });\n },\n },\n\n rust: {\n id: 'rust',\n name: 'Rust Language Server (rust-analyzer)',\n languageIds: ['rust'],\n root: (cwd: string) => findNearestRoot(cwd, ['Cargo.toml', '.git']),\n spawn: (root: string) => {\n return spawn('rust-analyzer', ['--stdio'], {\n cwd: root,\n stdio: ['pipe', 'pipe', 'pipe'],\n });\n },\n },\n};\n\n/**\n * Get all servers that can handle a file\n */\nexport function getServersForFile(filePath: string, cwd: string): LSPServerInfo[] {\n const languageId = getLanguageId(filePath);\n if (!languageId) return [];\n\n return Object.values(BUILTIN_SERVERS).filter(\n server => server.languageIds.includes(languageId) && server.root(cwd) !== null,\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Find the workspace root by walking up from the file path
|
|
3
|
+
* looking for common workspace markers.
|
|
4
|
+
*
|
|
5
|
+
* For monorepos, this prioritizes the closest package/project root
|
|
6
|
+
* (e.g., packages/core) over the monorepo root.
|
|
7
|
+
*/
|
|
8
|
+
export declare function findWorkspaceRoot(filePath: string): string;
|
|
9
|
+
//# sourceMappingURL=workspace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/lsp/workspace.ts"],"names":[],"mappings":"AAgBA;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiD1D"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
const WORKSPACE_MARKERS = [
|
|
4
|
+
"package.json",
|
|
5
|
+
"tsconfig.json",
|
|
6
|
+
"pyproject.toml",
|
|
7
|
+
"go.mod",
|
|
8
|
+
".git",
|
|
9
|
+
"Cargo.toml",
|
|
10
|
+
"composer.json"
|
|
11
|
+
];
|
|
12
|
+
function findWorkspaceRoot(filePath) {
|
|
13
|
+
let currentDir = path.dirname(path.resolve(filePath));
|
|
14
|
+
const root = path.parse(currentDir).root;
|
|
15
|
+
let closestProjectRoot = null;
|
|
16
|
+
let searchDir = currentDir;
|
|
17
|
+
while (searchDir !== root) {
|
|
18
|
+
const hasTsConfig = fs.existsSync(path.join(searchDir, "tsconfig.json"));
|
|
19
|
+
const hasPackageJson = fs.existsSync(path.join(searchDir, "package.json"));
|
|
20
|
+
if (hasTsConfig || hasPackageJson) {
|
|
21
|
+
closestProjectRoot = searchDir;
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
const parentDir = path.dirname(searchDir);
|
|
25
|
+
if (parentDir === searchDir) {
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
searchDir = parentDir;
|
|
29
|
+
}
|
|
30
|
+
if (closestProjectRoot) {
|
|
31
|
+
return closestProjectRoot;
|
|
32
|
+
}
|
|
33
|
+
currentDir = path.dirname(path.resolve(filePath));
|
|
34
|
+
while (currentDir !== root) {
|
|
35
|
+
for (const marker of WORKSPACE_MARKERS) {
|
|
36
|
+
const markerPath = path.join(currentDir, marker);
|
|
37
|
+
if (fs.existsSync(markerPath)) {
|
|
38
|
+
return currentDir;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const parentDir = path.dirname(currentDir);
|
|
42
|
+
if (parentDir === currentDir) {
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
currentDir = parentDir;
|
|
46
|
+
}
|
|
47
|
+
return path.dirname(path.resolve(filePath));
|
|
48
|
+
}
|
|
49
|
+
export {
|
|
50
|
+
findWorkspaceRoot
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lsp/workspace.ts"],"sourcesContent":["import * as fs from 'node:fs';\nimport * as path from 'node:path';\n\n/**\n * Workspace markers that indicate the root of a project\n */\nconst WORKSPACE_MARKERS = [\n 'package.json',\n 'tsconfig.json',\n 'pyproject.toml',\n 'go.mod',\n '.git',\n 'Cargo.toml',\n 'composer.json',\n];\n\n/**\n * Find the workspace root by walking up from the file path\n * looking for common workspace markers.\n *\n * For monorepos, this prioritizes the closest package/project root\n * (e.g., packages/core) over the monorepo root.\n */\nexport function findWorkspaceRoot(filePath: string): string {\n let currentDir = path.dirname(path.resolve(filePath));\n const root = path.parse(currentDir).root;\n\n // First, find the closest tsconfig.json or package.json\n // This handles monorepos where the actual project is in a subdirectory\n let closestProjectRoot: string | null = null;\n let searchDir = currentDir;\n\n while (searchDir !== root) {\n const hasTsConfig = fs.existsSync(path.join(searchDir, 'tsconfig.json'));\n const hasPackageJson = fs.existsSync(path.join(searchDir, 'package.json'));\n\n if (hasTsConfig || hasPackageJson) {\n closestProjectRoot = searchDir;\n break;\n }\n\n const parentDir = path.dirname(searchDir);\n if (parentDir === searchDir) {\n break;\n }\n searchDir = parentDir;\n }\n\n // If we found a project root, return it\n if (closestProjectRoot) {\n return closestProjectRoot;\n }\n\n // Otherwise, fall back to looking for any workspace marker\n currentDir = path.dirname(path.resolve(filePath));\n while (currentDir !== root) {\n for (const marker of WORKSPACE_MARKERS) {\n const markerPath = path.join(currentDir, marker);\n if (fs.existsSync(markerPath)) {\n return currentDir;\n }\n }\n\n const parentDir = path.dirname(currentDir);\n if (parentDir === currentDir) {\n break;\n }\n currentDir = parentDir;\n }\n\n // Fallback to the directory containing the file\n return path.dirname(path.resolve(filePath));\n}\n"],"mappings":"AAAA,YAAY,QAAQ;AACpB,YAAY,UAAU;AAKtB,MAAM,oBAAoB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AASO,SAAS,kBAAkB,UAA0B;AAC1D,MAAI,aAAa,KAAK,QAAQ,KAAK,QAAQ,QAAQ,CAAC;AACpD,QAAM,OAAO,KAAK,MAAM,UAAU,EAAE;AAIpC,MAAI,qBAAoC;AACxC,MAAI,YAAY;AAEhB,SAAO,cAAc,MAAM;AACzB,UAAM,cAAc,GAAG,WAAW,KAAK,KAAK,WAAW,eAAe,CAAC;AACvE,UAAM,iBAAiB,GAAG,WAAW,KAAK,KAAK,WAAW,cAAc,CAAC;AAEzE,QAAI,eAAe,gBAAgB;AACjC,2BAAqB;AACrB;AAAA,IACF;AAEA,UAAM,YAAY,KAAK,QAAQ,SAAS;AACxC,QAAI,cAAc,WAAW;AAC3B;AAAA,IACF;AACA,gBAAY;AAAA,EACd;AAGA,MAAI,oBAAoB;AACtB,WAAO;AAAA,EACT;AAGA,eAAa,KAAK,QAAQ,KAAK,QAAQ,QAAQ,CAAC;AAChD,SAAO,eAAe,MAAM;AAC1B,eAAW,UAAU,mBAAmB;AACtC,YAAM,aAAa,KAAK,KAAK,YAAY,MAAM;AAC/C,UAAI,GAAG,WAAW,UAAU,GAAG;AAC7B,eAAO;AAAA,MACT;AAAA,IACF;AAEA,UAAM,YAAY,KAAK,QAAQ,UAAU;AACzC,QAAI,cAAc,YAAY;AAC5B;AAAA,IACF;AACA,iBAAa;AAAA,EACf;AAGA,SAAO,KAAK,QAAQ,KAAK,QAAQ,QAAQ,CAAC;AAC5C;","names":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP server configuration loading from filesystem.
|
|
3
|
+
* Loads from:
|
|
4
|
+
* 1. .claude/settings.local.json (Claude Code compat — lowest priority)
|
|
5
|
+
* 2. ~/.mastracode/mcp.json (global)
|
|
6
|
+
* 3. .mcp.json (project root — Claude Code compatible)
|
|
7
|
+
* 4. .mastracode/mcp.json (project — highest priority)
|
|
8
|
+
*
|
|
9
|
+
* Higher-priority configs override lower ones by server name. The project root
|
|
10
|
+
* `.mcp.json` is read so a project that already keeps MCP servers there for
|
|
11
|
+
* Claude Code does not need to duplicate them under `.mastracode/`.
|
|
12
|
+
*/
|
|
13
|
+
import type { McpConfig } from './types.js';
|
|
14
|
+
export declare function loadMcpConfig(projectDir: string, configDirName?: string): McpConfig;
|
|
15
|
+
export declare function getProjectMcpPath(projectDir: string, configDirName?: string): string;
|
|
16
|
+
export declare function getRootMcpPath(projectDir: string): string;
|
|
17
|
+
export declare function getGlobalMcpPath(configDirName?: string): string;
|
|
18
|
+
export declare function getClaudeSettingsPath(projectDir: string): string;
|
|
19
|
+
/**
|
|
20
|
+
* Expand `${VAR}` and `${VAR:-default}` references in a string from the
|
|
21
|
+
* environment, matching how Claude Code resolves values in `.mcp.json`.
|
|
22
|
+
* A referenced variable that is unset or empty falls back to its default,
|
|
23
|
+
* or to an empty string when no default is given.
|
|
24
|
+
*/
|
|
25
|
+
export declare function expandEnvVars(value: string, env?: NodeJS.ProcessEnv): string;
|
|
26
|
+
/**
|
|
27
|
+
* Classify a raw server entry as stdio, http, or skip (with reason).
|
|
28
|
+
*/
|
|
29
|
+
export declare function classifyServerEntry(raw: unknown): {
|
|
30
|
+
kind: 'stdio' | 'http' | 'skip';
|
|
31
|
+
reason?: string;
|
|
32
|
+
};
|
|
33
|
+
export declare function validateConfig(raw: unknown): McpConfig;
|
|
34
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/mcp/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAyD,MAAM,YAAY,CAAC;AAEnG,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,SAAqB,GAAG,SAAS,CAO/F;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,SAAqB,GAAG,MAAM,CAEhG;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,gBAAgB,CAAC,aAAa,SAAqB,GAAG,MAAM,CAE3E;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEhE;AA4BD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAUzF;AA4BD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG;IAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CA2BtG;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,CAiDtD"}
|