@aexol/spectral 0.8.2 → 0.8.6
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 +82 -55
- package/README.md +80 -82
- package/dist/agent/agents.d.ts +37 -0
- package/dist/agent/agents.d.ts.map +1 -0
- package/dist/agent/index.d.ts +29 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +11 -11
- package/dist/cli.d.ts +17 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1 -1
- package/dist/commands/bind.d.ts +12 -0
- package/dist/commands/bind.d.ts.map +1 -0
- package/dist/commands/login-oauth.d.ts +15 -0
- package/dist/commands/login-oauth.d.ts.map +1 -0
- package/dist/commands/login.d.ts +37 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/logout.d.ts +8 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/serve.d.ts +112 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +5 -2
- package/dist/commands/unbind.d.ts +8 -0
- package/dist/commands/unbind.d.ts.map +1 -0
- package/dist/config.d.ts +49 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +1 -1
- package/dist/designer/guidelines.d.ts +23 -0
- package/dist/designer/guidelines.d.ts.map +1 -0
- package/dist/designer/index.d.ts +26 -0
- package/dist/designer/index.d.ts.map +1 -0
- package/dist/designer/index.js +9 -9
- package/dist/designer/philosophies.d.ts +33 -0
- package/dist/designer/philosophies.d.ts.map +1 -0
- package/dist/designer/skills.d.ts +27 -0
- package/dist/designer/skills.d.ts.map +1 -0
- package/dist/designer/systems.d.ts +36 -0
- package/dist/designer/systems.d.ts.map +1 -0
- package/dist/extensions/aexol-mcp.d.ts +25 -0
- package/dist/extensions/aexol-mcp.d.ts.map +1 -0
- package/dist/extensions/aexol-mcp.js +12 -12
- package/dist/extensions/kanban-bridge.d.ts +24 -0
- package/dist/extensions/kanban-bridge.d.ts.map +1 -0
- package/dist/extensions/kanban-bridge.js +3 -3
- package/dist/extensions/openrouter-attribution.d.ts +12 -0
- package/dist/extensions/openrouter-attribution.d.ts.map +1 -0
- package/dist/extensions/openrouter-attribution.js +2 -2
- package/dist/extensions/spectral-vision-fallback.d.ts +23 -0
- package/dist/extensions/spectral-vision-fallback.d.ts.map +1 -0
- package/dist/extensions/spectral-vision-fallback.js +32 -23
- package/dist/index.d.ts +46 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +44 -0
- package/dist/mcp/agent-dir.d.ts +3 -0
- package/dist/mcp/agent-dir.d.ts.map +1 -0
- package/dist/mcp/commands.d.ts +9 -0
- package/dist/mcp/commands.d.ts.map +1 -0
- package/dist/mcp/commands.js +1 -1
- package/dist/mcp/config.d.ts +78 -0
- package/dist/mcp/config.d.ts.map +1 -0
- package/dist/mcp/config.js +15 -15
- package/dist/mcp/consent-manager.d.ts +14 -0
- package/dist/mcp/consent-manager.d.ts.map +1 -0
- package/dist/mcp/direct-tools.d.ts +11 -0
- package/dist/mcp/direct-tools.d.ts.map +1 -0
- package/dist/mcp/errors.d.ts +100 -0
- package/dist/mcp/errors.d.ts.map +1 -0
- package/dist/mcp/glimpse-ui.d.ts +10 -0
- package/dist/mcp/glimpse-ui.d.ts.map +1 -0
- package/dist/mcp/host-html-template.d.ts +17 -0
- package/dist/mcp/host-html-template.d.ts.map +1 -0
- package/dist/mcp/host-html-template.js +3 -3
- package/dist/mcp/index.d.ts +3 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +15 -13
- package/dist/mcp/init.d.ts +10 -0
- package/dist/mcp/init.d.ts.map +1 -0
- package/dist/mcp/init.js +4 -4
- package/dist/mcp/lifecycle.d.ts +30 -0
- package/dist/mcp/lifecycle.d.ts.map +1 -0
- package/dist/mcp/logger.d.ts +52 -0
- package/dist/mcp/logger.d.ts.map +1 -0
- package/dist/mcp/mcp-auth-flow.d.ts +69 -0
- package/dist/mcp/mcp-auth-flow.d.ts.map +1 -0
- package/dist/mcp/mcp-auth.d.ts +100 -0
- package/dist/mcp/mcp-auth.d.ts.map +1 -0
- package/dist/mcp/mcp-callback-server.d.ts +40 -0
- package/dist/mcp/mcp-callback-server.d.ts.map +1 -0
- package/dist/mcp/mcp-oauth-provider.d.ts +101 -0
- package/dist/mcp/mcp-oauth-provider.d.ts.map +1 -0
- package/dist/mcp/mcp-oauth-provider.js +1 -1
- package/dist/mcp/metadata-cache.d.ts +32 -0
- package/dist/mcp/metadata-cache.d.ts.map +1 -0
- package/dist/mcp/npx-resolver.d.ts +7 -0
- package/dist/mcp/npx-resolver.d.ts.map +1 -0
- package/dist/mcp/oauth-handler.d.ts +19 -0
- package/dist/mcp/oauth-handler.d.ts.map +1 -0
- package/dist/mcp/onboarding-state.d.ts +13 -0
- package/dist/mcp/onboarding-state.d.ts.map +1 -0
- package/dist/mcp/proxy-modes.d.ts +12 -0
- package/dist/mcp/proxy-modes.d.ts.map +1 -0
- package/dist/mcp/proxy-modes.js +2 -2
- package/dist/mcp/resource-tools.d.ts +2 -0
- package/dist/mcp/resource-tools.d.ts.map +1 -0
- package/dist/mcp/sampling-handler.d.ts +16 -0
- package/dist/mcp/sampling-handler.d.ts.map +1 -0
- package/dist/mcp/server-manager.d.ts +42 -0
- package/dist/mcp/server-manager.d.ts.map +1 -0
- package/dist/mcp/server-manager.js +2 -2
- package/dist/mcp/state-getter.d.ts +14 -0
- package/dist/mcp/state-getter.d.ts.map +1 -0
- package/dist/mcp/state-getter.js +21 -0
- package/dist/mcp/state.d.ts +41 -0
- package/dist/mcp/state.d.ts.map +1 -0
- package/dist/mcp/tool-metadata.d.ts +11 -0
- package/dist/mcp/tool-metadata.d.ts.map +1 -0
- package/dist/mcp/tool-registrar.d.ts +9 -0
- package/dist/mcp/tool-registrar.d.ts.map +1 -0
- package/dist/mcp/tool-registrar.js +1 -1
- package/dist/mcp/types.d.ts +263 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/ui-resource-handler.d.ts +10 -0
- package/dist/mcp/ui-resource-handler.d.ts.map +1 -0
- package/dist/mcp/ui-server.d.ts +37 -0
- package/dist/mcp/ui-server.d.ts.map +1 -0
- package/dist/mcp/ui-server.js +1 -1
- package/dist/mcp/ui-session.d.ts +27 -0
- package/dist/mcp/ui-session.d.ts.map +1 -0
- package/dist/mcp/ui-stream-types.d.ts +197 -0
- package/dist/mcp/ui-stream-types.d.ts.map +1 -0
- package/dist/mcp/ui-stream-types.js +5 -5
- package/dist/mcp/utils.d.ts +17 -0
- package/dist/mcp/utils.d.ts.map +1 -0
- package/dist/mcp/utils.js +10 -10
- package/dist/mcp/vitest.config.d.ts +3 -0
- package/dist/mcp/vitest.config.d.ts.map +1 -0
- package/dist/mcp-client.d.ts +58 -0
- package/dist/mcp-client.d.ts.map +1 -0
- package/dist/mcp-client.js +3 -2
- package/dist/memory/branch.d.ts +124 -0
- package/dist/memory/branch.d.ts.map +1 -0
- package/dist/memory/commands/status.d.ts +4 -0
- package/dist/memory/commands/status.d.ts.map +1 -0
- package/dist/memory/commands/status.js +2 -2
- package/dist/memory/commands/view.d.ts +4 -0
- package/dist/memory/commands/view.d.ts.map +1 -0
- package/dist/memory/commands/view.js +2 -2
- package/dist/memory/compaction.d.ts +113 -0
- package/dist/memory/compaction.d.ts.map +1 -0
- package/dist/memory/config.d.ts +27 -0
- package/dist/memory/config.d.ts.map +1 -0
- package/dist/memory/debug-log.d.ts +12 -0
- package/dist/memory/debug-log.d.ts.map +1 -0
- package/dist/memory/hooks/compaction-hook.d.ts +4 -0
- package/dist/memory/hooks/compaction-hook.d.ts.map +1 -0
- package/dist/memory/hooks/compaction-hook.js +5 -5
- package/dist/memory/hooks/compaction-trigger.d.ts +4 -0
- package/dist/memory/hooks/compaction-trigger.d.ts.map +1 -0
- package/dist/memory/hooks/compaction-trigger.js +3 -3
- package/dist/memory/hooks/observer-trigger.d.ts +4 -0
- package/dist/memory/hooks/observer-trigger.d.ts.map +1 -0
- package/dist/memory/hooks/observer-trigger.js +4 -4
- package/dist/memory/ids.d.ts +2 -0
- package/dist/memory/ids.d.ts.map +1 -0
- package/dist/memory/index.d.ts +3 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +9 -9
- package/dist/memory/model-budget.d.ts +4 -0
- package/dist/memory/model-budget.d.ts.map +1 -0
- package/dist/memory/observer.d.ts +21 -0
- package/dist/memory/observer.d.ts.map +1 -0
- package/dist/memory/project-observations-store.d.ts +24 -0
- package/dist/memory/project-observations-store.d.ts.map +1 -0
- package/dist/memory/prompts.d.ts +11 -0
- package/dist/memory/prompts.d.ts.map +1 -0
- package/dist/memory/relevance.d.ts +4 -0
- package/dist/memory/relevance.d.ts.map +1 -0
- package/dist/memory/runtime.d.ts +40 -0
- package/dist/memory/runtime.d.ts.map +1 -0
- package/dist/memory/serialize.d.ts +26 -0
- package/dist/memory/serialize.d.ts.map +1 -0
- package/dist/memory/tokens.d.ts +8 -0
- package/dist/memory/tokens.d.ts.map +1 -0
- package/dist/memory/tools/read-project-observations.d.ts +8 -0
- package/dist/memory/tools/read-project-observations.d.ts.map +1 -0
- package/dist/memory/tools/read-project-observations.js +2 -2
- package/dist/memory/tools/recall-observation.d.ts +63 -0
- package/dist/memory/tools/recall-observation.d.ts.map +1 -0
- package/dist/memory/tools/recall-observation.js +2 -2
- package/dist/memory/tools/write-project-observation.d.ts +9 -0
- package/dist/memory/tools/write-project-observation.d.ts.map +1 -0
- package/dist/memory/tools/write-project-observation.js +2 -2
- package/dist/memory/types.d.ts +65 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/preflight.d.ts +27 -0
- package/dist/preflight.d.ts.map +1 -0
- package/dist/preflight.js +4 -2
- package/dist/relay/auto-research.d.ts +64 -0
- package/dist/relay/auto-research.d.ts.map +1 -0
- package/dist/relay/auto-research.js +184 -79
- package/dist/relay/client.d.ts +126 -0
- package/dist/relay/client.d.ts.map +1 -0
- package/dist/relay/dispatcher.d.ts +216 -0
- package/dist/relay/dispatcher.d.ts.map +1 -0
- package/dist/relay/dispatcher.js +33 -6
- package/dist/relay/machine-store.d.ts +68 -0
- package/dist/relay/machine-store.d.ts.map +1 -0
- package/dist/relay/models-fetch.d.ts +75 -0
- package/dist/relay/models-fetch.d.ts.map +1 -0
- package/dist/relay/registration.d.ts +81 -0
- package/dist/relay/registration.d.ts.map +1 -0
- package/dist/sdk/agent-core/agent-loop.d.ts +24 -0
- package/dist/sdk/agent-core/agent-loop.d.ts.map +1 -0
- package/dist/sdk/agent-core/agent.d.ts +125 -0
- package/dist/sdk/agent-core/agent.d.ts.map +1 -0
- package/dist/sdk/agent-core/harness/agent-harness.d.ts +92 -0
- package/dist/sdk/agent-core/harness/agent-harness.d.ts.map +1 -0
- package/dist/sdk/agent-core/harness/compaction/branch-summarization.d.ts +53 -0
- package/dist/sdk/agent-core/harness/compaction/branch-summarization.d.ts.map +1 -0
- package/dist/sdk/agent-core/harness/compaction/compaction.d.ts +95 -0
- package/dist/sdk/agent-core/harness/compaction/compaction.d.ts.map +1 -0
- package/dist/sdk/agent-core/harness/compaction/utils.d.ts +25 -0
- package/dist/sdk/agent-core/harness/compaction/utils.d.ts.map +1 -0
- package/dist/sdk/agent-core/harness/env/nodejs.d.ts +51 -0
- package/dist/sdk/agent-core/harness/env/nodejs.d.ts.map +1 -0
- package/dist/sdk/agent-core/harness/messages.d.ts +51 -0
- package/dist/sdk/agent-core/harness/messages.d.ts.map +1 -0
- package/dist/sdk/agent-core/harness/prompt-templates.d.ts +48 -0
- package/dist/sdk/agent-core/harness/prompt-templates.d.ts.map +1 -0
- package/dist/sdk/agent-core/harness/session/jsonl-repo.d.ts +26 -0
- package/dist/sdk/agent-core/harness/session/jsonl-repo.d.ts.map +1 -0
- package/dist/sdk/agent-core/harness/session/jsonl-storage.d.ts +33 -0
- package/dist/sdk/agent-core/harness/session/jsonl-storage.d.ts.map +1 -0
- package/dist/sdk/agent-core/harness/session/memory-repo.d.ts +18 -0
- package/dist/sdk/agent-core/harness/session/memory-repo.d.ts.map +1 -0
- package/dist/sdk/agent-core/harness/session/memory-storage.d.ts +25 -0
- package/dist/sdk/agent-core/harness/session/memory-storage.d.ts.map +1 -0
- package/dist/sdk/agent-core/harness/session/repo-utils.d.ts +11 -0
- package/dist/sdk/agent-core/harness/session/repo-utils.d.ts.map +1 -0
- package/dist/sdk/agent-core/harness/session/session.d.ts +32 -0
- package/dist/sdk/agent-core/harness/session/session.d.ts.map +1 -0
- package/dist/sdk/agent-core/harness/session/uuid.d.ts +2 -0
- package/dist/sdk/agent-core/harness/session/uuid.d.ts.map +1 -0
- package/dist/sdk/agent-core/harness/skills.d.ts +44 -0
- package/dist/sdk/agent-core/harness/skills.d.ts.map +1 -0
- package/dist/sdk/agent-core/harness/system-prompt.d.ts +3 -0
- package/dist/sdk/agent-core/harness/system-prompt.d.ts.map +1 -0
- package/dist/sdk/agent-core/harness/types.d.ts +601 -0
- package/dist/sdk/agent-core/harness/types.d.ts.map +1 -0
- package/dist/sdk/agent-core/harness/utils/shell-output.d.ts +14 -0
- package/dist/sdk/agent-core/harness/utils/shell-output.d.ts.map +1 -0
- package/dist/sdk/agent-core/harness/utils/truncate.d.ts +70 -0
- package/dist/sdk/agent-core/harness/utils/truncate.d.ts.map +1 -0
- package/dist/sdk/agent-core/index.d.ts +20 -0
- package/dist/sdk/agent-core/index.d.ts.map +1 -0
- package/dist/sdk/agent-core/node.d.ts +3 -0
- package/dist/sdk/agent-core/node.d.ts.map +1 -0
- package/dist/sdk/agent-core/proxy.d.ts +69 -0
- package/dist/sdk/agent-core/proxy.d.ts.map +1 -0
- package/dist/sdk/agent-core/types.d.ts +393 -0
- package/dist/sdk/agent-core/types.d.ts.map +1 -0
- package/dist/sdk/ai/api-registry.d.ts +20 -0
- package/dist/sdk/ai/api-registry.d.ts.map +1 -0
- package/dist/sdk/ai/cli.d.ts +3 -0
- package/dist/sdk/ai/cli.d.ts.map +1 -0
- package/dist/sdk/ai/env-api-keys.d.ts +18 -0
- package/dist/sdk/ai/env-api-keys.d.ts.map +1 -0
- package/dist/sdk/ai/image-models.d.ts +10 -0
- package/dist/sdk/ai/image-models.d.ts.map +1 -0
- package/dist/sdk/ai/image-models.generated.d.ts +440 -0
- package/dist/sdk/ai/image-models.generated.d.ts.map +1 -0
- package/dist/sdk/ai/images-api-registry.d.ts +14 -0
- package/dist/sdk/ai/images-api-registry.d.ts.map +1 -0
- package/dist/sdk/ai/images.d.ts +4 -0
- package/dist/sdk/ai/images.d.ts.map +1 -0
- package/dist/sdk/ai/index.d.ts +21 -0
- package/dist/sdk/ai/index.d.ts.map +1 -0
- package/dist/sdk/ai/models.d.ts +18 -0
- package/dist/sdk/ai/models.d.ts.map +1 -0
- package/dist/sdk/ai/models.generated.d.ts +17349 -0
- package/dist/sdk/ai/models.generated.d.ts.map +1 -0
- package/dist/sdk/ai/oauth.d.ts +2 -0
- package/dist/sdk/ai/oauth.d.ts.map +1 -0
- package/dist/sdk/ai/providers/anthropic.d.ts +54 -0
- package/dist/sdk/ai/providers/anthropic.d.ts.map +1 -0
- package/dist/sdk/ai/providers/faux.d.ts +56 -0
- package/dist/sdk/ai/providers/faux.d.ts.map +1 -0
- package/dist/sdk/ai/providers/github-copilot-headers.d.ts +8 -0
- package/dist/sdk/ai/providers/github-copilot-headers.d.ts.map +1 -0
- package/dist/sdk/ai/providers/openai-completions.d.ts +19 -0
- package/dist/sdk/ai/providers/openai-completions.d.ts.map +1 -0
- package/dist/sdk/ai/providers/openai-prompt-cache.d.ts +3 -0
- package/dist/sdk/ai/providers/openai-prompt-cache.d.ts.map +1 -0
- package/dist/sdk/ai/providers/register-builtins.d.ts +15 -0
- package/dist/sdk/ai/providers/register-builtins.d.ts.map +1 -0
- package/dist/sdk/ai/providers/simple-options.d.ts +8 -0
- package/dist/sdk/ai/providers/simple-options.d.ts.map +1 -0
- package/dist/sdk/ai/providers/transform-messages.d.ts +8 -0
- package/dist/sdk/ai/providers/transform-messages.d.ts.map +1 -0
- package/dist/sdk/ai/session-resources.d.ts +4 -0
- package/dist/sdk/ai/session-resources.d.ts.map +1 -0
- package/dist/sdk/ai/stream.d.ts +8 -0
- package/dist/sdk/ai/stream.d.ts.map +1 -0
- package/dist/sdk/ai/types.d.ts +488 -0
- package/dist/sdk/ai/types.d.ts.map +1 -0
- package/dist/sdk/ai/utils/diagnostics.d.ts +19 -0
- package/dist/sdk/ai/utils/diagnostics.d.ts.map +1 -0
- package/dist/sdk/ai/utils/event-stream.d.ts +21 -0
- package/dist/sdk/ai/utils/event-stream.d.ts.map +1 -0
- package/dist/sdk/ai/utils/hash.d.ts +3 -0
- package/dist/sdk/ai/utils/hash.d.ts.map +1 -0
- package/dist/sdk/ai/utils/headers.d.ts +2 -0
- package/dist/sdk/ai/utils/headers.d.ts.map +1 -0
- package/dist/sdk/ai/utils/json-parse.d.ts +16 -0
- package/dist/sdk/ai/utils/json-parse.d.ts.map +1 -0
- package/dist/sdk/ai/utils/node-http-proxy.d.ts +10 -0
- package/dist/sdk/ai/utils/node-http-proxy.d.ts.map +1 -0
- package/dist/sdk/ai/utils/oauth/anthropic.d.ts +25 -0
- package/dist/sdk/ai/utils/oauth/anthropic.d.ts.map +1 -0
- package/dist/sdk/ai/utils/oauth/device-code.d.ts +19 -0
- package/dist/sdk/ai/utils/oauth/device-code.d.ts.map +1 -0
- package/dist/sdk/ai/utils/oauth/github-copilot.d.ts +30 -0
- package/dist/sdk/ai/utils/oauth/github-copilot.d.ts.map +1 -0
- package/dist/sdk/ai/utils/oauth/index.d.ts +58 -0
- package/dist/sdk/ai/utils/oauth/index.d.ts.map +1 -0
- package/dist/sdk/ai/utils/oauth/oauth-page.d.ts +3 -0
- package/dist/sdk/ai/utils/oauth/oauth-page.d.ts.map +1 -0
- package/dist/sdk/ai/utils/oauth/openai-codex.d.ts +34 -0
- package/dist/sdk/ai/utils/oauth/openai-codex.d.ts.map +1 -0
- package/dist/sdk/ai/utils/oauth/openai-codex.js +2 -2
- package/dist/sdk/ai/utils/oauth/pkce.d.ts +13 -0
- package/dist/sdk/ai/utils/oauth/pkce.d.ts.map +1 -0
- package/dist/sdk/ai/utils/oauth/types.d.ts +64 -0
- package/dist/sdk/ai/utils/oauth/types.d.ts.map +1 -0
- package/dist/sdk/ai/utils/overflow.d.ts +56 -0
- package/dist/sdk/ai/utils/overflow.d.ts.map +1 -0
- package/dist/sdk/ai/utils/sanitize-unicode.d.ts +22 -0
- package/dist/sdk/ai/utils/sanitize-unicode.d.ts.map +1 -0
- package/dist/sdk/ai/utils/typebox-helpers.d.ts +17 -0
- package/dist/sdk/ai/utils/typebox-helpers.d.ts.map +1 -0
- package/dist/sdk/ai/utils/validation.d.ts +18 -0
- package/dist/sdk/ai/utils/validation.d.ts.map +1 -0
- package/dist/sdk/coding-agent/cli.d.ts +3 -0
- package/dist/sdk/coding-agent/cli.d.ts.map +1 -0
- package/dist/sdk/coding-agent/config.d.ts +71 -0
- package/dist/sdk/coding-agent/config.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/agent-session-runtime.d.ts +117 -0
- package/dist/sdk/coding-agent/core/agent-session-runtime.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/agent-session-services.d.ts +86 -0
- package/dist/sdk/coding-agent/core/agent-session-services.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/agent-session.d.ts +626 -0
- package/dist/sdk/coding-agent/core/agent-session.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/agent-session.js +3 -3
- package/dist/sdk/coding-agent/core/auth-guidance.d.ts +5 -0
- package/dist/sdk/coding-agent/core/auth-guidance.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/auth-storage.d.ts +145 -0
- package/dist/sdk/coding-agent/core/auth-storage.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/auth-storage.js +2 -2
- package/dist/sdk/coding-agent/core/bash-executor.d.ts +32 -0
- package/dist/sdk/coding-agent/core/bash-executor.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/bash-executor.js +1 -1
- package/dist/sdk/coding-agent/core/compaction/branch-summarization.d.ts +88 -0
- package/dist/sdk/coding-agent/core/compaction/branch-summarization.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/compaction/branch-summarization.js +1 -1
- package/dist/sdk/coding-agent/core/compaction/compaction.d.ts +142 -0
- package/dist/sdk/coding-agent/core/compaction/compaction.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/compaction/compaction.js +1 -1
- package/dist/sdk/coding-agent/core/compaction/index.d.ts +7 -0
- package/dist/sdk/coding-agent/core/compaction/index.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/compaction/utils.d.ts +38 -0
- package/dist/sdk/coding-agent/core/compaction/utils.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/defaults.d.ts +3 -0
- package/dist/sdk/coding-agent/core/defaults.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/diagnostics.d.ts +15 -0
- package/dist/sdk/coding-agent/core/diagnostics.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/event-bus.d.ts +9 -0
- package/dist/sdk/coding-agent/core/event-bus.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/exec.d.ts +29 -0
- package/dist/sdk/coding-agent/core/exec.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/extensions/index.d.ts +12 -0
- package/dist/sdk/coding-agent/core/extensions/index.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/extensions/loader.d.ts +24 -0
- package/dist/sdk/coding-agent/core/extensions/loader.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/extensions/loader.js +18 -21
- package/dist/sdk/coding-agent/core/extensions/runner.d.ts +161 -0
- package/dist/sdk/coding-agent/core/extensions/runner.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/extensions/runner.js +1 -1
- package/dist/sdk/coding-agent/core/extensions/types.d.ts +1181 -0
- package/dist/sdk/coding-agent/core/extensions/types.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/extensions/wrapper.d.ts +20 -0
- package/dist/sdk/coding-agent/core/extensions/wrapper.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/http-dispatcher.d.ts +21 -0
- package/dist/sdk/coding-agent/core/http-dispatcher.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/index.d.ts +12 -0
- package/dist/sdk/coding-agent/core/index.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/keybindings.d.ts +371 -0
- package/dist/sdk/coding-agent/core/keybindings.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/messages.d.ts +77 -0
- package/dist/sdk/coding-agent/core/messages.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/model-registry.d.ts +150 -0
- package/dist/sdk/coding-agent/core/model-registry.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/model-resolver-utils.d.ts +7 -0
- package/dist/sdk/coding-agent/core/model-resolver-utils.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/model-resolver.d.ts +110 -0
- package/dist/sdk/coding-agent/core/model-resolver.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/output-guard.d.ts +6 -0
- package/dist/sdk/coding-agent/core/output-guard.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/package-manager.d.ts +204 -0
- package/dist/sdk/coding-agent/core/package-manager.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/package-manager.js +14 -14
- package/dist/sdk/coding-agent/core/prompt-templates.d.ts +52 -0
- package/dist/sdk/coding-agent/core/prompt-templates.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/provider-display-names.d.ts +2 -0
- package/dist/sdk/coding-agent/core/provider-display-names.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/resolve-config-value.d.ts +23 -0
- package/dist/sdk/coding-agent/core/resolve-config-value.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/resource-loader.d.ts +194 -0
- package/dist/sdk/coding-agent/core/resource-loader.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/sdk.d.ts +107 -0
- package/dist/sdk/coding-agent/core/sdk.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/sdk.js +2 -2
- package/dist/sdk/coding-agent/core/session-cwd.d.ts +19 -0
- package/dist/sdk/coding-agent/core/session-cwd.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/session-manager.d.ts +333 -0
- package/dist/sdk/coding-agent/core/session-manager.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/settings-manager.d.ts +209 -0
- package/dist/sdk/coding-agent/core/settings-manager.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/skills.d.ts +60 -0
- package/dist/sdk/coding-agent/core/skills.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/slash-commands.d.ts +14 -0
- package/dist/sdk/coding-agent/core/slash-commands.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/source-info.d.ts +18 -0
- package/dist/sdk/coding-agent/core/source-info.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/system-prompt.d.ts +28 -0
- package/dist/sdk/coding-agent/core/system-prompt.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/system-prompt.js +7 -7
- package/dist/sdk/coding-agent/core/telemetry.d.ts +3 -0
- package/dist/sdk/coding-agent/core/telemetry.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/theme.d.ts +28 -0
- package/dist/sdk/coding-agent/core/theme.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/timings.d.ts +8 -0
- package/dist/sdk/coding-agent/core/timings.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/tools/bash.d.ts +63 -0
- package/dist/sdk/coding-agent/core/tools/bash.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/tools/bash.js +3 -3
- package/dist/sdk/coding-agent/core/tools/edit-diff.d.ts +87 -0
- package/dist/sdk/coding-agent/core/tools/edit-diff.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/tools/edit.d.ts +39 -0
- package/dist/sdk/coding-agent/core/tools/edit.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/tools/file-mutation-queue.d.ts +6 -0
- package/dist/sdk/coding-agent/core/tools/file-mutation-queue.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/tools/find.d.ts +35 -0
- package/dist/sdk/coding-agent/core/tools/find.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/tools/grep.d.ts +37 -0
- package/dist/sdk/coding-agent/core/tools/grep.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/tools/index.d.ts +40 -0
- package/dist/sdk/coding-agent/core/tools/index.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/tools/ls.d.ts +37 -0
- package/dist/sdk/coding-agent/core/tools/ls.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/tools/output-accumulator.d.ts +52 -0
- package/dist/sdk/coding-agent/core/tools/output-accumulator.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/tools/output-accumulator.js +1 -1
- package/dist/sdk/coding-agent/core/tools/path-utils.d.ts +8 -0
- package/dist/sdk/coding-agent/core/tools/path-utils.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/tools/read.d.ts +35 -0
- package/dist/sdk/coding-agent/core/tools/read.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/tools/read.js +18 -10
- package/dist/sdk/coding-agent/core/tools/render-diff.d.ts +17 -0
- package/dist/sdk/coding-agent/core/tools/render-diff.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/tools/render-utils.d.ts +21 -0
- package/dist/sdk/coding-agent/core/tools/render-utils.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/tools/tool-definition-wrapper.d.ts +14 -0
- package/dist/sdk/coding-agent/core/tools/tool-definition-wrapper.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/tools/truncate.d.ts +70 -0
- package/dist/sdk/coding-agent/core/tools/truncate.d.ts.map +1 -0
- package/dist/sdk/coding-agent/core/tools/write.d.ts +26 -0
- package/dist/sdk/coding-agent/core/tools/write.d.ts.map +1 -0
- package/dist/sdk/coding-agent/index.d.ts +29 -0
- package/dist/sdk/coding-agent/index.d.ts.map +1 -0
- package/dist/sdk/coding-agent/main.d.ts +2 -0
- package/dist/sdk/coding-agent/main.d.ts.map +1 -0
- package/dist/sdk/coding-agent/migrations.d.ts +33 -0
- package/dist/sdk/coding-agent/migrations.d.ts.map +1 -0
- package/dist/sdk/coding-agent/migrations.js +4 -4
- package/dist/sdk/coding-agent/modes/index.d.ts +8 -0
- package/dist/sdk/coding-agent/modes/index.d.ts.map +1 -0
- package/dist/sdk/coding-agent/modes/print-mode.d.ts +28 -0
- package/dist/sdk/coding-agent/modes/print-mode.d.ts.map +1 -0
- package/dist/sdk/coding-agent/modes/print-mode.js +2 -2
- package/dist/sdk/coding-agent/modes/rpc/jsonl.d.ts +17 -0
- package/dist/sdk/coding-agent/modes/rpc/jsonl.d.ts.map +1 -0
- package/dist/sdk/coding-agent/modes/rpc/rpc-client.d.ts +224 -0
- package/dist/sdk/coding-agent/modes/rpc/rpc-client.d.ts.map +1 -0
- package/dist/sdk/coding-agent/modes/rpc/rpc-mode.d.ts +20 -0
- package/dist/sdk/coding-agent/modes/rpc/rpc-mode.d.ts.map +1 -0
- package/dist/sdk/coding-agent/modes/rpc/rpc-types.d.ts +419 -0
- package/dist/sdk/coding-agent/modes/rpc/rpc-types.d.ts.map +1 -0
- package/dist/sdk/coding-agent/utils/ansi.d.ts +2 -0
- package/dist/sdk/coding-agent/utils/ansi.d.ts.map +1 -0
- package/dist/sdk/coding-agent/utils/changelog.d.ts +21 -0
- package/dist/sdk/coding-agent/utils/changelog.d.ts.map +1 -0
- package/dist/sdk/coding-agent/utils/child-process.d.ts +15 -0
- package/dist/sdk/coding-agent/utils/child-process.d.ts.map +1 -0
- package/dist/sdk/coding-agent/utils/clipboard-image.d.ts +11 -0
- package/dist/sdk/coding-agent/utils/clipboard-image.d.ts.map +1 -0
- package/dist/sdk/coding-agent/utils/clipboard-image.js +1 -1
- package/dist/sdk/coding-agent/utils/clipboard-native.d.ts +8 -0
- package/dist/sdk/coding-agent/utils/clipboard-native.d.ts.map +1 -0
- package/dist/sdk/coding-agent/utils/clipboard.d.ts +2 -0
- package/dist/sdk/coding-agent/utils/clipboard.d.ts.map +1 -0
- package/dist/sdk/coding-agent/utils/exif-orientation.d.ts +5 -0
- package/dist/sdk/coding-agent/utils/exif-orientation.d.ts.map +1 -0
- package/dist/sdk/coding-agent/utils/frontmatter.d.ts +8 -0
- package/dist/sdk/coding-agent/utils/frontmatter.d.ts.map +1 -0
- package/dist/sdk/coding-agent/utils/fs-watch.d.ts +5 -0
- package/dist/sdk/coding-agent/utils/fs-watch.d.ts.map +1 -0
- package/dist/sdk/coding-agent/utils/git.d.ts +26 -0
- package/dist/sdk/coding-agent/utils/git.d.ts.map +1 -0
- package/dist/sdk/coding-agent/utils/html.d.ts +7 -0
- package/dist/sdk/coding-agent/utils/html.d.ts.map +1 -0
- package/dist/sdk/coding-agent/utils/image-convert.d.ts +9 -0
- package/dist/sdk/coding-agent/utils/image-convert.d.ts.map +1 -0
- package/dist/sdk/coding-agent/utils/image-resize.d.ts +36 -0
- package/dist/sdk/coding-agent/utils/image-resize.d.ts.map +1 -0
- package/dist/sdk/coding-agent/utils/mime.d.ts +3 -0
- package/dist/sdk/coding-agent/utils/mime.d.ts.map +1 -0
- package/dist/sdk/coding-agent/utils/paths.d.ts +31 -0
- package/dist/sdk/coding-agent/utils/paths.d.ts.map +1 -0
- package/dist/sdk/coding-agent/utils/photon.d.ts +13 -0
- package/dist/sdk/coding-agent/utils/photon.d.ts.map +1 -0
- package/dist/sdk/coding-agent/utils/shell.d.ts +30 -0
- package/dist/sdk/coding-agent/utils/shell.d.ts.map +1 -0
- package/dist/sdk/coding-agent/utils/sleep.d.ts +5 -0
- package/dist/sdk/coding-agent/utils/sleep.d.ts.map +1 -0
- package/dist/sdk/coding-agent/utils/spectral-user-agent.d.ts +2 -0
- package/dist/sdk/coding-agent/utils/spectral-user-agent.d.ts.map +1 -0
- package/dist/sdk/coding-agent/utils/spectral-user-agent.js +3 -0
- package/dist/sdk/coding-agent/utils/syntax-highlight.d.ts +12 -0
- package/dist/sdk/coding-agent/utils/syntax-highlight.d.ts.map +1 -0
- package/dist/sdk/coding-agent/utils/tools-manager.d.ts +3 -0
- package/dist/sdk/coding-agent/utils/tools-manager.d.ts.map +1 -0
- package/dist/sdk/coding-agent/utils/version-check.d.ts +15 -0
- package/dist/sdk/coding-agent/utils/version-check.d.ts.map +1 -0
- package/dist/sdk/coding-agent/utils/version-check.js +7 -7
- package/dist/sdk/coding-agent/utils/windows-self-update.d.ts +3 -0
- package/dist/sdk/coding-agent/utils/windows-self-update.d.ts.map +1 -0
- package/dist/sdk/coding-agent/utils/windows-self-update.js +1 -1
- package/dist/server/agent-bridge.d.ts +308 -0
- package/dist/server/agent-bridge.d.ts.map +1 -0
- package/dist/server/agent-bridge.js +58 -58
- package/dist/server/handlers/errors.d.ts +26 -0
- package/dist/server/handlers/errors.d.ts.map +1 -0
- package/dist/server/handlers/mcp-status.d.ts +21 -0
- package/dist/server/handlers/mcp-status.d.ts.map +1 -0
- package/dist/server/handlers/mcp-status.js +52 -0
- package/dist/server/handlers/paths-autocomplete.d.ts +45 -0
- package/dist/server/handlers/paths-autocomplete.d.ts.map +1 -0
- package/dist/server/handlers/projects.d.ts +58 -0
- package/dist/server/handlers/projects.d.ts.map +1 -0
- package/dist/server/handlers/queue.d.ts +27 -0
- package/dist/server/handlers/queue.d.ts.map +1 -0
- package/dist/server/handlers/sessions.d.ts +50 -0
- package/dist/server/handlers/sessions.d.ts.map +1 -0
- package/dist/server/handlers/sessions.js +1 -1
- package/dist/server/handlers/settings.d.ts +30 -0
- package/dist/server/handlers/settings.d.ts.map +1 -0
- package/dist/server/handlers/settings.js +123 -0
- package/dist/server/paths.d.ts +51 -0
- package/dist/server/paths.d.ts.map +1 -0
- package/dist/server/paths.js +2 -2
- package/dist/server/session-stream.d.ts +379 -0
- package/dist/server/session-stream.d.ts.map +1 -0
- package/dist/server/session-stream.js +43 -34
- package/dist/server/shutdown.d.ts +102 -0
- package/dist/server/shutdown.d.ts.map +1 -0
- package/dist/server/shutdown.js +3 -3
- package/dist/server/storage.d.ts +287 -0
- package/dist/server/storage.d.ts.map +1 -0
- package/dist/server/storage.js +6 -6
- package/dist/server/title-generator.d.ts +25 -0
- package/dist/server/title-generator.d.ts.map +1 -0
- package/dist/server/wire.d.ts +448 -0
- package/dist/server/wire.d.ts.map +1 -0
- package/dist/server/wire.js +1 -1
- package/dist/studio-binding.d.ts +44 -0
- package/dist/studio-binding.d.ts.map +1 -0
- package/dist/studio-binding.js +1 -1
- package/package.json +11 -1
- package/dist/sdk/coding-agent/utils/pi-user-agent.js +0 -3
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Aexol MCP
|
|
2
|
+
* Aexol MCP spectral extension.
|
|
3
3
|
*
|
|
4
4
|
* Loaded by the spectral wrapper via `--extension <abs-path>`. On startup it:
|
|
5
5
|
* 1. Reads ~/.spectral/config.json (writen by `spectral login`).
|
|
6
6
|
* 2. Calls tools/list against the MCP backend once.
|
|
7
7
|
* 3. Reads the local Studio binding (`.aexol/aexol.jsonc`) so remote tools
|
|
8
8
|
* auto-inherit `teamId` / `projectId` without needing `remote_set_context`.
|
|
9
|
-
* 4. Registers every returned remote tool through
|
|
9
|
+
* 4. Registers every returned remote tool through ext.registerTool() so the
|
|
10
10
|
* model can call them like built-in tools.
|
|
11
11
|
* 5. Registers local binding-management tools (`local_bind_project`,
|
|
12
12
|
* `local_unbind_project`, `local_get_binding`) so users can bind a
|
|
13
13
|
* directory to an Aexol Studio project from within the agent.
|
|
14
14
|
*
|
|
15
|
-
* Each registered tool is just a thin proxy: when
|
|
15
|
+
* Each registered tool is just a thin proxy: when spectral's model invokes it, we
|
|
16
16
|
* translate the call into a JSON-RPC tools/call POST and unwrap the response
|
|
17
|
-
* into the `{ content: [{ type: "text", text }], details }` shape
|
|
17
|
+
* into the `{ content: [{ type: "text", text }], details }` shape spectral expects.
|
|
18
18
|
*
|
|
19
19
|
* Failure modes are intentionally non-fatal: if config is missing or the
|
|
20
|
-
* backend is unreachable we log a warning and return, leaving
|
|
20
|
+
* backend is unreachable we log a warning and return, leaving spectral to start
|
|
21
21
|
* without Aexol tools rather than crashing the whole agent.
|
|
22
22
|
*/
|
|
23
23
|
import { getApiUrl, getConfigFile, readConfig } from "../config.js";
|
|
24
24
|
import { AexolMcpClient, AexolMcpError } from "../mcp-client.js";
|
|
25
25
|
import { readStudioBinding, writeStudioBinding, deleteStudioBinding, } from "../studio-binding.js";
|
|
26
26
|
/**
|
|
27
|
-
* Render a backend tool result into a single string for
|
|
27
|
+
* Render a backend tool result into a single string for ext.
|
|
28
28
|
*
|
|
29
29
|
* The Aexol backend wraps results as `{ content: [{ type: "json", json: ... }] }`
|
|
30
30
|
* but may also send `{ type: "text", text: ... }`. We pick the first content
|
|
@@ -96,7 +96,7 @@ function augmentParams(toolName, params) {
|
|
|
96
96
|
}
|
|
97
97
|
return augmented;
|
|
98
98
|
}
|
|
99
|
-
export default async function aexolMcpExtension(
|
|
99
|
+
export default async function aexolMcpExtension(ext) {
|
|
100
100
|
const cfg = await readConfig();
|
|
101
101
|
if (!cfg) {
|
|
102
102
|
// Pre-flight in cli.ts should have caught this. Logging is enough.
|
|
@@ -153,7 +153,7 @@ export default async function aexolMcpExtension(pi) {
|
|
|
153
153
|
// Surface backend tool errors as a textual result, not a thrown
|
|
154
154
|
// exception. Pi treats this as the tool's natural reply; the model
|
|
155
155
|
// sees the `[Aexol MCP error] ...` marker and can recover. Throwing
|
|
156
|
-
// here would force
|
|
156
|
+
// here would force spectral to wrap the message and risk crashing
|
|
157
157
|
// callers that don't expect agent-tool exceptions.
|
|
158
158
|
const errorText = `[Aexol MCP error] ${text || "Tool reported an error with no message."}`;
|
|
159
159
|
return {
|
|
@@ -168,7 +168,7 @@ export default async function aexolMcpExtension(pi) {
|
|
|
168
168
|
},
|
|
169
169
|
};
|
|
170
170
|
try {
|
|
171
|
-
|
|
171
|
+
ext.registerTool(definition);
|
|
172
172
|
registered++;
|
|
173
173
|
}
|
|
174
174
|
catch (err) {
|
|
@@ -181,7 +181,7 @@ export default async function aexolMcpExtension(pi) {
|
|
|
181
181
|
// binding directly from within the agent, without the user having to drop
|
|
182
182
|
// out to the terminal and run `spectral bind` / `spectral unbind`.
|
|
183
183
|
try {
|
|
184
|
-
|
|
184
|
+
ext.registerTool({
|
|
185
185
|
name: "local_bind_project",
|
|
186
186
|
label: "Bind Project",
|
|
187
187
|
description: "Link the current working directory to an Aexol Studio project. " +
|
|
@@ -249,7 +249,7 @@ export default async function aexolMcpExtension(pi) {
|
|
|
249
249
|
process.stderr.write(`[aexol-mcp] Failed to register local_bind_project: ${msg}\n`);
|
|
250
250
|
}
|
|
251
251
|
try {
|
|
252
|
-
|
|
252
|
+
ext.registerTool({
|
|
253
253
|
name: "local_unbind_project",
|
|
254
254
|
label: "Unbind Project",
|
|
255
255
|
description: "Remove the Aexol Studio project binding from the current working directory. " +
|
|
@@ -301,7 +301,7 @@ export default async function aexolMcpExtension(pi) {
|
|
|
301
301
|
process.stderr.write(`[aexol-mcp] Failed to register local_unbind_project: ${msg}\n`);
|
|
302
302
|
}
|
|
303
303
|
try {
|
|
304
|
-
|
|
304
|
+
ext.registerTool({
|
|
305
305
|
name: "local_get_binding",
|
|
306
306
|
label: "Get Binding",
|
|
307
307
|
description: "Show the current Aexol Studio project binding for this directory. " +
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kanban Bridge spectral extension.
|
|
3
|
+
*
|
|
4
|
+
* Registers kanban management tools that allow the coding agent to read,
|
|
5
|
+
* create, update, and move Kanban tasks on the Aexol Studio board. This
|
|
6
|
+
* enables task-driven execution — the agent can pick up TODO tasks, work
|
|
7
|
+
* on them, and move them to DONE.
|
|
8
|
+
*
|
|
9
|
+
* Auth is read from ~/.spectral/config.json (same as aexol-mcp).
|
|
10
|
+
* The Studio project ID comes from the local binding (.aexol/aexol.jsonc),
|
|
11
|
+
* falling back to an explicit kanban_project_id flag.
|
|
12
|
+
*
|
|
13
|
+
* Registered tools:
|
|
14
|
+
* - kanban_list — List all Kanban tasks for the project
|
|
15
|
+
* - kanban_get — Get a single task by ID
|
|
16
|
+
* - kanban_create — Create a new Kanban task
|
|
17
|
+
* - kanban_update — Update a task (title, description, priority, tags)
|
|
18
|
+
* - kanban_move — Move a task between columns (BACKLOG → TODO → IN_PROGRESS → DONE)
|
|
19
|
+
* - kanban_next — Pick the next TODO task and mark it IN_PROGRESS
|
|
20
|
+
* - kanban_delete — Delete a task
|
|
21
|
+
*/
|
|
22
|
+
import type { ExtensionAPI } from "../sdk/coding-agent/index.js";
|
|
23
|
+
export default function kanbanBridgeExtension(ext: ExtensionAPI): Promise<void>;
|
|
24
|
+
//# sourceMappingURL=kanban-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kanban-bridge.d.ts","sourceRoot":"","sources":["../../src/extensions/kanban-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,8BAA8B,CAAC;AAixBjF,wBAA8B,qBAAqB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCpF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Kanban Bridge
|
|
2
|
+
* Kanban Bridge spectral extension.
|
|
3
3
|
*
|
|
4
4
|
* Registers kanban management tools that allow the coding agent to read,
|
|
5
5
|
* create, update, and move Kanban tasks on the Aexol Studio board. This
|
|
@@ -636,7 +636,7 @@ const kanbanDeleteTool = {
|
|
|
636
636
|
// ---------------------------------------------------------------------------
|
|
637
637
|
// Extension entry point
|
|
638
638
|
// ---------------------------------------------------------------------------
|
|
639
|
-
export default async function kanbanBridgeExtension(
|
|
639
|
+
export default async function kanbanBridgeExtension(ext) {
|
|
640
640
|
const tools = [
|
|
641
641
|
kanbanListTool,
|
|
642
642
|
kanbanGetTool,
|
|
@@ -649,7 +649,7 @@ export default async function kanbanBridgeExtension(pi) {
|
|
|
649
649
|
let registered = 0;
|
|
650
650
|
for (const tool of tools) {
|
|
651
651
|
try {
|
|
652
|
-
|
|
652
|
+
ext.registerTool(tool);
|
|
653
653
|
registered++;
|
|
654
654
|
}
|
|
655
655
|
catch (err) {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenRouter App Attribution extension.
|
|
3
|
+
*
|
|
4
|
+
* Adds HTTP headers required by OpenRouter's app attribution system so that
|
|
5
|
+
* Aexol / Spectral appears in OpenRouter rankings, analytics, and model
|
|
6
|
+
* "Apps" tabs. Without these headers our usage is anonymous to OpenRouter.
|
|
7
|
+
*
|
|
8
|
+
* @see https://openrouter.ai/docs/app-attribution
|
|
9
|
+
*/
|
|
10
|
+
import type { ExtensionAPI } from "../sdk/coding-agent/index.js";
|
|
11
|
+
export default function openrouterAttributionExtension(ext: ExtensionAPI): void;
|
|
12
|
+
//# sourceMappingURL=openrouter-attribution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openrouter-attribution.d.ts","sourceRoot":"","sources":["../../src/extensions/openrouter-attribution.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,MAAM,CAAC,OAAO,UAAU,8BAA8B,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAU9E"}
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @see https://openrouter.ai/docs/app-attribution
|
|
9
9
|
*/
|
|
10
|
-
export default function openrouterAttributionExtension(
|
|
11
|
-
|
|
10
|
+
export default function openrouterAttributionExtension(ext) {
|
|
11
|
+
ext.registerProvider("openrouter", {
|
|
12
12
|
headers: {
|
|
13
13
|
"HTTP-Referer": "https://aexol.ai",
|
|
14
14
|
"X-OpenRouter-Title": "Aexol",
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spectral Vision Extension
|
|
3
|
+
*
|
|
4
|
+
* Automatically switches to a vision-capable model for image processing
|
|
5
|
+
* when images are attached. This allows non-vision models to "see" images
|
|
6
|
+
* and saves main agent context by using a potentially smaller/cheaper
|
|
7
|
+
* vision model for image understanding.
|
|
8
|
+
*
|
|
9
|
+
* Logic:
|
|
10
|
+
* - If the main model supports vision natively, images pass through
|
|
11
|
+
* directly — no interception, no text descriptions.
|
|
12
|
+
* - When the main model does NOT support vision, falls back to the
|
|
13
|
+
* admin-configured default vision model (isVisionDefault flag from
|
|
14
|
+
* backend via SettingsManager) for image descriptions.
|
|
15
|
+
* - If no admin default is configured, falls back to the best
|
|
16
|
+
* available vision-capable model by provider priority.
|
|
17
|
+
*
|
|
18
|
+
* Hooks into the `context` event to intercept ALL images before they reach
|
|
19
|
+
* the LLM (covers user-attached images and tool-result images alike).
|
|
20
|
+
*/
|
|
21
|
+
import type { ExtensionAPI } from "../sdk/coding-agent/index.js";
|
|
22
|
+
export default function spectralVisionExtension(ext: ExtensionAPI): void;
|
|
23
|
+
//# sourceMappingURL=spectral-vision-fallback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spectral-vision-fallback.d.ts","sourceRoot":"","sources":["../../src/extensions/spectral-vision-fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAuNjE,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAmFvE"}
|
|
@@ -7,14 +7,13 @@
|
|
|
7
7
|
* vision model for image understanding.
|
|
8
8
|
*
|
|
9
9
|
* Logic:
|
|
10
|
-
* -
|
|
11
|
-
*
|
|
12
|
-
* -
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* vision-capable model by provider priority.
|
|
10
|
+
* - If the main model supports vision natively, images pass through
|
|
11
|
+
* directly — no interception, no text descriptions.
|
|
12
|
+
* - When the main model does NOT support vision, falls back to the
|
|
13
|
+
* admin-configured default vision model (isVisionDefault flag from
|
|
14
|
+
* backend via SettingsManager) for image descriptions.
|
|
15
|
+
* - If no admin default is configured, falls back to the best
|
|
16
|
+
* available vision-capable model by provider priority.
|
|
18
17
|
*
|
|
19
18
|
* Hooks into the `context` event to intercept ALL images before they reach
|
|
20
19
|
* the LLM (covers user-attached images and tool-result images alike).
|
|
@@ -47,24 +46,25 @@ function getAdminVisionModel(ctx) {
|
|
|
47
46
|
* Resolve the best vision model to use for image descriptions.
|
|
48
47
|
*
|
|
49
48
|
* Priority:
|
|
50
|
-
* 1.
|
|
51
|
-
* 2.
|
|
49
|
+
* 1. Current main model if it supports images — passthrough, no interception
|
|
50
|
+
* 2. Admin-configured default vision model (isVisionDefault from backend)
|
|
52
51
|
* 3. Best available vision model by provider priority
|
|
53
52
|
* 4. First available vision model
|
|
54
53
|
*/
|
|
55
54
|
function resolveVisionModel(ctx) {
|
|
56
|
-
// 1.
|
|
55
|
+
// 1. If the main model supports vision natively, skip interception entirely
|
|
56
|
+
// and let the main model process images directly.
|
|
57
|
+
const currentModel = ctx.model;
|
|
58
|
+
if (currentModel?.input.includes("image") && ctx.modelRegistry.hasConfiguredAuth(currentModel)) {
|
|
59
|
+
process.stderr.write(`[spectral-vision] Main model supports vision — passing images through natively (${currentModel.provider}/${currentModel.id})\n`);
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
// 2. Admin-configured default vision model (fallback for non-vision main models)
|
|
57
63
|
const adminModel = getAdminVisionModel(ctx);
|
|
58
64
|
if (adminModel) {
|
|
59
65
|
process.stderr.write(`[spectral-vision] Using admin-configured default: ${adminModel.provider}/${adminModel.id}\n`);
|
|
60
66
|
return adminModel;
|
|
61
67
|
}
|
|
62
|
-
// 2. Current main model if it supports images
|
|
63
|
-
const currentModel = ctx.model;
|
|
64
|
-
if (currentModel?.input.includes("image") && ctx.modelRegistry.hasConfiguredAuth(currentModel)) {
|
|
65
|
-
process.stderr.write(`[spectral-vision] Using main model for vision: ${currentModel.provider}/${currentModel.id}\n`);
|
|
66
|
-
return currentModel;
|
|
67
|
-
}
|
|
68
68
|
// 3. Fall back to best available vision model by provider priority
|
|
69
69
|
const allModels = ctx.modelRegistry.getAll();
|
|
70
70
|
const visionModels = allModels.filter((m) => m.input.includes("image") && ctx.modelRegistry.hasConfiguredAuth(m));
|
|
@@ -177,18 +177,21 @@ async function describeImages(visionModel, content, contextText, ctx) {
|
|
|
177
177
|
// ---------------------------------------------------------------------------
|
|
178
178
|
// Extension entry point
|
|
179
179
|
// ---------------------------------------------------------------------------
|
|
180
|
-
export default function spectralVisionExtension(
|
|
180
|
+
export default function spectralVisionExtension(ext) {
|
|
181
181
|
let visionModel;
|
|
182
|
-
|
|
182
|
+
ext.on("session_start", (_event, ctx) => {
|
|
183
183
|
visionModel = resolveVisionModel(ctx);
|
|
184
184
|
if (visionModel) {
|
|
185
185
|
process.stderr.write(`[spectral-vision] Ready — using ${visionModel.provider}/${visionModel.id} for image descriptions.\n`);
|
|
186
186
|
}
|
|
187
|
+
else if (ctx.model?.input.includes("image")) {
|
|
188
|
+
process.stderr.write(`[spectral-vision] Ready — main model ${ctx.model.provider}/${ctx.model.id} handles vision natively, passthrough enabled.\n`);
|
|
189
|
+
}
|
|
187
190
|
else {
|
|
188
191
|
process.stderr.write("[spectral-vision] No vision model with auth configured. Image description disabled.\n");
|
|
189
192
|
}
|
|
190
193
|
});
|
|
191
|
-
|
|
194
|
+
ext.on("context", async (event, ctx) => {
|
|
192
195
|
const messages = event.messages;
|
|
193
196
|
// Check if any message contains images
|
|
194
197
|
let totalImages = 0;
|
|
@@ -198,11 +201,17 @@ export default function spectralVisionExtension(pi) {
|
|
|
198
201
|
if (totalImages === 0)
|
|
199
202
|
return;
|
|
200
203
|
// Re-resolve vision model each time images are encountered.
|
|
201
|
-
//
|
|
202
|
-
//
|
|
204
|
+
// If the main model supports vision natively, resolveVisionModel
|
|
205
|
+
// returns undefined and we pass images through without interception.
|
|
203
206
|
visionModel = resolveVisionModel(ctx);
|
|
204
207
|
if (!visionModel) {
|
|
205
|
-
|
|
208
|
+
// Check if we're in passthrough mode (main model has native vision)
|
|
209
|
+
if (ctx.model?.input.includes("image")) {
|
|
210
|
+
process.stderr.write(`[spectral-vision] Passthrough — ${totalImages} image(s) flowing to main model natively\n`);
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
process.stderr.write("[spectral-vision] No vision model available, images will be omitted\n");
|
|
214
|
+
}
|
|
206
215
|
return;
|
|
207
216
|
}
|
|
208
217
|
process.stderr.write(`[spectral-vision] Describing ${totalImages} image(s) with ${visionModel.provider}/${visionModel.id}...\n`);
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @aexol/spectral — Public API for extension authors.
|
|
3
|
+
*
|
|
4
|
+
* Import types and utilities from this package when writing .spectral extensions.
|
|
5
|
+
*
|
|
6
|
+
* ## Quick Start
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* import type { ExtensionAPI, ToolDefinition } from "@aexol/spectral";
|
|
10
|
+
*
|
|
11
|
+
* export default function activate(ext: ExtensionAPI): void {
|
|
12
|
+
* ext.registerTool({
|
|
13
|
+
* name: "my_tool",
|
|
14
|
+
* label: "My Tool",
|
|
15
|
+
* description: "Does something useful.",
|
|
16
|
+
* parameters: { type: "object", properties: {}, additionalProperties: false },
|
|
17
|
+
* async execute(_id, params) {
|
|
18
|
+
* return { content: [{ type: "text", text: "Done!" }], details: {} };
|
|
19
|
+
* },
|
|
20
|
+
* });
|
|
21
|
+
* }
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* ## Event Handling
|
|
25
|
+
*
|
|
26
|
+
* ```ts
|
|
27
|
+
* import type { ExtensionAPI, BeforeAgentStartEvent } from "@aexol/spectral";
|
|
28
|
+
*
|
|
29
|
+
* export default function activate(ext: ExtensionAPI): void {
|
|
30
|
+
* ext.on("before_agent_start", (event, ctx) => {
|
|
31
|
+
* // inspect or modify the system prompt
|
|
32
|
+
* return { systemPrompt: event.systemPrompt + "\nExtra instructions..." };
|
|
33
|
+
* });
|
|
34
|
+
* }
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export type { ExtensionAPI, ToolDefinition } from "./sdk/coding-agent/index.js";
|
|
38
|
+
export type { AfterProviderResponseEvent, AgentEndEvent, AgentStartEvent, BashToolCallEvent, BashToolResultEvent, BeforeAgentStartEvent, BeforeProviderRequestEvent, ContextEvent, CustomToolCallEvent, CustomToolResultEvent, EditToolCallEvent, EditToolResultEvent, ExtensionEvent, FindToolCallEvent, FindToolResultEvent, GrepToolCallEvent, GrepToolResultEvent, InputEvent, LsToolCallEvent, LsToolResultEvent, MessageEndEvent, MessageStartEvent, MessageUpdateEvent, ModelSelectEvent, ReadToolCallEvent, ReadToolResultEvent, ResourcesDiscoverEvent, SessionBeforeCompactEvent, SessionBeforeForkEvent, SessionBeforeSwitchEvent, SessionBeforeTreeEvent, SessionCompactEvent, SessionEvent, SessionShutdownEvent, SessionStartEvent, SessionTreeEvent, ToolCallEvent, ToolExecutionEndEvent, ToolExecutionStartEvent, ToolExecutionUpdateEvent, ToolResultEvent, TurnEndEvent, TurnStartEvent, UserBashEvent, WriteToolCallEvent, WriteToolResultEvent, } from "./sdk/coding-agent/index.js";
|
|
39
|
+
export type { BeforeAgentStartEventResult, BeforeProviderRequestEventResult, ContextEventResult, InputEventResult, ResourcesDiscoverResult, SessionBeforeCompactResult, SessionBeforeForkResult, SessionBeforeSwitchResult, SessionBeforeTreeResult, ToolCallEventResult, UserBashEventResult, } from "./sdk/coding-agent/index.js";
|
|
40
|
+
export type { ExtensionCommandContext, ExtensionContext, ReplacedSessionContext, } from "./sdk/coding-agent/index.js";
|
|
41
|
+
export type { ProviderConfig, ProviderModelConfig, } from "./sdk/coding-agent/index.js";
|
|
42
|
+
export { defineTool } from "./sdk/coding-agent/index.js";
|
|
43
|
+
export { isBashToolResult, isEditToolResult, isFindToolResult, isGrepToolResult, isLsToolResult, isReadToolResult, isToolCallEventType, isWriteToolResult, } from "./sdk/coding-agent/index.js";
|
|
44
|
+
export type { AgentToolResult, AgentToolUpdateCallback, BuildSystemPromptOptions, CompactOptions, ExecOptions, ExecResult, InputSource, ToolExecutionMode, } from "./sdk/coding-agent/index.js";
|
|
45
|
+
export type { Extension, ExtensionActions, ExtensionError, ExtensionFactory, ExtensionFlag, ExtensionHandler, ExtensionRuntime, ExtensionShortcut, ExtensionUIContext, LoadExtensionsResult, RegisteredCommand, RegisteredTool, ResolvedCommand, ToolInfo, } from "./sdk/coding-agent/index.js";
|
|
46
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAMH,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAMhF,YAAY,EACV,0BAA0B,EAC1B,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,0BAA0B,EAC1B,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,eAAe,EACf,YAAY,EACZ,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,6BAA6B,CAAC;AAMrC,YAAY,EACV,2BAA2B,EAC3B,gCAAgC,EAChC,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,EACvB,0BAA0B,EAC1B,uBAAuB,EACvB,yBAAyB,EACzB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AAMrC,YAAY,EACV,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AAMrC,YAAY,EACV,cAAc,EACd,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AAMrC,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAMzD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAMrC,YAAY,EACV,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EACd,WAAW,EACX,UAAU,EACV,WAAW,EACX,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAMrC,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,QAAQ,GACT,MAAM,6BAA6B,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @aexol/spectral — Public API for extension authors.
|
|
3
|
+
*
|
|
4
|
+
* Import types and utilities from this package when writing .spectral extensions.
|
|
5
|
+
*
|
|
6
|
+
* ## Quick Start
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* import type { ExtensionAPI, ToolDefinition } from "@aexol/spectral";
|
|
10
|
+
*
|
|
11
|
+
* export default function activate(ext: ExtensionAPI): void {
|
|
12
|
+
* ext.registerTool({
|
|
13
|
+
* name: "my_tool",
|
|
14
|
+
* label: "My Tool",
|
|
15
|
+
* description: "Does something useful.",
|
|
16
|
+
* parameters: { type: "object", properties: {}, additionalProperties: false },
|
|
17
|
+
* async execute(_id, params) {
|
|
18
|
+
* return { content: [{ type: "text", text: "Done!" }], details: {} };
|
|
19
|
+
* },
|
|
20
|
+
* });
|
|
21
|
+
* }
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* ## Event Handling
|
|
25
|
+
*
|
|
26
|
+
* ```ts
|
|
27
|
+
* import type { ExtensionAPI, BeforeAgentStartEvent } from "@aexol/spectral";
|
|
28
|
+
*
|
|
29
|
+
* export default function activate(ext: ExtensionAPI): void {
|
|
30
|
+
* ext.on("before_agent_start", (event, ctx) => {
|
|
31
|
+
* // inspect or modify the system prompt
|
|
32
|
+
* return { systemPrompt: event.systemPrompt + "\nExtra instructions..." };
|
|
33
|
+
* });
|
|
34
|
+
* }
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
// ---------------------------------------------------------------------------
|
|
38
|
+
// Tool definition helpers.
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
export { defineTool } from "./sdk/coding-agent/index.js";
|
|
41
|
+
// ---------------------------------------------------------------------------
|
|
42
|
+
// Type guards for tool result events.
|
|
43
|
+
// ---------------------------------------------------------------------------
|
|
44
|
+
export { isBashToolResult, isEditToolResult, isFindToolResult, isGrepToolResult, isLsToolResult, isReadToolResult, isToolCallEventType, isWriteToolResult, } from "./sdk/coding-agent/index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-dir.d.ts","sourceRoot":"","sources":["../../src/mcp/agent-dir.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,IAAI,MAAM,CAYpC;AAED,wBAAgB,YAAY,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAE1D"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ExtensionAPI, ExtensionContext } from "../sdk/coding-agent/index.js";
|
|
2
|
+
import type { McpExtensionState } from "./state.js";
|
|
3
|
+
import type { McpConfig } from "./types.js";
|
|
4
|
+
export declare function showStatus(state: McpExtensionState, ctx: ExtensionContext): Promise<void>;
|
|
5
|
+
export declare function showTools(state: McpExtensionState, ctx: ExtensionContext): Promise<void>;
|
|
6
|
+
export declare function reconnectServers(state: McpExtensionState, ctx: ExtensionContext, targetServer?: string): Promise<void>;
|
|
7
|
+
export declare function authenticateServer(serverName: string, config: McpConfig, ctx: ExtensionContext): Promise<void>;
|
|
8
|
+
export declare function showSetupStatus(state: McpExtensionState, ext: ExtensionAPI, ctx: ExtensionContext, configOverridePath?: string): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/mcp/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,YAAY,CAAC;AASzD,wBAAsB,UAAU,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC/F;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB9F;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,iBAAiB,EACxB,GAAG,EAAE,gBAAgB,EACrB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAiDf;AAED,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,IAAI,CAAC,CA6Cf;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBpJ"}
|
package/dist/mcp/commands.js
CHANGED
|
@@ -131,7 +131,7 @@ export async function authenticateServer(serverName, config, ctx) {
|
|
|
131
131
|
ctx.ui.notify(`Failed to authenticate "${serverName}": ${message}`, "error");
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
|
-
export async function showSetupStatus(state,
|
|
134
|
+
export async function showSetupStatus(state, ext, ctx, configOverridePath) {
|
|
135
135
|
// Show MCP status first, then check for shared-config discovery hints
|
|
136
136
|
await showStatus(state, ctx);
|
|
137
137
|
if (!ctx.hasUI)
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { McpConfig, ServerEntry, ImportKind, ServerProvenance } from "./types.js";
|
|
2
|
+
interface ConfigSourceSpec {
|
|
3
|
+
id: "shared-global" | "spectral-global" | "shared-project" | "spectral-project";
|
|
4
|
+
label: string;
|
|
5
|
+
readPath: string;
|
|
6
|
+
writePath: string;
|
|
7
|
+
kind: "user" | "project" | "import";
|
|
8
|
+
importKind?: string;
|
|
9
|
+
shared: boolean;
|
|
10
|
+
scope: "global" | "project";
|
|
11
|
+
}
|
|
12
|
+
export interface ConfigDiscoveryPath {
|
|
13
|
+
label: string;
|
|
14
|
+
path: string;
|
|
15
|
+
exists: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface DiscoveredImportConfig {
|
|
18
|
+
kind: ImportKind;
|
|
19
|
+
path: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ConfigDiscoverySource extends ConfigDiscoveryPath {
|
|
22
|
+
id: ConfigSourceSpec["id"];
|
|
23
|
+
scope: ConfigSourceSpec["scope"];
|
|
24
|
+
kind: "shared" | "spectral";
|
|
25
|
+
serverCount: number;
|
|
26
|
+
}
|
|
27
|
+
export interface ImportConfigSummary extends DiscoveredImportConfig {
|
|
28
|
+
serverCount: number;
|
|
29
|
+
}
|
|
30
|
+
export interface RepoPromptDiscovery {
|
|
31
|
+
configured: boolean;
|
|
32
|
+
configuredPath?: string;
|
|
33
|
+
executablePath?: string;
|
|
34
|
+
targetPath?: string;
|
|
35
|
+
serverName?: string;
|
|
36
|
+
entry?: ServerEntry;
|
|
37
|
+
}
|
|
38
|
+
export interface McpDiscoverySummary {
|
|
39
|
+
sources: ConfigDiscoverySource[];
|
|
40
|
+
imports: ImportConfigSummary[];
|
|
41
|
+
hasAnyConfig: boolean;
|
|
42
|
+
hasAnyDetectedPaths: boolean;
|
|
43
|
+
hasSharedServers: boolean;
|
|
44
|
+
hasSpectralOwnedServers: boolean;
|
|
45
|
+
totalServerCount: number;
|
|
46
|
+
fingerprint: string;
|
|
47
|
+
repoPrompt: RepoPromptDiscovery;
|
|
48
|
+
}
|
|
49
|
+
export interface ConfigWritePreview {
|
|
50
|
+
path: string;
|
|
51
|
+
existed: boolean;
|
|
52
|
+
changed: boolean;
|
|
53
|
+
beforeText: string;
|
|
54
|
+
afterText: string;
|
|
55
|
+
diffText: string;
|
|
56
|
+
}
|
|
57
|
+
export declare function getSpectralGlobalConfigPath(overridePath?: string): string;
|
|
58
|
+
export declare function getGenericGlobalConfigPath(): string;
|
|
59
|
+
export declare function getProjectConfigPath(cwd?: string): string;
|
|
60
|
+
export declare function getProjectSpectralConfigPath(cwd?: string): string;
|
|
61
|
+
export declare function getConfigDiscoveryPaths(overridePath?: string): ConfigDiscoveryPath[];
|
|
62
|
+
export declare function findAvailableImportConfigs(cwd?: string): DiscoveredImportConfig[];
|
|
63
|
+
export declare function getMcpDiscoverySummary(overridePath?: string, cwd?: string): McpDiscoverySummary;
|
|
64
|
+
export declare function loadMcpConfig(overridePath?: string): McpConfig;
|
|
65
|
+
export declare function previewCompatibilityImports(importKinds: ImportKind[], overridePath?: string): ConfigWritePreview;
|
|
66
|
+
export declare function ensureCompatibilityImports(importKinds: ImportKind[], overridePath?: string): {
|
|
67
|
+
path: string;
|
|
68
|
+
added: ImportKind[];
|
|
69
|
+
};
|
|
70
|
+
export declare function buildStarterProjectConfig(): McpConfig;
|
|
71
|
+
export declare function previewStarterProjectConfig(cwd?: string): ConfigWritePreview;
|
|
72
|
+
export declare function writeStarterProjectConfig(cwd?: string): string;
|
|
73
|
+
export declare function previewSharedServerEntry(filePath: string, serverName: string, entry: ServerEntry): ConfigWritePreview;
|
|
74
|
+
export declare function writeSharedServerEntry(filePath: string, serverName: string, entry: ServerEntry): string;
|
|
75
|
+
export declare function getServerProvenance(overridePath?: string): Map<string, ServerProvenance>;
|
|
76
|
+
export declare function writeDirectToolsConfig(changes: Map<string, true | string[] | false>, provenance: Map<string, ServerProvenance>, fullConfig: McpConfig): void;
|
|
77
|
+
export {};
|
|
78
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/mcp/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAe,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAuBpG,UAAU,gBAAgB;IACxB,EAAE,EAAE,eAAe,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAsB,SAAQ,mBAAmB;IAChE,EAAE,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC3B,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAoB,SAAQ,sBAAsB;IACjE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,YAAY,EAAE,OAAO,CAAC;IACtB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,uBAAuB,EAAE,OAAO,CAAC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,mBAAmB,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,2BAA2B,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAED,wBAAgB,oBAAoB,CAAC,GAAG,SAAgB,GAAG,MAAM,CAEhE;AAED,wBAAgB,4BAA4B,CAAC,GAAG,SAAgB,GAAG,MAAM,CAExE;AAED,wBAAgB,uBAAuB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAMpF;AAED,wBAAgB,0BAA0B,CAAC,GAAG,SAAgB,GAAG,sBAAsB,EAAE,CAWxF;AAED,wBAAgB,sBAAsB,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,SAAgB,GAAG,mBAAmB,CAoDtG;AAED,wBAAgB,aAAa,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAU9D;AAiVD,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAQhH;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,EAAE,CAAA;CAAE,CAelI;AAED,wBAAgB,yBAAyB,IAAI,SAAS,CAIrD;AAED,wBAAgB,2BAA2B,CAAC,GAAG,SAAgB,GAAG,kBAAkB,CAInF;AAED,wBAAgB,yBAAyB,CAAC,GAAG,SAAgB,GAAG,MAAM,CAKrE;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,kBAAkB,CAOrH;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,CAOvG;AAED,wBAAgB,mBAAmB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAmCxF;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC,EAC7C,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACzC,UAAU,EAAE,SAAS,GACpB,IAAI,CA+BN"}
|
package/dist/mcp/config.js
CHANGED
|
@@ -22,7 +22,7 @@ const IMPORT_PATHS = {
|
|
|
22
22
|
windsurf: [join(homedir(), ".windsurf", "mcp.json")],
|
|
23
23
|
vscode: [".vscode/mcp.json"],
|
|
24
24
|
};
|
|
25
|
-
export function
|
|
25
|
+
export function getSpectralGlobalConfigPath(overridePath) {
|
|
26
26
|
return overridePath ? resolve(overridePath) : getAgentPath("mcp.json");
|
|
27
27
|
}
|
|
28
28
|
export function getGenericGlobalConfigPath() {
|
|
@@ -31,7 +31,7 @@ export function getGenericGlobalConfigPath() {
|
|
|
31
31
|
export function getProjectConfigPath(cwd = process.cwd()) {
|
|
32
32
|
return resolve(cwd, PROJECT_CONFIG_NAME);
|
|
33
33
|
}
|
|
34
|
-
export function
|
|
34
|
+
export function getProjectSpectralConfigPath(cwd = process.cwd()) {
|
|
35
35
|
return resolve(cwd, PROJECT_MCP_CONFIG_NAME);
|
|
36
36
|
}
|
|
37
37
|
export function getConfigDiscoveryPaths(overridePath) {
|
|
@@ -60,7 +60,7 @@ export function getMcpDiscoverySummary(overridePath, cwd = process.cwd()) {
|
|
|
60
60
|
path: source.readPath,
|
|
61
61
|
exists: existsSync(source.readPath),
|
|
62
62
|
scope: source.scope,
|
|
63
|
-
kind: source.shared ? "shared" : "
|
|
63
|
+
kind: source.shared ? "shared" : "spectral",
|
|
64
64
|
serverCount: loaded ? Object.keys(loaded.mcpServers).length : 0,
|
|
65
65
|
};
|
|
66
66
|
});
|
|
@@ -78,7 +78,7 @@ export function getMcpDiscoverySummary(overridePath, cwd = process.cwd()) {
|
|
|
78
78
|
.filter((value) => value !== null);
|
|
79
79
|
const totalServerCount = sources.reduce((sum, source) => sum + source.serverCount, 0);
|
|
80
80
|
const hasSharedServers = sources.some((source) => source.kind === "shared" && source.serverCount > 0);
|
|
81
|
-
const
|
|
81
|
+
const hasSpectralOwnedServers = sources.some((source) => source.kind === "spectral" && source.serverCount > 0);
|
|
82
82
|
const hasAnyDetectedPaths = sources.some((source) => source.exists) || imports.length > 0;
|
|
83
83
|
const hasAnyConfig = totalServerCount > 0 || imports.some((entry) => entry.serverCount > 0) || hasAnyDetectedPaths;
|
|
84
84
|
const summaryWithoutRepoPrompt = {
|
|
@@ -87,7 +87,7 @@ export function getMcpDiscoverySummary(overridePath, cwd = process.cwd()) {
|
|
|
87
87
|
hasAnyConfig,
|
|
88
88
|
hasAnyDetectedPaths,
|
|
89
89
|
hasSharedServers,
|
|
90
|
-
|
|
90
|
+
hasSpectralOwnedServers,
|
|
91
91
|
totalServerCount,
|
|
92
92
|
};
|
|
93
93
|
const fingerprint = JSON.stringify({
|
|
@@ -111,9 +111,9 @@ export function loadMcpConfig(overridePath) {
|
|
|
111
111
|
return config;
|
|
112
112
|
}
|
|
113
113
|
function getConfigSources(overridePath, cwd = process.cwd()) {
|
|
114
|
-
const userPath =
|
|
114
|
+
const userPath = getSpectralGlobalConfigPath(overridePath);
|
|
115
115
|
const projectPath = getProjectConfigPath(cwd);
|
|
116
|
-
const
|
|
116
|
+
const projectSpectralPath = getProjectSpectralConfigPath(cwd);
|
|
117
117
|
const sources = [];
|
|
118
118
|
if (GENERIC_GLOBAL_CONFIG_PATH !== userPath) {
|
|
119
119
|
sources.push({
|
|
@@ -128,7 +128,7 @@ function getConfigSources(overridePath, cwd = process.cwd()) {
|
|
|
128
128
|
});
|
|
129
129
|
}
|
|
130
130
|
sources.push({
|
|
131
|
-
id: "
|
|
131
|
+
id: "spectral-global",
|
|
132
132
|
label: "Pi global override",
|
|
133
133
|
readPath: userPath,
|
|
134
134
|
writePath: userPath,
|
|
@@ -147,12 +147,12 @@ function getConfigSources(overridePath, cwd = process.cwd()) {
|
|
|
147
147
|
scope: "project",
|
|
148
148
|
});
|
|
149
149
|
}
|
|
150
|
-
if (
|
|
150
|
+
if (projectSpectralPath !== userPath && projectSpectralPath !== projectPath) {
|
|
151
151
|
sources.push({
|
|
152
|
-
id: "
|
|
152
|
+
id: "spectral-project",
|
|
153
153
|
label: "project Pi override",
|
|
154
|
-
readPath:
|
|
155
|
-
writePath:
|
|
154
|
+
readPath: projectSpectralPath,
|
|
155
|
+
writePath: projectSpectralPath,
|
|
156
156
|
kind: "project",
|
|
157
157
|
shared: false,
|
|
158
158
|
scope: "project",
|
|
@@ -412,7 +412,7 @@ function detectRepoPrompt(summary, cwd = process.cwd()) {
|
|
|
412
412
|
};
|
|
413
413
|
}
|
|
414
414
|
export function previewCompatibilityImports(importKinds, overridePath) {
|
|
415
|
-
const targetPath =
|
|
415
|
+
const targetPath = getSpectralGlobalConfigPath(overridePath);
|
|
416
416
|
const raw = readRawConfigObject(targetPath);
|
|
417
417
|
const currentImports = Array.isArray(raw.imports) ? raw.imports.filter((value) => typeof value === "string") : [];
|
|
418
418
|
const merged = [...new Set([...currentImports, ...importKinds])];
|
|
@@ -421,7 +421,7 @@ export function previewCompatibilityImports(importKinds, overridePath) {
|
|
|
421
421
|
return buildConfigWritePreview(targetPath, nextRaw);
|
|
422
422
|
}
|
|
423
423
|
export function ensureCompatibilityImports(importKinds, overridePath) {
|
|
424
|
-
const targetPath =
|
|
424
|
+
const targetPath = getSpectralGlobalConfigPath(overridePath);
|
|
425
425
|
const raw = readRawConfigObject(targetPath);
|
|
426
426
|
const currentImports = Array.isArray(raw.imports) ? raw.imports.filter((value) => typeof value === "string") : [];
|
|
427
427
|
const merged = [...new Set([...currentImports, ...importKinds])];
|
|
@@ -469,7 +469,7 @@ export function writeSharedServerEntry(filePath, serverName, entry) {
|
|
|
469
469
|
}
|
|
470
470
|
export function getServerProvenance(overridePath) {
|
|
471
471
|
const provenance = new Map();
|
|
472
|
-
const userPath =
|
|
472
|
+
const userPath = getSpectralGlobalConfigPath(overridePath);
|
|
473
473
|
for (const source of getConfigSources(overridePath)) {
|
|
474
474
|
const loaded = readValidatedConfig(source.readPath, `MCP config from ${source.readPath}`);
|
|
475
475
|
if (!loaded)
|