mcp-adr-analysis-server 2.1.9 → 2.1.20
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/README.md +55 -8
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/index.d.ts +78 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1793 -577
- package/dist/src/index.js.map +1 -1
- package/dist/src/prompts/index.d.ts.map +1 -1
- package/dist/src/prompts/index.js +23 -6
- package/dist/src/prompts/index.js.map +1 -1
- package/dist/src/prompts/validated-pattern-prompts.d.ts +33 -0
- package/dist/src/prompts/validated-pattern-prompts.d.ts.map +1 -0
- package/dist/src/prompts/validated-pattern-prompts.js +337 -0
- package/dist/src/prompts/validated-pattern-prompts.js.map +1 -0
- package/dist/src/resources/adr-by-id-resource.d.ts +116 -0
- package/dist/src/resources/adr-by-id-resource.d.ts.map +1 -0
- package/dist/src/resources/adr-by-id-resource.js +213 -0
- package/dist/src/resources/adr-by-id-resource.js.map +1 -0
- package/dist/src/resources/code-quality-resource.d.ts +105 -0
- package/dist/src/resources/code-quality-resource.d.ts.map +1 -0
- package/dist/src/resources/code-quality-resource.js +282 -0
- package/dist/src/resources/code-quality-resource.js.map +1 -0
- package/dist/src/resources/deployment-history-resource.d.ts +214 -0
- package/dist/src/resources/deployment-history-resource.d.ts.map +1 -0
- package/dist/src/resources/deployment-history-resource.js +308 -0
- package/dist/src/resources/deployment-history-resource.js.map +1 -0
- package/dist/src/resources/deployment-status-resource.d.ts +256 -0
- package/dist/src/resources/deployment-status-resource.d.ts.map +1 -0
- package/dist/src/resources/deployment-status-resource.js +665 -0
- package/dist/src/resources/deployment-status-resource.js.map +1 -0
- package/dist/src/resources/environment-analysis-resource.d.ts +237 -0
- package/dist/src/resources/environment-analysis-resource.d.ts.map +1 -0
- package/dist/src/resources/environment-analysis-resource.js +646 -0
- package/dist/src/resources/environment-analysis-resource.js.map +1 -0
- package/dist/src/resources/index.d.ts +6 -2
- package/dist/src/resources/index.d.ts.map +1 -1
- package/dist/src/resources/index.js +247 -492
- package/dist/src/resources/index.js.map +1 -1
- package/dist/src/resources/memory-snapshots-resource.d.ts +180 -0
- package/dist/src/resources/memory-snapshots-resource.d.ts.map +1 -0
- package/dist/src/resources/memory-snapshots-resource.js +847 -0
- package/dist/src/resources/memory-snapshots-resource.js.map +1 -0
- package/dist/src/resources/pattern-base-code-by-platform-resource.d.ts +35 -0
- package/dist/src/resources/pattern-base-code-by-platform-resource.d.ts.map +1 -0
- package/dist/src/resources/pattern-base-code-by-platform-resource.js +72 -0
- package/dist/src/resources/pattern-base-code-by-platform-resource.js.map +1 -0
- package/dist/src/resources/pattern-by-name-resource.d.ts +53 -0
- package/dist/src/resources/pattern-by-name-resource.d.ts.map +1 -0
- package/dist/src/resources/pattern-by-name-resource.js +200 -0
- package/dist/src/resources/pattern-by-name-resource.js.map +1 -0
- package/dist/src/resources/pattern-sources-by-platform-resource.d.ts +26 -0
- package/dist/src/resources/pattern-sources-by-platform-resource.d.ts.map +1 -0
- package/dist/src/resources/pattern-sources-by-platform-resource.js +59 -0
- package/dist/src/resources/pattern-sources-by-platform-resource.js.map +1 -0
- package/dist/src/resources/project-metrics-resource.d.ts +180 -0
- package/dist/src/resources/project-metrics-resource.d.ts.map +1 -0
- package/dist/src/resources/project-metrics-resource.js +487 -0
- package/dist/src/resources/project-metrics-resource.js.map +1 -0
- package/dist/src/resources/project-status-resource.d.ts +75 -0
- package/dist/src/resources/project-status-resource.d.ts.map +1 -0
- package/dist/src/resources/project-status-resource.js +189 -0
- package/dist/src/resources/project-status-resource.js.map +1 -0
- package/dist/src/resources/research-by-topic-resource.d.ts +21 -0
- package/dist/src/resources/research-by-topic-resource.d.ts.map +1 -0
- package/dist/src/resources/research-by-topic-resource.js +125 -0
- package/dist/src/resources/research-by-topic-resource.js.map +1 -0
- package/dist/src/resources/research-index-resource.d.ts +100 -0
- package/dist/src/resources/research-index-resource.d.ts.map +1 -0
- package/dist/src/resources/research-index-resource.js +200 -0
- package/dist/src/resources/research-index-resource.js.map +1 -0
- package/dist/src/resources/resource-cache.d.ts +144 -0
- package/dist/src/resources/resource-cache.d.ts.map +1 -0
- package/dist/src/resources/resource-cache.js +316 -0
- package/dist/src/resources/resource-cache.js.map +1 -0
- package/dist/src/resources/resource-router.d.ts +45 -0
- package/dist/src/resources/resource-router.d.ts.map +1 -0
- package/dist/src/resources/resource-router.js +96 -0
- package/dist/src/resources/resource-router.js.map +1 -0
- package/dist/src/resources/rule-by-id-resource.d.ts +38 -0
- package/dist/src/resources/rule-by-id-resource.d.ts.map +1 -0
- package/dist/src/resources/rule-by-id-resource.js +104 -0
- package/dist/src/resources/rule-by-id-resource.js.map +1 -0
- package/dist/src/resources/rule-catalog-resource.d.ts +126 -0
- package/dist/src/resources/rule-catalog-resource.d.ts.map +1 -0
- package/dist/src/resources/rule-catalog-resource.js +224 -0
- package/dist/src/resources/rule-catalog-resource.js.map +1 -0
- package/dist/src/resources/rule-generation-resource.d.ts +80 -0
- package/dist/src/resources/rule-generation-resource.d.ts.map +1 -0
- package/dist/src/resources/rule-generation-resource.js +282 -0
- package/dist/src/resources/rule-generation-resource.js.map +1 -0
- package/dist/src/resources/technology-by-name-resource.d.ts +43 -0
- package/dist/src/resources/technology-by-name-resource.d.ts.map +1 -0
- package/dist/src/resources/technology-by-name-resource.js +176 -0
- package/dist/src/resources/technology-by-name-resource.js.map +1 -0
- package/dist/src/resources/todo-by-id-resource.d.ts +46 -0
- package/dist/src/resources/todo-by-id-resource.d.ts.map +1 -0
- package/dist/src/resources/todo-by-id-resource.js +192 -0
- package/dist/src/resources/todo-by-id-resource.js.map +1 -0
- package/dist/src/resources/todo-list-resource.d.ts +96 -0
- package/dist/src/resources/todo-list-resource.d.ts.map +1 -0
- package/dist/src/resources/todo-list-resource.js +209 -0
- package/dist/src/resources/todo-list-resource.js.map +1 -0
- package/dist/src/resources/validated-pattern-by-platform-resource.d.ts +14 -0
- package/dist/src/resources/validated-pattern-by-platform-resource.d.ts.map +1 -0
- package/dist/src/resources/validated-pattern-by-platform-resource.js +45 -0
- package/dist/src/resources/validated-pattern-by-platform-resource.js.map +1 -0
- package/dist/src/resources/validated-patterns-catalog-resource.d.ts +36 -0
- package/dist/src/resources/validated-patterns-catalog-resource.d.ts.map +1 -0
- package/dist/src/resources/validated-patterns-catalog-resource.js +57 -0
- package/dist/src/resources/validated-patterns-catalog-resource.js.map +1 -0
- package/dist/src/templates/domain-knowledge-templates.d.ts.map +1 -1
- package/dist/src/templates/domain-knowledge-templates.js +49 -49
- package/dist/src/templates/domain-knowledge-templates.js.map +1 -1
- package/dist/src/tools/adr-bootstrap-validation-tool.d.ts.map +1 -1
- package/dist/src/tools/adr-bootstrap-validation-tool.js +214 -4
- package/dist/src/tools/adr-bootstrap-validation-tool.js.map +1 -1
- package/dist/src/tools/adr-suggestion-tool.d.ts +2 -2
- package/dist/src/tools/adr-suggestion-tool.d.ts.map +1 -1
- package/dist/src/tools/adr-suggestion-tool.js +129 -12
- package/dist/src/tools/adr-suggestion-tool.js.map +1 -1
- package/dist/src/tools/adr-validation-tool.d.ts +98 -0
- package/dist/src/tools/adr-validation-tool.d.ts.map +1 -0
- package/dist/src/tools/adr-validation-tool.js +372 -0
- package/dist/src/tools/adr-validation-tool.js.map +1 -0
- package/dist/src/tools/bootstrap-validation-loop-tool.d.ts +262 -0
- package/dist/src/tools/bootstrap-validation-loop-tool.d.ts.map +1 -0
- package/dist/src/tools/bootstrap-validation-loop-tool.js +1934 -0
- package/dist/src/tools/bootstrap-validation-loop-tool.js.map +1 -0
- package/dist/src/tools/conversation-memory-tool.d.ts +48 -0
- package/dist/src/tools/conversation-memory-tool.d.ts.map +1 -0
- package/dist/src/tools/conversation-memory-tool.js +254 -0
- package/dist/src/tools/conversation-memory-tool.js.map +1 -0
- package/dist/src/tools/deployment-analysis-tool.d.ts.map +1 -1
- package/dist/src/tools/deployment-analysis-tool.js +82 -6
- package/dist/src/tools/deployment-analysis-tool.js.map +1 -1
- package/dist/src/tools/deployment-guidance-tool.d.ts.map +1 -1
- package/dist/src/tools/deployment-guidance-tool.js +126 -25
- package/dist/src/tools/deployment-guidance-tool.js.map +1 -1
- package/dist/src/tools/deployment-readiness-tool.d.ts.map +1 -1
- package/dist/src/tools/deployment-readiness-tool.js +166 -5
- package/dist/src/tools/deployment-readiness-tool.js.map +1 -1
- package/dist/src/tools/environment-analysis-tool.d.ts.map +1 -1
- package/dist/src/tools/environment-analysis-tool.js +36 -1
- package/dist/src/tools/environment-analysis-tool.js.map +1 -1
- package/dist/src/tools/expand-analysis-tool.d.ts +23 -0
- package/dist/src/tools/expand-analysis-tool.d.ts.map +1 -0
- package/dist/src/tools/expand-analysis-tool.js +107 -0
- package/dist/src/tools/expand-analysis-tool.js.map +1 -0
- package/dist/src/tools/get-server-context-tool.d.ts +67 -0
- package/dist/src/tools/get-server-context-tool.d.ts.map +1 -0
- package/dist/src/tools/get-server-context-tool.js +75 -0
- package/dist/src/tools/get-server-context-tool.js.map +1 -0
- package/dist/src/tools/interactive-adr-planning-tool.d.ts.map +1 -1
- package/dist/src/tools/interactive-adr-planning-tool.js +82 -9
- package/dist/src/tools/interactive-adr-planning-tool.js.map +1 -1
- package/dist/src/tools/llm-cloud-management-tool.d.ts +62 -0
- package/dist/src/tools/llm-cloud-management-tool.d.ts.map +1 -0
- package/dist/src/tools/llm-cloud-management-tool.js +202 -0
- package/dist/src/tools/llm-cloud-management-tool.js.map +1 -0
- package/dist/src/tools/llm-database-management-tool.d.ts +62 -0
- package/dist/src/tools/llm-database-management-tool.d.ts.map +1 -0
- package/dist/src/tools/llm-database-management-tool.js +203 -0
- package/dist/src/tools/llm-database-management-tool.js.map +1 -0
- package/dist/src/tools/llm-web-search-tool.d.ts +59 -0
- package/dist/src/tools/llm-web-search-tool.d.ts.map +1 -0
- package/dist/src/tools/llm-web-search-tool.js +165 -0
- package/dist/src/tools/llm-web-search-tool.js.map +1 -0
- package/dist/src/tools/mcp-planning-tool.d.ts.map +1 -1
- package/dist/src/tools/mcp-planning-tool.js +10 -3
- package/dist/src/tools/mcp-planning-tool.js.map +1 -1
- package/dist/src/tools/memory-loading-tool.d.ts.map +1 -1
- package/dist/src/tools/memory-loading-tool.js +4 -2
- package/dist/src/tools/memory-loading-tool.js.map +1 -1
- package/dist/src/tools/perform-research-tool.d.ts +61 -0
- package/dist/src/tools/perform-research-tool.d.ts.map +1 -0
- package/dist/src/tools/perform-research-tool.js +324 -0
- package/dist/src/tools/perform-research-tool.js.map +1 -0
- package/dist/src/tools/research-question-tool.d.ts.map +1 -1
- package/dist/src/tools/research-question-tool.js +11 -9
- package/dist/src/tools/research-question-tool.js.map +1 -1
- package/dist/src/tools/review-existing-adrs-tool.d.ts.map +1 -1
- package/dist/src/tools/review-existing-adrs-tool.js +42 -3
- package/dist/src/tools/review-existing-adrs-tool.js.map +1 -1
- package/dist/src/tools/tool-chain-orchestrator.d.ts +15 -94
- package/dist/src/tools/tool-chain-orchestrator.d.ts.map +1 -1
- package/dist/src/tools/tool-chain-orchestrator.js +2 -2
- package/dist/src/tools/tool-chain-orchestrator.js.map +1 -1
- package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts +25 -120
- package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts.map +1 -1
- package/dist/src/tools/troubleshoot-guided-workflow-tool.js +91 -2
- package/dist/src/tools/troubleshoot-guided-workflow-tool.js.map +1 -1
- package/dist/src/types/ape-framework.d.ts +50 -283
- package/dist/src/types/ape-framework.d.ts.map +1 -1
- package/dist/src/types/conversation-context.d.ts.map +1 -1
- package/dist/src/types/conversation-context.js +12 -12
- package/dist/src/types/conversation-context.js.map +1 -1
- package/dist/src/types/conversation-memory.d.ts +184 -0
- package/dist/src/types/conversation-memory.d.ts.map +1 -0
- package/dist/src/types/conversation-memory.js +8 -0
- package/dist/src/types/conversation-memory.js.map +1 -0
- package/dist/src/types/index.d.ts +112 -339
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/knowledge-generation.d.ts +96 -401
- package/dist/src/types/knowledge-generation.d.ts.map +1 -1
- package/dist/src/types/knowledge-graph-schemas.d.ts +77 -715
- package/dist/src/types/knowledge-graph-schemas.d.ts.map +1 -1
- package/dist/src/types/knowledge-graph-schemas.js +8 -8
- package/dist/src/types/knowledge-graph-schemas.js.map +1 -1
- package/dist/src/types/memory-entities.d.ts +1230 -6164
- package/dist/src/types/memory-entities.d.ts.map +1 -1
- package/dist/src/types/memory-entities.js +8 -8
- package/dist/src/types/memory-entities.js.map +1 -1
- package/dist/src/types/reflexion-framework.d.ts +35 -264
- package/dist/src/types/reflexion-framework.d.ts.map +1 -1
- package/dist/src/types/reflexion-framework.js +1 -1
- package/dist/src/types/reflexion-framework.js.map +1 -1
- package/dist/src/types/state-reinforcement.d.ts +87 -0
- package/dist/src/types/state-reinforcement.d.ts.map +1 -0
- package/dist/src/types/state-reinforcement.js +5 -0
- package/dist/src/types/state-reinforcement.js.map +1 -0
- package/dist/src/types/tiered-response.d.ts +61 -0
- package/dist/src/types/tiered-response.d.ts.map +1 -0
- package/dist/src/types/tiered-response.js +8 -0
- package/dist/src/types/tiered-response.js.map +1 -0
- package/dist/src/types/tool-context.d.ts +50 -0
- package/dist/src/types/tool-context.d.ts.map +1 -0
- package/dist/src/types/tool-context.js +20 -0
- package/dist/src/types/tool-context.js.map +1 -0
- package/dist/src/utils/adr-action-analyzer.d.ts +23 -0
- package/dist/src/utils/adr-action-analyzer.d.ts.map +1 -0
- package/dist/src/utils/adr-action-analyzer.js +323 -0
- package/dist/src/utils/adr-action-analyzer.js.map +1 -0
- package/dist/src/utils/adr-context-detector.d.ts +33 -0
- package/dist/src/utils/adr-context-detector.d.ts.map +1 -0
- package/dist/src/utils/adr-context-detector.js +279 -0
- package/dist/src/utils/adr-context-detector.js.map +1 -0
- package/dist/src/utils/adr-discovery.d.ts +28 -2
- package/dist/src/utils/adr-discovery.d.ts.map +1 -1
- package/dist/src/utils/adr-discovery.js +91 -7
- package/dist/src/utils/adr-discovery.js.map +1 -1
- package/dist/src/utils/adr-knowledge-initializer.d.ts +54 -0
- package/dist/src/utils/adr-knowledge-initializer.d.ts.map +1 -0
- package/dist/src/utils/adr-knowledge-initializer.js +240 -0
- package/dist/src/utils/adr-knowledge-initializer.js.map +1 -0
- package/dist/src/utils/adr-timeline-extractor.d.ts +21 -0
- package/dist/src/utils/adr-timeline-extractor.d.ts.map +1 -0
- package/dist/src/utils/adr-timeline-extractor.js +294 -0
- package/dist/src/utils/adr-timeline-extractor.js.map +1 -0
- package/dist/src/utils/adr-timeline-types.d.ts +234 -0
- package/dist/src/utils/adr-timeline-types.d.ts.map +1 -0
- package/dist/src/utils/adr-timeline-types.js +7 -0
- package/dist/src/utils/adr-timeline-types.js.map +1 -0
- package/dist/src/utils/ai-executor.d.ts +36 -0
- package/dist/src/utils/ai-executor.d.ts.map +1 -1
- package/dist/src/utils/ai-executor.js +39 -3
- package/dist/src/utils/ai-executor.js.map +1 -1
- package/dist/src/utils/apply-cot-enhancement.d.ts.map +1 -1
- package/dist/src/utils/apply-cot-enhancement.js +15 -15
- package/dist/src/utils/apply-cot-enhancement.js.map +1 -1
- package/dist/src/utils/automatic-prompt-engineering.d.ts.map +1 -1
- package/dist/src/utils/automatic-prompt-engineering.js +68 -58
- package/dist/src/utils/automatic-prompt-engineering.js.map +1 -1
- package/dist/src/utils/conditional-request.d.ts +105 -0
- package/dist/src/utils/conditional-request.d.ts.map +1 -0
- package/dist/src/utils/conditional-request.js +186 -0
- package/dist/src/utils/conditional-request.js.map +1 -0
- package/dist/src/utils/config.d.ts +72 -18
- package/dist/src/utils/config.d.ts.map +1 -1
- package/dist/src/utils/config.js +75 -0
- package/dist/src/utils/config.js.map +1 -1
- package/dist/src/utils/context-document-manager.d.ts +112 -0
- package/dist/src/utils/context-document-manager.d.ts.map +1 -0
- package/dist/src/utils/context-document-manager.js +351 -0
- package/dist/src/utils/context-document-manager.js.map +1 -0
- package/dist/src/utils/conversation-memory-manager.d.ts +86 -0
- package/dist/src/utils/conversation-memory-manager.d.ts.map +1 -0
- package/dist/src/utils/conversation-memory-manager.js +443 -0
- package/dist/src/utils/conversation-memory-manager.js.map +1 -0
- package/dist/src/utils/dag-executor.d.ts +106 -0
- package/dist/src/utils/dag-executor.d.ts.map +1 -0
- package/dist/src/utils/dag-executor.js +453 -0
- package/dist/src/utils/dag-executor.js.map +1 -0
- package/dist/src/utils/deployment-analysis.d.ts.map +1 -1
- package/dist/src/utils/deployment-analysis.js +17 -9
- package/dist/src/utils/deployment-analysis.js.map +1 -1
- package/dist/src/utils/deployment-type-registry.d.ts +52 -0
- package/dist/src/utils/deployment-type-registry.d.ts.map +1 -0
- package/dist/src/utils/deployment-type-registry.js +543 -0
- package/dist/src/utils/deployment-type-registry.js.map +1 -0
- package/dist/src/utils/dynamic-deployment-intelligence.d.ts +117 -0
- package/dist/src/utils/dynamic-deployment-intelligence.d.ts.map +1 -0
- package/dist/src/utils/dynamic-deployment-intelligence.js +445 -0
- package/dist/src/utils/dynamic-deployment-intelligence.js.map +1 -0
- package/dist/src/utils/environment-analysis.d.ts.map +1 -1
- package/dist/src/utils/environment-analysis.js +63 -44
- package/dist/src/utils/environment-analysis.js.map +1 -1
- package/dist/src/utils/environment-capability-registry.d.ts +101 -0
- package/dist/src/utils/environment-capability-registry.d.ts.map +1 -0
- package/dist/src/utils/environment-capability-registry.js +489 -0
- package/dist/src/utils/environment-capability-registry.js.map +1 -0
- package/dist/src/utils/index.d.ts +3 -3
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/index.js +3 -3
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/utils/knowledge-generation.d.ts.map +1 -1
- package/dist/src/utils/knowledge-generation.js +61 -35
- package/dist/src/utils/knowledge-generation.js.map +1 -1
- package/dist/src/utils/knowledge-graph-manager.d.ts +19 -0
- package/dist/src/utils/knowledge-graph-manager.d.ts.map +1 -1
- package/dist/src/utils/knowledge-graph-manager.js +165 -1
- package/dist/src/utils/knowledge-graph-manager.js.map +1 -1
- package/dist/src/utils/llm-artifact-detector.d.ts.map +1 -1
- package/dist/src/utils/llm-artifact-detector.js +28 -24
- package/dist/src/utils/llm-artifact-detector.js.map +1 -1
- package/dist/src/utils/mermaid-diagrams.d.ts +101 -0
- package/dist/src/utils/mermaid-diagrams.d.ts.map +1 -0
- package/dist/src/utils/mermaid-diagrams.js +445 -0
- package/dist/src/utils/mermaid-diagrams.js.map +1 -0
- package/dist/src/utils/monitoring.d.ts +249 -0
- package/dist/src/utils/monitoring.d.ts.map +1 -0
- package/dist/src/utils/monitoring.js +513 -0
- package/dist/src/utils/monitoring.js.map +1 -0
- package/dist/src/utils/pattern-contribution-helper.d.ts +60 -0
- package/dist/src/utils/pattern-contribution-helper.d.ts.map +1 -0
- package/dist/src/utils/pattern-contribution-helper.js +308 -0
- package/dist/src/utils/pattern-contribution-helper.js.map +1 -0
- package/dist/src/utils/pattern-loader.d.ts +183 -0
- package/dist/src/utils/pattern-loader.d.ts.map +1 -0
- package/dist/src/utils/pattern-loader.js +200 -0
- package/dist/src/utils/pattern-loader.js.map +1 -0
- package/dist/src/utils/pattern-research-utility.d.ts +107 -0
- package/dist/src/utils/pattern-research-utility.d.ts.map +1 -0
- package/dist/src/utils/pattern-research-utility.js +360 -0
- package/dist/src/utils/pattern-research-utility.js.map +1 -0
- package/dist/src/utils/pattern-to-dag-converter.d.ts +62 -0
- package/dist/src/utils/pattern-to-dag-converter.d.ts.map +1 -0
- package/dist/src/utils/pattern-to-dag-converter.js +265 -0
- package/dist/src/utils/pattern-to-dag-converter.js.map +1 -0
- package/dist/src/utils/platform-detector.d.ts +86 -0
- package/dist/src/utils/platform-detector.d.ts.map +1 -0
- package/dist/src/utils/platform-detector.js +509 -0
- package/dist/src/utils/platform-detector.js.map +1 -0
- package/dist/src/utils/prompt-composition.d.ts.map +1 -1
- package/dist/src/utils/prompt-composition.js +1 -4
- package/dist/src/utils/prompt-composition.js.map +1 -1
- package/dist/src/utils/reflexion.d.ts.map +1 -1
- package/dist/src/utils/reflexion.js +51 -42
- package/dist/src/utils/reflexion.js.map +1 -1
- package/dist/src/utils/research-integration.d.ts.map +1 -1
- package/dist/src/utils/research-integration.js +8 -2
- package/dist/src/utils/research-integration.js.map +1 -1
- package/dist/src/utils/research-orchestrator.d.ts +209 -0
- package/dist/src/utils/research-orchestrator.d.ts.map +1 -0
- package/dist/src/utils/research-orchestrator.js +863 -0
- package/dist/src/utils/research-orchestrator.js.map +1 -0
- package/dist/src/utils/research-questions.d.ts.map +1 -1
- package/dist/src/utils/research-questions.js +4 -1
- package/dist/src/utils/research-questions.js.map +1 -1
- package/dist/src/utils/resource-extractor.d.ts +57 -0
- package/dist/src/utils/resource-extractor.d.ts.map +1 -0
- package/dist/src/utils/resource-extractor.js +323 -0
- package/dist/src/utils/resource-extractor.js.map +1 -0
- package/dist/src/utils/resource-versioning.d.ts +124 -0
- package/dist/src/utils/resource-versioning.d.ts.map +1 -0
- package/dist/src/utils/resource-versioning.js +272 -0
- package/dist/src/utils/resource-versioning.js.map +1 -0
- package/dist/src/utils/root-manager.d.ts +118 -0
- package/dist/src/utils/root-manager.d.ts.map +1 -0
- package/dist/src/utils/root-manager.js +154 -0
- package/dist/src/utils/root-manager.js.map +1 -0
- package/dist/src/utils/rule-generation.d.ts.map +1 -1
- package/dist/src/utils/rule-generation.js +4 -1
- package/dist/src/utils/rule-generation.js.map +1 -1
- package/dist/src/utils/server-context-generator.d.ts +47 -0
- package/dist/src/utils/server-context-generator.d.ts.map +1 -0
- package/dist/src/utils/server-context-generator.js +666 -0
- package/dist/src/utils/server-context-generator.js.map +1 -0
- package/dist/src/utils/state-reinforcement-manager.d.ts +60 -0
- package/dist/src/utils/state-reinforcement-manager.d.ts.map +1 -0
- package/dist/src/utils/state-reinforcement-manager.js +200 -0
- package/dist/src/utils/state-reinforcement-manager.js.map +1 -0
- package/dist/src/utils/system-card-manager.d.ts +194 -0
- package/dist/src/utils/system-card-manager.d.ts.map +1 -0
- package/dist/src/utils/system-card-manager.js +336 -0
- package/dist/src/utils/system-card-manager.js.map +1 -0
- package/dist/src/utils/tiered-response-manager.d.ts +40 -0
- package/dist/src/utils/tiered-response-manager.d.ts.map +1 -0
- package/dist/src/utils/tiered-response-manager.js +243 -0
- package/dist/src/utils/tiered-response-manager.js.map +1 -0
- package/dist/src/utils/tree-sitter-analyzer.d.ts.map +1 -1
- package/dist/src/utils/tree-sitter-analyzer.js +83 -11
- package/dist/src/utils/tree-sitter-analyzer.js.map +1 -1
- package/dist/src/utils/validated-pattern-definitions.d.ts +219 -0
- package/dist/src/utils/validated-pattern-definitions.d.ts.map +1 -0
- package/dist/src/utils/validated-pattern-definitions.js +1511 -0
- package/dist/src/utils/validated-pattern-definitions.js.map +1 -0
- package/package.json +22 -13
- package/dist/src/prompts/todo-prompts.d.ts +0 -49
- package/dist/src/prompts/todo-prompts.d.ts.map +0 -1
- package/dist/src/prompts/todo-prompts.js +0 -824
- package/dist/src/prompts/todo-prompts.js.map +0 -1
- package/dist/src/types/todo-json-schemas.d.ts +0 -17
- package/dist/src/types/todo-json-schemas.d.ts.map +0 -1
- package/dist/src/types/todo-json-schemas.js +0 -9
- package/dist/src/types/todo-json-schemas.js.map +0 -1
- package/dist/src/utils/todo-file-watcher.d.ts +0 -14
- package/dist/src/utils/todo-file-watcher.d.ts.map +0 -1
- package/dist/src/utils/todo-file-watcher.js +0 -25
- package/dist/src/utils/todo-file-watcher.js.map +0 -1
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource Versioning and Metadata Tracking
|
|
3
|
+
*
|
|
4
|
+
* Provides version control for MCP resources, enabling:
|
|
5
|
+
* - Semantic versioning (MAJOR.MINOR.PATCH)
|
|
6
|
+
* - Backward compatibility checking
|
|
7
|
+
* - Version migration support
|
|
8
|
+
* - Metadata tracking (creation, updates, changelog)
|
|
9
|
+
*/
|
|
10
|
+
import { URLSearchParams } from 'url';
|
|
11
|
+
/**
|
|
12
|
+
* Semantic version structure
|
|
13
|
+
*/
|
|
14
|
+
export interface SemanticVersion {
|
|
15
|
+
major: number;
|
|
16
|
+
minor: number;
|
|
17
|
+
patch: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Resource metadata for tracking changes
|
|
21
|
+
*/
|
|
22
|
+
export interface ResourceMetadata {
|
|
23
|
+
version: string;
|
|
24
|
+
createdAt: string;
|
|
25
|
+
updatedAt: string;
|
|
26
|
+
schemaVersion: string;
|
|
27
|
+
changelog?: ChangelogEntry[];
|
|
28
|
+
deprecationNotice?: DeprecationNotice;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Changelog entry for tracking changes
|
|
32
|
+
*/
|
|
33
|
+
export interface ChangelogEntry {
|
|
34
|
+
version: string;
|
|
35
|
+
date: string;
|
|
36
|
+
changes: string[];
|
|
37
|
+
breakingChanges?: string[];
|
|
38
|
+
author?: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Deprecation notice for resources
|
|
42
|
+
*/
|
|
43
|
+
export interface DeprecationNotice {
|
|
44
|
+
deprecatedIn: string;
|
|
45
|
+
removedIn?: string;
|
|
46
|
+
reason: string;
|
|
47
|
+
migration: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Version comparison result
|
|
51
|
+
*/
|
|
52
|
+
export declare enum VersionComparisonResult {
|
|
53
|
+
MAJOR_BREAKING = "major_breaking",
|
|
54
|
+
MINOR_COMPATIBLE = "minor_compatible",
|
|
55
|
+
PATCH_COMPATIBLE = "patch_compatible",
|
|
56
|
+
EQUAL = "equal",
|
|
57
|
+
OLDER = "older"
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Parse semantic version string to object
|
|
61
|
+
*/
|
|
62
|
+
export declare function parseVersion(versionString: string): SemanticVersion;
|
|
63
|
+
/**
|
|
64
|
+
* Convert semantic version object to string
|
|
65
|
+
*/
|
|
66
|
+
export declare function versionToString(version: SemanticVersion): string;
|
|
67
|
+
/**
|
|
68
|
+
* Compare two semantic versions
|
|
69
|
+
* @returns VersionComparisonResult indicating relationship
|
|
70
|
+
*/
|
|
71
|
+
export declare function compareVersions(current: string, requested: string): VersionComparisonResult;
|
|
72
|
+
/**
|
|
73
|
+
* Check if two versions are compatible (same major version)
|
|
74
|
+
*/
|
|
75
|
+
export declare function isCompatible(version1: string, version2: string): boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Increment version based on change type
|
|
78
|
+
*/
|
|
79
|
+
export declare function incrementVersion(current: string, changeType: 'major' | 'minor' | 'patch'): string;
|
|
80
|
+
/**
|
|
81
|
+
* Create initial resource metadata
|
|
82
|
+
*/
|
|
83
|
+
export declare function createResourceMetadata(version?: string): ResourceMetadata;
|
|
84
|
+
/**
|
|
85
|
+
* Update resource metadata with new version
|
|
86
|
+
*/
|
|
87
|
+
export declare function updateResourceMetadata(current: ResourceMetadata, newVersion: string, changes: string[], breakingChanges?: string[]): ResourceMetadata;
|
|
88
|
+
/**
|
|
89
|
+
* Mark resource as deprecated
|
|
90
|
+
*/
|
|
91
|
+
export declare function deprecateResource(metadata: ResourceMetadata, reason: string, migration: string, removedIn?: string): ResourceMetadata;
|
|
92
|
+
/**
|
|
93
|
+
* Check if resource is deprecated
|
|
94
|
+
*/
|
|
95
|
+
export declare function isDeprecated(metadata: ResourceMetadata): boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Extract version from URI search parameters
|
|
98
|
+
*/
|
|
99
|
+
export declare function extractVersionFromParams(searchParams?: URLSearchParams): string | null;
|
|
100
|
+
/**
|
|
101
|
+
* Validate requested version against available versions
|
|
102
|
+
*/
|
|
103
|
+
export declare function validateVersionRequest(requested: string | null, current: string, supportedVersions: string[]): {
|
|
104
|
+
valid: boolean;
|
|
105
|
+
version: string;
|
|
106
|
+
warning?: string;
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Generate version compatibility matrix
|
|
110
|
+
*/
|
|
111
|
+
export declare function generateCompatibilityMatrix(versions: string[]): Map<string, string[]>;
|
|
112
|
+
/**
|
|
113
|
+
* Get changelog for specific version range
|
|
114
|
+
*/
|
|
115
|
+
export declare function getChangelogForRange(metadata: ResourceMetadata, fromVersion: string, toVersion: string): ChangelogEntry[];
|
|
116
|
+
/**
|
|
117
|
+
* Extract breaking changes from changelog
|
|
118
|
+
*/
|
|
119
|
+
export declare function getBreakingChanges(metadata: ResourceMetadata): ChangelogEntry[];
|
|
120
|
+
/**
|
|
121
|
+
* Format metadata for display
|
|
122
|
+
*/
|
|
123
|
+
export declare function formatMetadata(metadata: ResourceMetadata): string;
|
|
124
|
+
//# sourceMappingURL=resource-versioning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-versioning.d.ts","sourceRoot":"","sources":["../../../src/utils/resource-versioning.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource Versioning and Metadata Tracking
|
|
3
|
+
*
|
|
4
|
+
* Provides version control for MCP resources, enabling:
|
|
5
|
+
* - Semantic versioning (MAJOR.MINOR.PATCH)
|
|
6
|
+
* - Backward compatibility checking
|
|
7
|
+
* - Version migration support
|
|
8
|
+
* - Metadata tracking (creation, updates, changelog)
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Version comparison result
|
|
12
|
+
*/
|
|
13
|
+
export var VersionComparisonResult;
|
|
14
|
+
(function (VersionComparisonResult) {
|
|
15
|
+
VersionComparisonResult["MAJOR_BREAKING"] = "major_breaking";
|
|
16
|
+
VersionComparisonResult["MINOR_COMPATIBLE"] = "minor_compatible";
|
|
17
|
+
VersionComparisonResult["PATCH_COMPATIBLE"] = "patch_compatible";
|
|
18
|
+
VersionComparisonResult["EQUAL"] = "equal";
|
|
19
|
+
VersionComparisonResult["OLDER"] = "older";
|
|
20
|
+
})(VersionComparisonResult || (VersionComparisonResult = {}));
|
|
21
|
+
/**
|
|
22
|
+
* Parse semantic version string to object
|
|
23
|
+
*/
|
|
24
|
+
export function parseVersion(versionString) {
|
|
25
|
+
const match = versionString.match(/^(\d+)\.(\d+)\.(\d+)$/);
|
|
26
|
+
if (!match) {
|
|
27
|
+
throw new Error(`Invalid semantic version: ${versionString}`);
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
major: parseInt(match[1], 10),
|
|
31
|
+
minor: parseInt(match[2], 10),
|
|
32
|
+
patch: parseInt(match[3], 10),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Convert semantic version object to string
|
|
37
|
+
*/
|
|
38
|
+
export function versionToString(version) {
|
|
39
|
+
return `${version.major}.${version.minor}.${version.patch}`;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Compare two semantic versions
|
|
43
|
+
* @returns VersionComparisonResult indicating relationship
|
|
44
|
+
*/
|
|
45
|
+
export function compareVersions(current, requested) {
|
|
46
|
+
const currentV = parseVersion(current);
|
|
47
|
+
const requestedV = parseVersion(requested);
|
|
48
|
+
// Equal versions
|
|
49
|
+
if (currentV.major === requestedV.major &&
|
|
50
|
+
currentV.minor === requestedV.minor &&
|
|
51
|
+
currentV.patch === requestedV.patch) {
|
|
52
|
+
return VersionComparisonResult.EQUAL;
|
|
53
|
+
}
|
|
54
|
+
// Current is older than requested
|
|
55
|
+
if (currentV.major < requestedV.major ||
|
|
56
|
+
(currentV.major === requestedV.major && currentV.minor < requestedV.minor) ||
|
|
57
|
+
(currentV.major === requestedV.major &&
|
|
58
|
+
currentV.minor === requestedV.minor &&
|
|
59
|
+
currentV.patch < requestedV.patch)) {
|
|
60
|
+
return VersionComparisonResult.OLDER;
|
|
61
|
+
}
|
|
62
|
+
// Current is newer - check compatibility
|
|
63
|
+
if (currentV.major > requestedV.major) {
|
|
64
|
+
return VersionComparisonResult.MAJOR_BREAKING;
|
|
65
|
+
}
|
|
66
|
+
if (currentV.minor > requestedV.minor) {
|
|
67
|
+
return VersionComparisonResult.MINOR_COMPATIBLE;
|
|
68
|
+
}
|
|
69
|
+
return VersionComparisonResult.PATCH_COMPATIBLE;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Check if two versions are compatible (same major version)
|
|
73
|
+
*/
|
|
74
|
+
export function isCompatible(version1, version2) {
|
|
75
|
+
const v1 = parseVersion(version1);
|
|
76
|
+
const v2 = parseVersion(version2);
|
|
77
|
+
return v1.major === v2.major;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Increment version based on change type
|
|
81
|
+
*/
|
|
82
|
+
export function incrementVersion(current, changeType) {
|
|
83
|
+
const version = parseVersion(current);
|
|
84
|
+
switch (changeType) {
|
|
85
|
+
case 'major':
|
|
86
|
+
return versionToString({ major: version.major + 1, minor: 0, patch: 0 });
|
|
87
|
+
case 'minor':
|
|
88
|
+
return versionToString({ major: version.major, minor: version.minor + 1, patch: 0 });
|
|
89
|
+
case 'patch':
|
|
90
|
+
return versionToString({ major: version.major, minor: version.minor, patch: version.patch + 1 });
|
|
91
|
+
default:
|
|
92
|
+
throw new Error(`Invalid change type: ${changeType}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Create initial resource metadata
|
|
97
|
+
*/
|
|
98
|
+
export function createResourceMetadata(version = '1.0.0') {
|
|
99
|
+
const now = new Date().toISOString();
|
|
100
|
+
return {
|
|
101
|
+
version,
|
|
102
|
+
createdAt: now,
|
|
103
|
+
updatedAt: now,
|
|
104
|
+
schemaVersion: version,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Update resource metadata with new version
|
|
109
|
+
*/
|
|
110
|
+
export function updateResourceMetadata(current, newVersion, changes, breakingChanges) {
|
|
111
|
+
const now = new Date().toISOString();
|
|
112
|
+
const changelogEntry = {
|
|
113
|
+
version: newVersion,
|
|
114
|
+
date: now,
|
|
115
|
+
changes,
|
|
116
|
+
};
|
|
117
|
+
// Only add breakingChanges if provided
|
|
118
|
+
if (breakingChanges) {
|
|
119
|
+
changelogEntry.breakingChanges = breakingChanges;
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
...current,
|
|
123
|
+
version: newVersion,
|
|
124
|
+
updatedAt: now,
|
|
125
|
+
changelog: [...(current.changelog || []), changelogEntry],
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Mark resource as deprecated
|
|
130
|
+
*/
|
|
131
|
+
export function deprecateResource(metadata, reason, migration, removedIn) {
|
|
132
|
+
const deprecationNotice = {
|
|
133
|
+
deprecatedIn: metadata.version,
|
|
134
|
+
reason,
|
|
135
|
+
migration,
|
|
136
|
+
};
|
|
137
|
+
// Only add removedIn if provided
|
|
138
|
+
if (removedIn) {
|
|
139
|
+
deprecationNotice.removedIn = removedIn;
|
|
140
|
+
}
|
|
141
|
+
return {
|
|
142
|
+
...metadata,
|
|
143
|
+
deprecationNotice,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Check if resource is deprecated
|
|
148
|
+
*/
|
|
149
|
+
export function isDeprecated(metadata) {
|
|
150
|
+
return metadata.deprecationNotice !== undefined;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Extract version from URI search parameters
|
|
154
|
+
*/
|
|
155
|
+
export function extractVersionFromParams(searchParams) {
|
|
156
|
+
if (!searchParams) {
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
return searchParams.get('version');
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Validate requested version against available versions
|
|
163
|
+
*/
|
|
164
|
+
export function validateVersionRequest(requested, current, supportedVersions) {
|
|
165
|
+
// No version requested - use current
|
|
166
|
+
if (!requested) {
|
|
167
|
+
return { valid: true, version: current };
|
|
168
|
+
}
|
|
169
|
+
// Check if requested version is supported
|
|
170
|
+
if (!supportedVersions.includes(requested)) {
|
|
171
|
+
return {
|
|
172
|
+
valid: false,
|
|
173
|
+
version: current,
|
|
174
|
+
warning: `Version ${requested} not supported. Using current version ${current}. Supported: ${supportedVersions.join(', ')}`,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
// Check compatibility
|
|
178
|
+
const comparison = compareVersions(current, requested);
|
|
179
|
+
if (comparison === VersionComparisonResult.MAJOR_BREAKING) {
|
|
180
|
+
return {
|
|
181
|
+
valid: true,
|
|
182
|
+
version: requested,
|
|
183
|
+
warning: `Warning: Version ${requested} has breaking changes from current ${current}`,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
return { valid: true, version: requested };
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Generate version compatibility matrix
|
|
190
|
+
*/
|
|
191
|
+
export function generateCompatibilityMatrix(versions) {
|
|
192
|
+
const matrix = new Map();
|
|
193
|
+
for (const version of versions) {
|
|
194
|
+
const compatible = versions.filter((v) => isCompatible(version, v));
|
|
195
|
+
matrix.set(version, compatible);
|
|
196
|
+
}
|
|
197
|
+
return matrix;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Get changelog for specific version range
|
|
201
|
+
*/
|
|
202
|
+
export function getChangelogForRange(metadata, fromVersion, toVersion) {
|
|
203
|
+
if (!metadata.changelog) {
|
|
204
|
+
return [];
|
|
205
|
+
}
|
|
206
|
+
const from = parseVersion(fromVersion);
|
|
207
|
+
const to = parseVersion(toVersion);
|
|
208
|
+
return metadata.changelog.filter((entry) => {
|
|
209
|
+
const entryVersion = parseVersion(entry.version);
|
|
210
|
+
// Version is within range (exclusive of fromVersion, inclusive of toVersion)
|
|
211
|
+
const isAfterFrom = entryVersion.major > from.major ||
|
|
212
|
+
(entryVersion.major === from.major && entryVersion.minor > from.minor) ||
|
|
213
|
+
(entryVersion.major === from.major &&
|
|
214
|
+
entryVersion.minor === from.minor &&
|
|
215
|
+
entryVersion.patch > from.patch);
|
|
216
|
+
const isBeforeOrEqualTo = entryVersion.major < to.major ||
|
|
217
|
+
(entryVersion.major === to.major && entryVersion.minor < to.minor) ||
|
|
218
|
+
(entryVersion.major === to.major &&
|
|
219
|
+
entryVersion.minor === to.minor &&
|
|
220
|
+
entryVersion.patch <= to.patch);
|
|
221
|
+
return isAfterFrom && isBeforeOrEqualTo;
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Extract breaking changes from changelog
|
|
226
|
+
*/
|
|
227
|
+
export function getBreakingChanges(metadata) {
|
|
228
|
+
if (!metadata.changelog) {
|
|
229
|
+
return [];
|
|
230
|
+
}
|
|
231
|
+
return metadata.changelog.filter((entry) => entry.breakingChanges && entry.breakingChanges.length > 0);
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Format metadata for display
|
|
235
|
+
*/
|
|
236
|
+
export function formatMetadata(metadata) {
|
|
237
|
+
const lines = [
|
|
238
|
+
`Version: ${metadata.version}`,
|
|
239
|
+
`Schema: ${metadata.schemaVersion}`,
|
|
240
|
+
`Created: ${metadata.createdAt}`,
|
|
241
|
+
`Updated: ${metadata.updatedAt}`,
|
|
242
|
+
];
|
|
243
|
+
if (metadata.deprecationNotice) {
|
|
244
|
+
lines.push('');
|
|
245
|
+
lines.push('⚠️ DEPRECATED');
|
|
246
|
+
lines.push(`Deprecated in: ${metadata.deprecationNotice.deprecatedIn}`);
|
|
247
|
+
if (metadata.deprecationNotice.removedIn) {
|
|
248
|
+
lines.push(`Will be removed in: ${metadata.deprecationNotice.removedIn}`);
|
|
249
|
+
}
|
|
250
|
+
lines.push(`Reason: ${metadata.deprecationNotice.reason}`);
|
|
251
|
+
lines.push(`Migration: ${metadata.deprecationNotice.migration}`);
|
|
252
|
+
}
|
|
253
|
+
if (metadata.changelog && metadata.changelog.length > 0) {
|
|
254
|
+
lines.push('');
|
|
255
|
+
lines.push('Recent Changes:');
|
|
256
|
+
const recentChanges = metadata.changelog.slice(-3).reverse();
|
|
257
|
+
for (const entry of recentChanges) {
|
|
258
|
+
lines.push(` v${entry.version} (${entry.date})`);
|
|
259
|
+
for (const change of entry.changes) {
|
|
260
|
+
lines.push(` - ${change}`);
|
|
261
|
+
}
|
|
262
|
+
if (entry.breakingChanges && entry.breakingChanges.length > 0) {
|
|
263
|
+
lines.push(' ⚠️ Breaking Changes:');
|
|
264
|
+
for (const breaking of entry.breakingChanges) {
|
|
265
|
+
lines.push(` - ${breaking}`);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return lines.join('\n');
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=resource-versioning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-versioning.js","sourceRoot":"","sources":["../../../src/utils/resource-versioning.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Root Manager for MCP File Access Control
|
|
3
|
+
*
|
|
4
|
+
* Implements MCP best practices for file system access control using "roots".
|
|
5
|
+
* Roots are predefined directories that the server is allowed to access,
|
|
6
|
+
* providing both security and autonomous file discovery for Claude.
|
|
7
|
+
*
|
|
8
|
+
* @see https://modelcontextprotocol.io/docs/concepts/roots
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* A root is a directory that the MCP server is allowed to access
|
|
12
|
+
*/
|
|
13
|
+
export interface Root {
|
|
14
|
+
/** Unique identifier for the root */
|
|
15
|
+
name: string;
|
|
16
|
+
/** Absolute path to the root directory */
|
|
17
|
+
path: string;
|
|
18
|
+
/** Human-readable description of what this root contains */
|
|
19
|
+
description: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Manages file system roots for MCP server access control
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* const rootManager = new RootManager('/path/to/project', '/path/to/project/docs/adrs');
|
|
27
|
+
*
|
|
28
|
+
* // Check if path is allowed
|
|
29
|
+
* if (rootManager.isPathAllowed('/path/to/project/src/index.ts')) {
|
|
30
|
+
* // Access granted
|
|
31
|
+
* }
|
|
32
|
+
*
|
|
33
|
+
* // List all roots for Claude
|
|
34
|
+
* const roots = rootManager.listRoots();
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare class RootManager {
|
|
38
|
+
private roots;
|
|
39
|
+
/**
|
|
40
|
+
* Initialize root manager with project and ADR paths
|
|
41
|
+
*
|
|
42
|
+
* @param projectPath - Path to the project root directory
|
|
43
|
+
* @param adrDirectory - Path to the ADR directory
|
|
44
|
+
*/
|
|
45
|
+
constructor(projectPath: string, adrDirectory: string);
|
|
46
|
+
/**
|
|
47
|
+
* Check if a path is within accessible roots
|
|
48
|
+
*
|
|
49
|
+
* @param targetPath - Path to check (can be relative or absolute)
|
|
50
|
+
* @returns true if path is within any root, false otherwise
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* if (!rootManager.isPathAllowed(userPath)) {
|
|
55
|
+
* throw new Error('Access denied: Path is outside accessible roots');
|
|
56
|
+
* }
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
isPathAllowed(targetPath: string): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* List all accessible roots
|
|
62
|
+
*
|
|
63
|
+
* @returns Array of root definitions
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* const roots = rootManager.listRoots();
|
|
68
|
+
* roots.forEach(root => {
|
|
69
|
+
* console.log(`${root.name}: ${root.path}`);
|
|
70
|
+
* });
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
listRoots(): Root[];
|
|
74
|
+
/**
|
|
75
|
+
* Get which root a path belongs to
|
|
76
|
+
*
|
|
77
|
+
* @param targetPath - Path to check
|
|
78
|
+
* @returns Root that contains this path, or null if outside all roots
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```typescript
|
|
82
|
+
* const root = rootManager.getRootForPath('/path/to/project/src/index.ts');
|
|
83
|
+
* if (root) {
|
|
84
|
+
* console.log(`File is in ${root.name} root`);
|
|
85
|
+
* }
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
getRootForPath(targetPath: string): Root | null;
|
|
89
|
+
/**
|
|
90
|
+
* Get the relative path from root
|
|
91
|
+
*
|
|
92
|
+
* @param targetPath - Path to get relative path for
|
|
93
|
+
* @returns Relative path from root, or null if outside all roots
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```typescript
|
|
97
|
+
* const relPath = rootManager.getRelativePathFromRoot('/path/to/project/src/index.ts');
|
|
98
|
+
* // Returns: 'src/index.ts'
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
getRelativePathFromRoot(targetPath: string): string | null;
|
|
102
|
+
/**
|
|
103
|
+
* Add a custom root (useful for testing or dynamic root management)
|
|
104
|
+
*
|
|
105
|
+
* @param name - Unique identifier for the root
|
|
106
|
+
* @param path - Absolute path to the root directory
|
|
107
|
+
* @param description - Human-readable description
|
|
108
|
+
*/
|
|
109
|
+
addRoot(name: string, path: string, description: string): void;
|
|
110
|
+
/**
|
|
111
|
+
* Remove a root by name
|
|
112
|
+
*
|
|
113
|
+
* @param name - Name of the root to remove
|
|
114
|
+
* @returns true if root was removed, false if not found
|
|
115
|
+
*/
|
|
116
|
+
removeRoot(name: string): boolean;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=root-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"root-manager.d.ts","sourceRoot":"","sources":["../../../src/utils/root-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAgC;IAE7C;;;;;OAKG;gBACS,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAiBrD;;;;;;;;;;;;OAYG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAU1C;;;;;;;;;;;;OAYG;IACH,SAAS,IAAI,IAAI,EAAE;IAInB;;;;;;;;;;;;;OAaG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAU/C;;;;;;;;;;;OAWG;IACH,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQ1D;;;;;;OAMG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAQ9D;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAGlC"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Root Manager for MCP File Access Control
|
|
3
|
+
*
|
|
4
|
+
* Implements MCP best practices for file system access control using "roots".
|
|
5
|
+
* Roots are predefined directories that the server is allowed to access,
|
|
6
|
+
* providing both security and autonomous file discovery for Claude.
|
|
7
|
+
*
|
|
8
|
+
* @see https://modelcontextprotocol.io/docs/concepts/roots
|
|
9
|
+
*/
|
|
10
|
+
import { resolve, relative } from 'path';
|
|
11
|
+
/**
|
|
12
|
+
* Manages file system roots for MCP server access control
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const rootManager = new RootManager('/path/to/project', '/path/to/project/docs/adrs');
|
|
17
|
+
*
|
|
18
|
+
* // Check if path is allowed
|
|
19
|
+
* if (rootManager.isPathAllowed('/path/to/project/src/index.ts')) {
|
|
20
|
+
* // Access granted
|
|
21
|
+
* }
|
|
22
|
+
*
|
|
23
|
+
* // List all roots for Claude
|
|
24
|
+
* const roots = rootManager.listRoots();
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export class RootManager {
|
|
28
|
+
roots = new Map();
|
|
29
|
+
/**
|
|
30
|
+
* Initialize root manager with project and ADR paths
|
|
31
|
+
*
|
|
32
|
+
* @param projectPath - Path to the project root directory
|
|
33
|
+
* @param adrDirectory - Path to the ADR directory
|
|
34
|
+
*/
|
|
35
|
+
constructor(projectPath, adrDirectory) {
|
|
36
|
+
// Root 1: Project directory (entire codebase)
|
|
37
|
+
this.roots.set('project', {
|
|
38
|
+
name: 'project',
|
|
39
|
+
path: resolve(projectPath),
|
|
40
|
+
description: 'Project source code, configuration, and documentation',
|
|
41
|
+
});
|
|
42
|
+
// Root 2: ADR directory (may be inside project, but worth explicit access)
|
|
43
|
+
const resolvedAdrPath = resolve(adrDirectory);
|
|
44
|
+
this.roots.set('adrs', {
|
|
45
|
+
name: 'adrs',
|
|
46
|
+
path: resolvedAdrPath,
|
|
47
|
+
description: 'Architectural Decision Records',
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Check if a path is within accessible roots
|
|
52
|
+
*
|
|
53
|
+
* @param targetPath - Path to check (can be relative or absolute)
|
|
54
|
+
* @returns true if path is within any root, false otherwise
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```typescript
|
|
58
|
+
* if (!rootManager.isPathAllowed(userPath)) {
|
|
59
|
+
* throw new Error('Access denied: Path is outside accessible roots');
|
|
60
|
+
* }
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
isPathAllowed(targetPath) {
|
|
64
|
+
const resolved = resolve(targetPath);
|
|
65
|
+
for (const root of this.roots.values()) {
|
|
66
|
+
if (resolved.startsWith(root.path)) {
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* List all accessible roots
|
|
74
|
+
*
|
|
75
|
+
* @returns Array of root definitions
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```typescript
|
|
79
|
+
* const roots = rootManager.listRoots();
|
|
80
|
+
* roots.forEach(root => {
|
|
81
|
+
* console.log(`${root.name}: ${root.path}`);
|
|
82
|
+
* });
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
listRoots() {
|
|
86
|
+
return Array.from(this.roots.values());
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get which root a path belongs to
|
|
90
|
+
*
|
|
91
|
+
* @param targetPath - Path to check
|
|
92
|
+
* @returns Root that contains this path, or null if outside all roots
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* const root = rootManager.getRootForPath('/path/to/project/src/index.ts');
|
|
97
|
+
* if (root) {
|
|
98
|
+
* console.log(`File is in ${root.name} root`);
|
|
99
|
+
* }
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
getRootForPath(targetPath) {
|
|
103
|
+
const resolved = resolve(targetPath);
|
|
104
|
+
for (const root of this.roots.values()) {
|
|
105
|
+
if (resolved.startsWith(root.path)) {
|
|
106
|
+
return root;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get the relative path from root
|
|
113
|
+
*
|
|
114
|
+
* @param targetPath - Path to get relative path for
|
|
115
|
+
* @returns Relative path from root, or null if outside all roots
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```typescript
|
|
119
|
+
* const relPath = rootManager.getRelativePathFromRoot('/path/to/project/src/index.ts');
|
|
120
|
+
* // Returns: 'src/index.ts'
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
getRelativePathFromRoot(targetPath) {
|
|
124
|
+
const root = this.getRootForPath(targetPath);
|
|
125
|
+
if (!root) {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
return relative(root.path, resolve(targetPath));
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Add a custom root (useful for testing or dynamic root management)
|
|
132
|
+
*
|
|
133
|
+
* @param name - Unique identifier for the root
|
|
134
|
+
* @param path - Absolute path to the root directory
|
|
135
|
+
* @param description - Human-readable description
|
|
136
|
+
*/
|
|
137
|
+
addRoot(name, path, description) {
|
|
138
|
+
this.roots.set(name, {
|
|
139
|
+
name,
|
|
140
|
+
path: resolve(path),
|
|
141
|
+
description,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Remove a root by name
|
|
146
|
+
*
|
|
147
|
+
* @param name - Name of the root to remove
|
|
148
|
+
* @returns true if root was removed, false if not found
|
|
149
|
+
*/
|
|
150
|
+
removeRoot(name) {
|
|
151
|
+
return this.roots.delete(name);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=root-manager.js.map
|