@kilnai/core 0.1.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 (609) hide show
  1. package/dist/agents/circuit-breaker.d.ts +26 -0
  2. package/dist/agents/circuit-breaker.d.ts.map +1 -0
  3. package/dist/agents/circuit-breaker.js +90 -0
  4. package/dist/agents/circuit-breaker.js.map +1 -0
  5. package/dist/agents/context-compressor.d.ts +13 -0
  6. package/dist/agents/context-compressor.d.ts.map +1 -0
  7. package/dist/agents/context-compressor.js +21 -0
  8. package/dist/agents/context-compressor.js.map +1 -0
  9. package/dist/agents/index.d.ts +68 -0
  10. package/dist/agents/index.d.ts.map +1 -0
  11. package/dist/agents/index.js +13 -0
  12. package/dist/agents/index.js.map +1 -0
  13. package/dist/agents/infrastructure/anthropic.d.ts +24 -0
  14. package/dist/agents/infrastructure/anthropic.d.ts.map +1 -0
  15. package/dist/agents/infrastructure/anthropic.js +226 -0
  16. package/dist/agents/infrastructure/anthropic.js.map +1 -0
  17. package/dist/agents/infrastructure/deepseek.d.ts +10 -0
  18. package/dist/agents/infrastructure/deepseek.d.ts.map +1 -0
  19. package/dist/agents/infrastructure/deepseek.js +14 -0
  20. package/dist/agents/infrastructure/deepseek.js.map +1 -0
  21. package/dist/agents/infrastructure/ollama.d.ts +20 -0
  22. package/dist/agents/infrastructure/ollama.d.ts.map +1 -0
  23. package/dist/agents/infrastructure/ollama.js +128 -0
  24. package/dist/agents/infrastructure/ollama.js.map +1 -0
  25. package/dist/agents/infrastructure/openai-compat.d.ts +25 -0
  26. package/dist/agents/infrastructure/openai-compat.d.ts.map +1 -0
  27. package/dist/agents/infrastructure/openai-compat.js +211 -0
  28. package/dist/agents/infrastructure/openai-compat.js.map +1 -0
  29. package/dist/agents/infrastructure/openai.d.ts +12 -0
  30. package/dist/agents/infrastructure/openai.d.ts.map +1 -0
  31. package/dist/agents/infrastructure/openai.js +16 -0
  32. package/dist/agents/infrastructure/openai.js.map +1 -0
  33. package/dist/agents/infrastructure/retry.d.ts +10 -0
  34. package/dist/agents/infrastructure/retry.d.ts.map +1 -0
  35. package/dist/agents/infrastructure/retry.js +22 -0
  36. package/dist/agents/infrastructure/retry.js.map +1 -0
  37. package/dist/agents/mcp-client.d.ts +22 -0
  38. package/dist/agents/mcp-client.d.ts.map +1 -0
  39. package/dist/agents/mcp-client.js +104 -0
  40. package/dist/agents/mcp-client.js.map +1 -0
  41. package/dist/agents/model-pricing.d.ts +9 -0
  42. package/dist/agents/model-pricing.d.ts.map +1 -0
  43. package/dist/agents/model-pricing.js +17 -0
  44. package/dist/agents/model-pricing.js.map +1 -0
  45. package/dist/agents/provider-registry.d.ts +25 -0
  46. package/dist/agents/provider-registry.d.ts.map +1 -0
  47. package/dist/agents/provider-registry.js +62 -0
  48. package/dist/agents/provider-registry.js.map +1 -0
  49. package/dist/agents/tool-cache.d.ts +13 -0
  50. package/dist/agents/tool-cache.d.ts.map +1 -0
  51. package/dist/agents/tool-cache.js +52 -0
  52. package/dist/agents/tool-cache.js.map +1 -0
  53. package/dist/agents/tool-rag.d.ts +15 -0
  54. package/dist/agents/tool-rag.d.ts.map +1 -0
  55. package/dist/agents/tool-rag.js +92 -0
  56. package/dist/agents/tool-rag.js.map +1 -0
  57. package/dist/agents/tool-registry.d.ts +29 -0
  58. package/dist/agents/tool-registry.d.ts.map +1 -0
  59. package/dist/agents/tool-registry.js +64 -0
  60. package/dist/agents/tool-registry.js.map +1 -0
  61. package/dist/cost/cost-tracker.d.ts +27 -0
  62. package/dist/cost/cost-tracker.d.ts.map +1 -0
  63. package/dist/cost/cost-tracker.js +103 -0
  64. package/dist/cost/cost-tracker.js.map +1 -0
  65. package/dist/cost/index.d.ts +30 -0
  66. package/dist/cost/index.d.ts.map +1 -0
  67. package/dist/cost/index.js +2 -0
  68. package/dist/cost/index.js.map +1 -0
  69. package/dist/domain/domain-package-adapter.d.ts +13 -0
  70. package/dist/domain/domain-package-adapter.d.ts.map +1 -0
  71. package/dist/domain/domain-package-adapter.js +66 -0
  72. package/dist/domain/domain-package-adapter.js.map +1 -0
  73. package/dist/domain/domain-registry.d.ts +26 -0
  74. package/dist/domain/domain-registry.d.ts.map +1 -0
  75. package/dist/domain/domain-registry.js +119 -0
  76. package/dist/domain/domain-registry.js.map +1 -0
  77. package/dist/domain/index.d.ts +22 -0
  78. package/dist/domain/index.d.ts.map +1 -0
  79. package/dist/domain/index.js +30 -0
  80. package/dist/domain/index.js.map +1 -0
  81. package/dist/domain/yaml-parser.d.ts +18 -0
  82. package/dist/domain/yaml-parser.d.ts.map +1 -0
  83. package/dist/domain/yaml-parser.js +47 -0
  84. package/dist/domain/yaml-parser.js.map +1 -0
  85. package/dist/domain/yaml-schema.d.ts +26 -0
  86. package/dist/domain/yaml-schema.d.ts.map +1 -0
  87. package/dist/domain/yaml-schema.js +66 -0
  88. package/dist/domain/yaml-schema.js.map +1 -0
  89. package/dist/engine/composites/app.d.ts +39 -0
  90. package/dist/engine/composites/app.d.ts.map +1 -0
  91. package/dist/engine/composites/app.js +125 -0
  92. package/dist/engine/composites/app.js.map +1 -0
  93. package/dist/engine/composites/router.d.ts +20 -0
  94. package/dist/engine/composites/router.d.ts.map +1 -0
  95. package/dist/engine/composites/router.js +31 -0
  96. package/dist/engine/composites/router.js.map +1 -0
  97. package/dist/engine/composites/team.d.ts +36 -0
  98. package/dist/engine/composites/team.d.ts.map +1 -0
  99. package/dist/engine/composites/team.js +100 -0
  100. package/dist/engine/composites/team.js.map +1 -0
  101. package/dist/engine/domain/a2a-config.d.ts +53 -0
  102. package/dist/engine/domain/a2a-config.d.ts.map +1 -0
  103. package/dist/engine/domain/a2a-config.js +32 -0
  104. package/dist/engine/domain/a2a-config.js.map +1 -0
  105. package/dist/engine/domain/agent.d.ts +18 -0
  106. package/dist/engine/domain/agent.d.ts.map +1 -0
  107. package/dist/engine/domain/agent.js +4 -0
  108. package/dist/engine/domain/agent.js.map +1 -0
  109. package/dist/engine/domain/capability.d.ts +24 -0
  110. package/dist/engine/domain/capability.d.ts.map +1 -0
  111. package/dist/engine/domain/capability.js +3 -0
  112. package/dist/engine/domain/capability.js.map +1 -0
  113. package/dist/engine/domain/channel.d.ts +37 -0
  114. package/dist/engine/domain/channel.d.ts.map +1 -0
  115. package/dist/engine/domain/channel.js +4 -0
  116. package/dist/engine/domain/channel.js.map +1 -0
  117. package/dist/engine/domain/chunker.d.ts +22 -0
  118. package/dist/engine/domain/chunker.d.ts.map +1 -0
  119. package/dist/engine/domain/chunker.js +3 -0
  120. package/dist/engine/domain/chunker.js.map +1 -0
  121. package/dist/engine/domain/content.d.ts +57 -0
  122. package/dist/engine/domain/content.d.ts.map +1 -0
  123. package/dist/engine/domain/content.js +63 -0
  124. package/dist/engine/domain/content.js.map +1 -0
  125. package/dist/engine/domain/cron.d.ts +15 -0
  126. package/dist/engine/domain/cron.d.ts.map +1 -0
  127. package/dist/engine/domain/cron.js +114 -0
  128. package/dist/engine/domain/cron.js.map +1 -0
  129. package/dist/engine/domain/embedding.d.ts +9 -0
  130. package/dist/engine/domain/embedding.d.ts.map +1 -0
  131. package/dist/engine/domain/embedding.js +4 -0
  132. package/dist/engine/domain/embedding.js.map +1 -0
  133. package/dist/engine/domain/eval-config.d.ts +36 -0
  134. package/dist/engine/domain/eval-config.d.ts.map +1 -0
  135. package/dist/engine/domain/eval-config.js +155 -0
  136. package/dist/engine/domain/eval-config.js.map +1 -0
  137. package/dist/engine/domain/knowledge-config.d.ts +34 -0
  138. package/dist/engine/domain/knowledge-config.d.ts.map +1 -0
  139. package/dist/engine/domain/knowledge-config.js +62 -0
  140. package/dist/engine/domain/knowledge-config.js.map +1 -0
  141. package/dist/engine/domain/mcp-config.d.ts +15 -0
  142. package/dist/engine/domain/mcp-config.d.ts.map +1 -0
  143. package/dist/engine/domain/mcp-config.js +26 -0
  144. package/dist/engine/domain/mcp-config.js.map +1 -0
  145. package/dist/engine/domain/memory.d.ts +17 -0
  146. package/dist/engine/domain/memory.d.ts.map +1 -0
  147. package/dist/engine/domain/memory.js +4 -0
  148. package/dist/engine/domain/memory.js.map +1 -0
  149. package/dist/engine/domain/modality.d.ts +5 -0
  150. package/dist/engine/domain/modality.d.ts.map +1 -0
  151. package/dist/engine/domain/modality.js +19 -0
  152. package/dist/engine/domain/modality.js.map +1 -0
  153. package/dist/engine/domain/orchestrator-config.d.ts +11 -0
  154. package/dist/engine/domain/orchestrator-config.d.ts.map +1 -0
  155. package/dist/engine/domain/orchestrator-config.js +4 -0
  156. package/dist/engine/domain/orchestrator-config.js.map +1 -0
  157. package/dist/engine/domain/prompt-assembler.d.ts +32 -0
  158. package/dist/engine/domain/prompt-assembler.d.ts.map +1 -0
  159. package/dist/engine/domain/prompt-assembler.js +60 -0
  160. package/dist/engine/domain/prompt-assembler.js.map +1 -0
  161. package/dist/engine/domain/safety-config.d.ts +51 -0
  162. package/dist/engine/domain/safety-config.d.ts.map +1 -0
  163. package/dist/engine/domain/safety-config.js +74 -0
  164. package/dist/engine/domain/safety-config.js.map +1 -0
  165. package/dist/engine/domain/speech-config.d.ts +53 -0
  166. package/dist/engine/domain/speech-config.d.ts.map +1 -0
  167. package/dist/engine/domain/speech-config.js +26 -0
  168. package/dist/engine/domain/speech-config.js.map +1 -0
  169. package/dist/engine/domain/task.d.ts +16 -0
  170. package/dist/engine/domain/task.d.ts.map +1 -0
  171. package/dist/engine/domain/task.js +4 -0
  172. package/dist/engine/domain/task.js.map +1 -0
  173. package/dist/engine/domain/tool-selection-config.d.ts +12 -0
  174. package/dist/engine/domain/tool-selection-config.d.ts.map +1 -0
  175. package/dist/engine/domain/tool-selection-config.js +22 -0
  176. package/dist/engine/domain/tool-selection-config.js.map +1 -0
  177. package/dist/engine/domain/trigger.d.ts +43 -0
  178. package/dist/engine/domain/trigger.d.ts.map +1 -0
  179. package/dist/engine/domain/trigger.js +39 -0
  180. package/dist/engine/domain/trigger.js.map +1 -0
  181. package/dist/engine/domain/vector-store.d.ts +27 -0
  182. package/dist/engine/domain/vector-store.d.ts.map +1 -0
  183. package/dist/engine/domain/vector-store.js +3 -0
  184. package/dist/engine/domain/vector-store.js.map +1 -0
  185. package/dist/engine/domain/workflow.d.ts +11 -0
  186. package/dist/engine/domain/workflow.d.ts.map +1 -0
  187. package/dist/engine/domain/workflow.js +4 -0
  188. package/dist/engine/domain/workflow.js.map +1 -0
  189. package/dist/engine/error-catalog.d.ts +8 -0
  190. package/dist/engine/error-catalog.d.ts.map +1 -0
  191. package/dist/engine/error-catalog.js +335 -0
  192. package/dist/engine/error-catalog.js.map +1 -0
  193. package/dist/engine/errors.d.ts +18 -0
  194. package/dist/engine/errors.d.ts.map +1 -0
  195. package/dist/engine/errors.js +20 -0
  196. package/dist/engine/errors.js.map +1 -0
  197. package/dist/engine/gateway/delegation-config.d.ts +52 -0
  198. package/dist/engine/gateway/delegation-config.d.ts.map +1 -0
  199. package/dist/engine/gateway/delegation-config.js +48 -0
  200. package/dist/engine/gateway/delegation-config.js.map +1 -0
  201. package/dist/engine/gateway/gateway-config.d.ts +33 -0
  202. package/dist/engine/gateway/gateway-config.d.ts.map +1 -0
  203. package/dist/engine/gateway/gateway-config.js +61 -0
  204. package/dist/engine/gateway/gateway-config.js.map +1 -0
  205. package/dist/engine/gateway/gateway-loader.d.ts +10 -0
  206. package/dist/engine/gateway/gateway-loader.d.ts.map +1 -0
  207. package/dist/engine/gateway/gateway-loader.js +150 -0
  208. package/dist/engine/gateway/gateway-loader.js.map +1 -0
  209. package/dist/engine/gateway/mode-b-config.d.ts +44 -0
  210. package/dist/engine/gateway/mode-b-config.d.ts.map +1 -0
  211. package/dist/engine/gateway/mode-b-config.js +45 -0
  212. package/dist/engine/gateway/mode-b-config.js.map +1 -0
  213. package/dist/engine/gateway/mode-b-loader.d.ts +14 -0
  214. package/dist/engine/gateway/mode-b-loader.d.ts.map +1 -0
  215. package/dist/engine/gateway/mode-b-loader.js +104 -0
  216. package/dist/engine/gateway/mode-b-loader.js.map +1 -0
  217. package/dist/engine/gateway/observability-config.d.ts +19 -0
  218. package/dist/engine/gateway/observability-config.d.ts.map +1 -0
  219. package/dist/engine/gateway/observability-config.js +27 -0
  220. package/dist/engine/gateway/observability-config.js.map +1 -0
  221. package/dist/engine/gateway/tenant-config.d.ts +59 -0
  222. package/dist/engine/gateway/tenant-config.d.ts.map +1 -0
  223. package/dist/engine/gateway/tenant-config.js +44 -0
  224. package/dist/engine/gateway/tenant-config.js.map +1 -0
  225. package/dist/engine/index.d.ts +49 -0
  226. package/dist/engine/index.d.ts.map +1 -0
  227. package/dist/engine/index.js +27 -0
  228. package/dist/engine/index.js.map +1 -0
  229. package/dist/engine/loader/app-loader.d.ts +18 -0
  230. package/dist/engine/loader/app-loader.d.ts.map +1 -0
  231. package/dist/engine/loader/app-loader.js +947 -0
  232. package/dist/engine/loader/app-loader.js.map +1 -0
  233. package/dist/engine/loader/preset-loader.d.ts +13 -0
  234. package/dist/engine/loader/preset-loader.d.ts.map +1 -0
  235. package/dist/engine/loader/preset-loader.js +51 -0
  236. package/dist/engine/loader/preset-loader.js.map +1 -0
  237. package/dist/eval/dataset-loader.d.ts +3 -0
  238. package/dist/eval/dataset-loader.d.ts.map +1 -0
  239. package/dist/eval/dataset-loader.js +70 -0
  240. package/dist/eval/dataset-loader.js.map +1 -0
  241. package/dist/eval/experiment-comparator.d.ts +16 -0
  242. package/dist/eval/experiment-comparator.d.ts.map +1 -0
  243. package/dist/eval/experiment-comparator.js +34 -0
  244. package/dist/eval/experiment-comparator.js.map +1 -0
  245. package/dist/eval/experiment-runner.d.ts +20 -0
  246. package/dist/eval/experiment-runner.d.ts.map +1 -0
  247. package/dist/eval/experiment-runner.js +54 -0
  248. package/dist/eval/experiment-runner.js.map +1 -0
  249. package/dist/eval/index.d.ts +21 -0
  250. package/dist/eval/index.d.ts.map +1 -0
  251. package/dist/eval/index.js +19 -0
  252. package/dist/eval/index.js.map +1 -0
  253. package/dist/eval/scorer-factory.d.ts +4 -0
  254. package/dist/eval/scorer-factory.d.ts.map +1 -0
  255. package/dist/eval/scorer-factory.js +67 -0
  256. package/dist/eval/scorer-factory.js.map +1 -0
  257. package/dist/eval/scorers/coherence-scorer.d.ts +8 -0
  258. package/dist/eval/scorers/coherence-scorer.d.ts.map +1 -0
  259. package/dist/eval/scorers/coherence-scorer.js +22 -0
  260. package/dist/eval/scorers/coherence-scorer.js.map +1 -0
  261. package/dist/eval/scorers/composite-scorer.d.ts +8 -0
  262. package/dist/eval/scorers/composite-scorer.d.ts.map +1 -0
  263. package/dist/eval/scorers/composite-scorer.js +19 -0
  264. package/dist/eval/scorers/composite-scorer.js.map +1 -0
  265. package/dist/eval/scorers/contains-scorer.d.ts +8 -0
  266. package/dist/eval/scorers/contains-scorer.d.ts.map +1 -0
  267. package/dist/eval/scorers/contains-scorer.js +30 -0
  268. package/dist/eval/scorers/contains-scorer.js.map +1 -0
  269. package/dist/eval/scorers/cost-scorer.d.ts +8 -0
  270. package/dist/eval/scorers/cost-scorer.d.ts.map +1 -0
  271. package/dist/eval/scorers/cost-scorer.js +19 -0
  272. package/dist/eval/scorers/cost-scorer.js.map +1 -0
  273. package/dist/eval/scorers/custom-prompt-scorer.d.ts +9 -0
  274. package/dist/eval/scorers/custom-prompt-scorer.d.ts.map +1 -0
  275. package/dist/eval/scorers/custom-prompt-scorer.js +24 -0
  276. package/dist/eval/scorers/custom-prompt-scorer.js.map +1 -0
  277. package/dist/eval/scorers/exact-match-scorer.d.ts +6 -0
  278. package/dist/eval/scorers/exact-match-scorer.d.ts.map +1 -0
  279. package/dist/eval/scorers/exact-match-scorer.js +16 -0
  280. package/dist/eval/scorers/exact-match-scorer.js.map +1 -0
  281. package/dist/eval/scorers/faithfulness-scorer.d.ts +8 -0
  282. package/dist/eval/scorers/faithfulness-scorer.d.ts.map +1 -0
  283. package/dist/eval/scorers/faithfulness-scorer.js +27 -0
  284. package/dist/eval/scorers/faithfulness-scorer.js.map +1 -0
  285. package/dist/eval/scorers/hallucination-scorer.d.ts +8 -0
  286. package/dist/eval/scorers/hallucination-scorer.d.ts.map +1 -0
  287. package/dist/eval/scorers/hallucination-scorer.js +31 -0
  288. package/dist/eval/scorers/hallucination-scorer.js.map +1 -0
  289. package/dist/eval/scorers/json-validity-scorer.d.ts +8 -0
  290. package/dist/eval/scorers/json-validity-scorer.d.ts.map +1 -0
  291. package/dist/eval/scorers/json-validity-scorer.js +32 -0
  292. package/dist/eval/scorers/json-validity-scorer.js.map +1 -0
  293. package/dist/eval/scorers/latency-scorer.d.ts +8 -0
  294. package/dist/eval/scorers/latency-scorer.d.ts.map +1 -0
  295. package/dist/eval/scorers/latency-scorer.js +19 -0
  296. package/dist/eval/scorers/latency-scorer.js.map +1 -0
  297. package/dist/eval/scorers/length-scorer.d.ts +9 -0
  298. package/dist/eval/scorers/length-scorer.d.ts.map +1 -0
  299. package/dist/eval/scorers/length-scorer.js +26 -0
  300. package/dist/eval/scorers/length-scorer.js.map +1 -0
  301. package/dist/eval/scorers/parse-llm-response.d.ts +5 -0
  302. package/dist/eval/scorers/parse-llm-response.d.ts.map +1 -0
  303. package/dist/eval/scorers/parse-llm-response.js +13 -0
  304. package/dist/eval/scorers/parse-llm-response.js.map +1 -0
  305. package/dist/eval/scorers/relevance-scorer.d.ts +8 -0
  306. package/dist/eval/scorers/relevance-scorer.d.ts.map +1 -0
  307. package/dist/eval/scorers/relevance-scorer.js +23 -0
  308. package/dist/eval/scorers/relevance-scorer.js.map +1 -0
  309. package/dist/eval/scorers/toxicity-scorer.d.ts +8 -0
  310. package/dist/eval/scorers/toxicity-scorer.d.ts.map +1 -0
  311. package/dist/eval/scorers/toxicity-scorer.js +26 -0
  312. package/dist/eval/scorers/toxicity-scorer.js.map +1 -0
  313. package/dist/eval/types.d.ts +51 -0
  314. package/dist/eval/types.d.ts.map +1 -0
  315. package/dist/eval/types.js +3 -0
  316. package/dist/eval/types.js.map +1 -0
  317. package/dist/events/event-bus.d.ts +36 -0
  318. package/dist/events/event-bus.d.ts.map +1 -0
  319. package/dist/events/event-bus.js +116 -0
  320. package/dist/events/event-bus.js.map +1 -0
  321. package/dist/events/event-store.d.ts +11 -0
  322. package/dist/events/event-store.d.ts.map +1 -0
  323. package/dist/events/event-store.js +2 -0
  324. package/dist/events/event-store.js.map +1 -0
  325. package/dist/events/index.d.ts +295 -0
  326. package/dist/events/index.d.ts.map +1 -0
  327. package/dist/events/index.js +48 -0
  328. package/dist/events/index.js.map +1 -0
  329. package/dist/events/trace.d.ts +30 -0
  330. package/dist/events/trace.d.ts.map +1 -0
  331. package/dist/events/trace.js +45 -0
  332. package/dist/events/trace.js.map +1 -0
  333. package/dist/index.d.ts +58 -0
  334. package/dist/index.d.ts.map +1 -0
  335. package/dist/index.js +42 -0
  336. package/dist/index.js.map +1 -0
  337. package/dist/knowledge/index.d.ts +10 -0
  338. package/dist/knowledge/index.d.ts.map +1 -0
  339. package/dist/knowledge/index.js +9 -0
  340. package/dist/knowledge/index.js.map +1 -0
  341. package/dist/knowledge/infrastructure/memory-vector-store.d.ts +12 -0
  342. package/dist/knowledge/infrastructure/memory-vector-store.d.ts.map +1 -0
  343. package/dist/knowledge/infrastructure/memory-vector-store.js +71 -0
  344. package/dist/knowledge/infrastructure/memory-vector-store.js.map +1 -0
  345. package/dist/knowledge/infrastructure/ollama-embedding.d.ts +15 -0
  346. package/dist/knowledge/infrastructure/ollama-embedding.d.ts.map +1 -0
  347. package/dist/knowledge/infrastructure/ollama-embedding.js +38 -0
  348. package/dist/knowledge/infrastructure/ollama-embedding.js.map +1 -0
  349. package/dist/knowledge/infrastructure/openai-embedding.d.ts +18 -0
  350. package/dist/knowledge/infrastructure/openai-embedding.d.ts.map +1 -0
  351. package/dist/knowledge/infrastructure/openai-embedding.js +66 -0
  352. package/dist/knowledge/infrastructure/openai-embedding.js.map +1 -0
  353. package/dist/knowledge/knowledge-capability.d.ts +15 -0
  354. package/dist/knowledge/knowledge-capability.d.ts.map +1 -0
  355. package/dist/knowledge/knowledge-capability.js +36 -0
  356. package/dist/knowledge/knowledge-capability.js.map +1 -0
  357. package/dist/knowledge/markdown-chunker.d.ts +8 -0
  358. package/dist/knowledge/markdown-chunker.d.ts.map +1 -0
  359. package/dist/knowledge/markdown-chunker.js +146 -0
  360. package/dist/knowledge/markdown-chunker.js.map +1 -0
  361. package/dist/knowledge/recursive-chunker.d.ts +8 -0
  362. package/dist/knowledge/recursive-chunker.d.ts.map +1 -0
  363. package/dist/knowledge/recursive-chunker.js +73 -0
  364. package/dist/knowledge/recursive-chunker.js.map +1 -0
  365. package/dist/knowledge/reranker.d.ts +5 -0
  366. package/dist/knowledge/reranker.d.ts.map +1 -0
  367. package/dist/knowledge/reranker.js +3 -0
  368. package/dist/knowledge/reranker.js.map +1 -0
  369. package/dist/knowledge/retrieval-pipeline.d.ts +26 -0
  370. package/dist/knowledge/retrieval-pipeline.d.ts.map +1 -0
  371. package/dist/knowledge/retrieval-pipeline.js +56 -0
  372. package/dist/knowledge/retrieval-pipeline.js.map +1 -0
  373. package/dist/memory/chunk-importer.d.ts +16 -0
  374. package/dist/memory/chunk-importer.d.ts.map +1 -0
  375. package/dist/memory/chunk-importer.js +58 -0
  376. package/dist/memory/chunk-importer.js.map +1 -0
  377. package/dist/memory/compactor.d.ts +59 -0
  378. package/dist/memory/compactor.d.ts.map +1 -0
  379. package/dist/memory/compactor.js +100 -0
  380. package/dist/memory/compactor.js.map +1 -0
  381. package/dist/memory/decay-curves.d.ts +33 -0
  382. package/dist/memory/decay-curves.d.ts.map +1 -0
  383. package/dist/memory/decay-curves.js +48 -0
  384. package/dist/memory/decay-curves.js.map +1 -0
  385. package/dist/memory/developer-identity.d.ts +7 -0
  386. package/dist/memory/developer-identity.d.ts.map +1 -0
  387. package/dist/memory/developer-identity.js +20 -0
  388. package/dist/memory/developer-identity.js.map +1 -0
  389. package/dist/memory/git-sync-manager.d.ts +28 -0
  390. package/dist/memory/git-sync-manager.d.ts.map +1 -0
  391. package/dist/memory/git-sync-manager.js +77 -0
  392. package/dist/memory/git-sync-manager.js.map +1 -0
  393. package/dist/memory/index.d.ts +46 -0
  394. package/dist/memory/index.d.ts.map +1 -0
  395. package/dist/memory/index.js +11 -0
  396. package/dist/memory/index.js.map +1 -0
  397. package/dist/memory/memory-manager.d.ts +34 -0
  398. package/dist/memory/memory-manager.d.ts.map +1 -0
  399. package/dist/memory/memory-manager.js +151 -0
  400. package/dist/memory/memory-manager.js.map +1 -0
  401. package/dist/memory/project-store.d.ts +28 -0
  402. package/dist/memory/project-store.d.ts.map +1 -0
  403. package/dist/memory/project-store.js +159 -0
  404. package/dist/memory/project-store.js.map +1 -0
  405. package/dist/memory/sqlite-store.d.ts +41 -0
  406. package/dist/memory/sqlite-store.d.ts.map +1 -0
  407. package/dist/memory/sqlite-store.js +320 -0
  408. package/dist/memory/sqlite-store.js.map +1 -0
  409. package/dist/observability/index.d.ts +5 -0
  410. package/dist/observability/index.d.ts.map +1 -0
  411. package/dist/observability/index.js +3 -0
  412. package/dist/observability/index.js.map +1 -0
  413. package/dist/observability/otel-exporter.d.ts +41 -0
  414. package/dist/observability/otel-exporter.d.ts.map +1 -0
  415. package/dist/observability/otel-exporter.js +166 -0
  416. package/dist/observability/otel-exporter.js.map +1 -0
  417. package/dist/observability/span-mapper.d.ts +24 -0
  418. package/dist/observability/span-mapper.d.ts.map +1 -0
  419. package/dist/observability/span-mapper.js +375 -0
  420. package/dist/observability/span-mapper.js.map +1 -0
  421. package/dist/orchestrator/checkpoint-store.d.ts +9 -0
  422. package/dist/orchestrator/checkpoint-store.d.ts.map +1 -0
  423. package/dist/orchestrator/checkpoint-store.js +2 -0
  424. package/dist/orchestrator/checkpoint-store.js.map +1 -0
  425. package/dist/orchestrator/checkpoint-types.d.ts +30 -0
  426. package/dist/orchestrator/checkpoint-types.d.ts.map +1 -0
  427. package/dist/orchestrator/checkpoint-types.js +2 -0
  428. package/dist/orchestrator/checkpoint-types.js.map +1 -0
  429. package/dist/orchestrator/guardrails.d.ts +23 -0
  430. package/dist/orchestrator/guardrails.d.ts.map +1 -0
  431. package/dist/orchestrator/guardrails.js +136 -0
  432. package/dist/orchestrator/guardrails.js.map +1 -0
  433. package/dist/orchestrator/index.d.ts +45 -0
  434. package/dist/orchestrator/index.d.ts.map +1 -0
  435. package/dist/orchestrator/index.js +8 -0
  436. package/dist/orchestrator/index.js.map +1 -0
  437. package/dist/orchestrator/interrupt.d.ts +20 -0
  438. package/dist/orchestrator/interrupt.d.ts.map +1 -0
  439. package/dist/orchestrator/interrupt.js +4 -0
  440. package/dist/orchestrator/interrupt.js.map +1 -0
  441. package/dist/orchestrator/orchestrator.d.ts +170 -0
  442. package/dist/orchestrator/orchestrator.d.ts.map +1 -0
  443. package/dist/orchestrator/orchestrator.js +509 -0
  444. package/dist/orchestrator/orchestrator.js.map +1 -0
  445. package/dist/orchestrator/phase-machine.d.ts +48 -0
  446. package/dist/orchestrator/phase-machine.d.ts.map +1 -0
  447. package/dist/orchestrator/phase-machine.js +176 -0
  448. package/dist/orchestrator/phase-machine.js.map +1 -0
  449. package/dist/orchestrator/schemas.d.ts +145 -0
  450. package/dist/orchestrator/schemas.d.ts.map +1 -0
  451. package/dist/orchestrator/schemas.js +126 -0
  452. package/dist/orchestrator/schemas.js.map +1 -0
  453. package/dist/orchestrator/sqlite-checkpoint-store.d.ts +15 -0
  454. package/dist/orchestrator/sqlite-checkpoint-store.d.ts.map +1 -0
  455. package/dist/orchestrator/sqlite-checkpoint-store.js +98 -0
  456. package/dist/orchestrator/sqlite-checkpoint-store.js.map +1 -0
  457. package/dist/orchestrator/strategies/index.d.ts +28 -0
  458. package/dist/orchestrator/strategies/index.d.ts.map +1 -0
  459. package/dist/orchestrator/strategies/index.js +20 -0
  460. package/dist/orchestrator/strategies/index.js.map +1 -0
  461. package/dist/orchestrator/strategies/sequential-strategy.d.ts +13 -0
  462. package/dist/orchestrator/strategies/sequential-strategy.d.ts.map +1 -0
  463. package/dist/orchestrator/strategies/sequential-strategy.js +29 -0
  464. package/dist/orchestrator/strategies/sequential-strategy.js.map +1 -0
  465. package/dist/orchestrator/strategies/supervisor-strategy.d.ts +43 -0
  466. package/dist/orchestrator/strategies/supervisor-strategy.d.ts.map +1 -0
  467. package/dist/orchestrator/strategies/supervisor-strategy.js +118 -0
  468. package/dist/orchestrator/strategies/supervisor-strategy.js.map +1 -0
  469. package/dist/orchestrator/strategies/swarm-strategy.d.ts +36 -0
  470. package/dist/orchestrator/strategies/swarm-strategy.d.ts.map +1 -0
  471. package/dist/orchestrator/strategies/swarm-strategy.js +126 -0
  472. package/dist/orchestrator/strategies/swarm-strategy.js.map +1 -0
  473. package/dist/package/index.d.ts +7 -0
  474. package/dist/package/index.d.ts.map +1 -0
  475. package/dist/package/index.js +6 -0
  476. package/dist/package/index.js.map +1 -0
  477. package/dist/package/security.d.ts +18 -0
  478. package/dist/package/security.d.ts.map +1 -0
  479. package/dist/package/security.js +110 -0
  480. package/dist/package/security.js.map +1 -0
  481. package/dist/package/types.d.ts +34 -0
  482. package/dist/package/types.d.ts.map +1 -0
  483. package/dist/package/types.js +4 -0
  484. package/dist/package/types.js.map +1 -0
  485. package/dist/package/yaml-parser.d.ts +22 -0
  486. package/dist/package/yaml-parser.d.ts.map +1 -0
  487. package/dist/package/yaml-parser.js +109 -0
  488. package/dist/package/yaml-parser.js.map +1 -0
  489. package/dist/package/yaml-schema.d.ts +42 -0
  490. package/dist/package/yaml-schema.d.ts.map +1 -0
  491. package/dist/package/yaml-schema.js +141 -0
  492. package/dist/package/yaml-schema.js.map +1 -0
  493. package/dist/safety/content-classifier.d.ts +31 -0
  494. package/dist/safety/content-classifier.d.ts.map +1 -0
  495. package/dist/safety/content-classifier.js +107 -0
  496. package/dist/safety/content-classifier.js.map +1 -0
  497. package/dist/safety/index.d.ts +10 -0
  498. package/dist/safety/index.d.ts.map +1 -0
  499. package/dist/safety/index.js +10 -0
  500. package/dist/safety/index.js.map +1 -0
  501. package/dist/safety/pii-scanner.d.ts +26 -0
  502. package/dist/safety/pii-scanner.d.ts.map +1 -0
  503. package/dist/safety/pii-scanner.js +82 -0
  504. package/dist/safety/pii-scanner.js.map +1 -0
  505. package/dist/safety/rails.d.ts +33 -0
  506. package/dist/safety/rails.d.ts.map +1 -0
  507. package/dist/safety/rails.js +134 -0
  508. package/dist/safety/rails.js.map +1 -0
  509. package/dist/safety/safety-pipeline.d.ts +41 -0
  510. package/dist/safety/safety-pipeline.d.ts.map +1 -0
  511. package/dist/safety/safety-pipeline.js +153 -0
  512. package/dist/safety/safety-pipeline.js.map +1 -0
  513. package/dist/safety/types.d.ts +38 -0
  514. package/dist/safety/types.d.ts.map +1 -0
  515. package/dist/safety/types.js +3 -0
  516. package/dist/safety/types.js.map +1 -0
  517. package/dist/sandbox/index.d.ts +17 -0
  518. package/dist/sandbox/index.d.ts.map +1 -0
  519. package/dist/sandbox/index.js +4 -0
  520. package/dist/sandbox/index.js.map +1 -0
  521. package/dist/sandbox/network-filter.d.ts +13 -0
  522. package/dist/sandbox/network-filter.d.ts.map +1 -0
  523. package/dist/sandbox/network-filter.js +43 -0
  524. package/dist/sandbox/network-filter.js.map +1 -0
  525. package/dist/sandbox/path-validator.d.ts +16 -0
  526. package/dist/sandbox/path-validator.d.ts.map +1 -0
  527. package/dist/sandbox/path-validator.js +47 -0
  528. package/dist/sandbox/path-validator.js.map +1 -0
  529. package/dist/sandbox/policies.d.ts +38 -0
  530. package/dist/sandbox/policies.d.ts.map +1 -0
  531. package/dist/sandbox/policies.js +145 -0
  532. package/dist/sandbox/policies.js.map +1 -0
  533. package/dist/security/audit-log.d.ts +17 -0
  534. package/dist/security/audit-log.d.ts.map +1 -0
  535. package/dist/security/audit-log.js +214 -0
  536. package/dist/security/audit-log.js.map +1 -0
  537. package/dist/security/guardian.d.ts +24 -0
  538. package/dist/security/guardian.d.ts.map +1 -0
  539. package/dist/security/guardian.js +177 -0
  540. package/dist/security/guardian.js.map +1 -0
  541. package/dist/security/index.d.ts +10 -0
  542. package/dist/security/index.d.ts.map +1 -0
  543. package/dist/security/index.js +7 -0
  544. package/dist/security/index.js.map +1 -0
  545. package/dist/security/prompt-scanner.d.ts +23 -0
  546. package/dist/security/prompt-scanner.d.ts.map +1 -0
  547. package/dist/security/prompt-scanner.js +376 -0
  548. package/dist/security/prompt-scanner.js.map +1 -0
  549. package/dist/security/secret-store.d.ts +18 -0
  550. package/dist/security/secret-store.d.ts.map +1 -0
  551. package/dist/security/secret-store.js +123 -0
  552. package/dist/security/secret-store.js.map +1 -0
  553. package/dist/security/self-audit.d.ts +33 -0
  554. package/dist/security/self-audit.d.ts.map +1 -0
  555. package/dist/security/self-audit.js +142 -0
  556. package/dist/security/self-audit.js.map +1 -0
  557. package/dist/security/types.d.ts +107 -0
  558. package/dist/security/types.d.ts.map +1 -0
  559. package/dist/security/types.js +3 -0
  560. package/dist/security/types.js.map +1 -0
  561. package/dist/skill/index.d.ts +7 -0
  562. package/dist/skill/index.d.ts.map +1 -0
  563. package/dist/skill/index.js +4 -0
  564. package/dist/skill/index.js.map +1 -0
  565. package/dist/skill/skill-registry.d.ts +26 -0
  566. package/dist/skill/skill-registry.d.ts.map +1 -0
  567. package/dist/skill/skill-registry.js +81 -0
  568. package/dist/skill/skill-registry.js.map +1 -0
  569. package/dist/skill/types.d.ts +17 -0
  570. package/dist/skill/types.d.ts.map +1 -0
  571. package/dist/skill/types.js +2 -0
  572. package/dist/skill/types.js.map +1 -0
  573. package/dist/skill/yaml-parser.d.ts +18 -0
  574. package/dist/skill/yaml-parser.d.ts.map +1 -0
  575. package/dist/skill/yaml-parser.js +61 -0
  576. package/dist/skill/yaml-parser.js.map +1 -0
  577. package/dist/skill/yaml-schema.d.ts +20 -0
  578. package/dist/skill/yaml-schema.d.ts.map +1 -0
  579. package/dist/skill/yaml-schema.js +80 -0
  580. package/dist/skill/yaml-schema.js.map +1 -0
  581. package/dist/tree/batch-executor.d.ts +28 -0
  582. package/dist/tree/batch-executor.d.ts.map +1 -0
  583. package/dist/tree/batch-executor.js +78 -0
  584. package/dist/tree/batch-executor.js.map +1 -0
  585. package/dist/tree/index.d.ts +26 -0
  586. package/dist/tree/index.d.ts.map +1 -0
  587. package/dist/tree/index.js +3 -0
  588. package/dist/tree/index.js.map +1 -0
  589. package/dist/tree/task-tree.d.ts +74 -0
  590. package/dist/tree/task-tree.d.ts.map +1 -0
  591. package/dist/tree/task-tree.js +262 -0
  592. package/dist/tree/task-tree.js.map +1 -0
  593. package/dist/verification/coverage-parser.d.ts +6 -0
  594. package/dist/verification/coverage-parser.d.ts.map +1 -0
  595. package/dist/verification/coverage-parser.js +29 -0
  596. package/dist/verification/coverage-parser.js.map +1 -0
  597. package/dist/verification/gate-runner.d.ts +18 -0
  598. package/dist/verification/gate-runner.d.ts.map +1 -0
  599. package/dist/verification/gate-runner.js +63 -0
  600. package/dist/verification/gate-runner.js.map +1 -0
  601. package/dist/verification/index.d.ts +24 -0
  602. package/dist/verification/index.d.ts.map +1 -0
  603. package/dist/verification/index.js +4 -0
  604. package/dist/verification/index.js.map +1 -0
  605. package/dist/verification/verification-loop.d.ts +32 -0
  606. package/dist/verification/verification-loop.d.ts.map +1 -0
  607. package/dist/verification/verification-loop.js +71 -0
  608. package/dist/verification/verification-loop.js.map +1 -0
  609. package/package.json +58 -0
@@ -0,0 +1,320 @@
1
+ import { Database } from "bun:sqlite";
2
+ import { applyDecayCurve, DEFAULT_DECAY_CONFIG } from "./decay-curves.js";
3
+ import { MemoryCompactor } from "./compactor.js";
4
+ import { KilnError } from "../engine/errors.js";
5
+ /** Rough heuristic: ~4 characters per token for English text */
6
+ const CHARS_PER_TOKEN_ESTIMATE = 4;
7
+ export class SqliteMemoryStore {
8
+ db;
9
+ layer;
10
+ enableDecay;
11
+ decayConfig;
12
+ compactor;
13
+ tenantId;
14
+ constructor(options) {
15
+ this.layer = options.layer;
16
+ this.enableDecay = options.enableDecay ?? false;
17
+ this.decayConfig = options.decay ?? DEFAULT_DECAY_CONFIG;
18
+ this.compactor = options.compaction ? new MemoryCompactor(options.compaction) : null;
19
+ this.tenantId = options.tenantId;
20
+ if (this.tenantId && /[%_]/.test(this.tenantId)) {
21
+ throw new KilnError('CONFIG_INVALID', 'tenantId must not contain SQL wildcard characters (% or _)', {
22
+ context: { tenantId: this.tenantId },
23
+ retryable: false,
24
+ });
25
+ }
26
+ this.db = new Database(options.dbPath);
27
+ this.db.exec("PRAGMA journal_mode = WAL;");
28
+ this.initSchema();
29
+ }
30
+ initSchema() {
31
+ this.db.exec(`
32
+ CREATE TABLE IF NOT EXISTS memories (
33
+ id TEXT PRIMARY KEY,
34
+ content TEXT NOT NULL,
35
+ tags TEXT NOT NULL,
36
+ agent_role TEXT,
37
+ project_id TEXT,
38
+ created_at TEXT NOT NULL,
39
+ last_accessed_at TEXT NOT NULL,
40
+ access_count INTEGER DEFAULT 0,
41
+ decay_score REAL DEFAULT 1.0
42
+ );
43
+ `);
44
+ this.db.exec(`
45
+ CREATE VIRTUAL TABLE IF NOT EXISTS memories_fts USING fts5(
46
+ id UNINDEXED, content, tags, tokenize='porter'
47
+ );
48
+ `);
49
+ this.db.exec(`
50
+ CREATE TABLE IF NOT EXISTS memories_archive (
51
+ id TEXT PRIMARY KEY,
52
+ content TEXT NOT NULL,
53
+ tags TEXT NOT NULL,
54
+ agent_role TEXT,
55
+ project_id TEXT,
56
+ created_at TEXT NOT NULL,
57
+ last_accessed_at TEXT NOT NULL,
58
+ access_count INTEGER DEFAULT 0,
59
+ decay_score REAL DEFAULT 1.0,
60
+ archived_at TEXT NOT NULL
61
+ );
62
+ `);
63
+ }
64
+ async save(entry) {
65
+ const id = crypto.randomUUID();
66
+ const now = new Date().toISOString();
67
+ let tags = [...entry.tags];
68
+ if (this.tenantId) {
69
+ const tenantTag = `_tenant:${this.tenantId}`;
70
+ if (!tags.includes(tenantTag))
71
+ tags.push(tenantTag);
72
+ }
73
+ const tagsJson = JSON.stringify(tags);
74
+ this.db.prepare(`
75
+ INSERT INTO memories (id, content, tags, agent_role, project_id, created_at, last_accessed_at, access_count, decay_score)
76
+ VALUES (?, ?, ?, ?, ?, ?, ?, 0, 1.0)
77
+ `).run(id, entry.content, tagsJson, entry.agentRole ?? null, entry.projectId ?? null, now, now);
78
+ this.db.prepare(`
79
+ INSERT INTO memories_fts (id, content, tags) VALUES (?, ?, ?)
80
+ `).run(id, entry.content, tagsJson);
81
+ return id;
82
+ }
83
+ async search(query, limit) {
84
+ const maxResults = limit ?? 10;
85
+ let rows;
86
+ if (this.tenantId) {
87
+ const tenantTag = `_tenant:${this.tenantId}`;
88
+ rows = this.db.prepare(`
89
+ SELECT m.*, bm25(memories_fts) AS score,
90
+ snippet(memories_fts, 1, '<b>', '</b>', '...', 32) AS snippet
91
+ FROM memories_fts fts
92
+ JOIN memories m ON m.id = fts.id
93
+ WHERE memories_fts MATCH ?
94
+ AND m.tags LIKE ?
95
+ ORDER BY bm25(memories_fts)
96
+ LIMIT ?
97
+ `).all(query, `%"${tenantTag}"%`, maxResults);
98
+ // Runtime assertion: verify each returned row has the tenant tag
99
+ for (const row of rows) {
100
+ const tags = JSON.parse(row.tags);
101
+ if (!tags.includes(tenantTag)) {
102
+ throw new KilnError("TENANT_ISOLATION_VIOLATED", `Memory entry ${row.id} lacks tenant tag for tenant ${this.tenantId}`, {
103
+ context: { entryId: row.id, tenantId: this.tenantId },
104
+ retryable: false,
105
+ });
106
+ }
107
+ }
108
+ }
109
+ else {
110
+ rows = this.db.prepare(`
111
+ SELECT m.*, bm25(memories_fts) AS score,
112
+ snippet(memories_fts, 1, '<b>', '</b>', '...', 32) AS snippet
113
+ FROM memories_fts fts
114
+ JOIN memories m ON m.id = fts.id
115
+ WHERE memories_fts MATCH ?
116
+ ORDER BY bm25(memories_fts)
117
+ LIMIT ?
118
+ `).all(query, maxResults);
119
+ }
120
+ return rows.map((row) => this.toSearchResult(row));
121
+ }
122
+ async recall(query, tokenBudget) {
123
+ const results = await this.search(query, 50);
124
+ const parts = [];
125
+ let tokensUsed = 0;
126
+ for (const result of results) {
127
+ const tokenEstimate = Math.ceil(result.entry.content.length / CHARS_PER_TOKEN_ESTIMATE);
128
+ if (tokensUsed + tokenEstimate > tokenBudget)
129
+ break;
130
+ parts.push(result.entry.content);
131
+ tokensUsed += tokenEstimate;
132
+ }
133
+ return parts.join("\n\n");
134
+ }
135
+ async forget(id) {
136
+ if (this.tenantId) {
137
+ const row = this.db.prepare("SELECT tags FROM memories WHERE id = ?").get(id);
138
+ if (row) {
139
+ const tags = JSON.parse(row.tags);
140
+ const tenantTag = `_tenant:${this.tenantId}`;
141
+ if (!tags.includes(tenantTag)) {
142
+ throw new KilnError("TENANT_ISOLATION_VIOLATED", `Cannot delete memory entry ${id}: tenant isolation violation`, {
143
+ context: { entryId: id, tenantId: this.tenantId },
144
+ retryable: false,
145
+ });
146
+ }
147
+ }
148
+ }
149
+ this.db.prepare("DELETE FROM memories_fts WHERE id = ?").run(id);
150
+ this.db.prepare("DELETE FROM memories WHERE id = ?").run(id);
151
+ }
152
+ reinforce(id) {
153
+ const now = new Date().toISOString();
154
+ this.db.prepare(`
155
+ UPDATE memories
156
+ SET last_accessed_at = ?, access_count = access_count + 1, decay_score = 1.0
157
+ WHERE id = ?
158
+ `).run(now, id);
159
+ }
160
+ applyDecay(factor) {
161
+ const config = this.decayConfig;
162
+ const now = Date.now();
163
+ if (config.curve === "step") {
164
+ // Step decay: set score to 0 for entries older than factor days
165
+ const rows = this.db.prepare("SELECT id, created_at FROM memories").all();
166
+ for (const row of rows) {
167
+ const ageInDays = (now - new Date(row.created_at).getTime()) / (1000 * 60 * 60 * 24);
168
+ const newScore = applyDecayCurve(1, config, ageInDays);
169
+ this.db.prepare("UPDATE memories SET decay_score = ? WHERE id = ?").run(newScore, row.id);
170
+ }
171
+ }
172
+ else if (config.curve === "linear") {
173
+ const linearFactor = factor ?? config.factor;
174
+ const rows = this.db.prepare("SELECT id, decay_score FROM memories").all();
175
+ for (const row of rows) {
176
+ const newScore = applyDecayCurve(row.decay_score, { ...config, factor: linearFactor });
177
+ this.db.prepare("UPDATE memories SET decay_score = ? WHERE id = ?").run(newScore, row.id);
178
+ }
179
+ }
180
+ else {
181
+ // Exponential (default) -- batch update for efficiency
182
+ const decayFactor = factor ?? config.factor;
183
+ this.db.prepare("UPDATE memories SET decay_score = decay_score * ?").run(decayFactor);
184
+ }
185
+ // Prune entries below threshold
186
+ const threshold = config.pruneThreshold;
187
+ const pruned = this.db.prepare("SELECT id FROM memories WHERE decay_score < ?").all(threshold);
188
+ for (const row of pruned) {
189
+ this.db.prepare("DELETE FROM memories_fts WHERE id = ?").run(row.id);
190
+ }
191
+ this.db.prepare("DELETE FROM memories WHERE decay_score < ?").run(threshold);
192
+ }
193
+ /** Run compaction if configured and threshold exceeded. Returns null if compaction is not configured. */
194
+ runCompaction() {
195
+ if (!this.compactor)
196
+ return null;
197
+ if (!this.compactor.shouldCompact(this.asCompactable()))
198
+ return null;
199
+ return this.compactor.compact(this.asCompactable());
200
+ }
201
+ asCompactable() {
202
+ const db = this.db;
203
+ return {
204
+ entryCount() {
205
+ const row = db.prepare("SELECT COUNT(*) AS cnt FROM memories").get();
206
+ return row.cnt;
207
+ },
208
+ queryOldEntries(minAgeDays, limit) {
209
+ const cutoff = new Date(Date.now() - minAgeDays * 24 * 60 * 60 * 1000).toISOString();
210
+ const rows = db.prepare(`
211
+ SELECT id, content, tags, decay_score
212
+ FROM memories
213
+ WHERE created_at < ?
214
+ ORDER BY decay_score ASC
215
+ LIMIT ?
216
+ `).all(cutoff, limit);
217
+ return rows.map((r) => ({
218
+ id: r.id,
219
+ content: r.content,
220
+ tags: JSON.parse(r.tags),
221
+ decayScore: r.decay_score,
222
+ }));
223
+ },
224
+ saveSummary(content, tags) {
225
+ const id = crypto.randomUUID();
226
+ const now = new Date().toISOString();
227
+ const tagsJson = JSON.stringify(tags);
228
+ db.prepare(`
229
+ INSERT INTO memories (id, content, tags, created_at, last_accessed_at, access_count, decay_score)
230
+ VALUES (?, ?, ?, ?, ?, 0, 1.0)
231
+ `).run(id, content, tagsJson, now, now);
232
+ db.prepare(`
233
+ INSERT INTO memories_fts (id, content, tags) VALUES (?, ?, ?)
234
+ `).run(id, content, tagsJson);
235
+ return id;
236
+ },
237
+ archiveEntries(ids) {
238
+ const now = new Date().toISOString();
239
+ for (const id of ids) {
240
+ db.prepare(`
241
+ INSERT OR IGNORE INTO memories_archive
242
+ SELECT *, ? AS archived_at FROM memories WHERE id = ?
243
+ `).run(now, id);
244
+ db.prepare("DELETE FROM memories_fts WHERE id = ?").run(id);
245
+ db.prepare("DELETE FROM memories WHERE id = ?").run(id);
246
+ }
247
+ },
248
+ };
249
+ }
250
+ listEntries(options) {
251
+ const limit = options?.limit ?? 100;
252
+ const tagFilter = options?.tags ? options.tags.split(",").map((t) => t.trim()).filter(Boolean) : [];
253
+ let rows;
254
+ if (this.tenantId) {
255
+ const tenantTag = `_tenant:${this.tenantId}`;
256
+ rows = this.db.prepare(`
257
+ SELECT * FROM memories
258
+ WHERE tags LIKE ?
259
+ ORDER BY last_accessed_at DESC
260
+ LIMIT ?
261
+ `).all(`%"${tenantTag}"%`, limit);
262
+ for (const row of rows) {
263
+ const tags = JSON.parse(row.tags);
264
+ if (!tags.includes(tenantTag)) {
265
+ throw new KilnError("TENANT_ISOLATION_VIOLATED", `Memory entry ${row.id} lacks tenant tag for tenant ${this.tenantId}`, {
266
+ context: { entryId: row.id, tenantId: this.tenantId },
267
+ retryable: false,
268
+ });
269
+ }
270
+ }
271
+ }
272
+ else {
273
+ rows = this.db.prepare(`
274
+ SELECT * FROM memories
275
+ ORDER BY last_accessed_at DESC
276
+ LIMIT ?
277
+ `).all(limit);
278
+ }
279
+ if (tagFilter.length > 0) {
280
+ rows = rows.filter((row) => {
281
+ const rowTags = JSON.parse(row.tags);
282
+ return tagFilter.every((t) => rowTags.includes(t));
283
+ });
284
+ }
285
+ return rows.map((row) => this.toEntry(row));
286
+ }
287
+ hasEntry(id) {
288
+ const row = this.db.prepare("SELECT 1 FROM memories WHERE id = ?").get(id);
289
+ return row !== undefined;
290
+ }
291
+ close() {
292
+ this.db.close();
293
+ }
294
+ get count() {
295
+ const row = this.db.prepare("SELECT COUNT(*) AS cnt FROM memories").get();
296
+ return row.cnt;
297
+ }
298
+ toSearchResult(row) {
299
+ const score = this.enableDecay ? Math.abs(row.score) * row.decay_score : Math.abs(row.score);
300
+ return {
301
+ entry: this.toEntry(row),
302
+ score,
303
+ snippet: row.snippet,
304
+ };
305
+ }
306
+ toEntry(row) {
307
+ return {
308
+ id: row.id,
309
+ layer: this.layer,
310
+ content: row.content,
311
+ tags: JSON.parse(row.tags),
312
+ createdAt: new Date(row.created_at),
313
+ lastAccessedAt: new Date(row.last_accessed_at),
314
+ accessCount: row.access_count,
315
+ agentRole: row.agent_role,
316
+ projectId: row.project_id ?? undefined,
317
+ };
318
+ }
319
+ }
320
+ //# sourceMappingURL=sqlite-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-store.js","sourceRoot":"","sources":["../../src/memory/sqlite-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,gEAAgE;AAChE,MAAM,wBAAwB,GAAG,CAAC,CAAC;AA6BnC,MAAM,OAAO,iBAAiB;IACX,EAAE,CAAW;IACb,KAAK,CAAc;IACnB,WAAW,CAAU;IACrB,WAAW,CAAc;IACzB,SAAS,CAAyB;IAClC,QAAQ,CAAqB;IAE9C,YAAY,OAAiC;QAC3C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC;QAChD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,IAAI,oBAAoB,CAAC;QACzD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,SAAS,CAAC,gBAAgB,EAAE,4DAA4D,EAAE;gBAClG,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;gBACpC,SAAS,EAAE,KAAK;aACjB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;KAYZ,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;KAIZ,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;KAaZ,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CACR,KAA+E;QAE/E,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAErC,IAAI,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,SAAS,GAAG,WAAW,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAGf,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAEhG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAEf,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEpC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,MAAM,CACV,KAAa,EACb,KAAc;QAEd,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE,CAAC;QAE/B,IAAI,IAAoB,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,SAAS,GAAG,WAAW,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7C,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;OAStB,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,SAAS,IAAI,EAAE,UAAU,CAAmB,CAAC;YAEhE,iEAAiE;YACjE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAa,CAAC;gBAC9C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC9B,MAAM,IAAI,SAAS,CAAC,2BAA2B,EAAE,gBAAgB,GAAG,CAAC,EAAE,gCAAgC,IAAI,CAAC,QAAQ,EAAE,EAAE;wBACtH,OAAO,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;wBACrD,SAAS,EAAE,KAAK;qBACjB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;OAQtB,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAmB,CAAC;QAC9C,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,WAAmB;QAC7C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,wBAAwB,CAAC,CAAC;YACxF,IAAI,UAAU,GAAG,aAAa,GAAG,WAAW;gBAAE,MAAM;YACpD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACjC,UAAU,IAAI,aAAa,CAAC;QAC9B,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAiC,CAAC;YAC9G,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAa,CAAC;gBAC9C,MAAM,SAAS,GAAG,WAAW,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC7C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC9B,MAAM,IAAI,SAAS,CAAC,2BAA2B,EAAE,8BAA8B,EAAE,8BAA8B,EAAE;wBAC/G,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;wBACjD,SAAS,EAAE,KAAK;qBACjB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,SAAS,CAAC,EAAU;QAClB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAIf,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,UAAU,CAAC,MAAe;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC5B,gEAAgE;YAChE,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,EAA0C,CAAC;YAClH,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,SAAS,GAAG,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;gBACrF,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;gBACvD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,YAAY,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,GAAG,EAA2C,CAAC;YACpH,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;gBACvF,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC;aAAM,CAAC;YACN,uDAAuD;YACvD,MAAM,WAAW,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;YAC5C,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACxF,CAAC;QAED,gCAAgC;QAChC,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,CAAC,SAAS,CAAqB,CAAC;QACnH,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/E,CAAC;IAED,yGAAyG;IACzG,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QACrE,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IACtD,CAAC;IAEO,aAAa;QACnB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,OAAO;YACL,UAAU;gBACR,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,GAAG,EAAqB,CAAC;gBACxF,OAAO,GAAG,CAAC,GAAG,CAAC;YACjB,CAAC;YACD,eAAe,CAAC,UAAkB,EAAE,KAAa;gBAC/C,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;gBACrF,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;SAMvB,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAyE,CAAC;gBAC9F,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACtB,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAa;oBACpC,UAAU,EAAE,CAAC,CAAC,WAAW;iBAC1B,CAAC,CAAC,CAAC;YACN,CAAC;YACD,WAAW,CAAC,OAAe,EAAE,IAAuB;gBAClD,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC/B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACtC,EAAE,CAAC,OAAO,CAAC;;;SAGV,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxC,EAAE,CAAC,OAAO,CAAC;;SAEV,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC9B,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,cAAc,CAAC,GAAsB;gBACnC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBACrC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;oBACrB,EAAE,CAAC,OAAO,CAAC;;;WAGV,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAChB,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC5D,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,OAA2C;QACrD,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,GAAG,CAAC;QACpC,MAAM,SAAS,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEpG,IAAI,IAAiB,CAAC;QAEtB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,SAAS,GAAG,WAAW,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7C,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;OAKtB,CAAC,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,EAAE,KAAK,CAAgB,CAAC;YAEjD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAa,CAAC;gBAC9C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC9B,MAAM,IAAI,SAAS,CAAC,2BAA2B,EAAE,gBAAgB,GAAG,CAAC,EAAE,gCAAgC,IAAI,CAAC,QAAQ,EAAE,EAAE;wBACtH,OAAO,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;wBACrD,SAAS,EAAE,KAAK;qBACjB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;OAItB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAgB,CAAC;QAC/B,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;gBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAa,CAAC;gBACjD,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,QAAQ,CAAC,EAAU;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,CAAC,EAAE,CAA8B,CAAC;QACxG,OAAO,GAAG,KAAK,SAAS,CAAC;IAC3B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAED,IAAI,KAAK;QACP,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,GAAG,EAAqB,CAAC;QAC7F,OAAO,GAAG,CAAC,GAAG,CAAC;IACjB,CAAC;IAEO,cAAc,CAAC,GAAiB;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7F,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;YACxB,KAAK;YACL,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC;IACJ,CAAC;IAEO,OAAO,CAAC,GAAc;QAC5B,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAa;YACtC,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;YACnC,cAAc,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC;YAC9C,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,SAAS,EAAE,GAAG,CAAC,UAAsC;YACrD,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;SACvC,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ export { mapEventToSpan } from "./span-mapper.js";
2
+ export type { SpanOperation } from "./span-mapper.js";
3
+ export { OTelExporter } from "./otel-exporter.js";
4
+ export type { OTelExporterConfig } from "./otel-exporter.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { mapEventToSpan } from "./span-mapper.js";
2
+ export { OTelExporter } from "./otel-exporter.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,41 @@
1
+ import type { TracerProvider } from "@opentelemetry/api";
2
+ import type { KilnEvent } from "../events/index.js";
3
+ import type { EventStore } from "../events/event-store.js";
4
+ export interface OTelExporterConfig {
5
+ readonly serviceName: string;
6
+ readonly attributes?: Record<string, string>;
7
+ }
8
+ /**
9
+ * Implements EventStore by forwarding Kiln events to an OpenTelemetry TracerProvider.
10
+ * Received events are mapped by SpanMapper then dispatched to the OTel API.
11
+ *
12
+ * This class is write-only. getBySession() and getAfter() throw errors -- retrieval
13
+ * is handled by the OTel backend (Jaeger, Datadog, etc.), not this adapter.
14
+ *
15
+ * Active spans are tracked per-session in an internal Map, and cleaned up on session end.
16
+ * Memory leaks are prevented by the span lifecycle (startSpan/endSpan pairing from SpanMapper).
17
+ */
18
+ export declare class OTelExporter implements EventStore {
19
+ private readonly tracer;
20
+ private readonly provider;
21
+ private readonly activeSpans;
22
+ constructor(tracerProvider: TracerProvider, config: OTelExporterConfig);
23
+ save(event: KilnEvent): Promise<void>;
24
+ getBySession(_sessionId: string): Promise<KilnEvent[]>;
25
+ getAfter(_sessionId: string, _afterId: string): Promise<KilnEvent[]>;
26
+ /**
27
+ * Flush all pending spans and shut down the tracer provider.
28
+ * Call this during graceful gateway shutdown.
29
+ */
30
+ shutdown(): Promise<void>;
31
+ private getOrCreateSessionSpans;
32
+ /**
33
+ * Derive a stable span key from the event's identifying fields.
34
+ * For startSpan/endSpan pairs, the same key must be produced for both events.
35
+ */
36
+ private resolveSpanKey;
37
+ /** Return the most recently started span for a session (stack-like access). */
38
+ private getActiveSpan;
39
+ private setAttributes;
40
+ }
41
+ //# sourceMappingURL=otel-exporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otel-exporter.d.ts","sourceRoot":"","sources":["../../src/observability/otel-exporter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAgC,MAAM,oBAAoB,CAAC;AACvF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAO3D,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChD;AAED;;;;;;;;;GASG;AACH,qBAAa,YAAa,YAAW,UAAU;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAG1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwC;gBAExD,cAAc,EAAE,cAAc,EAAE,MAAM,EAAE,kBAAkB;IAKhE,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAmD3C,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAItD,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAIpE;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB/B,OAAO,CAAC,uBAAuB;IAS/B;;;OAGG;IACH,OAAO,CAAC,cAAc;IA+BtB,+EAA+E;IAC/E,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,aAAa;CAKxB"}
@@ -0,0 +1,166 @@
1
+ // Observability: OTelExporter -- implements EventStore, wraps @opentelemetry/api TracerProvider.
2
+ // @opentelemetry/api is a PEER DEPENDENCY in @kilnai/runtime, NOT a dependency of @kilnai/core.
3
+ // The TracerProvider is created and injected by the gateway-server, never imported here at runtime.
4
+ import { mapEventToSpan } from "./span-mapper.js";
5
+ // SpanStatusCode numeric values from @opentelemetry/api -- avoids importing the enum at runtime.
6
+ const SPAN_STATUS_OK = 1;
7
+ const SPAN_STATUS_ERROR = 2;
8
+ /**
9
+ * Implements EventStore by forwarding Kiln events to an OpenTelemetry TracerProvider.
10
+ * Received events are mapped by SpanMapper then dispatched to the OTel API.
11
+ *
12
+ * This class is write-only. getBySession() and getAfter() throw errors -- retrieval
13
+ * is handled by the OTel backend (Jaeger, Datadog, etc.), not this adapter.
14
+ *
15
+ * Active spans are tracked per-session in an internal Map, and cleaned up on session end.
16
+ * Memory leaks are prevented by the span lifecycle (startSpan/endSpan pairing from SpanMapper).
17
+ */
18
+ export class OTelExporter {
19
+ tracer;
20
+ provider;
21
+ // sessionId -> (spanKey -> Span)
22
+ // spanKey is derived from taskId / toolName / workerIndex for each startSpan operation
23
+ activeSpans = new Map();
24
+ constructor(tracerProvider, config) {
25
+ this.provider = tracerProvider;
26
+ this.tracer = tracerProvider.getTracer(config.serviceName, "0.1.0");
27
+ }
28
+ async save(event) {
29
+ const operation = mapEventToSpan(event);
30
+ const spans = this.getOrCreateSessionSpans(event.sessionId);
31
+ switch (operation.action) {
32
+ case "startSpan": {
33
+ const spanKey = this.resolveSpanKey(event);
34
+ const span = this.tracer.startSpan(operation.name);
35
+ this.setAttributes(span, operation.attributes);
36
+ spans.set(spanKey, span);
37
+ break;
38
+ }
39
+ case "endSpan": {
40
+ const spanKey = this.resolveSpanKey(event);
41
+ const span = spans.get(spanKey) ?? this.getActiveSpan(spans);
42
+ if (span) {
43
+ if (operation.attributes) {
44
+ this.setAttributes(span, operation.attributes);
45
+ }
46
+ const statusCode = operation.status === "error" ? SPAN_STATUS_ERROR : SPAN_STATUS_OK;
47
+ span.setStatus({ code: statusCode });
48
+ span.end();
49
+ spans.delete(spanKey);
50
+ // Also delete by iteration if key-based lookup was a miss (fallback case)
51
+ for (const [k, s] of spans.entries()) {
52
+ if (s === span) {
53
+ spans.delete(k);
54
+ break;
55
+ }
56
+ }
57
+ // Clean up empty session maps to avoid memory leaks
58
+ if (spans.size === 0) {
59
+ this.activeSpans.delete(event.sessionId);
60
+ }
61
+ }
62
+ break;
63
+ }
64
+ case "addEvent": {
65
+ const activeSpan = this.getActiveSpan(spans);
66
+ if (activeSpan) {
67
+ activeSpan.addEvent(operation.name, operation.attributes);
68
+ }
69
+ break;
70
+ }
71
+ case "setAttributes": {
72
+ const activeSpan = this.getActiveSpan(spans);
73
+ if (activeSpan) {
74
+ this.setAttributes(activeSpan, operation.attributes);
75
+ }
76
+ break;
77
+ }
78
+ }
79
+ }
80
+ getBySession(_sessionId) {
81
+ return Promise.reject(new Error("OTelExporter does not support retrieval. Query your OTel backend (Jaeger, Datadog, etc.)."));
82
+ }
83
+ getAfter(_sessionId, _afterId) {
84
+ return Promise.reject(new Error("OTelExporter does not support retrieval. Query your OTel backend (Jaeger, Datadog, etc.)."));
85
+ }
86
+ /**
87
+ * Flush all pending spans and shut down the tracer provider.
88
+ * Call this during graceful gateway shutdown.
89
+ */
90
+ async shutdown() {
91
+ // End any leaked spans (belt-and-suspenders)
92
+ for (const spans of this.activeSpans.values()) {
93
+ for (const span of spans.values()) {
94
+ span.end();
95
+ }
96
+ }
97
+ this.activeSpans.clear();
98
+ // TracerProvider.shutdown() is available in the SDK implementations
99
+ const providerWithShutdown = this.provider;
100
+ if (typeof providerWithShutdown.shutdown === "function") {
101
+ await providerWithShutdown.shutdown();
102
+ }
103
+ }
104
+ // ---------------------------------------------------------------------------
105
+ // Private helpers
106
+ // ---------------------------------------------------------------------------
107
+ getOrCreateSessionSpans(sessionId) {
108
+ let spans = this.activeSpans.get(sessionId);
109
+ if (!spans) {
110
+ spans = new Map();
111
+ this.activeSpans.set(sessionId, spans);
112
+ }
113
+ return spans;
114
+ }
115
+ /**
116
+ * Derive a stable span key from the event's identifying fields.
117
+ * For startSpan/endSpan pairs, the same key must be produced for both events.
118
+ */
119
+ resolveSpanKey(event) {
120
+ const e = event;
121
+ // Tool spans: keyed by toolName + taskId (must be first -- tool events have both)
122
+ if (typeof e["toolName"] === "string" && typeof e["taskId"] === "string") {
123
+ return `tool:${e["toolName"]}:${e["taskId"]}`;
124
+ }
125
+ // Worker spans: keyed by workerIndex + taskId (check BEFORE bare taskId).
126
+ // WorkerAssignedEvent has both workerIndex AND taskId -- without this ordering it would
127
+ // collide with the task:taskId key and overwrite the task span.
128
+ if (typeof e["workerIndex"] === "number" && typeof e["taskId"] === "string") {
129
+ return `worker:${String(e["workerIndex"])}:${e["taskId"]}`;
130
+ }
131
+ if (typeof e["workerIndex"] === "number") {
132
+ return `worker:${String(e["workerIndex"])}`;
133
+ }
134
+ // Task spans: keyed by taskId alone
135
+ if (typeof e["taskId"] === "string") {
136
+ return `task:${e["taskId"]}`;
137
+ }
138
+ // Trigger spans: keyed by triggerName
139
+ if (typeof e["triggerName"] === "string") {
140
+ return `trigger:${e["triggerName"]}`;
141
+ }
142
+ // Phase spans: keyed by phase name
143
+ if (typeof e["phase"] === "string") {
144
+ return `phase:${e["phase"]}`;
145
+ }
146
+ // Fallback: event type
147
+ return `event:${event.type}`;
148
+ }
149
+ /** Return the most recently started span for a session (stack-like access). */
150
+ getActiveSpan(spans) {
151
+ if (spans.size === 0)
152
+ return undefined;
153
+ // Return the last inserted span (Map preserves insertion order)
154
+ let last;
155
+ for (const span of spans.values()) {
156
+ last = span;
157
+ }
158
+ return last;
159
+ }
160
+ setAttributes(span, attributes) {
161
+ for (const [key, value] of Object.entries(attributes)) {
162
+ span.setAttribute(key, value);
163
+ }
164
+ }
165
+ }
166
+ //# sourceMappingURL=otel-exporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otel-exporter.js","sourceRoot":"","sources":["../../src/observability/otel-exporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { KilnEvent } from "../events/index.js";
2
+ export type SpanOperation = {
3
+ action: "startSpan";
4
+ name: string;
5
+ kind: string;
6
+ attributes: Record<string, string | number | boolean>;
7
+ } | {
8
+ action: "endSpan";
9
+ status: "ok" | "error";
10
+ attributes?: Record<string, string | number | boolean>;
11
+ } | {
12
+ action: "addEvent";
13
+ name: string;
14
+ attributes: Record<string, string | number | boolean>;
15
+ } | {
16
+ action: "setAttributes";
17
+ attributes: Record<string, string | number | boolean>;
18
+ };
19
+ /**
20
+ * Maps a KilnEvent to a SpanOperation descriptor.
21
+ * Exhaustive -- adding a new EventType without updating this switch is a compile error.
22
+ */
23
+ export declare function mapEventToSpan(event: KilnEvent): SpanOperation;
24
+ //# sourceMappingURL=span-mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"span-mapper.d.ts","sourceRoot":"","sources":["../../src/observability/span-mapper.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACR,SAAS,EAiCZ,MAAM,oBAAoB,CAAC;AAM5B,MAAM,MAAM,aAAa,GACnB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;CAAE,GAC1G;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;CAAE,GACrG;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;CAAE,GAC3F;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;CAAE,CAAC;AAyUzF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,aAAa,CA0E9D"}