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.
Files changed (329) hide show
  1. package/README.md +363 -2
  2. package/SKILL.md +193 -0
  3. package/dist/agents/index.d.ts +3 -0
  4. package/dist/agents/index.d.ts.map +1 -0
  5. package/dist/agents/index.js +5 -0
  6. package/dist/agents/index.js.map +1 -0
  7. package/dist/agents/mock-provider.d.ts +23 -0
  8. package/dist/agents/mock-provider.d.ts.map +1 -0
  9. package/dist/agents/mock-provider.js +71 -0
  10. package/dist/agents/mock-provider.js.map +1 -0
  11. package/dist/agents/types.d.ts +98 -0
  12. package/dist/agents/types.d.ts.map +1 -0
  13. package/dist/agents/types.js +44 -0
  14. package/dist/agents/types.js.map +1 -0
  15. package/dist/atlas.d.ts +196 -0
  16. package/dist/atlas.d.ts.map +1 -0
  17. package/dist/atlas.js +373 -0
  18. package/dist/atlas.js.map +1 -0
  19. package/dist/bin/cognitive-core.d.ts +18 -0
  20. package/dist/bin/cognitive-core.d.ts.map +1 -0
  21. package/dist/bin/cognitive-core.js +419 -0
  22. package/dist/bin/cognitive-core.js.map +1 -0
  23. package/dist/embeddings/bm25.d.ts +104 -0
  24. package/dist/embeddings/bm25.d.ts.map +1 -0
  25. package/dist/embeddings/bm25.js +264 -0
  26. package/dist/embeddings/bm25.js.map +1 -0
  27. package/dist/embeddings/index.d.ts +12 -0
  28. package/dist/embeddings/index.d.ts.map +1 -0
  29. package/dist/embeddings/index.js +16 -0
  30. package/dist/embeddings/index.js.map +1 -0
  31. package/dist/embeddings/manager.d.ts +112 -0
  32. package/dist/embeddings/manager.d.ts.map +1 -0
  33. package/dist/embeddings/manager.js +215 -0
  34. package/dist/embeddings/manager.js.map +1 -0
  35. package/dist/embeddings/provider.d.ts +101 -0
  36. package/dist/embeddings/provider.d.ts.map +1 -0
  37. package/dist/embeddings/provider.js +232 -0
  38. package/dist/embeddings/provider.js.map +1 -0
  39. package/dist/embeddings/vector-store.d.ts +101 -0
  40. package/dist/embeddings/vector-store.d.ts.map +1 -0
  41. package/dist/embeddings/vector-store.js +256 -0
  42. package/dist/embeddings/vector-store.js.map +1 -0
  43. package/dist/factory.d.ts +193 -0
  44. package/dist/factory.d.ts.map +1 -0
  45. package/dist/factory.js +109 -0
  46. package/dist/factory.js.map +1 -0
  47. package/dist/index.d.ts +43 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +84 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/learning/analyzer.d.ts +110 -0
  52. package/dist/learning/analyzer.d.ts.map +1 -0
  53. package/dist/learning/analyzer.js +213 -0
  54. package/dist/learning/analyzer.js.map +1 -0
  55. package/dist/learning/effectiveness.d.ts +158 -0
  56. package/dist/learning/effectiveness.d.ts.map +1 -0
  57. package/dist/learning/effectiveness.js +251 -0
  58. package/dist/learning/effectiveness.js.map +1 -0
  59. package/dist/learning/index.d.ts +8 -0
  60. package/dist/learning/index.d.ts.map +1 -0
  61. package/dist/learning/index.js +11 -0
  62. package/dist/learning/index.js.map +1 -0
  63. package/dist/learning/llm-extractor.d.ts +88 -0
  64. package/dist/learning/llm-extractor.d.ts.map +1 -0
  65. package/dist/learning/llm-extractor.js +372 -0
  66. package/dist/learning/llm-extractor.js.map +1 -0
  67. package/dist/learning/meta-learner.d.ts +80 -0
  68. package/dist/learning/meta-learner.d.ts.map +1 -0
  69. package/dist/learning/meta-learner.js +355 -0
  70. package/dist/learning/meta-learner.js.map +1 -0
  71. package/dist/learning/pipeline.d.ts +65 -0
  72. package/dist/learning/pipeline.d.ts.map +1 -0
  73. package/dist/learning/pipeline.js +170 -0
  74. package/dist/learning/pipeline.js.map +1 -0
  75. package/dist/learning/playbook-extractor.d.ts +113 -0
  76. package/dist/learning/playbook-extractor.d.ts.map +1 -0
  77. package/dist/learning/playbook-extractor.js +523 -0
  78. package/dist/learning/playbook-extractor.js.map +1 -0
  79. package/dist/learning/usage-inference.d.ts +82 -0
  80. package/dist/learning/usage-inference.d.ts.map +1 -0
  81. package/dist/learning/usage-inference.js +261 -0
  82. package/dist/learning/usage-inference.js.map +1 -0
  83. package/dist/mcp/index.d.ts +6 -0
  84. package/dist/mcp/index.d.ts.map +1 -0
  85. package/dist/mcp/index.js +6 -0
  86. package/dist/mcp/index.js.map +1 -0
  87. package/dist/mcp/playbook-server.d.ts +120 -0
  88. package/dist/mcp/playbook-server.d.ts.map +1 -0
  89. package/dist/mcp/playbook-server.js +427 -0
  90. package/dist/mcp/playbook-server.js.map +1 -0
  91. package/dist/memory/curated-loader.d.ts +62 -0
  92. package/dist/memory/curated-loader.d.ts.map +1 -0
  93. package/dist/memory/curated-loader.js +106 -0
  94. package/dist/memory/curated-loader.js.map +1 -0
  95. package/dist/memory/experience.d.ts +122 -0
  96. package/dist/memory/experience.d.ts.map +1 -0
  97. package/dist/memory/experience.js +392 -0
  98. package/dist/memory/experience.js.map +1 -0
  99. package/dist/memory/index.d.ts +6 -0
  100. package/dist/memory/index.d.ts.map +1 -0
  101. package/dist/memory/index.js +9 -0
  102. package/dist/memory/index.js.map +1 -0
  103. package/dist/memory/meta.d.ts +90 -0
  104. package/dist/memory/meta.d.ts.map +1 -0
  105. package/dist/memory/meta.js +362 -0
  106. package/dist/memory/meta.js.map +1 -0
  107. package/dist/memory/playbook.d.ts +133 -0
  108. package/dist/memory/playbook.d.ts.map +1 -0
  109. package/dist/memory/playbook.js +357 -0
  110. package/dist/memory/playbook.js.map +1 -0
  111. package/dist/memory/system.d.ts +167 -0
  112. package/dist/memory/system.d.ts.map +1 -0
  113. package/dist/memory/system.js +383 -0
  114. package/dist/memory/system.js.map +1 -0
  115. package/dist/runtime/backends/acp.d.ts +67 -0
  116. package/dist/runtime/backends/acp.d.ts.map +1 -0
  117. package/dist/runtime/backends/acp.js +290 -0
  118. package/dist/runtime/backends/acp.js.map +1 -0
  119. package/dist/runtime/backends/index.d.ts +5 -0
  120. package/dist/runtime/backends/index.d.ts.map +1 -0
  121. package/dist/runtime/backends/index.js +6 -0
  122. package/dist/runtime/backends/index.js.map +1 -0
  123. package/dist/runtime/backends/mock.d.ts +67 -0
  124. package/dist/runtime/backends/mock.d.ts.map +1 -0
  125. package/dist/runtime/backends/mock.js +153 -0
  126. package/dist/runtime/backends/mock.js.map +1 -0
  127. package/dist/runtime/backends/subprocess.d.ts +56 -0
  128. package/dist/runtime/backends/subprocess.d.ts.map +1 -0
  129. package/dist/runtime/backends/subprocess.js +260 -0
  130. package/dist/runtime/backends/subprocess.js.map +1 -0
  131. package/dist/runtime/flows/learning.d.ts +73 -0
  132. package/dist/runtime/flows/learning.d.ts.map +1 -0
  133. package/dist/runtime/flows/learning.js +116 -0
  134. package/dist/runtime/flows/learning.js.map +1 -0
  135. package/dist/runtime/flows/validation.d.ts +122 -0
  136. package/dist/runtime/flows/validation.d.ts.map +1 -0
  137. package/dist/runtime/flows/validation.js +223 -0
  138. package/dist/runtime/flows/validation.js.map +1 -0
  139. package/dist/runtime/index.d.ts +6 -0
  140. package/dist/runtime/index.d.ts.map +1 -0
  141. package/dist/runtime/index.js +8 -0
  142. package/dist/runtime/index.js.map +1 -0
  143. package/dist/runtime/manager.d.ts +116 -0
  144. package/dist/runtime/manager.d.ts.map +1 -0
  145. package/dist/runtime/manager.js +416 -0
  146. package/dist/runtime/manager.js.map +1 -0
  147. package/dist/runtime/types.d.ts +138 -0
  148. package/dist/runtime/types.d.ts.map +1 -0
  149. package/dist/runtime/types.js +2 -0
  150. package/dist/runtime/types.js.map +1 -0
  151. package/dist/search/evaluator.d.ts +102 -0
  152. package/dist/search/evaluator.d.ts.map +1 -0
  153. package/dist/search/evaluator.js +352 -0
  154. package/dist/search/evaluator.js.map +1 -0
  155. package/dist/search/index.d.ts +7 -0
  156. package/dist/search/index.d.ts.map +1 -0
  157. package/dist/search/index.js +11 -0
  158. package/dist/search/index.js.map +1 -0
  159. package/dist/search/refinement-loop.d.ts +73 -0
  160. package/dist/search/refinement-loop.d.ts.map +1 -0
  161. package/dist/search/refinement-loop.js +245 -0
  162. package/dist/search/refinement-loop.js.map +1 -0
  163. package/dist/search/refinement-types.d.ts +154 -0
  164. package/dist/search/refinement-types.d.ts.map +1 -0
  165. package/dist/search/refinement-types.js +99 -0
  166. package/dist/search/refinement-types.js.map +1 -0
  167. package/dist/search/router.d.ts +61 -0
  168. package/dist/search/router.d.ts.map +1 -0
  169. package/dist/search/router.js +197 -0
  170. package/dist/search/router.js.map +1 -0
  171. package/dist/search/solver.d.ts +75 -0
  172. package/dist/search/solver.d.ts.map +1 -0
  173. package/dist/search/solver.js +216 -0
  174. package/dist/search/solver.js.map +1 -0
  175. package/dist/search/verification-runner.d.ts +125 -0
  176. package/dist/search/verification-runner.d.ts.map +1 -0
  177. package/dist/search/verification-runner.js +440 -0
  178. package/dist/search/verification-runner.js.map +1 -0
  179. package/dist/surfacing/index.d.ts +2 -0
  180. package/dist/surfacing/index.d.ts.map +1 -0
  181. package/dist/surfacing/index.js +2 -0
  182. package/dist/surfacing/index.js.map +1 -0
  183. package/dist/surfacing/skill-library.d.ts +158 -0
  184. package/dist/surfacing/skill-library.d.ts.map +1 -0
  185. package/dist/surfacing/skill-library.js +429 -0
  186. package/dist/surfacing/skill-library.js.map +1 -0
  187. package/dist/types/config.d.ts +1113 -0
  188. package/dist/types/config.d.ts.map +1 -0
  189. package/dist/types/config.js +274 -0
  190. package/dist/types/config.js.map +1 -0
  191. package/dist/types/index.d.ts +9 -0
  192. package/dist/types/index.d.ts.map +1 -0
  193. package/dist/types/index.js +14 -0
  194. package/dist/types/index.js.map +1 -0
  195. package/dist/types/memory.d.ts +339 -0
  196. package/dist/types/memory.d.ts.map +1 -0
  197. package/dist/types/memory.js +207 -0
  198. package/dist/types/memory.js.map +1 -0
  199. package/dist/types/meta.d.ts +146 -0
  200. package/dist/types/meta.d.ts.map +1 -0
  201. package/dist/types/meta.js +51 -0
  202. package/dist/types/meta.js.map +1 -0
  203. package/dist/types/outcome.d.ts +42 -0
  204. package/dist/types/outcome.d.ts.map +1 -0
  205. package/dist/types/outcome.js +50 -0
  206. package/dist/types/outcome.js.map +1 -0
  207. package/dist/types/playbook.d.ts +119 -0
  208. package/dist/types/playbook.d.ts.map +1 -0
  209. package/dist/types/playbook.js +71 -0
  210. package/dist/types/playbook.js.map +1 -0
  211. package/dist/types/step.d.ts +44 -0
  212. package/dist/types/step.d.ts.map +1 -0
  213. package/dist/types/step.js +32 -0
  214. package/dist/types/step.js.map +1 -0
  215. package/dist/types/task.d.ts +91 -0
  216. package/dist/types/task.d.ts.map +1 -0
  217. package/dist/types/task.js +39 -0
  218. package/dist/types/task.js.map +1 -0
  219. package/dist/types/trajectory.d.ts +221 -0
  220. package/dist/types/trajectory.d.ts.map +1 -0
  221. package/dist/types/trajectory.js +60 -0
  222. package/dist/types/trajectory.js.map +1 -0
  223. package/dist/utils/index.d.ts +4 -0
  224. package/dist/utils/index.d.ts.map +1 -0
  225. package/dist/utils/index.js +4 -0
  226. package/dist/utils/index.js.map +1 -0
  227. package/dist/utils/similarity.d.ts +31 -0
  228. package/dist/utils/similarity.d.ts.map +1 -0
  229. package/dist/utils/similarity.js +107 -0
  230. package/dist/utils/similarity.js.map +1 -0
  231. package/dist/utils/storage.d.ts +106 -0
  232. package/dist/utils/storage.d.ts.map +1 -0
  233. package/dist/utils/storage.js +203 -0
  234. package/dist/utils/storage.js.map +1 -0
  235. package/dist/utils/validation.d.ts +129 -0
  236. package/dist/utils/validation.d.ts.map +1 -0
  237. package/dist/utils/validation.js +171 -0
  238. package/dist/utils/validation.js.map +1 -0
  239. package/package.json +61 -9
  240. package/scripts/migrate-to-playbooks.ts +307 -0
  241. package/src/agents/index.ts +14 -0
  242. package/src/agents/mock-provider.ts +93 -0
  243. package/src/agents/types.ts +137 -0
  244. package/src/atlas.ts +560 -0
  245. package/src/bin/cognitive-core.ts +470 -0
  246. package/src/embeddings/bm25.ts +337 -0
  247. package/src/embeddings/index.ts +39 -0
  248. package/src/embeddings/manager.ts +288 -0
  249. package/src/embeddings/provider.ts +311 -0
  250. package/src/embeddings/vector-store.ts +353 -0
  251. package/src/factory.ts +263 -0
  252. package/src/index.ts +246 -0
  253. package/src/learning/analyzer.ts +335 -0
  254. package/src/learning/effectiveness.ts +428 -0
  255. package/src/learning/index.ts +58 -0
  256. package/src/learning/llm-extractor.ts +542 -0
  257. package/src/learning/meta-learner.ts +516 -0
  258. package/src/learning/pipeline.ts +244 -0
  259. package/src/learning/playbook-extractor.ts +702 -0
  260. package/src/learning/usage-inference.ts +372 -0
  261. package/src/mcp/index.ts +12 -0
  262. package/src/mcp/playbook-server.ts +565 -0
  263. package/src/memory/curated-loader.ts +160 -0
  264. package/src/memory/experience.ts +515 -0
  265. package/src/memory/index.ts +27 -0
  266. package/src/memory/meta.ts +506 -0
  267. package/src/memory/playbook.ts +493 -0
  268. package/src/memory/system.ts +551 -0
  269. package/src/runtime/backends/acp.ts +378 -0
  270. package/src/runtime/backends/index.ts +24 -0
  271. package/src/runtime/backends/mock.ts +218 -0
  272. package/src/runtime/backends/subprocess.ts +356 -0
  273. package/src/runtime/flows/learning.ts +183 -0
  274. package/src/runtime/flows/validation.ts +381 -0
  275. package/src/runtime/index.ts +53 -0
  276. package/src/runtime/manager.ts +541 -0
  277. package/src/runtime/types.ts +157 -0
  278. package/src/search/evaluator.ts +474 -0
  279. package/src/search/index.ts +59 -0
  280. package/src/search/refinement-loop.ts +363 -0
  281. package/src/search/refinement-types.ts +159 -0
  282. package/src/search/router.ts +261 -0
  283. package/src/search/solver.ts +303 -0
  284. package/src/search/verification-runner.ts +570 -0
  285. package/src/surfacing/index.ts +6 -0
  286. package/src/surfacing/skill-library.ts +594 -0
  287. package/src/types/config.ts +333 -0
  288. package/src/types/index.ts +130 -0
  289. package/src/types/memory.ts +270 -0
  290. package/src/types/meta.ts +218 -0
  291. package/src/types/outcome.ts +66 -0
  292. package/src/types/playbook.ts +196 -0
  293. package/src/types/step.ts +40 -0
  294. package/src/types/task.ts +52 -0
  295. package/src/types/trajectory.ts +80 -0
  296. package/src/utils/index.ts +38 -0
  297. package/src/utils/similarity.ts +139 -0
  298. package/src/utils/storage.ts +249 -0
  299. package/src/utils/validation.ts +286 -0
  300. package/tests/embeddings/bm25.test.ts +130 -0
  301. package/tests/embeddings/manager.test.ts +205 -0
  302. package/tests/integration/atlas.test.ts +266 -0
  303. package/tests/integration/e2e.test.ts +929 -0
  304. package/tests/learning/analyzer.test.ts +426 -0
  305. package/tests/learning/effectiveness.test.ts +542 -0
  306. package/tests/learning/pipeline.test.ts +176 -0
  307. package/tests/learning/playbook-extractor-provenance.test.ts +114 -0
  308. package/tests/learning/usage-inference.test.ts +254 -0
  309. package/tests/mcp/playbook-server.test.ts +252 -0
  310. package/tests/memory/experience.test.ts +198 -0
  311. package/tests/memory/playbook.test.ts +338 -0
  312. package/tests/memory/provenance.test.ts +639 -0
  313. package/tests/memory/system.test.ts +325 -0
  314. package/tests/runtime/agent-manager.test.ts +512 -0
  315. package/tests/runtime/mock-backend.test.ts +248 -0
  316. package/tests/search/refinement-loop.test.ts +468 -0
  317. package/tests/search/refinement.test.ts +267 -0
  318. package/tests/search/router.test.ts +427 -0
  319. package/tests/surfacing/skill-library.test.ts +292 -0
  320. package/tests/types/outcome.test.ts +147 -0
  321. package/tests/types/step.test.ts +133 -0
  322. package/tests/types/task.test.ts +158 -0
  323. package/tests/types/trajectory.test.ts +253 -0
  324. package/tests/utils/similarity.test.ts +188 -0
  325. package/tests/utils/validation.test.ts +252 -0
  326. package/tsconfig.json +25 -0
  327. package/vitest.config.ts +22 -0
  328. package/index.d.ts +0 -4
  329. package/index.js +0 -4
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Playbook Extractor
3
+ * Extracts playbooks from successful trajectories
4
+ * Replaces the old TextPatternExtractor with more intelligent extraction
5
+ */
6
+ import type { Playbook, Trajectory, Refinement } from '../types/index.js';
7
+ import type { AnalysisResult } from './analyzer.js';
8
+ /**
9
+ * Result of playbook extraction
10
+ */
11
+ export interface ExtractedPlaybooks {
12
+ /** Entirely new playbooks */
13
+ new: Playbook[];
14
+ /** Updates to existing playbooks */
15
+ updates: PlaybookUpdate[];
16
+ }
17
+ /**
18
+ * Update to an existing playbook
19
+ */
20
+ export interface PlaybookUpdate {
21
+ id: string;
22
+ refinement?: Refinement;
23
+ newTrigger?: string;
24
+ newAntiPattern?: string;
25
+ }
26
+ /**
27
+ * Configuration for playbook extraction
28
+ */
29
+ export interface PlaybookExtractorConfig {
30
+ /** Minimum trajectories needed to create a playbook */
31
+ minTrajectories: number;
32
+ /** Similarity threshold for merging playbooks */
33
+ mergeThreshold: number;
34
+ /** Minimum success rate for extraction */
35
+ minSuccessRate: number;
36
+ }
37
+ /**
38
+ * Playbook Extractor
39
+ * Intelligent extraction of playbooks from trajectories
40
+ */
41
+ export declare class PlaybookExtractor {
42
+ private config;
43
+ constructor(config?: Partial<PlaybookExtractorConfig>);
44
+ /**
45
+ * Extract playbooks from successful trajectories
46
+ */
47
+ extract(trajectories: Trajectory[], analyses: AnalysisResult[], existingPlaybooks?: Playbook[]): Promise<ExtractedPlaybooks>;
48
+ /**
49
+ * Extract playbooks from a single domain's trajectories
50
+ */
51
+ private extractFromDomain;
52
+ /**
53
+ * Find common patterns across trajectories
54
+ */
55
+ private findCommonPatterns;
56
+ /**
57
+ * Extract error-recovery patterns
58
+ */
59
+ private extractErrorPatterns;
60
+ /**
61
+ * Normalize an action for pattern matching
62
+ */
63
+ private normalizeAction;
64
+ /**
65
+ * Find similar existing playbook
66
+ */
67
+ private findSimilarPlaybook;
68
+ /**
69
+ * Generate update for existing playbook
70
+ */
71
+ private generateUpdate;
72
+ /**
73
+ * Create a playbook from an extracted pattern
74
+ */
75
+ private createPlaybookFromPattern;
76
+ /**
77
+ * Generate a kebab-case playbook name
78
+ */
79
+ private generatePlaybookName;
80
+ /**
81
+ * Check if word is a stop word
82
+ */
83
+ private isStopWord;
84
+ /**
85
+ * Extract context from a trajectory
86
+ */
87
+ private extractContext;
88
+ /**
89
+ * Group trajectories by domain
90
+ */
91
+ private groupByDomain;
92
+ /**
93
+ * Consolidate similar playbooks
94
+ */
95
+ consolidate(playbooks: Playbook[]): Promise<Playbook[]>;
96
+ /**
97
+ * Calculate similarity between two playbooks
98
+ */
99
+ private calculatePlaybookSimilarity;
100
+ /**
101
+ * Merge two similar playbooks
102
+ */
103
+ private mergePlaybooks;
104
+ /**
105
+ * Generate refinement from a failure
106
+ */
107
+ generateRefinement(_playbook: Playbook, failedTrajectory: Trajectory, failureContext: string): Promise<Refinement>;
108
+ }
109
+ /**
110
+ * Create a playbook extractor
111
+ */
112
+ export declare function createPlaybookExtractor(config?: Partial<PlaybookExtractorConfig>): PlaybookExtractor;
113
+ //# sourceMappingURL=playbook-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playbook-extractor.d.ts","sourceRoot":"","sources":["../../src/learning/playbook-extractor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,UAAU,EACX,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,GAAG,EAAE,QAAQ,EAAE,CAAC;IAChB,oCAAoC;IACpC,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,uDAAuD;IACvD,eAAe,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,cAAc,EAAE,MAAM,CAAC;CACxB;AAQD;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAA0B;gBAE5B,MAAM,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC;IAIrD;;OAEG;IACG,OAAO,CACX,YAAY,EAAE,UAAU,EAAE,EAC1B,QAAQ,EAAE,cAAc,EAAE,EAC1B,iBAAiB,GAAE,QAAQ,EAAO,GACjC,OAAO,CAAC,kBAAkB,CAAC;IAsC9B;;OAEG;YACW,iBAAiB;IAkC/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuE1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAwD5B;;OAEG;IACH,OAAO,CAAC,eAAe;IA2BvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyB3B;;OAEG;IACH,OAAO,CAAC,cAAc;IA0CtB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA8CjC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;IACH,OAAO,CAAC,UAAU;IAiFlB;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IA6B7D;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAgBnC;;OAEG;IACH,OAAO,CAAC,cAAc;IAoCtB;;OAEG;IACG,kBAAkB,CACtB,SAAS,EAAE,QAAQ,EACnB,gBAAgB,EAAE,UAAU,EAC5B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,UAAU,CAAC;CAiBvB;AAcD;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GACxC,iBAAiB,CAEnB"}
@@ -0,0 +1,523 @@
1
+ /**
2
+ * Playbook Extractor
3
+ * Extracts playbooks from successful trajectories
4
+ * Replaces the old TextPatternExtractor with more intelligent extraction
5
+ */
6
+ import { createPlaybook } from '../types/index.js';
7
+ import { textSimilarity } from '../utils/similarity.js';
8
+ const DEFAULT_CONFIG = {
9
+ minTrajectories: 2,
10
+ mergeThreshold: 0.85,
11
+ minSuccessRate: 0.6,
12
+ };
13
+ /**
14
+ * Playbook Extractor
15
+ * Intelligent extraction of playbooks from trajectories
16
+ */
17
+ export class PlaybookExtractor {
18
+ config;
19
+ constructor(config) {
20
+ this.config = { ...DEFAULT_CONFIG, ...config };
21
+ }
22
+ /**
23
+ * Extract playbooks from successful trajectories
24
+ */
25
+ async extract(trajectories, analyses, existingPlaybooks = []) {
26
+ const result = {
27
+ new: [],
28
+ updates: [],
29
+ };
30
+ // Filter to successful, abstractable trajectories
31
+ const candidates = trajectories.filter((_t, i) => {
32
+ const analysis = analyses[i];
33
+ return analysis?.success && analysis.abstractable;
34
+ });
35
+ if (candidates.length < this.config.minTrajectories) {
36
+ return result;
37
+ }
38
+ // Group by domain
39
+ const byDomain = this.groupByDomain(candidates);
40
+ for (const [domain, domainTrajectories] of byDomain) {
41
+ // Extract playbooks from this domain
42
+ const extracted = await this.extractFromDomain(domain, domainTrajectories, analyses, existingPlaybooks);
43
+ result.new.push(...extracted.new);
44
+ result.updates.push(...extracted.updates);
45
+ }
46
+ // Consolidate similar playbooks
47
+ result.new = await this.consolidate(result.new);
48
+ return result;
49
+ }
50
+ /**
51
+ * Extract playbooks from a single domain's trajectories
52
+ */
53
+ async extractFromDomain(domain, trajectories, analyses, existingPlaybooks) {
54
+ const result = {
55
+ new: [],
56
+ updates: [],
57
+ };
58
+ // Find common patterns across trajectories
59
+ const patterns = this.findCommonPatterns(trajectories, analyses);
60
+ for (const pattern of patterns) {
61
+ // Check if similar playbook exists
62
+ const existing = this.findSimilarPlaybook(pattern, existingPlaybooks);
63
+ if (existing) {
64
+ // Generate update
65
+ const update = this.generateUpdate(existing, pattern, trajectories);
66
+ if (update) {
67
+ result.updates.push(update);
68
+ }
69
+ }
70
+ else {
71
+ // Create new playbook
72
+ const playbook = this.createPlaybookFromPattern(pattern, domain);
73
+ result.new.push(playbook);
74
+ }
75
+ }
76
+ return result;
77
+ }
78
+ /**
79
+ * Find common patterns across trajectories
80
+ */
81
+ findCommonPatterns(trajectories, analyses) {
82
+ const patterns = [];
83
+ // Extract action sequences from key steps
84
+ const actionSequences = [];
85
+ for (let i = 0; i < trajectories.length; i++) {
86
+ const trajectory = trajectories[i];
87
+ // Use index-based matching since TrainingExample doesn't have trajectoryId
88
+ const analysis = analyses[i];
89
+ if (!analysis)
90
+ continue;
91
+ // Get key steps
92
+ const keySteps = analysis.keySteps
93
+ .map((idx) => trajectory.steps[idx])
94
+ .filter(Boolean);
95
+ if (keySteps.length > 0) {
96
+ actionSequences.push({
97
+ actions: keySteps.map((s) => s.action),
98
+ thought: keySteps[0]?.thought ?? trajectory.task.description,
99
+ trajectoryId: trajectory.id,
100
+ });
101
+ }
102
+ }
103
+ // Find repeated patterns
104
+ const patternCounts = new Map();
105
+ for (const seq of actionSequences) {
106
+ // Normalize actions
107
+ const normalized = seq.actions.map((a) => this.normalizeAction(a));
108
+ const key = normalized.join('|');
109
+ if (patternCounts.has(key)) {
110
+ const existing = patternCounts.get(key);
111
+ existing.frequency++;
112
+ existing.trajectoryIds.push(seq.trajectoryId);
113
+ }
114
+ else {
115
+ patternCounts.set(key, {
116
+ actions: seq.actions,
117
+ normalizedActions: normalized,
118
+ thought: seq.thought,
119
+ frequency: 1,
120
+ trajectoryIds: [seq.trajectoryId],
121
+ });
122
+ }
123
+ }
124
+ // Filter to patterns that occur multiple times
125
+ for (const pattern of patternCounts.values()) {
126
+ if (pattern.frequency >= this.config.minTrajectories) {
127
+ patterns.push(pattern);
128
+ }
129
+ }
130
+ // Also extract error-recovery patterns
131
+ const errorPatterns = this.extractErrorPatterns(trajectories, analyses);
132
+ patterns.push(...errorPatterns);
133
+ return patterns;
134
+ }
135
+ /**
136
+ * Extract error-recovery patterns
137
+ */
138
+ extractErrorPatterns(trajectories, analyses) {
139
+ const patterns = [];
140
+ const errorRecoveries = new Map();
141
+ for (let i = 0; i < trajectories.length; i++) {
142
+ const trajectory = trajectories[i];
143
+ const analysis = analyses[i];
144
+ if (!analysis?.errorPatterns)
145
+ continue;
146
+ for (const errorPattern of analysis.errorPatterns) {
147
+ const key = errorPattern.signature;
148
+ // Find recovery actions (steps after the error)
149
+ const errorStepIdx = trajectory.steps.findIndex((s) => s.observation?.includes(errorPattern.signature));
150
+ if (errorStepIdx >= 0 && errorStepIdx < trajectory.steps.length - 1) {
151
+ const recoverySteps = trajectory.steps.slice(errorStepIdx + 1, errorStepIdx + 4);
152
+ if (errorRecoveries.has(key)) {
153
+ const existing = errorRecoveries.get(key);
154
+ existing.frequency++;
155
+ existing.trajectoryIds.push(trajectory.id);
156
+ }
157
+ else {
158
+ errorRecoveries.set(key, {
159
+ actions: recoverySteps.map((s) => s.action),
160
+ normalizedActions: recoverySteps.map((s) => this.normalizeAction(s.action)),
161
+ thought: `When encountering: ${errorPattern.signature}`,
162
+ frequency: 1,
163
+ trajectoryIds: [trajectory.id],
164
+ errorTrigger: errorPattern.signature,
165
+ });
166
+ }
167
+ }
168
+ }
169
+ }
170
+ for (const pattern of errorRecoveries.values()) {
171
+ if (pattern.frequency >= this.config.minTrajectories) {
172
+ patterns.push(pattern);
173
+ }
174
+ }
175
+ return patterns;
176
+ }
177
+ /**
178
+ * Normalize an action for pattern matching
179
+ */
180
+ normalizeAction(action) {
181
+ const lower = action.toLowerCase();
182
+ // Map to action categories
183
+ const categories = {
184
+ read: ['read', 'view', 'show', 'display', 'cat', 'less', 'get'],
185
+ write: ['write', 'create', 'add', 'insert', 'save'],
186
+ edit: ['edit', 'modify', 'change', 'update', 'replace'],
187
+ delete: ['delete', 'remove', 'drop', 'clear'],
188
+ search: ['search', 'find', 'grep', 'locate', 'query'],
189
+ run: ['run', 'execute', 'call', 'invoke', 'start'],
190
+ test: ['test', 'verify', 'check', 'validate', 'assert'],
191
+ build: ['build', 'compile', 'bundle', 'package'],
192
+ install: ['install', 'add', 'npm', 'yarn', 'pip'],
193
+ debug: ['debug', 'trace', 'log', 'inspect', 'breakpoint'],
194
+ };
195
+ for (const [category, keywords] of Object.entries(categories)) {
196
+ if (keywords.some((kw) => lower.includes(kw))) {
197
+ return category;
198
+ }
199
+ }
200
+ // Return first word as fallback
201
+ return lower.split(/\s+/)[0] ?? 'action';
202
+ }
203
+ /**
204
+ * Find similar existing playbook
205
+ */
206
+ findSimilarPlaybook(pattern, playbooks) {
207
+ for (const playbook of playbooks) {
208
+ // Check situation similarity
209
+ const situationMatch = playbook.applicability.situations.some((s) => textSimilarity(pattern.thought, s) > this.config.mergeThreshold);
210
+ if (situationMatch)
211
+ return playbook;
212
+ // Check trigger match for error patterns
213
+ if (pattern.errorTrigger) {
214
+ const triggerMatch = playbook.applicability.triggers.some((t) => textSimilarity(pattern.errorTrigger, t) > this.config.mergeThreshold);
215
+ if (triggerMatch)
216
+ return playbook;
217
+ }
218
+ }
219
+ return undefined;
220
+ }
221
+ /**
222
+ * Generate update for existing playbook
223
+ */
224
+ generateUpdate(playbook, pattern, trajectories) {
225
+ const update = { id: playbook.id };
226
+ let hasUpdate = false;
227
+ // Check for new trigger
228
+ if (pattern.errorTrigger &&
229
+ !playbook.applicability.triggers.includes(pattern.errorTrigger)) {
230
+ update.newTrigger = pattern.errorTrigger;
231
+ hasUpdate = true;
232
+ }
233
+ // Check for context-specific refinement
234
+ const contexts = trajectories
235
+ .filter((t) => pattern.trajectoryIds.includes(t.id))
236
+ .map((t) => this.extractContext(t));
237
+ const uniqueContext = contexts.find((c) => !playbook.evolution.refinements.some((r) => textSimilarity(r.context, c) > 0.8));
238
+ if (uniqueContext && pattern.actions.length > 0) {
239
+ update.refinement = {
240
+ context: uniqueContext,
241
+ addition: `Also: ${pattern.actions.slice(0, 2).join(', ')}`,
242
+ source: 'success',
243
+ addedAt: new Date(),
244
+ };
245
+ hasUpdate = true;
246
+ }
247
+ return hasUpdate ? update : undefined;
248
+ }
249
+ /**
250
+ * Create a playbook from an extracted pattern
251
+ */
252
+ createPlaybookFromPattern(pattern, domain) {
253
+ const name = this.generatePlaybookName(pattern);
254
+ return createPlaybook({
255
+ name,
256
+ applicability: {
257
+ situations: [pattern.thought],
258
+ triggers: pattern.errorTrigger ? [pattern.errorTrigger] : [],
259
+ antiPatterns: [],
260
+ domains: [domain],
261
+ },
262
+ guidance: {
263
+ strategy: pattern.thought,
264
+ tactics: pattern.actions.slice(0, 5),
265
+ steps: pattern.actions,
266
+ },
267
+ verification: {
268
+ successIndicators: ['Task completes successfully'],
269
+ failureIndicators: ['Same error persists', 'New errors introduced'],
270
+ },
271
+ evolution: {
272
+ version: '1.0.0',
273
+ createdFrom: pattern.trajectoryIds,
274
+ failures: [],
275
+ refinements: [],
276
+ successCount: pattern.frequency,
277
+ failureCount: 0,
278
+ },
279
+ provenance: {
280
+ origin: 'extracted',
281
+ recordedAt: new Date(),
282
+ },
283
+ confidence: Math.min(0.5, 0.2 + pattern.frequency * 0.1),
284
+ complexity: pattern.actions.length <= 3
285
+ ? 'simple'
286
+ : pattern.actions.length <= 6
287
+ ? 'moderate'
288
+ : 'complex',
289
+ estimatedEffort: Math.ceil(pattern.actions.length * 0.5),
290
+ });
291
+ }
292
+ /**
293
+ * Generate a kebab-case playbook name
294
+ */
295
+ generatePlaybookName(pattern) {
296
+ const words = pattern.thought
297
+ .toLowerCase()
298
+ .replace(/[^\w\s]/g, '')
299
+ .split(/\s+/)
300
+ .filter((w) => w.length > 2 && !this.isStopWord(w))
301
+ .slice(0, 4);
302
+ if (words.length === 0) {
303
+ return `playbook-${Date.now()}`;
304
+ }
305
+ return words.join('-');
306
+ }
307
+ /**
308
+ * Check if word is a stop word
309
+ */
310
+ isStopWord(word) {
311
+ const stopWords = new Set([
312
+ 'the',
313
+ 'a',
314
+ 'an',
315
+ 'and',
316
+ 'or',
317
+ 'but',
318
+ 'is',
319
+ 'are',
320
+ 'was',
321
+ 'were',
322
+ 'be',
323
+ 'been',
324
+ 'being',
325
+ 'have',
326
+ 'has',
327
+ 'had',
328
+ 'do',
329
+ 'does',
330
+ 'did',
331
+ 'will',
332
+ 'would',
333
+ 'could',
334
+ 'should',
335
+ 'may',
336
+ 'might',
337
+ 'must',
338
+ 'shall',
339
+ 'can',
340
+ 'to',
341
+ 'of',
342
+ 'in',
343
+ 'for',
344
+ 'on',
345
+ 'with',
346
+ 'at',
347
+ 'by',
348
+ 'from',
349
+ 'as',
350
+ 'into',
351
+ 'through',
352
+ 'during',
353
+ 'before',
354
+ 'after',
355
+ 'above',
356
+ 'below',
357
+ 'between',
358
+ 'under',
359
+ 'again',
360
+ 'further',
361
+ 'then',
362
+ 'once',
363
+ 'here',
364
+ 'there',
365
+ 'when',
366
+ 'where',
367
+ 'why',
368
+ 'how',
369
+ 'all',
370
+ 'each',
371
+ 'few',
372
+ 'more',
373
+ 'most',
374
+ 'other',
375
+ 'some',
376
+ 'such',
377
+ 'no',
378
+ 'not',
379
+ 'only',
380
+ 'own',
381
+ 'same',
382
+ 'so',
383
+ 'than',
384
+ 'too',
385
+ 'very',
386
+ 'just',
387
+ ]);
388
+ return stopWords.has(word);
389
+ }
390
+ /**
391
+ * Extract context from a trajectory
392
+ */
393
+ extractContext(trajectory) {
394
+ // Try to extract meaningful context
395
+ const metadata = trajectory.task.metadata ?? {};
396
+ if (metadata.fileType)
397
+ return `${metadata.fileType} files`;
398
+ if (metadata.framework)
399
+ return `${metadata.framework} projects`;
400
+ if (metadata.language)
401
+ return `${metadata.language} code`;
402
+ // Fall back to domain
403
+ return trajectory.task.domain;
404
+ }
405
+ /**
406
+ * Group trajectories by domain
407
+ */
408
+ groupByDomain(trajectories) {
409
+ const groups = new Map();
410
+ for (const trajectory of trajectories) {
411
+ const domain = trajectory.task.domain;
412
+ const existing = groups.get(domain) ?? [];
413
+ existing.push(trajectory);
414
+ groups.set(domain, existing);
415
+ }
416
+ return groups;
417
+ }
418
+ /**
419
+ * Consolidate similar playbooks
420
+ */
421
+ async consolidate(playbooks) {
422
+ if (playbooks.length <= 1)
423
+ return playbooks;
424
+ const consolidated = [];
425
+ const merged = new Set();
426
+ for (let i = 0; i < playbooks.length; i++) {
427
+ if (merged.has(playbooks[i].id))
428
+ continue;
429
+ let current = playbooks[i];
430
+ for (let j = i + 1; j < playbooks.length; j++) {
431
+ if (merged.has(playbooks[j].id))
432
+ continue;
433
+ const other = playbooks[j];
434
+ const similarity = this.calculatePlaybookSimilarity(current, other);
435
+ if (similarity > this.config.mergeThreshold) {
436
+ current = this.mergePlaybooks(current, other);
437
+ merged.add(other.id);
438
+ }
439
+ }
440
+ consolidated.push(current);
441
+ }
442
+ return consolidated;
443
+ }
444
+ /**
445
+ * Calculate similarity between two playbooks
446
+ */
447
+ calculatePlaybookSimilarity(a, b) {
448
+ // Compare situations
449
+ let maxSituationSim = 0;
450
+ for (const sA of a.applicability.situations) {
451
+ for (const sB of b.applicability.situations) {
452
+ maxSituationSim = Math.max(maxSituationSim, textSimilarity(sA, sB));
453
+ }
454
+ }
455
+ // Compare guidance
456
+ const strategySim = textSimilarity(a.guidance.strategy, b.guidance.strategy);
457
+ // Combined score
458
+ return maxSituationSim * 0.6 + strategySim * 0.4;
459
+ }
460
+ /**
461
+ * Merge two similar playbooks
462
+ */
463
+ mergePlaybooks(a, b) {
464
+ return createPlaybook({
465
+ id: a.id,
466
+ name: a.name,
467
+ applicability: {
468
+ situations: [...new Set([...a.applicability.situations, ...b.applicability.situations])],
469
+ triggers: [...new Set([...a.applicability.triggers, ...b.applicability.triggers])],
470
+ antiPatterns: [...new Set([...a.applicability.antiPatterns, ...b.applicability.antiPatterns])],
471
+ domains: [...new Set([...a.applicability.domains, ...b.applicability.domains])],
472
+ },
473
+ guidance: {
474
+ strategy: a.guidance.strategy, // Keep first
475
+ tactics: [...new Set([...a.guidance.tactics, ...b.guidance.tactics])],
476
+ steps: a.guidance.steps ?? b.guidance.steps,
477
+ codeExample: a.guidance.codeExample ?? b.guidance.codeExample,
478
+ },
479
+ verification: {
480
+ successIndicators: [...new Set([...a.verification.successIndicators, ...b.verification.successIndicators])],
481
+ failureIndicators: [...new Set([...a.verification.failureIndicators, ...b.verification.failureIndicators])],
482
+ rollbackStrategy: a.verification.rollbackStrategy ?? b.verification.rollbackStrategy,
483
+ },
484
+ evolution: {
485
+ version: a.evolution.version,
486
+ createdFrom: [...new Set([...a.evolution.createdFrom, ...b.evolution.createdFrom])],
487
+ failures: [...a.evolution.failures, ...b.evolution.failures],
488
+ refinements: [...a.evolution.refinements, ...b.evolution.refinements],
489
+ successCount: a.evolution.successCount + b.evolution.successCount,
490
+ failureCount: a.evolution.failureCount + b.evolution.failureCount,
491
+ },
492
+ provenance: a.provenance, // Preserve provenance from primary playbook
493
+ confidence: Math.max(a.confidence, b.confidence),
494
+ complexity: a.complexity,
495
+ estimatedEffort: Math.min(a.estimatedEffort, b.estimatedEffort),
496
+ });
497
+ }
498
+ /**
499
+ * Generate refinement from a failure
500
+ */
501
+ async generateRefinement(_playbook, failedTrajectory, failureContext) {
502
+ // Analyze what was different in this failure
503
+ const context = this.extractContext(failedTrajectory);
504
+ // Try to identify what additional steps might help
505
+ const lastSteps = failedTrajectory.steps.slice(-3);
506
+ const suggestion = lastSteps.length > 0
507
+ ? `Consider checking: ${lastSteps.map((s) => s.action).join(', ')}`
508
+ : `Review the approach for ${failureContext}`;
509
+ return {
510
+ context,
511
+ addition: suggestion,
512
+ source: 'failure',
513
+ addedAt: new Date(),
514
+ };
515
+ }
516
+ }
517
+ /**
518
+ * Create a playbook extractor
519
+ */
520
+ export function createPlaybookExtractor(config) {
521
+ return new PlaybookExtractor(config);
522
+ }
523
+ //# sourceMappingURL=playbook-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playbook-extractor.js","sourceRoot":"","sources":["../../src/learning/playbook-extractor.ts"],"names":[],"mappings":"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"}