cognitive-core 0.1.2 → 0.2.1

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 (528) hide show
  1. package/.claude/settings.json +111 -2
  2. package/.sessionlog/settings.json +4 -0
  3. package/CLAUDE.md +233 -0
  4. package/README.md +370 -54
  5. package/dist/atlas.d.ts +10 -10
  6. package/dist/atlas.d.ts.map +1 -1
  7. package/dist/atlas.js +79 -48
  8. package/dist/atlas.js.map +1 -1
  9. package/dist/bin/cli-utils.d.ts +37 -0
  10. package/dist/bin/cli-utils.d.ts.map +1 -0
  11. package/dist/bin/cli-utils.js +176 -0
  12. package/dist/bin/cli-utils.js.map +1 -0
  13. package/dist/bin/cognitive-core.d.ts +2 -12
  14. package/dist/bin/cognitive-core.d.ts.map +1 -1
  15. package/dist/bin/cognitive-core.js +76 -351
  16. package/dist/bin/cognitive-core.js.map +1 -1
  17. package/dist/bin/commands/kb.d.ts +6 -0
  18. package/dist/bin/commands/kb.d.ts.map +1 -0
  19. package/dist/bin/commands/kb.js +240 -0
  20. package/dist/bin/commands/kb.js.map +1 -0
  21. package/dist/bin/commands/learn.d.ts +6 -0
  22. package/dist/bin/commands/learn.d.ts.map +1 -0
  23. package/dist/bin/commands/learn.js +91 -0
  24. package/dist/bin/commands/learn.js.map +1 -0
  25. package/dist/bin/commands/legacy.d.ts +12 -0
  26. package/dist/bin/commands/legacy.d.ts.map +1 -0
  27. package/dist/bin/commands/legacy.js +142 -0
  28. package/dist/bin/commands/legacy.js.map +1 -0
  29. package/dist/bin/commands/run.d.ts +3 -0
  30. package/dist/bin/commands/run.d.ts.map +1 -0
  31. package/dist/bin/commands/run.js +99 -0
  32. package/dist/bin/commands/run.js.map +1 -0
  33. package/dist/bin/commands/sessions.d.ts +9 -0
  34. package/dist/bin/commands/sessions.d.ts.map +1 -0
  35. package/dist/bin/commands/sessions.js +183 -0
  36. package/dist/bin/commands/sessions.js.map +1 -0
  37. package/dist/bin/commands/skills.d.ts +6 -0
  38. package/dist/bin/commands/skills.d.ts.map +1 -0
  39. package/dist/bin/commands/skills.js +135 -0
  40. package/dist/bin/commands/skills.js.map +1 -0
  41. package/dist/embeddings/index.d.ts +1 -0
  42. package/dist/embeddings/index.d.ts.map +1 -1
  43. package/dist/embeddings/index.js +2 -0
  44. package/dist/embeddings/index.js.map +1 -1
  45. package/dist/embeddings/inverted-index.d.ts +47 -0
  46. package/dist/embeddings/inverted-index.d.ts.map +1 -0
  47. package/dist/embeddings/inverted-index.js +122 -0
  48. package/dist/embeddings/inverted-index.js.map +1 -0
  49. package/dist/embeddings/manager.d.ts +3 -1
  50. package/dist/embeddings/manager.d.ts.map +1 -1
  51. package/dist/embeddings/manager.js +12 -7
  52. package/dist/embeddings/manager.js.map +1 -1
  53. package/dist/embeddings/vector-store.d.ts +7 -3
  54. package/dist/embeddings/vector-store.d.ts.map +1 -1
  55. package/dist/embeddings/vector-store.js +22 -6
  56. package/dist/embeddings/vector-store.js.map +1 -1
  57. package/dist/factory.d.ts +11 -12
  58. package/dist/factory.d.ts.map +1 -1
  59. package/dist/factory.js +20 -7
  60. package/dist/factory.js.map +1 -1
  61. package/dist/index.d.ts +8 -7
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +42 -6
  64. package/dist/index.js.map +1 -1
  65. package/dist/learning/analyzer.d.ts.map +1 -1
  66. package/dist/learning/analyzer.js +17 -35
  67. package/dist/learning/analyzer.js.map +1 -1
  68. package/dist/learning/energy-evaluator.d.ts +128 -0
  69. package/dist/learning/energy-evaluator.d.ts.map +1 -0
  70. package/dist/learning/energy-evaluator.js +175 -0
  71. package/dist/learning/energy-evaluator.js.map +1 -0
  72. package/dist/learning/healing-orchestrator.d.ts +182 -0
  73. package/dist/learning/healing-orchestrator.d.ts.map +1 -0
  74. package/dist/learning/healing-orchestrator.js +250 -0
  75. package/dist/learning/healing-orchestrator.js.map +1 -0
  76. package/dist/learning/index.d.ts +7 -2
  77. package/dist/learning/index.d.ts.map +1 -1
  78. package/dist/learning/index.js +13 -2
  79. package/dist/learning/index.js.map +1 -1
  80. package/dist/learning/instant-loop.d.ts +87 -0
  81. package/dist/learning/instant-loop.d.ts.map +1 -0
  82. package/dist/learning/instant-loop.js +264 -0
  83. package/dist/learning/instant-loop.js.map +1 -0
  84. package/dist/learning/loop-coordinator.d.ts +61 -0
  85. package/dist/learning/loop-coordinator.d.ts.map +1 -0
  86. package/dist/learning/loop-coordinator.js +96 -0
  87. package/dist/learning/loop-coordinator.js.map +1 -0
  88. package/dist/learning/maintenance-scheduler.d.ts +141 -0
  89. package/dist/learning/maintenance-scheduler.d.ts.map +1 -0
  90. package/dist/learning/maintenance-scheduler.js +186 -0
  91. package/dist/learning/maintenance-scheduler.js.map +1 -0
  92. package/dist/learning/meta-learner.d.ts.map +1 -1
  93. package/dist/learning/meta-learner.js +4 -21
  94. package/dist/learning/meta-learner.js.map +1 -1
  95. package/dist/learning/pipeline.d.ts +31 -4
  96. package/dist/learning/pipeline.d.ts.map +1 -1
  97. package/dist/learning/pipeline.js +64 -12
  98. package/dist/learning/pipeline.js.map +1 -1
  99. package/dist/learning/reflexion-generator.d.ts +64 -0
  100. package/dist/learning/reflexion-generator.d.ts.map +1 -0
  101. package/dist/learning/reflexion-generator.js +194 -0
  102. package/dist/learning/reflexion-generator.js.map +1 -0
  103. package/dist/learning/trajectory-sources/entire.d.ts +8 -5
  104. package/dist/learning/trajectory-sources/entire.d.ts.map +1 -1
  105. package/dist/learning/trajectory-sources/entire.js +13 -6
  106. package/dist/learning/trajectory-sources/entire.js.map +1 -1
  107. package/dist/learning/trajectory-sources/index.d.ts +1 -1
  108. package/dist/learning/trajectory-sources/index.d.ts.map +1 -1
  109. package/dist/learning/trajectory-sources/index.js +1 -1
  110. package/dist/learning/trajectory-sources/index.js.map +1 -1
  111. package/dist/learning/trajectory-sources/pipeline.d.ts +4 -4
  112. package/dist/learning/trajectory-sources/pipeline.d.ts.map +1 -1
  113. package/dist/learning/trajectory-sources/pipeline.js +2 -2
  114. package/dist/learning/trajectory-sources/pipeline.js.map +1 -1
  115. package/dist/learning/unified-pipeline.d.ts +311 -0
  116. package/dist/learning/unified-pipeline.d.ts.map +1 -0
  117. package/dist/learning/unified-pipeline.js +844 -0
  118. package/dist/learning/unified-pipeline.js.map +1 -0
  119. package/dist/memory/candidate-retrieval.d.ts +43 -0
  120. package/dist/memory/candidate-retrieval.d.ts.map +1 -0
  121. package/dist/memory/candidate-retrieval.js +43 -0
  122. package/dist/memory/candidate-retrieval.js.map +1 -0
  123. package/dist/memory/causal-store.d.ts +97 -0
  124. package/dist/memory/causal-store.d.ts.map +1 -0
  125. package/dist/memory/causal-store.js +209 -0
  126. package/dist/memory/causal-store.js.map +1 -0
  127. package/dist/memory/coherence.d.ts +71 -0
  128. package/dist/memory/coherence.d.ts.map +1 -0
  129. package/dist/memory/coherence.js +176 -0
  130. package/dist/memory/coherence.js.map +1 -0
  131. package/dist/memory/experience.d.ts +39 -6
  132. package/dist/memory/experience.d.ts.map +1 -1
  133. package/dist/memory/experience.js +193 -49
  134. package/dist/memory/experience.js.map +1 -1
  135. package/dist/memory/index.d.ts +7 -0
  136. package/dist/memory/index.d.ts.map +1 -1
  137. package/dist/memory/index.js +12 -0
  138. package/dist/memory/index.js.map +1 -1
  139. package/dist/memory/knowledge-bank.d.ts +14 -0
  140. package/dist/memory/knowledge-bank.d.ts.map +1 -1
  141. package/dist/memory/knowledge-bank.js +45 -0
  142. package/dist/memory/knowledge-bank.js.map +1 -1
  143. package/dist/memory/meta.d.ts +7 -8
  144. package/dist/memory/meta.d.ts.map +1 -1
  145. package/dist/memory/meta.js +73 -79
  146. package/dist/memory/meta.js.map +1 -1
  147. package/dist/memory/playbook.d.ts +26 -9
  148. package/dist/memory/playbook.d.ts.map +1 -1
  149. package/dist/memory/playbook.js +198 -74
  150. package/dist/memory/playbook.js.map +1 -1
  151. package/dist/memory/reasoning-bank.d.ts +130 -0
  152. package/dist/memory/reasoning-bank.d.ts.map +1 -0
  153. package/dist/memory/reasoning-bank.js +342 -0
  154. package/dist/memory/reasoning-bank.js.map +1 -0
  155. package/dist/memory/reflexion.d.ts +59 -0
  156. package/dist/memory/reflexion.d.ts.map +1 -0
  157. package/dist/memory/reflexion.js +96 -0
  158. package/dist/memory/reflexion.js.map +1 -0
  159. package/dist/memory/system.d.ts +7 -2
  160. package/dist/memory/system.d.ts.map +1 -1
  161. package/dist/memory/system.js +19 -7
  162. package/dist/memory/system.js.map +1 -1
  163. package/dist/memory/temporal-compressor.d.ts +126 -0
  164. package/dist/memory/temporal-compressor.d.ts.map +1 -0
  165. package/dist/memory/temporal-compressor.js +335 -0
  166. package/dist/memory/temporal-compressor.js.map +1 -0
  167. package/dist/persistence/index.d.ts +11 -0
  168. package/dist/persistence/index.d.ts.map +1 -0
  169. package/dist/persistence/index.js +11 -0
  170. package/dist/persistence/index.js.map +1 -0
  171. package/dist/persistence/migrator.d.ts +40 -0
  172. package/dist/persistence/migrator.d.ts.map +1 -0
  173. package/dist/persistence/migrator.js +238 -0
  174. package/dist/persistence/migrator.js.map +1 -0
  175. package/dist/persistence/serializers.d.ts +45 -0
  176. package/dist/persistence/serializers.d.ts.map +1 -0
  177. package/dist/persistence/serializers.js +80 -0
  178. package/dist/persistence/serializers.js.map +1 -0
  179. package/dist/persistence/sqlite-persistence.d.ts +228 -0
  180. package/dist/persistence/sqlite-persistence.d.ts.map +1 -0
  181. package/dist/persistence/sqlite-persistence.js +588 -0
  182. package/dist/persistence/sqlite-persistence.js.map +1 -0
  183. package/dist/runtime/flows/learning.d.ts +10 -12
  184. package/dist/runtime/flows/learning.d.ts.map +1 -1
  185. package/dist/runtime/flows/learning.js +10 -23
  186. package/dist/runtime/flows/learning.js.map +1 -1
  187. package/dist/search/index.d.ts +1 -0
  188. package/dist/search/index.d.ts.map +1 -1
  189. package/dist/search/index.js +2 -0
  190. package/dist/search/index.js.map +1 -1
  191. package/dist/search/moe-gate.d.ts +124 -0
  192. package/dist/search/moe-gate.d.ts.map +1 -0
  193. package/dist/search/moe-gate.js +234 -0
  194. package/dist/search/moe-gate.js.map +1 -0
  195. package/dist/search/router.d.ts +32 -2
  196. package/dist/search/router.d.ts.map +1 -1
  197. package/dist/search/router.js +87 -4
  198. package/dist/search/router.js.map +1 -1
  199. package/dist/session-bank/git-reader.d.ts +9 -4
  200. package/dist/session-bank/git-reader.d.ts.map +1 -1
  201. package/dist/session-bank/git-reader.js +22 -15
  202. package/dist/session-bank/git-reader.js.map +1 -1
  203. package/dist/session-bank/index.d.ts +2 -2
  204. package/dist/session-bank/index.d.ts.map +1 -1
  205. package/dist/session-bank/index.js +2 -2
  206. package/dist/session-bank/index.js.map +1 -1
  207. package/dist/session-bank/parser.d.ts +16 -5
  208. package/dist/session-bank/parser.d.ts.map +1 -1
  209. package/dist/session-bank/parser.js +187 -80
  210. package/dist/session-bank/parser.js.map +1 -1
  211. package/dist/session-bank/session-bank.d.ts +5 -0
  212. package/dist/session-bank/session-bank.d.ts.map +1 -1
  213. package/dist/session-bank/session-bank.js +30 -9
  214. package/dist/session-bank/session-bank.js.map +1 -1
  215. package/dist/session-bank/types.d.ts +4 -1
  216. package/dist/session-bank/types.d.ts.map +1 -1
  217. package/dist/session-bank/types.js +3 -3
  218. package/dist/session-bank/types.js.map +1 -1
  219. package/dist/surfacing/skill-publisher.d.ts.map +1 -1
  220. package/dist/surfacing/skill-publisher.js +15 -43
  221. package/dist/surfacing/skill-publisher.js.map +1 -1
  222. package/dist/surfacing/sqlite-storage-adapter.d.ts.map +1 -1
  223. package/dist/surfacing/sqlite-storage-adapter.js +13 -21
  224. package/dist/surfacing/sqlite-storage-adapter.js.map +1 -1
  225. package/dist/types/config.d.ts +100 -0
  226. package/dist/types/config.d.ts.map +1 -1
  227. package/dist/types/config.js +27 -0
  228. package/dist/types/config.js.map +1 -1
  229. package/dist/types/index.d.ts +2 -2
  230. package/dist/types/index.d.ts.map +1 -1
  231. package/dist/types/index.js +1 -1
  232. package/dist/types/index.js.map +1 -1
  233. package/dist/types/memory.d.ts +52 -0
  234. package/dist/types/memory.d.ts.map +1 -1
  235. package/dist/types/memory.js +13 -0
  236. package/dist/types/memory.js.map +1 -1
  237. package/dist/types/playbook.d.ts +4 -0
  238. package/dist/types/playbook.d.ts.map +1 -1
  239. package/dist/types/playbook.js.map +1 -1
  240. package/dist/utils/error-classifier.d.ts +30 -0
  241. package/dist/utils/error-classifier.d.ts.map +1 -0
  242. package/dist/utils/error-classifier.js +85 -0
  243. package/dist/utils/error-classifier.js.map +1 -0
  244. package/dist/utils/index.d.ts +3 -0
  245. package/dist/utils/index.d.ts.map +1 -1
  246. package/dist/utils/index.js +3 -0
  247. package/dist/utils/index.js.map +1 -1
  248. package/dist/utils/partitioned-store.d.ts +93 -0
  249. package/dist/utils/partitioned-store.d.ts.map +1 -0
  250. package/dist/utils/partitioned-store.js +251 -0
  251. package/dist/utils/partitioned-store.js.map +1 -0
  252. package/dist/utils/trajectory-helpers.d.ts +39 -0
  253. package/dist/utils/trajectory-helpers.d.ts.map +1 -0
  254. package/dist/utils/trajectory-helpers.js +57 -0
  255. package/dist/utils/trajectory-helpers.js.map +1 -0
  256. package/dist/workspace/efficacy-toolkit.d.ts +164 -0
  257. package/dist/workspace/efficacy-toolkit.d.ts.map +1 -0
  258. package/dist/workspace/efficacy-toolkit.js +281 -0
  259. package/dist/workspace/efficacy-toolkit.js.map +1 -0
  260. package/dist/workspace/index.d.ts +2 -1
  261. package/dist/workspace/index.d.ts.map +1 -1
  262. package/dist/workspace/index.js +3 -1
  263. package/dist/workspace/index.js.map +1 -1
  264. package/dist/workspace/runner.d.ts +3 -4
  265. package/dist/workspace/runner.d.ts.map +1 -1
  266. package/dist/workspace/runner.js.map +1 -1
  267. package/dist/workspace/templates/index.d.ts +3 -0
  268. package/dist/workspace/templates/index.d.ts.map +1 -1
  269. package/dist/workspace/templates/index.js +6 -0
  270. package/dist/workspace/templates/index.js.map +1 -1
  271. package/dist/workspace/templates/playbook-decay-detection.d.ts +46 -0
  272. package/dist/workspace/templates/playbook-decay-detection.d.ts.map +1 -0
  273. package/dist/workspace/templates/playbook-decay-detection.js +197 -0
  274. package/dist/workspace/templates/playbook-decay-detection.js.map +1 -0
  275. package/dist/workspace/templates/playbook-efficacy-audit.d.ts +46 -0
  276. package/dist/workspace/templates/playbook-efficacy-audit.d.ts.map +1 -0
  277. package/dist/workspace/templates/playbook-efficacy-audit.js +160 -0
  278. package/dist/workspace/templates/playbook-efficacy-audit.js.map +1 -0
  279. package/dist/workspace/templates/playbook-lifecycle-review.d.ts +51 -0
  280. package/dist/workspace/templates/playbook-lifecycle-review.d.ts.map +1 -0
  281. package/dist/workspace/templates/playbook-lifecycle-review.js +187 -0
  282. package/dist/workspace/templates/playbook-lifecycle-review.js.map +1 -0
  283. package/dist/workspace/types.d.ts +9 -2
  284. package/dist/workspace/types.d.ts.map +1 -1
  285. package/dist/workspace/types.js.map +1 -1
  286. package/package.json +12 -4
  287. package/references/sessionlog/.husky/pre-commit +1 -0
  288. package/references/sessionlog/.lintstagedrc.json +4 -0
  289. package/references/sessionlog/.prettierignore +4 -0
  290. package/references/sessionlog/.prettierrc.json +11 -0
  291. package/references/sessionlog/LICENSE +21 -0
  292. package/references/sessionlog/README.md +453 -0
  293. package/references/sessionlog/eslint.config.js +58 -0
  294. package/references/sessionlog/package-lock.json +3672 -0
  295. package/references/sessionlog/package.json +65 -0
  296. package/references/sessionlog/src/__tests__/agent-hooks.test.ts +570 -0
  297. package/references/sessionlog/src/__tests__/agent-registry.test.ts +127 -0
  298. package/references/sessionlog/src/__tests__/claude-code-hooks.test.ts +225 -0
  299. package/references/sessionlog/src/__tests__/claude-generator.test.ts +46 -0
  300. package/references/sessionlog/src/__tests__/commit-msg.test.ts +86 -0
  301. package/references/sessionlog/src/__tests__/cursor-agent.test.ts +224 -0
  302. package/references/sessionlog/src/__tests__/e2e-live.test.ts +890 -0
  303. package/references/sessionlog/src/__tests__/event-log.test.ts +183 -0
  304. package/references/sessionlog/src/__tests__/flush-sentinel.test.ts +105 -0
  305. package/references/sessionlog/src/__tests__/gemini-agent.test.ts +375 -0
  306. package/references/sessionlog/src/__tests__/git-hooks.test.ts +78 -0
  307. package/references/sessionlog/src/__tests__/hook-managers.test.ts +121 -0
  308. package/references/sessionlog/src/__tests__/lifecycle-tasks.test.ts +759 -0
  309. package/references/sessionlog/src/__tests__/opencode-agent.test.ts +338 -0
  310. package/references/sessionlog/src/__tests__/redaction.test.ts +136 -0
  311. package/references/sessionlog/src/__tests__/session-repo.test.ts +353 -0
  312. package/references/sessionlog/src/__tests__/session-store.test.ts +166 -0
  313. package/references/sessionlog/src/__tests__/setup-ccweb.test.ts +466 -0
  314. package/references/sessionlog/src/__tests__/skill-live.test.ts +461 -0
  315. package/references/sessionlog/src/__tests__/summarize.test.ts +348 -0
  316. package/references/sessionlog/src/__tests__/task-plan-e2e.test.ts +610 -0
  317. package/references/sessionlog/src/__tests__/task-plan-live.test.ts +632 -0
  318. package/references/sessionlog/src/__tests__/transcript-timestamp.test.ts +121 -0
  319. package/references/sessionlog/src/__tests__/types.test.ts +166 -0
  320. package/references/sessionlog/src/__tests__/utils.test.ts +333 -0
  321. package/references/sessionlog/src/__tests__/validation.test.ts +103 -0
  322. package/references/sessionlog/src/__tests__/worktree.test.ts +57 -0
  323. package/references/sessionlog/src/agent/agents/claude-code.ts +1089 -0
  324. package/references/sessionlog/src/agent/agents/cursor.ts +361 -0
  325. package/references/sessionlog/src/agent/agents/gemini-cli.ts +632 -0
  326. package/references/sessionlog/src/agent/agents/opencode.ts +540 -0
  327. package/references/sessionlog/src/agent/registry.ts +143 -0
  328. package/references/sessionlog/src/agent/session-types.ts +113 -0
  329. package/references/sessionlog/src/agent/types.ts +220 -0
  330. package/references/sessionlog/src/cli.ts +597 -0
  331. package/references/sessionlog/src/commands/clean.ts +133 -0
  332. package/references/sessionlog/src/commands/disable.ts +84 -0
  333. package/references/sessionlog/src/commands/doctor.ts +145 -0
  334. package/references/sessionlog/src/commands/enable.ts +202 -0
  335. package/references/sessionlog/src/commands/explain.ts +261 -0
  336. package/references/sessionlog/src/commands/reset.ts +105 -0
  337. package/references/sessionlog/src/commands/resume.ts +180 -0
  338. package/references/sessionlog/src/commands/rewind.ts +195 -0
  339. package/references/sessionlog/src/commands/setup-ccweb.ts +275 -0
  340. package/references/sessionlog/src/commands/status.ts +172 -0
  341. package/references/sessionlog/src/config.ts +165 -0
  342. package/references/sessionlog/src/events/event-log.ts +126 -0
  343. package/references/sessionlog/src/git-operations.ts +558 -0
  344. package/references/sessionlog/src/hooks/git-hooks.ts +165 -0
  345. package/references/sessionlog/src/hooks/lifecycle.ts +391 -0
  346. package/references/sessionlog/src/index.ts +650 -0
  347. package/references/sessionlog/src/security/redaction.ts +283 -0
  348. package/references/sessionlog/src/session/state-machine.ts +452 -0
  349. package/references/sessionlog/src/store/checkpoint-store.ts +509 -0
  350. package/references/sessionlog/src/store/native-store.ts +173 -0
  351. package/references/sessionlog/src/store/provider-types.ts +99 -0
  352. package/references/sessionlog/src/store/session-store.ts +266 -0
  353. package/references/sessionlog/src/strategy/attribution.ts +296 -0
  354. package/references/sessionlog/src/strategy/common.ts +207 -0
  355. package/references/sessionlog/src/strategy/content-overlap.ts +228 -0
  356. package/references/sessionlog/src/strategy/manual-commit.ts +988 -0
  357. package/references/sessionlog/src/strategy/types.ts +279 -0
  358. package/references/sessionlog/src/summarize/claude-generator.ts +115 -0
  359. package/references/sessionlog/src/summarize/summarize.ts +432 -0
  360. package/references/sessionlog/src/types.ts +508 -0
  361. package/references/sessionlog/src/utils/chunk-files.ts +49 -0
  362. package/references/sessionlog/src/utils/commit-message.ts +65 -0
  363. package/references/sessionlog/src/utils/detect-agent.ts +36 -0
  364. package/references/sessionlog/src/utils/hook-managers.ts +125 -0
  365. package/references/sessionlog/src/utils/ide-tags.ts +32 -0
  366. package/references/sessionlog/src/utils/paths.ts +79 -0
  367. package/references/sessionlog/src/utils/preview-rewind.ts +80 -0
  368. package/references/sessionlog/src/utils/rewind-conflict.ts +121 -0
  369. package/references/sessionlog/src/utils/shadow-branch.ts +109 -0
  370. package/references/sessionlog/src/utils/string-utils.ts +46 -0
  371. package/references/sessionlog/src/utils/todo-extract.ts +188 -0
  372. package/references/sessionlog/src/utils/trailers.ts +187 -0
  373. package/references/sessionlog/src/utils/transcript-parse.ts +177 -0
  374. package/references/sessionlog/src/utils/transcript-timestamp.ts +59 -0
  375. package/references/sessionlog/src/utils/tree-ops.ts +219 -0
  376. package/references/sessionlog/src/utils/tty.ts +72 -0
  377. package/references/sessionlog/src/utils/validation.ts +65 -0
  378. package/references/sessionlog/src/utils/worktree.ts +58 -0
  379. package/references/sessionlog/src/wire-types.ts +59 -0
  380. package/references/sessionlog/templates/setup-env.sh +153 -0
  381. package/references/sessionlog/tsconfig.json +18 -0
  382. package/references/sessionlog/vitest.config.ts +12 -0
  383. package/references/skill-tree/.sudocode/issues.jsonl +8 -0
  384. package/references/skill-tree/.sudocode/specs.jsonl +2 -0
  385. package/references/skill-tree/CLAUDE.md +56 -80
  386. package/references/skill-tree/README.md +188 -140
  387. package/references/skill-tree/examples/basic-usage.ts +95 -121
  388. package/references/skill-tree/package-lock.json +369 -26
  389. package/references/skill-tree/package.json +1 -1
  390. package/src/atlas.ts +97 -67
  391. package/src/bin/cli-utils.ts +220 -0
  392. package/src/bin/cognitive-core.ts +84 -392
  393. package/src/bin/commands/kb.ts +266 -0
  394. package/src/bin/commands/learn.ts +100 -0
  395. package/src/bin/commands/legacy.ts +182 -0
  396. package/src/bin/commands/run.ts +113 -0
  397. package/src/bin/commands/sessions.ts +221 -0
  398. package/src/bin/commands/skills.ts +146 -0
  399. package/src/embeddings/index.ts +3 -0
  400. package/src/embeddings/inverted-index.ts +134 -0
  401. package/src/embeddings/manager.ts +13 -8
  402. package/src/embeddings/vector-store.ts +21 -9
  403. package/src/factory.ts +33 -16
  404. package/src/index.ts +136 -9
  405. package/src/learning/analyzer.ts +21 -37
  406. package/src/learning/energy-evaluator.ts +282 -0
  407. package/src/learning/healing-orchestrator.ts +383 -0
  408. package/src/learning/index.ts +66 -9
  409. package/src/learning/instant-loop.ts +357 -0
  410. package/src/learning/maintenance-scheduler.ts +271 -0
  411. package/src/learning/meta-learner.ts +5 -23
  412. package/src/learning/reflexion-generator.ts +273 -0
  413. package/src/learning/trajectory-sources/entire.ts +24 -13
  414. package/src/learning/trajectory-sources/index.ts +2 -2
  415. package/src/learning/trajectory-sources/pipeline.ts +5 -5
  416. package/src/learning/unified-pipeline.ts +1191 -0
  417. package/src/memory/candidate-retrieval.ts +72 -0
  418. package/src/memory/causal-store.ts +273 -0
  419. package/src/memory/coherence.ts +252 -0
  420. package/src/memory/experience.ts +217 -50
  421. package/src/memory/index.ts +43 -0
  422. package/src/memory/knowledge-bank.ts +57 -0
  423. package/src/memory/meta.ts +78 -96
  424. package/src/memory/playbook.ts +239 -75
  425. package/src/memory/reasoning-bank.ts +458 -0
  426. package/src/memory/reflexion.ts +122 -0
  427. package/src/memory/system.ts +21 -5
  428. package/src/memory/temporal-compressor.ts +409 -0
  429. package/src/persistence/index.ts +37 -0
  430. package/src/persistence/migrator.ts +298 -0
  431. package/src/persistence/serializers.ts +79 -0
  432. package/src/persistence/sqlite-persistence.ts +925 -0
  433. package/src/runtime/flows/learning.ts +25 -42
  434. package/src/search/index.ts +10 -0
  435. package/src/search/moe-gate.ts +304 -0
  436. package/src/search/router.ts +111 -4
  437. package/src/session-bank/git-reader.ts +29 -19
  438. package/src/session-bank/index.ts +4 -2
  439. package/src/session-bank/parser.ts +280 -98
  440. package/src/session-bank/session-bank.ts +33 -12
  441. package/src/session-bank/types.ts +8 -5
  442. package/src/surfacing/skill-publisher.ts +17 -49
  443. package/src/surfacing/sqlite-storage-adapter.ts +16 -32
  444. package/src/types/config.ts +30 -0
  445. package/src/types/index.ts +3 -0
  446. package/src/types/memory.ts +30 -0
  447. package/src/types/playbook.ts +4 -0
  448. package/src/utils/error-classifier.ts +113 -0
  449. package/src/utils/index.ts +18 -0
  450. package/src/utils/partitioned-store.ts +299 -0
  451. package/src/utils/trajectory-helpers.ts +79 -0
  452. package/src/workspace/efficacy-toolkit.ts +496 -0
  453. package/src/workspace/index.ts +29 -0
  454. package/src/workspace/runner.ts +3 -3
  455. package/src/workspace/templates/index.ts +24 -0
  456. package/src/workspace/templates/playbook-decay-detection.ts +272 -0
  457. package/src/workspace/templates/playbook-efficacy-audit.ts +246 -0
  458. package/src/workspace/templates/playbook-lifecycle-review.ts +274 -0
  459. package/src/workspace/types.ts +10 -2
  460. package/tests/embeddings/inverted-index.test.ts +138 -0
  461. package/tests/feature-toggles.test.ts +275 -0
  462. package/tests/fixtures/behavioral-trajectories.ts +210 -0
  463. package/tests/gap-fixes.test.ts +17 -4
  464. package/tests/integration/cli-e2e.test.ts +621 -0
  465. package/tests/integration/e2e.test.ts +6 -5
  466. package/tests/integration/entire-e2e.test.ts +314 -125
  467. package/tests/integration/persistence-e2e.test.ts +741 -0
  468. package/tests/integration/phase-e2e.test.ts +1143 -0
  469. package/tests/integration/pipeline-data-correctness.test.ts +794 -0
  470. package/tests/integration/session-bank.test.ts +20 -14
  471. package/tests/integration/sessionlog-e2e.test.ts +329 -0
  472. package/tests/integration/unified-pipeline-e2e.test.ts +634 -0
  473. package/tests/learning/analyzer.test.ts +1 -1
  474. package/tests/learning/energy-evaluator.test.ts +180 -0
  475. package/tests/learning/entire-trajectory-source.test.ts +25 -25
  476. package/tests/learning/healing-orchestrator.test.ts +269 -0
  477. package/tests/learning/instant-loop.test.ts +243 -0
  478. package/tests/learning/maintenance-scheduler.test.ts +191 -0
  479. package/tests/learning/meta-learner.test.ts +418 -0
  480. package/tests/learning/pipeline-memory-updates.test.ts +721 -0
  481. package/tests/learning/reflexion-generator.test.ts +411 -0
  482. package/tests/learning/trajectory-sources.test.ts +12 -4
  483. package/tests/learning/unified-pipeline-efficacy.test.ts +232 -0
  484. package/tests/learning/unified-pipeline.test.ts +322 -0
  485. package/tests/mcp/playbook-server.test.ts +6 -1
  486. package/tests/memory/candidate-retrieval.test.ts +167 -0
  487. package/tests/memory/causal-store.test.ts +276 -0
  488. package/tests/memory/coherence.test.ts +232 -0
  489. package/tests/memory/experience.test.ts +8 -3
  490. package/tests/memory/meta.test.ts +399 -0
  491. package/tests/memory/playbook.test.ts +307 -1
  492. package/tests/memory/provenance.test.ts +11 -2
  493. package/tests/memory/reasoning-bank.test.ts +239 -0
  494. package/tests/memory/reflexion.test.ts +166 -0
  495. package/tests/memory/skill-exporter.test.ts +6 -1
  496. package/tests/memory/system.test.ts +6 -1
  497. package/tests/memory/temporal-compressor.test.ts +318 -0
  498. package/tests/persistence/migrator.test.ts +1009 -0
  499. package/tests/persistence/sqlite-persistence.test.ts +635 -0
  500. package/tests/runtime/agent-manager.test.ts +6 -1
  501. package/tests/runtime/delegate.test.ts +6 -1
  502. package/tests/search/evaluator.test.ts +257 -0
  503. package/tests/search/moe-gate.test.ts +250 -0
  504. package/tests/search/refinement-loop.test.ts +11 -2
  505. package/tests/search/router.test.ts +81 -2
  506. package/tests/search/verification-runner.test.ts +357 -0
  507. package/tests/session-bank/fixtures/sessionlog-root-metadata.json +16 -0
  508. package/tests/session-bank/fixtures/sessionlog-session/full.jsonl +6 -0
  509. package/tests/session-bank/fixtures/sessionlog-session/metadata.json +55 -0
  510. package/tests/session-bank/git-reader.test.ts +13 -13
  511. package/tests/session-bank/parser.test.ts +135 -3
  512. package/tests/session-bank/session-bank.test.ts +1 -1
  513. package/tests/surfacing/skill-library.test.ts +6 -1
  514. package/tests/surfacing/skill-publisher.test.ts +24 -58
  515. package/tests/surfacing/sqlite-storage-adapter.test.ts +11 -23
  516. package/tests/utils/error-classifier.test.ts +149 -0
  517. package/tests/utils/partitioned-store.test.ts +230 -0
  518. package/tests/utils/trajectory-helpers.test.ts +163 -0
  519. package/tests/workspace/efficacy-toolkit.test.ts +404 -0
  520. package/tests/workspace/full-flow.test.ts +10 -4
  521. package/tests/workspace/runner.test.ts +10 -4
  522. package/tests/workspace/templates/playbook-efficacy.test.ts +377 -0
  523. package/docs/DESIGN-workspace-migration.md +0 -1079
  524. package/docs/PLAN-agentic-workspace-implementation.md +0 -717
  525. package/docs/PLAN-graph-migration.md +0 -299
  526. package/docs/PLAN-session-bank-implementation.md +0 -474
  527. package/src/learning/pipeline.ts +0 -323
  528. package/tests/learning/pipeline.test.ts +0 -176
@@ -0,0 +1,588 @@
1
+ /**
2
+ * SqlitePersistence — Unified SQLite database for all system-internal state.
3
+ *
4
+ * Single database file at `{baseDir}/cognitive-core.db` (configurable).
5
+ * Replaces JsonStore/PartitionedStore for system-internal data.
6
+ *
7
+ * Agent-accessible data (knowledge notes, published skills) stays as files.
8
+ * This DB is the system's internal brain — experiences, playbooks, causal edges,
9
+ * meta state, routing weights, vector embeddings.
10
+ */
11
+ import Database from 'better-sqlite3';
12
+ import { join } from 'node:path';
13
+ import { mkdirSync, existsSync } from 'node:fs';
14
+ import { toISO, toJSON, fromJSON, toInt, fromInt, embeddingToBlob, blobToEmbedding, fromISO } from './serializers.js';
15
+ // Re-export serializers for use by consumers
16
+ export { toISO, toJSON, fromJSON, toInt, fromInt, embeddingToBlob, blobToEmbedding, fromISO };
17
+ const DEFAULT_CONFIG = {
18
+ baseDir: '.atlas',
19
+ dbName: 'cognitive-core.db',
20
+ enableWAL: true,
21
+ vectorDimension: 0,
22
+ };
23
+ // ============================================================================
24
+ // SqlitePersistence class
25
+ // ============================================================================
26
+ export class SqlitePersistence {
27
+ db;
28
+ config;
29
+ initialized = false;
30
+ // Cached prepared statements (lazy-initialized)
31
+ stmts = {};
32
+ constructor(config) {
33
+ this.config = { ...DEFAULT_CONFIG, ...config };
34
+ }
35
+ /**
36
+ * Initialize: open DB, run schema DDL, run migration if needed.
37
+ */
38
+ async init() {
39
+ if (this.initialized)
40
+ return;
41
+ const dir = this.config.baseDir;
42
+ if (!existsSync(dir)) {
43
+ mkdirSync(dir, { recursive: true });
44
+ }
45
+ const dbPath = join(dir, this.config.dbName);
46
+ this.db = new Database(dbPath);
47
+ // PRAGMAs
48
+ if (this.config.enableWAL) {
49
+ this.db.pragma('journal_mode = WAL');
50
+ }
51
+ this.db.pragma('foreign_keys = ON');
52
+ this.db.pragma('busy_timeout = 5000');
53
+ this.createSchema();
54
+ this.initialized = true;
55
+ }
56
+ /**
57
+ * Get the raw database connection (for SqliteVectorStore sharing).
58
+ */
59
+ getDatabase() {
60
+ if (!this.initialized)
61
+ throw new Error('SqlitePersistence not initialized');
62
+ return this.db;
63
+ }
64
+ /**
65
+ * Run a function inside a transaction.
66
+ */
67
+ transaction(fn) {
68
+ const tx = this.db.transaction(fn);
69
+ return tx();
70
+ }
71
+ // ==========================================================================
72
+ // Schema DDL
73
+ // ==========================================================================
74
+ createSchema() {
75
+ this.db.exec(`
76
+ CREATE TABLE IF NOT EXISTS experiences (
77
+ id TEXT PRIMARY KEY,
78
+ task_input TEXT NOT NULL,
79
+ solution_output TEXT NOT NULL,
80
+ feedback TEXT NOT NULL,
81
+ success INTEGER NOT NULL,
82
+ domain TEXT NOT NULL,
83
+ embedding BLOB,
84
+ trajectory_id TEXT NOT NULL,
85
+ usage_count INTEGER NOT NULL DEFAULT 0,
86
+ access_score REAL NOT NULL DEFAULT 0,
87
+ retrieval_count INTEGER NOT NULL DEFAULT 0,
88
+ tier TEXT NOT NULL DEFAULT 'hot',
89
+ compressed TEXT,
90
+ metadata TEXT NOT NULL DEFAULT '{}',
91
+ created_at TEXT NOT NULL,
92
+ last_accessed_at TEXT
93
+ );
94
+
95
+ CREATE INDEX IF NOT EXISTS idx_experiences_domain ON experiences(domain);
96
+ CREATE INDEX IF NOT EXISTS idx_experiences_trajectory ON experiences(trajectory_id);
97
+ CREATE INDEX IF NOT EXISTS idx_experiences_success ON experiences(success);
98
+ CREATE INDEX IF NOT EXISTS idx_experiences_tier ON experiences(tier);
99
+ CREATE INDEX IF NOT EXISTS idx_experiences_access_score ON experiences(access_score);
100
+ CREATE INDEX IF NOT EXISTS idx_experiences_created_at ON experiences(created_at);
101
+
102
+ CREATE TABLE IF NOT EXISTS playbooks (
103
+ id TEXT PRIMARY KEY,
104
+ name TEXT NOT NULL,
105
+ confidence REAL NOT NULL DEFAULT 0.3,
106
+ complexity TEXT NOT NULL DEFAULT 'moderate',
107
+ estimated_effort INTEGER NOT NULL DEFAULT 3,
108
+ primary_domain TEXT,
109
+ success_count INTEGER NOT NULL DEFAULT 0,
110
+ failure_count INTEGER NOT NULL DEFAULT 0,
111
+ version TEXT NOT NULL DEFAULT '1.0.0',
112
+ origin TEXT,
113
+ applicability TEXT NOT NULL,
114
+ guidance TEXT NOT NULL,
115
+ verification TEXT NOT NULL DEFAULT '{}',
116
+ evolution TEXT NOT NULL DEFAULT '{}',
117
+ provenance TEXT,
118
+ embedding BLOB,
119
+ created_at TEXT NOT NULL,
120
+ updated_at TEXT NOT NULL
121
+ );
122
+
123
+ CREATE INDEX IF NOT EXISTS idx_playbooks_name ON playbooks(name);
124
+ CREATE INDEX IF NOT EXISTS idx_playbooks_confidence ON playbooks(confidence);
125
+ CREATE INDEX IF NOT EXISTS idx_playbooks_primary_domain ON playbooks(primary_domain);
126
+ CREATE INDEX IF NOT EXISTS idx_playbooks_origin ON playbooks(origin);
127
+
128
+ CREATE TABLE IF NOT EXISTS playbook_versions (
129
+ playbook_id TEXT NOT NULL,
130
+ version TEXT NOT NULL,
131
+ playbook_snapshot TEXT NOT NULL,
132
+ changelog TEXT NOT NULL DEFAULT '',
133
+ created_at TEXT NOT NULL,
134
+ PRIMARY KEY (playbook_id, version)
135
+ );
136
+
137
+ CREATE TABLE IF NOT EXISTS reflexion_episodes (
138
+ id TEXT PRIMARY KEY,
139
+ trajectory_id TEXT NOT NULL,
140
+ task_summary TEXT NOT NULL,
141
+ outcome TEXT NOT NULL,
142
+ self_critique TEXT NOT NULL,
143
+ key_insights TEXT NOT NULL DEFAULT '[]',
144
+ strategy_assessment TEXT NOT NULL,
145
+ suggested_playbook_updates TEXT NOT NULL DEFAULT '[]',
146
+ domain TEXT NOT NULL,
147
+ created_at TEXT NOT NULL
148
+ );
149
+
150
+ CREATE INDEX IF NOT EXISTS idx_reflexion_trajectory ON reflexion_episodes(trajectory_id);
151
+ CREATE INDEX IF NOT EXISTS idx_reflexion_domain ON reflexion_episodes(domain);
152
+ CREATE INDEX IF NOT EXISTS idx_reflexion_outcome ON reflexion_episodes(outcome);
153
+ CREATE INDEX IF NOT EXISTS idx_reflexion_created_at ON reflexion_episodes(created_at);
154
+
155
+ CREATE TABLE IF NOT EXISTS causal_edges (
156
+ id TEXT PRIMARY KEY,
157
+ cause TEXT NOT NULL,
158
+ effect TEXT NOT NULL,
159
+ confidence REAL NOT NULL,
160
+ domain TEXT NOT NULL,
161
+ source_trajectory_ids TEXT NOT NULL DEFAULT '[]',
162
+ observed_count INTEGER NOT NULL DEFAULT 1,
163
+ created_at TEXT NOT NULL,
164
+ updated_at TEXT NOT NULL
165
+ );
166
+
167
+ CREATE INDEX IF NOT EXISTS idx_causal_domain ON causal_edges(domain);
168
+ CREATE INDEX IF NOT EXISTS idx_causal_confidence ON causal_edges(confidence);
169
+
170
+ CREATE TABLE IF NOT EXISTS meta_observations (
171
+ id TEXT PRIMARY KEY,
172
+ trajectory_id TEXT NOT NULL,
173
+ routing TEXT NOT NULL,
174
+ memory_usage TEXT NOT NULL,
175
+ execution TEXT NOT NULL,
176
+ outcome TEXT NOT NULL,
177
+ lessons TEXT NOT NULL,
178
+ routing_decision TEXT NOT NULL,
179
+ outcome_success INTEGER NOT NULL,
180
+ timestamp TEXT NOT NULL
181
+ );
182
+
183
+ CREATE INDEX IF NOT EXISTS idx_meta_obs_trajectory ON meta_observations(trajectory_id);
184
+ CREATE INDEX IF NOT EXISTS idx_meta_obs_routing ON meta_observations(routing_decision);
185
+ CREATE INDEX IF NOT EXISTS idx_meta_obs_outcome ON meta_observations(outcome_success);
186
+ CREATE INDEX IF NOT EXISTS idx_meta_obs_timestamp ON meta_observations(timestamp);
187
+
188
+ CREATE TABLE IF NOT EXISTS meta_strategies (
189
+ id TEXT PRIMARY KEY,
190
+ name TEXT NOT NULL UNIQUE,
191
+ condition TEXT NOT NULL,
192
+ adjustment TEXT NOT NULL,
193
+ application_count INTEGER NOT NULL DEFAULT 0,
194
+ success_rate REAL NOT NULL DEFAULT 0,
195
+ created_at TEXT NOT NULL,
196
+ updated_at TEXT NOT NULL
197
+ );
198
+
199
+ CREATE INDEX IF NOT EXISTS idx_meta_strategies_name ON meta_strategies(name);
200
+
201
+ CREATE TABLE IF NOT EXISTS system_state (
202
+ key TEXT PRIMARY KEY,
203
+ value TEXT NOT NULL,
204
+ updated_at TEXT NOT NULL
205
+ );
206
+
207
+ CREATE TABLE IF NOT EXISTS schema_version (
208
+ version INTEGER NOT NULL,
209
+ applied_at TEXT NOT NULL
210
+ );
211
+ `);
212
+ }
213
+ // ==========================================================================
214
+ // Prepared statement helpers
215
+ // ==========================================================================
216
+ stmt(name, sql) {
217
+ if (!this.stmts[name]) {
218
+ this.stmts[name] = this.db.prepare(sql);
219
+ }
220
+ return this.stmts[name];
221
+ }
222
+ // ==========================================================================
223
+ // Schema version
224
+ // ==========================================================================
225
+ getSchemaVersion() {
226
+ const row = this.db.prepare('SELECT MAX(version) as version FROM schema_version').get();
227
+ return row?.version ?? 0;
228
+ }
229
+ setSchemaVersion(version) {
230
+ this.stmt('set_schema_version', 'INSERT INTO schema_version (version, applied_at) VALUES (?, ?)').run(version, new Date().toISOString());
231
+ }
232
+ // ==========================================================================
233
+ // Experiences CRUD
234
+ // ==========================================================================
235
+ insertExperience(exp) {
236
+ this.stmt('insert_experience', `
237
+ INSERT OR REPLACE INTO experiences
238
+ (id, task_input, solution_output, feedback, success, domain, embedding,
239
+ trajectory_id, usage_count, access_score, retrieval_count, tier,
240
+ compressed, metadata, created_at, last_accessed_at)
241
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
242
+ `).run(exp.id, exp.taskInput, exp.solutionOutput, exp.feedback, toInt(exp.success), exp.domain, embeddingToBlob(exp.embedding), exp.trajectoryId, exp.usageCount, exp.accessScore, exp.retrievalCount, exp.tier ?? 'hot', toJSON(exp.compressed), toJSON(exp.metadata), toISO(exp.createdAt), toISO(exp.lastAccessedAt));
243
+ }
244
+ getExperience(id) {
245
+ return this.stmt('get_experience', 'SELECT * FROM experiences WHERE id = ?').get(id);
246
+ }
247
+ getAllExperiences() {
248
+ return this.stmt('get_all_experiences', 'SELECT * FROM experiences').all();
249
+ }
250
+ getExperiencesByDomain(domain) {
251
+ return this.stmt('get_experiences_by_domain', 'SELECT * FROM experiences WHERE domain = ?').all(domain);
252
+ }
253
+ getExperiencesByTrajectory(trajectoryId) {
254
+ return this.stmt('get_experiences_by_trajectory', 'SELECT * FROM experiences WHERE trajectory_id = ?').all(trajectoryId);
255
+ }
256
+ getExperienceIds() {
257
+ return this.stmt('get_experience_ids', 'SELECT id, task_input FROM experiences').all();
258
+ }
259
+ updateExperience(id, updates) {
260
+ // Build dynamic UPDATE — only set provided fields
261
+ const setClauses = [];
262
+ const values = [];
263
+ for (const [key, value] of Object.entries(updates)) {
264
+ const col = camelToSnake(key);
265
+ setClauses.push(`${col} = ?`);
266
+ if (key === 'embedding') {
267
+ values.push(embeddingToBlob(value));
268
+ }
269
+ else if (key === 'success') {
270
+ values.push(toInt(value));
271
+ }
272
+ else if (value instanceof Date) {
273
+ values.push(toISO(value));
274
+ }
275
+ else if (typeof value === 'object' && value !== null) {
276
+ values.push(toJSON(value));
277
+ }
278
+ else {
279
+ values.push(value);
280
+ }
281
+ }
282
+ if (setClauses.length === 0)
283
+ return;
284
+ values.push(id);
285
+ this.db.prepare(`UPDATE experiences SET ${setClauses.join(', ')} WHERE id = ?`).run(...values);
286
+ }
287
+ deleteExperience(id) {
288
+ const result = this.stmt('delete_experience', 'DELETE FROM experiences WHERE id = ?').run(id);
289
+ return result.changes > 0;
290
+ }
291
+ deleteExperiencesWhere(whereClause, params = []) {
292
+ const result = this.db.prepare(`DELETE FROM experiences WHERE ${whereClause}`).run(...params);
293
+ return result.changes;
294
+ }
295
+ getExperienceCount() {
296
+ const row = this.stmt('count_experiences', 'SELECT COUNT(*) as count FROM experiences').get();
297
+ return row.count;
298
+ }
299
+ // ==========================================================================
300
+ // Playbooks CRUD
301
+ // ==========================================================================
302
+ insertPlaybook(pb) {
303
+ this.stmt('insert_playbook', `
304
+ INSERT OR REPLACE INTO playbooks
305
+ (id, name, confidence, complexity, estimated_effort, primary_domain,
306
+ success_count, failure_count, version, origin,
307
+ applicability, guidance, verification, evolution, provenance,
308
+ embedding, created_at, updated_at)
309
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
310
+ `).run(pb.id, pb.name, pb.confidence, pb.complexity, pb.estimatedEffort, pb.applicability.domains?.[0] ?? null, pb.evolution.successCount, pb.evolution.failureCount, pb.evolution.version, pb.provenance?.origin ?? null, toJSON(pb.applicability), toJSON(pb.guidance), toJSON(pb.verification), toJSON(pb.evolution), pb.provenance ? toJSON(pb.provenance) : null, embeddingToBlob(pb.embedding), toISO(pb.createdAt), toISO(pb.updatedAt));
311
+ }
312
+ getPlaybook(id) {
313
+ return this.stmt('get_playbook', 'SELECT * FROM playbooks WHERE id = ?').get(id);
314
+ }
315
+ getAllPlaybooks() {
316
+ return this.stmt('get_all_playbooks', 'SELECT * FROM playbooks').all();
317
+ }
318
+ getPlaybooksByDomain(domain) {
319
+ return this.stmt('get_playbooks_by_domain', 'SELECT * FROM playbooks WHERE primary_domain = ?').all(domain);
320
+ }
321
+ getPlaybookIds() {
322
+ return this.stmt('get_playbook_ids', 'SELECT id, applicability FROM playbooks').all();
323
+ }
324
+ updatePlaybook(id, updates) {
325
+ const setClauses = [];
326
+ const values = [];
327
+ for (const [key, value] of Object.entries(updates)) {
328
+ const col = camelToSnake(key);
329
+ setClauses.push(`${col} = ?`);
330
+ if (key === 'embedding') {
331
+ values.push(embeddingToBlob(value));
332
+ }
333
+ else if (value instanceof Date) {
334
+ values.push(toISO(value));
335
+ }
336
+ else if (typeof value === 'object' && value !== null) {
337
+ values.push(toJSON(value));
338
+ }
339
+ else {
340
+ values.push(value);
341
+ }
342
+ }
343
+ if (setClauses.length === 0)
344
+ return;
345
+ values.push(id);
346
+ this.db.prepare(`UPDATE playbooks SET ${setClauses.join(', ')} WHERE id = ?`).run(...values);
347
+ }
348
+ deletePlaybook(id) {
349
+ const result = this.stmt('delete_playbook', 'DELETE FROM playbooks WHERE id = ?').run(id);
350
+ return result.changes > 0;
351
+ }
352
+ getPlaybookCount() {
353
+ const row = this.stmt('count_playbooks', 'SELECT COUNT(*) as count FROM playbooks').get();
354
+ return row.count;
355
+ }
356
+ /** Snapshot current playbook state for version history. */
357
+ snapshotPlaybookVersion(playbookId, version, changelog = '') {
358
+ const pb = this.getPlaybook(playbookId);
359
+ if (!pb)
360
+ return;
361
+ this.stmt('snapshot_playbook_version', `
362
+ INSERT OR IGNORE INTO playbook_versions
363
+ (playbook_id, version, playbook_snapshot, changelog, created_at)
364
+ VALUES (?, ?, ?, ?, ?)
365
+ `).run(playbookId, version, JSON.stringify(pb), changelog, new Date().toISOString());
366
+ }
367
+ getPlaybookVersions(playbookId) {
368
+ return this.stmt('get_playbook_versions', 'SELECT * FROM playbook_versions WHERE playbook_id = ? ORDER BY created_at ASC').all(playbookId);
369
+ }
370
+ // ==========================================================================
371
+ // Reflexion Episodes CRUD
372
+ // ==========================================================================
373
+ insertReflexionEpisode(ep) {
374
+ this.stmt('insert_reflexion', `
375
+ INSERT OR REPLACE INTO reflexion_episodes
376
+ (id, trajectory_id, task_summary, outcome, self_critique,
377
+ key_insights, strategy_assessment, suggested_playbook_updates,
378
+ domain, created_at)
379
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
380
+ `).run(ep.id, ep.trajectoryId, ep.taskSummary, ep.outcome, ep.selfCritique, toJSON(ep.keyInsights, '[]'), ep.strategyAssessment, toJSON(ep.suggestedPlaybookUpdates, '[]'), ep.domain, toISO(ep.createdAt));
381
+ }
382
+ getReflexionEpisode(id) {
383
+ return this.stmt('get_reflexion', 'SELECT * FROM reflexion_episodes WHERE id = ?').get(id);
384
+ }
385
+ getReflexionEpisodes(options) {
386
+ let query = 'SELECT * FROM reflexion_episodes WHERE 1=1';
387
+ const params = [];
388
+ if (options?.domain) {
389
+ query += ' AND domain = ?';
390
+ params.push(options.domain);
391
+ }
392
+ if (options?.outcome) {
393
+ query += ' AND outcome = ?';
394
+ params.push(options.outcome);
395
+ }
396
+ query += ' ORDER BY created_at DESC';
397
+ if (options?.limit) {
398
+ query += ' LIMIT ?';
399
+ params.push(options.limit);
400
+ }
401
+ return this.db.prepare(query).all(...params);
402
+ }
403
+ getReflexionByTrajectory(trajectoryId) {
404
+ return this.stmt('get_reflexion_by_trajectory', 'SELECT * FROM reflexion_episodes WHERE trajectory_id = ?').all(trajectoryId);
405
+ }
406
+ // ==========================================================================
407
+ // Causal Edges CRUD
408
+ // ==========================================================================
409
+ insertCausalEdge(edge) {
410
+ this.stmt('insert_causal', `
411
+ INSERT OR REPLACE INTO causal_edges
412
+ (id, cause, effect, confidence, domain, source_trajectory_ids,
413
+ observed_count, created_at, updated_at)
414
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
415
+ `).run(edge.id, edge.cause, edge.effect, edge.confidence, edge.domain, toJSON(edge.sourceTrajectoryIds, '[]'), edge.observedCount, toISO(edge.createdAt), toISO(edge.updatedAt));
416
+ }
417
+ getCausalEdge(id) {
418
+ return this.stmt('get_causal', 'SELECT * FROM causal_edges WHERE id = ?').get(id);
419
+ }
420
+ getAllCausalEdges() {
421
+ return this.stmt('get_all_causal', 'SELECT * FROM causal_edges').all();
422
+ }
423
+ getCausalEdgesByDomain(domain) {
424
+ return this.stmt('get_causal_by_domain', 'SELECT * FROM causal_edges WHERE domain = ?').all(domain);
425
+ }
426
+ getCausalEdgeIds() {
427
+ return this.stmt('get_causal_ids', 'SELECT id, cause, effect FROM causal_edges').all();
428
+ }
429
+ updateCausalEdge(id, updates) {
430
+ const setClauses = [];
431
+ const values = [];
432
+ for (const [key, value] of Object.entries(updates)) {
433
+ const col = camelToSnake(key);
434
+ setClauses.push(`${col} = ?`);
435
+ if (value instanceof Date) {
436
+ values.push(toISO(value));
437
+ }
438
+ else if (typeof value === 'object' && value !== null) {
439
+ values.push(toJSON(value));
440
+ }
441
+ else {
442
+ values.push(value);
443
+ }
444
+ }
445
+ if (setClauses.length === 0)
446
+ return;
447
+ values.push(id);
448
+ this.db.prepare(`UPDATE causal_edges SET ${setClauses.join(', ')} WHERE id = ?`).run(...values);
449
+ }
450
+ deleteCausalEdge(id) {
451
+ const result = this.stmt('delete_causal', 'DELETE FROM causal_edges WHERE id = ?').run(id);
452
+ return result.changes > 0;
453
+ }
454
+ // ==========================================================================
455
+ // Meta Observations CRUD
456
+ // ==========================================================================
457
+ insertMetaObservation(obs) {
458
+ this.stmt('insert_meta_obs', `
459
+ INSERT OR REPLACE INTO meta_observations
460
+ (id, trajectory_id, routing, memory_usage, execution, outcome,
461
+ lessons, routing_decision, outcome_success, timestamp)
462
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
463
+ `).run(obs.id, obs.trajectoryId, toJSON(obs.routing), toJSON(obs.memoryUsage), toJSON(obs.execution), toJSON(obs.outcome), toJSON(obs.lessons), obs.routing.decision, toInt(obs.outcome.success), toISO(obs.timestamp));
464
+ }
465
+ getMetaObservation(id) {
466
+ return this.stmt('get_meta_obs', 'SELECT * FROM meta_observations WHERE id = ?').get(id);
467
+ }
468
+ getAllMetaObservations() {
469
+ return this.stmt('get_all_meta_obs', 'SELECT * FROM meta_observations ORDER BY timestamp DESC').all();
470
+ }
471
+ getMetaObservationsByRouting(decision) {
472
+ return this.stmt('get_meta_obs_by_routing', 'SELECT * FROM meta_observations WHERE routing_decision = ? ORDER BY timestamp DESC').all(decision);
473
+ }
474
+ deleteMetaObservationsBefore(cutoffDate) {
475
+ const result = this.stmt('delete_meta_obs_before', 'DELETE FROM meta_observations WHERE timestamp < ?').run(toISO(cutoffDate));
476
+ return result.changes;
477
+ }
478
+ getMetaObservationCount() {
479
+ const row = this.stmt('count_meta_obs', 'SELECT COUNT(*) as count FROM meta_observations').get();
480
+ return row.count;
481
+ }
482
+ /** Aggregate routing effectiveness: { decision: { total, successful } } */
483
+ aggregateRoutingEffectiveness() {
484
+ const rows = this.db.prepare(`
485
+ SELECT routing_decision, COUNT(*) as total, SUM(outcome_success) as successful
486
+ FROM meta_observations
487
+ GROUP BY routing_decision
488
+ `).all();
489
+ const result = {};
490
+ for (const row of rows) {
491
+ result[row.routing_decision] = { total: row.total, successful: row.successful };
492
+ }
493
+ return result;
494
+ }
495
+ // ==========================================================================
496
+ // Meta Strategies CRUD
497
+ // ==========================================================================
498
+ insertMetaStrategy(strategy) {
499
+ this.stmt('insert_meta_strategy', `
500
+ INSERT OR REPLACE INTO meta_strategies
501
+ (id, name, condition, adjustment, application_count, success_rate,
502
+ created_at, updated_at)
503
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
504
+ `).run(strategy.id, strategy.name, toJSON(strategy.condition), toJSON(strategy.adjustment), strategy.applicationCount, strategy.successRate, toISO(strategy.createdAt), toISO(strategy.updatedAt));
505
+ }
506
+ getMetaStrategy(id) {
507
+ return this.stmt('get_meta_strategy', 'SELECT * FROM meta_strategies WHERE id = ?').get(id);
508
+ }
509
+ getMetaStrategyByName(name) {
510
+ return this.stmt('get_meta_strategy_by_name', 'SELECT * FROM meta_strategies WHERE name = ?').get(name);
511
+ }
512
+ getAllMetaStrategies() {
513
+ return this.stmt('get_all_meta_strategies', 'SELECT * FROM meta_strategies').all();
514
+ }
515
+ updateMetaStrategy(id, updates) {
516
+ const setClauses = [];
517
+ const values = [];
518
+ for (const [key, value] of Object.entries(updates)) {
519
+ const col = camelToSnake(key);
520
+ setClauses.push(`${col} = ?`);
521
+ if (value instanceof Date) {
522
+ values.push(toISO(value));
523
+ }
524
+ else if (typeof value === 'object' && value !== null) {
525
+ values.push(toJSON(value));
526
+ }
527
+ else {
528
+ values.push(value);
529
+ }
530
+ }
531
+ if (setClauses.length === 0)
532
+ return;
533
+ values.push(id);
534
+ this.db.prepare(`UPDATE meta_strategies SET ${setClauses.join(', ')} WHERE id = ?`).run(...values);
535
+ }
536
+ deleteMetaStrategy(id) {
537
+ const result = this.stmt('delete_meta_strategy', 'DELETE FROM meta_strategies WHERE id = ?').run(id);
538
+ return result.changes > 0;
539
+ }
540
+ // ==========================================================================
541
+ // System State (key-value store for singleton blobs)
542
+ // ==========================================================================
543
+ getSystemState(key) {
544
+ const row = this.stmt('get_system_state', 'SELECT value FROM system_state WHERE key = ?').get(key);
545
+ if (!row)
546
+ return undefined;
547
+ return fromJSON(row.value);
548
+ }
549
+ setSystemState(key, value) {
550
+ this.stmt('set_system_state', `
551
+ INSERT OR REPLACE INTO system_state (key, value, updated_at)
552
+ VALUES (?, ?, ?)
553
+ `).run(key, toJSON(value), new Date().toISOString());
554
+ }
555
+ deleteSystemState(key) {
556
+ const result = this.stmt('delete_system_state', 'DELETE FROM system_state WHERE key = ?').run(key);
557
+ return result.changes > 0;
558
+ }
559
+ // ==========================================================================
560
+ // Lifecycle
561
+ // ==========================================================================
562
+ close() {
563
+ if (this.db) {
564
+ this.db.close();
565
+ }
566
+ this.initialized = false;
567
+ this.stmts = {};
568
+ }
569
+ get isInitialized() {
570
+ return this.initialized;
571
+ }
572
+ get dbPath() {
573
+ return join(this.config.baseDir, this.config.dbName);
574
+ }
575
+ }
576
+ // ============================================================================
577
+ // Factory function
578
+ // ============================================================================
579
+ export function createSqlitePersistence(config) {
580
+ return new SqlitePersistence(config);
581
+ }
582
+ // ============================================================================
583
+ // Utility: camelCase to snake_case
584
+ // ============================================================================
585
+ function camelToSnake(str) {
586
+ return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);
587
+ }
588
+ //# sourceMappingURL=sqlite-persistence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-persistence.js","sourceRoot":"","sources":["../../src/persistence/sqlite-persistence.ts"],"names":[],"mappings":"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"}