kiokuko-dsh 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 (1032) hide show
  1. package/LICENSE +21 -0
  2. package/README.ja.md +50 -0
  3. package/README.ko.md +50 -0
  4. package/README.md +53 -0
  5. package/README.zh-CN.md +50 -0
  6. package/dist/agent-file/atomic-write.d.ts +93 -0
  7. package/dist/agent-file/atomic-write.d.ts.map +1 -0
  8. package/dist/agent-file/atomic-write.js +1026 -0
  9. package/dist/agent-file/atomic-write.js.map +1 -0
  10. package/dist/agent-file/managed-block.d.ts +23 -0
  11. package/dist/agent-file/managed-block.d.ts.map +1 -0
  12. package/dist/agent-file/managed-block.js +101 -0
  13. package/dist/agent-file/managed-block.js.map +1 -0
  14. package/dist/agent-file/render.d.ts +14 -0
  15. package/dist/agent-file/render.d.ts.map +1 -0
  16. package/dist/agent-file/render.js +63 -0
  17. package/dist/agent-file/render.js.map +1 -0
  18. package/dist/akinator/agent-task.d.ts +72 -0
  19. package/dist/akinator/agent-task.d.ts.map +1 -0
  20. package/dist/akinator/agent-task.js +684 -0
  21. package/dist/akinator/agent-task.js.map +1 -0
  22. package/dist/akinator/capabilities.d.ts +92 -0
  23. package/dist/akinator/capabilities.d.ts.map +1 -0
  24. package/dist/akinator/capabilities.js +364 -0
  25. package/dist/akinator/capabilities.js.map +1 -0
  26. package/dist/akinator/capability-binding.d.ts +11 -0
  27. package/dist/akinator/capability-binding.d.ts.map +1 -0
  28. package/dist/akinator/capability-binding.js +71 -0
  29. package/dist/akinator/capability-binding.js.map +1 -0
  30. package/dist/akinator/domain.d.ts +25 -0
  31. package/dist/akinator/domain.d.ts.map +1 -0
  32. package/dist/akinator/domain.js +266 -0
  33. package/dist/akinator/domain.js.map +1 -0
  34. package/dist/akinator/knowledge-path.d.ts +33 -0
  35. package/dist/akinator/knowledge-path.d.ts.map +1 -0
  36. package/dist/akinator/knowledge-path.js +474 -0
  37. package/dist/akinator/knowledge-path.js.map +1 -0
  38. package/dist/akinator/orchestrator.d.ts +7 -0
  39. package/dist/akinator/orchestrator.d.ts.map +1 -0
  40. package/dist/akinator/orchestrator.js +8 -0
  41. package/dist/akinator/orchestrator.js.map +1 -0
  42. package/dist/akinator/reasoning.d.ts +8 -0
  43. package/dist/akinator/reasoning.d.ts.map +1 -0
  44. package/dist/akinator/reasoning.js +118 -0
  45. package/dist/akinator/reasoning.js.map +1 -0
  46. package/dist/akinator/service.d.ts +32 -0
  47. package/dist/akinator/service.d.ts.map +1 -0
  48. package/dist/akinator/service.js +294 -0
  49. package/dist/akinator/service.js.map +1 -0
  50. package/dist/akinator/skill-discovery-attempt.d.ts +26 -0
  51. package/dist/akinator/skill-discovery-attempt.d.ts.map +1 -0
  52. package/dist/akinator/skill-discovery-attempt.js +469 -0
  53. package/dist/akinator/skill-discovery-attempt.js.map +1 -0
  54. package/dist/akinator/store.d.ts +96 -0
  55. package/dist/akinator/store.d.ts.map +1 -0
  56. package/dist/akinator/store.js +642 -0
  57. package/dist/akinator/store.js.map +1 -0
  58. package/dist/akinator/types.d.ts +70 -0
  59. package/dist/akinator/types.d.ts.map +1 -0
  60. package/dist/akinator/types.js +2 -0
  61. package/dist/akinator/types.js.map +1 -0
  62. package/dist/bin/kiokuko.d.ts +3 -0
  63. package/dist/bin/kiokuko.d.ts.map +1 -0
  64. package/dist/bin/kiokuko.js +13 -0
  65. package/dist/bin/kiokuko.js.map +1 -0
  66. package/dist/cli.d.ts +24 -0
  67. package/dist/cli.d.ts.map +1 -0
  68. package/dist/cli.js +962 -0
  69. package/dist/cli.js.map +1 -0
  70. package/dist/client/server-client.d.ts +22 -0
  71. package/dist/client/server-client.d.ts.map +1 -0
  72. package/dist/client/server-client.js +729 -0
  73. package/dist/client/server-client.js.map +1 -0
  74. package/dist/commands/agent.d.ts +12 -0
  75. package/dist/commands/agent.d.ts.map +1 -0
  76. package/dist/commands/agent.js +1138 -0
  77. package/dist/commands/agent.js.map +1 -0
  78. package/dist/commands/backup.d.ts +6 -0
  79. package/dist/commands/backup.d.ts.map +1 -0
  80. package/dist/commands/backup.js +77 -0
  81. package/dist/commands/backup.js.map +1 -0
  82. package/dist/commands/curator.d.ts +25 -0
  83. package/dist/commands/curator.d.ts.map +1 -0
  84. package/dist/commands/curator.js +58 -0
  85. package/dist/commands/curator.js.map +1 -0
  86. package/dist/commands/doctor.d.ts +61 -0
  87. package/dist/commands/doctor.d.ts.map +1 -0
  88. package/dist/commands/doctor.js +522 -0
  89. package/dist/commands/doctor.js.map +1 -0
  90. package/dist/commands/embeddings.d.ts +40 -0
  91. package/dist/commands/embeddings.d.ts.map +1 -0
  92. package/dist/commands/embeddings.js +317 -0
  93. package/dist/commands/embeddings.js.map +1 -0
  94. package/dist/commands/enno.d.ts +7 -0
  95. package/dist/commands/enno.d.ts.map +1 -0
  96. package/dist/commands/enno.js +76 -0
  97. package/dist/commands/enno.js.map +1 -0
  98. package/dist/commands/export.d.ts +17 -0
  99. package/dist/commands/export.d.ts.map +1 -0
  100. package/dist/commands/export.js +233 -0
  101. package/dist/commands/export.js.map +1 -0
  102. package/dist/commands/import.d.ts +24 -0
  103. package/dist/commands/import.d.ts.map +1 -0
  104. package/dist/commands/import.js +778 -0
  105. package/dist/commands/import.js.map +1 -0
  106. package/dist/commands/init.d.ts +34 -0
  107. package/dist/commands/init.d.ts.map +1 -0
  108. package/dist/commands/init.js +637 -0
  109. package/dist/commands/init.js.map +1 -0
  110. package/dist/commands/ledger.d.ts +7 -0
  111. package/dist/commands/ledger.d.ts.map +1 -0
  112. package/dist/commands/ledger.js +66 -0
  113. package/dist/commands/ledger.js.map +1 -0
  114. package/dist/commands/purge.d.ts +10 -0
  115. package/dist/commands/purge.d.ts.map +1 -0
  116. package/dist/commands/purge.js +29 -0
  117. package/dist/commands/purge.js.map +1 -0
  118. package/dist/commands/serve.d.ts +34 -0
  119. package/dist/commands/serve.d.ts.map +1 -0
  120. package/dist/commands/serve.js +120 -0
  121. package/dist/commands/serve.js.map +1 -0
  122. package/dist/commands/server-status.d.ts +20 -0
  123. package/dist/commands/server-status.d.ts.map +1 -0
  124. package/dist/commands/server-status.js +21 -0
  125. package/dist/commands/server-status.js.map +1 -0
  126. package/dist/commands/server.d.ts +13 -0
  127. package/dist/commands/server.d.ts.map +1 -0
  128. package/dist/commands/server.js +89 -0
  129. package/dist/commands/server.js.map +1 -0
  130. package/dist/commands/setup.d.ts +105 -0
  131. package/dist/commands/setup.d.ts.map +1 -0
  132. package/dist/commands/setup.js +793 -0
  133. package/dist/commands/setup.js.map +1 -0
  134. package/dist/commands/skills.d.ts +9 -0
  135. package/dist/commands/skills.d.ts.map +1 -0
  136. package/dist/commands/skills.js +317 -0
  137. package/dist/commands/skills.js.map +1 -0
  138. package/dist/commands/use.d.ts +40 -0
  139. package/dist/commands/use.d.ts.map +1 -0
  140. package/dist/commands/use.js +1090 -0
  141. package/dist/commands/use.js.map +1 -0
  142. package/dist/config/paths.d.ts +57 -0
  143. package/dist/config/paths.d.ts.map +1 -0
  144. package/dist/config/paths.js +352 -0
  145. package/dist/config/paths.js.map +1 -0
  146. package/dist/config/project-config.d.ts +11 -0
  147. package/dist/config/project-config.d.ts.map +1 -0
  148. package/dist/config/project-config.js +97 -0
  149. package/dist/config/project-config.js.map +1 -0
  150. package/dist/context/broker.d.ts +99 -0
  151. package/dist/context/broker.d.ts.map +1 -0
  152. package/dist/context/broker.js +923 -0
  153. package/dist/context/broker.js.map +1 -0
  154. package/dist/context/delivery-migration.d.ts +40 -0
  155. package/dist/context/delivery-migration.d.ts.map +1 -0
  156. package/dist/context/delivery-migration.js +367 -0
  157. package/dist/context/delivery-migration.js.map +1 -0
  158. package/dist/context/delivery.d.ts +61 -0
  159. package/dist/context/delivery.d.ts.map +1 -0
  160. package/dist/context/delivery.js +886 -0
  161. package/dist/context/delivery.js.map +1 -0
  162. package/dist/context/feedback.d.ts +73 -0
  163. package/dist/context/feedback.d.ts.map +1 -0
  164. package/dist/context/feedback.js +993 -0
  165. package/dist/context/feedback.js.map +1 -0
  166. package/dist/context/nudge-store.d.ts +57 -0
  167. package/dist/context/nudge-store.d.ts.map +1 -0
  168. package/dist/context/nudge-store.js +227 -0
  169. package/dist/context/nudge-store.js.map +1 -0
  170. package/dist/context/nudge-validation.d.ts +26 -0
  171. package/dist/context/nudge-validation.d.ts.map +1 -0
  172. package/dist/context/nudge-validation.js +122 -0
  173. package/dist/context/nudge-validation.js.map +1 -0
  174. package/dist/context/nudges.d.ts +38 -0
  175. package/dist/context/nudges.d.ts.map +1 -0
  176. package/dist/context/nudges.js +131 -0
  177. package/dist/context/nudges.js.map +1 -0
  178. package/dist/context/origin.d.ts +9 -0
  179. package/dist/context/origin.d.ts.map +1 -0
  180. package/dist/context/origin.js +15 -0
  181. package/dist/context/origin.js.map +1 -0
  182. package/dist/context/ranking.d.ts +92 -0
  183. package/dist/context/ranking.d.ts.map +1 -0
  184. package/dist/context/ranking.js +560 -0
  185. package/dist/context/ranking.js.map +1 -0
  186. package/dist/context/recommendations.d.ts +80 -0
  187. package/dist/context/recommendations.d.ts.map +1 -0
  188. package/dist/context/recommendations.js +341 -0
  189. package/dist/context/recommendations.js.map +1 -0
  190. package/dist/context/run-state.d.ts +26 -0
  191. package/dist/context/run-state.d.ts.map +1 -0
  192. package/dist/context/run-state.js +399 -0
  193. package/dist/context/run-state.js.map +1 -0
  194. package/dist/context/scoped-broker.d.ts +77 -0
  195. package/dist/context/scoped-broker.d.ts.map +1 -0
  196. package/dist/context/scoped-broker.js +690 -0
  197. package/dist/context/scoped-broker.js.map +1 -0
  198. package/dist/context/selection-state.d.ts +32 -0
  199. package/dist/context/selection-state.d.ts.map +1 -0
  200. package/dist/context/selection-state.js +369 -0
  201. package/dist/context/selection-state.js.map +1 -0
  202. package/dist/db/adapter.d.ts +27 -0
  203. package/dist/db/adapter.d.ts.map +1 -0
  204. package/dist/db/adapter.js +41 -0
  205. package/dist/db/adapter.js.map +1 -0
  206. package/dist/db/capabilities.d.ts +21 -0
  207. package/dist/db/capabilities.d.ts.map +1 -0
  208. package/dist/db/capabilities.js +57 -0
  209. package/dist/db/capabilities.js.map +1 -0
  210. package/dist/db/connection.d.ts +21 -0
  211. package/dist/db/connection.d.ts.map +1 -0
  212. package/dist/db/connection.js +129 -0
  213. package/dist/db/connection.js.map +1 -0
  214. package/dist/db/migrate.d.ts +40 -0
  215. package/dist/db/migrate.d.ts.map +1 -0
  216. package/dist/db/migrate.js +216 -0
  217. package/dist/db/migrate.js.map +1 -0
  218. package/dist/db/sqlite-retry.d.ts +11 -0
  219. package/dist/db/sqlite-retry.d.ts.map +1 -0
  220. package/dist/db/sqlite-retry.js +70 -0
  221. package/dist/db/sqlite-retry.js.map +1 -0
  222. package/dist/db/transaction.d.ts +17 -0
  223. package/dist/db/transaction.d.ts.map +1 -0
  224. package/dist/db/transaction.js +68 -0
  225. package/dist/db/transaction.js.map +1 -0
  226. package/dist/db/upgrade-backup.d.ts +59 -0
  227. package/dist/db/upgrade-backup.d.ts.map +1 -0
  228. package/dist/db/upgrade-backup.js +773 -0
  229. package/dist/db/upgrade-backup.js.map +1 -0
  230. package/dist/dsh/advisory-runner.d.ts +32 -0
  231. package/dist/dsh/advisory-runner.d.ts.map +1 -0
  232. package/dist/dsh/advisory-runner.js +111 -0
  233. package/dist/dsh/advisory-runner.js.map +1 -0
  234. package/dist/dsh/agent-state.d.ts +49 -0
  235. package/dist/dsh/agent-state.d.ts.map +1 -0
  236. package/dist/dsh/agent-state.js +103 -0
  237. package/dist/dsh/agent-state.js.map +1 -0
  238. package/dist/dsh/capability-catalog.d.ts +24 -0
  239. package/dist/dsh/capability-catalog.d.ts.map +1 -0
  240. package/dist/dsh/capability-catalog.js +108 -0
  241. package/dist/dsh/capability-catalog.js.map +1 -0
  242. package/dist/dsh/commands.d.ts +43 -0
  243. package/dist/dsh/commands.d.ts.map +1 -0
  244. package/dist/dsh/commands.js +83 -0
  245. package/dist/dsh/commands.js.map +1 -0
  246. package/dist/dsh/composition.d.ts +64 -0
  247. package/dist/dsh/composition.d.ts.map +1 -0
  248. package/dist/dsh/composition.js +104 -0
  249. package/dist/dsh/composition.js.map +1 -0
  250. package/dist/dsh/config.d.ts +7 -0
  251. package/dist/dsh/config.d.ts.map +1 -0
  252. package/dist/dsh/config.js +6 -0
  253. package/dist/dsh/config.js.map +1 -0
  254. package/dist/dsh/context-injection.d.ts +24 -0
  255. package/dist/dsh/context-injection.d.ts.map +1 -0
  256. package/dist/dsh/context-injection.js +61 -0
  257. package/dist/dsh/context-injection.js.map +1 -0
  258. package/dist/dsh/enno-controller.d.ts +94 -0
  259. package/dist/dsh/enno-controller.d.ts.map +1 -0
  260. package/dist/dsh/enno-controller.js +137 -0
  261. package/dist/dsh/enno-controller.js.map +1 -0
  262. package/dist/dsh/index.d.ts +31 -0
  263. package/dist/dsh/index.d.ts.map +1 -0
  264. package/dist/dsh/index.js +52 -0
  265. package/dist/dsh/index.js.map +1 -0
  266. package/dist/dsh/intake-gate.d.ts +50 -0
  267. package/dist/dsh/intake-gate.d.ts.map +1 -0
  268. package/dist/dsh/intake-gate.js +77 -0
  269. package/dist/dsh/intake-gate.js.map +1 -0
  270. package/dist/dsh/intake-profile-resolver.d.ts +22 -0
  271. package/dist/dsh/intake-profile-resolver.d.ts.map +1 -0
  272. package/dist/dsh/intake-profile-resolver.js +44 -0
  273. package/dist/dsh/intake-profile-resolver.js.map +1 -0
  274. package/dist/dsh/message-sources.d.ts +28 -0
  275. package/dist/dsh/message-sources.d.ts.map +1 -0
  276. package/dist/dsh/message-sources.js +62 -0
  277. package/dist/dsh/message-sources.js.map +1 -0
  278. package/dist/dsh/parity.d.ts +18 -0
  279. package/dist/dsh/parity.d.ts.map +1 -0
  280. package/dist/dsh/parity.js +105 -0
  281. package/dist/dsh/parity.js.map +1 -0
  282. package/dist/dsh/prompt-policy.d.ts +18 -0
  283. package/dist/dsh/prompt-policy.d.ts.map +1 -0
  284. package/dist/dsh/prompt-policy.js +16 -0
  285. package/dist/dsh/prompt-policy.js.map +1 -0
  286. package/dist/dsh/runtime.d.ts +40 -0
  287. package/dist/dsh/runtime.d.ts.map +1 -0
  288. package/dist/dsh/runtime.js +237 -0
  289. package/dist/dsh/runtime.js.map +1 -0
  290. package/dist/dsh/session-bridge.d.ts +98 -0
  291. package/dist/dsh/session-bridge.d.ts.map +1 -0
  292. package/dist/dsh/session-bridge.js +202 -0
  293. package/dist/dsh/session-bridge.js.map +1 -0
  294. package/dist/dsh/standard-skill-provider.d.ts +50 -0
  295. package/dist/dsh/standard-skill-provider.d.ts.map +1 -0
  296. package/dist/dsh/standard-skill-provider.js +71 -0
  297. package/dist/dsh/standard-skill-provider.js.map +1 -0
  298. package/dist/dsh/tool-policy.d.ts +40 -0
  299. package/dist/dsh/tool-policy.d.ts.map +1 -0
  300. package/dist/dsh/tool-policy.js +125 -0
  301. package/dist/dsh/tool-policy.js.map +1 -0
  302. package/dist/dsh/tools.d.ts +85 -0
  303. package/dist/dsh/tools.d.ts.map +1 -0
  304. package/dist/dsh/tools.js +156 -0
  305. package/dist/dsh/tools.js.map +1 -0
  306. package/dist/dsh/user-interaction.d.ts +51 -0
  307. package/dist/dsh/user-interaction.d.ts.map +1 -0
  308. package/dist/dsh/user-interaction.js +92 -0
  309. package/dist/dsh/user-interaction.js.map +1 -0
  310. package/dist/embedding/backend.d.ts +27 -0
  311. package/dist/embedding/backend.d.ts.map +1 -0
  312. package/dist/embedding/backend.js +67 -0
  313. package/dist/embedding/backend.js.map +1 -0
  314. package/dist/embedding/config.d.ts +10 -0
  315. package/dist/embedding/config.d.ts.map +1 -0
  316. package/dist/embedding/config.js +142 -0
  317. package/dist/embedding/config.js.map +1 -0
  318. package/dist/embedding/diagnostics.d.ts +34 -0
  319. package/dist/embedding/diagnostics.d.ts.map +1 -0
  320. package/dist/embedding/diagnostics.js +274 -0
  321. package/dist/embedding/diagnostics.js.map +1 -0
  322. package/dist/embedding/document.d.ts +20 -0
  323. package/dist/embedding/document.d.ts.map +1 -0
  324. package/dist/embedding/document.js +122 -0
  325. package/dist/embedding/document.js.map +1 -0
  326. package/dist/embedding/javascript-backend.d.ts +11 -0
  327. package/dist/embedding/javascript-backend.d.ts.map +1 -0
  328. package/dist/embedding/javascript-backend.js +164 -0
  329. package/dist/embedding/javascript-backend.js.map +1 -0
  330. package/dist/embedding/jobs.d.ts +67 -0
  331. package/dist/embedding/jobs.d.ts.map +1 -0
  332. package/dist/embedding/jobs.js +259 -0
  333. package/dist/embedding/jobs.js.map +1 -0
  334. package/dist/embedding/local-model-loader.d.ts +24 -0
  335. package/dist/embedding/local-model-loader.d.ts.map +1 -0
  336. package/dist/embedding/local-model-loader.js +64 -0
  337. package/dist/embedding/local-model-loader.js.map +1 -0
  338. package/dist/embedding/local-transformers-provider.d.ts +17 -0
  339. package/dist/embedding/local-transformers-provider.d.ts.map +1 -0
  340. package/dist/embedding/local-transformers-provider.js +54 -0
  341. package/dist/embedding/local-transformers-provider.js.map +1 -0
  342. package/dist/embedding/model-download.d.ts +32 -0
  343. package/dist/embedding/model-download.d.ts.map +1 -0
  344. package/dist/embedding/model-download.js +41 -0
  345. package/dist/embedding/model-download.js.map +1 -0
  346. package/dist/embedding/model-installation.d.ts +17 -0
  347. package/dist/embedding/model-installation.d.ts.map +1 -0
  348. package/dist/embedding/model-installation.js +71 -0
  349. package/dist/embedding/model-installation.js.map +1 -0
  350. package/dist/embedding/model-manifest.d.ts +18 -0
  351. package/dist/embedding/model-manifest.d.ts.map +1 -0
  352. package/dist/embedding/model-manifest.js +86 -0
  353. package/dist/embedding/model-manifest.js.map +1 -0
  354. package/dist/embedding/openai-compatible-provider.d.ts +24 -0
  355. package/dist/embedding/openai-compatible-provider.d.ts.map +1 -0
  356. package/dist/embedding/openai-compatible-provider.js +330 -0
  357. package/dist/embedding/openai-compatible-provider.js.map +1 -0
  358. package/dist/embedding/presets/local-small.d.ts +8 -0
  359. package/dist/embedding/presets/local-small.d.ts.map +1 -0
  360. package/dist/embedding/presets/local-small.js +67 -0
  361. package/dist/embedding/presets/local-small.js.map +1 -0
  362. package/dist/embedding/presets/manifest.d.ts +27 -0
  363. package/dist/embedding/presets/manifest.d.ts.map +1 -0
  364. package/dist/embedding/presets/manifest.js +5 -0
  365. package/dist/embedding/presets/manifest.js.map +1 -0
  366. package/dist/embedding/profile.d.ts +10 -0
  367. package/dist/embedding/profile.d.ts.map +1 -0
  368. package/dist/embedding/profile.js +67 -0
  369. package/dist/embedding/profile.js.map +1 -0
  370. package/dist/embedding/provider.d.ts +13 -0
  371. package/dist/embedding/provider.d.ts.map +1 -0
  372. package/dist/embedding/provider.js +17 -0
  373. package/dist/embedding/provider.js.map +1 -0
  374. package/dist/embedding/query-cache.d.ts +45 -0
  375. package/dist/embedding/query-cache.d.ts.map +1 -0
  376. package/dist/embedding/query-cache.js +181 -0
  377. package/dist/embedding/query-cache.js.map +1 -0
  378. package/dist/embedding/runtime.d.ts +14 -0
  379. package/dist/embedding/runtime.d.ts.map +1 -0
  380. package/dist/embedding/runtime.js +407 -0
  381. package/dist/embedding/runtime.js.map +1 -0
  382. package/dist/embedding/settings.d.ts +6 -0
  383. package/dist/embedding/settings.d.ts.map +1 -0
  384. package/dist/embedding/settings.js +69 -0
  385. package/dist/embedding/settings.js.map +1 -0
  386. package/dist/embedding/setup-lock.d.ts +7 -0
  387. package/dist/embedding/setup-lock.d.ts.map +1 -0
  388. package/dist/embedding/setup-lock.js +35 -0
  389. package/dist/embedding/setup-lock.js.map +1 -0
  390. package/dist/embedding/setup-service.d.ts +53 -0
  391. package/dist/embedding/setup-service.d.ts.map +1 -0
  392. package/dist/embedding/setup-service.js +184 -0
  393. package/dist/embedding/setup-service.js.map +1 -0
  394. package/dist/embedding/sqlite-vec-backend.d.ts +9 -0
  395. package/dist/embedding/sqlite-vec-backend.d.ts.map +1 -0
  396. package/dist/embedding/sqlite-vec-backend.js +106 -0
  397. package/dist/embedding/sqlite-vec-backend.js.map +1 -0
  398. package/dist/embedding/sqlite-vec-loader.d.ts +17 -0
  399. package/dist/embedding/sqlite-vec-loader.d.ts.map +1 -0
  400. package/dist/embedding/sqlite-vec-loader.js +51 -0
  401. package/dist/embedding/sqlite-vec-loader.js.map +1 -0
  402. package/dist/embedding/store.d.ts +66 -0
  403. package/dist/embedding/store.d.ts.map +1 -0
  404. package/dist/embedding/store.js +490 -0
  405. package/dist/embedding/store.js.map +1 -0
  406. package/dist/embedding/types.d.ts +126 -0
  407. package/dist/embedding/types.d.ts.map +1 -0
  408. package/dist/embedding/types.js +2 -0
  409. package/dist/embedding/types.js.map +1 -0
  410. package/dist/embedding/vector.d.ts +9 -0
  411. package/dist/embedding/vector.d.ts.map +1 -0
  412. package/dist/embedding/vector.js +90 -0
  413. package/dist/embedding/vector.js.map +1 -0
  414. package/dist/embedding/worker.d.ts +23 -0
  415. package/dist/embedding/worker.d.ts.map +1 -0
  416. package/dist/embedding/worker.js +84 -0
  417. package/dist/embedding/worker.js.map +1 -0
  418. package/dist/enno-oduno/adapters.d.ts +21 -0
  419. package/dist/enno-oduno/adapters.d.ts.map +1 -0
  420. package/dist/enno-oduno/adapters.js +253 -0
  421. package/dist/enno-oduno/adapters.js.map +1 -0
  422. package/dist/enno-oduno/advisory-store.d.ts +31 -0
  423. package/dist/enno-oduno/advisory-store.d.ts.map +1 -0
  424. package/dist/enno-oduno/advisory-store.js +105 -0
  425. package/dist/enno-oduno/advisory-store.js.map +1 -0
  426. package/dist/enno-oduno/advisory.d.ts +18 -0
  427. package/dist/enno-oduno/advisory.d.ts.map +1 -0
  428. package/dist/enno-oduno/advisory.js +310 -0
  429. package/dist/enno-oduno/advisory.js.map +1 -0
  430. package/dist/enno-oduno/confirmation.d.ts +4 -0
  431. package/dist/enno-oduno/confirmation.d.ts.map +1 -0
  432. package/dist/enno-oduno/confirmation.js +127 -0
  433. package/dist/enno-oduno/confirmation.js.map +1 -0
  434. package/dist/enno-oduno/directives.d.ts +12 -0
  435. package/dist/enno-oduno/directives.d.ts.map +1 -0
  436. package/dist/enno-oduno/directives.js +276 -0
  437. package/dist/enno-oduno/directives.js.map +1 -0
  438. package/dist/enno-oduno/enno-oduno.d.mts +2 -0
  439. package/dist/enno-oduno/enno-oduno.d.mts.map +1 -0
  440. package/dist/enno-oduno/enno-oduno.mjs +3 -0
  441. package/dist/enno-oduno/enno-oduno.mjs.map +1 -0
  442. package/dist/enno-oduno/experts.d.ts +6 -0
  443. package/dist/enno-oduno/experts.d.ts.map +1 -0
  444. package/dist/enno-oduno/experts.js +32 -0
  445. package/dist/enno-oduno/experts.js.map +1 -0
  446. package/dist/enno-oduno/goki.d.mts +2 -0
  447. package/dist/enno-oduno/goki.d.mts.map +1 -0
  448. package/dist/enno-oduno/goki.mjs +3 -0
  449. package/dist/enno-oduno/goki.mjs.map +1 -0
  450. package/dist/enno-oduno/handoff.d.ts +4 -0
  451. package/dist/enno-oduno/handoff.d.ts.map +1 -0
  452. package/dist/enno-oduno/handoff.js +18 -0
  453. package/dist/enno-oduno/handoff.js.map +1 -0
  454. package/dist/enno-oduno/harness.d.ts +20 -0
  455. package/dist/enno-oduno/harness.d.ts.map +1 -0
  456. package/dist/enno-oduno/harness.js +66 -0
  457. package/dist/enno-oduno/harness.js.map +1 -0
  458. package/dist/enno-oduno/instructions.d.ts +9 -0
  459. package/dist/enno-oduno/instructions.d.ts.map +1 -0
  460. package/dist/enno-oduno/instructions.js +12 -0
  461. package/dist/enno-oduno/instructions.js.map +1 -0
  462. package/dist/enno-oduno/plan-recovery.d.ts +44 -0
  463. package/dist/enno-oduno/plan-recovery.d.ts.map +1 -0
  464. package/dist/enno-oduno/plan-recovery.js +160 -0
  465. package/dist/enno-oduno/plan-recovery.js.map +1 -0
  466. package/dist/enno-oduno/repository-state.d.ts +8 -0
  467. package/dist/enno-oduno/repository-state.d.ts.map +1 -0
  468. package/dist/enno-oduno/repository-state.js +139 -0
  469. package/dist/enno-oduno/repository-state.js.map +1 -0
  470. package/dist/enno-oduno/role-runner.d.ts +9 -0
  471. package/dist/enno-oduno/role-runner.d.ts.map +1 -0
  472. package/dist/enno-oduno/role-runner.js +219 -0
  473. package/dist/enno-oduno/role-runner.js.map +1 -0
  474. package/dist/enno-oduno/sanitize.d.ts +17 -0
  475. package/dist/enno-oduno/sanitize.d.ts.map +1 -0
  476. package/dist/enno-oduno/sanitize.js +88 -0
  477. package/dist/enno-oduno/sanitize.js.map +1 -0
  478. package/dist/enno-oduno/schemas.d.ts +962 -0
  479. package/dist/enno-oduno/schemas.d.ts.map +1 -0
  480. package/dist/enno-oduno/schemas.js +609 -0
  481. package/dist/enno-oduno/schemas.js.map +1 -0
  482. package/dist/enno-oduno/service.d.ts +57 -0
  483. package/dist/enno-oduno/service.d.ts.map +1 -0
  484. package/dist/enno-oduno/service.js +1379 -0
  485. package/dist/enno-oduno/service.js.map +1 -0
  486. package/dist/enno-oduno/skills.d.ts +22 -0
  487. package/dist/enno-oduno/skills.d.ts.map +1 -0
  488. package/dist/enno-oduno/skills.js +127 -0
  489. package/dist/enno-oduno/skills.js.map +1 -0
  490. package/dist/enno-oduno/store.d.ts +106 -0
  491. package/dist/enno-oduno/store.d.ts.map +1 -0
  492. package/dist/enno-oduno/store.js +712 -0
  493. package/dist/enno-oduno/store.js.map +1 -0
  494. package/dist/enno-oduno/types.d.ts +457 -0
  495. package/dist/enno-oduno/types.d.ts.map +1 -0
  496. package/dist/enno-oduno/types.js +66 -0
  497. package/dist/enno-oduno/types.js.map +1 -0
  498. package/dist/enno-oduno/validation-errors.d.ts +93 -0
  499. package/dist/enno-oduno/validation-errors.d.ts.map +1 -0
  500. package/dist/enno-oduno/validation-errors.js +152 -0
  501. package/dist/enno-oduno/validation-errors.js.map +1 -0
  502. package/dist/enno-oduno/verifier.d.ts +10 -0
  503. package/dist/enno-oduno/verifier.d.ts.map +1 -0
  504. package/dist/enno-oduno/verifier.js +214 -0
  505. package/dist/enno-oduno/verifier.js.map +1 -0
  506. package/dist/enno-oduno/zenki.d.mts +2 -0
  507. package/dist/enno-oduno/zenki.d.mts.map +1 -0
  508. package/dist/enno-oduno/zenki.mjs +3 -0
  509. package/dist/enno-oduno/zenki.mjs.map +1 -0
  510. package/dist/errors.d.ts +13 -0
  511. package/dist/errors.d.ts.map +1 -0
  512. package/dist/errors.js +60 -0
  513. package/dist/errors.js.map +1 -0
  514. package/dist/gateway/agent-service.d.ts +72 -0
  515. package/dist/gateway/agent-service.d.ts.map +1 -0
  516. package/dist/gateway/agent-service.js +594 -0
  517. package/dist/gateway/agent-service.js.map +1 -0
  518. package/dist/gateway/checkpoint-mutation-service.d.ts +33 -0
  519. package/dist/gateway/checkpoint-mutation-service.d.ts.map +1 -0
  520. package/dist/gateway/checkpoint-mutation-service.js +513 -0
  521. package/dist/gateway/checkpoint-mutation-service.js.map +1 -0
  522. package/dist/gateway/checkpoint-service.d.ts +40 -0
  523. package/dist/gateway/checkpoint-service.d.ts.map +1 -0
  524. package/dist/gateway/checkpoint-service.js +149 -0
  525. package/dist/gateway/checkpoint-service.js.map +1 -0
  526. package/dist/gateway/nudge-delivery-service.d.ts +21 -0
  527. package/dist/gateway/nudge-delivery-service.d.ts.map +1 -0
  528. package/dist/gateway/nudge-delivery-service.js +67 -0
  529. package/dist/gateway/nudge-delivery-service.js.map +1 -0
  530. package/dist/ledger/archive.d.ts +48 -0
  531. package/dist/ledger/archive.d.ts.map +1 -0
  532. package/dist/ledger/archive.js +1261 -0
  533. package/dist/ledger/archive.js.map +1 -0
  534. package/dist/ledger/checkpoint-contract.d.ts +144 -0
  535. package/dist/ledger/checkpoint-contract.d.ts.map +1 -0
  536. package/dist/ledger/checkpoint-contract.js +91 -0
  537. package/dist/ledger/checkpoint-contract.js.map +1 -0
  538. package/dist/ledger/checkpoint-eligibility.d.ts +17 -0
  539. package/dist/ledger/checkpoint-eligibility.d.ts.map +1 -0
  540. package/dist/ledger/checkpoint-eligibility.js +19 -0
  541. package/dist/ledger/checkpoint-eligibility.js.map +1 -0
  542. package/dist/ledger/hash.d.ts +22 -0
  543. package/dist/ledger/hash.d.ts.map +1 -0
  544. package/dist/ledger/hash.js +25 -0
  545. package/dist/ledger/hash.js.map +1 -0
  546. package/dist/ledger/maintenance.d.ts +68 -0
  547. package/dist/ledger/maintenance.d.ts.map +1 -0
  548. package/dist/ledger/maintenance.js +767 -0
  549. package/dist/ledger/maintenance.js.map +1 -0
  550. package/dist/ledger/projection.d.ts +38 -0
  551. package/dist/ledger/projection.d.ts.map +1 -0
  552. package/dist/ledger/projection.js +315 -0
  553. package/dist/ledger/projection.js.map +1 -0
  554. package/dist/ledger/promotion.d.ts +19 -0
  555. package/dist/ledger/promotion.d.ts.map +1 -0
  556. package/dist/ledger/promotion.js +310 -0
  557. package/dist/ledger/promotion.js.map +1 -0
  558. package/dist/ledger/query.d.ts +41 -0
  559. package/dist/ledger/query.d.ts.map +1 -0
  560. package/dist/ledger/query.js +321 -0
  561. package/dist/ledger/query.js.map +1 -0
  562. package/dist/ledger/redaction.d.ts +8 -0
  563. package/dist/ledger/redaction.d.ts.map +1 -0
  564. package/dist/ledger/redaction.js +40 -0
  565. package/dist/ledger/redaction.js.map +1 -0
  566. package/dist/ledger/store.d.ts +45 -0
  567. package/dist/ledger/store.d.ts.map +1 -0
  568. package/dist/ledger/store.js +327 -0
  569. package/dist/ledger/store.js.map +1 -0
  570. package/dist/ledger/types.d.ts +115 -0
  571. package/dist/ledger/types.d.ts.map +1 -0
  572. package/dist/ledger/types.js +27 -0
  573. package/dist/ledger/types.js.map +1 -0
  574. package/dist/ledger/validate.d.ts +10 -0
  575. package/dist/ledger/validate.d.ts.map +1 -0
  576. package/dist/ledger/validate.js +178 -0
  577. package/dist/ledger/validate.js.map +1 -0
  578. package/dist/mcp/bounded-stdio-transport.d.ts +26 -0
  579. package/dist/mcp/bounded-stdio-transport.d.ts.map +1 -0
  580. package/dist/mcp/bounded-stdio-transport.js +121 -0
  581. package/dist/mcp/bounded-stdio-transport.js.map +1 -0
  582. package/dist/mcp/request-deadline.d.ts +51 -0
  583. package/dist/mcp/request-deadline.d.ts.map +1 -0
  584. package/dist/mcp/request-deadline.js +155 -0
  585. package/dist/mcp/request-deadline.js.map +1 -0
  586. package/dist/mcp/runtime-owner.d.ts +27 -0
  587. package/dist/mcp/runtime-owner.d.ts.map +1 -0
  588. package/dist/mcp/runtime-owner.js +129 -0
  589. package/dist/mcp/runtime-owner.js.map +1 -0
  590. package/dist/mcp/server.d.ts +24 -0
  591. package/dist/mcp/server.d.ts.map +1 -0
  592. package/dist/mcp/server.js +502 -0
  593. package/dist/mcp/server.js.map +1 -0
  594. package/dist/memory/audit.d.ts +13 -0
  595. package/dist/memory/audit.d.ts.map +1 -0
  596. package/dist/memory/audit.js +15 -0
  597. package/dist/memory/audit.js.map +1 -0
  598. package/dist/memory/checkpoint-contract.d.ts +490 -0
  599. package/dist/memory/checkpoint-contract.d.ts.map +1 -0
  600. package/dist/memory/checkpoint-contract.js +106 -0
  601. package/dist/memory/checkpoint-contract.js.map +1 -0
  602. package/dist/memory/curator-trust.d.ts +15 -0
  603. package/dist/memory/curator-trust.d.ts.map +1 -0
  604. package/dist/memory/curator-trust.js +58 -0
  605. package/dist/memory/curator-trust.js.map +1 -0
  606. package/dist/memory/curator.d.ts +115 -0
  607. package/dist/memory/curator.d.ts.map +1 -0
  608. package/dist/memory/curator.js +706 -0
  609. package/dist/memory/curator.js.map +1 -0
  610. package/dist/memory/entries.d.ts +75 -0
  611. package/dist/memory/entries.d.ts.map +1 -0
  612. package/dist/memory/entries.js +355 -0
  613. package/dist/memory/entries.js.map +1 -0
  614. package/dist/memory/federated-retrieval.d.ts +79 -0
  615. package/dist/memory/federated-retrieval.d.ts.map +1 -0
  616. package/dist/memory/federated-retrieval.js +515 -0
  617. package/dist/memory/federated-retrieval.js.map +1 -0
  618. package/dist/memory/hybrid-retrieval.d.ts +33 -0
  619. package/dist/memory/hybrid-retrieval.d.ts.map +1 -0
  620. package/dist/memory/hybrid-retrieval.js +398 -0
  621. package/dist/memory/hybrid-retrieval.js.map +1 -0
  622. package/dist/memory/lifecycle.d.ts +29 -0
  623. package/dist/memory/lifecycle.d.ts.map +1 -0
  624. package/dist/memory/lifecycle.js +65 -0
  625. package/dist/memory/lifecycle.js.map +1 -0
  626. package/dist/memory/portability.d.ts +10 -0
  627. package/dist/memory/portability.d.ts.map +1 -0
  628. package/dist/memory/portability.js +44 -0
  629. package/dist/memory/portability.js.map +1 -0
  630. package/dist/memory/rebuild-search.d.ts +24 -0
  631. package/dist/memory/rebuild-search.d.ts.map +1 -0
  632. package/dist/memory/rebuild-search.js +167 -0
  633. package/dist/memory/rebuild-search.js.map +1 -0
  634. package/dist/memory/retrieval-query.d.ts +16 -0
  635. package/dist/memory/retrieval-query.d.ts.map +1 -0
  636. package/dist/memory/retrieval-query.js +161 -0
  637. package/dist/memory/retrieval-query.js.map +1 -0
  638. package/dist/memory/retrieval.d.ts +56 -0
  639. package/dist/memory/retrieval.d.ts.map +1 -0
  640. package/dist/memory/retrieval.js +101 -0
  641. package/dist/memory/retrieval.js.map +1 -0
  642. package/dist/memory/revisions.d.ts +123 -0
  643. package/dist/memory/revisions.d.ts.map +1 -0
  644. package/dist/memory/revisions.js +759 -0
  645. package/dist/memory/revisions.js.map +1 -0
  646. package/dist/memory/scoped-memory.d.ts +76 -0
  647. package/dist/memory/scoped-memory.d.ts.map +1 -0
  648. package/dist/memory/scoped-memory.js +539 -0
  649. package/dist/memory/scoped-memory.js.map +1 -0
  650. package/dist/memory/secrets.d.ts +8 -0
  651. package/dist/memory/secrets.d.ts.map +1 -0
  652. package/dist/memory/secrets.js +54 -0
  653. package/dist/memory/secrets.js.map +1 -0
  654. package/dist/memory/structured-memory.d.ts +60 -0
  655. package/dist/memory/structured-memory.d.ts.map +1 -0
  656. package/dist/memory/structured-memory.js +341 -0
  657. package/dist/memory/structured-memory.js.map +1 -0
  658. package/dist/memory/workspaces.d.ts +26 -0
  659. package/dist/memory/workspaces.d.ts.map +1 -0
  660. package/dist/memory/workspaces.js +159 -0
  661. package/dist/memory/workspaces.js.map +1 -0
  662. package/dist/model-tools/contracts.d.ts +1297 -0
  663. package/dist/model-tools/contracts.d.ts.map +1 -0
  664. package/dist/model-tools/contracts.js +104 -0
  665. package/dist/model-tools/contracts.js.map +1 -0
  666. package/dist/model-tools/registry.d.ts +8 -0
  667. package/dist/model-tools/registry.d.ts.map +1 -0
  668. package/dist/model-tools/registry.js +59 -0
  669. package/dist/model-tools/registry.js.map +1 -0
  670. package/dist/package-version.d.ts +2 -0
  671. package/dist/package-version.d.ts.map +1 -0
  672. package/dist/package-version.js +7 -0
  673. package/dist/package-version.js.map +1 -0
  674. package/dist/repository/binding.d.ts +32 -0
  675. package/dist/repository/binding.d.ts.map +1 -0
  676. package/dist/repository/binding.js +208 -0
  677. package/dist/repository/binding.js.map +1 -0
  678. package/dist/repository/cwd-schema.d.ts +4 -0
  679. package/dist/repository/cwd-schema.d.ts.map +1 -0
  680. package/dist/repository/cwd-schema.js +8 -0
  681. package/dist/repository/cwd-schema.js.map +1 -0
  682. package/dist/repository/detect-root.d.ts +13 -0
  683. package/dist/repository/detect-root.d.ts.map +1 -0
  684. package/dist/repository/detect-root.js +77 -0
  685. package/dist/repository/detect-root.js.map +1 -0
  686. package/dist/repository/framework-version.d.ts +8 -0
  687. package/dist/repository/framework-version.d.ts.map +1 -0
  688. package/dist/repository/framework-version.js +29 -0
  689. package/dist/repository/framework-version.js.map +1 -0
  690. package/dist/repository/git-origin.d.ts +2 -0
  691. package/dist/repository/git-origin.d.ts.map +1 -0
  692. package/dist/repository/git-origin.js +15 -0
  693. package/dist/repository/git-origin.js.map +1 -0
  694. package/dist/repository/gitignore.d.ts +8 -0
  695. package/dist/repository/gitignore.d.ts.map +1 -0
  696. package/dist/repository/gitignore.js +21 -0
  697. package/dist/repository/gitignore.js.map +1 -0
  698. package/dist/repository/identity-value.d.ts +4 -0
  699. package/dist/repository/identity-value.d.ts.map +1 -0
  700. package/dist/repository/identity-value.js +24 -0
  701. package/dist/repository/identity-value.js.map +1 -0
  702. package/dist/repository/identity.d.ts +19 -0
  703. package/dist/repository/identity.d.ts.map +1 -0
  704. package/dist/repository/identity.js +25 -0
  705. package/dist/repository/identity.js.map +1 -0
  706. package/dist/repository/project-fingerprint.d.ts +33 -0
  707. package/dist/repository/project-fingerprint.d.ts.map +1 -0
  708. package/dist/repository/project-fingerprint.js +429 -0
  709. package/dist/repository/project-fingerprint.js.map +1 -0
  710. package/dist/repository/remote-url.d.ts +3 -0
  711. package/dist/repository/remote-url.d.ts.map +1 -0
  712. package/dist/repository/remote-url.js +35 -0
  713. package/dist/repository/remote-url.js.map +1 -0
  714. package/dist/runtime-version.d.ts +6 -0
  715. package/dist/runtime-version.d.ts.map +1 -0
  716. package/dist/runtime-version.js +33 -0
  717. package/dist/runtime-version.js.map +1 -0
  718. package/dist/security/sanitize.d.ts +4 -0
  719. package/dist/security/sanitize.d.ts.map +1 -0
  720. package/dist/security/sanitize.js +174 -0
  721. package/dist/security/sanitize.js.map +1 -0
  722. package/dist/serialization/boundary-json.d.ts +20 -0
  723. package/dist/serialization/boundary-json.d.ts.map +1 -0
  724. package/dist/serialization/boundary-json.js +129 -0
  725. package/dist/serialization/boundary-json.js.map +1 -0
  726. package/dist/serialization/envelope.d.ts +20 -0
  727. package/dist/serialization/envelope.d.ts.map +1 -0
  728. package/dist/serialization/envelope.js +11 -0
  729. package/dist/serialization/envelope.js.map +1 -0
  730. package/dist/serialization/validate.d.ts +38 -0
  731. package/dist/serialization/validate.d.ts.map +1 -0
  732. package/dist/serialization/validate.js +233 -0
  733. package/dist/serialization/validate.js.map +1 -0
  734. package/dist/server/agent-application.d.ts +6 -0
  735. package/dist/server/agent-application.d.ts.map +1 -0
  736. package/dist/server/agent-application.js +74 -0
  737. package/dist/server/agent-application.js.map +1 -0
  738. package/dist/server/agent-checkpoint-use-case.d.ts +41 -0
  739. package/dist/server/agent-checkpoint-use-case.d.ts.map +1 -0
  740. package/dist/server/agent-checkpoint-use-case.js +159 -0
  741. package/dist/server/agent-checkpoint-use-case.js.map +1 -0
  742. package/dist/server/app.d.ts +5 -0
  743. package/dist/server/app.d.ts.map +1 -0
  744. package/dist/server/app.js +87 -0
  745. package/dist/server/app.js.map +1 -0
  746. package/dist/server/auth.d.ts +2 -0
  747. package/dist/server/auth.d.ts.map +1 -0
  748. package/dist/server/auth.js +22 -0
  749. package/dist/server/auth.js.map +1 -0
  750. package/dist/server/http.d.ts +86 -0
  751. package/dist/server/http.d.ts.map +1 -0
  752. package/dist/server/http.js +455 -0
  753. package/dist/server/http.js.map +1 -0
  754. package/dist/server/idempotency.d.ts +6 -0
  755. package/dist/server/idempotency.d.ts.map +1 -0
  756. package/dist/server/idempotency.js +210 -0
  757. package/dist/server/idempotency.js.map +1 -0
  758. package/dist/server/instance-lock.d.ts +17 -0
  759. package/dist/server/instance-lock.d.ts.map +1 -0
  760. package/dist/server/instance-lock.js +118 -0
  761. package/dist/server/instance-lock.js.map +1 -0
  762. package/dist/server/router.d.ts +29 -0
  763. package/dist/server/router.d.ts.map +1 -0
  764. package/dist/server/router.js +129 -0
  765. package/dist/server/router.js.map +1 -0
  766. package/dist/server/routes/agent-capability-gate.d.ts +43 -0
  767. package/dist/server/routes/agent-capability-gate.d.ts.map +1 -0
  768. package/dist/server/routes/agent-capability-gate.js +202 -0
  769. package/dist/server/routes/agent-capability-gate.js.map +1 -0
  770. package/dist/server/routes/agent-events.d.ts +5 -0
  771. package/dist/server/routes/agent-events.d.ts.map +1 -0
  772. package/dist/server/routes/agent-events.js +53 -0
  773. package/dist/server/routes/agent-events.js.map +1 -0
  774. package/dist/server/routes/agent-intake.d.ts +5 -0
  775. package/dist/server/routes/agent-intake.d.ts.map +1 -0
  776. package/dist/server/routes/agent-intake.js +50 -0
  777. package/dist/server/routes/agent-intake.js.map +1 -0
  778. package/dist/server/routes/agent-promotions.d.ts +5 -0
  779. package/dist/server/routes/agent-promotions.d.ts.map +1 -0
  780. package/dist/server/routes/agent-promotions.js +55 -0
  781. package/dist/server/routes/agent-promotions.js.map +1 -0
  782. package/dist/server/routes/agent-runs.d.ts +32 -0
  783. package/dist/server/routes/agent-runs.d.ts.map +1 -0
  784. package/dist/server/routes/agent-runs.js +165 -0
  785. package/dist/server/routes/agent-runs.js.map +1 -0
  786. package/dist/server/routes/request-binding.d.ts +5 -0
  787. package/dist/server/routes/request-binding.d.ts.map +1 -0
  788. package/dist/server/routes/request-binding.js +49 -0
  789. package/dist/server/routes/request-binding.js.map +1 -0
  790. package/dist/server/routes/task5-support.d.ts +4 -0
  791. package/dist/server/routes/task5-support.d.ts.map +1 -0
  792. package/dist/server/routes/task5-support.js +6 -0
  793. package/dist/server/routes/task5-support.js.map +1 -0
  794. package/dist/server/routes/task5.d.ts +5 -0
  795. package/dist/server/routes/task5.d.ts.map +1 -0
  796. package/dist/server/routes/task5.js +85 -0
  797. package/dist/server/routes/task5.js.map +1 -0
  798. package/dist/server/runtime-descriptor.d.ts +24 -0
  799. package/dist/server/runtime-descriptor.d.ts.map +1 -0
  800. package/dist/server/runtime-descriptor.js +156 -0
  801. package/dist/server/runtime-descriptor.js.map +1 -0
  802. package/dist/server/write-queue.d.ts +20 -0
  803. package/dist/server/write-queue.d.ts.map +1 -0
  804. package/dist/server/write-queue.js +83 -0
  805. package/dist/server/write-queue.js.map +1 -0
  806. package/dist/setup/claude-config.d.ts +8 -0
  807. package/dist/setup/claude-config.d.ts.map +1 -0
  808. package/dist/setup/claude-config.js +95 -0
  809. package/dist/setup/claude-config.js.map +1 -0
  810. package/dist/setup/client-detection.d.ts +13 -0
  811. package/dist/setup/client-detection.d.ts.map +1 -0
  812. package/dist/setup/client-detection.js +64 -0
  813. package/dist/setup/client-detection.js.map +1 -0
  814. package/dist/setup/enno-client-config.d.ts +9 -0
  815. package/dist/setup/enno-client-config.d.ts.map +1 -0
  816. package/dist/setup/enno-client-config.js +172 -0
  817. package/dist/setup/enno-client-config.js.map +1 -0
  818. package/dist/setup/hermes-config.d.ts +7 -0
  819. package/dist/setup/hermes-config.d.ts.map +1 -0
  820. package/dist/setup/hermes-config.js +145 -0
  821. package/dist/setup/hermes-config.js.map +1 -0
  822. package/dist/setup/legacy-client-cleanup.d.ts +6 -0
  823. package/dist/setup/legacy-client-cleanup.d.ts.map +1 -0
  824. package/dist/setup/legacy-client-cleanup.js +152 -0
  825. package/dist/setup/legacy-client-cleanup.js.map +1 -0
  826. package/dist/setup/managed-text.d.ts +6 -0
  827. package/dist/setup/managed-text.d.ts.map +1 -0
  828. package/dist/setup/managed-text.js +52 -0
  829. package/dist/setup/managed-text.js.map +1 -0
  830. package/dist/setup/mcp-conflict.d.ts +4 -0
  831. package/dist/setup/mcp-conflict.d.ts.map +1 -0
  832. package/dist/setup/mcp-conflict.js +15 -0
  833. package/dist/setup/mcp-conflict.js.map +1 -0
  834. package/dist/setup/opencode-config.d.ts +8 -0
  835. package/dist/setup/opencode-config.d.ts.map +1 -0
  836. package/dist/setup/opencode-config.js +98 -0
  837. package/dist/setup/opencode-config.js.map +1 -0
  838. package/dist/setup/project-agent-refresh.d.ts +41 -0
  839. package/dist/setup/project-agent-refresh.d.ts.map +1 -0
  840. package/dist/setup/project-agent-refresh.js +158 -0
  841. package/dist/setup/project-agent-refresh.js.map +1 -0
  842. package/dist/setup/render.d.ts +13 -0
  843. package/dist/setup/render.d.ts.map +1 -0
  844. package/dist/setup/render.js +334 -0
  845. package/dist/setup/render.js.map +1 -0
  846. package/dist/setup/standard-skills.d.ts +60 -0
  847. package/dist/setup/standard-skills.d.ts.map +1 -0
  848. package/dist/setup/standard-skills.js +133 -0
  849. package/dist/setup/standard-skills.js.map +1 -0
  850. package/dist/setup/strict-json.d.ts +7 -0
  851. package/dist/setup/strict-json.d.ts.map +1 -0
  852. package/dist/setup/strict-json.js +98 -0
  853. package/dist/setup/strict-json.js.map +1 -0
  854. package/dist/setup/strict-toml.d.ts +18 -0
  855. package/dist/setup/strict-toml.d.ts.map +1 -0
  856. package/dist/setup/strict-toml.js +491 -0
  857. package/dist/setup/strict-toml.js.map +1 -0
  858. package/dist/skills/cache.d.ts +15 -0
  859. package/dist/skills/cache.d.ts.map +1 -0
  860. package/dist/skills/cache.js +19 -0
  861. package/dist/skills/cache.js.map +1 -0
  862. package/dist/skills/candidate-ranking.d.ts +15 -0
  863. package/dist/skills/candidate-ranking.d.ts.map +1 -0
  864. package/dist/skills/candidate-ranking.js +52 -0
  865. package/dist/skills/candidate-ranking.js.map +1 -0
  866. package/dist/skills/chunking.d.ts +11 -0
  867. package/dist/skills/chunking.d.ts.map +1 -0
  868. package/dist/skills/chunking.js +291 -0
  869. package/dist/skills/chunking.js.map +1 -0
  870. package/dist/skills/config.d.ts +19 -0
  871. package/dist/skills/config.d.ts.map +1 -0
  872. package/dist/skills/config.js +103 -0
  873. package/dist/skills/config.js.map +1 -0
  874. package/dist/skills/discovery-service.d.ts +26 -0
  875. package/dist/skills/discovery-service.d.ts.map +1 -0
  876. package/dist/skills/discovery-service.js +929 -0
  877. package/dist/skills/discovery-service.js.map +1 -0
  878. package/dist/skills/external-transport.d.ts +2 -0
  879. package/dist/skills/external-transport.d.ts.map +1 -0
  880. package/dist/skills/external-transport.js +30 -0
  881. package/dist/skills/external-transport.js.map +1 -0
  882. package/dist/skills/find.d.ts +17 -0
  883. package/dist/skills/find.d.ts.map +1 -0
  884. package/dist/skills/find.js +59 -0
  885. package/dist/skills/find.js.map +1 -0
  886. package/dist/skills/gap-detection.d.ts +23 -0
  887. package/dist/skills/gap-detection.d.ts.map +1 -0
  888. package/dist/skills/gap-detection.js +62 -0
  889. package/dist/skills/gap-detection.js.map +1 -0
  890. package/dist/skills/import-preparation.d.ts +4 -0
  891. package/dist/skills/import-preparation.d.ts.map +1 -0
  892. package/dist/skills/import-preparation.js +20 -0
  893. package/dist/skills/import-preparation.js.map +1 -0
  894. package/dist/skills/materialization-authority.d.ts +11 -0
  895. package/dist/skills/materialization-authority.d.ts.map +1 -0
  896. package/dist/skills/materialization-authority.js +92 -0
  897. package/dist/skills/materialization-authority.js.map +1 -0
  898. package/dist/skills/materialization-service.d.ts +22 -0
  899. package/dist/skills/materialization-service.d.ts.map +1 -0
  900. package/dist/skills/materialization-service.js +101 -0
  901. package/dist/skills/materialization-service.js.map +1 -0
  902. package/dist/skills/official-catalog.d.ts +31 -0
  903. package/dist/skills/official-catalog.d.ts.map +1 -0
  904. package/dist/skills/official-catalog.js +110 -0
  905. package/dist/skills/official-catalog.js.map +1 -0
  906. package/dist/skills/providers/schema.d.ts +30 -0
  907. package/dist/skills/providers/schema.d.ts.map +1 -0
  908. package/dist/skills/providers/schema.js +354 -0
  909. package/dist/skills/providers/schema.js.map +1 -0
  910. package/dist/skills/providers/skills-sh-compat.d.ts +17 -0
  911. package/dist/skills/providers/skills-sh-compat.d.ts.map +1 -0
  912. package/dist/skills/providers/skills-sh-compat.js +73 -0
  913. package/dist/skills/providers/skills-sh-compat.js.map +1 -0
  914. package/dist/skills/providers/skills-sh-v1.d.ts +23 -0
  915. package/dist/skills/providers/skills-sh-v1.d.ts.map +1 -0
  916. package/dist/skills/providers/skills-sh-v1.js +152 -0
  917. package/dist/skills/providers/skills-sh-v1.js.map +1 -0
  918. package/dist/skills/query-builder.d.ts +18 -0
  919. package/dist/skills/query-builder.d.ts.map +1 -0
  920. package/dist/skills/query-builder.js +93 -0
  921. package/dist/skills/query-builder.js.map +1 -0
  922. package/dist/skills/source/errors.d.ts +9 -0
  923. package/dist/skills/source/errors.d.ts.map +1 -0
  924. package/dist/skills/source/errors.js +15 -0
  925. package/dist/skills/source/errors.js.map +1 -0
  926. package/dist/skills/source/frontmatter.d.ts +9 -0
  927. package/dist/skills/source/frontmatter.d.ts.map +1 -0
  928. package/dist/skills/source/frontmatter.js +77 -0
  929. package/dist/skills/source/frontmatter.js.map +1 -0
  930. package/dist/skills/source/github-fetcher.d.ts +20 -0
  931. package/dist/skills/source/github-fetcher.d.ts.map +1 -0
  932. package/dist/skills/source/github-fetcher.js +296 -0
  933. package/dist/skills/source/github-fetcher.js.map +1 -0
  934. package/dist/skills/source/snapshot-validator.d.ts +28 -0
  935. package/dist/skills/source/snapshot-validator.d.ts.map +1 -0
  936. package/dist/skills/source/snapshot-validator.js +186 -0
  937. package/dist/skills/source/snapshot-validator.js.map +1 -0
  938. package/dist/skills/store.d.ts +180 -0
  939. package/dist/skills/store.d.ts.map +1 -0
  940. package/dist/skills/store.js +1712 -0
  941. package/dist/skills/store.js.map +1 -0
  942. package/dist/skills/types.d.ts +171 -0
  943. package/dist/skills/types.d.ts.map +1 -0
  944. package/dist/skills/types.js +2 -0
  945. package/dist/skills/types.js.map +1 -0
  946. package/dist/web/i18n.d.ts +184 -0
  947. package/dist/web/i18n.d.ts.map +1 -0
  948. package/dist/web/i18n.js +733 -0
  949. package/dist/web/i18n.js.map +1 -0
  950. package/dist/web/server.d.ts +16 -0
  951. package/dist/web/server.d.ts.map +1 -0
  952. package/dist/web/server.js +862 -0
  953. package/dist/web/server.js.map +1 -0
  954. package/dist/web/ui.d.ts +6 -0
  955. package/dist/web/ui.d.ts.map +1 -0
  956. package/dist/web/ui.js +1328 -0
  957. package/dist/web/ui.js.map +1 -0
  958. package/docs/README.ja.md +14 -0
  959. package/docs/README.md +16 -0
  960. package/docs/agent-file.md +72 -0
  961. package/docs/agent-gateway.md +104 -0
  962. package/docs/architecture.md +12 -0
  963. package/docs/cli-contract.md +39 -0
  964. package/docs/client-compatibility.md +299 -0
  965. package/docs/concepts.ja.md +25 -0
  966. package/docs/concepts.md +33 -0
  967. package/docs/database.md +11 -0
  968. package/docs/dsh-plugin.md +108 -0
  969. package/docs/enno-oduno.ja.md +22 -0
  970. package/docs/enno-oduno.md +35 -0
  971. package/docs/execution-ledger.md +89 -0
  972. package/docs/getting-started.ja.md +88 -0
  973. package/docs/getting-started.md +99 -0
  974. package/docs/release-notes-0.1.18.md +103 -0
  975. package/docs/retrieval-evaluation.md +10 -0
  976. package/docs/security-and-trust.ja.md +29 -0
  977. package/docs/security-and-trust.md +39 -0
  978. package/docs/security.md +11 -0
  979. package/docs/semantic-retrieval.ja.md +18 -0
  980. package/docs/semantic-retrieval.md +26 -0
  981. package/docs/sqlite-driver-adr.md +8 -0
  982. package/dsh/cordis.patch.yml +7 -0
  983. package/migrations/001_initial.sql +123 -0
  984. package/migrations/002_fts.sql +22 -0
  985. package/migrations/003_akinator.sql +30 -0
  986. package/migrations/004_agent_gateway.sql +261 -0
  987. package/migrations/005_hybrid_search.sql +40 -0
  988. package/migrations/006_context_v2.sql +4 -0
  989. package/migrations/007_akinator_reasoning.sql +59 -0
  990. package/migrations/008_federated_memory.sql +46 -0
  991. package/migrations/009_external_skill_discovery.sql +126 -0
  992. package/migrations/010_nudge_deliveries.sql +50 -0
  993. package/migrations/011_nudge_integrity.sql +52 -0
  994. package/migrations/012_context_delivery_v4.sql +3 -0
  995. package/migrations/013_enno_oduno.sql +176 -0
  996. package/migrations/014_oduno_reflection_phases.sql +40 -0
  997. package/migrations/015_skill_discovery_attempt_digests.sql +90 -0
  998. package/migrations/016_enno_advisory_rounds.sql +67 -0
  999. package/migrations/017_enno_advisory_protocol_v2.sql +101 -0
  1000. package/migrations/018_enno_repository_routing.sql +5 -0
  1001. package/migrations/019_enno_execution_integrity.sql +149 -0
  1002. package/migrations/020_cjk_fts.sql +80 -0
  1003. package/migrations/021_semantic_embeddings.sql +122 -0
  1004. package/migrations/022_embedding_setup_v2.sql +236 -0
  1005. package/migrations/023_enno_dsh_client.sql +291 -0
  1006. package/migrations/down/020_cjk_fts.sql +38 -0
  1007. package/migrations/down/021_semantic_embeddings.sql +17 -0
  1008. package/migrations/down/022_embedding_setup_v2.sql +133 -0
  1009. package/package.json +101 -0
  1010. package/skills/kiokuko-enno-oduno/SKILL.md +209 -0
  1011. package/skills/kiokuko-enno-oduno/enno-oduno.png +0 -0
  1012. package/skills/kiokuko-simple-work/SKILL.md +112 -0
  1013. package/skills/kiokuko-single-purpose-functions/SKILL.md +82 -0
  1014. package/skills/kiokuko-single-purpose-functions/references/boundaries-and-ownership.md +50 -0
  1015. package/skills/kiokuko-single-purpose-functions/references/domain-and-types.md +48 -0
  1016. package/skills/kiokuko-single-purpose-functions/references/effects-and-data.md +43 -0
  1017. package/skills/kiokuko-single-purpose-functions/references/kiokuko-patterns.md +344 -0
  1018. package/skills/kiokuko-single-purpose-functions/references/problem-shaping-and-language.md +84 -0
  1019. package/skills/kiokuko-single-purpose-functions/references/protocols-and-idempotency.md +42 -0
  1020. package/skills/kiokuko-single-purpose-functions/references/review-checklist.md +97 -0
  1021. package/skills/kiokuko-single-purpose-functions/references/verification.md +41 -0
  1022. package/skills/kiokuko-soul/SKILL.md +104 -0
  1023. package/skills/kiokuko-ui-design-soul/SKILL.md +73 -0
  1024. package/skills/kiokuko-ui-design-soul/references/accessibility-and-navigation.md +31 -0
  1025. package/skills/kiokuko-ui-design-soul/references/async-recovery.md +49 -0
  1026. package/skills/kiokuko-ui-design-soul/references/forms-and-controls.md +35 -0
  1027. package/skills/kiokuko-ui-design-soul/references/interaction-feedback.md +34 -0
  1028. package/skills/kiokuko-ui-design-soul/references/responsive-and-platform.md +38 -0
  1029. package/skills/kiokuko-ui-design-soul/references/safety-and-review.md +39 -0
  1030. package/skills/kiokuko-ui-design-soul/references/ui-checklist.md +71 -0
  1031. package/skills/memory-reasoning/SKILL.md +52 -0
  1032. package/templates/AGENTS.md +46 -0
@@ -0,0 +1,759 @@
1
+ import { KiokukoError, storedMemoryIntegrityError } from '../errors.js';
2
+ import { canonicalContentHash, canonicalEntryRevisionContentHash, canonicalJson, ENTRY_STATUSES, requireWorkspace, TRUST_LEVELS, validateRecordInput, } from '../serialization/validate.js';
3
+ import { buildStructuredScope, } from './structured-memory.js';
4
+ const SQLITE_CONSTRAINT_PRIMARY_KEY = 1_555;
5
+ const SQLITE_CONSTRAINT_UNIQUE = 2_067;
6
+ const REVISION_UNIQUENESS_FAILURES = new Set([
7
+ 'UNIQUE constraint failed: entry_revisions.entry_id, entry_revisions.revision',
8
+ 'UNIQUE constraint failed: entry_revisions.workspace, entry_revisions.content_hash',
9
+ ]);
10
+ function isExpectedRevisionConflict(error) {
11
+ if (!(error instanceof Error))
12
+ return false;
13
+ const failure = error;
14
+ return failure.code === 'ERR_SQLITE_ERROR'
15
+ && (failure.errcode === SQLITE_CONSTRAINT_PRIMARY_KEY || failure.errcode === SQLITE_CONSTRAINT_UNIQUE)
16
+ && REVISION_UNIQUENESS_FAILURES.has(failure.message);
17
+ }
18
+ function storedIntegrity() {
19
+ throw storedMemoryIntegrityError();
20
+ }
21
+ function isPlainObject(value) {
22
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
23
+ return false;
24
+ const prototype = Object.getPrototypeOf(value);
25
+ return prototype === Object.prototype || prototype === null;
26
+ }
27
+ function hasOwn(value, field) {
28
+ return Object.prototype.hasOwnProperty.call(value, field);
29
+ }
30
+ function storedNonEmptyString(value) {
31
+ if (typeof value !== 'string' || value.trim().length === 0)
32
+ storedIntegrity();
33
+ return value;
34
+ }
35
+ function canonicalTimestamp(value) {
36
+ if (typeof value !== 'string' || !/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/u.test(value))
37
+ return false;
38
+ const milliseconds = Date.parse(value);
39
+ return Number.isFinite(milliseconds) && new Date(milliseconds).toISOString() === value;
40
+ }
41
+ function parseStoredObject(value) {
42
+ if (typeof value !== 'string')
43
+ storedIntegrity();
44
+ let parsed;
45
+ try {
46
+ parsed = JSON.parse(value);
47
+ }
48
+ catch (error) {
49
+ if (error instanceof SyntaxError)
50
+ storedIntegrity();
51
+ throw error;
52
+ }
53
+ if (!isPlainObject(parsed))
54
+ storedIntegrity();
55
+ try {
56
+ if (canonicalJson(parsed) !== value)
57
+ storedIntegrity();
58
+ }
59
+ catch (error) {
60
+ if (error instanceof KiokukoError && error.code === 'VALIDATION_ERROR')
61
+ storedIntegrity();
62
+ throw error;
63
+ }
64
+ return parsed;
65
+ }
66
+ function exactLegacyFrameworkOrder(scope, normalized) {
67
+ if (!isPlainObject(scope.applicability) || !isPlainObject(normalized.applicability))
68
+ return false;
69
+ const storedFrameworks = scope.applicability.frameworks;
70
+ const normalizedFrameworks = normalized.applicability.frameworks;
71
+ if (!Array.isArray(storedFrameworks) || !Array.isArray(normalizedFrameworks)
72
+ || storedFrameworks.length !== normalizedFrameworks.length)
73
+ return false;
74
+ let storedMembers;
75
+ let normalizedMembers;
76
+ try {
77
+ storedMembers = storedFrameworks.map((framework) => canonicalJson(framework));
78
+ normalizedMembers = normalizedFrameworks.map((framework) => canonicalJson(framework));
79
+ }
80
+ catch (error) {
81
+ if (error instanceof KiokukoError && error.code === 'VALIDATION_ERROR')
82
+ return false;
83
+ throw error;
84
+ }
85
+ const sortedStoredMembers = [...storedMembers].sort();
86
+ const sortedNormalizedMembers = [...normalizedMembers].sort();
87
+ if (new Set(storedMembers).size !== storedMembers.length
88
+ || new Set(normalizedMembers).size !== normalizedMembers.length
89
+ || sortedStoredMembers.some((member, index) => member !== sortedNormalizedMembers[index]))
90
+ return false;
91
+ const reconstructed = {
92
+ ...normalized,
93
+ applicability: { ...normalized.applicability, frameworks: storedFrameworks },
94
+ };
95
+ return canonicalJson(reconstructed) === canonicalJson(scope);
96
+ }
97
+ /** Normalize caller-supplied structured scope before it is persisted. */
98
+ export function normalizeStructuredScopeInput(scope) {
99
+ if (!hasOwn(scope, 'schemaVersion')) {
100
+ return scope;
101
+ }
102
+ const allowed = new Set([
103
+ 'schemaVersion', 'visibility', 'retrievalScope', 'repositoryId', 'memoryClass',
104
+ 'applicability', 'signals', 'portableReason',
105
+ ]);
106
+ if (Object.keys(scope).some((field) => !allowed.has(field))) {
107
+ throw new KiokukoError('VALIDATION_ERROR', 'Structured memory scope contains an unknown field');
108
+ }
109
+ if (scope.schemaVersion !== 2 && scope.schemaVersion !== 3) {
110
+ throw new KiokukoError('VALIDATION_ERROR', 'Structured memory scope schemaVersion is unsupported');
111
+ }
112
+ const schemaVersion = scope.schemaVersion;
113
+ if (schemaVersion === 2 && hasOwn(scope, 'retrievalScope')) {
114
+ throw new KiokukoError('VALIDATION_ERROR', 'Structured memory scope schemaVersion 2 cannot contain retrievalScope');
115
+ }
116
+ let normalized = buildStructuredScope({
117
+ visibility: scope.visibility,
118
+ ...(schemaVersion === 3 && hasOwn(scope, 'retrievalScope') ? { retrievalScope: scope.retrievalScope } : {}),
119
+ ...(hasOwn(scope, 'repositoryId') ? { repositoryId: scope.repositoryId } : {}),
120
+ ...(hasOwn(scope, 'memoryClass') ? { memoryClass: scope.memoryClass } : {}),
121
+ ...(hasOwn(scope, 'applicability') ? { applicability: scope.applicability } : {}),
122
+ ...(hasOwn(scope, 'signals') ? { signals: scope.signals } : {}),
123
+ ...(hasOwn(scope, 'portableReason') ? { portableReason: scope.portableReason } : {}),
124
+ });
125
+ if (schemaVersion === 2)
126
+ normalized = { ...normalized, schemaVersion: 2 };
127
+ return normalized;
128
+ }
129
+ function normalizeStoredStructuredScope(scope, required) {
130
+ if (required && scope.schemaVersion !== 3)
131
+ storedIntegrity();
132
+ try {
133
+ return normalizeStructuredScopeInput(scope);
134
+ }
135
+ catch (error) {
136
+ if (error instanceof KiokukoError && (error.code === 'VALIDATION_ERROR' || error.code === 'SECURITY_REJECTION'))
137
+ storedIntegrity();
138
+ throw error;
139
+ }
140
+ }
141
+ /** Decode only the canonical persisted structured-scope representation. */
142
+ export function decodeStoredStructuredScope(scope, required = false) {
143
+ const normalized = normalizeStoredStructuredScope(scope, required);
144
+ if (canonicalJson(normalized) !== canonicalJson(scope))
145
+ storedIntegrity();
146
+ return { scope: normalized, canonicalScope: normalized };
147
+ }
148
+ function decodeMigratableStoredStructuredScope(scope) {
149
+ const normalized = normalizeStoredStructuredScope(scope, false);
150
+ if (canonicalJson(normalized) !== canonicalJson(scope) && !exactLegacyFrameworkOrder(scope, normalized))
151
+ storedIntegrity();
152
+ return { scope: normalized, canonicalScope: normalized, persistedScope: scope };
153
+ }
154
+ function normalizedStoredRecord(input, tags, options) {
155
+ const entryId = storedNonEmptyString(input.entryId);
156
+ const createdBy = storedNonEmptyString(input.createdBy);
157
+ const createdAt = storedNonEmptyString(input.createdAt);
158
+ if (!canonicalTimestamp(createdAt)
159
+ || !Number.isSafeInteger(input.revision) || Number(input.revision) < 1
160
+ || input.summary !== null && typeof input.summary !== 'string'
161
+ || !Array.isArray(tags))
162
+ storedIntegrity();
163
+ const decodedScope = decodeStoredStructuredScope(parseStoredObject(input.scopeJson), options.requireStructuredScope === true);
164
+ const scope = decodedScope.canonicalScope;
165
+ const provenance = parseStoredObject(input.provenanceJson);
166
+ let validated;
167
+ try {
168
+ validated = validateRecordInput({
169
+ workspace: input.workspace,
170
+ kind: input.kind,
171
+ status: 'candidate',
172
+ title: input.title,
173
+ body: input.body,
174
+ summary: input.summary,
175
+ scope,
176
+ provenance,
177
+ trustLevel: 'user_asserted',
178
+ confidence: 1,
179
+ tags,
180
+ createdBy,
181
+ actor: createdBy,
182
+ });
183
+ }
184
+ catch (error) {
185
+ if (error instanceof KiokukoError && (error.code === 'VALIDATION_ERROR' || error.code === 'SECURITY_REJECTION'))
186
+ storedIntegrity();
187
+ throw error;
188
+ }
189
+ if (validated.tags.length !== tags.length)
190
+ storedIntegrity();
191
+ const hashInput = {
192
+ kind: validated.kind,
193
+ title: validated.title,
194
+ body: validated.body,
195
+ summary: validated.summary,
196
+ scope: validated.scope,
197
+ provenance: validated.provenance,
198
+ tags: validated.tags,
199
+ };
200
+ const contentHash = canonicalEntryRevisionContentHash(hashInput);
201
+ if (input.contentHash !== contentHash)
202
+ storedIntegrity();
203
+ return {
204
+ entryId,
205
+ workspace: validated.workspace,
206
+ revision: Number(input.revision),
207
+ kind: validated.kind,
208
+ title: validated.title,
209
+ body: validated.body,
210
+ summary: validated.summary,
211
+ scope: decodedScope.canonicalScope,
212
+ provenance: validated.provenance,
213
+ tags: validated.tags,
214
+ contentHash,
215
+ createdBy,
216
+ createdAt,
217
+ };
218
+ }
219
+ function decodedStoredEntry(input, revision) {
220
+ const id = storedNonEmptyString(input.id);
221
+ const workspace = storedNonEmptyString(input.workspace);
222
+ const createdBy = storedNonEmptyString(input.createdBy);
223
+ const createdAt = storedNonEmptyString(input.createdAt);
224
+ const updatedAt = storedNonEmptyString(input.updatedAt);
225
+ if (id !== revision.entryId || workspace !== revision.workspace
226
+ || !Number.isSafeInteger(input.currentRevision) || input.currentRevision !== revision.revision
227
+ || input.minRevision !== 1
228
+ || !Number.isSafeInteger(input.maxRevision) || input.currentRevision !== input.maxRevision
229
+ || !Number.isSafeInteger(input.revisionCount) || input.revisionCount !== input.maxRevision
230
+ || input.invalidRevisionCount !== 0
231
+ || typeof input.status !== 'string' || !ENTRY_STATUSES.includes(input.status)
232
+ || typeof input.trustLevel !== 'string' || !TRUST_LEVELS.includes(input.trustLevel)
233
+ || typeof input.confidence !== 'number' || !Number.isFinite(input.confidence) || input.confidence < 0 || input.confidence > 1
234
+ || input.supersededBy !== null && (typeof input.supersededBy !== 'string' || input.supersededBy.trim().length === 0)
235
+ || input.verifiedAt !== null && (typeof input.verifiedAt !== 'string' || input.verifiedAt.trim().length === 0))
236
+ storedIntegrity();
237
+ const status = input.status;
238
+ const supersededBy = input.supersededBy;
239
+ const verifiedAt = input.verifiedAt;
240
+ if ((status === 'superseded') !== (supersededBy !== null)
241
+ || status === 'candidate' && verifiedAt !== null
242
+ || status === 'verified' && verifiedAt === null
243
+ || !canonicalTimestamp(createdAt) || !canonicalTimestamp(updatedAt)
244
+ || verifiedAt !== null && !canonicalTimestamp(verifiedAt)
245
+ || createdAt > revision.createdAt || revision.createdAt > updatedAt
246
+ || createdAt > updatedAt
247
+ || verifiedAt !== null && (verifiedAt < createdAt || verifiedAt > updatedAt))
248
+ storedIntegrity();
249
+ return {
250
+ id,
251
+ workspace,
252
+ status,
253
+ trustLevel: input.trustLevel,
254
+ confidence: input.confidence,
255
+ currentRevision: input.currentRevision,
256
+ supersededBy,
257
+ createdBy,
258
+ createdAt,
259
+ updatedAt,
260
+ verifiedAt,
261
+ };
262
+ }
263
+ /** Decode persisted entry/revision data without trusting TypeScript row casts. */
264
+ export function decodeStoredMemoryRow(input) {
265
+ const revision = normalizedStoredRecord(input.revision, input.tags, input.options ?? {});
266
+ if (input.entry === undefined)
267
+ return { revision };
268
+ return { revision, entry: decodedStoredEntry(input.entry, revision) };
269
+ }
270
+ function revisionKey(input) {
271
+ if (typeof input.entryId !== 'string' || input.entryId.length === 0) {
272
+ throw new KiokukoError('VALIDATION_ERROR', 'entryId must be a non-empty string');
273
+ }
274
+ requireWorkspace(input.workspace);
275
+ if (!Number.isSafeInteger(input.revision) || input.revision < 1) {
276
+ throw new KiokukoError('VALIDATION_ERROR', 'revision must be a positive integer');
277
+ }
278
+ }
279
+ function completeRevisionChain(row) {
280
+ return Number.isSafeInteger(row.current_revision)
281
+ && row.min_revision === 1
282
+ && Number.isSafeInteger(row.max_revision)
283
+ && row.current_revision === row.max_revision
284
+ && Number.isSafeInteger(row.revision_count)
285
+ && row.revision_count === row.max_revision
286
+ && row.invalid_revision_count === 0;
287
+ }
288
+ function ownerRevisionChain(database, entryId) {
289
+ return database.prepare(`
290
+ SELECT e.workspace, e.current_revision,
291
+ MIN(r.revision) AS min_revision,
292
+ MAX(r.revision) AS max_revision,
293
+ COUNT(r.revision) AS revision_count,
294
+ COUNT(CASE
295
+ WHEN r.revision IS NOT NULL
296
+ AND (typeof(r.revision) <> 'integer' OR r.revision < 1)
297
+ THEN 1
298
+ END) AS invalid_revision_count
299
+ FROM entries AS e
300
+ LEFT JOIN entry_revisions AS r ON r.entry_id = e.id
301
+ WHERE e.id = ?
302
+ GROUP BY e.id
303
+ `).get(entryId);
304
+ }
305
+ const REVISION_HASH_ALGORITHM = 'canonical-json-utf16-tags-v1';
306
+ const REVISION_IMMUTABILITY_TRIGGER_SQL = `CREATE TRIGGER entry_revisions_immutable_update
307
+ BEFORE UPDATE ON entry_revisions
308
+ BEGIN
309
+ SELECT RAISE(ABORT, 'entry_revisions are immutable');
310
+ END`;
311
+ function quoteSqlIdentifier(value) {
312
+ return `"${value.replaceAll('"', '""')}"`;
313
+ }
314
+ function tableNames(database) {
315
+ return database
316
+ .prepare(`
317
+ SELECT name
318
+ FROM sqlite_schema
319
+ WHERE type = 'table'
320
+ AND name NOT LIKE 'sqlite_%'
321
+ `)
322
+ .all()
323
+ .flatMap((row) => typeof row.name === 'string' ? [row.name] : []);
324
+ }
325
+ function foreignKeys(database, table) {
326
+ return database
327
+ .prepare(`PRAGMA foreign_key_list(${quoteSqlIdentifier(table)})`)
328
+ .all();
329
+ }
330
+ function recoveryEntryId(row) {
331
+ if (typeof row.id !== 'string' || row.id.length === 0 || typeof row.workspace !== 'string') {
332
+ storedIntegrity();
333
+ }
334
+ return row.id;
335
+ }
336
+ function invalidRecoveryRevisionRows(database, entryId) {
337
+ return database
338
+ .prepare(`
339
+ SELECT entry_id AS entryId, revision
340
+ FROM entry_revisions
341
+ WHERE entry_id = ?
342
+ ORDER BY revision
343
+ `)
344
+ .all(entryId);
345
+ }
346
+ function deleteForeignKeyReferences(database, invalidEntries) {
347
+ const entryIds = invalidEntries.map(recoveryEntryId);
348
+ const revisions = invalidEntries.flatMap((entry) => invalidRecoveryRevisionRows(database, recoveryEntryId(entry)));
349
+ for (const table of tableNames(database)) {
350
+ for (const foreignKey of foreignKeys(database, table)) {
351
+ if (typeof foreignKey.table !== 'string' || typeof foreignKey.from !== 'string'
352
+ || typeof foreignKey.to !== 'string')
353
+ continue;
354
+ const childTable = quoteSqlIdentifier(table);
355
+ const childColumn = quoteSqlIdentifier(foreignKey.from);
356
+ if (foreignKey.table === 'entries' && foreignKey.to === 'id') {
357
+ for (const entryId of entryIds) {
358
+ if (table === 'entries' && foreignKey.from === 'superseded_by') {
359
+ database.prepare(`
360
+ UPDATE entries
361
+ SET superseded_by = NULL,
362
+ status = CASE WHEN status = 'superseded' THEN 'candidate' ELSE status END,
363
+ verified_at = CASE WHEN status = 'superseded' THEN NULL ELSE verified_at END
364
+ WHERE ${childColumn} = ?
365
+ `).run(entryId);
366
+ }
367
+ else if (table !== 'entries' && table !== 'entry_revisions') {
368
+ database.prepare(`DELETE FROM ${childTable} WHERE ${childColumn} = ?`).run(entryId);
369
+ }
370
+ }
371
+ }
372
+ else if (foreignKey.table === 'entry_revisions'
373
+ && (foreignKey.to === 'entry_id' || foreignKey.to === 'revision')) {
374
+ // Composite foreign keys are removed as one group below. Processing
375
+ // only their first column here would leave unrelated revision rows
376
+ // vulnerable to an over-broad delete.
377
+ continue;
378
+ }
379
+ }
380
+ const groups = new Map();
381
+ for (const foreignKey of foreignKeys(database, table)) {
382
+ if (typeof foreignKey.id !== 'number' || typeof foreignKey.table !== 'string')
383
+ continue;
384
+ const key = `${foreignKey.id}\u0000${foreignKey.table}`;
385
+ const group = groups.get(key) ?? [];
386
+ group.push(foreignKey);
387
+ groups.set(key, group);
388
+ }
389
+ for (const group of groups.values()) {
390
+ if (group[0]?.table !== 'entry_revisions' || table === 'entry_revisions')
391
+ continue;
392
+ const columns = group
393
+ .map((foreignKey) => ({
394
+ from: foreignKey.from,
395
+ to: foreignKey.to,
396
+ }))
397
+ .filter((value) => typeof value.from === 'string' && (value.to === 'entry_id' || value.to === 'revision'));
398
+ if (columns.length !== group.length)
399
+ continue;
400
+ for (const revision of revisions) {
401
+ if (typeof revision.entryId !== 'string' || typeof revision.revision !== 'number')
402
+ continue;
403
+ const parameters = columns.map(({ to }) => to === 'entry_id' ? revision.entryId : revision.revision);
404
+ const predicate = columns.map(({ from }) => `${quoteSqlIdentifier(from)} = ?`).join(' AND ');
405
+ database.prepare(`DELETE FROM ${quoteSqlIdentifier(table)} WHERE ${predicate}`).run(...parameters);
406
+ }
407
+ }
408
+ }
409
+ }
410
+ function removeInvalidStoredMemoryForMigration(database, invalidEntries) {
411
+ if (invalidEntries.length === 0)
412
+ return 0;
413
+ deleteForeignKeyReferences(database, invalidEntries);
414
+ const deleteEntry = database.prepare('DELETE FROM entries WHERE id = ? AND workspace = ?');
415
+ for (const entry of invalidEntries) {
416
+ const id = recoveryEntryId(entry);
417
+ if (typeof entry.workspace !== 'string')
418
+ storedIntegrity();
419
+ deleteEntry.run(id, entry.workspace);
420
+ }
421
+ return invalidEntries.length;
422
+ }
423
+ function migratableRevision(database, row) {
424
+ const entryId = storedNonEmptyString(row.entry_id);
425
+ const createdBy = storedNonEmptyString(row.created_by);
426
+ const createdAt = storedNonEmptyString(row.created_at);
427
+ if (!canonicalTimestamp(createdAt)
428
+ || !Number.isSafeInteger(row.revision) || Number(row.revision) < 1
429
+ || row.summary !== null && typeof row.summary !== 'string')
430
+ storedIntegrity();
431
+ const revision = Number(row.revision);
432
+ const owner = ownerRevisionChain(database, entryId);
433
+ if (owner === undefined || owner.workspace !== row.workspace || !completeRevisionChain(owner))
434
+ storedIntegrity();
435
+ const persistedScope = parseStoredObject(row.scope_json);
436
+ const decodedScope = decodeMigratableStoredStructuredScope(persistedScope);
437
+ const provenance = parseStoredObject(row.provenance_json);
438
+ const persistedTags = database
439
+ .prepare('SELECT tag FROM entry_revision_tags WHERE entry_id = ? AND revision = ? ORDER BY rowid ASC')
440
+ .all(entryId, revision)
441
+ .map((tag) => tag.tag);
442
+ let validated;
443
+ try {
444
+ validated = validateRecordInput({
445
+ workspace: row.workspace,
446
+ kind: row.kind,
447
+ status: 'candidate',
448
+ title: row.title,
449
+ body: row.body,
450
+ summary: row.summary,
451
+ scope: decodedScope.canonicalScope,
452
+ provenance,
453
+ trustLevel: 'user_asserted',
454
+ confidence: 1,
455
+ tags: persistedTags,
456
+ createdBy,
457
+ actor: createdBy,
458
+ });
459
+ }
460
+ catch (error) {
461
+ if (error instanceof KiokukoError && (error.code === 'VALIDATION_ERROR' || error.code === 'SECURITY_REJECTION'))
462
+ storedIntegrity();
463
+ throw error;
464
+ }
465
+ if (validated.tags.length !== persistedTags.length
466
+ || persistedTags.some((tag) => typeof tag !== 'string'))
467
+ storedIntegrity();
468
+ const hashInput = {
469
+ kind: validated.kind,
470
+ title: validated.title,
471
+ body: validated.body,
472
+ summary: validated.summary,
473
+ scope: validated.scope,
474
+ provenance: validated.provenance,
475
+ tags: validated.tags,
476
+ };
477
+ const canonicalHash = canonicalEntryRevisionContentHash(hashInput);
478
+ const previousHash = row.content_hash;
479
+ if (typeof previousHash !== 'string' || !/^[0-9a-f]{64}$/u.test(previousHash))
480
+ storedIntegrity();
481
+ if (previousHash !== canonicalHash) {
482
+ const legacyPayload = {
483
+ kind: hashInput.kind,
484
+ title: hashInput.title,
485
+ body: hashInput.body,
486
+ summary: hashInput.summary,
487
+ provenance: hashInput.provenance,
488
+ tags: persistedTags,
489
+ };
490
+ const canonicalScopeLegacyHash = canonicalContentHash({
491
+ ...legacyPayload,
492
+ scope: hashInput.scope,
493
+ });
494
+ const persistedScopeLegacyHash = canonicalContentHash({
495
+ ...legacyPayload,
496
+ scope: decodedScope.persistedScope,
497
+ });
498
+ if (previousHash !== canonicalScopeLegacyHash && previousHash !== persistedScopeLegacyHash)
499
+ storedIntegrity();
500
+ }
501
+ return {
502
+ entryId,
503
+ workspace: validated.workspace,
504
+ revision,
505
+ previousScopeJson: row.scope_json,
506
+ previousHash,
507
+ canonicalScopeJson: canonicalJson(validated.scope),
508
+ canonicalHash,
509
+ };
510
+ }
511
+ /**
512
+ * One-time migration operation for migration 009. This is the only place that
513
+ * recognizes the released locale-dependent hash preimage. The caller must own
514
+ * the migration transaction; any invalid preimage or canonical collision
515
+ * aborts the whole schema upgrade.
516
+ */
517
+ export function canonicalizeEntryRevisionHashesInMigration(database, options = {}) {
518
+ const formatTable = database.prepare(`
519
+ SELECT type
520
+ FROM sqlite_schema
521
+ WHERE name = 'entry_revision_hash_format'
522
+ `).get();
523
+ const existingFormat = formatTable?.type === 'table'
524
+ ? database.prepare('SELECT singleton, algorithm FROM entry_revision_hash_format').all()
525
+ : [];
526
+ if (formatTable?.type !== 'table' || existingFormat.length !== 0)
527
+ storedIntegrity();
528
+ const trigger = database.prepare(`
529
+ SELECT sql
530
+ FROM sqlite_schema
531
+ WHERE type = 'trigger' AND name = 'entry_revisions_immutable_update'
532
+ `).get();
533
+ if (trigger?.sql !== REVISION_IMMUTABILITY_TRIGGER_SQL)
534
+ storedIntegrity();
535
+ const rows = database.prepare(`
536
+ SELECT entry_id, workspace, revision, kind, title, body, summary,
537
+ scope_json, provenance_json, content_hash, created_by, created_at
538
+ FROM entry_revisions
539
+ ORDER BY entry_id, revision
540
+ `).all();
541
+ const entries = database.prepare('SELECT id, workspace FROM entries ORDER BY id')
542
+ .all();
543
+ const invalidEntries = [];
544
+ for (const entry of entries) {
545
+ try {
546
+ const entryId = storedNonEmptyString(entry.id);
547
+ const workspace = storedNonEmptyString(entry.workspace);
548
+ const owner = ownerRevisionChain(database, entryId);
549
+ if (owner === undefined || owner.workspace !== workspace || !completeRevisionChain(owner))
550
+ storedIntegrity();
551
+ for (const row of rows.filter((candidate) => candidate.entry_id === entryId))
552
+ migratableRevision(database, row);
553
+ }
554
+ catch (error) {
555
+ if (options.recoverInvalidStoredMemory
556
+ && error instanceof KiokukoError
557
+ && error.code === 'INTEGRITY_ERROR'
558
+ && error.message.startsWith('Stored entry or revision is invalid.')) {
559
+ invalidEntries.push(entry);
560
+ continue;
561
+ }
562
+ throw error;
563
+ }
564
+ }
565
+ const recoveredEntries = removeInvalidStoredMemoryForMigration(database, invalidEntries);
566
+ const updates = database.prepare(`
567
+ SELECT entry_id, workspace, revision, kind, title, body, summary,
568
+ scope_json, provenance_json, content_hash, created_by, created_at
569
+ FROM entry_revisions
570
+ ORDER BY entry_id, revision
571
+ `).all().map((row) => migratableRevision(database, row));
572
+ const canonicalIdentities = new Set();
573
+ for (const update of updates) {
574
+ const identity = `${update.workspace}\u0000${update.canonicalHash}`;
575
+ if (canonicalIdentities.has(identity)) {
576
+ throw new KiokukoError('INTEGRITY_ERROR', 'Stored revisions collide under the canonical revision hash');
577
+ }
578
+ canonicalIdentities.add(identity);
579
+ }
580
+ const changed = updates.filter((update) => update.previousHash !== update.canonicalHash
581
+ || update.previousScopeJson !== update.canonicalScopeJson);
582
+ if (changed.length > 0) {
583
+ database.exec('DROP TRIGGER entry_revisions_immutable_update');
584
+ const park = database.prepare(`
585
+ UPDATE entry_revisions
586
+ SET content_hash = ?
587
+ WHERE entry_id = ? AND revision = ? AND scope_json = ? AND content_hash = ?
588
+ `);
589
+ const install = database.prepare(`
590
+ UPDATE entry_revisions
591
+ SET scope_json = ?, content_hash = ?
592
+ WHERE entry_id = ? AND revision = ? AND content_hash = ?
593
+ `);
594
+ for (const [index, update] of changed.entries()) {
595
+ const temporaryHash = `migration-009:${index}`;
596
+ park.run(temporaryHash, update.entryId, update.revision, update.previousScopeJson, update.previousHash);
597
+ if (database.prepare('SELECT changes() AS changes').get()?.changes !== 1)
598
+ storedIntegrity();
599
+ }
600
+ for (const [index, update] of changed.entries()) {
601
+ install.run(update.canonicalScopeJson, update.canonicalHash, update.entryId, update.revision, `migration-009:${index}`);
602
+ if (database.prepare('SELECT changes() AS changes').get()?.changes !== 1)
603
+ storedIntegrity();
604
+ }
605
+ database.exec(REVISION_IMMUTABILITY_TRIGGER_SQL);
606
+ }
607
+ database.prepare('INSERT INTO entry_revision_hash_format (singleton, algorithm) VALUES (1, ?)')
608
+ .run(REVISION_HASH_ALGORITHM);
609
+ return { inspected: updates.length, rewritten: changed.length, recoveredEntries };
610
+ }
611
+ function tagsFor(database, entryId, revision) {
612
+ return database
613
+ .prepare('SELECT tag FROM entry_revision_tags WHERE entry_id = ? AND revision = ? ORDER BY tag ASC')
614
+ .all(entryId, revision)
615
+ .map((row) => row.tag);
616
+ }
617
+ function rowToRevision(database, row, checkOwnerChronology = true) {
618
+ const entryId = storedNonEmptyString(row.entry_id);
619
+ if (!Number.isSafeInteger(row.revision))
620
+ storedIntegrity();
621
+ const tags = tagsFor(database, entryId, Number(row.revision));
622
+ const decoded = decodeStoredMemoryRow({
623
+ revision: {
624
+ entryId,
625
+ workspace: row.workspace,
626
+ revision: row.revision,
627
+ kind: row.kind,
628
+ title: row.title,
629
+ body: row.body,
630
+ summary: row.summary,
631
+ scopeJson: row.scope_json,
632
+ provenanceJson: row.provenance_json,
633
+ contentHash: row.content_hash,
634
+ createdBy: row.created_by,
635
+ createdAt: row.created_at,
636
+ },
637
+ tags,
638
+ }).revision;
639
+ if (checkOwnerChronology) {
640
+ const owner = database.prepare(`
641
+ SELECT e.created_at, e.updated_at, e.current_revision,
642
+ (SELECT MIN(all_revisions.revision)
643
+ FROM entry_revisions AS all_revisions
644
+ WHERE all_revisions.entry_id = e.id) AS min_revision,
645
+ (SELECT MAX(all_revisions.revision)
646
+ FROM entry_revisions AS all_revisions
647
+ WHERE all_revisions.entry_id = e.id) AS max_revision,
648
+ (SELECT COUNT(all_revisions.revision)
649
+ FROM entry_revisions AS all_revisions
650
+ WHERE all_revisions.entry_id = e.id) AS revision_count,
651
+ (SELECT COUNT(*)
652
+ FROM entry_revisions AS all_revisions
653
+ WHERE all_revisions.entry_id = e.id
654
+ AND (typeof(all_revisions.revision) <> 'integer' OR all_revisions.revision < 1)) AS invalid_revision_count
655
+ FROM entries AS e
656
+ WHERE e.id = ? AND e.workspace = ?
657
+ `).get(decoded.entryId, decoded.workspace);
658
+ if (owner === undefined || !canonicalTimestamp(owner.created_at) || !canonicalTimestamp(owner.updated_at)
659
+ || !completeRevisionChain({ workspace: decoded.workspace, ...owner })
660
+ || owner.created_at > decoded.createdAt || decoded.createdAt > owner.updated_at)
661
+ storedIntegrity();
662
+ }
663
+ return decoded;
664
+ }
665
+ function selectRevision(database, input, checkOwnerChronology = true) {
666
+ const row = database.prepare(`
667
+ SELECT entry_id, workspace, revision, kind, title, body, summary,
668
+ scope_json, provenance_json, content_hash, created_by, created_at
669
+ FROM entry_revisions
670
+ WHERE entry_id = ? AND workspace = ? AND revision = ?
671
+ `).get(input.entryId, input.workspace, input.revision);
672
+ return row === undefined ? undefined : rowToRevision(database, row, checkOwnerChronology);
673
+ }
674
+ export function readEntryRevision(database, input) {
675
+ revisionKey(input);
676
+ const result = selectRevision(database, input);
677
+ if (result === undefined)
678
+ throw new KiokukoError('NOT_FOUND', 'Entry revision not found');
679
+ return result;
680
+ }
681
+ export function findEntryRevision(database, input) {
682
+ revisionKey(input);
683
+ return selectRevision(database, input);
684
+ }
685
+ export function insertEntryRevisionInTransaction(database, input) {
686
+ revisionKey(input);
687
+ if (typeof input.createdBy !== 'string' || input.createdBy.length === 0 || typeof input.createdAt !== 'string' || input.createdAt.length === 0) {
688
+ throw new KiokukoError('VALIDATION_ERROR', 'Revision creator and timestamp are required');
689
+ }
690
+ const owner = ownerRevisionChain(database, input.entryId);
691
+ if (owner === undefined)
692
+ throw new KiokukoError('NOT_FOUND', 'Entry not found');
693
+ if (owner.workspace !== input.workspace)
694
+ throw new KiokukoError('NOT_FOUND', 'Entry does not belong to workspace');
695
+ let nextRevision;
696
+ if (owner.revision_count === 0) {
697
+ if (owner.min_revision !== null || owner.max_revision !== null || owner.current_revision !== 1)
698
+ storedIntegrity();
699
+ nextRevision = 1;
700
+ }
701
+ else {
702
+ if (!completeRevisionChain(owner))
703
+ storedIntegrity();
704
+ nextRevision = Number(owner.max_revision) + 1;
705
+ }
706
+ if (input.revision !== nextRevision) {
707
+ throw new KiokukoError('CONFLICT', 'Entry revision must be the exact next revision', {
708
+ expectedRevision: nextRevision,
709
+ actualRevision: input.revision,
710
+ });
711
+ }
712
+ const validated = validateRecordInput({
713
+ workspace: input.workspace,
714
+ kind: input.kind,
715
+ title: input.title,
716
+ body: input.body,
717
+ summary: input.summary,
718
+ scope: input.scope,
719
+ provenance: input.provenance,
720
+ tags: input.tags,
721
+ createdBy: input.createdBy,
722
+ actor: input.createdBy,
723
+ });
724
+ const canonicalScope = normalizeStructuredScopeInput(validated.scope);
725
+ const contentHash = canonicalEntryRevisionContentHash({
726
+ kind: validated.kind,
727
+ title: validated.title,
728
+ body: validated.body,
729
+ summary: validated.summary,
730
+ scope: canonicalScope,
731
+ provenance: validated.provenance,
732
+ tags: validated.tags,
733
+ });
734
+ if (input.contentHash !== undefined && input.contentHash !== contentHash) {
735
+ throw new KiokukoError('INTEGRITY_ERROR', 'Entry revision content hash does not match its content');
736
+ }
737
+ try {
738
+ database.prepare(`
739
+ INSERT INTO entry_revisions (
740
+ entry_id, workspace, revision, kind, title, body, summary, scope_json,
741
+ provenance_json, content_hash, created_by, created_at
742
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
743
+ `).run(input.entryId, input.workspace, input.revision, validated.kind, validated.title, validated.body, validated.summary, canonicalJson(canonicalScope), canonicalJson(validated.provenance), contentHash, input.createdBy, input.createdAt);
744
+ }
745
+ catch (error) {
746
+ if (isExpectedRevisionConflict(error)) {
747
+ throw new KiokukoError('CONFLICT', 'Entry revision or content already exists');
748
+ }
749
+ throw error;
750
+ }
751
+ for (const tag of validated.tags) {
752
+ database.prepare('INSERT INTO entry_revision_tags (entry_id, revision, tag) VALUES (?, ?, ?)').run(input.entryId, input.revision, tag);
753
+ }
754
+ const result = selectRevision(database, input, false);
755
+ if (result === undefined)
756
+ throw new KiokukoError('INTEGRITY_ERROR', 'Inserted entry revision could not be read back');
757
+ return result;
758
+ }
759
+ //# sourceMappingURL=revisions.js.map