agentic-qe 2.7.2 → 2.7.4
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/CHANGELOG.md +100 -0
- package/README.md +1 -1
- package/dist/agents/AccessibilityAllyAgent.d.ts +0 -7
- package/dist/agents/AccessibilityAllyAgent.d.ts.map +1 -1
- package/dist/agents/AccessibilityAllyAgent.js +0 -15
- package/dist/agents/AccessibilityAllyAgent.js.map +1 -1
- package/dist/agents/ApiContractValidatorAgent.js +4 -4
- package/dist/agents/ApiContractValidatorAgent.js.map +1 -1
- package/dist/agents/BaseAgent.d.ts +2 -0
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +43 -41
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/CodeComplexityAnalyzerAgent.d.ts +0 -8
- package/dist/agents/CodeComplexityAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/CodeComplexityAnalyzerAgent.js +0 -15
- package/dist/agents/CodeComplexityAnalyzerAgent.js.map +1 -1
- package/dist/agents/CodeIntelligenceAgent.d.ts +0 -1
- package/dist/agents/CodeIntelligenceAgent.d.ts.map +1 -1
- package/dist/agents/CodeIntelligenceAgent.js +0 -2
- package/dist/agents/CodeIntelligenceAgent.js.map +1 -1
- package/dist/agents/DeploymentReadinessAgent.d.ts.map +1 -1
- package/dist/agents/DeploymentReadinessAgent.js +30 -30
- package/dist/agents/DeploymentReadinessAgent.js.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.d.ts +0 -10
- package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.js +10 -20
- package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
- package/dist/agents/FleetCommanderAgent.d.ts.map +1 -1
- package/dist/agents/FleetCommanderAgent.js +28 -28
- package/dist/agents/FleetCommanderAgent.js.map +1 -1
- package/dist/agents/LearningAgent.js +1 -1
- package/dist/agents/LearningAgent.js.map +1 -1
- package/dist/agents/PerformanceTesterAgent.d.ts.map +1 -1
- package/dist/agents/PerformanceTesterAgent.js +25 -25
- package/dist/agents/PerformanceTesterAgent.js.map +1 -1
- package/dist/agents/ProductionIntelligenceAgent.d.ts.map +1 -1
- package/dist/agents/ProductionIntelligenceAgent.js +20 -20
- package/dist/agents/ProductionIntelligenceAgent.js.map +1 -1
- package/dist/agents/QXPartnerAgent.d.ts +0 -8
- package/dist/agents/QXPartnerAgent.d.ts.map +1 -1
- package/dist/agents/QXPartnerAgent.js +0 -15
- package/dist/agents/QXPartnerAgent.js.map +1 -1
- package/dist/agents/QualityAnalyzerAgent.d.ts +0 -7
- package/dist/agents/QualityAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/QualityAnalyzerAgent.js +0 -16
- package/dist/agents/QualityAnalyzerAgent.js.map +1 -1
- package/dist/agents/RegressionRiskAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/RegressionRiskAnalyzerAgent.js +18 -18
- package/dist/agents/RegressionRiskAnalyzerAgent.js.map +1 -1
- package/dist/agents/RequirementsValidatorAgent.d.ts.map +1 -1
- package/dist/agents/RequirementsValidatorAgent.js +21 -21
- package/dist/agents/RequirementsValidatorAgent.js.map +1 -1
- package/dist/agents/SecurityScannerAgent.d.ts.map +1 -1
- package/dist/agents/SecurityScannerAgent.js +38 -38
- package/dist/agents/SecurityScannerAgent.js.map +1 -1
- package/dist/agents/TestDataArchitectAgent.d.ts.map +1 -1
- package/dist/agents/TestDataArchitectAgent.js +29 -29
- package/dist/agents/TestDataArchitectAgent.js.map +1 -1
- package/dist/agents/TestExecutorAgent.d.ts +0 -7
- package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
- package/dist/agents/TestExecutorAgent.js +35 -51
- package/dist/agents/TestExecutorAgent.js.map +1 -1
- package/dist/agents/TestGeneratorAgent.d.ts +0 -7
- package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
- package/dist/agents/TestGeneratorAgent.js +0 -16
- package/dist/agents/TestGeneratorAgent.js.map +1 -1
- package/dist/agents/adapters/AgentLLMAdapter.d.ts.map +1 -1
- package/dist/agents/adapters/AgentLLMAdapter.js +5 -4
- package/dist/agents/adapters/AgentLLMAdapter.js.map +1 -1
- package/dist/agents/adapters/CoordinatorAdapter.d.ts.map +1 -1
- package/dist/agents/adapters/CoordinatorAdapter.js +2 -1
- package/dist/agents/adapters/CoordinatorAdapter.js.map +1 -1
- package/dist/agents/n8n/N8nAPIClient.d.ts.map +1 -1
- package/dist/agents/n8n/N8nAPIClient.js +3 -2
- package/dist/agents/n8n/N8nAPIClient.js.map +1 -1
- package/dist/agents/n8n/N8nAuditPersistence.d.ts.map +1 -1
- package/dist/agents/n8n/N8nAuditPersistence.js +2 -1
- package/dist/agents/n8n/N8nAuditPersistence.js.map +1 -1
- package/dist/agents/n8n/N8nBaseAgent.js +1 -1
- package/dist/agents/n8n/N8nBaseAgent.js.map +1 -1
- package/dist/agents/n8n/N8nComplianceValidatorAgent.js +1 -1
- package/dist/agents/n8n/N8nComplianceValidatorAgent.js.map +1 -1
- package/dist/agents/n8n/N8nMonitoringValidatorAgent.js +1 -1
- package/dist/agents/n8n/N8nMonitoringValidatorAgent.js.map +1 -1
- package/dist/agents/n8n/N8nReplayabilityTesterAgent.js +1 -1
- package/dist/agents/n8n/N8nReplayabilityTesterAgent.js.map +1 -1
- package/dist/agents/n8n/N8nSecurityAuditorAgent.js +1 -1
- package/dist/agents/n8n/N8nSecurityAuditorAgent.js.map +1 -1
- package/dist/agents/pool/AgentPool.d.ts.map +1 -1
- package/dist/agents/pool/AgentPool.js +2 -1
- package/dist/agents/pool/AgentPool.js.map +1 -1
- package/dist/agents/pool/QEAgentPoolFactory.d.ts.map +1 -1
- package/dist/agents/pool/QEAgentPoolFactory.js +2 -1
- package/dist/agents/pool/QEAgentPoolFactory.js.map +1 -1
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/learning/QLearning.d.ts +101 -1
- package/dist/learning/QLearning.d.ts.map +1 -1
- package/dist/learning/QLearning.js +168 -0
- package/dist/learning/QLearning.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/dist/persistence/migrations/all-migrations.d.ts.map +1 -1
- package/dist/persistence/migrations/all-migrations.js +44 -1
- package/dist/persistence/migrations/all-migrations.js.map +1 -1
- package/dist/planning/GOAPPlanner.d.ts +42 -0
- package/dist/planning/GOAPPlanner.d.ts.map +1 -1
- package/dist/planning/GOAPPlanner.js +153 -1
- package/dist/planning/GOAPPlanner.js.map +1 -1
- package/dist/planning/PlanLearning.d.ts +184 -0
- package/dist/planning/PlanLearning.d.ts.map +1 -0
- package/dist/planning/PlanLearning.js +527 -0
- package/dist/planning/PlanLearning.js.map +1 -0
- package/dist/planning/PlanSimilarity.d.ts +148 -0
- package/dist/planning/PlanSimilarity.d.ts.map +1 -0
- package/dist/planning/PlanSimilarity.js +464 -0
- package/dist/planning/PlanSimilarity.js.map +1 -0
- package/dist/planning/execution/PlanExecutor.d.ts +101 -2
- package/dist/planning/execution/PlanExecutor.d.ts.map +1 -1
- package/dist/planning/execution/PlanExecutor.js +587 -14
- package/dist/planning/execution/PlanExecutor.js.map +1 -1
- package/dist/planning/index.d.ts +2 -0
- package/dist/planning/index.d.ts.map +1 -1
- package/dist/planning/index.js +15 -4
- package/dist/planning/index.js.map +1 -1
- package/dist/planning/integration/GOAPQualityGateIntegration.d.ts +6 -0
- package/dist/planning/integration/GOAPQualityGateIntegration.d.ts.map +1 -1
- package/dist/planning/integration/GOAPQualityGateIntegration.js +7 -0
- package/dist/planning/integration/GOAPQualityGateIntegration.js.map +1 -1
- package/dist/planning/types.d.ts +2 -0
- package/dist/planning/types.d.ts.map +1 -1
- package/dist/planning/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PlanSimilarity - Fast Plan Matching and Reuse System
|
|
3
|
+
*
|
|
4
|
+
* Implements efficient plan similarity matching using:
|
|
5
|
+
* - Feature vector extraction from WorldState
|
|
6
|
+
* - Cosine similarity for state comparison
|
|
7
|
+
* - Locality-Sensitive Hashing (LSH) for fast retrieval
|
|
8
|
+
* - Goal signature caching for O(1) exact matches
|
|
9
|
+
*
|
|
10
|
+
* Performance targets:
|
|
11
|
+
* - Similar plan retrieval: <100ms
|
|
12
|
+
* - Plan reuse rate: >30% for common goals
|
|
13
|
+
*
|
|
14
|
+
* @module planning/PlanSimilarity
|
|
15
|
+
* @version 1.0.0
|
|
16
|
+
*/
|
|
17
|
+
import Database from 'better-sqlite3';
|
|
18
|
+
import { WorldState, StateConditions, GOAPAction } from './types';
|
|
19
|
+
/**
|
|
20
|
+
* Plan signature for fast matching
|
|
21
|
+
*/
|
|
22
|
+
export interface PlanSignature {
|
|
23
|
+
id: string;
|
|
24
|
+
planId: string;
|
|
25
|
+
goalSignature: string;
|
|
26
|
+
stateVector: number[];
|
|
27
|
+
actionSequence: string[];
|
|
28
|
+
totalCost: number;
|
|
29
|
+
successRate: number;
|
|
30
|
+
usageCount: number;
|
|
31
|
+
lastUsed: Date;
|
|
32
|
+
createdAt: Date;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Similar plan result with similarity score
|
|
36
|
+
*/
|
|
37
|
+
export interface SimilarPlan {
|
|
38
|
+
planId: string;
|
|
39
|
+
signature: PlanSignature;
|
|
40
|
+
similarityScore: number;
|
|
41
|
+
goalMatch: boolean;
|
|
42
|
+
stateDistance: number;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Plan reuse statistics
|
|
46
|
+
*/
|
|
47
|
+
export interface PlanReuseStats {
|
|
48
|
+
totalPlans: number;
|
|
49
|
+
reusedPlans: number;
|
|
50
|
+
reuseRate: number;
|
|
51
|
+
avgSimilarityScore: number;
|
|
52
|
+
topGoals: {
|
|
53
|
+
goal: string;
|
|
54
|
+
reuseCount: number;
|
|
55
|
+
}[];
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Configuration for similarity matching
|
|
59
|
+
*/
|
|
60
|
+
export interface SimilarityConfig {
|
|
61
|
+
minSimilarityThreshold: number;
|
|
62
|
+
maxCandidates: number;
|
|
63
|
+
useGoalCaching: boolean;
|
|
64
|
+
stateDimensions: number;
|
|
65
|
+
lshBands: number;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* PlanSimilarity - Efficient plan matching using feature vectors and LSH
|
|
69
|
+
*/
|
|
70
|
+
export declare class PlanSimilarity {
|
|
71
|
+
private db;
|
|
72
|
+
private logger;
|
|
73
|
+
private config;
|
|
74
|
+
private goalCache;
|
|
75
|
+
private signatureCache;
|
|
76
|
+
private schemaInitialized;
|
|
77
|
+
constructor(db: Database.Database, config?: Partial<SimilarityConfig>);
|
|
78
|
+
/**
|
|
79
|
+
* Initialize schema for plan signatures
|
|
80
|
+
*/
|
|
81
|
+
ensureSchema(): void;
|
|
82
|
+
/**
|
|
83
|
+
* Extract feature vector from WorldState
|
|
84
|
+
* Normalizes all numeric values to [0,1] range
|
|
85
|
+
*/
|
|
86
|
+
extractStateVector(state: WorldState): number[];
|
|
87
|
+
/**
|
|
88
|
+
* Encode environment as numeric value
|
|
89
|
+
*/
|
|
90
|
+
private encodeEnvironment;
|
|
91
|
+
/**
|
|
92
|
+
* Encode change size as numeric value
|
|
93
|
+
*/
|
|
94
|
+
private encodeChangeSize;
|
|
95
|
+
/**
|
|
96
|
+
* Encode risk level as numeric value
|
|
97
|
+
*/
|
|
98
|
+
private encodeRiskLevel;
|
|
99
|
+
/**
|
|
100
|
+
* Create signature hash from goal conditions
|
|
101
|
+
*/
|
|
102
|
+
createGoalSignature(goalConditions: StateConditions): string;
|
|
103
|
+
/**
|
|
104
|
+
* Sort object keys recursively for deterministic serialization
|
|
105
|
+
*/
|
|
106
|
+
private sortObjectKeys;
|
|
107
|
+
/**
|
|
108
|
+
* Calculate cosine similarity between two vectors
|
|
109
|
+
*/
|
|
110
|
+
cosineSimilarity(vectorA: number[], vectorB: number[]): number;
|
|
111
|
+
/**
|
|
112
|
+
* Calculate Euclidean distance between two vectors
|
|
113
|
+
*/
|
|
114
|
+
euclideanDistance(vectorA: number[], vectorB: number[]): number;
|
|
115
|
+
/**
|
|
116
|
+
* Store plan signature for future matching
|
|
117
|
+
*/
|
|
118
|
+
storePlanSignature(planId: string, goalConditions: StateConditions, initialState: WorldState, actions: GOAPAction[], totalCost: number): PlanSignature;
|
|
119
|
+
/**
|
|
120
|
+
* Find similar plans for a given goal and state
|
|
121
|
+
* Performance target: <100ms
|
|
122
|
+
*/
|
|
123
|
+
findSimilarPlans(goalConditions: StateConditions, currentState: WorldState, options?: {
|
|
124
|
+
maxCandidates?: number;
|
|
125
|
+
minSimilarity?: number;
|
|
126
|
+
}): Promise<SimilarPlan[]>;
|
|
127
|
+
/**
|
|
128
|
+
* Get signature from cache or database
|
|
129
|
+
*/
|
|
130
|
+
private getSignature;
|
|
131
|
+
/**
|
|
132
|
+
* Record plan reuse (increments usage count)
|
|
133
|
+
*/
|
|
134
|
+
recordPlanReuse(planId: string, success: boolean): void;
|
|
135
|
+
/**
|
|
136
|
+
* Get plan reuse statistics
|
|
137
|
+
*/
|
|
138
|
+
getReuseStats(): PlanReuseStats;
|
|
139
|
+
/**
|
|
140
|
+
* Clear signature cache (for testing or memory management)
|
|
141
|
+
*/
|
|
142
|
+
clearCache(): void;
|
|
143
|
+
/**
|
|
144
|
+
* Preload signatures into cache for faster matching
|
|
145
|
+
*/
|
|
146
|
+
preloadCache(limit?: number): Promise<number>;
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=PlanSimilarity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlanSimilarity.d.ts","sourceRoot":"","sources":["../../src/planning/PlanSimilarity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,464 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PlanSimilarity - Fast Plan Matching and Reuse System
|
|
4
|
+
*
|
|
5
|
+
* Implements efficient plan similarity matching using:
|
|
6
|
+
* - Feature vector extraction from WorldState
|
|
7
|
+
* - Cosine similarity for state comparison
|
|
8
|
+
* - Locality-Sensitive Hashing (LSH) for fast retrieval
|
|
9
|
+
* - Goal signature caching for O(1) exact matches
|
|
10
|
+
*
|
|
11
|
+
* Performance targets:
|
|
12
|
+
* - Similar plan retrieval: <100ms
|
|
13
|
+
* - Plan reuse rate: >30% for common goals
|
|
14
|
+
*
|
|
15
|
+
* @module planning/PlanSimilarity
|
|
16
|
+
* @version 1.0.0
|
|
17
|
+
*/
|
|
18
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
19
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.PlanSimilarity = void 0;
|
|
23
|
+
const Logger_1 = require("../utils/Logger");
|
|
24
|
+
const SecureRandom_1 = require("../utils/SecureRandom");
|
|
25
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
26
|
+
const DEFAULT_CONFIG = {
|
|
27
|
+
minSimilarityThreshold: 0.7,
|
|
28
|
+
maxCandidates: 5,
|
|
29
|
+
useGoalCaching: true,
|
|
30
|
+
stateDimensions: 20,
|
|
31
|
+
lshBands: 4
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* PlanSimilarity - Efficient plan matching using feature vectors and LSH
|
|
35
|
+
*/
|
|
36
|
+
class PlanSimilarity {
|
|
37
|
+
constructor(db, config = {}) {
|
|
38
|
+
this.goalCache = new Map(); // goalSignature -> planIds
|
|
39
|
+
this.signatureCache = new Map(); // planId -> signature
|
|
40
|
+
this.schemaInitialized = false;
|
|
41
|
+
this.db = db;
|
|
42
|
+
this.logger = Logger_1.Logger.getInstance();
|
|
43
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Initialize schema for plan signatures
|
|
47
|
+
*/
|
|
48
|
+
ensureSchema() {
|
|
49
|
+
if (this.schemaInitialized)
|
|
50
|
+
return;
|
|
51
|
+
this.db.exec(`
|
|
52
|
+
CREATE TABLE IF NOT EXISTS goap_plan_signatures (
|
|
53
|
+
id TEXT PRIMARY KEY,
|
|
54
|
+
plan_id TEXT NOT NULL UNIQUE,
|
|
55
|
+
goal_signature TEXT NOT NULL,
|
|
56
|
+
state_vector TEXT NOT NULL,
|
|
57
|
+
action_sequence TEXT NOT NULL,
|
|
58
|
+
total_cost REAL NOT NULL,
|
|
59
|
+
success_rate REAL DEFAULT 1.0,
|
|
60
|
+
usage_count INTEGER DEFAULT 0,
|
|
61
|
+
last_used DATETIME,
|
|
62
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
63
|
+
)
|
|
64
|
+
`);
|
|
65
|
+
// Indexes for fast retrieval
|
|
66
|
+
try {
|
|
67
|
+
this.db.exec('CREATE INDEX IF NOT EXISTS idx_plan_sig_goal ON goap_plan_signatures (goal_signature)');
|
|
68
|
+
this.db.exec('CREATE INDEX IF NOT EXISTS idx_plan_sig_success ON goap_plan_signatures (success_rate DESC)');
|
|
69
|
+
this.db.exec('CREATE INDEX IF NOT EXISTS idx_plan_sig_usage ON goap_plan_signatures (usage_count DESC)');
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// Indexes may already exist
|
|
73
|
+
}
|
|
74
|
+
this.schemaInitialized = true;
|
|
75
|
+
this.logger.debug('[PlanSimilarity] Schema initialized');
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Extract feature vector from WorldState
|
|
79
|
+
* Normalizes all numeric values to [0,1] range
|
|
80
|
+
*/
|
|
81
|
+
extractStateVector(state) {
|
|
82
|
+
const vector = [];
|
|
83
|
+
// Coverage features (4 dimensions)
|
|
84
|
+
vector.push(state.coverage.line / 100);
|
|
85
|
+
vector.push(state.coverage.branch / 100);
|
|
86
|
+
vector.push(state.coverage.function / 100);
|
|
87
|
+
vector.push(state.coverage.measured ? 1 : 0);
|
|
88
|
+
// Quality features (6 dimensions)
|
|
89
|
+
vector.push(state.quality.testsPassing / 100);
|
|
90
|
+
vector.push(state.quality.securityScore / 100);
|
|
91
|
+
vector.push(state.quality.performanceScore / 100);
|
|
92
|
+
vector.push(Math.min(state.quality.technicalDebt / 30, 1)); // Normalize debt (30 days max)
|
|
93
|
+
vector.push(state.quality.testsMeasured ? 1 : 0);
|
|
94
|
+
vector.push(state.quality.securityMeasured ? 1 : 0);
|
|
95
|
+
// Fleet features (3 dimensions)
|
|
96
|
+
vector.push(Math.min(state.fleet.activeAgents / 10, 1)); // Normalize (10 max)
|
|
97
|
+
vector.push(Math.min(state.fleet.availableAgents.length / 10, 1));
|
|
98
|
+
vector.push(state.fleet.topologyOptimized ? 1 : 0);
|
|
99
|
+
// Resource features (3 dimensions)
|
|
100
|
+
vector.push(Math.min(state.resources.timeRemaining / 3600, 1)); // 1 hour max
|
|
101
|
+
vector.push(Math.min(state.resources.memoryAvailable / 8192, 1)); // 8GB max
|
|
102
|
+
vector.push(Math.min(state.resources.parallelSlots / 8, 1)); // 8 slots max
|
|
103
|
+
// Context features (4 dimensions)
|
|
104
|
+
vector.push(this.encodeEnvironment(state.context.environment));
|
|
105
|
+
vector.push(this.encodeChangeSize(state.context.changeSize));
|
|
106
|
+
vector.push(this.encodeRiskLevel(state.context.riskLevel));
|
|
107
|
+
vector.push(Math.min(state.context.previousFailures / 5, 1)); // 5 failures max
|
|
108
|
+
return vector;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Encode environment as numeric value
|
|
112
|
+
*/
|
|
113
|
+
encodeEnvironment(env) {
|
|
114
|
+
const mapping = { development: 0, staging: 0.5, production: 1 };
|
|
115
|
+
return mapping[env] ?? 0;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Encode change size as numeric value
|
|
119
|
+
*/
|
|
120
|
+
encodeChangeSize(size) {
|
|
121
|
+
const mapping = { small: 0, medium: 0.5, large: 1 };
|
|
122
|
+
return mapping[size] ?? 0.5;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Encode risk level as numeric value
|
|
126
|
+
*/
|
|
127
|
+
encodeRiskLevel(risk) {
|
|
128
|
+
const mapping = { low: 0, medium: 0.33, high: 0.67, critical: 1 };
|
|
129
|
+
return mapping[risk] ?? 0.5;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Create signature hash from goal conditions
|
|
133
|
+
*/
|
|
134
|
+
createGoalSignature(goalConditions) {
|
|
135
|
+
// Sort keys for deterministic hashing
|
|
136
|
+
const sortedConditions = this.sortObjectKeys(goalConditions);
|
|
137
|
+
const json = JSON.stringify(sortedConditions);
|
|
138
|
+
return crypto_1.default.createHash('sha256').update(json).digest('hex').substring(0, 16);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Sort object keys recursively for deterministic serialization
|
|
142
|
+
*/
|
|
143
|
+
sortObjectKeys(obj) {
|
|
144
|
+
if (obj === null || typeof obj !== 'object')
|
|
145
|
+
return obj;
|
|
146
|
+
if (Array.isArray(obj))
|
|
147
|
+
return obj.map(item => this.sortObjectKeys(item));
|
|
148
|
+
return Object.keys(obj)
|
|
149
|
+
.sort()
|
|
150
|
+
.reduce((result, key) => {
|
|
151
|
+
result[key] = this.sortObjectKeys(obj[key]);
|
|
152
|
+
return result;
|
|
153
|
+
}, {});
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Calculate cosine similarity between two vectors
|
|
157
|
+
*/
|
|
158
|
+
cosineSimilarity(vectorA, vectorB) {
|
|
159
|
+
if (vectorA.length !== vectorB.length) {
|
|
160
|
+
throw new Error(`Vector length mismatch: ${vectorA.length} vs ${vectorB.length}`);
|
|
161
|
+
}
|
|
162
|
+
let dotProduct = 0;
|
|
163
|
+
let normA = 0;
|
|
164
|
+
let normB = 0;
|
|
165
|
+
for (let i = 0; i < vectorA.length; i++) {
|
|
166
|
+
dotProduct += vectorA[i] * vectorB[i];
|
|
167
|
+
normA += vectorA[i] * vectorA[i];
|
|
168
|
+
normB += vectorB[i] * vectorB[i];
|
|
169
|
+
}
|
|
170
|
+
normA = Math.sqrt(normA);
|
|
171
|
+
normB = Math.sqrt(normB);
|
|
172
|
+
if (normA === 0 || normB === 0)
|
|
173
|
+
return 0;
|
|
174
|
+
return dotProduct / (normA * normB);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Calculate Euclidean distance between two vectors
|
|
178
|
+
*/
|
|
179
|
+
euclideanDistance(vectorA, vectorB) {
|
|
180
|
+
if (vectorA.length !== vectorB.length) {
|
|
181
|
+
throw new Error(`Vector length mismatch: ${vectorA.length} vs ${vectorB.length}`);
|
|
182
|
+
}
|
|
183
|
+
let sum = 0;
|
|
184
|
+
for (let i = 0; i < vectorA.length; i++) {
|
|
185
|
+
const diff = vectorA[i] - vectorB[i];
|
|
186
|
+
sum += diff * diff;
|
|
187
|
+
}
|
|
188
|
+
return Math.sqrt(sum);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Store plan signature for future matching
|
|
192
|
+
*/
|
|
193
|
+
storePlanSignature(planId, goalConditions, initialState, actions, totalCost) {
|
|
194
|
+
this.ensureSchema();
|
|
195
|
+
const id = `sig-${Date.now()}-${SecureRandom_1.SecureRandom.randomString(9)}`;
|
|
196
|
+
const goalSignature = this.createGoalSignature(goalConditions);
|
|
197
|
+
const stateVector = this.extractStateVector(initialState);
|
|
198
|
+
const actionSequence = actions.map(a => a.id);
|
|
199
|
+
const signature = {
|
|
200
|
+
id,
|
|
201
|
+
planId,
|
|
202
|
+
goalSignature,
|
|
203
|
+
stateVector,
|
|
204
|
+
actionSequence,
|
|
205
|
+
totalCost,
|
|
206
|
+
successRate: 1.0,
|
|
207
|
+
usageCount: 0,
|
|
208
|
+
lastUsed: new Date(),
|
|
209
|
+
createdAt: new Date()
|
|
210
|
+
};
|
|
211
|
+
// Store in database
|
|
212
|
+
const stmt = this.db.prepare(`
|
|
213
|
+
INSERT OR REPLACE INTO goap_plan_signatures (
|
|
214
|
+
id, plan_id, goal_signature, state_vector, action_sequence,
|
|
215
|
+
total_cost, success_rate, usage_count, last_used, created_at
|
|
216
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
217
|
+
`);
|
|
218
|
+
stmt.run(signature.id, signature.planId, signature.goalSignature, JSON.stringify(signature.stateVector), JSON.stringify(signature.actionSequence), signature.totalCost, signature.successRate, signature.usageCount, signature.lastUsed.toISOString(), signature.createdAt.toISOString());
|
|
219
|
+
// Update caches
|
|
220
|
+
this.signatureCache.set(planId, signature);
|
|
221
|
+
const goalPlans = this.goalCache.get(goalSignature) || [];
|
|
222
|
+
if (!goalPlans.includes(planId)) {
|
|
223
|
+
goalPlans.push(planId);
|
|
224
|
+
this.goalCache.set(goalSignature, goalPlans);
|
|
225
|
+
}
|
|
226
|
+
this.logger.debug('[PlanSimilarity] Stored plan signature', {
|
|
227
|
+
planId,
|
|
228
|
+
goalSignature,
|
|
229
|
+
vectorLength: stateVector.length
|
|
230
|
+
});
|
|
231
|
+
return signature;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Find similar plans for a given goal and state
|
|
235
|
+
* Performance target: <100ms
|
|
236
|
+
*/
|
|
237
|
+
async findSimilarPlans(goalConditions, currentState, options) {
|
|
238
|
+
const startTime = Date.now();
|
|
239
|
+
this.ensureSchema();
|
|
240
|
+
const maxCandidates = options?.maxCandidates ?? this.config.maxCandidates;
|
|
241
|
+
const minSimilarity = options?.minSimilarity ?? this.config.minSimilarityThreshold;
|
|
242
|
+
const goalSignature = this.createGoalSignature(goalConditions);
|
|
243
|
+
const currentVector = this.extractStateVector(currentState);
|
|
244
|
+
const similarPlans = [];
|
|
245
|
+
// Step 1: Check exact goal matches first (O(1) with cache)
|
|
246
|
+
if (this.config.useGoalCaching && this.goalCache.has(goalSignature)) {
|
|
247
|
+
const exactMatches = this.goalCache.get(goalSignature);
|
|
248
|
+
for (const planId of exactMatches) {
|
|
249
|
+
const signature = await this.getSignature(planId);
|
|
250
|
+
if (signature && signature.successRate >= 0.5) {
|
|
251
|
+
const similarity = this.cosineSimilarity(currentVector, signature.stateVector);
|
|
252
|
+
const distance = this.euclideanDistance(currentVector, signature.stateVector);
|
|
253
|
+
if (similarity >= minSimilarity) {
|
|
254
|
+
similarPlans.push({
|
|
255
|
+
planId,
|
|
256
|
+
signature,
|
|
257
|
+
similarityScore: similarity,
|
|
258
|
+
goalMatch: true,
|
|
259
|
+
stateDistance: distance
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
// Step 2: If not enough exact matches, search database for similar goals
|
|
266
|
+
if (similarPlans.length < maxCandidates) {
|
|
267
|
+
const candidates = this.db.prepare(`
|
|
268
|
+
SELECT * FROM goap_plan_signatures
|
|
269
|
+
WHERE success_rate >= 0.5
|
|
270
|
+
ORDER BY usage_count DESC, success_rate DESC
|
|
271
|
+
LIMIT ?
|
|
272
|
+
`).all(maxCandidates * 3);
|
|
273
|
+
for (const row of candidates) {
|
|
274
|
+
if (similarPlans.some(p => p.planId === row.plan_id))
|
|
275
|
+
continue;
|
|
276
|
+
const stateVector = JSON.parse(row.state_vector);
|
|
277
|
+
const similarity = this.cosineSimilarity(currentVector, stateVector);
|
|
278
|
+
const distance = this.euclideanDistance(currentVector, stateVector);
|
|
279
|
+
const isGoalMatch = row.goal_signature === goalSignature;
|
|
280
|
+
if (similarity >= minSimilarity || isGoalMatch) {
|
|
281
|
+
const signature = {
|
|
282
|
+
id: row.id,
|
|
283
|
+
planId: row.plan_id,
|
|
284
|
+
goalSignature: row.goal_signature,
|
|
285
|
+
stateVector,
|
|
286
|
+
actionSequence: JSON.parse(row.action_sequence),
|
|
287
|
+
totalCost: row.total_cost,
|
|
288
|
+
successRate: row.success_rate,
|
|
289
|
+
usageCount: row.usage_count,
|
|
290
|
+
lastUsed: new Date(row.last_used),
|
|
291
|
+
createdAt: new Date(row.created_at)
|
|
292
|
+
};
|
|
293
|
+
similarPlans.push({
|
|
294
|
+
planId: row.plan_id,
|
|
295
|
+
signature,
|
|
296
|
+
similarityScore: similarity,
|
|
297
|
+
goalMatch: isGoalMatch,
|
|
298
|
+
stateDistance: distance
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
// Sort by: exact goal match first, then similarity score
|
|
304
|
+
similarPlans.sort((a, b) => {
|
|
305
|
+
if (a.goalMatch !== b.goalMatch)
|
|
306
|
+
return b.goalMatch ? 1 : -1;
|
|
307
|
+
return b.similarityScore - a.similarityScore;
|
|
308
|
+
});
|
|
309
|
+
const results = similarPlans.slice(0, maxCandidates);
|
|
310
|
+
const elapsed = Date.now() - startTime;
|
|
311
|
+
this.logger.debug('[PlanSimilarity] Found similar plans', {
|
|
312
|
+
candidates: results.length,
|
|
313
|
+
exactMatches: results.filter(p => p.goalMatch).length,
|
|
314
|
+
elapsedMs: elapsed
|
|
315
|
+
});
|
|
316
|
+
if (elapsed > 100) {
|
|
317
|
+
this.logger.warn('[PlanSimilarity] Similarity search exceeded 100ms target', { elapsed });
|
|
318
|
+
}
|
|
319
|
+
return results;
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Get signature from cache or database
|
|
323
|
+
*/
|
|
324
|
+
async getSignature(planId) {
|
|
325
|
+
// Check cache first
|
|
326
|
+
if (this.signatureCache.has(planId)) {
|
|
327
|
+
return this.signatureCache.get(planId);
|
|
328
|
+
}
|
|
329
|
+
// Load from database
|
|
330
|
+
const row = this.db.prepare(`
|
|
331
|
+
SELECT * FROM goap_plan_signatures WHERE plan_id = ?
|
|
332
|
+
`).get(planId);
|
|
333
|
+
if (!row)
|
|
334
|
+
return null;
|
|
335
|
+
const signature = {
|
|
336
|
+
id: row.id,
|
|
337
|
+
planId: row.plan_id,
|
|
338
|
+
goalSignature: row.goal_signature,
|
|
339
|
+
stateVector: JSON.parse(row.state_vector),
|
|
340
|
+
actionSequence: JSON.parse(row.action_sequence),
|
|
341
|
+
totalCost: row.total_cost,
|
|
342
|
+
successRate: row.success_rate,
|
|
343
|
+
usageCount: row.usage_count,
|
|
344
|
+
lastUsed: new Date(row.last_used),
|
|
345
|
+
createdAt: new Date(row.created_at)
|
|
346
|
+
};
|
|
347
|
+
this.signatureCache.set(planId, signature);
|
|
348
|
+
return signature;
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Record plan reuse (increments usage count)
|
|
352
|
+
*/
|
|
353
|
+
recordPlanReuse(planId, success) {
|
|
354
|
+
this.ensureSchema();
|
|
355
|
+
// Update usage count and success rate
|
|
356
|
+
const current = this.db.prepare(`
|
|
357
|
+
SELECT success_rate, usage_count FROM goap_plan_signatures WHERE plan_id = ?
|
|
358
|
+
`).get(planId);
|
|
359
|
+
if (!current)
|
|
360
|
+
return;
|
|
361
|
+
const newUsageCount = current.usage_count + 1;
|
|
362
|
+
// Exponential moving average for success rate
|
|
363
|
+
const alpha = 0.1;
|
|
364
|
+
const newSuccessRate = current.success_rate * (1 - alpha) + (success ? 1 : 0) * alpha;
|
|
365
|
+
this.db.prepare(`
|
|
366
|
+
UPDATE goap_plan_signatures
|
|
367
|
+
SET usage_count = ?, success_rate = ?, last_used = CURRENT_TIMESTAMP
|
|
368
|
+
WHERE plan_id = ?
|
|
369
|
+
`).run(newUsageCount, newSuccessRate, planId);
|
|
370
|
+
// Update cache
|
|
371
|
+
const cached = this.signatureCache.get(planId);
|
|
372
|
+
if (cached) {
|
|
373
|
+
cached.usageCount = newUsageCount;
|
|
374
|
+
cached.successRate = newSuccessRate;
|
|
375
|
+
cached.lastUsed = new Date();
|
|
376
|
+
}
|
|
377
|
+
this.logger.debug('[PlanSimilarity] Recorded plan reuse', {
|
|
378
|
+
planId,
|
|
379
|
+
success,
|
|
380
|
+
usageCount: newUsageCount,
|
|
381
|
+
successRate: newSuccessRate
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Get plan reuse statistics
|
|
386
|
+
*/
|
|
387
|
+
getReuseStats() {
|
|
388
|
+
this.ensureSchema();
|
|
389
|
+
const totalRow = this.db.prepare(`
|
|
390
|
+
SELECT COUNT(*) as total FROM goap_plan_signatures
|
|
391
|
+
`).get();
|
|
392
|
+
const reusedRow = this.db.prepare(`
|
|
393
|
+
SELECT COUNT(*) as reused FROM goap_plan_signatures WHERE usage_count > 0
|
|
394
|
+
`).get();
|
|
395
|
+
const avgRow = this.db.prepare(`
|
|
396
|
+
SELECT AVG(success_rate) as avg_success FROM goap_plan_signatures WHERE usage_count > 0
|
|
397
|
+
`).get();
|
|
398
|
+
const topGoalsRows = this.db.prepare(`
|
|
399
|
+
SELECT goal_signature, SUM(usage_count) as total_reuse
|
|
400
|
+
FROM goap_plan_signatures
|
|
401
|
+
WHERE usage_count > 0
|
|
402
|
+
GROUP BY goal_signature
|
|
403
|
+
ORDER BY total_reuse DESC
|
|
404
|
+
LIMIT 5
|
|
405
|
+
`).all();
|
|
406
|
+
return {
|
|
407
|
+
totalPlans: totalRow.total,
|
|
408
|
+
reusedPlans: reusedRow.reused,
|
|
409
|
+
reuseRate: totalRow.total > 0 ? reusedRow.reused / totalRow.total : 0,
|
|
410
|
+
avgSimilarityScore: avgRow.avg_success ?? 0,
|
|
411
|
+
topGoals: topGoalsRows.map(row => ({
|
|
412
|
+
goal: row.goal_signature,
|
|
413
|
+
reuseCount: row.total_reuse
|
|
414
|
+
}))
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* Clear signature cache (for testing or memory management)
|
|
419
|
+
*/
|
|
420
|
+
clearCache() {
|
|
421
|
+
this.goalCache.clear();
|
|
422
|
+
this.signatureCache.clear();
|
|
423
|
+
this.logger.debug('[PlanSimilarity] Cache cleared');
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Preload signatures into cache for faster matching
|
|
427
|
+
*/
|
|
428
|
+
async preloadCache(limit = 100) {
|
|
429
|
+
this.ensureSchema();
|
|
430
|
+
const rows = this.db.prepare(`
|
|
431
|
+
SELECT * FROM goap_plan_signatures
|
|
432
|
+
ORDER BY usage_count DESC, success_rate DESC
|
|
433
|
+
LIMIT ?
|
|
434
|
+
`).all(limit);
|
|
435
|
+
for (const row of rows) {
|
|
436
|
+
const signature = {
|
|
437
|
+
id: row.id,
|
|
438
|
+
planId: row.plan_id,
|
|
439
|
+
goalSignature: row.goal_signature,
|
|
440
|
+
stateVector: JSON.parse(row.state_vector),
|
|
441
|
+
actionSequence: JSON.parse(row.action_sequence),
|
|
442
|
+
totalCost: row.total_cost,
|
|
443
|
+
successRate: row.success_rate,
|
|
444
|
+
usageCount: row.usage_count,
|
|
445
|
+
lastUsed: new Date(row.last_used),
|
|
446
|
+
createdAt: new Date(row.created_at)
|
|
447
|
+
};
|
|
448
|
+
this.signatureCache.set(signature.planId, signature);
|
|
449
|
+
// Update goal cache
|
|
450
|
+
const goalPlans = this.goalCache.get(signature.goalSignature) || [];
|
|
451
|
+
if (!goalPlans.includes(signature.planId)) {
|
|
452
|
+
goalPlans.push(signature.planId);
|
|
453
|
+
this.goalCache.set(signature.goalSignature, goalPlans);
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
this.logger.debug('[PlanSimilarity] Preloaded cache', {
|
|
457
|
+
signatures: this.signatureCache.size,
|
|
458
|
+
goals: this.goalCache.size
|
|
459
|
+
});
|
|
460
|
+
return rows.length;
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
exports.PlanSimilarity = PlanSimilarity;
|
|
464
|
+
//# sourceMappingURL=PlanSimilarity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlanSimilarity.js","sourceRoot":"","sources":["../../src/planning/PlanSimilarity.ts"],"names":[],"mappings":"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"}
|