cognitive-core 0.0.1 → 0.1.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.
- package/README.md +363 -2
- package/SKILL.md +193 -0
- package/dist/agents/index.d.ts +3 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +5 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/mock-provider.d.ts +23 -0
- package/dist/agents/mock-provider.d.ts.map +1 -0
- package/dist/agents/mock-provider.js +71 -0
- package/dist/agents/mock-provider.js.map +1 -0
- package/dist/agents/types.d.ts +98 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +44 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/atlas.d.ts +196 -0
- package/dist/atlas.d.ts.map +1 -0
- package/dist/atlas.js +373 -0
- package/dist/atlas.js.map +1 -0
- package/dist/bin/cognitive-core.d.ts +18 -0
- package/dist/bin/cognitive-core.d.ts.map +1 -0
- package/dist/bin/cognitive-core.js +419 -0
- package/dist/bin/cognitive-core.js.map +1 -0
- package/dist/embeddings/bm25.d.ts +104 -0
- package/dist/embeddings/bm25.d.ts.map +1 -0
- package/dist/embeddings/bm25.js +264 -0
- package/dist/embeddings/bm25.js.map +1 -0
- package/dist/embeddings/index.d.ts +12 -0
- package/dist/embeddings/index.d.ts.map +1 -0
- package/dist/embeddings/index.js +16 -0
- package/dist/embeddings/index.js.map +1 -0
- package/dist/embeddings/manager.d.ts +112 -0
- package/dist/embeddings/manager.d.ts.map +1 -0
- package/dist/embeddings/manager.js +215 -0
- package/dist/embeddings/manager.js.map +1 -0
- package/dist/embeddings/provider.d.ts +101 -0
- package/dist/embeddings/provider.d.ts.map +1 -0
- package/dist/embeddings/provider.js +232 -0
- package/dist/embeddings/provider.js.map +1 -0
- package/dist/embeddings/vector-store.d.ts +101 -0
- package/dist/embeddings/vector-store.d.ts.map +1 -0
- package/dist/embeddings/vector-store.js +256 -0
- package/dist/embeddings/vector-store.js.map +1 -0
- package/dist/factory.d.ts +193 -0
- package/dist/factory.d.ts.map +1 -0
- package/dist/factory.js +109 -0
- package/dist/factory.js.map +1 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +84 -0
- package/dist/index.js.map +1 -0
- package/dist/learning/analyzer.d.ts +110 -0
- package/dist/learning/analyzer.d.ts.map +1 -0
- package/dist/learning/analyzer.js +213 -0
- package/dist/learning/analyzer.js.map +1 -0
- package/dist/learning/effectiveness.d.ts +158 -0
- package/dist/learning/effectiveness.d.ts.map +1 -0
- package/dist/learning/effectiveness.js +251 -0
- package/dist/learning/effectiveness.js.map +1 -0
- package/dist/learning/index.d.ts +8 -0
- package/dist/learning/index.d.ts.map +1 -0
- package/dist/learning/index.js +11 -0
- package/dist/learning/index.js.map +1 -0
- package/dist/learning/llm-extractor.d.ts +88 -0
- package/dist/learning/llm-extractor.d.ts.map +1 -0
- package/dist/learning/llm-extractor.js +372 -0
- package/dist/learning/llm-extractor.js.map +1 -0
- package/dist/learning/meta-learner.d.ts +80 -0
- package/dist/learning/meta-learner.d.ts.map +1 -0
- package/dist/learning/meta-learner.js +355 -0
- package/dist/learning/meta-learner.js.map +1 -0
- package/dist/learning/pipeline.d.ts +65 -0
- package/dist/learning/pipeline.d.ts.map +1 -0
- package/dist/learning/pipeline.js +170 -0
- package/dist/learning/pipeline.js.map +1 -0
- package/dist/learning/playbook-extractor.d.ts +113 -0
- package/dist/learning/playbook-extractor.d.ts.map +1 -0
- package/dist/learning/playbook-extractor.js +523 -0
- package/dist/learning/playbook-extractor.js.map +1 -0
- package/dist/learning/usage-inference.d.ts +82 -0
- package/dist/learning/usage-inference.d.ts.map +1 -0
- package/dist/learning/usage-inference.js +261 -0
- package/dist/learning/usage-inference.js.map +1 -0
- package/dist/mcp/index.d.ts +6 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +6 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/playbook-server.d.ts +120 -0
- package/dist/mcp/playbook-server.d.ts.map +1 -0
- package/dist/mcp/playbook-server.js +427 -0
- package/dist/mcp/playbook-server.js.map +1 -0
- package/dist/memory/curated-loader.d.ts +62 -0
- package/dist/memory/curated-loader.d.ts.map +1 -0
- package/dist/memory/curated-loader.js +106 -0
- package/dist/memory/curated-loader.js.map +1 -0
- package/dist/memory/experience.d.ts +122 -0
- package/dist/memory/experience.d.ts.map +1 -0
- package/dist/memory/experience.js +392 -0
- package/dist/memory/experience.js.map +1 -0
- package/dist/memory/index.d.ts +6 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +9 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/meta.d.ts +90 -0
- package/dist/memory/meta.d.ts.map +1 -0
- package/dist/memory/meta.js +362 -0
- package/dist/memory/meta.js.map +1 -0
- package/dist/memory/playbook.d.ts +133 -0
- package/dist/memory/playbook.d.ts.map +1 -0
- package/dist/memory/playbook.js +357 -0
- package/dist/memory/playbook.js.map +1 -0
- package/dist/memory/system.d.ts +167 -0
- package/dist/memory/system.d.ts.map +1 -0
- package/dist/memory/system.js +383 -0
- package/dist/memory/system.js.map +1 -0
- package/dist/runtime/backends/acp.d.ts +67 -0
- package/dist/runtime/backends/acp.d.ts.map +1 -0
- package/dist/runtime/backends/acp.js +290 -0
- package/dist/runtime/backends/acp.js.map +1 -0
- package/dist/runtime/backends/index.d.ts +5 -0
- package/dist/runtime/backends/index.d.ts.map +1 -0
- package/dist/runtime/backends/index.js +6 -0
- package/dist/runtime/backends/index.js.map +1 -0
- package/dist/runtime/backends/mock.d.ts +67 -0
- package/dist/runtime/backends/mock.d.ts.map +1 -0
- package/dist/runtime/backends/mock.js +153 -0
- package/dist/runtime/backends/mock.js.map +1 -0
- package/dist/runtime/backends/subprocess.d.ts +56 -0
- package/dist/runtime/backends/subprocess.d.ts.map +1 -0
- package/dist/runtime/backends/subprocess.js +260 -0
- package/dist/runtime/backends/subprocess.js.map +1 -0
- package/dist/runtime/flows/learning.d.ts +73 -0
- package/dist/runtime/flows/learning.d.ts.map +1 -0
- package/dist/runtime/flows/learning.js +116 -0
- package/dist/runtime/flows/learning.js.map +1 -0
- package/dist/runtime/flows/validation.d.ts +122 -0
- package/dist/runtime/flows/validation.d.ts.map +1 -0
- package/dist/runtime/flows/validation.js +223 -0
- package/dist/runtime/flows/validation.js.map +1 -0
- package/dist/runtime/index.d.ts +6 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +8 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/manager.d.ts +116 -0
- package/dist/runtime/manager.d.ts.map +1 -0
- package/dist/runtime/manager.js +416 -0
- package/dist/runtime/manager.js.map +1 -0
- package/dist/runtime/types.d.ts +138 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +2 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/search/evaluator.d.ts +102 -0
- package/dist/search/evaluator.d.ts.map +1 -0
- package/dist/search/evaluator.js +352 -0
- package/dist/search/evaluator.js.map +1 -0
- package/dist/search/index.d.ts +7 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +11 -0
- package/dist/search/index.js.map +1 -0
- package/dist/search/refinement-loop.d.ts +73 -0
- package/dist/search/refinement-loop.d.ts.map +1 -0
- package/dist/search/refinement-loop.js +245 -0
- package/dist/search/refinement-loop.js.map +1 -0
- package/dist/search/refinement-types.d.ts +154 -0
- package/dist/search/refinement-types.d.ts.map +1 -0
- package/dist/search/refinement-types.js +99 -0
- package/dist/search/refinement-types.js.map +1 -0
- package/dist/search/router.d.ts +61 -0
- package/dist/search/router.d.ts.map +1 -0
- package/dist/search/router.js +197 -0
- package/dist/search/router.js.map +1 -0
- package/dist/search/solver.d.ts +75 -0
- package/dist/search/solver.d.ts.map +1 -0
- package/dist/search/solver.js +216 -0
- package/dist/search/solver.js.map +1 -0
- package/dist/search/verification-runner.d.ts +125 -0
- package/dist/search/verification-runner.d.ts.map +1 -0
- package/dist/search/verification-runner.js +440 -0
- package/dist/search/verification-runner.js.map +1 -0
- package/dist/surfacing/index.d.ts +2 -0
- package/dist/surfacing/index.d.ts.map +1 -0
- package/dist/surfacing/index.js +2 -0
- package/dist/surfacing/index.js.map +1 -0
- package/dist/surfacing/skill-library.d.ts +158 -0
- package/dist/surfacing/skill-library.d.ts.map +1 -0
- package/dist/surfacing/skill-library.js +429 -0
- package/dist/surfacing/skill-library.js.map +1 -0
- package/dist/types/config.d.ts +1113 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +274 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +14 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/memory.d.ts +339 -0
- package/dist/types/memory.d.ts.map +1 -0
- package/dist/types/memory.js +207 -0
- package/dist/types/memory.js.map +1 -0
- package/dist/types/meta.d.ts +146 -0
- package/dist/types/meta.d.ts.map +1 -0
- package/dist/types/meta.js +51 -0
- package/dist/types/meta.js.map +1 -0
- package/dist/types/outcome.d.ts +42 -0
- package/dist/types/outcome.d.ts.map +1 -0
- package/dist/types/outcome.js +50 -0
- package/dist/types/outcome.js.map +1 -0
- package/dist/types/playbook.d.ts +119 -0
- package/dist/types/playbook.d.ts.map +1 -0
- package/dist/types/playbook.js +71 -0
- package/dist/types/playbook.js.map +1 -0
- package/dist/types/step.d.ts +44 -0
- package/dist/types/step.d.ts.map +1 -0
- package/dist/types/step.js +32 -0
- package/dist/types/step.js.map +1 -0
- package/dist/types/task.d.ts +91 -0
- package/dist/types/task.d.ts.map +1 -0
- package/dist/types/task.js +39 -0
- package/dist/types/task.js.map +1 -0
- package/dist/types/trajectory.d.ts +221 -0
- package/dist/types/trajectory.d.ts.map +1 -0
- package/dist/types/trajectory.js +60 -0
- package/dist/types/trajectory.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/similarity.d.ts +31 -0
- package/dist/utils/similarity.d.ts.map +1 -0
- package/dist/utils/similarity.js +107 -0
- package/dist/utils/similarity.js.map +1 -0
- package/dist/utils/storage.d.ts +106 -0
- package/dist/utils/storage.d.ts.map +1 -0
- package/dist/utils/storage.js +203 -0
- package/dist/utils/storage.js.map +1 -0
- package/dist/utils/validation.d.ts +129 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +171 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +61 -9
- package/scripts/migrate-to-playbooks.ts +307 -0
- package/src/agents/index.ts +14 -0
- package/src/agents/mock-provider.ts +93 -0
- package/src/agents/types.ts +137 -0
- package/src/atlas.ts +560 -0
- package/src/bin/cognitive-core.ts +470 -0
- package/src/embeddings/bm25.ts +337 -0
- package/src/embeddings/index.ts +39 -0
- package/src/embeddings/manager.ts +288 -0
- package/src/embeddings/provider.ts +311 -0
- package/src/embeddings/vector-store.ts +353 -0
- package/src/factory.ts +263 -0
- package/src/index.ts +246 -0
- package/src/learning/analyzer.ts +335 -0
- package/src/learning/effectiveness.ts +428 -0
- package/src/learning/index.ts +58 -0
- package/src/learning/llm-extractor.ts +542 -0
- package/src/learning/meta-learner.ts +516 -0
- package/src/learning/pipeline.ts +244 -0
- package/src/learning/playbook-extractor.ts +702 -0
- package/src/learning/usage-inference.ts +372 -0
- package/src/mcp/index.ts +12 -0
- package/src/mcp/playbook-server.ts +565 -0
- package/src/memory/curated-loader.ts +160 -0
- package/src/memory/experience.ts +515 -0
- package/src/memory/index.ts +27 -0
- package/src/memory/meta.ts +506 -0
- package/src/memory/playbook.ts +493 -0
- package/src/memory/system.ts +551 -0
- package/src/runtime/backends/acp.ts +378 -0
- package/src/runtime/backends/index.ts +24 -0
- package/src/runtime/backends/mock.ts +218 -0
- package/src/runtime/backends/subprocess.ts +356 -0
- package/src/runtime/flows/learning.ts +183 -0
- package/src/runtime/flows/validation.ts +381 -0
- package/src/runtime/index.ts +53 -0
- package/src/runtime/manager.ts +541 -0
- package/src/runtime/types.ts +157 -0
- package/src/search/evaluator.ts +474 -0
- package/src/search/index.ts +59 -0
- package/src/search/refinement-loop.ts +363 -0
- package/src/search/refinement-types.ts +159 -0
- package/src/search/router.ts +261 -0
- package/src/search/solver.ts +303 -0
- package/src/search/verification-runner.ts +570 -0
- package/src/surfacing/index.ts +6 -0
- package/src/surfacing/skill-library.ts +594 -0
- package/src/types/config.ts +333 -0
- package/src/types/index.ts +130 -0
- package/src/types/memory.ts +270 -0
- package/src/types/meta.ts +218 -0
- package/src/types/outcome.ts +66 -0
- package/src/types/playbook.ts +196 -0
- package/src/types/step.ts +40 -0
- package/src/types/task.ts +52 -0
- package/src/types/trajectory.ts +80 -0
- package/src/utils/index.ts +38 -0
- package/src/utils/similarity.ts +139 -0
- package/src/utils/storage.ts +249 -0
- package/src/utils/validation.ts +286 -0
- package/tests/embeddings/bm25.test.ts +130 -0
- package/tests/embeddings/manager.test.ts +205 -0
- package/tests/integration/atlas.test.ts +266 -0
- package/tests/integration/e2e.test.ts +929 -0
- package/tests/learning/analyzer.test.ts +426 -0
- package/tests/learning/effectiveness.test.ts +542 -0
- package/tests/learning/pipeline.test.ts +176 -0
- package/tests/learning/playbook-extractor-provenance.test.ts +114 -0
- package/tests/learning/usage-inference.test.ts +254 -0
- package/tests/mcp/playbook-server.test.ts +252 -0
- package/tests/memory/experience.test.ts +198 -0
- package/tests/memory/playbook.test.ts +338 -0
- package/tests/memory/provenance.test.ts +639 -0
- package/tests/memory/system.test.ts +325 -0
- package/tests/runtime/agent-manager.test.ts +512 -0
- package/tests/runtime/mock-backend.test.ts +248 -0
- package/tests/search/refinement-loop.test.ts +468 -0
- package/tests/search/refinement.test.ts +267 -0
- package/tests/search/router.test.ts +427 -0
- package/tests/surfacing/skill-library.test.ts +292 -0
- package/tests/types/outcome.test.ts +147 -0
- package/tests/types/step.test.ts +133 -0
- package/tests/types/task.test.ts +158 -0
- package/tests/types/trajectory.test.ts +253 -0
- package/tests/utils/similarity.test.ts +188 -0
- package/tests/utils/validation.test.ts +252 -0
- package/tsconfig.json +25 -0
- package/vitest.config.ts +22 -0
- package/index.d.ts +0 -4
- package/index.js +0 -4
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Meta Learner
|
|
3
|
+
* Learns about learning - analyzes trajectories to improve routing and retrieval
|
|
4
|
+
*/
|
|
5
|
+
import { createMetaObservation, createMetaStrategy } from '../types/index.js';
|
|
6
|
+
const DEFAULT_CONFIG = {
|
|
7
|
+
minObservationsForStrategies: 10,
|
|
8
|
+
strategyGenerationInterval: 10,
|
|
9
|
+
helpfulRetrievalThreshold: 0.7,
|
|
10
|
+
tacticOverlapThreshold: 2,
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Meta Learner
|
|
14
|
+
* Generates meta-observations and learns meta-strategies
|
|
15
|
+
*/
|
|
16
|
+
export class MetaLearner {
|
|
17
|
+
meta;
|
|
18
|
+
config;
|
|
19
|
+
observationCount = 0;
|
|
20
|
+
constructor(meta, config) {
|
|
21
|
+
this.meta = meta;
|
|
22
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Generate reflection from completed trajectory
|
|
26
|
+
*/
|
|
27
|
+
async generateReflection(trajectory, routing, playbooksUsed) {
|
|
28
|
+
// Analyze the trajectory
|
|
29
|
+
const wasSuccessful = trajectory.outcome.success;
|
|
30
|
+
const actualEffort = trajectory.llmCalls ?? trajectory.steps.length;
|
|
31
|
+
// Determine retrieval quality
|
|
32
|
+
const retrievalQuality = this.assessRetrievalQuality(trajectory, playbooksUsed, wasSuccessful);
|
|
33
|
+
// Determine outcome quality
|
|
34
|
+
const outcomeQuality = this.assessOutcomeQuality(trajectory, actualEffort, routing.estimatedBudget);
|
|
35
|
+
// Analyze execution path
|
|
36
|
+
const execution = this.analyzeExecution(trajectory);
|
|
37
|
+
// Generate lessons learned
|
|
38
|
+
const lessons = this.generateLessons(trajectory, routing, playbooksUsed, wasSuccessful);
|
|
39
|
+
const observation = createMetaObservation({
|
|
40
|
+
trajectoryId: trajectory.id,
|
|
41
|
+
routing: {
|
|
42
|
+
decision: routing.strategy,
|
|
43
|
+
confidence: routing.confidence,
|
|
44
|
+
reasoning: routing.reasoning,
|
|
45
|
+
},
|
|
46
|
+
memoryUsage: {
|
|
47
|
+
experiencesRetrieved: 0, // TODO: Track from memory query
|
|
48
|
+
playbooksApplied: playbooksUsed.map((p) => p.playbook.id),
|
|
49
|
+
retrievalQuality,
|
|
50
|
+
},
|
|
51
|
+
execution,
|
|
52
|
+
outcome: {
|
|
53
|
+
success: wasSuccessful,
|
|
54
|
+
quality: outcomeQuality,
|
|
55
|
+
effortActual: actualEffort,
|
|
56
|
+
effortEstimate: routing.estimatedBudget,
|
|
57
|
+
},
|
|
58
|
+
lessons,
|
|
59
|
+
});
|
|
60
|
+
// Record the observation
|
|
61
|
+
await this.meta.recordObservation(observation);
|
|
62
|
+
this.observationCount++;
|
|
63
|
+
// Periodically generate new meta-strategies
|
|
64
|
+
if (this.observationCount % this.config.strategyGenerationInterval === 0) {
|
|
65
|
+
await this.learn();
|
|
66
|
+
}
|
|
67
|
+
return observation;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Analyze accumulated observations and generate meta-strategies
|
|
71
|
+
*/
|
|
72
|
+
async learn() {
|
|
73
|
+
const stats = await this.meta.getStats();
|
|
74
|
+
if (stats.totalObservations < this.config.minObservationsForStrategies) {
|
|
75
|
+
return [];
|
|
76
|
+
}
|
|
77
|
+
// Generate new meta-strategies based on patterns
|
|
78
|
+
const newStrategies = await this.meta.generateMetaStrategies();
|
|
79
|
+
// Additional strategy generation based on analysis
|
|
80
|
+
const routingAnalysis = await this.meta.analyzeRoutingEffectiveness();
|
|
81
|
+
const additionalStrategies = this.generateStrategiesFromAnalysis(routingAnalysis);
|
|
82
|
+
// Add and save additional strategies
|
|
83
|
+
for (const strategy of additionalStrategies) {
|
|
84
|
+
const existing = await this.meta.getStrategy(strategy.id);
|
|
85
|
+
if (!existing) {
|
|
86
|
+
await this.meta.addStrategy(strategy);
|
|
87
|
+
newStrategies.push(strategy);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return newStrategies;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Apply meta-strategies to adjust routing
|
|
94
|
+
*/
|
|
95
|
+
async adjustRouting(baseRouting, taskCharacteristics, memoryState) {
|
|
96
|
+
const context = {
|
|
97
|
+
taskCharacteristics,
|
|
98
|
+
memoryState,
|
|
99
|
+
};
|
|
100
|
+
const applicableStrategies = await this.meta.getRoutingAdjustments(context);
|
|
101
|
+
if (applicableStrategies.length === 0) {
|
|
102
|
+
return baseRouting;
|
|
103
|
+
}
|
|
104
|
+
// Apply adjustments
|
|
105
|
+
let adjustedConfidence = baseRouting.confidence;
|
|
106
|
+
let adjustedStrategy = baseRouting.strategy;
|
|
107
|
+
const adjustmentReasons = [];
|
|
108
|
+
for (const strategy of applicableStrategies) {
|
|
109
|
+
// Apply routing bias
|
|
110
|
+
if (strategy.adjustment.routingBias) {
|
|
111
|
+
for (const [decision, bias] of Object.entries(strategy.adjustment.routingBias)) {
|
|
112
|
+
if (decision === baseRouting.strategy) {
|
|
113
|
+
adjustedConfidence += bias;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// Check if another strategy is strongly preferred
|
|
117
|
+
const biases = Object.entries(strategy.adjustment.routingBias);
|
|
118
|
+
for (const [decision, bias] of biases) {
|
|
119
|
+
if (bias > 0.3 &&
|
|
120
|
+
decision !== baseRouting.strategy &&
|
|
121
|
+
baseRouting.confidence < 0.5) {
|
|
122
|
+
adjustedStrategy = decision;
|
|
123
|
+
adjustmentReasons.push(`Meta-strategy '${strategy.name}' suggests ${decision}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Add execution hint to reasoning
|
|
128
|
+
if (strategy.adjustment.executionHint) {
|
|
129
|
+
adjustmentReasons.push(strategy.adjustment.executionHint);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// Clamp confidence
|
|
133
|
+
adjustedConfidence = Math.max(0.1, Math.min(0.95, adjustedConfidence));
|
|
134
|
+
return {
|
|
135
|
+
strategy: adjustedStrategy,
|
|
136
|
+
confidence: adjustedConfidence,
|
|
137
|
+
estimatedBudget: baseRouting.estimatedBudget,
|
|
138
|
+
reasoning: adjustmentReasons.length > 0
|
|
139
|
+
? `${baseRouting.reasoning}. Meta-adjustments: ${adjustmentReasons.join('; ')}`
|
|
140
|
+
: baseRouting.reasoning,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Assess retrieval quality based on trajectory outcome
|
|
145
|
+
*/
|
|
146
|
+
assessRetrievalQuality(trajectory, playbooksUsed, wasSuccessful) {
|
|
147
|
+
if (playbooksUsed.length === 0) {
|
|
148
|
+
return 'neutral';
|
|
149
|
+
}
|
|
150
|
+
// Check if playbook guidance was followed
|
|
151
|
+
const guidanceFollowed = this.checkGuidanceFollowed(trajectory, playbooksUsed);
|
|
152
|
+
if (wasSuccessful && guidanceFollowed) {
|
|
153
|
+
return 'helpful';
|
|
154
|
+
}
|
|
155
|
+
else if (!wasSuccessful && guidanceFollowed) {
|
|
156
|
+
// Followed guidance but still failed - might be misleading
|
|
157
|
+
return 'misleading';
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
return 'neutral';
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Check if playbook guidance was followed in the trajectory
|
|
165
|
+
*/
|
|
166
|
+
checkGuidanceFollowed(trajectory, playbooksUsed) {
|
|
167
|
+
for (const { playbook } of playbooksUsed) {
|
|
168
|
+
const tactics = playbook.guidance.tactics;
|
|
169
|
+
if (tactics.length === 0)
|
|
170
|
+
continue;
|
|
171
|
+
// Check if any tactics were reflected in the steps
|
|
172
|
+
let tacticsFollowed = 0;
|
|
173
|
+
for (const tactic of tactics) {
|
|
174
|
+
const tacticWords = tactic.toLowerCase().split(/\s+/);
|
|
175
|
+
for (const step of trajectory.steps) {
|
|
176
|
+
const actionWords = step.action.toLowerCase().split(/\s+/);
|
|
177
|
+
const overlap = tacticWords.filter((w) => actionWords.includes(w)).length;
|
|
178
|
+
if (overlap >= this.config.tacticOverlapThreshold) {
|
|
179
|
+
tacticsFollowed++;
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
if (tacticsFollowed >= tactics.length * 0.5) {
|
|
185
|
+
return true;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return false;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Assess outcome quality
|
|
192
|
+
*/
|
|
193
|
+
assessOutcomeQuality(trajectory, actualEffort, estimatedEffort) {
|
|
194
|
+
if (!trajectory.outcome.success) {
|
|
195
|
+
return 'poor';
|
|
196
|
+
}
|
|
197
|
+
// Compare actual vs estimated effort
|
|
198
|
+
const effortRatio = actualEffort / estimatedEffort;
|
|
199
|
+
if (effortRatio <= 0.5) {
|
|
200
|
+
return 'excellent'; // Much less effort than expected
|
|
201
|
+
}
|
|
202
|
+
else if (effortRatio <= 1.0) {
|
|
203
|
+
return 'good'; // Within estimate
|
|
204
|
+
}
|
|
205
|
+
else if (effortRatio <= 2.0) {
|
|
206
|
+
return 'acceptable'; // Some overrun
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
return 'poor'; // Significant overrun
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Analyze execution path
|
|
214
|
+
*/
|
|
215
|
+
analyzeExecution(trajectory) {
|
|
216
|
+
const steps = trajectory.steps;
|
|
217
|
+
const toolsUsed = new Set();
|
|
218
|
+
let backtrackingOccurred = false;
|
|
219
|
+
// Collect tools used (extract from action)
|
|
220
|
+
for (const step of steps) {
|
|
221
|
+
// Try to extract tool name from action (e.g., "tool_use: Bash" or just "Bash")
|
|
222
|
+
const toolMatch = step.action.match(/^(?:tool_use:\s*)?(\w+)/);
|
|
223
|
+
if (toolMatch) {
|
|
224
|
+
toolsUsed.add(toolMatch[1]);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
// Check for backtracking (similar actions repeated)
|
|
228
|
+
const actionCounts = new Map();
|
|
229
|
+
for (const step of steps) {
|
|
230
|
+
const normalized = step.action.toLowerCase().slice(0, 50);
|
|
231
|
+
actionCounts.set(normalized, (actionCounts.get(normalized) ?? 0) + 1);
|
|
232
|
+
}
|
|
233
|
+
for (const count of actionCounts.values()) {
|
|
234
|
+
if (count > 2) {
|
|
235
|
+
backtrackingOccurred = true;
|
|
236
|
+
break;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
// Check for decomposition (multiple sub-tasks)
|
|
240
|
+
const decompositionUsed = steps.some((s) => s.thought?.includes('break') ||
|
|
241
|
+
s.thought?.includes('decompose') ||
|
|
242
|
+
s.thought?.includes('step by step') ||
|
|
243
|
+
s.thought?.includes('first,')) ?? false;
|
|
244
|
+
// Estimate refinement iterations (failures followed by retries)
|
|
245
|
+
let refinementIterations = 0;
|
|
246
|
+
for (let i = 0; i < steps.length - 1; i++) {
|
|
247
|
+
if (steps[i].observation?.includes('error') ||
|
|
248
|
+
steps[i].observation?.includes('failed')) {
|
|
249
|
+
if (steps[i + 1]?.thought?.includes('try') || steps[i + 1]?.thought?.includes('fix')) {
|
|
250
|
+
refinementIterations++;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
return {
|
|
255
|
+
decompositionUsed,
|
|
256
|
+
refinementIterations,
|
|
257
|
+
backtrackingOccurred,
|
|
258
|
+
toolsUsed: Array.from(toolsUsed),
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Generate lessons learned
|
|
263
|
+
*/
|
|
264
|
+
generateLessons(trajectory, routing, playbooksUsed, wasSuccessful) {
|
|
265
|
+
const whatWorked = [];
|
|
266
|
+
const whatFailed = [];
|
|
267
|
+
const suggestions = [];
|
|
268
|
+
if (wasSuccessful) {
|
|
269
|
+
whatWorked.push(`${routing.strategy} routing led to success`);
|
|
270
|
+
if (playbooksUsed.length > 0) {
|
|
271
|
+
whatWorked.push(`Playbook guidance was applicable: ${playbooksUsed.map((p) => p.playbook.name).join(', ')}`);
|
|
272
|
+
}
|
|
273
|
+
// Check what steps seemed most effective
|
|
274
|
+
const keySteps = trajectory.steps.filter((s) => !s.observation?.includes('error') && !s.observation?.includes('failed'));
|
|
275
|
+
if (keySteps.length > 0) {
|
|
276
|
+
whatWorked.push(`Effective actions: ${keySteps
|
|
277
|
+
.slice(0, 3)
|
|
278
|
+
.map((s) => s.action.slice(0, 50))
|
|
279
|
+
.join(', ')}`);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
whatFailed.push(`${routing.strategy} routing did not lead to success`);
|
|
284
|
+
// Check what went wrong
|
|
285
|
+
const errorSteps = trajectory.steps.filter((s) => s.observation?.includes('error') || s.observation?.includes('failed'));
|
|
286
|
+
if (errorSteps.length > 0) {
|
|
287
|
+
whatFailed.push(`Errors encountered: ${errorSteps
|
|
288
|
+
.slice(0, 2)
|
|
289
|
+
.map((s) => s.observation?.slice(0, 100))
|
|
290
|
+
.join('; ')}`);
|
|
291
|
+
}
|
|
292
|
+
// Suggestions based on failure
|
|
293
|
+
if (routing.confidence > 0.7) {
|
|
294
|
+
suggestions.push('High confidence did not guarantee success - consider more exploration');
|
|
295
|
+
}
|
|
296
|
+
if (playbooksUsed.length > 0) {
|
|
297
|
+
suggestions.push('Review playbook applicability - guidance may need refinement');
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
suggestions.push('No playbooks were applied - consider extracting patterns from similar tasks');
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
return { whatWorked, whatFailed, suggestions };
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Generate strategies from routing analysis
|
|
307
|
+
*/
|
|
308
|
+
generateStrategiesFromAnalysis(analysis) {
|
|
309
|
+
const strategies = [];
|
|
310
|
+
// Generate strategy based on success rates
|
|
311
|
+
for (const [decision, stats] of Object.entries(analysis.byDecision)) {
|
|
312
|
+
if (stats.total < 5)
|
|
313
|
+
continue;
|
|
314
|
+
const successRate = stats.successful / stats.total;
|
|
315
|
+
if (successRate < 0.4) {
|
|
316
|
+
// This decision often fails
|
|
317
|
+
strategies.push(createMetaStrategy({
|
|
318
|
+
name: `avoid-${decision}-low-success`,
|
|
319
|
+
condition: {
|
|
320
|
+
taskCharacteristics: [],
|
|
321
|
+
memoryState: [`${decision} suggested`],
|
|
322
|
+
},
|
|
323
|
+
adjustment: {
|
|
324
|
+
routingBias: { [decision]: -0.2 },
|
|
325
|
+
retrievalModification: 'expand search',
|
|
326
|
+
executionHint: `Consider alternatives to ${decision}`,
|
|
327
|
+
},
|
|
328
|
+
}));
|
|
329
|
+
}
|
|
330
|
+
else if (successRate > 0.8 && stats.total >= 10) {
|
|
331
|
+
// This decision is highly effective
|
|
332
|
+
strategies.push(createMetaStrategy({
|
|
333
|
+
name: `prefer-${decision}-high-success`,
|
|
334
|
+
condition: {
|
|
335
|
+
taskCharacteristics: [],
|
|
336
|
+
memoryState: [`${decision} applicable`],
|
|
337
|
+
},
|
|
338
|
+
adjustment: {
|
|
339
|
+
routingBias: { [decision]: 0.1 },
|
|
340
|
+
retrievalModification: '',
|
|
341
|
+
executionHint: `${decision} has been effective`,
|
|
342
|
+
},
|
|
343
|
+
}));
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
return strategies;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Create a meta learner
|
|
351
|
+
*/
|
|
352
|
+
export function createMetaLearner(meta, config) {
|
|
353
|
+
return new MetaLearner(meta, config);
|
|
354
|
+
}
|
|
355
|
+
//# sourceMappingURL=meta-learner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta-learner.js","sourceRoot":"","sources":["../../src/learning/meta-learner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { Trajectory, LearningConfig } from '../types/index.js';
|
|
2
|
+
import type { MemorySystem } from '../memory/system.js';
|
|
3
|
+
import { type AnalysisResult } from './analyzer.js';
|
|
4
|
+
/**
|
|
5
|
+
* Result of processing a single trajectory
|
|
6
|
+
*/
|
|
7
|
+
export interface ProcessResult {
|
|
8
|
+
trajectoryId: string;
|
|
9
|
+
stored: boolean;
|
|
10
|
+
analysis: AnalysisResult;
|
|
11
|
+
abstractable: boolean;
|
|
12
|
+
playbookExtracted: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Result of batch learning
|
|
16
|
+
*/
|
|
17
|
+
export interface BatchResult {
|
|
18
|
+
trajectoriesProcessed: number;
|
|
19
|
+
playbooksExtracted: number;
|
|
20
|
+
experiencesPruned: number;
|
|
21
|
+
successRate: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Learning Pipeline
|
|
25
|
+
* Orchestrates trajectory analysis, playbook extraction, and memory updates
|
|
26
|
+
*/
|
|
27
|
+
export declare class LearningPipeline {
|
|
28
|
+
private analyzer;
|
|
29
|
+
private playbookExtractor;
|
|
30
|
+
private memory;
|
|
31
|
+
private config;
|
|
32
|
+
private accumulated;
|
|
33
|
+
private accumulatedAnalyses;
|
|
34
|
+
private lastBatchTime;
|
|
35
|
+
constructor(memory: MemorySystem, config?: Partial<LearningConfig>);
|
|
36
|
+
/**
|
|
37
|
+
* Process a single trajectory
|
|
38
|
+
*/
|
|
39
|
+
processTrajectory(trajectory: Trajectory): Promise<ProcessResult>;
|
|
40
|
+
/**
|
|
41
|
+
* Check if batch learning should run
|
|
42
|
+
*/
|
|
43
|
+
shouldRunBatch(): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Run batch learning on accumulated trajectories
|
|
46
|
+
*/
|
|
47
|
+
runBatchLearning(): Promise<BatchResult>;
|
|
48
|
+
/**
|
|
49
|
+
* Get accumulated trajectory count
|
|
50
|
+
*/
|
|
51
|
+
getAccumulatedCount(): number;
|
|
52
|
+
/**
|
|
53
|
+
* Clear accumulated trajectories
|
|
54
|
+
*/
|
|
55
|
+
clearAccumulated(): void;
|
|
56
|
+
/**
|
|
57
|
+
* Update configuration
|
|
58
|
+
*/
|
|
59
|
+
updateConfig(config: Partial<LearningConfig>): void;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Create a learning pipeline
|
|
63
|
+
*/
|
|
64
|
+
export declare function createLearningPipeline(memory: MemorySystem, config?: Partial<LearningConfig>): LearningPipeline;
|
|
65
|
+
//# sourceMappingURL=pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/learning/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AAMvB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,cAAc,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAiB;IAG/B,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,mBAAmB,CAAwB;IACnD,OAAO,CAAC,aAAa,CAAqB;gBAE9B,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAoBlE;;OAEG;IACG,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IAoBvE;;OAEG;IACH,cAAc,IAAI,OAAO;IA6BzB;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC;IAgF9C;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAKxB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;CAMpD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,YAAY,EACpB,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAC/B,gBAAgB,CAElB"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { createAnalyzer, } from './analyzer.js';
|
|
2
|
+
import { createPlaybookExtractor, } from './playbook-extractor.js';
|
|
3
|
+
/**
|
|
4
|
+
* Learning Pipeline
|
|
5
|
+
* Orchestrates trajectory analysis, playbook extraction, and memory updates
|
|
6
|
+
*/
|
|
7
|
+
export class LearningPipeline {
|
|
8
|
+
analyzer;
|
|
9
|
+
playbookExtractor;
|
|
10
|
+
memory;
|
|
11
|
+
config;
|
|
12
|
+
// Accumulated trajectories for batch learning
|
|
13
|
+
accumulated = [];
|
|
14
|
+
accumulatedAnalyses = [];
|
|
15
|
+
lastBatchTime = null;
|
|
16
|
+
constructor(memory, config) {
|
|
17
|
+
this.memory = memory;
|
|
18
|
+
this.config = {
|
|
19
|
+
creditStrategy: config?.creditStrategy ?? 'simple',
|
|
20
|
+
patternExtractor: config?.patternExtractor ?? 'llm',
|
|
21
|
+
minTrajectories: config?.minTrajectories ?? 10,
|
|
22
|
+
minHoursSinceLast: config?.minHoursSinceLast,
|
|
23
|
+
minSuccessRate: config?.minSuccessRate,
|
|
24
|
+
deduplicationThreshold: config?.deduplicationThreshold ?? 0.9,
|
|
25
|
+
maxExperiences: config?.maxExperiences ?? 1000,
|
|
26
|
+
};
|
|
27
|
+
this.analyzer = createAnalyzer(this.config.creditStrategy);
|
|
28
|
+
this.playbookExtractor = createPlaybookExtractor({
|
|
29
|
+
minTrajectories: this.config.minTrajectories,
|
|
30
|
+
mergeThreshold: this.config.deduplicationThreshold,
|
|
31
|
+
minSuccessRate: this.config.minSuccessRate ?? 0.6,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Process a single trajectory
|
|
36
|
+
*/
|
|
37
|
+
async processTrajectory(trajectory) {
|
|
38
|
+
// Store in experience memory
|
|
39
|
+
await this.memory.storeTrajectory(trajectory);
|
|
40
|
+
// Analyze the trajectory
|
|
41
|
+
const analysis = await this.analyzer.analyze(trajectory);
|
|
42
|
+
// Accumulate for batch learning
|
|
43
|
+
this.accumulated.push(trajectory);
|
|
44
|
+
this.accumulatedAnalyses.push(analysis);
|
|
45
|
+
return {
|
|
46
|
+
trajectoryId: trajectory.id,
|
|
47
|
+
stored: true,
|
|
48
|
+
analysis,
|
|
49
|
+
abstractable: analysis.abstractable,
|
|
50
|
+
playbookExtracted: false, // Playbooks are extracted in batch
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Check if batch learning should run
|
|
55
|
+
*/
|
|
56
|
+
shouldRunBatch() {
|
|
57
|
+
// Check minimum trajectories
|
|
58
|
+
if (this.accumulated.length < this.config.minTrajectories) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
// Check time since last batch
|
|
62
|
+
if (this.config.minHoursSinceLast && this.lastBatchTime) {
|
|
63
|
+
const hoursSinceLast = (Date.now() - this.lastBatchTime.getTime()) / (1000 * 60 * 60);
|
|
64
|
+
if (hoursSinceLast < this.config.minHoursSinceLast) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Check success rate
|
|
69
|
+
if (this.config.minSuccessRate) {
|
|
70
|
+
const successCount = this.accumulatedAnalyses.filter((a) => a.success).length;
|
|
71
|
+
const successRate = successCount / this.accumulated.length;
|
|
72
|
+
if (successRate < this.config.minSuccessRate) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Run batch learning on accumulated trajectories
|
|
80
|
+
*/
|
|
81
|
+
async runBatchLearning() {
|
|
82
|
+
if (this.accumulated.length === 0) {
|
|
83
|
+
return {
|
|
84
|
+
trajectoriesProcessed: 0,
|
|
85
|
+
playbooksExtracted: 0,
|
|
86
|
+
experiencesPruned: 0,
|
|
87
|
+
successRate: 0,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
// Extract playbooks from trajectories
|
|
91
|
+
let playbooksAdded = 0;
|
|
92
|
+
const existingPlaybooks = await this.memory.playbooks.getAll();
|
|
93
|
+
const playbookExtraction = await this.playbookExtractor.extract(this.accumulated, this.accumulatedAnalyses, existingPlaybooks);
|
|
94
|
+
// Add new playbooks
|
|
95
|
+
for (const playbook of playbookExtraction.new) {
|
|
96
|
+
const exists = await this.memory.playbooks.exists(playbook.name, this.config.deduplicationThreshold);
|
|
97
|
+
if (!exists) {
|
|
98
|
+
await this.memory.playbooks.add(playbook);
|
|
99
|
+
playbooksAdded++;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Apply updates to existing playbooks
|
|
103
|
+
for (const update of playbookExtraction.updates) {
|
|
104
|
+
if (update.refinement) {
|
|
105
|
+
await this.memory.playbooks.addRefinement(update.id, update.refinement.context, update.refinement.addition, update.refinement.source);
|
|
106
|
+
}
|
|
107
|
+
if (update.newTrigger) {
|
|
108
|
+
const playbook = await this.memory.playbooks.get(update.id);
|
|
109
|
+
if (playbook && !playbook.applicability.triggers.includes(update.newTrigger)) {
|
|
110
|
+
playbook.applicability.triggers.push(update.newTrigger);
|
|
111
|
+
await this.memory.playbooks.add(playbook);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (update.newAntiPattern) {
|
|
115
|
+
const playbook = await this.memory.playbooks.get(update.id);
|
|
116
|
+
if (playbook && !playbook.applicability.antiPatterns.includes(update.newAntiPattern)) {
|
|
117
|
+
playbook.applicability.antiPatterns.push(update.newAntiPattern);
|
|
118
|
+
await this.memory.playbooks.add(playbook);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// Prune experiences if needed
|
|
123
|
+
const pruned = await this.memory.experiences.prune({
|
|
124
|
+
maxCount: this.config.maxExperiences,
|
|
125
|
+
});
|
|
126
|
+
// Calculate success rate
|
|
127
|
+
const successCount = this.accumulatedAnalyses.filter((a) => a.success).length;
|
|
128
|
+
const successRate = successCount / this.accumulated.length;
|
|
129
|
+
// Clear accumulated and update time
|
|
130
|
+
const trajectoriesProcessed = this.accumulated.length;
|
|
131
|
+
this.accumulated = [];
|
|
132
|
+
this.accumulatedAnalyses = [];
|
|
133
|
+
this.lastBatchTime = new Date();
|
|
134
|
+
return {
|
|
135
|
+
trajectoriesProcessed,
|
|
136
|
+
playbooksExtracted: playbooksAdded,
|
|
137
|
+
experiencesPruned: pruned.totalPruned,
|
|
138
|
+
successRate,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Get accumulated trajectory count
|
|
143
|
+
*/
|
|
144
|
+
getAccumulatedCount() {
|
|
145
|
+
return this.accumulated.length;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Clear accumulated trajectories
|
|
149
|
+
*/
|
|
150
|
+
clearAccumulated() {
|
|
151
|
+
this.accumulated = [];
|
|
152
|
+
this.accumulatedAnalyses = [];
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Update configuration
|
|
156
|
+
*/
|
|
157
|
+
updateConfig(config) {
|
|
158
|
+
this.config = { ...this.config, ...config };
|
|
159
|
+
if (config.creditStrategy) {
|
|
160
|
+
this.analyzer.setStrategy(config.creditStrategy);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Create a learning pipeline
|
|
166
|
+
*/
|
|
167
|
+
export function createLearningPipeline(memory, config) {
|
|
168
|
+
return new LearningPipeline(memory, config);
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/learning/pipeline.ts"],"names":[],"mappings":"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"}
|