@askdkc/kiokuko 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 (391) hide show
  1. package/LICENSE +21 -0
  2. package/README.ja.md +112 -0
  3. package/README.ko.md +112 -0
  4. package/README.md +147 -0
  5. package/README.zh-CN.md +112 -0
  6. package/dist/agent-file/atomic-write.d.ts +6 -0
  7. package/dist/agent-file/atomic-write.d.ts.map +1 -0
  8. package/dist/agent-file/atomic-write.js +36 -0
  9. package/dist/agent-file/atomic-write.js.map +1 -0
  10. package/dist/agent-file/managed-block.d.ts +12 -0
  11. package/dist/agent-file/managed-block.d.ts.map +1 -0
  12. package/dist/agent-file/managed-block.js +56 -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 +41 -0
  17. package/dist/agent-file/render.js.map +1 -0
  18. package/dist/akinator/domain.d.ts +25 -0
  19. package/dist/akinator/domain.d.ts.map +1 -0
  20. package/dist/akinator/domain.js +255 -0
  21. package/dist/akinator/domain.js.map +1 -0
  22. package/dist/akinator/orchestrator.d.ts +8 -0
  23. package/dist/akinator/orchestrator.d.ts.map +1 -0
  24. package/dist/akinator/orchestrator.js +11 -0
  25. package/dist/akinator/orchestrator.js.map +1 -0
  26. package/dist/akinator/service.d.ts +35 -0
  27. package/dist/akinator/service.d.ts.map +1 -0
  28. package/dist/akinator/service.js +296 -0
  29. package/dist/akinator/service.js.map +1 -0
  30. package/dist/akinator/store.d.ts +96 -0
  31. package/dist/akinator/store.d.ts.map +1 -0
  32. package/dist/akinator/store.js +583 -0
  33. package/dist/akinator/store.js.map +1 -0
  34. package/dist/akinator/types.d.ts +49 -0
  35. package/dist/akinator/types.d.ts.map +1 -0
  36. package/dist/akinator/types.js +2 -0
  37. package/dist/akinator/types.js.map +1 -0
  38. package/dist/bin/kiokuko.d.ts +3 -0
  39. package/dist/bin/kiokuko.d.ts.map +1 -0
  40. package/dist/bin/kiokuko.js +6 -0
  41. package/dist/bin/kiokuko.js.map +1 -0
  42. package/dist/cli.d.ts +10 -0
  43. package/dist/cli.d.ts.map +1 -0
  44. package/dist/cli.js +362 -0
  45. package/dist/cli.js.map +1 -0
  46. package/dist/client/runtime-discovery.d.ts +15 -0
  47. package/dist/client/runtime-discovery.d.ts.map +1 -0
  48. package/dist/client/runtime-discovery.js +45 -0
  49. package/dist/client/runtime-discovery.js.map +1 -0
  50. package/dist/client/server-client.d.ts +20 -0
  51. package/dist/client/server-client.d.ts.map +1 -0
  52. package/dist/client/server-client.js +424 -0
  53. package/dist/client/server-client.js.map +1 -0
  54. package/dist/commands/agent.d.ts +10 -0
  55. package/dist/commands/agent.d.ts.map +1 -0
  56. package/dist/commands/agent.js +283 -0
  57. package/dist/commands/agent.js.map +1 -0
  58. package/dist/commands/backup.d.ts +5 -0
  59. package/dist/commands/backup.d.ts.map +1 -0
  60. package/dist/commands/backup.js +14 -0
  61. package/dist/commands/backup.js.map +1 -0
  62. package/dist/commands/call.d.ts +7 -0
  63. package/dist/commands/call.d.ts.map +1 -0
  64. package/dist/commands/call.js +10 -0
  65. package/dist/commands/call.js.map +1 -0
  66. package/dist/commands/doctor.d.ts +31 -0
  67. package/dist/commands/doctor.d.ts.map +1 -0
  68. package/dist/commands/doctor.js +142 -0
  69. package/dist/commands/doctor.js.map +1 -0
  70. package/dist/commands/export.d.ts +21 -0
  71. package/dist/commands/export.d.ts.map +1 -0
  72. package/dist/commands/export.js +68 -0
  73. package/dist/commands/export.js.map +1 -0
  74. package/dist/commands/import.d.ts +15 -0
  75. package/dist/commands/import.d.ts.map +1 -0
  76. package/dist/commands/import.js +265 -0
  77. package/dist/commands/import.js.map +1 -0
  78. package/dist/commands/init.d.ts +14 -0
  79. package/dist/commands/init.d.ts.map +1 -0
  80. package/dist/commands/init.js +26 -0
  81. package/dist/commands/init.js.map +1 -0
  82. package/dist/commands/ledger.d.ts +7 -0
  83. package/dist/commands/ledger.d.ts.map +1 -0
  84. package/dist/commands/ledger.js +66 -0
  85. package/dist/commands/ledger.js.map +1 -0
  86. package/dist/commands/link.d.ts +6 -0
  87. package/dist/commands/link.d.ts.map +1 -0
  88. package/dist/commands/link.js +6 -0
  89. package/dist/commands/link.js.map +1 -0
  90. package/dist/commands/promote.d.ts +6 -0
  91. package/dist/commands/promote.d.ts.map +1 -0
  92. package/dist/commands/promote.js +6 -0
  93. package/dist/commands/promote.js.map +1 -0
  94. package/dist/commands/purge.d.ts +10 -0
  95. package/dist/commands/purge.d.ts.map +1 -0
  96. package/dist/commands/purge.js +26 -0
  97. package/dist/commands/purge.js.map +1 -0
  98. package/dist/commands/read.d.ts +6 -0
  99. package/dist/commands/read.d.ts.map +1 -0
  100. package/dist/commands/read.js +4 -0
  101. package/dist/commands/read.js.map +1 -0
  102. package/dist/commands/recall.d.ts +6 -0
  103. package/dist/commands/recall.d.ts.map +1 -0
  104. package/dist/commands/recall.js +4 -0
  105. package/dist/commands/recall.js.map +1 -0
  106. package/dist/commands/record.d.ts +6 -0
  107. package/dist/commands/record.d.ts.map +1 -0
  108. package/dist/commands/record.js +4 -0
  109. package/dist/commands/record.js.map +1 -0
  110. package/dist/commands/search.d.ts +6 -0
  111. package/dist/commands/search.d.ts.map +1 -0
  112. package/dist/commands/search.js +4 -0
  113. package/dist/commands/search.js.map +1 -0
  114. package/dist/commands/serve.d.ts +34 -0
  115. package/dist/commands/serve.d.ts.map +1 -0
  116. package/dist/commands/serve.js +120 -0
  117. package/dist/commands/serve.js.map +1 -0
  118. package/dist/commands/server-status.d.ts +20 -0
  119. package/dist/commands/server-status.d.ts.map +1 -0
  120. package/dist/commands/server-status.js +21 -0
  121. package/dist/commands/server-status.js.map +1 -0
  122. package/dist/commands/server.d.ts +13 -0
  123. package/dist/commands/server.d.ts.map +1 -0
  124. package/dist/commands/server.js +89 -0
  125. package/dist/commands/server.js.map +1 -0
  126. package/dist/commands/setup.d.ts +32 -0
  127. package/dist/commands/setup.d.ts.map +1 -0
  128. package/dist/commands/setup.js +121 -0
  129. package/dist/commands/setup.js.map +1 -0
  130. package/dist/commands/supersede.d.ts +6 -0
  131. package/dist/commands/supersede.d.ts.map +1 -0
  132. package/dist/commands/supersede.js +6 -0
  133. package/dist/commands/supersede.js.map +1 -0
  134. package/dist/commands/use.d.ts +28 -0
  135. package/dist/commands/use.d.ts.map +1 -0
  136. package/dist/commands/use.js +176 -0
  137. package/dist/commands/use.js.map +1 -0
  138. package/dist/config/paths.d.ts +18 -0
  139. package/dist/config/paths.d.ts.map +1 -0
  140. package/dist/config/paths.js +104 -0
  141. package/dist/config/paths.js.map +1 -0
  142. package/dist/config/project-config.d.ts +10 -0
  143. package/dist/config/project-config.d.ts.map +1 -0
  144. package/dist/config/project-config.js +59 -0
  145. package/dist/config/project-config.js.map +1 -0
  146. package/dist/context/broker.d.ts +80 -0
  147. package/dist/context/broker.d.ts.map +1 -0
  148. package/dist/context/broker.js +437 -0
  149. package/dist/context/broker.js.map +1 -0
  150. package/dist/context/delivery.d.ts +66 -0
  151. package/dist/context/delivery.d.ts.map +1 -0
  152. package/dist/context/delivery.js +758 -0
  153. package/dist/context/delivery.js.map +1 -0
  154. package/dist/context/feedback.d.ts +75 -0
  155. package/dist/context/feedback.d.ts.map +1 -0
  156. package/dist/context/feedback.js +997 -0
  157. package/dist/context/feedback.js.map +1 -0
  158. package/dist/context/ranking.d.ts +98 -0
  159. package/dist/context/ranking.d.ts.map +1 -0
  160. package/dist/context/ranking.js +513 -0
  161. package/dist/context/ranking.js.map +1 -0
  162. package/dist/context/recommendations.d.ts +85 -0
  163. package/dist/context/recommendations.d.ts.map +1 -0
  164. package/dist/context/recommendations.js +342 -0
  165. package/dist/context/recommendations.js.map +1 -0
  166. package/dist/db/adapter.d.ts +25 -0
  167. package/dist/db/adapter.d.ts.map +1 -0
  168. package/dist/db/adapter.js +37 -0
  169. package/dist/db/adapter.js.map +1 -0
  170. package/dist/db/capabilities.d.ts +13 -0
  171. package/dist/db/capabilities.d.ts.map +1 -0
  172. package/dist/db/capabilities.js +25 -0
  173. package/dist/db/capabilities.js.map +1 -0
  174. package/dist/db/connection.d.ts +6 -0
  175. package/dist/db/connection.d.ts.map +1 -0
  176. package/dist/db/connection.js +42 -0
  177. package/dist/db/connection.js.map +1 -0
  178. package/dist/db/migrate.d.ts +9 -0
  179. package/dist/db/migrate.d.ts.map +1 -0
  180. package/dist/db/migrate.js +102 -0
  181. package/dist/db/migrate.js.map +1 -0
  182. package/dist/db/transaction.d.ts +4 -0
  183. package/dist/db/transaction.d.ts.map +1 -0
  184. package/dist/db/transaction.js +39 -0
  185. package/dist/db/transaction.js.map +1 -0
  186. package/dist/errors.d.ts +9 -0
  187. package/dist/errors.d.ts.map +1 -0
  188. package/dist/errors.js +32 -0
  189. package/dist/errors.js.map +1 -0
  190. package/dist/gateway/agent-service.d.ts +69 -0
  191. package/dist/gateway/agent-service.d.ts.map +1 -0
  192. package/dist/gateway/agent-service.js +581 -0
  193. package/dist/gateway/agent-service.js.map +1 -0
  194. package/dist/gateway/checkpoint-service.d.ts +42 -0
  195. package/dist/gateway/checkpoint-service.d.ts.map +1 -0
  196. package/dist/gateway/checkpoint-service.js +295 -0
  197. package/dist/gateway/checkpoint-service.js.map +1 -0
  198. package/dist/knowledge/sources.d.ts +72 -0
  199. package/dist/knowledge/sources.d.ts.map +1 -0
  200. package/dist/knowledge/sources.js +406 -0
  201. package/dist/knowledge/sources.js.map +1 -0
  202. package/dist/ledger/archive.d.ts +50 -0
  203. package/dist/ledger/archive.d.ts.map +1 -0
  204. package/dist/ledger/archive.js +1072 -0
  205. package/dist/ledger/archive.js.map +1 -0
  206. package/dist/ledger/hash.d.ts +22 -0
  207. package/dist/ledger/hash.d.ts.map +1 -0
  208. package/dist/ledger/hash.js +25 -0
  209. package/dist/ledger/hash.js.map +1 -0
  210. package/dist/ledger/maintenance.d.ts +78 -0
  211. package/dist/ledger/maintenance.d.ts.map +1 -0
  212. package/dist/ledger/maintenance.js +683 -0
  213. package/dist/ledger/maintenance.js.map +1 -0
  214. package/dist/ledger/projection.d.ts +37 -0
  215. package/dist/ledger/projection.d.ts.map +1 -0
  216. package/dist/ledger/projection.js +307 -0
  217. package/dist/ledger/projection.js.map +1 -0
  218. package/dist/ledger/promotion.d.ts +28 -0
  219. package/dist/ledger/promotion.d.ts.map +1 -0
  220. package/dist/ledger/promotion.js +308 -0
  221. package/dist/ledger/promotion.js.map +1 -0
  222. package/dist/ledger/query.d.ts +55 -0
  223. package/dist/ledger/query.d.ts.map +1 -0
  224. package/dist/ledger/query.js +321 -0
  225. package/dist/ledger/query.js.map +1 -0
  226. package/dist/ledger/redaction.d.ts +8 -0
  227. package/dist/ledger/redaction.d.ts.map +1 -0
  228. package/dist/ledger/redaction.js +40 -0
  229. package/dist/ledger/redaction.js.map +1 -0
  230. package/dist/ledger/store.d.ts +46 -0
  231. package/dist/ledger/store.d.ts.map +1 -0
  232. package/dist/ledger/store.js +324 -0
  233. package/dist/ledger/store.js.map +1 -0
  234. package/dist/ledger/types.d.ts +119 -0
  235. package/dist/ledger/types.d.ts.map +1 -0
  236. package/dist/ledger/types.js +22 -0
  237. package/dist/ledger/types.js.map +1 -0
  238. package/dist/ledger/validate.d.ts +10 -0
  239. package/dist/ledger/validate.d.ts.map +1 -0
  240. package/dist/ledger/validate.js +183 -0
  241. package/dist/ledger/validate.js.map +1 -0
  242. package/dist/mcp/server.d.ts +9 -0
  243. package/dist/mcp/server.d.ts.map +1 -0
  244. package/dist/mcp/server.js +86 -0
  245. package/dist/mcp/server.js.map +1 -0
  246. package/dist/memory/audit.d.ts +14 -0
  247. package/dist/memory/audit.d.ts.map +1 -0
  248. package/dist/memory/audit.js +16 -0
  249. package/dist/memory/audit.js.map +1 -0
  250. package/dist/memory/entries.d.ts +65 -0
  251. package/dist/memory/entries.d.ts.map +1 -0
  252. package/dist/memory/entries.js +200 -0
  253. package/dist/memory/entries.js.map +1 -0
  254. package/dist/memory/lifecycle.d.ts +29 -0
  255. package/dist/memory/lifecycle.d.ts.map +1 -0
  256. package/dist/memory/lifecycle.js +61 -0
  257. package/dist/memory/lifecycle.js.map +1 -0
  258. package/dist/memory/retrieval.d.ts +44 -0
  259. package/dist/memory/retrieval.d.ts.map +1 -0
  260. package/dist/memory/retrieval.js +174 -0
  261. package/dist/memory/retrieval.js.map +1 -0
  262. package/dist/memory/scoped-memory.d.ts +41 -0
  263. package/dist/memory/scoped-memory.d.ts.map +1 -0
  264. package/dist/memory/scoped-memory.js +65 -0
  265. package/dist/memory/scoped-memory.js.map +1 -0
  266. package/dist/memory/secrets.d.ts +6 -0
  267. package/dist/memory/secrets.d.ts.map +1 -0
  268. package/dist/memory/secrets.js +17 -0
  269. package/dist/memory/secrets.js.map +1 -0
  270. package/dist/memory/workspaces.d.ts +17 -0
  271. package/dist/memory/workspaces.d.ts.map +1 -0
  272. package/dist/memory/workspaces.js +92 -0
  273. package/dist/memory/workspaces.js.map +1 -0
  274. package/dist/repository/binding.d.ts +19 -0
  275. package/dist/repository/binding.d.ts.map +1 -0
  276. package/dist/repository/binding.js +78 -0
  277. package/dist/repository/binding.js.map +1 -0
  278. package/dist/repository/detect-root.d.ts +12 -0
  279. package/dist/repository/detect-root.d.ts.map +1 -0
  280. package/dist/repository/detect-root.js +57 -0
  281. package/dist/repository/detect-root.js.map +1 -0
  282. package/dist/repository/git-origin.d.ts +2 -0
  283. package/dist/repository/git-origin.d.ts.map +1 -0
  284. package/dist/repository/git-origin.js +15 -0
  285. package/dist/repository/git-origin.js.map +1 -0
  286. package/dist/repository/identity.d.ts +19 -0
  287. package/dist/repository/identity.d.ts.map +1 -0
  288. package/dist/repository/identity.js +23 -0
  289. package/dist/repository/identity.js.map +1 -0
  290. package/dist/repository/remote-url.d.ts +4 -0
  291. package/dist/repository/remote-url.d.ts.map +1 -0
  292. package/dist/repository/remote-url.js +36 -0
  293. package/dist/repository/remote-url.js.map +1 -0
  294. package/dist/security/sanitize.d.ts +4 -0
  295. package/dist/security/sanitize.d.ts.map +1 -0
  296. package/dist/security/sanitize.js +174 -0
  297. package/dist/security/sanitize.js.map +1 -0
  298. package/dist/serialization/envelope.d.ts +20 -0
  299. package/dist/serialization/envelope.d.ts.map +1 -0
  300. package/dist/serialization/envelope.js +11 -0
  301. package/dist/serialization/envelope.js.map +1 -0
  302. package/dist/serialization/validate.d.ts +31 -0
  303. package/dist/serialization/validate.d.ts.map +1 -0
  304. package/dist/serialization/validate.js +168 -0
  305. package/dist/serialization/validate.js.map +1 -0
  306. package/dist/server/agent-application.d.ts +6 -0
  307. package/dist/server/agent-application.d.ts.map +1 -0
  308. package/dist/server/agent-application.js +60 -0
  309. package/dist/server/agent-application.js.map +1 -0
  310. package/dist/server/app.d.ts +5 -0
  311. package/dist/server/app.d.ts.map +1 -0
  312. package/dist/server/app.js +87 -0
  313. package/dist/server/app.js.map +1 -0
  314. package/dist/server/auth.d.ts +2 -0
  315. package/dist/server/auth.d.ts.map +1 -0
  316. package/dist/server/auth.js +22 -0
  317. package/dist/server/auth.js.map +1 -0
  318. package/dist/server/http.d.ts +69 -0
  319. package/dist/server/http.d.ts.map +1 -0
  320. package/dist/server/http.js +349 -0
  321. package/dist/server/http.js.map +1 -0
  322. package/dist/server/idempotency.d.ts +12 -0
  323. package/dist/server/idempotency.d.ts.map +1 -0
  324. package/dist/server/idempotency.js +210 -0
  325. package/dist/server/idempotency.js.map +1 -0
  326. package/dist/server/instance-lock.d.ts +17 -0
  327. package/dist/server/instance-lock.d.ts.map +1 -0
  328. package/dist/server/instance-lock.js +118 -0
  329. package/dist/server/instance-lock.js.map +1 -0
  330. package/dist/server/router.d.ts +29 -0
  331. package/dist/server/router.d.ts.map +1 -0
  332. package/dist/server/router.js +112 -0
  333. package/dist/server/router.js.map +1 -0
  334. package/dist/server/routes/agent-events.d.ts +5 -0
  335. package/dist/server/routes/agent-events.d.ts.map +1 -0
  336. package/dist/server/routes/agent-events.js +46 -0
  337. package/dist/server/routes/agent-events.js.map +1 -0
  338. package/dist/server/routes/agent-intake.d.ts +5 -0
  339. package/dist/server/routes/agent-intake.d.ts.map +1 -0
  340. package/dist/server/routes/agent-intake.js +42 -0
  341. package/dist/server/routes/agent-intake.js.map +1 -0
  342. package/dist/server/routes/agent-promotions.d.ts +5 -0
  343. package/dist/server/routes/agent-promotions.d.ts.map +1 -0
  344. package/dist/server/routes/agent-promotions.js +52 -0
  345. package/dist/server/routes/agent-promotions.js.map +1 -0
  346. package/dist/server/routes/agent-runs.d.ts +25 -0
  347. package/dist/server/routes/agent-runs.d.ts.map +1 -0
  348. package/dist/server/routes/agent-runs.js +151 -0
  349. package/dist/server/routes/agent-runs.js.map +1 -0
  350. package/dist/server/routes/task5-support.d.ts +11 -0
  351. package/dist/server/routes/task5-support.d.ts.map +1 -0
  352. package/dist/server/routes/task5-support.js +22 -0
  353. package/dist/server/routes/task5-support.js.map +1 -0
  354. package/dist/server/routes/task5.d.ts +5 -0
  355. package/dist/server/routes/task5.d.ts.map +1 -0
  356. package/dist/server/routes/task5.js +72 -0
  357. package/dist/server/routes/task5.js.map +1 -0
  358. package/dist/server/runtime-descriptor.d.ts +24 -0
  359. package/dist/server/runtime-descriptor.d.ts.map +1 -0
  360. package/dist/server/runtime-descriptor.js +156 -0
  361. package/dist/server/runtime-descriptor.js.map +1 -0
  362. package/dist/server/write-queue.d.ts +20 -0
  363. package/dist/server/write-queue.d.ts.map +1 -0
  364. package/dist/server/write-queue.js +83 -0
  365. package/dist/server/write-queue.js.map +1 -0
  366. package/dist/setup/managed-text.d.ts +6 -0
  367. package/dist/setup/managed-text.d.ts.map +1 -0
  368. package/dist/setup/managed-text.js +42 -0
  369. package/dist/setup/managed-text.js.map +1 -0
  370. package/dist/setup/opencode-config.d.ts +3 -0
  371. package/dist/setup/opencode-config.d.ts.map +1 -0
  372. package/dist/setup/opencode-config.js +26 -0
  373. package/dist/setup/opencode-config.js.map +1 -0
  374. package/dist/setup/render.d.ts +8 -0
  375. package/dist/setup/render.d.ts.map +1 -0
  376. package/dist/setup/render.js +45 -0
  377. package/dist/setup/render.js.map +1 -0
  378. package/dist/web/server.d.ts +16 -0
  379. package/dist/web/server.d.ts.map +1 -0
  380. package/dist/web/server.js +424 -0
  381. package/dist/web/server.js.map +1 -0
  382. package/dist/web/ui.d.ts +2 -0
  383. package/dist/web/ui.d.ts.map +1 -0
  384. package/dist/web/ui.js +271 -0
  385. package/dist/web/ui.js.map +1 -0
  386. package/migrations/001_initial.sql +89 -0
  387. package/migrations/002_fts.sql +66 -0
  388. package/migrations/003_akinator.sql +30 -0
  389. package/migrations/004_agent_gateway.sql +259 -0
  390. package/package.json +45 -0
  391. package/templates/AGENTS.md +29 -0
@@ -0,0 +1,583 @@
1
+ import { KiokukoError } from '../errors.js';
2
+ import { canonicalJson, requireWorkspace } from '../serialization/validate.js';
3
+ import { TASK_TYPES } from './types.js';
4
+ const SESSION_INPUT_FIELDS = new Set([
5
+ 'id', 'workspace', 'task', 'profile', 'status', 'questionCount', 'createdAt', 'updatedAt',
6
+ ]);
7
+ const SESSION_READ_FIELDS = new Set(['workspace', 'sessionId']);
8
+ const SESSION_UPDATE_FIELDS = new Set([
9
+ 'workspace', 'sessionId', 'expectedQuestionCount', 'profile', 'status', 'questionCount', 'updatedAt',
10
+ ]);
11
+ const ANSWER_FIELDS = new Set(['workspace', 'sessionId', 'questionId', 'answer', 'createdAt']);
12
+ const ANSWER_READ_FIELDS = new Set(['workspace', 'sessionId', 'questionId']);
13
+ const INTAKE_LINK_FIELDS = new Set([
14
+ 'runId', 'sessionId', 'workspace', 'policyVersion', 'profileSchemaVersion', 'profileSources',
15
+ 'initialProfileHash', 'recommendedTags', 'linkedAt', 'finalizedAt',
16
+ ]);
17
+ const INTAKE_LINK_READ_FIELDS = new Set(['workspace', 'runId']);
18
+ const INTAKE_LINK_FINALIZE_FIELDS = new Set(['workspace', 'runId', 'profileHash', 'recommendedTags', 'finalizedAt']);
19
+ const INTAKE_LINK_SOURCE_FIELDS = new Set(['workspace', 'runId', 'field']);
20
+ const PROFILE_FIELDS = new Set(['taskType', 'target', 'expected', 'constraints']);
21
+ const PROFILE_SOURCE_VALUES = ['inferred', 'client_supplied', 'user_answer'];
22
+ const SESSION_STATUSES = ['active', 'ready', 'exhausted'];
23
+ const TIMESTAMP_PATTERN = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;
24
+ function fail(code, message) {
25
+ throw new KiokukoError(code, message);
26
+ }
27
+ function validation() {
28
+ return fail('VALIDATION_ERROR', 'Invalid Akinator store input');
29
+ }
30
+ function integrity() {
31
+ return fail('INTEGRITY_ERROR', 'Akinator store data is invalid');
32
+ }
33
+ function notFoundSession() {
34
+ return fail('NOT_FOUND', 'Akinator session not found');
35
+ }
36
+ function notFoundLink() {
37
+ return fail('NOT_FOUND', 'Run intake link not found');
38
+ }
39
+ function conflict() {
40
+ return fail('CONFLICT', 'Akinator store operation conflicts with existing data');
41
+ }
42
+ function isPlainObject(value) {
43
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
44
+ return false;
45
+ const prototype = Object.getPrototypeOf(value);
46
+ return prototype === Object.prototype || prototype === null;
47
+ }
48
+ function objectWithFields(value, fields) {
49
+ if (!isPlainObject(value))
50
+ return validation();
51
+ if (Object.keys(value).some((field) => !fields.has(field)))
52
+ return validation();
53
+ return value;
54
+ }
55
+ function stringValue(value) {
56
+ if (typeof value !== 'string' || value.trim().length === 0)
57
+ return validation();
58
+ return value;
59
+ }
60
+ function timestamp(value) {
61
+ return timestampFor(value, validation);
62
+ }
63
+ function storedTimestamp(value) {
64
+ if (typeof value !== 'string' || !TIMESTAMP_PATTERN.test(value))
65
+ return integrity();
66
+ const date = new Date(value);
67
+ if (Number.isNaN(date.getTime()) || date.toISOString() !== value)
68
+ return integrity();
69
+ return value;
70
+ }
71
+ function taskType(value, onInvalid) {
72
+ if (value === null)
73
+ return null;
74
+ if (typeof value === 'string' && TASK_TYPES.includes(value))
75
+ return value;
76
+ return onInvalid();
77
+ }
78
+ function profile(value, onInvalid) {
79
+ if (!isPlainObject(value) || Object.keys(value).some((field) => !PROFILE_FIELDS.has(field)))
80
+ return onInvalid();
81
+ if (!Object.hasOwn(value, 'taskType') || !Object.hasOwn(value, 'target') || !Object.hasOwn(value, 'expected') || !Object.hasOwn(value, 'constraints'))
82
+ return onInvalid();
83
+ const fields = ['target', 'expected', 'constraints'];
84
+ for (const field of fields) {
85
+ if (value[field] !== null && typeof value[field] !== 'string')
86
+ return onInvalid();
87
+ }
88
+ return {
89
+ taskType: taskType(value.taskType, onInvalid),
90
+ target: value.target,
91
+ expected: value.expected,
92
+ constraints: value.constraints,
93
+ };
94
+ }
95
+ function sessionStatus(value, onInvalid) {
96
+ if (typeof value === 'string' && SESSION_STATUSES.includes(value))
97
+ return value;
98
+ return onInvalid();
99
+ }
100
+ function questionCount(value, onInvalid) {
101
+ if (typeof value !== 'number' || !Number.isInteger(value) || value < 0 || value > 3)
102
+ return onInvalid();
103
+ return value;
104
+ }
105
+ function sessionInput(value) {
106
+ const input = objectWithFields(value, SESSION_INPUT_FIELDS);
107
+ const id = stringValue(input.id);
108
+ const workspace = requireWorkspace(input.workspace);
109
+ const task = stringValue(input.task);
110
+ const validatedProfile = profile(input.profile, validation);
111
+ const status = sessionStatus(input.status, validation);
112
+ const count = questionCount(input.questionCount, validation);
113
+ const createdAt = timestamp(input.createdAt);
114
+ const updatedAt = timestamp(input.updatedAt);
115
+ return { id, workspace, task, profile: validatedProfile, status, questionCount: count, createdAt, updatedAt };
116
+ }
117
+ function sessionReadInput(value) {
118
+ const input = objectWithFields(value, SESSION_READ_FIELDS);
119
+ return { workspace: requireWorkspace(input.workspace), sessionId: stringValue(input.sessionId) };
120
+ }
121
+ function answerQuestionId(value, onInvalid) {
122
+ if (typeof value === 'string' && PROFILE_FIELDS.has(value))
123
+ return value;
124
+ return onInvalid();
125
+ }
126
+ function answerJson(value) {
127
+ try {
128
+ return canonicalJson(value);
129
+ }
130
+ catch {
131
+ return validation();
132
+ }
133
+ }
134
+ function answerInput(value) {
135
+ const input = objectWithFields(value, ANSWER_FIELDS);
136
+ return {
137
+ workspace: requireWorkspace(input.workspace),
138
+ sessionId: stringValue(input.sessionId),
139
+ questionId: answerQuestionId(input.questionId, validation),
140
+ answer: input.answer,
141
+ createdAt: timestamp(input.createdAt),
142
+ };
143
+ }
144
+ function answerReadInput(value) {
145
+ const input = objectWithFields(value, ANSWER_READ_FIELDS);
146
+ return {
147
+ workspace: requireWorkspace(input.workspace),
148
+ sessionId: stringValue(input.sessionId),
149
+ questionId: answerQuestionId(input.questionId, validation),
150
+ };
151
+ }
152
+ function profileSources(value, onInvalid) {
153
+ if (!isPlainObject(value))
154
+ return onInvalid();
155
+ const result = {};
156
+ for (const [field, source] of Object.entries(value)) {
157
+ if (!PROFILE_FIELDS.has(field) || typeof source !== 'string' || !PROFILE_SOURCE_VALUES.includes(source))
158
+ return onInvalid();
159
+ result[field] = source;
160
+ }
161
+ return result;
162
+ }
163
+ function profileHash(value, onInvalid) {
164
+ if (value === null)
165
+ return null;
166
+ if (typeof value === 'string' && /^[0-9a-f]{64}$/.test(value))
167
+ return value;
168
+ return onInvalid();
169
+ }
170
+ function tagValues(value, onInvalid, rejectDuplicates) {
171
+ if (!Array.isArray(value))
172
+ return onInvalid();
173
+ const tags = [];
174
+ const seen = new Set();
175
+ for (const tag of value) {
176
+ if (typeof tag !== 'string' || tag.trim().length === 0)
177
+ return onInvalid();
178
+ if (seen.has(tag)) {
179
+ if (rejectDuplicates)
180
+ return onInvalid();
181
+ continue;
182
+ }
183
+ seen.add(tag);
184
+ tags.push(tag);
185
+ }
186
+ return tags;
187
+ }
188
+ function timestampFor(value, onInvalid) {
189
+ if (typeof value !== 'string' || !TIMESTAMP_PATTERN.test(value))
190
+ return onInvalid();
191
+ const date = new Date(value);
192
+ if (Number.isNaN(date.getTime()) || date.toISOString() !== value)
193
+ return onInvalid();
194
+ return value;
195
+ }
196
+ function nullableTimestamp(value, onInvalid) {
197
+ if (value === null)
198
+ return null;
199
+ return timestampFor(value, onInvalid);
200
+ }
201
+ function intakeLinkInput(value) {
202
+ const input = objectWithFields(value, INTAKE_LINK_FIELDS);
203
+ const initialProfileHash = input.initialProfileHash === undefined ? null : profileHash(input.initialProfileHash, validation);
204
+ const finalizedAt = input.finalizedAt === undefined ? null : nullableTimestamp(input.finalizedAt, validation);
205
+ if (finalizedAt !== null)
206
+ return validation();
207
+ if (typeof input.profileSchemaVersion !== 'number' || !Number.isInteger(input.profileSchemaVersion) || input.profileSchemaVersion <= 0)
208
+ return validation();
209
+ return {
210
+ runId: stringValue(input.runId),
211
+ sessionId: stringValue(input.sessionId),
212
+ workspace: requireWorkspace(input.workspace),
213
+ policyVersion: stringValue(input.policyVersion),
214
+ profileSchemaVersion: input.profileSchemaVersion,
215
+ profileSources: profileSources(input.profileSources, validation),
216
+ initialProfileHash,
217
+ recommendedTags: tagValues(input.recommendedTags, validation, false),
218
+ linkedAt: timestampFor(input.linkedAt, validation),
219
+ finalizedAt,
220
+ };
221
+ }
222
+ function intakeLinkReadInput(value) {
223
+ const input = objectWithFields(value, INTAKE_LINK_READ_FIELDS);
224
+ return { workspace: requireWorkspace(input.workspace), runId: stringValue(input.runId) };
225
+ }
226
+ function intakeLinkFinalizeInput(value) {
227
+ const input = objectWithFields(value, INTAKE_LINK_FINALIZE_FIELDS);
228
+ const hash = profileHash(input.profileHash, validation);
229
+ if (hash === null)
230
+ return validation();
231
+ return {
232
+ workspace: requireWorkspace(input.workspace),
233
+ runId: stringValue(input.runId),
234
+ profileHash: hash,
235
+ recommendedTags: tagValues(input.recommendedTags, validation, false),
236
+ finalizedAt: timestampFor(input.finalizedAt, validation),
237
+ };
238
+ }
239
+ function intakeLinkSourceInput(value) {
240
+ const input = objectWithFields(value, INTAKE_LINK_SOURCE_FIELDS);
241
+ return {
242
+ workspace: requireWorkspace(input.workspace),
243
+ runId: stringValue(input.runId),
244
+ field: answerQuestionId(input.field, validation),
245
+ };
246
+ }
247
+ function sessionUpdateInput(value) {
248
+ const input = objectWithFields(value, SESSION_UPDATE_FIELDS);
249
+ const expectedQuestionCount = questionCount(input.expectedQuestionCount, validation);
250
+ const nextQuestionCount = questionCount(input.questionCount, validation);
251
+ const validatedProfile = profile(input.profile, validation);
252
+ const status = sessionStatus(input.status, validation);
253
+ const updatedAt = timestamp(input.updatedAt);
254
+ return {
255
+ workspace: requireWorkspace(input.workspace),
256
+ sessionId: stringValue(input.sessionId),
257
+ expectedQuestionCount,
258
+ profile: validatedProfile,
259
+ status,
260
+ questionCount: nextQuestionCount,
261
+ updatedAt,
262
+ };
263
+ }
264
+ function parseStoredProfile(value) {
265
+ if (typeof value !== 'string')
266
+ return integrity();
267
+ try {
268
+ return profile(JSON.parse(value), integrity);
269
+ }
270
+ catch (error) {
271
+ if (error instanceof KiokukoError && error.code === 'INTEGRITY_ERROR')
272
+ throw error;
273
+ return integrity();
274
+ }
275
+ }
276
+ function storedString(value) {
277
+ if (typeof value !== 'string' || value.length === 0)
278
+ return integrity();
279
+ return value;
280
+ }
281
+ function storedQuestionCount(value) {
282
+ if (typeof value !== 'number' || !Number.isInteger(value) || value < 0 || value > 3)
283
+ return integrity();
284
+ return value;
285
+ }
286
+ function parseStoredAnswer(value) {
287
+ if (typeof value !== 'string')
288
+ return integrity();
289
+ try {
290
+ const parsed = JSON.parse(value);
291
+ if (canonicalJson(parsed) !== value)
292
+ return integrity();
293
+ return parsed;
294
+ }
295
+ catch {
296
+ return integrity();
297
+ }
298
+ }
299
+ function parseStoredCanonicalJson(value) {
300
+ if (typeof value !== 'string')
301
+ return integrity();
302
+ try {
303
+ const parsed = JSON.parse(value);
304
+ if (canonicalJson(parsed) !== value)
305
+ return integrity();
306
+ return parsed;
307
+ }
308
+ catch {
309
+ return integrity();
310
+ }
311
+ }
312
+ function storedProfileSources(value) {
313
+ return profileSources(parseStoredCanonicalJson(value), integrity);
314
+ }
315
+ function storedTags(value) {
316
+ return tagValues(parseStoredCanonicalJson(value), integrity, true);
317
+ }
318
+ function storedHash(value) {
319
+ return profileHash(value, integrity);
320
+ }
321
+ function storedNullableTimestamp(value) {
322
+ if (value === null)
323
+ return null;
324
+ return storedTimestamp(value);
325
+ }
326
+ function storedPositiveInteger(value) {
327
+ if (typeof value !== 'number' || !Number.isInteger(value) || value <= 0)
328
+ return integrity();
329
+ return value;
330
+ }
331
+ function mapAnswer(row) {
332
+ return {
333
+ sessionId: storedString(row.session_id),
334
+ questionId: answerQuestionId(row.question_id, integrity),
335
+ answer: parseStoredAnswer(row.answer_json),
336
+ createdAt: storedTimestamp(row.created_at),
337
+ };
338
+ }
339
+ function mapIntakeLink(row) {
340
+ const finalizedAt = storedNullableTimestamp(row.finalized_at);
341
+ const initialProfileHash = storedHash(row.initial_profile_hash);
342
+ if (finalizedAt !== null && initialProfileHash === null)
343
+ return integrity();
344
+ return {
345
+ runId: storedString(row.run_id),
346
+ sessionId: storedString(row.session_id),
347
+ workspace: storedString(row.workspace),
348
+ policyVersion: storedString(row.policy_version),
349
+ profileSchemaVersion: storedPositiveInteger(row.profile_schema_version),
350
+ profileSources: storedProfileSources(row.profile_sources_json),
351
+ initialProfileHash,
352
+ recommendedTags: storedTags(row.recommended_tags_json),
353
+ linkedAt: storedTimestamp(row.linked_at),
354
+ finalizedAt,
355
+ };
356
+ }
357
+ function mapSession(row) {
358
+ return {
359
+ id: storedString(row.id),
360
+ workspace: storedString(row.workspace),
361
+ task: storedString(row.task_text),
362
+ profile: parseStoredProfile(row.profile_json),
363
+ status: sessionStatus(row.status, integrity),
364
+ questionCount: storedQuestionCount(row.question_count),
365
+ createdAt: storedTimestamp(row.created_at),
366
+ updatedAt: storedTimestamp(row.updated_at),
367
+ };
368
+ }
369
+ function selectSession(database, workspace, sessionId) {
370
+ return database.prepare(`
371
+ SELECT id, workspace, task_text, profile_json, status, question_count, created_at, updated_at
372
+ FROM akinator_sessions
373
+ WHERE id = ? AND workspace = ?
374
+ `).get(sessionId, workspace);
375
+ }
376
+ function selectAnswer(database, sessionId, questionId) {
377
+ return database.prepare(`
378
+ SELECT session_id, question_id, answer_json, created_at
379
+ FROM akinator_answers
380
+ WHERE session_id = ? AND question_id = ?
381
+ `).get(sessionId, questionId);
382
+ }
383
+ function selectIntakeLink(database, workspace, runId) {
384
+ return database.prepare(`
385
+ SELECT
386
+ ri.run_id, ri.session_id, lr.workspace, ri.policy_version, ri.profile_schema_version,
387
+ ri.profile_sources_json, ri.initial_profile_hash, ri.recommended_tags_json,
388
+ ri.linked_at, ri.finalized_at
389
+ FROM run_intakes AS ri
390
+ JOIN ledger_runs AS lr ON lr.run_id = ri.run_id
391
+ WHERE ri.run_id = ? AND lr.workspace = ?
392
+ `).get(runId, workspace);
393
+ }
394
+ export function insertAkinatorSession(database, value) {
395
+ const input = sessionInput(value);
396
+ try {
397
+ database.prepare(`
398
+ INSERT INTO akinator_sessions (
399
+ id, workspace, task_text, profile_json, status, question_count, created_at, updated_at
400
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
401
+ `).run(input.id, input.workspace, input.task, canonicalJson(input.profile), input.status, input.questionCount, input.createdAt, input.updatedAt);
402
+ }
403
+ catch {
404
+ return conflict();
405
+ }
406
+ const row = selectSession(database, input.workspace, input.id);
407
+ if (!row)
408
+ return integrity();
409
+ return mapSession(row);
410
+ }
411
+ export function readAkinatorSession(database, value) {
412
+ const input = sessionReadInput(value);
413
+ const row = selectSession(database, input.workspace, input.sessionId);
414
+ if (!row)
415
+ return notFoundSession();
416
+ return mapSession(row);
417
+ }
418
+ export function updateAkinatorSession(database, value) {
419
+ const input = sessionUpdateInput(value);
420
+ const current = selectSession(database, input.workspace, input.sessionId);
421
+ if (!current)
422
+ return notFoundSession();
423
+ const currentView = mapSession(current);
424
+ if (currentView.status !== 'active' || currentView.questionCount !== input.expectedQuestionCount)
425
+ return conflict();
426
+ if (input.questionCount !== input.expectedQuestionCount + 1 || input.questionCount > 3)
427
+ return conflict();
428
+ try {
429
+ database.prepare(`
430
+ UPDATE akinator_sessions
431
+ SET profile_json = ?, status = ?, question_count = ?, updated_at = ?
432
+ WHERE id = ? AND workspace = ? AND status = 'active' AND question_count = ?
433
+ `).run(canonicalJson(input.profile), input.status, input.questionCount, input.updatedAt, input.sessionId, input.workspace, input.expectedQuestionCount);
434
+ }
435
+ catch {
436
+ return conflict();
437
+ }
438
+ const changes = database.prepare('SELECT changes() AS changes').get()?.changes;
439
+ if (changes !== 1)
440
+ return conflict();
441
+ const updated = selectSession(database, input.workspace, input.sessionId);
442
+ if (!updated)
443
+ return integrity();
444
+ return mapSession(updated);
445
+ }
446
+ export function readAkinatorAnswer(database, value) {
447
+ const input = answerReadInput(value);
448
+ if (!selectSession(database, input.workspace, input.sessionId))
449
+ return notFoundSession();
450
+ const row = selectAnswer(database, input.sessionId, input.questionId);
451
+ return row ? mapAnswer(row) : undefined;
452
+ }
453
+ export function insertAkinatorAnswer(database, value) {
454
+ const input = answerInput(value);
455
+ if (!selectSession(database, input.workspace, input.sessionId))
456
+ return notFoundSession();
457
+ const answerJsonValue = answerJson(input.answer);
458
+ const existing = selectAnswer(database, input.sessionId, input.questionId);
459
+ if (existing) {
460
+ const answer = mapAnswer(existing);
461
+ if (canonicalJson(answer.answer) !== answerJsonValue)
462
+ return conflict();
463
+ return { replayed: true, answer };
464
+ }
465
+ try {
466
+ database.prepare(`
467
+ INSERT INTO akinator_answers (session_id, question_id, answer_json, created_at)
468
+ VALUES (?, ?, ?, ?)
469
+ `).run(input.sessionId, input.questionId, answerJsonValue, input.createdAt);
470
+ }
471
+ catch {
472
+ return conflict();
473
+ }
474
+ const inserted = selectAnswer(database, input.sessionId, input.questionId);
475
+ if (!inserted)
476
+ return integrity();
477
+ return { replayed: false, answer: mapAnswer(inserted) };
478
+ }
479
+ export function insertRunIntakeLink(database, value) {
480
+ const input = intakeLinkInput(value);
481
+ const run = database.prepare('SELECT workspace FROM ledger_runs WHERE run_id = ?').get(input.runId);
482
+ const session = database.prepare('SELECT workspace FROM akinator_sessions WHERE id = ?').get(input.sessionId);
483
+ if (!run || !session || run.workspace !== input.workspace || session.workspace !== input.workspace)
484
+ return notFoundLink();
485
+ try {
486
+ database.prepare(`
487
+ INSERT INTO run_intakes (
488
+ run_id, session_id, policy_version, profile_schema_version, profile_sources_json,
489
+ initial_profile_hash, recommended_tags_json, linked_at, finalized_at
490
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
491
+ `).run(input.runId, input.sessionId, input.policyVersion, input.profileSchemaVersion, canonicalJson(input.profileSources), input.initialProfileHash, canonicalJson(input.recommendedTags), input.linkedAt, input.finalizedAt);
492
+ }
493
+ catch {
494
+ return conflict();
495
+ }
496
+ const inserted = selectIntakeLink(database, input.workspace, input.runId);
497
+ if (!inserted)
498
+ return integrity();
499
+ return mapIntakeLink(inserted);
500
+ }
501
+ export function readRunIntakeLink(database, value) {
502
+ const input = intakeLinkReadInput(value);
503
+ const row = selectIntakeLink(database, input.workspace, input.runId);
504
+ if (!row)
505
+ return notFoundLink();
506
+ return mapIntakeLink(row);
507
+ }
508
+ export function finalizeRunIntakeLink(database, value) {
509
+ const input = intakeLinkFinalizeInput(value);
510
+ const currentRow = selectIntakeLink(database, input.workspace, input.runId);
511
+ if (!currentRow)
512
+ return notFoundLink();
513
+ const current = mapIntakeLink(currentRow);
514
+ if (current.finalizedAt !== null) {
515
+ if (current.initialProfileHash === input.profileHash
516
+ && current.finalizedAt === input.finalizedAt
517
+ && current.recommendedTags.length === input.recommendedTags.length
518
+ && current.recommendedTags.every((tag, index) => tag === input.recommendedTags[index]))
519
+ return current;
520
+ return conflict();
521
+ }
522
+ try {
523
+ database.prepare(`
524
+ UPDATE run_intakes
525
+ SET initial_profile_hash = ?, recommended_tags_json = ?, finalized_at = ?
526
+ WHERE run_id = ? AND finalized_at IS NULL
527
+ `).run(input.profileHash, canonicalJson(input.recommendedTags), input.finalizedAt, input.runId);
528
+ }
529
+ catch {
530
+ return conflict();
531
+ }
532
+ const changes = database.prepare('SELECT changes() AS changes').get()?.changes;
533
+ if (changes !== 1) {
534
+ const racedRow = selectIntakeLink(database, input.workspace, input.runId);
535
+ if (!racedRow)
536
+ return notFoundLink();
537
+ const raced = mapIntakeLink(racedRow);
538
+ if (raced.finalizedAt === input.finalizedAt
539
+ && raced.initialProfileHash === input.profileHash
540
+ && raced.recommendedTags.length === input.recommendedTags.length
541
+ && raced.recommendedTags.every((tag, index) => tag === input.recommendedTags[index]))
542
+ return raced;
543
+ return conflict();
544
+ }
545
+ const finalized = selectIntakeLink(database, input.workspace, input.runId);
546
+ if (!finalized)
547
+ return integrity();
548
+ return mapIntakeLink(finalized);
549
+ }
550
+ /** Caller-owned primitive: mark one still-pending profile field as answered by the user. */
551
+ export function markRunIntakeProfileSource(database, value) {
552
+ const input = intakeLinkSourceInput(value);
553
+ const currentRow = selectIntakeLink(database, input.workspace, input.runId);
554
+ if (!currentRow)
555
+ return notFoundLink();
556
+ const current = mapIntakeLink(currentRow);
557
+ if (current.finalizedAt !== null)
558
+ return conflict();
559
+ if (current.profileSources[input.field] === 'user_answer')
560
+ return current;
561
+ const nextSources = {
562
+ ...current.profileSources,
563
+ [input.field]: 'user_answer',
564
+ };
565
+ try {
566
+ database.prepare(`
567
+ UPDATE run_intakes
568
+ SET profile_sources_json = ?
569
+ WHERE run_id = ? AND finalized_at IS NULL
570
+ `).run(canonicalJson(nextSources), input.runId);
571
+ }
572
+ catch {
573
+ return conflict();
574
+ }
575
+ const changes = database.prepare('SELECT changes() AS changes').get()?.changes;
576
+ if (changes !== 1)
577
+ return conflict();
578
+ const updated = selectIntakeLink(database, input.workspace, input.runId);
579
+ if (!updated)
580
+ return integrity();
581
+ return mapIntakeLink(updated);
582
+ }
583
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/akinator/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import type { EntryRecord } from '../memory/entries.js';
2
+ export declare const TASK_TYPES: readonly ["build", "debug", "research", "review", "devops", "writing", "analysis"];
3
+ export type TaskType = (typeof TASK_TYPES)[number];
4
+ export interface TaskProfile {
5
+ taskType: TaskType | null;
6
+ target: string | null;
7
+ expected: string | null;
8
+ constraints: string | null;
9
+ }
10
+ export interface AkinatorQuestion {
11
+ id: keyof TaskProfile;
12
+ prompt: string;
13
+ options: string[] | null;
14
+ required: boolean;
15
+ }
16
+ export interface AkinatorSessionView {
17
+ id: string;
18
+ workspace: string;
19
+ task: string;
20
+ profile: TaskProfile;
21
+ status: 'active' | 'ready' | 'exhausted';
22
+ questionCount: number;
23
+ createdAt: string;
24
+ updatedAt: string;
25
+ }
26
+ export interface ExternalSyncSummary {
27
+ attempted: boolean;
28
+ imported: number;
29
+ sources: Array<{
30
+ sourceId: string;
31
+ commit: string | null;
32
+ documents: number;
33
+ imported: number;
34
+ error?: string;
35
+ }>;
36
+ }
37
+ export interface AkinatorResult {
38
+ status: 'needs_answer' | 'ready' | 'exhausted';
39
+ session: AkinatorSessionView;
40
+ question: AkinatorQuestion | null;
41
+ missingFields: Array<keyof TaskProfile>;
42
+ recommendedTags: string[];
43
+ }
44
+ export interface AkinatorContext extends AkinatorResult {
45
+ entries: EntryRecord[];
46
+ instructions: string[];
47
+ externalSync: ExternalSyncSummary;
48
+ }
49
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/akinator/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,eAAO,MAAM,UAAU,oFAAqF,CAAC;AAC7G,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,WAAW,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,WAAW,CAAC;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,KAAK,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,cAAc,GAAG,OAAO,GAAG,WAAW,CAAC;IAC/C,OAAO,EAAE,mBAAmB,CAAC;IAC7B,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAClC,aAAa,EAAE,KAAK,CAAC,MAAM,WAAW,CAAC,CAAC;IACxC,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,mBAAmB,CAAC;CACnC"}