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,1090 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { lstat } from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ import { setTimeout as delay } from 'node:timers/promises';
5
+ import { assertFileExpectation, assertAtomicCleanupComplete, AtomicCommittedMutationError, AtomicCommittedUnlinkError, atomicWriteTextIfUnchanged, readPendingAtomicMutation, readRegularFile, unlinkRegularFileIfUnchanged, } from '../agent-file/atomic-write.js';
6
+ import { readManagedBlockTemplateVersion, removeManagedBlock, } from '../agent-file/managed-block.js';
7
+ import { AGENT_TEMPLATE_VERSION, renderAgentFile } from '../agent-file/render.js';
8
+ import { getGlobalDatabasePath } from '../config/paths.js';
9
+ import { parseProjectConfig, parseProjectConfigText, } from '../config/project-config.js';
10
+ import { initializeDatabase } from './init.js';
11
+ import { openConnection } from '../db/connection.js';
12
+ import { TransactionCommitUncertainError } from '../db/transaction.js';
13
+ import { registerRepositoryAndLocation } from '../repository/binding.js';
14
+ import { detectRepositoryRoot } from '../repository/detect-root.js';
15
+ import { createRepositoryIdentity } from '../repository/identity.js';
16
+ import { KiokukoError } from '../errors.js';
17
+ import { readGitOrigin } from '../repository/git-origin.js';
18
+ import { renderProjectGitignore } from '../repository/gitignore.js';
19
+ function ensureChildPath(root, filePath) {
20
+ const resolvedRoot = path.resolve(root);
21
+ const resolvedPath = path.resolve(root, filePath);
22
+ if (resolvedPath === resolvedRoot || !resolvedPath.startsWith(`${resolvedRoot}${path.sep}`)) {
23
+ throw new KiokukoError('VALIDATION_ERROR', 'agentFile must remain inside the repository root');
24
+ }
25
+ return resolvedPath;
26
+ }
27
+ function parseBindingSnapshot(snapshot) {
28
+ if (snapshot === undefined)
29
+ return undefined;
30
+ return parseProjectConfigText(snapshot.content);
31
+ }
32
+ function bindingText(value) {
33
+ return `${JSON.stringify(value, null, 2)}\n`;
34
+ }
35
+ function bindingAction(existing, next) {
36
+ if (existing === undefined)
37
+ return 'created';
38
+ return existing === next ? 'unchanged' : 'updated';
39
+ }
40
+ function preferredCliCommand() {
41
+ return process.env.npm_command === 'exec' || process.env.npm_lifecycle_event === 'npx'
42
+ ? 'npm exec -- kiokuko'
43
+ : 'kiokuko';
44
+ }
45
+ class ConcurrentUseBinding extends Error {
46
+ binding;
47
+ constructor(binding) {
48
+ super('A concurrent use operation created the repository binding');
49
+ this.binding = binding;
50
+ this.name = 'ConcurrentUseBinding';
51
+ }
52
+ }
53
+ const CONCURRENT_IDENTICAL_OBSERVATION_ATTEMPTS = 50;
54
+ const CONCURRENT_IDENTICAL_OBSERVATION_DELAY_MS = 10;
55
+ class CommittedRegistrationCloseError extends AggregateError {
56
+ constructor(closeError) {
57
+ super([closeError], 'Repository registration committed, but closing the database connection failed');
58
+ this.name = 'CommittedRegistrationCloseError';
59
+ }
60
+ }
61
+ class UncertainRegistrationCloseError extends AggregateError {
62
+ registrationError;
63
+ closeError;
64
+ constructor(registrationError, closeError) {
65
+ super([registrationError, closeError], 'Repository registration may have committed, and closing the database connection also failed');
66
+ this.name = 'UncertainRegistrationCloseError';
67
+ this.registrationError = registrationError;
68
+ this.closeError = closeError;
69
+ }
70
+ }
71
+ function expectation(expected, containmentRoot, parentIdentity) {
72
+ return {
73
+ expected,
74
+ containmentRoot,
75
+ ...(parentIdentity === undefined ? {} : { expectedParentDirectory: parentIdentity }),
76
+ };
77
+ }
78
+ async function existingParentIdentity(filePath) {
79
+ let info;
80
+ try {
81
+ info = await lstat(path.dirname(filePath), { bigint: true });
82
+ }
83
+ catch (error) {
84
+ if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {
85
+ throw new KiokukoError('VALIDATION_ERROR', 'Managed file parent directory must already exist');
86
+ }
87
+ throw error;
88
+ }
89
+ if (info.isSymbolicLink()) {
90
+ throw new KiokukoError('SECURITY_REJECTION', 'Refusing to traverse a symbolic link');
91
+ }
92
+ if (!info.isDirectory()) {
93
+ throw new KiokukoError('VALIDATION_ERROR', 'Managed file parent must be a directory');
94
+ }
95
+ const identity = { device: BigInt(info.dev), inode: BigInt(info.ino) };
96
+ if (identity.inode === 0n) {
97
+ throw new KiokukoError('SECURITY_REJECTION', 'The filesystem does not expose a stable parent-directory identity required for safe mutation');
98
+ }
99
+ return identity;
100
+ }
101
+ async function restoreInstalledWrites(files, dependencies) {
102
+ const failures = [];
103
+ for (const file of [...files].reverse()) {
104
+ try {
105
+ if (file.original === undefined) {
106
+ if (file.installed === undefined) {
107
+ throw new KiokukoError('INTEGRITY_ERROR', 'Invalid file-restoration state');
108
+ }
109
+ const outcome = await dependencies.unlinkRegularFileIfUnchanged(file.path, expectation(file.installed, file.containmentRoot, file.parentIdentity));
110
+ assertAtomicCleanupComplete(outcome);
111
+ }
112
+ else {
113
+ const outcome = await dependencies.atomicWriteTextIfUnchanged(file.path, file.original.content, expectation(file.installed, file.containmentRoot, file.parentIdentity), file.original.mode);
114
+ assertAtomicCleanupComplete(outcome);
115
+ }
116
+ }
117
+ catch (error) {
118
+ failures.push(error);
119
+ }
120
+ }
121
+ return failures;
122
+ }
123
+ function isConflict(error) {
124
+ return error instanceof KiokukoError && error.code === 'CONFLICT';
125
+ }
126
+ function isTargetConflict(error, filePath) {
127
+ return isConflict(error) && error.details.target === filePath;
128
+ }
129
+ function sameFileIdentity(left, right) {
130
+ return left.device === right.device && left.inode === right.inode;
131
+ }
132
+ function assertSupportedManagedTemplate(snapshot, label) {
133
+ if (snapshot === undefined)
134
+ return;
135
+ const version = readManagedBlockTemplateVersion(snapshot.content);
136
+ if (version !== undefined && version > AGENT_TEMPLATE_VERSION) {
137
+ throw new KiokukoError('VALIDATION_ERROR', `${label} uses managed template version ${version}, newer than supported version ${AGENT_TEMPLATE_VERSION}`);
138
+ }
139
+ }
140
+ function sameRegularFileSnapshot(left, right) {
141
+ return left.content === right.content
142
+ && left.mode === right.mode
143
+ && sameFileIdentity(left.identity, right.identity);
144
+ }
145
+ async function readObservedTarget(filePath, containmentRoot, parentIdentity, readFile = readRegularFile) {
146
+ const current = await readFile(filePath, { containmentRoot });
147
+ await assertFileExpectation(filePath, expectation(current, containmentRoot, parentIdentity));
148
+ if (current === undefined)
149
+ return undefined;
150
+ let info;
151
+ try {
152
+ info = await lstat(filePath, { bigint: true });
153
+ }
154
+ catch (error) {
155
+ if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {
156
+ throw new KiokukoError('CONFLICT', 'Concurrent target changed during convergence', {
157
+ target: filePath,
158
+ });
159
+ }
160
+ throw error;
161
+ }
162
+ if (!info.isFile()
163
+ || info.dev !== current.identity.device
164
+ || info.ino !== current.identity.inode
165
+ || Number(info.mode & 511n) !== current.mode) {
166
+ throw new KiokukoError('CONFLICT', 'Concurrent target changed during convergence', {
167
+ target: filePath,
168
+ });
169
+ }
170
+ await assertFileExpectation(filePath, expectation(current, containmentRoot, parentIdentity));
171
+ return { snapshot: current, linkCount: info.nlink };
172
+ }
173
+ async function readStrictSettledTarget(filePath, containmentRoot, parentIdentity, label) {
174
+ const first = await readObservedTarget(filePath, containmentRoot, parentIdentity);
175
+ const firstPending = await readPendingAtomicMutation(filePath, parentIdentity, containmentRoot);
176
+ if (firstPending !== undefined) {
177
+ throw new KiokukoError('CONFLICT', `${label} has a concurrent atomic mutation`, {
178
+ target: filePath,
179
+ });
180
+ }
181
+ const second = await readObservedTarget(filePath, containmentRoot, parentIdentity);
182
+ const secondPending = await readPendingAtomicMutation(filePath, parentIdentity, containmentRoot);
183
+ if (secondPending !== undefined
184
+ || (first === undefined) !== (second === undefined)
185
+ || (first !== undefined
186
+ && second !== undefined
187
+ && !sameRegularFileSnapshot(first.snapshot, second.snapshot))) {
188
+ throw new KiokukoError('CONFLICT', `${label} changed while settling`, {
189
+ target: filePath,
190
+ });
191
+ }
192
+ const linked = first?.linkCount !== undefined && first.linkCount !== 1n
193
+ ? first
194
+ : second?.linkCount !== undefined && second.linkCount !== 1n
195
+ ? second
196
+ : undefined;
197
+ if (linked !== undefined) {
198
+ throw new KiokukoError('SECURITY_REJECTION', `${label} must have exactly one link`, {
199
+ target: filePath,
200
+ });
201
+ }
202
+ return second?.snapshot;
203
+ }
204
+ async function observeConcurrentTarget(filePath, content, mode, containmentRoot, parentIdentity, readFile = readRegularFile) {
205
+ const observed = await readObservedTarget(filePath, containmentRoot, parentIdentity, readFile);
206
+ if (observed === undefined)
207
+ return { kind: 'absent' };
208
+ if (observed.snapshot.content !== content || observed.snapshot.mode !== mode) {
209
+ return { kind: 'different' };
210
+ }
211
+ if (observed.linkCount !== 1n)
212
+ return { kind: 'linked', snapshot: observed.snapshot };
213
+ return { kind: 'identical', snapshot: observed.snapshot };
214
+ }
215
+ async function readIdenticalTargetAfterConflict(filePath, content, mode, containmentRoot, parentIdentity, planned, readFile = readRegularFile) {
216
+ let settlingCandidate;
217
+ let lastObservation;
218
+ let lastHadPendingArtifact = false;
219
+ for (let attempt = 0; attempt < CONCURRENT_IDENTICAL_OBSERVATION_ATTEMPTS; attempt += 1) {
220
+ let observation;
221
+ try {
222
+ observation = await observeConcurrentTarget(filePath, content, mode, containmentRoot, parentIdentity, readFile);
223
+ }
224
+ catch (error) {
225
+ if (!isTargetConflict(error, filePath))
226
+ throw error;
227
+ if (attempt + 1 < CONCURRENT_IDENTICAL_OBSERVATION_ATTEMPTS) {
228
+ await delay(CONCURRENT_IDENTICAL_OBSERVATION_DELAY_MS);
229
+ continue;
230
+ }
231
+ throw new KiokukoError('CONFLICT', 'Concurrent target mutation did not settle', {
232
+ target: filePath,
233
+ });
234
+ }
235
+ if (settlingCandidate !== undefined) {
236
+ if (observation.kind === 'absent')
237
+ return undefined;
238
+ if (observation.kind === 'different'
239
+ || !sameRegularFileSnapshot(settlingCandidate, observation.snapshot)) {
240
+ throw new KiokukoError('CONFLICT', 'Concurrent target changed while settling', {
241
+ target: filePath,
242
+ });
243
+ }
244
+ }
245
+ lastObservation = observation;
246
+ if (observation.kind === 'different')
247
+ return undefined;
248
+ if (observation.kind === 'absent') {
249
+ if (planned === undefined)
250
+ return undefined;
251
+ const pending = await readPendingAtomicMutation(filePath, parentIdentity, containmentRoot);
252
+ if (pending === undefined
253
+ || pending.kind !== 'previous'
254
+ || !sameRegularFileSnapshot(pending.snapshot, planned)) {
255
+ return undefined;
256
+ }
257
+ lastHadPendingArtifact = true;
258
+ }
259
+ else if (observation.kind === 'linked') {
260
+ settlingCandidate = observation.snapshot;
261
+ lastHadPendingArtifact = false;
262
+ }
263
+ else {
264
+ if (planned !== undefined
265
+ && sameFileIdentity(observation.snapshot.identity, planned.identity)) {
266
+ throw new KiokukoError('CONFLICT', 'Concurrent target was modified in place instead of atomically replaced', { target: filePath });
267
+ }
268
+ const pending = await readPendingAtomicMutation(filePath, parentIdentity, containmentRoot);
269
+ if (pending === undefined)
270
+ return observation.snapshot;
271
+ if (planned === undefined
272
+ || pending.kind !== 'previous'
273
+ || !sameRegularFileSnapshot(pending.snapshot, planned)) {
274
+ throw new KiokukoError('CONFLICT', 'Concurrent target retained an incompatible atomic artifact', { target: filePath });
275
+ }
276
+ settlingCandidate = observation.snapshot;
277
+ lastHadPendingArtifact = true;
278
+ }
279
+ if (attempt + 1 < CONCURRENT_IDENTICAL_OBSERVATION_ATTEMPTS) {
280
+ await delay(CONCURRENT_IDENTICAL_OBSERVATION_DELAY_MS);
281
+ }
282
+ }
283
+ if (lastObservation?.kind === 'linked') {
284
+ throw new KiokukoError('SECURITY_REJECTION', 'Refusing to adopt a hard-linked concurrent target', { target: filePath });
285
+ }
286
+ if (lastHadPendingArtifact) {
287
+ throw new KiokukoError('CONFLICT', 'Concurrent target mutation did not settle', {
288
+ target: filePath,
289
+ });
290
+ }
291
+ return undefined;
292
+ }
293
+ async function writeOrConvergeIdentical(dependencies, filePath, content, planned, mode, containmentRoot, parentIdentity, readFile = readRegularFile) {
294
+ try {
295
+ const outcome = await dependencies.atomicWriteTextIfUnchanged(filePath, content, expectation(planned, containmentRoot, parentIdentity), mode);
296
+ return {
297
+ snapshot: outcome.installed,
298
+ owned: true,
299
+ cleanupFailures: outcome.cleanupFailures,
300
+ };
301
+ }
302
+ catch (error) {
303
+ if (!isTargetConflict(error, filePath))
304
+ throw error;
305
+ const current = await readIdenticalTargetAfterConflict(filePath, content, mode, containmentRoot, parentIdentity, planned, readFile);
306
+ if (current === undefined)
307
+ throw error;
308
+ return { snapshot: current, owned: false, cleanupFailures: [] };
309
+ }
310
+ }
311
+ async function writeStrict(dependencies, filePath, content, planned, mode, containmentRoot, parentIdentity) {
312
+ const outcome = await dependencies.atomicWriteTextIfUnchanged(filePath, content, expectation(planned, containmentRoot, parentIdentity), mode);
313
+ return {
314
+ snapshot: outcome.installed,
315
+ owned: true,
316
+ cleanupFailures: outcome.cleanupFailures,
317
+ };
318
+ }
319
+ async function readSettledBindingSnapshot(bindingFile, repositoryRoot, bindingParentIdentity, readFile = readRegularFile) {
320
+ let candidate;
321
+ let pendingOriginal;
322
+ let sawPending = false;
323
+ let observedConcurrentChange = false;
324
+ let lastState;
325
+ for (let attempt = 0; attempt < CONCURRENT_IDENTICAL_OBSERVATION_ATTEMPTS; attempt += 1) {
326
+ let observed;
327
+ try {
328
+ observed = await readObservedTarget(bindingFile, repositoryRoot, bindingParentIdentity, readFile);
329
+ }
330
+ catch (error) {
331
+ if (!isTargetConflict(error, bindingFile))
332
+ throw error;
333
+ observedConcurrentChange = true;
334
+ lastState = 'pending';
335
+ if (attempt + 1 < CONCURRENT_IDENTICAL_OBSERVATION_ATTEMPTS) {
336
+ await delay(CONCURRENT_IDENTICAL_OBSERVATION_DELAY_MS);
337
+ continue;
338
+ }
339
+ break;
340
+ }
341
+ let pending = await readPendingAtomicMutation(bindingFile, bindingParentIdentity, repositoryRoot);
342
+ if (observed === undefined && candidate !== undefined) {
343
+ throw new KiokukoError('CONFLICT', 'Repository binding disappeared while settling', {
344
+ target: bindingFile,
345
+ });
346
+ }
347
+ if (observed === undefined && pending === undefined) {
348
+ try {
349
+ observed = await readObservedTarget(bindingFile, repositoryRoot, bindingParentIdentity, readFile);
350
+ }
351
+ catch (error) {
352
+ if (!isTargetConflict(error, bindingFile))
353
+ throw error;
354
+ observedConcurrentChange = true;
355
+ lastState = 'pending';
356
+ if (attempt + 1 < CONCURRENT_IDENTICAL_OBSERVATION_ATTEMPTS) {
357
+ await delay(CONCURRENT_IDENTICAL_OBSERVATION_DELAY_MS);
358
+ continue;
359
+ }
360
+ break;
361
+ }
362
+ if (observed === undefined) {
363
+ pending = await readPendingAtomicMutation(bindingFile, bindingParentIdentity, repositoryRoot);
364
+ if (pending === undefined) {
365
+ if (sawPending) {
366
+ throw new KiokukoError('CONFLICT', 'Concurrent repository binding mutation ended without a target', { target: bindingFile });
367
+ }
368
+ return { snapshot: undefined, observedConcurrentChange };
369
+ }
370
+ }
371
+ }
372
+ if (pending !== undefined) {
373
+ sawPending = true;
374
+ if (pending.kind !== 'previous'
375
+ || (pendingOriginal !== undefined
376
+ && !sameRegularFileSnapshot(pendingOriginal, pending.snapshot))) {
377
+ throw new KiokukoError('CONFLICT', 'Repository binding has an incompatible atomic artifact', { target: bindingFile });
378
+ }
379
+ pendingOriginal = pending.snapshot;
380
+ }
381
+ if (observed !== undefined) {
382
+ if (candidate !== undefined && !sameRegularFileSnapshot(candidate, observed.snapshot)) {
383
+ throw new KiokukoError('CONFLICT', 'Repository binding changed while settling', {
384
+ target: bindingFile,
385
+ });
386
+ }
387
+ candidate = observed.snapshot;
388
+ if (pending === undefined && observed.linkCount === 1n) {
389
+ return { snapshot: observed.snapshot, observedConcurrentChange };
390
+ }
391
+ lastState = pending === undefined ? 'linked' : 'pending';
392
+ }
393
+ else {
394
+ lastState = 'pending';
395
+ }
396
+ if (attempt + 1 < CONCURRENT_IDENTICAL_OBSERVATION_ATTEMPTS) {
397
+ await delay(CONCURRENT_IDENTICAL_OBSERVATION_DELAY_MS);
398
+ }
399
+ }
400
+ if (lastState === 'linked') {
401
+ throw new KiokukoError('SECURITY_REJECTION', 'Refusing to plan from a hard-linked repository binding file', { target: bindingFile });
402
+ }
403
+ throw new KiokukoError('CONFLICT', 'Concurrent repository binding mutation did not settle', {
404
+ target: bindingFile,
405
+ });
406
+ }
407
+ async function readConcurrentBinding(bindingFile, repositoryRoot, requestedAgentFile, bindingParentIdentity, readFile) {
408
+ const { snapshot } = await readSettledBindingSnapshot(bindingFile, repositoryRoot, bindingParentIdentity, readFile);
409
+ const binding = parseBindingSnapshot(snapshot);
410
+ if (snapshot === undefined || binding === undefined) {
411
+ throw new KiokukoError('CONFLICT', 'Concurrent repository binding disappeared during convergence', { target: bindingFile });
412
+ }
413
+ if (snapshot.content !== bindingText(binding)
414
+ || (process.platform !== 'win32' && snapshot.mode !== 0o644)
415
+ || binding.agentFile !== requestedAgentFile
416
+ || binding.templateVersion !== AGENT_TEMPLATE_VERSION) {
417
+ throw new KiokukoError('CONFLICT', 'Concurrent use operation created an incompatible repository binding', { target: bindingFile });
418
+ }
419
+ return binding;
420
+ }
421
+ async function readSettledAgentPlan(filePath, containmentRoot, parentIdentity, forbiddenBindingIdentity, intendedFromOriginal, readFile = readRegularFile) {
422
+ const continuePendingMutation = async (pending, observedFinalCandidate) => {
423
+ const intended = pending.kind === 'previous'
424
+ ? intendedFromOriginal?.(pending.snapshot)
425
+ : undefined;
426
+ if (intended === undefined) {
427
+ throw new KiokukoError('CONFLICT', 'Agent target is absent during an incompatible atomic mutation', { target: filePath });
428
+ }
429
+ if (observedFinalCandidate !== undefined
430
+ && (observedFinalCandidate.content !== intended.content
431
+ || observedFinalCandidate.mode !== intended.mode)) {
432
+ throw new KiokukoError('CONFLICT', 'Observed agent target is not the intended atomic result', { target: filePath });
433
+ }
434
+ // The retried reader verifies the pending artifact on every observation.
435
+ // Let it settle a transient restored-original state instead of rejecting
436
+ // before the concurrent atomic mutation has finished cleaning up.
437
+ const settled = await readRetriedAgentPlan(filePath, pending.snapshot, intended.content, intended.mode, containmentRoot, parentIdentity, forbiddenBindingIdentity, observedFinalCandidate);
438
+ if (settled === undefined) {
439
+ throw new KiokukoError('CONFLICT', 'Concurrent agent mutation did not settle', {
440
+ target: filePath,
441
+ });
442
+ }
443
+ return settled;
444
+ };
445
+ let linkedCandidate;
446
+ for (let attempt = 0; attempt < CONCURRENT_IDENTICAL_OBSERVATION_ATTEMPTS; attempt += 1) {
447
+ let observed;
448
+ try {
449
+ observed = await readObservedTarget(filePath, containmentRoot, parentIdentity, readFile);
450
+ }
451
+ catch (error) {
452
+ if (!isTargetConflict(error, filePath))
453
+ throw error;
454
+ if (attempt + 1 < CONCURRENT_IDENTICAL_OBSERVATION_ATTEMPTS) {
455
+ await delay(CONCURRENT_IDENTICAL_OBSERVATION_DELAY_MS);
456
+ continue;
457
+ }
458
+ throw new KiokukoError('CONFLICT', 'Concurrent agent mutation did not settle', {
459
+ target: filePath,
460
+ });
461
+ }
462
+ if (observed === undefined && linkedCandidate !== undefined) {
463
+ throw new KiokukoError('CONFLICT', 'Agent target disappeared while settling', {
464
+ target: filePath,
465
+ });
466
+ }
467
+ if (observed === undefined) {
468
+ let pending = await readPendingAtomicMutation(filePath, parentIdentity, containmentRoot);
469
+ if (pending === undefined) {
470
+ try {
471
+ observed = await readObservedTarget(filePath, containmentRoot, parentIdentity, readFile);
472
+ }
473
+ catch (error) {
474
+ if (!isTargetConflict(error, filePath))
475
+ throw error;
476
+ if (attempt + 1 < CONCURRENT_IDENTICAL_OBSERVATION_ATTEMPTS) {
477
+ await delay(CONCURRENT_IDENTICAL_OBSERVATION_DELAY_MS);
478
+ continue;
479
+ }
480
+ throw new KiokukoError('CONFLICT', 'Concurrent agent mutation did not settle', {
481
+ target: filePath,
482
+ });
483
+ }
484
+ if (observed === undefined) {
485
+ pending = await readPendingAtomicMutation(filePath, parentIdentity, containmentRoot);
486
+ if (pending === undefined)
487
+ return undefined;
488
+ }
489
+ }
490
+ if (observed === undefined) {
491
+ if (pending === undefined) {
492
+ throw new KiokukoError('INTEGRITY_ERROR', 'Atomic quarantine observation was lost');
493
+ }
494
+ return continuePendingMutation(pending);
495
+ }
496
+ }
497
+ if (forbiddenBindingIdentity !== undefined
498
+ && sameFileIdentity(observed.snapshot.identity, forbiddenBindingIdentity)) {
499
+ throw new KiokukoError('CONFLICT', 'agentFile resolves to the repository binding file');
500
+ }
501
+ if (linkedCandidate !== undefined
502
+ && !sameRegularFileSnapshot(linkedCandidate, observed.snapshot)) {
503
+ throw new KiokukoError('CONFLICT', 'Agent target changed while settling', {
504
+ target: filePath,
505
+ });
506
+ }
507
+ linkedCandidate = observed.snapshot;
508
+ if (observed.linkCount === 1n) {
509
+ const pending = await readPendingAtomicMutation(filePath, parentIdentity, containmentRoot);
510
+ if (pending === undefined)
511
+ return observed.snapshot;
512
+ return continuePendingMutation(pending, observed.snapshot);
513
+ }
514
+ if (attempt + 1 < CONCURRENT_IDENTICAL_OBSERVATION_ATTEMPTS) {
515
+ await delay(CONCURRENT_IDENTICAL_OBSERVATION_DELAY_MS);
516
+ }
517
+ }
518
+ throw new KiokukoError('SECURITY_REJECTION', 'Refusing to plan from a hard-linked agent target', { target: filePath });
519
+ }
520
+ async function readRetriedAgentPlan(filePath, initial, intendedContent, intendedMode, containmentRoot, parentIdentity, forbiddenBindingIdentity, initialFinalCandidate, readFile = readRegularFile) {
521
+ let finalCandidate = initialFinalCandidate;
522
+ let linkedCandidate;
523
+ let lastWasLinked = false;
524
+ for (let attempt = 0; attempt < CONCURRENT_IDENTICAL_OBSERVATION_ATTEMPTS; attempt += 1) {
525
+ let observed;
526
+ try {
527
+ observed = await readObservedTarget(filePath, containmentRoot, parentIdentity, readFile);
528
+ }
529
+ catch (error) {
530
+ if (!isTargetConflict(error, filePath))
531
+ throw error;
532
+ if (attempt + 1 < CONCURRENT_IDENTICAL_OBSERVATION_ATTEMPTS) {
533
+ await delay(CONCURRENT_IDENTICAL_OBSERVATION_DELAY_MS);
534
+ continue;
535
+ }
536
+ throw new KiokukoError('CONFLICT', 'Concurrent agent mutation did not settle', {
537
+ target: filePath,
538
+ });
539
+ }
540
+ if (observed === undefined) {
541
+ lastWasLinked = false;
542
+ if (linkedCandidate !== undefined || finalCandidate !== undefined) {
543
+ throw new KiokukoError('CONFLICT', 'Concurrent agent target disappeared while settling', {
544
+ target: filePath,
545
+ });
546
+ }
547
+ const pending = await readPendingAtomicMutation(filePath, parentIdentity, containmentRoot);
548
+ if (initial === undefined) {
549
+ if (pending !== undefined) {
550
+ throw new KiokukoError('CONFLICT', 'An unexpected atomic quarantine appeared for an initially absent agent target', { target: filePath });
551
+ }
552
+ return undefined;
553
+ }
554
+ if (pending === undefined
555
+ || pending.kind !== 'previous'
556
+ || !sameRegularFileSnapshot(pending.snapshot, initial)) {
557
+ throw new KiokukoError('CONFLICT', 'Agent target disappeared outside its exact atomic quarantine', { target: filePath });
558
+ }
559
+ }
560
+ else {
561
+ if (forbiddenBindingIdentity !== undefined
562
+ && sameFileIdentity(observed.snapshot.identity, forbiddenBindingIdentity)) {
563
+ throw new KiokukoError('CONFLICT', 'agentFile resolves to the repository binding file');
564
+ }
565
+ if (linkedCandidate !== undefined
566
+ && !sameRegularFileSnapshot(linkedCandidate, observed.snapshot)) {
567
+ throw new KiokukoError('CONFLICT', 'Concurrent agent target changed while settling', {
568
+ target: filePath,
569
+ });
570
+ }
571
+ const isInitial = initial !== undefined
572
+ && sameRegularFileSnapshot(observed.snapshot, initial);
573
+ const isIntendedFinal = intendedContent !== undefined
574
+ && observed.snapshot.content === intendedContent
575
+ && observed.snapshot.mode === intendedMode
576
+ && (initial === undefined
577
+ || !sameFileIdentity(observed.snapshot.identity, initial.identity));
578
+ if (finalCandidate !== undefined
579
+ && !sameRegularFileSnapshot(finalCandidate, observed.snapshot)) {
580
+ throw new KiokukoError('CONFLICT', 'Concurrent agent result changed while settling', {
581
+ target: filePath,
582
+ });
583
+ }
584
+ if (!isInitial && !isIntendedFinal) {
585
+ throw new KiokukoError('CONFLICT', 'Concurrent agent target is neither the planned original nor the intended final state', { target: filePath });
586
+ }
587
+ if (isIntendedFinal)
588
+ finalCandidate = observed.snapshot;
589
+ lastWasLinked = observed.linkCount !== 1n;
590
+ if (lastWasLinked) {
591
+ linkedCandidate = observed.snapshot;
592
+ }
593
+ else {
594
+ const pending = await readPendingAtomicMutation(filePath, parentIdentity, containmentRoot);
595
+ if (pending === undefined)
596
+ return observed.snapshot;
597
+ if (initial === undefined
598
+ || pending.kind !== 'previous'
599
+ || !sameRegularFileSnapshot(pending.snapshot, initial)) {
600
+ throw new KiokukoError('CONFLICT', 'Concurrent agent target retained an incompatible atomic artifact', { target: filePath });
601
+ }
602
+ }
603
+ }
604
+ if (attempt + 1 < CONCURRENT_IDENTICAL_OBSERVATION_ATTEMPTS) {
605
+ await delay(CONCURRENT_IDENTICAL_OBSERVATION_DELAY_MS);
606
+ }
607
+ }
608
+ if (lastWasLinked) {
609
+ throw new KiokukoError('SECURITY_REJECTION', 'Refusing to plan from a hard-linked concurrent agent target', { target: filePath });
610
+ }
611
+ throw new KiokukoError('CONFLICT', 'Concurrent agent mutation did not settle', {
612
+ target: filePath,
613
+ });
614
+ }
615
+ async function useRepositoryAttempt(options = {}, dependencyOverrides = {}, allowConcurrentConvergence, allowConcurrentAgentConvergence, retryParents) {
616
+ const dependencies = {
617
+ atomicWriteTextIfUnchanged: dependencyOverrides.atomicWriteTextIfUnchanged ?? atomicWriteTextIfUnchanged,
618
+ unlinkRegularFileIfUnchanged: dependencyOverrides.unlinkRegularFileIfUnchanged ?? unlinkRegularFileIfUnchanged,
619
+ readBindingFileForConvergence: dependencyOverrides.readBindingFileForConvergence ?? readRegularFile,
620
+ readAgentFileForConvergence: dependencyOverrides.readAgentFileForConvergence ?? readRegularFile,
621
+ registerRepositoryAndLocation: dependencyOverrides.registerRepositoryAndLocation ?? registerRepositoryAndLocation,
622
+ openConnection: dependencyOverrides.openConnection ?? openConnection,
623
+ };
624
+ const rootOptions = {};
625
+ if (options.cwd !== undefined)
626
+ rootOptions.cwd = options.cwd;
627
+ if (options.root !== undefined)
628
+ rootOptions.root = options.root;
629
+ if (options.allowDirectory !== undefined)
630
+ rootOptions.allowDirectory = options.allowDirectory;
631
+ const detected = detectRepositoryRoot(rootOptions);
632
+ const repositoryRoot = detected.root;
633
+ if (retryParents !== undefined && repositoryRoot !== retryParents.repositoryRoot) {
634
+ throw new KiokukoError('CONFLICT', 'Repository root changed during concurrent binding convergence');
635
+ }
636
+ const bindingFile = path.join(repositoryRoot, '.kiokuko.json');
637
+ const bindingParentIdentity = await existingParentIdentity(bindingFile);
638
+ if (retryParents !== undefined
639
+ && !sameFileIdentity(bindingParentIdentity, retryParents.bindingParentIdentity)) {
640
+ throw new KiokukoError('CONFLICT', 'Repository root changed during concurrent binding convergence');
641
+ }
642
+ const bindingObservation = await readSettledBindingSnapshot(bindingFile, repositoryRoot, bindingParentIdentity, dependencies.readBindingFileForConvergence);
643
+ const bindingSnapshot = bindingObservation.snapshot;
644
+ const existingBinding = parseBindingSnapshot(bindingSnapshot);
645
+ if (existingBinding !== undefined && existingBinding.templateVersion > AGENT_TEMPLATE_VERSION) {
646
+ throw new KiokukoError('VALIDATION_ERROR', `Project binding templateVersion ${existingBinding.templateVersion} is newer than supported version ${AGENT_TEMPLATE_VERSION}`);
647
+ }
648
+ if (options.forceRebind && existingBinding === undefined) {
649
+ throw new KiokukoError('CONFLICT', 'Cannot rebind a repository without an existing project binding');
650
+ }
651
+ if (existingBinding && !options.forceRebind) {
652
+ if (options.repositoryId !== undefined && existingBinding.repositoryId !== options.repositoryId) {
653
+ throw new KiokukoError('CONFLICT', 'Existing binding uses another repository ID; pass --force-rebind to change it');
654
+ }
655
+ if (options.workspace !== undefined && existingBinding.workspace !== options.workspace) {
656
+ throw new KiokukoError('CONFLICT', 'Existing binding uses another workspace; pass --force-rebind to change it');
657
+ }
658
+ }
659
+ const requestedAgentFile = options.agentFile ?? existingBinding?.agentFile ?? 'AGENTS.md';
660
+ const identityOptions = { repositoryRoot };
661
+ const remote = readGitOrigin(repositoryRoot);
662
+ if (remote !== undefined)
663
+ identityOptions.remoteUrl = remote;
664
+ if (existingBinding && options.forceRebind) {
665
+ if (options.repositoryId === undefined && options.workspace === undefined) {
666
+ throw new KiokukoError('CONFLICT', 'Forced rebind requires a different target identity');
667
+ }
668
+ identityOptions.repositoryId = options.repositoryId ?? `repo_${randomUUID()}`;
669
+ if (options.workspace !== undefined)
670
+ identityOptions.workspace = options.workspace;
671
+ }
672
+ else if (existingBinding) {
673
+ identityOptions.existingBinding = {
674
+ repositoryId: existingBinding.repositoryId,
675
+ workspace: existingBinding.workspace,
676
+ };
677
+ }
678
+ else {
679
+ if (options.repositoryId !== undefined)
680
+ identityOptions.repositoryId = options.repositoryId;
681
+ if (options.workspace !== undefined)
682
+ identityOptions.workspace = options.workspace;
683
+ }
684
+ const identity = createRepositoryIdentity(identityOptions);
685
+ if (existingBinding && options.forceRebind
686
+ && (identity.repositoryId === existingBinding.repositoryId
687
+ || identity.workspace === existingBinding.workspace)) {
688
+ throw new KiokukoError('CONFLICT', 'Forced rebind requires both a different repository ID and a different workspace');
689
+ }
690
+ // Validate the exact serialized binding before resolving, reading, initializing,
691
+ // or writing anything. Absolute and non-canonical lexical paths cannot persist.
692
+ const nextBinding = parseProjectConfig({
693
+ schemaVersion: 1,
694
+ repositoryId: identity.repositoryId,
695
+ workspace: identity.workspace,
696
+ agentFile: requestedAgentFile,
697
+ templateVersion: AGENT_TEMPLATE_VERSION,
698
+ });
699
+ const agentFile = ensureChildPath(repositoryRoot, nextBinding.agentFile);
700
+ const agentParentIdentity = await existingParentIdentity(agentFile);
701
+ if (retryParents !== undefined
702
+ && !sameFileIdentity(agentParentIdentity, retryParents.agentParentIdentity)) {
703
+ throw new KiokukoError('CONFLICT', 'agentFile parent changed during concurrent binding convergence');
704
+ }
705
+ const agentTemplateValues = {
706
+ repositoryId: identity.repositoryId,
707
+ workspace: identity.workspace,
708
+ cliCommand: preferredCliCommand(),
709
+ templateVersion: AGENT_TEMPLATE_VERSION,
710
+ };
711
+ const retryRendered = retryParents === undefined || options.noAgentFile
712
+ ? undefined
713
+ : renderAgentFile(retryParents.agentSnapshot?.content, agentTemplateValues);
714
+ const plannedAgent = retryParents === undefined
715
+ ? await readSettledAgentPlan(agentFile, repositoryRoot, agentParentIdentity, bindingSnapshot?.identity, options.noAgentFile
716
+ ? undefined
717
+ : (original) => ({
718
+ content: renderAgentFile(original.content, agentTemplateValues).content,
719
+ mode: original.mode,
720
+ }), dependencies.readAgentFileForConvergence)
721
+ : await readRetriedAgentPlan(agentFile, retryParents.agentSnapshot, retryRendered?.action === 'unchanged' ? undefined : retryRendered?.content, retryParents.agentSnapshot?.mode ?? 0o644, repositoryRoot, agentParentIdentity, bindingSnapshot?.identity, undefined, dependencies.readAgentFileForConvergence);
722
+ assertSupportedManagedTemplate(plannedAgent, 'Prospective agentFile');
723
+ const existingAgent = options.noAgentFile ? undefined : plannedAgent;
724
+ if (options.noAgentFile && plannedAgent !== undefined) {
725
+ const plannedManagedBlock = removeManagedBlock(plannedAgent.content);
726
+ if (plannedManagedBlock.action !== 'absent'
727
+ && renderAgentFile(plannedAgent.content, agentTemplateValues).action !== 'unchanged') {
728
+ throw new KiokukoError('CONFLICT', 'Cannot use --no-agent-file while the prospective agentFile contains a stale managed block');
729
+ }
730
+ }
731
+ if (bindingSnapshot !== undefined
732
+ && plannedAgent !== undefined
733
+ && bindingSnapshot.identity.device === plannedAgent.identity.device
734
+ && bindingSnapshot.identity.inode === plannedAgent.identity.inode) {
735
+ throw new KiokukoError('CONFLICT', 'agentFile resolves to the repository binding file');
736
+ }
737
+ const previousAgentFile = existingBinding !== undefined
738
+ && existingBinding.agentFile !== nextBinding.agentFile
739
+ ? ensureChildPath(repositoryRoot, existingBinding.agentFile)
740
+ : undefined;
741
+ const previousAgentParentIdentity = previousAgentFile === undefined
742
+ ? bindingParentIdentity
743
+ : await existingParentIdentity(previousAgentFile);
744
+ const previousAgent = previousAgentFile === undefined
745
+ ? undefined
746
+ : await readStrictSettledTarget(previousAgentFile, repositoryRoot, previousAgentParentIdentity, 'Previous agentFile');
747
+ assertSupportedManagedTemplate(previousAgent, 'Previous agentFile');
748
+ if (bindingSnapshot !== undefined
749
+ && previousAgent !== undefined
750
+ && bindingSnapshot.identity.device === previousAgent.identity.device
751
+ && bindingSnapshot.identity.inode === previousAgent.identity.inode) {
752
+ throw new KiokukoError('CONFLICT', 'Previous agentFile resolves to the repository binding file');
753
+ }
754
+ if (previousAgent !== undefined
755
+ && plannedAgent !== undefined
756
+ && previousAgent.identity.device === plannedAgent.identity.device
757
+ && previousAgent.identity.inode === plannedAgent.identity.inode) {
758
+ throw new KiokukoError('CONFLICT', 'Old and new agentFile paths resolve to the same regular file');
759
+ }
760
+ const previousAgentRemoval = previousAgent === undefined
761
+ ? undefined
762
+ : removeManagedBlock(previousAgent.content);
763
+ const nextBindingText = bindingText(nextBinding);
764
+ const gitignoreFile = path.join(repositoryRoot, '.gitignore');
765
+ const shouldIgnoreNewBinding = options.ensureNewBindingIgnored === true
766
+ && existingBinding === undefined;
767
+ const gitignoreSnapshot = shouldIgnoreNewBinding
768
+ ? await readStrictSettledTarget(gitignoreFile, repositoryRoot, bindingParentIdentity, 'Project .gitignore')
769
+ : undefined;
770
+ const renderedGitignore = shouldIgnoreNewBinding
771
+ ? renderProjectGitignore(gitignoreSnapshot?.content)
772
+ : undefined;
773
+ const rendered = options.noAgentFile
774
+ ? undefined
775
+ : renderAgentFile(existingAgent?.content, agentTemplateValues);
776
+ const databasePath = options.databasePath ?? getGlobalDatabasePath();
777
+ const result = {
778
+ repositoryRoot,
779
+ repositoryId: identity.repositoryId,
780
+ workspace: identity.workspace,
781
+ databasePath,
782
+ bindingFile,
783
+ agentFile: options.noAgentFile ? null : agentFile,
784
+ agentFileAction: options.noAgentFile ? 'skipped' : rendered?.action ?? 'unchanged',
785
+ bindingAction: options.dryRun ? 'planned' : bindingAction(bindingSnapshot?.content, nextBindingText),
786
+ dryRun: options.dryRun ?? false,
787
+ templateVersion: AGENT_TEMPLATE_VERSION,
788
+ };
789
+ if (options.dryRun)
790
+ return result;
791
+ const initOptions = { databasePath };
792
+ if (options.migrationsDirectory !== undefined)
793
+ initOptions.migrationsDirectory = options.migrationsDirectory;
794
+ await initializeDatabase(initOptions);
795
+ const installed = [];
796
+ try {
797
+ let resolvedBinding = bindingSnapshot;
798
+ if (result.bindingAction !== 'unchanged') {
799
+ try {
800
+ const resolution = bindingSnapshot === undefined
801
+ ? await writeOrConvergeIdentical(dependencies, bindingFile, nextBindingText, bindingSnapshot, 0o644, repositoryRoot, bindingParentIdentity, dependencies.readBindingFileForConvergence)
802
+ : await writeStrict(dependencies, bindingFile, nextBindingText, bindingSnapshot, bindingSnapshot.mode, repositoryRoot, bindingParentIdentity);
803
+ resolvedBinding = resolution.snapshot;
804
+ if (resolution.owned) {
805
+ installed.push({
806
+ path: bindingFile,
807
+ original: bindingSnapshot,
808
+ installed: resolution.snapshot,
809
+ containmentRoot: repositoryRoot,
810
+ parentIdentity: bindingParentIdentity,
811
+ });
812
+ }
813
+ assertAtomicCleanupComplete(resolution);
814
+ }
815
+ catch (error) {
816
+ if (error instanceof AtomicCommittedMutationError) {
817
+ installed.push({
818
+ path: bindingFile,
819
+ original: bindingSnapshot,
820
+ installed: error.outcome.installed,
821
+ containmentRoot: repositoryRoot,
822
+ parentIdentity: bindingParentIdentity,
823
+ });
824
+ }
825
+ else if (error instanceof AtomicCommittedUnlinkError && bindingSnapshot !== undefined) {
826
+ installed.push({
827
+ path: bindingFile,
828
+ original: bindingSnapshot,
829
+ installed: undefined,
830
+ containmentRoot: repositoryRoot,
831
+ parentIdentity: bindingParentIdentity,
832
+ });
833
+ }
834
+ if (allowConcurrentConvergence
835
+ && isTargetConflict(error, bindingFile)
836
+ && bindingSnapshot === undefined
837
+ && existingBinding === undefined
838
+ && options.repositoryId === undefined
839
+ && options.workspace === undefined) {
840
+ throw new ConcurrentUseBinding(await readConcurrentBinding(bindingFile, repositoryRoot, requestedAgentFile, bindingParentIdentity, dependencies.readBindingFileForConvergence));
841
+ }
842
+ throw error;
843
+ }
844
+ }
845
+ else if (bindingSnapshot !== undefined) {
846
+ await assertFileExpectation(bindingFile, expectation(bindingSnapshot, repositoryRoot, bindingParentIdentity));
847
+ resolvedBinding = bindingSnapshot;
848
+ }
849
+ let resolvedGitignore = gitignoreSnapshot;
850
+ if (renderedGitignore !== undefined && renderedGitignore.action !== 'unchanged') {
851
+ try {
852
+ const resolution = await writeOrConvergeIdentical(dependencies, gitignoreFile, renderedGitignore.content, gitignoreSnapshot, gitignoreSnapshot?.mode ?? 0o644, repositoryRoot, bindingParentIdentity);
853
+ resolvedGitignore = resolution.snapshot;
854
+ if (resolution.owned) {
855
+ installed.push({
856
+ path: gitignoreFile,
857
+ original: gitignoreSnapshot,
858
+ installed: resolution.snapshot,
859
+ containmentRoot: repositoryRoot,
860
+ parentIdentity: bindingParentIdentity,
861
+ });
862
+ }
863
+ assertAtomicCleanupComplete(resolution);
864
+ }
865
+ catch (error) {
866
+ if (error instanceof AtomicCommittedMutationError) {
867
+ installed.push({
868
+ path: gitignoreFile,
869
+ original: gitignoreSnapshot,
870
+ installed: error.outcome.installed,
871
+ containmentRoot: repositoryRoot,
872
+ parentIdentity: bindingParentIdentity,
873
+ });
874
+ }
875
+ throw error;
876
+ }
877
+ }
878
+ else if (renderedGitignore !== undefined && gitignoreSnapshot !== undefined) {
879
+ await assertFileExpectation(gitignoreFile, expectation(gitignoreSnapshot, repositoryRoot, bindingParentIdentity));
880
+ }
881
+ let resolvedAgent = existingAgent;
882
+ if (rendered && rendered.action !== 'unchanged') {
883
+ try {
884
+ const resolution = !options.forceRebind
885
+ || allowConcurrentAgentConvergence
886
+ || bindingObservation.observedConcurrentChange
887
+ ? await writeOrConvergeIdentical(dependencies, agentFile, rendered.content, existingAgent, existingAgent?.mode ?? 0o644, repositoryRoot, agentParentIdentity, dependencies.readAgentFileForConvergence)
888
+ : await writeStrict(dependencies, agentFile, rendered.content, existingAgent, existingAgent?.mode ?? 0o644, repositoryRoot, agentParentIdentity);
889
+ resolvedAgent = resolution.snapshot;
890
+ if (resolution.owned) {
891
+ installed.push({
892
+ path: agentFile,
893
+ original: existingAgent,
894
+ installed: resolution.snapshot,
895
+ containmentRoot: repositoryRoot,
896
+ parentIdentity: agentParentIdentity,
897
+ });
898
+ }
899
+ assertAtomicCleanupComplete(resolution);
900
+ }
901
+ catch (error) {
902
+ if (error instanceof AtomicCommittedMutationError) {
903
+ installed.push({
904
+ path: agentFile,
905
+ original: existingAgent,
906
+ installed: error.outcome.installed,
907
+ containmentRoot: repositoryRoot,
908
+ parentIdentity: agentParentIdentity,
909
+ });
910
+ }
911
+ else if (error instanceof AtomicCommittedUnlinkError && existingAgent !== undefined) {
912
+ installed.push({
913
+ path: agentFile,
914
+ original: existingAgent,
915
+ installed: undefined,
916
+ containmentRoot: repositoryRoot,
917
+ parentIdentity: agentParentIdentity,
918
+ });
919
+ }
920
+ throw error;
921
+ }
922
+ }
923
+ else if (rendered && existingAgent !== undefined) {
924
+ await assertFileExpectation(agentFile, expectation(existingAgent, repositoryRoot, agentParentIdentity));
925
+ resolvedAgent = existingAgent;
926
+ }
927
+ let resolvedPreviousAgent = previousAgent;
928
+ if (previousAgentFile !== undefined
929
+ && previousAgent !== undefined
930
+ && previousAgentRemoval?.action === 'updated'
931
+ && previousAgentRemoval.content !== undefined) {
932
+ try {
933
+ const outcome = await dependencies.atomicWriteTextIfUnchanged(previousAgentFile, previousAgentRemoval.content, expectation(previousAgent, repositoryRoot, previousAgentParentIdentity), previousAgent.mode);
934
+ resolvedPreviousAgent = outcome.installed;
935
+ installed.push({
936
+ path: previousAgentFile,
937
+ original: previousAgent,
938
+ installed: outcome.installed,
939
+ containmentRoot: repositoryRoot,
940
+ parentIdentity: previousAgentParentIdentity,
941
+ });
942
+ assertAtomicCleanupComplete(outcome);
943
+ }
944
+ catch (error) {
945
+ if (error instanceof AtomicCommittedMutationError) {
946
+ installed.push({
947
+ path: previousAgentFile,
948
+ original: previousAgent,
949
+ installed: error.outcome.installed,
950
+ containmentRoot: repositoryRoot,
951
+ parentIdentity: previousAgentParentIdentity,
952
+ });
953
+ }
954
+ else if (error instanceof AtomicCommittedUnlinkError) {
955
+ installed.push({
956
+ path: previousAgentFile,
957
+ original: previousAgent,
958
+ installed: undefined,
959
+ containmentRoot: repositoryRoot,
960
+ parentIdentity: previousAgentParentIdentity,
961
+ });
962
+ }
963
+ throw error;
964
+ }
965
+ }
966
+ else if (previousAgentFile !== undefined
967
+ && previousAgent !== undefined
968
+ && previousAgentRemoval?.action === 'deleted') {
969
+ try {
970
+ const outcome = await dependencies.unlinkRegularFileIfUnchanged(previousAgentFile, expectation(previousAgent, repositoryRoot, previousAgentParentIdentity));
971
+ resolvedPreviousAgent = undefined;
972
+ installed.push({
973
+ path: previousAgentFile,
974
+ original: previousAgent,
975
+ installed: undefined,
976
+ containmentRoot: repositoryRoot,
977
+ parentIdentity: previousAgentParentIdentity,
978
+ });
979
+ assertAtomicCleanupComplete(outcome);
980
+ }
981
+ catch (error) {
982
+ if (error instanceof AtomicCommittedUnlinkError) {
983
+ installed.push({
984
+ path: previousAgentFile,
985
+ original: previousAgent,
986
+ installed: undefined,
987
+ containmentRoot: repositoryRoot,
988
+ parentIdentity: previousAgentParentIdentity,
989
+ });
990
+ }
991
+ throw error;
992
+ }
993
+ }
994
+ const finalBinding = (await readSettledBindingSnapshot(bindingFile, repositoryRoot, bindingParentIdentity, dependencies.readBindingFileForConvergence)).snapshot;
995
+ if (resolvedBinding === undefined
996
+ || finalBinding === undefined
997
+ || !sameRegularFileSnapshot(finalBinding, resolvedBinding)) {
998
+ throw new KiokukoError('CONFLICT', 'Repository binding changed before registration', {
999
+ target: bindingFile,
1000
+ });
1001
+ }
1002
+ if (renderedGitignore !== undefined) {
1003
+ await assertFileExpectation(gitignoreFile, expectation(resolvedGitignore, repositoryRoot, bindingParentIdentity));
1004
+ }
1005
+ if (!options.noAgentFile) {
1006
+ await assertFileExpectation(agentFile, expectation(resolvedAgent, repositoryRoot, agentParentIdentity));
1007
+ }
1008
+ else {
1009
+ await assertFileExpectation(agentFile, expectation(plannedAgent, repositoryRoot, agentParentIdentity));
1010
+ }
1011
+ if (previousAgentFile !== undefined) {
1012
+ const finalPreviousAgent = await readStrictSettledTarget(previousAgentFile, repositoryRoot, previousAgentParentIdentity, 'Previous agentFile');
1013
+ if ((resolvedPreviousAgent === undefined) !== (finalPreviousAgent === undefined)
1014
+ || (resolvedPreviousAgent !== undefined
1015
+ && finalPreviousAgent !== undefined
1016
+ && !sameRegularFileSnapshot(resolvedPreviousAgent, finalPreviousAgent))) {
1017
+ throw new KiokukoError('CONFLICT', 'Previous agentFile changed before registration', {
1018
+ target: previousAgentFile,
1019
+ });
1020
+ }
1021
+ }
1022
+ const database = dependencies.openConnection(databasePath);
1023
+ try {
1024
+ dependencies.registerRepositoryAndLocation(database, {
1025
+ repositoryId: identity.repositoryId,
1026
+ workspace: identity.workspace,
1027
+ displayName: identity.displayName,
1028
+ canonicalRoot: repositoryRoot,
1029
+ remoteFingerprint: identity.remoteFingerprint,
1030
+ bindingSchemaVersion: 1,
1031
+ agentTemplateVersion: AGENT_TEMPLATE_VERSION,
1032
+ ...(options.forceRebind && existingBinding !== undefined
1033
+ ? {
1034
+ rebindFrom: {
1035
+ repositoryId: existingBinding.repositoryId,
1036
+ workspace: existingBinding.workspace,
1037
+ },
1038
+ }
1039
+ : {}),
1040
+ });
1041
+ }
1042
+ catch (registrationError) {
1043
+ try {
1044
+ database.close();
1045
+ }
1046
+ catch (closeError) {
1047
+ if (registrationError instanceof TransactionCommitUncertainError) {
1048
+ throw new UncertainRegistrationCloseError(registrationError, closeError);
1049
+ }
1050
+ throw new AggregateError([registrationError, closeError], 'Repository registration failed and closing the database connection also failed');
1051
+ }
1052
+ throw registrationError;
1053
+ }
1054
+ try {
1055
+ database.close();
1056
+ }
1057
+ catch (closeError) {
1058
+ throw new CommittedRegistrationCloseError(closeError);
1059
+ }
1060
+ }
1061
+ catch (error) {
1062
+ if (error instanceof CommittedRegistrationCloseError
1063
+ || error instanceof TransactionCommitUncertainError
1064
+ || error instanceof UncertainRegistrationCloseError) {
1065
+ throw error;
1066
+ }
1067
+ const restorationFailures = await restoreInstalledWrites(installed, dependencies);
1068
+ if (restorationFailures.length > 0) {
1069
+ throw new AggregateError([error, ...restorationFailures], 'Repository setup failed and file restoration also failed');
1070
+ }
1071
+ if (error instanceof ConcurrentUseBinding) {
1072
+ return useRepositoryAttempt({
1073
+ ...options,
1074
+ repositoryId: error.binding.repositoryId,
1075
+ workspace: error.binding.workspace,
1076
+ }, dependencyOverrides, false, true, {
1077
+ repositoryRoot,
1078
+ bindingParentIdentity,
1079
+ agentParentIdentity,
1080
+ agentSnapshot: plannedAgent,
1081
+ });
1082
+ }
1083
+ throw error;
1084
+ }
1085
+ return result;
1086
+ }
1087
+ export async function useRepository(options = {}, dependencyOverrides = {}) {
1088
+ return useRepositoryAttempt(options, dependencyOverrides, true, false);
1089
+ }
1090
+ //# sourceMappingURL=use.js.map