kiokuko-dsh 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1032) hide show
  1. package/LICENSE +21 -0
  2. package/README.ja.md +50 -0
  3. package/README.ko.md +50 -0
  4. package/README.md +53 -0
  5. package/README.zh-CN.md +50 -0
  6. package/dist/agent-file/atomic-write.d.ts +93 -0
  7. package/dist/agent-file/atomic-write.d.ts.map +1 -0
  8. package/dist/agent-file/atomic-write.js +1026 -0
  9. package/dist/agent-file/atomic-write.js.map +1 -0
  10. package/dist/agent-file/managed-block.d.ts +23 -0
  11. package/dist/agent-file/managed-block.d.ts.map +1 -0
  12. package/dist/agent-file/managed-block.js +101 -0
  13. package/dist/agent-file/managed-block.js.map +1 -0
  14. package/dist/agent-file/render.d.ts +14 -0
  15. package/dist/agent-file/render.d.ts.map +1 -0
  16. package/dist/agent-file/render.js +63 -0
  17. package/dist/agent-file/render.js.map +1 -0
  18. package/dist/akinator/agent-task.d.ts +72 -0
  19. package/dist/akinator/agent-task.d.ts.map +1 -0
  20. package/dist/akinator/agent-task.js +684 -0
  21. package/dist/akinator/agent-task.js.map +1 -0
  22. package/dist/akinator/capabilities.d.ts +92 -0
  23. package/dist/akinator/capabilities.d.ts.map +1 -0
  24. package/dist/akinator/capabilities.js +364 -0
  25. package/dist/akinator/capabilities.js.map +1 -0
  26. package/dist/akinator/capability-binding.d.ts +11 -0
  27. package/dist/akinator/capability-binding.d.ts.map +1 -0
  28. package/dist/akinator/capability-binding.js +71 -0
  29. package/dist/akinator/capability-binding.js.map +1 -0
  30. package/dist/akinator/domain.d.ts +25 -0
  31. package/dist/akinator/domain.d.ts.map +1 -0
  32. package/dist/akinator/domain.js +266 -0
  33. package/dist/akinator/domain.js.map +1 -0
  34. package/dist/akinator/knowledge-path.d.ts +33 -0
  35. package/dist/akinator/knowledge-path.d.ts.map +1 -0
  36. package/dist/akinator/knowledge-path.js +474 -0
  37. package/dist/akinator/knowledge-path.js.map +1 -0
  38. package/dist/akinator/orchestrator.d.ts +7 -0
  39. package/dist/akinator/orchestrator.d.ts.map +1 -0
  40. package/dist/akinator/orchestrator.js +8 -0
  41. package/dist/akinator/orchestrator.js.map +1 -0
  42. package/dist/akinator/reasoning.d.ts +8 -0
  43. package/dist/akinator/reasoning.d.ts.map +1 -0
  44. package/dist/akinator/reasoning.js +118 -0
  45. package/dist/akinator/reasoning.js.map +1 -0
  46. package/dist/akinator/service.d.ts +32 -0
  47. package/dist/akinator/service.d.ts.map +1 -0
  48. package/dist/akinator/service.js +294 -0
  49. package/dist/akinator/service.js.map +1 -0
  50. package/dist/akinator/skill-discovery-attempt.d.ts +26 -0
  51. package/dist/akinator/skill-discovery-attempt.d.ts.map +1 -0
  52. package/dist/akinator/skill-discovery-attempt.js +469 -0
  53. package/dist/akinator/skill-discovery-attempt.js.map +1 -0
  54. package/dist/akinator/store.d.ts +96 -0
  55. package/dist/akinator/store.d.ts.map +1 -0
  56. package/dist/akinator/store.js +642 -0
  57. package/dist/akinator/store.js.map +1 -0
  58. package/dist/akinator/types.d.ts +70 -0
  59. package/dist/akinator/types.d.ts.map +1 -0
  60. package/dist/akinator/types.js +2 -0
  61. package/dist/akinator/types.js.map +1 -0
  62. package/dist/bin/kiokuko.d.ts +3 -0
  63. package/dist/bin/kiokuko.d.ts.map +1 -0
  64. package/dist/bin/kiokuko.js +13 -0
  65. package/dist/bin/kiokuko.js.map +1 -0
  66. package/dist/cli.d.ts +24 -0
  67. package/dist/cli.d.ts.map +1 -0
  68. package/dist/cli.js +962 -0
  69. package/dist/cli.js.map +1 -0
  70. package/dist/client/server-client.d.ts +22 -0
  71. package/dist/client/server-client.d.ts.map +1 -0
  72. package/dist/client/server-client.js +729 -0
  73. package/dist/client/server-client.js.map +1 -0
  74. package/dist/commands/agent.d.ts +12 -0
  75. package/dist/commands/agent.d.ts.map +1 -0
  76. package/dist/commands/agent.js +1138 -0
  77. package/dist/commands/agent.js.map +1 -0
  78. package/dist/commands/backup.d.ts +6 -0
  79. package/dist/commands/backup.d.ts.map +1 -0
  80. package/dist/commands/backup.js +77 -0
  81. package/dist/commands/backup.js.map +1 -0
  82. package/dist/commands/curator.d.ts +25 -0
  83. package/dist/commands/curator.d.ts.map +1 -0
  84. package/dist/commands/curator.js +58 -0
  85. package/dist/commands/curator.js.map +1 -0
  86. package/dist/commands/doctor.d.ts +61 -0
  87. package/dist/commands/doctor.d.ts.map +1 -0
  88. package/dist/commands/doctor.js +522 -0
  89. package/dist/commands/doctor.js.map +1 -0
  90. package/dist/commands/embeddings.d.ts +40 -0
  91. package/dist/commands/embeddings.d.ts.map +1 -0
  92. package/dist/commands/embeddings.js +317 -0
  93. package/dist/commands/embeddings.js.map +1 -0
  94. package/dist/commands/enno.d.ts +7 -0
  95. package/dist/commands/enno.d.ts.map +1 -0
  96. package/dist/commands/enno.js +76 -0
  97. package/dist/commands/enno.js.map +1 -0
  98. package/dist/commands/export.d.ts +17 -0
  99. package/dist/commands/export.d.ts.map +1 -0
  100. package/dist/commands/export.js +233 -0
  101. package/dist/commands/export.js.map +1 -0
  102. package/dist/commands/import.d.ts +24 -0
  103. package/dist/commands/import.d.ts.map +1 -0
  104. package/dist/commands/import.js +778 -0
  105. package/dist/commands/import.js.map +1 -0
  106. package/dist/commands/init.d.ts +34 -0
  107. package/dist/commands/init.d.ts.map +1 -0
  108. package/dist/commands/init.js +637 -0
  109. package/dist/commands/init.js.map +1 -0
  110. package/dist/commands/ledger.d.ts +7 -0
  111. package/dist/commands/ledger.d.ts.map +1 -0
  112. package/dist/commands/ledger.js +66 -0
  113. package/dist/commands/ledger.js.map +1 -0
  114. package/dist/commands/purge.d.ts +10 -0
  115. package/dist/commands/purge.d.ts.map +1 -0
  116. package/dist/commands/purge.js +29 -0
  117. package/dist/commands/purge.js.map +1 -0
  118. package/dist/commands/serve.d.ts +34 -0
  119. package/dist/commands/serve.d.ts.map +1 -0
  120. package/dist/commands/serve.js +120 -0
  121. package/dist/commands/serve.js.map +1 -0
  122. package/dist/commands/server-status.d.ts +20 -0
  123. package/dist/commands/server-status.d.ts.map +1 -0
  124. package/dist/commands/server-status.js +21 -0
  125. package/dist/commands/server-status.js.map +1 -0
  126. package/dist/commands/server.d.ts +13 -0
  127. package/dist/commands/server.d.ts.map +1 -0
  128. package/dist/commands/server.js +89 -0
  129. package/dist/commands/server.js.map +1 -0
  130. package/dist/commands/setup.d.ts +105 -0
  131. package/dist/commands/setup.d.ts.map +1 -0
  132. package/dist/commands/setup.js +793 -0
  133. package/dist/commands/setup.js.map +1 -0
  134. package/dist/commands/skills.d.ts +9 -0
  135. package/dist/commands/skills.d.ts.map +1 -0
  136. package/dist/commands/skills.js +317 -0
  137. package/dist/commands/skills.js.map +1 -0
  138. package/dist/commands/use.d.ts +40 -0
  139. package/dist/commands/use.d.ts.map +1 -0
  140. package/dist/commands/use.js +1090 -0
  141. package/dist/commands/use.js.map +1 -0
  142. package/dist/config/paths.d.ts +57 -0
  143. package/dist/config/paths.d.ts.map +1 -0
  144. package/dist/config/paths.js +352 -0
  145. package/dist/config/paths.js.map +1 -0
  146. package/dist/config/project-config.d.ts +11 -0
  147. package/dist/config/project-config.d.ts.map +1 -0
  148. package/dist/config/project-config.js +97 -0
  149. package/dist/config/project-config.js.map +1 -0
  150. package/dist/context/broker.d.ts +99 -0
  151. package/dist/context/broker.d.ts.map +1 -0
  152. package/dist/context/broker.js +923 -0
  153. package/dist/context/broker.js.map +1 -0
  154. package/dist/context/delivery-migration.d.ts +40 -0
  155. package/dist/context/delivery-migration.d.ts.map +1 -0
  156. package/dist/context/delivery-migration.js +367 -0
  157. package/dist/context/delivery-migration.js.map +1 -0
  158. package/dist/context/delivery.d.ts +61 -0
  159. package/dist/context/delivery.d.ts.map +1 -0
  160. package/dist/context/delivery.js +886 -0
  161. package/dist/context/delivery.js.map +1 -0
  162. package/dist/context/feedback.d.ts +73 -0
  163. package/dist/context/feedback.d.ts.map +1 -0
  164. package/dist/context/feedback.js +993 -0
  165. package/dist/context/feedback.js.map +1 -0
  166. package/dist/context/nudge-store.d.ts +57 -0
  167. package/dist/context/nudge-store.d.ts.map +1 -0
  168. package/dist/context/nudge-store.js +227 -0
  169. package/dist/context/nudge-store.js.map +1 -0
  170. package/dist/context/nudge-validation.d.ts +26 -0
  171. package/dist/context/nudge-validation.d.ts.map +1 -0
  172. package/dist/context/nudge-validation.js +122 -0
  173. package/dist/context/nudge-validation.js.map +1 -0
  174. package/dist/context/nudges.d.ts +38 -0
  175. package/dist/context/nudges.d.ts.map +1 -0
  176. package/dist/context/nudges.js +131 -0
  177. package/dist/context/nudges.js.map +1 -0
  178. package/dist/context/origin.d.ts +9 -0
  179. package/dist/context/origin.d.ts.map +1 -0
  180. package/dist/context/origin.js +15 -0
  181. package/dist/context/origin.js.map +1 -0
  182. package/dist/context/ranking.d.ts +92 -0
  183. package/dist/context/ranking.d.ts.map +1 -0
  184. package/dist/context/ranking.js +560 -0
  185. package/dist/context/ranking.js.map +1 -0
  186. package/dist/context/recommendations.d.ts +80 -0
  187. package/dist/context/recommendations.d.ts.map +1 -0
  188. package/dist/context/recommendations.js +341 -0
  189. package/dist/context/recommendations.js.map +1 -0
  190. package/dist/context/run-state.d.ts +26 -0
  191. package/dist/context/run-state.d.ts.map +1 -0
  192. package/dist/context/run-state.js +399 -0
  193. package/dist/context/run-state.js.map +1 -0
  194. package/dist/context/scoped-broker.d.ts +77 -0
  195. package/dist/context/scoped-broker.d.ts.map +1 -0
  196. package/dist/context/scoped-broker.js +690 -0
  197. package/dist/context/scoped-broker.js.map +1 -0
  198. package/dist/context/selection-state.d.ts +32 -0
  199. package/dist/context/selection-state.d.ts.map +1 -0
  200. package/dist/context/selection-state.js +369 -0
  201. package/dist/context/selection-state.js.map +1 -0
  202. package/dist/db/adapter.d.ts +27 -0
  203. package/dist/db/adapter.d.ts.map +1 -0
  204. package/dist/db/adapter.js +41 -0
  205. package/dist/db/adapter.js.map +1 -0
  206. package/dist/db/capabilities.d.ts +21 -0
  207. package/dist/db/capabilities.d.ts.map +1 -0
  208. package/dist/db/capabilities.js +57 -0
  209. package/dist/db/capabilities.js.map +1 -0
  210. package/dist/db/connection.d.ts +21 -0
  211. package/dist/db/connection.d.ts.map +1 -0
  212. package/dist/db/connection.js +129 -0
  213. package/dist/db/connection.js.map +1 -0
  214. package/dist/db/migrate.d.ts +40 -0
  215. package/dist/db/migrate.d.ts.map +1 -0
  216. package/dist/db/migrate.js +216 -0
  217. package/dist/db/migrate.js.map +1 -0
  218. package/dist/db/sqlite-retry.d.ts +11 -0
  219. package/dist/db/sqlite-retry.d.ts.map +1 -0
  220. package/dist/db/sqlite-retry.js +70 -0
  221. package/dist/db/sqlite-retry.js.map +1 -0
  222. package/dist/db/transaction.d.ts +17 -0
  223. package/dist/db/transaction.d.ts.map +1 -0
  224. package/dist/db/transaction.js +68 -0
  225. package/dist/db/transaction.js.map +1 -0
  226. package/dist/db/upgrade-backup.d.ts +59 -0
  227. package/dist/db/upgrade-backup.d.ts.map +1 -0
  228. package/dist/db/upgrade-backup.js +773 -0
  229. package/dist/db/upgrade-backup.js.map +1 -0
  230. package/dist/dsh/advisory-runner.d.ts +32 -0
  231. package/dist/dsh/advisory-runner.d.ts.map +1 -0
  232. package/dist/dsh/advisory-runner.js +111 -0
  233. package/dist/dsh/advisory-runner.js.map +1 -0
  234. package/dist/dsh/agent-state.d.ts +49 -0
  235. package/dist/dsh/agent-state.d.ts.map +1 -0
  236. package/dist/dsh/agent-state.js +103 -0
  237. package/dist/dsh/agent-state.js.map +1 -0
  238. package/dist/dsh/capability-catalog.d.ts +24 -0
  239. package/dist/dsh/capability-catalog.d.ts.map +1 -0
  240. package/dist/dsh/capability-catalog.js +108 -0
  241. package/dist/dsh/capability-catalog.js.map +1 -0
  242. package/dist/dsh/commands.d.ts +43 -0
  243. package/dist/dsh/commands.d.ts.map +1 -0
  244. package/dist/dsh/commands.js +83 -0
  245. package/dist/dsh/commands.js.map +1 -0
  246. package/dist/dsh/composition.d.ts +64 -0
  247. package/dist/dsh/composition.d.ts.map +1 -0
  248. package/dist/dsh/composition.js +104 -0
  249. package/dist/dsh/composition.js.map +1 -0
  250. package/dist/dsh/config.d.ts +7 -0
  251. package/dist/dsh/config.d.ts.map +1 -0
  252. package/dist/dsh/config.js +6 -0
  253. package/dist/dsh/config.js.map +1 -0
  254. package/dist/dsh/context-injection.d.ts +24 -0
  255. package/dist/dsh/context-injection.d.ts.map +1 -0
  256. package/dist/dsh/context-injection.js +61 -0
  257. package/dist/dsh/context-injection.js.map +1 -0
  258. package/dist/dsh/enno-controller.d.ts +94 -0
  259. package/dist/dsh/enno-controller.d.ts.map +1 -0
  260. package/dist/dsh/enno-controller.js +137 -0
  261. package/dist/dsh/enno-controller.js.map +1 -0
  262. package/dist/dsh/index.d.ts +31 -0
  263. package/dist/dsh/index.d.ts.map +1 -0
  264. package/dist/dsh/index.js +52 -0
  265. package/dist/dsh/index.js.map +1 -0
  266. package/dist/dsh/intake-gate.d.ts +50 -0
  267. package/dist/dsh/intake-gate.d.ts.map +1 -0
  268. package/dist/dsh/intake-gate.js +77 -0
  269. package/dist/dsh/intake-gate.js.map +1 -0
  270. package/dist/dsh/intake-profile-resolver.d.ts +22 -0
  271. package/dist/dsh/intake-profile-resolver.d.ts.map +1 -0
  272. package/dist/dsh/intake-profile-resolver.js +44 -0
  273. package/dist/dsh/intake-profile-resolver.js.map +1 -0
  274. package/dist/dsh/message-sources.d.ts +28 -0
  275. package/dist/dsh/message-sources.d.ts.map +1 -0
  276. package/dist/dsh/message-sources.js +62 -0
  277. package/dist/dsh/message-sources.js.map +1 -0
  278. package/dist/dsh/parity.d.ts +18 -0
  279. package/dist/dsh/parity.d.ts.map +1 -0
  280. package/dist/dsh/parity.js +105 -0
  281. package/dist/dsh/parity.js.map +1 -0
  282. package/dist/dsh/prompt-policy.d.ts +18 -0
  283. package/dist/dsh/prompt-policy.d.ts.map +1 -0
  284. package/dist/dsh/prompt-policy.js +16 -0
  285. package/dist/dsh/prompt-policy.js.map +1 -0
  286. package/dist/dsh/runtime.d.ts +40 -0
  287. package/dist/dsh/runtime.d.ts.map +1 -0
  288. package/dist/dsh/runtime.js +237 -0
  289. package/dist/dsh/runtime.js.map +1 -0
  290. package/dist/dsh/session-bridge.d.ts +98 -0
  291. package/dist/dsh/session-bridge.d.ts.map +1 -0
  292. package/dist/dsh/session-bridge.js +202 -0
  293. package/dist/dsh/session-bridge.js.map +1 -0
  294. package/dist/dsh/standard-skill-provider.d.ts +50 -0
  295. package/dist/dsh/standard-skill-provider.d.ts.map +1 -0
  296. package/dist/dsh/standard-skill-provider.js +71 -0
  297. package/dist/dsh/standard-skill-provider.js.map +1 -0
  298. package/dist/dsh/tool-policy.d.ts +40 -0
  299. package/dist/dsh/tool-policy.d.ts.map +1 -0
  300. package/dist/dsh/tool-policy.js +125 -0
  301. package/dist/dsh/tool-policy.js.map +1 -0
  302. package/dist/dsh/tools.d.ts +85 -0
  303. package/dist/dsh/tools.d.ts.map +1 -0
  304. package/dist/dsh/tools.js +156 -0
  305. package/dist/dsh/tools.js.map +1 -0
  306. package/dist/dsh/user-interaction.d.ts +51 -0
  307. package/dist/dsh/user-interaction.d.ts.map +1 -0
  308. package/dist/dsh/user-interaction.js +92 -0
  309. package/dist/dsh/user-interaction.js.map +1 -0
  310. package/dist/embedding/backend.d.ts +27 -0
  311. package/dist/embedding/backend.d.ts.map +1 -0
  312. package/dist/embedding/backend.js +67 -0
  313. package/dist/embedding/backend.js.map +1 -0
  314. package/dist/embedding/config.d.ts +10 -0
  315. package/dist/embedding/config.d.ts.map +1 -0
  316. package/dist/embedding/config.js +142 -0
  317. package/dist/embedding/config.js.map +1 -0
  318. package/dist/embedding/diagnostics.d.ts +34 -0
  319. package/dist/embedding/diagnostics.d.ts.map +1 -0
  320. package/dist/embedding/diagnostics.js +274 -0
  321. package/dist/embedding/diagnostics.js.map +1 -0
  322. package/dist/embedding/document.d.ts +20 -0
  323. package/dist/embedding/document.d.ts.map +1 -0
  324. package/dist/embedding/document.js +122 -0
  325. package/dist/embedding/document.js.map +1 -0
  326. package/dist/embedding/javascript-backend.d.ts +11 -0
  327. package/dist/embedding/javascript-backend.d.ts.map +1 -0
  328. package/dist/embedding/javascript-backend.js +164 -0
  329. package/dist/embedding/javascript-backend.js.map +1 -0
  330. package/dist/embedding/jobs.d.ts +67 -0
  331. package/dist/embedding/jobs.d.ts.map +1 -0
  332. package/dist/embedding/jobs.js +259 -0
  333. package/dist/embedding/jobs.js.map +1 -0
  334. package/dist/embedding/local-model-loader.d.ts +24 -0
  335. package/dist/embedding/local-model-loader.d.ts.map +1 -0
  336. package/dist/embedding/local-model-loader.js +64 -0
  337. package/dist/embedding/local-model-loader.js.map +1 -0
  338. package/dist/embedding/local-transformers-provider.d.ts +17 -0
  339. package/dist/embedding/local-transformers-provider.d.ts.map +1 -0
  340. package/dist/embedding/local-transformers-provider.js +54 -0
  341. package/dist/embedding/local-transformers-provider.js.map +1 -0
  342. package/dist/embedding/model-download.d.ts +32 -0
  343. package/dist/embedding/model-download.d.ts.map +1 -0
  344. package/dist/embedding/model-download.js +41 -0
  345. package/dist/embedding/model-download.js.map +1 -0
  346. package/dist/embedding/model-installation.d.ts +17 -0
  347. package/dist/embedding/model-installation.d.ts.map +1 -0
  348. package/dist/embedding/model-installation.js +71 -0
  349. package/dist/embedding/model-installation.js.map +1 -0
  350. package/dist/embedding/model-manifest.d.ts +18 -0
  351. package/dist/embedding/model-manifest.d.ts.map +1 -0
  352. package/dist/embedding/model-manifest.js +86 -0
  353. package/dist/embedding/model-manifest.js.map +1 -0
  354. package/dist/embedding/openai-compatible-provider.d.ts +24 -0
  355. package/dist/embedding/openai-compatible-provider.d.ts.map +1 -0
  356. package/dist/embedding/openai-compatible-provider.js +330 -0
  357. package/dist/embedding/openai-compatible-provider.js.map +1 -0
  358. package/dist/embedding/presets/local-small.d.ts +8 -0
  359. package/dist/embedding/presets/local-small.d.ts.map +1 -0
  360. package/dist/embedding/presets/local-small.js +67 -0
  361. package/dist/embedding/presets/local-small.js.map +1 -0
  362. package/dist/embedding/presets/manifest.d.ts +27 -0
  363. package/dist/embedding/presets/manifest.d.ts.map +1 -0
  364. package/dist/embedding/presets/manifest.js +5 -0
  365. package/dist/embedding/presets/manifest.js.map +1 -0
  366. package/dist/embedding/profile.d.ts +10 -0
  367. package/dist/embedding/profile.d.ts.map +1 -0
  368. package/dist/embedding/profile.js +67 -0
  369. package/dist/embedding/profile.js.map +1 -0
  370. package/dist/embedding/provider.d.ts +13 -0
  371. package/dist/embedding/provider.d.ts.map +1 -0
  372. package/dist/embedding/provider.js +17 -0
  373. package/dist/embedding/provider.js.map +1 -0
  374. package/dist/embedding/query-cache.d.ts +45 -0
  375. package/dist/embedding/query-cache.d.ts.map +1 -0
  376. package/dist/embedding/query-cache.js +181 -0
  377. package/dist/embedding/query-cache.js.map +1 -0
  378. package/dist/embedding/runtime.d.ts +14 -0
  379. package/dist/embedding/runtime.d.ts.map +1 -0
  380. package/dist/embedding/runtime.js +407 -0
  381. package/dist/embedding/runtime.js.map +1 -0
  382. package/dist/embedding/settings.d.ts +6 -0
  383. package/dist/embedding/settings.d.ts.map +1 -0
  384. package/dist/embedding/settings.js +69 -0
  385. package/dist/embedding/settings.js.map +1 -0
  386. package/dist/embedding/setup-lock.d.ts +7 -0
  387. package/dist/embedding/setup-lock.d.ts.map +1 -0
  388. package/dist/embedding/setup-lock.js +35 -0
  389. package/dist/embedding/setup-lock.js.map +1 -0
  390. package/dist/embedding/setup-service.d.ts +53 -0
  391. package/dist/embedding/setup-service.d.ts.map +1 -0
  392. package/dist/embedding/setup-service.js +184 -0
  393. package/dist/embedding/setup-service.js.map +1 -0
  394. package/dist/embedding/sqlite-vec-backend.d.ts +9 -0
  395. package/dist/embedding/sqlite-vec-backend.d.ts.map +1 -0
  396. package/dist/embedding/sqlite-vec-backend.js +106 -0
  397. package/dist/embedding/sqlite-vec-backend.js.map +1 -0
  398. package/dist/embedding/sqlite-vec-loader.d.ts +17 -0
  399. package/dist/embedding/sqlite-vec-loader.d.ts.map +1 -0
  400. package/dist/embedding/sqlite-vec-loader.js +51 -0
  401. package/dist/embedding/sqlite-vec-loader.js.map +1 -0
  402. package/dist/embedding/store.d.ts +66 -0
  403. package/dist/embedding/store.d.ts.map +1 -0
  404. package/dist/embedding/store.js +490 -0
  405. package/dist/embedding/store.js.map +1 -0
  406. package/dist/embedding/types.d.ts +126 -0
  407. package/dist/embedding/types.d.ts.map +1 -0
  408. package/dist/embedding/types.js +2 -0
  409. package/dist/embedding/types.js.map +1 -0
  410. package/dist/embedding/vector.d.ts +9 -0
  411. package/dist/embedding/vector.d.ts.map +1 -0
  412. package/dist/embedding/vector.js +90 -0
  413. package/dist/embedding/vector.js.map +1 -0
  414. package/dist/embedding/worker.d.ts +23 -0
  415. package/dist/embedding/worker.d.ts.map +1 -0
  416. package/dist/embedding/worker.js +84 -0
  417. package/dist/embedding/worker.js.map +1 -0
  418. package/dist/enno-oduno/adapters.d.ts +21 -0
  419. package/dist/enno-oduno/adapters.d.ts.map +1 -0
  420. package/dist/enno-oduno/adapters.js +253 -0
  421. package/dist/enno-oduno/adapters.js.map +1 -0
  422. package/dist/enno-oduno/advisory-store.d.ts +31 -0
  423. package/dist/enno-oduno/advisory-store.d.ts.map +1 -0
  424. package/dist/enno-oduno/advisory-store.js +105 -0
  425. package/dist/enno-oduno/advisory-store.js.map +1 -0
  426. package/dist/enno-oduno/advisory.d.ts +18 -0
  427. package/dist/enno-oduno/advisory.d.ts.map +1 -0
  428. package/dist/enno-oduno/advisory.js +310 -0
  429. package/dist/enno-oduno/advisory.js.map +1 -0
  430. package/dist/enno-oduno/confirmation.d.ts +4 -0
  431. package/dist/enno-oduno/confirmation.d.ts.map +1 -0
  432. package/dist/enno-oduno/confirmation.js +127 -0
  433. package/dist/enno-oduno/confirmation.js.map +1 -0
  434. package/dist/enno-oduno/directives.d.ts +12 -0
  435. package/dist/enno-oduno/directives.d.ts.map +1 -0
  436. package/dist/enno-oduno/directives.js +276 -0
  437. package/dist/enno-oduno/directives.js.map +1 -0
  438. package/dist/enno-oduno/enno-oduno.d.mts +2 -0
  439. package/dist/enno-oduno/enno-oduno.d.mts.map +1 -0
  440. package/dist/enno-oduno/enno-oduno.mjs +3 -0
  441. package/dist/enno-oduno/enno-oduno.mjs.map +1 -0
  442. package/dist/enno-oduno/experts.d.ts +6 -0
  443. package/dist/enno-oduno/experts.d.ts.map +1 -0
  444. package/dist/enno-oduno/experts.js +32 -0
  445. package/dist/enno-oduno/experts.js.map +1 -0
  446. package/dist/enno-oduno/goki.d.mts +2 -0
  447. package/dist/enno-oduno/goki.d.mts.map +1 -0
  448. package/dist/enno-oduno/goki.mjs +3 -0
  449. package/dist/enno-oduno/goki.mjs.map +1 -0
  450. package/dist/enno-oduno/handoff.d.ts +4 -0
  451. package/dist/enno-oduno/handoff.d.ts.map +1 -0
  452. package/dist/enno-oduno/handoff.js +18 -0
  453. package/dist/enno-oduno/handoff.js.map +1 -0
  454. package/dist/enno-oduno/harness.d.ts +20 -0
  455. package/dist/enno-oduno/harness.d.ts.map +1 -0
  456. package/dist/enno-oduno/harness.js +66 -0
  457. package/dist/enno-oduno/harness.js.map +1 -0
  458. package/dist/enno-oduno/instructions.d.ts +9 -0
  459. package/dist/enno-oduno/instructions.d.ts.map +1 -0
  460. package/dist/enno-oduno/instructions.js +12 -0
  461. package/dist/enno-oduno/instructions.js.map +1 -0
  462. package/dist/enno-oduno/plan-recovery.d.ts +44 -0
  463. package/dist/enno-oduno/plan-recovery.d.ts.map +1 -0
  464. package/dist/enno-oduno/plan-recovery.js +160 -0
  465. package/dist/enno-oduno/plan-recovery.js.map +1 -0
  466. package/dist/enno-oduno/repository-state.d.ts +8 -0
  467. package/dist/enno-oduno/repository-state.d.ts.map +1 -0
  468. package/dist/enno-oduno/repository-state.js +139 -0
  469. package/dist/enno-oduno/repository-state.js.map +1 -0
  470. package/dist/enno-oduno/role-runner.d.ts +9 -0
  471. package/dist/enno-oduno/role-runner.d.ts.map +1 -0
  472. package/dist/enno-oduno/role-runner.js +219 -0
  473. package/dist/enno-oduno/role-runner.js.map +1 -0
  474. package/dist/enno-oduno/sanitize.d.ts +17 -0
  475. package/dist/enno-oduno/sanitize.d.ts.map +1 -0
  476. package/dist/enno-oduno/sanitize.js +88 -0
  477. package/dist/enno-oduno/sanitize.js.map +1 -0
  478. package/dist/enno-oduno/schemas.d.ts +962 -0
  479. package/dist/enno-oduno/schemas.d.ts.map +1 -0
  480. package/dist/enno-oduno/schemas.js +609 -0
  481. package/dist/enno-oduno/schemas.js.map +1 -0
  482. package/dist/enno-oduno/service.d.ts +57 -0
  483. package/dist/enno-oduno/service.d.ts.map +1 -0
  484. package/dist/enno-oduno/service.js +1379 -0
  485. package/dist/enno-oduno/service.js.map +1 -0
  486. package/dist/enno-oduno/skills.d.ts +22 -0
  487. package/dist/enno-oduno/skills.d.ts.map +1 -0
  488. package/dist/enno-oduno/skills.js +127 -0
  489. package/dist/enno-oduno/skills.js.map +1 -0
  490. package/dist/enno-oduno/store.d.ts +106 -0
  491. package/dist/enno-oduno/store.d.ts.map +1 -0
  492. package/dist/enno-oduno/store.js +712 -0
  493. package/dist/enno-oduno/store.js.map +1 -0
  494. package/dist/enno-oduno/types.d.ts +457 -0
  495. package/dist/enno-oduno/types.d.ts.map +1 -0
  496. package/dist/enno-oduno/types.js +66 -0
  497. package/dist/enno-oduno/types.js.map +1 -0
  498. package/dist/enno-oduno/validation-errors.d.ts +93 -0
  499. package/dist/enno-oduno/validation-errors.d.ts.map +1 -0
  500. package/dist/enno-oduno/validation-errors.js +152 -0
  501. package/dist/enno-oduno/validation-errors.js.map +1 -0
  502. package/dist/enno-oduno/verifier.d.ts +10 -0
  503. package/dist/enno-oduno/verifier.d.ts.map +1 -0
  504. package/dist/enno-oduno/verifier.js +214 -0
  505. package/dist/enno-oduno/verifier.js.map +1 -0
  506. package/dist/enno-oduno/zenki.d.mts +2 -0
  507. package/dist/enno-oduno/zenki.d.mts.map +1 -0
  508. package/dist/enno-oduno/zenki.mjs +3 -0
  509. package/dist/enno-oduno/zenki.mjs.map +1 -0
  510. package/dist/errors.d.ts +13 -0
  511. package/dist/errors.d.ts.map +1 -0
  512. package/dist/errors.js +60 -0
  513. package/dist/errors.js.map +1 -0
  514. package/dist/gateway/agent-service.d.ts +72 -0
  515. package/dist/gateway/agent-service.d.ts.map +1 -0
  516. package/dist/gateway/agent-service.js +594 -0
  517. package/dist/gateway/agent-service.js.map +1 -0
  518. package/dist/gateway/checkpoint-mutation-service.d.ts +33 -0
  519. package/dist/gateway/checkpoint-mutation-service.d.ts.map +1 -0
  520. package/dist/gateway/checkpoint-mutation-service.js +513 -0
  521. package/dist/gateway/checkpoint-mutation-service.js.map +1 -0
  522. package/dist/gateway/checkpoint-service.d.ts +40 -0
  523. package/dist/gateway/checkpoint-service.d.ts.map +1 -0
  524. package/dist/gateway/checkpoint-service.js +149 -0
  525. package/dist/gateway/checkpoint-service.js.map +1 -0
  526. package/dist/gateway/nudge-delivery-service.d.ts +21 -0
  527. package/dist/gateway/nudge-delivery-service.d.ts.map +1 -0
  528. package/dist/gateway/nudge-delivery-service.js +67 -0
  529. package/dist/gateway/nudge-delivery-service.js.map +1 -0
  530. package/dist/ledger/archive.d.ts +48 -0
  531. package/dist/ledger/archive.d.ts.map +1 -0
  532. package/dist/ledger/archive.js +1261 -0
  533. package/dist/ledger/archive.js.map +1 -0
  534. package/dist/ledger/checkpoint-contract.d.ts +144 -0
  535. package/dist/ledger/checkpoint-contract.d.ts.map +1 -0
  536. package/dist/ledger/checkpoint-contract.js +91 -0
  537. package/dist/ledger/checkpoint-contract.js.map +1 -0
  538. package/dist/ledger/checkpoint-eligibility.d.ts +17 -0
  539. package/dist/ledger/checkpoint-eligibility.d.ts.map +1 -0
  540. package/dist/ledger/checkpoint-eligibility.js +19 -0
  541. package/dist/ledger/checkpoint-eligibility.js.map +1 -0
  542. package/dist/ledger/hash.d.ts +22 -0
  543. package/dist/ledger/hash.d.ts.map +1 -0
  544. package/dist/ledger/hash.js +25 -0
  545. package/dist/ledger/hash.js.map +1 -0
  546. package/dist/ledger/maintenance.d.ts +68 -0
  547. package/dist/ledger/maintenance.d.ts.map +1 -0
  548. package/dist/ledger/maintenance.js +767 -0
  549. package/dist/ledger/maintenance.js.map +1 -0
  550. package/dist/ledger/projection.d.ts +38 -0
  551. package/dist/ledger/projection.d.ts.map +1 -0
  552. package/dist/ledger/projection.js +315 -0
  553. package/dist/ledger/projection.js.map +1 -0
  554. package/dist/ledger/promotion.d.ts +19 -0
  555. package/dist/ledger/promotion.d.ts.map +1 -0
  556. package/dist/ledger/promotion.js +310 -0
  557. package/dist/ledger/promotion.js.map +1 -0
  558. package/dist/ledger/query.d.ts +41 -0
  559. package/dist/ledger/query.d.ts.map +1 -0
  560. package/dist/ledger/query.js +321 -0
  561. package/dist/ledger/query.js.map +1 -0
  562. package/dist/ledger/redaction.d.ts +8 -0
  563. package/dist/ledger/redaction.d.ts.map +1 -0
  564. package/dist/ledger/redaction.js +40 -0
  565. package/dist/ledger/redaction.js.map +1 -0
  566. package/dist/ledger/store.d.ts +45 -0
  567. package/dist/ledger/store.d.ts.map +1 -0
  568. package/dist/ledger/store.js +327 -0
  569. package/dist/ledger/store.js.map +1 -0
  570. package/dist/ledger/types.d.ts +115 -0
  571. package/dist/ledger/types.d.ts.map +1 -0
  572. package/dist/ledger/types.js +27 -0
  573. package/dist/ledger/types.js.map +1 -0
  574. package/dist/ledger/validate.d.ts +10 -0
  575. package/dist/ledger/validate.d.ts.map +1 -0
  576. package/dist/ledger/validate.js +178 -0
  577. package/dist/ledger/validate.js.map +1 -0
  578. package/dist/mcp/bounded-stdio-transport.d.ts +26 -0
  579. package/dist/mcp/bounded-stdio-transport.d.ts.map +1 -0
  580. package/dist/mcp/bounded-stdio-transport.js +121 -0
  581. package/dist/mcp/bounded-stdio-transport.js.map +1 -0
  582. package/dist/mcp/request-deadline.d.ts +51 -0
  583. package/dist/mcp/request-deadline.d.ts.map +1 -0
  584. package/dist/mcp/request-deadline.js +155 -0
  585. package/dist/mcp/request-deadline.js.map +1 -0
  586. package/dist/mcp/runtime-owner.d.ts +27 -0
  587. package/dist/mcp/runtime-owner.d.ts.map +1 -0
  588. package/dist/mcp/runtime-owner.js +129 -0
  589. package/dist/mcp/runtime-owner.js.map +1 -0
  590. package/dist/mcp/server.d.ts +24 -0
  591. package/dist/mcp/server.d.ts.map +1 -0
  592. package/dist/mcp/server.js +502 -0
  593. package/dist/mcp/server.js.map +1 -0
  594. package/dist/memory/audit.d.ts +13 -0
  595. package/dist/memory/audit.d.ts.map +1 -0
  596. package/dist/memory/audit.js +15 -0
  597. package/dist/memory/audit.js.map +1 -0
  598. package/dist/memory/checkpoint-contract.d.ts +490 -0
  599. package/dist/memory/checkpoint-contract.d.ts.map +1 -0
  600. package/dist/memory/checkpoint-contract.js +106 -0
  601. package/dist/memory/checkpoint-contract.js.map +1 -0
  602. package/dist/memory/curator-trust.d.ts +15 -0
  603. package/dist/memory/curator-trust.d.ts.map +1 -0
  604. package/dist/memory/curator-trust.js +58 -0
  605. package/dist/memory/curator-trust.js.map +1 -0
  606. package/dist/memory/curator.d.ts +115 -0
  607. package/dist/memory/curator.d.ts.map +1 -0
  608. package/dist/memory/curator.js +706 -0
  609. package/dist/memory/curator.js.map +1 -0
  610. package/dist/memory/entries.d.ts +75 -0
  611. package/dist/memory/entries.d.ts.map +1 -0
  612. package/dist/memory/entries.js +355 -0
  613. package/dist/memory/entries.js.map +1 -0
  614. package/dist/memory/federated-retrieval.d.ts +79 -0
  615. package/dist/memory/federated-retrieval.d.ts.map +1 -0
  616. package/dist/memory/federated-retrieval.js +515 -0
  617. package/dist/memory/federated-retrieval.js.map +1 -0
  618. package/dist/memory/hybrid-retrieval.d.ts +33 -0
  619. package/dist/memory/hybrid-retrieval.d.ts.map +1 -0
  620. package/dist/memory/hybrid-retrieval.js +398 -0
  621. package/dist/memory/hybrid-retrieval.js.map +1 -0
  622. package/dist/memory/lifecycle.d.ts +29 -0
  623. package/dist/memory/lifecycle.d.ts.map +1 -0
  624. package/dist/memory/lifecycle.js +65 -0
  625. package/dist/memory/lifecycle.js.map +1 -0
  626. package/dist/memory/portability.d.ts +10 -0
  627. package/dist/memory/portability.d.ts.map +1 -0
  628. package/dist/memory/portability.js +44 -0
  629. package/dist/memory/portability.js.map +1 -0
  630. package/dist/memory/rebuild-search.d.ts +24 -0
  631. package/dist/memory/rebuild-search.d.ts.map +1 -0
  632. package/dist/memory/rebuild-search.js +167 -0
  633. package/dist/memory/rebuild-search.js.map +1 -0
  634. package/dist/memory/retrieval-query.d.ts +16 -0
  635. package/dist/memory/retrieval-query.d.ts.map +1 -0
  636. package/dist/memory/retrieval-query.js +161 -0
  637. package/dist/memory/retrieval-query.js.map +1 -0
  638. package/dist/memory/retrieval.d.ts +56 -0
  639. package/dist/memory/retrieval.d.ts.map +1 -0
  640. package/dist/memory/retrieval.js +101 -0
  641. package/dist/memory/retrieval.js.map +1 -0
  642. package/dist/memory/revisions.d.ts +123 -0
  643. package/dist/memory/revisions.d.ts.map +1 -0
  644. package/dist/memory/revisions.js +759 -0
  645. package/dist/memory/revisions.js.map +1 -0
  646. package/dist/memory/scoped-memory.d.ts +76 -0
  647. package/dist/memory/scoped-memory.d.ts.map +1 -0
  648. package/dist/memory/scoped-memory.js +539 -0
  649. package/dist/memory/scoped-memory.js.map +1 -0
  650. package/dist/memory/secrets.d.ts +8 -0
  651. package/dist/memory/secrets.d.ts.map +1 -0
  652. package/dist/memory/secrets.js +54 -0
  653. package/dist/memory/secrets.js.map +1 -0
  654. package/dist/memory/structured-memory.d.ts +60 -0
  655. package/dist/memory/structured-memory.d.ts.map +1 -0
  656. package/dist/memory/structured-memory.js +341 -0
  657. package/dist/memory/structured-memory.js.map +1 -0
  658. package/dist/memory/workspaces.d.ts +26 -0
  659. package/dist/memory/workspaces.d.ts.map +1 -0
  660. package/dist/memory/workspaces.js +159 -0
  661. package/dist/memory/workspaces.js.map +1 -0
  662. package/dist/model-tools/contracts.d.ts +1297 -0
  663. package/dist/model-tools/contracts.d.ts.map +1 -0
  664. package/dist/model-tools/contracts.js +104 -0
  665. package/dist/model-tools/contracts.js.map +1 -0
  666. package/dist/model-tools/registry.d.ts +8 -0
  667. package/dist/model-tools/registry.d.ts.map +1 -0
  668. package/dist/model-tools/registry.js +59 -0
  669. package/dist/model-tools/registry.js.map +1 -0
  670. package/dist/package-version.d.ts +2 -0
  671. package/dist/package-version.d.ts.map +1 -0
  672. package/dist/package-version.js +7 -0
  673. package/dist/package-version.js.map +1 -0
  674. package/dist/repository/binding.d.ts +32 -0
  675. package/dist/repository/binding.d.ts.map +1 -0
  676. package/dist/repository/binding.js +208 -0
  677. package/dist/repository/binding.js.map +1 -0
  678. package/dist/repository/cwd-schema.d.ts +4 -0
  679. package/dist/repository/cwd-schema.d.ts.map +1 -0
  680. package/dist/repository/cwd-schema.js +8 -0
  681. package/dist/repository/cwd-schema.js.map +1 -0
  682. package/dist/repository/detect-root.d.ts +13 -0
  683. package/dist/repository/detect-root.d.ts.map +1 -0
  684. package/dist/repository/detect-root.js +77 -0
  685. package/dist/repository/detect-root.js.map +1 -0
  686. package/dist/repository/framework-version.d.ts +8 -0
  687. package/dist/repository/framework-version.d.ts.map +1 -0
  688. package/dist/repository/framework-version.js +29 -0
  689. package/dist/repository/framework-version.js.map +1 -0
  690. package/dist/repository/git-origin.d.ts +2 -0
  691. package/dist/repository/git-origin.d.ts.map +1 -0
  692. package/dist/repository/git-origin.js +15 -0
  693. package/dist/repository/git-origin.js.map +1 -0
  694. package/dist/repository/gitignore.d.ts +8 -0
  695. package/dist/repository/gitignore.d.ts.map +1 -0
  696. package/dist/repository/gitignore.js +21 -0
  697. package/dist/repository/gitignore.js.map +1 -0
  698. package/dist/repository/identity-value.d.ts +4 -0
  699. package/dist/repository/identity-value.d.ts.map +1 -0
  700. package/dist/repository/identity-value.js +24 -0
  701. package/dist/repository/identity-value.js.map +1 -0
  702. package/dist/repository/identity.d.ts +19 -0
  703. package/dist/repository/identity.d.ts.map +1 -0
  704. package/dist/repository/identity.js +25 -0
  705. package/dist/repository/identity.js.map +1 -0
  706. package/dist/repository/project-fingerprint.d.ts +33 -0
  707. package/dist/repository/project-fingerprint.d.ts.map +1 -0
  708. package/dist/repository/project-fingerprint.js +429 -0
  709. package/dist/repository/project-fingerprint.js.map +1 -0
  710. package/dist/repository/remote-url.d.ts +3 -0
  711. package/dist/repository/remote-url.d.ts.map +1 -0
  712. package/dist/repository/remote-url.js +35 -0
  713. package/dist/repository/remote-url.js.map +1 -0
  714. package/dist/runtime-version.d.ts +6 -0
  715. package/dist/runtime-version.d.ts.map +1 -0
  716. package/dist/runtime-version.js +33 -0
  717. package/dist/runtime-version.js.map +1 -0
  718. package/dist/security/sanitize.d.ts +4 -0
  719. package/dist/security/sanitize.d.ts.map +1 -0
  720. package/dist/security/sanitize.js +174 -0
  721. package/dist/security/sanitize.js.map +1 -0
  722. package/dist/serialization/boundary-json.d.ts +20 -0
  723. package/dist/serialization/boundary-json.d.ts.map +1 -0
  724. package/dist/serialization/boundary-json.js +129 -0
  725. package/dist/serialization/boundary-json.js.map +1 -0
  726. package/dist/serialization/envelope.d.ts +20 -0
  727. package/dist/serialization/envelope.d.ts.map +1 -0
  728. package/dist/serialization/envelope.js +11 -0
  729. package/dist/serialization/envelope.js.map +1 -0
  730. package/dist/serialization/validate.d.ts +38 -0
  731. package/dist/serialization/validate.d.ts.map +1 -0
  732. package/dist/serialization/validate.js +233 -0
  733. package/dist/serialization/validate.js.map +1 -0
  734. package/dist/server/agent-application.d.ts +6 -0
  735. package/dist/server/agent-application.d.ts.map +1 -0
  736. package/dist/server/agent-application.js +74 -0
  737. package/dist/server/agent-application.js.map +1 -0
  738. package/dist/server/agent-checkpoint-use-case.d.ts +41 -0
  739. package/dist/server/agent-checkpoint-use-case.d.ts.map +1 -0
  740. package/dist/server/agent-checkpoint-use-case.js +159 -0
  741. package/dist/server/agent-checkpoint-use-case.js.map +1 -0
  742. package/dist/server/app.d.ts +5 -0
  743. package/dist/server/app.d.ts.map +1 -0
  744. package/dist/server/app.js +87 -0
  745. package/dist/server/app.js.map +1 -0
  746. package/dist/server/auth.d.ts +2 -0
  747. package/dist/server/auth.d.ts.map +1 -0
  748. package/dist/server/auth.js +22 -0
  749. package/dist/server/auth.js.map +1 -0
  750. package/dist/server/http.d.ts +86 -0
  751. package/dist/server/http.d.ts.map +1 -0
  752. package/dist/server/http.js +455 -0
  753. package/dist/server/http.js.map +1 -0
  754. package/dist/server/idempotency.d.ts +6 -0
  755. package/dist/server/idempotency.d.ts.map +1 -0
  756. package/dist/server/idempotency.js +210 -0
  757. package/dist/server/idempotency.js.map +1 -0
  758. package/dist/server/instance-lock.d.ts +17 -0
  759. package/dist/server/instance-lock.d.ts.map +1 -0
  760. package/dist/server/instance-lock.js +118 -0
  761. package/dist/server/instance-lock.js.map +1 -0
  762. package/dist/server/router.d.ts +29 -0
  763. package/dist/server/router.d.ts.map +1 -0
  764. package/dist/server/router.js +129 -0
  765. package/dist/server/router.js.map +1 -0
  766. package/dist/server/routes/agent-capability-gate.d.ts +43 -0
  767. package/dist/server/routes/agent-capability-gate.d.ts.map +1 -0
  768. package/dist/server/routes/agent-capability-gate.js +202 -0
  769. package/dist/server/routes/agent-capability-gate.js.map +1 -0
  770. package/dist/server/routes/agent-events.d.ts +5 -0
  771. package/dist/server/routes/agent-events.d.ts.map +1 -0
  772. package/dist/server/routes/agent-events.js +53 -0
  773. package/dist/server/routes/agent-events.js.map +1 -0
  774. package/dist/server/routes/agent-intake.d.ts +5 -0
  775. package/dist/server/routes/agent-intake.d.ts.map +1 -0
  776. package/dist/server/routes/agent-intake.js +50 -0
  777. package/dist/server/routes/agent-intake.js.map +1 -0
  778. package/dist/server/routes/agent-promotions.d.ts +5 -0
  779. package/dist/server/routes/agent-promotions.d.ts.map +1 -0
  780. package/dist/server/routes/agent-promotions.js +55 -0
  781. package/dist/server/routes/agent-promotions.js.map +1 -0
  782. package/dist/server/routes/agent-runs.d.ts +32 -0
  783. package/dist/server/routes/agent-runs.d.ts.map +1 -0
  784. package/dist/server/routes/agent-runs.js +165 -0
  785. package/dist/server/routes/agent-runs.js.map +1 -0
  786. package/dist/server/routes/request-binding.d.ts +5 -0
  787. package/dist/server/routes/request-binding.d.ts.map +1 -0
  788. package/dist/server/routes/request-binding.js +49 -0
  789. package/dist/server/routes/request-binding.js.map +1 -0
  790. package/dist/server/routes/task5-support.d.ts +4 -0
  791. package/dist/server/routes/task5-support.d.ts.map +1 -0
  792. package/dist/server/routes/task5-support.js +6 -0
  793. package/dist/server/routes/task5-support.js.map +1 -0
  794. package/dist/server/routes/task5.d.ts +5 -0
  795. package/dist/server/routes/task5.d.ts.map +1 -0
  796. package/dist/server/routes/task5.js +85 -0
  797. package/dist/server/routes/task5.js.map +1 -0
  798. package/dist/server/runtime-descriptor.d.ts +24 -0
  799. package/dist/server/runtime-descriptor.d.ts.map +1 -0
  800. package/dist/server/runtime-descriptor.js +156 -0
  801. package/dist/server/runtime-descriptor.js.map +1 -0
  802. package/dist/server/write-queue.d.ts +20 -0
  803. package/dist/server/write-queue.d.ts.map +1 -0
  804. package/dist/server/write-queue.js +83 -0
  805. package/dist/server/write-queue.js.map +1 -0
  806. package/dist/setup/claude-config.d.ts +8 -0
  807. package/dist/setup/claude-config.d.ts.map +1 -0
  808. package/dist/setup/claude-config.js +95 -0
  809. package/dist/setup/claude-config.js.map +1 -0
  810. package/dist/setup/client-detection.d.ts +13 -0
  811. package/dist/setup/client-detection.d.ts.map +1 -0
  812. package/dist/setup/client-detection.js +64 -0
  813. package/dist/setup/client-detection.js.map +1 -0
  814. package/dist/setup/enno-client-config.d.ts +9 -0
  815. package/dist/setup/enno-client-config.d.ts.map +1 -0
  816. package/dist/setup/enno-client-config.js +172 -0
  817. package/dist/setup/enno-client-config.js.map +1 -0
  818. package/dist/setup/hermes-config.d.ts +7 -0
  819. package/dist/setup/hermes-config.d.ts.map +1 -0
  820. package/dist/setup/hermes-config.js +145 -0
  821. package/dist/setup/hermes-config.js.map +1 -0
  822. package/dist/setup/legacy-client-cleanup.d.ts +6 -0
  823. package/dist/setup/legacy-client-cleanup.d.ts.map +1 -0
  824. package/dist/setup/legacy-client-cleanup.js +152 -0
  825. package/dist/setup/legacy-client-cleanup.js.map +1 -0
  826. package/dist/setup/managed-text.d.ts +6 -0
  827. package/dist/setup/managed-text.d.ts.map +1 -0
  828. package/dist/setup/managed-text.js +52 -0
  829. package/dist/setup/managed-text.js.map +1 -0
  830. package/dist/setup/mcp-conflict.d.ts +4 -0
  831. package/dist/setup/mcp-conflict.d.ts.map +1 -0
  832. package/dist/setup/mcp-conflict.js +15 -0
  833. package/dist/setup/mcp-conflict.js.map +1 -0
  834. package/dist/setup/opencode-config.d.ts +8 -0
  835. package/dist/setup/opencode-config.d.ts.map +1 -0
  836. package/dist/setup/opencode-config.js +98 -0
  837. package/dist/setup/opencode-config.js.map +1 -0
  838. package/dist/setup/project-agent-refresh.d.ts +41 -0
  839. package/dist/setup/project-agent-refresh.d.ts.map +1 -0
  840. package/dist/setup/project-agent-refresh.js +158 -0
  841. package/dist/setup/project-agent-refresh.js.map +1 -0
  842. package/dist/setup/render.d.ts +13 -0
  843. package/dist/setup/render.d.ts.map +1 -0
  844. package/dist/setup/render.js +334 -0
  845. package/dist/setup/render.js.map +1 -0
  846. package/dist/setup/standard-skills.d.ts +60 -0
  847. package/dist/setup/standard-skills.d.ts.map +1 -0
  848. package/dist/setup/standard-skills.js +133 -0
  849. package/dist/setup/standard-skills.js.map +1 -0
  850. package/dist/setup/strict-json.d.ts +7 -0
  851. package/dist/setup/strict-json.d.ts.map +1 -0
  852. package/dist/setup/strict-json.js +98 -0
  853. package/dist/setup/strict-json.js.map +1 -0
  854. package/dist/setup/strict-toml.d.ts +18 -0
  855. package/dist/setup/strict-toml.d.ts.map +1 -0
  856. package/dist/setup/strict-toml.js +491 -0
  857. package/dist/setup/strict-toml.js.map +1 -0
  858. package/dist/skills/cache.d.ts +15 -0
  859. package/dist/skills/cache.d.ts.map +1 -0
  860. package/dist/skills/cache.js +19 -0
  861. package/dist/skills/cache.js.map +1 -0
  862. package/dist/skills/candidate-ranking.d.ts +15 -0
  863. package/dist/skills/candidate-ranking.d.ts.map +1 -0
  864. package/dist/skills/candidate-ranking.js +52 -0
  865. package/dist/skills/candidate-ranking.js.map +1 -0
  866. package/dist/skills/chunking.d.ts +11 -0
  867. package/dist/skills/chunking.d.ts.map +1 -0
  868. package/dist/skills/chunking.js +291 -0
  869. package/dist/skills/chunking.js.map +1 -0
  870. package/dist/skills/config.d.ts +19 -0
  871. package/dist/skills/config.d.ts.map +1 -0
  872. package/dist/skills/config.js +103 -0
  873. package/dist/skills/config.js.map +1 -0
  874. package/dist/skills/discovery-service.d.ts +26 -0
  875. package/dist/skills/discovery-service.d.ts.map +1 -0
  876. package/dist/skills/discovery-service.js +929 -0
  877. package/dist/skills/discovery-service.js.map +1 -0
  878. package/dist/skills/external-transport.d.ts +2 -0
  879. package/dist/skills/external-transport.d.ts.map +1 -0
  880. package/dist/skills/external-transport.js +30 -0
  881. package/dist/skills/external-transport.js.map +1 -0
  882. package/dist/skills/find.d.ts +17 -0
  883. package/dist/skills/find.d.ts.map +1 -0
  884. package/dist/skills/find.js +59 -0
  885. package/dist/skills/find.js.map +1 -0
  886. package/dist/skills/gap-detection.d.ts +23 -0
  887. package/dist/skills/gap-detection.d.ts.map +1 -0
  888. package/dist/skills/gap-detection.js +62 -0
  889. package/dist/skills/gap-detection.js.map +1 -0
  890. package/dist/skills/import-preparation.d.ts +4 -0
  891. package/dist/skills/import-preparation.d.ts.map +1 -0
  892. package/dist/skills/import-preparation.js +20 -0
  893. package/dist/skills/import-preparation.js.map +1 -0
  894. package/dist/skills/materialization-authority.d.ts +11 -0
  895. package/dist/skills/materialization-authority.d.ts.map +1 -0
  896. package/dist/skills/materialization-authority.js +92 -0
  897. package/dist/skills/materialization-authority.js.map +1 -0
  898. package/dist/skills/materialization-service.d.ts +22 -0
  899. package/dist/skills/materialization-service.d.ts.map +1 -0
  900. package/dist/skills/materialization-service.js +101 -0
  901. package/dist/skills/materialization-service.js.map +1 -0
  902. package/dist/skills/official-catalog.d.ts +31 -0
  903. package/dist/skills/official-catalog.d.ts.map +1 -0
  904. package/dist/skills/official-catalog.js +110 -0
  905. package/dist/skills/official-catalog.js.map +1 -0
  906. package/dist/skills/providers/schema.d.ts +30 -0
  907. package/dist/skills/providers/schema.d.ts.map +1 -0
  908. package/dist/skills/providers/schema.js +354 -0
  909. package/dist/skills/providers/schema.js.map +1 -0
  910. package/dist/skills/providers/skills-sh-compat.d.ts +17 -0
  911. package/dist/skills/providers/skills-sh-compat.d.ts.map +1 -0
  912. package/dist/skills/providers/skills-sh-compat.js +73 -0
  913. package/dist/skills/providers/skills-sh-compat.js.map +1 -0
  914. package/dist/skills/providers/skills-sh-v1.d.ts +23 -0
  915. package/dist/skills/providers/skills-sh-v1.d.ts.map +1 -0
  916. package/dist/skills/providers/skills-sh-v1.js +152 -0
  917. package/dist/skills/providers/skills-sh-v1.js.map +1 -0
  918. package/dist/skills/query-builder.d.ts +18 -0
  919. package/dist/skills/query-builder.d.ts.map +1 -0
  920. package/dist/skills/query-builder.js +93 -0
  921. package/dist/skills/query-builder.js.map +1 -0
  922. package/dist/skills/source/errors.d.ts +9 -0
  923. package/dist/skills/source/errors.d.ts.map +1 -0
  924. package/dist/skills/source/errors.js +15 -0
  925. package/dist/skills/source/errors.js.map +1 -0
  926. package/dist/skills/source/frontmatter.d.ts +9 -0
  927. package/dist/skills/source/frontmatter.d.ts.map +1 -0
  928. package/dist/skills/source/frontmatter.js +77 -0
  929. package/dist/skills/source/frontmatter.js.map +1 -0
  930. package/dist/skills/source/github-fetcher.d.ts +20 -0
  931. package/dist/skills/source/github-fetcher.d.ts.map +1 -0
  932. package/dist/skills/source/github-fetcher.js +296 -0
  933. package/dist/skills/source/github-fetcher.js.map +1 -0
  934. package/dist/skills/source/snapshot-validator.d.ts +28 -0
  935. package/dist/skills/source/snapshot-validator.d.ts.map +1 -0
  936. package/dist/skills/source/snapshot-validator.js +186 -0
  937. package/dist/skills/source/snapshot-validator.js.map +1 -0
  938. package/dist/skills/store.d.ts +180 -0
  939. package/dist/skills/store.d.ts.map +1 -0
  940. package/dist/skills/store.js +1712 -0
  941. package/dist/skills/store.js.map +1 -0
  942. package/dist/skills/types.d.ts +171 -0
  943. package/dist/skills/types.d.ts.map +1 -0
  944. package/dist/skills/types.js +2 -0
  945. package/dist/skills/types.js.map +1 -0
  946. package/dist/web/i18n.d.ts +184 -0
  947. package/dist/web/i18n.d.ts.map +1 -0
  948. package/dist/web/i18n.js +733 -0
  949. package/dist/web/i18n.js.map +1 -0
  950. package/dist/web/server.d.ts +16 -0
  951. package/dist/web/server.d.ts.map +1 -0
  952. package/dist/web/server.js +862 -0
  953. package/dist/web/server.js.map +1 -0
  954. package/dist/web/ui.d.ts +6 -0
  955. package/dist/web/ui.d.ts.map +1 -0
  956. package/dist/web/ui.js +1328 -0
  957. package/dist/web/ui.js.map +1 -0
  958. package/docs/README.ja.md +14 -0
  959. package/docs/README.md +16 -0
  960. package/docs/agent-file.md +72 -0
  961. package/docs/agent-gateway.md +104 -0
  962. package/docs/architecture.md +12 -0
  963. package/docs/cli-contract.md +39 -0
  964. package/docs/client-compatibility.md +299 -0
  965. package/docs/concepts.ja.md +25 -0
  966. package/docs/concepts.md +33 -0
  967. package/docs/database.md +11 -0
  968. package/docs/dsh-plugin.md +108 -0
  969. package/docs/enno-oduno.ja.md +22 -0
  970. package/docs/enno-oduno.md +35 -0
  971. package/docs/execution-ledger.md +89 -0
  972. package/docs/getting-started.ja.md +88 -0
  973. package/docs/getting-started.md +99 -0
  974. package/docs/release-notes-0.1.18.md +103 -0
  975. package/docs/retrieval-evaluation.md +10 -0
  976. package/docs/security-and-trust.ja.md +29 -0
  977. package/docs/security-and-trust.md +39 -0
  978. package/docs/security.md +11 -0
  979. package/docs/semantic-retrieval.ja.md +18 -0
  980. package/docs/semantic-retrieval.md +26 -0
  981. package/docs/sqlite-driver-adr.md +8 -0
  982. package/dsh/cordis.patch.yml +7 -0
  983. package/migrations/001_initial.sql +123 -0
  984. package/migrations/002_fts.sql +22 -0
  985. package/migrations/003_akinator.sql +30 -0
  986. package/migrations/004_agent_gateway.sql +261 -0
  987. package/migrations/005_hybrid_search.sql +40 -0
  988. package/migrations/006_context_v2.sql +4 -0
  989. package/migrations/007_akinator_reasoning.sql +59 -0
  990. package/migrations/008_federated_memory.sql +46 -0
  991. package/migrations/009_external_skill_discovery.sql +126 -0
  992. package/migrations/010_nudge_deliveries.sql +50 -0
  993. package/migrations/011_nudge_integrity.sql +52 -0
  994. package/migrations/012_context_delivery_v4.sql +3 -0
  995. package/migrations/013_enno_oduno.sql +176 -0
  996. package/migrations/014_oduno_reflection_phases.sql +40 -0
  997. package/migrations/015_skill_discovery_attempt_digests.sql +90 -0
  998. package/migrations/016_enno_advisory_rounds.sql +67 -0
  999. package/migrations/017_enno_advisory_protocol_v2.sql +101 -0
  1000. package/migrations/018_enno_repository_routing.sql +5 -0
  1001. package/migrations/019_enno_execution_integrity.sql +149 -0
  1002. package/migrations/020_cjk_fts.sql +80 -0
  1003. package/migrations/021_semantic_embeddings.sql +122 -0
  1004. package/migrations/022_embedding_setup_v2.sql +236 -0
  1005. package/migrations/023_enno_dsh_client.sql +291 -0
  1006. package/migrations/down/020_cjk_fts.sql +38 -0
  1007. package/migrations/down/021_semantic_embeddings.sql +17 -0
  1008. package/migrations/down/022_embedding_setup_v2.sql +133 -0
  1009. package/package.json +101 -0
  1010. package/skills/kiokuko-enno-oduno/SKILL.md +209 -0
  1011. package/skills/kiokuko-enno-oduno/enno-oduno.png +0 -0
  1012. package/skills/kiokuko-simple-work/SKILL.md +112 -0
  1013. package/skills/kiokuko-single-purpose-functions/SKILL.md +82 -0
  1014. package/skills/kiokuko-single-purpose-functions/references/boundaries-and-ownership.md +50 -0
  1015. package/skills/kiokuko-single-purpose-functions/references/domain-and-types.md +48 -0
  1016. package/skills/kiokuko-single-purpose-functions/references/effects-and-data.md +43 -0
  1017. package/skills/kiokuko-single-purpose-functions/references/kiokuko-patterns.md +344 -0
  1018. package/skills/kiokuko-single-purpose-functions/references/problem-shaping-and-language.md +84 -0
  1019. package/skills/kiokuko-single-purpose-functions/references/protocols-and-idempotency.md +42 -0
  1020. package/skills/kiokuko-single-purpose-functions/references/review-checklist.md +97 -0
  1021. package/skills/kiokuko-single-purpose-functions/references/verification.md +41 -0
  1022. package/skills/kiokuko-soul/SKILL.md +104 -0
  1023. package/skills/kiokuko-ui-design-soul/SKILL.md +73 -0
  1024. package/skills/kiokuko-ui-design-soul/references/accessibility-and-navigation.md +31 -0
  1025. package/skills/kiokuko-ui-design-soul/references/async-recovery.md +49 -0
  1026. package/skills/kiokuko-ui-design-soul/references/forms-and-controls.md +35 -0
  1027. package/skills/kiokuko-ui-design-soul/references/interaction-feedback.md +34 -0
  1028. package/skills/kiokuko-ui-design-soul/references/responsive-and-platform.md +38 -0
  1029. package/skills/kiokuko-ui-design-soul/references/safety-and-review.md +39 -0
  1030. package/skills/kiokuko-ui-design-soul/references/ui-checklist.md +71 -0
  1031. package/skills/memory-reasoning/SKILL.md +52 -0
  1032. package/templates/AGENTS.md +46 -0
@@ -0,0 +1,1138 @@
1
+ import { createHash, randomUUID } from 'node:crypto';
2
+ import { constants as fsConstants } from 'node:fs';
3
+ import { open } from 'node:fs/promises';
4
+ import { TextDecoder } from 'node:util';
5
+ import { isProxy } from 'node:util/types';
6
+ import { KiokukoError } from '../errors.js';
7
+ import { CAPABILITY_KINDS, MAX_CAPABILITY_NAME_CHARS, MEMORY_REASONING_SKILL_NAME, } from '../akinator/capabilities.js';
8
+ import { TASK_TYPES } from '../akinator/types.js';
9
+ import { CONTEXT_RANKING_COMPONENTS, CONTEXT_SELECTION_REASON_ORDER, } from '../context/ranking.js';
10
+ import { RECOMMENDATION_CODES } from '../context/recommendations.js';
11
+ import { NUDGE_CODES, NUDGE_MESSAGES, NUDGE_POLICY_VERSION, NUDGE_PRIORITY } from '../context/nudges.js';
12
+ import { findSecret } from '../memory/secrets.js';
13
+ import { successEnvelope } from '../serialization/envelope.js';
14
+ import { cloneBoundaryJson as cloneStrictBoundaryJson, stringifyBoundaryJson, } from '../serialization/boundary-json.js';
15
+ import { AGENT_MUTATION_OPERATIONS, agentRequestBindingHash, } from '../server/routes/request-binding.js';
16
+ import { MAX_STRICT_JSON_DEPTH, parseStrictJson } from '../setup/strict-json.js';
17
+ import { createServerClient, } from '../client/server-client.js';
18
+ const MAX_INPUT_BYTES = 2 * 1024 * 1024;
19
+ const MAX_ID_BYTES = 256;
20
+ const MAX_TEXT_BYTES = 16 * 1024;
21
+ const MAX_INPUT_PATH_BYTES = 4 * 1024;
22
+ const MAX_JSON_NODES = 262_144;
23
+ const CONTROL_CHARACTERS = /\p{Cc}/u;
24
+ const UNSAFE_CAPABILITY_LABEL_CHARACTERS = /[\p{Cc}\p{Cf}]/u;
25
+ const CAPTURE_PROFILES = new Set(['minimal', 'standard', 'full']);
26
+ function validationError() {
27
+ return new KiokukoError('VALIDATION_ERROR', 'Agent input is invalid');
28
+ }
29
+ function boundedString(value, maximumBytes) {
30
+ if (typeof value !== 'string' || value.length === 0 || value.trim().length === 0
31
+ || Buffer.byteLength(value, 'utf8') > maximumBytes || CONTROL_CHARACTERS.test(value)) {
32
+ throw validationError();
33
+ }
34
+ return value;
35
+ }
36
+ function boundedId(value) {
37
+ return boundedString(value, MAX_ID_BYTES);
38
+ }
39
+ function boundedIdempotencyKey(value) {
40
+ const key = boundedString(value, MAX_ID_BYTES);
41
+ if (key.trim() !== key)
42
+ throw validationError();
43
+ return key;
44
+ }
45
+ function cloneBoundaryJson(value, failure) {
46
+ return cloneStrictBoundaryJson(value, {
47
+ failure,
48
+ maximumDepth: MAX_STRICT_JSON_DEPTH,
49
+ maximumNodes: MAX_JSON_NODES,
50
+ maximumStringBytes: MAX_INPUT_BYTES,
51
+ });
52
+ }
53
+ function inputJson(value) {
54
+ return cloneBoundaryJson(value, validationError);
55
+ }
56
+ function inputObject(value) {
57
+ const cloned = inputJson(value);
58
+ if (typeof cloned !== 'object' || cloned === null || Array.isArray(cloned))
59
+ throw validationError();
60
+ return cloned;
61
+ }
62
+ function validateInputPath(value) {
63
+ if (value === '-')
64
+ return value;
65
+ return boundedString(value, MAX_INPUT_PATH_BYTES);
66
+ }
67
+ async function readStdinBytes() {
68
+ const chunks = [];
69
+ let size = 0;
70
+ for await (const chunk of process.stdin) {
71
+ const bytes = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk, 'utf8');
72
+ size += bytes.byteLength;
73
+ if (size > MAX_INPUT_BYTES)
74
+ throw validationError();
75
+ chunks.push(bytes);
76
+ }
77
+ return Buffer.concat(chunks);
78
+ }
79
+ const INPUT_FILESYSTEM_ERROR_CODES = new Set([
80
+ 'EACCES', 'EIO', 'EISDIR', 'EMFILE', 'ENFILE', 'ENOENT', 'ENOTDIR', 'EPERM',
81
+ ]);
82
+ function isInputFilesystemError(error) {
83
+ if ((typeof error !== 'object' && typeof error !== 'function') || error === null || isProxy(error))
84
+ return false;
85
+ const descriptor = Object.getOwnPropertyDescriptor(error, 'code');
86
+ return descriptor !== undefined && 'value' in descriptor
87
+ && typeof descriptor.value === 'string'
88
+ && INPUT_FILESYSTEM_ERROR_CODES.has(descriptor.value);
89
+ }
90
+ function isExactAgentKiokukoError(error) {
91
+ return typeof error === 'object' && error !== null && !isProxy(error)
92
+ && Object.getPrototypeOf(error) === KiokukoError.prototype;
93
+ }
94
+ async function readBoundedRegularFile(filePath, closeHandle) {
95
+ let handle;
96
+ try {
97
+ handle = await open(filePath, fsConstants.O_RDONLY | fsConstants.O_NONBLOCK);
98
+ }
99
+ catch (error) {
100
+ if (isInputFilesystemError(error))
101
+ throw validationError();
102
+ throw error;
103
+ }
104
+ let operationResult;
105
+ let operationFailed = false;
106
+ let operationError;
107
+ try {
108
+ const metadata = await handle.stat();
109
+ if (!metadata.isFile() || !Number.isSafeInteger(metadata.size) || metadata.size < 0
110
+ || metadata.size > MAX_INPUT_BYTES)
111
+ throw validationError();
112
+ const bytes = Buffer.allocUnsafe(MAX_INPUT_BYTES + 1);
113
+ let offset = 0;
114
+ while (offset <= MAX_INPUT_BYTES) {
115
+ const result = await handle.read(bytes, offset, bytes.byteLength - offset, null);
116
+ if (result.bytesRead === 0) {
117
+ operationResult = bytes.subarray(0, offset);
118
+ break;
119
+ }
120
+ offset += result.bytesRead;
121
+ if (offset > MAX_INPUT_BYTES)
122
+ throw validationError();
123
+ }
124
+ }
125
+ catch (error) {
126
+ operationFailed = true;
127
+ operationError = isExactAgentKiokukoError(error) && error.code === 'VALIDATION_ERROR'
128
+ ? error
129
+ : isInputFilesystemError(error)
130
+ ? validationError()
131
+ : error;
132
+ }
133
+ try {
134
+ await closeHandle(handle);
135
+ }
136
+ catch (closeError) {
137
+ if (operationFailed) {
138
+ throw new AggregateError([operationError, closeError], 'Agent input read failed and its file descriptor could not be closed');
139
+ }
140
+ throw closeError;
141
+ }
142
+ if (operationFailed)
143
+ throw operationError;
144
+ if (operationResult === undefined) {
145
+ throw new KiokukoError('INTEGRITY_ERROR', 'Agent input read produced no result');
146
+ }
147
+ return operationResult;
148
+ }
149
+ async function readStrictJsonInput(filePath, closeHandle) {
150
+ const safePath = validateInputPath(filePath);
151
+ let bytes;
152
+ if (safePath === '-') {
153
+ bytes = await readStdinBytes();
154
+ }
155
+ else {
156
+ bytes = await readBoundedRegularFile(safePath, closeHandle);
157
+ }
158
+ if (bytes.byteLength > MAX_INPUT_BYTES)
159
+ throw validationError();
160
+ let text;
161
+ try {
162
+ text = new TextDecoder('utf-8', { fatal: true, ignoreBOM: true }).decode(bytes);
163
+ }
164
+ catch {
165
+ throw validationError();
166
+ }
167
+ try {
168
+ return parseStrictJson(text, { allowTrailingComma: false, disallowComments: true, allowEmptyContent: false }, 'Agent input is not valid JSON with unique keys');
169
+ }
170
+ catch (error) {
171
+ if (isExactAgentKiokukoError(error) && error.code === 'VALIDATION_ERROR')
172
+ throw validationError();
173
+ throw error;
174
+ }
175
+ }
176
+ function captureProfile(value) {
177
+ if (typeof value !== 'string' || !CAPTURE_PROFILES.has(value))
178
+ throw validationError();
179
+ return value;
180
+ }
181
+ function transportCaptureProfile(value) {
182
+ return value === 'full' ? 'diagnostic' : value;
183
+ }
184
+ function runPath(runId, suffix) {
185
+ const id = boundedId(runId);
186
+ if (id === '.' || id === '..' || id.includes('/') || id.includes('\\'))
187
+ throw validationError();
188
+ const encoded = encodeURIComponent(id);
189
+ const path = `/api/v1/agent/runs/${encoded}/${suffix}`;
190
+ if (Buffer.byteLength(path, 'utf8') > MAX_INPUT_PATH_BYTES)
191
+ throw validationError();
192
+ return path;
193
+ }
194
+ function keyFromFactory(dependencies) {
195
+ const factory = dependencies.idempotencyKeyFactory ?? randomUUID;
196
+ return boundedIdempotencyKey(factory());
197
+ }
198
+ function requestIdempotencyKey(value, dependencies) {
199
+ return value === undefined ? keyFromFactory(dependencies) : boundedIdempotencyKey(value);
200
+ }
201
+ function bodyAndKey(value, dependencies) {
202
+ if (Object.prototype.hasOwnProperty.call(value, 'idempotencyKey')) {
203
+ const idempotencyKey = boundedIdempotencyKey(value.idempotencyKey);
204
+ const { idempotencyKey: _removed, ...body } = value;
205
+ return { body, idempotencyKey };
206
+ }
207
+ return { body: value, idempotencyKey: keyFromFactory(dependencies) };
208
+ }
209
+ async function readInput(dependencies, filePath) {
210
+ return inputObject(await readUnknownInput(dependencies, filePath));
211
+ }
212
+ async function readUnknownInput(dependencies, filePath) {
213
+ return dependencies.readJsonInput === undefined
214
+ ? readStrictJsonInput(filePath, dependencies.closeInputFile ?? ((handle) => handle.close()))
215
+ : dependencies.readJsonInput(validateInputPath(filePath));
216
+ }
217
+ async function readCapabilityCatalog(dependencies, filePath) {
218
+ const value = inputJson(await readUnknownInput(dependencies, filePath));
219
+ if (!Array.isArray(value))
220
+ throw validationError();
221
+ return value;
222
+ }
223
+ async function getClient(dependencies) {
224
+ const factory = dependencies.createClient ?? createServerClient;
225
+ const options = dependencies.fetchImplementation === undefined
226
+ ? {}
227
+ : { fetchImplementation: dependencies.fetchImplementation };
228
+ return factory(options);
229
+ }
230
+ function runIdFromRequestPath(path) {
231
+ const match = /^\/api\/v1\/agent\/runs\/([^/]+)\/(?:intake\/answers|events|checkpoints|close|feedback)$/u.exec(path);
232
+ if (match?.[1] === undefined)
233
+ return undefined;
234
+ return decodeURIComponent(match[1]);
235
+ }
236
+ function responseBindingForRequest(request) {
237
+ if (!AGENT_MUTATION_OPERATIONS.includes(request.operation)) {
238
+ throw new TypeError('Agent request operation is invalid');
239
+ }
240
+ const requestBody = inputObject(request.body);
241
+ return {
242
+ operation: request.operation,
243
+ expectedRunId: runIdFromRequestPath(request.path),
244
+ requestBody,
245
+ idempotencyKey: boundedIdempotencyKey(request.idempotencyKey),
246
+ };
247
+ }
248
+ async function sendRequest(dependencies, request) {
249
+ const binding = responseBindingForRequest(request);
250
+ if (request.operation !== 'agent.open' && binding.expectedRunId === undefined) {
251
+ throw new TypeError('Agent request path is not bound to a run');
252
+ }
253
+ const response = await (await getClient(dependencies)).request(request);
254
+ return validateAgentResponse(binding.operation, response, binding);
255
+ }
256
+ function responseIntegrityError() {
257
+ return new KiokukoError('INTEGRITY_ERROR', 'Agent server response is invalid');
258
+ }
259
+ function responseObject(value, required, optional = []) {
260
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
261
+ throw responseIntegrityError();
262
+ const object = value;
263
+ const keys = Object.keys(object);
264
+ const allowed = new Set([...required, ...optional]);
265
+ if (keys.some((key) => !allowed.has(key)) || required.some((key) => !Object.hasOwn(object, key))) {
266
+ throw responseIntegrityError();
267
+ }
268
+ return object;
269
+ }
270
+ function responseArray(value, maximum) {
271
+ if (!Array.isArray(value) || value.length > maximum)
272
+ throw responseIntegrityError();
273
+ return value;
274
+ }
275
+ function responseString(value, maximumBytes = MAX_INPUT_BYTES, allowEmpty = false) {
276
+ if (typeof value !== 'string' || (!allowEmpty && value.length === 0)
277
+ || Buffer.byteLength(value, 'utf8') > maximumBytes)
278
+ throw responseIntegrityError();
279
+ return value;
280
+ }
281
+ function responseIdentifier(value) {
282
+ const result = responseString(value, MAX_INPUT_BYTES);
283
+ if (result.length > MAX_ID_BYTES || CONTROL_CHARACTERS.test(result))
284
+ throw responseIntegrityError();
285
+ return result;
286
+ }
287
+ function responseEventId(value) {
288
+ if (typeof value !== 'string' || value.trim().length === 0
289
+ || value.length > MAX_ID_BYTES || value.includes('\u0000'))
290
+ throw responseIntegrityError();
291
+ return value;
292
+ }
293
+ function responseEnum(value, allowed) {
294
+ if (typeof value !== 'string' || !allowed.includes(value))
295
+ throw responseIntegrityError();
296
+ return value;
297
+ }
298
+ function responseInteger(value, minimum = 0, maximum = Number.MAX_SAFE_INTEGER) {
299
+ if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < minimum || value > maximum) {
300
+ throw responseIntegrityError();
301
+ }
302
+ return value;
303
+ }
304
+ function responseHash(value) {
305
+ if (typeof value !== 'string' || !/^[0-9a-f]{64}$/u.test(value))
306
+ throw responseIntegrityError();
307
+ return value;
308
+ }
309
+ function validateRequestBindingHash(object, binding) {
310
+ const actual = responseHash(object.requestBindingHash);
311
+ const expected = agentRequestBindingHash({
312
+ operation: binding.operation,
313
+ pathRunId: binding.expectedRunId ?? null,
314
+ idempotencyKey: binding.idempotencyKey,
315
+ requestBody: binding.requestBody,
316
+ });
317
+ if (actual !== expected)
318
+ throw responseIntegrityError();
319
+ }
320
+ function responseTimestamp(value) {
321
+ if (typeof value !== 'string' || !/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/u.test(value)) {
322
+ throw responseIntegrityError();
323
+ }
324
+ const timestamp = Date.parse(value);
325
+ if (!Number.isFinite(timestamp) || new Date(timestamp).toISOString() !== value)
326
+ throw responseIntegrityError();
327
+ return value;
328
+ }
329
+ function responseStringArray(value, maximum, allowed) {
330
+ const items = responseArray(value, maximum).map((item) => responseString(item, MAX_TEXT_BYTES));
331
+ if (new Set(items).size !== items.length || (allowed !== undefined && items.some((item) => !allowed.includes(item)))) {
332
+ throw responseIntegrityError();
333
+ }
334
+ return items;
335
+ }
336
+ function sameResponseValue(left, right) {
337
+ return stringifyBoundaryJson(cloneBoundaryJson(left, responseIntegrityError))
338
+ === stringifyBoundaryJson(cloneBoundaryJson(right, responseIntegrityError));
339
+ }
340
+ const PROFILE_FIELDS = ['taskType', 'target', 'expected', 'constraints'];
341
+ const INTAKE_STATUSES = ['needs_answer', 'ready', 'exhausted'];
342
+ const ACTIVE_RUN_STATUSES = ['intake', 'active'];
343
+ const TERMINAL_RUN_STATUSES = ['completed', 'failed', 'cancelled', 'interrupted'];
344
+ const CAPABILITY_AVAILABILITIES = ['known-empty', 'known-nonempty', 'unknown'];
345
+ const CAPABILITY_RECOMMENDATION_AVAILABILITIES = ['available', 'missing', 'unknown'];
346
+ const COVERAGE_FIELDS = ['run', 'tool', 'command', 'file', 'approval'];
347
+ const COVERAGE_LEVELS = ['complete', 'best_effort', 'declared', 'unavailable'];
348
+ const CAPABILITY_WARNING_CODES = [
349
+ 'CAPABILITY_CATALOG_COMPACTED',
350
+ 'CAPABILITY_CATALOG_ITEMS_DROPPED',
351
+ 'CAPABILITY_CATALOG_BUDGET_EXCEEDED',
352
+ 'CAPABILITY_CATALOG_UNAVAILABLE',
353
+ ];
354
+ function validateTaskProfileSchema(value, withSource = false) {
355
+ const object = responseObject(value, withSource ? [...PROFILE_FIELDS, 'source'] : PROFILE_FIELDS);
356
+ if (object.taskType !== null)
357
+ responseEnum(object.taskType, TASK_TYPES);
358
+ for (const field of ['target', 'expected', 'constraints']) {
359
+ if (object[field] !== null)
360
+ responseString(object[field], MAX_INPUT_BYTES, true);
361
+ }
362
+ if (withSource && object.source !== 'akinator+ledger-revisions')
363
+ throw responseIntegrityError();
364
+ return object;
365
+ }
366
+ function validateQuestion(value) {
367
+ if (value === null)
368
+ return null;
369
+ const object = responseObject(value, ['id', 'prompt', 'options', 'required']);
370
+ responseEnum(object.id, PROFILE_FIELDS);
371
+ responseString(object.prompt, MAX_TEXT_BYTES);
372
+ if (object.options !== null)
373
+ responseStringArray(object.options, 100);
374
+ if (typeof object.required !== 'boolean')
375
+ throw responseIntegrityError();
376
+ return object;
377
+ }
378
+ function validateCapabilityWarnings(value) {
379
+ const warnings = responseArray(value, CAPABILITY_WARNING_CODES.length);
380
+ const seen = new Set();
381
+ for (const warning of warnings) {
382
+ const object = responseObject(warning, ['code', 'message']);
383
+ const code = responseEnum(object.code, CAPABILITY_WARNING_CODES);
384
+ responseString(object.message, MAX_TEXT_BYTES);
385
+ if (seen.has(code))
386
+ throw responseIntegrityError();
387
+ seen.add(code);
388
+ }
389
+ return warnings;
390
+ }
391
+ function validateCapabilityRecommendations(value) {
392
+ const recommendations = responseArray(value, 205);
393
+ for (const recommendation of recommendations) {
394
+ const object = responseObject(recommendation, ['kind', 'name', 'availability', 'reason', 'source'], ['required']);
395
+ responseEnum(object.kind, CAPABILITY_KINDS);
396
+ const name = responseString(object.name, MAX_INPUT_BYTES);
397
+ if (Array.from(name).length > MAX_CAPABILITY_NAME_CHARS
398
+ || name.trim() !== name || UNSAFE_CAPABILITY_LABEL_CHARACTERS.test(name))
399
+ throw responseIntegrityError();
400
+ responseEnum(object.availability, CAPABILITY_RECOMMENDATION_AVAILABILITIES);
401
+ responseString(object.reason, MAX_TEXT_BYTES);
402
+ responseEnum(object.source, ['akinator_policy', 'catalog_similarity']);
403
+ if (Object.hasOwn(object, 'required') && typeof object.required !== 'boolean')
404
+ throw responseIntegrityError();
405
+ }
406
+ return recommendations;
407
+ }
408
+ function validateCapabilities(value) {
409
+ const object = responseObject(value, [
410
+ 'availability', 'catalogProvided', 'availableSkillCount', 'diagnostics', 'warnings', 'recommendations',
411
+ ]);
412
+ const availability = responseEnum(object.availability, CAPABILITY_AVAILABILITIES);
413
+ if (typeof object.catalogProvided !== 'boolean' || object.catalogProvided !== (availability !== 'unknown')) {
414
+ throw responseIntegrityError();
415
+ }
416
+ if (availability === 'unknown') {
417
+ if (object.availableSkillCount !== null)
418
+ throw responseIntegrityError();
419
+ }
420
+ else {
421
+ responseInteger(object.availableSkillCount);
422
+ }
423
+ const diagnostics = responseObject(object.diagnostics, ['received', 'accepted', 'truncated', 'dropped']);
424
+ for (const field of ['received', 'accepted', 'truncated', 'dropped'])
425
+ responseInteger(diagnostics[field]);
426
+ if (diagnostics.accepted > diagnostics.received
427
+ || diagnostics.truncated > diagnostics.accepted)
428
+ throw responseIntegrityError();
429
+ validateCapabilityWarnings(object.warnings);
430
+ validateCapabilityRecommendations(object.recommendations);
431
+ return object;
432
+ }
433
+ function validateContextRecommendation(value) {
434
+ const object = responseObject(value, [
435
+ 'code', 'message', 'evidenceEventIds', 'priority', 'untrusted', 'actionable', 'metadata',
436
+ ]);
437
+ responseEnum(object.code, RECOMMENDATION_CODES);
438
+ responseString(object.message, MAX_TEXT_BYTES);
439
+ responseInteger(object.priority, 1, RECOMMENDATION_CODES.length);
440
+ if (object.untrusted !== true
441
+ || object.actionable !== false)
442
+ throw responseIntegrityError();
443
+ responseStringArray(object.evidenceEventIds, 16);
444
+ const metadata = responseObject(object.metadata, ['truncated', 'referenceIds'], ['incompleteCoverageCategories']);
445
+ if (typeof metadata.truncated !== 'boolean')
446
+ throw responseIntegrityError();
447
+ responseStringArray(metadata.referenceIds, 16);
448
+ if (Object.hasOwn(metadata, 'incompleteCoverageCategories')) {
449
+ responseStringArray(metadata.incompleteCoverageCategories, COVERAGE_FIELDS.length, COVERAGE_FIELDS);
450
+ }
451
+ return object;
452
+ }
453
+ function validateContextRecommendations(value) {
454
+ const recommendations = responseArray(value, RECOMMENDATION_CODES.length);
455
+ const codes = new Set();
456
+ for (const recommendation of recommendations) {
457
+ const object = validateContextRecommendation(recommendation);
458
+ const code = object.code;
459
+ if (codes.has(code))
460
+ throw responseIntegrityError();
461
+ codes.add(code);
462
+ }
463
+ return recommendations;
464
+ }
465
+ function validateNudge(value) {
466
+ if (value === null)
467
+ return null;
468
+ const object = responseObject(value, [
469
+ 'occurrenceId', 'code', 'message', 'evidenceEventIds', 'referenceIds', 'priority', 'policyVersion',
470
+ ]);
471
+ const code = responseEnum(object.code, NUDGE_CODES);
472
+ responseIdentifier(object.occurrenceId);
473
+ responseStringArray(object.evidenceEventIds, 16);
474
+ responseStringArray(object.referenceIds, 16);
475
+ if (object.policyVersion !== NUDGE_POLICY_VERSION
476
+ || object.message !== NUDGE_MESSAGES[code]
477
+ || object.priority !== NUDGE_PRIORITY[code]) {
478
+ throw responseIntegrityError();
479
+ }
480
+ return object;
481
+ }
482
+ function validateScoreComponentsSchema(value) {
483
+ const score = responseObject(value, CONTEXT_RANKING_COMPONENTS);
484
+ for (const field of CONTEXT_RANKING_COMPONENTS) {
485
+ if (typeof score[field] !== 'number' || !Number.isSafeInteger(score[field])
486
+ || score[field] < -1_000_000 || score[field] > 1_000_000) {
487
+ throw responseIntegrityError();
488
+ }
489
+ }
490
+ }
491
+ function validateContextSchema(value) {
492
+ if (value === null)
493
+ return null;
494
+ const object = responseObject(value, [
495
+ 'deliveryId', 'runId', 'throughSequence', 'taskProfileHash', 'queryHash', 'policyVersion', 'items', 'untrusted',
496
+ ]);
497
+ if (object.deliveryId !== null)
498
+ responseIdentifier(object.deliveryId);
499
+ responseIdentifier(object.runId);
500
+ responseInteger(object.throughSequence);
501
+ responseHash(object.taskProfileHash);
502
+ responseHash(object.queryHash);
503
+ if (object.policyVersion !== 'context-ranking-v1+recommendations.v1' || object.untrusted !== true) {
504
+ throw responseIntegrityError();
505
+ }
506
+ const items = responseArray(object.items, 100);
507
+ const entryIds = new Set();
508
+ for (const value of items) {
509
+ const item = responseObject(value, [
510
+ 'entryId', 'entryRevision', 'rank', 'scoreComponents', 'selectionReasons', 'content', 'untrusted',
511
+ ], ['origin']);
512
+ const entryId = responseIdentifier(item.entryId);
513
+ if (entryIds.has(entryId))
514
+ throw responseIntegrityError();
515
+ entryIds.add(entryId);
516
+ responseInteger(item.entryRevision, 1);
517
+ responseInteger(item.rank, 1);
518
+ if (item.untrusted !== true)
519
+ throw responseIntegrityError();
520
+ validateScoreComponentsSchema(item.scoreComponents);
521
+ const selectionReasons = responseStringArray(item.selectionReasons, CONTEXT_SELECTION_REASON_ORDER.length, CONTEXT_SELECTION_REASON_ORDER);
522
+ if (selectionReasons.length === 0)
523
+ throw responseIntegrityError();
524
+ const content = responseObject(item.content, ['title', 'summary', 'bodyPreview', 'characterCount', 'truncated']);
525
+ responseString(content.title, MAX_INPUT_BYTES, true);
526
+ if (content.summary !== null)
527
+ responseString(content.summary, MAX_INPUT_BYTES, true);
528
+ responseString(content.bodyPreview, MAX_INPUT_BYTES, true);
529
+ responseInteger(content.characterCount);
530
+ if (typeof content.truncated !== 'boolean')
531
+ throw responseIntegrityError();
532
+ if (Object.hasOwn(item, 'origin'))
533
+ responseEnum(item.origin, ['project', 'ecosystem', 'global']);
534
+ }
535
+ return object;
536
+ }
537
+ function preservedEventId(value) {
538
+ if (typeof value !== 'string')
539
+ return undefined;
540
+ responseIdentifier(value);
541
+ return /^[A-Za-z0-9._:-]+$/u.test(value) && findSecret(value) === undefined ? value : undefined;
542
+ }
543
+ function validateAckFields(object) {
544
+ responseIdentifier(object.runId);
545
+ const acceptedThrough = responseInteger(object.acceptedThrough, 1);
546
+ const localSequences = responseArray(object.localSequences, 200).map((value) => responseInteger(value, 1));
547
+ const sourceSequences = responseArray(object.sourceSequences, 200).map((value) => value === null ? null : responseInteger(value));
548
+ const eventIds = responseArray(object.eventIds, 200).map(responseEventId);
549
+ if (new Set(eventIds).size !== eventIds.length)
550
+ throw responseIntegrityError();
551
+ if (localSequences.length === 0 || localSequences.length !== sourceSequences.length || localSequences.length !== eventIds.length
552
+ || new Set(localSequences).size !== localSequences.length
553
+ || localSequences.some((sequence, index) => index > 0 && sequence <= localSequences[index - 1])
554
+ || localSequences.at(-1) !== acceptedThrough)
555
+ throw responseIntegrityError();
556
+ return { acceptedThrough, localSequences, sourceSequences, eventIds };
557
+ }
558
+ function expectedEventAck(value) {
559
+ const events = responseArray(value, 200);
560
+ if (events.length === 0)
561
+ throw responseIntegrityError();
562
+ const sourceSequences = [];
563
+ const eventIds = [];
564
+ for (const event of events) {
565
+ const object = responseObject(event, ['eventType', 'actor', 'payload'], [
566
+ 'eventId', 'sourceEventId', 'sourceSequence', 'sourceType', 'outcome', 'occurredAt',
567
+ ]);
568
+ // The gateway sanitizes event identifiers before persistence, and the CLI
569
+ // does not know the run workspace required to reproduce that transform.
570
+ // Bind the count/order/source sequence here; the response schema still
571
+ // requires unique, bounded event IDs.
572
+ eventIds.push(preservedEventId(object.eventId));
573
+ sourceSequences.push(Object.hasOwn(object, 'sourceSequence')
574
+ ? responseInteger(object.sourceSequence)
575
+ : null);
576
+ }
577
+ return { sourceSequences, eventIds };
578
+ }
579
+ function validateExpectedAck(ack, expected, exactCardinality = true) {
580
+ const orderedSources = (values) => [...values]
581
+ .sort((left, right) => left === null ? (right === null ? 0 : -1) : right === null ? 1 : left - right);
582
+ const explicitIds = expected.eventIds.filter((value) => value !== undefined);
583
+ if (new Set(explicitIds).size !== explicitIds.length
584
+ || (exactCardinality && ack.sourceSequences.length !== expected.sourceSequences.length)
585
+ || (!exactCardinality && ack.sourceSequences.length < expected.sourceSequences.length)) {
586
+ throw responseIntegrityError();
587
+ }
588
+ if (exactCardinality
589
+ && !sameResponseValue(orderedSources(ack.sourceSequences), orderedSources(expected.sourceSequences))) {
590
+ throw responseIntegrityError();
591
+ }
592
+ if (!exactCardinality) {
593
+ const remaining = [...ack.sourceSequences];
594
+ for (const source of expected.sourceSequences) {
595
+ const index = remaining.indexOf(source);
596
+ if (index < 0)
597
+ throw responseIntegrityError();
598
+ remaining.splice(index, 1);
599
+ }
600
+ }
601
+ for (let expectedIndex = 0; expectedIndex < expected.eventIds.length; expectedIndex += 1) {
602
+ const expectedId = expected.eventIds[expectedIndex];
603
+ if (expectedId === undefined)
604
+ continue;
605
+ let actualIndex = -1;
606
+ for (let index = 0; index < ack.eventIds.length; index += 1) {
607
+ if (ack.eventIds[index] === expectedId) {
608
+ actualIndex = index;
609
+ break;
610
+ }
611
+ }
612
+ if (actualIndex < 0 || ack.sourceSequences[actualIndex] !== expected.sourceSequences[expectedIndex]) {
613
+ throw responseIntegrityError();
614
+ }
615
+ }
616
+ }
617
+ function validateAppendResponse(value, binding) {
618
+ const object = responseObject(value, [
619
+ 'runId', 'acceptedThrough', 'localSequences', 'sourceSequences', 'eventIds', 'runStatus', 'untrusted',
620
+ 'requestBindingHash',
621
+ ]);
622
+ validateRequestBindingHash(object, binding);
623
+ const ack = validateAckFields(object);
624
+ if (object.runId !== binding.expectedRunId)
625
+ throw responseIntegrityError();
626
+ const request = responseObject(binding.requestBody, ['apiVersion', 'events']);
627
+ if (request.apiVersion !== '1')
628
+ throw responseIntegrityError();
629
+ responseEnum(object.runStatus, ACTIVE_RUN_STATUSES);
630
+ const expected = expectedEventAck(request.events);
631
+ validateExpectedAck(ack, expected);
632
+ if (object.untrusted !== true)
633
+ throw responseIntegrityError();
634
+ return object;
635
+ }
636
+ function validateCloseResponse(value, binding) {
637
+ const object = responseObject(value, [
638
+ 'runId', 'acceptedThrough', 'localSequences', 'sourceSequences', 'eventIds',
639
+ 'status', 'runStatus', 'untrusted', 'requestBindingHash',
640
+ ]);
641
+ validateRequestBindingHash(object, binding);
642
+ const ack = validateAckFields(object);
643
+ if (object.runId !== binding.expectedRunId)
644
+ throw responseIntegrityError();
645
+ const request = responseObject(binding.requestBody, ['apiVersion', 'status'], ['events']);
646
+ if (request.apiVersion !== '1')
647
+ throw responseIntegrityError();
648
+ if (Object.hasOwn(request, 'events')) {
649
+ const expected = expectedEventAck(request.events);
650
+ if (ack.eventIds.length !== expected.eventIds.length + 1)
651
+ throw responseIntegrityError();
652
+ validateExpectedAck(ack, expected, false);
653
+ }
654
+ else if (ack.eventIds.length !== 1) {
655
+ throw responseIntegrityError();
656
+ }
657
+ const status = responseEnum(object.status, TERMINAL_RUN_STATUSES);
658
+ if (status !== request.status || object.runStatus !== status || object.untrusted !== true)
659
+ throw responseIntegrityError();
660
+ return object;
661
+ }
662
+ function validateCoverage(value) {
663
+ const object = responseObject(value, COVERAGE_FIELDS);
664
+ for (const field of COVERAGE_FIELDS)
665
+ responseEnum(object[field], COVERAGE_LEVELS);
666
+ return object;
667
+ }
668
+ function validateProjectionSchema(value) {
669
+ const object = responseObject(value, [
670
+ 'throughSequence', 'taskProfile', 'profileHash', 'evidenceState', 'unresolvedFailureEventIds',
671
+ 'unknownOutcomeEventIds', 'latestMutationSequence', 'latestPassingVerificationSequence', 'coverage',
672
+ 'declaredCoverage', 'intakeIncomplete', 'missingProfileFields',
673
+ ], ['latestMutationEventIds', 'latestPassingVerificationEventIds']);
674
+ responseInteger(object.throughSequence);
675
+ validateTaskProfileSchema(object.taskProfile);
676
+ responseHash(object.profileHash);
677
+ responseEnum(object.evidenceState, ['none', 'failed', 'fresh', 'stale']);
678
+ responseArray(object.unresolvedFailureEventIds, 4096).forEach(responseEventId);
679
+ responseArray(object.unknownOutcomeEventIds, 4096).forEach(responseEventId);
680
+ if (Object.hasOwn(object, 'latestMutationEventIds'))
681
+ responseArray(object.latestMutationEventIds, 16).forEach(responseEventId);
682
+ if (Object.hasOwn(object, 'latestPassingVerificationEventIds'))
683
+ responseArray(object.latestPassingVerificationEventIds, 16).forEach(responseEventId);
684
+ for (const field of ['latestMutationSequence', 'latestPassingVerificationSequence']) {
685
+ if (object[field] !== null)
686
+ responseInteger(object[field], 1);
687
+ }
688
+ responseEnum(object.coverage, ['complete', 'partial']);
689
+ validateCoverage(object.declaredCoverage);
690
+ if (typeof object.intakeIncomplete !== 'boolean')
691
+ throw responseIntegrityError();
692
+ const projectionMissingFields = ['taskType', 'target', 'expected'];
693
+ responseStringArray(object.missingProfileFields, projectionMissingFields.length, projectionMissingFields);
694
+ return object;
695
+ }
696
+ function validateCapabilityGate(object, intakeNeedsAnswer, memoryPolicy) {
697
+ const capabilities = validateCapabilities(object.capabilities);
698
+ const warnings = validateCapabilityWarnings(object.warnings);
699
+ if (!sameResponseValue(warnings, capabilities.warnings))
700
+ throw responseIntegrityError();
701
+ validateContextRecommendations(object.recommendations);
702
+ const nextAction = responseEnum(object.nextAction, [
703
+ 'proceed', 'answer_from_evidence_or_ask_user', 'required_capability_unavailable',
704
+ ]);
705
+ const capabilityRecommendations = capabilities.recommendations;
706
+ const required = capabilityRecommendations.filter((recommendation) => (recommendation.required === true));
707
+ if (required.some((recommendation) => recommendation.source !== 'akinator_policy')) {
708
+ throw responseIntegrityError();
709
+ }
710
+ const memoryRecommendations = capabilityRecommendations.filter((recommendation) => (recommendation.name === MEMORY_REASONING_SKILL_NAME));
711
+ let memoryAvailability;
712
+ if (memoryPolicy.memoryReasoningRequired) {
713
+ if (memoryRecommendations.length !== 1)
714
+ throw responseIntegrityError();
715
+ const memory = memoryRecommendations[0];
716
+ if (memory.kind !== 'skill' || memory.name !== MEMORY_REASONING_SKILL_NAME
717
+ || memory.source !== 'akinator_policy' || memory.required !== true)
718
+ throw responseIntegrityError();
719
+ memoryAvailability = memory.availability;
720
+ }
721
+ else if (memoryRecommendations.length !== 0) {
722
+ throw responseIntegrityError();
723
+ }
724
+ const expectedMemoryContextWithheld = memoryPolicy.memoryReasoningRequired
725
+ && memoryAvailability !== 'available';
726
+ const expectedWithheldReason = memoryAvailability === 'missing'
727
+ ? 'memory_reasoning_missing'
728
+ : memoryAvailability === 'unknown'
729
+ ? 'memory_reasoning_unknown'
730
+ : null;
731
+ if (memoryPolicy.contextWithheld !== expectedMemoryContextWithheld
732
+ || memoryPolicy.withheldReason !== (expectedMemoryContextWithheld ? expectedWithheldReason : null)) {
733
+ throw responseIntegrityError();
734
+ }
735
+ const hasBlockingRequiredCapability = required.some((recommendation) => (recommendation.name !== MEMORY_REASONING_SKILL_NAME
736
+ && recommendation.availability !== 'available'));
737
+ const expectedAction = intakeNeedsAnswer
738
+ ? 'answer_from_evidence_or_ask_user'
739
+ : hasBlockingRequiredCapability
740
+ ? 'required_capability_unavailable'
741
+ : 'proceed';
742
+ if (nextAction !== expectedAction)
743
+ throw responseIntegrityError();
744
+ if (nextAction === 'required_capability_unavailable'
745
+ && (object.context !== null || object.recommendations.length !== 0))
746
+ throw responseIntegrityError();
747
+ return {
748
+ nextAction,
749
+ memoryContextWithheld: memoryPolicy.contextWithheld,
750
+ };
751
+ }
752
+ function validateMemoryPolicy(value) {
753
+ const policy = responseObject(value, ['memoryReasoningRequired', 'contextWithheld', 'withheldReason'], ['deliveryEmpty', 'storedEntryCount']);
754
+ if (typeof policy.memoryReasoningRequired !== 'boolean')
755
+ throw responseIntegrityError();
756
+ if (typeof policy.contextWithheld !== 'boolean')
757
+ throw responseIntegrityError();
758
+ const withheldReason = policy.withheldReason === null
759
+ ? null
760
+ : responseEnum(policy.withheldReason, [
761
+ 'memory_reasoning_missing', 'memory_reasoning_unknown',
762
+ ]);
763
+ if (!policy.memoryReasoningRequired && (policy.contextWithheld || withheldReason !== null)) {
764
+ throw responseIntegrityError();
765
+ }
766
+ if (policy.contextWithheld !== (withheldReason !== null))
767
+ throw responseIntegrityError();
768
+ const hasDeliveryEmpty = Object.hasOwn(policy, 'deliveryEmpty');
769
+ const hasStoredEntryCount = Object.hasOwn(policy, 'storedEntryCount');
770
+ if (hasDeliveryEmpty !== hasStoredEntryCount || (hasDeliveryEmpty && policy.deliveryEmpty !== true)) {
771
+ throw responseIntegrityError();
772
+ }
773
+ let storedEntryCount;
774
+ if (hasStoredEntryCount) {
775
+ storedEntryCount = responseInteger(policy.storedEntryCount, 1);
776
+ }
777
+ return {
778
+ memoryReasoningRequired: policy.memoryReasoningRequired,
779
+ contextWithheld: policy.contextWithheld,
780
+ withheldReason,
781
+ ...(storedEntryCount === undefined ? {} : { deliveryEmpty: true, storedEntryCount }),
782
+ };
783
+ }
784
+ function validateMemoryDeliveryObservation(policy, context, intakeNeedsAnswer) {
785
+ if (policy.deliveryEmpty !== true)
786
+ return;
787
+ if (intakeNeedsAnswer)
788
+ throw responseIntegrityError();
789
+ if (context !== null && responseArray(context.items, 100).length > 0)
790
+ throw responseIntegrityError();
791
+ }
792
+ function validateIntakeResponse(value, binding) {
793
+ const object = responseObject(value, [
794
+ 'runId', 'runStatus', 'intakeSessionId', 'intakeStatus', 'intake', 'question', 'currentQuestion',
795
+ 'missingFields', 'recommendedTags', 'taskProfile', 'profileHash', 'context', 'untrusted',
796
+ 'recommendations', 'capabilities', 'memoryPolicy', 'warnings', 'nextAction', 'requestBindingHash',
797
+ ]);
798
+ validateRequestBindingHash(object, binding);
799
+ const runId = responseIdentifier(object.runId);
800
+ if (binding.expectedRunId !== undefined && runId !== binding.expectedRunId)
801
+ throw responseIntegrityError();
802
+ const runStatus = responseEnum(object.runStatus, ACTIVE_RUN_STATUSES);
803
+ const intakeSessionId = responseIdentifier(object.intakeSessionId);
804
+ const intakeStatus = responseEnum(object.intakeStatus, INTAKE_STATUSES);
805
+ const intake = responseObject(object.intake, ['status', 'sessionId', 'question']);
806
+ const question = validateQuestion(object.question);
807
+ const currentQuestion = validateQuestion(object.currentQuestion);
808
+ if (intake.status !== intakeStatus || intake.sessionId !== intakeSessionId
809
+ || !sameResponseValue(intake.question, question) || !sameResponseValue(currentQuestion, question)) {
810
+ throw responseIntegrityError();
811
+ }
812
+ validateTaskProfileSchema(object.taskProfile);
813
+ const requiredProfileFields = ['taskType', 'target', 'expected'];
814
+ responseStringArray(object.missingFields, requiredProfileFields.length, requiredProfileFields);
815
+ responseStringArray(object.recommendedTags, 10);
816
+ const needsAnswer = intakeStatus === 'needs_answer';
817
+ if (needsAnswer) {
818
+ if (runStatus !== 'intake' || question === null || object.profileHash !== null || object.context !== null) {
819
+ throw responseIntegrityError();
820
+ }
821
+ if (object.recommendations.length !== 0)
822
+ throw responseIntegrityError();
823
+ }
824
+ else {
825
+ if (runStatus !== 'active' || question !== null)
826
+ throw responseIntegrityError();
827
+ responseHash(object.profileHash);
828
+ }
829
+ if (object.untrusted !== true)
830
+ throw responseIntegrityError();
831
+ const context = needsAnswer ? null : validateContextSchema(object.context);
832
+ if (context !== null && (context.runId !== runId || context.taskProfileHash !== object.profileHash)) {
833
+ throw responseIntegrityError();
834
+ }
835
+ const memoryPolicy = validateMemoryPolicy(object.memoryPolicy);
836
+ validateMemoryDeliveryObservation(memoryPolicy, context, needsAnswer);
837
+ const capabilityGate = validateCapabilityGate(object, needsAnswer, memoryPolicy);
838
+ if (!needsAnswer) {
839
+ if (capabilityGate.nextAction === 'proceed' && context === null && !capabilityGate.memoryContextWithheld) {
840
+ throw responseIntegrityError();
841
+ }
842
+ }
843
+ return object;
844
+ }
845
+ function checkpointExpectedAck(body) {
846
+ return Object.hasOwn(body, 'events') ? expectedEventAck(body.events) : undefined;
847
+ }
848
+ function validateCheckpointResponse(value, binding) {
849
+ const object = responseObject(value, [
850
+ 'runId', 'acceptedThrough', 'localSequences', 'sourceSequences', 'eventIds', 'runStatus', 'intakeStatus',
851
+ 'taskProfile', 'profileHash', 'projection', 'recommendations', 'characterBudget', 'context', 'untrusted',
852
+ 'capabilities', 'memoryPolicy', 'warnings', 'nextAction', 'requestBindingHash',
853
+ ], ['nudge']);
854
+ validateRequestBindingHash(object, binding);
855
+ const ack = validateAckFields(object);
856
+ const expectedAck = checkpointExpectedAck(binding.requestBody);
857
+ const runId = responseIdentifier(object.runId);
858
+ if (runId !== binding.expectedRunId)
859
+ throw responseIntegrityError();
860
+ if (expectedAck !== undefined)
861
+ validateExpectedAck(ack, expectedAck, false);
862
+ if (object.runStatus !== 'active')
863
+ throw responseIntegrityError();
864
+ responseEnum(object.intakeStatus, ['ready', 'exhausted']);
865
+ validateTaskProfileSchema(object.taskProfile, true);
866
+ responseHash(object.profileHash);
867
+ validateProjectionSchema(object.projection);
868
+ if (Object.hasOwn(object, 'nudge'))
869
+ validateNudge(object.nudge);
870
+ responseInteger(object.characterBudget, 1, 100_000);
871
+ if (object.untrusted !== true)
872
+ throw responseIntegrityError();
873
+ const context = validateContextSchema(object.context);
874
+ if (context !== null && (context.runId !== runId || context.taskProfileHash !== object.profileHash)) {
875
+ throw responseIntegrityError();
876
+ }
877
+ const memoryPolicy = validateMemoryPolicy(object.memoryPolicy);
878
+ validateMemoryDeliveryObservation(memoryPolicy, context, false);
879
+ const capabilityGate = validateCapabilityGate(object, false, memoryPolicy);
880
+ if (capabilityGate.nextAction === 'proceed') {
881
+ if (context === null && !capabilityGate.memoryContextWithheld)
882
+ throw responseIntegrityError();
883
+ }
884
+ return object;
885
+ }
886
+ function validateFeedbackRecord(category, value) {
887
+ const common = ['feedbackId', 'workspace', 'runId', 'actor', 'idempotencyKeyHash', 'createdAt'];
888
+ const nullableText = (candidate, maximumBytes = 4 * 1024) => {
889
+ if (candidate !== null)
890
+ responseString(candidate, maximumBytes);
891
+ };
892
+ if (category === 'context') {
893
+ const object = responseObject(value, [...common, 'deliveryId', 'entryId', 'verdict', 'comment']);
894
+ for (const field of ['feedbackId', 'workspace', 'runId', 'actor', 'deliveryId', 'entryId'])
895
+ responseIdentifier(object[field]);
896
+ responseEnum(object.verdict, ['helpful', 'irrelevant', 'stale', 'conflicting']);
897
+ nullableText(object.comment);
898
+ responseHash(object.idempotencyKeyHash);
899
+ responseTimestamp(object.createdAt);
900
+ return object;
901
+ }
902
+ if (category === 'intake') {
903
+ const object = responseObject(value, [...common, 'sessionId', 'questionId', 'profileField', 'verdict', 'comment']);
904
+ for (const field of ['feedbackId', 'workspace', 'runId', 'actor', 'sessionId'])
905
+ responseIdentifier(object[field]);
906
+ for (const field of ['questionId', 'profileField']) {
907
+ if (object[field] !== null)
908
+ responseEnum(object[field], PROFILE_FIELDS);
909
+ }
910
+ if ((object.questionId === null) === (object.profileField === null))
911
+ throw responseIntegrityError();
912
+ responseEnum(object.verdict, ['helpful', 'unnecessary', 'corrected']);
913
+ nullableText(object.comment);
914
+ responseHash(object.idempotencyKeyHash);
915
+ responseTimestamp(object.createdAt);
916
+ return object;
917
+ }
918
+ const object = responseObject(value, [
919
+ ...common, 'outcome', 'recommendationCode', 'recommendationVerdict', 'rating', 'comment',
920
+ ]);
921
+ for (const field of ['feedbackId', 'workspace', 'runId', 'actor'])
922
+ responseIdentifier(object[field]);
923
+ nullableText(object.outcome);
924
+ if (object.recommendationCode !== null) {
925
+ const recommendationCode = responseString(object.recommendationCode, MAX_INPUT_BYTES);
926
+ if (recommendationCode.length > MAX_ID_BYTES)
927
+ throw responseIntegrityError();
928
+ }
929
+ nullableText(object.comment);
930
+ if (object.recommendationVerdict !== null)
931
+ responseEnum(object.recommendationVerdict, ['accepted', 'dismissed', 'resolved']);
932
+ if ((object.recommendationCode === null) !== (object.recommendationVerdict === null))
933
+ throw responseIntegrityError();
934
+ if (object.rating !== null)
935
+ responseInteger(object.rating, 1, 5);
936
+ if (object.outcome === null && object.recommendationCode === null && object.rating === null)
937
+ throw responseIntegrityError();
938
+ responseHash(object.idempotencyKeyHash);
939
+ responseTimestamp(object.createdAt);
940
+ return object;
941
+ }
942
+ function validateFeedbackBinding(category, record, binding) {
943
+ if (binding.requestBody.category !== category
944
+ || binding.requestBody.feedbackId !== record.feedbackId
945
+ || record.runId !== binding.expectedRunId
946
+ || record.idempotencyKeyHash !== createHash('sha256').update(binding.idempotencyKey, 'utf8').digest('hex')) {
947
+ throw responseIntegrityError();
948
+ }
949
+ }
950
+ function validateFeedbackResponse(value, binding) {
951
+ const object = responseObject(value, ['category', 'record', 'untrusted', 'requestBindingHash']);
952
+ validateRequestBindingHash(object, binding);
953
+ const category = responseEnum(object.category, ['context', 'recommendation', 'intake', 'run']);
954
+ const record = validateFeedbackRecord(category, object.record);
955
+ validateFeedbackBinding(category, record, binding);
956
+ if (object.untrusted !== true)
957
+ throw responseIntegrityError();
958
+ return object;
959
+ }
960
+ function validateAgentResponse(operation, value, binding) {
961
+ const cloned = cloneBoundaryJson(value, responseIntegrityError);
962
+ if (Buffer.byteLength(stringifyBoundaryJson(cloned), 'utf8') > MAX_INPUT_BYTES)
963
+ throw responseIntegrityError();
964
+ switch (operation) {
965
+ case 'agent.open': return validateIntakeResponse(cloned, binding);
966
+ case 'agent.answer': return validateIntakeResponse(cloned, binding);
967
+ case 'agent.events': return validateAppendResponse(cloned, binding);
968
+ case 'agent.checkpoint': return validateCheckpointResponse(cloned, binding);
969
+ case 'agent.close': return validateCloseResponse(cloned, binding);
970
+ case 'agent.feedback': return validateFeedbackResponse(cloned, binding);
971
+ default: throw responseIntegrityError();
972
+ }
973
+ }
974
+ function responseStatus(operation, data) {
975
+ if (data.nextAction === 'required_capability_unavailable')
976
+ return data.nextAction;
977
+ switch (operation) {
978
+ case 'agent.open':
979
+ case 'agent.answer':
980
+ case 'agent.checkpoint': return data.intakeStatus;
981
+ case 'agent.events': return data.runStatus;
982
+ case 'agent.close': return data.status;
983
+ case 'agent.feedback': return 'recorded';
984
+ default: throw responseIntegrityError();
985
+ }
986
+ }
987
+ function responseQuestion(operation, data) {
988
+ if (operation !== 'agent.open' && operation !== 'agent.answer')
989
+ return undefined;
990
+ const question = data.currentQuestion;
991
+ return question === null ? undefined : question.id;
992
+ }
993
+ function requiredCapabilitySummary(data) {
994
+ const capabilities = data.capabilities;
995
+ const recommendations = capabilities.recommendations;
996
+ const labels = recommendations
997
+ .filter((recommendation) => recommendation.required === true && recommendation.availability !== 'available')
998
+ .map((recommendation) => `${recommendation.name} (${recommendation.availability})`);
999
+ if (labels.length === 0)
1000
+ throw responseIntegrityError();
1001
+ return `; required capabilities unavailable: ${labels.join(', ')}`;
1002
+ }
1003
+ function humanSummary(operation, data) {
1004
+ const question = responseQuestion(operation, data);
1005
+ const status = responseStatus(operation, data);
1006
+ const context = data.context !== null && data.context !== undefined ? '; initial context available' : '';
1007
+ const required = status === 'required_capability_unavailable' ? requiredCapabilitySummary(data) : '';
1008
+ return question === undefined
1009
+ ? `Kiokuko ${operation}: ${status}${required}${context}`
1010
+ : `Kiokuko ${operation}: ${status} (current question ${question})${required}${context}`;
1011
+ }
1012
+ function emitResult(json, operation, data) {
1013
+ if (json) {
1014
+ const envelope = cloneBoundaryJson(successEnvelope(operation, data), responseIntegrityError);
1015
+ process.stdout.write(`${stringifyBoundaryJson(envelope)}\n`);
1016
+ }
1017
+ else
1018
+ process.stdout.write(`${humanSummary(operation, data)}\n`);
1019
+ }
1020
+ export function registerAgentCommand(cli, dependencies = {}) {
1021
+ const agent = cli.command('agent').description('Send generic agent lifecycle requests through the Kiokuko server');
1022
+ agent.command('open')
1023
+ .description('Open an authenticated generic agent run')
1024
+ .requiredOption('--workspace <workspace>')
1025
+ .requiredOption('--client <kind>')
1026
+ .requiredOption('--task <task>')
1027
+ .option('--client-version <version>')
1028
+ .option('--session-id <id>')
1029
+ .option('--capture-profile <profile>', 'Capture profile: minimal, standard, or full', 'standard')
1030
+ .option('--capabilities-json <file|->', 'Complete local capability catalog as a JSON array')
1031
+ .option('--idempotency-key <key>', 'Reuse the same key only to retry this exact request')
1032
+ .option('--json')
1033
+ .action(async (options) => {
1034
+ const workspace = boundedString(options.workspace, MAX_TEXT_BYTES);
1035
+ const clientKind = boundedId(options.client);
1036
+ const task = boundedString(options.task, MAX_TEXT_BYTES);
1037
+ const profile = captureProfile(options.captureProfile);
1038
+ const capabilities = options.capabilitiesJson === undefined
1039
+ ? undefined
1040
+ : await readCapabilityCatalog(dependencies, options.capabilitiesJson);
1041
+ const client = {
1042
+ kind: clientKind,
1043
+ ...(options.clientVersion === undefined ? {} : { version: boundedId(options.clientVersion) }),
1044
+ ...(options.sessionId === undefined ? {} : { sessionId: boundedId(options.sessionId) }),
1045
+ };
1046
+ const body = {
1047
+ apiVersion: '1',
1048
+ workspace,
1049
+ client,
1050
+ task: {
1051
+ title: task,
1052
+ query: task,
1053
+ profileHints: { taskType: null, target: null, expected: null, constraints: null },
1054
+ },
1055
+ captureProfile: transportCaptureProfile(profile),
1056
+ coverage: {
1057
+ run: 'declared',
1058
+ tool: 'declared',
1059
+ command: 'declared',
1060
+ file: 'declared',
1061
+ approval: 'unavailable',
1062
+ },
1063
+ metadata: {},
1064
+ ...(capabilities === undefined ? {} : { capabilities }),
1065
+ };
1066
+ const data = await sendRequest(dependencies, {
1067
+ method: 'POST',
1068
+ path: '/api/v1/agent/runs',
1069
+ operation: 'agent.open',
1070
+ body,
1071
+ idempotencyKey: requestIdempotencyKey(options.idempotencyKey, dependencies),
1072
+ });
1073
+ emitResult(options.json, 'agent.open', data);
1074
+ });
1075
+ agent.command('answer')
1076
+ .description('Answer the current agent intake question without inference')
1077
+ .argument('<run-id>')
1078
+ .requiredOption('--question-id <id>')
1079
+ .requiredOption('--value <answer>')
1080
+ .option('--capabilities-json <file|->', 'Same complete local capability catalog supplied to agent open')
1081
+ .option('--idempotency-key <key>', 'Reuse the same key only to retry this exact request')
1082
+ .option('--json')
1083
+ .action(async (runId, options) => {
1084
+ const questionId = boundedId(options.questionId);
1085
+ const value = boundedString(options.value, MAX_TEXT_BYTES);
1086
+ const capabilities = options.capabilitiesJson === undefined
1087
+ ? undefined
1088
+ : await readCapabilityCatalog(dependencies, options.capabilitiesJson);
1089
+ const data = await sendRequest(dependencies, {
1090
+ method: 'POST',
1091
+ path: runPath(runId, 'intake/answers'),
1092
+ operation: 'agent.answer',
1093
+ body: {
1094
+ apiVersion: '1',
1095
+ questionId,
1096
+ value,
1097
+ ...(capabilities === undefined ? {} : { capabilities }),
1098
+ },
1099
+ idempotencyKey: requestIdempotencyKey(options.idempotencyKey, dependencies),
1100
+ });
1101
+ emitResult(options.json, 'agent.answer', data);
1102
+ });
1103
+ for (const [name, operation, suffix] of [
1104
+ ['events', 'agent.events', 'events'],
1105
+ ['checkpoint', 'agent.checkpoint', 'checkpoints'],
1106
+ ['close', 'agent.close', 'close'],
1107
+ ['feedback', 'agent.feedback', 'feedback'],
1108
+ ]) {
1109
+ const command = agent.command(name)
1110
+ .description(`Send an ${name} request for an agent run`)
1111
+ .argument('<run-id>')
1112
+ .requiredOption('--input-json <file|->')
1113
+ .option('--json');
1114
+ if (name === 'checkpoint') {
1115
+ command.option('--capabilities-json <file|->', 'Same complete local capability catalog supplied to agent open');
1116
+ }
1117
+ command.action(async (runId, options) => {
1118
+ const input = await readInput(dependencies, options.inputJson);
1119
+ const request = bodyAndKey(input, dependencies);
1120
+ const capabilities = name === 'checkpoint' && options.capabilitiesJson !== undefined
1121
+ ? await readCapabilityCatalog(dependencies, options.capabilitiesJson)
1122
+ : undefined;
1123
+ if (capabilities !== undefined && Object.prototype.hasOwnProperty.call(request.body, 'capabilities')) {
1124
+ throw validationError();
1125
+ }
1126
+ const data = await sendRequest(dependencies, {
1127
+ method: 'POST',
1128
+ path: runPath(runId, suffix),
1129
+ operation,
1130
+ body: capabilities === undefined ? request.body : { ...request.body, capabilities },
1131
+ idempotencyKey: request.idempotencyKey,
1132
+ });
1133
+ emitResult(options.json, operation, data);
1134
+ });
1135
+ }
1136
+ return agent;
1137
+ }
1138
+ //# sourceMappingURL=agent.js.map