mcp-adr-analysis-server 2.1.11 → 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 +69 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1638 -551
- 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/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.map +1 -1
- package/dist/src/tools/adr-suggestion-tool.js +4 -1
- package/dist/src/tools/adr-suggestion-tool.js.map +1 -1
- package/dist/src/tools/adr-validation-tool.d.ts +52 -0
- package/dist/src/tools/adr-validation-tool.d.ts.map +1 -1
- package/dist/src/tools/adr-validation-tool.js +52 -0
- package/dist/src/tools/adr-validation-tool.js.map +1 -1
- 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 +47 -5
- 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 +48 -1
- 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 +15 -1
- package/dist/src/tools/deployment-readiness-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/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 +45 -1
- package/dist/src/tools/perform-research-tool.d.ts.map +1 -1
- package/dist/src/tools/perform-research-tool.js +146 -2
- package/dist/src/tools/perform-research-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 +4 -1
- 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 +2 -2
- 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-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 +36 -0
- package/dist/src/utils/ai-executor.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 +4 -1
- 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 +4 -1
- package/dist/src/utils/environment-analysis.js.map +1 -1
- package/dist/src/utils/knowledge-graph-manager.d.ts +16 -1
- package/dist/src/utils/knowledge-graph-manager.d.ts.map +1 -1
- package/dist/src/utils/knowledge-graph-manager.js +159 -3
- package/dist/src/utils/knowledge-graph-manager.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/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 +135 -3
- package/dist/src/utils/research-orchestrator.d.ts.map +1 -1
- package/dist/src/utils/research-orchestrator.js +440 -27
- package/dist/src/utils/research-orchestrator.js.map +1 -1
- 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/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,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ADR by ID Resource - Individual ADR access
|
|
3
|
+
* URI Pattern: adr://adr/{id}
|
|
4
|
+
*/
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
import { McpAdrError } from '../types/index.js';
|
|
7
|
+
import { resourceCache, generateETag } from './resource-cache.js';
|
|
8
|
+
import { resourceRouter } from './resource-router.js';
|
|
9
|
+
/**
|
|
10
|
+
* Find related ADRs based on content analysis
|
|
11
|
+
*/
|
|
12
|
+
async function findRelatedAdrs(adr, allAdrs) {
|
|
13
|
+
const related = [];
|
|
14
|
+
// Extract referenced ADR IDs from content
|
|
15
|
+
const content = `${adr.context} ${adr.decision} ${adr.consequences}`;
|
|
16
|
+
const adrReferences = content.match(/ADR[-\s]?(\d+)/gi);
|
|
17
|
+
if (adrReferences) {
|
|
18
|
+
for (const ref of adrReferences) {
|
|
19
|
+
const id = ref.match(/\d+/)?.[0];
|
|
20
|
+
if (id) {
|
|
21
|
+
const relatedAdr = allAdrs.find(a => a.filename.includes(id));
|
|
22
|
+
if (relatedAdr && relatedAdr.filename !== adr.filename) {
|
|
23
|
+
related.push(relatedAdr.filename.replace(/\.md$/, ''));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return [...new Set(related)];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Validate ADR structure and content
|
|
32
|
+
*/
|
|
33
|
+
async function validateAdr(adr) {
|
|
34
|
+
const issues = [];
|
|
35
|
+
let score = 100;
|
|
36
|
+
// Check required sections
|
|
37
|
+
if (!adr.title || adr.title.length < 10) {
|
|
38
|
+
issues.push('Title is too short or missing');
|
|
39
|
+
score -= 10;
|
|
40
|
+
}
|
|
41
|
+
if (!adr.context || adr.context.length < 50) {
|
|
42
|
+
issues.push('Context section is too brief');
|
|
43
|
+
score -= 15;
|
|
44
|
+
}
|
|
45
|
+
if (!adr.decision || adr.decision.length < 50) {
|
|
46
|
+
issues.push('Decision section is too brief');
|
|
47
|
+
score -= 15;
|
|
48
|
+
}
|
|
49
|
+
if (!adr.consequences || adr.consequences.length < 50) {
|
|
50
|
+
issues.push('Consequences section is too brief');
|
|
51
|
+
score -= 15;
|
|
52
|
+
}
|
|
53
|
+
if (!adr.status || !['proposed', 'accepted', 'deprecated', 'superseded'].includes(adr.status)) {
|
|
54
|
+
issues.push('Status is missing or invalid');
|
|
55
|
+
score -= 10;
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
isValid: issues.length === 0,
|
|
59
|
+
issues,
|
|
60
|
+
score: Math.max(0, score),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Generate individual ADR (Architectural Decision Record) resource with enhanced metadata and validation.
|
|
65
|
+
*
|
|
66
|
+
* Retrieves a specific ADR by its unique identifier and enriches it with:
|
|
67
|
+
* - Structural validation scoring
|
|
68
|
+
* - Related ADR discovery through content analysis
|
|
69
|
+
* - Implementation status tracking
|
|
70
|
+
* - Priority and complexity assessment
|
|
71
|
+
* - File metadata (size, location, tags)
|
|
72
|
+
*
|
|
73
|
+
* **URI Pattern:** `adr://adr/{id}`
|
|
74
|
+
*
|
|
75
|
+
* **Query Parameters:**
|
|
76
|
+
* - `projectPath`: Override project root path (default: process.cwd())
|
|
77
|
+
*
|
|
78
|
+
* @param params - URL path parameters containing:
|
|
79
|
+
* - id: ADR identifier (e.g., "001", "database-architecture", or full filename)
|
|
80
|
+
* @param searchParams - URL query parameters for path customization
|
|
81
|
+
*
|
|
82
|
+
* @returns Promise resolving to resource generation result containing:
|
|
83
|
+
* - data: Complete ADR details with validation, relationships, and metadata
|
|
84
|
+
* - contentType: "application/json"
|
|
85
|
+
* - lastModified: ISO timestamp of generation
|
|
86
|
+
* - cacheKey: Unique identifier "adr:{id}"
|
|
87
|
+
* - ttl: Cache duration (600 seconds / 10 minutes)
|
|
88
|
+
* - etag: Entity tag for cache validation
|
|
89
|
+
*
|
|
90
|
+
* @throws {McpAdrError} When ADR retrieval fails due to:
|
|
91
|
+
* - INVALID_PARAMS: Missing required 'id' parameter
|
|
92
|
+
* - RESOURCE_NOT_FOUND: ADR with specified ID not found in directory
|
|
93
|
+
* - RESOURCE_GENERATION_ERROR: ADR discovery or parsing failure
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```typescript
|
|
97
|
+
* // Get ADR by numeric ID
|
|
98
|
+
* const adr = await generateAdrByIdResource(
|
|
99
|
+
* { id: '001' },
|
|
100
|
+
* new URLSearchParams()
|
|
101
|
+
* );
|
|
102
|
+
*
|
|
103
|
+
* console.log(`Title: ${adr.data.title}`);
|
|
104
|
+
* console.log(`Status: ${adr.data.status}`);
|
|
105
|
+
* console.log(`Validation score: ${adr.data.validationResults.score}/100`);
|
|
106
|
+
* console.log(`Related ADRs: ${adr.data.relatedAdrs.join(', ')}`);
|
|
107
|
+
*
|
|
108
|
+
* // Get ADR from custom project path
|
|
109
|
+
* const customAdr = await generateAdrByIdResource(
|
|
110
|
+
* { id: 'database-architecture' },
|
|
111
|
+
* new URLSearchParams('projectPath=/path/to/project')
|
|
112
|
+
* );
|
|
113
|
+
*
|
|
114
|
+
* // Expected output structure:
|
|
115
|
+
* {
|
|
116
|
+
* data: {
|
|
117
|
+
* id: "001",
|
|
118
|
+
* title: "Use PostgreSQL for primary database",
|
|
119
|
+
* status: "accepted",
|
|
120
|
+
* date: "2025-01-15",
|
|
121
|
+
* context: "We need a reliable RDBMS...",
|
|
122
|
+
* decision: "We will use PostgreSQL...",
|
|
123
|
+
* consequences: "- Positive: ACID compliance...",
|
|
124
|
+
* implementationStatus: "completed",
|
|
125
|
+
* priority: "high",
|
|
126
|
+
* complexity: "medium",
|
|
127
|
+
* relatedAdrs: ["002-database-migrations", "005-data-access-layer"],
|
|
128
|
+
* validationResults: {
|
|
129
|
+
* isValid: true,
|
|
130
|
+
* issues: [],
|
|
131
|
+
* score: 95
|
|
132
|
+
* },
|
|
133
|
+
* filePath: "/project/docs/adrs/001-database-choice.md",
|
|
134
|
+
* fileSize: 2048,
|
|
135
|
+
* tags: ["database", "infrastructure"]
|
|
136
|
+
* },
|
|
137
|
+
* contentType: "application/json",
|
|
138
|
+
* cacheKey: "adr:001",
|
|
139
|
+
* ttl: 600
|
|
140
|
+
* }
|
|
141
|
+
* ```
|
|
142
|
+
*
|
|
143
|
+
* @since v2.0.0
|
|
144
|
+
* @see {@link discoverAdrsInDirectory} for ADR discovery logic
|
|
145
|
+
* @see {@link validateAdr} for ADR validation rules
|
|
146
|
+
* @see {@link findRelatedAdrs} for relationship detection
|
|
147
|
+
*/
|
|
148
|
+
export async function generateAdrByIdResource(params, searchParams) {
|
|
149
|
+
const id = params['id'];
|
|
150
|
+
if (!id) {
|
|
151
|
+
throw new McpAdrError('Missing required parameter: id', 'INVALID_PARAMS');
|
|
152
|
+
}
|
|
153
|
+
const cacheKey = `adr:${id}`;
|
|
154
|
+
// Check cache
|
|
155
|
+
const cached = await resourceCache.get(cacheKey);
|
|
156
|
+
if (cached) {
|
|
157
|
+
return cached;
|
|
158
|
+
}
|
|
159
|
+
const { discoverAdrsInDirectory } = await import('../utils/adr-discovery.js');
|
|
160
|
+
const pathModule = await import('path');
|
|
161
|
+
// Get ADR directory
|
|
162
|
+
const projectPath = searchParams.get('projectPath') || process.cwd();
|
|
163
|
+
const adrDirectory = pathModule.resolve(projectPath, process.env['ADR_DIRECTORY'] || 'docs/adrs');
|
|
164
|
+
// Discover all ADRs
|
|
165
|
+
const discoveryResult = await discoverAdrsInDirectory(adrDirectory, projectPath, {
|
|
166
|
+
includeContent: true,
|
|
167
|
+
includeTimeline: false,
|
|
168
|
+
});
|
|
169
|
+
// Find matching ADR (by ID in filename or title)
|
|
170
|
+
const adr = discoveryResult.adrs.find(a => a.filename.includes(id) ||
|
|
171
|
+
a.filename.replace(/\.md$/, '').endsWith(id) ||
|
|
172
|
+
a.title.toLowerCase().includes(id.toLowerCase()));
|
|
173
|
+
if (!adr) {
|
|
174
|
+
throw new McpAdrError(`ADR not found: ${id}`, 'RESOURCE_NOT_FOUND');
|
|
175
|
+
}
|
|
176
|
+
// Build detailed ADR data
|
|
177
|
+
const relatedAdrs = await findRelatedAdrs(adr, discoveryResult.adrs);
|
|
178
|
+
const validationResults = await validateAdr(adr);
|
|
179
|
+
const dateStr = new Date().toISOString().split('T')[0];
|
|
180
|
+
const adrDetails = {
|
|
181
|
+
id: adr.filename.replace(/\.md$/, ''),
|
|
182
|
+
title: adr.title || 'Untitled',
|
|
183
|
+
status: adr.status || 'unknown',
|
|
184
|
+
date: dateStr || new Date().toISOString(),
|
|
185
|
+
context: adr.context || '',
|
|
186
|
+
decision: adr.decision || '',
|
|
187
|
+
consequences: adr.consequences || '',
|
|
188
|
+
implementationPlan: '',
|
|
189
|
+
filePath: adr.filename,
|
|
190
|
+
fileName: path.basename(adr.filename),
|
|
191
|
+
fileSize: 0,
|
|
192
|
+
tags: [],
|
|
193
|
+
relatedAdrs,
|
|
194
|
+
priority: 'medium',
|
|
195
|
+
complexity: 'medium',
|
|
196
|
+
implementationStatus: 'not-started',
|
|
197
|
+
validationResults,
|
|
198
|
+
};
|
|
199
|
+
const result = {
|
|
200
|
+
data: adrDetails,
|
|
201
|
+
contentType: 'application/json',
|
|
202
|
+
lastModified: new Date().toISOString(),
|
|
203
|
+
cacheKey,
|
|
204
|
+
ttl: 300, // 5 minutes cache
|
|
205
|
+
etag: generateETag(adrDetails),
|
|
206
|
+
};
|
|
207
|
+
// Cache result
|
|
208
|
+
resourceCache.set(cacheKey, result, result.ttl);
|
|
209
|
+
return result;
|
|
210
|
+
}
|
|
211
|
+
// Register route
|
|
212
|
+
resourceRouter.register('/adr/{id}', generateAdrByIdResource, 'Individual ADR by ID or title match');
|
|
213
|
+
//# sourceMappingURL=adr-by-id-resource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adr-by-id-resource.js","sourceRoot":"","sources":["../../../src/resources/adr-by-id-resource.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code Quality Resource
|
|
3
|
+
*
|
|
4
|
+
* Provides comprehensive code quality assessment including metrics, analysis,
|
|
5
|
+
* and recommendations. Bridges to deployment-readiness-tool for TreeSitter
|
|
6
|
+
* analysis and smart-score-tool for quality scoring.
|
|
7
|
+
*
|
|
8
|
+
* URI: adr://code_quality
|
|
9
|
+
*
|
|
10
|
+
* Query Parameters:
|
|
11
|
+
* - scope: Analysis scope (full, changes, critical) - default: full
|
|
12
|
+
* - includeMetrics: Include detailed metrics (true, false) - default: true
|
|
13
|
+
* - includeRecommendations: Include improvement recommendations (true, false) - default: true
|
|
14
|
+
* - threshold: Minimum quality score threshold (0-100) - default: 70
|
|
15
|
+
* - format: Output format (summary, detailed) - default: detailed
|
|
16
|
+
*
|
|
17
|
+
* Example URIs:
|
|
18
|
+
* - adr://code_quality
|
|
19
|
+
* - adr://code_quality?scope=changes
|
|
20
|
+
* - adr://code_quality?threshold=80&format=summary
|
|
21
|
+
* - adr://code_quality?includeRecommendations=true
|
|
22
|
+
*/
|
|
23
|
+
import { URLSearchParams } from 'url';
|
|
24
|
+
export interface CodeQualityResult {
|
|
25
|
+
scope: string;
|
|
26
|
+
timestamp: string;
|
|
27
|
+
overallScore: number;
|
|
28
|
+
grade: 'A' | 'B' | 'C' | 'D' | 'F';
|
|
29
|
+
metrics: {
|
|
30
|
+
productionCodeScore: number;
|
|
31
|
+
mockCodeIndicators: number;
|
|
32
|
+
productionCodeThreshold: number;
|
|
33
|
+
codebaseSize: {
|
|
34
|
+
totalFiles: number;
|
|
35
|
+
totalLines: number;
|
|
36
|
+
productionFiles: number;
|
|
37
|
+
testFiles: number;
|
|
38
|
+
mockFiles: number;
|
|
39
|
+
};
|
|
40
|
+
complexity?: {
|
|
41
|
+
average: number;
|
|
42
|
+
highest: number;
|
|
43
|
+
distribution: Record<string, number>;
|
|
44
|
+
};
|
|
45
|
+
maintainability?: {
|
|
46
|
+
score: number;
|
|
47
|
+
issues: string[];
|
|
48
|
+
};
|
|
49
|
+
documentation?: {
|
|
50
|
+
coverage: number;
|
|
51
|
+
missing: string[];
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
qualityGates?: Array<{
|
|
55
|
+
gate: string;
|
|
56
|
+
passed: boolean;
|
|
57
|
+
threshold: number;
|
|
58
|
+
actual: number;
|
|
59
|
+
severity: 'critical' | 'high' | 'medium' | 'low';
|
|
60
|
+
}>;
|
|
61
|
+
issues?: Array<{
|
|
62
|
+
file: string;
|
|
63
|
+
line?: number;
|
|
64
|
+
type: 'error' | 'warning' | 'info';
|
|
65
|
+
category: 'complexity' | 'duplication' | 'style' | 'security' | 'performance';
|
|
66
|
+
message: string;
|
|
67
|
+
severity: 'critical' | 'high' | 'medium' | 'low';
|
|
68
|
+
}>;
|
|
69
|
+
recommendations?: Array<{
|
|
70
|
+
priority: 'critical' | 'high' | 'medium' | 'low';
|
|
71
|
+
category: string;
|
|
72
|
+
title: string;
|
|
73
|
+
description: string;
|
|
74
|
+
impact: string;
|
|
75
|
+
effort: 'low' | 'medium' | 'high';
|
|
76
|
+
}>;
|
|
77
|
+
trends?: {
|
|
78
|
+
qualityTrend: 'improving' | 'stable' | 'declining';
|
|
79
|
+
recentChanges: Array<{
|
|
80
|
+
date: string;
|
|
81
|
+
score: number;
|
|
82
|
+
change: number;
|
|
83
|
+
}>;
|
|
84
|
+
};
|
|
85
|
+
metadata: {
|
|
86
|
+
scope: string;
|
|
87
|
+
analysisType: 'comprehensive' | 'basic';
|
|
88
|
+
confidence: number;
|
|
89
|
+
timestamp: string;
|
|
90
|
+
dataSource: 'comprehensive-tool' | 'basic-analysis';
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
export interface ResourceGenerationResult {
|
|
94
|
+
data: CodeQualityResult;
|
|
95
|
+
contentType: string;
|
|
96
|
+
lastModified: string;
|
|
97
|
+
cacheKey: string;
|
|
98
|
+
ttl: number;
|
|
99
|
+
etag?: string;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Generate code quality resource
|
|
103
|
+
*/
|
|
104
|
+
export declare function generateCodeQualityResource(_params?: Record<string, string>, searchParams?: URLSearchParams): Promise<ResourceGenerationResult>;
|
|
105
|
+
//# sourceMappingURL=code-quality-resource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-quality-resource.d.ts","sourceRoot":"","sources":["../../../src/resources/code-quality-resource.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code Quality Resource
|
|
3
|
+
*
|
|
4
|
+
* Provides comprehensive code quality assessment including metrics, analysis,
|
|
5
|
+
* and recommendations. Bridges to deployment-readiness-tool for TreeSitter
|
|
6
|
+
* analysis and smart-score-tool for quality scoring.
|
|
7
|
+
*
|
|
8
|
+
* URI: adr://code_quality
|
|
9
|
+
*
|
|
10
|
+
* Query Parameters:
|
|
11
|
+
* - scope: Analysis scope (full, changes, critical) - default: full
|
|
12
|
+
* - includeMetrics: Include detailed metrics (true, false) - default: true
|
|
13
|
+
* - includeRecommendations: Include improvement recommendations (true, false) - default: true
|
|
14
|
+
* - threshold: Minimum quality score threshold (0-100) - default: 70
|
|
15
|
+
* - format: Output format (summary, detailed) - default: detailed
|
|
16
|
+
*
|
|
17
|
+
* Example URIs:
|
|
18
|
+
* - adr://code_quality
|
|
19
|
+
* - adr://code_quality?scope=changes
|
|
20
|
+
* - adr://code_quality?threshold=80&format=summary
|
|
21
|
+
* - adr://code_quality?includeRecommendations=true
|
|
22
|
+
*/
|
|
23
|
+
import path from 'path';
|
|
24
|
+
import { promises as fs } from 'fs';
|
|
25
|
+
import { ResourceCache } from './resource-cache.js';
|
|
26
|
+
const resourceCache = new ResourceCache();
|
|
27
|
+
/**
|
|
28
|
+
* Generate code quality resource
|
|
29
|
+
*/
|
|
30
|
+
export async function generateCodeQualityResource(_params, searchParams) {
|
|
31
|
+
// Extract query parameters
|
|
32
|
+
const scope = searchParams?.get('scope') || 'full';
|
|
33
|
+
const includeMetrics = searchParams?.get('includeMetrics') !== 'false';
|
|
34
|
+
const includeRecommendations = searchParams?.get('includeRecommendations') !== 'false';
|
|
35
|
+
const threshold = parseInt(searchParams?.get('threshold') || '70', 10);
|
|
36
|
+
const format = searchParams?.get('format') || 'detailed';
|
|
37
|
+
const cacheKey = `code-quality:${scope}:${includeMetrics}:${includeRecommendations}:${threshold}:${format}`;
|
|
38
|
+
// Check cache
|
|
39
|
+
const cached = await resourceCache.get(cacheKey);
|
|
40
|
+
if (cached) {
|
|
41
|
+
return cached;
|
|
42
|
+
}
|
|
43
|
+
// Try comprehensive analysis via deployment-readiness-tool
|
|
44
|
+
try {
|
|
45
|
+
const qualityData = await generateComprehensiveQuality(scope, includeMetrics, includeRecommendations, threshold, format);
|
|
46
|
+
const result = {
|
|
47
|
+
data: qualityData,
|
|
48
|
+
contentType: 'application/json',
|
|
49
|
+
lastModified: new Date().toISOString(),
|
|
50
|
+
cacheKey,
|
|
51
|
+
ttl: 300, // 5 minutes
|
|
52
|
+
etag: `"code-quality-${Date.now()}"`,
|
|
53
|
+
};
|
|
54
|
+
resourceCache.set(cacheKey, result, result.ttl);
|
|
55
|
+
return result;
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
console.error('[code-quality-resource] Falling back to basic analysis:', error);
|
|
59
|
+
// Fallback to basic analysis
|
|
60
|
+
const basicQuality = await generateBasicQuality(scope, threshold);
|
|
61
|
+
const result = {
|
|
62
|
+
data: basicQuality,
|
|
63
|
+
contentType: 'application/json',
|
|
64
|
+
lastModified: new Date().toISOString(),
|
|
65
|
+
cacheKey,
|
|
66
|
+
ttl: 300,
|
|
67
|
+
etag: `"code-quality-basic-${Date.now()}"`,
|
|
68
|
+
};
|
|
69
|
+
resourceCache.set(cacheKey, result, result.ttl);
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Generate comprehensive code quality via tool bridge
|
|
75
|
+
*/
|
|
76
|
+
async function generateComprehensiveQuality(scope, includeMetrics, includeRecommendations, threshold, _format) {
|
|
77
|
+
// Import deployment-readiness-tool for TreeSitter analysis
|
|
78
|
+
const { deploymentReadiness } = await import('../tools/deployment-readiness-tool.js');
|
|
79
|
+
// Call tool with check_readiness operation (includes code quality analysis)
|
|
80
|
+
const toolResult = await deploymentReadiness({
|
|
81
|
+
operation: 'check_readiness',
|
|
82
|
+
projectPath: process.cwd(),
|
|
83
|
+
targetEnvironment: 'production',
|
|
84
|
+
strictMode: true,
|
|
85
|
+
enableMemoryIntegration: false,
|
|
86
|
+
});
|
|
87
|
+
// Extract text from tool result
|
|
88
|
+
const toolOutputText = toolResult.content?.[0]?.text || '';
|
|
89
|
+
// Extract structured data from tool output
|
|
90
|
+
const qualityData = extractQualityDataFromToolOutput(toolOutputText, scope, threshold, includeMetrics, includeRecommendations);
|
|
91
|
+
return qualityData;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Extract code quality data from tool text output
|
|
95
|
+
*/
|
|
96
|
+
function extractQualityDataFromToolOutput(toolOutput, scope, _threshold, includeMetrics, includeRecommendations) {
|
|
97
|
+
const qualityData = {
|
|
98
|
+
scope,
|
|
99
|
+
timestamp: new Date().toISOString(),
|
|
100
|
+
overallScore: 0,
|
|
101
|
+
grade: 'F',
|
|
102
|
+
metrics: {
|
|
103
|
+
productionCodeScore: 0,
|
|
104
|
+
mockCodeIndicators: 0,
|
|
105
|
+
productionCodeThreshold: 70,
|
|
106
|
+
codebaseSize: {
|
|
107
|
+
totalFiles: 0,
|
|
108
|
+
totalLines: 0,
|
|
109
|
+
productionFiles: 0,
|
|
110
|
+
testFiles: 0,
|
|
111
|
+
mockFiles: 0,
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
metadata: {
|
|
115
|
+
scope,
|
|
116
|
+
analysisType: 'comprehensive',
|
|
117
|
+
confidence: 0.9,
|
|
118
|
+
timestamp: new Date().toISOString(),
|
|
119
|
+
dataSource: 'comprehensive-tool',
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
// Extract production code score
|
|
123
|
+
const productionScoreMatch = toolOutput.match(/production code score[:\s]+(\d+(?:\.\d+)?)\s*%/i);
|
|
124
|
+
if (productionScoreMatch?.[1]) {
|
|
125
|
+
qualityData.metrics.productionCodeScore = parseFloat(productionScoreMatch[1]);
|
|
126
|
+
qualityData.overallScore = qualityData.metrics.productionCodeScore;
|
|
127
|
+
}
|
|
128
|
+
// Extract mock indicators
|
|
129
|
+
const mockMatch = toolOutput.match(/mock[:\s]+(\d+)/i);
|
|
130
|
+
if (mockMatch?.[1]) {
|
|
131
|
+
qualityData.metrics.mockCodeIndicators = parseInt(mockMatch[1], 10);
|
|
132
|
+
}
|
|
133
|
+
// Extract file counts
|
|
134
|
+
const totalFilesMatch = toolOutput.match(/total files[:\s]+(\d+)/i);
|
|
135
|
+
const productionFilesMatch = toolOutput.match(/production files[:\s]+(\d+)/i);
|
|
136
|
+
const testFilesMatch = toolOutput.match(/test files[:\s]+(\d+)/i);
|
|
137
|
+
const mockFilesMatch = toolOutput.match(/mock files[:\s]+(\d+)/i);
|
|
138
|
+
if (totalFilesMatch?.[1]) {
|
|
139
|
+
qualityData.metrics.codebaseSize.totalFiles = parseInt(totalFilesMatch[1], 10);
|
|
140
|
+
}
|
|
141
|
+
if (productionFilesMatch?.[1]) {
|
|
142
|
+
qualityData.metrics.codebaseSize.productionFiles = parseInt(productionFilesMatch[1], 10);
|
|
143
|
+
}
|
|
144
|
+
if (testFilesMatch?.[1]) {
|
|
145
|
+
qualityData.metrics.codebaseSize.testFiles = parseInt(testFilesMatch[1], 10);
|
|
146
|
+
}
|
|
147
|
+
if (mockFilesMatch?.[1]) {
|
|
148
|
+
qualityData.metrics.codebaseSize.mockFiles = parseInt(mockFilesMatch[1], 10);
|
|
149
|
+
}
|
|
150
|
+
// Calculate grade
|
|
151
|
+
qualityData.grade = calculateGrade(qualityData.overallScore);
|
|
152
|
+
// Extract quality gates if includeMetrics
|
|
153
|
+
if (includeMetrics) {
|
|
154
|
+
qualityData.qualityGates = extractQualityGates(toolOutput);
|
|
155
|
+
}
|
|
156
|
+
// Extract recommendations if requested
|
|
157
|
+
if (includeRecommendations) {
|
|
158
|
+
qualityData.recommendations = extractRecommendations(toolOutput);
|
|
159
|
+
}
|
|
160
|
+
return qualityData;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Extract quality gates from tool output
|
|
164
|
+
*/
|
|
165
|
+
function extractQualityGates(toolOutput) {
|
|
166
|
+
const gates = [];
|
|
167
|
+
// Look for quality gate patterns in output
|
|
168
|
+
const gatePattern = /(?:gate|check)[:\s]+(.+?)[:\s]+(\d+(?:\.\d+)?)\s*\/\s*(\d+(?:\.\d+)?)/gi;
|
|
169
|
+
let match;
|
|
170
|
+
while ((match = gatePattern.exec(toolOutput)) !== null) {
|
|
171
|
+
const gateName = match[1]?.trim();
|
|
172
|
+
const actual = parseFloat(match[2] || '0');
|
|
173
|
+
const threshold = parseFloat(match[3] || '0');
|
|
174
|
+
if (gateName) {
|
|
175
|
+
gates.push({
|
|
176
|
+
gate: gateName,
|
|
177
|
+
passed: actual >= threshold,
|
|
178
|
+
threshold,
|
|
179
|
+
actual,
|
|
180
|
+
severity: actual >= threshold ? 'low' : 'high',
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return gates;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Extract recommendations from tool output
|
|
188
|
+
*/
|
|
189
|
+
function extractRecommendations(toolOutput) {
|
|
190
|
+
const recommendations = [];
|
|
191
|
+
// Look for recommendation patterns
|
|
192
|
+
if (toolOutput.includes('mock') || toolOutput.includes('test')) {
|
|
193
|
+
recommendations.push({
|
|
194
|
+
priority: 'high',
|
|
195
|
+
category: 'testing',
|
|
196
|
+
title: 'Reduce Mock Code',
|
|
197
|
+
description: 'Decrease reliance on mocks in favor of integration tests',
|
|
198
|
+
impact: 'Improved test reliability and production confidence',
|
|
199
|
+
effort: 'medium',
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
if (toolOutput.includes('fail') || toolOutput.includes('error')) {
|
|
203
|
+
recommendations.push({
|
|
204
|
+
priority: 'critical',
|
|
205
|
+
category: 'quality',
|
|
206
|
+
title: 'Fix Test Failures',
|
|
207
|
+
description: 'Address all failing tests before deployment',
|
|
208
|
+
impact: 'Zero-tolerance quality gate compliance',
|
|
209
|
+
effort: 'high',
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
return recommendations;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Calculate letter grade from score
|
|
216
|
+
*/
|
|
217
|
+
function calculateGrade(score) {
|
|
218
|
+
if (score >= 90)
|
|
219
|
+
return 'A';
|
|
220
|
+
if (score >= 80)
|
|
221
|
+
return 'B';
|
|
222
|
+
if (score >= 70)
|
|
223
|
+
return 'C';
|
|
224
|
+
if (score >= 60)
|
|
225
|
+
return 'D';
|
|
226
|
+
return 'F';
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Generate basic code quality (fallback)
|
|
230
|
+
*/
|
|
231
|
+
async function generateBasicQuality(scope, threshold) {
|
|
232
|
+
// Count TypeScript files for basic metrics
|
|
233
|
+
let totalFiles = 0;
|
|
234
|
+
let totalLines = 0;
|
|
235
|
+
try {
|
|
236
|
+
const srcPath = path.resolve(process.cwd(), 'src');
|
|
237
|
+
const files = await fs.readdir(srcPath, { recursive: true });
|
|
238
|
+
for (const file of files) {
|
|
239
|
+
if (typeof file === 'string' && file.endsWith('.ts')) {
|
|
240
|
+
totalFiles++;
|
|
241
|
+
try {
|
|
242
|
+
const filePath = path.join(srcPath, file);
|
|
243
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
244
|
+
totalLines += content.split('\n').length;
|
|
245
|
+
}
|
|
246
|
+
catch {
|
|
247
|
+
// Ignore file read errors
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
catch {
|
|
253
|
+
// Ignore directory errors
|
|
254
|
+
}
|
|
255
|
+
const basicScore = totalFiles > 0 ? 75 : 0; // Assume 75% if files exist
|
|
256
|
+
return {
|
|
257
|
+
scope,
|
|
258
|
+
timestamp: new Date().toISOString(),
|
|
259
|
+
overallScore: basicScore,
|
|
260
|
+
grade: calculateGrade(basicScore),
|
|
261
|
+
metrics: {
|
|
262
|
+
productionCodeScore: basicScore,
|
|
263
|
+
mockCodeIndicators: 0,
|
|
264
|
+
productionCodeThreshold: threshold,
|
|
265
|
+
codebaseSize: {
|
|
266
|
+
totalFiles,
|
|
267
|
+
totalLines,
|
|
268
|
+
productionFiles: totalFiles,
|
|
269
|
+
testFiles: 0,
|
|
270
|
+
mockFiles: 0,
|
|
271
|
+
},
|
|
272
|
+
},
|
|
273
|
+
metadata: {
|
|
274
|
+
scope,
|
|
275
|
+
analysisType: 'basic',
|
|
276
|
+
confidence: 0.5,
|
|
277
|
+
timestamp: new Date().toISOString(),
|
|
278
|
+
dataSource: 'basic-analysis',
|
|
279
|
+
},
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=code-quality-resource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-quality-resource.js","sourceRoot":"","sources":["../../../src/resources/code-quality-resource.ts"],"names":[],"mappings":"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"}
|