cognitive-core 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. package/CLAUDE.md +233 -0
  2. package/README.md +370 -54
  3. package/dist/atlas.d.ts +10 -10
  4. package/dist/atlas.d.ts.map +1 -1
  5. package/dist/atlas.js +79 -48
  6. package/dist/atlas.js.map +1 -1
  7. package/dist/bin/cli-utils.d.ts +37 -0
  8. package/dist/bin/cli-utils.d.ts.map +1 -0
  9. package/dist/bin/cli-utils.js +176 -0
  10. package/dist/bin/cli-utils.js.map +1 -0
  11. package/dist/bin/cognitive-core.d.ts +2 -12
  12. package/dist/bin/cognitive-core.d.ts.map +1 -1
  13. package/dist/bin/cognitive-core.js +76 -351
  14. package/dist/bin/cognitive-core.js.map +1 -1
  15. package/dist/bin/commands/kb.d.ts +6 -0
  16. package/dist/bin/commands/kb.d.ts.map +1 -0
  17. package/dist/bin/commands/kb.js +240 -0
  18. package/dist/bin/commands/kb.js.map +1 -0
  19. package/dist/bin/commands/learn.d.ts +6 -0
  20. package/dist/bin/commands/learn.d.ts.map +1 -0
  21. package/dist/bin/commands/learn.js +91 -0
  22. package/dist/bin/commands/learn.js.map +1 -0
  23. package/dist/bin/commands/legacy.d.ts +12 -0
  24. package/dist/bin/commands/legacy.d.ts.map +1 -0
  25. package/dist/bin/commands/legacy.js +142 -0
  26. package/dist/bin/commands/legacy.js.map +1 -0
  27. package/dist/bin/commands/run.d.ts +3 -0
  28. package/dist/bin/commands/run.d.ts.map +1 -0
  29. package/dist/bin/commands/run.js +99 -0
  30. package/dist/bin/commands/run.js.map +1 -0
  31. package/dist/bin/commands/sessions.d.ts +9 -0
  32. package/dist/bin/commands/sessions.d.ts.map +1 -0
  33. package/dist/bin/commands/sessions.js +183 -0
  34. package/dist/bin/commands/sessions.js.map +1 -0
  35. package/dist/bin/commands/skills.d.ts +6 -0
  36. package/dist/bin/commands/skills.d.ts.map +1 -0
  37. package/dist/bin/commands/skills.js +135 -0
  38. package/dist/bin/commands/skills.js.map +1 -0
  39. package/dist/embeddings/index.d.ts +1 -0
  40. package/dist/embeddings/index.d.ts.map +1 -1
  41. package/dist/embeddings/index.js +2 -0
  42. package/dist/embeddings/index.js.map +1 -1
  43. package/dist/embeddings/inverted-index.d.ts +47 -0
  44. package/dist/embeddings/inverted-index.d.ts.map +1 -0
  45. package/dist/embeddings/inverted-index.js +122 -0
  46. package/dist/embeddings/inverted-index.js.map +1 -0
  47. package/dist/embeddings/manager.d.ts +3 -1
  48. package/dist/embeddings/manager.d.ts.map +1 -1
  49. package/dist/embeddings/manager.js +12 -7
  50. package/dist/embeddings/manager.js.map +1 -1
  51. package/dist/embeddings/vector-store.d.ts +7 -3
  52. package/dist/embeddings/vector-store.d.ts.map +1 -1
  53. package/dist/embeddings/vector-store.js +22 -6
  54. package/dist/embeddings/vector-store.js.map +1 -1
  55. package/dist/factory.d.ts +11 -12
  56. package/dist/factory.d.ts.map +1 -1
  57. package/dist/factory.js +20 -7
  58. package/dist/factory.js.map +1 -1
  59. package/dist/index.d.ts +7 -6
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +37 -5
  62. package/dist/index.js.map +1 -1
  63. package/dist/learning/analyzer.d.ts.map +1 -1
  64. package/dist/learning/analyzer.js +17 -35
  65. package/dist/learning/analyzer.js.map +1 -1
  66. package/dist/learning/energy-evaluator.d.ts +128 -0
  67. package/dist/learning/energy-evaluator.d.ts.map +1 -0
  68. package/dist/learning/energy-evaluator.js +175 -0
  69. package/dist/learning/energy-evaluator.js.map +1 -0
  70. package/dist/learning/healing-orchestrator.d.ts +182 -0
  71. package/dist/learning/healing-orchestrator.d.ts.map +1 -0
  72. package/dist/learning/healing-orchestrator.js +250 -0
  73. package/dist/learning/healing-orchestrator.js.map +1 -0
  74. package/dist/learning/index.d.ts +7 -2
  75. package/dist/learning/index.d.ts.map +1 -1
  76. package/dist/learning/index.js +13 -2
  77. package/dist/learning/index.js.map +1 -1
  78. package/dist/learning/instant-loop.d.ts +87 -0
  79. package/dist/learning/instant-loop.d.ts.map +1 -0
  80. package/dist/learning/instant-loop.js +264 -0
  81. package/dist/learning/instant-loop.js.map +1 -0
  82. package/dist/learning/loop-coordinator.d.ts +61 -0
  83. package/dist/learning/loop-coordinator.d.ts.map +1 -0
  84. package/dist/learning/loop-coordinator.js +96 -0
  85. package/dist/learning/loop-coordinator.js.map +1 -0
  86. package/dist/learning/maintenance-scheduler.d.ts +141 -0
  87. package/dist/learning/maintenance-scheduler.d.ts.map +1 -0
  88. package/dist/learning/maintenance-scheduler.js +186 -0
  89. package/dist/learning/maintenance-scheduler.js.map +1 -0
  90. package/dist/learning/meta-learner.d.ts.map +1 -1
  91. package/dist/learning/meta-learner.js +4 -21
  92. package/dist/learning/meta-learner.js.map +1 -1
  93. package/dist/learning/pipeline.d.ts +31 -4
  94. package/dist/learning/pipeline.d.ts.map +1 -1
  95. package/dist/learning/pipeline.js +64 -12
  96. package/dist/learning/pipeline.js.map +1 -1
  97. package/dist/learning/reflexion-generator.d.ts +64 -0
  98. package/dist/learning/reflexion-generator.d.ts.map +1 -0
  99. package/dist/learning/reflexion-generator.js +194 -0
  100. package/dist/learning/reflexion-generator.js.map +1 -0
  101. package/dist/learning/trajectory-sources/entire.d.ts +8 -5
  102. package/dist/learning/trajectory-sources/entire.d.ts.map +1 -1
  103. package/dist/learning/trajectory-sources/entire.js +13 -6
  104. package/dist/learning/trajectory-sources/entire.js.map +1 -1
  105. package/dist/learning/trajectory-sources/index.d.ts +1 -1
  106. package/dist/learning/trajectory-sources/index.d.ts.map +1 -1
  107. package/dist/learning/trajectory-sources/index.js +1 -1
  108. package/dist/learning/trajectory-sources/index.js.map +1 -1
  109. package/dist/learning/trajectory-sources/pipeline.d.ts +4 -4
  110. package/dist/learning/trajectory-sources/pipeline.d.ts.map +1 -1
  111. package/dist/learning/trajectory-sources/pipeline.js +2 -2
  112. package/dist/learning/trajectory-sources/pipeline.js.map +1 -1
  113. package/dist/learning/unified-pipeline.d.ts +281 -0
  114. package/dist/learning/unified-pipeline.d.ts.map +1 -0
  115. package/dist/learning/unified-pipeline.js +637 -0
  116. package/dist/learning/unified-pipeline.js.map +1 -0
  117. package/dist/memory/candidate-retrieval.d.ts +43 -0
  118. package/dist/memory/candidate-retrieval.d.ts.map +1 -0
  119. package/dist/memory/candidate-retrieval.js +41 -0
  120. package/dist/memory/candidate-retrieval.js.map +1 -0
  121. package/dist/memory/causal-store.d.ts +97 -0
  122. package/dist/memory/causal-store.d.ts.map +1 -0
  123. package/dist/memory/causal-store.js +209 -0
  124. package/dist/memory/causal-store.js.map +1 -0
  125. package/dist/memory/coherence.d.ts +71 -0
  126. package/dist/memory/coherence.d.ts.map +1 -0
  127. package/dist/memory/coherence.js +176 -0
  128. package/dist/memory/coherence.js.map +1 -0
  129. package/dist/memory/experience.d.ts +39 -6
  130. package/dist/memory/experience.d.ts.map +1 -1
  131. package/dist/memory/experience.js +193 -49
  132. package/dist/memory/experience.js.map +1 -1
  133. package/dist/memory/index.d.ts +7 -0
  134. package/dist/memory/index.d.ts.map +1 -1
  135. package/dist/memory/index.js +12 -0
  136. package/dist/memory/index.js.map +1 -1
  137. package/dist/memory/knowledge-bank.d.ts +14 -0
  138. package/dist/memory/knowledge-bank.d.ts.map +1 -1
  139. package/dist/memory/knowledge-bank.js +45 -0
  140. package/dist/memory/knowledge-bank.js.map +1 -1
  141. package/dist/memory/meta.d.ts +7 -8
  142. package/dist/memory/meta.d.ts.map +1 -1
  143. package/dist/memory/meta.js +73 -79
  144. package/dist/memory/meta.js.map +1 -1
  145. package/dist/memory/playbook.d.ts +26 -9
  146. package/dist/memory/playbook.d.ts.map +1 -1
  147. package/dist/memory/playbook.js +198 -74
  148. package/dist/memory/playbook.js.map +1 -1
  149. package/dist/memory/reasoning-bank.d.ts +130 -0
  150. package/dist/memory/reasoning-bank.d.ts.map +1 -0
  151. package/dist/memory/reasoning-bank.js +342 -0
  152. package/dist/memory/reasoning-bank.js.map +1 -0
  153. package/dist/memory/reflexion.d.ts +59 -0
  154. package/dist/memory/reflexion.d.ts.map +1 -0
  155. package/dist/memory/reflexion.js +96 -0
  156. package/dist/memory/reflexion.js.map +1 -0
  157. package/dist/memory/system.d.ts +7 -2
  158. package/dist/memory/system.d.ts.map +1 -1
  159. package/dist/memory/system.js +19 -7
  160. package/dist/memory/system.js.map +1 -1
  161. package/dist/memory/temporal-compressor.d.ts +126 -0
  162. package/dist/memory/temporal-compressor.d.ts.map +1 -0
  163. package/dist/memory/temporal-compressor.js +335 -0
  164. package/dist/memory/temporal-compressor.js.map +1 -0
  165. package/dist/persistence/index.d.ts +11 -0
  166. package/dist/persistence/index.d.ts.map +1 -0
  167. package/dist/persistence/index.js +11 -0
  168. package/dist/persistence/index.js.map +1 -0
  169. package/dist/persistence/migrator.d.ts +40 -0
  170. package/dist/persistence/migrator.d.ts.map +1 -0
  171. package/dist/persistence/migrator.js +238 -0
  172. package/dist/persistence/migrator.js.map +1 -0
  173. package/dist/persistence/serializers.d.ts +45 -0
  174. package/dist/persistence/serializers.d.ts.map +1 -0
  175. package/dist/persistence/serializers.js +80 -0
  176. package/dist/persistence/serializers.js.map +1 -0
  177. package/dist/persistence/sqlite-persistence.d.ts +228 -0
  178. package/dist/persistence/sqlite-persistence.d.ts.map +1 -0
  179. package/dist/persistence/sqlite-persistence.js +588 -0
  180. package/dist/persistence/sqlite-persistence.js.map +1 -0
  181. package/dist/runtime/flows/learning.d.ts +10 -12
  182. package/dist/runtime/flows/learning.d.ts.map +1 -1
  183. package/dist/runtime/flows/learning.js +10 -23
  184. package/dist/runtime/flows/learning.js.map +1 -1
  185. package/dist/search/index.d.ts +1 -0
  186. package/dist/search/index.d.ts.map +1 -1
  187. package/dist/search/index.js +2 -0
  188. package/dist/search/index.js.map +1 -1
  189. package/dist/search/moe-gate.d.ts +124 -0
  190. package/dist/search/moe-gate.d.ts.map +1 -0
  191. package/dist/search/moe-gate.js +234 -0
  192. package/dist/search/moe-gate.js.map +1 -0
  193. package/dist/search/router.d.ts +32 -2
  194. package/dist/search/router.d.ts.map +1 -1
  195. package/dist/search/router.js +87 -4
  196. package/dist/search/router.js.map +1 -1
  197. package/dist/session-bank/git-reader.d.ts +9 -4
  198. package/dist/session-bank/git-reader.d.ts.map +1 -1
  199. package/dist/session-bank/git-reader.js +22 -15
  200. package/dist/session-bank/git-reader.js.map +1 -1
  201. package/dist/session-bank/index.d.ts +2 -2
  202. package/dist/session-bank/index.d.ts.map +1 -1
  203. package/dist/session-bank/index.js +2 -2
  204. package/dist/session-bank/index.js.map +1 -1
  205. package/dist/session-bank/parser.d.ts +16 -5
  206. package/dist/session-bank/parser.d.ts.map +1 -1
  207. package/dist/session-bank/parser.js +187 -80
  208. package/dist/session-bank/parser.js.map +1 -1
  209. package/dist/session-bank/session-bank.d.ts +5 -0
  210. package/dist/session-bank/session-bank.d.ts.map +1 -1
  211. package/dist/session-bank/session-bank.js +30 -9
  212. package/dist/session-bank/session-bank.js.map +1 -1
  213. package/dist/session-bank/types.d.ts +4 -1
  214. package/dist/session-bank/types.d.ts.map +1 -1
  215. package/dist/session-bank/types.js +3 -3
  216. package/dist/session-bank/types.js.map +1 -1
  217. package/dist/surfacing/skill-publisher.d.ts.map +1 -1
  218. package/dist/surfacing/skill-publisher.js +15 -43
  219. package/dist/surfacing/skill-publisher.js.map +1 -1
  220. package/dist/surfacing/sqlite-storage-adapter.d.ts.map +1 -1
  221. package/dist/surfacing/sqlite-storage-adapter.js +13 -21
  222. package/dist/surfacing/sqlite-storage-adapter.js.map +1 -1
  223. package/dist/types/config.d.ts +100 -0
  224. package/dist/types/config.d.ts.map +1 -1
  225. package/dist/types/config.js +27 -0
  226. package/dist/types/config.js.map +1 -1
  227. package/dist/types/index.d.ts +2 -2
  228. package/dist/types/index.d.ts.map +1 -1
  229. package/dist/types/index.js +1 -1
  230. package/dist/types/index.js.map +1 -1
  231. package/dist/types/memory.d.ts +52 -0
  232. package/dist/types/memory.d.ts.map +1 -1
  233. package/dist/types/memory.js +13 -0
  234. package/dist/types/memory.js.map +1 -1
  235. package/dist/types/playbook.d.ts +4 -0
  236. package/dist/types/playbook.d.ts.map +1 -1
  237. package/dist/types/playbook.js.map +1 -1
  238. package/dist/utils/error-classifier.d.ts +30 -0
  239. package/dist/utils/error-classifier.d.ts.map +1 -0
  240. package/dist/utils/error-classifier.js +85 -0
  241. package/dist/utils/error-classifier.js.map +1 -0
  242. package/dist/utils/index.d.ts +3 -0
  243. package/dist/utils/index.d.ts.map +1 -1
  244. package/dist/utils/index.js +3 -0
  245. package/dist/utils/index.js.map +1 -1
  246. package/dist/utils/partitioned-store.d.ts +93 -0
  247. package/dist/utils/partitioned-store.d.ts.map +1 -0
  248. package/dist/utils/partitioned-store.js +251 -0
  249. package/dist/utils/partitioned-store.js.map +1 -0
  250. package/dist/utils/trajectory-helpers.d.ts +39 -0
  251. package/dist/utils/trajectory-helpers.d.ts.map +1 -0
  252. package/dist/utils/trajectory-helpers.js +57 -0
  253. package/dist/utils/trajectory-helpers.js.map +1 -0
  254. package/dist/workspace/runner.d.ts +3 -4
  255. package/dist/workspace/runner.d.ts.map +1 -1
  256. package/dist/workspace/runner.js.map +1 -1
  257. package/dist/workspace/types.d.ts +9 -2
  258. package/dist/workspace/types.d.ts.map +1 -1
  259. package/dist/workspace/types.js.map +1 -1
  260. package/package.json +6 -4
  261. package/references/sessionlog/.husky/pre-commit +1 -0
  262. package/references/sessionlog/.lintstagedrc.json +4 -0
  263. package/references/sessionlog/.prettierignore +4 -0
  264. package/references/sessionlog/.prettierrc.json +11 -0
  265. package/references/sessionlog/LICENSE +21 -0
  266. package/references/sessionlog/README.md +453 -0
  267. package/references/sessionlog/eslint.config.js +58 -0
  268. package/references/sessionlog/package-lock.json +3672 -0
  269. package/references/sessionlog/package.json +65 -0
  270. package/references/sessionlog/src/__tests__/agent-hooks.test.ts +570 -0
  271. package/references/sessionlog/src/__tests__/agent-registry.test.ts +127 -0
  272. package/references/sessionlog/src/__tests__/claude-code-hooks.test.ts +225 -0
  273. package/references/sessionlog/src/__tests__/claude-generator.test.ts +46 -0
  274. package/references/sessionlog/src/__tests__/commit-msg.test.ts +86 -0
  275. package/references/sessionlog/src/__tests__/cursor-agent.test.ts +224 -0
  276. package/references/sessionlog/src/__tests__/e2e-live.test.ts +890 -0
  277. package/references/sessionlog/src/__tests__/event-log.test.ts +183 -0
  278. package/references/sessionlog/src/__tests__/flush-sentinel.test.ts +105 -0
  279. package/references/sessionlog/src/__tests__/gemini-agent.test.ts +375 -0
  280. package/references/sessionlog/src/__tests__/git-hooks.test.ts +78 -0
  281. package/references/sessionlog/src/__tests__/hook-managers.test.ts +121 -0
  282. package/references/sessionlog/src/__tests__/lifecycle-tasks.test.ts +759 -0
  283. package/references/sessionlog/src/__tests__/opencode-agent.test.ts +338 -0
  284. package/references/sessionlog/src/__tests__/redaction.test.ts +136 -0
  285. package/references/sessionlog/src/__tests__/session-repo.test.ts +353 -0
  286. package/references/sessionlog/src/__tests__/session-store.test.ts +166 -0
  287. package/references/sessionlog/src/__tests__/setup-ccweb.test.ts +466 -0
  288. package/references/sessionlog/src/__tests__/skill-live.test.ts +461 -0
  289. package/references/sessionlog/src/__tests__/summarize.test.ts +348 -0
  290. package/references/sessionlog/src/__tests__/task-plan-e2e.test.ts +610 -0
  291. package/references/sessionlog/src/__tests__/task-plan-live.test.ts +632 -0
  292. package/references/sessionlog/src/__tests__/transcript-timestamp.test.ts +121 -0
  293. package/references/sessionlog/src/__tests__/types.test.ts +166 -0
  294. package/references/sessionlog/src/__tests__/utils.test.ts +333 -0
  295. package/references/sessionlog/src/__tests__/validation.test.ts +103 -0
  296. package/references/sessionlog/src/__tests__/worktree.test.ts +57 -0
  297. package/references/sessionlog/src/agent/agents/claude-code.ts +1089 -0
  298. package/references/sessionlog/src/agent/agents/cursor.ts +361 -0
  299. package/references/sessionlog/src/agent/agents/gemini-cli.ts +632 -0
  300. package/references/sessionlog/src/agent/agents/opencode.ts +540 -0
  301. package/references/sessionlog/src/agent/registry.ts +143 -0
  302. package/references/sessionlog/src/agent/session-types.ts +113 -0
  303. package/references/sessionlog/src/agent/types.ts +220 -0
  304. package/references/sessionlog/src/cli.ts +597 -0
  305. package/references/sessionlog/src/commands/clean.ts +133 -0
  306. package/references/sessionlog/src/commands/disable.ts +84 -0
  307. package/references/sessionlog/src/commands/doctor.ts +145 -0
  308. package/references/sessionlog/src/commands/enable.ts +202 -0
  309. package/references/sessionlog/src/commands/explain.ts +261 -0
  310. package/references/sessionlog/src/commands/reset.ts +105 -0
  311. package/references/sessionlog/src/commands/resume.ts +180 -0
  312. package/references/sessionlog/src/commands/rewind.ts +195 -0
  313. package/references/sessionlog/src/commands/setup-ccweb.ts +275 -0
  314. package/references/sessionlog/src/commands/status.ts +172 -0
  315. package/references/sessionlog/src/config.ts +165 -0
  316. package/references/sessionlog/src/events/event-log.ts +126 -0
  317. package/references/sessionlog/src/git-operations.ts +558 -0
  318. package/references/sessionlog/src/hooks/git-hooks.ts +165 -0
  319. package/references/sessionlog/src/hooks/lifecycle.ts +391 -0
  320. package/references/sessionlog/src/index.ts +650 -0
  321. package/references/sessionlog/src/security/redaction.ts +283 -0
  322. package/references/sessionlog/src/session/state-machine.ts +452 -0
  323. package/references/sessionlog/src/store/checkpoint-store.ts +509 -0
  324. package/references/sessionlog/src/store/native-store.ts +173 -0
  325. package/references/sessionlog/src/store/provider-types.ts +99 -0
  326. package/references/sessionlog/src/store/session-store.ts +266 -0
  327. package/references/sessionlog/src/strategy/attribution.ts +296 -0
  328. package/references/sessionlog/src/strategy/common.ts +207 -0
  329. package/references/sessionlog/src/strategy/content-overlap.ts +228 -0
  330. package/references/sessionlog/src/strategy/manual-commit.ts +988 -0
  331. package/references/sessionlog/src/strategy/types.ts +279 -0
  332. package/references/sessionlog/src/summarize/claude-generator.ts +115 -0
  333. package/references/sessionlog/src/summarize/summarize.ts +432 -0
  334. package/references/sessionlog/src/types.ts +508 -0
  335. package/references/sessionlog/src/utils/chunk-files.ts +49 -0
  336. package/references/sessionlog/src/utils/commit-message.ts +65 -0
  337. package/references/sessionlog/src/utils/detect-agent.ts +36 -0
  338. package/references/sessionlog/src/utils/hook-managers.ts +125 -0
  339. package/references/sessionlog/src/utils/ide-tags.ts +32 -0
  340. package/references/sessionlog/src/utils/paths.ts +79 -0
  341. package/references/sessionlog/src/utils/preview-rewind.ts +80 -0
  342. package/references/sessionlog/src/utils/rewind-conflict.ts +121 -0
  343. package/references/sessionlog/src/utils/shadow-branch.ts +109 -0
  344. package/references/sessionlog/src/utils/string-utils.ts +46 -0
  345. package/references/sessionlog/src/utils/todo-extract.ts +188 -0
  346. package/references/sessionlog/src/utils/trailers.ts +187 -0
  347. package/references/sessionlog/src/utils/transcript-parse.ts +177 -0
  348. package/references/sessionlog/src/utils/transcript-timestamp.ts +59 -0
  349. package/references/sessionlog/src/utils/tree-ops.ts +219 -0
  350. package/references/sessionlog/src/utils/tty.ts +72 -0
  351. package/references/sessionlog/src/utils/validation.ts +65 -0
  352. package/references/sessionlog/src/utils/worktree.ts +58 -0
  353. package/references/sessionlog/src/wire-types.ts +59 -0
  354. package/references/sessionlog/templates/setup-env.sh +153 -0
  355. package/references/sessionlog/tsconfig.json +18 -0
  356. package/references/sessionlog/vitest.config.ts +12 -0
  357. package/references/skill-tree/.sudocode/issues.jsonl +8 -0
  358. package/references/skill-tree/.sudocode/specs.jsonl +2 -0
  359. package/references/skill-tree/CLAUDE.md +56 -80
  360. package/references/skill-tree/README.md +188 -140
  361. package/references/skill-tree/examples/basic-usage.ts +95 -121
  362. package/references/skill-tree/package-lock.json +369 -26
  363. package/references/skill-tree/package.json +1 -1
  364. package/src/atlas.ts +97 -67
  365. package/src/bin/cli-utils.ts +220 -0
  366. package/src/bin/cognitive-core.ts +84 -392
  367. package/src/bin/commands/kb.ts +266 -0
  368. package/src/bin/commands/learn.ts +100 -0
  369. package/src/bin/commands/legacy.ts +182 -0
  370. package/src/bin/commands/run.ts +113 -0
  371. package/src/bin/commands/sessions.ts +221 -0
  372. package/src/bin/commands/skills.ts +146 -0
  373. package/src/embeddings/index.ts +3 -0
  374. package/src/embeddings/inverted-index.ts +134 -0
  375. package/src/embeddings/manager.ts +13 -8
  376. package/src/embeddings/vector-store.ts +21 -9
  377. package/src/factory.ts +33 -16
  378. package/src/index.ts +109 -9
  379. package/src/learning/analyzer.ts +21 -37
  380. package/src/learning/energy-evaluator.ts +282 -0
  381. package/src/learning/healing-orchestrator.ts +383 -0
  382. package/src/learning/index.ts +65 -9
  383. package/src/learning/instant-loop.ts +357 -0
  384. package/src/learning/maintenance-scheduler.ts +271 -0
  385. package/src/learning/meta-learner.ts +5 -23
  386. package/src/learning/reflexion-generator.ts +273 -0
  387. package/src/learning/trajectory-sources/entire.ts +24 -13
  388. package/src/learning/trajectory-sources/index.ts +2 -2
  389. package/src/learning/trajectory-sources/pipeline.ts +5 -5
  390. package/src/learning/unified-pipeline.ts +921 -0
  391. package/src/memory/candidate-retrieval.ts +71 -0
  392. package/src/memory/causal-store.ts +273 -0
  393. package/src/memory/coherence.ts +252 -0
  394. package/src/memory/experience.ts +217 -50
  395. package/src/memory/index.ts +43 -0
  396. package/src/memory/knowledge-bank.ts +57 -0
  397. package/src/memory/meta.ts +78 -96
  398. package/src/memory/playbook.ts +239 -75
  399. package/src/memory/reasoning-bank.ts +458 -0
  400. package/src/memory/reflexion.ts +122 -0
  401. package/src/memory/system.ts +21 -5
  402. package/src/memory/temporal-compressor.ts +409 -0
  403. package/src/persistence/index.ts +37 -0
  404. package/src/persistence/migrator.ts +298 -0
  405. package/src/persistence/serializers.ts +79 -0
  406. package/src/persistence/sqlite-persistence.ts +925 -0
  407. package/src/runtime/flows/learning.ts +25 -42
  408. package/src/search/index.ts +10 -0
  409. package/src/search/moe-gate.ts +304 -0
  410. package/src/search/router.ts +111 -4
  411. package/src/session-bank/git-reader.ts +29 -19
  412. package/src/session-bank/index.ts +4 -2
  413. package/src/session-bank/parser.ts +280 -98
  414. package/src/session-bank/session-bank.ts +33 -12
  415. package/src/session-bank/types.ts +8 -5
  416. package/src/surfacing/skill-publisher.ts +17 -49
  417. package/src/surfacing/sqlite-storage-adapter.ts +16 -32
  418. package/src/types/config.ts +30 -0
  419. package/src/types/index.ts +3 -0
  420. package/src/types/memory.ts +30 -0
  421. package/src/types/playbook.ts +4 -0
  422. package/src/utils/error-classifier.ts +113 -0
  423. package/src/utils/index.ts +18 -0
  424. package/src/utils/partitioned-store.ts +299 -0
  425. package/src/utils/trajectory-helpers.ts +79 -0
  426. package/src/workspace/runner.ts +3 -3
  427. package/src/workspace/types.ts +10 -2
  428. package/tests/embeddings/inverted-index.test.ts +138 -0
  429. package/tests/feature-toggles.test.ts +275 -0
  430. package/tests/gap-fixes.test.ts +17 -4
  431. package/tests/integration/cli-e2e.test.ts +621 -0
  432. package/tests/integration/e2e.test.ts +6 -5
  433. package/tests/integration/entire-e2e.test.ts +314 -125
  434. package/tests/integration/persistence-e2e.test.ts +741 -0
  435. package/tests/integration/phase-e2e.test.ts +1143 -0
  436. package/tests/integration/session-bank.test.ts +20 -14
  437. package/tests/integration/sessionlog-e2e.test.ts +329 -0
  438. package/tests/integration/unified-pipeline-e2e.test.ts +634 -0
  439. package/tests/learning/analyzer.test.ts +1 -1
  440. package/tests/learning/energy-evaluator.test.ts +180 -0
  441. package/tests/learning/entire-trajectory-source.test.ts +25 -25
  442. package/tests/learning/healing-orchestrator.test.ts +269 -0
  443. package/tests/learning/instant-loop.test.ts +243 -0
  444. package/tests/learning/maintenance-scheduler.test.ts +191 -0
  445. package/tests/learning/reflexion-generator.test.ts +411 -0
  446. package/tests/learning/trajectory-sources.test.ts +12 -4
  447. package/tests/learning/unified-pipeline.test.ts +322 -0
  448. package/tests/mcp/playbook-server.test.ts +6 -1
  449. package/tests/memory/causal-store.test.ts +276 -0
  450. package/tests/memory/coherence.test.ts +232 -0
  451. package/tests/memory/experience.test.ts +8 -3
  452. package/tests/memory/playbook.test.ts +307 -1
  453. package/tests/memory/provenance.test.ts +11 -2
  454. package/tests/memory/reasoning-bank.test.ts +239 -0
  455. package/tests/memory/reflexion.test.ts +166 -0
  456. package/tests/memory/skill-exporter.test.ts +6 -1
  457. package/tests/memory/system.test.ts +6 -1
  458. package/tests/memory/temporal-compressor.test.ts +318 -0
  459. package/tests/persistence/migrator.test.ts +1009 -0
  460. package/tests/persistence/sqlite-persistence.test.ts +635 -0
  461. package/tests/runtime/agent-manager.test.ts +6 -1
  462. package/tests/runtime/delegate.test.ts +6 -1
  463. package/tests/search/moe-gate.test.ts +250 -0
  464. package/tests/search/refinement-loop.test.ts +11 -2
  465. package/tests/search/router.test.ts +81 -2
  466. package/tests/session-bank/fixtures/sessionlog-root-metadata.json +16 -0
  467. package/tests/session-bank/fixtures/sessionlog-session/full.jsonl +6 -0
  468. package/tests/session-bank/fixtures/sessionlog-session/metadata.json +55 -0
  469. package/tests/session-bank/git-reader.test.ts +13 -13
  470. package/tests/session-bank/parser.test.ts +135 -3
  471. package/tests/session-bank/session-bank.test.ts +1 -1
  472. package/tests/surfacing/skill-library.test.ts +6 -1
  473. package/tests/surfacing/skill-publisher.test.ts +24 -58
  474. package/tests/surfacing/sqlite-storage-adapter.test.ts +11 -23
  475. package/tests/utils/partitioned-store.test.ts +230 -0
  476. package/tests/workspace/full-flow.test.ts +10 -4
  477. package/tests/workspace/runner.test.ts +10 -4
  478. package/docs/DESIGN-workspace-migration.md +0 -1079
  479. package/docs/PLAN-agentic-workspace-implementation.md +0 -717
  480. package/docs/PLAN-graph-migration.md +0 -299
  481. package/docs/PLAN-session-bank-implementation.md +0 -474
  482. package/src/learning/pipeline.ts +0 -323
  483. package/tests/learning/pipeline.test.ts +0 -176
@@ -0,0 +1,452 @@
1
+ /**
2
+ * Session State Machine
3
+ *
4
+ * Pure-function state machine for session lifecycle transitions.
5
+ * Ported from Go: session/phase.go
6
+ *
7
+ * The state machine computes the next phase and required actions given the
8
+ * current phase and an event. ApplyTransition executes side effects.
9
+ */
10
+
11
+ // ============================================================================
12
+ // Phase
13
+ // ============================================================================
14
+
15
+ export type Phase = 'active' | 'idle' | 'ended';
16
+
17
+ /**
18
+ * Normalize a phase string, treating empty or unknown values as 'idle'
19
+ * for backward compatibility with pre-state-machine session files.
20
+ */
21
+ export function phaseFromString(s: string | undefined): Phase {
22
+ switch (s) {
23
+ case 'active':
24
+ case 'active_committed':
25
+ // "active_committed" was removed with the 1:1 checkpoint model.
26
+ return 'active';
27
+ case 'idle':
28
+ return 'idle';
29
+ case 'ended':
30
+ return 'ended';
31
+ default:
32
+ return 'idle';
33
+ }
34
+ }
35
+
36
+ // ============================================================================
37
+ // Event
38
+ // ============================================================================
39
+
40
+ export const enum StateMachineEvent {
41
+ TurnStart = 0,
42
+ TurnEnd = 1,
43
+ GitCommit = 2,
44
+ SessionStart = 3,
45
+ SessionStop = 4,
46
+ Compaction = 5,
47
+ }
48
+
49
+ const ALL_EVENTS: StateMachineEvent[] = [
50
+ StateMachineEvent.TurnStart,
51
+ StateMachineEvent.TurnEnd,
52
+ StateMachineEvent.GitCommit,
53
+ StateMachineEvent.SessionStart,
54
+ StateMachineEvent.SessionStop,
55
+ StateMachineEvent.Compaction,
56
+ ];
57
+
58
+ export function eventToString(e: StateMachineEvent): string {
59
+ switch (e) {
60
+ case StateMachineEvent.TurnStart:
61
+ return 'TurnStart';
62
+ case StateMachineEvent.TurnEnd:
63
+ return 'TurnEnd';
64
+ case StateMachineEvent.GitCommit:
65
+ return 'GitCommit';
66
+ case StateMachineEvent.SessionStart:
67
+ return 'SessionStart';
68
+ case StateMachineEvent.SessionStop:
69
+ return 'SessionStop';
70
+ case StateMachineEvent.Compaction:
71
+ return 'Compaction';
72
+ default:
73
+ return `Event(${e})`;
74
+ }
75
+ }
76
+
77
+ // ============================================================================
78
+ // Action
79
+ // ============================================================================
80
+
81
+ export const enum Action {
82
+ Condense = 0,
83
+ CondenseIfFilesTouched = 1,
84
+ DiscardIfNoFiles = 2,
85
+ WarnStaleSession = 3,
86
+ ClearEndedAt = 4,
87
+ UpdateLastInteraction = 5,
88
+ }
89
+
90
+ export function actionToString(a: Action): string {
91
+ switch (a) {
92
+ case Action.Condense:
93
+ return 'Condense';
94
+ case Action.CondenseIfFilesTouched:
95
+ return 'CondenseIfFilesTouched';
96
+ case Action.DiscardIfNoFiles:
97
+ return 'DiscardIfNoFiles';
98
+ case Action.WarnStaleSession:
99
+ return 'WarnStaleSession';
100
+ case Action.ClearEndedAt:
101
+ return 'ClearEndedAt';
102
+ case Action.UpdateLastInteraction:
103
+ return 'UpdateLastInteraction';
104
+ default:
105
+ return `Action(${a})`;
106
+ }
107
+ }
108
+
109
+ // ============================================================================
110
+ // Transition Context & Result
111
+ // ============================================================================
112
+
113
+ export interface TransitionContext {
114
+ hasFilesTouched: boolean;
115
+ isRebaseInProgress: boolean;
116
+ }
117
+
118
+ export interface TransitionResult {
119
+ newPhase: Phase;
120
+ actions: Action[];
121
+ }
122
+
123
+ // ============================================================================
124
+ // Transition — pure function, no side effects
125
+ // ============================================================================
126
+
127
+ export function transition(
128
+ current: Phase,
129
+ event: StateMachineEvent,
130
+ ctx: TransitionContext,
131
+ ): TransitionResult {
132
+ current = phaseFromString(current);
133
+
134
+ switch (current) {
135
+ case 'idle':
136
+ return transitionFromIdle(event, ctx);
137
+ case 'active':
138
+ return transitionFromActive(event, ctx);
139
+ case 'ended':
140
+ return transitionFromEnded(event, ctx);
141
+ default:
142
+ return { newPhase: 'idle', actions: [] };
143
+ }
144
+ }
145
+
146
+ function transitionFromIdle(event: StateMachineEvent, ctx: TransitionContext): TransitionResult {
147
+ switch (event) {
148
+ case StateMachineEvent.TurnStart:
149
+ return {
150
+ newPhase: 'active',
151
+ actions: [Action.UpdateLastInteraction],
152
+ };
153
+ case StateMachineEvent.TurnEnd:
154
+ return { newPhase: 'idle', actions: [] };
155
+ case StateMachineEvent.GitCommit:
156
+ if (ctx.isRebaseInProgress) {
157
+ return { newPhase: 'idle', actions: [] };
158
+ }
159
+ return {
160
+ newPhase: 'idle',
161
+ actions: [Action.Condense, Action.UpdateLastInteraction],
162
+ };
163
+ case StateMachineEvent.SessionStart:
164
+ return { newPhase: 'idle', actions: [] };
165
+ case StateMachineEvent.SessionStop:
166
+ return {
167
+ newPhase: 'ended',
168
+ actions: [Action.UpdateLastInteraction],
169
+ };
170
+ case StateMachineEvent.Compaction:
171
+ return {
172
+ newPhase: 'idle',
173
+ actions: [Action.CondenseIfFilesTouched, Action.UpdateLastInteraction],
174
+ };
175
+ default:
176
+ return { newPhase: 'idle', actions: [] };
177
+ }
178
+ }
179
+
180
+ function transitionFromActive(event: StateMachineEvent, ctx: TransitionContext): TransitionResult {
181
+ switch (event) {
182
+ case StateMachineEvent.TurnStart:
183
+ return {
184
+ newPhase: 'active',
185
+ actions: [Action.UpdateLastInteraction],
186
+ };
187
+ case StateMachineEvent.TurnEnd:
188
+ return {
189
+ newPhase: 'idle',
190
+ actions: [Action.UpdateLastInteraction],
191
+ };
192
+ case StateMachineEvent.GitCommit:
193
+ if (ctx.isRebaseInProgress) {
194
+ return { newPhase: 'active', actions: [] };
195
+ }
196
+ return {
197
+ newPhase: 'active',
198
+ actions: [Action.Condense, Action.UpdateLastInteraction],
199
+ };
200
+ case StateMachineEvent.SessionStart:
201
+ return {
202
+ newPhase: 'active',
203
+ actions: [Action.WarnStaleSession],
204
+ };
205
+ case StateMachineEvent.SessionStop:
206
+ return {
207
+ newPhase: 'ended',
208
+ actions: [Action.UpdateLastInteraction],
209
+ };
210
+ case StateMachineEvent.Compaction:
211
+ return {
212
+ newPhase: 'active',
213
+ actions: [Action.CondenseIfFilesTouched, Action.UpdateLastInteraction],
214
+ };
215
+ default:
216
+ return { newPhase: 'active', actions: [] };
217
+ }
218
+ }
219
+
220
+ function transitionFromEnded(event: StateMachineEvent, ctx: TransitionContext): TransitionResult {
221
+ switch (event) {
222
+ case StateMachineEvent.TurnStart:
223
+ return {
224
+ newPhase: 'active',
225
+ actions: [Action.ClearEndedAt, Action.UpdateLastInteraction],
226
+ };
227
+ case StateMachineEvent.TurnEnd:
228
+ return { newPhase: 'ended', actions: [] };
229
+ case StateMachineEvent.GitCommit:
230
+ if (ctx.isRebaseInProgress) {
231
+ return { newPhase: 'ended', actions: [] };
232
+ }
233
+ if (ctx.hasFilesTouched) {
234
+ return {
235
+ newPhase: 'ended',
236
+ actions: [Action.CondenseIfFilesTouched, Action.UpdateLastInteraction],
237
+ };
238
+ }
239
+ return {
240
+ newPhase: 'ended',
241
+ actions: [Action.DiscardIfNoFiles, Action.UpdateLastInteraction],
242
+ };
243
+ case StateMachineEvent.SessionStart:
244
+ return {
245
+ newPhase: 'idle',
246
+ actions: [Action.ClearEndedAt],
247
+ };
248
+ case StateMachineEvent.SessionStop:
249
+ return { newPhase: 'ended', actions: [] };
250
+ case StateMachineEvent.Compaction:
251
+ return { newPhase: 'ended', actions: [] };
252
+ default:
253
+ return { newPhase: 'ended', actions: [] };
254
+ }
255
+ }
256
+
257
+ // ============================================================================
258
+ // Action Handler
259
+ // ============================================================================
260
+
261
+ export interface ActionHandler {
262
+ handleCondense(state: StateMachineState): Promise<void>;
263
+ handleCondenseIfFilesTouched(state: StateMachineState): Promise<void>;
264
+ handleDiscardIfNoFiles(state: StateMachineState): Promise<void>;
265
+ handleWarnStaleSession(state: StateMachineState): Promise<void>;
266
+ }
267
+
268
+ export class NoOpActionHandler implements ActionHandler {
269
+ async handleCondense(): Promise<void> {}
270
+ async handleCondenseIfFilesTouched(): Promise<void> {}
271
+ async handleDiscardIfNoFiles(): Promise<void> {}
272
+ async handleWarnStaleSession(): Promise<void> {}
273
+ }
274
+
275
+ // ============================================================================
276
+ // Apply Transition
277
+ // ============================================================================
278
+
279
+ export interface StateMachineState {
280
+ sessionID: string;
281
+ phase: Phase;
282
+ filesTouched: string[];
283
+ lastInteractionTime?: string;
284
+ endedAt?: string;
285
+ }
286
+
287
+ /**
288
+ * Apply a TransitionResult to state: sets the new phase, then executes
289
+ * all actions. Common actions (UpdateLastInteraction, ClearEndedAt)
290
+ * always run. Strategy-specific handler actions stop on first error.
291
+ */
292
+ export async function applyTransition(
293
+ state: StateMachineState,
294
+ result: TransitionResult,
295
+ handler: ActionHandler,
296
+ ): Promise<Error | null> {
297
+ state.phase = result.newPhase;
298
+
299
+ let handlerErr: Error | null = null;
300
+
301
+ for (const action of result.actions) {
302
+ switch (action) {
303
+ case Action.UpdateLastInteraction:
304
+ state.lastInteractionTime = new Date().toISOString();
305
+ break;
306
+ case Action.ClearEndedAt:
307
+ state.endedAt = undefined;
308
+ break;
309
+ case Action.Condense:
310
+ if (!handlerErr) {
311
+ try {
312
+ await handler.handleCondense(state);
313
+ } catch (e) {
314
+ handlerErr = e instanceof Error ? e : new Error(String(e));
315
+ }
316
+ }
317
+ break;
318
+ case Action.CondenseIfFilesTouched:
319
+ if (!handlerErr) {
320
+ try {
321
+ await handler.handleCondenseIfFilesTouched(state);
322
+ } catch (e) {
323
+ handlerErr = e instanceof Error ? e : new Error(String(e));
324
+ }
325
+ }
326
+ break;
327
+ case Action.DiscardIfNoFiles:
328
+ if (!handlerErr) {
329
+ try {
330
+ await handler.handleDiscardIfNoFiles(state);
331
+ } catch (e) {
332
+ handlerErr = e instanceof Error ? e : new Error(String(e));
333
+ }
334
+ }
335
+ break;
336
+ case Action.WarnStaleSession:
337
+ if (!handlerErr) {
338
+ try {
339
+ await handler.handleWarnStaleSession(state);
340
+ } catch (e) {
341
+ handlerErr = e instanceof Error ? e : new Error(String(e));
342
+ }
343
+ }
344
+ break;
345
+ }
346
+ }
347
+
348
+ return handlerErr;
349
+ }
350
+
351
+ // ============================================================================
352
+ // Session State Helpers
353
+ // ============================================================================
354
+
355
+ /** Duration after which a session is considered stale (7 days) */
356
+ export const STALE_SESSION_THRESHOLD_MS = 7 * 24 * 60 * 60 * 1000;
357
+
358
+ /**
359
+ * Returns true when the session's last interaction exceeds the stale threshold.
360
+ */
361
+ export function isStale(lastInteractionTime: string | undefined): boolean {
362
+ if (!lastInteractionTime) return false;
363
+ return Date.now() - new Date(lastInteractionTime).getTime() > STALE_SESSION_THRESHOLD_MS;
364
+ }
365
+
366
+ /**
367
+ * Normalize session state after loading from disk.
368
+ * Migrates legacy phase values and deprecated transcript fields.
369
+ */
370
+ export function normalizeAfterLoad(state: {
371
+ phase?: string;
372
+ checkpointTranscriptStart?: number;
373
+ condensedTranscriptLines?: number;
374
+ transcriptLinesAtStart?: number;
375
+ attributionBaseCommit?: string;
376
+ baseCommit?: string;
377
+ }): void {
378
+ // Normalize legacy phase values
379
+ state.phase = phaseFromString(state.phase);
380
+
381
+ // Migrate transcript fields
382
+ if (!state.checkpointTranscriptStart) {
383
+ if (state.condensedTranscriptLines && state.condensedTranscriptLines > 0) {
384
+ state.checkpointTranscriptStart = state.condensedTranscriptLines;
385
+ } else if (state.transcriptLinesAtStart && state.transcriptLinesAtStart > 0) {
386
+ state.checkpointTranscriptStart = state.transcriptLinesAtStart;
387
+ }
388
+ }
389
+ // Clear deprecated fields
390
+ state.condensedTranscriptLines = 0;
391
+ state.transcriptLinesAtStart = 0;
392
+
393
+ // Backfill attributionBaseCommit
394
+ if (!state.attributionBaseCommit && state.baseCommit) {
395
+ state.attributionBaseCommit = state.baseCommit;
396
+ }
397
+ }
398
+
399
+ // ============================================================================
400
+ // Mermaid Diagram
401
+ // ============================================================================
402
+
403
+ const ALL_PHASES: Phase[] = ['idle', 'active', 'ended'];
404
+
405
+ /**
406
+ * Generate a Mermaid state diagram from the transition table.
407
+ */
408
+ export function mermaidDiagram(): string {
409
+ const lines: string[] = ['stateDiagram-v2'];
410
+ lines.push(' state "IDLE" as idle');
411
+ lines.push(' state "ACTIVE" as active');
412
+ lines.push(' state "ENDED" as ended');
413
+ lines.push('');
414
+
415
+ for (const phase of ALL_PHASES) {
416
+ for (const event of ALL_EVENTS) {
417
+ interface ContextVariant {
418
+ label: string;
419
+ ctx: TransitionContext;
420
+ }
421
+
422
+ let variants: ContextVariant[];
423
+
424
+ if (event === StateMachineEvent.GitCommit && phase === 'ended') {
425
+ variants = [
426
+ { label: '[files]', ctx: { hasFilesTouched: true, isRebaseInProgress: false } },
427
+ { label: '[no files]', ctx: { hasFilesTouched: false, isRebaseInProgress: false } },
428
+ { label: '[rebase]', ctx: { hasFilesTouched: false, isRebaseInProgress: true } },
429
+ ];
430
+ } else if (event === StateMachineEvent.GitCommit) {
431
+ variants = [
432
+ { label: '', ctx: { hasFilesTouched: false, isRebaseInProgress: false } },
433
+ { label: '[rebase]', ctx: { hasFilesTouched: false, isRebaseInProgress: true } },
434
+ ];
435
+ } else {
436
+ variants = [{ label: '', ctx: { hasFilesTouched: false, isRebaseInProgress: false } }];
437
+ }
438
+
439
+ for (const v of variants) {
440
+ const result = transition(phase, event, v.ctx);
441
+ let label = eventToString(event);
442
+ if (v.label) label += ' ' + v.label;
443
+ if (result.actions.length > 0) {
444
+ label += ' / ' + result.actions.map(actionToString).join(', ');
445
+ }
446
+ lines.push(` ${phase} --> ${result.newPhase} : ${label}`);
447
+ }
448
+ }
449
+ }
450
+
451
+ return lines.join('\n') + '\n';
452
+ }