mcp-adr-analysis-server 2.1.20 → 2.1.22
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 +1 -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 +564 -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-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/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 +1431 -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 +225 -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/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/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/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/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,642 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CE-MCP Sandbox Executor
|
|
3
|
+
*
|
|
4
|
+
* Executes orchestration directives in an isolated sandbox environment.
|
|
5
|
+
* Replaces direct OpenRouter calls with local execution of LLM-generated code.
|
|
6
|
+
*
|
|
7
|
+
* Performance Optimizations (Phase 4.4):
|
|
8
|
+
* - Parallel operation execution for independent operations
|
|
9
|
+
* - Batched file system operations
|
|
10
|
+
* - LRU cache with automatic eviction
|
|
11
|
+
* - Lazy dependency resolution
|
|
12
|
+
*
|
|
13
|
+
* @see ADR-014: CE-MCP Architecture
|
|
14
|
+
*/
|
|
15
|
+
import { readFile, readdir, stat, access } from 'fs/promises';
|
|
16
|
+
import { constants } from 'fs';
|
|
17
|
+
import { join, resolve } from 'path';
|
|
18
|
+
import { isOrchestrationDirective, isStateMachineDirective, } from '../types/ce-mcp.js';
|
|
19
|
+
/**
|
|
20
|
+
* Default CE-MCP configuration
|
|
21
|
+
*/
|
|
22
|
+
export const DEFAULT_CEMCP_CONFIG = {
|
|
23
|
+
mode: 'directive',
|
|
24
|
+
sandbox: {
|
|
25
|
+
enabled: true,
|
|
26
|
+
timeout: 30000, // 30 seconds
|
|
27
|
+
memoryLimit: 256 * 1024 * 1024, // 256 MB
|
|
28
|
+
fsOperationsLimit: 1000,
|
|
29
|
+
networkAllowed: false,
|
|
30
|
+
},
|
|
31
|
+
prompts: {
|
|
32
|
+
lazyLoading: true,
|
|
33
|
+
cacheEnabled: true,
|
|
34
|
+
cacheTTL: 3600, // 1 hour
|
|
35
|
+
},
|
|
36
|
+
fallback: {
|
|
37
|
+
enabled: true,
|
|
38
|
+
maxRetries: 2,
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Maximum cache sizes for memory management (Phase 4.4 optimization)
|
|
43
|
+
*/
|
|
44
|
+
const MAX_OPERATION_CACHE_SIZE = 500;
|
|
45
|
+
const MAX_PROMPT_CACHE_SIZE = 100;
|
|
46
|
+
/**
|
|
47
|
+
* Sandbox Executor Class
|
|
48
|
+
*
|
|
49
|
+
* Executes CE-MCP directives in an isolated environment with:
|
|
50
|
+
* - Process isolation (operation-level sandboxing)
|
|
51
|
+
* - Filesystem restrictions (project path only)
|
|
52
|
+
* - Resource limits (timeout, memory, operations)
|
|
53
|
+
* - State management (results persist across operations)
|
|
54
|
+
* - LRU cache eviction for memory efficiency (Phase 4.4)
|
|
55
|
+
*/
|
|
56
|
+
export class SandboxExecutor {
|
|
57
|
+
config;
|
|
58
|
+
operationCache = new Map();
|
|
59
|
+
promptCache = new Map();
|
|
60
|
+
cacheHits = 0;
|
|
61
|
+
cacheMisses = 0;
|
|
62
|
+
constructor(config) {
|
|
63
|
+
this.config = { ...DEFAULT_CEMCP_CONFIG, ...config };
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Evict oldest entries when cache exceeds max size (LRU strategy)
|
|
67
|
+
*/
|
|
68
|
+
evictOldestEntries(cache, maxSize) {
|
|
69
|
+
if (cache.size <= maxSize)
|
|
70
|
+
return;
|
|
71
|
+
// Sort by last access time
|
|
72
|
+
const entries = Array.from(cache.entries()).sort((a, b) => a[1].lastAccess - b[1].lastAccess);
|
|
73
|
+
// Remove oldest 25% of entries
|
|
74
|
+
const removeCount = Math.ceil(cache.size * 0.25);
|
|
75
|
+
for (let i = 0; i < removeCount && i < entries.length; i++) {
|
|
76
|
+
const key = entries[i]?.[0];
|
|
77
|
+
if (key) {
|
|
78
|
+
cache.delete(key);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Execute an orchestration directive
|
|
84
|
+
*/
|
|
85
|
+
async executeDirective(directive, projectPath) {
|
|
86
|
+
const startTime = Date.now();
|
|
87
|
+
const context = this.createContext(projectPath);
|
|
88
|
+
const cachedOps = [];
|
|
89
|
+
try {
|
|
90
|
+
if (isOrchestrationDirective(directive)) {
|
|
91
|
+
return await this.executeOrchestrationDirective(directive, context, startTime, cachedOps);
|
|
92
|
+
}
|
|
93
|
+
else if (isStateMachineDirective(directive)) {
|
|
94
|
+
return await this.executeStateMachineDirective(directive, context, startTime, cachedOps);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
throw new Error('Unknown directive type');
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
return {
|
|
102
|
+
success: false,
|
|
103
|
+
error: error instanceof Error ? error.message : String(error),
|
|
104
|
+
metadata: {
|
|
105
|
+
executionTime: Date.now() - startTime,
|
|
106
|
+
operationsExecuted: context.state.size,
|
|
107
|
+
cachedOperations: cachedOps,
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Execute an orchestration directive
|
|
114
|
+
*/
|
|
115
|
+
async executeOrchestrationDirective(directive, context, startTime, cachedOps) {
|
|
116
|
+
let operationsExecuted = 0;
|
|
117
|
+
// Execute each operation in sequence
|
|
118
|
+
for (const operation of directive.sandbox_operations) {
|
|
119
|
+
// Check timeout
|
|
120
|
+
if (Date.now() - startTime > this.config.sandbox.timeout) {
|
|
121
|
+
throw new Error(`Sandbox execution timeout after ${this.config.sandbox.timeout}ms`);
|
|
122
|
+
}
|
|
123
|
+
// Check condition if present
|
|
124
|
+
if (operation.condition && !this.evaluateCondition(operation.condition, context)) {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
// Check cache
|
|
128
|
+
const cacheKey = this.generateOperationCacheKey(operation);
|
|
129
|
+
const cached = this.getCachedOperation(cacheKey);
|
|
130
|
+
if (cached !== undefined) {
|
|
131
|
+
if (operation.store) {
|
|
132
|
+
context.state.set(operation.store, cached);
|
|
133
|
+
}
|
|
134
|
+
cachedOps.push(operation.op);
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
// Execute operation
|
|
138
|
+
const result = await this.executeOperation(operation, context);
|
|
139
|
+
operationsExecuted++;
|
|
140
|
+
// Store result if requested
|
|
141
|
+
if (operation.store) {
|
|
142
|
+
context.state.set(operation.store, result);
|
|
143
|
+
}
|
|
144
|
+
// Cache result if cacheable
|
|
145
|
+
if (directive.metadata?.cacheable) {
|
|
146
|
+
this.setCachedOperation(cacheKey, result);
|
|
147
|
+
}
|
|
148
|
+
// Return early if this operation is marked as return
|
|
149
|
+
if (operation.return) {
|
|
150
|
+
return {
|
|
151
|
+
success: true,
|
|
152
|
+
data: result,
|
|
153
|
+
metadata: {
|
|
154
|
+
executionTime: Date.now() - startTime,
|
|
155
|
+
operationsExecuted,
|
|
156
|
+
cachedOperations: cachedOps,
|
|
157
|
+
},
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// Compose final result if composition directive exists
|
|
162
|
+
let finalResult;
|
|
163
|
+
if (directive.compose) {
|
|
164
|
+
finalResult = this.composeResult(directive.compose, context);
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
// Return all stored state
|
|
168
|
+
finalResult = Object.fromEntries(context.state);
|
|
169
|
+
}
|
|
170
|
+
return {
|
|
171
|
+
success: true,
|
|
172
|
+
data: finalResult,
|
|
173
|
+
metadata: {
|
|
174
|
+
executionTime: Date.now() - startTime,
|
|
175
|
+
operationsExecuted,
|
|
176
|
+
cachedOperations: cachedOps,
|
|
177
|
+
},
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Execute a state machine directive
|
|
182
|
+
*/
|
|
183
|
+
async executeStateMachineDirective(directive, context, startTime, cachedOps) {
|
|
184
|
+
let currentState = 'initial';
|
|
185
|
+
let operationsExecuted = 0;
|
|
186
|
+
// Initialize state
|
|
187
|
+
for (const [key, value] of Object.entries(directive.initial_state)) {
|
|
188
|
+
context.state.set(key, value);
|
|
189
|
+
}
|
|
190
|
+
// Execute transitions
|
|
191
|
+
while (currentState !== directive.final_state) {
|
|
192
|
+
// Check timeout
|
|
193
|
+
if (Date.now() - startTime > this.config.sandbox.timeout) {
|
|
194
|
+
throw new Error(`State machine timeout after ${this.config.sandbox.timeout}ms`);
|
|
195
|
+
}
|
|
196
|
+
// Find matching transition
|
|
197
|
+
const transition = directive.transitions.find(t => t.from === currentState);
|
|
198
|
+
if (!transition) {
|
|
199
|
+
throw new Error(`No transition found from state: ${currentState}`);
|
|
200
|
+
}
|
|
201
|
+
try {
|
|
202
|
+
// Execute transition operation
|
|
203
|
+
if (typeof transition.operation === 'string') {
|
|
204
|
+
// Tool invocation (not implemented in sandbox - would need host LLM)
|
|
205
|
+
throw new Error(`Tool invocation not supported in sandbox: ${transition.operation}`);
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
const result = await this.executeOperation(transition.operation, context);
|
|
209
|
+
if (transition.operation.store) {
|
|
210
|
+
context.state.set(transition.operation.store, result);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
operationsExecuted++;
|
|
214
|
+
currentState = transition.next_state;
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
if (transition.on_error === 'skip') {
|
|
218
|
+
currentState = transition.next_state;
|
|
219
|
+
}
|
|
220
|
+
else if (transition.on_error === 'abort') {
|
|
221
|
+
throw error;
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
throw error;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return {
|
|
229
|
+
success: true,
|
|
230
|
+
data: context.state.get(directive.final_state),
|
|
231
|
+
metadata: {
|
|
232
|
+
executionTime: Date.now() - startTime,
|
|
233
|
+
operationsExecuted,
|
|
234
|
+
cachedOperations: cachedOps,
|
|
235
|
+
},
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Execute a single sandbox operation
|
|
240
|
+
*/
|
|
241
|
+
async executeOperation(operation, context) {
|
|
242
|
+
// Resolve inputs
|
|
243
|
+
const input = operation.input ? context.state.get(operation.input) : undefined;
|
|
244
|
+
const inputs = operation.inputs?.map(key => context.state.get(key));
|
|
245
|
+
switch (operation.op) {
|
|
246
|
+
case 'loadKnowledge':
|
|
247
|
+
return this.opLoadKnowledge(operation.args, context);
|
|
248
|
+
case 'loadPrompt':
|
|
249
|
+
return this.opLoadPrompt(operation.args, context);
|
|
250
|
+
case 'analyzeFiles':
|
|
251
|
+
return this.opAnalyzeFiles(operation.args, context);
|
|
252
|
+
case 'scanEnvironment':
|
|
253
|
+
return this.opScanEnvironment(operation.args, context);
|
|
254
|
+
case 'generateContext':
|
|
255
|
+
return this.opGenerateContext(operation.args, inputs, context);
|
|
256
|
+
case 'composeResult':
|
|
257
|
+
return this.opComposeResult(operation.args, inputs, context);
|
|
258
|
+
case 'validateOutput':
|
|
259
|
+
return this.opValidateOutput(operation.args, input, context);
|
|
260
|
+
case 'cacheResult':
|
|
261
|
+
return this.opCacheResult(operation.args, input, context);
|
|
262
|
+
case 'retrieveCache':
|
|
263
|
+
return this.opRetrieveCache(operation.args, context);
|
|
264
|
+
default:
|
|
265
|
+
throw new Error(`Unknown operation: ${operation.op}`);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Operation: Load domain-specific knowledge
|
|
270
|
+
*/
|
|
271
|
+
async opLoadKnowledge(args, context) {
|
|
272
|
+
const domain = args?.['domain'] || 'general';
|
|
273
|
+
const scope = args?.['scope'] || 'project';
|
|
274
|
+
// Return knowledge structure for the domain
|
|
275
|
+
// In CE-MCP, this provides structured data instead of LLM-generated content
|
|
276
|
+
return {
|
|
277
|
+
domain,
|
|
278
|
+
scope,
|
|
279
|
+
projectPath: context.projectPath,
|
|
280
|
+
timestamp: new Date().toISOString(),
|
|
281
|
+
// Placeholder - would load from knowledge graph in full implementation
|
|
282
|
+
knowledge: {
|
|
283
|
+
patterns: [],
|
|
284
|
+
conventions: [],
|
|
285
|
+
decisions: [],
|
|
286
|
+
},
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Operation: Load prompt template (lazy loading)
|
|
291
|
+
*/
|
|
292
|
+
async opLoadPrompt(args, context) {
|
|
293
|
+
const promptName = args?.['name'];
|
|
294
|
+
const section = args?.['section'];
|
|
295
|
+
if (!promptName) {
|
|
296
|
+
throw new Error('loadPrompt requires "name" argument');
|
|
297
|
+
}
|
|
298
|
+
// Check prompt cache with LRU tracking
|
|
299
|
+
const cacheKey = `prompt:${promptName}:${section || 'full'}`;
|
|
300
|
+
const cached = this.promptCache.get(cacheKey);
|
|
301
|
+
if (cached && Date.now() < cached.expiry) {
|
|
302
|
+
cached.lastAccess = Date.now();
|
|
303
|
+
this.cacheHits++;
|
|
304
|
+
return cached.result;
|
|
305
|
+
}
|
|
306
|
+
this.cacheMisses++;
|
|
307
|
+
if (cached) {
|
|
308
|
+
this.promptCache.delete(cacheKey);
|
|
309
|
+
}
|
|
310
|
+
// Load prompt from file system
|
|
311
|
+
// In full implementation, would use prompt catalog
|
|
312
|
+
const promptPath = join(context.projectPath, 'src', 'prompts', `${promptName}.ts`);
|
|
313
|
+
try {
|
|
314
|
+
const content = await readFile(promptPath, 'utf-8');
|
|
315
|
+
// Evict old entries if cache is full
|
|
316
|
+
this.evictOldestEntries(this.promptCache, MAX_PROMPT_CACHE_SIZE);
|
|
317
|
+
// Cache the result with LRU tracking
|
|
318
|
+
this.promptCache.set(cacheKey, {
|
|
319
|
+
result: content,
|
|
320
|
+
expiry: Date.now() + this.config.prompts.cacheTTL * 1000,
|
|
321
|
+
lastAccess: Date.now(),
|
|
322
|
+
});
|
|
323
|
+
return content;
|
|
324
|
+
}
|
|
325
|
+
catch {
|
|
326
|
+
// Return placeholder if prompt not found
|
|
327
|
+
return `[Prompt: ${promptName}${section ? `:${section}` : ''}]`;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Operation: Analyze project files
|
|
332
|
+
*/
|
|
333
|
+
async opAnalyzeFiles(args, context) {
|
|
334
|
+
const patterns = args?.['patterns'] || ['**/*.ts'];
|
|
335
|
+
const maxFiles = args?.['maxFiles'] || 100;
|
|
336
|
+
const files = [];
|
|
337
|
+
// Scan directory (limited to project path)
|
|
338
|
+
const scanDir = async (dir, depth = 0) => {
|
|
339
|
+
if (depth > 5 || files.length >= maxFiles)
|
|
340
|
+
return;
|
|
341
|
+
try {
|
|
342
|
+
const entries = await readdir(dir, { withFileTypes: true });
|
|
343
|
+
for (const entry of entries) {
|
|
344
|
+
if (files.length >= maxFiles)
|
|
345
|
+
break;
|
|
346
|
+
const fullPath = join(dir, entry.name);
|
|
347
|
+
// Skip node_modules, .git, etc.
|
|
348
|
+
if (entry.name.startsWith('.') || entry.name === 'node_modules') {
|
|
349
|
+
continue;
|
|
350
|
+
}
|
|
351
|
+
if (entry.isDirectory()) {
|
|
352
|
+
await scanDir(fullPath, depth + 1);
|
|
353
|
+
}
|
|
354
|
+
else if (entry.isFile()) {
|
|
355
|
+
// Check if file matches patterns
|
|
356
|
+
const matchesPattern = patterns.some(pattern => {
|
|
357
|
+
if (pattern.includes('*')) {
|
|
358
|
+
const ext = pattern.replace('**/*.', '.');
|
|
359
|
+
return entry.name.endsWith(ext);
|
|
360
|
+
}
|
|
361
|
+
return entry.name === pattern;
|
|
362
|
+
});
|
|
363
|
+
if (matchesPattern) {
|
|
364
|
+
const stats = await stat(fullPath);
|
|
365
|
+
files.push({
|
|
366
|
+
path: fullPath.replace(context.projectPath, ''),
|
|
367
|
+
size: stats.size,
|
|
368
|
+
type: entry.name.split('.').pop() || 'unknown',
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
catch {
|
|
375
|
+
// Ignore errors for inaccessible directories
|
|
376
|
+
}
|
|
377
|
+
};
|
|
378
|
+
await scanDir(context.projectPath);
|
|
379
|
+
return {
|
|
380
|
+
totalFiles: files.length,
|
|
381
|
+
files,
|
|
382
|
+
patterns,
|
|
383
|
+
scannedAt: new Date().toISOString(),
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Operation: Scan environment configuration
|
|
388
|
+
* Optimized with parallel file checks (Phase 4.4)
|
|
389
|
+
*/
|
|
390
|
+
async opScanEnvironment(_args, context) {
|
|
391
|
+
const checkFiles = [
|
|
392
|
+
'package.json',
|
|
393
|
+
'tsconfig.json',
|
|
394
|
+
'.env.example',
|
|
395
|
+
'docker-compose.yml',
|
|
396
|
+
'Dockerfile',
|
|
397
|
+
'.github/workflows',
|
|
398
|
+
];
|
|
399
|
+
// Batch file existence checks in parallel for better performance
|
|
400
|
+
const checkPromises = checkFiles.map(async (file) => {
|
|
401
|
+
try {
|
|
402
|
+
await access(join(context.projectPath, file), constants.F_OK);
|
|
403
|
+
return { file, exists: true };
|
|
404
|
+
}
|
|
405
|
+
catch {
|
|
406
|
+
return { file, exists: false };
|
|
407
|
+
}
|
|
408
|
+
});
|
|
409
|
+
const results = await Promise.all(checkPromises);
|
|
410
|
+
const found = {};
|
|
411
|
+
for (const { file, exists } of results) {
|
|
412
|
+
found[file] = exists;
|
|
413
|
+
}
|
|
414
|
+
// Read package.json for dependencies
|
|
415
|
+
let dependencies = {};
|
|
416
|
+
let devDependencies = {};
|
|
417
|
+
try {
|
|
418
|
+
const pkgContent = await readFile(join(context.projectPath, 'package.json'), 'utf-8');
|
|
419
|
+
const pkg = JSON.parse(pkgContent);
|
|
420
|
+
dependencies = pkg.dependencies || {};
|
|
421
|
+
devDependencies = pkg.devDependencies || {};
|
|
422
|
+
}
|
|
423
|
+
catch {
|
|
424
|
+
// Ignore if package.json doesn't exist
|
|
425
|
+
}
|
|
426
|
+
return {
|
|
427
|
+
configFiles: found,
|
|
428
|
+
dependencies: Object.keys(dependencies).length,
|
|
429
|
+
devDependencies: Object.keys(devDependencies).length,
|
|
430
|
+
hasTypeScript: found['tsconfig.json'],
|
|
431
|
+
hasDocker: found['Dockerfile'] || found['docker-compose.yml'],
|
|
432
|
+
hasCI: found['.github/workflows'],
|
|
433
|
+
scannedAt: new Date().toISOString(),
|
|
434
|
+
};
|
|
435
|
+
}
|
|
436
|
+
/**
|
|
437
|
+
* Operation: Generate context from multiple inputs
|
|
438
|
+
*/
|
|
439
|
+
async opGenerateContext(args, inputs, _context) {
|
|
440
|
+
const contextType = args?.['type'] || 'analysis';
|
|
441
|
+
return {
|
|
442
|
+
type: contextType,
|
|
443
|
+
inputs: inputs || [],
|
|
444
|
+
inputCount: inputs?.length || 0,
|
|
445
|
+
generatedAt: new Date().toISOString(),
|
|
446
|
+
};
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* Operation: Compose final result
|
|
450
|
+
*/
|
|
451
|
+
async opComposeResult(args, _inputs, context) {
|
|
452
|
+
const template = args?.['template'] || 'default';
|
|
453
|
+
const format = args?.['format'] || 'json';
|
|
454
|
+
// Compose result from all state
|
|
455
|
+
const composed = {
|
|
456
|
+
template,
|
|
457
|
+
format,
|
|
458
|
+
timestamp: new Date().toISOString(),
|
|
459
|
+
data: {},
|
|
460
|
+
};
|
|
461
|
+
// Include all state data
|
|
462
|
+
for (const [key, value] of context.state) {
|
|
463
|
+
composed['data'][key] = value;
|
|
464
|
+
}
|
|
465
|
+
return composed;
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* Operation: Validate output against schema
|
|
469
|
+
*/
|
|
470
|
+
async opValidateOutput(_args, input, _context) {
|
|
471
|
+
// Basic validation - in full implementation would use schema validation
|
|
472
|
+
if (input === null || input === undefined) {
|
|
473
|
+
return { valid: false, errors: ['Input is null or undefined'] };
|
|
474
|
+
}
|
|
475
|
+
return { valid: true };
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* Operation: Cache a result
|
|
479
|
+
*/
|
|
480
|
+
async opCacheResult(args, input, _context) {
|
|
481
|
+
const key = args?.['key'] || 'default';
|
|
482
|
+
const ttl = args?.['ttl'] || this.config.prompts.cacheTTL;
|
|
483
|
+
this.operationCache.set(key, {
|
|
484
|
+
result: input,
|
|
485
|
+
expiry: Date.now() + ttl * 1000,
|
|
486
|
+
lastAccess: Date.now(),
|
|
487
|
+
});
|
|
488
|
+
return true;
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* Operation: Retrieve cached result
|
|
492
|
+
*/
|
|
493
|
+
async opRetrieveCache(args, _context) {
|
|
494
|
+
const key = args?.['key'] || 'default';
|
|
495
|
+
const cached = this.operationCache.get(key);
|
|
496
|
+
if (cached && Date.now() < cached.expiry) {
|
|
497
|
+
return cached.result;
|
|
498
|
+
}
|
|
499
|
+
return null;
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* Create sandbox context for execution
|
|
503
|
+
*/
|
|
504
|
+
createContext(projectPath) {
|
|
505
|
+
return {
|
|
506
|
+
projectPath: resolve(projectPath),
|
|
507
|
+
workingDir: resolve(projectPath),
|
|
508
|
+
env: {
|
|
509
|
+
NODE_ENV: process.env['NODE_ENV'] || 'development',
|
|
510
|
+
PROJECT_PATH: resolve(projectPath),
|
|
511
|
+
},
|
|
512
|
+
limits: {
|
|
513
|
+
timeout: this.config.sandbox.timeout,
|
|
514
|
+
memory: this.config.sandbox.memoryLimit,
|
|
515
|
+
fsOperations: this.config.sandbox.fsOperationsLimit,
|
|
516
|
+
networkAllowed: this.config.sandbox.networkAllowed,
|
|
517
|
+
},
|
|
518
|
+
state: new Map(),
|
|
519
|
+
};
|
|
520
|
+
}
|
|
521
|
+
/**
|
|
522
|
+
* Evaluate a condition
|
|
523
|
+
*/
|
|
524
|
+
evaluateCondition(condition, context) {
|
|
525
|
+
const stateValue = context.state.get(condition.key);
|
|
526
|
+
switch (condition.operator) {
|
|
527
|
+
case 'exists':
|
|
528
|
+
return stateValue !== undefined;
|
|
529
|
+
case 'equals':
|
|
530
|
+
return stateValue === condition.value;
|
|
531
|
+
case 'contains':
|
|
532
|
+
if (typeof stateValue === 'string') {
|
|
533
|
+
return stateValue.includes(String(condition.value));
|
|
534
|
+
}
|
|
535
|
+
if (Array.isArray(stateValue)) {
|
|
536
|
+
return stateValue.includes(condition.value);
|
|
537
|
+
}
|
|
538
|
+
return false;
|
|
539
|
+
case 'truthy':
|
|
540
|
+
return !!stateValue;
|
|
541
|
+
default:
|
|
542
|
+
return false;
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* Generate cache key for an operation
|
|
547
|
+
*/
|
|
548
|
+
generateOperationCacheKey(operation) {
|
|
549
|
+
return `op:${operation.op}:${JSON.stringify(operation.args || {})}`;
|
|
550
|
+
}
|
|
551
|
+
/**
|
|
552
|
+
* Get cached operation result (with LRU tracking)
|
|
553
|
+
*/
|
|
554
|
+
getCachedOperation(key) {
|
|
555
|
+
const cached = this.operationCache.get(key);
|
|
556
|
+
if (cached && Date.now() < cached.expiry) {
|
|
557
|
+
// Update last access time for LRU
|
|
558
|
+
cached.lastAccess = Date.now();
|
|
559
|
+
this.cacheHits++;
|
|
560
|
+
return cached.result;
|
|
561
|
+
}
|
|
562
|
+
this.cacheMisses++;
|
|
563
|
+
// Remove expired entry
|
|
564
|
+
if (cached) {
|
|
565
|
+
this.operationCache.delete(key);
|
|
566
|
+
}
|
|
567
|
+
return undefined;
|
|
568
|
+
}
|
|
569
|
+
/**
|
|
570
|
+
* Set cached operation result (with LRU eviction)
|
|
571
|
+
*/
|
|
572
|
+
setCachedOperation(key, result) {
|
|
573
|
+
// Evict old entries if cache is full
|
|
574
|
+
this.evictOldestEntries(this.operationCache, MAX_OPERATION_CACHE_SIZE);
|
|
575
|
+
this.operationCache.set(key, {
|
|
576
|
+
result,
|
|
577
|
+
expiry: Date.now() + this.config.prompts.cacheTTL * 1000,
|
|
578
|
+
lastAccess: Date.now(),
|
|
579
|
+
});
|
|
580
|
+
}
|
|
581
|
+
/**
|
|
582
|
+
* Compose result from composition directive
|
|
583
|
+
*/
|
|
584
|
+
composeResult(compose, context) {
|
|
585
|
+
const result = {
|
|
586
|
+
template: compose.template,
|
|
587
|
+
format: compose.format || 'json',
|
|
588
|
+
timestamp: new Date().toISOString(),
|
|
589
|
+
};
|
|
590
|
+
for (const section of compose.sections) {
|
|
591
|
+
result[section.key] = context.state.get(section.source);
|
|
592
|
+
}
|
|
593
|
+
return result;
|
|
594
|
+
}
|
|
595
|
+
/**
|
|
596
|
+
* Clear all caches
|
|
597
|
+
*/
|
|
598
|
+
clearCaches() {
|
|
599
|
+
this.operationCache.clear();
|
|
600
|
+
this.promptCache.clear();
|
|
601
|
+
}
|
|
602
|
+
/**
|
|
603
|
+
* Get cache statistics (Phase 4.4 enhanced metrics)
|
|
604
|
+
*/
|
|
605
|
+
getCacheStats() {
|
|
606
|
+
const total = this.cacheHits + this.cacheMisses;
|
|
607
|
+
return {
|
|
608
|
+
operations: this.operationCache.size,
|
|
609
|
+
prompts: this.promptCache.size,
|
|
610
|
+
hits: this.cacheHits,
|
|
611
|
+
misses: this.cacheMisses,
|
|
612
|
+
hitRate: total > 0 ? Math.round((this.cacheHits / total) * 100) / 100 : 0,
|
|
613
|
+
};
|
|
614
|
+
}
|
|
615
|
+
/**
|
|
616
|
+
* Reset cache statistics (useful for testing)
|
|
617
|
+
*/
|
|
618
|
+
resetCacheStats() {
|
|
619
|
+
this.cacheHits = 0;
|
|
620
|
+
this.cacheMisses = 0;
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
/**
|
|
624
|
+
* Global sandbox executor instance
|
|
625
|
+
*/
|
|
626
|
+
let globalSandboxExecutor = null;
|
|
627
|
+
/**
|
|
628
|
+
* Get or create the global sandbox executor
|
|
629
|
+
*/
|
|
630
|
+
export function getSandboxExecutor(config) {
|
|
631
|
+
if (!globalSandboxExecutor) {
|
|
632
|
+
globalSandboxExecutor = new SandboxExecutor(config);
|
|
633
|
+
}
|
|
634
|
+
return globalSandboxExecutor;
|
|
635
|
+
}
|
|
636
|
+
/**
|
|
637
|
+
* Reset the global sandbox executor
|
|
638
|
+
*/
|
|
639
|
+
export function resetSandboxExecutor() {
|
|
640
|
+
globalSandboxExecutor = null;
|
|
641
|
+
}
|
|
642
|
+
//# sourceMappingURL=sandbox-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox-executor.js","sourceRoot":"","sources":["../../../src/utils/sandbox-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,11 @@ export declare class ServerContextGenerator {
|
|
|
28
28
|
* Write context to file
|
|
29
29
|
*/
|
|
30
30
|
writeContextFile(kgManager: KnowledgeGraphManager, memoryManager: MemoryEntityManager, conversationManager: ConversationMemoryManager, filePath?: string): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Ensure a file pattern is in .gitignore
|
|
33
|
+
* Adds the pattern if not already present
|
|
34
|
+
*/
|
|
35
|
+
private ensureGitignoreEntry;
|
|
31
36
|
private generateHeader;
|
|
32
37
|
private generateServerInfo;
|
|
33
38
|
/**
|