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,372 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM-Based Playbook Extractor
|
|
3
|
+
*
|
|
4
|
+
* Uses language models to generate higher-quality playbooks
|
|
5
|
+
* from trajectories. Complements the pattern-based extractor
|
|
6
|
+
* with deeper semantic analysis.
|
|
7
|
+
*/
|
|
8
|
+
import { createPlaybook } from '../types/index.js';
|
|
9
|
+
const DEFAULT_CONFIG = {
|
|
10
|
+
temperature: 0.2,
|
|
11
|
+
maxTokens: 2000,
|
|
12
|
+
extractFromSingle: true,
|
|
13
|
+
minComplexity: 3, // Minimum steps to warrant LLM extraction
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* LLM-Based Playbook Extractor
|
|
17
|
+
*/
|
|
18
|
+
export class LLMPlaybookExtractor {
|
|
19
|
+
provider;
|
|
20
|
+
config;
|
|
21
|
+
constructor(provider, config) {
|
|
22
|
+
this.provider = provider;
|
|
23
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Extract playbooks from trajectories using LLM
|
|
27
|
+
*/
|
|
28
|
+
async extract(trajectories, analyses, existingPlaybooks = []) {
|
|
29
|
+
// Filter to successful, complex enough trajectories
|
|
30
|
+
const candidates = trajectories.filter((t, i) => {
|
|
31
|
+
const analysis = analyses[i];
|
|
32
|
+
return (analysis?.success &&
|
|
33
|
+
analysis.abstractable &&
|
|
34
|
+
t.steps.length >= this.config.minComplexity);
|
|
35
|
+
});
|
|
36
|
+
if (candidates.length === 0) {
|
|
37
|
+
return { playbooks: [], refinements: [] };
|
|
38
|
+
}
|
|
39
|
+
// Extract playbooks from each candidate
|
|
40
|
+
const allResults = {
|
|
41
|
+
playbooks: [],
|
|
42
|
+
refinements: [],
|
|
43
|
+
};
|
|
44
|
+
// Process individually for better quality
|
|
45
|
+
if (this.config.extractFromSingle) {
|
|
46
|
+
for (let i = 0; i < candidates.length; i++) {
|
|
47
|
+
const trajectory = candidates[i];
|
|
48
|
+
const analysis = analyses.find((_, idx) => trajectories[idx] === trajectory);
|
|
49
|
+
if (!analysis)
|
|
50
|
+
continue;
|
|
51
|
+
const result = await this.extractFromSingleTrajectory(trajectory, analysis, existingPlaybooks);
|
|
52
|
+
allResults.playbooks.push(...result.playbooks);
|
|
53
|
+
allResults.refinements.push(...result.refinements);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Also do batch extraction if we have multiple
|
|
57
|
+
if (candidates.length >= 2) {
|
|
58
|
+
const batchResult = await this.extractFromBatch(candidates, analyses.filter((_, i) => candidates.includes(trajectories[i])), existingPlaybooks);
|
|
59
|
+
// Merge with individual results (avoid duplicates)
|
|
60
|
+
for (const playbook of batchResult.playbooks) {
|
|
61
|
+
const isDuplicate = allResults.playbooks.some((p) => this.isSimilarPlaybook(p, playbook));
|
|
62
|
+
if (!isDuplicate) {
|
|
63
|
+
allResults.playbooks.push(playbook);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
allResults.refinements.push(...batchResult.refinements);
|
|
67
|
+
}
|
|
68
|
+
return allResults;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Extract a playbook from a single trajectory
|
|
72
|
+
*/
|
|
73
|
+
async extractFromSingleTrajectory(trajectory, analysis, existingPlaybooks) {
|
|
74
|
+
const prompt = this.buildSingleExtractionPrompt(trajectory, analysis, existingPlaybooks);
|
|
75
|
+
const response = await this.provider.complete([{ role: 'user', content: prompt }], {
|
|
76
|
+
temperature: this.config.temperature,
|
|
77
|
+
maxTokens: this.config.maxTokens,
|
|
78
|
+
});
|
|
79
|
+
return this.parseExtractionResponse(response, trajectory);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Extract playbooks from a batch of trajectories
|
|
83
|
+
*/
|
|
84
|
+
async extractFromBatch(trajectories, analyses, existingPlaybooks) {
|
|
85
|
+
const prompt = this.buildBatchExtractionPrompt(trajectories, analyses, existingPlaybooks);
|
|
86
|
+
const response = await this.provider.complete([{ role: 'user', content: prompt }], {
|
|
87
|
+
temperature: this.config.temperature,
|
|
88
|
+
maxTokens: this.config.maxTokens * 2,
|
|
89
|
+
});
|
|
90
|
+
return this.parseExtractionResponse(response);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Build prompt for single trajectory extraction
|
|
94
|
+
*/
|
|
95
|
+
buildSingleExtractionPrompt(trajectory, analysis, existingPlaybooks) {
|
|
96
|
+
const keyStepsDesc = analysis.keySteps
|
|
97
|
+
.map((idx) => {
|
|
98
|
+
const step = trajectory.steps[idx];
|
|
99
|
+
return step
|
|
100
|
+
? ` - Step ${idx + 1}: ${step.action}${step.thought ? ` (reasoning: ${step.thought})` : ''}`
|
|
101
|
+
: '';
|
|
102
|
+
})
|
|
103
|
+
.filter(Boolean)
|
|
104
|
+
.join('\n');
|
|
105
|
+
const existingPlaybookNames = existingPlaybooks
|
|
106
|
+
.map((p) => `- ${p.name}: ${p.guidance.strategy.slice(0, 100)}`)
|
|
107
|
+
.slice(0, 5)
|
|
108
|
+
.join('\n');
|
|
109
|
+
return `Analyze this successful problem-solving trajectory and extract a reusable playbook.
|
|
110
|
+
|
|
111
|
+
## Task
|
|
112
|
+
${trajectory.task.description}
|
|
113
|
+
Domain: ${trajectory.task.domain}
|
|
114
|
+
|
|
115
|
+
## Solution Steps
|
|
116
|
+
${trajectory.steps.map((s, i) => `${i + 1}. ${s.action}${s.observation ? `\n Observation: ${s.observation.slice(0, 100)}` : ''}`).join('\n')}
|
|
117
|
+
|
|
118
|
+
## Key Steps (most important for success)
|
|
119
|
+
${keyStepsDesc}
|
|
120
|
+
|
|
121
|
+
## Outcome
|
|
122
|
+
${trajectory.outcome.success ? 'SUCCESS' : 'FAILURE'}: ${trajectory.outcome.solution ?? trajectory.outcome.errorInfo ?? 'No details'}
|
|
123
|
+
|
|
124
|
+
${existingPlaybooks.length > 0 ? `## Existing Playbooks (avoid duplicates)
|
|
125
|
+
${existingPlaybookNames}` : ''}
|
|
126
|
+
|
|
127
|
+
## Instructions
|
|
128
|
+
Extract a reusable playbook that captures the essential approach. Focus on:
|
|
129
|
+
1. What situations trigger this approach
|
|
130
|
+
2. The core strategy/pattern used
|
|
131
|
+
3. Key tactical steps
|
|
132
|
+
4. Success/failure indicators
|
|
133
|
+
|
|
134
|
+
Respond in JSON format:
|
|
135
|
+
{
|
|
136
|
+
"playbook": {
|
|
137
|
+
"name": "kebab-case-name",
|
|
138
|
+
"situations": ["when X happens", "for Y type problems"],
|
|
139
|
+
"triggers": ["error messages", "signals that trigger this"],
|
|
140
|
+
"antiPatterns": ["when NOT to use this"],
|
|
141
|
+
"strategy": "High-level approach description",
|
|
142
|
+
"tactics": ["specific technique 1", "specific technique 2"],
|
|
143
|
+
"steps": ["step 1", "step 2", "step 3"],
|
|
144
|
+
"successIndicators": ["how to know it worked"],
|
|
145
|
+
"failureIndicators": ["how to know it failed"],
|
|
146
|
+
"complexity": "simple|moderate|complex",
|
|
147
|
+
"estimatedEffort": 5
|
|
148
|
+
},
|
|
149
|
+
"isRefinementOf": null
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
If this is better suited as a refinement to an existing playbook, set isRefinementOf to the playbook name and include only the refinement details.`;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Build prompt for batch extraction
|
|
156
|
+
*/
|
|
157
|
+
buildBatchExtractionPrompt(trajectories, analyses, existingPlaybooks) {
|
|
158
|
+
const trajectorySummaries = trajectories
|
|
159
|
+
.map((t, i) => {
|
|
160
|
+
const analysis = analyses[i];
|
|
161
|
+
const keySteps = analysis?.keySteps ?? [];
|
|
162
|
+
return `### Trajectory ${i + 1}
|
|
163
|
+
Task: ${t.task.description}
|
|
164
|
+
Domain: ${t.task.domain}
|
|
165
|
+
Steps: ${t.steps.length}
|
|
166
|
+
Key steps: ${keySteps.map((idx) => t.steps[idx]?.action ?? '').join(' → ')}
|
|
167
|
+
Outcome: ${t.outcome.success ? 'SUCCESS' : 'FAILURE'}`;
|
|
168
|
+
})
|
|
169
|
+
.join('\n\n');
|
|
170
|
+
const existingPlaybookNames = existingPlaybooks
|
|
171
|
+
.map((p) => `- ${p.name}`)
|
|
172
|
+
.slice(0, 10)
|
|
173
|
+
.join('\n');
|
|
174
|
+
return `Analyze these successful trajectories and identify common patterns that can be extracted as reusable playbooks.
|
|
175
|
+
|
|
176
|
+
## Trajectories
|
|
177
|
+
${trajectorySummaries}
|
|
178
|
+
|
|
179
|
+
${existingPlaybooks.length > 0 ? `## Existing Playbooks (avoid duplicates)
|
|
180
|
+
${existingPlaybookNames}` : ''}
|
|
181
|
+
|
|
182
|
+
## Instructions
|
|
183
|
+
Identify patterns that appear across multiple trajectories and extract them as playbooks.
|
|
184
|
+
Focus on generalizable approaches, not task-specific details.
|
|
185
|
+
|
|
186
|
+
Respond in JSON format:
|
|
187
|
+
{
|
|
188
|
+
"playbooks": [
|
|
189
|
+
{
|
|
190
|
+
"name": "kebab-case-name",
|
|
191
|
+
"situations": ["when X happens"],
|
|
192
|
+
"triggers": [],
|
|
193
|
+
"antiPatterns": [],
|
|
194
|
+
"strategy": "Description",
|
|
195
|
+
"tactics": ["technique 1"],
|
|
196
|
+
"steps": ["step 1", "step 2"],
|
|
197
|
+
"successIndicators": ["indicator"],
|
|
198
|
+
"failureIndicators": ["indicator"],
|
|
199
|
+
"complexity": "simple|moderate|complex",
|
|
200
|
+
"estimatedEffort": 5,
|
|
201
|
+
"sourceTrajectories": [1, 2]
|
|
202
|
+
}
|
|
203
|
+
]
|
|
204
|
+
}`;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Parse LLM response into extraction result
|
|
208
|
+
*/
|
|
209
|
+
parseExtractionResponse(response, sourceTrajectory) {
|
|
210
|
+
const result = {
|
|
211
|
+
playbooks: [],
|
|
212
|
+
refinements: [],
|
|
213
|
+
rawResponse: response,
|
|
214
|
+
};
|
|
215
|
+
try {
|
|
216
|
+
// Extract JSON from response
|
|
217
|
+
const jsonMatch = response.match(/\{[\s\S]*\}/);
|
|
218
|
+
if (!jsonMatch) {
|
|
219
|
+
return result;
|
|
220
|
+
}
|
|
221
|
+
const parsed = JSON.parse(jsonMatch[0]);
|
|
222
|
+
// Handle single playbook response
|
|
223
|
+
if (parsed.playbook && !parsed.isRefinementOf) {
|
|
224
|
+
const playbook = this.createPlaybookFromLLMData(parsed.playbook, sourceTrajectory);
|
|
225
|
+
result.playbooks.push(playbook);
|
|
226
|
+
}
|
|
227
|
+
// Handle refinement response
|
|
228
|
+
if (parsed.playbook && parsed.isRefinementOf) {
|
|
229
|
+
result.refinements.push({
|
|
230
|
+
playbookId: parsed.isRefinementOf,
|
|
231
|
+
refinement: {
|
|
232
|
+
context: parsed.playbook.situations?.[0] ?? 'General refinement',
|
|
233
|
+
addition: parsed.playbook.strategy ?? '',
|
|
234
|
+
source: 'success',
|
|
235
|
+
addedAt: new Date(),
|
|
236
|
+
},
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
// Handle batch response
|
|
240
|
+
if (parsed.playbooks && Array.isArray(parsed.playbooks)) {
|
|
241
|
+
for (const pbData of parsed.playbooks) {
|
|
242
|
+
const playbook = this.createPlaybookFromLLMData(pbData);
|
|
243
|
+
result.playbooks.push(playbook);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
catch (error) {
|
|
248
|
+
// JSON parsing failed, return empty result
|
|
249
|
+
console.warn('Failed to parse LLM extraction response:', error instanceof Error ? error.message : error);
|
|
250
|
+
}
|
|
251
|
+
return result;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Create a Playbook from LLM-extracted data
|
|
255
|
+
*/
|
|
256
|
+
createPlaybookFromLLMData(data, sourceTrajectory) {
|
|
257
|
+
const domain = sourceTrajectory?.task.domain ?? 'general';
|
|
258
|
+
const sourceIds = sourceTrajectory ? [sourceTrajectory.id] : [];
|
|
259
|
+
return createPlaybook({
|
|
260
|
+
name: data.name ?? `llm-extracted-${Date.now()}`,
|
|
261
|
+
applicability: {
|
|
262
|
+
situations: data.situations ?? [],
|
|
263
|
+
triggers: data.triggers ?? [],
|
|
264
|
+
antiPatterns: data.antiPatterns ?? [],
|
|
265
|
+
domains: [domain],
|
|
266
|
+
},
|
|
267
|
+
guidance: {
|
|
268
|
+
strategy: data.strategy ?? '',
|
|
269
|
+
tactics: data.tactics ?? [],
|
|
270
|
+
steps: data.steps ?? [],
|
|
271
|
+
},
|
|
272
|
+
verification: {
|
|
273
|
+
successIndicators: data.successIndicators ?? [],
|
|
274
|
+
failureIndicators: data.failureIndicators ?? [],
|
|
275
|
+
},
|
|
276
|
+
evolution: {
|
|
277
|
+
version: '1.0.0',
|
|
278
|
+
createdFrom: sourceIds,
|
|
279
|
+
failures: [],
|
|
280
|
+
refinements: [],
|
|
281
|
+
successCount: 1,
|
|
282
|
+
failureCount: 0,
|
|
283
|
+
},
|
|
284
|
+
confidence: 0.6, // Start with moderate confidence for LLM-extracted
|
|
285
|
+
complexity: this.parseComplexity(data.complexity),
|
|
286
|
+
estimatedEffort: data.estimatedEffort ?? 5,
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Parse complexity string
|
|
291
|
+
*/
|
|
292
|
+
parseComplexity(complexity) {
|
|
293
|
+
const normalized = complexity?.toLowerCase();
|
|
294
|
+
if (normalized === 'simple')
|
|
295
|
+
return 'simple';
|
|
296
|
+
if (normalized === 'complex')
|
|
297
|
+
return 'complex';
|
|
298
|
+
return 'moderate';
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Check if two playbooks are similar
|
|
302
|
+
*/
|
|
303
|
+
isSimilarPlaybook(a, b) {
|
|
304
|
+
// Simple name-based check
|
|
305
|
+
if (a.name === b.name)
|
|
306
|
+
return true;
|
|
307
|
+
// Check situation overlap
|
|
308
|
+
const aSituations = new Set(a.applicability.situations);
|
|
309
|
+
const bSituations = b.applicability.situations;
|
|
310
|
+
const overlap = bSituations.filter((s) => aSituations.has(s)).length;
|
|
311
|
+
return overlap >= Math.min(aSituations.size, bSituations.length) * 0.8;
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Generate a refinement for an existing playbook based on a new trajectory
|
|
315
|
+
*/
|
|
316
|
+
async generateRefinement(playbook, trajectory, context) {
|
|
317
|
+
const prompt = `Given this existing playbook and a new trajectory, generate a refinement.
|
|
318
|
+
|
|
319
|
+
## Existing Playbook: ${playbook.name}
|
|
320
|
+
Strategy: ${playbook.guidance.strategy}
|
|
321
|
+
Steps: ${playbook.guidance.steps?.join(' → ') ?? 'None'}
|
|
322
|
+
|
|
323
|
+
## New Trajectory
|
|
324
|
+
Task: ${trajectory.task.description}
|
|
325
|
+
Steps taken: ${trajectory.steps.map((s) => s.action).join(' → ')}
|
|
326
|
+
Outcome: ${trajectory.outcome.success ? 'SUCCESS' : 'FAILURE'}
|
|
327
|
+
|
|
328
|
+
## Context
|
|
329
|
+
${context}
|
|
330
|
+
|
|
331
|
+
## Instructions
|
|
332
|
+
Generate a refinement that captures what's new or different in this trajectory.
|
|
333
|
+
|
|
334
|
+
Respond in JSON:
|
|
335
|
+
{
|
|
336
|
+
"context": "when/where this refinement applies",
|
|
337
|
+
"addition": "what to add/change in the approach"
|
|
338
|
+
}`;
|
|
339
|
+
const response = await this.provider.complete([{ role: 'user', content: prompt }], {
|
|
340
|
+
temperature: this.config.temperature,
|
|
341
|
+
maxTokens: 500,
|
|
342
|
+
});
|
|
343
|
+
try {
|
|
344
|
+
const jsonMatch = response.match(/\{[\s\S]*\}/);
|
|
345
|
+
if (jsonMatch) {
|
|
346
|
+
const parsed = JSON.parse(jsonMatch[0]);
|
|
347
|
+
return {
|
|
348
|
+
context: parsed.context ?? context,
|
|
349
|
+
addition: parsed.addition ?? '',
|
|
350
|
+
source: trajectory.outcome.success ? 'success' : 'failure',
|
|
351
|
+
addedAt: new Date(),
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
catch {
|
|
356
|
+
// Fall back to simple refinement
|
|
357
|
+
}
|
|
358
|
+
return {
|
|
359
|
+
context,
|
|
360
|
+
addition: `Additional approach from trajectory: ${trajectory.steps[0]?.action ?? ''}`,
|
|
361
|
+
source: trajectory.outcome.success ? 'success' : 'failure',
|
|
362
|
+
addedAt: new Date(),
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Create an LLM-based playbook extractor
|
|
368
|
+
*/
|
|
369
|
+
export function createLLMExtractor(provider, config) {
|
|
370
|
+
return new LLMPlaybookExtractor(provider, config);
|
|
371
|
+
}
|
|
372
|
+
//# sourceMappingURL=llm-extractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-extractor.js","sourceRoot":"","sources":["../../src/learning/llm-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Meta Learner
|
|
3
|
+
* Learns about learning - analyzes trajectories to improve routing and retrieval
|
|
4
|
+
*/
|
|
5
|
+
import type { MetaObservation, MetaStrategy, Trajectory, RoutingDecisionType } from '../types/index.js';
|
|
6
|
+
import type { MetaMemory } from '../memory/meta.js';
|
|
7
|
+
import type { PlaybookMatch } from '../memory/playbook.js';
|
|
8
|
+
/**
|
|
9
|
+
* Routing decision from the router
|
|
10
|
+
*/
|
|
11
|
+
export interface RoutingDecision {
|
|
12
|
+
strategy: RoutingDecisionType;
|
|
13
|
+
confidence: number;
|
|
14
|
+
estimatedBudget: number;
|
|
15
|
+
reasoning: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Configuration for meta learner
|
|
19
|
+
*/
|
|
20
|
+
export interface MetaLearnerConfig {
|
|
21
|
+
/** Minimum observations before generating strategies */
|
|
22
|
+
minObservationsForStrategies: number;
|
|
23
|
+
/** How often to run strategy generation (in observations) */
|
|
24
|
+
strategyGenerationInterval: number;
|
|
25
|
+
/** Threshold for considering retrieval helpful */
|
|
26
|
+
helpfulRetrievalThreshold: number;
|
|
27
|
+
/** Minimum tactic word overlap to consider guidance followed (default: 2) */
|
|
28
|
+
tacticOverlapThreshold: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Meta Learner
|
|
32
|
+
* Generates meta-observations and learns meta-strategies
|
|
33
|
+
*/
|
|
34
|
+
export declare class MetaLearner {
|
|
35
|
+
private meta;
|
|
36
|
+
private config;
|
|
37
|
+
private observationCount;
|
|
38
|
+
constructor(meta: MetaMemory, config?: Partial<MetaLearnerConfig>);
|
|
39
|
+
/**
|
|
40
|
+
* Generate reflection from completed trajectory
|
|
41
|
+
*/
|
|
42
|
+
generateReflection(trajectory: Trajectory, routing: RoutingDecision, playbooksUsed: PlaybookMatch[]): Promise<MetaObservation>;
|
|
43
|
+
/**
|
|
44
|
+
* Analyze accumulated observations and generate meta-strategies
|
|
45
|
+
*/
|
|
46
|
+
learn(): Promise<MetaStrategy[]>;
|
|
47
|
+
/**
|
|
48
|
+
* Apply meta-strategies to adjust routing
|
|
49
|
+
*/
|
|
50
|
+
adjustRouting(baseRouting: RoutingDecision, taskCharacteristics: string[], memoryState: string[]): Promise<RoutingDecision>;
|
|
51
|
+
/**
|
|
52
|
+
* Assess retrieval quality based on trajectory outcome
|
|
53
|
+
*/
|
|
54
|
+
private assessRetrievalQuality;
|
|
55
|
+
/**
|
|
56
|
+
* Check if playbook guidance was followed in the trajectory
|
|
57
|
+
*/
|
|
58
|
+
private checkGuidanceFollowed;
|
|
59
|
+
/**
|
|
60
|
+
* Assess outcome quality
|
|
61
|
+
*/
|
|
62
|
+
private assessOutcomeQuality;
|
|
63
|
+
/**
|
|
64
|
+
* Analyze execution path
|
|
65
|
+
*/
|
|
66
|
+
private analyzeExecution;
|
|
67
|
+
/**
|
|
68
|
+
* Generate lessons learned
|
|
69
|
+
*/
|
|
70
|
+
private generateLessons;
|
|
71
|
+
/**
|
|
72
|
+
* Generate strategies from routing analysis
|
|
73
|
+
*/
|
|
74
|
+
private generateStrategiesFromAnalysis;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Create a meta learner
|
|
78
|
+
*/
|
|
79
|
+
export declare function createMetaLearner(meta: MetaMemory, config?: Partial<MetaLearnerConfig>): MetaLearner;
|
|
80
|
+
//# sourceMappingURL=meta-learner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta-learner.d.ts","sourceRoot":"","sources":["../../src/learning/meta-learner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,UAAU,EAEV,mBAAmB,EAIpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,4BAA4B,EAAE,MAAM,CAAC;IACrC,6DAA6D;IAC7D,0BAA0B,EAAE,MAAM,CAAC;IACnC,kDAAkD;IAClD,yBAAyB,EAAE,MAAM,CAAC;IAClC,6EAA6E;IAC7E,sBAAsB,EAAE,MAAM,CAAC;CAChC;AASD;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,gBAAgB,CAAK;gBAEjB,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC;IAKjE;;OAEG;IACG,kBAAkB,CACtB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,eAAe,EACxB,aAAa,EAAE,aAAa,EAAE,GAC7B,OAAO,CAAC,eAAe,CAAC;IA4D3B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IA0BtC;;OAEG;IACG,aAAa,CACjB,WAAW,EAAE,eAAe,EAC5B,mBAAmB,EAAE,MAAM,EAAE,EAC7B,WAAW,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,eAAe,CAAC;IA8D3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsB9B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA8B7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuB5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgExB;;OAEG;IACH,OAAO,CAAC,eAAe;IAoEvB;;OAEG;IACH,OAAO,CAAC,8BAA8B;CAmDvC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAClC,WAAW,CAEb"}
|