swarm-engine 1.3.0 → 1.41.0

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.
Files changed (145) hide show
  1. package/README.md +45 -7
  2. package/dist/cli/commands/memory.js +117 -0
  3. package/dist/cli/commands/memory.js.map +1 -1
  4. package/dist/core/patterns.d.ts +7 -1
  5. package/dist/core/patterns.d.ts.map +1 -1
  6. package/dist/core/patterns.js +23 -0
  7. package/dist/core/patterns.js.map +1 -1
  8. package/dist/core/types.d.ts +39 -0
  9. package/dist/core/types.d.ts.map +1 -1
  10. package/dist/core/types.js.map +1 -1
  11. package/dist/index.d.ts +55 -0
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +40 -0
  14. package/dist/index.js.map +1 -1
  15. package/dist/memory/index.d.ts +37 -0
  16. package/dist/memory/index.d.ts.map +1 -1
  17. package/dist/memory/index.js +91 -0
  18. package/dist/memory/index.js.map +1 -1
  19. package/dist/runtime/adaptive.d.ts +1 -0
  20. package/dist/runtime/adaptive.d.ts.map +1 -1
  21. package/dist/runtime/adaptive.js +18 -4
  22. package/dist/runtime/adaptive.js.map +1 -1
  23. package/dist/runtime/agent-runner.d.ts +18 -0
  24. package/dist/runtime/agent-runner.d.ts.map +1 -1
  25. package/dist/runtime/agent-runner.js +147 -4
  26. package/dist/runtime/agent-runner.js.map +1 -1
  27. package/dist/runtime/backends/claude-session.d.ts +49 -0
  28. package/dist/runtime/backends/claude-session.d.ts.map +1 -0
  29. package/dist/runtime/backends/claude-session.js +237 -0
  30. package/dist/runtime/backends/claude-session.js.map +1 -0
  31. package/dist/runtime/backends/claude.d.ts.map +1 -1
  32. package/dist/runtime/backends/claude.js +90 -4
  33. package/dist/runtime/backends/claude.js.map +1 -1
  34. package/dist/runtime/backends/types.d.ts +31 -1
  35. package/dist/runtime/backends/types.d.ts.map +1 -1
  36. package/dist/runtime/compaction.d.ts +7 -1
  37. package/dist/runtime/compaction.d.ts.map +1 -1
  38. package/dist/runtime/compaction.js +12 -2
  39. package/dist/runtime/compaction.js.map +1 -1
  40. package/dist/runtime/distiller.d.ts +1 -0
  41. package/dist/runtime/distiller.d.ts.map +1 -1
  42. package/dist/runtime/distiller.js +8 -2
  43. package/dist/runtime/distiller.js.map +1 -1
  44. package/dist/runtime/engine.d.ts +48 -2
  45. package/dist/runtime/engine.d.ts.map +1 -1
  46. package/dist/runtime/engine.js +600 -8
  47. package/dist/runtime/engine.js.map +1 -1
  48. package/dist/runtime/execution-graph.d.ts +86 -0
  49. package/dist/runtime/execution-graph.d.ts.map +1 -0
  50. package/dist/runtime/execution-graph.js +441 -0
  51. package/dist/runtime/execution-graph.js.map +1 -0
  52. package/dist/runtime/executor.d.ts +7 -1
  53. package/dist/runtime/executor.d.ts.map +1 -1
  54. package/dist/runtime/executor.js +20 -0
  55. package/dist/runtime/executor.js.map +1 -1
  56. package/dist/runtime/graph-adversarial.d.ts +88 -0
  57. package/dist/runtime/graph-adversarial.d.ts.map +1 -0
  58. package/dist/runtime/graph-adversarial.js +378 -0
  59. package/dist/runtime/graph-adversarial.js.map +1 -0
  60. package/dist/runtime/graph-analyzer.d.ts +106 -0
  61. package/dist/runtime/graph-analyzer.d.ts.map +1 -0
  62. package/dist/runtime/graph-analyzer.js +321 -0
  63. package/dist/runtime/graph-analyzer.js.map +1 -0
  64. package/dist/runtime/graph-causal.d.ts +91 -0
  65. package/dist/runtime/graph-causal.d.ts.map +1 -0
  66. package/dist/runtime/graph-causal.js +292 -0
  67. package/dist/runtime/graph-causal.js.map +1 -0
  68. package/dist/runtime/graph-context-router.d.ts +73 -0
  69. package/dist/runtime/graph-context-router.d.ts.map +1 -0
  70. package/dist/runtime/graph-context-router.js +162 -0
  71. package/dist/runtime/graph-context-router.js.map +1 -0
  72. package/dist/runtime/graph-discovery.d.ts +71 -0
  73. package/dist/runtime/graph-discovery.d.ts.map +1 -0
  74. package/dist/runtime/graph-discovery.js +364 -0
  75. package/dist/runtime/graph-discovery.js.map +1 -0
  76. package/dist/runtime/graph-dropout.d.ts +59 -0
  77. package/dist/runtime/graph-dropout.d.ts.map +1 -0
  78. package/dist/runtime/graph-dropout.js +204 -0
  79. package/dist/runtime/graph-dropout.js.map +1 -0
  80. package/dist/runtime/graph-embeddings.d.ts +58 -0
  81. package/dist/runtime/graph-embeddings.d.ts.map +1 -0
  82. package/dist/runtime/graph-embeddings.js +299 -0
  83. package/dist/runtime/graph-embeddings.js.map +1 -0
  84. package/dist/runtime/graph-feedback.d.ts +30 -0
  85. package/dist/runtime/graph-feedback.d.ts.map +1 -0
  86. package/dist/runtime/graph-feedback.js +80 -0
  87. package/dist/runtime/graph-feedback.js.map +1 -0
  88. package/dist/runtime/graph-gnn.d.ts +120 -0
  89. package/dist/runtime/graph-gnn.d.ts.map +1 -0
  90. package/dist/runtime/graph-gnn.js +524 -0
  91. package/dist/runtime/graph-gnn.js.map +1 -0
  92. package/dist/runtime/graph-learner.d.ts +70 -0
  93. package/dist/runtime/graph-learner.d.ts.map +1 -0
  94. package/dist/runtime/graph-learner.js +265 -0
  95. package/dist/runtime/graph-learner.js.map +1 -0
  96. package/dist/runtime/graph-meta-adversarial.d.ts +113 -0
  97. package/dist/runtime/graph-meta-adversarial.d.ts.map +1 -0
  98. package/dist/runtime/graph-meta-adversarial.js +366 -0
  99. package/dist/runtime/graph-meta-adversarial.js.map +1 -0
  100. package/dist/runtime/graph-meta.d.ts +115 -0
  101. package/dist/runtime/graph-meta.d.ts.map +1 -0
  102. package/dist/runtime/graph-meta.js +465 -0
  103. package/dist/runtime/graph-meta.js.map +1 -0
  104. package/dist/runtime/graph-self-evolve.d.ts +92 -0
  105. package/dist/runtime/graph-self-evolve.d.ts.map +1 -0
  106. package/dist/runtime/graph-self-evolve.js +422 -0
  107. package/dist/runtime/graph-self-evolve.js.map +1 -0
  108. package/dist/runtime/graph-synthesis.d.ts +47 -0
  109. package/dist/runtime/graph-synthesis.d.ts.map +1 -0
  110. package/dist/runtime/graph-synthesis.js +232 -0
  111. package/dist/runtime/graph-synthesis.js.map +1 -0
  112. package/dist/runtime/graph-trajectory.d.ts +88 -0
  113. package/dist/runtime/graph-trajectory.d.ts.map +1 -0
  114. package/dist/runtime/graph-trajectory.js +334 -0
  115. package/dist/runtime/graph-trajectory.js.map +1 -0
  116. package/dist/runtime/learning-engine.d.ts +12 -0
  117. package/dist/runtime/learning-engine.d.ts.map +1 -1
  118. package/dist/runtime/learning-engine.js +70 -0
  119. package/dist/runtime/learning-engine.js.map +1 -1
  120. package/dist/runtime/prompt-compressor.d.ts +16 -0
  121. package/dist/runtime/prompt-compressor.d.ts.map +1 -0
  122. package/dist/runtime/prompt-compressor.js +68 -0
  123. package/dist/runtime/prompt-compressor.js.map +1 -0
  124. package/dist/runtime/repo-map.d.ts +40 -0
  125. package/dist/runtime/repo-map.d.ts.map +1 -0
  126. package/dist/runtime/repo-map.js +358 -0
  127. package/dist/runtime/repo-map.js.map +1 -0
  128. package/dist/runtime/sdk-mcp-server.d.ts +44 -0
  129. package/dist/runtime/sdk-mcp-server.d.ts.map +1 -0
  130. package/dist/runtime/sdk-mcp-server.js +133 -0
  131. package/dist/runtime/sdk-mcp-server.js.map +1 -0
  132. package/dist/runtime/structured-handoff.d.ts +41 -0
  133. package/dist/runtime/structured-handoff.d.ts.map +1 -0
  134. package/dist/runtime/structured-handoff.js +279 -0
  135. package/dist/runtime/structured-handoff.js.map +1 -0
  136. package/dist/runtime/token-analytics.d.ts +38 -0
  137. package/dist/runtime/token-analytics.d.ts.map +1 -0
  138. package/dist/runtime/token-analytics.js +59 -0
  139. package/dist/runtime/token-analytics.js.map +1 -0
  140. package/dist/runtime/verifier.d.ts +10 -0
  141. package/dist/runtime/verifier.d.ts.map +1 -1
  142. package/dist/runtime/verifier.js +97 -1
  143. package/dist/runtime/verifier.js.map +1 -1
  144. package/package.json +2 -2
  145. package/skills/swarm-output-style/SKILL.md +71 -33
@@ -0,0 +1,465 @@
1
+ // ─── Stop Words ──────────────────────────────────────────────────
2
+ const STOP_WORDS = new Set([
3
+ 'the',
4
+ 'a',
5
+ 'an',
6
+ 'to',
7
+ 'in',
8
+ 'for',
9
+ 'of',
10
+ 'with',
11
+ 'and',
12
+ 'or',
13
+ 'is',
14
+ 'are',
15
+ 'was',
16
+ 'were',
17
+ 'be',
18
+ 'been',
19
+ 'it',
20
+ 'its',
21
+ 'this',
22
+ 'that',
23
+ 'by',
24
+ 'from',
25
+ 'on',
26
+ 'at',
27
+ 'as',
28
+ 'but',
29
+ 'not',
30
+ 'no',
31
+ 'do',
32
+ 'does',
33
+ 'did',
34
+ 'have',
35
+ 'has',
36
+ 'had',
37
+ 'will',
38
+ 'would',
39
+ 'could',
40
+ 'should',
41
+ 'can',
42
+ 'may',
43
+ 'might',
44
+ 'shall',
45
+ 'must',
46
+ 'need',
47
+ ]);
48
+ // ─── MetaPatternSelector ─────────────────────────────────────────
49
+ /**
50
+ * MAML-inspired few-shot pattern selection using TF-IDF + logistic regression.
51
+ * Learns from past orchestration outcomes to recommend the best pattern for new tasks.
52
+ * Persists state to the execution knowledge graph for cross-run learning.
53
+ */
54
+ export class MetaPatternSelector {
55
+ graph;
56
+ tfidfModel = null;
57
+ patternModels = new Map();
58
+ examples = [];
59
+ constructor(graph) {
60
+ this.graph = graph;
61
+ this.loadFromGraph();
62
+ }
63
+ // ─── Text Processing ──────────────────────────────────────────
64
+ /**
65
+ * Tokenize text: lowercase, replace non-word chars with spaces,
66
+ * split on whitespace, filter tokens ≤ 2 chars, remove stop words.
67
+ */
68
+ static tokenize(text) {
69
+ return text
70
+ .toLowerCase()
71
+ .replace(/[^\w]/g, ' ')
72
+ .split(/\s+/)
73
+ .filter((t) => t.length > 2 && !STOP_WORDS.has(t));
74
+ }
75
+ /**
76
+ * Build TF-IDF model from a document corpus.
77
+ * IDF uses smoothed formula: log((N+1)/(df+1)) + 1
78
+ * Vocabulary capped at maxVocab terms, sorted by document frequency.
79
+ */
80
+ static buildTfIdfModel(documents, maxVocab = 500) {
81
+ const N = documents.length;
82
+ const tokenizedDocs = documents.map((d) => MetaPatternSelector.tokenize(d));
83
+ // Count document frequency for each term
84
+ const dfMap = new Map();
85
+ for (const tokens of tokenizedDocs) {
86
+ const unique = new Set(tokens);
87
+ for (const token of unique) {
88
+ dfMap.set(token, (dfMap.get(token) ?? 0) + 1);
89
+ }
90
+ }
91
+ // Sort by document frequency (descending), cap at maxVocab
92
+ const sorted = [...dfMap.entries()].sort((a, b) => b[1] - a[1]).slice(0, maxVocab);
93
+ const vocabulary = new Map();
94
+ const idf = [];
95
+ for (let i = 0; i < sorted.length; i++) {
96
+ const [word, df] = sorted[i];
97
+ vocabulary.set(word, i);
98
+ idf.push(Math.log((N + 1) / (df + 1)) + 1);
99
+ }
100
+ return { vocabulary, idf, documentCount: N };
101
+ }
102
+ /**
103
+ * Vectorize a single text against the TF-IDF model.
104
+ * Returns L2-normalized vector.
105
+ */
106
+ static vectorize(model, text) {
107
+ const tokens = MetaPatternSelector.tokenize(text);
108
+ const vec = new Array(model.vocabulary.size).fill(0);
109
+ // Term frequency
110
+ const tf = new Map();
111
+ for (const token of tokens) {
112
+ tf.set(token, (tf.get(token) ?? 0) + 1);
113
+ }
114
+ // TF-IDF
115
+ for (const [word, count] of tf) {
116
+ const idx = model.vocabulary.get(word);
117
+ if (idx !== undefined) {
118
+ vec[idx] = count * model.idf[idx];
119
+ }
120
+ }
121
+ // L2 normalize
122
+ const magnitude = Math.sqrt(vec.reduce((sum, v) => sum + v * v, 0));
123
+ if (magnitude > 0) {
124
+ for (let i = 0; i < vec.length; i++) {
125
+ vec[i] /= magnitude;
126
+ }
127
+ }
128
+ return vec;
129
+ }
130
+ /**
131
+ * Cosine similarity between two vectors.
132
+ * Returns 0 if either vector has zero magnitude.
133
+ */
134
+ static cosineSimilarity(a, b) {
135
+ const len = Math.min(a.length, b.length);
136
+ let dot = 0;
137
+ let magA = 0;
138
+ let magB = 0;
139
+ for (let i = 0; i < len; i++) {
140
+ dot += a[i] * b[i];
141
+ magA += a[i] * a[i];
142
+ magB += b[i] * b[i];
143
+ }
144
+ const denom = Math.sqrt(magA) * Math.sqrt(magB);
145
+ return denom === 0 ? 0 : dot / denom;
146
+ }
147
+ // ─── Feature Engineering ──────────────────────────────────────
148
+ /**
149
+ * Build full feature vector: [tfidf..., log(fileCount+1), log(totalLines+1), log(numTestFiles+1), hasReviewPhase ? 1 : 0]
150
+ */
151
+ buildFeatureVector(taskDescription, context) {
152
+ // Rebuild TF-IDF model if needed
153
+ if (!this.tfidfModel) {
154
+ const docs = this.examples.length > 0 ? this.getStoredTaskDescriptions() : [taskDescription];
155
+ // Only build if we actually have documents with tokens
156
+ if (docs.length > 0) {
157
+ this.tfidfModel = MetaPatternSelector.buildTfIdfModel(docs);
158
+ }
159
+ }
160
+ const tfidfVec = this.tfidfModel ? MetaPatternSelector.vectorize(this.tfidfModel, taskDescription) : [];
161
+ // Contextual features
162
+ const fileCount = context?.fileCount ?? 0;
163
+ const totalLines = context?.totalLines ?? 0;
164
+ const numTestFiles = context?.numTestFiles ?? 0;
165
+ const hasReview = context?.hasReviewPhase ? 1 : 0;
166
+ return [...tfidfVec, Math.log(fileCount + 1), Math.log(totalLines + 1), Math.log(numTestFiles + 1), hasReview];
167
+ }
168
+ // ─── Logistic Regression ──────────────────────────────────────
169
+ /**
170
+ * Predict success probability: σ(w·x + b)
171
+ * Sigmoid input clamped to [-500, 500] for numerical stability.
172
+ */
173
+ predict(model, features) {
174
+ let z = model.bias;
175
+ const len = Math.min(model.weights.length, features.length);
176
+ for (let i = 0; i < len; i++) {
177
+ z += model.weights[i] * features[i];
178
+ }
179
+ // Clamp to avoid overflow
180
+ z = Math.max(-500, Math.min(500, z));
181
+ return 1 / (1 + Math.exp(-z));
182
+ }
183
+ /**
184
+ * Update model weights with one example via online SGD.
185
+ * error = predict(features) - label
186
+ * w[i] -= lr * (error * features[i] + lambda * w[i])
187
+ * bias -= lr * error
188
+ */
189
+ updateModel(model, features, label) {
190
+ const prediction = this.predict(model, features);
191
+ const error = prediction - label;
192
+ const len = Math.min(model.weights.length, features.length);
193
+ for (let i = 0; i < len; i++) {
194
+ model.weights[i] -= model.learnRate * (error * features[i] + model.lambda * model.weights[i]);
195
+ }
196
+ model.bias -= model.learnRate * error;
197
+ model.totalExamples++;
198
+ if (label === 1)
199
+ model.positiveExamples++;
200
+ }
201
+ /**
202
+ * MAML inner loop: adapt model to new task using K most similar historical examples.
203
+ * 1. Find K most similar examples by cosine similarity on feature vectors
204
+ * 2. Clone the base model (deep copy weights)
205
+ * 3. Run K gradient steps on those examples with inner LR=0.05
206
+ * 4. Return adapted model
207
+ */
208
+ adaptToNewTask(baseModel, newTaskFeatures, K = 3) {
209
+ // Find K most similar examples for this pattern
210
+ const patternExamples = this.examples.filter((e) => e.pattern === baseModel.pattern);
211
+ const scored = patternExamples.map((ex) => ({
212
+ example: ex,
213
+ similarity: MetaPatternSelector.cosineSimilarity(newTaskFeatures, ex.features),
214
+ }));
215
+ scored.sort((a, b) => b.similarity - a.similarity);
216
+ const topK = scored.slice(0, K);
217
+ // Deep clone the base model
218
+ const adapted = {
219
+ pattern: baseModel.pattern,
220
+ weights: [...baseModel.weights],
221
+ bias: baseModel.bias,
222
+ learnRate: 0.05, // Inner loop learning rate
223
+ lambda: baseModel.lambda,
224
+ totalExamples: baseModel.totalExamples,
225
+ positiveExamples: baseModel.positiveExamples,
226
+ };
227
+ // Run gradient steps on the K most similar examples
228
+ for (const { example } of topK) {
229
+ this.updateModel(adapted, example.features, example.label);
230
+ }
231
+ return adapted;
232
+ }
233
+ // ─── Pattern Selection ────────────────────────────────────────
234
+ /**
235
+ * Main entry point: select the best pattern for a task.
236
+ * For each known pattern, predicts success probability using adapted models.
237
+ * Returns the highest-confidence pattern with alternatives.
238
+ */
239
+ selectPattern(taskDescription, context) {
240
+ const features = this.buildFeatureVector(taskDescription, context);
241
+ // If we have no data, rebuild TF-IDF from stored descriptions
242
+ if (!this.tfidfModel && this.examples.length > 0) {
243
+ const docs = this.getStoredTaskDescriptions();
244
+ if (docs.length > 0) {
245
+ this.tfidfModel = MetaPatternSelector.buildTfIdfModel(docs);
246
+ }
247
+ }
248
+ // Collect known patterns from graph and from examples
249
+ const knownPatterns = this.getKnownPatterns();
250
+ if (knownPatterns.length === 0) {
251
+ return {
252
+ pattern: 'hybrid',
253
+ confidence: 0.5,
254
+ reasoning: 'No historical data available; defaulting to hybrid pattern',
255
+ alternatives: [],
256
+ };
257
+ }
258
+ // Score each pattern
259
+ const scores = [];
260
+ for (const pattern of knownPatterns) {
261
+ let model = this.patternModels.get(pattern);
262
+ if (!model) {
263
+ model = this.createPatternModel(pattern, features.length);
264
+ this.patternModels.set(pattern, model);
265
+ }
266
+ // Ensure weights match feature vector length
267
+ this.ensureWeightSize(model, features.length);
268
+ let prediction;
269
+ const patternExampleCount = this.examples.filter((e) => e.pattern === pattern).length;
270
+ if (patternExampleCount >= 3) {
271
+ const adapted = this.adaptToNewTask(model, features);
272
+ prediction = this.predict(adapted, features);
273
+ }
274
+ else {
275
+ prediction = this.predict(model, features);
276
+ }
277
+ scores.push({ pattern, confidence: prediction });
278
+ }
279
+ // Sort by confidence descending
280
+ scores.sort((a, b) => b.confidence - a.confidence);
281
+ const best = scores[0];
282
+ const alternatives = scores.slice(1).map((s) => ({ pattern: s.pattern, confidence: s.confidence }));
283
+ const exampleCount = this.examples.filter((e) => e.pattern === best.pattern).length;
284
+ const reasoning = exampleCount >= 3
285
+ ? `MAML-adapted prediction from ${exampleCount} historical examples`
286
+ : exampleCount > 0
287
+ ? `Base model prediction from ${exampleCount} examples (< 3, no adaptation)`
288
+ : 'Cold start — no examples for this pattern yet';
289
+ return {
290
+ pattern: best.pattern,
291
+ confidence: best.confidence,
292
+ reasoning,
293
+ alternatives,
294
+ };
295
+ }
296
+ // ─── Online Learning ──────────────────────────────────────────
297
+ /**
298
+ * Record orchestration outcome for online learning.
299
+ * Fetches task description and pattern from the graph, builds features,
300
+ * updates the pattern model, and stores the example.
301
+ */
302
+ updateFromOutcome(orchestrationId, success) {
303
+ const orchNode = this.graph.getNode(orchestrationId);
304
+ if (!orchNode)
305
+ return;
306
+ const taskDescription = orchNode.properties.taskDescription || orchNode.label;
307
+ const pattern = orchNode.properties.pattern;
308
+ if (!pattern)
309
+ return;
310
+ const features = this.buildFeatureVector(taskDescription, {
311
+ fileCount: orchNode.properties.fileCount,
312
+ totalLines: orchNode.properties.totalLines,
313
+ numTestFiles: orchNode.properties.numTestFiles,
314
+ hasReviewPhase: orchNode.properties.hasReviewPhase,
315
+ });
316
+ const label = success ? 1 : 0;
317
+ // Store example
318
+ const example = { features, label, pattern };
319
+ this.examples.push(example);
320
+ // Update the pattern model
321
+ let model = this.patternModels.get(pattern);
322
+ if (!model) {
323
+ model = this.createPatternModel(pattern, features.length);
324
+ this.patternModels.set(pattern, model);
325
+ }
326
+ this.ensureWeightSize(model, features.length);
327
+ this.updateModel(model, features, label);
328
+ // Rebuild TF-IDF with the new document
329
+ const docs = this.getStoredTaskDescriptions();
330
+ docs.push(taskDescription);
331
+ this.tfidfModel = MetaPatternSelector.buildTfIdfModel(docs);
332
+ // Persist
333
+ this.saveToGraph();
334
+ }
335
+ // ─── Persistence ──────────────────────────────────────────────
336
+ saveToGraph() {
337
+ // Store TF-IDF model as a heuristic node
338
+ if (this.tfidfModel) {
339
+ const vocabObj = {};
340
+ for (const [word, idx] of this.tfidfModel.vocabulary) {
341
+ vocabObj[word] = idx;
342
+ }
343
+ this.graph.addNode({
344
+ id: 'meta:tfidf',
345
+ type: 'heuristic',
346
+ label: 'MetaPatternSelector TF-IDF Model',
347
+ properties: {
348
+ vocabulary: vocabObj,
349
+ idf: this.tfidfModel.idf,
350
+ documentCount: this.tfidfModel.documentCount,
351
+ },
352
+ });
353
+ }
354
+ // Store pattern models
355
+ for (const [pattern, model] of this.patternModels) {
356
+ this.graph.addNode({
357
+ id: `meta:pattern:${pattern}`,
358
+ type: 'heuristic',
359
+ label: `MetaPatternSelector model: ${pattern}`,
360
+ properties: {
361
+ pattern: model.pattern,
362
+ weights: model.weights,
363
+ bias: model.bias,
364
+ learnRate: model.learnRate,
365
+ lambda: model.lambda,
366
+ totalExamples: model.totalExamples,
367
+ positiveExamples: model.positiveExamples,
368
+ },
369
+ });
370
+ }
371
+ // Store examples (capped to last 1000 to avoid bloat)
372
+ const capped = this.examples.slice(-1000);
373
+ this.graph.addNode({
374
+ id: 'meta:examples',
375
+ type: 'heuristic',
376
+ label: 'MetaPatternSelector examples',
377
+ properties: {
378
+ examples: capped,
379
+ },
380
+ });
381
+ }
382
+ loadFromGraph() {
383
+ // Load TF-IDF model
384
+ const tfidfNode = this.graph.getNode('meta:tfidf');
385
+ if (tfidfNode) {
386
+ const vocabObj = tfidfNode.properties.vocabulary;
387
+ const idf = tfidfNode.properties.idf;
388
+ const documentCount = tfidfNode.properties.documentCount;
389
+ if (vocabObj && idf && documentCount !== undefined) {
390
+ const vocabulary = new Map();
391
+ for (const [word, idx] of Object.entries(vocabObj)) {
392
+ vocabulary.set(word, idx);
393
+ }
394
+ this.tfidfModel = { vocabulary, idf, documentCount };
395
+ }
396
+ }
397
+ // Load pattern models
398
+ const heuristicNodes = this.graph.getNodesByType('heuristic');
399
+ for (const node of heuristicNodes) {
400
+ if (node.id.startsWith('meta:pattern:')) {
401
+ const props = node.properties;
402
+ if (props.pattern && props.weights) {
403
+ this.patternModels.set(props.pattern, {
404
+ pattern: props.pattern,
405
+ weights: props.weights,
406
+ bias: props.bias ?? 0,
407
+ learnRate: props.learnRate ?? 0.01,
408
+ lambda: props.lambda ?? 0.001,
409
+ totalExamples: props.totalExamples ?? 0,
410
+ positiveExamples: props.positiveExamples ?? 0,
411
+ });
412
+ }
413
+ }
414
+ }
415
+ // Load examples
416
+ const examplesNode = this.graph.getNode('meta:examples');
417
+ if (examplesNode) {
418
+ const stored = examplesNode.properties.examples;
419
+ if (Array.isArray(stored)) {
420
+ this.examples = stored;
421
+ }
422
+ }
423
+ }
424
+ // ─── Helpers ──────────────────────────────────────────────────
425
+ createPatternModel(pattern, featureSize) {
426
+ return {
427
+ pattern,
428
+ weights: new Array(featureSize).fill(0),
429
+ bias: 0,
430
+ learnRate: 0.01,
431
+ lambda: 0.001,
432
+ totalExamples: 0,
433
+ positiveExamples: 0,
434
+ };
435
+ }
436
+ ensureWeightSize(model, size) {
437
+ while (model.weights.length < size) {
438
+ model.weights.push(0);
439
+ }
440
+ }
441
+ getKnownPatterns() {
442
+ const patterns = new Set();
443
+ // From pattern models
444
+ for (const pattern of this.patternModels.keys()) {
445
+ patterns.add(pattern);
446
+ }
447
+ // From examples
448
+ for (const ex of this.examples) {
449
+ patterns.add(ex.pattern);
450
+ }
451
+ // From graph pattern nodes
452
+ const patternNodes = this.graph.getNodesByType('pattern');
453
+ for (const node of patternNodes) {
454
+ patterns.add(node.label);
455
+ }
456
+ return [...patterns];
457
+ }
458
+ getStoredTaskDescriptions() {
459
+ const orchNodes = this.graph.getNodesByType('orchestration');
460
+ return orchNodes
461
+ .map((n) => n.properties.taskDescription || n.label)
462
+ .filter((desc) => desc && desc.length > 0);
463
+ }
464
+ }
465
+ //# sourceMappingURL=graph-meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-meta.js","sourceRoot":"","sources":["../../src/runtime/graph-meta.ts"],"names":[],"mappings":"AAEA,oEAAoE;AAEpE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACzB,KAAK;IACL,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,MAAM;IACN,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,KAAK;IACL,MAAM;IACN,IAAI;IACJ,MAAM;IACN,IAAI;IACJ,KAAK;IACL,MAAM;IACN,MAAM;IACN,IAAI;IACJ,MAAM;IACN,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,KAAK;IACL,KAAK;IACL,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;CACP,CAAC,CAAC;AAiCH,oEAAoE;AAEpE;;;;GAIG;AACH,MAAM,OAAO,mBAAmB;IAKV;IAJZ,UAAU,GAAsB,IAAI,CAAC;IACrC,aAAa,GAA8B,IAAI,GAAG,EAAE,CAAC;IACrD,QAAQ,GAAkB,EAAE,CAAC;IAErC,YAAoB,KAAqB;QAArB,UAAK,GAAL,KAAK,CAAgB;QACvC,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,iEAAiE;IAEjE;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAY;QAC1B,OAAO,IAAI;aACR,WAAW,EAAE;aACb,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;aACtB,KAAK,CAAC,KAAK,CAAC;aACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAAC,SAAmB,EAAE,QAAQ,GAAG,GAAG;QACxD,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;QAC3B,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5E,yCAAyC;QACzC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;QACxC,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAED,2DAA2D;QAC3D,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAEnF,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC7C,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7B,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,KAAiB,EAAE,IAAY;QAC9C,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAErD,iBAAiB;QACjB,MAAM,EAAE,GAAG,IAAI,GAAG,EAAkB,CAAC;QACrC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,CAAC;QAED,SAAS;QACT,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,eAAe;QACf,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpE,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,GAAG,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;YACtB,CAAC;QACH,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,CAAW,EAAE,CAAW;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACnB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC;IACvC,CAAC;IAED,iEAAiE;IAEjE;;OAEG;IACH,kBAAkB,CAChB,eAAuB,EACvB,OAAsG;QAEtG,iCAAiC;QACjC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;YAC7F,uDAAuD;YACvD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAExG,sBAAsB;QACtB,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,CAAC,CAAC;QAC5C,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAElD,OAAO,CAAC,GAAG,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACjH,CAAC;IAED,iEAAiE;IAEjE;;;OAGG;IACH,OAAO,CAAC,KAAmB,EAAE,QAAkB;QAC7C,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC;QACD,0BAA0B;QAC1B,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,KAAmB,EAAE,QAAkB,EAAE,KAAY;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,UAAU,GAAG,KAAK,CAAC;QAEjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAChG,CAAC;QACD,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;QAEtC,KAAK,CAAC,aAAa,EAAE,CAAC;QACtB,IAAI,KAAK,KAAK,CAAC;YAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC;IAC5C,CAAC;IAED;;;;;;OAMG;IACH,cAAc,CAAC,SAAuB,EAAE,eAAyB,EAAE,CAAC,GAAG,CAAC;QACtE,gDAAgD;QAChD,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO,CAAC,CAAC;QAErF,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1C,OAAO,EAAE,EAAE;YACX,UAAU,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,eAAe,EAAE,EAAE,CAAC,QAAQ,CAAC;SAC/E,CAAC,CAAC,CAAC;QACJ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEhC,4BAA4B;QAC5B,MAAM,OAAO,GAAiB;YAC5B,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;YAC/B,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,SAAS,EAAE,IAAI,EAAE,2BAA2B;YAC5C,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,aAAa,EAAE,SAAS,CAAC,aAAa;YACtC,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;SAC7C,CAAC;QAEF,oDAAoD;QACpD,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,iEAAiE;IAEjE;;;;OAIG;IACH,aAAa,CACX,eAAuB,EACvB,OAAsG;QAEtG,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAEnE,8DAA8D;QAC9D,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAC9C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAED,sDAAsD;QACtD,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE9C,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAE,QAAQ;gBACjB,UAAU,EAAE,GAAG;gBACf,SAAS,EAAE,4DAA4D;gBACvE,YAAY,EAAE,EAAE;aACjB,CAAC;QACJ,CAAC;QAED,qBAAqB;QACrB,MAAM,MAAM,GAAmD,EAAE,CAAC;QAElE,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;YACpC,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC1D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACzC,CAAC;YAED,6CAA6C;YAC7C,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YAE9C,IAAI,UAAkB,CAAC;YACvB,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;YAEtF,IAAI,mBAAmB,IAAI,CAAC,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACrD,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC7C,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,gCAAgC;QAChC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;QAEnD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAEpG,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QACpF,MAAM,SAAS,GACb,YAAY,IAAI,CAAC;YACf,CAAC,CAAC,gCAAgC,YAAY,sBAAsB;YACpE,CAAC,CAAC,YAAY,GAAG,CAAC;gBAChB,CAAC,CAAC,8BAA8B,YAAY,gCAAgC;gBAC5E,CAAC,CAAC,+CAA+C,CAAC;QAExD,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS;YACT,YAAY;SACb,CAAC;IACJ,CAAC;IAED,iEAAiE;IAEjE;;;;OAIG;IACH,iBAAiB,CAAC,eAAuB,EAAE,OAAgB;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,MAAM,eAAe,GAAI,QAAQ,CAAC,UAAU,CAAC,eAA0B,IAAI,QAAQ,CAAC,KAAK,CAAC;QAC1F,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,OAAiB,CAAC;QACtD,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE;YACxD,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,SAA+B;YAC9D,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAgC;YAChE,YAAY,EAAE,QAAQ,CAAC,UAAU,CAAC,YAAkC;YACpE,cAAc,EAAE,QAAQ,CAAC,UAAU,CAAC,cAAqC;SAC1E,CAAC,CAAC;QAEH,MAAM,KAAK,GAAU,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAErC,gBAAgB;QAChB,MAAM,OAAO,GAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE5B,2BAA2B;QAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC1D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEzC,uCAAuC;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAE5D,UAAU;QACV,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,iEAAiE;IAEzD,WAAW;QACjB,yCAAyC;QACzC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,QAAQ,GAA2B,EAAE,CAAC;YAC5C,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;gBACrD,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;YACvB,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;gBACjB,EAAE,EAAE,YAAY;gBAChB,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,kCAAkC;gBACzC,UAAU,EAAE;oBACV,UAAU,EAAE,QAAQ;oBACpB,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG;oBACxB,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa;iBAC7C;aACF,CAAC,CAAC;QACL,CAAC;QAED,uBAAuB;QACvB,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;gBACjB,EAAE,EAAE,gBAAgB,OAAO,EAAE;gBAC7B,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,8BAA8B,OAAO,EAAE;gBAC9C,UAAU,EAAE;oBACV,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,aAAa,EAAE,KAAK,CAAC,aAAa;oBAClC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;iBACzC;aACF,CAAC,CAAC;QACL,CAAC;QAED,sDAAsD;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YACjB,EAAE,EAAE,eAAe;YACnB,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,8BAA8B;YACrC,UAAU,EAAE;gBACV,QAAQ,EAAE,MAAM;aACjB;SACF,CAAC,CAAC;IACL,CAAC;IAEO,aAAa;QACnB,oBAAoB;QACpB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACnD,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,UAAgD,CAAC;YACvF,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,GAA2B,CAAC;YAC7D,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,aAAmC,CAAC;YAE/E,IAAI,QAAQ,IAAI,GAAG,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBACnD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;gBAC7C,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACnD,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC5B,CAAC;gBACD,IAAI,CAAC,UAAU,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC;YACvD,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAC9D,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;gBACxC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;gBAC9B,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBACnC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,OAAiB,EAAE;wBAC9C,OAAO,EAAE,KAAK,CAAC,OAAiB;wBAChC,OAAO,EAAE,KAAK,CAAC,OAAmB;wBAClC,IAAI,EAAG,KAAK,CAAC,IAAe,IAAI,CAAC;wBACjC,SAAS,EAAG,KAAK,CAAC,SAAoB,IAAI,IAAI;wBAC9C,MAAM,EAAG,KAAK,CAAC,MAAiB,IAAI,KAAK;wBACzC,aAAa,EAAG,KAAK,CAAC,aAAwB,IAAI,CAAC;wBACnD,gBAAgB,EAAG,KAAK,CAAC,gBAA2B,IAAI,CAAC;qBAC1D,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,gBAAgB;QAChB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACzD,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,QAAqC,CAAC;YAC7E,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED,iEAAiE;IAEzD,kBAAkB,CAAC,OAAe,EAAE,WAAmB;QAC7D,OAAO;YACL,OAAO;YACP,OAAO,EAAE,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACvC,IAAI,EAAE,CAAC;YACP,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,KAAK;YACb,aAAa,EAAE,CAAC;YAChB,gBAAgB,EAAE,CAAC;SACpB,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,KAAmB,EAAE,IAAY;QACxD,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;YACnC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAEO,gBAAgB;QACtB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,sBAAsB;QACtB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC;YAChD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QACD,gBAAgB;QAChB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QACD,2BAA2B;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC1D,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;IACvB,CAAC;IAEO,yBAAyB;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAC7D,OAAO,SAAS;aACb,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,UAAU,CAAC,eAA0B,IAAI,CAAC,CAAC,KAAK,CAAC;aAC/D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;CACF"}
@@ -0,0 +1,92 @@
1
+ import type { ExecutionGraph } from './execution-graph.js';
2
+ export interface EvolvedRule {
3
+ id: string;
4
+ name: string;
5
+ description: string;
6
+ condition: {
7
+ phaseKind?: string;
8
+ confidenceBelow?: number;
9
+ confidenceAbove?: number;
10
+ tokenRatioAbove?: number;
11
+ budgetRemainingBelow?: number;
12
+ hasBlockers?: boolean;
13
+ };
14
+ action: {
15
+ upgradeModel?: boolean;
16
+ downgradeModel?: boolean;
17
+ skipPhase?: boolean;
18
+ addPhase?: string;
19
+ };
20
+ confidence: number;
21
+ evidenceCount: number;
22
+ successRate: number;
23
+ }
24
+ export interface RuleProposal {
25
+ rule: EvolvedRule;
26
+ backtestedImprovement: number;
27
+ confidence: number;
28
+ evidence: string;
29
+ }
30
+ export interface BacktestResult {
31
+ improvement: number;
32
+ appliedCount: number;
33
+ wouldHaveHelped: number;
34
+ wouldHaveHurt: number;
35
+ falsePositiveRate: number;
36
+ }
37
+ /**
38
+ * Analyzes historical execution traces to propose improved replanning rules,
39
+ * backtests them against historical data, and evolves scoring weights based
40
+ * on user feedback.
41
+ *
42
+ * Rules are persisted as 'heuristic' nodes in the execution graph with id
43
+ * prefix 'rule:'. Feedback adjusts confidence: accepted → +0.1, rejected → -0.15.
44
+ */
45
+ export declare class RuleEvolver {
46
+ private graph;
47
+ constructor(graph: ExecutionGraph);
48
+ /**
49
+ * Analyze historical orchestration traces and propose new replanning rules.
50
+ *
51
+ * 1. Extract features from all orchestrations via BFS.
52
+ * 2. Find patterns in failures: low-confidence phases, high token usage, blockers.
53
+ * 3. Generate candidate rules from observed failure patterns.
54
+ * 4. Backtest each candidate against all historical traces.
55
+ * 5. Return proposals sorted by improvement, filtered by confidence > 0.3.
56
+ */
57
+ evolveRules(traceCount?: number): RuleProposal[];
58
+ /**
59
+ * Backtest a single rule against all historical orchestrations.
60
+ *
61
+ * For each orchestration, extracts phase features via BFS. If the rule
62
+ * condition matches any phase, simulates the action:
63
+ * - upgradeModel on failed orch → wouldHaveHelped (optimistic)
64
+ * - upgradeModel on successful orch → wouldHaveHurt (false positive)
65
+ * - skipPhase on failed orch → wouldHaveHelped (conservative: saves tokens)
66
+ * - downgradeModel on successful orch → wouldHaveHelped (saves cost)
67
+ * - downgradeModel on failed orch → wouldHaveHurt
68
+ */
69
+ backtestRule(rule: EvolvedRule): BacktestResult;
70
+ /**
71
+ * Record user accept/reject of a rule proposal.
72
+ * Accepted → confidence +0.1 (capped at 1.0)
73
+ * Rejected → confidence -0.15 (floored at 0.0)
74
+ */
75
+ recordFeedback(ruleId: string, accepted: boolean): void;
76
+ /**
77
+ * Get all evolved rules currently stored in the graph.
78
+ * Loads heuristic nodes with id prefix 'rule:' and deserializes them.
79
+ */
80
+ getActiveRules(): EvolvedRule[];
81
+ private extractFeatures;
82
+ private inferPhaseConfidence;
83
+ private inferPhaseTokens;
84
+ private inferPhaseKind;
85
+ private generateCandidateRules;
86
+ private averageTokens;
87
+ private ruleMatchesOrchestration;
88
+ private saveRule;
89
+ private loadRules;
90
+ private formatEvidence;
91
+ }
92
+ //# sourceMappingURL=graph-self-evolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-self-evolve.d.ts","sourceRoot":"","sources":["../../src/runtime/graph-self-evolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAK3D,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,CAAC;IACF,MAAM,EAAE;QACN,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAwBD;;;;;;;GAOG;AACH,qBAAa,WAAW;IACV,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,cAAc;IAEzC;;;;;;;;OAQG;IACH,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE;IA2BhD;;;;;;;;;;OAUG;IACH,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,cAAc;IAsC/C;;;;OAIG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAsBvD;;;OAGG;IACH,cAAc,IAAI,WAAW,EAAE;IAM/B,OAAO,CAAC,eAAe;IAkDvB,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,sBAAsB;IAuI9B,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,wBAAwB;IA+ChC,OAAO,CAAC,QAAQ;IAgBhB,OAAO,CAAC,SAAS;IAyBjB,OAAO,CAAC,cAAc;CASvB"}