snow-flow 2.0.2 → 2.0.3
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/{.claude/mcp-config.json → .mcp.json} +13 -12
- package/.releaserc.json +47 -0
- package/README.md +6 -0
- package/package.json +1 -1
- package/.claude/claude-settings.json +0 -15
- package/.claude/commands/analysis/README.md +0 -9
- package/.claude/commands/automation/README.md +0 -9
- package/.claude/commands/github/README.md +0 -11
- package/.claude/commands/helpers/standard-checkpoint-hooks.sh +0 -179
- package/.claude/commands/hooks/README.md +0 -11
- package/.claude/commands/monitoring/README.md +0 -9
- package/.claude/commands/optimization/README.md +0 -9
- package/.claude/commands/training/README.md +0 -9
- package/.claude/commands/workflows/README.md +0 -9
- package/.claude/config.json +0 -36
- package/.claude/helpers/github-setup.sh +0 -28
- package/.claude/helpers/quick-start.sh +0 -19
- package/.claude/helpers/setup-mcp.sh +0 -18
- package/.claude/settings.json +0 -114
- package/.claude/settings.local.json +0 -33
- package/.claude-flow/metrics/agent-metrics.json +0 -1
- package/.claude-flow/metrics/performance.json +0 -9
- package/.claude-flow/metrics/system-metrics.json +0 -15986
- package/.claude-flow/metrics/task-metrics.json +0 -10
- package/.roo/README.md +0 -402
- package/.roo/mcp-list.txt +0 -257
- package/.roo/mcp.json +0 -32
- package/.roo/workflows/basic-tdd.json +0 -32
- package/.roomodes +0 -201
- package/CLAUDE.md +0 -393
- package/bin/snow-flow.js +0 -3
- package/dist/cli.js.bak +0 -2052
- package/dist/config/snow-flow-config.d.ts +0 -1492
- package/dist/config/snow-flow-config.js +0 -938
- package/scripts/create-env.js +0 -91
- package/scripts/postinstall.js +0 -30
- package/scripts/register-mcp-servers.js +0 -210
- package/scripts/reset-mcp-servers.js +0 -246
- package/scripts/setup-mcp.js +0 -106
- package/scripts/update-version.js +0 -31
- package/src/agents/README.md +0 -192
- package/src/agents/base-agent.ts +0 -251
- package/src/agents/coordinator.ts +0 -971
- package/src/agents/index.ts +0 -18
- package/src/agents/queen-403-handler.ts +0 -230
- package/src/agents/queen-agent.ts +0 -1399
- package/src/agents/script-writer-agent.ts +0 -769
- package/src/agents/security-agent.ts +0 -726
- package/src/agents/widget-creator-agent.ts +0 -568
- package/src/api/error-handling.ts +0 -1758
- package/src/api/natural-language-mapper.ts +0 -630
- package/src/api/performance-optimizer.ts +0 -891
- package/src/api/transaction-manager.ts +0 -754
- package/src/cli/deploy-artifact.ts +0 -304
- package/src/cli/snow-flow-cli-integration.ts +0 -434
- package/src/cli.ts +0 -4455
- package/src/cli.ts.bak +0 -5616
- package/src/compliance/advanced-compliance-system.ts +0 -1268
- package/src/compliance/index.ts +0 -19
- package/src/config/snow-flow-config.ts +0 -1019
- package/src/documentation/index.ts +0 -16
- package/src/documentation/self-documenting-system.ts +0 -1421
- package/src/dynamic-version.ts +0 -44
- package/src/healing/index.ts +0 -20
- package/src/healing/self-healing-system.ts +0 -1435
- package/src/health/README.md +0 -161
- package/src/health/system-health.ts +0 -995
- package/src/index.ts +0 -60
- package/src/intelligence/acl-analyzer.ts +0 -377
- package/src/intelligence/auto-resolution-engine.ts +0 -643
- package/src/intelligence/gap-analysis-engine.ts +0 -488
- package/src/intelligence/manual-instructions-generator.ts +0 -744
- package/src/intelligence/mcp-coverage-analyzer.ts +0 -708
- package/src/intelligence/multi-pass-requirements-analyzer.ts +0 -603
- package/src/intelligence/performance-recommendations-engine.ts +0 -1223
- package/src/intelligence/requirements-analyzer.ts +0 -1148
- package/src/intelligence/task-analyzer.ts +0 -628
- package/src/managers/scope-manager.ts +0 -555
- package/src/mcp/advanced/servicenow-advanced-features-mcp.ts +0 -16110
- package/src/mcp/base-mcp-server.ts +0 -660
- package/src/mcp/http-transport-wrapper.ts +0 -426
- package/src/mcp/service-discovery-client.ts +0 -312
- package/src/mcp/servicenow-automation-mcp-refactored.ts +0 -678
- package/src/mcp/servicenow-automation-mcp.ts +0 -838
- package/src/mcp/servicenow-deployment-mcp-refactored.ts +0 -1292
- package/src/mcp/servicenow-deployment-mcp.ts +0 -7244
- package/src/mcp/servicenow-graph-memory-mcp-refactored.ts +0 -721
- package/src/mcp/servicenow-graph-memory-mcp.ts +0 -832
- package/src/mcp/servicenow-integration-mcp-refactored.ts +0 -655
- package/src/mcp/servicenow-integration-mcp.ts +0 -819
- package/src/mcp/servicenow-intelligent-mcp-refactored.ts +0 -977
- package/src/mcp/servicenow-intelligent-mcp.ts +0 -4638
- package/src/mcp/servicenow-mcp-server.ts +0 -728
- package/src/mcp/servicenow-memory-mcp.ts +0 -474
- package/src/mcp/servicenow-operations-mcp-refactored.ts +0 -1995
- package/src/mcp/servicenow-operations-mcp.ts +0 -3384
- package/src/mcp/servicenow-platform-development-mcp-refactored.ts +0 -611
- package/src/mcp/servicenow-platform-development-mcp.ts +0 -970
- package/src/mcp/servicenow-progressive-indexer.ts +0 -370
- package/src/mcp/servicenow-reporting-analytics-mcp-refactored.ts +0 -695
- package/src/mcp/servicenow-reporting-analytics-mcp.ts +0 -1123
- package/src/mcp/servicenow-security-compliance-mcp-refactored.ts +0 -642
- package/src/mcp/servicenow-security-compliance-mcp.ts +0 -1157
- package/src/mcp/servicenow-update-set-mcp-refactored.ts +0 -751
- package/src/mcp/servicenow-update-set-mcp.ts +0 -811
- package/src/mcp/shared/agent-context-provider.ts +0 -365
- package/src/mcp/shared/base-mcp-server.ts +0 -2463
- package/src/mcp/shared/mcp-memory-manager.ts +0 -540
- package/src/mcp/shared/mcp-resource-manager.ts +0 -367
- package/src/mcp/snow-flow-mcp.ts +0 -911
- package/src/mcp/start-all-mcp-servers.ts +0 -102
- package/src/mcp/start-servicenow-mcp.ts +0 -67
- package/src/monitoring/enhanced-monitoring-system.ts +0 -1345
- package/src/monitoring/performance-tracker.ts +0 -777
- package/src/optimization/cost-optimization-engine.ts +0 -1125
- package/src/optimization/index.ts +0 -10
- package/src/queen/README.md +0 -403
- package/src/queen/agent-factory.ts +0 -574
- package/src/queen/index.ts +0 -94
- package/src/queen/mcp-execution-bridge.ts +0 -681
- package/src/queen/neural-learning.ts +0 -319
- package/src/queen/parallel-agent-engine.ts +0 -848
- package/src/queen/queen-memory-system.ts +0 -490
- package/src/queen/queen-memory.ts +0 -456
- package/src/queen/servicenow-queen.ts +0 -1029
- package/src/queen/types.ts +0 -87
- package/src/rollback/smart-rollback-system.ts +0 -866
- package/src/schemas/deployment.schema.json +0 -58
- package/src/schemas/flow.schema.json +0 -79
- package/src/schemas/widget.schema.json +0 -72
- package/src/snow-flow-system.ts +0 -541
- package/src/sparc/sparc-help.ts +0 -49
- package/src/sparc/team-sparc.ts +0 -88
- package/src/strategies/global-scope-strategy.ts +0 -736
- package/src/templates/base/application.template.json +0 -45
- package/src/templates/base/business_rule.template.json +0 -33
- package/src/templates/base/script_include.template.json +0 -18
- package/src/templates/base/table.template.json +0 -64
- package/src/templates/base/widget.template.json +0 -25
- package/src/templates/patterns/composite.incident-management.template.json +0 -140
- package/src/templates/patterns/widget.dashboard.template.json +0 -238
- package/src/templates/patterns/widget.datatable.template.json +0 -292
- package/src/testing/integration-test-suite.ts +0 -1276
- package/src/types/index.ts +0 -183
- package/src/types/neo4j-driver.d.ts +0 -23
- package/src/types/servicenow.types.ts +0 -307
- package/src/types/snow-flow.types.ts +0 -186
- package/src/types/todo.types.ts +0 -70
- package/src/utils/action-type-cache.ts +0 -286
- package/src/utils/agent-detector.ts +0 -573
- package/src/utils/artifact-tracker.ts +0 -379
- package/src/utils/dependency-detector.ts +0 -233
- package/src/utils/deployment-metadata-handler.ts +0 -518
- package/src/utils/error-recovery.ts +0 -680
- package/src/utils/logger.ts +0 -60
- package/src/utils/mcp-auth-middleware.ts +0 -262
- package/src/utils/mcp-config-manager.ts +0 -270
- package/src/utils/mcp-server-manager.ts +0 -446
- package/src/utils/mcp-tool-registry.ts +0 -298
- package/src/utils/migrate-snow-flow.ts +0 -98
- package/src/utils/oauth-html-templates.ts +0 -188
- package/src/utils/scope-utils.ts +0 -443
- package/src/utils/servicenow-client.ts +0 -3321
- package/src/utils/servicenow-id-generator.ts +0 -181
- package/src/utils/snow-memory-manager.ts +0 -605
- package/src/utils/snow-oauth.ts +0 -797
- package/src/utils/template-engine.ts +0 -463
- package/src/utils/theme-manager.ts +0 -295
- package/src/utils/unified-auth-store.ts +0 -222
- package/src/utils/update-set-importer.ts +0 -422
- package/src/utils/update-set-xml-packager.ts +0 -371
- package/src/utils/widget-template-generator.ts +0 -1744
- package/src/version.ts +0 -1950
|
@@ -1,456 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ServiceNow Queen Memory System
|
|
3
|
-
* Simple SQLite-based persistent storage for the hive-mind
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { Database } from 'better-sqlite3';
|
|
7
|
-
import { QueenMemory, DeploymentPattern, Agent, ServiceNowArtifact } from './types';
|
|
8
|
-
import * as path from 'path';
|
|
9
|
-
import * as fs from 'fs';
|
|
10
|
-
|
|
11
|
-
export class QueenMemorySystem {
|
|
12
|
-
private db: Database;
|
|
13
|
-
private memory: QueenMemory;
|
|
14
|
-
private dbPath: string;
|
|
15
|
-
|
|
16
|
-
constructor(dbPath?: string) {
|
|
17
|
-
const memoryDir = path.join(process.cwd(), '.snow-flow', 'queen');
|
|
18
|
-
if (!fs.existsSync(memoryDir)) {
|
|
19
|
-
fs.mkdirSync(memoryDir, { recursive: true });
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
this.dbPath = dbPath || path.join(memoryDir, 'queen-memory.db');
|
|
23
|
-
this.db = new (require('better-sqlite3'))(this.dbPath);
|
|
24
|
-
|
|
25
|
-
this.initializeDatabase();
|
|
26
|
-
this.memory = this.loadMemory();
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
private initializeDatabase(): void {
|
|
30
|
-
// Simple schema - snow-flow philosophy: keep it minimal
|
|
31
|
-
this.db.exec(`
|
|
32
|
-
CREATE TABLE IF NOT EXISTS patterns (
|
|
33
|
-
id INTEGER PRIMARY KEY,
|
|
34
|
-
task_type TEXT NOT NULL,
|
|
35
|
-
success_rate REAL NOT NULL,
|
|
36
|
-
agent_sequence TEXT NOT NULL,
|
|
37
|
-
mcp_sequence TEXT NOT NULL,
|
|
38
|
-
avg_duration INTEGER NOT NULL,
|
|
39
|
-
last_used TEXT NOT NULL,
|
|
40
|
-
use_count INTEGER DEFAULT 0
|
|
41
|
-
);
|
|
42
|
-
|
|
43
|
-
CREATE TABLE IF NOT EXISTS artifacts (
|
|
44
|
-
id TEXT PRIMARY KEY,
|
|
45
|
-
type TEXT NOT NULL,
|
|
46
|
-
name TEXT NOT NULL,
|
|
47
|
-
sys_id TEXT,
|
|
48
|
-
config TEXT NOT NULL,
|
|
49
|
-
dependencies TEXT NOT NULL,
|
|
50
|
-
created_at TEXT NOT NULL
|
|
51
|
-
);
|
|
52
|
-
|
|
53
|
-
CREATE TABLE IF NOT EXISTS learnings (
|
|
54
|
-
key TEXT PRIMARY KEY,
|
|
55
|
-
value TEXT NOT NULL,
|
|
56
|
-
confidence REAL NOT NULL,
|
|
57
|
-
updated_at TEXT NOT NULL
|
|
58
|
-
);
|
|
59
|
-
|
|
60
|
-
CREATE TABLE IF NOT EXISTS context (
|
|
61
|
-
key TEXT PRIMARY KEY,
|
|
62
|
-
value TEXT NOT NULL
|
|
63
|
-
);
|
|
64
|
-
|
|
65
|
-
CREATE TABLE IF NOT EXISTS task_history (
|
|
66
|
-
id TEXT PRIMARY KEY,
|
|
67
|
-
objective TEXT NOT NULL,
|
|
68
|
-
type TEXT NOT NULL,
|
|
69
|
-
agents_used TEXT NOT NULL,
|
|
70
|
-
success BOOLEAN NOT NULL,
|
|
71
|
-
duration INTEGER NOT NULL,
|
|
72
|
-
completed_at TEXT NOT NULL
|
|
73
|
-
);
|
|
74
|
-
`);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
private loadMemory(): QueenMemory {
|
|
78
|
-
const patterns = this.db.prepare('SELECT * FROM patterns ORDER BY success_rate DESC, use_count DESC').all()
|
|
79
|
-
.map((row: any) => ({
|
|
80
|
-
taskType: row.task_type,
|
|
81
|
-
successRate: row.success_rate,
|
|
82
|
-
agentSequence: JSON.parse(row.agent_sequence),
|
|
83
|
-
mcpSequence: JSON.parse(row.mcp_sequence),
|
|
84
|
-
avgDuration: row.avg_duration,
|
|
85
|
-
lastUsed: new Date(row.last_used)
|
|
86
|
-
}));
|
|
87
|
-
|
|
88
|
-
const artifacts = new Map();
|
|
89
|
-
this.db.prepare('SELECT * FROM artifacts').all()
|
|
90
|
-
.forEach((row: any) => {
|
|
91
|
-
artifacts.set(row.id, {
|
|
92
|
-
type: row.type,
|
|
93
|
-
name: row.name,
|
|
94
|
-
sys_id: row.sys_id,
|
|
95
|
-
config: JSON.parse(row.config),
|
|
96
|
-
dependencies: JSON.parse(row.dependencies)
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
const learnings = new Map();
|
|
101
|
-
this.db.prepare('SELECT * FROM learnings').all()
|
|
102
|
-
.forEach((row: any) => {
|
|
103
|
-
learnings.set(row.key, row.value);
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
return {
|
|
107
|
-
patterns,
|
|
108
|
-
artifacts,
|
|
109
|
-
agentHistory: new Map(),
|
|
110
|
-
learnings
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
// Store successful deployment pattern
|
|
115
|
-
storePattern(pattern: DeploymentPattern): void {
|
|
116
|
-
const stmt = this.db.prepare(`
|
|
117
|
-
INSERT OR REPLACE INTO patterns
|
|
118
|
-
(task_type, success_rate, agent_sequence, mcp_sequence, avg_duration, last_used, use_count)
|
|
119
|
-
VALUES (?, ?, ?, ?, ?, ?, COALESCE((SELECT use_count FROM patterns WHERE task_type = ?) + 1, 1))
|
|
120
|
-
`);
|
|
121
|
-
|
|
122
|
-
stmt.run(
|
|
123
|
-
pattern.taskType,
|
|
124
|
-
pattern.successRate,
|
|
125
|
-
JSON.stringify(pattern.agentSequence),
|
|
126
|
-
JSON.stringify(pattern.mcpSequence),
|
|
127
|
-
pattern.avgDuration,
|
|
128
|
-
pattern.lastUsed.toISOString(),
|
|
129
|
-
pattern.taskType
|
|
130
|
-
);
|
|
131
|
-
|
|
132
|
-
this.memory.patterns.push(pattern);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
// Get best pattern for task type
|
|
136
|
-
getBestPattern(taskType: string): DeploymentPattern | null {
|
|
137
|
-
return this.memory.patterns.find(p => p.taskType === taskType) || null;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
// Store artifact information
|
|
141
|
-
storeArtifact(artifact: ServiceNowArtifact): void {
|
|
142
|
-
const id = `${artifact.type}_${artifact.name}`;
|
|
143
|
-
const stmt = this.db.prepare(`
|
|
144
|
-
INSERT OR REPLACE INTO artifacts (id, type, name, sys_id, config, dependencies, created_at)
|
|
145
|
-
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
146
|
-
`);
|
|
147
|
-
|
|
148
|
-
stmt.run(
|
|
149
|
-
id,
|
|
150
|
-
artifact.type,
|
|
151
|
-
artifact.name,
|
|
152
|
-
artifact.sys_id || null,
|
|
153
|
-
JSON.stringify(artifact.config),
|
|
154
|
-
JSON.stringify(artifact.dependencies),
|
|
155
|
-
new Date().toISOString()
|
|
156
|
-
);
|
|
157
|
-
|
|
158
|
-
this.memory.artifacts.set(id, artifact);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
// Find similar artifacts
|
|
162
|
-
findSimilarArtifacts(type: string, namePattern: string): ServiceNowArtifact[] {
|
|
163
|
-
const results = [];
|
|
164
|
-
for (const [id, artifact] of Array.from(this.memory.artifacts.entries())) {
|
|
165
|
-
if (artifact.type === type && artifact.name.toLowerCase().includes(namePattern.toLowerCase())) {
|
|
166
|
-
results.push(artifact);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
return results;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
// Store learning from task execution
|
|
173
|
-
storeLearning(key: string, value: any, confidence: number = 1.0): void {
|
|
174
|
-
const stmt = this.db.prepare(`
|
|
175
|
-
INSERT OR REPLACE INTO learnings (key, value, confidence, updated_at)
|
|
176
|
-
VALUES (?, ?, ?, ?)
|
|
177
|
-
`);
|
|
178
|
-
|
|
179
|
-
const valueStr = typeof value === 'string' ? value : JSON.stringify(value);
|
|
180
|
-
stmt.run(key, valueStr, confidence, new Date().toISOString());
|
|
181
|
-
this.memory.learnings.set(key, valueStr);
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
// Get learning
|
|
185
|
-
getLearning(key: string): any | null {
|
|
186
|
-
const value = this.memory.learnings.get(key);
|
|
187
|
-
if (!value) return null;
|
|
188
|
-
|
|
189
|
-
// Try to parse JSON if it looks like JSON
|
|
190
|
-
try {
|
|
191
|
-
if (value.startsWith('{') || value.startsWith('[')) {
|
|
192
|
-
return JSON.parse(value);
|
|
193
|
-
}
|
|
194
|
-
} catch {
|
|
195
|
-
// If parsing fails, return as string
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
return value;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
// Record task completion for learning
|
|
202
|
-
recordTaskCompletion(taskId: string, objective: string, type: string, agentsUsed: string[], success: boolean, duration: number): void {
|
|
203
|
-
const stmt = this.db.prepare(`
|
|
204
|
-
INSERT INTO task_history (id, objective, type, agents_used, success, duration, completed_at)
|
|
205
|
-
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
206
|
-
`);
|
|
207
|
-
|
|
208
|
-
stmt.run(
|
|
209
|
-
taskId,
|
|
210
|
-
objective,
|
|
211
|
-
type,
|
|
212
|
-
JSON.stringify(agentsUsed),
|
|
213
|
-
success ? 1 : 0, // Convert boolean to integer for SQLite
|
|
214
|
-
duration,
|
|
215
|
-
new Date().toISOString()
|
|
216
|
-
);
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
// Get success rate for task type
|
|
220
|
-
getSuccessRate(taskType: string): number {
|
|
221
|
-
const result = this.db.prepare(`
|
|
222
|
-
SELECT
|
|
223
|
-
COUNT(CASE WHEN success = 1 THEN 1 END) as successes,
|
|
224
|
-
COUNT(*) as total
|
|
225
|
-
FROM task_history
|
|
226
|
-
WHERE type = ?
|
|
227
|
-
`).get(taskType) as { successes: number; total: number } | undefined;
|
|
228
|
-
|
|
229
|
-
if (result && result.total > 0) {
|
|
230
|
-
return result.successes / result.total;
|
|
231
|
-
}
|
|
232
|
-
return 0.5; // Default success rate
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
// Export memory for backup
|
|
236
|
-
exportMemory(): string {
|
|
237
|
-
return JSON.stringify({
|
|
238
|
-
patterns: this.memory.patterns,
|
|
239
|
-
artifacts: Array.from(this.memory.artifacts.entries()),
|
|
240
|
-
learnings: Array.from(this.memory.learnings.entries())
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
// Import memory from backup
|
|
245
|
-
importMemory(memoryData: string): void {
|
|
246
|
-
try {
|
|
247
|
-
const data = JSON.parse(memoryData);
|
|
248
|
-
|
|
249
|
-
// Clear existing data
|
|
250
|
-
this.clearMemory();
|
|
251
|
-
|
|
252
|
-
// Import patterns
|
|
253
|
-
if (data.patterns) {
|
|
254
|
-
data.patterns.forEach((pattern: any) => {
|
|
255
|
-
const stmt = this.db.prepare(`
|
|
256
|
-
INSERT OR REPLACE INTO patterns
|
|
257
|
-
(task_type, success_rate, agent_sequence, mcp_sequence, avg_duration, last_used, use_count)
|
|
258
|
-
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
259
|
-
`);
|
|
260
|
-
|
|
261
|
-
stmt.run(
|
|
262
|
-
pattern.taskType,
|
|
263
|
-
pattern.successRate,
|
|
264
|
-
JSON.stringify(pattern.agentSequence),
|
|
265
|
-
JSON.stringify(pattern.mcpSequence),
|
|
266
|
-
pattern.avgDuration,
|
|
267
|
-
pattern.lastUsed,
|
|
268
|
-
1
|
|
269
|
-
);
|
|
270
|
-
});
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
// Import artifacts
|
|
274
|
-
if (data.artifacts) {
|
|
275
|
-
data.artifacts.forEach(([id, artifact]: [string, any]) => {
|
|
276
|
-
const stmt = this.db.prepare(`
|
|
277
|
-
INSERT OR REPLACE INTO artifacts (id, type, name, sys_id, config, dependencies, created_at)
|
|
278
|
-
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
279
|
-
`);
|
|
280
|
-
|
|
281
|
-
stmt.run(
|
|
282
|
-
id,
|
|
283
|
-
artifact.type,
|
|
284
|
-
artifact.name,
|
|
285
|
-
artifact.sys_id || null,
|
|
286
|
-
JSON.stringify(artifact.config),
|
|
287
|
-
JSON.stringify(artifact.dependencies),
|
|
288
|
-
new Date().toISOString()
|
|
289
|
-
);
|
|
290
|
-
});
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
// Import learnings
|
|
294
|
-
if (data.learnings) {
|
|
295
|
-
data.learnings.forEach(([key, value]: [string, string]) => {
|
|
296
|
-
const stmt = this.db.prepare(`
|
|
297
|
-
INSERT OR REPLACE INTO learnings (key, value, confidence, updated_at)
|
|
298
|
-
VALUES (?, ?, ?, ?)
|
|
299
|
-
`);
|
|
300
|
-
|
|
301
|
-
stmt.run(key, value, 1.0, new Date().toISOString());
|
|
302
|
-
});
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
// Reload memory from database
|
|
306
|
-
this.memory = this.loadMemory();
|
|
307
|
-
|
|
308
|
-
} catch (error) {
|
|
309
|
-
throw new Error(`Failed to import memory: ${(error as Error).message}`);
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
// Clear all memory (reset learning)
|
|
314
|
-
clearMemory(): void {
|
|
315
|
-
// Clear database tables
|
|
316
|
-
this.db.exec(`
|
|
317
|
-
DELETE FROM patterns;
|
|
318
|
-
DELETE FROM artifacts;
|
|
319
|
-
DELETE FROM learnings;
|
|
320
|
-
DELETE FROM task_history;
|
|
321
|
-
`);
|
|
322
|
-
|
|
323
|
-
// Reset in-memory storage
|
|
324
|
-
this.memory = {
|
|
325
|
-
patterns: [],
|
|
326
|
-
artifacts: new Map(),
|
|
327
|
-
agentHistory: new Map(),
|
|
328
|
-
learnings: new Map()
|
|
329
|
-
};
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
// Store data in context (key-value store)
|
|
333
|
-
storeInContext(key: string, value: any): void {
|
|
334
|
-
const stmt = this.db.prepare('INSERT OR REPLACE INTO context (key, value) VALUES (?, ?)');
|
|
335
|
-
stmt.run(key, JSON.stringify(value));
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
// Get data from context
|
|
339
|
-
getFromContext(key: string): any {
|
|
340
|
-
const stmt = this.db.prepare('SELECT value FROM context WHERE key = ?');
|
|
341
|
-
const row = stmt.get(key) as any;
|
|
342
|
-
return row ? JSON.parse(row.value) : null;
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
// Store generic data (alias for storeInContext for compatibility)
|
|
346
|
-
store(key: string, value: any): void {
|
|
347
|
-
this.storeInContext(key, value);
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
// Get generic data (alias for getFromContext for compatibility)
|
|
351
|
-
get(key: string): any {
|
|
352
|
-
return this.getFromContext(key);
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
// Get database path
|
|
356
|
-
getDbPath(): string {
|
|
357
|
-
return this.dbPath;
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
// Close database connection
|
|
361
|
-
close(): void {
|
|
362
|
-
this.db.close();
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
// Additional methods needed by other components
|
|
366
|
-
|
|
367
|
-
/**
|
|
368
|
-
* Find similar patterns for a given task type
|
|
369
|
-
*/
|
|
370
|
-
findSimilarPatterns(taskType: string): DeploymentPattern[] {
|
|
371
|
-
const stmt = this.db.prepare(`
|
|
372
|
-
SELECT * FROM patterns
|
|
373
|
-
WHERE task_type LIKE ?
|
|
374
|
-
ORDER BY success_rate DESC, use_count DESC
|
|
375
|
-
LIMIT 5
|
|
376
|
-
`);
|
|
377
|
-
|
|
378
|
-
const rows = stmt.all(`%${taskType}%`) as any[];
|
|
379
|
-
|
|
380
|
-
return rows.map(row => ({
|
|
381
|
-
taskType: row.task_type,
|
|
382
|
-
successRate: row.success_rate,
|
|
383
|
-
agentSequence: JSON.parse(row.agent_sequence),
|
|
384
|
-
mcpSequence: JSON.parse(row.mcp_sequence),
|
|
385
|
-
avgDuration: row.avg_duration,
|
|
386
|
-
lastUsed: new Date(row.last_used)
|
|
387
|
-
}));
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
/**
|
|
391
|
-
* Store a decision made by the Queen
|
|
392
|
-
*/
|
|
393
|
-
storeDecision(taskId: string, decision: any): void {
|
|
394
|
-
this.storeInContext(`decision_${taskId}`, {
|
|
395
|
-
...decision,
|
|
396
|
-
timestamp: new Date().toISOString()
|
|
397
|
-
});
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
/**
|
|
401
|
-
* Find the best pattern for a task type
|
|
402
|
-
*/
|
|
403
|
-
findBestPattern(taskType: string): DeploymentPattern | null {
|
|
404
|
-
const patterns = this.findSimilarPatterns(taskType);
|
|
405
|
-
return patterns.length > 0 ? patterns[0] : null;
|
|
406
|
-
}
|
|
407
|
-
|
|
408
|
-
/**
|
|
409
|
-
* Get memory statistics
|
|
410
|
-
*/
|
|
411
|
-
getStats(): any {
|
|
412
|
-
const patternCount = this.db.prepare('SELECT COUNT(*) as count FROM patterns').get() as any;
|
|
413
|
-
const artifactCount = this.db.prepare('SELECT COUNT(*) as count FROM artifacts').get() as any;
|
|
414
|
-
const taskCount = this.db.prepare('SELECT COUNT(*) as count FROM task_history').get() as any;
|
|
415
|
-
const learningCount = this.db.prepare('SELECT COUNT(*) as count FROM learnings').get() as any;
|
|
416
|
-
|
|
417
|
-
return {
|
|
418
|
-
patterns: patternCount.count,
|
|
419
|
-
artifacts: artifactCount.count,
|
|
420
|
-
tasks: taskCount.count,
|
|
421
|
-
learnings: learningCount.count,
|
|
422
|
-
databaseSize: fs.statSync(this.dbPath).size
|
|
423
|
-
};
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
/**
|
|
427
|
-
* Store progress information
|
|
428
|
-
*/
|
|
429
|
-
storeProgress(agentId: string, progress: any): void {
|
|
430
|
-
this.storeInContext(`progress_${agentId}`, progress);
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
/**
|
|
434
|
-
* Get progress information
|
|
435
|
-
*/
|
|
436
|
-
getProgress(agentId: string): any {
|
|
437
|
-
return this.getFromContext(`progress_${agentId}`);
|
|
438
|
-
}
|
|
439
|
-
|
|
440
|
-
/**
|
|
441
|
-
* Store failure pattern for learning
|
|
442
|
-
*/
|
|
443
|
-
storeFailurePattern(pattern: any): void {
|
|
444
|
-
const stmt = this.db.prepare(`
|
|
445
|
-
INSERT INTO learnings (key, value, confidence, updated_at)
|
|
446
|
-
VALUES (?, ?, ?, ?)
|
|
447
|
-
`);
|
|
448
|
-
|
|
449
|
-
stmt.run(
|
|
450
|
-
`failure_${Date.now()}`,
|
|
451
|
-
JSON.stringify(pattern),
|
|
452
|
-
0.8,
|
|
453
|
-
new Date().toISOString()
|
|
454
|
-
);
|
|
455
|
-
}
|
|
456
|
-
}
|