kairo-mcp 1.3.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 (384) hide show
  1. package/CHANGELOG.md +1122 -0
  2. package/LICENSE +21 -0
  3. package/README.md +662 -0
  4. package/dist/cli/cli.d.ts +3 -0
  5. package/dist/cli/cli.d.ts.map +1 -0
  6. package/dist/cli/cli.js +226 -0
  7. package/dist/cli/cli.js.map +1 -0
  8. package/dist/cli/commands.d.ts +10 -0
  9. package/dist/cli/commands.d.ts.map +1 -0
  10. package/dist/cli/commands.js +938 -0
  11. package/dist/cli/commands.js.map +1 -0
  12. package/dist/cli/flags.d.ts +30 -0
  13. package/dist/cli/flags.d.ts.map +1 -0
  14. package/dist/cli/flags.js +90 -0
  15. package/dist/cli/flags.js.map +1 -0
  16. package/dist/cli/output.d.ts +69 -0
  17. package/dist/cli/output.d.ts.map +1 -0
  18. package/dist/cli/output.js +166 -0
  19. package/dist/cli/output.js.map +1 -0
  20. package/dist/cli/types.d.ts +34 -0
  21. package/dist/cli/types.d.ts.map +1 -0
  22. package/dist/cli/types.js +2 -0
  23. package/dist/cli/types.js.map +1 -0
  24. package/dist/contracts/migrations.d.ts +31 -0
  25. package/dist/contracts/migrations.d.ts.map +1 -0
  26. package/dist/contracts/migrations.js +71 -0
  27. package/dist/contracts/migrations.js.map +1 -0
  28. package/dist/contracts/schemas.d.ts +53 -0
  29. package/dist/contracts/schemas.d.ts.map +1 -0
  30. package/dist/contracts/schemas.js +27 -0
  31. package/dist/contracts/schemas.js.map +1 -0
  32. package/dist/contracts/stability.d.ts +32 -0
  33. package/dist/contracts/stability.d.ts.map +1 -0
  34. package/dist/contracts/stability.js +140 -0
  35. package/dist/contracts/stability.js.map +1 -0
  36. package/dist/contracts/zodSchemas.d.ts +811 -0
  37. package/dist/contracts/zodSchemas.d.ts.map +1 -0
  38. package/dist/contracts/zodSchemas.js +139 -0
  39. package/dist/contracts/zodSchemas.js.map +1 -0
  40. package/dist/core/brief/budget.d.ts +21 -0
  41. package/dist/core/brief/budget.d.ts.map +1 -0
  42. package/dist/core/brief/budget.js +42 -0
  43. package/dist/core/brief/budget.js.map +1 -0
  44. package/dist/core/checkpoint/checkpointManager.d.ts +29 -0
  45. package/dist/core/checkpoint/checkpointManager.d.ts.map +1 -0
  46. package/dist/core/checkpoint/checkpointManager.js +49 -0
  47. package/dist/core/checkpoint/checkpointManager.js.map +1 -0
  48. package/dist/core/compaction/compactor.d.ts +40 -0
  49. package/dist/core/compaction/compactor.d.ts.map +1 -0
  50. package/dist/core/compaction/compactor.js +168 -0
  51. package/dist/core/compaction/compactor.js.map +1 -0
  52. package/dist/core/continuation/continuationBuilder.d.ts +19 -0
  53. package/dist/core/continuation/continuationBuilder.d.ts.map +1 -0
  54. package/dist/core/continuation/continuationBuilder.js +184 -0
  55. package/dist/core/continuation/continuationBuilder.js.map +1 -0
  56. package/dist/core/coordination/coordinationManager.d.ts +34 -0
  57. package/dist/core/coordination/coordinationManager.d.ts.map +1 -0
  58. package/dist/core/coordination/coordinationManager.js +253 -0
  59. package/dist/core/coordination/coordinationManager.js.map +1 -0
  60. package/dist/core/coordination/types.d.ts +52 -0
  61. package/dist/core/coordination/types.d.ts.map +1 -0
  62. package/dist/core/coordination/types.js +6 -0
  63. package/dist/core/coordination/types.js.map +1 -0
  64. package/dist/core/github/changelog.d.ts +9 -0
  65. package/dist/core/github/changelog.d.ts.map +1 -0
  66. package/dist/core/github/changelog.js +41 -0
  67. package/dist/core/github/changelog.js.map +1 -0
  68. package/dist/core/github/commitMessage.d.ts +4 -0
  69. package/dist/core/github/commitMessage.d.ts.map +1 -0
  70. package/dist/core/github/commitMessage.js +125 -0
  71. package/dist/core/github/commitMessage.js.map +1 -0
  72. package/dist/core/github/gitContext.d.ts +3 -0
  73. package/dist/core/github/gitContext.d.ts.map +1 -0
  74. package/dist/core/github/gitContext.js +67 -0
  75. package/dist/core/github/gitContext.js.map +1 -0
  76. package/dist/core/github/releasePlan.d.ts +8 -0
  77. package/dist/core/github/releasePlan.d.ts.map +1 -0
  78. package/dist/core/github/releasePlan.js +56 -0
  79. package/dist/core/github/releasePlan.js.map +1 -0
  80. package/dist/core/github/semver.d.ts +11 -0
  81. package/dist/core/github/semver.d.ts.map +1 -0
  82. package/dist/core/github/semver.js +23 -0
  83. package/dist/core/github/semver.js.map +1 -0
  84. package/dist/core/github/types.d.ts +36 -0
  85. package/dist/core/github/types.d.ts.map +1 -0
  86. package/dist/core/github/types.js +2 -0
  87. package/dist/core/github/types.js.map +1 -0
  88. package/dist/core/graph/derived.d.ts +6 -0
  89. package/dist/core/graph/derived.d.ts.map +1 -0
  90. package/dist/core/graph/derived.js +133 -0
  91. package/dist/core/graph/derived.js.map +1 -0
  92. package/dist/core/graph/graphEngine.d.ts +11 -0
  93. package/dist/core/graph/graphEngine.d.ts.map +1 -0
  94. package/dist/core/graph/graphEngine.js +28 -0
  95. package/dist/core/graph/graphEngine.js.map +1 -0
  96. package/dist/core/graph/imports.d.ts +19 -0
  97. package/dist/core/graph/imports.d.ts.map +1 -0
  98. package/dist/core/graph/imports.js +0 -0
  99. package/dist/core/graph/imports.js.map +1 -0
  100. package/dist/core/graph/mermaid.d.ts +6 -0
  101. package/dist/core/graph/mermaid.d.ts.map +1 -0
  102. package/dist/core/graph/mermaid.js +40 -0
  103. package/dist/core/graph/mermaid.js.map +1 -0
  104. package/dist/core/graph/moduleGraph.d.ts +27 -0
  105. package/dist/core/graph/moduleGraph.d.ts.map +1 -0
  106. package/dist/core/graph/moduleGraph.js +186 -0
  107. package/dist/core/graph/moduleGraph.js.map +1 -0
  108. package/dist/core/graph/types.d.ts +32 -0
  109. package/dist/core/graph/types.d.ts.map +1 -0
  110. package/dist/core/graph/types.js +2 -0
  111. package/dist/core/graph/types.js.map +1 -0
  112. package/dist/core/query/queryEngine.d.ts +26 -0
  113. package/dist/core/query/queryEngine.d.ts.map +1 -0
  114. package/dist/core/query/queryEngine.js +258 -0
  115. package/dist/core/query/queryEngine.js.map +1 -0
  116. package/dist/core/query/types.d.ts +70 -0
  117. package/dist/core/query/types.d.ts.map +1 -0
  118. package/dist/core/query/types.js +6 -0
  119. package/dist/core/query/types.js.map +1 -0
  120. package/dist/core/repo/fingerprint.d.ts +0 -0
  121. package/dist/core/repo/fingerprint.d.ts.map +1 -0
  122. package/dist/core/repo/fingerprint.js +17 -0
  123. package/dist/core/repo/fingerprint.js.map +1 -0
  124. package/dist/core/repo/frameworkDetectors.d.ts +14 -0
  125. package/dist/core/repo/frameworkDetectors.d.ts.map +1 -0
  126. package/dist/core/repo/frameworkDetectors.js +151 -0
  127. package/dist/core/repo/frameworkDetectors.js.map +1 -0
  128. package/dist/core/repo/repoScanner.d.ts +20 -0
  129. package/dist/core/repo/repoScanner.d.ts.map +1 -0
  130. package/dist/core/repo/repoScanner.js +290 -0
  131. package/dist/core/repo/repoScanner.js.map +1 -0
  132. package/dist/core/repo/summary.d.ts +7 -0
  133. package/dist/core/repo/summary.d.ts.map +1 -0
  134. package/dist/core/repo/summary.js +34 -0
  135. package/dist/core/repo/summary.js.map +1 -0
  136. package/dist/core/repo/types.d.ts +62 -0
  137. package/dist/core/repo/types.d.ts.map +1 -0
  138. package/dist/core/repo/types.js +10 -0
  139. package/dist/core/repo/types.js.map +1 -0
  140. package/dist/core/risk/guardrail.d.ts +3 -0
  141. package/dist/core/risk/guardrail.d.ts.map +1 -0
  142. package/dist/core/risk/guardrail.js +47 -0
  143. package/dist/core/risk/guardrail.js.map +1 -0
  144. package/dist/core/risk/riskEngine.d.ts +8 -0
  145. package/dist/core/risk/riskEngine.d.ts.map +1 -0
  146. package/dist/core/risk/riskEngine.js +112 -0
  147. package/dist/core/risk/riskEngine.js.map +1 -0
  148. package/dist/core/risk/riskHeuristics.d.ts +4 -0
  149. package/dist/core/risk/riskHeuristics.d.ts.map +1 -0
  150. package/dist/core/risk/riskHeuristics.js +36 -0
  151. package/dist/core/risk/riskHeuristics.js.map +1 -0
  152. package/dist/core/salience/config.d.ts +14 -0
  153. package/dist/core/salience/config.d.ts.map +1 -0
  154. package/dist/core/salience/config.js +87 -0
  155. package/dist/core/salience/config.js.map +1 -0
  156. package/dist/core/salience/salienceEngine.d.ts +16 -0
  157. package/dist/core/salience/salienceEngine.d.ts.map +1 -0
  158. package/dist/core/salience/salienceEngine.js +64 -0
  159. package/dist/core/salience/salienceEngine.js.map +1 -0
  160. package/dist/core/salience/signals.d.ts +4 -0
  161. package/dist/core/salience/signals.d.ts.map +1 -0
  162. package/dist/core/salience/signals.js +143 -0
  163. package/dist/core/salience/signals.js.map +1 -0
  164. package/dist/core/salience/types.d.ts +69 -0
  165. package/dist/core/salience/types.d.ts.map +1 -0
  166. package/dist/core/salience/types.js +7 -0
  167. package/dist/core/salience/types.js.map +1 -0
  168. package/dist/core/session/eventPayloads.d.ts +92 -0
  169. package/dist/core/session/eventPayloads.d.ts.map +1 -0
  170. package/dist/core/session/eventPayloads.js +2 -0
  171. package/dist/core/session/eventPayloads.js.map +1 -0
  172. package/dist/core/session/reducer.d.ts +14 -0
  173. package/dist/core/session/reducer.d.ts.map +1 -0
  174. package/dist/core/session/reducer.js +181 -0
  175. package/dist/core/session/reducer.js.map +1 -0
  176. package/dist/core/session/sessionManager.d.ts +252 -0
  177. package/dist/core/session/sessionManager.d.ts.map +1 -0
  178. package/dist/core/session/sessionManager.js +655 -0
  179. package/dist/core/session/sessionManager.js.map +1 -0
  180. package/dist/core/telemetry/analytics.d.ts +24 -0
  181. package/dist/core/telemetry/analytics.d.ts.map +1 -0
  182. package/dist/core/telemetry/analytics.js +167 -0
  183. package/dist/core/telemetry/analytics.js.map +1 -0
  184. package/dist/core/telemetry/exporter.d.ts +17 -0
  185. package/dist/core/telemetry/exporter.d.ts.map +1 -0
  186. package/dist/core/telemetry/exporter.js +31 -0
  187. package/dist/core/telemetry/exporter.js.map +1 -0
  188. package/dist/core/telemetry/recorder.d.ts +19 -0
  189. package/dist/core/telemetry/recorder.d.ts.map +1 -0
  190. package/dist/core/telemetry/recorder.js +43 -0
  191. package/dist/core/telemetry/recorder.js.map +1 -0
  192. package/dist/core/telemetry/reports.d.ts +6 -0
  193. package/dist/core/telemetry/reports.d.ts.map +1 -0
  194. package/dist/core/telemetry/reports.js +84 -0
  195. package/dist/core/telemetry/reports.js.map +1 -0
  196. package/dist/core/telemetry/types.d.ts +82 -0
  197. package/dist/core/telemetry/types.d.ts.map +1 -0
  198. package/dist/core/telemetry/types.js +9 -0
  199. package/dist/core/telemetry/types.js.map +1 -0
  200. package/dist/core/vector/chunking/memoryChunker.d.ts +10 -0
  201. package/dist/core/vector/chunking/memoryChunker.d.ts.map +1 -0
  202. package/dist/core/vector/chunking/memoryChunker.js +202 -0
  203. package/dist/core/vector/chunking/memoryChunker.js.map +1 -0
  204. package/dist/core/vector/compression/architectureDigest.d.ts +12 -0
  205. package/dist/core/vector/compression/architectureDigest.d.ts.map +1 -0
  206. package/dist/core/vector/compression/architectureDigest.js +37 -0
  207. package/dist/core/vector/compression/architectureDigest.js.map +1 -0
  208. package/dist/core/vector/embedding/deterministicEmbedder.d.ts +10 -0
  209. package/dist/core/vector/embedding/deterministicEmbedder.d.ts.map +1 -0
  210. package/dist/core/vector/embedding/deterministicEmbedder.js +84 -0
  211. package/dist/core/vector/embedding/deterministicEmbedder.js.map +1 -0
  212. package/dist/core/vector/memory/memoryEngine.d.ts +56 -0
  213. package/dist/core/vector/memory/memoryEngine.d.ts.map +1 -0
  214. package/dist/core/vector/memory/memoryEngine.js +204 -0
  215. package/dist/core/vector/memory/memoryEngine.js.map +1 -0
  216. package/dist/core/vector/memory/memoryFingerprint.d.ts +12 -0
  217. package/dist/core/vector/memory/memoryFingerprint.d.ts.map +1 -0
  218. package/dist/core/vector/memory/memoryFingerprint.js +33 -0
  219. package/dist/core/vector/memory/memoryFingerprint.js.map +1 -0
  220. package/dist/core/vector/providers/deterministicProvider.d.ts +14 -0
  221. package/dist/core/vector/providers/deterministicProvider.d.ts.map +1 -0
  222. package/dist/core/vector/providers/deterministicProvider.js +22 -0
  223. package/dist/core/vector/providers/deterministicProvider.js.map +1 -0
  224. package/dist/core/vector/providers/httpEmbeddingProvider.d.ts +32 -0
  225. package/dist/core/vector/providers/httpEmbeddingProvider.d.ts.map +1 -0
  226. package/dist/core/vector/providers/httpEmbeddingProvider.js +93 -0
  227. package/dist/core/vector/providers/httpEmbeddingProvider.js.map +1 -0
  228. package/dist/core/vector/providers/registry.d.ts +9 -0
  229. package/dist/core/vector/providers/registry.d.ts.map +1 -0
  230. package/dist/core/vector/providers/registry.js +79 -0
  231. package/dist/core/vector/providers/registry.js.map +1 -0
  232. package/dist/core/vector/providers/types.d.ts +23 -0
  233. package/dist/core/vector/providers/types.d.ts.map +1 -0
  234. package/dist/core/vector/providers/types.js +2 -0
  235. package/dist/core/vector/providers/types.js.map +1 -0
  236. package/dist/core/vector/retrieval/hybridRetriever.d.ts +37 -0
  237. package/dist/core/vector/retrieval/hybridRetriever.d.ts.map +1 -0
  238. package/dist/core/vector/retrieval/hybridRetriever.js +131 -0
  239. package/dist/core/vector/retrieval/hybridRetriever.js.map +1 -0
  240. package/dist/core/vector/types.d.ts +87 -0
  241. package/dist/core/vector/types.d.ts.map +1 -0
  242. package/dist/core/vector/types.js +6 -0
  243. package/dist/core/vector/types.js.map +1 -0
  244. package/dist/index.d.ts +3 -0
  245. package/dist/index.d.ts.map +1 -0
  246. package/dist/index.js +30 -0
  247. package/dist/index.js.map +1 -0
  248. package/dist/inspect/cli.d.ts +3 -0
  249. package/dist/inspect/cli.d.ts.map +1 -0
  250. package/dist/inspect/cli.js +40 -0
  251. package/dist/inspect/cli.js.map +1 -0
  252. package/dist/inspect/projections.d.ts +141 -0
  253. package/dist/inspect/projections.d.ts.map +1 -0
  254. package/dist/inspect/projections.js +311 -0
  255. package/dist/inspect/projections.js.map +1 -0
  256. package/dist/inspect/render.d.ts +27 -0
  257. package/dist/inspect/render.d.ts.map +1 -0
  258. package/dist/inspect/render.js +325 -0
  259. package/dist/inspect/render.js.map +1 -0
  260. package/dist/inspect/server.d.ts +18 -0
  261. package/dist/inspect/server.d.ts.map +1 -0
  262. package/dist/inspect/server.js +112 -0
  263. package/dist/inspect/server.js.map +1 -0
  264. package/dist/perf/index.d.ts +24 -0
  265. package/dist/perf/index.d.ts.map +1 -0
  266. package/dist/perf/index.js +38 -0
  267. package/dist/perf/index.js.map +1 -0
  268. package/dist/perf/report.d.ts +8 -0
  269. package/dist/perf/report.d.ts.map +1 -0
  270. package/dist/perf/report.js +52 -0
  271. package/dist/perf/report.js.map +1 -0
  272. package/dist/perf/runner.d.ts +29 -0
  273. package/dist/perf/runner.d.ts.map +1 -0
  274. package/dist/perf/runner.js +74 -0
  275. package/dist/perf/runner.js.map +1 -0
  276. package/dist/perf/scenarios.d.ts +8 -0
  277. package/dist/perf/scenarios.d.ts.map +1 -0
  278. package/dist/perf/scenarios.js +119 -0
  279. package/dist/perf/scenarios.js.map +1 -0
  280. package/dist/perf/types.d.ts +32 -0
  281. package/dist/perf/types.d.ts.map +1 -0
  282. package/dist/perf/types.js +6 -0
  283. package/dist/perf/types.js.map +1 -0
  284. package/dist/plugins/loader.d.ts +78 -0
  285. package/dist/plugins/loader.d.ts.map +1 -0
  286. package/dist/plugins/loader.js +193 -0
  287. package/dist/plugins/loader.js.map +1 -0
  288. package/dist/plugins/types.d.ts +38 -0
  289. package/dist/plugins/types.d.ts.map +1 -0
  290. package/dist/plugins/types.js +10 -0
  291. package/dist/plugins/types.js.map +1 -0
  292. package/dist/pressure/pressureModel.d.ts +6 -0
  293. package/dist/pressure/pressureModel.d.ts.map +1 -0
  294. package/dist/pressure/pressureModel.js +102 -0
  295. package/dist/pressure/pressureModel.js.map +1 -0
  296. package/dist/prompts/continuityPrompt.d.ts +7 -0
  297. package/dist/prompts/continuityPrompt.d.ts.map +1 -0
  298. package/dist/prompts/continuityPrompt.js +43 -0
  299. package/dist/prompts/continuityPrompt.js.map +1 -0
  300. package/dist/sdk/index.d.ts +53 -0
  301. package/dist/sdk/index.d.ts.map +1 -0
  302. package/dist/sdk/index.js +130 -0
  303. package/dist/sdk/index.js.map +1 -0
  304. package/dist/security/patterns.d.ts +16 -0
  305. package/dist/security/patterns.d.ts.map +1 -0
  306. package/dist/security/patterns.js +61 -0
  307. package/dist/security/patterns.js.map +1 -0
  308. package/dist/security/redactor.d.ts +20 -0
  309. package/dist/security/redactor.d.ts.map +1 -0
  310. package/dist/security/redactor.js +58 -0
  311. package/dist/security/redactor.js.map +1 -0
  312. package/dist/server/createServer.d.ts +10 -0
  313. package/dist/server/createServer.d.ts.map +1 -0
  314. package/dist/server/createServer.js +60 -0
  315. package/dist/server/createServer.js.map +1 -0
  316. package/dist/server/registerTools.d.ts +4 -0
  317. package/dist/server/registerTools.d.ts.map +1 -0
  318. package/dist/server/registerTools.js +1086 -0
  319. package/dist/server/registerTools.js.map +1 -0
  320. package/dist/server/responses.d.ts +17 -0
  321. package/dist/server/responses.d.ts.map +1 -0
  322. package/dist/server/responses.js +21 -0
  323. package/dist/server/responses.js.map +1 -0
  324. package/dist/snapshot/export.d.ts +26 -0
  325. package/dist/snapshot/export.d.ts.map +1 -0
  326. package/dist/snapshot/export.js +164 -0
  327. package/dist/snapshot/export.js.map +1 -0
  328. package/dist/snapshot/import.d.ts +34 -0
  329. package/dist/snapshot/import.d.ts.map +1 -0
  330. package/dist/snapshot/import.js +114 -0
  331. package/dist/snapshot/import.js.map +1 -0
  332. package/dist/snapshot/types.d.ts +63 -0
  333. package/dist/snapshot/types.d.ts.map +1 -0
  334. package/dist/snapshot/types.js +2 -0
  335. package/dist/snapshot/types.js.map +1 -0
  336. package/dist/storage/faultAdapter.d.ts +64 -0
  337. package/dist/storage/faultAdapter.d.ts.map +1 -0
  338. package/dist/storage/faultAdapter.js +134 -0
  339. package/dist/storage/faultAdapter.js.map +1 -0
  340. package/dist/storage/fileStorageAdapter.d.ts +55 -0
  341. package/dist/storage/fileStorageAdapter.d.ts.map +1 -0
  342. package/dist/storage/fileStorageAdapter.js +219 -0
  343. package/dist/storage/fileStorageAdapter.js.map +1 -0
  344. package/dist/storage/paths.d.ts +30 -0
  345. package/dist/storage/paths.d.ts.map +1 -0
  346. package/dist/storage/paths.js +32 -0
  347. package/dist/storage/paths.js.map +1 -0
  348. package/dist/storage/quarantine.d.ts +36 -0
  349. package/dist/storage/quarantine.d.ts.map +1 -0
  350. package/dist/storage/quarantine.js +26 -0
  351. package/dist/storage/quarantine.js.map +1 -0
  352. package/dist/storage/redactingAdapter.d.ts +13 -0
  353. package/dist/storage/redactingAdapter.d.ts.map +1 -0
  354. package/dist/storage/redactingAdapter.js +91 -0
  355. package/dist/storage/redactingAdapter.js.map +1 -0
  356. package/dist/storage/storageAdapter.d.ts +46 -0
  357. package/dist/storage/storageAdapter.d.ts.map +1 -0
  358. package/dist/storage/storageAdapter.js +2 -0
  359. package/dist/storage/storageAdapter.js.map +1 -0
  360. package/dist/types/domain.d.ts +139 -0
  361. package/dist/types/domain.d.ts.map +1 -0
  362. package/dist/types/domain.js +9 -0
  363. package/dist/types/domain.js.map +1 -0
  364. package/dist/types/events.d.ts +28 -0
  365. package/dist/types/events.d.ts.map +1 -0
  366. package/dist/types/events.js +7 -0
  367. package/dist/types/events.js.map +1 -0
  368. package/dist/utils/errors.d.ts +6 -0
  369. package/dist/utils/errors.d.ts.map +1 -0
  370. package/dist/utils/errors.js +10 -0
  371. package/dist/utils/errors.js.map +1 -0
  372. package/dist/utils/ids.d.ts +7 -0
  373. package/dist/utils/ids.d.ts.map +1 -0
  374. package/dist/utils/ids.js +22 -0
  375. package/dist/utils/ids.js.map +1 -0
  376. package/dist/utils/logger.d.ts +7 -0
  377. package/dist/utils/logger.d.ts.map +1 -0
  378. package/dist/utils/logger.js +26 -0
  379. package/dist/utils/logger.js.map +1 -0
  380. package/dist/utils/time.d.ts +8 -0
  381. package/dist/utils/time.d.ts.map +1 -0
  382. package/dist/utils/time.js +11 -0
  383. package/dist/utils/time.js.map +1 -0
  384. package/package.json +79 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,1122 @@
1
+ # Changelog
2
+
3
+ All notable changes to Kairo are documented here. The format is based on
4
+ [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and this project adheres to
5
+ [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [Unreleased]
8
+
9
+ ## [1.3.0] - 2026-05-21
10
+
11
+ **npm distribution.** Kairo becomes installable like a real developer
12
+ tool. No new architecture subsystems, no schema changes, no new MCP
13
+ tools — packaging, distribution, install smoke, docs.
14
+
15
+ ### Added
16
+
17
+ - **`PUBLISHING.md`** — single-file maintainer runbook covering npm
18
+ account / 2FA prerequisites, the pre-publish gate (mirrors the
19
+ install-smoke CI job), the actual `npm publish` flow, and the
20
+ 72-hour `npm deprecate` / `npm unpublish` discipline. Every
21
+ `npm publish` is a human decision; this file is the reference.
22
+
23
+ - **`publishConfig.access: "public"`** in `package.json` — defensive
24
+ (the package name is unscoped, so this is already npm's default,
25
+ but explicit-over-implicit is cheaper to get right once).
26
+
27
+ - **Expanded npm `keywords`** (15 entries, up from 7) for npm search
28
+ discoverability: adds `claude`, `cursor`, `ai-coding`, `agent-memory`,
29
+ `local-first`, `deterministic`, `cli`, `typescript`. No behaviour
30
+ change — npm metadata only.
31
+
32
+ - **Install-smoke now exercises `kairo init`** end-to-end. The CI
33
+ job (1) installs the packed tarball into a fresh project, (2)
34
+ runs `kairo init --json` and asserts `mcpJson === 'written'`,
35
+ (3) verifies `.mcp.json` exists and wires `kairo`, (4) re-runs
36
+ `kairo init --json` and asserts the second run reports `mcpJson
37
+ === 'skipped'` (idempotency contract). Catches every packaging
38
+ regression that affects the documented Quick start path.
39
+
40
+ ### Changed
41
+
42
+ - **README Quick start now leads with `npm install -g kairo-mcp`**.
43
+ The git-install path is preserved as a "dev tip" fallback for users
44
+ who want main-branch builds. The `npx -p kairo-mcp kairo init`
45
+ no-install path is documented honestly — including *why* `-p
46
+ kairo-mcp` is needed (npm packages with multiple bins resolve
47
+ `npx <pkg>` to the bin matching the package name, which here is the
48
+ MCP server, not the CLI).
49
+
50
+ ### Not done in this release (deliberate)
51
+
52
+ - **No actual `npm publish` from this commit.** v1.3.0 is *ready*
53
+ to publish, but the publish itself is a human action run from a
54
+ clean local checkout with 2FA. See `PUBLISHING.md`.
55
+ - No MCP tool, schema, persisted artefact, or stability registry
56
+ changes. The CLI surface remains experimental per ADR-0016.
57
+
58
+ ### Notes
59
+
60
+ - 193/193 tests pass.
61
+ - `npm pack --dry-run` confirms a clean 266 kB / 384-file tarball:
62
+ no `.kairo/`, no tests, no fixtures, no `.git`, no `.github`. Only
63
+ `dist/`, `README.md`, `LICENSE`, `CHANGELOG.md` ship.
64
+ - The three bins (`kairo`, `kairo-mcp`, `kairo-inspect`) all land on
65
+ PATH after `npm install -g kairo-mcp`. After publish, the
66
+ documented Quick start becomes `npm install -g kairo-mcp; cd
67
+ your-project; kairo init` — three commands, ≤60 seconds.
68
+
69
+ ## [1.2.0] - 2026-05-21
70
+
71
+ **DevEx polish — CLI UX + README clarity.** No new architecture
72
+ subsystems. No schema changes. No new MCP tools. Pure surface polish
73
+ across the developer-facing edges that were rough on first contact.
74
+
75
+ ### Changed
76
+
77
+ - **Top-level `kairo --help`** gains a 3-line **Quick start** callout
78
+ above the command list so first-time users see action items
79
+ (`cd → init → doctor → status`) instead of a flat command catalogue.
80
+ The footer hint now points to `kairo doctor` when something looks
81
+ off, not just `kairo help <command>`.
82
+
83
+ - **`kairo init`** now detects the MCP host on `PATH` (currently
84
+ recognises Claude Code; structured to grow) and prints a concrete
85
+ 3-step **Next steps** block tailored to what was found:
86
+ ```
87
+ Initialised
88
+ .mcp.json: written
89
+ .gitignore: appended
90
+ mcp host: claude
91
+
92
+ Next steps
93
+ 1. Open Claude Code in this project: claude
94
+ 2. Inside the session, run: /mcp
95
+ → you should see kairo · connected · 41 tools
96
+ 3. If anything looks off, run: kairo doctor
97
+ ```
98
+ The `--json` output gains a `detectedHost` field. Existing
99
+ `mcpJson` / `gitignore` / `projectRoot` fields are unchanged.
100
+
101
+ - **`kairo doctor`** now correctly handles the case where it's run
102
+ from inside the `kairo-mcp` dev repo itself (where `dist/index.js`
103
+ lives at the repo root, not under `node_modules/kairo-mcp/`). The
104
+ `kairo-mcp installed` and `version match` checks fall back to the
105
+ self-install path when `node_modules/kairo-mcp/` is absent but the
106
+ current `package.json` says `name: "kairo-mcp"`.
107
+
108
+ - **`README.md`** Quick start and Real workflow sections updated to
109
+ the v1.2.0 output: realistic `kairo init` block with detected host
110
+ + next-steps; install line no longer pins to a stale v1.1.0 tag.
111
+
112
+ ### Notes
113
+
114
+ - 193/193 tests still pass. CI matrix (6 cells + install-smoke) all
115
+ green on v1.1.3 baseline; v1.2.0 changes don't touch any tested
116
+ invariant.
117
+ - Stability registry unchanged. No new MCP tools. No new persisted
118
+ artefacts. The CLI surface remains experimental per ADR-0016.
119
+ - Success condition for this slice (per the brief): _"a new
120
+ developer should understand Kairo and run it on a repo in under
121
+ 5 minutes."_ The `init → doctor → status` happy path now takes
122
+ 3 commands and reads honestly at every step.
123
+
124
+ ## [1.1.3] - 2026-05-21
125
+
126
+ CI caught another real bug, this time on `ubuntu-latest · node 20`. The
127
+ v1.1.2 timeout fix unblocked Windows; v1.1.3 fixes the test-file ordering
128
+ race that was hidden until the matrix finally had room to expose it.
129
+
130
+ ### Fixed
131
+
132
+ - **`tests/cli.test.ts` returned exit 1 instead of 2 on `ubuntu-latest ·
133
+ node 20`.** Root cause: `tests/cli.test.ts` assumed `dist/cli/cli.js`
134
+ was already built (it did `spawnSync(node, [CLI, ...])` without first
135
+ running the build), so it was racing against
136
+ `tests/integration.server.test.ts`'s `beforeAll(execSync('npm run
137
+ build'))`. On 5 of 6 matrix cells the Vitest parallel worker picked
138
+ the integration file first; on ubuntu + node 20 it picked the CLI
139
+ file first, the bin didn't exist, `spawnSync` returned 1 (Cannot
140
+ find module), and the "unknown command exits 2" assertion failed.
141
+
142
+ Fix: `tests/cli.test.ts` now has its own `beforeAll` that runs `npm
143
+ run build` if `dist/cli/cli.js` is missing — same pattern
144
+ `integration.server.test.ts` uses. Test-file order is now irrelevant.
145
+
146
+ ### Notes
147
+
148
+ - 193/193 tests still pass. No change to MCP tools, CLI behaviour,
149
+ schemas, or any stable surface. Test infrastructure only — this
150
+ bug was always there, just deterministically masked by parallel
151
+ file order on every host except one.
152
+ - This is the **second** real bug the CI matrix has caught in 24h.
153
+ ADR-0017's premise (cross-platform CI catches deterministic
154
+ regressions that local dev can't) keeps holding.
155
+
156
+ ## [1.1.2] - 2026-05-21
157
+
158
+ First downstream CI run caught a real Windows + Node 22 flake. Single-line
159
+ timeout fix; no code-layer change. Caught and fixed within an hour of
160
+ v1.1.1 going green — exactly the loop ADR-0017 promised.
161
+
162
+ ### Fixed
163
+
164
+ - **`tests/snapshot.test.ts` "refuses to overwrite a non-empty .kairo/
165
+ unless force" timed out at 5000ms on `windows-latest · node 22`.** The
166
+ test does ~2× the work of any other snapshot test (two full
167
+ `seedProject` calls + one export + two imports — one rejected, one with
168
+ `force`). Default Vitest 5s ceiling flaked on slow Windows + Node 22 CI
169
+ runners where `mkdtemp` / `rm -rf` / `spawn` are slower. The other five
170
+ matrix cells (ubuntu × 2, macos × 2, windows + node 20) all passed.
171
+
172
+ Two-part fix:
173
+ - **Per-test timeout 20s** on that specific test — deterministic ceiling
174
+ for the proven-heavy case.
175
+ - **Global `testTimeout: 15_000`** in `vitest.config.ts` — safety net for
176
+ other honest integration tests in this suite (snapshot round-trip,
177
+ inspect-server boot, perf scenarios) that do real filesystem + spawn
178
+ work. Fast tests are unaffected; the default 5s is just too tight as a
179
+ cross-platform ceiling.
180
+
181
+ ### Notes
182
+
183
+ - 193/193 tests pass on the v1.1.2 commit on Windows × Node 20 + 22
184
+ locally; the matrix gate ran across all six cells.
185
+ - No change to MCP tools, schemas, or any stable surface. Test infra only.
186
+
187
+ ## [1.1.1] - 2026-05-21
188
+
189
+ **Operational CI & repository polish.** No code-layer changes, no
190
+ new MCP tools, no new persisted artefacts, no schema bumps. Pure
191
+ infrastructure-software hardening. See
192
+ [ADR-0017](docs/adr/0017-ci-and-repo-policy.md).
193
+
194
+ ### Added
195
+
196
+ - **`.github/workflows/ci.yml`** — cross-platform matrix gate
197
+ (ubuntu / macOS / windows × Node 20 & 22 = 6 cells) running the
198
+ full local gate (`typecheck` → `lint` → `format:check` → `test` →
199
+ `build`). `fail-fast: false` so a Windows flake never masks a real
200
+ macOS regression.
201
+ - **Install-smoke job** — after the matrix gate, runs `npm pack`,
202
+ installs the tarball into a fresh `npm init` project, and verifies
203
+ `dist/index.js` + `dist/cli/cli.js` ship, `kairo --version` exits 0,
204
+ and `kairo doctor --json` returns the documented stable shape.
205
+ Catches packaging regressions like the one v1.0.1 fixed.
206
+ - **`.github/workflows/nightly-replay.yml`** — daily tripwire that
207
+ re-runs the full suite and asserts `exportSnapshot` produces a
208
+ byte-identical `contentSha256` across two consecutive runs of the
209
+ same `.kairo/`. Not a release blocker; surfaces latent flakes and
210
+ Node-minor regressions.
211
+ - **PR template** (`.github/PULL_REQUEST_TEMPLATE.md`) with four
212
+ load-bearing checks: smallest user-visible change, stability
213
+ contract, schemas & migrations (ADR-0012), determinism &
214
+ replay-safety.
215
+ - **Three issue templates** (`.github/ISSUE_TEMPLATE/*.yml`): bug
216
+ report (with version / OS / `kairo doctor --json` blob), feature
217
+ request (with honest-scope checkboxes), stability question (routed
218
+ to the right triage bucket).
219
+ - **`.github/ISSUE_TEMPLATE/config.yml`** — disables blank issues;
220
+ routes "how does X work" questions to GitHub Discussions.
221
+ - **`.github/CODEOWNERS`** — single-owner today; structured to grow.
222
+
223
+ ### Changed
224
+
225
+ - **README badge row** swaps the static "tests" badge for a dynamic
226
+ **`ci`** badge that reads from `actions/workflows/ci.yml`. Real-time
227
+ green vs static claim. ADR count bumped from 16 to 17.
228
+
229
+ ### Notes
230
+
231
+ - 193/193 tests pass on v1.1.1. Same suite the new CI matrix runs.
232
+ - No flaky network tests, no cloud CI dependencies. CI is
233
+ GitHub-Actions-native and runs entirely on GitHub-hosted runners.
234
+ - Discoverability work (repo topics, description, social preview,
235
+ Discussions toggle) is documented in ADR-0017 §10 but lives in
236
+ GitHub UI, not in the repo files.
237
+
238
+ ## [1.1.0] - 2026-05-21
239
+
240
+ **`kairo` CLI surface + full README rewrite.** Developer experience —
241
+ no new cognition, no new persisted artefacts, no schema changes.
242
+
243
+ See [`docs/adr/0016-cli-surface.md`](docs/adr/0016-cli-surface.md).
244
+
245
+ ### Added
246
+
247
+ - **`kairo` binary** with 18 subcommands (`init`, `status`, `brief`,
248
+ `continue`, `sessions`, `checkpoints`, `graph`, `search`, `inspect`,
249
+ `serve`, `snapshot`, `compact`, `benchmark`, `doctor`, `stability`,
250
+ `plugins`, `completion`, `version`). Every command honours global
251
+ flags `--json`, `--quiet`, `--verbose`, `--no-color`, `--project`,
252
+ `--help`, `--version`. Globals are accepted on either side of the
253
+ subcommand (git/docker idiom).
254
+ - **`kairo init`** — one command to wire Kairo into any MCP host project
255
+ (writes `.mcp.json`, appends `.kairo/` to `.gitignore`). Idempotent.
256
+ - **`kairo doctor`** — fast self-diagnosis with stable exit code 5 when
257
+ fixable issues are found. Catches the exact `dist/` install gap that
258
+ v1.0.1 fixed.
259
+ - **Stable JSON output** envelope — canonical key ordering at every
260
+ level; error shape `{ "error": { "code": "...", "message": "..." } }`.
261
+ Shape is experimental until v1.2.0 — additive changes only in v1.x.
262
+ - **Shell completion** — `kairo completion bash|zsh|pwsh` emits a
263
+ deterministic script generated from the subcommand registry.
264
+ - **Stable exit codes** (0 ok / 1 unexpected / 2 misuse / 3 no-kairo / 4
265
+ validation / 5 doctor-fixable). Adding a code is back-compat; meaning
266
+ changes are major-version.
267
+ - **`tests/cli.test.ts`** — 11 end-to-end tests over the compiled bin
268
+ (smoke + JSON shape + global-flag positioning + idempotency).
269
+ - **CLI commands added to the stability registry** as `experimental` (new
270
+ surface kind: `cli-command`). Top-level command names are
271
+ back-compat from v1.1.0; `--json` shape locks in v1.2.0.
272
+
273
+ ### Changed
274
+
275
+ - **README rewritten.** 24-section structure: hero / problem / 5-minute
276
+ architecture / quickstart / real workflow / token reduction /
277
+ continuation / graph / snapshot / multi-agent / VS Code / inspect /
278
+ architecture diagram / CLI reference / MCP surface / stability / FAQ /
279
+ roadmap / contributing / docs index / licence. Honest scope at the
280
+ top, "What Kairo IS NOT" preserved on the front page.
281
+ - **`package.json` bin** now lists three binaries: `kairo`, `kairo-mcp`,
282
+ `kairo-inspect`. The first is the new developer-facing surface; the
283
+ other two are unchanged from v1.0.1.
284
+
285
+ ### Fixed
286
+
287
+ - **CLI smoke caught a friction point on first build.** The flag parser
288
+ initially only accepted globals *before* the subcommand. Fixed to
289
+ accept them on either side — `kairo doctor --json` and
290
+ `kairo --json doctor` are now equivalent.
291
+
292
+ ### Notes
293
+
294
+ - 193/193 tests pass on v1.1.0 (was 182 on v1.0.0; +11 CLI tests).
295
+ - No new MCP tools. No new persisted artefacts. No schema bumps.
296
+ - The CLI does **not** drive the session ledger — agent-write ops
297
+ (`session_start`, `record`, `checkpoint`, ...) stay behind MCP. That
298
+ boundary is deliberate (ADR-0016 §3).
299
+
300
+ ## [1.0.1] - 2026-05-21
301
+
302
+ Single-line packaging fix caught by first downstream install.
303
+
304
+ ### Fixed
305
+
306
+ - **`npm install github:sandy001-kki/Kairo#v1.0.x` now ships a working
307
+ `dist/`.** Added `"prepare": "npm run build"` to `package.json` so
308
+ installs from a git ref run the TypeScript build automatically. Before
309
+ this, the package shipped without `dist/index.js`, and downstream
310
+ consumers (Claude Code, MCP hosts, anything wiring up `kairo-mcp` from
311
+ git) hit `Error: Cannot find module '.../dist/index.js'`. No other
312
+ code changed.
313
+
314
+ ### Notes
315
+
316
+ - No surface changes. Stability registry untouched. 182/182 tests pass.
317
+ - This is the recommended baseline for the first wave of v1.x adopters.
318
+
319
+ ## [1.0.0] - 2026-05-21
320
+
321
+ **Stable production release.**
322
+
323
+ > v1.0.0 means: Kairo's cognition architecture, storage guarantees, and
324
+ > integration boundaries are stable and trustworthy. It does NOT mean
325
+ > "feature-complete forever".
326
+
327
+ See [`docs/RELEASE_AUDIT_v1.0.0-rc1.md`](docs/RELEASE_AUDIT_v1.0.0-rc1.md)
328
+ for the pre-release audit (10 areas, all PASS) and
329
+ [`docs/DOGFOOD_v1.0.0-rc1.md`](docs/DOGFOOD_v1.0.0-rc1.md) for the
330
+ operational dogfood cycle that ran between rc1 and v1.0.0.
331
+
332
+ ### What's stable (the v1.0.0 contract)
333
+
334
+ - **33 stable MCP tools** (continuity loop, intelligence, risk, GitHub,
335
+ graph, memory, coordination, telemetry, analytics, query, brief,
336
+ snapshot).
337
+ - **6 experimental MCP tools** (`kairo_benchmark`, `kairo_perf_report`,
338
+ `kairo_compact_memory`, `kairo_index_status`, `kairo_plugins_list`,
339
+ `kairo_stability_of`) — kept experimental for now per the dogfood
340
+ decision; promotion candidates for v1.0.x or v1.1.0.
341
+ - **1 stable prompt** (`kairo_continuity`), **2 stable resources**
342
+ (`kairo://session/current`, `kairo://checkpoint/latest`).
343
+ - **14 stable inspect HTTP routes**.
344
+ - **7 stable schema constants** (events, telemetry, audit, sessions,
345
+ checkpoints, intelligence, vector index — all under ADR-0012).
346
+ - **Stable snapshot format** (`snapshotSchema: 1`).
347
+ - **Stable token-discipline contract** (compact by default, reports to
348
+ files; brief modes `tiny`/`normal`/`deep` with their v0.8.2 budgets).
349
+
350
+ The full registry lives in
351
+ [`src/contracts/stability.ts`](src/contracts/stability.ts); the policy
352
+ lives in [`docs/API_STABILITY.md`](docs/API_STABILITY.md). Anything
353
+ marked `stable` there stays callable with the same shape on every v1.x
354
+ release.
355
+
356
+ ### What v1.0.0 is NOT (5 boundaries on the README front page)
357
+
358
+ 1. Not distributed consensus.
359
+ 2. Not SaaS.
360
+ 3. Not autonomous AGI orchestration.
361
+ 4. Not guaranteed semantic truth.
362
+ 5. Not real-time collaborative editing.
363
+
364
+ Out of scope **by design**, not deferred.
365
+
366
+ ### Changes vs v1.0.0-rc1
367
+
368
+ Code diff between rc1 and v1.0.0 is intentionally tiny — only what the
369
+ dogfood cycle found:
370
+
371
+ - **Fixed (bug):** `SessionManager.heartbeat()` crashed when called
372
+ without arguments (`args.reread` on undefined). The MCP tool always
373
+ passed an object, so the e2e tests missed it; the SDK / direct-import
374
+ path failed. Default arg added; regression test in
375
+ `tests/session.test.ts`.
376
+ - **Fixed (polish):** Continuation brief's "Recommended next actions"
377
+ section showed a duplicate "Investigate and resolve outstanding
378
+ errors" line with a `..` double period when there were unresolved
379
+ errors. `recommendNextActions` now strips a trailing `.` before
380
+ re-adding one and skips the "Continue remaining work" item when the
381
+ remaining entry is the auto-injected error-investigation boilerplate
382
+ (already covered by the "Resolve N unresolved errors" action above).
383
+ - **Added:** `docs/DOGFOOD_v1.0.0-rc1.md` — the operational dogfood
384
+ report with all findings, observations, and decisions.
385
+
386
+ ### Notes
387
+
388
+ - **182/182 tests** pass on the v1.0.0 commit. Lint, typecheck, prettier,
389
+ build clean.
390
+ - No schema bumps. No new MCP tools. No new architecture principles. No
391
+ new persisted artefacts. v1.0.0 is the contract, not a feature push.
392
+ - The compatibility matrix and v1.0.0 entry criteria from
393
+ [`docs/V1_READINESS.md`](docs/V1_READINESS.md) are all checked.
394
+
395
+ ## [1.0.0-rc1] - 2026-05-21
396
+
397
+ Release-candidate audit pass before v1.0.0. **No new features, no
398
+ architecture changes, no subsystem additions.** Pure verification +
399
+ small honest corrections + the explicit "What Kairo IS NOT" boundary on
400
+ the front page.
401
+
402
+ See [`docs/RELEASE_AUDIT_v1.0.0-rc1.md`](docs/RELEASE_AUDIT_v1.0.0-rc1.md)
403
+ for the full audit. All ten audit areas (determinism, compatibility,
404
+ recovery, token-efficiency, surface, security, performance, documentation,
405
+ honest-scope, release-discipline) passed.
406
+
407
+ ### Added
408
+
409
+ - `docs/RELEASE_AUDIT_v1.0.0-rc1.md` — the full audit report and the
410
+ recommendation: tag rc1, dogfood one cycle, cut v1.0.0 if no
411
+ regressions surface.
412
+ - `README.md` — **"What Kairo is NOT"** section (5 boundaries: not
413
+ distributed consensus, not SaaS, not autonomous AGI orchestration,
414
+ not guaranteed semantic truth, not real-time collaborative editing).
415
+ These are out of scope **by design**, not deferred.
416
+
417
+ ### Changed
418
+
419
+ - Version bumped to `1.0.0-rc1`. SERVER_VERSION matches.
420
+
421
+ ### Notes
422
+
423
+ - 181/181 tests pass on this commit. Lint, typecheck, prettier, build
424
+ clean.
425
+ - v1.0.0 itself will be a version bump from rc1 (no code change required)
426
+ after the dogfood cycle. Optionally lifts validated experimental tools
427
+ to stable in the same release.
428
+ - `v1.0.0` does NOT mean "feature-complete forever". It means: Kairo's
429
+ cognition architecture, storage guarantees, and integration boundaries
430
+ are stable and trustworthy.
431
+
432
+ ## [0.9.4] - 2026-05-21
433
+
434
+ Final slice of v0.9.x stabilization. Locks in the integration boundaries
435
+ v1.0.0 will promise. See [API_STABILITY.md](docs/API_STABILITY.md),
436
+ [PLUGIN_API.md](docs/PLUGIN_API.md), [SDK.md](docs/SDK.md),
437
+ [MCP_COMPATIBILITY.md](docs/MCP_COMPATIBILITY.md),
438
+ [V1_READINESS.md](docs/V1_READINESS.md), and
439
+ [ADR-0015](docs/adr/0015-api-stability-and-plugins.md).
440
+
441
+ ### Added
442
+
443
+ - **`src/contracts/stability.ts`** — central API stability registry with four
444
+ tiers (`stable` / `experimental` / `internal` / `deprecated`). 33 MCP
445
+ tools, 1 prompt, 2 resources, 14 inspect routes, 7 schemas, and the
446
+ snapshot format are marked stable. 6 tools (`kairo_benchmark`,
447
+ `kairo_perf_report`, `kairo_compact_memory`, `kairo_index_status`,
448
+ `kairo_plugins_list`, `kairo_stability_of`) stay experimental.
449
+ - **`src/plugins/`** — plugin manifest contract (`apiVersion:
450
+ 'kairo.plugin/1'`). Zod-validated, semver-compatibility-checked, with a
451
+ vocabulary of declared capabilities. **Manifest-only**: no in-process
452
+ JS execution. Plugins are external MCP servers the host (Claude Desktop,
453
+ Cursor, …) loads via its own config.
454
+ - **`src/sdk/`** — small, read-only, dependency-light local client
455
+ (`KairoClient`). Reads `.kairo/` directly via the same projections the
456
+ inspect surface uses. No MCP spawn, no network. Designed for build
457
+ scripts, CI checks, and editor extensions.
458
+ - **Two new MCP tools** (experimental):
459
+ - `kairo_plugins_list` — list validated plugin manifests.
460
+ - `kairo_stability_of` — lookup the stability tier of any documented
461
+ surface, or dump the full registry.
462
+ - **MCP compatibility tests** in `tests/integration.server.test.ts`:
463
+ assert every tool has a name + `inputSchema`, assert bad input does not
464
+ kill the stdio transport, assert `kairo_stability_of` returns the
465
+ registered tier for stable tools.
466
+ - **Five new docs**: `docs/API_STABILITY.md`, `docs/PLUGIN_API.md`,
467
+ `docs/SDK.md`, `docs/MCP_COMPATIBILITY.md`, `docs/V1_READINESS.md`.
468
+ - **`docs/V1_READINESS.md`** documents the compatibility matrix (Node,
469
+ MCP SDK, transports, embedders, OS, filesystem assumptions) and the
470
+ v1.0.0 entry criteria — all checked.
471
+
472
+ ### Changed
473
+
474
+ - Architecture core principles list (`docs/ARCHITECTURE.md` §2) grew a
475
+ 10th entry: **"Integration boundaries are explicit."**
476
+
477
+ ### Notes
478
+
479
+ - **No new cognition features.** v0.9.4 is pure boundary work: stability
480
+ tiers, plugin discovery, SDK ergonomics, MCP compatibility assertions.
481
+ - **Plugin contract honest scope**: declarations, not enforcement. Code
482
+ loading is deliberately out of scope for v0.9.4 and may come later
483
+ behind an opt-in flag.
484
+ - **181/181 tests** pass, including new `tests/stability.test.ts`,
485
+ `tests/plugins.test.ts`, `tests/sdk.test.ts`.
486
+
487
+ ## [0.9.3] - 2026-05-21
488
+
489
+ Third slice of v0.9.x stabilization: scale, performance, and storage
490
+ efficiency. See [PERFORMANCE.md](docs/PERFORMANCE.md) and
491
+ [ADR-0014](docs/adr/0014-scale-and-performance.md).
492
+
493
+ ### Added
494
+
495
+ - **`src/perf/`** — deterministic benchmark harness over the hot paths
496
+ (cold/warm scan, graph render, brief generation in `tiny`/`normal`/`deep`
497
+ modes, snapshot export, inspect projection). Reports `min / median / p95 /
498
+ max` plus scenario counters; writes `.kairo/reports/PERFORMANCE.md`.
499
+ - **`src/core/compaction/`** — `compact(projectRoot, opts)` archives events
500
+ from ended sessions older than `olderThanDays` (default 90), lineage-
501
+ protected. Dry-run by default. Archive at `.kairo/archive/events-{ts}.jsonl`
502
+ with manifest at `.kairo/archive/MANIFEST.md`. NEVER deletes; an atomic
503
+ temp-then-rename keeps the live log intact on crash.
504
+ - **Per-chunk incremental vector indexing** in `MemoryEngine.index()`. When
505
+ the top-level `memoryFingerprint` misses, the rebuild looks up each new
506
+ chunk by `sha256(text)` against the existing index; vectors for unchanged
507
+ chunks are reused. New `IndexResult` counters: `embedded`, `reusedVectors`.
508
+ - **Four MCP tools**: `kairo_benchmark`, `kairo_perf_report`,
509
+ `kairo_compact_memory`, `kairo_index_status`. All respect the v0.8.2
510
+ compact-by-default contract — single-line MCP response, full report in
511
+ `.kairo/reports/`.
512
+
513
+ ### Changed
514
+
515
+ - `MemoryEngine.stats()` now also returns `memoryFingerprint` and `dim` so
516
+ `kairo_index_status` can render a compact one-line summary.
517
+ - ARCHITECTURE.md core principles gained #9: **"Scale is measured, not
518
+ assumed."**
519
+
520
+ ### Notes
521
+
522
+ - Wall-clock benchmark timings depend on the host; the harness is for
523
+ **relative** comparison and regression detection, not absolute
524
+ benchmarking.
525
+ - Compaction is **conservative by default**: false negatives ("did not
526
+ archive an event that could safely have been archived") are preferred
527
+ over false positives.
528
+ - Honest scope: incremental indexing reduces *embed work*, not chunk-build
529
+ work. The chunker still runs in full (already deterministic + offline).
530
+ - 158/158 tests pass, including three new test files: `tests/perf.test.ts`,
531
+ `tests/compaction.test.ts`, `tests/incrementalIndex.test.ts`.
532
+
533
+ ## [0.9.2] - 2026-05-21
534
+
535
+ Second slice of v0.9.x stabilization: portable snapshot/import/export and a
536
+ deterministic failure-injection adapter for testing error paths. See
537
+ [SNAPSHOTS.md](docs/SNAPSHOTS.md) and
538
+ [ADR-0013](docs/adr/0013-snapshots-and-failure-injection.md).
539
+
540
+ ### Added
541
+
542
+ - **`src/snapshot/`** — single-file portable snapshot format. `KairoSnapshot`
543
+ bundles the full `.kairo/` state with a manifest (counts, schema versions,
544
+ source root, `contentSha256` over canonical JSON).
545
+ - `exportSnapshot(projectRoot, opts?)` — reads through the v0.9.1 migration
546
+ + validation pipeline, computes a deterministic `contentSha256`, writes a
547
+ single JSON file to `.kairo/snapshots/snapshot-{ts}.json` (override via
548
+ `path`).
549
+ - `importSnapshot(target, snapshotPath, opts?)` — refuses to overwrite a
550
+ non-empty `.kairo/` unless `force: true`; writes through the redacting
551
+ adapter; runs records through migrations on the way in.
552
+ - **`src/storage/faultAdapter.ts`** — `FaultInjector` + `FaultInjectingAdapter`
553
+ wrap any `StorageAdapter` for deterministic in-process error-path testing.
554
+ Rules: `afterN`, `repeating`, custom `error`. Test-only by convention
555
+ (constructor logs a warning when `NODE_ENV !== "test"`).
556
+ - Two new MCP tools: `kairo_snapshot_export` and `kairo_snapshot_import`.
557
+ Compact responses with structured payloads.
558
+
559
+ ### Notes
560
+
561
+ - **Round-trip guarantee**: `export → import → re-export` yields the same
562
+ `contentSha256` for a clean source with no secrets.
563
+ - **Honest scope**: snapshots are full dumps (no delta), plain JSON (no
564
+ encryption), and not signed (`contentSha256` proves integrity, not
565
+ authenticity). Fault injection simulates handler behaviour — it does
566
+ not exercise the real OS layer.
567
+ - 149/149 tests, including new `tests/snapshot.test.ts` (6) and
568
+ `tests/faultInjection.test.ts` (6).
569
+
570
+ ## [0.9.1] - 2026-05-21
571
+
572
+ First slice of v0.9.x stabilization: schema versioning, formal contracts, and
573
+ corruption quarantine. See [SCHEMA.md](docs/SCHEMA.md) and
574
+ [ADR-0012](docs/adr/0012-schema-versioning.md).
575
+
576
+ ### Added
577
+
578
+ - **`src/contracts/`** — central schema constants (`schemas.ts`), zod schemas
579
+ (`zodSchemas.ts`), and a per-artefact migration registry (`migrations.ts`).
580
+ One module is the source of truth for what a "valid Kairo record" looks like.
581
+ - **Explicit `schema` field on every persisted artefact**: `KairoEvent`,
582
+ `TelemetryEvent`, `AuditEntry`, `SessionState`, `Checkpoint` (legacy records
583
+ without it are accepted on read and tagged with the current version
584
+ automatically; old records on disk are migrated on the next write).
585
+ - **Corruption quarantine** (`src/storage/quarantine.ts`,
586
+ `.kairo/quarantine/{file}.jsonl`): JSONL lines that fail to parse or
587
+ validate are appended to the quarantine log with line number, reason, and
588
+ raw contents — every healthy line in the file still loads.
589
+ - **Read-side validation** at the storage-adapter seam via zod. Permissive on
590
+ unknown fields (forward-compat), strict on the required shape.
591
+ - **`kairo-inspect` overview** now surfaces the quarantine count.
592
+
593
+ ### Changed
594
+
595
+ - `FileStorageAdapter.readEvents` / `readTelemetry` / `readAudit` now route
596
+ through `readValidatedJsonl`, which validates + migrates + quarantines.
597
+ Torn-trailing-line tolerance (the v0.1 crash-safety contract) is preserved
598
+ unchanged.
599
+ - `loadCheckpoint` / `loadLatestCheckpoint` / `loadSessionSnapshot` migrate
600
+ records on read so consumers always see the current schema shape.
601
+ - `saveCheckpoint` / `saveSessionSnapshot` / `audit` tag records with the
602
+ current schema constant on write.
603
+
604
+ ### Notes
605
+
606
+ - **Back-compat guarantee**: patch versions (v0.9.x) never bump a schema
607
+ constant. Records written by any v0.9.x are readable by any other v0.9.x.
608
+ - **Honest scope**: migrations are on-read only; old on-disk records remain
609
+ byte-identical until rewritten. Zod validation is structural, not semantic.
610
+ - 137/137 tests pass, including a new `tests/schema.test.ts` exercising
611
+ legacy-record reads, corruption quarantine, and torn-trailing-line
612
+ invariants.
613
+
614
+ ## [0.9.0] - 2026-05-21
615
+
616
+ Developer surfaces & operational inspection. Two read-only projections over
617
+ local `.kairo/`; no new persisted state, no network, no mutations. See
618
+ [SURFACES.md](docs/SURFACES.md) and [ADR-0011](docs/adr/0011-developer-surfaces.md).
619
+
620
+ ### Added
621
+
622
+ - **`src/inspect/`** — pure projection helpers (`InspectProjection`) over the
623
+ same primitives the MCP tools already use (`queryEngine`, `CoordinationManager`,
624
+ storage adapter). Read-only; deterministic; replay-safe.
625
+ - **`kairo-inspect` CLI** — zero-dependency local HTTP inspector. Loopback only
626
+ by default (`127.0.0.1:4173`), CSP-locked (`default-src 'none'`), no JS, no
627
+ remote assets. Routes: `/`, `/sessions`, `/sessions/:id`, `/checkpoints`,
628
+ `/checkpoints/:id`, `/continuations/:name`, `/timeline?kind=`, `/graphs`,
629
+ `/graphs/:kind`, `/memory`, `/coordination`, `/risk`, `/events`,
630
+ `/retrieval/:id`. Two reads of the same `.kairo/` produce byte-identical HTML.
631
+ - **VS Code extension** in `extensions/vscode/` (separate publishable package).
632
+ Activity-bar tree views for Overview / Sessions / Checkpoints / Active
633
+ leases / Risk escalations. Reads `.kairo/` directly via Node `fs`; does not
634
+ spawn or depend on the MCP server. Auto-refreshes on `.kairo/` changes via
635
+ `vscode.workspace.createFileSystemWatcher`. Click a checkpoint to open its
636
+ continuation brief.
637
+ - **Cursor integration** via documentation only — Cursor speaks MCP, so the
638
+ existing `kairo-mcp` binary covers it. The VS Code extension also loads in
639
+ Cursor (it's a VS Code fork).
640
+
641
+ ### Changed
642
+
643
+ - `package.json` exposes a new `kairo-inspect` bin entry pointing at
644
+ `dist/inspect/cli.js`.
645
+ - Architecture core principles list (docs/ARCHITECTURE.md §2) grew a 7th
646
+ entry: **"Surfaces are projections."**
647
+
648
+ ### Notes
649
+
650
+ - Honest scope: v0.9.0 surfaces are **historical inspection**, not real-time
651
+ observability or remote collaboration. No streams, no subscriptions, no push.
652
+ - Explicitly out of scope — _by design, not deferred_: cloud sync, accounts,
653
+ remote telemetry, hosted backend, live collaboration, SaaS infrastructure.
654
+ - 130/130 tests pass including a new `tests/inspect.test.ts` that boots the
655
+ HTTP server on a random port, asserts CSP headers, route shape, and
656
+ determinism (two reads of `/sessions` are byte-identical).
657
+
658
+ ## [0.8.2] - 2026-05-20
659
+
660
+ Token efficiency is now a **core architecture principle**. The opposite failure
661
+ mode of repeated rescans is a memory layer that bloats every prompt — v0.8.2
662
+ makes compactness the default. See [TOKEN_EFFICIENCY.md](docs/TOKEN_EFFICIENCY.md)
663
+ and [ADR-0010](docs/adr/0010-token-efficiency.md).
664
+
665
+ ### Added
666
+
667
+ - **`src/core/brief/budget.ts`** — `BriefMode` (`tiny` / `normal` / `deep`),
668
+ `BriefBudget` (`maxBriefChars`, `maxRecallItems`, `maxChunkChars`,
669
+ `maxWarnings`, `includeGraphs`), `resolveBudget()`, and a preservation-aware
670
+ `clip()` util. Budgets are deterministic character counts (honest local proxy
671
+ for tokens; exact cost depends on the model's tokeniser).
672
+ - **`kairo_brief` MCP tool** — on-demand continuation brief in a requested mode
673
+ and char budget (`{ mode, maxChars, sessionId? }`).
674
+ - Brief modes in `buildContinuationMarkdown(cp, { budget })`:
675
+ - `tiny` — task / stop point / top-5 changed files / next 3 actions / critical
676
+ warnings only (defaults to 1500 chars).
677
+ - `normal` (**default**) — full section structure, trimmed: top-10 file table,
678
+ top-5 decisions, recall capped at 3 items × 200 chars (defaults to 4000
679
+ chars). Backward-compatible — every section header existing tests assert is
680
+ still present.
681
+ - `deep` — full historical context, opt-in (defaults to 20000 chars).
682
+
683
+ ### Changed
684
+
685
+ - **`kairo_graph`** is **compact by default** — returns
686
+ `module graph: N nodes / M edges. Mirror: .kairo/graphs/module.md` instead of
687
+ the full Mermaid. Pass `includeFull: true` to inline the diagram.
688
+ - **`kairo_memory_search`** capped at 5 results by default; each `why` preview
689
+ trimmed to 120 chars. Single-line `[kind] locator (score X.XXX) — why` format.
690
+ - **`kairo_analytics_summary` / `_team_activity` / `_risk_report`** write the
691
+ full report to `.kairo/reports/*.md` and return a 1–2 line summary with the
692
+ file path — the report is never inlined into the prompt.
693
+ - Semantic recall section in `SessionManager` is budget-aware: `tiny` returns no
694
+ recall; `normal` returns top-3 chunks each clipped to 200 chars.
695
+
696
+ ### Notes
697
+
698
+ - Dogfood numbers on this repo: same checkpoint at `tiny` = 632 chars (15% of
699
+ deep), `normal` = 2946 chars (71% of deep), `deep` = 4146 chars; explicit
700
+ `maxChars: 1000` override → exactly 1000 chars with truncation marker.
701
+ - Honest scope: budgets are character counts, not real tokens. Truncation is
702
+ preservation-aware (critical sections front-loaded) but still a heuristic.
703
+ - Verbose remains available — `deep` mode and `includeFull: true` never lose
704
+ information; they just stop being the default.
705
+
706
+ ## [0.8.1] - 2026-05-20
707
+
708
+ Deterministic historical engineering introspection before any UI work. See
709
+ [QUERY.md](docs/QUERY.md) and [ADR-0009](docs/adr/0009-introspection-read-only.md).
710
+
711
+ ### Added
712
+
713
+ - **`src/core/query/`** — pure deterministic query primitives over the existing
714
+ event / telemetry / audit logs + checkpoint files. **No new state, no new
715
+ persisted artefacts** (ADR-0009). Same discipline as the session reducer and
716
+ coordination manager.
717
+ - `queryEvents(filter)` — unified filter (kind/sessionId/worker/since/until) with
718
+ prefix matching (`lease.*`). Stable ts-only sort preserves append/causal order.
719
+ - `timeline(kind)` — per-concern views: `sessions` / `checkpoints` /
720
+ `lease-conflicts` / `retrievals` / `memory-refresh`.
721
+ - `checkpointLineage(id)` — walks `parentCheckpointId` to the root; returns the
722
+ cross-worker DAG path with worker/task/risk at each step.
723
+ - `conflictHistory()` — pairs every `lease.denied` with the conflicting
724
+ `lease.granted` (and the time it was held since, when discoverable).
725
+ - `retrievalTrace(id)` — for a `retrieval.performed`, returns the preceding
726
+ session-start, latest memory refresh, and latest checkpoint.
727
+ - `whyEvent(id)` — generic causality: `guard.hold` → preceding `risk.assessed`;
728
+ `lease.denied` → the conflicting holder grant; else last few in-session events.
729
+ - 5 MCP tools: `kairo_query_events`, `kairo_timeline_query`,
730
+ `kairo_checkpoint_lineage`, `kairo_conflict_history`, `kairo_retrieval_trace`.
731
+
732
+ ### Changed
733
+
734
+ - **Namespace visibility refined.** Coordination-class telemetry kinds (`lease.*`,
735
+ `checkpoint.created`, `session.started`/`ended`, `release.prepared`,
736
+ `worker.registered`) carry only shared coordination metadata (scope / holder /
737
+ risk-level / worker id) and are now visible to every worker regardless of the
738
+ emitting worker's namespace tag. Worker-private kinds
739
+ (`memory.refreshed` / `retrieval.performed` / `risk.assessed` / `guard.hold`)
740
+ remain isolated. Regression-tested.
741
+
742
+ ### Notes
743
+
744
+ - Replay-identical: pure functions of stable inputs (113 tests; dogfood:
745
+ `queryEvents` over 24 events byte-identical on two runs).
746
+ - Honest scope: **historical introspection, not real-time observability** — no
747
+ streams, no subscriptions, no UI. v0.9.0 surfaces can build on top.
748
+
749
+ ## [0.8.0] - 2026-05-20
750
+
751
+ Enterprise telemetry, analytics, and team-coordination insight — engineering
752
+ intelligence **infrastructure**, not a dashboard. See
753
+ [TELEMETRY.md](docs/TELEMETRY.md) and
754
+ [ADR-0008](docs/adr/0008-telemetry-analytics.md).
755
+
756
+ ### Added
757
+
758
+ - **`src/core/telemetry/`** — local, redacted, append-only telemetry log
759
+ (`.kairo/telemetry.jsonl`) + a pure, deterministic analytics projection over
760
+ telemetry + the event log + the audit log. No metrics SDK, no sampling, no
761
+ wall-clock math in metrics, no network.
762
+ - Telemetry events emitted from `SessionManager` / the `kairo_assess` tool path:
763
+ `session.started`, `checkpoint.created`, `memory.refreshed`,
764
+ `retrieval.performed`, `graph.generated`, `release.prepared`, `lease.granted`,
765
+ `lease.denied`, `risk.assessed`, `guard.hold`. Secret-redaction counts come from
766
+ the authoritative audit log (no double-emit).
767
+ - **Privacy-first defaults**: local JSONL only, secrets redacted at the boundary,
768
+ team analytics report namespace **names + counts** only (private-namespace
769
+ contents are never returned). Opt-in export via
770
+ `KAIRO_TELEMETRY_EXPORT=jsonl:<path>`; OTLP/Prometheus/SQLite/Postgres are
771
+ designed-for behind `TelemetryExporter` and explicitly not shipped.
772
+ - **Analytics**: sessions per repo, checkpoints per session, average files
773
+ touched, guard holds, risk escalations, lease conflict rate, stale-memory
774
+ rebuilds, memory reuse rate, intelligence cache hit rate, graph truncation
775
+ rate, retrieval patterns, secrets-redacted count, module activity / highest-risk
776
+ modules (via the salience-ranked module graph).
777
+ - **Reports** rendered to `.kairo/reports/`: `ANALYTICS_SUMMARY.md`,
778
+ `TEAM_ACTIVITY.md`, `RISK_REPORT.md`.
779
+ - New MCP tools: `kairo_telemetry_status`, `kairo_analytics_summary`,
780
+ `kairo_team_activity`, `kairo_risk_report`, `kairo_module_activity`.
781
+
782
+ ### Notes
783
+
784
+ - Determinism upheld: numeric metrics are byte-stable for the same inputs (the
785
+ only non-deterministic field is the report header's wall-clock `generatedAt`).
786
+ - Honest scope: this is the **local foundation**, not "enterprise-ready". No UI,
787
+ no remote store, no real-time pipeline.
788
+ - Dogfood (5 scenarios on the Kairo repo): 21 telemetry events across 7 kinds;
789
+ 3 sessions / 3 checkpoints / 2 workers / 1 lease conflict captured deterministically;
790
+ reports written; **no secret leak**, **no private-namespace text** in any report.
791
+
792
+ ## [0.7.1] - 2026-05-19
793
+
794
+ Fixes the v0.7.0 cross-worker session-memory-freshness caveat before any v0.8.0
795
+ enterprise work is built on it.
796
+
797
+ ### Fixed
798
+
799
+ - **Stale cross-worker memory.** The vector index was keyed only by
800
+ `repoFingerprint + embedderId`, so decisions/checkpoints/worker-namespace changes
801
+ (which don't change the repo fingerprint) did not invalidate it. Added a
802
+ **deterministic `memoryFingerprint`** = hash of the built chunk set; the index is
803
+ reused only when `repoFingerprint + embedderId + memoryFingerprint` all match.
804
+ Chunks are built first (cheap, offline, deterministic) so only the embed step is
805
+ skipped on a true match — anti-rescan preserved, staleness eliminated.
806
+ - Index `schema` 2 → 3 (older indexes rebuild automatically).
807
+
808
+ ### Added
809
+
810
+ - **`kairo_memory_refresh`** — ensure shared memory reflects the latest
811
+ decisions/checkpoints before retrieving; idempotent (rebuilds only if the chunk
812
+ set changed); never leaks private worker-namespace memory.
813
+ - `SessionManager.refreshMemory()`; checkpoint/session-end now auto-refresh so the
814
+ just-created checkpoint is immediately visible to other workers and to the brief.
815
+
816
+ ### Changed
817
+
818
+ - Checkpoint chunks are now **shared** (`workspace` namespace) — engineering
819
+ continuity is team-level. Private *reasoning* stays in worker-namespaced decision
820
+ chunks (isolation preserved).
821
+
822
+ ### Notes
823
+
824
+ - Deterministic & offline-safe: `memoryFingerprint` is a pure, order-independent
825
+ hash; replay is byte-stable; no network. Dogfood (2 workers on the Kairo repo):
826
+ A's decision invalidates B's view, B's refresh rebuilds then is idempotent, B sees
827
+ the shared checkpoint but never A's private decision, `memoryStats` identical
828
+ across calls.
829
+
830
+ ## [0.7.0] - 2026-05-19
831
+
832
+ Coordinated cognition & distributed engineering memory — coordination
833
+ infrastructure, not autonomous-agent hype. See
834
+ [COORDINATION.md](docs/COORDINATION.md) and
835
+ [ADR-0007](docs/adr/0007-coordinated-cognition.md).
836
+
837
+ ### Added
838
+
839
+ - **`src/core/coordination/`** — `CoordinationManager`, a pure deterministic
840
+ projection of the shared event log. No network service, no consensus.
841
+ - **Cooperative leases** over `task` / `path` / `module` scopes (ancestor overlap):
842
+ `kairo_lease` acquire/renew/release, with explainable GRANTED/DENIED + conflicting
843
+ holder. Deterministic conflict resolution by log order (earliest wins → later
844
+ `superseded`); TTL expiry evaluated against the clock. Advisory (ADR-0002).
845
+ - **Workers & memory namespaces**: `kairo_session_start` gains `worker` + `namespace`
846
+ (default = per-worker isolation). Shared knowledge stays in `workspace`; a
847
+ worker's session/decision memory is **filtered out of other workers' retrieval** —
848
+ a deterministic pre-ranking step, not an embedding change.
849
+ - **Distributed checkpoint graph**: checkpoints carry owning worker + parent link;
850
+ `kairo_timeline` renders the cross-worker engineering timeline (Mermaid).
851
+ - `kairo_coordination_status`: active workers, held leases, ownership, expiries.
852
+ - New events: `worker.registered`, `lease.acquired|renewed|released` (one shared
853
+ ledger). Lease denials written to the non-secret audit log.
854
+
855
+ ### Notes
856
+
857
+ - Honest limitation (documented, not hidden): cooperative file-based coordination,
858
+ **not** partition-tolerant consensus — `O_APPEND` line atomicity + deterministic
859
+ log-order projection, not locking. Two workers that ignore a denial can still both
860
+ act; `superseded` makes the collision auditable.
861
+ - Determinism preserved: state is a stable ts-only fold of the log (equal-ts events
862
+ keep append/causal order); re-projection is byte-identical.
863
+
864
+ ## [0.6.1] - 2026-05-19
865
+
866
+ Embedding provider layer — a stronger semantic substrate **without** weakening
867
+ deterministic architectural correctness. See
868
+ [ADR-0006](docs/adr/0006-embedding-provider-layer.md).
869
+
870
+ ### Added
871
+
872
+ - **`src/core/vector/providers/`** — `EmbeddingProvider` interface + registry.
873
+ `deterministic` stays the default and the only provider used unless `KAIRO_EMBEDDER`
874
+ selects another (offline, reproducible, CI/test-safe, no network, no secrets).
875
+ - **`HttpEmbeddingProvider`** — one provider covering every OpenAI-compatible endpoint
876
+ (OpenAI / VoyageAI / LM Studio / vLLM) plus Ollama's native shape; presets for
877
+ `openai` / `voyage` / `ollama` / `custom` via `KAIRO_EMBED_*` env. Vectors
878
+ L2-normalised; request timeout; never default; never used in tests/CI.
879
+ - **`architectureLayer`** is now an explicit, explainable ranking factor
880
+ (interface/domain/data/infra), matching the target retrieval formula.
881
+
882
+ ### Changed
883
+
884
+ - Embedding is async (`EmbeddingProvider.embed/embedBatch`). `retrieve()` now takes a
885
+ **precomputed query vector** so it stays a pure, deterministic function; the async
886
+ provider boundary lives in `MemoryEngine`.
887
+ - A configured remote provider that errors **falls back to deterministic**, logs it,
888
+ and stamps the index with the provider actually used (no mixed-vector corruption).
889
+ An embedding outage can never break a session.
890
+
891
+ ### Notes
892
+
893
+ - Retrieval remains hybrid: similarity is one of **eight** weighted factors. A test
894
+ asserts a perfectly-similar peripheral example still loses to a central
895
+ low-similarity module — embeddings can never override architectural correctness.
896
+ - Dogfood (kairo/zod/nest, deterministic vs a simulated stronger-semantic provider):
897
+ top-5 first-party stayed **5/5 in both arms**; similarity term strengthened
898
+ (avg 0.03 → 0.20–0.33) with no change to the correct top results. Real hosted-model
899
+ numbers require a configured endpoint and are out of CI scope — documented honestly,
900
+ not fabricated.
901
+
902
+ ## [0.6.0] - 2026-05-19
903
+
904
+ Vector / semantic memory — architecture-aware hybrid recall, **not** naive RAG. See
905
+ [VECTOR_MEMORY.md](docs/VECTOR_MEMORY.md) and
906
+ [ADR-0005](docs/adr/0005-vector-memory-design.md).
907
+
908
+ ### Added
909
+
910
+ - **`src/core/vector/` semantic cognition layer.** Architecture-aware chunks across
911
+ five memory classes (structural / semantic / session / decision / operational)
912
+ built from artifacts Kairo already derives deterministically — not a blind file
913
+ dump.
914
+ - **Pluggable `Embedder`; deterministic local default.** `DeterministicEmbedder` is
915
+ a pure, fixed-256-dim hashed lexical/structural vector (no network, no secrets,
916
+ byte-stable). Documented honestly as lexical, *not* deep-semantic; hosted/semantic
917
+ providers register behind the same interface.
918
+ - **Hybrid, explainable retrieval.** `score = Σ factor·weight` over similarity +
919
+ salience + graph centrality + session recency + runtime layer + dependency
920
+ proximity + checkpoint overlap; every result reports its factors. A central module
921
+ out-ranks a lexically similar peripheral example even with the weak embedder
922
+ (regression-tested).
923
+ - **Fingerprint-keyed index** (repo fingerprint + embedder id): a cache hit does NOT
924
+ re-embed — the same anti-rescan discipline as cached intelligence. Persisted
925
+ through the redaction boundary.
926
+ - **Continuity integration:** `kairo_session_start` indexes automatically; every
927
+ continuation brief auto-carries a "Semantic architecture recall" section so the
928
+ next agent resumes with context instead of rescanning. Deterministic compressed
929
+ architecture digest via `kairo_memory_digest`.
930
+ - New MCP tools: `kairo_memory_search`, `kairo_memory_index`, `kairo_memory_digest`.
931
+
932
+ ## [0.5.2] - 2026-05-19
933
+
934
+ Salience-aware graph ranking, prerequisite for v0.6.0 vector memory (embedding weak
935
+ structural signal is long-term memory corruption). See
936
+ [SALIENCE_ENGINE.md](docs/SALIENCE_ENGINE.md) and
937
+ [ADR-0004](docs/adr/0004-reusable-salience-subsystem.md).
938
+
939
+ ### Added
940
+
941
+ - **Salience subsystem** (`src/core/salience/`) — a reusable, composable,
942
+ explainable, deterministic ranking engine, **not** graph-specific. Weighted
943
+ independent signals (fan-in, import-degree, execution-path, entrypoint/source-root
944
+ proximity, framework-critical dir, workspace ownership; penalty signals for
945
+ non-production / test / generated areas). Repo-type profiles
946
+ (library/application/monorepo/generic) re-weight via multipliers; per-call weight
947
+ overrides; per-signal explanations. Penalties are weighted evidence, not a
948
+ blacklist (a strong dependency centre in `examples/` can still rank).
949
+ - Module-graph truncation now keeps the most architecturally salient groups instead
950
+ of merely the highest-degree ones; scores each group's representative original
951
+ path so `sample/`/`examples/` prefixes stripped by grouping are still penalised.
952
+
953
+ ### Changed
954
+
955
+ - `INTELLIGENCE_SCHEMA` 3 → 4 (module-graph node selection changed); older caches
956
+ auto-regenerate.
957
+
958
+ ## [0.5.1] - 2026-05-19
959
+
960
+ Patch from a structured dogfood of v0.5.0 against three real repos (Kairo, zod,
961
+ nestjs/nest). See [DOGFOOD_REPORT.md](DOGFOOD_REPORT.md).
962
+
963
+ ### Fixed
964
+
965
+ - **Module graph collapsed entire packages to a single node** on monorepo and
966
+ nested-`src` layouts (`packages/<pkg>/src/**`), dropping all intra-package edges
967
+ as self-edges (zod 504 file-edges → 6 graph edges; nest 3304 → 7). `groupOf` now
968
+ locates the deepest source segment and groups by owning package + dirs under it
969
+ (zod → 11 edges; nest → 45, honestly truncated). Regression test added.
970
+ - **Architecture graph ignored `src/`-nested layers**, so the common layout
971
+ (incl. Kairo itself) got a useless 0-edge fallback. Added
972
+ `RepoInventory.sourceDirs`; the architecture graph now reads source subdirs
973
+ (Kairo: 0 → `Interface → Domain → Data`). `server|cli|cmd|grpc` added to the
974
+ Interface layer rule.
975
+
976
+ ### Changed
977
+
978
+ - `INTELLIGENCE_SCHEMA` 2 → 3 (adds `sourceDirs`). Older caches auto-invalidate and
979
+ regenerate — mechanism validated during the dogfood.
980
+
981
+ ## [0.5.0] - 2026-05-19
982
+
983
+ ### Added
984
+
985
+ - **Flow / graph engine.** Mermaid graphs derived from repo intelligence:
986
+ - `kairo_graph` tool returns `module` / `service` / `architecture` / `pipeline`
987
+ as Mermaid (no rescan); mirrors written to `.kairo/graphs/*.md` on every scan.
988
+ - **Module dependency graph** from real, bounded import extraction added to the
989
+ scanner (regex static `import`/`require`/`from`, JS/TS + Python; resolves the
990
+ NodeNext `.js`→`.ts` convention; relative/internal edges only — bare and
991
+ dynamic imports excluded by design and documented as such).
992
+ - Graphs are **collapsed to directory granularity and node-capped**: too many
993
+ nodes auto-collapse one level shallower, then keep the highest-degree nodes and
994
+ flag `truncated` — a readable graph, not a hairball.
995
+ - Service / architecture / pipeline graphs are pure derivations of cached
996
+ intelligence (frameworks, dirs, CI), each annotated as heuristic.
997
+
998
+ ### Changed
999
+
1000
+ - Repo-intelligence artifact schema bumped to **2** (now embeds the module graph).
1001
+ Caches from an older schema are ignored and regenerated automatically — no manual
1002
+ cache clearing.
1003
+ - `kairo_session_start` summary now reports module-graph size and points to
1004
+ `.kairo/graphs/`. The redaction boundary also sanitizes graph mirrors.
1005
+
1006
+ ## [0.4.0] - 2026-05-19
1007
+
1008
+ ### Added
1009
+
1010
+ - **GitHub engine (advisory only — see [ADR-0003](docs/adr/0003-advisory-github-engine.md)).**
1011
+ Kairo proposes, it never mutates the repo: no `git add/commit/tag/push`.
1012
+ - `kairo_git_status`: read-only branch / ahead-behind / staged-unstaged-untracked
1013
+ / last-tag / recent-commit introspection that degrades safely outside a repo.
1014
+ - `kairo_commit_message`: a Conventional-Commits message generated **from the
1015
+ session ledger** (decisions, changed files, risk) — not from a diff. Emits no
1016
+ AI co-author trailer.
1017
+ - `kairo_changelog`: a Keep-a-Changelog fragment bucketed Added/Changed/Fixed/
1018
+ Removed from the session.
1019
+ - `kairo_release_plan`: suggested semver bump + tag + release notes from the
1020
+ session and the project's `package.json`, with the documented pre-1.0
1021
+ breaking-change convention (breaking ⇒ MINOR until 1.0.0).
1022
+ - End-to-end MCP integration smoke test: spawns the built server over real stdio,
1023
+ performs the SDK handshake, exercises the full tool/prompt/resource surface and a
1024
+ complete session lifecycle (now including the GitHub tools), and asserts on-disk
1025
+ `.kairo/` artifacts plus cross-process anti-rescan resume. Self-contained.
1026
+
1027
+ ## [0.3.0] - 2026-05-19
1028
+
1029
+ ### Added
1030
+
1031
+ - **Risk Engine** (`src/core/risk/riskEngine.ts`): classifies the _engineering_ risk
1032
+ of a change set or the whole session (distinct from context-loss pressure).
1033
+ Path sensitivity + change-kind weighting + deletion + secret-adjacency +
1034
+ unresolved-error and high-risk-breadth escalation. Biased toward over-rating; a
1035
+ recorded high/medium factor can never be downgraded by a benign change-kind.
1036
+ - **Guardrail** (`src/core/risk/guardrail.ts`): combines engineering risk with
1037
+ context-loss pressure into `ALLOW` / `CAUTION` / `HOLD`. Conservatism scales with
1038
+ pressure — the same change flips to `HOLD` as the session degrades.
1039
+ - New MCP tool **`kairo_assess`**: call before a risky change to get the guardrail
1040
+ decision; `kairo_session_status` now reports session engineering risk.
1041
+ - **Richer cooperative pressure signals**: `kairo_record` accepts `compaction`
1042
+ (agent's context was summarized — a strong loss signal) and `clarification`
1043
+ (agent had to re-ask the user). Pressure model reweighted to include both.
1044
+ - Checkpoints now embed the engineering `RiskAssessment`, surfaced in the
1045
+ continuation brief so the next agent inherits risk context.
1046
+
1047
+ ## [0.2.0] - 2026-05-18
1048
+
1049
+ ### Added
1050
+
1051
+ - **Repository Intelligence Engine.** One-time bounded repo scan producing a
1052
+ `RepoIntelligence` artifact: file inventory, language breakdown, framework /
1053
+ dependency detection (Node, Python, Go, Rust, JVM, Docker, K8s, GitHub Actions),
1054
+ and entry-point detection.
1055
+ - **Structural fingerprint** over dependency-manifest contents + file path/size set,
1056
+ used as a cache key so agents reuse cached understanding instead of rescanning;
1057
+ ordinary in-file edits intentionally do not bust the cache (they are tracked by the
1058
+ session ledger).
1059
+ - `kairo_session_start` now scans on first use and returns a compact, cached repo
1060
+ intelligence summary on every resume.
1061
+ - New MCP tools `kairo_repo_scan` (cached, `force` to refresh, reports fingerprint
1062
+ change) and `kairo_repo_intel` (cached summary, no scan).
1063
+ - `StorageAdapter` extended with intelligence persistence; the redaction boundary
1064
+ also sanitizes intelligence artifacts.
1065
+ - Scan is bounded by a file cap and depth and flags `truncated` on very large repos.
1066
+
1067
+ ## [0.1.0] - 2026-05-18
1068
+
1069
+ ### Added
1070
+
1071
+ - Production MCP server over stdio using the official `@modelcontextprotocol/sdk`,
1072
+ strict TypeScript, ESM, modular architecture.
1073
+ - **Event-sourced storage engine**: append-only `events.jsonl` log, derived JSON
1074
+ snapshots, and human-readable markdown mirrors. Crash-safe and replayable.
1075
+ - **`StorageAdapter` seam** with a local-first file adapter; redaction enforced at the
1076
+ adapter boundary so no engine can bypass it.
1077
+ - **Security redactor**: detectors for AWS, GitHub, Google/Firebase, Slack, Stripe,
1078
+ Razorpay, JWT, PEM private keys, credentialed connection strings, and secret-shaped
1079
+ `KEY=VALUE` assignments; redaction audit logging without leaking values.
1080
+ - **Session manager**: durable ledger of task, changed files, decisions, commands,
1081
+ errors, retries, heartbeats.
1082
+ - **Checkpoint engine**: durable, resumable, sanitized checkpoints with manual,
1083
+ pressure-triggered, and session-end reasons.
1084
+ - **Continuation-prompt engine**: generates a precise next-agent brief (architecture
1085
+ state, completed/remaining work, files to inspect, risks, blockers).
1086
+ - **Cooperative session-pressure model**: risk-of-context-loss score from observed
1087
+ signals with `CONTINUE` / `CHECKPOINT_SOON` / `CHECKPOINT_NOW` directives.
1088
+ - MCP tools: `kairo_session_start`, `kairo_session_status`, `kairo_record`,
1089
+ `kairo_heartbeat`, `kairo_checkpoint`, `kairo_continuation`, `kairo_session_end`.
1090
+ - MCP resources `kairo://session/current` and `kairo://checkpoint/latest`, and the
1091
+ `kairo_continuity` cooperation prompt.
1092
+ - Project documentation, ADRs, CI (lint/typecheck/test/build) and release workflows.
1093
+
1094
+ [Unreleased]: https://github.com/sandy001-kki/Kairo/compare/v1.3.0...HEAD
1095
+ [1.3.0]: https://github.com/sandy001-kki/Kairo/compare/v1.2.0...v1.3.0
1096
+ [1.2.0]: https://github.com/sandy001-kki/Kairo/compare/v1.1.3...v1.2.0
1097
+ [1.1.3]: https://github.com/sandy001-kki/Kairo/compare/v1.1.2...v1.1.3
1098
+ [1.1.2]: https://github.com/sandy001-kki/Kairo/compare/v1.1.1...v1.1.2
1099
+ [1.1.1]: https://github.com/sandy001-kki/Kairo/compare/v1.1.0...v1.1.1
1100
+ [1.1.0]: https://github.com/sandy001-kki/Kairo/compare/v1.0.1...v1.1.0
1101
+ [1.0.1]: https://github.com/sandy001-kki/Kairo/compare/v1.0.0...v1.0.1
1102
+ [1.0.0]: https://github.com/sandy001-kki/Kairo/compare/v1.0.0-rc1...v1.0.0
1103
+ [1.0.0-rc1]: https://github.com/sandy001-kki/Kairo/compare/v0.9.4...v1.0.0-rc1
1104
+ [0.9.4]: https://github.com/sandy001-kki/Kairo/compare/v0.9.3...v0.9.4
1105
+ [0.9.3]: https://github.com/sandy001-kki/Kairo/compare/v0.9.2...v0.9.3
1106
+ [0.9.2]: https://github.com/sandy001-kki/Kairo/compare/v0.9.1...v0.9.2
1107
+ [0.9.1]: https://github.com/sandy001-kki/Kairo/compare/v0.9.0...v0.9.1
1108
+ [0.9.0]: https://github.com/sandy001-kki/Kairo/compare/v0.8.2...v0.9.0
1109
+ [0.8.2]: https://github.com/sandy001-kki/Kairo/compare/v0.8.1...v0.8.2
1110
+ [0.8.1]: https://github.com/sandy001-kki/Kairo/compare/v0.8.0...v0.8.1
1111
+ [0.8.0]: https://github.com/sandy001-kki/Kairo/compare/v0.7.1...v0.8.0
1112
+ [0.7.1]: https://github.com/sandy001-kki/Kairo/compare/v0.7.0...v0.7.1
1113
+ [0.7.0]: https://github.com/sandy001-kki/Kairo/compare/v0.6.1...v0.7.0
1114
+ [0.6.1]: https://github.com/sandy001-kki/Kairo/compare/v0.6.0...v0.6.1
1115
+ [0.6.0]: https://github.com/sandy001-kki/Kairo/compare/v0.5.2...v0.6.0
1116
+ [0.5.2]: https://github.com/sandy001-kki/Kairo/compare/v0.5.1...v0.5.2
1117
+ [0.5.1]: https://github.com/sandy001-kki/Kairo/compare/v0.5.0...v0.5.1
1118
+ [0.5.0]: https://github.com/sandy001-kki/Kairo/compare/v0.4.0...v0.5.0
1119
+ [0.4.0]: https://github.com/sandy001-kki/Kairo/compare/v0.3.0...v0.4.0
1120
+ [0.3.0]: https://github.com/sandy001-kki/Kairo/compare/v0.2.0...v0.3.0
1121
+ [0.2.0]: https://github.com/sandy001-kki/Kairo/compare/v0.1.0...v0.2.0
1122
+ [0.1.0]: https://github.com/sandy001-kki/Kairo/releases/tag/v0.1.0