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,646 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment Analysis Resource - System environment details
|
|
3
|
+
* URI Pattern: adr://environment_analysis
|
|
4
|
+
*
|
|
5
|
+
* Enhanced with Bridge Pattern to leverage comprehensive environment-analysis-tool
|
|
6
|
+
* Supports query parameters for analysis types and features
|
|
7
|
+
*/
|
|
8
|
+
import * as fs from 'fs/promises';
|
|
9
|
+
import * as path from 'path';
|
|
10
|
+
import * as os from 'os';
|
|
11
|
+
import { exec } from 'child_process';
|
|
12
|
+
import { promisify } from 'util';
|
|
13
|
+
import { resourceCache, generateETag } from './resource-cache.js';
|
|
14
|
+
const execAsync = promisify(exec);
|
|
15
|
+
/**
|
|
16
|
+
* Get system information (fallback/basic implementation)
|
|
17
|
+
*/
|
|
18
|
+
function getSystemInfo() {
|
|
19
|
+
const totalMem = os.totalmem();
|
|
20
|
+
const freeMem = os.freemem();
|
|
21
|
+
return {
|
|
22
|
+
platform: os.platform(),
|
|
23
|
+
arch: os.arch(),
|
|
24
|
+
release: os.release(),
|
|
25
|
+
nodeVersion: process.version,
|
|
26
|
+
hostname: os.hostname(),
|
|
27
|
+
cpus: os.cpus().length,
|
|
28
|
+
totalMemory: `${(totalMem / 1024 / 1024 / 1024).toFixed(2)} GB`,
|
|
29
|
+
freeMemory: `${(freeMem / 1024 / 1024 / 1024).toFixed(2)} GB`,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get npm version (fallback/basic implementation)
|
|
34
|
+
*/
|
|
35
|
+
async function getNpmVersion() {
|
|
36
|
+
try {
|
|
37
|
+
const result = await execAsync('npm --version');
|
|
38
|
+
return result.stdout.trim();
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return 'unknown';
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Detect package manager (fallback/basic implementation)
|
|
46
|
+
*/
|
|
47
|
+
async function detectPackageManager() {
|
|
48
|
+
const projectRoot = process.cwd();
|
|
49
|
+
const checks = [
|
|
50
|
+
{ file: 'pnpm-lock.yaml', manager: 'pnpm' },
|
|
51
|
+
{ file: 'yarn.lock', manager: 'yarn' },
|
|
52
|
+
{ file: 'package-lock.json', manager: 'npm' },
|
|
53
|
+
];
|
|
54
|
+
for (const check of checks) {
|
|
55
|
+
try {
|
|
56
|
+
await fs.access(path.join(projectRoot, check.file));
|
|
57
|
+
return check.manager;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return 'unknown';
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Get project information (fallback/basic implementation)
|
|
67
|
+
*/
|
|
68
|
+
async function getProjectInfo() {
|
|
69
|
+
const projectRoot = process.cwd();
|
|
70
|
+
const frameworks = [];
|
|
71
|
+
let hasGit = false;
|
|
72
|
+
try {
|
|
73
|
+
await fs.access(path.join(projectRoot, '.git'));
|
|
74
|
+
hasGit = true;
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
hasGit = false;
|
|
78
|
+
}
|
|
79
|
+
let hasTypeScript = false;
|
|
80
|
+
try {
|
|
81
|
+
await fs.access(path.join(projectRoot, 'tsconfig.json'));
|
|
82
|
+
hasTypeScript = true;
|
|
83
|
+
frameworks.push('TypeScript');
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
hasTypeScript = false;
|
|
87
|
+
}
|
|
88
|
+
let hasTests = false;
|
|
89
|
+
try {
|
|
90
|
+
const packagePath = path.join(projectRoot, 'package.json');
|
|
91
|
+
const packageContent = await fs.readFile(packagePath, 'utf-8');
|
|
92
|
+
const packageJson = JSON.parse(packageContent);
|
|
93
|
+
hasTests = !!packageJson.scripts?.test;
|
|
94
|
+
const allDeps = {
|
|
95
|
+
...packageJson.dependencies,
|
|
96
|
+
...packageJson.devDependencies,
|
|
97
|
+
};
|
|
98
|
+
if (allDeps['@modelcontextprotocol/sdk'])
|
|
99
|
+
frameworks.push('MCP');
|
|
100
|
+
if (allDeps['jest'])
|
|
101
|
+
frameworks.push('Jest');
|
|
102
|
+
if (allDeps['react'])
|
|
103
|
+
frameworks.push('React');
|
|
104
|
+
if (allDeps['vue'])
|
|
105
|
+
frameworks.push('Vue');
|
|
106
|
+
if (allDeps['angular'])
|
|
107
|
+
frameworks.push('Angular');
|
|
108
|
+
if (allDeps['express'])
|
|
109
|
+
frameworks.push('Express');
|
|
110
|
+
if (allDeps['fastify'])
|
|
111
|
+
frameworks.push('Fastify');
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
hasTests = false;
|
|
115
|
+
}
|
|
116
|
+
const packageManager = await detectPackageManager();
|
|
117
|
+
return {
|
|
118
|
+
root: projectRoot,
|
|
119
|
+
hasGit,
|
|
120
|
+
hasTypeScript,
|
|
121
|
+
hasTests,
|
|
122
|
+
packageManager,
|
|
123
|
+
frameworks,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Get dependencies from package.json (fallback/basic implementation)
|
|
128
|
+
*/
|
|
129
|
+
async function getDependencies() {
|
|
130
|
+
try {
|
|
131
|
+
const packagePath = path.resolve(process.cwd(), 'package.json');
|
|
132
|
+
const packageContent = await fs.readFile(packagePath, 'utf-8');
|
|
133
|
+
const packageJson = JSON.parse(packageContent);
|
|
134
|
+
return {
|
|
135
|
+
runtime: packageJson.dependencies || {},
|
|
136
|
+
development: packageJson.devDependencies || {},
|
|
137
|
+
peer: packageJson.peerDependencies || {},
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
return {
|
|
142
|
+
runtime: {},
|
|
143
|
+
development: {},
|
|
144
|
+
peer: {},
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Get environment variables (masked sensitive ones)
|
|
150
|
+
*/
|
|
151
|
+
function getEnvironmentVariables() {
|
|
152
|
+
const sensitiveKeys = ['API_KEY', 'SECRET', 'PASSWORD', 'TOKEN', 'PRIVATE'];
|
|
153
|
+
const env = {};
|
|
154
|
+
for (const [key, value] of Object.entries(process.env)) {
|
|
155
|
+
const isSensitive = sensitiveKeys.some(sensitive => key.toUpperCase().includes(sensitive));
|
|
156
|
+
if (isSensitive && value) {
|
|
157
|
+
env[key] = '***masked***';
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
env[key] = value;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return env;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Get environment paths
|
|
167
|
+
*/
|
|
168
|
+
async function getEnvironmentPaths() {
|
|
169
|
+
let nodePath = 'unknown';
|
|
170
|
+
let npmPath = 'unknown';
|
|
171
|
+
try {
|
|
172
|
+
const nodeResult = await execAsync('which node');
|
|
173
|
+
nodePath = nodeResult.stdout.trim();
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
nodePath = process.execPath;
|
|
177
|
+
}
|
|
178
|
+
try {
|
|
179
|
+
const npmResult = await execAsync('which npm');
|
|
180
|
+
npmPath = npmResult.stdout.trim();
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
npmPath = 'unknown';
|
|
184
|
+
}
|
|
185
|
+
return {
|
|
186
|
+
node: nodePath,
|
|
187
|
+
npm: npmPath,
|
|
188
|
+
projectRoot: process.cwd(),
|
|
189
|
+
adrDirectory: process.env['ADR_DIRECTORY'] || 'docs/adrs',
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Get system capabilities
|
|
194
|
+
*/
|
|
195
|
+
function getCapabilities() {
|
|
196
|
+
return {
|
|
197
|
+
aiExecution: !!process.env['OPENROUTER_API_KEY'],
|
|
198
|
+
knowledgeGraph: true,
|
|
199
|
+
caching: true,
|
|
200
|
+
masking: true,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Get disk space information
|
|
205
|
+
*/
|
|
206
|
+
async function getDiskSpace() {
|
|
207
|
+
try {
|
|
208
|
+
if (os.platform() === 'darwin' || os.platform() === 'linux') {
|
|
209
|
+
const result = await execAsync('df -h . | tail -1');
|
|
210
|
+
const parts = result.stdout.trim().split(/\s+/);
|
|
211
|
+
if (parts.length >= 5) {
|
|
212
|
+
return {
|
|
213
|
+
total: parts[1] || 'unknown',
|
|
214
|
+
free: parts[3] || 'unknown',
|
|
215
|
+
usagePercent: parseInt(parts[4]?.replace('%', '') || '0', 10),
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
catch {
|
|
221
|
+
// Fall through to default
|
|
222
|
+
}
|
|
223
|
+
return {
|
|
224
|
+
total: 'unknown',
|
|
225
|
+
free: 'unknown',
|
|
226
|
+
usagePercent: 0,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Get health metrics
|
|
231
|
+
*/
|
|
232
|
+
async function getHealthMetrics() {
|
|
233
|
+
const diskSpace = await getDiskSpace();
|
|
234
|
+
return {
|
|
235
|
+
diskSpace,
|
|
236
|
+
performance: {
|
|
237
|
+
uptime: os.uptime(),
|
|
238
|
+
loadAverage: os.loadavg(),
|
|
239
|
+
},
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Extract structured data from tool's text output
|
|
244
|
+
*/
|
|
245
|
+
function extractStructuredDataFromToolOutput(toolOutput) {
|
|
246
|
+
const extracted = {};
|
|
247
|
+
// Extract infrastructure information
|
|
248
|
+
if (toolOutput.includes('Infrastructure') || toolOutput.includes('infrastructure')) {
|
|
249
|
+
const components = [];
|
|
250
|
+
const infraMatch = toolOutput.match(/infrastructure[:\s]+([^\n]+)/i);
|
|
251
|
+
if (infraMatch && infraMatch[1]) {
|
|
252
|
+
components.push(infraMatch[1].trim());
|
|
253
|
+
}
|
|
254
|
+
extracted.infrastructure = {
|
|
255
|
+
components: {},
|
|
256
|
+
services: components,
|
|
257
|
+
topology: toolOutput.includes('distributed') ? 'distributed' : 'monolithic',
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
// Extract containerization information
|
|
261
|
+
const dockerDetected = toolOutput.toLowerCase().includes('docker');
|
|
262
|
+
const kubernetesDetected = toolOutput.toLowerCase().includes('kubernetes') || toolOutput.toLowerCase().includes('k8s');
|
|
263
|
+
if (dockerDetected || kubernetesDetected) {
|
|
264
|
+
const technologies = [];
|
|
265
|
+
if (dockerDetected)
|
|
266
|
+
technologies.push('Docker');
|
|
267
|
+
if (kubernetesDetected)
|
|
268
|
+
technologies.push('Kubernetes');
|
|
269
|
+
if (toolOutput.toLowerCase().includes('podman'))
|
|
270
|
+
technologies.push('Podman');
|
|
271
|
+
if (toolOutput.toLowerCase().includes('containerd'))
|
|
272
|
+
technologies.push('containerd');
|
|
273
|
+
extracted.containerization = {
|
|
274
|
+
detected: true,
|
|
275
|
+
technologies,
|
|
276
|
+
dockerfiles: (toolOutput.match(/dockerfile/gi) || []).length,
|
|
277
|
+
composeFiles: (toolOutput.match(/docker-compose/gi) || []).length,
|
|
278
|
+
kubernetes: kubernetesDetected,
|
|
279
|
+
security: {
|
|
280
|
+
score: toolOutput.toLowerCase().includes('security') ? 75 : 50,
|
|
281
|
+
issues: extractListItems(toolOutput, ['vulnerability', 'insecure', 'risk']),
|
|
282
|
+
},
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
// Extract cloud services
|
|
286
|
+
const cloudProviders = extractTechnologies(toolOutput, [
|
|
287
|
+
'aws',
|
|
288
|
+
'azure',
|
|
289
|
+
'gcp',
|
|
290
|
+
'google cloud',
|
|
291
|
+
'heroku',
|
|
292
|
+
'vercel',
|
|
293
|
+
'netlify',
|
|
294
|
+
]);
|
|
295
|
+
if (cloudProviders.length > 0) {
|
|
296
|
+
extracted.cloudServices = {
|
|
297
|
+
providers: cloudProviders,
|
|
298
|
+
services: extractListItems(toolOutput, [
|
|
299
|
+
'lambda',
|
|
300
|
+
'ec2',
|
|
301
|
+
's3',
|
|
302
|
+
'rds',
|
|
303
|
+
'functions',
|
|
304
|
+
'storage',
|
|
305
|
+
]),
|
|
306
|
+
deployment: toolOutput.toLowerCase().includes('serverless') ? 'serverless' : 'traditional',
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
// Extract security information
|
|
310
|
+
const httpsEnabled = toolOutput.toLowerCase().includes('https') || toolOutput.toLowerCase().includes('ssl');
|
|
311
|
+
const authSetup = toolOutput.toLowerCase().includes('auth') ||
|
|
312
|
+
toolOutput.toLowerCase().includes('authentication');
|
|
313
|
+
extracted.security = {
|
|
314
|
+
httpsEnabled,
|
|
315
|
+
authenticationSetup: authSetup,
|
|
316
|
+
secretManagement: toolOutput.toLowerCase().includes('secret') &&
|
|
317
|
+
toolOutput.toLowerCase().includes('management'),
|
|
318
|
+
complianceFrameworks: extractTechnologies(toolOutput, [
|
|
319
|
+
'gdpr',
|
|
320
|
+
'soc2',
|
|
321
|
+
'iso27001',
|
|
322
|
+
'hipaa',
|
|
323
|
+
'pci',
|
|
324
|
+
]),
|
|
325
|
+
vulnerabilities: (toolOutput.match(/vulnerability|vulnerable/gi) || []).length,
|
|
326
|
+
};
|
|
327
|
+
// Extract deployment information
|
|
328
|
+
const cicdDetected = toolOutput.toLowerCase().includes('ci/cd') || toolOutput.toLowerCase().includes('pipeline');
|
|
329
|
+
extracted.deployment = {
|
|
330
|
+
cicdDetected,
|
|
331
|
+
pipeline: extractTechnologies(toolOutput, [
|
|
332
|
+
'github actions',
|
|
333
|
+
'gitlab ci',
|
|
334
|
+
'jenkins',
|
|
335
|
+
'circleci',
|
|
336
|
+
'travis',
|
|
337
|
+
])[0] || 'unknown',
|
|
338
|
+
automated: cicdDetected,
|
|
339
|
+
frequency: toolOutput.toLowerCase().includes('continuous') ? 'continuous' : 'manual',
|
|
340
|
+
};
|
|
341
|
+
// Extract monitoring information
|
|
342
|
+
const monitoringTools = extractTechnologies(toolOutput, [
|
|
343
|
+
'prometheus',
|
|
344
|
+
'grafana',
|
|
345
|
+
'datadog',
|
|
346
|
+
'new relic',
|
|
347
|
+
'cloudwatch',
|
|
348
|
+
'stackdriver',
|
|
349
|
+
]);
|
|
350
|
+
extracted.monitoring = {
|
|
351
|
+
toolsDetected: monitoringTools,
|
|
352
|
+
metricsEnabled: toolOutput.toLowerCase().includes('metrics'),
|
|
353
|
+
loggingEnabled: toolOutput.toLowerCase().includes('logging') || toolOutput.toLowerCase().includes('logs'),
|
|
354
|
+
tracingEnabled: toolOutput.toLowerCase().includes('tracing') || toolOutput.toLowerCase().includes('jaeger'),
|
|
355
|
+
};
|
|
356
|
+
// Extract ADR integration
|
|
357
|
+
const adrMentioned = toolOutput.toLowerCase().includes('adr') ||
|
|
358
|
+
toolOutput.toLowerCase().includes('architecture decision');
|
|
359
|
+
if (adrMentioned) {
|
|
360
|
+
extracted.adrIntegration = {
|
|
361
|
+
requirementsExtracted: true,
|
|
362
|
+
totalRequirements: (toolOutput.match(/requirement/gi) || []).length,
|
|
363
|
+
infrastructureRequirements: extractListItems(toolOutput, ['infrastructure requirement']),
|
|
364
|
+
securityRequirements: extractListItems(toolOutput, ['security requirement']),
|
|
365
|
+
};
|
|
366
|
+
}
|
|
367
|
+
// Extract quality attributes
|
|
368
|
+
extracted.qualityAttributes = {
|
|
369
|
+
performance: toolOutput.toLowerCase().includes('performance') ? 'mentioned' : 'not mentioned',
|
|
370
|
+
scalability: toolOutput.toLowerCase().includes('scalability') ||
|
|
371
|
+
toolOutput.toLowerCase().includes('scalable')
|
|
372
|
+
? 'mentioned'
|
|
373
|
+
: 'not mentioned',
|
|
374
|
+
reliability: toolOutput.toLowerCase().includes('reliability') ||
|
|
375
|
+
toolOutput.toLowerCase().includes('reliable')
|
|
376
|
+
? 'mentioned'
|
|
377
|
+
: 'not mentioned',
|
|
378
|
+
maintainability: toolOutput.toLowerCase().includes('maintainability') ||
|
|
379
|
+
toolOutput.toLowerCase().includes('maintainable')
|
|
380
|
+
? 'mentioned'
|
|
381
|
+
: 'not mentioned',
|
|
382
|
+
security: toolOutput.toLowerCase().includes('security') ? 'mentioned' : 'not mentioned',
|
|
383
|
+
};
|
|
384
|
+
// Extract risk assessment
|
|
385
|
+
const risks = extractListItems(toolOutput, ['risk', 'vulnerability', 'issue', 'concern']);
|
|
386
|
+
extracted.riskAssessment = {
|
|
387
|
+
risks,
|
|
388
|
+
riskLevel: risks.length > 5 ? 'high' : risks.length > 2 ? 'medium' : 'low',
|
|
389
|
+
mitigations: extractListItems(toolOutput, ['mitigation', 'recommendation', 'solution']),
|
|
390
|
+
};
|
|
391
|
+
return extracted;
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Helper: Extract technologies from text
|
|
395
|
+
*/
|
|
396
|
+
function extractTechnologies(content, technologies) {
|
|
397
|
+
const found = [];
|
|
398
|
+
const lowerContent = content.toLowerCase();
|
|
399
|
+
for (const tech of technologies) {
|
|
400
|
+
if (lowerContent.includes(tech.toLowerCase())) {
|
|
401
|
+
found.push(tech);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
return found;
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Helper: Extract list items containing keywords
|
|
408
|
+
*/
|
|
409
|
+
function extractListItems(content, keywords) {
|
|
410
|
+
const items = [];
|
|
411
|
+
const lines = content.split('\n');
|
|
412
|
+
for (const line of lines) {
|
|
413
|
+
const trimmed = line.trim();
|
|
414
|
+
if (trimmed.startsWith('- ') || trimmed.startsWith('* ')) {
|
|
415
|
+
const itemText = trimmed.substring(2).trim();
|
|
416
|
+
for (const keyword of keywords) {
|
|
417
|
+
if (itemText.toLowerCase().includes(keyword.toLowerCase())) {
|
|
418
|
+
items.push(itemText);
|
|
419
|
+
break;
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
return items;
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Generate basic environment analysis (fallback when tool is unavailable)
|
|
428
|
+
*/
|
|
429
|
+
async function generateBasicAnalysis() {
|
|
430
|
+
const systemInfo = getSystemInfo();
|
|
431
|
+
const npmVersion = await getNpmVersion();
|
|
432
|
+
const projectInfo = await getProjectInfo();
|
|
433
|
+
const dependencies = await getDependencies();
|
|
434
|
+
const environmentVariables = getEnvironmentVariables();
|
|
435
|
+
const paths = await getEnvironmentPaths();
|
|
436
|
+
const capabilities = getCapabilities();
|
|
437
|
+
const health = await getHealthMetrics();
|
|
438
|
+
return {
|
|
439
|
+
system: {
|
|
440
|
+
...systemInfo,
|
|
441
|
+
npmVersion,
|
|
442
|
+
},
|
|
443
|
+
project: projectInfo,
|
|
444
|
+
dependencies,
|
|
445
|
+
environment: {
|
|
446
|
+
variables: environmentVariables,
|
|
447
|
+
paths,
|
|
448
|
+
},
|
|
449
|
+
capabilities,
|
|
450
|
+
health,
|
|
451
|
+
analysisMetadata: {
|
|
452
|
+
analysisType: 'basic',
|
|
453
|
+
timestamp: new Date().toISOString(),
|
|
454
|
+
confidence: 0.6,
|
|
455
|
+
source: 'basic',
|
|
456
|
+
memoryIntegration: false,
|
|
457
|
+
},
|
|
458
|
+
};
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Generate comprehensive environment analysis using the tool
|
|
462
|
+
*/
|
|
463
|
+
async function generateComprehensiveAnalysis(analysisType, enableMemory) {
|
|
464
|
+
try {
|
|
465
|
+
// Import the comprehensive tool
|
|
466
|
+
const { analyzeEnvironment } = await import('../tools/environment-analysis-tool.js');
|
|
467
|
+
// Call the tool with appropriate parameters
|
|
468
|
+
const toolResult = await analyzeEnvironment({
|
|
469
|
+
projectPath: process.cwd(),
|
|
470
|
+
adrDirectory: process.env['ADR_DIRECTORY'] || 'docs/adrs',
|
|
471
|
+
analysisType: analysisType,
|
|
472
|
+
knowledgeEnhancement: true,
|
|
473
|
+
enhancedMode: true,
|
|
474
|
+
enableMemoryIntegration: enableMemory,
|
|
475
|
+
environmentType: process.env['NODE_ENV'] || 'development',
|
|
476
|
+
});
|
|
477
|
+
// Extract text content from tool result
|
|
478
|
+
let toolOutputText = '';
|
|
479
|
+
if (toolResult.content && Array.isArray(toolResult.content)) {
|
|
480
|
+
for (const item of toolResult.content) {
|
|
481
|
+
if (item.type === 'text' && item.text) {
|
|
482
|
+
toolOutputText += item.text + '\n';
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
// Get basic data
|
|
487
|
+
const basicAnalysis = await generateBasicAnalysis();
|
|
488
|
+
// Extract enhanced data from tool output
|
|
489
|
+
const enhancedData = extractStructuredDataFromToolOutput(toolOutputText);
|
|
490
|
+
// Merge basic and enhanced data
|
|
491
|
+
const comprehensiveAnalysis = {
|
|
492
|
+
...basicAnalysis,
|
|
493
|
+
...enhancedData,
|
|
494
|
+
analysisMetadata: {
|
|
495
|
+
analysisType,
|
|
496
|
+
timestamp: new Date().toISOString(),
|
|
497
|
+
confidence: 0.9,
|
|
498
|
+
source: 'comprehensive-tool',
|
|
499
|
+
memoryIntegration: enableMemory,
|
|
500
|
+
},
|
|
501
|
+
};
|
|
502
|
+
return comprehensiveAnalysis;
|
|
503
|
+
}
|
|
504
|
+
catch (error) {
|
|
505
|
+
console.error('[environment-analysis-resource] Tool execution failed, falling back to basic analysis:', error);
|
|
506
|
+
return generateBasicAnalysis();
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
/**
|
|
510
|
+
* Generate comprehensive environment analysis resource with infrastructure detection and cloud services discovery.
|
|
511
|
+
*
|
|
512
|
+
* Analyzes the runtime environment, system specifications, project dependencies, containerization setup,
|
|
513
|
+
* cloud services configuration, and security posture to provide complete environmental context.
|
|
514
|
+
*
|
|
515
|
+
* **Query Parameters:**
|
|
516
|
+
* - `type`: Analysis type - "specs" (system specs), "infrastructure" (detailed infra), or "security" (security focus) (default: "specs")
|
|
517
|
+
* - `memory`: Enable memory integration for historical environment tracking (default: true)
|
|
518
|
+
* - `comprehensive`: Use comprehensive analysis via tool bridge (default: true)
|
|
519
|
+
*
|
|
520
|
+
* **Comprehensive Mode includes:**
|
|
521
|
+
* - Advanced infrastructure component detection (Kubernetes, Docker, databases)
|
|
522
|
+
* - Cloud services discovery (AWS, Azure, GCP, Vercel, Netlify)
|
|
523
|
+
* - Container security analysis with scoring
|
|
524
|
+
* - HTTPS/authentication/secrets management checks
|
|
525
|
+
* - Compliance framework detection (SOC2, HIPAA, GDPR, PCI-DSS)
|
|
526
|
+
* - Real-time health metrics (disk space, load average, uptime)
|
|
527
|
+
*
|
|
528
|
+
* **Basic Mode includes:**
|
|
529
|
+
* - System specifications (OS, arch, Node.js, npm versions)
|
|
530
|
+
* - Project structure analysis (TypeScript, tests, package manager)
|
|
531
|
+
* - Runtime dependencies catalog
|
|
532
|
+
* - Environment variables overview
|
|
533
|
+
* - Basic capability flags
|
|
534
|
+
*
|
|
535
|
+
* @param _params - URL path parameters (currently unused, reserved for future routing)
|
|
536
|
+
* @param searchParams - URL query parameters controlling analysis depth and type
|
|
537
|
+
*
|
|
538
|
+
* @returns Promise resolving to resource generation result containing:
|
|
539
|
+
* - data: Complete environment analysis with system, project, and infrastructure details
|
|
540
|
+
* - contentType: "application/json"
|
|
541
|
+
* - lastModified: ISO timestamp of generation
|
|
542
|
+
* - cacheKey: Unique identifier based on analysis type and options
|
|
543
|
+
* - ttl: Cache duration (300 seconds / 5 minutes)
|
|
544
|
+
* - etag: Entity tag for cache validation
|
|
545
|
+
*
|
|
546
|
+
* @throws {Error} Rarely throws; gracefully handles analysis failures by:
|
|
547
|
+
* - Falling back to basic analysis if comprehensive fails
|
|
548
|
+
* - Returning partial data for unavailable metrics
|
|
549
|
+
* - Logging warnings for non-critical errors
|
|
550
|
+
*
|
|
551
|
+
* @example
|
|
552
|
+
* ```typescript
|
|
553
|
+
* // Get comprehensive environment analysis
|
|
554
|
+
* const env = await generateEnvironmentAnalysisResource(
|
|
555
|
+
* {},
|
|
556
|
+
* new URLSearchParams('type=infrastructure&memory=true')
|
|
557
|
+
* );
|
|
558
|
+
*
|
|
559
|
+
* console.log(`Platform: ${env.data.system.platform} ${env.data.system.arch}`);
|
|
560
|
+
* console.log(`Node: ${env.data.system.nodeVersion}`);
|
|
561
|
+
* console.log(`AI Execution: ${env.data.capabilities.aiExecution ? 'Enabled' : 'Disabled'}`);
|
|
562
|
+
*
|
|
563
|
+
* // Check containerization
|
|
564
|
+
* if (env.data.containerization?.detected) {
|
|
565
|
+
* console.log(`Container tech: ${env.data.containerization.technologies.join(', ')}`);
|
|
566
|
+
* console.log(`Security score: ${env.data.containerization.security.score}`);
|
|
567
|
+
* }
|
|
568
|
+
*
|
|
569
|
+
* // Check cloud services
|
|
570
|
+
* if (env.data.cloudServices) {
|
|
571
|
+
* console.log(`Cloud providers: ${env.data.cloudServices.providers.join(', ')}`);
|
|
572
|
+
* console.log(`Services: ${env.data.cloudServices.services.length}`);
|
|
573
|
+
* }
|
|
574
|
+
*
|
|
575
|
+
* // Basic mode example (faster)
|
|
576
|
+
* const basicEnv = await generateEnvironmentAnalysisResource(
|
|
577
|
+
* {},
|
|
578
|
+
* new URLSearchParams('comprehensive=false')
|
|
579
|
+
* );
|
|
580
|
+
*
|
|
581
|
+
* // Expected output structure:
|
|
582
|
+
* {
|
|
583
|
+
* data: {
|
|
584
|
+
* system: {
|
|
585
|
+
* platform: "linux",
|
|
586
|
+
* arch: "x64",
|
|
587
|
+
* nodeVersion: "20.10.0",
|
|
588
|
+
* npmVersion: "10.2.3"
|
|
589
|
+
* },
|
|
590
|
+
* project: {
|
|
591
|
+
* hasTypeScript: true,
|
|
592
|
+
* hasTests: true,
|
|
593
|
+
* frameworks: ["express", "jest"]
|
|
594
|
+
* },
|
|
595
|
+
* capabilities: {
|
|
596
|
+
* aiExecution: true,
|
|
597
|
+
* knowledgeGraph: true,
|
|
598
|
+
* caching: true
|
|
599
|
+
* },
|
|
600
|
+
* containerization: {
|
|
601
|
+
* detected: true,
|
|
602
|
+
* technologies: ["docker"],
|
|
603
|
+
* security: { score: 85 }
|
|
604
|
+
* }
|
|
605
|
+
* },
|
|
606
|
+
* contentType: "application/json",
|
|
607
|
+
* cacheKey: "environment-analysis:specs:true:true",
|
|
608
|
+
* ttl: 300
|
|
609
|
+
* }
|
|
610
|
+
* ```
|
|
611
|
+
*
|
|
612
|
+
* @since v2.0.0
|
|
613
|
+
* @see {@link environmentAnalysis} tool for underlying analysis engine
|
|
614
|
+
*/
|
|
615
|
+
export async function generateEnvironmentAnalysisResource(_params, searchParams) {
|
|
616
|
+
// Extract query parameters
|
|
617
|
+
const analysisType = searchParams?.get('type') || 'specs';
|
|
618
|
+
const enableMemory = searchParams?.get('memory') !== 'false';
|
|
619
|
+
const useComprehensive = searchParams?.get('comprehensive') !== 'false';
|
|
620
|
+
const cacheKey = `environment-analysis:${analysisType}:${enableMemory}:${useComprehensive}`;
|
|
621
|
+
// Check cache
|
|
622
|
+
const cached = await resourceCache.get(cacheKey);
|
|
623
|
+
if (cached) {
|
|
624
|
+
return cached;
|
|
625
|
+
}
|
|
626
|
+
// Generate analysis (comprehensive or basic)
|
|
627
|
+
let environmentAnalysis;
|
|
628
|
+
if (useComprehensive) {
|
|
629
|
+
environmentAnalysis = await generateComprehensiveAnalysis(analysisType, enableMemory);
|
|
630
|
+
}
|
|
631
|
+
else {
|
|
632
|
+
environmentAnalysis = await generateBasicAnalysis();
|
|
633
|
+
}
|
|
634
|
+
const result = {
|
|
635
|
+
data: environmentAnalysis,
|
|
636
|
+
contentType: 'application/json',
|
|
637
|
+
lastModified: new Date().toISOString(),
|
|
638
|
+
cacheKey,
|
|
639
|
+
ttl: 300, // 5 minutes cache
|
|
640
|
+
etag: generateETag(environmentAnalysis),
|
|
641
|
+
};
|
|
642
|
+
// Cache result
|
|
643
|
+
resourceCache.set(cacheKey, result, result.ttl);
|
|
644
|
+
return result;
|
|
645
|
+
}
|
|
646
|
+
//# sourceMappingURL=environment-analysis-resource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment-analysis-resource.js","sourceRoot":"","sources":["../../../src/resources/environment-analysis-resource.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGlE,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AA4HlC;;GAEG;AACH,SAAS,aAAa;IAUpB,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAE7B,OAAO;QACL,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;QACvB,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE;QACf,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE;QACrB,WAAW,EAAE,OAAO,CAAC,OAAO;QAC5B,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;QACvB,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM;QACtB,WAAW,EAAE,GAAG,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;QAC/D,UAAU,EAAE,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;KAC9D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa;IAC1B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC;QAChD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,oBAAoB;IACjC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,MAAM,MAAM,GAAG;QACb,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAe,EAAE;QACpD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAe,EAAE;QAC/C,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,KAAc,EAAE;KACvD,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACpD,OAAO,KAAK,CAAC,OAAO,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc;IAQ3B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;QAChD,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC;QACzD,aAAa,GAAG,IAAI,CAAC;QACrB,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,aAAa,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAC3D,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC/C,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC;QAEvC,MAAM,OAAO,GAAG;YACd,GAAG,WAAW,CAAC,YAAY;YAC3B,GAAG,WAAW,CAAC,eAAe;SAC/B,CAAC;QAEF,IAAI,OAAO,CAAC,2BAA2B,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,MAAM,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,OAAO,CAAC,OAAO,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,OAAO,CAAC,KAAK,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,OAAO,CAAC,SAAS,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,OAAO,CAAC,SAAS,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,OAAO,CAAC,SAAS,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ,GAAG,KAAK,CAAC;IACnB,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAEpD,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,MAAM;QACN,aAAa;QACb,QAAQ;QACR,cAAc;QACd,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe;IAK5B,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QAChE,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAE/C,OAAO;YACL,OAAO,EAAE,WAAW,CAAC,YAAY,IAAI,EAAE;YACvC,WAAW,EAAE,WAAW,CAAC,eAAe,IAAI,EAAE;YAC9C,IAAI,EAAE,WAAW,CAAC,gBAAgB,IAAI,EAAE;SACzC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,EAAE;SACT,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB;IAC9B,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC5E,MAAM,GAAG,GAAuC,EAAE,CAAC;IAEnD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvD,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAE3F,IAAI,WAAW,IAAI,KAAK,EAAE,CAAC;YACzB,GAAG,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB;IAMhC,IAAI,QAAQ,GAAG,SAAS,CAAC;IACzB,IAAI,OAAO,GAAG,SAAS,CAAC;IAExB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC;QACjD,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,CAAC;QAC/C,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,SAAS,CAAC;IACtB,CAAC;IAED,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,GAAG,EAAE,OAAO;QACZ,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE;QAC1B,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,WAAW;KAC1D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,eAAe;IAMtB,OAAO;QACL,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;QAChD,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,YAAY;IAKzB,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO,EAAE,CAAC;YAC5D,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,mBAAmB,CAAC,CAAC;YACpD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAEhD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACtB,OAAO;oBACL,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS;oBAC5B,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS;oBAC3B,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC;iBAC9D,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,0BAA0B;IAC5B,CAAC;IAED,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,SAAS;QACf,YAAY,EAAE,CAAC;KAChB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB;IAW7B,MAAM,SAAS,GAAG,MAAM,YAAY,EAAE,CAAC;IAEvC,OAAO;QACL,SAAS;QACT,WAAW,EAAE;YACX,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE;YACnB,WAAW,EAAE,EAAE,CAAC,OAAO,EAAE;SAC1B;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,mCAAmC,CAAC,UAAkB;IAC7D,MAAM,SAAS,GAAiC,EAAE,CAAC;IAEnD,qCAAqC;IACrC,IAAI,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACnF,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACrE,IAAI,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAChC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACxC,CAAC;QAED,SAAS,CAAC,cAAc,GAAG;YACzB,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY;SAC5E,CAAC;IACJ,CAAC;IAED,uCAAuC;IACvC,MAAM,cAAc,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnE,MAAM,kBAAkB,GACtB,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9F,IAAI,cAAc,IAAI,kBAAkB,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,EAAE,CAAC;QACxB,IAAI,cAAc;YAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,kBAAkB;YAAE,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxD,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7E,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAErF,SAAS,CAAC,gBAAgB,GAAG;YAC3B,QAAQ,EAAE,IAAI;YACd,YAAY;YACZ,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM;YAC5D,YAAY,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM;YACjE,UAAU,EAAE,kBAAkB;YAC9B,QAAQ,EAAE;gBACR,KAAK,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;gBAC9D,MAAM,EAAE,gBAAgB,CAAC,UAAU,EAAE,CAAC,eAAe,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;aAC5E;SACF,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,MAAM,cAAc,GAAG,mBAAmB,CAAC,UAAU,EAAE;QACrD,KAAK;QACL,OAAO;QACP,KAAK;QACL,cAAc;QACd,QAAQ;QACR,QAAQ;QACR,SAAS;KACV,CAAC,CAAC;IACH,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,SAAS,CAAC,aAAa,GAAG;YACxB,SAAS,EAAE,cAAc;YACzB,QAAQ,EAAE,gBAAgB,CAAC,UAAU,EAAE;gBACrC,QAAQ;gBACR,KAAK;gBACL,IAAI;gBACJ,KAAK;gBACL,WAAW;gBACX,SAAS;aACV,CAAC;YACF,UAAU,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa;SAC3F,CAAC;IACJ,CAAC;IAED,+BAA+B;IAC/B,MAAM,YAAY,GAChB,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzF,MAAM,SAAS,GACb,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QACzC,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAEtD,SAAS,CAAC,QAAQ,GAAG;QACnB,YAAY;QACZ,mBAAmB,EAAE,SAAS;QAC9B,gBAAgB,EACd,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC3C,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACjD,oBAAoB,EAAE,mBAAmB,CAAC,UAAU,EAAE;YACpD,MAAM;YACN,MAAM;YACN,UAAU;YACV,OAAO;YACP,KAAK;SACN,CAAC;QACF,eAAe,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,4BAA4B,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM;KAC/E,CAAC;IAEF,iCAAiC;IACjC,MAAM,YAAY,GAChB,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAE9F,SAAS,CAAC,UAAU,GAAG;QACrB,YAAY;QACZ,QAAQ,EACN,mBAAmB,CAAC,UAAU,EAAE;YAC9B,gBAAgB;YAChB,WAAW;YACX,SAAS;YACT,UAAU;YACV,QAAQ;SACT,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS;QACpB,SAAS,EAAE,YAAY;QACvB,SAAS,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ;KACrF,CAAC;IAEF,iCAAiC;IACjC,MAAM,eAAe,GAAG,mBAAmB,CAAC,UAAU,EAAE;QACtD,YAAY;QACZ,SAAS;QACT,SAAS;QACT,WAAW;QACX,YAAY;QACZ,aAAa;KACd,CAAC,CAAC;IAEH,SAAS,CAAC,UAAU,GAAG;QACrB,aAAa,EAAE,eAAe;QAC9B,cAAc,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC5D,cAAc,EACZ,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC3F,cAAc,EACZ,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;KAC9F,CAAC;IAEF,0BAA0B;IAC1B,MAAM,YAAY,GAChB,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;QACxC,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;IAE7D,IAAI,YAAY,EAAE,CAAC;QACjB,SAAS,CAAC,cAAc,GAAG;YACzB,qBAAqB,EAAE,IAAI;YAC3B,iBAAiB,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM;YACnE,0BAA0B,EAAE,gBAAgB,CAAC,UAAU,EAAE,CAAC,4BAA4B,CAAC,CAAC;YACxF,oBAAoB,EAAE,gBAAgB,CAAC,UAAU,EAAE,CAAC,sBAAsB,CAAC,CAAC;SAC7E,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,SAAS,CAAC,iBAAiB,GAAG;QAC5B,WAAW,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe;QAC7F,WAAW,EACT,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;YAChD,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC3C,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,eAAe;QACrB,WAAW,EACT,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;YAChD,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC3C,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,eAAe;QACrB,eAAe,EACb,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACpD,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC/C,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,eAAe;QACrB,QAAQ,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe;KACxF,CAAC;IAEF,0BAA0B;IAC1B,MAAM,KAAK,GAAG,gBAAgB,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IAE1F,SAAS,CAAC,cAAc,GAAG;QACzB,KAAK;QACL,SAAS,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;QAC1E,WAAW,EAAE,gBAAgB,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC;KACxF,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,OAAe,EAAE,YAAsB;IAClE,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAE3C,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC9C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,OAAe,EAAE,QAAkB;IAC3D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzD,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;oBAC3D,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACrB,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,qBAAqB;IAClC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG,MAAM,aAAa,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;IAC3C,MAAM,YAAY,GAAG,MAAM,eAAe,EAAE,CAAC;IAC7C,MAAM,oBAAoB,GAAG,uBAAuB,EAAE,CAAC;IACvD,MAAM,KAAK,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC1C,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAExC,OAAO;QACL,MAAM,EAAE;YACN,GAAG,UAAU;YACb,UAAU;SACX;QACD,OAAO,EAAE,WAAW;QACpB,YAAY;QACZ,WAAW,EAAE;YACX,SAAS,EAAE,oBAAoB;YAC/B,KAAK;SACN;QACD,YAAY;QACZ,MAAM;QACN,gBAAgB,EAAE;YAChB,YAAY,EAAE,OAAO;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,UAAU,EAAE,GAAG;YACf,MAAM,EAAE,OAAO;YACf,iBAAiB,EAAE,KAAK;SACzB;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,6BAA6B,CAC1C,YAAoB,EACpB,YAAqB;IAErB,IAAI,CAAC;QACH,gCAAgC;QAChC,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,uCAAuC,CAAC,CAAC;QAErF,4CAA4C;QAC5C,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC;YAC1C,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE;YAC1B,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,WAAW;YACzD,YAAY,EAAE,YAAmB;YACjC,oBAAoB,EAAE,IAAI;YAC1B,YAAY,EAAE,IAAI;YAClB,uBAAuB,EAAE,YAAY;YACrC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,aAAa;SAC1D,CAAC,CAAC;QAEH,wCAAwC;QACxC,IAAI,cAAc,GAAG,EAAE,CAAC;QACxB,IAAI,UAAU,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5D,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACtC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACtC,cAAc,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,MAAM,aAAa,GAAG,MAAM,qBAAqB,EAAE,CAAC;QAEpD,yCAAyC;QACzC,MAAM,YAAY,GAAG,mCAAmC,CAAC,cAAc,CAAC,CAAC;QAEzE,gCAAgC;QAChC,MAAM,qBAAqB,GAAwB;YACjD,GAAG,aAAa;YAChB,GAAG,YAAY;YACf,gBAAgB,EAAE;gBAChB,YAAY;gBACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,UAAU,EAAE,GAAG;gBACf,MAAM,EAAE,oBAAoB;gBAC5B,iBAAiB,EAAE,YAAY;aAChC;SACF,CAAC;QAEF,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,wFAAwF,EACxF,KAAK,CACN,CAAC;QACF,OAAO,qBAAqB,EAAE,CAAC;IACjC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyGG;AACH,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACvD,OAAgC,EAChC,YAA8B;IAE9B,2BAA2B;IAC3B,MAAM,YAAY,GAAG,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC;IAC1D,MAAM,YAAY,GAAG,YAAY,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC;IAC7D,MAAM,gBAAgB,GAAG,YAAY,EAAE,GAAG,CAAC,eAAe,CAAC,KAAK,OAAO,CAAC;IAExE,MAAM,QAAQ,GAAG,wBAAwB,YAAY,IAAI,YAAY,IAAI,gBAAgB,EAAE,CAAC;IAE5F,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,6CAA6C;IAC7C,IAAI,mBAAwC,CAAC;IAE7C,IAAI,gBAAgB,EAAE,CAAC;QACrB,mBAAmB,GAAG,MAAM,6BAA6B,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACxF,CAAC;SAAM,CAAC;QACN,mBAAmB,GAAG,MAAM,qBAAqB,EAAE,CAAC;IACtD,CAAC;IAED,MAAM,MAAM,GAA6B;QACvC,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,kBAAkB;QAC/B,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACtC,QAAQ;QACR,GAAG,EAAE,GAAG,EAAE,kBAAkB;QAC5B,IAAI,EAAE,YAAY,CAAC,mBAAmB,CAAC;KACxC,CAAC;IAEF,eAAe;IACf,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAEhD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|