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,335 @@
1
+ /**
2
+ * TemporalCompressor — Adaptive memory compression.
3
+ *
4
+ * Experiences flow through Hot → Warm → Cold → Evicted tiers
5
+ * based on their accessScore (from Phase 0).
6
+ *
7
+ * Compression levels:
8
+ * - Hot: Full fidelity (all data preserved)
9
+ * - Warm: Strip solutionOutput to key steps only
10
+ * - Cold: Replace key steps with single-paragraph summary
11
+ * - Evicted: Remove entirely (after ensuring pattern captured in ReasoningBank)
12
+ *
13
+ * Hysteresis: An experience must stay below a threshold for 2 consecutive
14
+ * compression passes before demotion, preventing oscillation from a
15
+ * single retrieval hit.
16
+ */
17
+ const DEFAULT_CONFIG = {
18
+ hotThreshold: 0.5,
19
+ warmThreshold: 0.2,
20
+ evictionThreshold: 0.05,
21
+ hysteresis: 0.05,
22
+ };
23
+ /**
24
+ * TemporalCompressor — evaluates and compresses experiences based on access scores
25
+ */
26
+ export class TemporalCompressor {
27
+ config;
28
+ persistence;
29
+ /**
30
+ * Track experiences that were below demotion threshold on the previous pass.
31
+ * Hysteresis: only demote after 2 consecutive passes below threshold.
32
+ */
33
+ pendingDemotion = new Set();
34
+ constructor(options, persistence) {
35
+ this.config = { ...DEFAULT_CONFIG, ...options };
36
+ this.persistence = persistence;
37
+ // Load persisted pending demotions
38
+ if (persistence?.isInitialized) {
39
+ const saved = persistence.getSystemState('temporal_compressor');
40
+ if (saved) {
41
+ this.pendingDemotion = new Set(saved);
42
+ }
43
+ }
44
+ }
45
+ /**
46
+ * Evaluate and compress experiences based on their access scores.
47
+ * Returns a CompressionResult describing all tier changes.
48
+ */
49
+ async compress(experiences) {
50
+ const result = {
51
+ promoted: [],
52
+ demoted: [],
53
+ evicted: [],
54
+ unchanged: [],
55
+ updates: new Map(),
56
+ };
57
+ const newPendingDemotion = new Set();
58
+ for (const exp of experiences) {
59
+ const currentTier = exp.tier ?? 'hot';
60
+ const targetTier = this.computeTargetTier(exp.accessScore);
61
+ if (targetTier === 'evict') {
62
+ // Cold → Evicted
63
+ if (currentTier === 'cold') {
64
+ if (this.pendingDemotion.has(exp.id)) {
65
+ // Second consecutive pass below eviction threshold → evict
66
+ result.evicted.push(exp.id);
67
+ }
68
+ else {
69
+ // First pass below → mark pending
70
+ newPendingDemotion.add(exp.id);
71
+ result.unchanged.push(exp.id);
72
+ }
73
+ }
74
+ else {
75
+ // Not yet cold — demote first (can't skip tiers)
76
+ this.handleDemotion(exp, currentTier, result, newPendingDemotion);
77
+ }
78
+ }
79
+ else if (this.tierOrder(targetTier) < this.tierOrder(currentTier)) {
80
+ // Demotion (hot → warm, warm → cold, hot → cold)
81
+ this.handleDemotion(exp, currentTier, result, newPendingDemotion);
82
+ }
83
+ else if (this.tierOrder(targetTier) > this.tierOrder(currentTier)) {
84
+ // Promotion (cold → warm, warm → hot) — requires score above threshold + hysteresis
85
+ const effectiveScore = exp.accessScore;
86
+ const promotionThreshold = this.getPromotionThreshold(currentTier);
87
+ if (effectiveScore >= promotionThreshold) {
88
+ const nextTier = this.nextHotterTier(currentTier);
89
+ if (nextTier) {
90
+ const promoted = this.promoteTier(exp, nextTier);
91
+ result.promoted.push(exp.id);
92
+ result.updates.set(exp.id, promoted);
93
+ }
94
+ else {
95
+ result.unchanged.push(exp.id);
96
+ }
97
+ }
98
+ else {
99
+ result.unchanged.push(exp.id);
100
+ }
101
+ }
102
+ else {
103
+ result.unchanged.push(exp.id);
104
+ }
105
+ }
106
+ this.pendingDemotion = newPendingDemotion;
107
+ // Persist pending demotions
108
+ if (this.persistence) {
109
+ this.persistence.setSystemState('temporal_compressor', [...this.pendingDemotion]);
110
+ }
111
+ return result;
112
+ }
113
+ /**
114
+ * Load persisted pending demotions. Call after persistence is initialized.
115
+ */
116
+ loadPersistedState() {
117
+ if (this.persistence?.isInitialized) {
118
+ const saved = this.persistence.getSystemState('temporal_compressor');
119
+ if (saved) {
120
+ this.pendingDemotion = new Set(saved);
121
+ }
122
+ }
123
+ }
124
+ /**
125
+ * Compress a single experience from hot → warm.
126
+ * Strips solutionOutput to key steps only.
127
+ */
128
+ compressToWarm(experience) {
129
+ const keySteps = this.extractKeySteps(experience);
130
+ const originalStepCount = this.estimateStepCount(experience);
131
+ return {
132
+ ...experience,
133
+ tier: 'warm',
134
+ solutionOutput: keySteps.join('\n---\n'),
135
+ compressed: {
136
+ keySteps,
137
+ summary: '',
138
+ originalStepCount,
139
+ },
140
+ };
141
+ }
142
+ /**
143
+ * Compress a single experience from warm → cold.
144
+ * Replaces key steps with a single-paragraph summary.
145
+ */
146
+ compressToCold(experience) {
147
+ const summary = this.generateSummary(experience);
148
+ return {
149
+ ...experience,
150
+ tier: 'cold',
151
+ taskInput: experience.taskInput.slice(0, 200),
152
+ solutionOutput: summary,
153
+ feedback: experience.feedback.slice(0, 100),
154
+ compressed: {
155
+ keySteps: experience.compressed?.keySteps ?? [],
156
+ summary,
157
+ originalStepCount: experience.compressed?.originalStepCount ?? this.estimateStepCount(experience),
158
+ },
159
+ };
160
+ }
161
+ // === Internal helpers ===
162
+ /**
163
+ * Determine the target tier for a given access score.
164
+ */
165
+ computeTargetTier(accessScore) {
166
+ if (accessScore >= this.config.hotThreshold)
167
+ return 'hot';
168
+ if (accessScore >= this.config.warmThreshold)
169
+ return 'warm';
170
+ if (accessScore >= this.config.evictionThreshold)
171
+ return 'cold';
172
+ return 'evict';
173
+ }
174
+ /**
175
+ * Numeric ordering for tiers (higher = hotter).
176
+ */
177
+ tierOrder(tier) {
178
+ switch (tier) {
179
+ case 'hot': return 2;
180
+ case 'warm': return 1;
181
+ case 'cold': return 0;
182
+ }
183
+ }
184
+ /**
185
+ * Get the next colder tier.
186
+ */
187
+ nextColderTier(tier) {
188
+ switch (tier) {
189
+ case 'hot': return 'warm';
190
+ case 'warm': return 'cold';
191
+ case 'cold': return undefined;
192
+ }
193
+ }
194
+ /**
195
+ * Get the next hotter tier.
196
+ */
197
+ nextHotterTier(tier) {
198
+ switch (tier) {
199
+ case 'cold': return 'warm';
200
+ case 'warm': return 'hot';
201
+ case 'hot': return undefined;
202
+ }
203
+ }
204
+ /**
205
+ * Get the threshold needed for promotion from a tier (with hysteresis).
206
+ */
207
+ getPromotionThreshold(currentTier) {
208
+ switch (currentTier) {
209
+ case 'cold': return this.config.warmThreshold + this.config.hysteresis;
210
+ case 'warm': return this.config.hotThreshold + this.config.hysteresis;
211
+ case 'hot': return Infinity;
212
+ }
213
+ }
214
+ /**
215
+ * Handle a demotion with hysteresis.
216
+ * Only demote after 2 consecutive passes below threshold.
217
+ */
218
+ handleDemotion(exp, currentTier, result, newPendingDemotion) {
219
+ if (this.pendingDemotion.has(exp.id)) {
220
+ // Second consecutive pass below threshold → demote one step
221
+ const nextTier = this.nextColderTier(currentTier);
222
+ if (nextTier) {
223
+ const compressed = nextTier === 'warm'
224
+ ? this.compressToWarm(exp)
225
+ : this.compressToCold(exp);
226
+ result.demoted.push(exp.id);
227
+ result.updates.set(exp.id, {
228
+ tier: compressed.tier,
229
+ solutionOutput: compressed.solutionOutput,
230
+ taskInput: compressed.taskInput,
231
+ feedback: compressed.feedback,
232
+ compressed: compressed.compressed,
233
+ });
234
+ }
235
+ else {
236
+ result.unchanged.push(exp.id);
237
+ }
238
+ }
239
+ else {
240
+ // First pass below threshold → mark pending
241
+ newPendingDemotion.add(exp.id);
242
+ result.unchanged.push(exp.id);
243
+ }
244
+ }
245
+ /**
246
+ * Promote an experience to a hotter tier.
247
+ * Note: data can't be un-compressed, but the tier changes.
248
+ */
249
+ promoteTier(_exp, targetTier) {
250
+ return { tier: targetTier };
251
+ }
252
+ /**
253
+ * Extract key steps from a solution output.
254
+ * Looks for tool calls, error messages, and outcome-relevant actions.
255
+ */
256
+ extractKeySteps(experience) {
257
+ const output = experience.solutionOutput;
258
+ const keySteps = [];
259
+ // If metadata has trajectory steps, extract from there
260
+ const metadata = experience.metadata;
261
+ const steps = metadata?.steps;
262
+ if (steps && Array.isArray(steps)) {
263
+ for (const step of steps) {
264
+ // Keep steps with high attribution or significant actions
265
+ const isKey = (step.attributionScore !== undefined && step.attributionScore > 0.5) ||
266
+ step.action?.match(/^(Read|Write|Edit|Bash|Grep|Glob)\s/i) ||
267
+ step.observation?.match(/error|fail|success|created|updated/i);
268
+ if (isKey) {
269
+ const parts = [];
270
+ if (step.action)
271
+ parts.push(`Action: ${step.action.slice(0, 150)}`);
272
+ if (step.observation)
273
+ parts.push(`Result: ${step.observation.slice(0, 150)}`);
274
+ keySteps.push(parts.join(' → '));
275
+ }
276
+ }
277
+ }
278
+ // Fallback: split output into paragraphs and keep first/last + error lines
279
+ if (keySteps.length === 0) {
280
+ const lines = output.split('\n').filter((l) => l.trim());
281
+ if (lines.length <= 5) {
282
+ return lines;
283
+ }
284
+ // Keep first line (often the approach), error lines, and last line (outcome)
285
+ keySteps.push(lines[0]);
286
+ for (const line of lines) {
287
+ if (line.match(/error|exception|fail|warning/i) && keySteps.length < 8) {
288
+ keySteps.push(line.slice(0, 200));
289
+ }
290
+ }
291
+ keySteps.push(lines[lines.length - 1]);
292
+ }
293
+ return keySteps.slice(0, 10);
294
+ }
295
+ /**
296
+ * Estimate the original step count from an experience.
297
+ */
298
+ estimateStepCount(experience) {
299
+ const metadata = experience.metadata;
300
+ if (typeof metadata?.stepCount === 'number') {
301
+ return metadata.stepCount;
302
+ }
303
+ const steps = metadata?.steps;
304
+ if (Array.isArray(steps)) {
305
+ return steps.length;
306
+ }
307
+ // Fallback: estimate from output length
308
+ return Math.max(1, Math.ceil(experience.solutionOutput.length / 200));
309
+ }
310
+ /**
311
+ * Generate a one-paragraph summary for cold tier.
312
+ */
313
+ generateSummary(experience) {
314
+ const success = experience.success ? 'Successfully' : 'Failed to';
315
+ const domain = experience.domain;
316
+ const taskSnippet = experience.taskInput.slice(0, 100);
317
+ // Use key steps if available
318
+ const keySteps = experience.compressed?.keySteps;
319
+ if (keySteps && keySteps.length > 0) {
320
+ const stepsSnippet = keySteps
321
+ .slice(0, 3)
322
+ .map((s) => s.slice(0, 80))
323
+ .join('; ');
324
+ return `[${domain}] ${success} complete task: "${taskSnippet}". Key steps: ${stepsSnippet}. ${experience.feedback.slice(0, 100)}`;
325
+ }
326
+ return `[${domain}] ${success} complete task: "${taskSnippet}". ${experience.feedback.slice(0, 150)}`;
327
+ }
328
+ }
329
+ /**
330
+ * Create a TemporalCompressor
331
+ */
332
+ export function createTemporalCompressor(options, persistence) {
333
+ return new TemporalCompressor(options, persistence);
334
+ }
335
+ //# sourceMappingURL=temporal-compressor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temporal-compressor.js","sourceRoot":"","sources":["../../src/memory/temporal-compressor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Persistence module — Unified SQLite database for system-internal state.
3
+ *
4
+ * Agent-accessible data (knowledge notes, published skills) stays as files.
5
+ * This module handles everything else: experiences, playbooks, causal edges,
6
+ * meta state, routing weights, vector embeddings.
7
+ */
8
+ export { SqlitePersistence, createSqlitePersistence, type SqlitePersistenceConfig, type ExperienceRow, type PlaybookRow, type ReflexionRow, type CausalEdgeRow, type MetaObservationRow, type MetaStrategyRow, type SystemStateRow, } from './sqlite-persistence.js';
9
+ export { toISO, fromISO, toJSON, fromJSON, toInt, fromInt, embeddingToBlob, blobToEmbedding, } from './serializers.js';
10
+ export { JsonToSqliteMigrator, runMigration, type MigrationResult, } from './migrator.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/persistence/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,KAAK,EACL,OAAO,EACP,MAAM,EACN,QAAQ,EACR,KAAK,EACL,OAAO,EACP,eAAe,EACf,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Persistence module — Unified SQLite database for system-internal state.
3
+ *
4
+ * Agent-accessible data (knowledge notes, published skills) stays as files.
5
+ * This module handles everything else: experiences, playbooks, causal edges,
6
+ * meta state, routing weights, vector embeddings.
7
+ */
8
+ export { SqlitePersistence, createSqlitePersistence, } from './sqlite-persistence.js';
9
+ export { toISO, fromISO, toJSON, fromJSON, toInt, fromInt, embeddingToBlob, blobToEmbedding, } from './serializers.js';
10
+ export { JsonToSqliteMigrator, runMigration, } from './migrator.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/persistence/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GASxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,KAAK,EACL,OAAO,EACP,MAAM,EACN,QAAQ,EACR,KAAK,EACL,OAAO,EACP,eAAe,EACf,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,oBAAoB,EACpB,YAAY,GAEb,MAAM,eAAe,CAAC"}
@@ -0,0 +1,40 @@
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
+ import type { SqlitePersistence } from './sqlite-persistence.js';
9
+ export interface MigrationResult {
10
+ migrated: boolean;
11
+ counts: Record<string, number>;
12
+ }
13
+ export declare class JsonToSqliteMigrator {
14
+ private persistence;
15
+ private baseDir;
16
+ constructor(persistence: SqlitePersistence, baseDir: string);
17
+ /**
18
+ * Run migration if needed (schema_version < 1).
19
+ */
20
+ migrate(): Promise<MigrationResult>;
21
+ /**
22
+ * Migrate a single collection directory (flat or partitioned).
23
+ * Returns the number of items migrated.
24
+ */
25
+ private migrateCollection;
26
+ /**
27
+ * Recursively collect all .json files in a directory (handles partitioned stores).
28
+ */
29
+ private collectJsonFiles;
30
+ private toExperience;
31
+ private toPlaybook;
32
+ private toReflexionEpisode;
33
+ private toMetaObservation;
34
+ private toMetaStrategy;
35
+ }
36
+ /**
37
+ * Create a migrator and run migration.
38
+ */
39
+ export declare function runMigration(persistence: SqlitePersistence, baseDir: string): Promise<MigrationResult>;
40
+ //# sourceMappingURL=migrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrator.d.ts","sourceRoot":"","sources":["../../src/persistence/migrator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAKjE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,OAAO;gBADP,WAAW,EAAE,iBAAiB,EAC9B,OAAO,EAAE,MAAM;IAGzB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;IAwDzC;;;OAGG;YACW,iBAAiB;IAuD/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA4BxB,OAAO,CAAC,YAAY;IAsBpB,OAAO,CAAC,UAAU;IAuClB,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,cAAc;CAavB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,iBAAiB,EAC9B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,eAAe,CAAC,CAG1B"}
@@ -0,0 +1,238 @@
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
+ import { join } from 'node:path';
9
+ import { existsSync, renameSync, readdirSync, statSync } from 'node:fs';
10
+ import { readFile } from 'node:fs/promises';
11
+ export class JsonToSqliteMigrator {
12
+ persistence;
13
+ baseDir;
14
+ constructor(persistence, baseDir) {
15
+ this.persistence = persistence;
16
+ this.baseDir = baseDir;
17
+ }
18
+ /**
19
+ * Run migration if needed (schema_version < 1).
20
+ */
21
+ async migrate() {
22
+ const version = this.persistence.getSchemaVersion();
23
+ if (version >= 1) {
24
+ return { migrated: false, counts: {} };
25
+ }
26
+ const counts = {};
27
+ counts.experiences = await this.migrateCollection('experiences', (data) => this.persistence.insertExperience(this.toExperience(data)));
28
+ counts.playbooks = await this.migrateCollection('playbooks', (data) => this.persistence.insertPlaybook(this.toPlaybook(data)));
29
+ counts.reflexionEpisodes = await this.migrateCollection('reflexion-episodes', (data) => this.persistence.insertReflexionEpisode(this.toReflexionEpisode(data)));
30
+ counts.causalEdges = await this.migrateCollection('causal-edges', (data) => {
31
+ const edge = data;
32
+ this.persistence.insertCausalEdge({
33
+ id: edge.id,
34
+ cause: edge.cause,
35
+ effect: edge.effect,
36
+ confidence: edge.confidence,
37
+ domain: edge.domain,
38
+ sourceTrajectoryIds: (edge.sourceTrajectoryIds ?? []),
39
+ observedCount: (edge.observedCount ?? 1),
40
+ createdAt: new Date(edge.createdAt),
41
+ updatedAt: new Date(edge.updatedAt),
42
+ });
43
+ });
44
+ counts.metaObservations = await this.migrateCollection('meta-observations', (data) => this.persistence.insertMetaObservation(this.toMetaObservation(data)));
45
+ counts.metaStrategies = await this.migrateCollection('meta-strategies', (data) => this.persistence.insertMetaStrategy(this.toMetaStrategy(data)));
46
+ this.persistence.setSchemaVersion(1);
47
+ return { migrated: true, counts };
48
+ }
49
+ /**
50
+ * Migrate a single collection directory (flat or partitioned).
51
+ * Returns the number of items migrated.
52
+ */
53
+ async migrateCollection(collection, inserter) {
54
+ const dir = join(this.baseDir, collection);
55
+ if (!existsSync(dir))
56
+ return 0;
57
+ const jsonFiles = this.collectJsonFiles(dir);
58
+ if (jsonFiles.length === 0)
59
+ return 0;
60
+ let count = 0;
61
+ // Insert in batches within a transaction
62
+ const BATCH_SIZE = 100;
63
+ for (let i = 0; i < jsonFiles.length; i += BATCH_SIZE) {
64
+ const batch = jsonFiles.slice(i, i + BATCH_SIZE);
65
+ const batchData = [];
66
+ for (const filePath of batch) {
67
+ try {
68
+ const content = await readFile(filePath, 'utf-8');
69
+ const data = JSON.parse(content);
70
+ batchData.push(data);
71
+ }
72
+ catch {
73
+ // Skip unparseable files
74
+ }
75
+ }
76
+ if (batchData.length > 0) {
77
+ this.persistence.transaction(() => {
78
+ for (const data of batchData) {
79
+ try {
80
+ inserter(data);
81
+ count++;
82
+ }
83
+ catch {
84
+ // Skip items that fail to insert
85
+ }
86
+ }
87
+ });
88
+ }
89
+ }
90
+ // Rename directory as backup
91
+ const backupDir = `${dir}.migrated`;
92
+ if (!existsSync(backupDir)) {
93
+ try {
94
+ renameSync(dir, backupDir);
95
+ }
96
+ catch {
97
+ // Non-fatal: backup rename failure doesn't block migration
98
+ }
99
+ }
100
+ return count;
101
+ }
102
+ /**
103
+ * Recursively collect all .json files in a directory (handles partitioned stores).
104
+ */
105
+ collectJsonFiles(dir) {
106
+ const files = [];
107
+ try {
108
+ const entries = readdirSync(dir);
109
+ for (const entry of entries) {
110
+ if (entry.startsWith('_'))
111
+ continue; // Skip _index.json, _global metadata
112
+ const fullPath = join(dir, entry);
113
+ const st = statSync(fullPath);
114
+ if (st.isDirectory()) {
115
+ // Recurse into partition directories
116
+ files.push(...this.collectJsonFiles(fullPath));
117
+ }
118
+ else if (entry.endsWith('.json')) {
119
+ files.push(fullPath);
120
+ }
121
+ }
122
+ }
123
+ catch {
124
+ // Directory read failure
125
+ }
126
+ return files;
127
+ }
128
+ // ==========================================================================
129
+ // Type coercion helpers (JSON data → typed objects)
130
+ // ==========================================================================
131
+ toExperience(data) {
132
+ const d = data;
133
+ return {
134
+ id: d.id,
135
+ taskInput: d.taskInput,
136
+ solutionOutput: d.solutionOutput,
137
+ feedback: d.feedback,
138
+ success: d.success,
139
+ domain: d.domain,
140
+ embedding: d.embedding,
141
+ trajectoryId: d.trajectoryId,
142
+ usageCount: (d.usageCount ?? 0),
143
+ accessScore: (d.accessScore ?? 0),
144
+ retrievalCount: (d.retrievalCount ?? 0),
145
+ tier: (d.tier ?? 'hot'),
146
+ compressed: d.compressed,
147
+ metadata: (d.metadata ?? {}),
148
+ createdAt: new Date(d.createdAt),
149
+ lastAccessedAt: d.lastAccessedAt ? new Date(d.lastAccessedAt) : undefined,
150
+ };
151
+ }
152
+ toPlaybook(data) {
153
+ const d = data;
154
+ const evolution = d.evolution ?? {};
155
+ const provenance = d.provenance;
156
+ return {
157
+ id: d.id,
158
+ name: d.name,
159
+ applicability: d.applicability,
160
+ guidance: d.guidance,
161
+ verification: (d.verification ?? { successIndicators: [], failureIndicators: [] }),
162
+ evolution: {
163
+ ...evolution,
164
+ version: (evolution.version ?? '1.0.0'),
165
+ createdFrom: (evolution.createdFrom ?? []),
166
+ failures: (evolution.failures ?? []),
167
+ refinements: (evolution.refinements ?? []),
168
+ successCount: (evolution.successCount ?? 0),
169
+ failureCount: (evolution.failureCount ?? 0),
170
+ lastUsed: evolution.lastUsed ? new Date(evolution.lastUsed) : undefined,
171
+ consolidationStrength: evolution.consolidationStrength,
172
+ domainBreadth: evolution.domainBreadth,
173
+ },
174
+ provenance: provenance ? {
175
+ origin: provenance.origin,
176
+ sourceFile: provenance.sourceFile,
177
+ importedFrom: provenance.importedFrom,
178
+ curatedBy: provenance.curatedBy,
179
+ recordedAt: new Date(provenance.recordedAt),
180
+ } : undefined,
181
+ confidence: (d.confidence ?? 0.3),
182
+ complexity: (d.complexity ?? 'moderate'),
183
+ estimatedEffort: (d.estimatedEffort ?? 3),
184
+ embedding: d.embedding,
185
+ createdAt: new Date(d.createdAt),
186
+ updatedAt: new Date(d.updatedAt),
187
+ };
188
+ }
189
+ toReflexionEpisode(data) {
190
+ const d = data;
191
+ return {
192
+ id: d.id,
193
+ trajectoryId: d.trajectoryId,
194
+ taskSummary: d.taskSummary,
195
+ outcome: d.outcome,
196
+ selfCritique: d.selfCritique,
197
+ keyInsights: (d.keyInsights ?? []),
198
+ strategyAssessment: d.strategyAssessment,
199
+ suggestedPlaybookUpdates: (d.suggestedPlaybookUpdates ?? []),
200
+ domain: d.domain,
201
+ createdAt: new Date(d.createdAt),
202
+ };
203
+ }
204
+ toMetaObservation(data) {
205
+ const d = data;
206
+ return {
207
+ id: d.id,
208
+ trajectoryId: d.trajectoryId,
209
+ routing: d.routing,
210
+ memoryUsage: (d.memoryUsage ?? { experiencesRetrieved: 0, playbooksApplied: [], retrievalQuality: 'neutral' }),
211
+ execution: (d.execution ?? { decompositionUsed: false, refinementIterations: 0, backtrackingOccurred: false, toolsUsed: [] }),
212
+ outcome: d.outcome,
213
+ lessons: (d.lessons ?? { whatWorked: [], whatFailed: [], suggestions: [] }),
214
+ timestamp: new Date(d.timestamp ?? new Date().toISOString()),
215
+ };
216
+ }
217
+ toMetaStrategy(data) {
218
+ const d = data;
219
+ return {
220
+ id: d.id,
221
+ name: d.name,
222
+ condition: d.condition,
223
+ adjustment: d.adjustment,
224
+ applicationCount: (d.applicationCount ?? 0),
225
+ successRate: (d.successRate ?? 0),
226
+ createdAt: new Date(d.createdAt),
227
+ updatedAt: new Date(d.updatedAt),
228
+ };
229
+ }
230
+ }
231
+ /**
232
+ * Create a migrator and run migration.
233
+ */
234
+ export async function runMigration(persistence, baseDir) {
235
+ const migrator = new JsonToSqliteMigrator(persistence, baseDir);
236
+ return migrator.migrate();
237
+ }
238
+ //# sourceMappingURL=migrator.js.map