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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quarantine.js","sourceRoot":"","sources":["../../src/storage/quarantine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AA6B5C,MAAM,OAAO,kBAAkB;IACZ,IAAI,CAAS;IACtB,OAAO,GAAG,KAAK,CAAC;IACxB,YAAY,aAAqB;QAC/B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;IACD,KAAK,CAAC,KAAK,CAAC,MAAyB;QACnC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACjD,MAAM,UAAU,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,UAAU,IAAI,EAAE,CAAC,CAAC;IAClG,CAAC;CACF;AAED,wEAAwE;AACxE,MAAM,OAAO,kBAAkB;IAC7B,KAAK,CAAC,KAAK,CAAC,OAA0B;QACpC,wBAAwB;IAC1B,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import type { StorageAdapter } from './storageAdapter.js';
2
+ import type { Clock } from '../utils/time.js';
3
+ /**
4
+ * Decorator that enforces the redaction boundary (docs/ARCHITECTURE.md §2.3).
5
+ *
6
+ * Every write path that can carry agent-supplied content — events, snapshots,
7
+ * checkpoints, continuation briefs — is sanitized here *before* delegation, and a
8
+ * non-leaking audit record is appended when secrets are removed. Engines wire this
9
+ * around the real adapter and can never reach the backend directly, so there is no
10
+ * code path that persists un-redacted data.
11
+ */
12
+ export declare function withRedaction(inner: StorageAdapter, clock: Clock): StorageAdapter;
13
+ //# sourceMappingURL=redactingAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redactingAdapter.d.ts","sourceRoot":"","sources":["../../src/storage/redactingAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAM1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAG9C;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,GAAG,cAAc,CA8FjF"}
@@ -0,0 +1,91 @@
1
+ import { sanitize } from '../security/redactor.js';
2
+ import { logger } from '../utils/logger.js';
3
+ /**
4
+ * Decorator that enforces the redaction boundary (docs/ARCHITECTURE.md §2.3).
5
+ *
6
+ * Every write path that can carry agent-supplied content — events, snapshots,
7
+ * checkpoints, continuation briefs — is sanitized here *before* delegation, and a
8
+ * non-leaking audit record is appended when secrets are removed. Engines wire this
9
+ * around the real adapter and can never reach the backend directly, so there is no
10
+ * code path that persists un-redacted data.
11
+ */
12
+ export function withRedaction(inner, clock) {
13
+ const auditFindings = async (where, findings) => {
14
+ if (Object.keys(findings).length === 0)
15
+ return;
16
+ const total = Object.values(findings).reduce((a, b) => a + b, 0);
17
+ logger.warn(`Redacted ${total} secret(s) before persisting ${where}`, findings);
18
+ await inner.audit({
19
+ ts: clock.iso(),
20
+ kind: 'redaction',
21
+ message: `Redacted secrets before persisting ${where}`,
22
+ details: findings,
23
+ });
24
+ };
25
+ return {
26
+ init: () => inner.init(),
27
+ async appendEvent(event) {
28
+ const { value, findings } = sanitize(event);
29
+ await inner.appendEvent(value);
30
+ await auditFindings(`event:${event.type}`, findings);
31
+ },
32
+ readEvents: () => inner.readEvents(),
33
+ async saveSessionSnapshot(state) {
34
+ const { value, findings } = sanitize(state);
35
+ await inner.saveSessionSnapshot(value);
36
+ await auditFindings('session-snapshot', findings);
37
+ },
38
+ loadSessionSnapshot: (id) => inner.loadSessionSnapshot(id),
39
+ async saveCheckpoint(checkpoint) {
40
+ const { value, findings } = sanitize(checkpoint);
41
+ await inner.saveCheckpoint(value);
42
+ await auditFindings('checkpoint', findings);
43
+ },
44
+ loadCheckpoint: (id) => inner.loadCheckpoint(id),
45
+ loadLatestCheckpoint: () => inner.loadLatestCheckpoint(),
46
+ async saveContinuation(name, markdown) {
47
+ const { value, findings } = sanitize(markdown);
48
+ const stored = await inner.saveContinuation(name, value);
49
+ await auditFindings('continuation', findings);
50
+ return stored;
51
+ },
52
+ loadContinuation: (name) => inner.loadContinuation(name),
53
+ loadLatestContinuation: () => inner.loadLatestContinuation(),
54
+ async saveIntelligence(intel) {
55
+ const { value, findings } = sanitize(intel);
56
+ await inner.saveIntelligence(value);
57
+ await auditFindings('repo-intelligence', findings);
58
+ },
59
+ loadLatestIntelligence: () => inner.loadLatestIntelligence(),
60
+ loadIntelligenceByFingerprint: (fp) => inner.loadIntelligenceByFingerprint(fp),
61
+ async saveGraph(kind, markdown) {
62
+ const { value, findings } = sanitize(markdown);
63
+ await inner.saveGraph(kind, value);
64
+ await auditFindings('graph', findings);
65
+ },
66
+ async saveVectorIndex(index) {
67
+ // Sanitise chunk text before it is embedded into the persisted index.
68
+ const { value, findings } = sanitize(index);
69
+ await inner.saveVectorIndex(value);
70
+ await auditFindings('vector-index', findings);
71
+ },
72
+ loadVectorIndex: () => inner.loadVectorIndex(),
73
+ // Audit entries are constructed internally and never carry secret values.
74
+ audit: (entry) => inner.audit(entry),
75
+ readAudit: () => inner.readAudit(),
76
+ async appendTelemetry(event) {
77
+ // Telemetry fields are structured non-secret scalars by construction; we still
78
+ // sanitise as defence in depth so it can never become a leak side-channel.
79
+ const { value, findings } = sanitize(event);
80
+ await inner.appendTelemetry(value);
81
+ await auditFindings('telemetry', findings);
82
+ },
83
+ readTelemetry: () => inner.readTelemetry(),
84
+ async saveReport(name, markdown) {
85
+ const { value, findings } = sanitize(markdown);
86
+ await inner.saveReport(name, value);
87
+ await auditFindings(`report:${name}`, findings);
88
+ },
89
+ };
90
+ }
91
+ //# sourceMappingURL=redactingAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redactingAdapter.js","sourceRoot":"","sources":["../../src/storage/redactingAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { AuditEntry, KairoEvent } from '../types/events.js';
2
+ import type { Checkpoint, SessionState } from '../types/domain.js';
3
+ import type { RepoIntelligence } from '../core/repo/types.js';
4
+ import type { VectorIndex } from '../core/vector/types.js';
5
+ import type { TelemetryEvent } from '../core/telemetry/types.js';
6
+ /**
7
+ * Persistence seam. Engines depend only on this interface, never on the filesystem.
8
+ * Backends (file, SQLite, vector store) are interchangeable, and the redaction
9
+ * decorator (see redactingAdapter.ts) wraps any adapter so sanitization cannot be
10
+ * bypassed.
11
+ */
12
+ export interface StorageAdapter {
13
+ init(): Promise<void>;
14
+ /** Append a single event. Must be atomic at the record level. */
15
+ appendEvent(event: KairoEvent): Promise<void>;
16
+ /** Read the full event log in chronological order. */
17
+ readEvents(): Promise<KairoEvent[]>;
18
+ saveSessionSnapshot(state: SessionState): Promise<void>;
19
+ loadSessionSnapshot(id: string): Promise<SessionState | undefined>;
20
+ saveCheckpoint(checkpoint: Checkpoint): Promise<void>;
21
+ loadCheckpoint(id: string): Promise<Checkpoint | undefined>;
22
+ loadLatestCheckpoint(): Promise<Checkpoint | undefined>;
23
+ /** Persist a continuation brief. Returns the stored filename. */
24
+ saveContinuation(name: string, markdown: string): Promise<string>;
25
+ loadContinuation(name: string): Promise<string | undefined>;
26
+ loadLatestContinuation(): Promise<string | undefined>;
27
+ /** Persist a repo-intelligence artifact, keyed by fingerprint, and update `latest`. */
28
+ saveIntelligence(intel: RepoIntelligence): Promise<void>;
29
+ loadLatestIntelligence(): Promise<RepoIntelligence | undefined>;
30
+ loadIntelligenceByFingerprint(fingerprint: string): Promise<RepoIntelligence | undefined>;
31
+ /** Persist a rendered graph markdown mirror under `.kairo/graphs/<kind>.md`. */
32
+ saveGraph(kind: string, markdown: string): Promise<void>;
33
+ /** Persist / load the semantic memory index (fingerprint-keyed). */
34
+ saveVectorIndex(index: VectorIndex): Promise<void>;
35
+ loadVectorIndex(): Promise<VectorIndex | undefined>;
36
+ /** Append an audit record. Never contains secret values. */
37
+ audit(entry: AuditEntry): Promise<void>;
38
+ /** Read the audit log (analytics reads redaction/lifecycle counts from here). */
39
+ readAudit(): Promise<AuditEntry[]>;
40
+ /** Append a telemetry event (separate local log; opt-in export only). */
41
+ appendTelemetry(event: TelemetryEvent): Promise<void>;
42
+ readTelemetry(): Promise<TelemetryEvent[]>;
43
+ /** Persist a generated analytics/team/risk report under `.kairo/reports/`. */
44
+ saveReport(name: string, markdown: string): Promise<void>;
45
+ }
46
+ //# sourceMappingURL=storageAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storageAdapter.d.ts","sourceRoot":"","sources":["../../src/storage/storageAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB,iEAAiE;IACjE,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,sDAAsD;IACtD,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAEpC,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;IAEnE,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAC5D,oBAAoB,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAExD,iEAAiE;IACjE,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC5D,sBAAsB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEtD,uFAAuF;IACvF,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,sBAAsB,IAAI,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;IAChE,6BAA6B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;IAE1F,gFAAgF;IAChF,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzD,oEAAoE;IACpE,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,eAAe,IAAI,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IAEpD,4DAA4D;IAC5D,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,iFAAiF;IACjF,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAEnC,yEAAyE;IACzE,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,aAAa,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAE3C,8EAA8E;IAC9E,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=storageAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storageAdapter.js","sourceRoot":"","sources":["../../src/storage/storageAdapter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Core domain model for Kairo's session-continuity engine.
3
+ *
4
+ * `SessionState` is a *derived projection* of the event log, not an independently
5
+ * mutated record. A `Checkpoint` is a durable, sanitized, resumable freeze of that
6
+ * projection plus the next-agent continuation brief.
7
+ */
8
+ export type AgentKind = string;
9
+ export type ChangeKind = 'created' | 'modified' | 'deleted' | 'renamed';
10
+ export type RiskLevel = 'low' | 'medium' | 'high';
11
+ export interface ChangedFile {
12
+ path: string;
13
+ changeKind: ChangeKind;
14
+ risk: RiskLevel;
15
+ /** Number of distinct times the agent reported changing this file. */
16
+ touches: number;
17
+ lastTs: string;
18
+ note?: string;
19
+ }
20
+ export interface Decision {
21
+ ts: string;
22
+ summary: string;
23
+ rationale?: string;
24
+ }
25
+ export interface CommandRecord {
26
+ ts: string;
27
+ command: string;
28
+ exitCode?: number;
29
+ note?: string;
30
+ }
31
+ export interface ErrorRecord {
32
+ ts: string;
33
+ message: string;
34
+ resolved: boolean;
35
+ context?: string;
36
+ }
37
+ export type DirectiveLevel = 'CONTINUE' | 'CHECKPOINT_SOON' | 'CHECKPOINT_NOW';
38
+ export interface PressureSignals {
39
+ /** Tool calls handled by Kairo this session (volume proxy). */
40
+ toolCalls: number;
41
+ changedFiles: number;
42
+ cumulativeDiffBytes: number;
43
+ retries: number;
44
+ unresolvedErrors: number;
45
+ /** Re-reads of files already read — a strong proxy for context loss. */
46
+ repeatedRereads: number;
47
+ /** Times the agent reported its context was compacted/summarized. */
48
+ compactions: number;
49
+ /** Times the agent had to re-ask the user to re-explain (loss proxy). */
50
+ clarificationLoops: number;
51
+ elapsedMs: number;
52
+ }
53
+ export interface PressureSnapshot {
54
+ /** Risk of context loss, bounded [0,1]. */
55
+ score: number;
56
+ directive: DirectiveLevel;
57
+ signals: PressureSignals;
58
+ /** Human-readable explanations of the dominant contributing signals. */
59
+ reasons: string[];
60
+ }
61
+ export type SessionStatus = 'active' | 'checkpointed' | 'ended';
62
+ export interface SessionState {
63
+ /** Schema version (ADR-0012). Optional for back-compat with pre-v0.9.1 records. */
64
+ schema?: number;
65
+ id: string;
66
+ agent: AgentKind;
67
+ task: string;
68
+ projectRoot: string;
69
+ startedAt: string;
70
+ lastActivityAt: string;
71
+ status: SessionStatus;
72
+ changedFiles: Record<string, ChangedFile>;
73
+ decisions: Decision[];
74
+ commands: CommandRecord[];
75
+ errors: ErrorRecord[];
76
+ completedWork: string[];
77
+ pendingWork: string[];
78
+ blockers: string[];
79
+ retries: number;
80
+ heartbeats: number;
81
+ toolCalls: number;
82
+ compactions: number;
83
+ clarificationLoops: number;
84
+ cumulativeDiffBytes: number;
85
+ /** path → number of times re-read. */
86
+ rereadCounts: Record<string, number>;
87
+ lastCheckpointId?: string;
88
+ }
89
+ export type CheckpointReason = 'manual' | 'pressure' | 'session-end';
90
+ export interface Checkpoint {
91
+ /** Schema version (ADR-0012). Optional for back-compat with pre-v0.9.1 records. */
92
+ schema?: number;
93
+ id: string;
94
+ sessionId: string;
95
+ agent: AgentKind;
96
+ createdAt: string;
97
+ reason: CheckpointReason;
98
+ task: string;
99
+ projectRoot: string;
100
+ completedWork: string[];
101
+ remainingWork: string[];
102
+ blockers: string[];
103
+ changedFiles: ChangedFile[];
104
+ decisions: Decision[];
105
+ unresolvedErrors: ErrorRecord[];
106
+ pressure: PressureSnapshot;
107
+ /** Aggregate engineering risk of the session at checkpoint time. */
108
+ risk: RiskAssessment;
109
+ /** Filename of the generated continuation brief markdown. */
110
+ continuationRef: string;
111
+ /** Coordination (v0.7.0): owning worker + prior checkpoint, forming the DAG. */
112
+ ownerWorkerId?: string;
113
+ parentCheckpointId?: string;
114
+ }
115
+ export interface RiskFactor {
116
+ /** Stable tag, e.g. "auth-path", "deletion", "secret-adjacent". */
117
+ code: string;
118
+ level: RiskLevel;
119
+ detail: string;
120
+ }
121
+ export interface RiskAssessment {
122
+ level: RiskLevel;
123
+ /** Bounded [0,1] aggregate engineering risk of the operation/session. */
124
+ score: number;
125
+ factors: RiskFactor[];
126
+ }
127
+ /**
128
+ * Output of combining engineering risk with context-loss pressure. Kairo cannot
129
+ * truly block an agent (cooperative model) — `HOLD` is a strongly-worded advisory.
130
+ */
131
+ export type GuardDecision = 'ALLOW' | 'CAUTION' | 'HOLD';
132
+ export interface Guidance {
133
+ decision: GuardDecision;
134
+ risk: RiskAssessment;
135
+ pressure: PressureSnapshot;
136
+ directive: string;
137
+ reasons: string[];
138
+ }
139
+ //# sourceMappingURL=domain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../src/types/domain.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAExE,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;IAChB,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAE/E,MAAM,WAAW,eAAe;IAC9B,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,wEAAwE;IACxE,eAAe,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,cAAc,CAAC;IAC1B,OAAO,EAAE,eAAe,CAAC;IACzB,wEAAwE;IACxE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,cAAc,GAAG,OAAO,CAAC;AAEhE,MAAM,WAAW,YAAY;IAC3B,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,aAAa,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC1C,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC;AAErE,MAAM,WAAW,UAAU;IACzB,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,gBAAgB,EAAE,WAAW,EAAE,CAAC;IAChC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,oEAAoE;IACpE,IAAI,EAAE,cAAc,CAAC;IACrB,6DAA6D;IAC7D,eAAe,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAID,MAAM,WAAW,UAAU;IACzB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Core domain model for Kairo's session-continuity engine.
3
+ *
4
+ * `SessionState` is a *derived projection* of the event log, not an independently
5
+ * mutated record. A `Checkpoint` is a durable, sanitized, resumable freeze of that
6
+ * projection plus the next-agent continuation brief.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=domain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.js","sourceRoot":"","sources":["../../src/types/domain.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Event model. The append-only event log is Kairo's source of truth; every other
3
+ * persisted artifact (session snapshot, checkpoint, continuation) is a projection of
4
+ * these events. See docs/adr/0001-event-sourced-storage.md.
5
+ */
6
+ export declare const EVENT_SCHEMA_VERSION: 1;
7
+ export type EventType = 'session.started' | 'session.resumed' | 'file.changed' | 'decision.recorded' | 'command.run' | 'error.recorded' | 'error.resolved' | 'retry.recorded' | 'note.recorded' | 'compaction.observed' | 'clarification.recorded' | 'work.completed' | 'work.pending' | 'blocker.recorded' | 'heartbeat' | 'checkpoint.created' | 'session.ended' | 'worker.registered' | 'lease.acquired' | 'lease.renewed' | 'lease.released';
8
+ export interface KairoEvent<TPayload = unknown> {
9
+ readonly schema: typeof EVENT_SCHEMA_VERSION;
10
+ /** Monotonic, lexicographically sortable id. */
11
+ readonly id: string;
12
+ /** ISO-8601 timestamp. */
13
+ readonly ts: string;
14
+ readonly sessionId: string;
15
+ readonly type: EventType;
16
+ readonly payload: TPayload;
17
+ }
18
+ /** A redaction/lifecycle audit record. Never contains secret values. */
19
+ export interface AuditEntry {
20
+ /** Schema version (ADR-0012). Optional for back-compat with pre-v0.9.1 records. */
21
+ readonly schema?: number;
22
+ readonly ts: string;
23
+ readonly kind: 'redaction' | 'lifecycle';
24
+ readonly message: string;
25
+ /** For redaction: secret type → count. Values are never recorded. */
26
+ readonly details?: Record<string, number>;
27
+ }
28
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,oBAAoB,EAAG,CAAU,CAAC;AAE/C,MAAM,MAAM,SAAS,GACjB,iBAAiB,GACjB,iBAAiB,GACjB,cAAc,GACd,mBAAmB,GACnB,aAAa,GACb,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,eAAe,GACf,qBAAqB,GACrB,wBAAwB,GACxB,gBAAgB,GAChB,cAAc,GACd,kBAAkB,GAClB,WAAW,GACX,oBAAoB,GACpB,eAAe,GACf,mBAAmB,GACnB,gBAAgB,GAChB,eAAe,GACf,gBAAgB,CAAC;AAErB,MAAM,WAAW,UAAU,CAAC,QAAQ,GAAG,OAAO;IAC5C,QAAQ,CAAC,MAAM,EAAE,OAAO,oBAAoB,CAAC;IAC7C,gDAAgD;IAChD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;CAC5B;AAED,wEAAwE;AACxE,MAAM,WAAW,UAAU;IACzB,mFAAmF;IACnF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Event model. The append-only event log is Kairo's source of truth; every other
3
+ * persisted artifact (session snapshot, checkpoint, continuation) is a projection of
4
+ * these events. See docs/adr/0001-event-sourced-storage.md.
5
+ */
6
+ export const EVENT_SCHEMA_VERSION = 1;
7
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAU,CAAC"}
@@ -0,0 +1,6 @@
1
+ /** Domain error whose message is safe to surface to the agent. */
2
+ export declare class KairoError extends Error {
3
+ readonly hint?: string | undefined;
4
+ constructor(message: string, hint?: string | undefined);
5
+ }
6
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,qBAAa,UAAW,SAAQ,KAAK;IAGjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM;gBADtB,OAAO,EAAE,MAAM,EACN,IAAI,CAAC,EAAE,MAAM,YAAA;CAKzB"}
@@ -0,0 +1,10 @@
1
+ /** Domain error whose message is safe to surface to the agent. */
2
+ export class KairoError extends Error {
3
+ hint;
4
+ constructor(message, hint) {
5
+ super(message);
6
+ this.hint = hint;
7
+ this.name = 'KairoError';
8
+ }
9
+ }
10
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,MAAM,OAAO,UAAW,SAAQ,KAAK;IAGxB;IAFX,YACE,OAAe,EACN,IAAa;QAEtB,KAAK,CAAC,OAAO,CAAC,CAAC;QAFN,SAAI,GAAJ,IAAI,CAAS;QAGtB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * A monotonic, lexicographically sortable id (ULID-style): 48-bit millisecond
3
+ * timestamp + 80 bits of randomness. Sorting ids sorts by creation time, which the
4
+ * event log relies on for ordering without a separate sequence column.
5
+ */
6
+ export declare function newId(now?: number): string;
7
+ //# sourceMappingURL=ids.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/utils/ids.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,GAAG,GAAE,MAAmB,GAAG,MAAM,CAatD"}
@@ -0,0 +1,22 @@
1
+ import { randomBytes } from 'node:crypto';
2
+ const ENCODING = '0123456789ABCDEFGHJKMNPQRSTVWXYZ'; // Crockford base32
3
+ /**
4
+ * A monotonic, lexicographically sortable id (ULID-style): 48-bit millisecond
5
+ * timestamp + 80 bits of randomness. Sorting ids sorts by creation time, which the
6
+ * event log relies on for ordering without a separate sequence column.
7
+ */
8
+ export function newId(now = Date.now()) {
9
+ let ts = now;
10
+ const time = [];
11
+ for (let i = 9; i >= 0; i--) {
12
+ time[i] = ENCODING[ts % 32];
13
+ ts = Math.floor(ts / 32);
14
+ }
15
+ const rnd = randomBytes(16);
16
+ let rand = '';
17
+ for (let i = 0; i < 16; i++) {
18
+ rand += ENCODING[rnd[i] % 32];
19
+ }
20
+ return time.join('') + rand;
21
+ }
22
+ //# sourceMappingURL=ids.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/utils/ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,QAAQ,GAAG,kCAAkC,CAAC,CAAC,mBAAmB;AAExE;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,MAAc,IAAI,CAAC,GAAG,EAAE;IAC5C,IAAI,EAAE,GAAG,GAAG,CAAC;IACb,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAW,CAAC;QACtC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3B,CAAC;IACD,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAC5B,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,IAAI,QAAQ,CAAE,GAAG,CAAC,CAAC,CAAY,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare const logger: {
2
+ debug: (m: string, meta?: unknown) => void;
3
+ info: (m: string, meta?: unknown) => void;
4
+ warn: (m: string, meta?: unknown) => void;
5
+ error: (m: string, meta?: unknown) => void;
6
+ };
7
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AA2BA,eAAO,MAAM,MAAM;eACN,MAAM,SAAS,OAAO;cACvB,MAAM,SAAS,OAAO;cACtB,MAAM,SAAS,OAAO;eACrB,MAAM,SAAS,OAAO;CAClC,CAAC"}
@@ -0,0 +1,26 @@
1
+ const order = { debug: 10, info: 20, warn: 30, error: 40 };
2
+ function threshold() {
3
+ const env = process.env.KAIRO_LOG_LEVEL?.toLowerCase();
4
+ return order[env ?? 'info'] ?? order.info;
5
+ }
6
+ function emit(level, message, meta) {
7
+ if (order[level] < threshold())
8
+ return;
9
+ const line = `[kairo] ${new Date().toISOString()} ${level.toUpperCase()} ${message}`;
10
+ console.error(meta === undefined ? line : `${line} ${safe(meta)}`);
11
+ }
12
+ function safe(meta) {
13
+ try {
14
+ return JSON.stringify(meta);
15
+ }
16
+ catch {
17
+ return '[unserializable meta]';
18
+ }
19
+ }
20
+ export const logger = {
21
+ debug: (m, meta) => emit('debug', m, meta),
22
+ info: (m, meta) => emit('info', m, meta),
23
+ warn: (m, meta) => emit('warn', m, meta),
24
+ error: (m, meta) => emit('error', m, meta),
25
+ };
26
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAMA,MAAM,KAAK,GAA0B,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AAElF,SAAS,SAAS;IAChB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,WAAW,EAAuB,CAAC;IAC5E,OAAO,KAAK,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;AAC5C,CAAC;AAED,SAAS,IAAI,CAAC,KAAY,EAAE,OAAe,EAAE,IAAc;IACzD,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS,EAAE;QAAE,OAAO;IACvC,MAAM,IAAI,GAAG,WAAW,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,OAAO,EAAE,CAAC;IACrF,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,IAAI,CAAC,IAAa;IACzB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,uBAAuB,CAAC;IACjC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,CAAC,CAAS,EAAE,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC;IAC5D,IAAI,EAAE,CAAC,CAAS,EAAE,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC;IAC1D,IAAI,EAAE,CAAC,CAAS,EAAE,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC;IAC1D,KAAK,EAAE,CAAC,CAAS,EAAE,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC;CAC7D,CAAC"}
@@ -0,0 +1,8 @@
1
+ /** Single clock seam so tests can pin time deterministically. */
2
+ export interface Clock {
3
+ now(): number;
4
+ iso(): string;
5
+ }
6
+ export declare const systemClock: Clock;
7
+ export declare function fixedClock(epochMs: number): Clock;
8
+ //# sourceMappingURL=time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/utils/time.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,MAAM,WAAW,KAAK;IACpB,GAAG,IAAI,MAAM,CAAC;IACd,GAAG,IAAI,MAAM,CAAC;CACf;AAED,eAAO,MAAM,WAAW,EAAE,KAGzB,CAAC;AAEF,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAKjD"}
@@ -0,0 +1,11 @@
1
+ export const systemClock = {
2
+ now: () => Date.now(),
3
+ iso: () => new Date().toISOString(),
4
+ };
5
+ export function fixedClock(epochMs) {
6
+ return {
7
+ now: () => epochMs,
8
+ iso: () => new Date(epochMs).toISOString(),
9
+ };
10
+ }
11
+ //# sourceMappingURL=time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.js","sourceRoot":"","sources":["../../src/utils/time.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,WAAW,GAAU;IAChC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;IACrB,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;CACpC,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,OAAO;QACL,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO;QAClB,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE;KAC3C,CAAC;AACJ,CAAC"}
package/package.json ADDED
@@ -0,0 +1,79 @@
1
+ {
2
+ "name": "kairo-mcp",
3
+ "version": "1.3.0",
4
+ "description": "Kairo — a persistent engineering memory and session-continuity control layer for AI coding agents, exposed over the Model Context Protocol.",
5
+ "license": "MIT",
6
+ "author": "Kairo maintainers",
7
+ "homepage": "https://github.com/sandy001-kki/Kairo#readme",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/sandy001-kki/Kairo.git"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/sandy001-kki/Kairo/issues"
14
+ },
15
+ "type": "module",
16
+ "engines": {
17
+ "node": ">=20"
18
+ },
19
+ "bin": {
20
+ "kairo": "dist/cli/cli.js",
21
+ "kairo-mcp": "dist/index.js",
22
+ "kairo-inspect": "dist/inspect/cli.js"
23
+ },
24
+ "main": "dist/index.js",
25
+ "types": "dist/index.d.ts",
26
+ "files": [
27
+ "dist",
28
+ "README.md",
29
+ "LICENSE",
30
+ "CHANGELOG.md"
31
+ ],
32
+ "keywords": [
33
+ "mcp",
34
+ "model-context-protocol",
35
+ "ai-agents",
36
+ "ai-coding",
37
+ "agent-memory",
38
+ "claude",
39
+ "claude-code",
40
+ "cursor",
41
+ "session-continuity",
42
+ "checkpoint",
43
+ "local-first",
44
+ "deterministic",
45
+ "developer-tools",
46
+ "cli",
47
+ "typescript"
48
+ ],
49
+ "publishConfig": {
50
+ "access": "public"
51
+ },
52
+ "scripts": {
53
+ "build": "tsc -p tsconfig.build.json",
54
+ "dev": "tsc -p tsconfig.build.json --watch",
55
+ "start": "node dist/index.js",
56
+ "typecheck": "tsc -p tsconfig.json --noEmit",
57
+ "lint": "eslint .",
58
+ "lint:fix": "eslint . --fix",
59
+ "format": "prettier --write .",
60
+ "format:check": "prettier --check .",
61
+ "test": "vitest run",
62
+ "test:watch": "vitest",
63
+ "prepare": "npm run build",
64
+ "prepublishOnly": "npm run build"
65
+ },
66
+ "dependencies": {
67
+ "@modelcontextprotocol/sdk": "^1.12.0",
68
+ "zod": "^3.23.8"
69
+ },
70
+ "devDependencies": {
71
+ "@eslint/js": "^9.9.0",
72
+ "@types/node": "^20.14.0",
73
+ "eslint": "^9.9.0",
74
+ "typescript-eslint": "^8.0.0",
75
+ "prettier": "^3.3.3",
76
+ "typescript": "^5.5.4",
77
+ "vitest": "^2.0.5"
78
+ }
79
+ }