mcp-adr-analysis-server 2.1.20 → 2.1.27
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 +63 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/config/ai-config.d.ts +54 -6
- package/dist/src/config/ai-config.d.ts.map +1 -1
- package/dist/src/config/ai-config.js +69 -6
- package/dist/src/config/ai-config.js.map +1 -1
- package/dist/src/config/ape-descriptions.d.ts +77 -0
- package/dist/src/config/ape-descriptions.d.ts.map +1 -0
- package/dist/src/config/ape-descriptions.js +177 -0
- package/dist/src/config/ape-descriptions.js.map +1 -0
- package/dist/src/index.d.ts +40 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +934 -8
- package/dist/src/index.js.map +1 -1
- package/dist/src/prompts/adr-suggestion-prompts.d.ts +5 -0
- package/dist/src/prompts/adr-suggestion-prompts.d.ts.map +1 -1
- package/dist/src/prompts/adr-suggestion-prompts.js +22 -1
- package/dist/src/prompts/adr-suggestion-prompts.js.map +1 -1
- package/dist/src/prompts/prompt-catalog.d.ts +95 -0
- package/dist/src/prompts/prompt-catalog.d.ts.map +1 -0
- package/dist/src/prompts/prompt-catalog.js +300 -0
- package/dist/src/prompts/prompt-catalog.js.map +1 -0
- package/dist/src/resources/adrs-discovered-resource.d.ts +124 -0
- package/dist/src/resources/adrs-discovered-resource.d.ts.map +1 -0
- package/dist/src/resources/adrs-discovered-resource.js +174 -0
- package/dist/src/resources/adrs-discovered-resource.js.map +1 -0
- package/dist/src/resources/adrs-review-resource.d.ts +82 -0
- package/dist/src/resources/adrs-review-resource.d.ts.map +1 -0
- package/dist/src/resources/adrs-review-resource.js +160 -0
- package/dist/src/resources/adrs-review-resource.js.map +1 -0
- package/dist/src/resources/architectural-context-resource.d.ts +95 -0
- package/dist/src/resources/architectural-context-resource.d.ts.map +1 -0
- package/dist/src/resources/architectural-context-resource.js +428 -0
- package/dist/src/resources/architectural-context-resource.js.map +1 -0
- package/dist/src/resources/conversation-snapshot-resource.d.ts +92 -0
- package/dist/src/resources/conversation-snapshot-resource.d.ts.map +1 -0
- package/dist/src/resources/conversation-snapshot-resource.js +122 -0
- package/dist/src/resources/conversation-snapshot-resource.js.map +1 -0
- package/dist/src/resources/deployment-status-resource.js +1 -1
- package/dist/src/resources/deployment-status-resource.js.map +1 -1
- package/dist/src/resources/environment-analysis-resource.js +1 -1
- package/dist/src/resources/environment-analysis-resource.js.map +1 -1
- package/dist/src/resources/knowledge-graph-resource.d.ts +129 -0
- package/dist/src/resources/knowledge-graph-resource.d.ts.map +1 -0
- package/dist/src/resources/knowledge-graph-resource.js +217 -0
- package/dist/src/resources/knowledge-graph-resource.js.map +1 -0
- package/dist/src/resources/memory-expand-resource.d.ts +90 -0
- package/dist/src/resources/memory-expand-resource.d.ts.map +1 -0
- package/dist/src/resources/memory-expand-resource.js +176 -0
- package/dist/src/resources/memory-expand-resource.js.map +1 -0
- package/dist/src/resources/memory-stats-resource.d.ts +77 -0
- package/dist/src/resources/memory-stats-resource.d.ts.map +1 -0
- package/dist/src/resources/memory-stats-resource.js +108 -0
- package/dist/src/resources/memory-stats-resource.js.map +1 -0
- package/dist/src/resources/project-metrics-resource.js +1 -1
- package/dist/src/resources/project-metrics-resource.js.map +1 -1
- package/dist/src/resources/resource-cache.d.ts.map +1 -1
- package/dist/src/resources/resource-cache.js +2 -1
- package/dist/src/resources/resource-cache.js.map +1 -1
- package/dist/src/resources/server-context-resource.d.ts +69 -0
- package/dist/src/resources/server-context-resource.d.ts.map +1 -0
- package/dist/src/resources/server-context-resource.js +104 -0
- package/dist/src/resources/server-context-resource.js.map +1 -0
- package/dist/src/resources/tool-catalog-resource.d.ts +122 -0
- package/dist/src/resources/tool-catalog-resource.d.ts.map +1 -0
- package/dist/src/resources/tool-catalog-resource.js +167 -0
- package/dist/src/resources/tool-catalog-resource.js.map +1 -0
- package/dist/src/tools/adr-aggregator-tools.d.ts +185 -0
- package/dist/src/tools/adr-aggregator-tools.d.ts.map +1 -0
- package/dist/src/tools/adr-aggregator-tools.js +872 -0
- package/dist/src/tools/adr-aggregator-tools.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 +7 -6
- package/dist/src/tools/adr-bootstrap-validation-tool.js.map +1 -1
- package/dist/src/tools/adr-suggestion-tool.d.ts +5 -0
- package/dist/src/tools/adr-suggestion-tool.d.ts.map +1 -1
- package/dist/src/tools/adr-suggestion-tool.js +40 -71
- package/dist/src/tools/adr-suggestion-tool.js.map +1 -1
- package/dist/src/tools/analyze-gaps-tool.d.ts +57 -0
- package/dist/src/tools/analyze-gaps-tool.d.ts.map +1 -0
- package/dist/src/tools/analyze-gaps-tool.js +727 -0
- package/dist/src/tools/analyze-gaps-tool.js.map +1 -0
- package/dist/src/tools/bootstrap-validation-loop-tool.d.ts +23 -1
- package/dist/src/tools/bootstrap-validation-loop-tool.d.ts.map +1 -1
- package/dist/src/tools/bootstrap-validation-loop-tool.js +15 -5
- package/dist/src/tools/bootstrap-validation-loop-tool.js.map +1 -1
- package/dist/src/tools/ce-mcp-tools.d.ts +291 -0
- package/dist/src/tools/ce-mcp-tools.d.ts.map +1 -0
- package/dist/src/tools/ce-mcp-tools.js +1188 -0
- package/dist/src/tools/ce-mcp-tools.js.map +1 -0
- package/dist/src/tools/content-masking-tool.d.ts +11 -0
- package/dist/src/tools/content-masking-tool.d.ts.map +1 -1
- package/dist/src/tools/content-masking-tool.js +13 -6
- package/dist/src/tools/content-masking-tool.js.map +1 -1
- package/dist/src/tools/deployment-readiness-tool.d.ts +11 -0
- package/dist/src/tools/deployment-readiness-tool.d.ts.map +1 -1
- package/dist/src/tools/deployment-readiness-tool.js +10 -4
- package/dist/src/tools/deployment-readiness-tool.js.map +1 -1
- package/dist/src/tools/environment-analysis-tool.d.ts +96 -1
- package/dist/src/tools/environment-analysis-tool.d.ts.map +1 -1
- package/dist/src/tools/environment-analysis-tool.js +38 -46
- package/dist/src/tools/environment-analysis-tool.js.map +1 -1
- package/dist/src/tools/research-question-tool.d.ts.map +1 -1
- package/dist/src/tools/research-question-tool.js +3 -2
- package/dist/src/tools/research-question-tool.js.map +1 -1
- package/dist/src/tools/review-existing-adrs-tool.d.ts +5 -0
- package/dist/src/tools/review-existing-adrs-tool.d.ts.map +1 -1
- package/dist/src/tools/review-existing-adrs-tool.js +123 -42
- package/dist/src/tools/review-existing-adrs-tool.js.map +1 -1
- package/dist/src/tools/rule-generation-tool.d.ts.map +1 -1
- package/dist/src/tools/rule-generation-tool.js +3 -5
- package/dist/src/tools/rule-generation-tool.js.map +1 -1
- package/dist/src/tools/search-codebase-tool.d.ts +148 -0
- package/dist/src/tools/search-codebase-tool.d.ts.map +1 -0
- package/dist/src/tools/search-codebase-tool.js +406 -0
- package/dist/src/tools/search-codebase-tool.js.map +1 -0
- package/dist/src/tools/smart-git-push-tool-v2.js +1 -1
- package/dist/src/tools/smart-git-push-tool-v2.js.map +1 -1
- package/dist/src/tools/tool-catalog.d.ts +134 -0
- package/dist/src/tools/tool-catalog.d.ts.map +1 -0
- package/dist/src/tools/tool-catalog.js +1813 -0
- package/dist/src/tools/tool-catalog.js.map +1 -0
- package/dist/src/tools/tool-chain-orchestrator.d.ts +11 -2
- package/dist/src/tools/tool-chain-orchestrator.d.ts.map +1 -1
- package/dist/src/tools/tool-chain-orchestrator.js +11 -2
- package/dist/src/tools/tool-chain-orchestrator.js.map +1 -1
- package/dist/src/tools/tool-dispatcher.d.ts +98 -0
- package/dist/src/tools/tool-dispatcher.d.ts.map +1 -0
- package/dist/src/tools/tool-dispatcher.js +229 -0
- package/dist/src/tools/tool-dispatcher.js.map +1 -0
- package/dist/src/tools/tree-sitter-code-tools.d.ts +184 -0
- package/dist/src/tools/tree-sitter-code-tools.d.ts.map +1 -0
- package/dist/src/tools/tree-sitter-code-tools.js +642 -0
- package/dist/src/tools/tree-sitter-code-tools.js.map +1 -0
- package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts +22 -0
- package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts.map +1 -1
- package/dist/src/tools/troubleshoot-guided-workflow-tool.js +20 -3
- package/dist/src/tools/troubleshoot-guided-workflow-tool.js.map +1 -1
- package/dist/src/tools/update-knowledge-tool.d.ts +89 -0
- package/dist/src/tools/update-knowledge-tool.d.ts.map +1 -0
- package/dist/src/tools/update-knowledge-tool.js +222 -0
- package/dist/src/tools/update-knowledge-tool.js.map +1 -0
- package/dist/src/types/adr-aggregator.d.ts +692 -0
- package/dist/src/types/adr-aggregator.d.ts.map +1 -0
- package/dist/src/types/adr-aggregator.js +8 -0
- package/dist/src/types/adr-aggregator.js.map +1 -0
- package/dist/src/types/ce-mcp.d.ts +248 -0
- package/dist/src/types/ce-mcp.d.ts.map +1 -0
- package/dist/src/types/ce-mcp.js +27 -0
- package/dist/src/types/ce-mcp.js.map +1 -0
- package/dist/src/types/index.d.ts +3 -2
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/memory-entities.d.ts +48 -48
- package/dist/src/utils/adr-aggregator-client.d.ts +177 -0
- package/dist/src/utils/adr-aggregator-client.d.ts.map +1 -0
- package/dist/src/utils/adr-aggregator-client.js +396 -0
- package/dist/src/utils/adr-aggregator-client.js.map +1 -0
- package/dist/src/utils/adr-context-detector.js +1 -1
- package/dist/src/utils/adr-context-detector.js.map +1 -1
- package/dist/src/utils/adr-planning-task-integration.d.ts +260 -0
- package/dist/src/utils/adr-planning-task-integration.d.ts.map +1 -0
- package/dist/src/utils/adr-planning-task-integration.js +466 -0
- package/dist/src/utils/adr-planning-task-integration.js.map +1 -0
- package/dist/src/utils/adr-timeline-extractor.d.ts.map +1 -1
- package/dist/src/utils/adr-timeline-extractor.js +3 -2
- package/dist/src/utils/adr-timeline-extractor.js.map +1 -1
- package/dist/src/utils/ai-executor.d.ts +10 -0
- package/dist/src/utils/ai-executor.d.ts.map +1 -1
- package/dist/src/utils/ai-executor.js +14 -3
- package/dist/src/utils/ai-executor.js.map +1 -1
- package/dist/src/utils/automatic-prompt-engineering.d.ts +5 -0
- package/dist/src/utils/automatic-prompt-engineering.d.ts.map +1 -1
- package/dist/src/utils/automatic-prompt-engineering.js +10 -90
- package/dist/src/utils/automatic-prompt-engineering.js.map +1 -1
- package/dist/src/utils/bootstrap-task-integration.d.ts +214 -0
- package/dist/src/utils/bootstrap-task-integration.d.ts.map +1 -0
- package/dist/src/utils/bootstrap-task-integration.js +365 -0
- package/dist/src/utils/bootstrap-task-integration.js.map +1 -0
- package/dist/src/utils/config.d.ts +3 -0
- package/dist/src/utils/config.d.ts.map +1 -1
- package/dist/src/utils/config.js +13 -0
- package/dist/src/utils/config.js.map +1 -1
- package/dist/src/utils/dag-executor.js +1 -1
- package/dist/src/utils/dag-executor.js.map +1 -1
- package/dist/src/utils/deployment-task-integration.d.ts +260 -0
- package/dist/src/utils/deployment-task-integration.d.ts.map +1 -0
- package/dist/src/utils/deployment-task-integration.js +393 -0
- package/dist/src/utils/deployment-task-integration.js.map +1 -0
- package/dist/src/utils/dynamic-deployment-intelligence.js +1 -1
- package/dist/src/utils/dynamic-deployment-intelligence.js.map +1 -1
- package/dist/src/utils/enhanced-logging.d.ts +3 -0
- package/dist/src/utils/enhanced-logging.d.ts.map +1 -1
- package/dist/src/utils/enhanced-logging.js +9 -30
- package/dist/src/utils/enhanced-logging.js.map +1 -1
- package/dist/src/utils/environment-capability-registry.js +1 -1
- package/dist/src/utils/environment-capability-registry.js.map +1 -1
- package/dist/src/utils/file-system.d.ts.map +1 -1
- package/dist/src/utils/file-system.js +33 -3
- package/dist/src/utils/file-system.js.map +1 -1
- package/dist/src/utils/git-remote-detector.d.ts +67 -0
- package/dist/src/utils/git-remote-detector.d.ts.map +1 -0
- package/dist/src/utils/git-remote-detector.js +194 -0
- package/dist/src/utils/git-remote-detector.js.map +1 -0
- package/dist/src/utils/gitleaks-detector.js +1 -1
- package/dist/src/utils/gitleaks-detector.js.map +1 -1
- package/dist/src/utils/knowledge-graph-manager.d.ts +13 -0
- package/dist/src/utils/knowledge-graph-manager.d.ts.map +1 -1
- package/dist/src/utils/knowledge-graph-manager.js +13 -0
- package/dist/src/utils/knowledge-graph-manager.js.map +1 -1
- package/dist/src/utils/prompt-execution.d.ts +29 -1
- package/dist/src/utils/prompt-execution.d.ts.map +1 -1
- package/dist/src/utils/prompt-execution.js +29 -1
- package/dist/src/utils/prompt-execution.js.map +1 -1
- package/dist/src/utils/research-orchestrator.d.ts +87 -1
- package/dist/src/utils/research-orchestrator.d.ts.map +1 -1
- package/dist/src/utils/research-orchestrator.js +121 -17
- package/dist/src/utils/research-orchestrator.js.map +1 -1
- package/dist/src/utils/research-task-integration.d.ts +297 -0
- package/dist/src/utils/research-task-integration.d.ts.map +1 -0
- package/dist/src/utils/research-task-integration.js +449 -0
- package/dist/src/utils/research-task-integration.js.map +1 -0
- package/dist/src/utils/ripgrep-wrapper.d.ts.map +1 -1
- package/dist/src/utils/ripgrep-wrapper.js +17 -3
- package/dist/src/utils/ripgrep-wrapper.js.map +1 -1
- package/dist/src/utils/sandbox-executor.d.ts +145 -0
- package/dist/src/utils/sandbox-executor.d.ts.map +1 -0
- package/dist/src/utils/sandbox-executor.js +642 -0
- package/dist/src/utils/sandbox-executor.js.map +1 -0
- package/dist/src/utils/server-context-generator.d.ts +5 -0
- package/dist/src/utils/server-context-generator.d.ts.map +1 -1
- package/dist/src/utils/server-context-generator.js +38 -0
- package/dist/src/utils/server-context-generator.js.map +1 -1
- package/dist/src/utils/task-manager.d.ts +239 -0
- package/dist/src/utils/task-manager.d.ts.map +1 -0
- package/dist/src/utils/task-manager.js +528 -0
- package/dist/src/utils/task-manager.js.map +1 -0
- package/dist/src/utils/task-persistence.d.ts +82 -0
- package/dist/src/utils/task-persistence.d.ts.map +1 -0
- package/dist/src/utils/task-persistence.js +248 -0
- package/dist/src/utils/task-persistence.js.map +1 -0
- package/dist/src/utils/test-aware-defaults.d.ts +57 -0
- package/dist/src/utils/test-aware-defaults.d.ts.map +1 -0
- package/dist/src/utils/test-aware-defaults.js +71 -0
- package/dist/src/utils/test-aware-defaults.js.map +1 -0
- package/dist/src/utils/tree-sitter-analyzer.d.ts +42 -5
- package/dist/src/utils/tree-sitter-analyzer.d.ts.map +1 -1
- package/dist/src/utils/tree-sitter-analyzer.js +499 -17
- package/dist/src/utils/tree-sitter-analyzer.js.map +1 -1
- package/package.json +24 -19
- package/dist/src/tools/smart-git-push-tool.d.ts +0 -55
- package/dist/src/tools/smart-git-push-tool.d.ts.map +0 -1
- package/dist/src/tools/smart-git-push-tool.js +0 -1011
- package/dist/src/tools/smart-git-push-tool.js.map +0 -1
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Persistence for MCP Tasks Integration
|
|
3
|
+
*
|
|
4
|
+
* Provides file-based persistence for tasks to survive server restarts.
|
|
5
|
+
* Uses JSON files stored in a configurable cache directory.
|
|
6
|
+
*
|
|
7
|
+
* Implements ADR-018: MCP Tasks Integration Strategy
|
|
8
|
+
*
|
|
9
|
+
* @experimental MCP Tasks is an experimental feature in the MCP specification
|
|
10
|
+
*/
|
|
11
|
+
import * as fs from 'fs/promises';
|
|
12
|
+
import * as path from 'path';
|
|
13
|
+
import { createComponentLogger } from './enhanced-logging.js';
|
|
14
|
+
const logger = createComponentLogger('TaskPersistence');
|
|
15
|
+
const CURRENT_VERSION = 1;
|
|
16
|
+
const DEFAULT_CONFIG = {
|
|
17
|
+
cacheDir: '.mcp-adr-cache/tasks',
|
|
18
|
+
enabled: true,
|
|
19
|
+
maxAge: 7 * 24 * 60 * 60 * 1000, // 7 days
|
|
20
|
+
writeDelay: 1000,
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Task Persistence Manager
|
|
24
|
+
*
|
|
25
|
+
* Handles saving and loading tasks to/from disk for durability across
|
|
26
|
+
* server restarts. Uses debounced writes to avoid excessive disk I/O.
|
|
27
|
+
*/
|
|
28
|
+
export class TaskPersistence {
|
|
29
|
+
config;
|
|
30
|
+
writeTimer = null;
|
|
31
|
+
pendingWrite = null;
|
|
32
|
+
initialized = false;
|
|
33
|
+
constructor(config = {}) {
|
|
34
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Initialize persistence - create cache directory if needed
|
|
38
|
+
*/
|
|
39
|
+
async initialize() {
|
|
40
|
+
if (!this.config.enabled) {
|
|
41
|
+
logger.info('Task persistence disabled');
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
try {
|
|
45
|
+
await fs.mkdir(this.config.cacheDir, { recursive: true });
|
|
46
|
+
this.initialized = true;
|
|
47
|
+
logger.info('Task persistence initialized', { cacheDir: this.config.cacheDir });
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
logger.error('Failed to initialize task persistence', error instanceof Error ? error : undefined, {
|
|
51
|
+
cacheDir: this.config.cacheDir,
|
|
52
|
+
});
|
|
53
|
+
// Don't throw - persistence is optional
|
|
54
|
+
this.config.enabled = false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get the path to the tasks file
|
|
59
|
+
*/
|
|
60
|
+
getTasksFilePath() {
|
|
61
|
+
return path.join(this.config.cacheDir, 'tasks.json');
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Load persisted tasks from disk
|
|
65
|
+
*/
|
|
66
|
+
async load() {
|
|
67
|
+
const tasks = new Map();
|
|
68
|
+
const progress = new Map();
|
|
69
|
+
if (!this.config.enabled || !this.initialized) {
|
|
70
|
+
return { tasks, progress };
|
|
71
|
+
}
|
|
72
|
+
const filePath = this.getTasksFilePath();
|
|
73
|
+
try {
|
|
74
|
+
const data = await fs.readFile(filePath, 'utf-8');
|
|
75
|
+
const parsed = JSON.parse(data);
|
|
76
|
+
// Version check
|
|
77
|
+
if (parsed.version !== CURRENT_VERSION) {
|
|
78
|
+
logger.warn('Task persistence version mismatch, migrating', {
|
|
79
|
+
savedVersion: parsed.version,
|
|
80
|
+
currentVersion: CURRENT_VERSION,
|
|
81
|
+
});
|
|
82
|
+
// For now, just load what we can
|
|
83
|
+
}
|
|
84
|
+
const now = Date.now();
|
|
85
|
+
let expiredCount = 0;
|
|
86
|
+
for (const task of parsed.tasks) {
|
|
87
|
+
// Skip expired tasks
|
|
88
|
+
const taskAge = now - new Date(task.lastUpdatedAt).getTime();
|
|
89
|
+
if (taskAge > this.config.maxAge) {
|
|
90
|
+
expiredCount++;
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
tasks.set(task.taskId, task);
|
|
94
|
+
const taskProgress = parsed.progress[task.taskId];
|
|
95
|
+
if (taskProgress !== undefined) {
|
|
96
|
+
progress.set(task.taskId, taskProgress);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
logger.info('Tasks loaded from persistence', {
|
|
100
|
+
loadedCount: tasks.size,
|
|
101
|
+
expiredCount,
|
|
102
|
+
lastSaved: parsed.lastSaved,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
if (error.code === 'ENOENT') {
|
|
107
|
+
logger.debug('No persisted tasks file found');
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
logger.error('Failed to load persisted tasks', error instanceof Error ? error : undefined);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return { tasks, progress };
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Save tasks to disk (debounced)
|
|
117
|
+
*/
|
|
118
|
+
async save(tasks, progress) {
|
|
119
|
+
if (!this.config.enabled || !this.initialized) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
// Prepare data for persistence
|
|
123
|
+
const data = {
|
|
124
|
+
version: CURRENT_VERSION,
|
|
125
|
+
lastSaved: new Date().toISOString(),
|
|
126
|
+
tasks: Array.from(tasks.values()),
|
|
127
|
+
progress: Object.fromEntries(progress),
|
|
128
|
+
};
|
|
129
|
+
// Debounce writes
|
|
130
|
+
this.pendingWrite = data;
|
|
131
|
+
if (this.writeTimer) {
|
|
132
|
+
return; // Already scheduled
|
|
133
|
+
}
|
|
134
|
+
this.writeTimer = setTimeout(async () => {
|
|
135
|
+
this.writeTimer = null;
|
|
136
|
+
if (this.pendingWrite) {
|
|
137
|
+
await this.writeToFile(this.pendingWrite);
|
|
138
|
+
this.pendingWrite = null;
|
|
139
|
+
}
|
|
140
|
+
}, this.config.writeDelay);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Force immediate save (for shutdown)
|
|
144
|
+
*/
|
|
145
|
+
async saveImmediate(tasks, progress) {
|
|
146
|
+
if (!this.config.enabled || !this.initialized) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
// Cancel pending debounced write
|
|
150
|
+
if (this.writeTimer) {
|
|
151
|
+
clearTimeout(this.writeTimer);
|
|
152
|
+
this.writeTimer = null;
|
|
153
|
+
}
|
|
154
|
+
this.pendingWrite = null;
|
|
155
|
+
const data = {
|
|
156
|
+
version: CURRENT_VERSION,
|
|
157
|
+
lastSaved: new Date().toISOString(),
|
|
158
|
+
tasks: Array.from(tasks.values()),
|
|
159
|
+
progress: Object.fromEntries(progress),
|
|
160
|
+
};
|
|
161
|
+
await this.writeToFile(data);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Write data to file
|
|
165
|
+
*/
|
|
166
|
+
async writeToFile(data) {
|
|
167
|
+
const filePath = this.getTasksFilePath();
|
|
168
|
+
const tempPath = `${filePath}.tmp`;
|
|
169
|
+
try {
|
|
170
|
+
// Write to temp file first
|
|
171
|
+
await fs.writeFile(tempPath, JSON.stringify(data, null, 2), 'utf-8');
|
|
172
|
+
// Atomic rename
|
|
173
|
+
await fs.rename(tempPath, filePath);
|
|
174
|
+
logger.debug('Tasks persisted to disk', { taskCount: data.tasks.length });
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
logger.error('Failed to persist tasks', error instanceof Error ? error : undefined);
|
|
178
|
+
// Try to clean up temp file
|
|
179
|
+
try {
|
|
180
|
+
await fs.unlink(tempPath);
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
// Ignore cleanup errors
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Delete persisted task data
|
|
189
|
+
*/
|
|
190
|
+
async clear() {
|
|
191
|
+
if (!this.config.enabled) {
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
const filePath = this.getTasksFilePath();
|
|
195
|
+
try {
|
|
196
|
+
await fs.unlink(filePath);
|
|
197
|
+
logger.info('Cleared persisted tasks');
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
if (error.code !== 'ENOENT') {
|
|
201
|
+
logger.error('Failed to clear persisted tasks', error instanceof Error ? error : undefined);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Cleanup old task files
|
|
207
|
+
*/
|
|
208
|
+
async cleanup() {
|
|
209
|
+
if (!this.config.enabled || !this.initialized) {
|
|
210
|
+
return 0;
|
|
211
|
+
}
|
|
212
|
+
// Load current tasks, which will filter out expired ones
|
|
213
|
+
const { tasks, progress } = await this.load();
|
|
214
|
+
// Re-save to remove expired tasks from file
|
|
215
|
+
if (tasks.size > 0) {
|
|
216
|
+
await this.saveImmediate(tasks, progress);
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
await this.clear();
|
|
220
|
+
}
|
|
221
|
+
return 0; // We handled cleanup during load
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Shutdown persistence - flush pending writes
|
|
225
|
+
*/
|
|
226
|
+
async shutdown() {
|
|
227
|
+
if (this.writeTimer) {
|
|
228
|
+
clearTimeout(this.writeTimer);
|
|
229
|
+
this.writeTimer = null;
|
|
230
|
+
}
|
|
231
|
+
if (this.pendingWrite) {
|
|
232
|
+
await this.writeToFile(this.pendingWrite);
|
|
233
|
+
this.pendingWrite = null;
|
|
234
|
+
}
|
|
235
|
+
logger.info('Task persistence shut down');
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Check if persistence is enabled
|
|
239
|
+
*/
|
|
240
|
+
isEnabled() {
|
|
241
|
+
return this.config.enabled && this.initialized;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
// Factory function for creating persistence with custom config
|
|
245
|
+
export function createTaskPersistence(config) {
|
|
246
|
+
return new TaskPersistence(config);
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=task-persistence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-persistence.js","sourceRoot":"","sources":["../../../src/utils/task-persistence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test-Aware Defaults Utility
|
|
3
|
+
*
|
|
4
|
+
* Provides environment-aware defaults that disable expensive operations during testing.
|
|
5
|
+
* This improves test performance and reduces timeouts without changing production behavior.
|
|
6
|
+
*
|
|
7
|
+
* @see Issue #309 - Add environment-aware test defaults to reduce timeouts
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Check if we're running in a test environment
|
|
11
|
+
*/
|
|
12
|
+
export declare function isTestEnvironment(): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Get environment-aware default for enhanced mode
|
|
15
|
+
* Disabled in test environments to reduce timeouts
|
|
16
|
+
*/
|
|
17
|
+
export declare function getEnhancedModeDefault(): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Get environment-aware default for knowledge enhancement (GKP)
|
|
20
|
+
* Disabled in test environments to reduce timeouts
|
|
21
|
+
*/
|
|
22
|
+
export declare function getKnowledgeEnhancementDefault(): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Get environment-aware default for memory integration
|
|
25
|
+
* Disabled in test environments to reduce timeouts
|
|
26
|
+
*/
|
|
27
|
+
export declare function getMemoryIntegrationDefault(): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Get environment-aware timeout for operations
|
|
30
|
+
* Shorter timeouts in test environments
|
|
31
|
+
*/
|
|
32
|
+
export declare function getOperationTimeout(defaultTimeout?: number): number;
|
|
33
|
+
/**
|
|
34
|
+
* Test defaults configuration object
|
|
35
|
+
* Use this for passing all defaults at once
|
|
36
|
+
*/
|
|
37
|
+
export interface TestAwareDefaults {
|
|
38
|
+
enhancedMode: boolean;
|
|
39
|
+
knowledgeEnhancement: boolean;
|
|
40
|
+
enableMemoryIntegration: boolean;
|
|
41
|
+
timeout: number;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get all test-aware defaults at once
|
|
45
|
+
*/
|
|
46
|
+
export declare function getTestAwareDefaults(options?: {
|
|
47
|
+
enhancedMode?: boolean;
|
|
48
|
+
knowledgeEnhancement?: boolean;
|
|
49
|
+
enableMemoryIntegration?: boolean;
|
|
50
|
+
timeout?: number;
|
|
51
|
+
}): TestAwareDefaults;
|
|
52
|
+
/**
|
|
53
|
+
* Merge user options with test-aware defaults
|
|
54
|
+
* User-provided options always take precedence
|
|
55
|
+
*/
|
|
56
|
+
export declare function mergeWithTestDefaults<T extends Partial<TestAwareDefaults>>(userOptions: T): T & TestAwareDefaults;
|
|
57
|
+
//# sourceMappingURL=test-aware-defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-aware-defaults.d.ts","sourceRoot":"","sources":["../../../src/utils/test-aware-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAM3C;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,IAAI,OAAO,CAExD;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,OAAO,CAErD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,GAAE,MAAc,GAAG,MAAM,CAK1E;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,OAAO,CAAC;IACtB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,uBAAuB,EAAE,OAAO,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE;IAC7C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,iBAAiB,CASpB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,OAAO,CAAC,iBAAiB,CAAC,EACxE,WAAW,EAAE,CAAC,GACb,CAAC,GAAG,iBAAiB,CAOvB"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test-Aware Defaults Utility
|
|
3
|
+
*
|
|
4
|
+
* Provides environment-aware defaults that disable expensive operations during testing.
|
|
5
|
+
* This improves test performance and reduces timeouts without changing production behavior.
|
|
6
|
+
*
|
|
7
|
+
* @see Issue #309 - Add environment-aware test defaults to reduce timeouts
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Check if we're running in a test environment
|
|
11
|
+
*/
|
|
12
|
+
export function isTestEnvironment() {
|
|
13
|
+
return (process.env['NODE_ENV'] === 'test' ||
|
|
14
|
+
process.env['JEST_WORKER_ID'] !== undefined ||
|
|
15
|
+
process.env['VITEST'] !== undefined);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Get environment-aware default for enhanced mode
|
|
19
|
+
* Disabled in test environments to reduce timeouts
|
|
20
|
+
*/
|
|
21
|
+
export function getEnhancedModeDefault() {
|
|
22
|
+
return !isTestEnvironment();
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get environment-aware default for knowledge enhancement (GKP)
|
|
26
|
+
* Disabled in test environments to reduce timeouts
|
|
27
|
+
*/
|
|
28
|
+
export function getKnowledgeEnhancementDefault() {
|
|
29
|
+
return !isTestEnvironment();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get environment-aware default for memory integration
|
|
33
|
+
* Disabled in test environments to reduce timeouts
|
|
34
|
+
*/
|
|
35
|
+
export function getMemoryIntegrationDefault() {
|
|
36
|
+
return !isTestEnvironment();
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get environment-aware timeout for operations
|
|
40
|
+
* Shorter timeouts in test environments
|
|
41
|
+
*/
|
|
42
|
+
export function getOperationTimeout(defaultTimeout = 30000) {
|
|
43
|
+
if (isTestEnvironment()) {
|
|
44
|
+
return Math.min(defaultTimeout, 5000); // Max 5s in tests
|
|
45
|
+
}
|
|
46
|
+
return defaultTimeout;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get all test-aware defaults at once
|
|
50
|
+
*/
|
|
51
|
+
export function getTestAwareDefaults(options) {
|
|
52
|
+
const isTest = isTestEnvironment();
|
|
53
|
+
return {
|
|
54
|
+
enhancedMode: options?.enhancedMode ?? !isTest,
|
|
55
|
+
knowledgeEnhancement: options?.knowledgeEnhancement ?? !isTest,
|
|
56
|
+
enableMemoryIntegration: options?.enableMemoryIntegration ?? !isTest,
|
|
57
|
+
timeout: options?.timeout ?? (isTest ? 5000 : 30000),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Merge user options with test-aware defaults
|
|
62
|
+
* User-provided options always take precedence
|
|
63
|
+
*/
|
|
64
|
+
export function mergeWithTestDefaults(userOptions) {
|
|
65
|
+
const defaults = getTestAwareDefaults();
|
|
66
|
+
return {
|
|
67
|
+
...defaults,
|
|
68
|
+
...userOptions,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=test-aware-defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-aware-defaults.js","sourceRoot":"","sources":["../../../src/utils/test-aware-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,MAAM;QAClC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,SAAS;QAC3C,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS,CACpC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,CAAC,iBAAiB,EAAE,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,8BAA8B;IAC5C,OAAO,CAAC,iBAAiB,EAAE,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO,CAAC,iBAAiB,EAAE,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,iBAAyB,KAAK;IAChE,IAAI,iBAAiB,EAAE,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,kBAAkB;IAC3D,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAaD;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAKpC;IACC,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IAEnC,OAAO;QACL,YAAY,EAAE,OAAO,EAAE,YAAY,IAAI,CAAC,MAAM;QAC9C,oBAAoB,EAAE,OAAO,EAAE,oBAAoB,IAAI,CAAC,MAAM;QAC9D,uBAAuB,EAAE,OAAO,EAAE,uBAAuB,IAAI,CAAC,MAAM;QACpE,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;KACrD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAc;IAEd,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC;IAExC,OAAO;QACL,GAAG,QAAQ;QACX,GAAG,WAAW;KACf,CAAC;AACJ,CAAC"}
|
|
@@ -2,11 +2,15 @@
|
|
|
2
2
|
* Tree-sitter Integration for Enterprise DevOps Code Analysis
|
|
3
3
|
*
|
|
4
4
|
* Provides intelligent code analysis for multi-language DevOps stacks including:
|
|
5
|
-
* -
|
|
6
|
-
* - Terraform/HCL infrastructure
|
|
5
|
+
* - TypeScript/JavaScript applications
|
|
7
6
|
* - Python microservices
|
|
8
|
-
* -
|
|
9
|
-
* -
|
|
7
|
+
* - Java/Quarkus applications
|
|
8
|
+
* - Go cloud-native services
|
|
9
|
+
* - Rust system components
|
|
10
|
+
* - C/C++ native code
|
|
11
|
+
* - Ruby scripts and Rails apps
|
|
12
|
+
* - Ansible playbooks and roles
|
|
13
|
+
* - Kubernetes/Docker configurations
|
|
10
14
|
* - CI/CD pipelines
|
|
11
15
|
*
|
|
12
16
|
* Enterprise Features:
|
|
@@ -14,6 +18,9 @@
|
|
|
14
18
|
* - Architectural boundary validation
|
|
15
19
|
* - Multi-language dependency analysis
|
|
16
20
|
* - Security pattern recognition
|
|
21
|
+
*
|
|
22
|
+
* Note: Uses tree-sitter 0.21.x for maximum language compatibility.
|
|
23
|
+
* See ADR-017 for version strategy details.
|
|
17
24
|
*/
|
|
18
25
|
export interface CodeAnalysisResult {
|
|
19
26
|
language: string;
|
|
@@ -137,8 +144,10 @@ export declare class TreeSitterAnalyzer {
|
|
|
137
144
|
private analyzeYAML;
|
|
138
145
|
/**
|
|
139
146
|
* Terraform/HCL analysis for infrastructure
|
|
147
|
+
* Note: HCL parser removed in 0.21.x downgrade - see ADR-017
|
|
148
|
+
* Kept for potential future use when tree-sitter-hcl becomes 0.21.x compatible
|
|
140
149
|
*/
|
|
141
|
-
private
|
|
150
|
+
private _analyzeTerraform;
|
|
142
151
|
/**
|
|
143
152
|
* Dockerfile analysis for container security
|
|
144
153
|
*/
|
|
@@ -147,6 +156,34 @@ export declare class TreeSitterAnalyzer {
|
|
|
147
156
|
* Bash script analysis
|
|
148
157
|
*/
|
|
149
158
|
private analyzeBash;
|
|
159
|
+
/**
|
|
160
|
+
* Java analysis for enterprise applications (Quarkus, Spring)
|
|
161
|
+
*/
|
|
162
|
+
private analyzeJava;
|
|
163
|
+
private extractJavaParameters;
|
|
164
|
+
/**
|
|
165
|
+
* Go analysis for cloud-native services
|
|
166
|
+
*/
|
|
167
|
+
private analyzeGo;
|
|
168
|
+
private extractGoParameters;
|
|
169
|
+
/**
|
|
170
|
+
* Rust analysis for system components
|
|
171
|
+
*/
|
|
172
|
+
private analyzeRust;
|
|
173
|
+
private extractRustParameters;
|
|
174
|
+
/**
|
|
175
|
+
* C/C++ analysis for native code
|
|
176
|
+
*/
|
|
177
|
+
private analyzeCCpp;
|
|
178
|
+
/**
|
|
179
|
+
* Ruby analysis for scripts and Rails apps
|
|
180
|
+
*/
|
|
181
|
+
private analyzeRuby;
|
|
182
|
+
private extractRubyParameters;
|
|
183
|
+
/**
|
|
184
|
+
* CSS analysis for stylesheet security
|
|
185
|
+
*/
|
|
186
|
+
private analyzeCSS;
|
|
150
187
|
/**
|
|
151
188
|
* JSON analysis for configuration files
|
|
152
189
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-sitter-analyzer.d.ts","sourceRoot":"","sources":["../../../src/utils/tree-sitter-analyzer.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tree-sitter-analyzer.d.ts","sourceRoot":"","sources":["../../../src/utils/tree-sitter-analyzer.ts"],"names":[],"mappings":"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"}
|