cognitive-core 0.1.2 → 0.2.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 (483) hide show
  1. package/CLAUDE.md +233 -0
  2. package/README.md +370 -54
  3. package/dist/atlas.d.ts +10 -10
  4. package/dist/atlas.d.ts.map +1 -1
  5. package/dist/atlas.js +79 -48
  6. package/dist/atlas.js.map +1 -1
  7. package/dist/bin/cli-utils.d.ts +37 -0
  8. package/dist/bin/cli-utils.d.ts.map +1 -0
  9. package/dist/bin/cli-utils.js +176 -0
  10. package/dist/bin/cli-utils.js.map +1 -0
  11. package/dist/bin/cognitive-core.d.ts +2 -12
  12. package/dist/bin/cognitive-core.d.ts.map +1 -1
  13. package/dist/bin/cognitive-core.js +76 -351
  14. package/dist/bin/cognitive-core.js.map +1 -1
  15. package/dist/bin/commands/kb.d.ts +6 -0
  16. package/dist/bin/commands/kb.d.ts.map +1 -0
  17. package/dist/bin/commands/kb.js +240 -0
  18. package/dist/bin/commands/kb.js.map +1 -0
  19. package/dist/bin/commands/learn.d.ts +6 -0
  20. package/dist/bin/commands/learn.d.ts.map +1 -0
  21. package/dist/bin/commands/learn.js +91 -0
  22. package/dist/bin/commands/learn.js.map +1 -0
  23. package/dist/bin/commands/legacy.d.ts +12 -0
  24. package/dist/bin/commands/legacy.d.ts.map +1 -0
  25. package/dist/bin/commands/legacy.js +142 -0
  26. package/dist/bin/commands/legacy.js.map +1 -0
  27. package/dist/bin/commands/run.d.ts +3 -0
  28. package/dist/bin/commands/run.d.ts.map +1 -0
  29. package/dist/bin/commands/run.js +99 -0
  30. package/dist/bin/commands/run.js.map +1 -0
  31. package/dist/bin/commands/sessions.d.ts +9 -0
  32. package/dist/bin/commands/sessions.d.ts.map +1 -0
  33. package/dist/bin/commands/sessions.js +183 -0
  34. package/dist/bin/commands/sessions.js.map +1 -0
  35. package/dist/bin/commands/skills.d.ts +6 -0
  36. package/dist/bin/commands/skills.d.ts.map +1 -0
  37. package/dist/bin/commands/skills.js +135 -0
  38. package/dist/bin/commands/skills.js.map +1 -0
  39. package/dist/embeddings/index.d.ts +1 -0
  40. package/dist/embeddings/index.d.ts.map +1 -1
  41. package/dist/embeddings/index.js +2 -0
  42. package/dist/embeddings/index.js.map +1 -1
  43. package/dist/embeddings/inverted-index.d.ts +47 -0
  44. package/dist/embeddings/inverted-index.d.ts.map +1 -0
  45. package/dist/embeddings/inverted-index.js +122 -0
  46. package/dist/embeddings/inverted-index.js.map +1 -0
  47. package/dist/embeddings/manager.d.ts +3 -1
  48. package/dist/embeddings/manager.d.ts.map +1 -1
  49. package/dist/embeddings/manager.js +12 -7
  50. package/dist/embeddings/manager.js.map +1 -1
  51. package/dist/embeddings/vector-store.d.ts +7 -3
  52. package/dist/embeddings/vector-store.d.ts.map +1 -1
  53. package/dist/embeddings/vector-store.js +22 -6
  54. package/dist/embeddings/vector-store.js.map +1 -1
  55. package/dist/factory.d.ts +11 -12
  56. package/dist/factory.d.ts.map +1 -1
  57. package/dist/factory.js +20 -7
  58. package/dist/factory.js.map +1 -1
  59. package/dist/index.d.ts +7 -6
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +37 -5
  62. package/dist/index.js.map +1 -1
  63. package/dist/learning/analyzer.d.ts.map +1 -1
  64. package/dist/learning/analyzer.js +17 -35
  65. package/dist/learning/analyzer.js.map +1 -1
  66. package/dist/learning/energy-evaluator.d.ts +128 -0
  67. package/dist/learning/energy-evaluator.d.ts.map +1 -0
  68. package/dist/learning/energy-evaluator.js +175 -0
  69. package/dist/learning/energy-evaluator.js.map +1 -0
  70. package/dist/learning/healing-orchestrator.d.ts +182 -0
  71. package/dist/learning/healing-orchestrator.d.ts.map +1 -0
  72. package/dist/learning/healing-orchestrator.js +250 -0
  73. package/dist/learning/healing-orchestrator.js.map +1 -0
  74. package/dist/learning/index.d.ts +7 -2
  75. package/dist/learning/index.d.ts.map +1 -1
  76. package/dist/learning/index.js +13 -2
  77. package/dist/learning/index.js.map +1 -1
  78. package/dist/learning/instant-loop.d.ts +87 -0
  79. package/dist/learning/instant-loop.d.ts.map +1 -0
  80. package/dist/learning/instant-loop.js +264 -0
  81. package/dist/learning/instant-loop.js.map +1 -0
  82. package/dist/learning/loop-coordinator.d.ts +61 -0
  83. package/dist/learning/loop-coordinator.d.ts.map +1 -0
  84. package/dist/learning/loop-coordinator.js +96 -0
  85. package/dist/learning/loop-coordinator.js.map +1 -0
  86. package/dist/learning/maintenance-scheduler.d.ts +141 -0
  87. package/dist/learning/maintenance-scheduler.d.ts.map +1 -0
  88. package/dist/learning/maintenance-scheduler.js +186 -0
  89. package/dist/learning/maintenance-scheduler.js.map +1 -0
  90. package/dist/learning/meta-learner.d.ts.map +1 -1
  91. package/dist/learning/meta-learner.js +4 -21
  92. package/dist/learning/meta-learner.js.map +1 -1
  93. package/dist/learning/pipeline.d.ts +31 -4
  94. package/dist/learning/pipeline.d.ts.map +1 -1
  95. package/dist/learning/pipeline.js +64 -12
  96. package/dist/learning/pipeline.js.map +1 -1
  97. package/dist/learning/reflexion-generator.d.ts +64 -0
  98. package/dist/learning/reflexion-generator.d.ts.map +1 -0
  99. package/dist/learning/reflexion-generator.js +194 -0
  100. package/dist/learning/reflexion-generator.js.map +1 -0
  101. package/dist/learning/trajectory-sources/entire.d.ts +8 -5
  102. package/dist/learning/trajectory-sources/entire.d.ts.map +1 -1
  103. package/dist/learning/trajectory-sources/entire.js +13 -6
  104. package/dist/learning/trajectory-sources/entire.js.map +1 -1
  105. package/dist/learning/trajectory-sources/index.d.ts +1 -1
  106. package/dist/learning/trajectory-sources/index.d.ts.map +1 -1
  107. package/dist/learning/trajectory-sources/index.js +1 -1
  108. package/dist/learning/trajectory-sources/index.js.map +1 -1
  109. package/dist/learning/trajectory-sources/pipeline.d.ts +4 -4
  110. package/dist/learning/trajectory-sources/pipeline.d.ts.map +1 -1
  111. package/dist/learning/trajectory-sources/pipeline.js +2 -2
  112. package/dist/learning/trajectory-sources/pipeline.js.map +1 -1
  113. package/dist/learning/unified-pipeline.d.ts +281 -0
  114. package/dist/learning/unified-pipeline.d.ts.map +1 -0
  115. package/dist/learning/unified-pipeline.js +637 -0
  116. package/dist/learning/unified-pipeline.js.map +1 -0
  117. package/dist/memory/candidate-retrieval.d.ts +43 -0
  118. package/dist/memory/candidate-retrieval.d.ts.map +1 -0
  119. package/dist/memory/candidate-retrieval.js +41 -0
  120. package/dist/memory/candidate-retrieval.js.map +1 -0
  121. package/dist/memory/causal-store.d.ts +97 -0
  122. package/dist/memory/causal-store.d.ts.map +1 -0
  123. package/dist/memory/causal-store.js +209 -0
  124. package/dist/memory/causal-store.js.map +1 -0
  125. package/dist/memory/coherence.d.ts +71 -0
  126. package/dist/memory/coherence.d.ts.map +1 -0
  127. package/dist/memory/coherence.js +176 -0
  128. package/dist/memory/coherence.js.map +1 -0
  129. package/dist/memory/experience.d.ts +39 -6
  130. package/dist/memory/experience.d.ts.map +1 -1
  131. package/dist/memory/experience.js +193 -49
  132. package/dist/memory/experience.js.map +1 -1
  133. package/dist/memory/index.d.ts +7 -0
  134. package/dist/memory/index.d.ts.map +1 -1
  135. package/dist/memory/index.js +12 -0
  136. package/dist/memory/index.js.map +1 -1
  137. package/dist/memory/knowledge-bank.d.ts +14 -0
  138. package/dist/memory/knowledge-bank.d.ts.map +1 -1
  139. package/dist/memory/knowledge-bank.js +45 -0
  140. package/dist/memory/knowledge-bank.js.map +1 -1
  141. package/dist/memory/meta.d.ts +7 -8
  142. package/dist/memory/meta.d.ts.map +1 -1
  143. package/dist/memory/meta.js +73 -79
  144. package/dist/memory/meta.js.map +1 -1
  145. package/dist/memory/playbook.d.ts +26 -9
  146. package/dist/memory/playbook.d.ts.map +1 -1
  147. package/dist/memory/playbook.js +198 -74
  148. package/dist/memory/playbook.js.map +1 -1
  149. package/dist/memory/reasoning-bank.d.ts +130 -0
  150. package/dist/memory/reasoning-bank.d.ts.map +1 -0
  151. package/dist/memory/reasoning-bank.js +342 -0
  152. package/dist/memory/reasoning-bank.js.map +1 -0
  153. package/dist/memory/reflexion.d.ts +59 -0
  154. package/dist/memory/reflexion.d.ts.map +1 -0
  155. package/dist/memory/reflexion.js +96 -0
  156. package/dist/memory/reflexion.js.map +1 -0
  157. package/dist/memory/system.d.ts +7 -2
  158. package/dist/memory/system.d.ts.map +1 -1
  159. package/dist/memory/system.js +19 -7
  160. package/dist/memory/system.js.map +1 -1
  161. package/dist/memory/temporal-compressor.d.ts +126 -0
  162. package/dist/memory/temporal-compressor.d.ts.map +1 -0
  163. package/dist/memory/temporal-compressor.js +335 -0
  164. package/dist/memory/temporal-compressor.js.map +1 -0
  165. package/dist/persistence/index.d.ts +11 -0
  166. package/dist/persistence/index.d.ts.map +1 -0
  167. package/dist/persistence/index.js +11 -0
  168. package/dist/persistence/index.js.map +1 -0
  169. package/dist/persistence/migrator.d.ts +40 -0
  170. package/dist/persistence/migrator.d.ts.map +1 -0
  171. package/dist/persistence/migrator.js +238 -0
  172. package/dist/persistence/migrator.js.map +1 -0
  173. package/dist/persistence/serializers.d.ts +45 -0
  174. package/dist/persistence/serializers.d.ts.map +1 -0
  175. package/dist/persistence/serializers.js +80 -0
  176. package/dist/persistence/serializers.js.map +1 -0
  177. package/dist/persistence/sqlite-persistence.d.ts +228 -0
  178. package/dist/persistence/sqlite-persistence.d.ts.map +1 -0
  179. package/dist/persistence/sqlite-persistence.js +588 -0
  180. package/dist/persistence/sqlite-persistence.js.map +1 -0
  181. package/dist/runtime/flows/learning.d.ts +10 -12
  182. package/dist/runtime/flows/learning.d.ts.map +1 -1
  183. package/dist/runtime/flows/learning.js +10 -23
  184. package/dist/runtime/flows/learning.js.map +1 -1
  185. package/dist/search/index.d.ts +1 -0
  186. package/dist/search/index.d.ts.map +1 -1
  187. package/dist/search/index.js +2 -0
  188. package/dist/search/index.js.map +1 -1
  189. package/dist/search/moe-gate.d.ts +124 -0
  190. package/dist/search/moe-gate.d.ts.map +1 -0
  191. package/dist/search/moe-gate.js +234 -0
  192. package/dist/search/moe-gate.js.map +1 -0
  193. package/dist/search/router.d.ts +32 -2
  194. package/dist/search/router.d.ts.map +1 -1
  195. package/dist/search/router.js +87 -4
  196. package/dist/search/router.js.map +1 -1
  197. package/dist/session-bank/git-reader.d.ts +9 -4
  198. package/dist/session-bank/git-reader.d.ts.map +1 -1
  199. package/dist/session-bank/git-reader.js +22 -15
  200. package/dist/session-bank/git-reader.js.map +1 -1
  201. package/dist/session-bank/index.d.ts +2 -2
  202. package/dist/session-bank/index.d.ts.map +1 -1
  203. package/dist/session-bank/index.js +2 -2
  204. package/dist/session-bank/index.js.map +1 -1
  205. package/dist/session-bank/parser.d.ts +16 -5
  206. package/dist/session-bank/parser.d.ts.map +1 -1
  207. package/dist/session-bank/parser.js +187 -80
  208. package/dist/session-bank/parser.js.map +1 -1
  209. package/dist/session-bank/session-bank.d.ts +5 -0
  210. package/dist/session-bank/session-bank.d.ts.map +1 -1
  211. package/dist/session-bank/session-bank.js +30 -9
  212. package/dist/session-bank/session-bank.js.map +1 -1
  213. package/dist/session-bank/types.d.ts +4 -1
  214. package/dist/session-bank/types.d.ts.map +1 -1
  215. package/dist/session-bank/types.js +3 -3
  216. package/dist/session-bank/types.js.map +1 -1
  217. package/dist/surfacing/skill-publisher.d.ts.map +1 -1
  218. package/dist/surfacing/skill-publisher.js +15 -43
  219. package/dist/surfacing/skill-publisher.js.map +1 -1
  220. package/dist/surfacing/sqlite-storage-adapter.d.ts.map +1 -1
  221. package/dist/surfacing/sqlite-storage-adapter.js +13 -21
  222. package/dist/surfacing/sqlite-storage-adapter.js.map +1 -1
  223. package/dist/types/config.d.ts +100 -0
  224. package/dist/types/config.d.ts.map +1 -1
  225. package/dist/types/config.js +27 -0
  226. package/dist/types/config.js.map +1 -1
  227. package/dist/types/index.d.ts +2 -2
  228. package/dist/types/index.d.ts.map +1 -1
  229. package/dist/types/index.js +1 -1
  230. package/dist/types/index.js.map +1 -1
  231. package/dist/types/memory.d.ts +52 -0
  232. package/dist/types/memory.d.ts.map +1 -1
  233. package/dist/types/memory.js +13 -0
  234. package/dist/types/memory.js.map +1 -1
  235. package/dist/types/playbook.d.ts +4 -0
  236. package/dist/types/playbook.d.ts.map +1 -1
  237. package/dist/types/playbook.js.map +1 -1
  238. package/dist/utils/error-classifier.d.ts +30 -0
  239. package/dist/utils/error-classifier.d.ts.map +1 -0
  240. package/dist/utils/error-classifier.js +85 -0
  241. package/dist/utils/error-classifier.js.map +1 -0
  242. package/dist/utils/index.d.ts +3 -0
  243. package/dist/utils/index.d.ts.map +1 -1
  244. package/dist/utils/index.js +3 -0
  245. package/dist/utils/index.js.map +1 -1
  246. package/dist/utils/partitioned-store.d.ts +93 -0
  247. package/dist/utils/partitioned-store.d.ts.map +1 -0
  248. package/dist/utils/partitioned-store.js +251 -0
  249. package/dist/utils/partitioned-store.js.map +1 -0
  250. package/dist/utils/trajectory-helpers.d.ts +39 -0
  251. package/dist/utils/trajectory-helpers.d.ts.map +1 -0
  252. package/dist/utils/trajectory-helpers.js +57 -0
  253. package/dist/utils/trajectory-helpers.js.map +1 -0
  254. package/dist/workspace/runner.d.ts +3 -4
  255. package/dist/workspace/runner.d.ts.map +1 -1
  256. package/dist/workspace/runner.js.map +1 -1
  257. package/dist/workspace/types.d.ts +9 -2
  258. package/dist/workspace/types.d.ts.map +1 -1
  259. package/dist/workspace/types.js.map +1 -1
  260. package/package.json +6 -4
  261. package/references/sessionlog/.husky/pre-commit +1 -0
  262. package/references/sessionlog/.lintstagedrc.json +4 -0
  263. package/references/sessionlog/.prettierignore +4 -0
  264. package/references/sessionlog/.prettierrc.json +11 -0
  265. package/references/sessionlog/LICENSE +21 -0
  266. package/references/sessionlog/README.md +453 -0
  267. package/references/sessionlog/eslint.config.js +58 -0
  268. package/references/sessionlog/package-lock.json +3672 -0
  269. package/references/sessionlog/package.json +65 -0
  270. package/references/sessionlog/src/__tests__/agent-hooks.test.ts +570 -0
  271. package/references/sessionlog/src/__tests__/agent-registry.test.ts +127 -0
  272. package/references/sessionlog/src/__tests__/claude-code-hooks.test.ts +225 -0
  273. package/references/sessionlog/src/__tests__/claude-generator.test.ts +46 -0
  274. package/references/sessionlog/src/__tests__/commit-msg.test.ts +86 -0
  275. package/references/sessionlog/src/__tests__/cursor-agent.test.ts +224 -0
  276. package/references/sessionlog/src/__tests__/e2e-live.test.ts +890 -0
  277. package/references/sessionlog/src/__tests__/event-log.test.ts +183 -0
  278. package/references/sessionlog/src/__tests__/flush-sentinel.test.ts +105 -0
  279. package/references/sessionlog/src/__tests__/gemini-agent.test.ts +375 -0
  280. package/references/sessionlog/src/__tests__/git-hooks.test.ts +78 -0
  281. package/references/sessionlog/src/__tests__/hook-managers.test.ts +121 -0
  282. package/references/sessionlog/src/__tests__/lifecycle-tasks.test.ts +759 -0
  283. package/references/sessionlog/src/__tests__/opencode-agent.test.ts +338 -0
  284. package/references/sessionlog/src/__tests__/redaction.test.ts +136 -0
  285. package/references/sessionlog/src/__tests__/session-repo.test.ts +353 -0
  286. package/references/sessionlog/src/__tests__/session-store.test.ts +166 -0
  287. package/references/sessionlog/src/__tests__/setup-ccweb.test.ts +466 -0
  288. package/references/sessionlog/src/__tests__/skill-live.test.ts +461 -0
  289. package/references/sessionlog/src/__tests__/summarize.test.ts +348 -0
  290. package/references/sessionlog/src/__tests__/task-plan-e2e.test.ts +610 -0
  291. package/references/sessionlog/src/__tests__/task-plan-live.test.ts +632 -0
  292. package/references/sessionlog/src/__tests__/transcript-timestamp.test.ts +121 -0
  293. package/references/sessionlog/src/__tests__/types.test.ts +166 -0
  294. package/references/sessionlog/src/__tests__/utils.test.ts +333 -0
  295. package/references/sessionlog/src/__tests__/validation.test.ts +103 -0
  296. package/references/sessionlog/src/__tests__/worktree.test.ts +57 -0
  297. package/references/sessionlog/src/agent/agents/claude-code.ts +1089 -0
  298. package/references/sessionlog/src/agent/agents/cursor.ts +361 -0
  299. package/references/sessionlog/src/agent/agents/gemini-cli.ts +632 -0
  300. package/references/sessionlog/src/agent/agents/opencode.ts +540 -0
  301. package/references/sessionlog/src/agent/registry.ts +143 -0
  302. package/references/sessionlog/src/agent/session-types.ts +113 -0
  303. package/references/sessionlog/src/agent/types.ts +220 -0
  304. package/references/sessionlog/src/cli.ts +597 -0
  305. package/references/sessionlog/src/commands/clean.ts +133 -0
  306. package/references/sessionlog/src/commands/disable.ts +84 -0
  307. package/references/sessionlog/src/commands/doctor.ts +145 -0
  308. package/references/sessionlog/src/commands/enable.ts +202 -0
  309. package/references/sessionlog/src/commands/explain.ts +261 -0
  310. package/references/sessionlog/src/commands/reset.ts +105 -0
  311. package/references/sessionlog/src/commands/resume.ts +180 -0
  312. package/references/sessionlog/src/commands/rewind.ts +195 -0
  313. package/references/sessionlog/src/commands/setup-ccweb.ts +275 -0
  314. package/references/sessionlog/src/commands/status.ts +172 -0
  315. package/references/sessionlog/src/config.ts +165 -0
  316. package/references/sessionlog/src/events/event-log.ts +126 -0
  317. package/references/sessionlog/src/git-operations.ts +558 -0
  318. package/references/sessionlog/src/hooks/git-hooks.ts +165 -0
  319. package/references/sessionlog/src/hooks/lifecycle.ts +391 -0
  320. package/references/sessionlog/src/index.ts +650 -0
  321. package/references/sessionlog/src/security/redaction.ts +283 -0
  322. package/references/sessionlog/src/session/state-machine.ts +452 -0
  323. package/references/sessionlog/src/store/checkpoint-store.ts +509 -0
  324. package/references/sessionlog/src/store/native-store.ts +173 -0
  325. package/references/sessionlog/src/store/provider-types.ts +99 -0
  326. package/references/sessionlog/src/store/session-store.ts +266 -0
  327. package/references/sessionlog/src/strategy/attribution.ts +296 -0
  328. package/references/sessionlog/src/strategy/common.ts +207 -0
  329. package/references/sessionlog/src/strategy/content-overlap.ts +228 -0
  330. package/references/sessionlog/src/strategy/manual-commit.ts +988 -0
  331. package/references/sessionlog/src/strategy/types.ts +279 -0
  332. package/references/sessionlog/src/summarize/claude-generator.ts +115 -0
  333. package/references/sessionlog/src/summarize/summarize.ts +432 -0
  334. package/references/sessionlog/src/types.ts +508 -0
  335. package/references/sessionlog/src/utils/chunk-files.ts +49 -0
  336. package/references/sessionlog/src/utils/commit-message.ts +65 -0
  337. package/references/sessionlog/src/utils/detect-agent.ts +36 -0
  338. package/references/sessionlog/src/utils/hook-managers.ts +125 -0
  339. package/references/sessionlog/src/utils/ide-tags.ts +32 -0
  340. package/references/sessionlog/src/utils/paths.ts +79 -0
  341. package/references/sessionlog/src/utils/preview-rewind.ts +80 -0
  342. package/references/sessionlog/src/utils/rewind-conflict.ts +121 -0
  343. package/references/sessionlog/src/utils/shadow-branch.ts +109 -0
  344. package/references/sessionlog/src/utils/string-utils.ts +46 -0
  345. package/references/sessionlog/src/utils/todo-extract.ts +188 -0
  346. package/references/sessionlog/src/utils/trailers.ts +187 -0
  347. package/references/sessionlog/src/utils/transcript-parse.ts +177 -0
  348. package/references/sessionlog/src/utils/transcript-timestamp.ts +59 -0
  349. package/references/sessionlog/src/utils/tree-ops.ts +219 -0
  350. package/references/sessionlog/src/utils/tty.ts +72 -0
  351. package/references/sessionlog/src/utils/validation.ts +65 -0
  352. package/references/sessionlog/src/utils/worktree.ts +58 -0
  353. package/references/sessionlog/src/wire-types.ts +59 -0
  354. package/references/sessionlog/templates/setup-env.sh +153 -0
  355. package/references/sessionlog/tsconfig.json +18 -0
  356. package/references/sessionlog/vitest.config.ts +12 -0
  357. package/references/skill-tree/.sudocode/issues.jsonl +8 -0
  358. package/references/skill-tree/.sudocode/specs.jsonl +2 -0
  359. package/references/skill-tree/CLAUDE.md +56 -80
  360. package/references/skill-tree/README.md +188 -140
  361. package/references/skill-tree/examples/basic-usage.ts +95 -121
  362. package/references/skill-tree/package-lock.json +369 -26
  363. package/references/skill-tree/package.json +1 -1
  364. package/src/atlas.ts +97 -67
  365. package/src/bin/cli-utils.ts +220 -0
  366. package/src/bin/cognitive-core.ts +84 -392
  367. package/src/bin/commands/kb.ts +266 -0
  368. package/src/bin/commands/learn.ts +100 -0
  369. package/src/bin/commands/legacy.ts +182 -0
  370. package/src/bin/commands/run.ts +113 -0
  371. package/src/bin/commands/sessions.ts +221 -0
  372. package/src/bin/commands/skills.ts +146 -0
  373. package/src/embeddings/index.ts +3 -0
  374. package/src/embeddings/inverted-index.ts +134 -0
  375. package/src/embeddings/manager.ts +13 -8
  376. package/src/embeddings/vector-store.ts +21 -9
  377. package/src/factory.ts +33 -16
  378. package/src/index.ts +109 -9
  379. package/src/learning/analyzer.ts +21 -37
  380. package/src/learning/energy-evaluator.ts +282 -0
  381. package/src/learning/healing-orchestrator.ts +383 -0
  382. package/src/learning/index.ts +65 -9
  383. package/src/learning/instant-loop.ts +357 -0
  384. package/src/learning/maintenance-scheduler.ts +271 -0
  385. package/src/learning/meta-learner.ts +5 -23
  386. package/src/learning/reflexion-generator.ts +273 -0
  387. package/src/learning/trajectory-sources/entire.ts +24 -13
  388. package/src/learning/trajectory-sources/index.ts +2 -2
  389. package/src/learning/trajectory-sources/pipeline.ts +5 -5
  390. package/src/learning/unified-pipeline.ts +921 -0
  391. package/src/memory/candidate-retrieval.ts +71 -0
  392. package/src/memory/causal-store.ts +273 -0
  393. package/src/memory/coherence.ts +252 -0
  394. package/src/memory/experience.ts +217 -50
  395. package/src/memory/index.ts +43 -0
  396. package/src/memory/knowledge-bank.ts +57 -0
  397. package/src/memory/meta.ts +78 -96
  398. package/src/memory/playbook.ts +239 -75
  399. package/src/memory/reasoning-bank.ts +458 -0
  400. package/src/memory/reflexion.ts +122 -0
  401. package/src/memory/system.ts +21 -5
  402. package/src/memory/temporal-compressor.ts +409 -0
  403. package/src/persistence/index.ts +37 -0
  404. package/src/persistence/migrator.ts +298 -0
  405. package/src/persistence/serializers.ts +79 -0
  406. package/src/persistence/sqlite-persistence.ts +925 -0
  407. package/src/runtime/flows/learning.ts +25 -42
  408. package/src/search/index.ts +10 -0
  409. package/src/search/moe-gate.ts +304 -0
  410. package/src/search/router.ts +111 -4
  411. package/src/session-bank/git-reader.ts +29 -19
  412. package/src/session-bank/index.ts +4 -2
  413. package/src/session-bank/parser.ts +280 -98
  414. package/src/session-bank/session-bank.ts +33 -12
  415. package/src/session-bank/types.ts +8 -5
  416. package/src/surfacing/skill-publisher.ts +17 -49
  417. package/src/surfacing/sqlite-storage-adapter.ts +16 -32
  418. package/src/types/config.ts +30 -0
  419. package/src/types/index.ts +3 -0
  420. package/src/types/memory.ts +30 -0
  421. package/src/types/playbook.ts +4 -0
  422. package/src/utils/error-classifier.ts +113 -0
  423. package/src/utils/index.ts +18 -0
  424. package/src/utils/partitioned-store.ts +299 -0
  425. package/src/utils/trajectory-helpers.ts +79 -0
  426. package/src/workspace/runner.ts +3 -3
  427. package/src/workspace/types.ts +10 -2
  428. package/tests/embeddings/inverted-index.test.ts +138 -0
  429. package/tests/feature-toggles.test.ts +275 -0
  430. package/tests/gap-fixes.test.ts +17 -4
  431. package/tests/integration/cli-e2e.test.ts +621 -0
  432. package/tests/integration/e2e.test.ts +6 -5
  433. package/tests/integration/entire-e2e.test.ts +314 -125
  434. package/tests/integration/persistence-e2e.test.ts +741 -0
  435. package/tests/integration/phase-e2e.test.ts +1143 -0
  436. package/tests/integration/session-bank.test.ts +20 -14
  437. package/tests/integration/sessionlog-e2e.test.ts +329 -0
  438. package/tests/integration/unified-pipeline-e2e.test.ts +634 -0
  439. package/tests/learning/analyzer.test.ts +1 -1
  440. package/tests/learning/energy-evaluator.test.ts +180 -0
  441. package/tests/learning/entire-trajectory-source.test.ts +25 -25
  442. package/tests/learning/healing-orchestrator.test.ts +269 -0
  443. package/tests/learning/instant-loop.test.ts +243 -0
  444. package/tests/learning/maintenance-scheduler.test.ts +191 -0
  445. package/tests/learning/reflexion-generator.test.ts +411 -0
  446. package/tests/learning/trajectory-sources.test.ts +12 -4
  447. package/tests/learning/unified-pipeline.test.ts +322 -0
  448. package/tests/mcp/playbook-server.test.ts +6 -1
  449. package/tests/memory/causal-store.test.ts +276 -0
  450. package/tests/memory/coherence.test.ts +232 -0
  451. package/tests/memory/experience.test.ts +8 -3
  452. package/tests/memory/playbook.test.ts +307 -1
  453. package/tests/memory/provenance.test.ts +11 -2
  454. package/tests/memory/reasoning-bank.test.ts +239 -0
  455. package/tests/memory/reflexion.test.ts +166 -0
  456. package/tests/memory/skill-exporter.test.ts +6 -1
  457. package/tests/memory/system.test.ts +6 -1
  458. package/tests/memory/temporal-compressor.test.ts +318 -0
  459. package/tests/persistence/migrator.test.ts +1009 -0
  460. package/tests/persistence/sqlite-persistence.test.ts +635 -0
  461. package/tests/runtime/agent-manager.test.ts +6 -1
  462. package/tests/runtime/delegate.test.ts +6 -1
  463. package/tests/search/moe-gate.test.ts +250 -0
  464. package/tests/search/refinement-loop.test.ts +11 -2
  465. package/tests/search/router.test.ts +81 -2
  466. package/tests/session-bank/fixtures/sessionlog-root-metadata.json +16 -0
  467. package/tests/session-bank/fixtures/sessionlog-session/full.jsonl +6 -0
  468. package/tests/session-bank/fixtures/sessionlog-session/metadata.json +55 -0
  469. package/tests/session-bank/git-reader.test.ts +13 -13
  470. package/tests/session-bank/parser.test.ts +135 -3
  471. package/tests/session-bank/session-bank.test.ts +1 -1
  472. package/tests/surfacing/skill-library.test.ts +6 -1
  473. package/tests/surfacing/skill-publisher.test.ts +24 -58
  474. package/tests/surfacing/sqlite-storage-adapter.test.ts +11 -23
  475. package/tests/utils/partitioned-store.test.ts +230 -0
  476. package/tests/workspace/full-flow.test.ts +10 -4
  477. package/tests/workspace/runner.test.ts +10 -4
  478. package/docs/DESIGN-workspace-migration.md +0 -1079
  479. package/docs/PLAN-agentic-workspace-implementation.md +0 -717
  480. package/docs/PLAN-graph-migration.md +0 -299
  481. package/docs/PLAN-session-bank-implementation.md +0 -474
  482. package/src/learning/pipeline.ts +0 -323
  483. package/tests/learning/pipeline.test.ts +0 -176
@@ -0,0 +1,298 @@
1
+ /**
2
+ * JsonToSqliteMigrator — One-time migration from JSON files to unified SQLite.
3
+ *
4
+ * Runs on first init when schema_version is empty.
5
+ * Each collection migrates in its own transaction.
6
+ * Old directories are renamed to {collection}.migrated/ as backup.
7
+ */
8
+
9
+ import { join } from 'node:path';
10
+ import { existsSync, renameSync, readdirSync, statSync } from 'node:fs';
11
+ import { readFile } from 'node:fs/promises';
12
+ import type { SqlitePersistence } from './sqlite-persistence.js';
13
+ import type { Experience, ReflexionEpisode } from '../types/memory.js';
14
+ import type { Playbook, PlaybookOrigin, PlaybookComplexity } from '../types/playbook.js';
15
+ import type { MetaObservation, MetaStrategy } from '../types/meta.js';
16
+
17
+ export interface MigrationResult {
18
+ migrated: boolean;
19
+ counts: Record<string, number>;
20
+ }
21
+
22
+ export class JsonToSqliteMigrator {
23
+ constructor(
24
+ private persistence: SqlitePersistence,
25
+ private baseDir: string,
26
+ ) {}
27
+
28
+ /**
29
+ * Run migration if needed (schema_version < 1).
30
+ */
31
+ async migrate(): Promise<MigrationResult> {
32
+ const version = this.persistence.getSchemaVersion();
33
+ if (version >= 1) {
34
+ return { migrated: false, counts: {} };
35
+ }
36
+
37
+ const counts: Record<string, number> = {};
38
+
39
+ counts.experiences = await this.migrateCollection(
40
+ 'experiences',
41
+ (data) => this.persistence.insertExperience(this.toExperience(data)),
42
+ );
43
+
44
+ counts.playbooks = await this.migrateCollection(
45
+ 'playbooks',
46
+ (data) => this.persistence.insertPlaybook(this.toPlaybook(data)),
47
+ );
48
+
49
+ counts.reflexionEpisodes = await this.migrateCollection(
50
+ 'reflexion-episodes',
51
+ (data) => this.persistence.insertReflexionEpisode(this.toReflexionEpisode(data)),
52
+ );
53
+
54
+ counts.causalEdges = await this.migrateCollection(
55
+ 'causal-edges',
56
+ (data) => {
57
+ const edge = data as Record<string, unknown>;
58
+ this.persistence.insertCausalEdge({
59
+ id: edge.id as string,
60
+ cause: edge.cause as string,
61
+ effect: edge.effect as string,
62
+ confidence: edge.confidence as number,
63
+ domain: edge.domain as string,
64
+ sourceTrajectoryIds: (edge.sourceTrajectoryIds ?? []) as string[],
65
+ observedCount: (edge.observedCount ?? 1) as number,
66
+ createdAt: new Date(edge.createdAt as string),
67
+ updatedAt: new Date(edge.updatedAt as string),
68
+ });
69
+ },
70
+ );
71
+
72
+ counts.metaObservations = await this.migrateCollection(
73
+ 'meta-observations',
74
+ (data) => this.persistence.insertMetaObservation(this.toMetaObservation(data)),
75
+ );
76
+
77
+ counts.metaStrategies = await this.migrateCollection(
78
+ 'meta-strategies',
79
+ (data) => this.persistence.insertMetaStrategy(this.toMetaStrategy(data)),
80
+ );
81
+
82
+ this.persistence.setSchemaVersion(1);
83
+
84
+ return { migrated: true, counts };
85
+ }
86
+
87
+ /**
88
+ * Migrate a single collection directory (flat or partitioned).
89
+ * Returns the number of items migrated.
90
+ */
91
+ private async migrateCollection(
92
+ collection: string,
93
+ inserter: (data: unknown) => void,
94
+ ): Promise<number> {
95
+ const dir = join(this.baseDir, collection);
96
+ if (!existsSync(dir)) return 0;
97
+
98
+ const jsonFiles = this.collectJsonFiles(dir);
99
+ if (jsonFiles.length === 0) return 0;
100
+
101
+ let count = 0;
102
+
103
+ // Insert in batches within a transaction
104
+ const BATCH_SIZE = 100;
105
+ for (let i = 0; i < jsonFiles.length; i += BATCH_SIZE) {
106
+ const batch = jsonFiles.slice(i, i + BATCH_SIZE);
107
+ const batchData: unknown[] = [];
108
+
109
+ for (const filePath of batch) {
110
+ try {
111
+ const content = await readFile(filePath, 'utf-8');
112
+ const data = JSON.parse(content);
113
+ batchData.push(data);
114
+ } catch {
115
+ // Skip unparseable files
116
+ }
117
+ }
118
+
119
+ if (batchData.length > 0) {
120
+ this.persistence.transaction(() => {
121
+ for (const data of batchData) {
122
+ try {
123
+ inserter(data);
124
+ count++;
125
+ } catch {
126
+ // Skip items that fail to insert
127
+ }
128
+ }
129
+ });
130
+ }
131
+ }
132
+
133
+ // Rename directory as backup
134
+ const backupDir = `${dir}.migrated`;
135
+ if (!existsSync(backupDir)) {
136
+ try {
137
+ renameSync(dir, backupDir);
138
+ } catch {
139
+ // Non-fatal: backup rename failure doesn't block migration
140
+ }
141
+ }
142
+
143
+ return count;
144
+ }
145
+
146
+ /**
147
+ * Recursively collect all .json files in a directory (handles partitioned stores).
148
+ */
149
+ private collectJsonFiles(dir: string): string[] {
150
+ const files: string[] = [];
151
+
152
+ try {
153
+ const entries = readdirSync(dir);
154
+ for (const entry of entries) {
155
+ if (entry.startsWith('_')) continue; // Skip _index.json, _global metadata
156
+ const fullPath = join(dir, entry);
157
+ const st = statSync(fullPath);
158
+
159
+ if (st.isDirectory()) {
160
+ // Recurse into partition directories
161
+ files.push(...this.collectJsonFiles(fullPath));
162
+ } else if (entry.endsWith('.json')) {
163
+ files.push(fullPath);
164
+ }
165
+ }
166
+ } catch {
167
+ // Directory read failure
168
+ }
169
+
170
+ return files;
171
+ }
172
+
173
+ // ==========================================================================
174
+ // Type coercion helpers (JSON data → typed objects)
175
+ // ==========================================================================
176
+
177
+ private toExperience(data: unknown): Experience {
178
+ const d = data as Record<string, unknown>;
179
+ return {
180
+ id: d.id as string,
181
+ taskInput: d.taskInput as string,
182
+ solutionOutput: d.solutionOutput as string,
183
+ feedback: d.feedback as string,
184
+ success: d.success as boolean,
185
+ domain: d.domain as string,
186
+ embedding: d.embedding as number[] | undefined,
187
+ trajectoryId: d.trajectoryId as string,
188
+ usageCount: (d.usageCount ?? 0) as number,
189
+ accessScore: (d.accessScore ?? 0) as number,
190
+ retrievalCount: (d.retrievalCount ?? 0) as number,
191
+ tier: (d.tier ?? 'hot') as 'hot' | 'warm' | 'cold',
192
+ compressed: d.compressed as { keySteps: string[]; summary: string; originalStepCount: number } | undefined,
193
+ metadata: (d.metadata ?? {}) as Record<string, unknown>,
194
+ createdAt: new Date(d.createdAt as string),
195
+ lastAccessedAt: d.lastAccessedAt ? new Date(d.lastAccessedAt as string) : undefined,
196
+ };
197
+ }
198
+
199
+ private toPlaybook(data: unknown): Playbook {
200
+ const d = data as Record<string, unknown>;
201
+ const evolution = d.evolution as Record<string, unknown> ?? {};
202
+ const provenance = d.provenance as Record<string, unknown> | undefined;
203
+
204
+ return {
205
+ id: d.id as string,
206
+ name: d.name as string,
207
+ applicability: d.applicability as { situations: string[]; triggers: string[]; antiPatterns: string[]; domains: string[] },
208
+ guidance: d.guidance as { strategy: string; tactics: string[]; steps?: string[]; codeExample?: string },
209
+ verification: (d.verification ?? { successIndicators: [], failureIndicators: [] }) as { successIndicators: string[]; failureIndicators: string[]; rollbackStrategy?: string },
210
+ evolution: {
211
+ ...evolution,
212
+ version: (evolution.version ?? '1.0.0') as string,
213
+ createdFrom: (evolution.createdFrom ?? []) as string[],
214
+ failures: (evolution.failures ?? []) as { trajectoryId: string; context: string; failureMode: string; timestamp: Date }[],
215
+ refinements: (evolution.refinements ?? []) as { context: string; addition: string; source: 'failure' | 'success' | 'manual'; addedAt: Date }[],
216
+ successCount: (evolution.successCount ?? 0) as number,
217
+ failureCount: (evolution.failureCount ?? 0) as number,
218
+ lastUsed: evolution.lastUsed ? new Date(evolution.lastUsed as string) : undefined,
219
+ consolidationStrength: evolution.consolidationStrength as number | undefined,
220
+ domainBreadth: evolution.domainBreadth as number | undefined,
221
+ },
222
+ provenance: provenance ? {
223
+ origin: provenance.origin as PlaybookOrigin,
224
+ sourceFile: provenance.sourceFile as string | undefined,
225
+ importedFrom: provenance.importedFrom as string | undefined,
226
+ curatedBy: provenance.curatedBy as string | undefined,
227
+ recordedAt: new Date(provenance.recordedAt as string),
228
+ } : undefined,
229
+ confidence: (d.confidence ?? 0.3) as number,
230
+ complexity: (d.complexity ?? 'moderate') as PlaybookComplexity,
231
+ estimatedEffort: (d.estimatedEffort ?? 3) as number,
232
+ embedding: d.embedding as number[] | undefined,
233
+ createdAt: new Date(d.createdAt as string),
234
+ updatedAt: new Date(d.updatedAt as string),
235
+ };
236
+ }
237
+
238
+ private toReflexionEpisode(data: unknown): ReflexionEpisode {
239
+ const d = data as Record<string, unknown>;
240
+ return {
241
+ id: d.id as string,
242
+ trajectoryId: d.trajectoryId as string,
243
+ taskSummary: d.taskSummary as string,
244
+ outcome: d.outcome as 'success' | 'partial' | 'failure',
245
+ selfCritique: d.selfCritique as string,
246
+ keyInsights: (d.keyInsights ?? []) as string[],
247
+ strategyAssessment: d.strategyAssessment as string,
248
+ suggestedPlaybookUpdates: (d.suggestedPlaybookUpdates ?? []) as string[],
249
+ domain: d.domain as string,
250
+ createdAt: new Date(d.createdAt as string),
251
+ };
252
+ }
253
+
254
+ private toMetaObservation(data: unknown): MetaObservation {
255
+ const d = data as Record<string, unknown>;
256
+ return {
257
+ id: d.id as string,
258
+ trajectoryId: d.trajectoryId as string,
259
+ routing: d.routing as { decision: 'adapt' | 'direct' | 'explore' | 'fallback'; confidence: number; reasoning: string },
260
+ memoryUsage: (d.memoryUsage ?? { experiencesRetrieved: 0, playbooksApplied: [], retrievalQuality: 'neutral' }) as {
261
+ experiencesRetrieved: number; playbooksApplied: string[]; retrievalQuality: 'helpful' | 'neutral' | 'misleading';
262
+ },
263
+ execution: (d.execution ?? { decompositionUsed: false, refinementIterations: 0, backtrackingOccurred: false, toolsUsed: [] }) as {
264
+ decompositionUsed: boolean; refinementIterations: number; backtrackingOccurred: boolean; toolsUsed: string[];
265
+ },
266
+ outcome: d.outcome as { success: boolean; quality: 'excellent' | 'good' | 'acceptable' | 'poor'; effortActual: number; effortEstimate: number },
267
+ lessons: (d.lessons ?? { whatWorked: [], whatFailed: [], suggestions: [] }) as {
268
+ whatWorked: string[]; whatFailed: string[]; suggestions: string[];
269
+ },
270
+ timestamp: new Date((d.timestamp as string) ?? new Date().toISOString()),
271
+ };
272
+ }
273
+
274
+ private toMetaStrategy(data: unknown): MetaStrategy {
275
+ const d = data as Record<string, unknown>;
276
+ return {
277
+ id: d.id as string,
278
+ name: d.name as string,
279
+ condition: d.condition as { taskCharacteristics: string[]; memoryState: string[] },
280
+ adjustment: d.adjustment as { routingBias: Record<string, number>; retrievalModification: string; executionHint: string },
281
+ applicationCount: (d.applicationCount ?? 0) as number,
282
+ successRate: (d.successRate ?? 0) as number,
283
+ createdAt: new Date(d.createdAt as string),
284
+ updatedAt: new Date(d.updatedAt as string),
285
+ };
286
+ }
287
+ }
288
+
289
+ /**
290
+ * Create a migrator and run migration.
291
+ */
292
+ export async function runMigration(
293
+ persistence: SqlitePersistence,
294
+ baseDir: string,
295
+ ): Promise<MigrationResult> {
296
+ const migrator = new JsonToSqliteMigrator(persistence, baseDir);
297
+ return migrator.migrate();
298
+ }
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Serialization helpers for SQLite persistence.
3
+ *
4
+ * Handles conversions between TypeScript types and SQLite-compatible formats:
5
+ * - Date <-> ISO 8601 string
6
+ * - number[] <-> Float32Array BLOB
7
+ * - object <-> JSON string
8
+ */
9
+
10
+ /**
11
+ * Convert a Date (or string, or undefined) to an ISO 8601 string.
12
+ */
13
+ export function toISO(value: Date | string | undefined | null): string | null {
14
+ if (value === null || value === undefined) return null;
15
+ if (value instanceof Date) return value.toISOString();
16
+ return value;
17
+ }
18
+
19
+ /**
20
+ * Convert an ISO 8601 string (or null) back to a Date.
21
+ */
22
+ export function fromISO(value: string | null | undefined): Date | undefined {
23
+ if (!value) return undefined;
24
+ return new Date(value);
25
+ }
26
+
27
+ /**
28
+ * Convert a number[] embedding to a Buffer (Float32Array binary blob).
29
+ * Returns null if the input is undefined/null/empty.
30
+ */
31
+ export function embeddingToBlob(embedding: number[] | undefined | null): Buffer | null {
32
+ if (!embedding || embedding.length === 0) return null;
33
+ return Buffer.from(new Float32Array(embedding).buffer);
34
+ }
35
+
36
+ /**
37
+ * Convert a Buffer (Float32Array binary blob) back to a number[].
38
+ * Returns undefined if the input is null/undefined.
39
+ */
40
+ export function blobToEmbedding(blob: Buffer | null | undefined): number[] | undefined {
41
+ if (!blob) return undefined;
42
+ return Array.from(new Float32Array(blob.buffer, blob.byteOffset, blob.byteLength / 4));
43
+ }
44
+
45
+ /**
46
+ * Serialize an object to a JSON string for storage.
47
+ * Returns the default value string if input is undefined/null.
48
+ */
49
+ export function toJSON<T>(value: T | undefined | null, defaultValue = '{}'): string {
50
+ if (value === null || value === undefined) return defaultValue;
51
+ return JSON.stringify(value);
52
+ }
53
+
54
+ /**
55
+ * Parse a JSON string back to an object.
56
+ * Returns the default value if input is null/undefined/empty.
57
+ */
58
+ export function fromJSON<T>(value: string | null | undefined, defaultValue?: T): T {
59
+ if (!value) return defaultValue as T;
60
+ try {
61
+ return JSON.parse(value) as T;
62
+ } catch {
63
+ return defaultValue as T;
64
+ }
65
+ }
66
+
67
+ /**
68
+ * Convert a boolean to SQLite integer (0/1).
69
+ */
70
+ export function toInt(value: boolean): number {
71
+ return value ? 1 : 0;
72
+ }
73
+
74
+ /**
75
+ * Convert a SQLite integer (0/1) to boolean.
76
+ */
77
+ export function fromInt(value: number | null | undefined): boolean {
78
+ return value === 1;
79
+ }