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,128 @@
1
+ /**
2
+ * EnergyEvaluator — Ruvector-inspired energy-threshold batch trigger.
3
+ *
4
+ * Instead of a simple count threshold, the evaluator measures "incoherence
5
+ * energy" from trajectory signals. A trajectory that introduces contradictions,
6
+ * encounters a novel domain with no playbooks, or triggers a high error rate
7
+ * can escalate to batch processing even before the count threshold is met.
8
+ *
9
+ * Inspired by ruvector's Compute Ladder (prime-radiant/execution/ladder.rs)
10
+ * which uses energy-driven escalation with named transition reasons.
11
+ */
12
+ import type { Trajectory } from '../types/index.js';
13
+ import type { InstantLoopResult } from './instant-loop.js';
14
+ /**
15
+ * Reasons why a batch was triggered — named transitions for audit.
16
+ */
17
+ export type EscalationReason = 'count_threshold' | 'contradiction_detected' | 'novel_domain' | 'high_error_rate' | 'pattern_shift' | 'manual_override';
18
+ /**
19
+ * Signals extracted from a trajectory that contribute to energy.
20
+ */
21
+ export interface EnergySignal {
22
+ /** Whether a coherence contradiction was detected during instant loop */
23
+ contradictionDetected: boolean;
24
+ /** Whether this trajectory's domain has no existing playbooks */
25
+ novelDomain: boolean;
26
+ /** Error rate in the recent window exceeds threshold */
27
+ highErrorRate: boolean;
28
+ /** Significant shift in patterns (e.g., new tool usage, domain change) */
29
+ patternShift: boolean;
30
+ }
31
+ /**
32
+ * Result of an energy evaluation.
33
+ */
34
+ export interface EnergyEvaluation {
35
+ /** Computed energy score (0.0 = calm, 1.0 = high incoherence) */
36
+ energy: number;
37
+ /** Whether the energy exceeds the batch trigger threshold */
38
+ shouldTriggerBatch: boolean;
39
+ /** Named reason(s) for the trigger decision */
40
+ reasons: EscalationReason[];
41
+ }
42
+ /**
43
+ * Lane transition record for audit purposes.
44
+ */
45
+ export interface LaneTransition {
46
+ timestamp: Date;
47
+ fromPhase: 'immediate' | 'batch' | 'maintenance';
48
+ toPhase: 'immediate' | 'batch' | 'maintenance';
49
+ reasons: EscalationReason[];
50
+ energy: number;
51
+ trajectoryId: string;
52
+ }
53
+ /**
54
+ * Configuration for the EnergyEvaluator.
55
+ */
56
+ export interface EnergyEvaluatorConfig {
57
+ /** Trajectories needed before count-based batch trigger (default: 10) */
58
+ countThreshold: number;
59
+ /** Trigger batch when a contradiction is detected (default: true) */
60
+ triggerOnContradiction: boolean;
61
+ /** Trigger batch when a novel domain is encountered (default: true) */
62
+ triggerOnNovelDomain: boolean;
63
+ /** Error rate threshold for triggering batch (default: 0.6) */
64
+ errorRateThreshold: number;
65
+ /** Minimum time between batches in ms — debounce (default: 30000) */
66
+ minIntervalMs: number;
67
+ /** Number of recent trajectories to consider for error rate (default: 5) */
68
+ recentWindowSize: number;
69
+ /** Energy threshold for triggering batch (0.0–1.0, default: 0.7) */
70
+ energyThreshold: number;
71
+ /** Energy contribution weights */
72
+ weights: {
73
+ contradiction: number;
74
+ novelDomain: number;
75
+ highErrorRate: number;
76
+ patternShift: number;
77
+ };
78
+ }
79
+ /**
80
+ * EnergyEvaluator — determines when batch processing should be triggered
81
+ * based on measured incoherence energy from trajectory signals.
82
+ */
83
+ export declare class EnergyEvaluator {
84
+ private config;
85
+ private pendingCount;
86
+ private lastBatchTime;
87
+ private recentOutcomes;
88
+ private knownDomains;
89
+ private transitionLog;
90
+ constructor(config?: Partial<EnergyEvaluatorConfig>);
91
+ /**
92
+ * Record a trajectory and evaluate whether batch should be triggered.
93
+ */
94
+ evaluate(trajectory: Trajectory, _instantResult: InstantLoopResult, signals?: Partial<EnergySignal>): EnergyEvaluation;
95
+ /**
96
+ * Compute energy from signal using weighted sum.
97
+ */
98
+ private computeEnergy;
99
+ /**
100
+ * Reset after a batch run completes.
101
+ */
102
+ resetAfterBatch(): void;
103
+ /**
104
+ * Force-trigger evaluation (for manual override).
105
+ */
106
+ forceEvaluate(): EnergyEvaluation;
107
+ /**
108
+ * Seed known domains (e.g., from existing playbooks on init).
109
+ */
110
+ seedKnownDomains(domains: string[]): void;
111
+ /**
112
+ * Get the current pending count.
113
+ */
114
+ getPendingCount(): number;
115
+ /**
116
+ * Get the transition log for audit/debugging.
117
+ */
118
+ getTransitionLog(): readonly LaneTransition[];
119
+ /**
120
+ * Get current configuration.
121
+ */
122
+ getConfig(): Readonly<EnergyEvaluatorConfig>;
123
+ }
124
+ /**
125
+ * Create an EnergyEvaluator.
126
+ */
127
+ export declare function createEnergyEvaluator(config?: Partial<EnergyEvaluatorConfig>): EnergyEvaluator;
128
+ //# sourceMappingURL=energy-evaluator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"energy-evaluator.d.ts","sourceRoot":"","sources":["../../src/learning/energy-evaluator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,175 @@
1
+ /**
2
+ * EnergyEvaluator — Ruvector-inspired energy-threshold batch trigger.
3
+ *
4
+ * Instead of a simple count threshold, the evaluator measures "incoherence
5
+ * energy" from trajectory signals. A trajectory that introduces contradictions,
6
+ * encounters a novel domain with no playbooks, or triggers a high error rate
7
+ * can escalate to batch processing even before the count threshold is met.
8
+ *
9
+ * Inspired by ruvector's Compute Ladder (prime-radiant/execution/ladder.rs)
10
+ * which uses energy-driven escalation with named transition reasons.
11
+ */
12
+ const DEFAULT_CONFIG = {
13
+ countThreshold: 10,
14
+ triggerOnContradiction: true,
15
+ triggerOnNovelDomain: true,
16
+ errorRateThreshold: 0.6,
17
+ minIntervalMs: 30_000,
18
+ recentWindowSize: 5,
19
+ energyThreshold: 0.7,
20
+ weights: {
21
+ contradiction: 0.4,
22
+ novelDomain: 0.3,
23
+ highErrorRate: 0.2,
24
+ patternShift: 0.1,
25
+ },
26
+ };
27
+ /**
28
+ * EnergyEvaluator — determines when batch processing should be triggered
29
+ * based on measured incoherence energy from trajectory signals.
30
+ */
31
+ export class EnergyEvaluator {
32
+ config;
33
+ pendingCount = 0;
34
+ lastBatchTime = 0;
35
+ recentOutcomes = [];
36
+ knownDomains = new Set();
37
+ transitionLog = [];
38
+ constructor(config) {
39
+ this.config = {
40
+ ...DEFAULT_CONFIG,
41
+ ...config,
42
+ weights: { ...DEFAULT_CONFIG.weights, ...config?.weights },
43
+ };
44
+ }
45
+ /**
46
+ * Record a trajectory and evaluate whether batch should be triggered.
47
+ */
48
+ evaluate(trajectory, _instantResult, signals) {
49
+ this.pendingCount++;
50
+ // Track recent outcomes for error rate
51
+ this.recentOutcomes.push(trajectory.outcome.success);
52
+ if (this.recentOutcomes.length > this.config.recentWindowSize) {
53
+ this.recentOutcomes.shift();
54
+ }
55
+ // Build the energy signal
56
+ const domain = trajectory.task.domain ?? 'general';
57
+ const isNovelDomain = !this.knownDomains.has(domain);
58
+ this.knownDomains.add(domain);
59
+ const errorRate = this.recentOutcomes.length > 0
60
+ ? this.recentOutcomes.filter(s => !s).length / this.recentOutcomes.length
61
+ : 0;
62
+ const signal = {
63
+ contradictionDetected: signals?.contradictionDetected ?? false,
64
+ novelDomain: isNovelDomain && (signals?.novelDomain ?? true),
65
+ highErrorRate: errorRate >= this.config.errorRateThreshold,
66
+ patternShift: signals?.patternShift ?? false,
67
+ };
68
+ // Compute energy
69
+ const energy = this.computeEnergy(signal);
70
+ // Determine reasons
71
+ const reasons = [];
72
+ if (this.pendingCount >= this.config.countThreshold) {
73
+ reasons.push('count_threshold');
74
+ }
75
+ if (signal.contradictionDetected && this.config.triggerOnContradiction) {
76
+ reasons.push('contradiction_detected');
77
+ }
78
+ if (signal.novelDomain && this.config.triggerOnNovelDomain) {
79
+ reasons.push('novel_domain');
80
+ }
81
+ if (signal.highErrorRate) {
82
+ reasons.push('high_error_rate');
83
+ }
84
+ if (signal.patternShift) {
85
+ reasons.push('pattern_shift');
86
+ }
87
+ // Check debounce
88
+ const now = Date.now();
89
+ const withinDebounce = (now - this.lastBatchTime) < this.config.minIntervalMs;
90
+ // Trigger if count threshold reached OR energy exceeds threshold
91
+ const shouldTrigger = !withinDebounce && (this.pendingCount >= this.config.countThreshold ||
92
+ energy >= this.config.energyThreshold);
93
+ if (shouldTrigger && reasons.length > 0) {
94
+ this.transitionLog.push({
95
+ timestamp: new Date(),
96
+ fromPhase: 'immediate',
97
+ toPhase: 'batch',
98
+ reasons,
99
+ energy,
100
+ trajectoryId: trajectory.id,
101
+ });
102
+ }
103
+ return {
104
+ energy,
105
+ shouldTriggerBatch: shouldTrigger,
106
+ reasons: shouldTrigger ? reasons : [],
107
+ };
108
+ }
109
+ /**
110
+ * Compute energy from signal using weighted sum.
111
+ */
112
+ computeEnergy(signal) {
113
+ const w = this.config.weights;
114
+ let energy = 0;
115
+ if (signal.contradictionDetected)
116
+ energy += w.contradiction;
117
+ if (signal.novelDomain)
118
+ energy += w.novelDomain;
119
+ if (signal.highErrorRate)
120
+ energy += w.highErrorRate;
121
+ if (signal.patternShift)
122
+ energy += w.patternShift;
123
+ return Math.min(1.0, energy);
124
+ }
125
+ /**
126
+ * Reset after a batch run completes.
127
+ */
128
+ resetAfterBatch() {
129
+ this.pendingCount = 0;
130
+ this.lastBatchTime = Date.now();
131
+ }
132
+ /**
133
+ * Force-trigger evaluation (for manual override).
134
+ */
135
+ forceEvaluate() {
136
+ return {
137
+ energy: 1.0,
138
+ shouldTriggerBatch: true,
139
+ reasons: ['manual_override'],
140
+ };
141
+ }
142
+ /**
143
+ * Seed known domains (e.g., from existing playbooks on init).
144
+ */
145
+ seedKnownDomains(domains) {
146
+ for (const d of domains) {
147
+ this.knownDomains.add(d);
148
+ }
149
+ }
150
+ /**
151
+ * Get the current pending count.
152
+ */
153
+ getPendingCount() {
154
+ return this.pendingCount;
155
+ }
156
+ /**
157
+ * Get the transition log for audit/debugging.
158
+ */
159
+ getTransitionLog() {
160
+ return this.transitionLog;
161
+ }
162
+ /**
163
+ * Get current configuration.
164
+ */
165
+ getConfig() {
166
+ return this.config;
167
+ }
168
+ }
169
+ /**
170
+ * Create an EnergyEvaluator.
171
+ */
172
+ export function createEnergyEvaluator(config) {
173
+ return new EnergyEvaluator(config);
174
+ }
175
+ //# sourceMappingURL=energy-evaluator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"energy-evaluator.js","sourceRoot":"","sources":["../../src/learning/energy-evaluator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * HealingOrchestrator — Plug-in anomaly detection and repair pattern.
3
+ *
4
+ * Inspired by ruvector's HealingOrchestrator (ruvector-dag/healing/orchestrator.rs).
5
+ * Runs registered anomaly detectors and repair strategies in each maintenance
6
+ * cycle. Detectors and strategies are push-registered via add methods.
7
+ *
8
+ * The orchestrator itself has no internal timer — `runCycle()` is called
9
+ * explicitly by the MaintenanceScheduler or manually by the caller.
10
+ */
11
+ /**
12
+ * Health context provided to detectors and repair strategies.
13
+ */
14
+ export interface HealthContext {
15
+ /** Total trajectories processed since last cycle */
16
+ trajectoriesProcessed: number;
17
+ /** Current experience count */
18
+ experienceCount: number;
19
+ /** Current playbook count */
20
+ playbookCount: number;
21
+ /** Recent success rate (0.0–1.0) */
22
+ recentSuccessRate: number;
23
+ /** Batches since last maintenance */
24
+ batchesSinceLastMaintenance: number;
25
+ /** Custom metrics from subsystems */
26
+ metrics: Record<string, number>;
27
+ }
28
+ /**
29
+ * An anomaly detected by a detector.
30
+ */
31
+ export interface Anomaly {
32
+ /** Unique type identifier (e.g., 'playbook-drift', 'memory-bloat') */
33
+ type: string;
34
+ /** Severity: higher = more urgent */
35
+ severity: 'low' | 'medium' | 'high';
36
+ /** Human-readable description */
37
+ description: string;
38
+ /** Detector that found this anomaly */
39
+ detectorName: string;
40
+ /** Arbitrary data for repair strategies to use */
41
+ data?: Record<string, unknown>;
42
+ }
43
+ /**
44
+ * Result of a repair attempt.
45
+ */
46
+ export interface RepairResult {
47
+ /** Whether the repair was successful */
48
+ success: boolean;
49
+ /** What the repair strategy did */
50
+ action: string;
51
+ /** Repair strategy name */
52
+ strategyName: string;
53
+ /** Duration in ms */
54
+ durationMs: number;
55
+ }
56
+ /**
57
+ * Result of a full healing cycle.
58
+ */
59
+ export interface HealingCycleResult {
60
+ /** Anomalies detected in this cycle */
61
+ anomaliesDetected: Anomaly[];
62
+ /** Repair attempts and their results */
63
+ repairs: RepairResult[];
64
+ /** Total duration of the cycle in ms */
65
+ durationMs: number;
66
+ /** Timestamp */
67
+ timestamp: Date;
68
+ }
69
+ /**
70
+ * Interface for anomaly detectors.
71
+ * Implement this to create custom health checks.
72
+ */
73
+ export interface AnomalyDetector {
74
+ /** Unique name for this detector */
75
+ readonly name: string;
76
+ /** Run detection and return any anomalies found */
77
+ detect(context: HealthContext): Promise<Anomaly[]>;
78
+ }
79
+ /**
80
+ * Interface for repair strategies.
81
+ * Implement this to create custom repair actions.
82
+ */
83
+ export interface RepairStrategy {
84
+ /** Unique name for this strategy */
85
+ readonly name: string;
86
+ /** Check if this strategy can handle a given anomaly type */
87
+ canRepair(anomaly: Anomaly): boolean;
88
+ /** Attempt to repair the anomaly */
89
+ repair(anomaly: Anomaly, context: HealthContext): Promise<RepairResult>;
90
+ }
91
+ /**
92
+ * HealingOrchestrator — coordinates anomaly detection and repair.
93
+ */
94
+ export declare class HealingOrchestrator {
95
+ private detectors;
96
+ private strategies;
97
+ private cycleHistory;
98
+ private maxHistorySize;
99
+ constructor(options?: {
100
+ maxHistorySize?: number;
101
+ });
102
+ /**
103
+ * Register an anomaly detector.
104
+ */
105
+ addDetector(detector: AnomalyDetector): void;
106
+ /**
107
+ * Unregister an anomaly detector by name.
108
+ */
109
+ removeDetector(name: string): void;
110
+ /**
111
+ * Register a repair strategy.
112
+ */
113
+ addRepairStrategy(strategy: RepairStrategy): void;
114
+ /**
115
+ * Unregister a repair strategy by name.
116
+ */
117
+ removeRepairStrategy(name: string): void;
118
+ /**
119
+ * Run a healing cycle.
120
+ *
121
+ * 1. Runs all registered detectors to find anomalies
122
+ * 2. For each anomaly, finds the first matching repair strategy
123
+ * 3. Executes the repair
124
+ */
125
+ runCycle(context: HealthContext): Promise<HealingCycleResult>;
126
+ /**
127
+ * Get cycle history for diagnostics.
128
+ */
129
+ getCycleHistory(): readonly HealingCycleResult[];
130
+ /**
131
+ * Get registered detectors.
132
+ */
133
+ getDetectors(): readonly AnomalyDetector[];
134
+ /**
135
+ * Get registered repair strategies.
136
+ */
137
+ getRepairStrategies(): readonly RepairStrategy[];
138
+ }
139
+ /**
140
+ * Create a HealingOrchestrator.
141
+ */
142
+ export declare function createHealingOrchestrator(options?: {
143
+ maxHistorySize?: number;
144
+ }): HealingOrchestrator;
145
+ /**
146
+ * Detects when playbook success rates are consistently low,
147
+ * suggesting playbook drift.
148
+ */
149
+ export declare class PlaybookDriftDetector implements AnomalyDetector {
150
+ readonly name = "playbook-drift";
151
+ private threshold;
152
+ constructor(threshold?: number);
153
+ detect(context: HealthContext): Promise<Anomaly[]>;
154
+ }
155
+ /**
156
+ * Detects when the experience store is growing beyond capacity,
157
+ * suggesting aggressive pruning is needed.
158
+ */
159
+ export declare class MemoryBloatDetector implements AnomalyDetector {
160
+ readonly name = "memory-bloat";
161
+ private maxExperiences;
162
+ private warningRatio;
163
+ constructor(maxExperiences?: number, warningRatio?: number);
164
+ detect(context: HealthContext): Promise<Anomaly[]>;
165
+ }
166
+ /**
167
+ * Detects when a custom metric exceeds a Z-score threshold,
168
+ * inspired by ruvector's Z-score-based outlier detection.
169
+ */
170
+ export declare class MetricDriftDetector implements AnomalyDetector {
171
+ readonly name: string;
172
+ private metricKey;
173
+ private history;
174
+ private windowSize;
175
+ private zThreshold;
176
+ constructor(metricKey: string, options?: {
177
+ windowSize?: number;
178
+ zThreshold?: number;
179
+ });
180
+ detect(context: HealthContext): Promise<Anomaly[]>;
181
+ }
182
+ //# sourceMappingURL=healing-orchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"healing-orchestrator.d.ts","sourceRoot":"","sources":["../../src/learning/healing-orchestrator.ts"],"names":[],"mappings":"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"}