@astrosheep/keiyaku 4.5.28 → 4.6.1

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 (425) hide show
  1. package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku/SKILL.md +0 -13
  2. package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-akuma/SKILL.md +47 -78
  3. package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-akuma/references/automation.md +54 -41
  4. package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-babysit/SKILL.md +10 -0
  5. package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-bind/SKILL.md +27 -9
  6. package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-workflow/SKILL.md +68 -71
  7. package/build/src/akuma/akuma-call.d.ts +53 -0
  8. package/build/src/akuma/akuma-call.js +113 -0
  9. package/build/src/akuma/akuma-instance.d.ts +20 -19
  10. package/build/src/akuma/akuma-instance.js +65 -177
  11. package/build/src/akuma/akuma-observe.d.ts +3 -21
  12. package/build/src/akuma/akuma-observe.js +7 -25
  13. package/build/src/akuma/{akuma-handle.d.ts → akuma-owner.d.ts} +60 -25
  14. package/build/src/akuma/{akuma-handle.js → akuma-owner.js} +43 -29
  15. package/build/src/akuma/akuma-selection-execution.d.ts +51 -0
  16. package/build/src/akuma/akuma-selection-execution.js +134 -0
  17. package/build/src/akuma/{fleet-execution.d.ts → akuma-wait.d.ts} +24 -32
  18. package/build/src/akuma/akuma-wait.js +113 -0
  19. package/build/src/akuma/akuma.d.ts +35 -97
  20. package/build/src/akuma/akuma.js +148 -35
  21. package/build/src/akuma/archetype.d.ts +18 -6
  22. package/build/src/akuma/archetype.js +52 -34
  23. package/build/src/akuma/body.d.ts +79 -61
  24. package/build/src/akuma/body.js +101 -50
  25. package/build/src/akuma/call-initial-tell.d.ts +164 -0
  26. package/build/src/akuma/call-initial-tell.js +62 -0
  27. package/build/src/akuma/call-input.d.ts +0 -3
  28. package/build/src/akuma/call-input.js +0 -7
  29. package/build/src/akuma/call-request.d.ts +247 -38
  30. package/build/src/akuma/call-request.js +77 -92
  31. package/build/src/akuma/coordinate.d.ts +15 -5
  32. package/build/src/akuma/coordinate.js +12 -22
  33. package/build/src/akuma/dispatch-association.d.ts +1 -1
  34. package/build/src/akuma/dispatch-association.js +1 -10
  35. package/build/src/akuma/heart/activity-schema.d.ts +325 -0
  36. package/build/src/akuma/heart/activity-schema.js +53 -0
  37. package/build/src/akuma/heart/facts.d.ts +3 -9
  38. package/build/src/akuma/heart/index.d.ts +3 -1
  39. package/build/src/akuma/heart/index.js +4 -1
  40. package/build/src/akuma/heart/rows.d.ts +49 -2
  41. package/build/src/akuma/heart/rows.js +16 -2
  42. package/build/src/akuma/heart/soul.d.ts +1 -0
  43. package/build/src/akuma/heart/soul.js +7 -10
  44. package/build/src/akuma/heart/tells.d.ts +1 -0
  45. package/build/src/akuma/heart/tells.js +18 -0
  46. package/build/src/akuma/identity.d.ts +10 -7
  47. package/build/src/akuma/identity.js +23 -0
  48. package/build/src/akuma/index.d.ts +10 -8
  49. package/build/src/akuma/index.js +2 -2
  50. package/build/src/akuma/nuke.d.ts +3 -0
  51. package/build/src/akuma/nuke.js +13 -7
  52. package/build/src/akuma/projection-read.js +1 -2
  53. package/build/src/akuma/projection.d.ts +0 -5
  54. package/build/src/akuma/projection.js +22 -43
  55. package/build/src/akuma/provider-recipe.d.ts +58 -23
  56. package/build/src/akuma/provider-recipe.js +62 -103
  57. package/build/src/akuma/provider.d.ts +7 -78
  58. package/build/src/akuma/provider.js +11 -219
  59. package/build/src/akuma/providers/acp/config.d.ts +2 -0
  60. package/build/src/akuma/providers/acp/config.js +26 -1
  61. package/build/src/akuma/providers/acp/core.d.ts +7 -0
  62. package/build/src/akuma/providers/acp/core.js +49 -18
  63. package/build/src/akuma/providers/acp/index.js +14 -17
  64. package/build/src/akuma/providers/claude/index.js +2 -14
  65. package/build/src/akuma/providers/codex-app-server/index.js +0 -22
  66. package/build/src/akuma/providers/grok-build/index.js +44 -24
  67. package/build/src/akuma/providers/index.d.ts +3 -3
  68. package/build/src/akuma/providers/index.js +2 -13
  69. package/build/src/akuma/providers/opencode-sdk/event-stream.d.ts +28 -0
  70. package/build/src/akuma/providers/opencode-sdk/event-stream.js +92 -0
  71. package/build/src/akuma/providers/opencode-sdk/events.d.ts +0 -1
  72. package/build/src/akuma/providers/opencode-sdk/index.js +200 -74
  73. package/build/src/akuma/providers/opencode-sdk/session.d.ts +41 -1
  74. package/build/src/akuma/providers/opencode-sdk/session.js +69 -2
  75. package/build/src/akuma/providers/pi/events.js +5 -2
  76. package/build/src/akuma/providers/pi/index.js +70 -24
  77. package/build/src/akuma/publication.d.ts +84 -3
  78. package/build/src/akuma/publication.js +145 -2
  79. package/build/src/akuma/read-pool.d.ts +2 -0
  80. package/build/src/akuma/read-pool.js +15 -0
  81. package/build/src/akuma/request-rendezvous.js +10 -0
  82. package/build/src/akuma/request-serve.js +7 -0
  83. package/build/src/akuma/request-wire.d.ts +14 -26
  84. package/build/src/akuma/request-wire.js +4 -0
  85. package/build/src/akuma/requests.d.ts +0 -3
  86. package/build/src/akuma/requests.js +0 -24
  87. package/build/src/akuma/{fleet-observation.d.ts → selection-observation.d.ts} +61 -52
  88. package/build/src/akuma/selection-observation.js +65 -0
  89. package/build/src/akuma/{fleet-owner-port.d.ts → selection-owner-port.d.ts} +3 -3
  90. package/build/src/akuma/{fleet-owner-port.js → selection-owner-port.js} +11 -17
  91. package/build/src/akuma/{fleet-request.d.ts → selection-request.d.ts} +42 -82
  92. package/build/src/akuma/{fleet-request.js → selection-request.js} +92 -136
  93. package/build/src/akuma/turn-drive.d.ts +3 -0
  94. package/build/src/akuma/turn-drive.js +75 -16
  95. package/build/src/akuma-body.js +91 -56
  96. package/build/src/body/amend.d.ts +5 -0
  97. package/build/src/body/amend.js +26 -50
  98. package/build/src/body/arc.d.ts +4 -2
  99. package/build/src/body/arc.js +19 -26
  100. package/build/src/body/criteria.d.ts +6 -0
  101. package/build/src/body/criteria.js +37 -0
  102. package/build/src/body/decode.js +5 -42
  103. package/build/src/body/region.d.ts +5 -0
  104. package/build/src/body/region.js +45 -2
  105. package/build/src/body/render.js +2 -4
  106. package/build/src/cli/activity.d.ts +26 -0
  107. package/build/src/cli/activity.js +75 -0
  108. package/build/src/cli/actor.d.ts +3 -1
  109. package/build/src/cli/actor.js +15 -2
  110. package/build/src/cli/commands/akuma-grammar.d.ts +75 -0
  111. package/build/src/cli/commands/akuma-grammar.js +414 -0
  112. package/build/src/cli/commands/akuma.d.ts +5 -69
  113. package/build/src/cli/commands/akuma.js +352 -312
  114. package/build/src/cli/commands/amend.d.ts +4 -5
  115. package/build/src/cli/commands/amend.js +1 -2
  116. package/build/src/cli/commands/bind.d.ts +4 -5
  117. package/build/src/cli/commands/bind.js +5 -9
  118. package/build/src/cli/commands/contract-grammar.d.ts +112 -0
  119. package/build/src/cli/commands/contract-grammar.js +282 -0
  120. package/build/src/cli/commands/contract-help.d.ts +28 -30
  121. package/build/src/cli/commands/contract-help.js +69 -96
  122. package/build/src/cli/commands/contract.d.ts +18 -97
  123. package/build/src/cli/commands/contract.js +620 -237
  124. package/build/src/cli/commands/install.d.ts +1 -1
  125. package/build/src/cli/commands/install.js +2 -2
  126. package/build/src/cli/commands/task-grammar.d.ts +19 -0
  127. package/build/src/cli/commands/task-grammar.js +438 -0
  128. package/build/src/cli/commands/task-query.js +23 -104
  129. package/build/src/cli/commands/task.d.ts +5 -20
  130. package/build/src/cli/commands/task.js +415 -333
  131. package/build/src/cli/coordinates.d.ts +10 -0
  132. package/build/src/cli/coordinates.js +20 -0
  133. package/build/src/cli/draft.d.ts +7 -1
  134. package/build/src/cli/main.js +10 -1
  135. package/build/src/cli/parse.d.ts +8 -9
  136. package/build/src/cli/parse.js +63 -61
  137. package/build/src/cli/render/akuma-activity.d.ts +88 -39
  138. package/build/src/cli/render/akuma-activity.js +465 -263
  139. package/build/src/cli/render/akuma-tool.d.ts +15 -5
  140. package/build/src/cli/render/akuma-tool.js +40 -27
  141. package/build/src/cli/render/akuma.d.ts +40 -24
  142. package/build/src/cli/render/akuma.js +108 -205
  143. package/build/src/cli/render/audit.d.ts +6 -2
  144. package/build/src/cli/render/audit.js +61 -30
  145. package/build/src/cli/render/catalog.d.ts +11 -2
  146. package/build/src/cli/render/catalog.js +75 -94
  147. package/build/src/cli/render/contract-history.d.ts +3 -1
  148. package/build/src/cli/render/contract-history.js +215 -22
  149. package/build/src/cli/render/contract-observation.d.ts +10 -5
  150. package/build/src/cli/render/contract-observation.js +29 -46
  151. package/build/src/cli/render/contract.d.ts +10 -3
  152. package/build/src/cli/render/contract.js +255 -106
  153. package/build/src/cli/render/effects.d.ts +26 -0
  154. package/build/src/cli/render/effects.js +41 -0
  155. package/build/src/cli/render/execution-progress.d.ts +18 -6
  156. package/build/src/cli/render/execution-progress.js +34 -31
  157. package/build/src/cli/render/kanshi-akuma.d.ts +1 -2
  158. package/build/src/cli/render/kanshi-akuma.js +5 -26
  159. package/build/src/cli/render/kanshi.js +108 -129
  160. package/build/src/cli/render/marks.d.ts +13 -0
  161. package/build/src/cli/render/marks.js +74 -0
  162. package/build/src/cli/render/nuke.js +18 -7
  163. package/build/src/cli/render/receipt.d.ts +10 -4
  164. package/build/src/cli/render/receipt.js +126 -46
  165. package/build/src/cli/render/reconcile.d.ts +5 -0
  166. package/build/src/cli/render/reconcile.js +152 -0
  167. package/build/src/cli/render/refusal.d.ts +21 -4
  168. package/build/src/cli/render/refusal.js +61 -34
  169. package/build/src/cli/render/region.js +3 -2
  170. package/build/src/cli/render/settings.js +4 -14
  171. package/build/src/cli/render/task.d.ts +37 -6
  172. package/build/src/cli/render/task.js +162 -158
  173. package/build/src/cli/render/terminal.d.ts +25 -1
  174. package/build/src/cli/render/terminal.js +105 -18
  175. package/build/src/cli/runtime.d.ts +32 -8
  176. package/build/src/cli/runtime.js +161 -163
  177. package/build/src/cli/selectors.d.ts +5 -2
  178. package/build/src/cli/selectors.js +11 -3
  179. package/build/src/cli/streams.d.ts +11 -0
  180. package/build/src/cli/streams.js +32 -0
  181. package/build/src/cli/usage.d.ts +2 -0
  182. package/build/src/cli/usage.js +12 -8
  183. package/build/src/contract-guidance.js +3 -7
  184. package/build/src/contract-worktree.d.ts +20 -28
  185. package/build/src/contract-worktree.js +18 -70
  186. package/build/src/coordination/durable-file.d.ts +2 -2
  187. package/build/src/coordination/durable-file.js +0 -27
  188. package/build/src/core/facts/codec.d.ts +1 -2
  189. package/build/src/core/facts/codec.js +6 -7
  190. package/build/src/core/facts/gate.d.ts +0 -1
  191. package/build/src/core/facts/gate.js +0 -82
  192. package/build/src/core/facts/types.d.ts +1 -2
  193. package/build/src/core/verbs/abandon.d.ts +2 -6
  194. package/build/src/core/verbs/abandon.js +0 -16
  195. package/build/src/core/verbs/amend.d.ts +0 -1
  196. package/build/src/core/verbs/amend.js +0 -20
  197. package/build/src/core/verbs/arc.d.ts +7 -8
  198. package/build/src/core/verbs/arc.js +2 -19
  199. package/build/src/core/verbs/attestation.d.ts +2 -6
  200. package/build/src/core/verbs/attestation.js +0 -16
  201. package/build/src/core/verbs/bind.d.ts +0 -1
  202. package/build/src/core/verbs/bind.js +0 -16
  203. package/build/src/core/verbs/deliver.d.ts +0 -1
  204. package/build/src/core/verbs/deliver.js +0 -16
  205. package/build/src/core/verbs/placement.d.ts +2 -1
  206. package/build/src/core/verbs/placement.js +10 -59
  207. package/build/src/git/admission.d.ts +6 -4
  208. package/build/src/git/admission.js +4 -0
  209. package/build/src/git/hooks.d.ts +55 -30
  210. package/build/src/git/hooks.js +30 -3
  211. package/build/src/git/identity.d.ts +6 -0
  212. package/build/src/git/identity.js +47 -0
  213. package/build/src/git/integration.d.ts +31 -13
  214. package/build/src/git/integration.js +32 -1
  215. package/build/src/git/nuke.d.ts +10 -1
  216. package/build/src/git/nuke.js +31 -11
  217. package/build/src/git/observe.js +2 -15
  218. package/build/src/git/private-state-seat.d.ts +6 -7
  219. package/build/src/git/private-state-seat.js +8 -6
  220. package/build/src/git/read-observation.d.ts +6 -1
  221. package/build/src/git/read-observation.js +81 -46
  222. package/build/src/git/reconcile.d.ts +117 -40
  223. package/build/src/git/reconcile.js +169 -40
  224. package/build/src/git/scratch.d.ts +7 -4
  225. package/build/src/git/scratch.js +28 -6
  226. package/build/src/git/target-placement.d.ts +53 -38
  227. package/build/src/git/target-placement.js +69 -54
  228. package/build/src/git/tender.d.ts +37 -28
  229. package/build/src/git/tender.js +39 -0
  230. package/build/src/git/terminal-reconcile.js +21 -23
  231. package/build/src/git/terminal-seal.d.ts +8 -6
  232. package/build/src/git/terminal-seal.js +10 -0
  233. package/build/src/git/workspace.d.ts +29 -15
  234. package/build/src/git/workspace.js +28 -2
  235. package/build/src/identity/normalize.js +19 -6
  236. package/build/src/index.d.ts +78 -6
  237. package/build/src/index.js +52 -3
  238. package/build/src/kanshi/read.d.ts +3 -3
  239. package/build/src/kanshi/read.js +21 -21
  240. package/build/src/kanshi/report.d.ts +9 -8
  241. package/build/src/kanshi/roster.d.ts +2 -0
  242. package/build/src/kanshi/roster.js +2 -0
  243. package/build/src/kanshi/select.js +7 -3
  244. package/build/src/library/address.d.ts +3 -7
  245. package/build/src/library/address.js +7 -7
  246. package/build/src/library/akuma-creation.d.ts +35 -33
  247. package/build/src/library/akuma-creation.js +184 -167
  248. package/build/src/library/akumas.d.ts +40 -0
  249. package/build/src/library/akumas.js +84 -0
  250. package/build/src/library/bind.d.ts +107 -13
  251. package/build/src/library/bind.js +29 -23
  252. package/build/src/library/continuation.d.ts +556 -28
  253. package/build/src/library/continuation.js +29 -54
  254. package/build/src/library/contract-composition.d.ts +40 -0
  255. package/build/src/library/contract-composition.js +105 -0
  256. package/build/src/library/contract-creation.d.ts +7 -0
  257. package/build/src/library/contract-creation.js +192 -0
  258. package/build/src/library/contract-execution.d.ts +29 -40
  259. package/build/src/library/contract-execution.js +503 -128
  260. package/build/src/library/contract-operations.d.ts +275 -134
  261. package/build/src/library/contract-operations.js +83 -92
  262. package/build/src/library/contract-outcomes.d.ts +71 -0
  263. package/build/src/library/contract-outcomes.js +32 -0
  264. package/build/src/library/contract-settings.d.ts +25 -0
  265. package/build/src/library/contract-settings.js +135 -0
  266. package/build/src/library/contract-types.d.ts +24 -38
  267. package/build/src/library/delivery.d.ts +530 -10
  268. package/build/src/library/delivery.js +20 -45
  269. package/build/src/library/input.d.ts +3 -1
  270. package/build/src/library/input.js +11 -16
  271. package/build/src/library/invocation.d.ts +87 -0
  272. package/build/src/library/invocation.js +290 -0
  273. package/build/src/library/keiyaku.d.ts +44 -437
  274. package/build/src/library/keiyaku.js +132 -20
  275. package/build/src/library/nuke.d.ts +2 -11
  276. package/build/src/library/nuke.js +70 -57
  277. package/build/src/library/outcome.d.ts +13196 -0
  278. package/build/src/library/outcome.js +487 -0
  279. package/build/src/library/reconcile.d.ts +96 -24
  280. package/build/src/library/reconcile.js +102 -42
  281. package/build/src/library/refusal.d.ts +470 -42
  282. package/build/src/library/refusal.js +55 -143
  283. package/build/src/library/region.d.ts +15 -7
  284. package/build/src/library/region.js +23 -3
  285. package/build/src/library/repo.d.ts +2 -12
  286. package/build/src/library/repo.js +1 -22
  287. package/build/src/library/selection.d.ts +121 -0
  288. package/build/src/library/{fleet.js → selection.js} +177 -160
  289. package/build/src/plugin/public.d.ts +2 -0
  290. package/build/src/protocol/abandon.d.ts +2 -2
  291. package/build/src/protocol/abandon.js +1 -0
  292. package/build/src/protocol/amend.js +1 -0
  293. package/build/src/protocol/arc.d.ts +6 -4
  294. package/build/src/protocol/attempt.d.ts +4 -2
  295. package/build/src/protocol/attempt.js +10 -0
  296. package/build/src/protocol/audit.d.ts +255 -52
  297. package/build/src/protocol/audit.js +63 -5
  298. package/build/src/protocol/bind.d.ts +18 -17
  299. package/build/src/protocol/bind.js +9 -28
  300. package/build/src/protocol/completion.d.ts +256 -22
  301. package/build/src/protocol/completion.js +100 -12
  302. package/build/src/protocol/deliver.d.ts +34 -23
  303. package/build/src/protocol/deliver.js +39 -25
  304. package/build/src/protocol/execution-observation.d.ts +36 -37
  305. package/build/src/protocol/execution-observation.js +7 -9
  306. package/build/src/protocol/intent.d.ts +101 -30
  307. package/build/src/protocol/intent.js +74 -1
  308. package/build/src/protocol/operations.d.ts +570 -64
  309. package/build/src/protocol/operations.js +189 -9
  310. package/build/src/protocol/outcome.d.ts +2 -1
  311. package/build/src/protocol/placement.d.ts +2 -2
  312. package/build/src/protocol/placement.js +3 -1
  313. package/build/src/protocol/progress.d.ts +108 -65
  314. package/build/src/protocol/progress.js +82 -132
  315. package/build/src/protocol/read/status.d.ts +4 -3
  316. package/build/src/protocol/read/status.js +6 -5
  317. package/build/src/protocol/reconcile.d.ts +3 -3
  318. package/build/src/protocol/reconcile.js +4 -0
  319. package/build/src/protocol/reintegrate.d.ts +2 -2
  320. package/build/src/protocol/review.d.ts +30 -12
  321. package/build/src/protocol/review.js +15 -24
  322. package/build/src/protocol/run.d.ts +34 -5
  323. package/build/src/protocol/run.js +24 -12
  324. package/build/src/runtime/proc/windows-launch.exe +0 -0
  325. package/build/src/settings.d.ts +0 -10
  326. package/build/src/settings.js +0 -76
  327. package/build/src/settlement/holder.d.ts +1 -1
  328. package/build/src/settlement/settle.d.ts +25 -16
  329. package/build/src/settlement/settle.js +80 -20
  330. package/build/src/task/board.d.ts +3 -1
  331. package/build/src/task/board.js +13 -17
  332. package/build/src/task/catalog.d.ts +0 -4
  333. package/build/src/task/catalog.js +0 -15
  334. package/build/src/task/compose-language.d.ts +19 -9
  335. package/build/src/task/compose-language.js +30 -20
  336. package/build/src/task/compose.d.ts +7 -37
  337. package/build/src/task/compose.js +20 -2
  338. package/build/src/task/created-observation.d.ts +0 -1
  339. package/build/src/task/created-observation.js +1 -4
  340. package/build/src/task/document.d.ts +12 -2
  341. package/build/src/task/document.js +4 -0
  342. package/build/src/task/identity.d.ts +4 -1
  343. package/build/src/task/identity.js +21 -17
  344. package/build/src/task/index.d.ts +36 -16
  345. package/build/src/task/index.js +103 -96
  346. package/build/src/task/lifecycle-operations.d.ts +1 -1
  347. package/build/src/task/mutation-result.d.ts +647 -586
  348. package/build/src/task/mutation-result.js +79 -46
  349. package/build/src/task/mutation.d.ts +298 -270
  350. package/build/src/task/mutation.js +93 -110
  351. package/build/src/task/operation-types.d.ts +6 -49
  352. package/build/src/task/operations.d.ts +2 -1
  353. package/build/src/task/operations.js +35 -12
  354. package/build/src/task/query.d.ts +9 -3
  355. package/build/src/task/query.js +42 -16
  356. package/build/src/task/store.d.ts +2 -1
  357. package/build/src/task/store.js +10 -14
  358. package/build/src/verification/declaration.d.ts +0 -1
  359. package/build/src/verification/declaration.js +1 -18
  360. package/build/src/verification/execution.d.ts +6 -2
  361. package/build/src/verification/observation.d.ts +1 -1
  362. package/package.json +2 -14
  363. package/build/src/akuma/akuma-product-symbols.d.ts +0 -1
  364. package/build/src/akuma/akuma-product-symbols.js +0 -1
  365. package/build/src/akuma/akuma-product.d.ts +0 -62
  366. package/build/src/akuma/akuma-product.js +0 -293
  367. package/build/src/akuma/fleet-execution.js +0 -181
  368. package/build/src/akuma/fleet-observation.js +0 -91
  369. package/build/src/cli/accepted.d.ts +0 -24
  370. package/build/src/cli/accepted.js +0 -167
  371. package/build/src/cli/commands/akuma-invoke.d.ts +0 -114
  372. package/build/src/cli/commands/akuma-invoke.js +0 -402
  373. package/build/src/cli/commands/contract-invoke.d.ts +0 -34
  374. package/build/src/cli/commands/contract-invoke.js +0 -259
  375. package/build/src/cli/commands/nuke.d.ts +0 -10
  376. package/build/src/cli/commands/nuke.js +0 -20
  377. package/build/src/cli/commands/status-set.d.ts +0 -4
  378. package/build/src/cli/commands/status-set.js +0 -52
  379. package/build/src/cli/commands/task-invoke.d.ts +0 -49
  380. package/build/src/cli/commands/task-invoke.js +0 -306
  381. package/build/src/cli/invoke.d.ts +0 -27
  382. package/build/src/cli/invoke.js +0 -484
  383. package/build/src/cli/render/board.d.ts +0 -3
  384. package/build/src/cli/render/board.js +0 -25
  385. package/build/src/cli/render/status-set.d.ts +0 -5
  386. package/build/src/cli/render/status-set.js +0 -19
  387. package/build/src/cli/render/text.d.ts +0 -3
  388. package/build/src/cli/render/text.js +0 -33
  389. package/build/src/cli/result.d.ts +0 -240
  390. package/build/src/cli/result.js +0 -1
  391. package/build/src/git/result-codec.d.ts +0 -29
  392. package/build/src/git/result-codec.js +0 -309
  393. package/build/src/kanshi/fleet.d.ts +0 -6
  394. package/build/src/kanshi/fleet.js +0 -27
  395. package/build/src/library/audit.d.ts +0 -29
  396. package/build/src/library/audit.js +0 -41
  397. package/build/src/library/catalog.d.ts +0 -68
  398. package/build/src/library/catalog.js +0 -130
  399. package/build/src/library/composition.d.ts +0 -403
  400. package/build/src/library/composition.js +0 -29
  401. package/build/src/library/configuration.d.ts +0 -4
  402. package/build/src/library/configuration.js +0 -2
  403. package/build/src/library/contract-bind.d.ts +0 -31
  404. package/build/src/library/contract-bind.js +0 -140
  405. package/build/src/library/contract-forwarding.d.ts +0 -55
  406. package/build/src/library/contract-forwarding.js +0 -67
  407. package/build/src/library/contract-handle.d.ts +0 -45
  408. package/build/src/library/contract-handle.js +0 -373
  409. package/build/src/library/contract.d.ts +0 -53
  410. package/build/src/library/contract.js +0 -91
  411. package/build/src/library/execution-result.d.ts +0 -243
  412. package/build/src/library/execution-result.js +0 -101
  413. package/build/src/library/execution.d.ts +0 -8
  414. package/build/src/library/execution.js +0 -102
  415. package/build/src/library/fleet.d.ts +0 -83
  416. package/build/src/library/mutation.d.ts +0 -501
  417. package/build/src/library/mutation.js +0 -248
  418. package/build/src/library/result-codec.d.ts +0 -2
  419. package/build/src/library/result-codec.js +0 -12
  420. package/build/src/protocol/result-codec.d.ts +0 -23
  421. package/build/src/protocol/result-codec.js +0 -488
  422. package/build/src/settlement/result-codec.d.ts +0 -2
  423. package/build/src/settlement/result-codec.js +0 -56
  424. package/build/src/task/public.d.ts +0 -2
  425. package/build/src/task/public.js +0 -1
@@ -1,17 +1,9 @@
1
- import { type AkumaLife, type KillEvidence, type ResumeCoordinate } from "./heart/index.js";
2
- export type { KillEvidence };
3
- import { type AkuId } from "./identity.js";
4
- import type { Settings } from "../settings.js";
5
- import type { WorldRoot } from "../world.js";
6
- import { type AllowedAction } from "./allowed.js";
7
- import type { ExecutionContext } from "./requests.js";
8
1
  import { z } from "zod";
9
- import type { BoundedList } from "../bounded-list.js";
10
- import type { Schema } from "./schema.js";
11
- import { killAkumaWithRecovery } from "./akuma-handle.js";
12
- import type { TellResult } from "./body.js";
13
- export { killAkumaWithRecovery };
14
- export declare const POLL_MS = 100;
2
+ import { type BoundedList } from "../bounded-list.js";
3
+ import type { AkumaAlias } from "../identity/selector.js";
4
+ import type { WorldRoot } from "../world.js";
5
+ import type { AkumaLife } from "./heart/index.js";
6
+ import { type AkuId } from "./identity.js";
15
7
  export type AkumaListRow = Readonly<{
16
8
  id: AkuId;
17
9
  archetype: string;
@@ -20,8 +12,26 @@ export type AkumaListRow = Readonly<{
20
12
  lifeAt: string | null;
21
13
  lastActivityAt: string | null;
22
14
  pending: readonly string[];
15
+ aliases: readonly AkumaAlias[];
16
+ }>;
17
+ export type UnbornAkumaListRow = Readonly<{
18
+ id: AkuId;
19
+ life: "unborn" | "stillborn";
20
+ aliases: readonly AkumaAlias[];
21
+ seal?: Readonly<{
22
+ evidence: string;
23
+ at: string;
24
+ }>;
25
+ }>;
26
+ export type AkumaList = BoundedList<AkumaListRow | UnbornAkumaListRow> & Readonly<{
27
+ observedAt: string;
28
+ searched: readonly string[];
29
+ }>;
30
+ export type AkumaCompleteList = Omit<AkumaList, "hasMore">;
31
+ export type AkumaListInput = Readonly<{
32
+ archetype?: string;
33
+ limit?: number;
23
34
  }>;
24
- export declare const akumaIdSchema: z.ZodPipe<z.ZodString, z.ZodTransform<AkuId, string>>;
25
35
  export declare const akumaStatusSchema: z.ZodObject<{
26
36
  id: z.ZodPipe<z.ZodString, z.ZodTransform<AkuId, string>>;
27
37
  life: z.ZodEnum<{
@@ -51,12 +61,6 @@ export declare const akumaStatusSchema: z.ZodObject<{
51
61
  "contract.deliver": "contract.deliver";
52
62
  "contract.review": "contract.review";
53
63
  }>>, z.ZodTransform<import("./allowed.js").AllowedActions, ("task.add" | "task.addDocument" | "task.compose" | "task.done" | "task.drop" | "task.hold" | "task.resume" | "task.start" | "task.stop" | "task.update" | "akuma.call" | "akuma.kill" | "akuma.tell" | "contract.audit" | "contract.deliver" | "contract.review")[]>>;
54
- readonly: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
55
- enforcement: z.ZodLiteral<"native">;
56
- }, z.core.$strict>, z.ZodObject<{
57
- enforcement: z.ZodLiteral<"none">;
58
- diagnostic: z.ZodString;
59
- }, z.core.$strict>]>>;
60
64
  timeline: z.ZodUnion<readonly [z.ZodObject<{
61
65
  reportedChanges: z.ZodReadonly<z.ZodArray<z.ZodObject<{
62
66
  sequence: z.ZodNumber;
@@ -220,7 +224,6 @@ export declare const akumaStatusSchema: z.ZodObject<{
220
224
  sequence: z.ZodNumber;
221
225
  turnSequence: z.ZodNumber;
222
226
  at: z.ZodString;
223
- completedAt: z.ZodOptional<z.ZodString>;
224
227
  durationMs: z.ZodOptional<z.ZodNumber>;
225
228
  name: z.ZodString;
226
229
  call: z.ZodUnion<readonly [z.ZodObject<{
@@ -379,7 +382,6 @@ export declare const akumaStatusSchema: z.ZodObject<{
379
382
  sequence: z.ZodNumber;
380
383
  turnSequence: z.ZodNumber;
381
384
  at: z.ZodString;
382
- completedAt: z.ZodOptional<z.ZodString>;
383
385
  durationMs: z.ZodOptional<z.ZodNumber>;
384
386
  name: z.ZodString;
385
387
  call: z.ZodUnion<readonly [z.ZodObject<{
@@ -440,81 +442,17 @@ export declare const akumaStatusSchema: z.ZodObject<{
440
442
  }, z.core.$strict>;
441
443
  export type AkumaStatus = z.infer<typeof akumaStatusSchema>;
442
444
  export declare function parseAkumaStatus(value: unknown): AkumaStatus;
443
- export { defaultWaitComplete } from "./akuma-observe.js";
444
- export { withoutReportedChanges } from "./projection.js";
445
- export type { ReadonlyRestraint } from "./provider-recipe.js";
446
- export type * from "./projection.js";
447
- export type UnbornAkumaListRow = Readonly<{
448
- id: AkuId;
449
- life: "unborn" | "stillborn";
450
- seal?: Readonly<{
451
- evidence: string;
452
- at: string;
453
- }>;
454
- }>;
455
- export type AkumaList = BoundedList<AkumaListRow | UnbornAkumaListRow> & Readonly<{
456
- observedAt: string;
457
- searched: readonly string[];
458
- }>;
459
- export type AkumaCompleteList = Omit<AkumaList, "hasMore">;
460
- export type AkumaListInput = Readonly<{
461
- archetype?: string;
462
- limit?: number;
463
- }>;
464
- export type AkumaCallExecution = Readonly<{
465
- cwd: string;
466
- source: "input" | "caller" | "process" | "world";
467
- }>;
468
- export type AkumaCallInput = Readonly<{
469
- archetype: string;
470
- body: string;
471
- cwd?: string;
472
- readonly?: true;
473
- allowed?: readonly AllowedAction[];
474
- schema?: Schema<unknown>;
475
- initiator?: string;
476
- signal?: AbortSignal;
477
- }>;
478
- export type AkumaCallContext = Readonly<{
479
- initiatorCwd?: string;
480
- cwdCanonical?: true;
481
- }>;
482
- export type { TellResult, TellWake } from "./body.js";
483
- export type InterruptReceipt = Readonly<{
484
- kind: "unavailable";
485
- evidence: "hung" | "untidy" | "unavailable";
486
- }> | Readonly<{
487
- kind: "interrupted";
488
- putDown: "was-idle" | "self-aborted";
489
- tell: TellResult;
490
- }>;
491
- export type ForkReceipt = Readonly<{
492
- kind: "forked";
493
- child: AkuId;
494
- }> | Readonly<{
495
- kind: "provider-cannot-fork";
496
- provider: string;
497
- }> | Readonly<{
498
- kind: "unknown-history";
499
- at: string;
500
- }> | Readonly<{
501
- kind: "fork-failed";
502
- diagnostic: string;
503
- }> | Readonly<{
504
- kind: "upstream-forked";
505
- childSession: ResumeCoordinate;
506
- diagnostic: string;
507
- }>;
508
- export { AkumaNotBornError } from "./akuma-errors.js";
509
- export declare function wait(milliseconds: number): Promise<void>;
510
- export { bornStatus, fleetListRow, readAkumaBirthCwd, readBudgetedStatus, type BudgetedStatusObservation, } from "./akuma-observe.js";
511
- export type AkumaConfiguration = Readonly<{
445
+ export declare function listAkumaArchetypes(path: WorldRoot, input?: Readonly<{
512
446
  home?: string;
513
- settings?: Settings;
514
- execution?: ExecutionContext;
515
- }>;
516
- /** Internal catalog observation for composition owners. */
517
- export declare function readAkumaCatalog(path: WorldRoot, input?: AkumaListInput): Promise<AkumaList>;
447
+ }>): Promise<readonly string[]>;
448
+ /**
449
+ * The bounded recent-activity roster: native membership, semantic order and
450
+ * observed extent. World Alias context is attached by the upper composition.
451
+ */
452
+ export declare function readAkumaRoster(path: WorldRoot, input?: AkumaListInput): Promise<AkumaList>;
453
+ /** The complete native roster for callers whose semantics require a frozen set. */
454
+ export declare function readAkumaCompleteRoster(path: WorldRoot, input?: Readonly<{
455
+ archetype?: string;
456
+ }>): Promise<AkumaCompleteList>;
518
457
  /** Internal timeline observation for composition owners. */
519
458
  export declare function readAkumaTimeline(path: WorldRoot, id: AkuId): Promise<AkumaStatus["timeline"]>;
520
- export { AkumaBusyError, AkumaDecodeError, AkumaProviderError } from "./akuma-errors.js";
@@ -1,34 +1,19 @@
1
- import { parseAkuId } from "./identity.js";
2
- import { activitySnapshotSchema } from "./projection.js";
3
- import { allowedActionsSchema } from "./allowed.js";
1
+ import { readdir, stat } from "node:fs/promises";
4
2
  import { z } from "zod";
5
- import { createAkumaProduct } from "./akuma-product.js";
6
- import { killAkumaWithRecovery } from "./akuma-handle.js";
7
- export { killAkumaWithRecovery };
8
- export const POLL_MS = 100;
9
- export const akumaIdSchema = z.string().transform((value, context) => {
10
- try {
11
- const id = parseAkuId(value).id;
12
- if (id !== value)
13
- throw new Error("not canonical");
14
- return id;
15
- }
16
- catch {
17
- context.addIssue({ code: "custom", message: "expected canonical AkuId" });
18
- return z.NEVER;
19
- }
20
- });
21
- const readonlySchema = z.union([
22
- z.object({ enforcement: z.literal("native") }).strict(),
23
- z.object({ enforcement: z.literal("none"), diagnostic: z.string().refine((value) => value.trim() !== "") }).strict(),
24
- ]);
3
+ import { boundedListLimit, projectBoundedList } from "../bounded-list.js";
4
+ import { rosterListRow } from "./akuma-observe.js";
5
+ import { AkumaOwner } from "./akuma-owner.js";
6
+ import { allowedActionsSchema } from "./allowed.js";
7
+ import { listArchetypes as readArchetypes } from "./archetype.js";
8
+ import { akuIdFromDirectoryName, akumaIdSchema, akumaPaths, akumaRunRoot, archetypeName, } from "./identity.js";
9
+ import { activitySnapshotSchema } from "./projection.js";
10
+ import { PAGE_POOL_SIZE, boundedMap } from "./read-pool.js";
25
11
  export const akumaStatusSchema = z
26
12
  .object({
27
13
  id: akumaIdSchema,
28
14
  life: z.enum(["running", "asleep", "stranded", "hung", "untidy", "killed"]),
29
15
  cwd: z.string().optional(),
30
16
  allowed: allowedActionsSchema,
31
- readonly: readonlySchema.optional(),
32
17
  timeline: activitySnapshotSchema,
33
18
  strandedReason: z.literal("resume-unsupported").optional(),
34
19
  })
@@ -36,19 +21,147 @@ export const akumaStatusSchema = z
36
21
  export function parseAkumaStatus(value) {
37
22
  return akumaStatusSchema.parse(value);
38
23
  }
39
- export { defaultWaitComplete } from "./akuma-observe.js";
40
- export { withoutReportedChanges } from "./projection.js";
41
- export { AkumaNotBornError } from "./akuma-errors.js";
42
- export function wait(milliseconds) {
43
- return new Promise((resolve) => setTimeout(resolve, milliseconds));
24
+ export async function listAkumaArchetypes(path, input = {}) {
25
+ return readArchetypes({ project: path, ...(input.home === undefined ? {} : { home: input.home }) });
26
+ }
27
+ function activityAt(row) {
28
+ if (!("lifeAt" in row))
29
+ return null;
30
+ if (row.lifeAt === null)
31
+ return row.lastActivityAt;
32
+ if (row.lastActivityAt === null)
33
+ return row.lifeAt;
34
+ return row.lifeAt > row.lastActivityAt ? row.lifeAt : row.lastActivityAt;
35
+ }
36
+ function compareActivity(left, right) {
37
+ if (left === right)
38
+ return 0;
39
+ if (left === null)
40
+ return 1;
41
+ if (right === null)
42
+ return -1;
43
+ return left > right ? -1 : 1;
44
+ }
45
+ function compareRows(left, right) {
46
+ const activity = compareActivity(activityAt(left), activityAt(right));
47
+ if (activity !== 0)
48
+ return activity;
49
+ return left.id < right.id ? -1 : left.id > right.id ? 1 : 0;
50
+ }
51
+ async function mtimeBound(paths) {
52
+ const read = async (path) => {
53
+ try {
54
+ return (await stat(path)).mtimeMs;
55
+ }
56
+ catch (error) {
57
+ return error.code === "ENOENT" ? 0 : Number.POSITIVE_INFINITY;
58
+ }
59
+ };
60
+ return Math.max(await read(paths.heart), await read(`${paths.heart}-wal`));
61
+ }
62
+ async function knownAkuma(path, selected) {
63
+ const runRoot = akumaRunRoot(path);
64
+ let names;
65
+ try {
66
+ names = (await readdir(runRoot, { withFileTypes: true }))
67
+ .filter((entry) => entry.isDirectory())
68
+ .map((entry) => entry.name)
69
+ .sort();
70
+ }
71
+ catch (error) {
72
+ if (error.code === "ENOENT")
73
+ return { runRoot, rows: [] };
74
+ throw error;
75
+ }
76
+ const rows = [];
77
+ for (const name of names) {
78
+ let physical;
79
+ try {
80
+ physical = akuIdFromDirectoryName(name);
81
+ }
82
+ catch {
83
+ continue;
84
+ }
85
+ if (selected !== undefined && physical.archetype !== selected)
86
+ continue;
87
+ rows.push({
88
+ id: physical.id,
89
+ paths: akumaPaths({ runRoot, archetype: physical.archetype, suffix: physical.suffix }),
90
+ });
91
+ }
92
+ return { runRoot, rows };
93
+ }
94
+ async function readableRows(rows) {
95
+ const loaded = await boundedMap(rows, async ({ id, paths }) => {
96
+ try {
97
+ return await rosterListRow(paths, id);
98
+ }
99
+ catch {
100
+ return null;
101
+ }
102
+ });
103
+ return [...loaded].filter((row) => row !== null);
104
+ }
105
+ function rosterArchetype(input, allowLimit) {
106
+ if (typeof input !== "object" || input === null || Array.isArray(input))
107
+ throw new TypeError("Akuma list input must be an object");
108
+ const allowed = allowLimit ? ["archetype", "limit"] : ["archetype"];
109
+ const unknown = Object.keys(input).find((key) => !allowed.includes(key));
110
+ if (unknown !== undefined)
111
+ throw new TypeError(`Akuma list input has unknown field: ${unknown}`);
112
+ return input.archetype === undefined ? undefined : archetypeName(input.archetype);
113
+ }
114
+ /**
115
+ * The bounded recent-activity roster: native membership, semantic order and
116
+ * observed extent. World Alias context is attached by the upper composition.
117
+ */
118
+ export async function readAkumaRoster(path, input = {}) {
119
+ const selected = rosterArchetype(input, true);
120
+ const limit = boundedListLimit(input.limit);
121
+ const observedAt = new Date().toISOString();
122
+ const known = await knownAkuma(path, selected);
123
+ const candidatesWithBounds = await boundedMap(known.rows, async (row) => ({
124
+ ...row,
125
+ bound: await mtimeBound(row.paths),
126
+ }));
127
+ const candidates = [...candidatesWithBounds].sort((left, right) => right.bound - left.bound);
128
+ const readable = [];
129
+ let cursor = 0;
130
+ while (cursor < candidates.length) {
131
+ const batch = candidates.slice(cursor, cursor + PAGE_POOL_SIZE);
132
+ readable.push(...(await readableRows(batch)));
133
+ cursor += batch.length;
134
+ const ranked = readable.sort(compareRows);
135
+ const lookahead = ranked[limit];
136
+ const activity = lookahead === undefined ? null : activityAt(lookahead);
137
+ const unreadBound = candidates[cursor]?.bound;
138
+ if (lookahead !== undefined &&
139
+ activity !== null &&
140
+ unreadBound !== undefined &&
141
+ Number.isFinite(unreadBound) &&
142
+ Number.isFinite(Date.parse(activity)) &&
143
+ unreadBound < Date.parse(activity)) {
144
+ break;
145
+ }
146
+ }
147
+ const ranked = readable.sort(compareRows);
148
+ return {
149
+ observedAt,
150
+ searched: [known.runRoot],
151
+ ...projectBoundedList(ranked, limit),
152
+ };
44
153
  }
45
- export { bornStatus, fleetListRow, readAkumaBirthCwd, readBudgetedStatus, } from "./akuma-observe.js";
46
- /** Internal catalog observation for composition owners. */
47
- export async function readAkumaCatalog(path, input = {}) {
48
- return await createAkumaProduct(path).list(input);
154
+ /** The complete native roster for callers whose semantics require a frozen set. */
155
+ export async function readAkumaCompleteRoster(path, input = {}) {
156
+ const selected = rosterArchetype(input, false);
157
+ const known = await knownAkuma(path, selected);
158
+ return {
159
+ observedAt: new Date().toISOString(),
160
+ rows: [...(await readableRows(known.rows))].sort(compareRows),
161
+ searched: [known.runRoot],
162
+ };
49
163
  }
50
164
  /** Internal timeline observation for composition owners. */
51
165
  export async function readAkumaTimeline(path, id) {
52
- return (await createAkumaProduct(path).selectHandle({ id }).status()).timeline;
166
+ return (await new AkumaOwner(id, path).status()).timeline;
53
167
  }
54
- export { AkumaBusyError, AkumaDecodeError, AkumaProviderError } from "./akuma-errors.js";
@@ -1,14 +1,15 @@
1
+ import { type BoundedList } from "../bounded-list.js";
1
2
  import type { Settings } from "../settings.js";
2
3
  import type { ProviderAdapter } from "./provider.js";
3
- import { type ProviderExecution, type ProviderOptions, type ReadonlyRestraint } from "./provider-recipe.js";
4
+ import { type ProviderExecution, type ProviderOptions } from "./provider-recipe.js";
4
5
  import { type AllowedActions } from "./allowed.js";
5
6
  type DecodedArchetype = Readonly<{
6
7
  name: string;
7
8
  path: string;
8
9
  provider: string;
9
10
  description?: string;
11
+ hidden?: boolean;
10
12
  options: ProviderOptions;
11
- readonly?: true;
12
13
  allowed: AllowedActions;
13
14
  }>;
14
15
  export type ArchetypeCatalogRow = Readonly<{
@@ -19,9 +20,12 @@ export type ArchetypeCatalogRow = Readonly<{
19
20
  type ArchetypeDefinition = DecodedArchetype & Readonly<{
20
21
  adapter: ProviderAdapter;
21
22
  }>;
22
- type AdmittedArchetype = Omit<ArchetypeDefinition, "provider" | "readonly"> & Readonly<{
23
+ type AdmittedArchetype = Omit<ArchetypeDefinition, "provider"> & Readonly<{
24
+ provider: ProviderExecution;
25
+ }>;
26
+ /** One loaded archetype whose provider owner has decoded its execution but not yet admitted its options. */
27
+ type PreparedArchetype = Omit<DecodedArchetype, "provider"> & Readonly<{
23
28
  provider: ProviderExecution;
24
- readonly?: ReadonlyRestraint;
25
29
  }>;
26
30
  export declare class AkumaArchetypeError extends Error {
27
31
  readonly archetype: string;
@@ -35,12 +39,20 @@ type ArchetypeCoordinates = Readonly<{
35
39
  home?: string;
36
40
  }>;
37
41
  export declare function listArchetypes(input?: ArchetypeCoordinates): Promise<readonly string[]>;
38
- export declare function listArchetypeDefinitions(input?: ArchetypeCoordinates): Promise<readonly ArchetypeCatalogRow[]>;
42
+ export declare function listArchetypeDefinitions(input?: ArchetypeCoordinates & Readonly<{
43
+ limit?: number;
44
+ }>): Promise<BoundedList<ArchetypeCatalogRow>>;
45
+ /** Resolve one archetype and decode its provider execution, leaving option admission to the caller. */
46
+ export declare function loadPreparedArchetype(input: Readonly<{
47
+ name: string;
48
+ project?: string;
49
+ home?: string;
50
+ settings: Settings;
51
+ }>): Promise<PreparedArchetype>;
39
52
  export declare function loadArchetype(input: Readonly<{
40
53
  name: string;
41
54
  project?: string;
42
55
  home?: string;
43
56
  settings: Settings;
44
- readonly?: true;
45
57
  }>): Promise<AdmittedArchetype>;
46
58
  export {};
@@ -2,6 +2,7 @@ import { readFile, readdir } from "node:fs/promises";
2
2
  import { homedir } from "node:os";
3
3
  import { join } from "node:path";
4
4
  import { parseDocument } from "yaml";
5
+ import { boundedListLimit } from "../bounded-list.js";
5
6
  import { archetypeName } from "./identity.js";
6
7
  import { decodeProviderOptions, decodeProviderRecipe, } from "./provider-recipe.js";
7
8
  import { resolveProviderExecution } from "./providers/index.js";
@@ -99,12 +100,13 @@ function archetypeEnum(values, key, allowed) {
99
100
  throw new TypeError(`Akuma ${key} must be one of ${allowed.join(", ")}`);
100
101
  return value;
101
102
  }
102
- function archetypeReadonly(values) {
103
- if (!("readonly" in values))
103
+ function archetypeBoolean(values, key) {
104
+ const value = values[key];
105
+ if (value === undefined)
104
106
  return undefined;
105
- if (values.readonly !== true)
106
- throw new TypeError("Akuma readonly must be true");
107
- return true;
107
+ if (typeof value !== "boolean")
108
+ throw new TypeError(`Akuma ${key} must be a boolean`);
109
+ return value;
108
110
  }
109
111
  function parseArchetypeFrontmatter(markdown) {
110
112
  const lines = markdown.split(/\r?\n/u);
@@ -126,14 +128,11 @@ function decodeArchetypeFields(values) {
126
128
  const provider = archetypeField(values, "provider");
127
129
  const baseValue = archetypeField(values, "base");
128
130
  const base = baseValue === undefined ? undefined : archetypeName(baseValue);
129
- if ("access" in values)
130
- throw new TypeError("Akuma access is not supported; use readonly: true");
131
131
  const model = archetypeField(values, "model");
132
132
  const effort = archetypeField(values, "effort");
133
- const readonly = archetypeReadonly(values);
134
133
  const network = archetypeEnum(values, "network", ["disabled", "enabled"]);
135
- const sandbox = archetypeEnum(values, "sandbox", ["full-access"]);
136
134
  const description = archetypeField(values, "description");
135
+ const hidden = archetypeBoolean(values, "hidden");
137
136
  const allowedPresent = "allowed" in values;
138
137
  const allowed = allowedPresent ? decodeAllowedActions(values.allowed) : undefined;
139
138
  const systemPromptMode = archetypeEnum(values, "systemPromptMode", ["append", "replace"]);
@@ -142,10 +141,9 @@ function decodeArchetypeFields(values) {
142
141
  ...(provider === undefined ? {} : { provider }),
143
142
  ...(model === undefined ? {} : { model }),
144
143
  ...(effort === undefined ? {} : { effort }),
145
- ...(readonly === undefined ? {} : { readonly }),
146
144
  ...(network === undefined ? {} : { network }),
147
- ...(sandbox === undefined ? {} : { sandbox }),
148
145
  ...(description === undefined ? {} : { description }),
146
+ ...(hidden === undefined ? {} : { hidden }),
149
147
  ...(allowed === undefined ? {} : { allowed }),
150
148
  allowedPresent,
151
149
  ...(systemPromptMode === undefined ? {} : { systemPromptMode }),
@@ -164,11 +162,11 @@ function decodeArchetype(name, path, markdown) {
164
162
  ...(fields.base === undefined ? {} : { base: fields.base }),
165
163
  ...(fields.provider === undefined ? {} : { provider: fields.provider }),
166
164
  ...(fields.description === undefined ? {} : { description: fields.description }),
165
+ ...(fields.hidden === undefined ? {} : { hidden: fields.hidden }),
167
166
  options: decodeProviderOptions({
168
167
  ...(fields.model === undefined ? {} : { model: fields.model }),
169
168
  ...(fields.effort === undefined ? {} : { effort: fields.effort }),
170
169
  ...(fields.network === undefined ? {} : { network: fields.network }),
171
- ...(fields.sandbox === undefined ? {} : { sandbox: fields.sandbox }),
172
170
  ...(systemPrompt.length === 0
173
171
  ? {}
174
172
  : {
@@ -176,7 +174,6 @@ function decodeArchetype(name, path, markdown) {
176
174
  systemPromptMode: fields.systemPromptMode ?? "append",
177
175
  }),
178
176
  }),
179
- ...(fields.readonly === undefined ? {} : { readonly: fields.readonly }),
180
177
  ...(fields.allowed === undefined ? {} : { allowed: fields.allowed }),
181
178
  allowedPresent: fields.allowedPresent,
182
179
  });
@@ -196,8 +193,9 @@ function mergeArchetype(base, local) {
196
193
  ? {}
197
194
  : { description: base.description }
198
195
  : { description: local.description }),
196
+ // Hiddenness is the file's own catalogue visibility; it never flows through base.
197
+ ...(local.hidden === true ? { hidden: true } : {}),
199
198
  options,
200
- ...(local.readonly === true || base?.readonly === true ? { readonly: true } : {}),
201
199
  allowed,
202
200
  });
203
201
  }
@@ -242,14 +240,11 @@ async function resolveArchetype(name, input, source, chain = []) {
242
240
  export async function listArchetypeDefinitions(input = {}) {
243
241
  // Reads still run concurrently, but the reported failure is the first invalid
244
242
  // definition in catalog byte order, not whichever read happened to finish first.
245
- const settled = await Promise.allSettled((await archetypePaths(input)).map(async ({ name, path }) => {
243
+ const limit = input.limit === undefined ? undefined : boundedListLimit(input.limit);
244
+ const all = await archetypePaths(input);
245
+ const settled = await Promise.allSettled(all.map(async ({ name, path }) => {
246
246
  try {
247
- const definition = await resolveArchetype(name, input, undefined);
248
- return Object.freeze({
249
- name: definition.name,
250
- ...(definition.options.model === undefined ? {} : { model: definition.options.model }),
251
- ...(definition.description === undefined ? {} : { description: definition.description }),
252
- });
247
+ return await resolveArchetype(name, input, undefined);
253
248
  }
254
249
  catch (error) {
255
250
  if (error instanceof AkumaArchetypeError)
@@ -260,7 +255,18 @@ export async function listArchetypeDefinitions(input = {}) {
260
255
  const firstInvalid = settled.find((result) => result.status === "rejected");
261
256
  if (firstInvalid !== undefined)
262
257
  throw firstInvalid.reason;
263
- return settled.map((result) => result.value);
258
+ const visible = settled
259
+ .map((result) => result.value)
260
+ .filter((definition) => definition.hidden !== true)
261
+ .map((definition) => Object.freeze({
262
+ name: definition.name,
263
+ ...(definition.options.model === undefined ? {} : { model: definition.options.model }),
264
+ ...(definition.description === undefined ? {} : { description: definition.description }),
265
+ }));
266
+ return {
267
+ rows: limit === undefined ? visible : visible.slice(0, limit),
268
+ hasMore: limit === undefined ? false : visible.length > limit,
269
+ };
264
270
  }
265
271
  function record(value) {
266
272
  return value !== null && typeof value === "object" && !Array.isArray(value)
@@ -296,6 +302,11 @@ const BUILTIN_EXECUTIONS = {
296
302
  claude: { kind: "claude-agent-sdk" },
297
303
  "codex-app-server": { kind: "codex-app-server" },
298
304
  "opencode-sdk": { kind: "opencode-sdk" },
305
+ kimi: {
306
+ kind: "acp",
307
+ executable: "kimi",
308
+ config: { argvBefore: ["acp"], argvAfter: [], modelConfigId: "model", effortConfigId: "thinking" },
309
+ },
299
310
  pi: { kind: "pi" },
300
311
  "grok-build": {
301
312
  kind: "grok-build",
@@ -314,10 +325,10 @@ function providerExecution(settings, name) {
314
325
  return decodeProviderRecipe({ name, ...builtin });
315
326
  throw new TypeError(`unknown provider ${name}`);
316
327
  }
317
- async function admitArchetype(archetype, settings, callReadonly) {
328
+ async function admitArchetype(archetype) {
318
329
  let selected;
319
330
  try {
320
- selected = await resolveProviderExecution(providerExecution(settings, archetype.provider));
331
+ selected = await resolveProviderExecution(archetype.provider);
321
332
  }
322
333
  catch (error) {
323
334
  if (error instanceof TypeError)
@@ -326,25 +337,32 @@ async function admitArchetype(archetype, settings, callReadonly) {
326
337
  }
327
338
  const execution = selected.execution;
328
339
  const adapter = selected.adapter;
329
- const effectiveReadonly = archetype.readonly === true || callReadonly === true;
330
- const admission = adapter.admitOptions({
331
- ...archetype.options,
332
- ...(effectiveReadonly ? { readonly: true } : {}),
333
- });
340
+ const admission = adapter.admitOptions(archetype.options);
334
341
  if (admission.kind === "refused") {
335
342
  throw new AkumaArchetypeError(archetype.name, [archetype.path], `is unsupported: ${admission.diagnostic}`);
336
343
  }
337
- const { readonly: _readonly, ...definition } = archetype;
338
344
  return Object.freeze({
339
- ...definition,
345
+ ...archetype,
340
346
  provider: execution,
341
347
  adapter,
342
348
  options: admission.options,
343
- ...(admission.readonly === undefined ? {} : { readonly: admission.readonly }),
344
349
  });
345
350
  }
346
- export async function loadArchetype(input) {
351
+ /** Resolve one archetype and decode its provider execution, leaving option admission to the caller. */
352
+ export async function loadPreparedArchetype(input) {
347
353
  const name = archetypeName(input.name);
348
354
  const definition = await resolveArchetype(name, input, undefined);
349
- return await admitArchetype(definition, input.settings, input.readonly);
355
+ let provider;
356
+ try {
357
+ provider = providerExecution(input.settings, definition.provider);
358
+ }
359
+ catch (error) {
360
+ if (error instanceof TypeError)
361
+ throw new AkumaArchetypeError(definition.name, [definition.path], `uses ${error.message}`);
362
+ throw error;
363
+ }
364
+ return Object.freeze({ ...definition, provider });
365
+ }
366
+ export async function loadArchetype(input) {
367
+ return await admitArchetype(await loadPreparedArchetype(input));
350
368
  }