@planu/cli 0.91.0 → 0.92.0
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/dist/config/domain-best-practices.json +413 -0
- package/dist/config/ide-registry.json +25 -0
- package/dist/config/license-plans.json +59 -2
- package/dist/engine/ai-integration/agent-frameworks/autogen-exporter.d.ts +11 -0
- package/dist/engine/ai-integration/agent-frameworks/autogen-exporter.d.ts.map +1 -0
- package/dist/engine/ai-integration/agent-frameworks/autogen-exporter.js +52 -0
- package/dist/engine/ai-integration/agent-frameworks/autogen-exporter.js.map +1 -0
- package/dist/engine/ai-integration/agent-frameworks/crewai-exporter.d.ts +11 -0
- package/dist/engine/ai-integration/agent-frameworks/crewai-exporter.d.ts.map +1 -0
- package/dist/engine/ai-integration/agent-frameworks/crewai-exporter.js +89 -0
- package/dist/engine/ai-integration/agent-frameworks/crewai-exporter.js.map +1 -0
- package/dist/engine/ai-integration/agent-frameworks/index.d.ts +4 -0
- package/dist/engine/ai-integration/agent-frameworks/index.d.ts.map +1 -0
- package/dist/engine/ai-integration/agent-frameworks/index.js +5 -0
- package/dist/engine/ai-integration/agent-frameworks/index.js.map +1 -0
- package/dist/engine/ai-integration/agent-frameworks/langgraph-exporter.d.ts +11 -0
- package/dist/engine/ai-integration/agent-frameworks/langgraph-exporter.d.ts.map +1 -0
- package/dist/engine/ai-integration/agent-frameworks/langgraph-exporter.js +71 -0
- package/dist/engine/ai-integration/agent-frameworks/langgraph-exporter.js.map +1 -0
- package/dist/engine/ai-integration/agents-md/generator.d.ts +11 -0
- package/dist/engine/ai-integration/agents-md/generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/agents-md/generator.js +139 -0
- package/dist/engine/ai-integration/agents-md/generator.js.map +1 -0
- package/dist/engine/ai-integration/agents-md/index.d.ts +3 -0
- package/dist/engine/ai-integration/agents-md/index.d.ts.map +1 -0
- package/dist/engine/ai-integration/agents-md/index.js +4 -0
- package/dist/engine/ai-integration/agents-md/index.js.map +1 -0
- package/dist/engine/ai-integration/agents-md/updater.d.ts +10 -0
- package/dist/engine/ai-integration/agents-md/updater.d.ts.map +1 -0
- package/dist/engine/ai-integration/agents-md/updater.js +33 -0
- package/dist/engine/ai-integration/agents-md/updater.js.map +1 -0
- package/dist/engine/ai-integration/aider/aider-config-generator.d.ts +5 -0
- package/dist/engine/ai-integration/aider/aider-config-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/aider/aider-config-generator.js +34 -0
- package/dist/engine/ai-integration/aider/aider-config-generator.js.map +1 -0
- package/dist/engine/ai-integration/cline/clinerules-generator.d.ts +5 -0
- package/dist/engine/ai-integration/cline/clinerules-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/cline/clinerules-generator.js +86 -0
- package/dist/engine/ai-integration/cline/clinerules-generator.js.map +1 -0
- package/dist/engine/ai-integration/cline/index.d.ts +3 -0
- package/dist/engine/ai-integration/cline/index.d.ts.map +1 -0
- package/dist/engine/ai-integration/cline/index.js +3 -0
- package/dist/engine/ai-integration/cline/index.js.map +1 -0
- package/dist/engine/ai-integration/codex/agent-roles-generator.d.ts +12 -0
- package/dist/engine/ai-integration/codex/agent-roles-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/codex/agent-roles-generator.js +62 -0
- package/dist/engine/ai-integration/codex/agent-roles-generator.js.map +1 -0
- package/dist/engine/ai-integration/codex/agents-md-generator.d.ts +10 -0
- package/dist/engine/ai-integration/codex/agents-md-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/codex/agents-md-generator.js +114 -0
- package/dist/engine/ai-integration/codex/agents-md-generator.js.map +1 -0
- package/dist/engine/ai-integration/codex/config-generator.d.ts +9 -0
- package/dist/engine/ai-integration/codex/config-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/codex/config-generator.js +66 -0
- package/dist/engine/ai-integration/codex/config-generator.js.map +1 -0
- package/dist/engine/ai-integration/codex/hooks-generator.d.ts +6 -0
- package/dist/engine/ai-integration/codex/hooks-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/codex/hooks-generator.js +55 -0
- package/dist/engine/ai-integration/codex/hooks-generator.js.map +1 -0
- package/dist/engine/ai-integration/codex/index.d.ts +5 -0
- package/dist/engine/ai-integration/codex/index.d.ts.map +1 -0
- package/dist/engine/ai-integration/codex/index.js +6 -0
- package/dist/engine/ai-integration/codex/index.js.map +1 -0
- package/dist/engine/ai-integration/continue/ai-checks-generator.d.ts +12 -0
- package/dist/engine/ai-integration/continue/ai-checks-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/continue/ai-checks-generator.js +63 -0
- package/dist/engine/ai-integration/continue/ai-checks-generator.js.map +1 -0
- package/dist/engine/ai-integration/continue/config-generator.d.ts +5 -0
- package/dist/engine/ai-integration/continue/config-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/continue/config-generator.js +56 -0
- package/dist/engine/ai-integration/continue/config-generator.js.map +1 -0
- package/dist/engine/ai-integration/continue/index.d.ts +5 -0
- package/dist/engine/ai-integration/continue/index.d.ts.map +1 -0
- package/dist/engine/ai-integration/continue/index.js +4 -0
- package/dist/engine/ai-integration/continue/index.js.map +1 -0
- package/dist/engine/ai-integration/cursor/cursorrules-generator.d.ts +5 -0
- package/dist/engine/ai-integration/cursor/cursorrules-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/cursor/cursorrules-generator.js +75 -0
- package/dist/engine/ai-integration/cursor/cursorrules-generator.js.map +1 -0
- package/dist/engine/ai-integration/detector.d.ts +5 -0
- package/dist/engine/ai-integration/detector.d.ts.map +1 -0
- package/dist/engine/ai-integration/detector.js +127 -0
- package/dist/engine/ai-integration/detector.js.map +1 -0
- package/dist/engine/ai-integration/gemini/extensions-advisor.d.ts +4 -0
- package/dist/engine/ai-integration/gemini/extensions-advisor.d.ts.map +1 -0
- package/dist/engine/ai-integration/gemini/extensions-advisor.js +64 -0
- package/dist/engine/ai-integration/gemini/extensions-advisor.js.map +1 -0
- package/dist/engine/ai-integration/gemini/gemini-md-generator.d.ts +4 -0
- package/dist/engine/ai-integration/gemini/gemini-md-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/gemini/gemini-md-generator.js +94 -0
- package/dist/engine/ai-integration/gemini/gemini-md-generator.js.map +1 -0
- package/dist/engine/ai-integration/gemini/index.d.ts +5 -0
- package/dist/engine/ai-integration/gemini/index.d.ts.map +1 -0
- package/dist/engine/ai-integration/gemini/index.js +6 -0
- package/dist/engine/ai-integration/gemini/index.js.map +1 -0
- package/dist/engine/ai-integration/gemini/policy-generator.d.ts +6 -0
- package/dist/engine/ai-integration/gemini/policy-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/gemini/policy-generator.js +63 -0
- package/dist/engine/ai-integration/gemini/policy-generator.js.map +1 -0
- package/dist/engine/ai-integration/gemini/settings-generator.d.ts +4 -0
- package/dist/engine/ai-integration/gemini/settings-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/gemini/settings-generator.js +191 -0
- package/dist/engine/ai-integration/gemini/settings-generator.js.map +1 -0
- package/dist/engine/ai-integration/github-copilot/index.d.ts +4 -0
- package/dist/engine/ai-integration/github-copilot/index.d.ts.map +1 -0
- package/dist/engine/ai-integration/github-copilot/index.js +5 -0
- package/dist/engine/ai-integration/github-copilot/index.js.map +1 -0
- package/dist/engine/ai-integration/github-copilot/instructions-generator.d.ts +5 -0
- package/dist/engine/ai-integration/github-copilot/instructions-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/github-copilot/instructions-generator.js +102 -0
- package/dist/engine/ai-integration/github-copilot/instructions-generator.js.map +1 -0
- package/dist/engine/ai-integration/github-copilot/prompt-files-generator.d.ts +11 -0
- package/dist/engine/ai-integration/github-copilot/prompt-files-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/github-copilot/prompt-files-generator.js +86 -0
- package/dist/engine/ai-integration/github-copilot/prompt-files-generator.js.map +1 -0
- package/dist/engine/ai-integration/github-copilot/workspace-bridge.d.ts +3 -0
- package/dist/engine/ai-integration/github-copilot/workspace-bridge.d.ts.map +1 -0
- package/dist/engine/ai-integration/github-copilot/workspace-bridge.js +39 -0
- package/dist/engine/ai-integration/github-copilot/workspace-bridge.js.map +1 -0
- package/dist/engine/ai-integration/kiro/hooks-generator.d.ts +6 -0
- package/dist/engine/ai-integration/kiro/hooks-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/kiro/hooks-generator.js +74 -0
- package/dist/engine/ai-integration/kiro/hooks-generator.js.map +1 -0
- package/dist/engine/ai-integration/kiro/index.d.ts +4 -0
- package/dist/engine/ai-integration/kiro/index.d.ts.map +1 -0
- package/dist/engine/ai-integration/kiro/index.js +5 -0
- package/dist/engine/ai-integration/kiro/index.js.map +1 -0
- package/dist/engine/ai-integration/kiro/spec-exporter.d.ts +6 -0
- package/dist/engine/ai-integration/kiro/spec-exporter.d.ts.map +1 -0
- package/dist/engine/ai-integration/kiro/spec-exporter.js +57 -0
- package/dist/engine/ai-integration/kiro/spec-exporter.js.map +1 -0
- package/dist/engine/ai-integration/kiro/steering-generator.d.ts +6 -0
- package/dist/engine/ai-integration/kiro/steering-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/kiro/steering-generator.js +112 -0
- package/dist/engine/ai-integration/kiro/steering-generator.js.map +1 -0
- package/dist/engine/ai-integration/mastra/agent-scaffold.d.ts +16 -0
- package/dist/engine/ai-integration/mastra/agent-scaffold.d.ts.map +1 -0
- package/dist/engine/ai-integration/mastra/agent-scaffold.js +111 -0
- package/dist/engine/ai-integration/mastra/agent-scaffold.js.map +1 -0
- package/dist/engine/ai-integration/mastra/config-generator.d.ts +12 -0
- package/dist/engine/ai-integration/mastra/config-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/mastra/config-generator.js +64 -0
- package/dist/engine/ai-integration/mastra/config-generator.js.map +1 -0
- package/dist/engine/ai-integration/mastra/index.d.ts +3 -0
- package/dist/engine/ai-integration/mastra/index.d.ts.map +1 -0
- package/dist/engine/ai-integration/mastra/index.js +4 -0
- package/dist/engine/ai-integration/mastra/index.js.map +1 -0
- package/dist/engine/ai-integration/universal-config-generator.d.ts +4 -0
- package/dist/engine/ai-integration/universal-config-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/universal-config-generator.js +87 -0
- package/dist/engine/ai-integration/universal-config-generator.js.map +1 -0
- package/dist/engine/ai-integration/windsurf/windsurfrules-generator.d.ts +5 -0
- package/dist/engine/ai-integration/windsurf/windsurfrules-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/windsurf/windsurfrules-generator.js +75 -0
- package/dist/engine/ai-integration/windsurf/windsurfrules-generator.js.map +1 -0
- package/dist/engine/api-spec-generator/ac-builder.d.ts +5 -0
- package/dist/engine/api-spec-generator/ac-builder.d.ts.map +1 -0
- package/dist/engine/api-spec-generator/ac-builder.js +114 -0
- package/dist/engine/api-spec-generator/ac-builder.js.map +1 -0
- package/dist/engine/api-spec-generator/graphql-parser.d.ts +3 -0
- package/dist/engine/api-spec-generator/graphql-parser.d.ts.map +1 -0
- package/dist/engine/api-spec-generator/graphql-parser.js +166 -0
- package/dist/engine/api-spec-generator/graphql-parser.js.map +1 -0
- package/dist/engine/api-spec-generator/openapi-parser.d.ts +3 -0
- package/dist/engine/api-spec-generator/openapi-parser.d.ts.map +1 -0
- package/dist/engine/api-spec-generator/openapi-parser.js +161 -0
- package/dist/engine/api-spec-generator/openapi-parser.js.map +1 -0
- package/dist/engine/approval-workflow.d.ts +21 -0
- package/dist/engine/approval-workflow.d.ts.map +1 -0
- package/dist/engine/approval-workflow.js +82 -0
- package/dist/engine/approval-workflow.js.map +1 -0
- package/dist/engine/best-practices-library.d.ts +31 -0
- package/dist/engine/best-practices-library.d.ts.map +1 -0
- package/dist/engine/best-practices-library.js +111 -0
- package/dist/engine/best-practices-library.js.map +1 -0
- package/dist/engine/confluence-exporter.d.ts +27 -0
- package/dist/engine/confluence-exporter.d.ts.map +1 -0
- package/dist/engine/confluence-exporter.js +238 -0
- package/dist/engine/confluence-exporter.js.map +1 -0
- package/dist/engine/cross-repo-searcher.d.ts +13 -0
- package/dist/engine/cross-repo-searcher.d.ts.map +1 -0
- package/dist/engine/cross-repo-searcher.js +51 -0
- package/dist/engine/cross-repo-searcher.js.map +1 -0
- package/dist/engine/desktop-notifier.d.ts +16 -0
- package/dist/engine/desktop-notifier.d.ts.map +1 -0
- package/dist/engine/desktop-notifier.js +64 -0
- package/dist/engine/desktop-notifier.js.map +1 -0
- package/dist/engine/domain-detector.d.ts +12 -0
- package/dist/engine/domain-detector.d.ts.map +1 -0
- package/dist/engine/domain-detector.js +286 -0
- package/dist/engine/domain-detector.js.map +1 -0
- package/dist/engine/email-digest-generator.d.ts +8 -0
- package/dist/engine/email-digest-generator.d.ts.map +1 -0
- package/dist/engine/email-digest-generator.js +192 -0
- package/dist/engine/email-digest-generator.js.map +1 -0
- package/dist/engine/email-sender.d.ts +22 -0
- package/dist/engine/email-sender.d.ts.map +1 -0
- package/dist/engine/email-sender.js +78 -0
- package/dist/engine/email-sender.js.map +1 -0
- package/dist/engine/estimation-calibrator.d.ts +19 -0
- package/dist/engine/estimation-calibrator.d.ts.map +1 -0
- package/dist/engine/estimation-calibrator.js +176 -0
- package/dist/engine/estimation-calibrator.js.map +1 -0
- package/dist/engine/hooks/custom-commands-generator.d.ts +11 -0
- package/dist/engine/hooks/custom-commands-generator.d.ts.map +1 -0
- package/dist/engine/hooks/custom-commands-generator.js +88 -0
- package/dist/engine/hooks/custom-commands-generator.js.map +1 -0
- package/dist/engine/hooks/effort-configurator.d.ts +13 -0
- package/dist/engine/hooks/effort-configurator.d.ts.map +1 -0
- package/dist/engine/hooks/effort-configurator.js +54 -0
- package/dist/engine/hooks/effort-configurator.js.map +1 -0
- package/dist/engine/hooks/full-spectrum-generator.d.ts +31 -0
- package/dist/engine/hooks/full-spectrum-generator.d.ts.map +1 -0
- package/dist/engine/hooks/full-spectrum-generator.js +115 -0
- package/dist/engine/hooks/full-spectrum-generator.js.map +1 -0
- package/dist/engine/hooks/profile-generator.d.ts +21 -0
- package/dist/engine/hooks/profile-generator.d.ts.map +1 -0
- package/dist/engine/hooks/profile-generator.js +90 -0
- package/dist/engine/hooks/profile-generator.js.map +1 -0
- package/dist/engine/ide-config/generators.d.ts.map +1 -1
- package/dist/engine/ide-config/generators.js +28 -1
- package/dist/engine/ide-config/generators.js.map +1 -1
- package/dist/engine/importers/csv-importer.d.ts +9 -0
- package/dist/engine/importers/csv-importer.d.ts.map +1 -0
- package/dist/engine/importers/csv-importer.js +116 -0
- package/dist/engine/importers/csv-importer.js.map +1 -0
- package/dist/engine/importers/jira-importer.d.ts +7 -0
- package/dist/engine/importers/jira-importer.d.ts.map +1 -0
- package/dist/engine/importers/jira-importer.js +57 -0
- package/dist/engine/importers/jira-importer.js.map +1 -0
- package/dist/engine/importers/linear-importer.d.ts +6 -0
- package/dist/engine/importers/linear-importer.d.ts.map +1 -0
- package/dist/engine/importers/linear-importer.js +59 -0
- package/dist/engine/importers/linear-importer.js.map +1 -0
- package/dist/engine/importers/markdown-importer.d.ts +7 -0
- package/dist/engine/importers/markdown-importer.d.ts.map +1 -0
- package/dist/engine/importers/markdown-importer.js +74 -0
- package/dist/engine/importers/markdown-importer.js.map +1 -0
- package/dist/engine/outbound-webhook-dispatcher.d.ts +4 -0
- package/dist/engine/outbound-webhook-dispatcher.d.ts.map +1 -0
- package/dist/engine/outbound-webhook-dispatcher.js +94 -0
- package/dist/engine/outbound-webhook-dispatcher.js.map +1 -0
- package/dist/engine/performance-analyzer.d.ts +18 -0
- package/dist/engine/performance-analyzer.d.ts.map +1 -0
- package/dist/engine/performance-analyzer.js +152 -0
- package/dist/engine/performance-analyzer.js.map +1 -0
- package/dist/engine/registry/composio-publisher.d.ts +17 -0
- package/dist/engine/registry/composio-publisher.d.ts.map +1 -0
- package/dist/engine/registry/composio-publisher.js +51 -0
- package/dist/engine/registry/composio-publisher.js.map +1 -0
- package/dist/engine/registry/glama-publisher.d.ts +17 -0
- package/dist/engine/registry/glama-publisher.d.ts.map +1 -0
- package/dist/engine/registry/glama-publisher.js +43 -0
- package/dist/engine/registry/glama-publisher.js.map +1 -0
- package/dist/engine/registry/index.d.ts +4 -0
- package/dist/engine/registry/index.d.ts.map +1 -1
- package/dist/engine/registry/index.js +5 -0
- package/dist/engine/registry/index.js.map +1 -1
- package/dist/engine/registry/mcp-official-publisher.d.ts +16 -0
- package/dist/engine/registry/mcp-official-publisher.d.ts.map +1 -0
- package/dist/engine/registry/mcp-official-publisher.js +44 -0
- package/dist/engine/registry/mcp-official-publisher.js.map +1 -0
- package/dist/engine/registry/smithery-generator.d.ts +16 -0
- package/dist/engine/registry/smithery-generator.d.ts.map +1 -0
- package/dist/engine/registry/smithery-generator.js +71 -0
- package/dist/engine/registry/smithery-generator.js.map +1 -0
- package/dist/engine/reverse-engineer/test-file-parser.d.ts +26 -0
- package/dist/engine/reverse-engineer/test-file-parser.d.ts.map +1 -0
- package/dist/engine/reverse-engineer/test-file-parser.js +165 -0
- package/dist/engine/reverse-engineer/test-file-parser.js.map +1 -0
- package/dist/engine/slack-dispatcher.d.ts +15 -0
- package/dist/engine/slack-dispatcher.d.ts.map +1 -0
- package/dist/engine/slack-dispatcher.js +73 -0
- package/dist/engine/slack-dispatcher.js.map +1 -0
- package/dist/engine/spec-differ.d.ts +15 -0
- package/dist/engine/spec-differ.d.ts.map +1 -0
- package/dist/engine/spec-differ.js +115 -0
- package/dist/engine/spec-differ.js.map +1 -0
- package/dist/engine/spec-exporter.d.ts +27 -0
- package/dist/engine/spec-exporter.d.ts.map +1 -0
- package/dist/engine/spec-exporter.js +122 -0
- package/dist/engine/spec-exporter.js.map +1 -0
- package/dist/engine/spec-searcher.d.ts +31 -0
- package/dist/engine/spec-searcher.d.ts.map +1 -0
- package/dist/engine/spec-searcher.js +240 -0
- package/dist/engine/spec-searcher.js.map +1 -0
- package/dist/engine/spec-splitter.d.ts +11 -1
- package/dist/engine/spec-splitter.d.ts.map +1 -1
- package/dist/engine/spec-splitter.js +178 -0
- package/dist/engine/spec-splitter.js.map +1 -1
- package/dist/engine/team-analytics-calculator.d.ts +14 -0
- package/dist/engine/team-analytics-calculator.d.ts.map +1 -0
- package/dist/engine/team-analytics-calculator.js +114 -0
- package/dist/engine/team-analytics-calculator.js.map +1 -0
- package/dist/engine/telemetry/error-reporter.d.ts +16 -0
- package/dist/engine/telemetry/error-reporter.d.ts.map +1 -0
- package/dist/engine/telemetry/error-reporter.js +46 -0
- package/dist/engine/telemetry/error-reporter.js.map +1 -0
- package/dist/engine/velocity-calculator.d.ts +44 -0
- package/dist/engine/velocity-calculator.d.ts.map +1 -0
- package/dist/engine/velocity-calculator.js +425 -0
- package/dist/engine/velocity-calculator.js.map +1 -0
- package/dist/index.js +44 -2
- package/dist/index.js.map +1 -1
- package/dist/storage/actuals-store.d.ts +8 -0
- package/dist/storage/actuals-store.d.ts.map +1 -0
- package/dist/storage/actuals-store.js +57 -0
- package/dist/storage/actuals-store.js.map +1 -0
- package/dist/storage/approval-store.d.ts +12 -0
- package/dist/storage/approval-store.d.ts.map +1 -0
- package/dist/storage/approval-store.js +46 -0
- package/dist/storage/approval-store.js.map +1 -0
- package/dist/storage/comments-store.d.ts +38 -0
- package/dist/storage/comments-store.d.ts.map +1 -0
- package/dist/storage/comments-store.js +167 -0
- package/dist/storage/comments-store.js.map +1 -0
- package/dist/storage/confluence-store.d.ts +35 -0
- package/dist/storage/confluence-store.d.ts.map +1 -0
- package/dist/storage/confluence-store.js +85 -0
- package/dist/storage/confluence-store.js.map +1 -0
- package/dist/storage/desktop-notification-store.d.ts +19 -0
- package/dist/storage/desktop-notification-store.d.ts.map +1 -0
- package/dist/storage/desktop-notification-store.js +44 -0
- package/dist/storage/desktop-notification-store.js.map +1 -0
- package/dist/storage/email-digest-store.d.ts +19 -0
- package/dist/storage/email-digest-store.d.ts.map +1 -0
- package/dist/storage/email-digest-store.js +51 -0
- package/dist/storage/email-digest-store.js.map +1 -0
- package/dist/storage/global-projects-store.d.ts +27 -0
- package/dist/storage/global-projects-store.d.ts.map +1 -0
- package/dist/storage/global-projects-store.js +78 -0
- package/dist/storage/global-projects-store.js.map +1 -0
- package/dist/storage/index.d.ts +2 -0
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +2 -0
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/outbound-webhook-store.d.ts +9 -0
- package/dist/storage/outbound-webhook-store.d.ts.map +1 -0
- package/dist/storage/outbound-webhook-store.js +105 -0
- package/dist/storage/outbound-webhook-store.js.map +1 -0
- package/dist/storage/slack-store.d.ts +22 -0
- package/dist/storage/slack-store.d.ts.map +1 -0
- package/dist/storage/slack-store.js +55 -0
- package/dist/storage/slack-store.js.map +1 -0
- package/dist/storage/spec-lock-store.d.ts +22 -0
- package/dist/storage/spec-lock-store.d.ts.map +1 -0
- package/dist/storage/spec-lock-store.js +99 -0
- package/dist/storage/spec-lock-store.js.map +1 -0
- package/dist/tools/ai-ecosystem-status.d.ts +13 -0
- package/dist/tools/ai-ecosystem-status.d.ts.map +1 -0
- package/dist/tools/ai-ecosystem-status.js +219 -0
- package/dist/tools/ai-ecosystem-status.js.map +1 -0
- package/dist/tools/api-spec-generator-handler.d.ts +3 -0
- package/dist/tools/api-spec-generator-handler.d.ts.map +1 -0
- package/dist/tools/api-spec-generator-handler.js +193 -0
- package/dist/tools/api-spec-generator-handler.js.map +1 -0
- package/dist/tools/approval-handler.d.ts +6 -0
- package/dist/tools/approval-handler.d.ts.map +1 -0
- package/dist/tools/approval-handler.js +193 -0
- package/dist/tools/approval-handler.js.map +1 -0
- package/dist/tools/checkpoint-handler.d.ts.map +1 -1
- package/dist/tools/checkpoint-handler.js +20 -0
- package/dist/tools/checkpoint-handler.js.map +1 -1
- package/dist/tools/comments-handler.d.ts +6 -0
- package/dist/tools/comments-handler.d.ts.map +1 -0
- package/dist/tools/comments-handler.js +137 -0
- package/dist/tools/comments-handler.js.map +1 -0
- package/dist/tools/confluence-handler.d.ts +6 -0
- package/dist/tools/confluence-handler.d.ts.map +1 -0
- package/dist/tools/confluence-handler.js +220 -0
- package/dist/tools/confluence-handler.js.map +1 -0
- package/dist/tools/cross-repo-search-handler.d.ts +19 -0
- package/dist/tools/cross-repo-search-handler.d.ts.map +1 -0
- package/dist/tools/cross-repo-search-handler.js +151 -0
- package/dist/tools/cross-repo-search-handler.js.map +1 -0
- package/dist/tools/desktop-notification-handler.d.ts +17 -0
- package/dist/tools/desktop-notification-handler.d.ts.map +1 -0
- package/dist/tools/desktop-notification-handler.js +90 -0
- package/dist/tools/desktop-notification-handler.js.map +1 -0
- package/dist/tools/domain-criteria-handler.d.ts +16 -0
- package/dist/tools/domain-criteria-handler.d.ts.map +1 -0
- package/dist/tools/domain-criteria-handler.js +216 -0
- package/dist/tools/domain-criteria-handler.js.map +1 -0
- package/dist/tools/email-digest-handler.d.ts +6 -0
- package/dist/tools/email-digest-handler.d.ts.map +1 -0
- package/dist/tools/email-digest-handler.js +198 -0
- package/dist/tools/email-digest-handler.js.map +1 -0
- package/dist/tools/estimate.d.ts.map +1 -1
- package/dist/tools/estimate.js +22 -0
- package/dist/tools/estimate.js.map +1 -1
- package/dist/tools/estimation-accuracy-handler.d.ts +5 -0
- package/dist/tools/estimation-accuracy-handler.d.ts.map +1 -0
- package/dist/tools/estimation-accuracy-handler.js +171 -0
- package/dist/tools/estimation-accuracy-handler.js.map +1 -0
- package/dist/tools/generate-automation-guide.d.ts.map +1 -1
- package/dist/tools/generate-automation-guide.js +44 -0
- package/dist/tools/generate-automation-guide.js.map +1 -1
- package/dist/tools/import-spec-handler.d.ts +10 -0
- package/dist/tools/import-spec-handler.d.ts.map +1 -0
- package/dist/tools/import-spec-handler.js +242 -0
- package/dist/tools/import-spec-handler.js.map +1 -0
- package/dist/tools/init-project/claude-md-generator.d.ts +1 -0
- package/dist/tools/init-project/claude-md-generator.d.ts.map +1 -1
- package/dist/tools/init-project/claude-md-generator.js +35 -0
- package/dist/tools/init-project/claude-md-generator.js.map +1 -1
- package/dist/tools/init-project/planu-workflow-generator.d.ts.map +1 -1
- package/dist/tools/init-project/planu-workflow-generator.js +11 -0
- package/dist/tools/init-project/planu-workflow-generator.js.map +1 -1
- package/dist/tools/init-project/rules-generator.d.ts +11 -0
- package/dist/tools/init-project/rules-generator.d.ts.map +1 -1
- package/dist/tools/init-project/rules-generator.js +79 -0
- package/dist/tools/init-project/rules-generator.js.map +1 -1
- package/dist/tools/init-project/scaffold-writer.d.ts +1 -0
- package/dist/tools/init-project/scaffold-writer.d.ts.map +1 -1
- package/dist/tools/init-project/scaffold-writer.js +10 -1
- package/dist/tools/init-project/scaffold-writer.js.map +1 -1
- package/dist/tools/list-specs.d.ts.map +1 -1
- package/dist/tools/list-specs.js +11 -1
- package/dist/tools/list-specs.js.map +1 -1
- package/dist/tools/outbound-webhook-handler.d.ts +13 -0
- package/dist/tools/outbound-webhook-handler.d.ts.map +1 -0
- package/dist/tools/outbound-webhook-handler.js +161 -0
- package/dist/tools/outbound-webhook-handler.js.map +1 -0
- package/dist/tools/performance-analysis-handler.d.ts +3 -0
- package/dist/tools/performance-analysis-handler.d.ts.map +1 -0
- package/dist/tools/performance-analysis-handler.js +95 -0
- package/dist/tools/performance-analysis-handler.js.map +1 -0
- package/dist/tools/register-api-spec-generator.d.ts +3 -0
- package/dist/tools/register-api-spec-generator.d.ts.map +1 -0
- package/dist/tools/register-api-spec-generator.js +49 -0
- package/dist/tools/register-api-spec-generator.js.map +1 -0
- package/dist/tools/register-approval-tools.d.ts +3 -0
- package/dist/tools/register-approval-tools.d.ts.map +1 -0
- package/dist/tools/register-approval-tools.js +87 -0
- package/dist/tools/register-approval-tools.js.map +1 -0
- package/dist/tools/register-comments-tools.d.ts +3 -0
- package/dist/tools/register-comments-tools.d.ts.map +1 -0
- package/dist/tools/register-comments-tools.js +79 -0
- package/dist/tools/register-comments-tools.js.map +1 -0
- package/dist/tools/register-confluence-tools.d.ts +3 -0
- package/dist/tools/register-confluence-tools.d.ts.map +1 -0
- package/dist/tools/register-confluence-tools.js +62 -0
- package/dist/tools/register-confluence-tools.js.map +1 -0
- package/dist/tools/register-cross-repo-search-tools.d.ts +10 -0
- package/dist/tools/register-cross-repo-search-tools.d.ts.map +1 -0
- package/dist/tools/register-cross-repo-search-tools.js +82 -0
- package/dist/tools/register-cross-repo-search-tools.js.map +1 -0
- package/dist/tools/register-desktop-notification-tools.d.ts +3 -0
- package/dist/tools/register-desktop-notification-tools.d.ts.map +1 -0
- package/dist/tools/register-desktop-notification-tools.js +56 -0
- package/dist/tools/register-desktop-notification-tools.js.map +1 -0
- package/dist/tools/register-domain-criteria-tools.d.ts +3 -0
- package/dist/tools/register-domain-criteria-tools.d.ts.map +1 -0
- package/dist/tools/register-domain-criteria-tools.js +46 -0
- package/dist/tools/register-domain-criteria-tools.js.map +1 -0
- package/dist/tools/register-email-digest-tools.d.ts +3 -0
- package/dist/tools/register-email-digest-tools.d.ts.map +1 -0
- package/dist/tools/register-email-digest-tools.js +109 -0
- package/dist/tools/register-email-digest-tools.js.map +1 -0
- package/dist/tools/register-estimation-accuracy-tools.d.ts +3 -0
- package/dist/tools/register-estimation-accuracy-tools.d.ts.map +1 -0
- package/dist/tools/register-estimation-accuracy-tools.js +71 -0
- package/dist/tools/register-estimation-accuracy-tools.js.map +1 -0
- package/dist/tools/register-import-tools.d.ts +3 -0
- package/dist/tools/register-import-tools.d.ts.map +1 -0
- package/dist/tools/register-import-tools.js +63 -0
- package/dist/tools/register-import-tools.js.map +1 -0
- package/dist/tools/register-outbound-webhook-tools.d.ts +3 -0
- package/dist/tools/register-outbound-webhook-tools.d.ts.map +1 -0
- package/dist/tools/register-outbound-webhook-tools.js +79 -0
- package/dist/tools/register-outbound-webhook-tools.js.map +1 -0
- package/dist/tools/register-performance-analysis-tools.d.ts +3 -0
- package/dist/tools/register-performance-analysis-tools.d.ts.map +1 -0
- package/dist/tools/register-performance-analysis-tools.js +24 -0
- package/dist/tools/register-performance-analysis-tools.js.map +1 -0
- package/dist/tools/register-slack-tools.d.ts +3 -0
- package/dist/tools/register-slack-tools.d.ts.map +1 -0
- package/dist/tools/register-slack-tools.js +55 -0
- package/dist/tools/register-slack-tools.js.map +1 -0
- package/dist/tools/register-spec-export-tools.d.ts +3 -0
- package/dist/tools/register-spec-export-tools.d.ts.map +1 -0
- package/dist/tools/register-spec-export-tools.js +67 -0
- package/dist/tools/register-spec-export-tools.js.map +1 -0
- package/dist/tools/register-spec-lock-tools.d.ts +3 -0
- package/dist/tools/register-spec-lock-tools.d.ts.map +1 -0
- package/dist/tools/register-spec-lock-tools.js +72 -0
- package/dist/tools/register-spec-lock-tools.js.map +1 -0
- package/dist/tools/register-spec-search-tools.d.ts +3 -0
- package/dist/tools/register-spec-search-tools.d.ts.map +1 -0
- package/dist/tools/register-spec-search-tools.js +122 -0
- package/dist/tools/register-spec-search-tools.js.map +1 -0
- package/dist/tools/register-spec-split-tools.d.ts +3 -0
- package/dist/tools/register-spec-split-tools.d.ts.map +1 -0
- package/dist/tools/register-spec-split-tools.js +51 -0
- package/dist/tools/register-spec-split-tools.js.map +1 -0
- package/dist/tools/register-spec-tools/core-spec-tools.d.ts.map +1 -1
- package/dist/tools/register-spec-tools/core-spec-tools.js +20 -2
- package/dist/tools/register-spec-tools/core-spec-tools.js.map +1 -1
- package/dist/tools/register-team-analytics-tools.d.ts +3 -0
- package/dist/tools/register-team-analytics-tools.d.ts.map +1 -0
- package/dist/tools/register-team-analytics-tools.js +37 -0
- package/dist/tools/register-team-analytics-tools.js.map +1 -0
- package/dist/tools/register-test-reverse-engineer-tools.d.ts +3 -0
- package/dist/tools/register-test-reverse-engineer-tools.d.ts.map +1 -0
- package/dist/tools/register-test-reverse-engineer-tools.js +10 -0
- package/dist/tools/register-test-reverse-engineer-tools.js.map +1 -0
- package/dist/tools/register-velocity-tools.d.ts +3 -0
- package/dist/tools/register-velocity-tools.d.ts.map +1 -0
- package/dist/tools/register-velocity-tools.js +72 -0
- package/dist/tools/register-velocity-tools.js.map +1 -0
- package/dist/tools/register-versioning-tools.d.ts.map +1 -1
- package/dist/tools/register-versioning-tools.js +55 -0
- package/dist/tools/register-versioning-tools.js.map +1 -1
- package/dist/tools/safe-handler.d.ts.map +1 -1
- package/dist/tools/safe-handler.js +5 -0
- package/dist/tools/safe-handler.js.map +1 -1
- package/dist/tools/schemas/ide-config.d.ts +2 -0
- package/dist/tools/schemas/ide-config.d.ts.map +1 -1
- package/dist/tools/schemas/ide-config.js +2 -1
- package/dist/tools/schemas/ide-config.js.map +1 -1
- package/dist/tools/schemas/output-schemas.d.ts +24 -0
- package/dist/tools/schemas/output-schemas.d.ts.map +1 -1
- package/dist/tools/schemas/output-schemas.js +30 -0
- package/dist/tools/schemas/output-schemas.js.map +1 -1
- package/dist/tools/search-handler.d.ts +4 -0
- package/dist/tools/search-handler.d.ts.map +1 -0
- package/dist/tools/search-handler.js +62 -0
- package/dist/tools/search-handler.js.map +1 -0
- package/dist/tools/slack-handler.d.ts +6 -0
- package/dist/tools/slack-handler.d.ts.map +1 -0
- package/dist/tools/slack-handler.js +162 -0
- package/dist/tools/slack-handler.js.map +1 -0
- package/dist/tools/spec-diff-handler.d.ts +6 -0
- package/dist/tools/spec-diff-handler.d.ts.map +1 -0
- package/dist/tools/spec-diff-handler.js +94 -0
- package/dist/tools/spec-diff-handler.js.map +1 -0
- package/dist/tools/spec-export-handler.d.ts +5 -0
- package/dist/tools/spec-export-handler.d.ts.map +1 -0
- package/dist/tools/spec-export-handler.js +64 -0
- package/dist/tools/spec-export-handler.js.map +1 -0
- package/dist/tools/spec-lock-handler.d.ts +10 -0
- package/dist/tools/spec-lock-handler.d.ts.map +1 -0
- package/dist/tools/spec-lock-handler.js +163 -0
- package/dist/tools/spec-lock-handler.js.map +1 -0
- package/dist/tools/spec-split-handler.d.ts +4 -0
- package/dist/tools/spec-split-handler.d.ts.map +1 -0
- package/dist/tools/spec-split-handler.js +250 -0
- package/dist/tools/spec-split-handler.js.map +1 -0
- package/dist/tools/status-handler.d.ts.map +1 -1
- package/dist/tools/status-handler.js +40 -3
- package/dist/tools/status-handler.js.map +1 -1
- package/dist/tools/sync-ai-configs.d.ts +15 -0
- package/dist/tools/sync-ai-configs.d.ts.map +1 -0
- package/dist/tools/sync-ai-configs.js +86 -0
- package/dist/tools/sync-ai-configs.js.map +1 -0
- package/dist/tools/team-analytics-handler.d.ts +5 -0
- package/dist/tools/team-analytics-handler.d.ts.map +1 -0
- package/dist/tools/team-analytics-handler.js +67 -0
- package/dist/tools/team-analytics-handler.js.map +1 -0
- package/dist/tools/test-reverse-engineer-handler.d.ts +15 -0
- package/dist/tools/test-reverse-engineer-handler.d.ts.map +1 -0
- package/dist/tools/test-reverse-engineer-handler.js +94 -0
- package/dist/tools/test-reverse-engineer-handler.js.map +1 -0
- package/dist/tools/update-status/index.d.ts.map +1 -1
- package/dist/tools/update-status/index.js +135 -20
- package/dist/tools/update-status/index.js.map +1 -1
- package/dist/tools/update-status/response-builder.d.ts +1 -1
- package/dist/tools/update-status/response-builder.d.ts.map +1 -1
- package/dist/tools/update-status/response-builder.js +4 -1
- package/dist/tools/update-status/response-builder.js.map +1 -1
- package/dist/tools/update-status/side-effects.d.ts.map +1 -1
- package/dist/tools/update-status/side-effects.js +71 -0
- package/dist/tools/update-status/side-effects.js.map +1 -1
- package/dist/tools/update-status/transition-guard.d.ts +8 -0
- package/dist/tools/update-status/transition-guard.d.ts.map +1 -1
- package/dist/tools/update-status/transition-guard.js +23 -0
- package/dist/tools/update-status/transition-guard.js.map +1 -1
- package/dist/tools/update-status-actions.d.ts +1 -0
- package/dist/tools/update-status-actions.d.ts.map +1 -1
- package/dist/tools/update-status-actions.js +15 -1
- package/dist/tools/update-status-actions.js.map +1 -1
- package/dist/tools/velocity-handler.d.ts +4 -0
- package/dist/tools/velocity-handler.d.ts.map +1 -0
- package/dist/tools/velocity-handler.js +103 -0
- package/dist/tools/velocity-handler.js.map +1 -0
- package/dist/types/actuals.d.ts +100 -0
- package/dist/types/actuals.d.ts.map +1 -0
- package/dist/types/actuals.js +2 -0
- package/dist/types/actuals.js.map +1 -0
- package/dist/types/agent-frameworks.d.ts +62 -0
- package/dist/types/agent-frameworks.d.ts.map +1 -0
- package/dist/types/agent-frameworks.js +3 -0
- package/dist/types/agent-frameworks.js.map +1 -0
- package/dist/types/agents-md.d.ts +20 -0
- package/dist/types/agents-md.d.ts.map +1 -0
- package/dist/types/agents-md.js +3 -0
- package/dist/types/agents-md.js.map +1 -0
- package/dist/types/ai-integration.d.ts +65 -0
- package/dist/types/ai-integration.d.ts.map +1 -0
- package/dist/types/ai-integration.js +3 -0
- package/dist/types/ai-integration.js.map +1 -0
- package/dist/types/api-contract.d.ts +154 -0
- package/dist/types/api-contract.d.ts.map +1 -0
- package/dist/types/api-contract.js +3 -0
- package/dist/types/api-contract.js.map +1 -0
- package/dist/types/approval.d.ts +82 -0
- package/dist/types/approval.d.ts.map +1 -0
- package/dist/types/approval.js +3 -0
- package/dist/types/approval.js.map +1 -0
- package/dist/types/cline-integration.d.ts +30 -0
- package/dist/types/cline-integration.d.ts.map +1 -0
- package/dist/types/cline-integration.js +3 -0
- package/dist/types/cline-integration.js.map +1 -0
- package/dist/types/codex-integration.d.ts +55 -0
- package/dist/types/codex-integration.d.ts.map +1 -0
- package/dist/types/codex-integration.js +3 -0
- package/dist/types/codex-integration.js.map +1 -0
- package/dist/types/comments.d.ts +68 -0
- package/dist/types/comments.d.ts.map +1 -0
- package/dist/types/comments.js +3 -0
- package/dist/types/comments.js.map +1 -0
- package/dist/types/confluence.d.ts +102 -0
- package/dist/types/confluence.d.ts.map +1 -0
- package/dist/types/confluence.js +3 -0
- package/dist/types/confluence.js.map +1 -0
- package/dist/types/cross-repo-search.d.ts +104 -0
- package/dist/types/cross-repo-search.d.ts.map +1 -0
- package/dist/types/cross-repo-search.js +2 -0
- package/dist/types/cross-repo-search.js.map +1 -0
- package/dist/types/desktop-notification.d.ts +38 -0
- package/dist/types/desktop-notification.d.ts.map +1 -0
- package/dist/types/desktop-notification.js +3 -0
- package/dist/types/desktop-notification.js.map +1 -0
- package/dist/types/domain-criteria.d.ts +62 -0
- package/dist/types/domain-criteria.d.ts.map +1 -0
- package/dist/types/domain-criteria.js +3 -0
- package/dist/types/domain-criteria.js.map +1 -0
- package/dist/types/email-digest.d.ts +119 -0
- package/dist/types/email-digest.d.ts.map +1 -0
- package/dist/types/email-digest.js +3 -0
- package/dist/types/email-digest.js.map +1 -0
- package/dist/types/gemini-integration.d.ts +40 -0
- package/dist/types/gemini-integration.d.ts.map +1 -0
- package/dist/types/gemini-integration.js +3 -0
- package/dist/types/gemini-integration.js.map +1 -0
- package/dist/types/github-copilot-integration.d.ts +30 -0
- package/dist/types/github-copilot-integration.d.ts.map +1 -0
- package/dist/types/github-copilot-integration.js +3 -0
- package/dist/types/github-copilot-integration.js.map +1 -0
- package/dist/types/hooks-advanced.d.ts +34 -0
- package/dist/types/hooks-advanced.d.ts.map +1 -0
- package/dist/types/hooks-advanced.js +3 -0
- package/dist/types/hooks-advanced.js.map +1 -0
- package/dist/types/ide.d.ts +1 -1
- package/dist/types/ide.d.ts.map +1 -1
- package/dist/types/import-spec.d.ts +123 -0
- package/dist/types/import-spec.d.ts.map +1 -0
- package/dist/types/import-spec.js +3 -0
- package/dist/types/import-spec.js.map +1 -0
- package/dist/types/index.d.ts +29 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +29 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/kiro-integration.d.ts +44 -0
- package/dist/types/kiro-integration.d.ts.map +1 -0
- package/dist/types/kiro-integration.js +3 -0
- package/dist/types/kiro-integration.js.map +1 -0
- package/dist/types/outbound-webhook.d.ts +51 -0
- package/dist/types/outbound-webhook.d.ts.map +1 -0
- package/dist/types/outbound-webhook.js +3 -0
- package/dist/types/outbound-webhook.js.map +1 -0
- package/dist/types/performance-analysis.d.ts +33 -0
- package/dist/types/performance-analysis.d.ts.map +1 -0
- package/dist/types/performance-analysis.js +3 -0
- package/dist/types/performance-analysis.js.map +1 -0
- package/dist/types/registry-publishers.d.ts +63 -0
- package/dist/types/registry-publishers.d.ts.map +1 -0
- package/dist/types/registry-publishers.js +4 -0
- package/dist/types/registry-publishers.js.map +1 -0
- package/dist/types/search.d.ts +49 -0
- package/dist/types/search.d.ts.map +1 -0
- package/dist/types/search.js +3 -0
- package/dist/types/search.js.map +1 -0
- package/dist/types/slack.d.ts +41 -0
- package/dist/types/slack.d.ts.map +1 -0
- package/dist/types/slack.js +3 -0
- package/dist/types/slack.js.map +1 -0
- package/dist/types/spec/inputs.d.ts +46 -2
- package/dist/types/spec/inputs.d.ts.map +1 -1
- package/dist/types/spec-export.d.ts +18 -0
- package/dist/types/spec-export.d.ts.map +1 -0
- package/dist/types/spec-export.js +3 -0
- package/dist/types/spec-export.js.map +1 -0
- package/dist/types/spec-lock.d.ts +42 -0
- package/dist/types/spec-lock.d.ts.map +1 -0
- package/dist/types/spec-lock.js +3 -0
- package/dist/types/spec-lock.js.map +1 -0
- package/dist/types/spec-versioning.d.ts +35 -0
- package/dist/types/spec-versioning.d.ts.map +1 -1
- package/dist/types/team-analytics.d.ts +52 -0
- package/dist/types/team-analytics.d.ts.map +1 -0
- package/dist/types/team-analytics.js +3 -0
- package/dist/types/team-analytics.js.map +1 -0
- package/dist/types/telemetry.d.ts +1 -1
- package/dist/types/telemetry.d.ts.map +1 -1
- package/dist/types/test-reverse-engineer.d.ts +32 -0
- package/dist/types/test-reverse-engineer.d.ts.map +1 -0
- package/dist/types/test-reverse-engineer.js +3 -0
- package/dist/types/test-reverse-engineer.js.map +1 -0
- package/dist/types/velocity.d.ts +147 -0
- package/dist/types/velocity.d.ts.map +1 -0
- package/dist/types/velocity.js +4 -0
- package/dist/types/velocity.js.map +1 -0
- package/package.json +1 -1
- package/src/config/domain-best-practices.json +413 -0
- package/src/config/ide-registry.json +25 -0
- package/src/config/license-plans.json +59 -2
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// tools/register-outbound-webhook-tools.ts — Registers outbound webhook tools (SPEC-281)
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { safe } from './safe-handler.js';
|
|
4
|
+
import { handleConfigureWebhook, handleOutboundWebhookStatus, handleRemoveWebhook, } from './outbound-webhook-handler.js';
|
|
5
|
+
const SUPPORTED_EVENTS = [
|
|
6
|
+
'spec.created',
|
|
7
|
+
'spec.approved',
|
|
8
|
+
'spec.status_changed',
|
|
9
|
+
'spec.done',
|
|
10
|
+
'spec.drift_detected',
|
|
11
|
+
'feedback.submitted',
|
|
12
|
+
'validate.failed',
|
|
13
|
+
];
|
|
14
|
+
export function registerOutboundWebhookTools(server) {
|
|
15
|
+
// configure_webhook
|
|
16
|
+
server.registerTool('configure_webhook', {
|
|
17
|
+
description: 'Register an outbound webhook endpoint to receive Planu spec lifecycle events. ' +
|
|
18
|
+
'Payloads are signed with HMAC-SHA256 (X-Planu-Signature header) using the provided secret. ' +
|
|
19
|
+
'Retry logic: 3 attempts with exponential backoff (1s, 5s, 30s). ' +
|
|
20
|
+
'Events: spec.created | spec.approved | spec.status_changed | spec.done | ' +
|
|
21
|
+
'spec.drift_detected | feedback.submitted | validate.failed',
|
|
22
|
+
inputSchema: {
|
|
23
|
+
projectPath: z.string().describe('Absolute path to the project directory'),
|
|
24
|
+
url: z.string().describe('HTTPS endpoint URL that will receive webhook POST requests'),
|
|
25
|
+
secret: z
|
|
26
|
+
.string()
|
|
27
|
+
.describe('Shared secret (min 8 chars) used to sign payloads with HMAC-SHA256. ' +
|
|
28
|
+
'Verify X-Planu-Signature on your endpoint.'),
|
|
29
|
+
events: z
|
|
30
|
+
.array(z.enum(SUPPORTED_EVENTS))
|
|
31
|
+
.optional()
|
|
32
|
+
.describe('Events to subscribe to. Valid values: ' +
|
|
33
|
+
SUPPORTED_EVENTS.join(', ') +
|
|
34
|
+
'. Leave empty to receive all events.'),
|
|
35
|
+
label: z
|
|
36
|
+
.string()
|
|
37
|
+
.optional()
|
|
38
|
+
.describe('Optional human-readable label to identify this webhook'),
|
|
39
|
+
},
|
|
40
|
+
annotations: {
|
|
41
|
+
title: 'Configure Outbound Webhook',
|
|
42
|
+
destructiveHint: true,
|
|
43
|
+
readOnlyHint: false,
|
|
44
|
+
},
|
|
45
|
+
}, safe((args) => handleConfigureWebhook(args)));
|
|
46
|
+
// outbound_webhook_status
|
|
47
|
+
server.registerTool('outbound_webhook_status', {
|
|
48
|
+
description: 'List all configured outbound webhooks and their delivery status. ' +
|
|
49
|
+
'Shows health (healthy/failing), last delivery result, and success rate. ' +
|
|
50
|
+
'Use webhookId to inspect a specific webhook in detail.',
|
|
51
|
+
inputSchema: {
|
|
52
|
+
projectPath: z.string().describe('Absolute path to the project directory'),
|
|
53
|
+
webhookId: z
|
|
54
|
+
.string()
|
|
55
|
+
.optional()
|
|
56
|
+
.describe('ID of a specific webhook to inspect (from configure_webhook output)'),
|
|
57
|
+
},
|
|
58
|
+
annotations: {
|
|
59
|
+
title: 'Outbound Webhook Status',
|
|
60
|
+
readOnlyHint: true,
|
|
61
|
+
},
|
|
62
|
+
}, safe((args) => handleOutboundWebhookStatus(args)));
|
|
63
|
+
// remove_webhook
|
|
64
|
+
server.registerTool('remove_webhook', {
|
|
65
|
+
description: 'Deactivate an outbound webhook so it no longer receives events.',
|
|
66
|
+
inputSchema: {
|
|
67
|
+
projectPath: z.string().describe('Absolute path to the project directory'),
|
|
68
|
+
webhookId: z
|
|
69
|
+
.string()
|
|
70
|
+
.describe('ID of the webhook to deactivate (from configure_webhook or outbound_webhook_status)'),
|
|
71
|
+
},
|
|
72
|
+
annotations: {
|
|
73
|
+
title: 'Remove Outbound Webhook',
|
|
74
|
+
destructiveHint: true,
|
|
75
|
+
readOnlyHint: false,
|
|
76
|
+
},
|
|
77
|
+
}, safe((args) => handleRemoveWebhook(args)));
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=register-outbound-webhook-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-outbound-webhook-tools.js","sourceRoot":"","sources":["../../src/tools/register-outbound-webhook-tools.ts"],"names":[],"mappings":"AAAA,yFAAyF;AAGzF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,gBAAgB,GAAG;IACvB,cAAc;IACd,eAAe;IACf,qBAAqB;IACrB,WAAW;IACX,qBAAqB;IACrB,oBAAoB;IACpB,iBAAiB;CACT,CAAC;AAEX,MAAM,UAAU,4BAA4B,CAAC,MAAiB;IAC5D,oBAAoB;IACpB,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,WAAW,EACT,gFAAgF;YAChF,6FAA6F;YAC7F,kEAAkE;YAClE,2EAA2E;YAC3E,4DAA4D;QAC9D,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;YAC1E,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;YACtF,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,CACP,sEAAsE;gBACpE,4CAA4C,CAC/C;YACH,MAAM,EAAE,CAAC;iBACN,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;iBAC/B,QAAQ,EAAE;iBACV,QAAQ,CACP,wCAAwC;gBACtC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC3B,sCAAsC,CACzC;YACH,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,wDAAwD,CAAC;SACtE;QACD,WAAW,EAAE;YACX,KAAK,EAAE,4BAA4B;YACnC,eAAe,EAAE,IAAI;YACrB,YAAY,EAAE,KAAK;SACpB;KACF,EACD,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAC7C,CAAC;IAEF,0BAA0B;IAC1B,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,WAAW,EACT,mEAAmE;YACnE,0EAA0E;YAC1E,wDAAwD;QAC1D,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;YAC1E,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,qEAAqE,CAAC;SACnF;QACD,WAAW,EAAE;YACX,KAAK,EAAE,yBAAyB;YAChC,YAAY,EAAE,IAAI;SACnB;KACF,EACD,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAClD,CAAC;IAEF,iBAAiB;IACjB,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EAAE,iEAAiE;QAC9E,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;YAC1E,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,CACP,qFAAqF,CACtF;SACJ;QACD,WAAW,EAAE;YACX,KAAK,EAAE,yBAAyB;YAChC,eAAe,EAAE,IAAI;YACrB,YAAY,EAAE,KAAK;SACpB;KACF,EACD,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAC1C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-performance-analysis-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-performance-analysis-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyBxE"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// tools/register-performance-analysis-tools.ts — Registers analyze_performance_impact (SPEC-300)
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { safeLicensed } from './safe-handler.js';
|
|
4
|
+
import { handleAnalyzePerformanceImpact } from './performance-analysis-handler.js';
|
|
5
|
+
export function registerPerformanceAnalysisTools(server) {
|
|
6
|
+
server.registerTool('analyze_performance_impact', {
|
|
7
|
+
description: 'Analyze a spec for performance risks before implementation. ' +
|
|
8
|
+
'Detects common anti-patterns such as N+1 queries, missing pagination, missing caching, ' +
|
|
9
|
+
'blocking operations, large data loads, and missing database indexes. ' +
|
|
10
|
+
'Returns a risk report with severity levels (high/medium/low) and recommendations.',
|
|
11
|
+
annotations: { readOnlyHint: true },
|
|
12
|
+
inputSchema: {
|
|
13
|
+
specId: z
|
|
14
|
+
.string()
|
|
15
|
+
.max(500)
|
|
16
|
+
.describe('Spec ID to analyze for performance risks (e.g. SPEC-042)'),
|
|
17
|
+
projectPath: z
|
|
18
|
+
.string()
|
|
19
|
+
.max(2000)
|
|
20
|
+
.describe('Absolute path to the project root (e.g. /home/user/my-app)'),
|
|
21
|
+
},
|
|
22
|
+
}, safeLicensed('analyze_performance_impact', async (args) => handleAnalyzePerformanceImpact(args)));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=register-performance-analysis-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-performance-analysis-tools.js","sourceRoot":"","sources":["../../src/tools/register-performance-analysis-tools.ts"],"names":[],"mappings":"AAAA,iGAAiG;AAGjG,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AAEnF,MAAM,UAAU,gCAAgC,CAAC,MAAiB;IAChE,MAAM,CAAC,YAAY,CACjB,4BAA4B,EAC5B;QACE,WAAW,EACT,8DAA8D;YAC9D,yFAAyF;YACzF,uEAAuE;YACvE,mFAAmF;QACrF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;QACnC,WAAW,EAAE;YACX,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,CAAC,0DAA0D,CAAC;YACvE,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,CAAC,4DAA4D,CAAC;SAC1E;KACF,EACD,YAAY,CAAC,4BAA4B,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACxD,8BAA8B,CAAC,IAAI,CAAC,CACrC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-slack-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-slack-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgBzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8E1D"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// tools/register-slack-tools.ts — Registers Slack integration tools on the MCP server (SPEC-292)
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { safeTracked } from './safe-handler.js';
|
|
4
|
+
import { handleConfigureSlack, handleSlackNotify, handleSlackStatus, handleRemoveSlack, } from './slack-handler.js';
|
|
5
|
+
export function registerSlackTools(server) {
|
|
6
|
+
server.registerTool('configure_slack', {
|
|
7
|
+
description: 'Configure a Slack incoming webhook for this project. Once configured, spec status changes will automatically send rich Block Kit notifications to your Slack channel.',
|
|
8
|
+
inputSchema: {
|
|
9
|
+
projectPath: z
|
|
10
|
+
.string()
|
|
11
|
+
.describe('Absolute path to the project root (e.g. /home/user/my-project).'),
|
|
12
|
+
webhookUrl: z
|
|
13
|
+
.url()
|
|
14
|
+
.describe('Slack incoming webhook URL (e.g. https://hooks.slack.com/services/T.../B.../...).'),
|
|
15
|
+
channel: z
|
|
16
|
+
.string()
|
|
17
|
+
.optional()
|
|
18
|
+
.describe('Optional channel override (e.g. #deployments). If omitted, uses the webhook default.'),
|
|
19
|
+
},
|
|
20
|
+
annotations: { title: 'Configure Slack', destructiveHint: false },
|
|
21
|
+
}, safeTracked('configure_slack', async (args) => handleConfigureSlack(args)));
|
|
22
|
+
server.registerTool('slack_notify', {
|
|
23
|
+
description: 'Send a manual Slack notification to the configured webhook. Optionally link the message to a specific spec.',
|
|
24
|
+
inputSchema: {
|
|
25
|
+
projectPath: z
|
|
26
|
+
.string()
|
|
27
|
+
.describe('Absolute path to the project root (e.g. /home/user/my-project).'),
|
|
28
|
+
message: z.string().min(1).describe('Notification message text to send to Slack.'),
|
|
29
|
+
specId: z
|
|
30
|
+
.string()
|
|
31
|
+
.optional()
|
|
32
|
+
.describe('Optional SPEC-XXX identifier to link this notification to a spec.'),
|
|
33
|
+
},
|
|
34
|
+
annotations: { title: 'Slack Notify', destructiveHint: false },
|
|
35
|
+
}, safeTracked('slack_notify', async (args) => handleSlackNotify(args)));
|
|
36
|
+
server.registerTool('slack_status', {
|
|
37
|
+
description: 'Show the current Slack configuration and the last 20 notification delivery records for this project.',
|
|
38
|
+
inputSchema: {
|
|
39
|
+
projectPath: z
|
|
40
|
+
.string()
|
|
41
|
+
.describe('Absolute path to the project root (e.g. /home/user/my-project).'),
|
|
42
|
+
},
|
|
43
|
+
annotations: { title: 'Slack Status', readOnlyHint: true },
|
|
44
|
+
}, safeTracked('slack_status', async (args) => handleSlackStatus(args)));
|
|
45
|
+
server.registerTool('remove_slack', {
|
|
46
|
+
description: 'Remove the Slack webhook configuration for this project. Notifications will stop immediately.',
|
|
47
|
+
inputSchema: {
|
|
48
|
+
projectPath: z
|
|
49
|
+
.string()
|
|
50
|
+
.describe('Absolute path to the project root (e.g. /home/user/my-project).'),
|
|
51
|
+
},
|
|
52
|
+
annotations: { title: 'Remove Slack', destructiveHint: true },
|
|
53
|
+
}, safeTracked('remove_slack', async (args) => handleRemoveSlack(args)));
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=register-slack-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-slack-tools.js","sourceRoot":"","sources":["../../src/tools/register-slack-tools.ts"],"names":[],"mappings":"AAAA,iGAAiG;AAGjG,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAQ5B,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,WAAW,EACT,uKAAuK;QACzK,WAAW,EAAE;YACX,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,iEAAiE,CAAC;YAC9E,UAAU,EAAE,CAAC;iBACV,GAAG,EAAE;iBACL,QAAQ,CACP,mFAAmF,CACpF;YACH,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,sFAAsF,CACvF;SACJ;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,KAAK,EAAE;KAClE,EACD,WAAW,CAAC,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAC5C,oBAAoB,CAAC,IAA2B,CAAC,CAClD,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EACT,6GAA6G;QAC/G,WAAW,EAAE;YACX,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,iEAAiE,CAAC;YAC9E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YAClF,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,mEAAmE,CAAC;SACjF;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,KAAK,EAAE;KAC/D,EACD,WAAW,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAwB,CAAC,CAAC,CACzF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EACT,sGAAsG;QACxG,WAAW,EAAE;YACX,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,iEAAiE,CAAC;SAC/E;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE;KAC3D,EACD,WAAW,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAwB,CAAC,CAAC,CACzF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EACT,+FAA+F;QACjG,WAAW,EAAE;YACX,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,iEAAiE,CAAC;SAC/E;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,IAAI,EAAE;KAC9D,EACD,WAAW,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAwB,CAAC,CAAC,CACzF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-spec-export-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-spec-export-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAqDzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsC/D"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// tools/register-spec-export-tools.ts — Registers export_specs_csv and export_specs_markdown — SPEC-298
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { safeTracked } from './safe-handler.js';
|
|
4
|
+
import { handleExportSpecsCsv, handleExportSpecsMarkdown } from './spec-export-handler.js';
|
|
5
|
+
const COLUMN_VALUES = [
|
|
6
|
+
'id',
|
|
7
|
+
'title',
|
|
8
|
+
'status',
|
|
9
|
+
'type',
|
|
10
|
+
'scope',
|
|
11
|
+
'difficulty',
|
|
12
|
+
'risk',
|
|
13
|
+
'target',
|
|
14
|
+
'tags',
|
|
15
|
+
'createdAt',
|
|
16
|
+
'updatedAt',
|
|
17
|
+
'devHours',
|
|
18
|
+
'totalCostUsd',
|
|
19
|
+
'estimatedModel',
|
|
20
|
+
];
|
|
21
|
+
const COLUMN_DESCRIBE = 'Columns to include. Valid values: id, title, status, type, scope, difficulty, risk, target, tags, createdAt, updatedAt, devHours, totalCostUsd, estimatedModel. Defaults to all columns.';
|
|
22
|
+
const columnsSchema = z.array(z.enum(COLUMN_VALUES)).optional().describe(COLUMN_DESCRIBE);
|
|
23
|
+
const statusSchema = z
|
|
24
|
+
.array(z.string())
|
|
25
|
+
.optional()
|
|
26
|
+
.describe('Filter by status. Valid values: draft, review, approved, implementing, done, cancelled.');
|
|
27
|
+
const typeSchema = z
|
|
28
|
+
.array(z.string())
|
|
29
|
+
.optional()
|
|
30
|
+
.describe('Filter by spec type. Valid values: feature, refactor, bugfix, infra, docs, project, agent, tech-debt.');
|
|
31
|
+
const tagsSchema = z
|
|
32
|
+
.array(z.string())
|
|
33
|
+
.optional()
|
|
34
|
+
.describe('Filter specs that have at least one of these tags.');
|
|
35
|
+
const outputPathSchema = z
|
|
36
|
+
.string()
|
|
37
|
+
.optional()
|
|
38
|
+
.describe('Absolute path to write the output file. If omitted, the content is returned but not written.');
|
|
39
|
+
export function registerSpecExportTools(server) {
|
|
40
|
+
// export_specs_csv — pro tier
|
|
41
|
+
server.registerTool('export_specs_csv', {
|
|
42
|
+
description: 'Export specs to CSV format for spreadsheet analysis. Supports filtering by status, type, or tags and custom column selection. Pro tier.',
|
|
43
|
+
annotations: { readOnlyHint: true },
|
|
44
|
+
inputSchema: {
|
|
45
|
+
projectPath: z.string().min(1).max(4096).describe('Absolute path to the project root.'),
|
|
46
|
+
columns: columnsSchema,
|
|
47
|
+
status: statusSchema,
|
|
48
|
+
type: typeSchema,
|
|
49
|
+
tags: tagsSchema,
|
|
50
|
+
outputPath: outputPathSchema,
|
|
51
|
+
},
|
|
52
|
+
}, safeTracked('export_specs_csv', async (args) => handleExportSpecsCsv(args)));
|
|
53
|
+
// export_specs_markdown — free tier
|
|
54
|
+
server.registerTool('export_specs_markdown', {
|
|
55
|
+
description: 'Export specs to a Markdown table for docs, reports, or PR descriptions. Supports filtering by status, type, or tags and custom column selection.',
|
|
56
|
+
annotations: { readOnlyHint: true },
|
|
57
|
+
inputSchema: {
|
|
58
|
+
projectPath: z.string().min(1).max(4096).describe('Absolute path to the project root.'),
|
|
59
|
+
columns: columnsSchema,
|
|
60
|
+
status: statusSchema,
|
|
61
|
+
type: typeSchema,
|
|
62
|
+
tags: tagsSchema,
|
|
63
|
+
outputPath: outputPathSchema,
|
|
64
|
+
},
|
|
65
|
+
}, safeTracked('export_specs_markdown', async (args) => handleExportSpecsMarkdown(args)));
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=register-spec-export-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-spec-export-tools.js","sourceRoot":"","sources":["../../src/tools/register-spec-export-tools.ts"],"names":[],"mappings":"AAAA,wGAAwG;AAGxG,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAE3F,MAAM,aAAa,GAAG;IACpB,IAAI;IACJ,OAAO;IACP,QAAQ;IACR,MAAM;IACN,OAAO;IACP,YAAY;IACZ,MAAM;IACN,QAAQ;IACR,MAAM;IACN,WAAW;IACX,WAAW;IACX,UAAU;IACV,cAAc;IACd,gBAAgB;CACR,CAAC;AAEX,MAAM,eAAe,GACnB,0LAA0L,CAAC;AAE7L,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AAE1F,MAAM,YAAY,GAAG,CAAC;KACnB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACjB,QAAQ,EAAE;KACV,QAAQ,CACP,yFAAyF,CAC1F,CAAC;AAEJ,MAAM,UAAU,GAAG,CAAC;KACjB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACjB,QAAQ,EAAE;KACV,QAAQ,CACP,uGAAuG,CACxG,CAAC;AAEJ,MAAM,UAAU,GAAG,CAAC;KACjB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACjB,QAAQ,EAAE;KACV,QAAQ,CAAC,oDAAoD,CAAC,CAAC;AAElE,MAAM,gBAAgB,GAAG,CAAC;KACvB,MAAM,EAAE;KACR,QAAQ,EAAE;KACV,QAAQ,CACP,8FAA8F,CAC/F,CAAC;AAEJ,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,8BAA8B;IAC9B,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EACT,yIAAyI;QAC3I,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;QACnC,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YACvF,OAAO,EAAE,aAAa;YACtB,MAAM,EAAE,YAAY;YACpB,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,gBAAgB;SAC7B;KACF,EACD,WAAW,CAAC,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAC5E,CAAC;IAEF,oCAAoC;IACpC,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,WAAW,EACT,kJAAkJ;QACpJ,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;QACnC,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YACvF,OAAO,EAAE,aAAa;YACtB,MAAM,EAAE,YAAY;YACpB,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,gBAAgB;SAC7B;KACF,EACD,WAAW,CAAC,uBAAuB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CACtF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-spec-lock-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-spec-lock-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWzE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+F7D"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// tools/register-spec-lock-tools.ts — Registers spec locking tools (SPEC-301)
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { safeTracked } from './safe-handler.js';
|
|
4
|
+
import { handleLockSpec, handleUnlockSpec, handleListLocks, handleCheckSpecLock, } from './spec-lock-handler.js';
|
|
5
|
+
export function registerSpecLockTools(server) {
|
|
6
|
+
// -------------------------------------------------------------------------
|
|
7
|
+
// lock_spec — acquire an exclusive lock on a spec
|
|
8
|
+
// -------------------------------------------------------------------------
|
|
9
|
+
server.registerTool('lock_spec', {
|
|
10
|
+
description: 'Acquire an exclusive lock on a spec to prevent concurrent edits by other agents or sessions. ' +
|
|
11
|
+
'If the spec is already locked by a different holder, returns an error. ' +
|
|
12
|
+
'Re-locking by the same holder refreshes the TTL.',
|
|
13
|
+
inputSchema: {
|
|
14
|
+
projectPath: z.string().describe('Absolute path to the project root.'),
|
|
15
|
+
specId: z.string().describe('Spec ID to lock (e.g. SPEC-042).'),
|
|
16
|
+
lockHolder: z
|
|
17
|
+
.string()
|
|
18
|
+
.describe('Identifier of the agent or session acquiring the lock (e.g. "agent-123").'),
|
|
19
|
+
ttlMinutes: z
|
|
20
|
+
.number()
|
|
21
|
+
.int()
|
|
22
|
+
.optional()
|
|
23
|
+
.describe('Lock TTL in minutes. Clamped to [1, 480]. Default: 30.'),
|
|
24
|
+
reason: z
|
|
25
|
+
.string()
|
|
26
|
+
.optional()
|
|
27
|
+
.describe('Optional human-readable reason for acquiring the lock.'),
|
|
28
|
+
},
|
|
29
|
+
annotations: { title: 'Lock Spec', destructiveHint: false },
|
|
30
|
+
}, safeTracked('lock_spec', (args) => handleLockSpec(args)));
|
|
31
|
+
// -------------------------------------------------------------------------
|
|
32
|
+
// unlock_spec — release a lock on a spec
|
|
33
|
+
// -------------------------------------------------------------------------
|
|
34
|
+
server.registerTool('unlock_spec', {
|
|
35
|
+
description: 'Release an existing lock on a spec. ' +
|
|
36
|
+
'Fails if the lock is held by a different holder unless force=true is passed.',
|
|
37
|
+
inputSchema: {
|
|
38
|
+
projectPath: z.string().describe('Absolute path to the project root.'),
|
|
39
|
+
specId: z.string().describe('Spec ID to unlock (e.g. SPEC-042).'),
|
|
40
|
+
lockHolder: z.string().describe('Identifier of the agent or session releasing the lock.'),
|
|
41
|
+
force: z
|
|
42
|
+
.boolean()
|
|
43
|
+
.optional()
|
|
44
|
+
.describe('If true, removes the lock even when held by a different lockHolder. Default: false.'),
|
|
45
|
+
},
|
|
46
|
+
annotations: { title: 'Unlock Spec', destructiveHint: true },
|
|
47
|
+
}, safeTracked('unlock_spec', (args) => handleUnlockSpec(args)));
|
|
48
|
+
// -------------------------------------------------------------------------
|
|
49
|
+
// list_locks — list all active locks in a project
|
|
50
|
+
// -------------------------------------------------------------------------
|
|
51
|
+
server.registerTool('list_locks', {
|
|
52
|
+
description: 'List all active (non-expired) locks for a project. ' +
|
|
53
|
+
'Returns the spec ID, lock holder, expiration time, and optional reason for each lock.',
|
|
54
|
+
inputSchema: {
|
|
55
|
+
projectPath: z.string().describe('Absolute path to the project root.'),
|
|
56
|
+
},
|
|
57
|
+
annotations: { title: 'List Active Locks', readOnlyHint: true },
|
|
58
|
+
}, safeTracked('list_locks', (args) => handleListLocks(args)));
|
|
59
|
+
// -------------------------------------------------------------------------
|
|
60
|
+
// check_spec_lock — check whether a specific spec is locked
|
|
61
|
+
// -------------------------------------------------------------------------
|
|
62
|
+
server.registerTool('check_spec_lock', {
|
|
63
|
+
description: 'Check whether a specific spec is currently locked. ' +
|
|
64
|
+
'Returns locked status, lock holder, expiration time, and reason if locked.',
|
|
65
|
+
inputSchema: {
|
|
66
|
+
projectPath: z.string().describe('Absolute path to the project root.'),
|
|
67
|
+
specId: z.string().describe('Spec ID to check (e.g. SPEC-042).'),
|
|
68
|
+
},
|
|
69
|
+
annotations: { title: 'Check Spec Lock', readOnlyHint: true },
|
|
70
|
+
}, safeTracked('check_spec_lock', (args) => handleCheckSpecLock(args)));
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=register-spec-lock-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-spec-lock-tools.js","sourceRoot":"","sources":["../../src/tools/register-spec-lock-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-spec-search-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-spec-search-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA+BzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgH/D"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
// tools/register-spec-search-tools.ts — Registers search_specs and search_suggestions (SPEC-295)
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { safeTracked } from './safe-handler.js';
|
|
4
|
+
import { handleSearchSpecs, handleSearchSuggestions } from './search-handler.js';
|
|
5
|
+
const STATUS_VALUES = ['draft', 'review', 'approved', 'implementing', 'done', 'discarded'];
|
|
6
|
+
const TYPE_VALUES = [
|
|
7
|
+
'feature',
|
|
8
|
+
'refactor',
|
|
9
|
+
'bugfix',
|
|
10
|
+
'infra',
|
|
11
|
+
'docs',
|
|
12
|
+
'project',
|
|
13
|
+
'agent',
|
|
14
|
+
'tech-debt',
|
|
15
|
+
];
|
|
16
|
+
const TARGET_VALUES = [
|
|
17
|
+
'frontend',
|
|
18
|
+
'backend',
|
|
19
|
+
'shared',
|
|
20
|
+
'fullstack',
|
|
21
|
+
'infrastructure',
|
|
22
|
+
'database',
|
|
23
|
+
'ios',
|
|
24
|
+
'android',
|
|
25
|
+
];
|
|
26
|
+
const RISK_VALUES = ['low', 'medium', 'high', 'critical'];
|
|
27
|
+
const SORT_BY_VALUES = ['relevance', 'createdAt', 'updatedAt', 'difficulty'];
|
|
28
|
+
const SORT_ORDER_VALUES = ['asc', 'desc'];
|
|
29
|
+
const SUGGESTION_FIELD_VALUES = ['tags', 'type', 'status', 'id'];
|
|
30
|
+
export function registerSpecSearchTools(server) {
|
|
31
|
+
// search_specs — SPEC-295
|
|
32
|
+
server.registerTool('search_specs', {
|
|
33
|
+
description: 'Search specs with fuzzy text matching, multi-field filters, sorting, and pagination. Supports filtering by status, type, target, tags, difficulty range, risk level, and date ranges.',
|
|
34
|
+
annotations: { readOnlyHint: true },
|
|
35
|
+
inputSchema: {
|
|
36
|
+
projectPath: z.string().min(1).max(4096).describe('Absolute path to the project root.'),
|
|
37
|
+
query: z
|
|
38
|
+
.string()
|
|
39
|
+
.max(200)
|
|
40
|
+
.optional()
|
|
41
|
+
.describe('Free-text fuzzy search query matched against spec id, title, and tags.'),
|
|
42
|
+
status: z
|
|
43
|
+
.array(z.enum(STATUS_VALUES))
|
|
44
|
+
.optional()
|
|
45
|
+
.describe('Filter by status (OR). Valid values: draft, review, approved, implementing, done, discarded.'),
|
|
46
|
+
tags: z
|
|
47
|
+
.array(z.string().max(100))
|
|
48
|
+
.optional()
|
|
49
|
+
.describe('Filter by tags (OR — spec must have at least one matching tag).'),
|
|
50
|
+
type: z
|
|
51
|
+
.array(z.enum(TYPE_VALUES))
|
|
52
|
+
.optional()
|
|
53
|
+
.describe('Filter by type (OR). Valid values: feature, refactor, bugfix, infra, docs, project, agent, tech-debt.'),
|
|
54
|
+
target: z
|
|
55
|
+
.array(z.enum(TARGET_VALUES))
|
|
56
|
+
.optional()
|
|
57
|
+
.describe('Filter by target (OR). Valid values: frontend, backend, shared, fullstack, infrastructure, database, ios, android.'),
|
|
58
|
+
difficulty: z
|
|
59
|
+
.object({
|
|
60
|
+
min: z.number().int().min(1).max(5).optional(),
|
|
61
|
+
max: z.number().int().min(1).max(5).optional(),
|
|
62
|
+
})
|
|
63
|
+
.optional()
|
|
64
|
+
.describe('Difficulty range filter (inclusive, 1-5).'),
|
|
65
|
+
risk: z
|
|
66
|
+
.array(z.enum(RISK_VALUES))
|
|
67
|
+
.optional()
|
|
68
|
+
.describe('Filter by risk level (OR). Valid values: low, medium, high, critical.'),
|
|
69
|
+
createdAfter: z
|
|
70
|
+
.string()
|
|
71
|
+
.optional()
|
|
72
|
+
.describe('ISO date string — only include specs created after this date.'),
|
|
73
|
+
createdBefore: z
|
|
74
|
+
.string()
|
|
75
|
+
.optional()
|
|
76
|
+
.describe('ISO date string — only include specs created before this date.'),
|
|
77
|
+
updatedAfter: z
|
|
78
|
+
.string()
|
|
79
|
+
.optional()
|
|
80
|
+
.describe('ISO date string — only include specs updated after this date.'),
|
|
81
|
+
updatedBefore: z
|
|
82
|
+
.string()
|
|
83
|
+
.optional()
|
|
84
|
+
.describe('ISO date string — only include specs updated before this date.'),
|
|
85
|
+
sortBy: z
|
|
86
|
+
.enum(SORT_BY_VALUES)
|
|
87
|
+
.optional()
|
|
88
|
+
.describe('Sort field. Valid values: relevance, createdAt, updatedAt, difficulty. Defaults to relevance when query is set, updatedAt otherwise.'),
|
|
89
|
+
sortOrder: z
|
|
90
|
+
.enum(SORT_ORDER_VALUES)
|
|
91
|
+
.optional()
|
|
92
|
+
.describe('Sort direction. Valid values: asc, desc.'),
|
|
93
|
+
limit: z
|
|
94
|
+
.number()
|
|
95
|
+
.int()
|
|
96
|
+
.min(1)
|
|
97
|
+
.max(100)
|
|
98
|
+
.optional()
|
|
99
|
+
.describe('Maximum number of results to return (default: 20, max: 100).'),
|
|
100
|
+
offset: z
|
|
101
|
+
.number()
|
|
102
|
+
.int()
|
|
103
|
+
.min(0)
|
|
104
|
+
.optional()
|
|
105
|
+
.describe('Number of results to skip for pagination (default: 0).'),
|
|
106
|
+
},
|
|
107
|
+
}, safeTracked('search_specs', async (args) => handleSearchSpecs(args)));
|
|
108
|
+
// search_suggestions — SPEC-295
|
|
109
|
+
server.registerTool('search_suggestions', {
|
|
110
|
+
description: 'Get autocomplete suggestions for a partial query against a specific field (tags, type, status, or spec id). Useful for building dynamic filters.',
|
|
111
|
+
annotations: { readOnlyHint: true },
|
|
112
|
+
inputSchema: {
|
|
113
|
+
projectPath: z.string().min(1).max(4096).describe('Absolute path to the project root.'),
|
|
114
|
+
query: z.string().min(1).max(200).describe('Partial string to match against field values.'),
|
|
115
|
+
field: z
|
|
116
|
+
.enum(SUGGESTION_FIELD_VALUES)
|
|
117
|
+
.optional()
|
|
118
|
+
.describe('Field to search for suggestions. Valid values: tags, type, status, id. Defaults to tags.'),
|
|
119
|
+
},
|
|
120
|
+
}, safeTracked('search_suggestions', async (args) => handleSearchSuggestions(args)));
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=register-spec-search-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-spec-search-tools.js","sourceRoot":"","sources":["../../src/tools/register-spec-search-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-spec-split-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-spec-split-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8D9D"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// tools/register-spec-split-tools.ts — Registers analyze_spec_size and split_spec (SPEC-289)
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { safeLicensed } from './safe-handler.js';
|
|
4
|
+
import { handleAnalyzeSpecSize, handleSplitSpec } from './spec-split-handler.js';
|
|
5
|
+
export function registerSpecSplitTools(server) {
|
|
6
|
+
// analyze_spec_size — read-only, free tier
|
|
7
|
+
server.registerTool('analyze_spec_size', {
|
|
8
|
+
description: 'Analyze a spec to determine if it is too large or complex and should be split into ' +
|
|
9
|
+
'smaller, more atomic specs. ' +
|
|
10
|
+
'Checks three criteria: >15 acceptance criteria, estimation >40h, or >3 subsystem signals. ' +
|
|
11
|
+
'Also detects ambiguous criteria with vague language (e.g. "should handle", "properly"). ' +
|
|
12
|
+
'Returns a SpecSizeAnalysis with shouldSplit flag, reasons, and suggestedSplits.',
|
|
13
|
+
annotations: { readOnlyHint: true },
|
|
14
|
+
inputSchema: {
|
|
15
|
+
projectId: z
|
|
16
|
+
.string()
|
|
17
|
+
.max(500)
|
|
18
|
+
.describe('Project ID that owns the spec (from init_project or list_specs)'),
|
|
19
|
+
specId: z.string().max(500).describe('Spec ID to analyze (e.g. SPEC-042)'),
|
|
20
|
+
},
|
|
21
|
+
}, safeLicensed('analyze_spec_size', async (args) => handleAnalyzeSpecSize(args)));
|
|
22
|
+
// split_spec — destructive (creates new specs and modifies original), pro tier
|
|
23
|
+
server.registerTool('split_spec', {
|
|
24
|
+
description: 'Execute the division of a large spec into smaller child specs. ' +
|
|
25
|
+
'Creates N new child specs with fresh IDs, marks the original as superseded, ' +
|
|
26
|
+
'and distributes acceptance criteria according to the proposals. ' +
|
|
27
|
+
'Child specs inherit tags, target, type and risk from the original. ' +
|
|
28
|
+
'Use analyze_spec_size first to get the suggested splits, then optionally customize ' +
|
|
29
|
+
'proposedSplits before calling this tool. ' +
|
|
30
|
+
'DESTRUCTIVE: modifies the original spec status to "superseded".',
|
|
31
|
+
annotations: { destructiveHint: true },
|
|
32
|
+
inputSchema: {
|
|
33
|
+
projectId: z.string().max(500).describe('Project ID that owns the spec'),
|
|
34
|
+
specId: z.string().max(500).describe('Spec ID to split (e.g. SPEC-042)'),
|
|
35
|
+
proposedSplits: z
|
|
36
|
+
.array(z.object({
|
|
37
|
+
title: z.string().max(200).describe('Title for the child spec'),
|
|
38
|
+
description: z.string().max(1000).describe('Description of this child spec scope'),
|
|
39
|
+
criteriaIndices: z
|
|
40
|
+
.array(z.number().int().min(0))
|
|
41
|
+
.describe('Zero-based indices of acceptance criteria from the original spec to assign to this child'),
|
|
42
|
+
dependsOn: z
|
|
43
|
+
.array(z.number().int().min(0))
|
|
44
|
+
.describe('Zero-based indices of other proposedSplits that this child depends on'),
|
|
45
|
+
}))
|
|
46
|
+
.optional()
|
|
47
|
+
.describe('Custom split proposals. If omitted, uses auto-generated proposals from analyze_spec_size.'),
|
|
48
|
+
},
|
|
49
|
+
}, safeLicensed('split_spec', async (args) => handleSplitSpec(args)));
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=register-spec-split-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-spec-split-tools.js","sourceRoot":"","sources":["../../src/tools/register-spec-split-tools.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAG7F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEjF,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,2CAA2C;IAC3C,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,WAAW,EACT,qFAAqF;YACrF,8BAA8B;YAC9B,4FAA4F;YAC5F,0FAA0F;YAC1F,iFAAiF;QACnF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;QACnC,WAAW,EAAE;YACX,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,CAAC,iEAAiE,CAAC;YAC9E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;SAC3E;KACF,EACD,YAAY,CAAC,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAC/E,CAAC;IAEF,+EAA+E;IAC/E,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,WAAW,EACT,iEAAiE;YACjE,8EAA8E;YAC9E,kEAAkE;YAClE,qEAAqE;YACrE,qFAAqF;YACrF,2CAA2C;YAC3C,iEAAiE;QACnE,WAAW,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;QACtC,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YACxE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,kCAAkC,CAAC;YACxE,cAAc,EAAE,CAAC;iBACd,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;gBACP,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;gBAC/D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,sCAAsC,CAAC;gBAClF,eAAe,EAAE,CAAC;qBACf,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;qBAC9B,QAAQ,CACP,0FAA0F,CAC3F;gBACH,SAAS,EAAE,CAAC;qBACT,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;qBAC9B,QAAQ,CAAC,uEAAuE,CAAC;aACrF,CAAC,CACH;iBACA,QAAQ,EAAE;iBACV,QAAQ,CACP,2FAA2F,CAC5F;SACJ;KACF,EACD,YAAY,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAClE,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-spec-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/register-spec-tools/core-spec-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA0BzE;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"core-spec-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/register-spec-tools/core-spec-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA0BzE;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmS7D"}
|
|
@@ -135,7 +135,16 @@ export function registerCoreSpecTools(server) {
|
|
|
135
135
|
server.registerTool('list_specs', {
|
|
136
136
|
description: t('tools.list_specs.description'),
|
|
137
137
|
inputSchema: {
|
|
138
|
-
projectId: z
|
|
138
|
+
projectId: z
|
|
139
|
+
.string()
|
|
140
|
+
.max(500)
|
|
141
|
+
.optional()
|
|
142
|
+
.describe('Project ID (hash). Prefer projectPath if unknown.'),
|
|
143
|
+
projectPath: z
|
|
144
|
+
.string()
|
|
145
|
+
.max(4096)
|
|
146
|
+
.optional()
|
|
147
|
+
.describe('Absolute path to the project root. Used to derive projectId automatically.'),
|
|
139
148
|
status: SpecStatusEnum.optional().describe('Filter by spec status'),
|
|
140
149
|
type: SpecTypeEnum.optional().describe('Filter by spec type'),
|
|
141
150
|
detail: z
|
|
@@ -150,7 +159,16 @@ export function registerCoreSpecTools(server) {
|
|
|
150
159
|
description: t('tools.update_status.description'),
|
|
151
160
|
inputSchema: {
|
|
152
161
|
specId: z.string().max(500).describe('Spec ID to update'),
|
|
153
|
-
projectId: z
|
|
162
|
+
projectId: z
|
|
163
|
+
.string()
|
|
164
|
+
.max(500)
|
|
165
|
+
.optional()
|
|
166
|
+
.describe('Project ID (hash). Prefer projectPath if unknown.'),
|
|
167
|
+
projectPath: z
|
|
168
|
+
.string()
|
|
169
|
+
.max(4096)
|
|
170
|
+
.optional()
|
|
171
|
+
.describe('Absolute path to the project root. Used to derive projectId automatically.'),
|
|
154
172
|
status: SpecStatusEnum.describe('New status'),
|
|
155
173
|
actuals: z
|
|
156
174
|
.object({
|