kiokuko 1.0.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 (822) hide show
  1. package/LICENSE +21 -0
  2. package/README.ja.md +75 -0
  3. package/README.ko.md +60 -0
  4. package/README.md +90 -0
  5. package/README.zh-CN.md +61 -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 +55 -0
  17. package/dist/agent-file/render.js.map +1 -0
  18. package/dist/akinator/agent-task.d.ts +70 -0
  19. package/dist/akinator/agent-task.d.ts.map +1 -0
  20. package/dist/akinator/agent-task.js +657 -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/discovery-policy.d.ts +4 -0
  31. package/dist/akinator/discovery-policy.d.ts.map +1 -0
  32. package/dist/akinator/discovery-policy.js +4 -0
  33. package/dist/akinator/discovery-policy.js.map +1 -0
  34. package/dist/akinator/domain.d.ts +25 -0
  35. package/dist/akinator/domain.d.ts.map +1 -0
  36. package/dist/akinator/domain.js +266 -0
  37. package/dist/akinator/domain.js.map +1 -0
  38. package/dist/akinator/instructions.d.ts +3 -0
  39. package/dist/akinator/instructions.d.ts.map +1 -0
  40. package/dist/akinator/instructions.js +4 -0
  41. package/dist/akinator/instructions.js.map +1 -0
  42. package/dist/akinator/knowledge-path.d.ts +33 -0
  43. package/dist/akinator/knowledge-path.d.ts.map +1 -0
  44. package/dist/akinator/knowledge-path.js +474 -0
  45. package/dist/akinator/knowledge-path.js.map +1 -0
  46. package/dist/akinator/orchestrator.d.ts +7 -0
  47. package/dist/akinator/orchestrator.d.ts.map +1 -0
  48. package/dist/akinator/orchestrator.js +8 -0
  49. package/dist/akinator/orchestrator.js.map +1 -0
  50. package/dist/akinator/reasoning.d.ts +8 -0
  51. package/dist/akinator/reasoning.d.ts.map +1 -0
  52. package/dist/akinator/reasoning.js +118 -0
  53. package/dist/akinator/reasoning.js.map +1 -0
  54. package/dist/akinator/service.d.ts +32 -0
  55. package/dist/akinator/service.d.ts.map +1 -0
  56. package/dist/akinator/service.js +294 -0
  57. package/dist/akinator/service.js.map +1 -0
  58. package/dist/akinator/skill-discovery-attempt.d.ts +25 -0
  59. package/dist/akinator/skill-discovery-attempt.d.ts.map +1 -0
  60. package/dist/akinator/skill-discovery-attempt.js +465 -0
  61. package/dist/akinator/skill-discovery-attempt.js.map +1 -0
  62. package/dist/akinator/store.d.ts +96 -0
  63. package/dist/akinator/store.d.ts.map +1 -0
  64. package/dist/akinator/store.js +642 -0
  65. package/dist/akinator/store.js.map +1 -0
  66. package/dist/akinator/types.d.ts +70 -0
  67. package/dist/akinator/types.d.ts.map +1 -0
  68. package/dist/akinator/types.js +2 -0
  69. package/dist/akinator/types.js.map +1 -0
  70. package/dist/bin/kiokuko.d.ts +3 -0
  71. package/dist/bin/kiokuko.d.ts.map +1 -0
  72. package/dist/bin/kiokuko.js +13 -0
  73. package/dist/bin/kiokuko.js.map +1 -0
  74. package/dist/cli.d.ts +24 -0
  75. package/dist/cli.d.ts.map +1 -0
  76. package/dist/cli.js +957 -0
  77. package/dist/cli.js.map +1 -0
  78. package/dist/client/server-client.d.ts +22 -0
  79. package/dist/client/server-client.d.ts.map +1 -0
  80. package/dist/client/server-client.js +729 -0
  81. package/dist/client/server-client.js.map +1 -0
  82. package/dist/commands/agent.d.ts +12 -0
  83. package/dist/commands/agent.d.ts.map +1 -0
  84. package/dist/commands/agent.js +1138 -0
  85. package/dist/commands/agent.js.map +1 -0
  86. package/dist/commands/backup.d.ts +6 -0
  87. package/dist/commands/backup.d.ts.map +1 -0
  88. package/dist/commands/backup.js +77 -0
  89. package/dist/commands/backup.js.map +1 -0
  90. package/dist/commands/curator.d.ts +25 -0
  91. package/dist/commands/curator.d.ts.map +1 -0
  92. package/dist/commands/curator.js +58 -0
  93. package/dist/commands/curator.js.map +1 -0
  94. package/dist/commands/doctor.d.ts +57 -0
  95. package/dist/commands/doctor.d.ts.map +1 -0
  96. package/dist/commands/doctor.js +389 -0
  97. package/dist/commands/doctor.js.map +1 -0
  98. package/dist/commands/embeddings.d.ts +40 -0
  99. package/dist/commands/embeddings.d.ts.map +1 -0
  100. package/dist/commands/embeddings.js +315 -0
  101. package/dist/commands/embeddings.js.map +1 -0
  102. package/dist/commands/export.d.ts +17 -0
  103. package/dist/commands/export.d.ts.map +1 -0
  104. package/dist/commands/export.js +233 -0
  105. package/dist/commands/export.js.map +1 -0
  106. package/dist/commands/import.d.ts +24 -0
  107. package/dist/commands/import.d.ts.map +1 -0
  108. package/dist/commands/import.js +778 -0
  109. package/dist/commands/import.js.map +1 -0
  110. package/dist/commands/init.d.ts +21 -0
  111. package/dist/commands/init.d.ts.map +1 -0
  112. package/dist/commands/init.js +201 -0
  113. package/dist/commands/init.js.map +1 -0
  114. package/dist/commands/ledger.d.ts +7 -0
  115. package/dist/commands/ledger.d.ts.map +1 -0
  116. package/dist/commands/ledger.js +66 -0
  117. package/dist/commands/ledger.js.map +1 -0
  118. package/dist/commands/purge.d.ts +10 -0
  119. package/dist/commands/purge.d.ts.map +1 -0
  120. package/dist/commands/purge.js +29 -0
  121. package/dist/commands/purge.js.map +1 -0
  122. package/dist/commands/serve.d.ts +34 -0
  123. package/dist/commands/serve.d.ts.map +1 -0
  124. package/dist/commands/serve.js +120 -0
  125. package/dist/commands/serve.js.map +1 -0
  126. package/dist/commands/server-status.d.ts +20 -0
  127. package/dist/commands/server-status.d.ts.map +1 -0
  128. package/dist/commands/server-status.js +21 -0
  129. package/dist/commands/server-status.js.map +1 -0
  130. package/dist/commands/server.d.ts +13 -0
  131. package/dist/commands/server.d.ts.map +1 -0
  132. package/dist/commands/server.js +89 -0
  133. package/dist/commands/server.js.map +1 -0
  134. package/dist/commands/setup.d.ts +98 -0
  135. package/dist/commands/setup.d.ts.map +1 -0
  136. package/dist/commands/setup.js +690 -0
  137. package/dist/commands/setup.js.map +1 -0
  138. package/dist/commands/skills.d.ts +9 -0
  139. package/dist/commands/skills.d.ts.map +1 -0
  140. package/dist/commands/skills.js +317 -0
  141. package/dist/commands/skills.js.map +1 -0
  142. package/dist/commands/use.d.ts +40 -0
  143. package/dist/commands/use.d.ts.map +1 -0
  144. package/dist/commands/use.js +1090 -0
  145. package/dist/commands/use.js.map +1 -0
  146. package/dist/config/paths.d.ts +47 -0
  147. package/dist/config/paths.d.ts.map +1 -0
  148. package/dist/config/paths.js +324 -0
  149. package/dist/config/paths.js.map +1 -0
  150. package/dist/config/project-config.d.ts +11 -0
  151. package/dist/config/project-config.d.ts.map +1 -0
  152. package/dist/config/project-config.js +97 -0
  153. package/dist/config/project-config.js.map +1 -0
  154. package/dist/context/broker.d.ts +99 -0
  155. package/dist/context/broker.d.ts.map +1 -0
  156. package/dist/context/broker.js +923 -0
  157. package/dist/context/broker.js.map +1 -0
  158. package/dist/context/delivery.d.ts +60 -0
  159. package/dist/context/delivery.d.ts.map +1 -0
  160. package/dist/context/delivery.js +845 -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 +357 -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/inspection-snapshot.d.ts +4 -0
  215. package/dist/db/inspection-snapshot.d.ts.map +1 -0
  216. package/dist/db/inspection-snapshot.js +86 -0
  217. package/dist/db/inspection-snapshot.js.map +1 -0
  218. package/dist/db/migrate.d.ts +37 -0
  219. package/dist/db/migrate.d.ts.map +1 -0
  220. package/dist/db/migrate.js +202 -0
  221. package/dist/db/migrate.js.map +1 -0
  222. package/dist/db/serialized-backup.d.ts +58 -0
  223. package/dist/db/serialized-backup.d.ts.map +1 -0
  224. package/dist/db/serialized-backup.js +647 -0
  225. package/dist/db/serialized-backup.js.map +1 -0
  226. package/dist/db/sqlite-retry.d.ts +11 -0
  227. package/dist/db/sqlite-retry.d.ts.map +1 -0
  228. package/dist/db/sqlite-retry.js +70 -0
  229. package/dist/db/sqlite-retry.js.map +1 -0
  230. package/dist/db/transaction.d.ts +17 -0
  231. package/dist/db/transaction.d.ts.map +1 -0
  232. package/dist/db/transaction.js +68 -0
  233. package/dist/db/transaction.js.map +1 -0
  234. package/dist/embedding/backend.d.ts +27 -0
  235. package/dist/embedding/backend.d.ts.map +1 -0
  236. package/dist/embedding/backend.js +67 -0
  237. package/dist/embedding/backend.js.map +1 -0
  238. package/dist/embedding/config.d.ts +7 -0
  239. package/dist/embedding/config.d.ts.map +1 -0
  240. package/dist/embedding/config.js +125 -0
  241. package/dist/embedding/config.js.map +1 -0
  242. package/dist/embedding/diagnostics.d.ts +34 -0
  243. package/dist/embedding/diagnostics.d.ts.map +1 -0
  244. package/dist/embedding/diagnostics.js +274 -0
  245. package/dist/embedding/diagnostics.js.map +1 -0
  246. package/dist/embedding/document.d.ts +20 -0
  247. package/dist/embedding/document.d.ts.map +1 -0
  248. package/dist/embedding/document.js +122 -0
  249. package/dist/embedding/document.js.map +1 -0
  250. package/dist/embedding/javascript-backend.d.ts +11 -0
  251. package/dist/embedding/javascript-backend.d.ts.map +1 -0
  252. package/dist/embedding/javascript-backend.js +164 -0
  253. package/dist/embedding/javascript-backend.js.map +1 -0
  254. package/dist/embedding/jobs.d.ts +67 -0
  255. package/dist/embedding/jobs.d.ts.map +1 -0
  256. package/dist/embedding/jobs.js +259 -0
  257. package/dist/embedding/jobs.js.map +1 -0
  258. package/dist/embedding/local-model-loader.d.ts +24 -0
  259. package/dist/embedding/local-model-loader.d.ts.map +1 -0
  260. package/dist/embedding/local-model-loader.js +64 -0
  261. package/dist/embedding/local-model-loader.js.map +1 -0
  262. package/dist/embedding/local-transformers-provider.d.ts +17 -0
  263. package/dist/embedding/local-transformers-provider.d.ts.map +1 -0
  264. package/dist/embedding/local-transformers-provider.js +54 -0
  265. package/dist/embedding/local-transformers-provider.js.map +1 -0
  266. package/dist/embedding/model-download.d.ts +32 -0
  267. package/dist/embedding/model-download.d.ts.map +1 -0
  268. package/dist/embedding/model-download.js +41 -0
  269. package/dist/embedding/model-download.js.map +1 -0
  270. package/dist/embedding/model-installation.d.ts +17 -0
  271. package/dist/embedding/model-installation.d.ts.map +1 -0
  272. package/dist/embedding/model-installation.js +71 -0
  273. package/dist/embedding/model-installation.js.map +1 -0
  274. package/dist/embedding/model-manifest.d.ts +18 -0
  275. package/dist/embedding/model-manifest.d.ts.map +1 -0
  276. package/dist/embedding/model-manifest.js +86 -0
  277. package/dist/embedding/model-manifest.js.map +1 -0
  278. package/dist/embedding/openai-compatible-provider.d.ts +24 -0
  279. package/dist/embedding/openai-compatible-provider.d.ts.map +1 -0
  280. package/dist/embedding/openai-compatible-provider.js +330 -0
  281. package/dist/embedding/openai-compatible-provider.js.map +1 -0
  282. package/dist/embedding/presets/local-small.d.ts +8 -0
  283. package/dist/embedding/presets/local-small.d.ts.map +1 -0
  284. package/dist/embedding/presets/local-small.js +67 -0
  285. package/dist/embedding/presets/local-small.js.map +1 -0
  286. package/dist/embedding/presets/manifest.d.ts +27 -0
  287. package/dist/embedding/presets/manifest.d.ts.map +1 -0
  288. package/dist/embedding/presets/manifest.js +5 -0
  289. package/dist/embedding/presets/manifest.js.map +1 -0
  290. package/dist/embedding/profile.d.ts +10 -0
  291. package/dist/embedding/profile.d.ts.map +1 -0
  292. package/dist/embedding/profile.js +67 -0
  293. package/dist/embedding/profile.js.map +1 -0
  294. package/dist/embedding/provider.d.ts +13 -0
  295. package/dist/embedding/provider.d.ts.map +1 -0
  296. package/dist/embedding/provider.js +17 -0
  297. package/dist/embedding/provider.js.map +1 -0
  298. package/dist/embedding/query-cache.d.ts +45 -0
  299. package/dist/embedding/query-cache.d.ts.map +1 -0
  300. package/dist/embedding/query-cache.js +181 -0
  301. package/dist/embedding/query-cache.js.map +1 -0
  302. package/dist/embedding/runtime.d.ts +14 -0
  303. package/dist/embedding/runtime.d.ts.map +1 -0
  304. package/dist/embedding/runtime.js +407 -0
  305. package/dist/embedding/runtime.js.map +1 -0
  306. package/dist/embedding/settings.d.ts +6 -0
  307. package/dist/embedding/settings.d.ts.map +1 -0
  308. package/dist/embedding/settings.js +60 -0
  309. package/dist/embedding/settings.js.map +1 -0
  310. package/dist/embedding/setup-lock.d.ts +7 -0
  311. package/dist/embedding/setup-lock.d.ts.map +1 -0
  312. package/dist/embedding/setup-lock.js +35 -0
  313. package/dist/embedding/setup-lock.js.map +1 -0
  314. package/dist/embedding/setup-service.d.ts +47 -0
  315. package/dist/embedding/setup-service.d.ts.map +1 -0
  316. package/dist/embedding/setup-service.js +181 -0
  317. package/dist/embedding/setup-service.js.map +1 -0
  318. package/dist/embedding/sqlite-vec-backend.d.ts +9 -0
  319. package/dist/embedding/sqlite-vec-backend.d.ts.map +1 -0
  320. package/dist/embedding/sqlite-vec-backend.js +106 -0
  321. package/dist/embedding/sqlite-vec-backend.js.map +1 -0
  322. package/dist/embedding/sqlite-vec-loader.d.ts +17 -0
  323. package/dist/embedding/sqlite-vec-loader.d.ts.map +1 -0
  324. package/dist/embedding/sqlite-vec-loader.js +51 -0
  325. package/dist/embedding/sqlite-vec-loader.js.map +1 -0
  326. package/dist/embedding/store.d.ts +66 -0
  327. package/dist/embedding/store.d.ts.map +1 -0
  328. package/dist/embedding/store.js +474 -0
  329. package/dist/embedding/store.js.map +1 -0
  330. package/dist/embedding/types.d.ts +126 -0
  331. package/dist/embedding/types.d.ts.map +1 -0
  332. package/dist/embedding/types.js +2 -0
  333. package/dist/embedding/types.js.map +1 -0
  334. package/dist/embedding/vector.d.ts +9 -0
  335. package/dist/embedding/vector.d.ts.map +1 -0
  336. package/dist/embedding/vector.js +90 -0
  337. package/dist/embedding/vector.js.map +1 -0
  338. package/dist/embedding/worker.d.ts +23 -0
  339. package/dist/embedding/worker.d.ts.map +1 -0
  340. package/dist/embedding/worker.js +84 -0
  341. package/dist/embedding/worker.js.map +1 -0
  342. package/dist/errors.d.ts +13 -0
  343. package/dist/errors.d.ts.map +1 -0
  344. package/dist/errors.js +53 -0
  345. package/dist/errors.js.map +1 -0
  346. package/dist/gateway/agent-service.d.ts +72 -0
  347. package/dist/gateway/agent-service.d.ts.map +1 -0
  348. package/dist/gateway/agent-service.js +594 -0
  349. package/dist/gateway/agent-service.js.map +1 -0
  350. package/dist/gateway/checkpoint-mutation-service.d.ts +33 -0
  351. package/dist/gateway/checkpoint-mutation-service.d.ts.map +1 -0
  352. package/dist/gateway/checkpoint-mutation-service.js +503 -0
  353. package/dist/gateway/checkpoint-mutation-service.js.map +1 -0
  354. package/dist/gateway/checkpoint-service.d.ts +17 -0
  355. package/dist/gateway/checkpoint-service.d.ts.map +1 -0
  356. package/dist/gateway/checkpoint-service.js +123 -0
  357. package/dist/gateway/checkpoint-service.js.map +1 -0
  358. package/dist/gateway/nudge-delivery-service.d.ts +21 -0
  359. package/dist/gateway/nudge-delivery-service.d.ts.map +1 -0
  360. package/dist/gateway/nudge-delivery-service.js +67 -0
  361. package/dist/gateway/nudge-delivery-service.js.map +1 -0
  362. package/dist/ledger/archive.d.ts +48 -0
  363. package/dist/ledger/archive.d.ts.map +1 -0
  364. package/dist/ledger/archive.js +1252 -0
  365. package/dist/ledger/archive.js.map +1 -0
  366. package/dist/ledger/checkpoint-contract.d.ts +144 -0
  367. package/dist/ledger/checkpoint-contract.d.ts.map +1 -0
  368. package/dist/ledger/checkpoint-contract.js +91 -0
  369. package/dist/ledger/checkpoint-contract.js.map +1 -0
  370. package/dist/ledger/checkpoint-eligibility.d.ts +17 -0
  371. package/dist/ledger/checkpoint-eligibility.d.ts.map +1 -0
  372. package/dist/ledger/checkpoint-eligibility.js +19 -0
  373. package/dist/ledger/checkpoint-eligibility.js.map +1 -0
  374. package/dist/ledger/hash.d.ts +22 -0
  375. package/dist/ledger/hash.d.ts.map +1 -0
  376. package/dist/ledger/hash.js +25 -0
  377. package/dist/ledger/hash.js.map +1 -0
  378. package/dist/ledger/maintenance.d.ts +68 -0
  379. package/dist/ledger/maintenance.d.ts.map +1 -0
  380. package/dist/ledger/maintenance.js +758 -0
  381. package/dist/ledger/maintenance.js.map +1 -0
  382. package/dist/ledger/projection.d.ts +38 -0
  383. package/dist/ledger/projection.d.ts.map +1 -0
  384. package/dist/ledger/projection.js +315 -0
  385. package/dist/ledger/projection.js.map +1 -0
  386. package/dist/ledger/promotion.d.ts +19 -0
  387. package/dist/ledger/promotion.d.ts.map +1 -0
  388. package/dist/ledger/promotion.js +310 -0
  389. package/dist/ledger/promotion.js.map +1 -0
  390. package/dist/ledger/query.d.ts +41 -0
  391. package/dist/ledger/query.d.ts.map +1 -0
  392. package/dist/ledger/query.js +321 -0
  393. package/dist/ledger/query.js.map +1 -0
  394. package/dist/ledger/redaction.d.ts +8 -0
  395. package/dist/ledger/redaction.d.ts.map +1 -0
  396. package/dist/ledger/redaction.js +40 -0
  397. package/dist/ledger/redaction.js.map +1 -0
  398. package/dist/ledger/store.d.ts +45 -0
  399. package/dist/ledger/store.d.ts.map +1 -0
  400. package/dist/ledger/store.js +327 -0
  401. package/dist/ledger/store.js.map +1 -0
  402. package/dist/ledger/types.d.ts +115 -0
  403. package/dist/ledger/types.d.ts.map +1 -0
  404. package/dist/ledger/types.js +22 -0
  405. package/dist/ledger/types.js.map +1 -0
  406. package/dist/ledger/validate.d.ts +10 -0
  407. package/dist/ledger/validate.d.ts.map +1 -0
  408. package/dist/ledger/validate.js +178 -0
  409. package/dist/ledger/validate.js.map +1 -0
  410. package/dist/mcp/bounded-stdio-transport.d.ts +26 -0
  411. package/dist/mcp/bounded-stdio-transport.d.ts.map +1 -0
  412. package/dist/mcp/bounded-stdio-transport.js +121 -0
  413. package/dist/mcp/bounded-stdio-transport.js.map +1 -0
  414. package/dist/mcp/client-identity.d.ts +22 -0
  415. package/dist/mcp/client-identity.d.ts.map +1 -0
  416. package/dist/mcp/client-identity.js +65 -0
  417. package/dist/mcp/client-identity.js.map +1 -0
  418. package/dist/mcp/request-deadline.d.ts +51 -0
  419. package/dist/mcp/request-deadline.d.ts.map +1 -0
  420. package/dist/mcp/request-deadline.js +147 -0
  421. package/dist/mcp/request-deadline.js.map +1 -0
  422. package/dist/mcp/runtime-owner.d.ts +27 -0
  423. package/dist/mcp/runtime-owner.d.ts.map +1 -0
  424. package/dist/mcp/runtime-owner.js +129 -0
  425. package/dist/mcp/runtime-owner.js.map +1 -0
  426. package/dist/mcp/server.d.ts +24 -0
  427. package/dist/mcp/server.d.ts.map +1 -0
  428. package/dist/mcp/server.js +415 -0
  429. package/dist/mcp/server.js.map +1 -0
  430. package/dist/memory/audit.d.ts +13 -0
  431. package/dist/memory/audit.d.ts.map +1 -0
  432. package/dist/memory/audit.js +15 -0
  433. package/dist/memory/audit.js.map +1 -0
  434. package/dist/memory/checkpoint-contract.d.ts +490 -0
  435. package/dist/memory/checkpoint-contract.d.ts.map +1 -0
  436. package/dist/memory/checkpoint-contract.js +106 -0
  437. package/dist/memory/checkpoint-contract.js.map +1 -0
  438. package/dist/memory/curator-trust.d.ts +9 -0
  439. package/dist/memory/curator-trust.d.ts.map +1 -0
  440. package/dist/memory/curator-trust.js +47 -0
  441. package/dist/memory/curator-trust.js.map +1 -0
  442. package/dist/memory/curator.d.ts +115 -0
  443. package/dist/memory/curator.d.ts.map +1 -0
  444. package/dist/memory/curator.js +674 -0
  445. package/dist/memory/curator.js.map +1 -0
  446. package/dist/memory/entries.d.ts +75 -0
  447. package/dist/memory/entries.d.ts.map +1 -0
  448. package/dist/memory/entries.js +355 -0
  449. package/dist/memory/entries.js.map +1 -0
  450. package/dist/memory/federated-retrieval.d.ts +79 -0
  451. package/dist/memory/federated-retrieval.d.ts.map +1 -0
  452. package/dist/memory/federated-retrieval.js +515 -0
  453. package/dist/memory/federated-retrieval.js.map +1 -0
  454. package/dist/memory/hybrid-retrieval.d.ts +33 -0
  455. package/dist/memory/hybrid-retrieval.d.ts.map +1 -0
  456. package/dist/memory/hybrid-retrieval.js +398 -0
  457. package/dist/memory/hybrid-retrieval.js.map +1 -0
  458. package/dist/memory/lifecycle.d.ts +29 -0
  459. package/dist/memory/lifecycle.d.ts.map +1 -0
  460. package/dist/memory/lifecycle.js +65 -0
  461. package/dist/memory/lifecycle.js.map +1 -0
  462. package/dist/memory/portability.d.ts +10 -0
  463. package/dist/memory/portability.d.ts.map +1 -0
  464. package/dist/memory/portability.js +44 -0
  465. package/dist/memory/portability.js.map +1 -0
  466. package/dist/memory/rebuild-search.d.ts +19 -0
  467. package/dist/memory/rebuild-search.d.ts.map +1 -0
  468. package/dist/memory/rebuild-search.js +138 -0
  469. package/dist/memory/rebuild-search.js.map +1 -0
  470. package/dist/memory/retrieval-query.d.ts +16 -0
  471. package/dist/memory/retrieval-query.d.ts.map +1 -0
  472. package/dist/memory/retrieval-query.js +161 -0
  473. package/dist/memory/retrieval-query.js.map +1 -0
  474. package/dist/memory/retrieval.d.ts +56 -0
  475. package/dist/memory/retrieval.d.ts.map +1 -0
  476. package/dist/memory/retrieval.js +101 -0
  477. package/dist/memory/retrieval.js.map +1 -0
  478. package/dist/memory/revisions.d.ts +109 -0
  479. package/dist/memory/revisions.d.ts.map +1 -0
  480. package/dist/memory/revisions.js +409 -0
  481. package/dist/memory/revisions.js.map +1 -0
  482. package/dist/memory/scoped-memory.d.ts +76 -0
  483. package/dist/memory/scoped-memory.d.ts.map +1 -0
  484. package/dist/memory/scoped-memory.js +530 -0
  485. package/dist/memory/scoped-memory.js.map +1 -0
  486. package/dist/memory/secrets.d.ts +8 -0
  487. package/dist/memory/secrets.d.ts.map +1 -0
  488. package/dist/memory/secrets.js +54 -0
  489. package/dist/memory/secrets.js.map +1 -0
  490. package/dist/memory/structured-memory.d.ts +56 -0
  491. package/dist/memory/structured-memory.d.ts.map +1 -0
  492. package/dist/memory/structured-memory.js +281 -0
  493. package/dist/memory/structured-memory.js.map +1 -0
  494. package/dist/memory/workspaces.d.ts +26 -0
  495. package/dist/memory/workspaces.d.ts.map +1 -0
  496. package/dist/memory/workspaces.js +159 -0
  497. package/dist/memory/workspaces.js.map +1 -0
  498. package/dist/package-version.d.ts +2 -0
  499. package/dist/package-version.d.ts.map +1 -0
  500. package/dist/package-version.js +7 -0
  501. package/dist/package-version.js.map +1 -0
  502. package/dist/repository/binding.d.ts +32 -0
  503. package/dist/repository/binding.d.ts.map +1 -0
  504. package/dist/repository/binding.js +208 -0
  505. package/dist/repository/binding.js.map +1 -0
  506. package/dist/repository/cwd-schema.d.ts +4 -0
  507. package/dist/repository/cwd-schema.d.ts.map +1 -0
  508. package/dist/repository/cwd-schema.js +8 -0
  509. package/dist/repository/cwd-schema.js.map +1 -0
  510. package/dist/repository/detect-root.d.ts +13 -0
  511. package/dist/repository/detect-root.d.ts.map +1 -0
  512. package/dist/repository/detect-root.js +77 -0
  513. package/dist/repository/detect-root.js.map +1 -0
  514. package/dist/repository/framework-version.d.ts +8 -0
  515. package/dist/repository/framework-version.d.ts.map +1 -0
  516. package/dist/repository/framework-version.js +29 -0
  517. package/dist/repository/framework-version.js.map +1 -0
  518. package/dist/repository/git-origin.d.ts +2 -0
  519. package/dist/repository/git-origin.d.ts.map +1 -0
  520. package/dist/repository/git-origin.js +15 -0
  521. package/dist/repository/git-origin.js.map +1 -0
  522. package/dist/repository/gitignore.d.ts +8 -0
  523. package/dist/repository/gitignore.d.ts.map +1 -0
  524. package/dist/repository/gitignore.js +21 -0
  525. package/dist/repository/gitignore.js.map +1 -0
  526. package/dist/repository/identity-value.d.ts +4 -0
  527. package/dist/repository/identity-value.d.ts.map +1 -0
  528. package/dist/repository/identity-value.js +24 -0
  529. package/dist/repository/identity-value.js.map +1 -0
  530. package/dist/repository/identity.d.ts +19 -0
  531. package/dist/repository/identity.d.ts.map +1 -0
  532. package/dist/repository/identity.js +25 -0
  533. package/dist/repository/identity.js.map +1 -0
  534. package/dist/repository/project-fingerprint.d.ts +33 -0
  535. package/dist/repository/project-fingerprint.d.ts.map +1 -0
  536. package/dist/repository/project-fingerprint.js +429 -0
  537. package/dist/repository/project-fingerprint.js.map +1 -0
  538. package/dist/repository/remote-url.d.ts +3 -0
  539. package/dist/repository/remote-url.d.ts.map +1 -0
  540. package/dist/repository/remote-url.js +35 -0
  541. package/dist/repository/remote-url.js.map +1 -0
  542. package/dist/runtime-version.d.ts +6 -0
  543. package/dist/runtime-version.d.ts.map +1 -0
  544. package/dist/runtime-version.js +33 -0
  545. package/dist/runtime-version.js.map +1 -0
  546. package/dist/security/sanitize.d.ts +4 -0
  547. package/dist/security/sanitize.d.ts.map +1 -0
  548. package/dist/security/sanitize.js +174 -0
  549. package/dist/security/sanitize.js.map +1 -0
  550. package/dist/serialization/boundary-json.d.ts +20 -0
  551. package/dist/serialization/boundary-json.d.ts.map +1 -0
  552. package/dist/serialization/boundary-json.js +129 -0
  553. package/dist/serialization/boundary-json.js.map +1 -0
  554. package/dist/serialization/envelope.d.ts +20 -0
  555. package/dist/serialization/envelope.d.ts.map +1 -0
  556. package/dist/serialization/envelope.js +11 -0
  557. package/dist/serialization/envelope.js.map +1 -0
  558. package/dist/serialization/validate.d.ts +38 -0
  559. package/dist/serialization/validate.d.ts.map +1 -0
  560. package/dist/serialization/validate.js +233 -0
  561. package/dist/serialization/validate.js.map +1 -0
  562. package/dist/server/agent-application.d.ts +6 -0
  563. package/dist/server/agent-application.d.ts.map +1 -0
  564. package/dist/server/agent-application.js +74 -0
  565. package/dist/server/agent-application.js.map +1 -0
  566. package/dist/server/agent-checkpoint-use-case.d.ts +40 -0
  567. package/dist/server/agent-checkpoint-use-case.d.ts.map +1 -0
  568. package/dist/server/agent-checkpoint-use-case.js +157 -0
  569. package/dist/server/agent-checkpoint-use-case.js.map +1 -0
  570. package/dist/server/app.d.ts +5 -0
  571. package/dist/server/app.d.ts.map +1 -0
  572. package/dist/server/app.js +87 -0
  573. package/dist/server/app.js.map +1 -0
  574. package/dist/server/auth.d.ts +2 -0
  575. package/dist/server/auth.d.ts.map +1 -0
  576. package/dist/server/auth.js +22 -0
  577. package/dist/server/auth.js.map +1 -0
  578. package/dist/server/http.d.ts +86 -0
  579. package/dist/server/http.d.ts.map +1 -0
  580. package/dist/server/http.js +455 -0
  581. package/dist/server/http.js.map +1 -0
  582. package/dist/server/idempotency.d.ts +6 -0
  583. package/dist/server/idempotency.d.ts.map +1 -0
  584. package/dist/server/idempotency.js +210 -0
  585. package/dist/server/idempotency.js.map +1 -0
  586. package/dist/server/instance-lock.d.ts +17 -0
  587. package/dist/server/instance-lock.d.ts.map +1 -0
  588. package/dist/server/instance-lock.js +118 -0
  589. package/dist/server/instance-lock.js.map +1 -0
  590. package/dist/server/router.d.ts +29 -0
  591. package/dist/server/router.d.ts.map +1 -0
  592. package/dist/server/router.js +129 -0
  593. package/dist/server/router.js.map +1 -0
  594. package/dist/server/routes/agent-capability-gate.d.ts +43 -0
  595. package/dist/server/routes/agent-capability-gate.d.ts.map +1 -0
  596. package/dist/server/routes/agent-capability-gate.js +202 -0
  597. package/dist/server/routes/agent-capability-gate.js.map +1 -0
  598. package/dist/server/routes/agent-events.d.ts +5 -0
  599. package/dist/server/routes/agent-events.d.ts.map +1 -0
  600. package/dist/server/routes/agent-events.js +53 -0
  601. package/dist/server/routes/agent-events.js.map +1 -0
  602. package/dist/server/routes/agent-intake.d.ts +5 -0
  603. package/dist/server/routes/agent-intake.d.ts.map +1 -0
  604. package/dist/server/routes/agent-intake.js +50 -0
  605. package/dist/server/routes/agent-intake.js.map +1 -0
  606. package/dist/server/routes/agent-promotions.d.ts +5 -0
  607. package/dist/server/routes/agent-promotions.d.ts.map +1 -0
  608. package/dist/server/routes/agent-promotions.js +55 -0
  609. package/dist/server/routes/agent-promotions.js.map +1 -0
  610. package/dist/server/routes/agent-runs.d.ts +26 -0
  611. package/dist/server/routes/agent-runs.d.ts.map +1 -0
  612. package/dist/server/routes/agent-runs.js +165 -0
  613. package/dist/server/routes/agent-runs.js.map +1 -0
  614. package/dist/server/routes/request-binding.d.ts +5 -0
  615. package/dist/server/routes/request-binding.d.ts.map +1 -0
  616. package/dist/server/routes/request-binding.js +49 -0
  617. package/dist/server/routes/request-binding.js.map +1 -0
  618. package/dist/server/routes/task5-support.d.ts +4 -0
  619. package/dist/server/routes/task5-support.d.ts.map +1 -0
  620. package/dist/server/routes/task5-support.js +6 -0
  621. package/dist/server/routes/task5-support.js.map +1 -0
  622. package/dist/server/routes/task5.d.ts +5 -0
  623. package/dist/server/routes/task5.d.ts.map +1 -0
  624. package/dist/server/routes/task5.js +56 -0
  625. package/dist/server/routes/task5.js.map +1 -0
  626. package/dist/server/runtime-descriptor.d.ts +24 -0
  627. package/dist/server/runtime-descriptor.d.ts.map +1 -0
  628. package/dist/server/runtime-descriptor.js +156 -0
  629. package/dist/server/runtime-descriptor.js.map +1 -0
  630. package/dist/server/write-queue.d.ts +20 -0
  631. package/dist/server/write-queue.d.ts.map +1 -0
  632. package/dist/server/write-queue.js +83 -0
  633. package/dist/server/write-queue.js.map +1 -0
  634. package/dist/setup/claude-config.d.ts +6 -0
  635. package/dist/setup/claude-config.d.ts.map +1 -0
  636. package/dist/setup/claude-config.js +83 -0
  637. package/dist/setup/claude-config.js.map +1 -0
  638. package/dist/setup/client-detection.d.ts +13 -0
  639. package/dist/setup/client-detection.d.ts.map +1 -0
  640. package/dist/setup/client-detection.js +64 -0
  641. package/dist/setup/client-detection.js.map +1 -0
  642. package/dist/setup/hermes-config.d.ts +7 -0
  643. package/dist/setup/hermes-config.d.ts.map +1 -0
  644. package/dist/setup/hermes-config.js +145 -0
  645. package/dist/setup/hermes-config.js.map +1 -0
  646. package/dist/setup/managed-text.d.ts +6 -0
  647. package/dist/setup/managed-text.d.ts.map +1 -0
  648. package/dist/setup/managed-text.js +52 -0
  649. package/dist/setup/managed-text.js.map +1 -0
  650. package/dist/setup/mcp-conflict.d.ts +4 -0
  651. package/dist/setup/mcp-conflict.d.ts.map +1 -0
  652. package/dist/setup/mcp-conflict.js +15 -0
  653. package/dist/setup/mcp-conflict.js.map +1 -0
  654. package/dist/setup/opencode-config.d.ts +6 -0
  655. package/dist/setup/opencode-config.d.ts.map +1 -0
  656. package/dist/setup/opencode-config.js +86 -0
  657. package/dist/setup/opencode-config.js.map +1 -0
  658. package/dist/setup/project-agent-refresh.d.ts +41 -0
  659. package/dist/setup/project-agent-refresh.d.ts.map +1 -0
  660. package/dist/setup/project-agent-refresh.js +158 -0
  661. package/dist/setup/project-agent-refresh.js.map +1 -0
  662. package/dist/setup/render.d.ts +11 -0
  663. package/dist/setup/render.d.ts.map +1 -0
  664. package/dist/setup/render.js +323 -0
  665. package/dist/setup/render.js.map +1 -0
  666. package/dist/setup/standard-skills.d.ts +52 -0
  667. package/dist/setup/standard-skills.d.ts.map +1 -0
  668. package/dist/setup/standard-skills.js +125 -0
  669. package/dist/setup/standard-skills.js.map +1 -0
  670. package/dist/setup/strict-json.d.ts +7 -0
  671. package/dist/setup/strict-json.d.ts.map +1 -0
  672. package/dist/setup/strict-json.js +98 -0
  673. package/dist/setup/strict-json.js.map +1 -0
  674. package/dist/setup/strict-toml.d.ts +18 -0
  675. package/dist/setup/strict-toml.d.ts.map +1 -0
  676. package/dist/setup/strict-toml.js +491 -0
  677. package/dist/setup/strict-toml.js.map +1 -0
  678. package/dist/skills/cache.d.ts +15 -0
  679. package/dist/skills/cache.d.ts.map +1 -0
  680. package/dist/skills/cache.js +19 -0
  681. package/dist/skills/cache.js.map +1 -0
  682. package/dist/skills/candidate-ranking.d.ts +15 -0
  683. package/dist/skills/candidate-ranking.d.ts.map +1 -0
  684. package/dist/skills/candidate-ranking.js +52 -0
  685. package/dist/skills/candidate-ranking.js.map +1 -0
  686. package/dist/skills/chunking.d.ts +11 -0
  687. package/dist/skills/chunking.d.ts.map +1 -0
  688. package/dist/skills/chunking.js +291 -0
  689. package/dist/skills/chunking.js.map +1 -0
  690. package/dist/skills/config.d.ts +19 -0
  691. package/dist/skills/config.d.ts.map +1 -0
  692. package/dist/skills/config.js +103 -0
  693. package/dist/skills/config.js.map +1 -0
  694. package/dist/skills/discovery-service.d.ts +26 -0
  695. package/dist/skills/discovery-service.d.ts.map +1 -0
  696. package/dist/skills/discovery-service.js +929 -0
  697. package/dist/skills/discovery-service.js.map +1 -0
  698. package/dist/skills/external-transport.d.ts +2 -0
  699. package/dist/skills/external-transport.d.ts.map +1 -0
  700. package/dist/skills/external-transport.js +30 -0
  701. package/dist/skills/external-transport.js.map +1 -0
  702. package/dist/skills/find.d.ts +17 -0
  703. package/dist/skills/find.d.ts.map +1 -0
  704. package/dist/skills/find.js +59 -0
  705. package/dist/skills/find.js.map +1 -0
  706. package/dist/skills/gap-detection.d.ts +23 -0
  707. package/dist/skills/gap-detection.d.ts.map +1 -0
  708. package/dist/skills/gap-detection.js +62 -0
  709. package/dist/skills/gap-detection.js.map +1 -0
  710. package/dist/skills/import-preparation.d.ts +4 -0
  711. package/dist/skills/import-preparation.d.ts.map +1 -0
  712. package/dist/skills/import-preparation.js +20 -0
  713. package/dist/skills/import-preparation.js.map +1 -0
  714. package/dist/skills/materialization-authority.d.ts +11 -0
  715. package/dist/skills/materialization-authority.d.ts.map +1 -0
  716. package/dist/skills/materialization-authority.js +92 -0
  717. package/dist/skills/materialization-authority.js.map +1 -0
  718. package/dist/skills/materialization-service.d.ts +22 -0
  719. package/dist/skills/materialization-service.d.ts.map +1 -0
  720. package/dist/skills/materialization-service.js +101 -0
  721. package/dist/skills/materialization-service.js.map +1 -0
  722. package/dist/skills/official-catalog.d.ts +31 -0
  723. package/dist/skills/official-catalog.d.ts.map +1 -0
  724. package/dist/skills/official-catalog.js +110 -0
  725. package/dist/skills/official-catalog.js.map +1 -0
  726. package/dist/skills/providers/schema.d.ts +30 -0
  727. package/dist/skills/providers/schema.d.ts.map +1 -0
  728. package/dist/skills/providers/schema.js +354 -0
  729. package/dist/skills/providers/schema.js.map +1 -0
  730. package/dist/skills/providers/skills-sh-compat.d.ts +17 -0
  731. package/dist/skills/providers/skills-sh-compat.d.ts.map +1 -0
  732. package/dist/skills/providers/skills-sh-compat.js +73 -0
  733. package/dist/skills/providers/skills-sh-compat.js.map +1 -0
  734. package/dist/skills/providers/skills-sh-v1.d.ts +23 -0
  735. package/dist/skills/providers/skills-sh-v1.d.ts.map +1 -0
  736. package/dist/skills/providers/skills-sh-v1.js +152 -0
  737. package/dist/skills/providers/skills-sh-v1.js.map +1 -0
  738. package/dist/skills/query-builder.d.ts +18 -0
  739. package/dist/skills/query-builder.d.ts.map +1 -0
  740. package/dist/skills/query-builder.js +93 -0
  741. package/dist/skills/query-builder.js.map +1 -0
  742. package/dist/skills/source/errors.d.ts +9 -0
  743. package/dist/skills/source/errors.d.ts.map +1 -0
  744. package/dist/skills/source/errors.js +15 -0
  745. package/dist/skills/source/errors.js.map +1 -0
  746. package/dist/skills/source/frontmatter.d.ts +9 -0
  747. package/dist/skills/source/frontmatter.d.ts.map +1 -0
  748. package/dist/skills/source/frontmatter.js +77 -0
  749. package/dist/skills/source/frontmatter.js.map +1 -0
  750. package/dist/skills/source/github-fetcher.d.ts +20 -0
  751. package/dist/skills/source/github-fetcher.d.ts.map +1 -0
  752. package/dist/skills/source/github-fetcher.js +296 -0
  753. package/dist/skills/source/github-fetcher.js.map +1 -0
  754. package/dist/skills/source/snapshot-validator.d.ts +28 -0
  755. package/dist/skills/source/snapshot-validator.d.ts.map +1 -0
  756. package/dist/skills/source/snapshot-validator.js +186 -0
  757. package/dist/skills/source/snapshot-validator.js.map +1 -0
  758. package/dist/skills/store.d.ts +180 -0
  759. package/dist/skills/store.d.ts.map +1 -0
  760. package/dist/skills/store.js +1712 -0
  761. package/dist/skills/store.js.map +1 -0
  762. package/dist/skills/types.d.ts +171 -0
  763. package/dist/skills/types.d.ts.map +1 -0
  764. package/dist/skills/types.js +2 -0
  765. package/dist/skills/types.js.map +1 -0
  766. package/dist/web/i18n.d.ts +184 -0
  767. package/dist/web/i18n.d.ts.map +1 -0
  768. package/dist/web/i18n.js +733 -0
  769. package/dist/web/i18n.js.map +1 -0
  770. package/dist/web/server.d.ts +16 -0
  771. package/dist/web/server.d.ts.map +1 -0
  772. package/dist/web/server.js +864 -0
  773. package/dist/web/server.js.map +1 -0
  774. package/dist/web/ui.d.ts +6 -0
  775. package/dist/web/ui.d.ts.map +1 -0
  776. package/dist/web/ui.js +1328 -0
  777. package/dist/web/ui.js.map +1 -0
  778. package/docs/README.ja.md +13 -0
  779. package/docs/README.md +15 -0
  780. package/docs/agent-file.md +53 -0
  781. package/docs/agent-gateway.md +102 -0
  782. package/docs/architecture.md +12 -0
  783. package/docs/breaking-changes-1.0.md +64 -0
  784. package/docs/cli-contract.md +39 -0
  785. package/docs/client-compatibility.md +110 -0
  786. package/docs/concepts.ja.md +25 -0
  787. package/docs/concepts.md +33 -0
  788. package/docs/database.md +20 -0
  789. package/docs/execution-ledger.md +68 -0
  790. package/docs/getting-started.ja.md +45 -0
  791. package/docs/getting-started.md +49 -0
  792. package/docs/release-notes-0.1.18.md +105 -0
  793. package/docs/retrieval-evaluation.md +10 -0
  794. package/docs/security-and-trust.ja.md +29 -0
  795. package/docs/security-and-trust.md +39 -0
  796. package/docs/security.md +11 -0
  797. package/docs/semantic-retrieval.ja.md +18 -0
  798. package/docs/semantic-retrieval.md +26 -0
  799. package/docs/sqlite-driver-adr.md +8 -0
  800. package/migrations/001_baseline.sql +972 -0
  801. package/package.json +81 -0
  802. package/skills/kiokuko-simple-work/SKILL.md +112 -0
  803. package/skills/kiokuko-single-purpose-functions/SKILL.md +81 -0
  804. package/skills/kiokuko-single-purpose-functions/references/boundaries-and-ownership.md +50 -0
  805. package/skills/kiokuko-single-purpose-functions/references/domain-and-types.md +48 -0
  806. package/skills/kiokuko-single-purpose-functions/references/effects-and-data.md +43 -0
  807. package/skills/kiokuko-single-purpose-functions/references/kiokuko-patterns.md +344 -0
  808. package/skills/kiokuko-single-purpose-functions/references/problem-shaping-and-language.md +84 -0
  809. package/skills/kiokuko-single-purpose-functions/references/protocols-and-idempotency.md +42 -0
  810. package/skills/kiokuko-single-purpose-functions/references/review-checklist.md +97 -0
  811. package/skills/kiokuko-single-purpose-functions/references/verification.md +41 -0
  812. package/skills/kiokuko-soul/SKILL.md +93 -0
  813. package/skills/kiokuko-ui-design-soul/SKILL.md +71 -0
  814. package/skills/kiokuko-ui-design-soul/references/accessibility-and-navigation.md +31 -0
  815. package/skills/kiokuko-ui-design-soul/references/async-recovery.md +49 -0
  816. package/skills/kiokuko-ui-design-soul/references/forms-and-controls.md +35 -0
  817. package/skills/kiokuko-ui-design-soul/references/interaction-feedback.md +34 -0
  818. package/skills/kiokuko-ui-design-soul/references/responsive-and-platform.md +38 -0
  819. package/skills/kiokuko-ui-design-soul/references/safety-and-review.md +39 -0
  820. package/skills/kiokuko-ui-design-soul/references/ui-checklist.md +71 -0
  821. package/skills/memory-reasoning/SKILL.md +52 -0
  822. package/templates/AGENTS.md +39 -0
@@ -0,0 +1,642 @@
1
+ import { KiokukoError } from '../errors.js';
2
+ import { canonicalJson, requireWorkspace } from '../serialization/validate.js';
3
+ import { parseStrictJson } from '../setup/strict-json.js';
4
+ import { evaluateProfile } from './domain.js';
5
+ import { TASK_TYPES } from './types.js';
6
+ const SESSION_INPUT_FIELDS = new Set([
7
+ 'id', 'workspace', 'task', 'profile', 'status', 'questionCount', 'createdAt', 'updatedAt',
8
+ ]);
9
+ const SESSION_READ_FIELDS = new Set(['workspace', 'sessionId']);
10
+ const SESSION_UPDATE_FIELDS = new Set([
11
+ 'workspace', 'sessionId', 'expectedQuestionCount', 'profile', 'status', 'questionCount', 'updatedAt',
12
+ ]);
13
+ const ANSWER_FIELDS = new Set(['workspace', 'sessionId', 'questionId', 'answer', 'createdAt']);
14
+ const ANSWER_READ_FIELDS = new Set(['workspace', 'sessionId', 'questionId']);
15
+ const INTAKE_LINK_FIELDS = new Set([
16
+ 'runId', 'sessionId', 'workspace', 'policyVersion', 'profileSchemaVersion', 'profileSources',
17
+ 'initialProfileHash', 'recommendedTags', 'linkedAt', 'finalizedAt',
18
+ ]);
19
+ const INTAKE_LINK_READ_FIELDS = new Set(['workspace', 'runId']);
20
+ const INTAKE_LINK_FINALIZE_FIELDS = new Set(['workspace', 'runId', 'profileHash', 'recommendedTags', 'finalizedAt']);
21
+ const INTAKE_LINK_SOURCE_FIELDS = new Set(['workspace', 'runId', 'field']);
22
+ const PROFILE_FIELDS = new Set(['taskType', 'target', 'expected', 'constraints']);
23
+ const PROFILE_SOURCE_VALUES = ['inferred', 'client_supplied', 'user_answer'];
24
+ const SESSION_STATUSES = ['active', 'ready', 'exhausted'];
25
+ const TIMESTAMP_PATTERN = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;
26
+ function fail(code, message) {
27
+ throw new KiokukoError(code, message);
28
+ }
29
+ function validation() {
30
+ return fail('VALIDATION_ERROR', 'Invalid Akinator store input');
31
+ }
32
+ function integrity() {
33
+ return fail('INTEGRITY_ERROR', 'Akinator store data is invalid');
34
+ }
35
+ function notFoundSession() {
36
+ return fail('NOT_FOUND', 'Akinator session not found');
37
+ }
38
+ function notFoundLink() {
39
+ return fail('NOT_FOUND', 'Run intake link not found');
40
+ }
41
+ function conflict() {
42
+ return fail('CONFLICT', 'Akinator store operation conflicts with existing data');
43
+ }
44
+ const SQLITE_CONSTRAINT_PRIMARY_KEY = 1_555;
45
+ const SQLITE_CONSTRAINT_UNIQUE = 2_067;
46
+ function isExpectedUniquenessFailure(error, constraints) {
47
+ if (!(error instanceof Error))
48
+ return false;
49
+ const failure = error;
50
+ if (failure.code !== 'ERR_SQLITE_ERROR' || !Number.isSafeInteger(failure.errcode))
51
+ return false;
52
+ if (failure.errcode !== SQLITE_CONSTRAINT_PRIMARY_KEY && failure.errcode !== SQLITE_CONSTRAINT_UNIQUE)
53
+ return false;
54
+ return typeof failure.message === 'string' && constraints.has(failure.message);
55
+ }
56
+ function mapExpectedUniquenessFailure(error, constraints) {
57
+ if (isExpectedUniquenessFailure(error, constraints))
58
+ return conflict();
59
+ throw error;
60
+ }
61
+ const SESSION_UNIQUENESS_FAILURES = new Set([
62
+ 'UNIQUE constraint failed: akinator_sessions.id',
63
+ ]);
64
+ const ANSWER_UNIQUENESS_FAILURES = new Set([
65
+ 'UNIQUE constraint failed: akinator_answers.session_id, akinator_answers.question_id',
66
+ ]);
67
+ const INTAKE_LINK_UNIQUENESS_FAILURES = new Set([
68
+ 'UNIQUE constraint failed: run_intakes.run_id',
69
+ 'UNIQUE constraint failed: run_intakes.session_id',
70
+ ]);
71
+ function isPlainObject(value) {
72
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
73
+ return false;
74
+ const prototype = Object.getPrototypeOf(value);
75
+ return prototype === Object.prototype || prototype === null;
76
+ }
77
+ function objectWithFields(value, fields) {
78
+ if (!isPlainObject(value))
79
+ return validation();
80
+ if (Object.keys(value).some((field) => !fields.has(field)))
81
+ return validation();
82
+ return value;
83
+ }
84
+ function stringValue(value) {
85
+ if (typeof value !== 'string' || value.trim().length === 0)
86
+ return validation();
87
+ return value;
88
+ }
89
+ function timestamp(value) {
90
+ return timestampFor(value, validation);
91
+ }
92
+ function storedTimestamp(value) {
93
+ if (typeof value !== 'string' || !TIMESTAMP_PATTERN.test(value))
94
+ return integrity();
95
+ const date = new Date(value);
96
+ if (Number.isNaN(date.getTime()) || date.toISOString() !== value)
97
+ return integrity();
98
+ return value;
99
+ }
100
+ function taskType(value, onInvalid) {
101
+ if (value === null)
102
+ return null;
103
+ if (typeof value === 'string' && TASK_TYPES.includes(value))
104
+ return value;
105
+ return onInvalid();
106
+ }
107
+ function profile(value, onInvalid) {
108
+ if (!isPlainObject(value) || Object.keys(value).some((field) => !PROFILE_FIELDS.has(field)))
109
+ return onInvalid();
110
+ if (!Object.hasOwn(value, 'taskType') || !Object.hasOwn(value, 'target') || !Object.hasOwn(value, 'expected') || !Object.hasOwn(value, 'constraints'))
111
+ return onInvalid();
112
+ const fields = ['target', 'expected', 'constraints'];
113
+ for (const field of fields) {
114
+ if (value[field] !== null && typeof value[field] !== 'string')
115
+ return onInvalid();
116
+ }
117
+ return {
118
+ taskType: taskType(value.taskType, onInvalid),
119
+ target: value.target,
120
+ expected: value.expected,
121
+ constraints: value.constraints,
122
+ };
123
+ }
124
+ function sessionStatus(value, onInvalid) {
125
+ if (typeof value === 'string' && SESSION_STATUSES.includes(value))
126
+ return value;
127
+ return onInvalid();
128
+ }
129
+ function questionCount(value, onInvalid) {
130
+ if (typeof value !== 'number' || !Number.isInteger(value) || value < 0 || value > 3)
131
+ return onInvalid();
132
+ return value;
133
+ }
134
+ function assertSessionEvaluation(validatedProfile, status, count, onInvalid) {
135
+ let evaluated;
136
+ try {
137
+ evaluated = evaluateProfile(validatedProfile, count);
138
+ }
139
+ catch (error) {
140
+ if (error instanceof KiokukoError && error.code === 'VALIDATION_ERROR')
141
+ return onInvalid();
142
+ throw error;
143
+ }
144
+ const expectedStatus = evaluated.status === 'needs_answer' ? 'active' : evaluated.status;
145
+ if (status !== expectedStatus)
146
+ return onInvalid();
147
+ }
148
+ function sessionInput(value) {
149
+ const input = objectWithFields(value, SESSION_INPUT_FIELDS);
150
+ const id = stringValue(input.id);
151
+ const workspace = requireWorkspace(input.workspace);
152
+ const task = stringValue(input.task);
153
+ const validatedProfile = profile(input.profile, validation);
154
+ const status = sessionStatus(input.status, validation);
155
+ const count = questionCount(input.questionCount, validation);
156
+ assertSessionEvaluation(validatedProfile, status, count, validation);
157
+ const createdAt = timestamp(input.createdAt);
158
+ const updatedAt = timestamp(input.updatedAt);
159
+ return { id, workspace, task, profile: validatedProfile, status, questionCount: count, createdAt, updatedAt };
160
+ }
161
+ function sessionReadInput(value) {
162
+ const input = objectWithFields(value, SESSION_READ_FIELDS);
163
+ return { workspace: requireWorkspace(input.workspace), sessionId: stringValue(input.sessionId) };
164
+ }
165
+ function answerQuestionId(value, onInvalid) {
166
+ if (typeof value === 'string' && PROFILE_FIELDS.has(value))
167
+ return value;
168
+ return onInvalid();
169
+ }
170
+ function answerJson(value) {
171
+ try {
172
+ return canonicalJson(value);
173
+ }
174
+ catch {
175
+ return validation();
176
+ }
177
+ }
178
+ function answerInput(value) {
179
+ const input = objectWithFields(value, ANSWER_FIELDS);
180
+ return {
181
+ workspace: requireWorkspace(input.workspace),
182
+ sessionId: stringValue(input.sessionId),
183
+ questionId: answerQuestionId(input.questionId, validation),
184
+ answer: input.answer,
185
+ createdAt: timestamp(input.createdAt),
186
+ };
187
+ }
188
+ function answerReadInput(value) {
189
+ const input = objectWithFields(value, ANSWER_READ_FIELDS);
190
+ return {
191
+ workspace: requireWorkspace(input.workspace),
192
+ sessionId: stringValue(input.sessionId),
193
+ questionId: answerQuestionId(input.questionId, validation),
194
+ };
195
+ }
196
+ function profileSources(value, onInvalid) {
197
+ if (!isPlainObject(value))
198
+ return onInvalid();
199
+ const result = {};
200
+ for (const [field, source] of Object.entries(value)) {
201
+ if (!PROFILE_FIELDS.has(field) || typeof source !== 'string' || !PROFILE_SOURCE_VALUES.includes(source))
202
+ return onInvalid();
203
+ result[field] = source;
204
+ }
205
+ return result;
206
+ }
207
+ function profileHash(value, onInvalid) {
208
+ if (value === null)
209
+ return null;
210
+ if (typeof value === 'string' && /^[0-9a-f]{64}$/.test(value))
211
+ return value;
212
+ return onInvalid();
213
+ }
214
+ function tagValues(value, onInvalid, rejectDuplicates) {
215
+ if (!Array.isArray(value))
216
+ return onInvalid();
217
+ const tags = [];
218
+ const seen = new Set();
219
+ for (const tag of value) {
220
+ if (typeof tag !== 'string' || tag.trim().length === 0)
221
+ return onInvalid();
222
+ if (seen.has(tag)) {
223
+ if (rejectDuplicates)
224
+ return onInvalid();
225
+ continue;
226
+ }
227
+ seen.add(tag);
228
+ tags.push(tag);
229
+ }
230
+ return tags;
231
+ }
232
+ function timestampFor(value, onInvalid) {
233
+ if (typeof value !== 'string' || !TIMESTAMP_PATTERN.test(value))
234
+ return onInvalid();
235
+ const date = new Date(value);
236
+ if (Number.isNaN(date.getTime()) || date.toISOString() !== value)
237
+ return onInvalid();
238
+ return value;
239
+ }
240
+ function nullableTimestamp(value, onInvalid) {
241
+ if (value === null)
242
+ return null;
243
+ return timestampFor(value, onInvalid);
244
+ }
245
+ function intakeLinkInput(value) {
246
+ const input = objectWithFields(value, INTAKE_LINK_FIELDS);
247
+ const initialProfileHash = input.initialProfileHash === undefined ? null : profileHash(input.initialProfileHash, validation);
248
+ const finalizedAt = input.finalizedAt === undefined ? null : nullableTimestamp(input.finalizedAt, validation);
249
+ if (finalizedAt !== null)
250
+ return validation();
251
+ if (typeof input.profileSchemaVersion !== 'number' || !Number.isInteger(input.profileSchemaVersion) || input.profileSchemaVersion <= 0)
252
+ return validation();
253
+ return {
254
+ runId: stringValue(input.runId),
255
+ sessionId: stringValue(input.sessionId),
256
+ workspace: requireWorkspace(input.workspace),
257
+ policyVersion: stringValue(input.policyVersion),
258
+ profileSchemaVersion: input.profileSchemaVersion,
259
+ profileSources: profileSources(input.profileSources, validation),
260
+ initialProfileHash,
261
+ recommendedTags: tagValues(input.recommendedTags, validation, false),
262
+ linkedAt: timestampFor(input.linkedAt, validation),
263
+ finalizedAt,
264
+ };
265
+ }
266
+ function intakeLinkReadInput(value) {
267
+ const input = objectWithFields(value, INTAKE_LINK_READ_FIELDS);
268
+ return { workspace: requireWorkspace(input.workspace), runId: stringValue(input.runId) };
269
+ }
270
+ function intakeLinkFinalizeInput(value) {
271
+ const input = objectWithFields(value, INTAKE_LINK_FINALIZE_FIELDS);
272
+ const hash = profileHash(input.profileHash, validation);
273
+ if (hash === null)
274
+ return validation();
275
+ return {
276
+ workspace: requireWorkspace(input.workspace),
277
+ runId: stringValue(input.runId),
278
+ profileHash: hash,
279
+ recommendedTags: tagValues(input.recommendedTags, validation, false),
280
+ finalizedAt: timestampFor(input.finalizedAt, validation),
281
+ };
282
+ }
283
+ function intakeLinkSourceInput(value) {
284
+ const input = objectWithFields(value, INTAKE_LINK_SOURCE_FIELDS);
285
+ return {
286
+ workspace: requireWorkspace(input.workspace),
287
+ runId: stringValue(input.runId),
288
+ field: answerQuestionId(input.field, validation),
289
+ };
290
+ }
291
+ function sessionUpdateInput(value) {
292
+ const input = objectWithFields(value, SESSION_UPDATE_FIELDS);
293
+ const expectedQuestionCount = questionCount(input.expectedQuestionCount, validation);
294
+ const nextQuestionCount = questionCount(input.questionCount, validation);
295
+ const validatedProfile = profile(input.profile, validation);
296
+ const status = sessionStatus(input.status, validation);
297
+ assertSessionEvaluation(validatedProfile, status, nextQuestionCount, validation);
298
+ const updatedAt = timestamp(input.updatedAt);
299
+ return {
300
+ workspace: requireWorkspace(input.workspace),
301
+ sessionId: stringValue(input.sessionId),
302
+ expectedQuestionCount,
303
+ profile: validatedProfile,
304
+ status,
305
+ questionCount: nextQuestionCount,
306
+ updatedAt,
307
+ };
308
+ }
309
+ function parseStoredProfile(value) {
310
+ if (typeof value !== 'string')
311
+ return integrity();
312
+ let parsed;
313
+ try {
314
+ parsed = parseStrictJson(value, { allowTrailingComma: false, disallowComments: true, allowEmptyContent: false }, 'Stored Akinator profile is invalid');
315
+ }
316
+ catch (error) {
317
+ if (error instanceof KiokukoError && error.code === 'VALIDATION_ERROR')
318
+ return integrity();
319
+ throw error;
320
+ }
321
+ if (canonicalStoredJson(parsed) !== value)
322
+ return integrity();
323
+ return profile(parsed, integrity);
324
+ }
325
+ function storedString(value) {
326
+ if (typeof value !== 'string' || value.length === 0)
327
+ return integrity();
328
+ return value;
329
+ }
330
+ function storedQuestionCount(value) {
331
+ if (typeof value !== 'number' || !Number.isInteger(value) || value < 0 || value > 3)
332
+ return integrity();
333
+ return value;
334
+ }
335
+ function parseStoredAnswer(value) {
336
+ if (typeof value !== 'string')
337
+ return integrity();
338
+ let parsed;
339
+ try {
340
+ parsed = JSON.parse(value);
341
+ }
342
+ catch (error) {
343
+ if (error instanceof SyntaxError || error instanceof RangeError)
344
+ return integrity();
345
+ throw error;
346
+ }
347
+ if (canonicalStoredJson(parsed) !== value)
348
+ return integrity();
349
+ return parsed;
350
+ }
351
+ function canonicalStoredJson(value) {
352
+ try {
353
+ return canonicalJson(value);
354
+ }
355
+ catch (error) {
356
+ if (error instanceof RangeError
357
+ || (error instanceof KiokukoError && error.code === 'VALIDATION_ERROR'))
358
+ return integrity();
359
+ throw error;
360
+ }
361
+ }
362
+ function parseStoredCanonicalJson(value) {
363
+ if (typeof value !== 'string')
364
+ return integrity();
365
+ let parsed;
366
+ try {
367
+ parsed = JSON.parse(value);
368
+ }
369
+ catch (error) {
370
+ if (error instanceof SyntaxError || error instanceof RangeError)
371
+ return integrity();
372
+ throw error;
373
+ }
374
+ if (canonicalStoredJson(parsed) !== value)
375
+ return integrity();
376
+ return parsed;
377
+ }
378
+ function storedProfileSources(value) {
379
+ return profileSources(parseStoredCanonicalJson(value), integrity);
380
+ }
381
+ function storedTags(value) {
382
+ return tagValues(parseStoredCanonicalJson(value), integrity, true);
383
+ }
384
+ function storedHash(value) {
385
+ return profileHash(value, integrity);
386
+ }
387
+ function storedNullableTimestamp(value) {
388
+ if (value === null)
389
+ return null;
390
+ return storedTimestamp(value);
391
+ }
392
+ function storedPositiveInteger(value) {
393
+ if (typeof value !== 'number' || !Number.isInteger(value) || value <= 0)
394
+ return integrity();
395
+ return value;
396
+ }
397
+ function mapAnswer(row) {
398
+ return {
399
+ sessionId: storedString(row.session_id),
400
+ questionId: answerQuestionId(row.question_id, integrity),
401
+ answer: parseStoredAnswer(row.answer_json),
402
+ createdAt: storedTimestamp(row.created_at),
403
+ };
404
+ }
405
+ function mapIntakeLink(row) {
406
+ if (row.session_id_join !== row.session_id || row.session_workspace !== row.workspace)
407
+ return integrity();
408
+ const finalizedAt = storedNullableTimestamp(row.finalized_at);
409
+ const initialProfileHash = storedHash(row.initial_profile_hash);
410
+ if (finalizedAt !== null && initialProfileHash === null)
411
+ return integrity();
412
+ return {
413
+ runId: storedString(row.run_id),
414
+ sessionId: storedString(row.session_id),
415
+ workspace: storedString(row.workspace),
416
+ policyVersion: storedString(row.policy_version),
417
+ profileSchemaVersion: storedPositiveInteger(row.profile_schema_version),
418
+ profileSources: storedProfileSources(row.profile_sources_json),
419
+ initialProfileHash,
420
+ recommendedTags: storedTags(row.recommended_tags_json),
421
+ linkedAt: storedTimestamp(row.linked_at),
422
+ finalizedAt,
423
+ };
424
+ }
425
+ function mapSession(row) {
426
+ const validatedProfile = parseStoredProfile(row.profile_json);
427
+ const status = sessionStatus(row.status, integrity);
428
+ const count = storedQuestionCount(row.question_count);
429
+ assertSessionEvaluation(validatedProfile, status, count, integrity);
430
+ return {
431
+ id: storedString(row.id),
432
+ workspace: storedString(row.workspace),
433
+ task: storedString(row.task_text),
434
+ profile: validatedProfile,
435
+ status,
436
+ questionCount: count,
437
+ createdAt: storedTimestamp(row.created_at),
438
+ updatedAt: storedTimestamp(row.updated_at),
439
+ };
440
+ }
441
+ function selectSession(database, workspace, sessionId) {
442
+ return database.prepare(`
443
+ SELECT id, workspace, task_text, profile_json, status, question_count, created_at, updated_at
444
+ FROM akinator_sessions
445
+ WHERE id = ? AND workspace = ?
446
+ `).get(sessionId, workspace);
447
+ }
448
+ function selectAnswer(database, sessionId, questionId) {
449
+ return database.prepare(`
450
+ SELECT session_id, question_id, answer_json, created_at
451
+ FROM akinator_answers
452
+ WHERE session_id = ? AND question_id = ?
453
+ `).get(sessionId, questionId);
454
+ }
455
+ function selectIntakeLink(database, workspace, runId) {
456
+ return database.prepare(`
457
+ SELECT
458
+ ri.run_id, ri.session_id, s.id AS session_id_join, s.workspace AS session_workspace,
459
+ lr.workspace, ri.policy_version, ri.profile_schema_version,
460
+ ri.profile_sources_json, ri.initial_profile_hash, ri.recommended_tags_json,
461
+ ri.linked_at, ri.finalized_at
462
+ FROM run_intakes AS ri
463
+ JOIN ledger_runs AS lr ON lr.run_id = ri.run_id
464
+ LEFT JOIN akinator_sessions AS s ON s.id = ri.session_id
465
+ WHERE ri.run_id = ? AND lr.workspace = ?
466
+ `).get(runId, workspace);
467
+ }
468
+ export function insertAkinatorSession(database, value) {
469
+ const input = sessionInput(value);
470
+ try {
471
+ database.prepare(`
472
+ INSERT INTO akinator_sessions (
473
+ id, workspace, task_text, profile_json, status, question_count, created_at, updated_at
474
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
475
+ `).run(input.id, input.workspace, input.task, canonicalJson(input.profile), input.status, input.questionCount, input.createdAt, input.updatedAt);
476
+ }
477
+ catch (error) {
478
+ return mapExpectedUniquenessFailure(error, SESSION_UNIQUENESS_FAILURES);
479
+ }
480
+ const row = selectSession(database, input.workspace, input.id);
481
+ if (!row)
482
+ return integrity();
483
+ return mapSession(row);
484
+ }
485
+ export function readAkinatorSession(database, value) {
486
+ const input = sessionReadInput(value);
487
+ const row = selectSession(database, input.workspace, input.sessionId);
488
+ if (!row)
489
+ return notFoundSession();
490
+ return mapSession(row);
491
+ }
492
+ export function updateAkinatorSession(database, value) {
493
+ const input = sessionUpdateInput(value);
494
+ const current = selectSession(database, input.workspace, input.sessionId);
495
+ if (!current)
496
+ return notFoundSession();
497
+ const currentView = mapSession(current);
498
+ if (currentView.status !== 'active' || currentView.questionCount !== input.expectedQuestionCount)
499
+ return conflict();
500
+ if (input.questionCount !== input.expectedQuestionCount + 1 || input.questionCount > 3)
501
+ return conflict();
502
+ database.prepare(`
503
+ UPDATE akinator_sessions
504
+ SET profile_json = ?, status = ?, question_count = ?, updated_at = ?
505
+ WHERE id = ? AND workspace = ? AND status = 'active' AND question_count = ?
506
+ `).run(canonicalJson(input.profile), input.status, input.questionCount, input.updatedAt, input.sessionId, input.workspace, input.expectedQuestionCount);
507
+ const changes = database.prepare('SELECT changes() AS changes').get()?.changes;
508
+ if (changes !== 1)
509
+ return conflict();
510
+ const updated = selectSession(database, input.workspace, input.sessionId);
511
+ if (!updated)
512
+ return integrity();
513
+ return mapSession(updated);
514
+ }
515
+ export function readAkinatorAnswer(database, value) {
516
+ const input = answerReadInput(value);
517
+ if (!selectSession(database, input.workspace, input.sessionId))
518
+ return notFoundSession();
519
+ const row = selectAnswer(database, input.sessionId, input.questionId);
520
+ return row ? mapAnswer(row) : undefined;
521
+ }
522
+ export function insertAkinatorAnswer(database, value) {
523
+ const input = answerInput(value);
524
+ if (!selectSession(database, input.workspace, input.sessionId))
525
+ return notFoundSession();
526
+ const answerJsonValue = answerJson(input.answer);
527
+ const existing = selectAnswer(database, input.sessionId, input.questionId);
528
+ if (existing) {
529
+ const answer = mapAnswer(existing);
530
+ if (canonicalJson(answer.answer) !== answerJsonValue)
531
+ return conflict();
532
+ return { replayed: true, answer };
533
+ }
534
+ try {
535
+ database.prepare(`
536
+ INSERT INTO akinator_answers (session_id, question_id, answer_json, created_at)
537
+ VALUES (?, ?, ?, ?)
538
+ `).run(input.sessionId, input.questionId, answerJsonValue, input.createdAt);
539
+ }
540
+ catch (error) {
541
+ return mapExpectedUniquenessFailure(error, ANSWER_UNIQUENESS_FAILURES);
542
+ }
543
+ const inserted = selectAnswer(database, input.sessionId, input.questionId);
544
+ if (!inserted)
545
+ return integrity();
546
+ return { replayed: false, answer: mapAnswer(inserted) };
547
+ }
548
+ export function insertRunIntakeLink(database, value) {
549
+ const input = intakeLinkInput(value);
550
+ const run = database.prepare('SELECT workspace FROM ledger_runs WHERE run_id = ?').get(input.runId);
551
+ const session = database.prepare('SELECT workspace FROM akinator_sessions WHERE id = ?').get(input.sessionId);
552
+ if (!run || !session || run.workspace !== input.workspace || session.workspace !== input.workspace)
553
+ return notFoundLink();
554
+ try {
555
+ database.prepare(`
556
+ INSERT INTO run_intakes (
557
+ run_id, session_id, policy_version, profile_schema_version, profile_sources_json,
558
+ initial_profile_hash, recommended_tags_json, linked_at, finalized_at
559
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
560
+ `).run(input.runId, input.sessionId, input.policyVersion, input.profileSchemaVersion, canonicalJson(input.profileSources), input.initialProfileHash, canonicalJson(input.recommendedTags), input.linkedAt, input.finalizedAt);
561
+ }
562
+ catch (error) {
563
+ return mapExpectedUniquenessFailure(error, INTAKE_LINK_UNIQUENESS_FAILURES);
564
+ }
565
+ const inserted = selectIntakeLink(database, input.workspace, input.runId);
566
+ if (!inserted)
567
+ return integrity();
568
+ return mapIntakeLink(inserted);
569
+ }
570
+ export function readRunIntakeLink(database, value) {
571
+ const input = intakeLinkReadInput(value);
572
+ const row = selectIntakeLink(database, input.workspace, input.runId);
573
+ if (!row)
574
+ return notFoundLink();
575
+ return mapIntakeLink(row);
576
+ }
577
+ export function finalizeRunIntakeLink(database, value) {
578
+ const input = intakeLinkFinalizeInput(value);
579
+ const currentRow = selectIntakeLink(database, input.workspace, input.runId);
580
+ if (!currentRow)
581
+ return notFoundLink();
582
+ const current = mapIntakeLink(currentRow);
583
+ if (current.finalizedAt !== null) {
584
+ if (current.initialProfileHash === input.profileHash
585
+ && current.finalizedAt === input.finalizedAt
586
+ && current.recommendedTags.length === input.recommendedTags.length
587
+ && current.recommendedTags.every((tag, index) => tag === input.recommendedTags[index]))
588
+ return current;
589
+ return conflict();
590
+ }
591
+ database.prepare(`
592
+ UPDATE run_intakes
593
+ SET initial_profile_hash = ?, recommended_tags_json = ?, finalized_at = ?
594
+ WHERE run_id = ? AND finalized_at IS NULL
595
+ `).run(input.profileHash, canonicalJson(input.recommendedTags), input.finalizedAt, input.runId);
596
+ const changes = database.prepare('SELECT changes() AS changes').get()?.changes;
597
+ if (changes !== 1) {
598
+ const racedRow = selectIntakeLink(database, input.workspace, input.runId);
599
+ if (!racedRow)
600
+ return notFoundLink();
601
+ const raced = mapIntakeLink(racedRow);
602
+ if (raced.finalizedAt === input.finalizedAt
603
+ && raced.initialProfileHash === input.profileHash
604
+ && raced.recommendedTags.length === input.recommendedTags.length
605
+ && raced.recommendedTags.every((tag, index) => tag === input.recommendedTags[index]))
606
+ return raced;
607
+ return conflict();
608
+ }
609
+ const finalized = selectIntakeLink(database, input.workspace, input.runId);
610
+ if (!finalized)
611
+ return integrity();
612
+ return mapIntakeLink(finalized);
613
+ }
614
+ /** Caller-owned primitive: mark one still-pending profile field as answered by the user. */
615
+ export function markRunIntakeProfileSource(database, value) {
616
+ const input = intakeLinkSourceInput(value);
617
+ const currentRow = selectIntakeLink(database, input.workspace, input.runId);
618
+ if (!currentRow)
619
+ return notFoundLink();
620
+ const current = mapIntakeLink(currentRow);
621
+ if (current.finalizedAt !== null)
622
+ return conflict();
623
+ if (current.profileSources[input.field] === 'user_answer')
624
+ return current;
625
+ const nextSources = {
626
+ ...current.profileSources,
627
+ [input.field]: 'user_answer',
628
+ };
629
+ database.prepare(`
630
+ UPDATE run_intakes
631
+ SET profile_sources_json = ?
632
+ WHERE run_id = ? AND finalized_at IS NULL
633
+ `).run(canonicalJson(nextSources), input.runId);
634
+ const changes = database.prepare('SELECT changes() AS changes').get()?.changes;
635
+ if (changes !== 1)
636
+ return conflict();
637
+ const updated = selectIntakeLink(database, input.workspace, input.runId);
638
+ if (!updated)
639
+ return integrity();
640
+ return mapIntakeLink(updated);
641
+ }
642
+ //# sourceMappingURL=store.js.map