mcp-adr-analysis-server 2.1.9 → 2.1.19
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 +420 -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 +21 -12
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"todo-by-id-resource.d.ts","sourceRoot":"","sources":["../../../src/resources/todo-by-id-resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAKtC,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAItD,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAClD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,KAAK,CAAC;QAClB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,SAAS,EAAE,KAAK,CAAC;QACf,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,KAAK,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACJ;AAmKD;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,aAAa,EAAE,eAAe,GAC7B,OAAO,CAAC,wBAAwB,CAAC,CAyDnC"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Todo by Task ID Resource - Individual task details
|
|
3
|
+
* URI Pattern: adr://todo/{task_id}
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from 'fs/promises';
|
|
6
|
+
import * as path from 'path';
|
|
7
|
+
import { McpAdrError } from '../types/index.js';
|
|
8
|
+
import { resourceCache, generateETag } from './resource-cache.js';
|
|
9
|
+
import { resourceRouter } from './resource-router.js';
|
|
10
|
+
/**
|
|
11
|
+
* Parse TODO.md markdown file into structured task data
|
|
12
|
+
*/
|
|
13
|
+
function parseTodoMarkdown(content) {
|
|
14
|
+
const todos = [];
|
|
15
|
+
const lines = content.split('\n');
|
|
16
|
+
let currentTask = null;
|
|
17
|
+
let taskCounter = 0;
|
|
18
|
+
for (const line of lines) {
|
|
19
|
+
const trimmed = line.trim();
|
|
20
|
+
// Parse task line: ## Task Title
|
|
21
|
+
if (trimmed.startsWith('## ')) {
|
|
22
|
+
if (currentTask) {
|
|
23
|
+
todos.push(currentTask);
|
|
24
|
+
}
|
|
25
|
+
const title = trimmed.substring(3).trim();
|
|
26
|
+
taskCounter++;
|
|
27
|
+
currentTask = {
|
|
28
|
+
id: `task-${taskCounter}`,
|
|
29
|
+
title,
|
|
30
|
+
status: 'pending',
|
|
31
|
+
};
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
// Parse status
|
|
35
|
+
if (trimmed.startsWith('**Status:**') && currentTask) {
|
|
36
|
+
const status = trimmed.substring(11).trim().toLowerCase();
|
|
37
|
+
if (status.includes('progress')) {
|
|
38
|
+
currentTask.status = 'in_progress';
|
|
39
|
+
}
|
|
40
|
+
else if (status.includes('completed')) {
|
|
41
|
+
currentTask.status = 'completed';
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
currentTask.status = 'pending';
|
|
45
|
+
}
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
// Parse priority
|
|
49
|
+
if (trimmed.startsWith('**Priority:**') && currentTask) {
|
|
50
|
+
const priority = trimmed.substring(13).trim().toLowerCase();
|
|
51
|
+
if (priority.includes('critical')) {
|
|
52
|
+
currentTask.priority = 'critical';
|
|
53
|
+
}
|
|
54
|
+
else if (priority.includes('high')) {
|
|
55
|
+
currentTask.priority = 'high';
|
|
56
|
+
}
|
|
57
|
+
else if (priority.includes('low')) {
|
|
58
|
+
currentTask.priority = 'low';
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
currentTask.priority = 'medium';
|
|
62
|
+
}
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
// Parse description (plain text lines)
|
|
66
|
+
if (currentTask &&
|
|
67
|
+
!trimmed.startsWith('**') &&
|
|
68
|
+
!trimmed.startsWith('#') &&
|
|
69
|
+
trimmed.length > 0) {
|
|
70
|
+
currentTask.description = (currentTask.description || '') + '\n' + trimmed;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Add last task
|
|
74
|
+
if (currentTask) {
|
|
75
|
+
todos.push(currentTask);
|
|
76
|
+
}
|
|
77
|
+
return todos;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Resolve task dependencies with full details
|
|
81
|
+
*/
|
|
82
|
+
async function resolveDependencies(task, allTasks) {
|
|
83
|
+
if (!task.dependencies || task.dependencies.length === 0) {
|
|
84
|
+
return [];
|
|
85
|
+
}
|
|
86
|
+
return task.dependencies
|
|
87
|
+
.map(depId => {
|
|
88
|
+
const dep = allTasks.find(t => t.id === depId);
|
|
89
|
+
return dep ? { id: dep.id, title: dep.title, status: dep.status } : null;
|
|
90
|
+
})
|
|
91
|
+
.filter(dep => dep !== null);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Find tasks that are blocking this task
|
|
95
|
+
*/
|
|
96
|
+
async function findBlockingTasks(task, allTasks) {
|
|
97
|
+
const blocking = [];
|
|
98
|
+
if (!task.dependencies || task.dependencies.length === 0) {
|
|
99
|
+
return blocking;
|
|
100
|
+
}
|
|
101
|
+
for (const depId of task.dependencies) {
|
|
102
|
+
const dep = allTasks.find(t => t.id === depId);
|
|
103
|
+
if (dep && dep.status !== 'completed') {
|
|
104
|
+
blocking.push({
|
|
105
|
+
id: dep.id,
|
|
106
|
+
title: dep.title,
|
|
107
|
+
reason: `Dependency not completed (status: ${dep.status})`,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return blocking;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Find ADRs related to this task
|
|
115
|
+
*/
|
|
116
|
+
async function findRelatedAdrs(task) {
|
|
117
|
+
// TODO: Implement actual ADR relationship detection
|
|
118
|
+
// For now, extract ADR references from description
|
|
119
|
+
const relatedAdrs = [];
|
|
120
|
+
if (task.description) {
|
|
121
|
+
const adrReferences = task.description.match(/ADR[-\s]?(\d+)/gi);
|
|
122
|
+
if (adrReferences) {
|
|
123
|
+
relatedAdrs.push(...adrReferences.map(ref => ref.trim()));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return [...new Set(relatedAdrs)];
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Get task history (placeholder - would require history tracking)
|
|
130
|
+
*/
|
|
131
|
+
async function getTaskHistory(_taskId) {
|
|
132
|
+
// TODO: Implement actual task history tracking
|
|
133
|
+
// For now, return placeholder history
|
|
134
|
+
return [
|
|
135
|
+
{
|
|
136
|
+
timestamp: new Date().toISOString(),
|
|
137
|
+
action: 'created',
|
|
138
|
+
details: 'Task created from todo.md',
|
|
139
|
+
},
|
|
140
|
+
];
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Generate todo by task ID resource
|
|
144
|
+
*/
|
|
145
|
+
export async function generateTodoByIdResource(params, _searchParams) {
|
|
146
|
+
const task_id = params['task_id'];
|
|
147
|
+
if (!task_id) {
|
|
148
|
+
throw new McpAdrError('Missing required parameter: task_id', 'INVALID_PARAMS');
|
|
149
|
+
}
|
|
150
|
+
const cacheKey = `todo-task:${task_id}`;
|
|
151
|
+
// Check cache
|
|
152
|
+
const cached = await resourceCache.get(cacheKey);
|
|
153
|
+
if (cached) {
|
|
154
|
+
return cached;
|
|
155
|
+
}
|
|
156
|
+
const todoPath = path.resolve(process.cwd(), 'todo.md');
|
|
157
|
+
let todoContent;
|
|
158
|
+
try {
|
|
159
|
+
todoContent = await fs.readFile(todoPath, 'utf-8');
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
throw new McpAdrError(`Todo file not found at ${todoPath}`, 'RESOURCE_NOT_FOUND');
|
|
163
|
+
}
|
|
164
|
+
const todos = parseTodoMarkdown(todoContent);
|
|
165
|
+
// Find task by ID or title match
|
|
166
|
+
const task = todos.find(t => t.id === task_id || t.title.toLowerCase().includes(task_id.toLowerCase()));
|
|
167
|
+
if (!task) {
|
|
168
|
+
throw new McpAdrError(`Task not found: ${task_id}`, 'RESOURCE_NOT_FOUND');
|
|
169
|
+
}
|
|
170
|
+
// Build detailed task data
|
|
171
|
+
const detailedTask = {
|
|
172
|
+
...task,
|
|
173
|
+
dependencies: await resolveDependencies(task, todos),
|
|
174
|
+
blockedBy: await findBlockingTasks(task, todos),
|
|
175
|
+
relatedAdrs: await findRelatedAdrs(task),
|
|
176
|
+
history: await getTaskHistory(task_id),
|
|
177
|
+
};
|
|
178
|
+
const result = {
|
|
179
|
+
data: detailedTask,
|
|
180
|
+
contentType: 'application/json',
|
|
181
|
+
lastModified: new Date().toISOString(),
|
|
182
|
+
cacheKey,
|
|
183
|
+
ttl: 60, // 1 minute cache (tasks change frequently)
|
|
184
|
+
etag: generateETag(detailedTask),
|
|
185
|
+
};
|
|
186
|
+
// Cache result
|
|
187
|
+
resourceCache.set(cacheKey, result, result.ttl);
|
|
188
|
+
return result;
|
|
189
|
+
}
|
|
190
|
+
// Register route
|
|
191
|
+
resourceRouter.register('/todo/{task_id}', generateTodoByIdResource, 'Individual task details by ID or title match');
|
|
192
|
+
//# sourceMappingURL=todo-by-id-resource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"todo-by-id-resource.js","sourceRoot":"","sources":["../../../src/resources/todo-by-id-resource.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Todo List Resource
|
|
3
|
+
* Provides access to project task list with status and dependencies
|
|
4
|
+
*/
|
|
5
|
+
import { ResourceGenerationResult } from './index.js';
|
|
6
|
+
export interface TodoTask {
|
|
7
|
+
id: string;
|
|
8
|
+
title: string;
|
|
9
|
+
status: 'pending' | 'in_progress' | 'completed';
|
|
10
|
+
description?: string;
|
|
11
|
+
priority?: 'low' | 'medium' | 'high' | 'critical';
|
|
12
|
+
dependencies?: string[];
|
|
13
|
+
createdAt?: string;
|
|
14
|
+
updatedAt?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Generate comprehensive todo list resource with task management and progress tracking.
|
|
18
|
+
*
|
|
19
|
+
* Parses the project's `todo.md` file and extracts structured task information including
|
|
20
|
+
* status, priority, assignees, and dependencies. Provides aggregated statistics for
|
|
21
|
+
* project planning and progress monitoring.
|
|
22
|
+
*
|
|
23
|
+
* **File Location:** `{projectRoot}/todo.md`
|
|
24
|
+
*
|
|
25
|
+
* **Supported Task Statuses:**
|
|
26
|
+
* - pending: Task not yet started
|
|
27
|
+
* - in_progress: Task currently being worked on
|
|
28
|
+
* - completed: Task finished
|
|
29
|
+
*
|
|
30
|
+
* **Supported Priorities:**
|
|
31
|
+
* - critical: Must be done immediately
|
|
32
|
+
* - high: Important, should be done soon
|
|
33
|
+
* - medium: Normal priority
|
|
34
|
+
* - low: Can be deferred
|
|
35
|
+
*
|
|
36
|
+
* @returns Promise resolving to resource generation result containing:
|
|
37
|
+
* - data: Complete todo list with tasks array and summary statistics
|
|
38
|
+
* - contentType: "application/json"
|
|
39
|
+
* - lastModified: ISO timestamp of generation
|
|
40
|
+
* - cacheKey: "todo-list:current"
|
|
41
|
+
* - ttl: Cache duration (120 seconds / 2 minutes)
|
|
42
|
+
* - etag: Entity tag for cache validation
|
|
43
|
+
*
|
|
44
|
+
* @throws {McpAdrError} When todo list generation fails due to:
|
|
45
|
+
* - RESOURCE_GENERATION_ERROR: Parse errors in todo.md format
|
|
46
|
+
* - Cache operation failures
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* const todoList = await generateTodoListResource();
|
|
51
|
+
*
|
|
52
|
+
* console.log(`Total tasks: ${todoList.data.summary.total}`);
|
|
53
|
+
* console.log(`Completed: ${todoList.data.summary.completed}`);
|
|
54
|
+
* console.log(`In progress: ${todoList.data.summary.inProgress}`);
|
|
55
|
+
* console.log(`Completion rate: ${(todoList.data.summary.completed / todoList.data.summary.total * 100).toFixed(1)}%`);
|
|
56
|
+
*
|
|
57
|
+
* // Filter critical tasks
|
|
58
|
+
* const criticalTasks = todoList.data.tasks.filter(t => t.priority === 'critical' && t.status !== 'completed');
|
|
59
|
+
* console.log(`Critical tasks remaining: ${criticalTasks.length}`);
|
|
60
|
+
*
|
|
61
|
+
* // Expected output structure:
|
|
62
|
+
* {
|
|
63
|
+
* data: {
|
|
64
|
+
* version: "1.0.0",
|
|
65
|
+
* timestamp: "2025-10-12T17:00:00.000Z",
|
|
66
|
+
* source: "/project/todo.md",
|
|
67
|
+
* summary: {
|
|
68
|
+
* total: 25,
|
|
69
|
+
* pending: 10,
|
|
70
|
+
* inProgress: 5,
|
|
71
|
+
* completed: 10,
|
|
72
|
+
* byPriority: { critical: 2, high: 8, medium: 10, low: 5 }
|
|
73
|
+
* },
|
|
74
|
+
* tasks: [
|
|
75
|
+
* {
|
|
76
|
+
* id: "task-001",
|
|
77
|
+
* title: "Implement user authentication",
|
|
78
|
+
* status: "in_progress",
|
|
79
|
+
* priority: "high",
|
|
80
|
+
* assignee: "developer@example.com",
|
|
81
|
+
* dueDate: "2025-10-20",
|
|
82
|
+
* dependencies: ["task-002"]
|
|
83
|
+
* }
|
|
84
|
+
* ]
|
|
85
|
+
* },
|
|
86
|
+
* contentType: "application/json",
|
|
87
|
+
* cacheKey: "todo-list:current",
|
|
88
|
+
* ttl: 120
|
|
89
|
+
* }
|
|
90
|
+
* ```
|
|
91
|
+
*
|
|
92
|
+
* @since v2.0.0
|
|
93
|
+
* @see {@link parseTodoMarkdown} for todo.md parsing logic
|
|
94
|
+
*/
|
|
95
|
+
export declare function generateTodoListResource(): Promise<ResourceGenerationResult>;
|
|
96
|
+
//# sourceMappingURL=todo-list-resource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"todo-list-resource.d.ts","sourceRoot":"","sources":["../../../src/resources/todo-list-resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAClD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA8ED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8EG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,wBAAwB,CAAC,CA2DlF"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Todo List Resource
|
|
3
|
+
* Provides access to project task list with status and dependencies
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from 'fs/promises';
|
|
6
|
+
import * as path from 'path';
|
|
7
|
+
import { McpAdrError } from '../types/index.js';
|
|
8
|
+
import { resourceCache, generateETag } from './resource-cache.js';
|
|
9
|
+
/**
|
|
10
|
+
* Parse TODO.md markdown file into structured task data
|
|
11
|
+
*/
|
|
12
|
+
function parseTodoMarkdown(content) {
|
|
13
|
+
const todos = [];
|
|
14
|
+
const lines = content.split('\n');
|
|
15
|
+
let currentTask = null;
|
|
16
|
+
let taskCounter = 0;
|
|
17
|
+
for (const line of lines) {
|
|
18
|
+
const trimmed = line.trim();
|
|
19
|
+
// Parse task line: ## Task Title
|
|
20
|
+
if (trimmed.startsWith('## ')) {
|
|
21
|
+
if (currentTask) {
|
|
22
|
+
todos.push(currentTask);
|
|
23
|
+
}
|
|
24
|
+
const title = trimmed.substring(3).trim();
|
|
25
|
+
taskCounter++;
|
|
26
|
+
currentTask = {
|
|
27
|
+
id: `task-${taskCounter}`,
|
|
28
|
+
title,
|
|
29
|
+
status: 'pending',
|
|
30
|
+
};
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
// Parse status
|
|
34
|
+
if (trimmed.startsWith('**Status:**') && currentTask) {
|
|
35
|
+
const status = trimmed.substring(11).trim().toLowerCase();
|
|
36
|
+
if (status.includes('progress')) {
|
|
37
|
+
currentTask.status = 'in_progress';
|
|
38
|
+
}
|
|
39
|
+
else if (status.includes('completed')) {
|
|
40
|
+
currentTask.status = 'completed';
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
currentTask.status = 'pending';
|
|
44
|
+
}
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
// Parse priority
|
|
48
|
+
if (trimmed.startsWith('**Priority:**') && currentTask) {
|
|
49
|
+
const priority = trimmed.substring(13).trim().toLowerCase();
|
|
50
|
+
if (priority.includes('critical')) {
|
|
51
|
+
currentTask.priority = 'critical';
|
|
52
|
+
}
|
|
53
|
+
else if (priority.includes('high')) {
|
|
54
|
+
currentTask.priority = 'high';
|
|
55
|
+
}
|
|
56
|
+
else if (priority.includes('low')) {
|
|
57
|
+
currentTask.priority = 'low';
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
currentTask.priority = 'medium';
|
|
61
|
+
}
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
// Parse description (plain text lines)
|
|
65
|
+
if (currentTask &&
|
|
66
|
+
!trimmed.startsWith('**') &&
|
|
67
|
+
!trimmed.startsWith('#') &&
|
|
68
|
+
trimmed.length > 0) {
|
|
69
|
+
currentTask.description = (currentTask.description || '') + '\n' + trimmed;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Add last task
|
|
73
|
+
if (currentTask) {
|
|
74
|
+
todos.push(currentTask);
|
|
75
|
+
}
|
|
76
|
+
return todos;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Generate comprehensive todo list resource with task management and progress tracking.
|
|
80
|
+
*
|
|
81
|
+
* Parses the project's `todo.md` file and extracts structured task information including
|
|
82
|
+
* status, priority, assignees, and dependencies. Provides aggregated statistics for
|
|
83
|
+
* project planning and progress monitoring.
|
|
84
|
+
*
|
|
85
|
+
* **File Location:** `{projectRoot}/todo.md`
|
|
86
|
+
*
|
|
87
|
+
* **Supported Task Statuses:**
|
|
88
|
+
* - pending: Task not yet started
|
|
89
|
+
* - in_progress: Task currently being worked on
|
|
90
|
+
* - completed: Task finished
|
|
91
|
+
*
|
|
92
|
+
* **Supported Priorities:**
|
|
93
|
+
* - critical: Must be done immediately
|
|
94
|
+
* - high: Important, should be done soon
|
|
95
|
+
* - medium: Normal priority
|
|
96
|
+
* - low: Can be deferred
|
|
97
|
+
*
|
|
98
|
+
* @returns Promise resolving to resource generation result containing:
|
|
99
|
+
* - data: Complete todo list with tasks array and summary statistics
|
|
100
|
+
* - contentType: "application/json"
|
|
101
|
+
* - lastModified: ISO timestamp of generation
|
|
102
|
+
* - cacheKey: "todo-list:current"
|
|
103
|
+
* - ttl: Cache duration (120 seconds / 2 minutes)
|
|
104
|
+
* - etag: Entity tag for cache validation
|
|
105
|
+
*
|
|
106
|
+
* @throws {McpAdrError} When todo list generation fails due to:
|
|
107
|
+
* - RESOURCE_GENERATION_ERROR: Parse errors in todo.md format
|
|
108
|
+
* - Cache operation failures
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```typescript
|
|
112
|
+
* const todoList = await generateTodoListResource();
|
|
113
|
+
*
|
|
114
|
+
* console.log(`Total tasks: ${todoList.data.summary.total}`);
|
|
115
|
+
* console.log(`Completed: ${todoList.data.summary.completed}`);
|
|
116
|
+
* console.log(`In progress: ${todoList.data.summary.inProgress}`);
|
|
117
|
+
* console.log(`Completion rate: ${(todoList.data.summary.completed / todoList.data.summary.total * 100).toFixed(1)}%`);
|
|
118
|
+
*
|
|
119
|
+
* // Filter critical tasks
|
|
120
|
+
* const criticalTasks = todoList.data.tasks.filter(t => t.priority === 'critical' && t.status !== 'completed');
|
|
121
|
+
* console.log(`Critical tasks remaining: ${criticalTasks.length}`);
|
|
122
|
+
*
|
|
123
|
+
* // Expected output structure:
|
|
124
|
+
* {
|
|
125
|
+
* data: {
|
|
126
|
+
* version: "1.0.0",
|
|
127
|
+
* timestamp: "2025-10-12T17:00:00.000Z",
|
|
128
|
+
* source: "/project/todo.md",
|
|
129
|
+
* summary: {
|
|
130
|
+
* total: 25,
|
|
131
|
+
* pending: 10,
|
|
132
|
+
* inProgress: 5,
|
|
133
|
+
* completed: 10,
|
|
134
|
+
* byPriority: { critical: 2, high: 8, medium: 10, low: 5 }
|
|
135
|
+
* },
|
|
136
|
+
* tasks: [
|
|
137
|
+
* {
|
|
138
|
+
* id: "task-001",
|
|
139
|
+
* title: "Implement user authentication",
|
|
140
|
+
* status: "in_progress",
|
|
141
|
+
* priority: "high",
|
|
142
|
+
* assignee: "developer@example.com",
|
|
143
|
+
* dueDate: "2025-10-20",
|
|
144
|
+
* dependencies: ["task-002"]
|
|
145
|
+
* }
|
|
146
|
+
* ]
|
|
147
|
+
* },
|
|
148
|
+
* contentType: "application/json",
|
|
149
|
+
* cacheKey: "todo-list:current",
|
|
150
|
+
* ttl: 120
|
|
151
|
+
* }
|
|
152
|
+
* ```
|
|
153
|
+
*
|
|
154
|
+
* @since v2.0.0
|
|
155
|
+
* @see {@link parseTodoMarkdown} for todo.md parsing logic
|
|
156
|
+
*/
|
|
157
|
+
export async function generateTodoListResource() {
|
|
158
|
+
try {
|
|
159
|
+
const cacheKey = 'todo-list:current';
|
|
160
|
+
// Check cache
|
|
161
|
+
const cached = await resourceCache.get(cacheKey);
|
|
162
|
+
if (cached) {
|
|
163
|
+
return cached;
|
|
164
|
+
}
|
|
165
|
+
const todoPath = path.resolve(process.cwd(), 'todo.md');
|
|
166
|
+
let todos = [];
|
|
167
|
+
try {
|
|
168
|
+
const todoContent = await fs.readFile(todoPath, 'utf-8');
|
|
169
|
+
todos = parseTodoMarkdown(todoContent);
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
// Todo file may not exist, return empty list
|
|
173
|
+
console.warn(`[TodoListResource] Todo file not found at ${todoPath}`);
|
|
174
|
+
}
|
|
175
|
+
const todoListData = {
|
|
176
|
+
version: '1.0.0',
|
|
177
|
+
timestamp: new Date().toISOString(),
|
|
178
|
+
source: todoPath,
|
|
179
|
+
summary: {
|
|
180
|
+
total: todos.length,
|
|
181
|
+
pending: todos.filter(t => t.status === 'pending').length,
|
|
182
|
+
inProgress: todos.filter(t => t.status === 'in_progress').length,
|
|
183
|
+
completed: todos.filter(t => t.status === 'completed').length,
|
|
184
|
+
byPriority: {
|
|
185
|
+
critical: todos.filter(t => t.priority === 'critical').length,
|
|
186
|
+
high: todos.filter(t => t.priority === 'high').length,
|
|
187
|
+
medium: todos.filter(t => t.priority === 'medium').length,
|
|
188
|
+
low: todos.filter(t => t.priority === 'low').length,
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
todos,
|
|
192
|
+
};
|
|
193
|
+
const result = {
|
|
194
|
+
data: todoListData,
|
|
195
|
+
contentType: 'application/json',
|
|
196
|
+
lastModified: new Date().toISOString(),
|
|
197
|
+
cacheKey,
|
|
198
|
+
ttl: 60, // 1 minute cache (tasks change frequently)
|
|
199
|
+
etag: generateETag(todoListData),
|
|
200
|
+
};
|
|
201
|
+
// Cache result
|
|
202
|
+
resourceCache.set(cacheKey, result, result.ttl);
|
|
203
|
+
return result;
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
throw new McpAdrError(`Failed to generate todo list resource: ${error instanceof Error ? error.message : String(error)}`, 'RESOURCE_GENERATION_ERROR');
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=todo-list-resource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"todo-list-resource.js","sourceRoot":"","sources":["../../../src/resources/todo-list-resource.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validated Pattern by Platform Resource
|
|
3
|
+
* URI Pattern: adr://validated_pattern/{platform}
|
|
4
|
+
*
|
|
5
|
+
* Provides complete validated pattern for a specific platform
|
|
6
|
+
* including bill of materials, deployment phases, validation checks
|
|
7
|
+
*/
|
|
8
|
+
import { URLSearchParams } from 'url';
|
|
9
|
+
import { ResourceGenerationResult } from './index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Generate validated pattern by platform resource
|
|
12
|
+
*/
|
|
13
|
+
export declare function generateValidatedPatternByPlatformResource(params: Record<string, string>, _searchParams: URLSearchParams): Promise<ResourceGenerationResult>;
|
|
14
|
+
//# sourceMappingURL=validated-pattern-by-platform-resource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validated-pattern-by-platform-resource.d.ts","sourceRoot":"","sources":["../../../src/resources/validated-pattern-by-platform-resource.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAGtC,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAItD;;GAEG;AACH,wBAAsB,0CAA0C,CAC9D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,aAAa,EAAE,eAAe,GAC7B,OAAO,CAAC,wBAAwB,CAAC,CAsCnC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validated Pattern by Platform Resource
|
|
3
|
+
* URI Pattern: adr://validated_pattern/{platform}
|
|
4
|
+
*
|
|
5
|
+
* Provides complete validated pattern for a specific platform
|
|
6
|
+
* including bill of materials, deployment phases, validation checks
|
|
7
|
+
*/
|
|
8
|
+
import { McpAdrError } from '../types/index.js';
|
|
9
|
+
import { resourceCache, generateETag } from './resource-cache.js';
|
|
10
|
+
import { resourceRouter } from './resource-router.js';
|
|
11
|
+
import { getPattern } from '../utils/validated-pattern-definitions.js';
|
|
12
|
+
/**
|
|
13
|
+
* Generate validated pattern by platform resource
|
|
14
|
+
*/
|
|
15
|
+
export async function generateValidatedPatternByPlatformResource(params, _searchParams) {
|
|
16
|
+
const platform = params['platform'];
|
|
17
|
+
if (!platform) {
|
|
18
|
+
throw new McpAdrError('Missing required parameter: platform', 'INVALID_PARAMS');
|
|
19
|
+
}
|
|
20
|
+
const cacheKey = `validated-pattern:${platform}`;
|
|
21
|
+
// Check cache
|
|
22
|
+
const cached = await resourceCache.get(cacheKey);
|
|
23
|
+
if (cached) {
|
|
24
|
+
return cached;
|
|
25
|
+
}
|
|
26
|
+
// Get pattern for platform
|
|
27
|
+
const pattern = getPattern(platform);
|
|
28
|
+
if (!pattern) {
|
|
29
|
+
throw new McpAdrError(`No validated pattern found for platform: ${platform}. Valid platforms: openshift, kubernetes, docker, nodejs, python, mcp, a2a`, 'RESOURCE_NOT_FOUND');
|
|
30
|
+
}
|
|
31
|
+
const result = {
|
|
32
|
+
data: pattern,
|
|
33
|
+
contentType: 'application/json',
|
|
34
|
+
lastModified: pattern.metadata.lastUpdated,
|
|
35
|
+
cacheKey,
|
|
36
|
+
ttl: 3600, // 1 hour cache
|
|
37
|
+
etag: generateETag(pattern),
|
|
38
|
+
};
|
|
39
|
+
// Cache result
|
|
40
|
+
resourceCache.set(cacheKey, result, result.ttl);
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
// Register route
|
|
44
|
+
resourceRouter.register('/validated_pattern/{platform}', generateValidatedPatternByPlatformResource, 'Individual validated pattern by platform type');
|
|
45
|
+
//# sourceMappingURL=validated-pattern-by-platform-resource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validated-pattern-by-platform-resource.js","sourceRoot":"","sources":["../../../src/resources/validated-pattern-by-platform-resource.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAqB,MAAM,2CAA2C,CAAC;AAE1F;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,0CAA0C,CAC9D,MAA8B,EAC9B,aAA8B;IAE9B,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAiB,CAAC;IAEpD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,WAAW,CAAC,sCAAsC,EAAE,gBAAgB,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,QAAQ,GAAG,qBAAqB,QAAQ,EAAE,CAAC;IAEjD,cAAc;IACd,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,CAA2B,QAAQ,CAAC,CAAC;IAC3E,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,2BAA2B;IAC3B,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAErC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,WAAW,CACnB,4CAA4C,QAAQ,4EAA4E,EAChI,oBAAoB,CACrB,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAA6B;QACvC,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,kBAAkB;QAC/B,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW;QAC1C,QAAQ;QACR,GAAG,EAAE,IAAI,EAAE,eAAe;QAC1B,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC;KAC5B,CAAC;IAEF,eAAe;IACf,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAEhD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,iBAAiB;AACjB,cAAc,CAAC,QAAQ,CACrB,+BAA+B,EAC/B,0CAA0C,EAC1C,+CAA+C,CAChD,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validated Patterns Catalog Resource
|
|
3
|
+
* URI Pattern: adr://validated_patterns
|
|
4
|
+
*
|
|
5
|
+
* Provides complete catalog of validated deployment patterns
|
|
6
|
+
* for different platforms with metadata and summaries
|
|
7
|
+
*/
|
|
8
|
+
import { ResourceGenerationResult } from './index.js';
|
|
9
|
+
import { type PlatformType } from '../utils/validated-pattern-definitions.js';
|
|
10
|
+
export interface ValidatedPatternsCatalog {
|
|
11
|
+
patterns: Array<{
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
version: string;
|
|
15
|
+
platformType: PlatformType;
|
|
16
|
+
description: string;
|
|
17
|
+
lastUpdated: string;
|
|
18
|
+
source: string;
|
|
19
|
+
tags: string[];
|
|
20
|
+
hasBaseCodeRepository: boolean;
|
|
21
|
+
hasAuthoritativeSources: boolean;
|
|
22
|
+
authoritativeSourceCount: number;
|
|
23
|
+
deploymentPhaseCount: number;
|
|
24
|
+
validationCheckCount: number;
|
|
25
|
+
}>;
|
|
26
|
+
metadata: {
|
|
27
|
+
totalPatterns: number;
|
|
28
|
+
platforms: PlatformType[];
|
|
29
|
+
lastGenerated: string;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Generate validated patterns catalog resource
|
|
34
|
+
*/
|
|
35
|
+
export declare function generateValidatedPatternsCatalogResource(): Promise<ResourceGenerationResult>;
|
|
36
|
+
//# sourceMappingURL=validated-patterns-catalog-resource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validated-patterns-catalog-resource.d.ts","sourceRoot":"","sources":["../../../src/resources/validated-patterns-catalog-resource.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,2CAA2C,CAAC;AAEnD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,YAAY,CAAC;QAC3B,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,qBAAqB,EAAE,OAAO,CAAC;QAC/B,uBAAuB,EAAE,OAAO,CAAC;QACjC,wBAAwB,EAAE,MAAM,CAAC;QACjC,oBAAoB,EAAE,MAAM,CAAC;QAC7B,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC,CAAC;IACH,QAAQ,EAAE;QACR,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,YAAY,EAAE,CAAC;QAC1B,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED;;GAEG;AACH,wBAAsB,wCAAwC,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAkDlG"}
|