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,319 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ServiceNow Queen Neural Learning System
|
|
3
|
-
* Pattern recognition and adaptive learning from deployment history
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { DeploymentPattern, TaskAnalysis, AgentType, ServiceNowTask } from './types';
|
|
7
|
-
import { QueenMemorySystem } from './queen-memory';
|
|
8
|
-
|
|
9
|
-
interface LearningWeight {
|
|
10
|
-
factor: string;
|
|
11
|
-
weight: number;
|
|
12
|
-
confidence: number;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export class NeuralLearning {
|
|
16
|
-
private memory: QueenMemorySystem;
|
|
17
|
-
private learningWeights: Map<string, LearningWeight[]>;
|
|
18
|
-
|
|
19
|
-
constructor(memory: QueenMemorySystem) {
|
|
20
|
-
this.memory = memory;
|
|
21
|
-
this.learningWeights = new Map();
|
|
22
|
-
this.initializeLearningWeights();
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
private initializeLearningWeights(): void {
|
|
26
|
-
// Simple neural weights for pattern recognition
|
|
27
|
-
this.learningWeights.set('widget', [
|
|
28
|
-
{ factor: 'frontend_complexity', weight: 0.3, confidence: 0.8 },
|
|
29
|
-
{ factor: 'backend_complexity', weight: 0.25, confidence: 0.8 },
|
|
30
|
-
{ factor: 'chart_integration', weight: 0.2, confidence: 0.9 },
|
|
31
|
-
{ factor: 'data_sources', weight: 0.15, confidence: 0.7 },
|
|
32
|
-
{ factor: 'responsive_design', weight: 0.1, confidence: 0.6 }
|
|
33
|
-
]);
|
|
34
|
-
|
|
35
|
-
this.learningWeights.set('flow', [
|
|
36
|
-
{ factor: 'approval_steps', weight: 0.4, confidence: 0.9 },
|
|
37
|
-
{ factor: 'integration_points', weight: 0.25, confidence: 0.8 },
|
|
38
|
-
{ factor: 'conditional_logic', weight: 0.2, confidence: 0.7 },
|
|
39
|
-
{ factor: 'notification_complexity', weight: 0.15, confidence: 0.8 }
|
|
40
|
-
]);
|
|
41
|
-
|
|
42
|
-
this.learningWeights.set('application', [
|
|
43
|
-
{ factor: 'table_complexity', weight: 0.35, confidence: 0.9 },
|
|
44
|
-
{ factor: 'business_rules', weight: 0.25, confidence: 0.8 },
|
|
45
|
-
{ factor: 'ui_components', weight: 0.2, confidence: 0.7 },
|
|
46
|
-
{ factor: 'integration_scope', weight: 0.2, confidence: 0.8 }
|
|
47
|
-
]);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// Analyze task objective and suggest optimal approach
|
|
51
|
-
analyzeTask(objective: string): TaskAnalysis {
|
|
52
|
-
const taskType = this.classifyTask(objective);
|
|
53
|
-
const complexity = this.estimateComplexity(objective, taskType);
|
|
54
|
-
const requiredAgents = this.suggestAgents(objective, taskType, complexity);
|
|
55
|
-
const dependencies = this.identifyDependencies(objective);
|
|
56
|
-
const bestPattern = this.memory.getBestPattern(taskType);
|
|
57
|
-
|
|
58
|
-
return {
|
|
59
|
-
type: taskType,
|
|
60
|
-
requiredAgents,
|
|
61
|
-
estimatedComplexity: complexity,
|
|
62
|
-
suggestedPattern: bestPattern,
|
|
63
|
-
dependencies
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// Classify task type using learned patterns
|
|
68
|
-
private classifyTask(objective: string): ServiceNowTask['type'] {
|
|
69
|
-
const lowerObjective = objective.toLowerCase();
|
|
70
|
-
|
|
71
|
-
// Priority-based pattern matching - check most specific patterns first
|
|
72
|
-
const patterns = [
|
|
73
|
-
// Check for specific flow indicators first (highest priority)
|
|
74
|
-
{ type: 'flow' as const, keywords: ['workflow', 'flow', 'approval', 'process'], priority: 100 },
|
|
75
|
-
{ type: 'integration' as const, keywords: ['integration', 'api', 'sync', 'connect'], priority: 90 },
|
|
76
|
-
{ type: 'script' as const, keywords: ['script', 'rule', 'function'], priority: 80 },
|
|
77
|
-
{ type: 'application' as const, keywords: ['application', 'app', 'system', 'module'], priority: 70 },
|
|
78
|
-
// Widget patterns last (lowest priority) to avoid conflicts
|
|
79
|
-
{ type: 'widget' as const, keywords: ['widget', 'dashboard', 'chart', 'display', 'portal', 'ui'], priority: 60 }
|
|
80
|
-
];
|
|
81
|
-
|
|
82
|
-
// Find best match based on both keyword presence and priority
|
|
83
|
-
let bestMatch: { type: ServiceNowTask['type'], score: number } | null = null;
|
|
84
|
-
|
|
85
|
-
for (const pattern of patterns) {
|
|
86
|
-
const matchCount = pattern.keywords.filter(keyword => lowerObjective.includes(keyword)).length;
|
|
87
|
-
if (matchCount > 0) {
|
|
88
|
-
// Score combines match count, priority, and keyword density
|
|
89
|
-
const keywordDensity = matchCount / pattern.keywords.length;
|
|
90
|
-
const score = (matchCount * pattern.priority) + (keywordDensity * 50);
|
|
91
|
-
|
|
92
|
-
if (!bestMatch || score > bestMatch.score) {
|
|
93
|
-
bestMatch = { type: pattern.type, score };
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
if (bestMatch) {
|
|
99
|
-
// Store learning about classification confidence
|
|
100
|
-
const confidence = Math.min(1, bestMatch.score / 200); // Normalize score to 0-1
|
|
101
|
-
this.memory.storeLearning(`classification_${bestMatch.type}`, objective, confidence);
|
|
102
|
-
return bestMatch.type;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
return 'unknown';
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
// Estimate task complexity using neural weights
|
|
109
|
-
private estimateComplexity(objective: string, taskType: ServiceNowTask['type']): number {
|
|
110
|
-
const weights = this.learningWeights.get(taskType);
|
|
111
|
-
if (!weights) return 0.5; // Default medium complexity
|
|
112
|
-
|
|
113
|
-
let totalComplexity = 0;
|
|
114
|
-
let totalWeight = 0;
|
|
115
|
-
|
|
116
|
-
for (const weight of weights) {
|
|
117
|
-
const factorComplexity = this.evaluateComplexityFactor(objective, weight.factor);
|
|
118
|
-
totalComplexity += factorComplexity * weight.weight * weight.confidence;
|
|
119
|
-
totalWeight += weight.weight * weight.confidence;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
return totalWeight > 0 ? Math.min(1, totalComplexity / totalWeight) : 0.5;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
// Evaluate individual complexity factors
|
|
126
|
-
private evaluateComplexityFactor(objective: string, factor: string): number {
|
|
127
|
-
const lowerObjective = objective.toLowerCase();
|
|
128
|
-
|
|
129
|
-
switch (factor) {
|
|
130
|
-
case 'frontend_complexity':
|
|
131
|
-
return this.countKeywords(lowerObjective, ['chart', 'graph', 'responsive', 'mobile', 'animation']) * 0.2;
|
|
132
|
-
|
|
133
|
-
case 'backend_complexity':
|
|
134
|
-
return this.countKeywords(lowerObjective, ['calculation', 'aggregation', 'api', 'database', 'query']) * 0.25;
|
|
135
|
-
|
|
136
|
-
case 'chart_integration':
|
|
137
|
-
return this.countKeywords(lowerObjective, ['chart', 'graph', 'visualization', 'metrics']) * 0.3;
|
|
138
|
-
|
|
139
|
-
case 'approval_steps':
|
|
140
|
-
return this.countKeywords(lowerObjective, ['approval', 'review', 'escalation', 'multi-step']) * 0.3;
|
|
141
|
-
|
|
142
|
-
case 'integration_points':
|
|
143
|
-
return this.countKeywords(lowerObjective, ['external', 'api', 'third-party', 'sync']) * 0.35;
|
|
144
|
-
|
|
145
|
-
case 'table_complexity':
|
|
146
|
-
return this.countKeywords(lowerObjective, ['table', 'relationship', 'hierarchy', 'custom']) * 0.25;
|
|
147
|
-
|
|
148
|
-
default:
|
|
149
|
-
return 0.2; // Default factor complexity
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
private countKeywords(text: string, keywords: string[]): number {
|
|
154
|
-
return Math.min(1, keywords.filter(keyword => text.includes(keyword)).length / keywords.length);
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
// Suggest optimal agent sequence based on learned patterns
|
|
158
|
-
private suggestAgents(objective: string, taskType: ServiceNowTask['type'], complexity: number): AgentType[] {
|
|
159
|
-
const baseAgents: Record<ServiceNowTask['type'], AgentType[]> = {
|
|
160
|
-
widget: complexity > 0.7
|
|
161
|
-
? ['researcher', 'widget-creator', 'tester']
|
|
162
|
-
: ['widget-creator', 'tester'],
|
|
163
|
-
|
|
164
|
-
flow: complexity > 0.6
|
|
165
|
-
? ['researcher', 'flow-builder', 'integration-specialist', 'tester']
|
|
166
|
-
: ['flow-builder', 'tester'],
|
|
167
|
-
|
|
168
|
-
script: ['script-writer', 'tester'],
|
|
169
|
-
|
|
170
|
-
application: complexity > 0.8
|
|
171
|
-
? ['researcher', 'app-architect', 'script-writer', 'widget-creator', 'tester']
|
|
172
|
-
: ['app-architect', 'script-writer', 'tester'],
|
|
173
|
-
|
|
174
|
-
integration: ['researcher', 'integration-specialist', 'tester'],
|
|
175
|
-
|
|
176
|
-
portal_page: complexity > 0.7
|
|
177
|
-
? ['researcher', 'widget-creator', 'page-designer', 'tester']
|
|
178
|
-
: ['widget-creator', 'page-designer', 'tester'],
|
|
179
|
-
|
|
180
|
-
unknown: ['researcher', 'widget-creator'] // Default fallback
|
|
181
|
-
};
|
|
182
|
-
|
|
183
|
-
// Add catalog manager if catalog-related
|
|
184
|
-
const agents = [...baseAgents[taskType]];
|
|
185
|
-
if (objective.toLowerCase().includes('catalog') || objective.toLowerCase().includes('request')) {
|
|
186
|
-
agents.splice(-1, 0, 'catalog-manager'); // Add before tester
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
return agents;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
// Identify task dependencies
|
|
193
|
-
private identifyDependencies(objective: string): string[] {
|
|
194
|
-
const dependencies = [];
|
|
195
|
-
const lowerObjective = objective.toLowerCase();
|
|
196
|
-
|
|
197
|
-
if (lowerObjective.includes('chart') || lowerObjective.includes('graph')) {
|
|
198
|
-
dependencies.push('Chart.js library');
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
if (lowerObjective.includes('approval') || lowerObjective.includes('workflow')) {
|
|
202
|
-
dependencies.push('Approval engine configuration');
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
if (lowerObjective.includes('catalog')) {
|
|
206
|
-
dependencies.push('Service catalog setup');
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
if (lowerObjective.includes('integration') || lowerObjective.includes('api')) {
|
|
210
|
-
dependencies.push('External API configuration');
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
return dependencies;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
// Learn from successful deployment
|
|
217
|
-
learnFromSuccess(task: ServiceNowTask, duration: number, agentsUsed: AgentType[]): void {
|
|
218
|
-
const pattern: DeploymentPattern = {
|
|
219
|
-
taskType: task.type,
|
|
220
|
-
successRate: this.calculateNewSuccessRate(task.type, true),
|
|
221
|
-
agentSequence: agentsUsed,
|
|
222
|
-
mcpSequence: this.inferMcpSequence(task.type),
|
|
223
|
-
avgDuration: duration,
|
|
224
|
-
lastUsed: new Date()
|
|
225
|
-
};
|
|
226
|
-
|
|
227
|
-
this.memory.storePattern(pattern);
|
|
228
|
-
|
|
229
|
-
// Learn specific insights
|
|
230
|
-
this.memory.storeLearning(
|
|
231
|
-
`success_pattern_${task.type}`,
|
|
232
|
-
`Successful ${task.type} with agents: ${agentsUsed.join(', ')}`,
|
|
233
|
-
0.9
|
|
234
|
-
);
|
|
235
|
-
|
|
236
|
-
// Adjust neural weights based on success
|
|
237
|
-
this.adjustWeightsFromSuccess(task.type, task.objective);
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
// Learn from failed deployment
|
|
241
|
-
learnFromFailure(task: ServiceNowTask, error: string, agentsUsed: AgentType[]): void {
|
|
242
|
-
this.memory.storeLearning(
|
|
243
|
-
`failure_pattern_${task.type}`,
|
|
244
|
-
`Failed ${task.type}: ${error}. Agents used: ${agentsUsed.join(', ')}`,
|
|
245
|
-
0.8
|
|
246
|
-
);
|
|
247
|
-
|
|
248
|
-
// Adjust success rates
|
|
249
|
-
this.calculateNewSuccessRate(task.type, false);
|
|
250
|
-
|
|
251
|
-
// Learn what NOT to do
|
|
252
|
-
this.adjustWeightsFromFailure(task.type, error);
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
private calculateNewSuccessRate(taskType: string, success: boolean): number {
|
|
256
|
-
const currentRate = this.memory.getSuccessRate(taskType);
|
|
257
|
-
const adjustment = success ? 0.1 : -0.1;
|
|
258
|
-
return Math.max(0, Math.min(1, currentRate + adjustment));
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
private inferMcpSequence(taskType: ServiceNowTask['type']): string[] {
|
|
262
|
-
const mcpSequences: Record<ServiceNowTask['type'], string[]> = {
|
|
263
|
-
widget: ['snow_deploy', 'snow_preview_widget', 'snow_widget_test'],
|
|
264
|
-
flow: ['snow_create_flow', 'snow_test_flow_with_mock', 'snow_comprehensive_flow_test'],
|
|
265
|
-
script: ['snow_create_script_include', 'snow_create_business_rule'],
|
|
266
|
-
application: ['snow_deploy', 'snow_create_table', 'snow_create_ui_policy'],
|
|
267
|
-
integration: ['snow_create_rest_message', 'snow_test_integration'],
|
|
268
|
-
portal_page: ['snow_deploy', 'snow_preview_widget', 'snow_widget_test'],
|
|
269
|
-
unknown: ['snow_find_artifact', 'snow_analyze_requirements']
|
|
270
|
-
};
|
|
271
|
-
|
|
272
|
-
return mcpSequences[taskType];
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
private adjustWeightsFromSuccess(taskType: string, objective: string): void {
|
|
276
|
-
const weights = this.learningWeights.get(taskType);
|
|
277
|
-
if (!weights) return;
|
|
278
|
-
|
|
279
|
-
// Increase confidence in successful patterns
|
|
280
|
-
weights.forEach(weight => {
|
|
281
|
-
if (this.evaluateComplexityFactor(objective, weight.factor) > 0.5) {
|
|
282
|
-
weight.confidence = Math.min(1, weight.confidence + 0.05);
|
|
283
|
-
}
|
|
284
|
-
});
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
private adjustWeightsFromFailure(taskType: string, error: string): void {
|
|
288
|
-
const weights = this.learningWeights.get(taskType);
|
|
289
|
-
if (!weights) return;
|
|
290
|
-
|
|
291
|
-
// Decrease confidence in failed patterns
|
|
292
|
-
const lowerError = error.toLowerCase();
|
|
293
|
-
weights.forEach(weight => {
|
|
294
|
-
if (lowerError.includes(weight.factor.replace('_', ' '))) {
|
|
295
|
-
weight.confidence = Math.max(0.1, weight.confidence - 0.1);
|
|
296
|
-
}
|
|
297
|
-
});
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
// Get learning insights for debugging
|
|
301
|
-
getLearningInsights(): any {
|
|
302
|
-
return {
|
|
303
|
-
weights: Array.from(this.learningWeights.entries()),
|
|
304
|
-
recentPatterns: this.memory.getBestPattern('widget'),
|
|
305
|
-
confidenceLevels: this.calculateOverallConfidence()
|
|
306
|
-
};
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
private calculateOverallConfidence(): Record<string, number> {
|
|
310
|
-
const confidence: Record<string, number> = {};
|
|
311
|
-
|
|
312
|
-
for (const [taskType, weights] of Array.from(this.learningWeights.entries())) {
|
|
313
|
-
const avgConfidence = weights.reduce((sum, w) => sum + w.confidence, 0) / weights.length;
|
|
314
|
-
confidence[taskType] = avgConfidence;
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
return confidence;
|
|
318
|
-
}
|
|
319
|
-
}
|