cognitive-core 0.0.2 → 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 +302 -116
- 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 +30 -453
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +84 -509
- 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 +50 -34
- 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/dist/index.d.mts +0 -466
- package/dist/index.mjs +0 -478
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Learning Effectiveness Tracker
|
|
3
|
+
*
|
|
4
|
+
* Measures whether the learning system is actually improving agent outcomes.
|
|
5
|
+
* Uses post-task reflection annotations rather than A/B replay evaluation.
|
|
6
|
+
*
|
|
7
|
+
* After each trajectory completes, the tracker annotates it with:
|
|
8
|
+
* - What knowledge was surfaced (playbooks, experiences)
|
|
9
|
+
* - Whether the surfaced knowledge was applied (inferred from trajectory)
|
|
10
|
+
* - Whether the outcome improved relative to similar unaided tasks
|
|
11
|
+
*
|
|
12
|
+
* These annotations accumulate into aggregate metrics that answer:
|
|
13
|
+
* "Is learning making agents better over time?"
|
|
14
|
+
*
|
|
15
|
+
* Inspired by Dash's eval framework but adapted for domain-agnostic
|
|
16
|
+
* trajectory learning rather than text-to-SQL.
|
|
17
|
+
*/
|
|
18
|
+
import { JsonStore } from '../utils/storage.js';
|
|
19
|
+
// === TRACKER ===
|
|
20
|
+
/**
|
|
21
|
+
* Tracks learning effectiveness through post-task annotations
|
|
22
|
+
*/
|
|
23
|
+
export class LearningEffectivenessTracker {
|
|
24
|
+
store;
|
|
25
|
+
initialized = false;
|
|
26
|
+
constructor(baseDir) {
|
|
27
|
+
this.store = new JsonStore(baseDir, 'effectiveness', {
|
|
28
|
+
autoSaveInterval: 30000,
|
|
29
|
+
pretty: true,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
async init() {
|
|
33
|
+
if (this.initialized)
|
|
34
|
+
return;
|
|
35
|
+
await this.store.init();
|
|
36
|
+
this.initialized = true;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Annotate a completed trajectory with knowledge usage data.
|
|
40
|
+
* Call this after a task finishes and usage inference has run.
|
|
41
|
+
*/
|
|
42
|
+
async annotate(trajectory, surfacedPlaybooks, surfacedExperienceIds, appliedPlaybookIds) {
|
|
43
|
+
await this.init();
|
|
44
|
+
const errorRecoveries = countErrorRecoveries(trajectory);
|
|
45
|
+
const annotation = {
|
|
46
|
+
id: `ann-${trajectory.id}`,
|
|
47
|
+
trajectoryId: trajectory.id,
|
|
48
|
+
timestamp: new Date(),
|
|
49
|
+
knowledgeSurfaced: {
|
|
50
|
+
playbookIds: surfacedPlaybooks.map((m) => m.playbook.id),
|
|
51
|
+
playbookNames: surfacedPlaybooks.map((m) => m.playbook.name),
|
|
52
|
+
experienceIds: surfacedExperienceIds,
|
|
53
|
+
totalItems: surfacedPlaybooks.length + surfacedExperienceIds.length,
|
|
54
|
+
},
|
|
55
|
+
knowledgeApplied: {
|
|
56
|
+
playbookIdsUsed: appliedPlaybookIds,
|
|
57
|
+
anyKnowledgeUsed: appliedPlaybookIds.length > 0,
|
|
58
|
+
},
|
|
59
|
+
outcome: {
|
|
60
|
+
success: trajectory.outcome.success,
|
|
61
|
+
stepCount: trajectory.steps.length,
|
|
62
|
+
errorRecoveries,
|
|
63
|
+
domainHadPlaybooks: surfacedPlaybooks.length > 0,
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
this.store.set(annotation.id, annotation);
|
|
67
|
+
await this.store.save(annotation.id);
|
|
68
|
+
return annotation;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Add a reflection to an existing annotation.
|
|
72
|
+
* Called after human review or agent self-reflection.
|
|
73
|
+
*/
|
|
74
|
+
async addReflection(annotationId, reflection) {
|
|
75
|
+
await this.init();
|
|
76
|
+
const annotation = this.store.get(annotationId);
|
|
77
|
+
if (!annotation)
|
|
78
|
+
return;
|
|
79
|
+
annotation.reflection = reflection;
|
|
80
|
+
this.store.set(annotationId, annotation);
|
|
81
|
+
await this.store.save(annotationId);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Compute aggregate effectiveness metrics over a time window.
|
|
85
|
+
* Defaults to all time if no window specified.
|
|
86
|
+
*/
|
|
87
|
+
async computeMetrics(options) {
|
|
88
|
+
await this.init();
|
|
89
|
+
let annotations = this.store.values();
|
|
90
|
+
// Filter by time window
|
|
91
|
+
if (options?.since) {
|
|
92
|
+
const since = options.since.getTime();
|
|
93
|
+
annotations = annotations.filter((a) => new Date(a.timestamp).getTime() >= since);
|
|
94
|
+
}
|
|
95
|
+
if (options?.until) {
|
|
96
|
+
const until = options.until.getTime();
|
|
97
|
+
annotations = annotations.filter((a) => new Date(a.timestamp).getTime() <= until);
|
|
98
|
+
}
|
|
99
|
+
const guided = annotations.filter((a) => a.knowledgeSurfaced.totalItems > 0);
|
|
100
|
+
const unguided = annotations.filter((a) => a.knowledgeSurfaced.totalItems === 0);
|
|
101
|
+
const guidedSuccesses = guided.filter((a) => a.outcome.success);
|
|
102
|
+
const unguidedSuccesses = unguided.filter((a) => a.outcome.success);
|
|
103
|
+
const guidedSuccessRate = guided.length > 0
|
|
104
|
+
? guidedSuccesses.length / guided.length
|
|
105
|
+
: 0;
|
|
106
|
+
const unguidedSuccessRate = unguided.length > 0
|
|
107
|
+
? unguidedSuccesses.length / unguided.length
|
|
108
|
+
: 0;
|
|
109
|
+
const guidedAvgSteps = guided.length > 0
|
|
110
|
+
? guided.reduce((sum, a) => sum + a.outcome.stepCount, 0) / guided.length
|
|
111
|
+
: 0;
|
|
112
|
+
const unguidedAvgSteps = unguided.length > 0
|
|
113
|
+
? unguided.reduce((sum, a) => sum + a.outcome.stepCount, 0) / unguided.length
|
|
114
|
+
: 0;
|
|
115
|
+
const applied = annotations.filter((a) => a.knowledgeApplied.anyKnowledgeUsed);
|
|
116
|
+
const appliedSuccesses = applied.filter((a) => a.outcome.success);
|
|
117
|
+
const knowledgeApplicationRate = guided.length > 0
|
|
118
|
+
? applied.length / guided.length
|
|
119
|
+
: 0;
|
|
120
|
+
const appliedKnowledgeSuccessRate = applied.length > 0
|
|
121
|
+
? appliedSuccesses.length / applied.length
|
|
122
|
+
: 0;
|
|
123
|
+
const guidedAvgErrors = guided.length > 0
|
|
124
|
+
? guided.reduce((sum, a) => sum + a.outcome.errorRecoveries, 0) / guided.length
|
|
125
|
+
: 0;
|
|
126
|
+
const unguidedAvgErrors = unguided.length > 0
|
|
127
|
+
? unguided.reduce((sum, a) => sum + a.outcome.errorRecoveries, 0) / unguided.length
|
|
128
|
+
: 0;
|
|
129
|
+
// Per-playbook effectiveness
|
|
130
|
+
const playbookEffectiveness = this.computePlaybookEffectiveness(annotations);
|
|
131
|
+
return {
|
|
132
|
+
totalTasks: annotations.length,
|
|
133
|
+
guidedTasks: guided.length,
|
|
134
|
+
unguidedTasks: unguided.length,
|
|
135
|
+
guidedSuccessRate,
|
|
136
|
+
unguidedSuccessRate,
|
|
137
|
+
successRateDelta: guidedSuccessRate - unguidedSuccessRate,
|
|
138
|
+
guidedAvgSteps,
|
|
139
|
+
unguidedAvgSteps,
|
|
140
|
+
stepCountDelta: guidedAvgSteps - unguidedAvgSteps,
|
|
141
|
+
knowledgeApplicationRate,
|
|
142
|
+
appliedKnowledgeSuccessRate,
|
|
143
|
+
guidedAvgErrorRecoveries: guidedAvgErrors,
|
|
144
|
+
unguidedAvgErrorRecoveries: unguidedAvgErrors,
|
|
145
|
+
playbookEffectiveness,
|
|
146
|
+
windowStart: options?.since ?? new Date(0),
|
|
147
|
+
windowEnd: options?.until ?? new Date(),
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Get all annotations (for export/inspection)
|
|
152
|
+
*/
|
|
153
|
+
async getAll() {
|
|
154
|
+
await this.init();
|
|
155
|
+
return this.store.values();
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Get annotation by trajectory ID
|
|
159
|
+
*/
|
|
160
|
+
async getByTrajectoryId(trajectoryId) {
|
|
161
|
+
await this.init();
|
|
162
|
+
return this.store.values().find((a) => a.trajectoryId === trajectoryId);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Get annotation count
|
|
166
|
+
*/
|
|
167
|
+
async count() {
|
|
168
|
+
await this.init();
|
|
169
|
+
return this.store.size();
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Close the store
|
|
173
|
+
*/
|
|
174
|
+
async close() {
|
|
175
|
+
await this.store.close();
|
|
176
|
+
}
|
|
177
|
+
// === PRIVATE ===
|
|
178
|
+
computePlaybookEffectiveness(annotations) {
|
|
179
|
+
const playbookStats = new Map();
|
|
180
|
+
for (const ann of annotations) {
|
|
181
|
+
// Track surfaced
|
|
182
|
+
for (let i = 0; i < ann.knowledgeSurfaced.playbookIds.length; i++) {
|
|
183
|
+
const id = ann.knowledgeSurfaced.playbookIds[i];
|
|
184
|
+
const name = ann.knowledgeSurfaced.playbookNames[i] ?? id;
|
|
185
|
+
if (!playbookStats.has(id)) {
|
|
186
|
+
playbookStats.set(id, {
|
|
187
|
+
name,
|
|
188
|
+
surfaced: 0,
|
|
189
|
+
applied: 0,
|
|
190
|
+
appliedSuccesses: 0,
|
|
191
|
+
appliedStepSum: 0,
|
|
192
|
+
relevantCount: 0,
|
|
193
|
+
assessedCount: 0,
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
const stats = playbookStats.get(id);
|
|
197
|
+
stats.surfaced++;
|
|
198
|
+
const wasApplied = ann.knowledgeApplied.playbookIdsUsed.includes(id);
|
|
199
|
+
if (wasApplied) {
|
|
200
|
+
stats.applied++;
|
|
201
|
+
if (ann.outcome.success)
|
|
202
|
+
stats.appliedSuccesses++;
|
|
203
|
+
stats.appliedStepSum += ann.outcome.stepCount;
|
|
204
|
+
}
|
|
205
|
+
if (ann.reflection) {
|
|
206
|
+
stats.assessedCount++;
|
|
207
|
+
if (ann.reflection.knowledgeRelevance === 'helpful') {
|
|
208
|
+
stats.relevantCount++;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return Array.from(playbookStats.entries())
|
|
214
|
+
.map(([id, stats]) => ({
|
|
215
|
+
playbookId: id,
|
|
216
|
+
playbookName: stats.name,
|
|
217
|
+
surfacedCount: stats.surfaced,
|
|
218
|
+
appliedCount: stats.applied,
|
|
219
|
+
appliedSuccessRate: stats.applied > 0 ? stats.appliedSuccesses / stats.applied : 0,
|
|
220
|
+
appliedAvgSteps: stats.applied > 0 ? stats.appliedStepSum / stats.applied : 0,
|
|
221
|
+
relevanceRate: stats.assessedCount > 0 ? stats.relevantCount / stats.assessedCount : 0,
|
|
222
|
+
}))
|
|
223
|
+
.sort((a, b) => b.surfacedCount - a.surfacedCount);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// === HELPERS ===
|
|
227
|
+
/**
|
|
228
|
+
* Count error-recovery cycles in a trajectory.
|
|
229
|
+
* An error recovery is when a step has an error observation
|
|
230
|
+
* followed by a subsequent step that doesn't.
|
|
231
|
+
*/
|
|
232
|
+
function countErrorRecoveries(trajectory) {
|
|
233
|
+
let recoveries = 0;
|
|
234
|
+
for (let i = 0; i < trajectory.steps.length - 1; i++) {
|
|
235
|
+
const current = trajectory.steps[i];
|
|
236
|
+
const next = trajectory.steps[i + 1];
|
|
237
|
+
const hasError = current.observation?.toLowerCase().includes('error');
|
|
238
|
+
const nextOk = !next.observation?.toLowerCase().includes('error');
|
|
239
|
+
if (hasError && nextOk) {
|
|
240
|
+
recoveries++;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return recoveries;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Create a learning effectiveness tracker
|
|
247
|
+
*/
|
|
248
|
+
export function createEffectivenessTracker(baseDir) {
|
|
249
|
+
return new LearningEffectivenessTracker(baseDir);
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=effectiveness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effectiveness.js","sourceRoot":"","sources":["../../src/learning/effectiveness.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { TrajectoryAnalyzer, createAnalyzer, simpleCreditAssignment, outcomeCreditAssignment, getCreditAssignmentFn, type AnalysisResult, type ErrorPattern, type TrainingExample, type CreditAssignmentFn, type AnalyzerConfig, } from './analyzer.js';
|
|
2
|
+
export { LearningPipeline, createLearningPipeline, type ProcessResult, type BatchResult, } from './pipeline.js';
|
|
3
|
+
export { PlaybookExtractor, createPlaybookExtractor, type ExtractedPlaybooks, type PlaybookUpdate, type PlaybookExtractorConfig, } from './playbook-extractor.js';
|
|
4
|
+
export { MetaLearner, createMetaLearner, type MetaLearnerConfig, } from './meta-learner.js';
|
|
5
|
+
export { PlaybookUsageInference, createUsageInference, type PlaybookUsageResult, type UsageInferenceConfig, } from './usage-inference.js';
|
|
6
|
+
export { LLMPlaybookExtractor, createLLMExtractor, type LLMExtractorConfig, type LLMExtractionResult, } from './llm-extractor.js';
|
|
7
|
+
export { LearningEffectivenessTracker, createEffectivenessTracker, type TaskAnnotation, type EffectivenessMetrics, type PlaybookEffectivenessEntry, } from './effectiveness.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/learning/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,KAAK,iBAAiB,GACvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,GAChC,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { TrajectoryAnalyzer, createAnalyzer, simpleCreditAssignment, outcomeCreditAssignment, getCreditAssignmentFn, } from './analyzer.js';
|
|
2
|
+
export { LearningPipeline, createLearningPipeline, } from './pipeline.js';
|
|
3
|
+
// Playbook-based learning
|
|
4
|
+
export { PlaybookExtractor, createPlaybookExtractor, } from './playbook-extractor.js';
|
|
5
|
+
export { MetaLearner, createMetaLearner, } from './meta-learner.js';
|
|
6
|
+
export { PlaybookUsageInference, createUsageInference, } from './usage-inference.js';
|
|
7
|
+
// LLM-based extraction
|
|
8
|
+
export { LLMPlaybookExtractor, createLLMExtractor, } from './llm-extractor.js';
|
|
9
|
+
// Effectiveness tracking
|
|
10
|
+
export { LearningEffectivenessTracker, createEffectivenessTracker, } from './effectiveness.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/learning/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,GAMtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,GAGvB,MAAM,eAAe,CAAC;AAEvB,0BAA0B;AAC1B,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GAIxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,WAAW,EACX,iBAAiB,GAElB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,sBAAsB,EACtB,oBAAoB,GAGrB,MAAM,sBAAsB,CAAC;AAE9B,uBAAuB;AACvB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,GAGnB,MAAM,oBAAoB,CAAC;AAE5B,yBAAyB;AACzB,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,GAI3B,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
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 type { Playbook, Trajectory, Refinement } from '../types/index.js';
|
|
9
|
+
import type { AnalysisResult } from './analyzer.js';
|
|
10
|
+
import type { LLMProvider } from '../agents/types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Configuration for LLM-based extraction
|
|
13
|
+
*/
|
|
14
|
+
export interface LLMExtractorConfig {
|
|
15
|
+
/** Temperature for LLM calls (default: 0.2 for determinism) */
|
|
16
|
+
temperature: number;
|
|
17
|
+
/** Maximum tokens for response */
|
|
18
|
+
maxTokens: number;
|
|
19
|
+
/** Whether to extract from single trajectories (vs only batches) */
|
|
20
|
+
extractFromSingle: boolean;
|
|
21
|
+
/** Minimum complexity for LLM extraction */
|
|
22
|
+
minComplexity: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Result from LLM extraction
|
|
26
|
+
*/
|
|
27
|
+
export interface LLMExtractionResult {
|
|
28
|
+
playbooks: Playbook[];
|
|
29
|
+
refinements: Array<{
|
|
30
|
+
playbookId: string;
|
|
31
|
+
refinement: Refinement;
|
|
32
|
+
}>;
|
|
33
|
+
/** Raw LLM response for debugging */
|
|
34
|
+
rawResponse?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* LLM-Based Playbook Extractor
|
|
38
|
+
*/
|
|
39
|
+
export declare class LLMPlaybookExtractor {
|
|
40
|
+
private provider;
|
|
41
|
+
private config;
|
|
42
|
+
constructor(provider: LLMProvider, config?: Partial<LLMExtractorConfig>);
|
|
43
|
+
/**
|
|
44
|
+
* Extract playbooks from trajectories using LLM
|
|
45
|
+
*/
|
|
46
|
+
extract(trajectories: Trajectory[], analyses: AnalysisResult[], existingPlaybooks?: Playbook[]): Promise<LLMExtractionResult>;
|
|
47
|
+
/**
|
|
48
|
+
* Extract a playbook from a single trajectory
|
|
49
|
+
*/
|
|
50
|
+
private extractFromSingleTrajectory;
|
|
51
|
+
/**
|
|
52
|
+
* Extract playbooks from a batch of trajectories
|
|
53
|
+
*/
|
|
54
|
+
private extractFromBatch;
|
|
55
|
+
/**
|
|
56
|
+
* Build prompt for single trajectory extraction
|
|
57
|
+
*/
|
|
58
|
+
private buildSingleExtractionPrompt;
|
|
59
|
+
/**
|
|
60
|
+
* Build prompt for batch extraction
|
|
61
|
+
*/
|
|
62
|
+
private buildBatchExtractionPrompt;
|
|
63
|
+
/**
|
|
64
|
+
* Parse LLM response into extraction result
|
|
65
|
+
*/
|
|
66
|
+
private parseExtractionResponse;
|
|
67
|
+
/**
|
|
68
|
+
* Create a Playbook from LLM-extracted data
|
|
69
|
+
*/
|
|
70
|
+
private createPlaybookFromLLMData;
|
|
71
|
+
/**
|
|
72
|
+
* Parse complexity string
|
|
73
|
+
*/
|
|
74
|
+
private parseComplexity;
|
|
75
|
+
/**
|
|
76
|
+
* Check if two playbooks are similar
|
|
77
|
+
*/
|
|
78
|
+
private isSimilarPlaybook;
|
|
79
|
+
/**
|
|
80
|
+
* Generate a refinement for an existing playbook based on a new trajectory
|
|
81
|
+
*/
|
|
82
|
+
generateRefinement(playbook: Playbook, trajectory: Trajectory, context: string): Promise<Refinement>;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Create an LLM-based playbook extractor
|
|
86
|
+
*/
|
|
87
|
+
export declare function createLLMExtractor(provider: LLMProvider, config?: Partial<LLMExtractorConfig>): LLMPlaybookExtractor;
|
|
88
|
+
//# sourceMappingURL=llm-extractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-extractor.d.ts","sourceRoot":"","sources":["../../src/learning/llm-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,UAAU,EACX,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,iBAAiB,EAAE,OAAO,CAAC;IAC3B,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAC;CACvB;AASD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,WAAW,EAAE,KAAK,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,UAAU,CAAC;KACxB,CAAC,CAAC;IACH,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,MAAM,CAAqB;gBAEvB,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC;IAKvE;;OAEG;IACG,OAAO,CACX,YAAY,EAAE,UAAU,EAAE,EAC1B,QAAQ,EAAE,cAAc,EAAE,EAC1B,iBAAiB,GAAE,QAAQ,EAAO,GACjC,OAAO,CAAC,mBAAmB,CAAC;IAkE/B;;OAEG;YACW,2BAA2B;IAsBzC;;OAEG;YACW,gBAAgB;IAsB9B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAkEnC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAwDlC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA+D/B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAsCjC;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;OAEG;IACG,kBAAkB,CACtB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,CAAC;CA0DvB;AAoBD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,WAAW,EACrB,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACnC,oBAAoB,CAEtB"}
|