@astrosheep/keiyaku 4.5.29 → 4.6.2

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 (418) 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 -18
  10. package/build/src/akuma/akuma-instance.js +65 -175
  11. package/build/src/akuma/akuma-observe.d.ts +3 -21
  12. package/build/src/akuma/akuma-observe.js +7 -24
  13. package/build/src/akuma/{akuma-handle.d.ts → akuma-owner.d.ts} +55 -27
  14. package/build/src/akuma/{akuma-handle.js → akuma-owner.js} +24 -23
  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 -44
  18. package/build/src/akuma/akuma-wait.js +113 -0
  19. package/build/src/akuma/akuma.d.ts +35 -89
  20. package/build/src/akuma/akuma.js +148 -30
  21. package/build/src/akuma/archetype.d.ts +12 -0
  22. package/build/src/akuma/archetype.js +47 -19
  23. package/build/src/akuma/body.d.ts +76 -36
  24. package/build/src/akuma/body.js +84 -49
  25. package/build/src/akuma/call-initial-tell.d.ts +131 -22
  26. package/build/src/akuma/call-initial-tell.js +31 -1
  27. package/build/src/akuma/call-request.d.ts +237 -31
  28. package/build/src/akuma/call-request.js +67 -94
  29. package/build/src/akuma/coordinate.d.ts +15 -5
  30. package/build/src/akuma/coordinate.js +12 -22
  31. package/build/src/akuma/dispatch-association.d.ts +1 -1
  32. package/build/src/akuma/dispatch-association.js +1 -10
  33. package/build/src/akuma/heart/activity-schema.d.ts +325 -0
  34. package/build/src/akuma/heart/activity-schema.js +53 -0
  35. package/build/src/akuma/heart/facts.d.ts +1 -6
  36. package/build/src/akuma/heart/index.d.ts +3 -1
  37. package/build/src/akuma/heart/index.js +4 -1
  38. package/build/src/akuma/heart/rows.d.ts +49 -2
  39. package/build/src/akuma/heart/rows.js +16 -2
  40. package/build/src/akuma/heart/soul.d.ts +1 -0
  41. package/build/src/akuma/heart/soul.js +6 -4
  42. package/build/src/akuma/heart/tells.d.ts +1 -0
  43. package/build/src/akuma/heart/tells.js +18 -0
  44. package/build/src/akuma/identity.d.ts +10 -7
  45. package/build/src/akuma/identity.js +23 -0
  46. package/build/src/akuma/index.d.ts +10 -8
  47. package/build/src/akuma/index.js +2 -2
  48. package/build/src/akuma/nuke.d.ts +3 -0
  49. package/build/src/akuma/nuke.js +13 -7
  50. package/build/src/akuma/projection.d.ts +0 -5
  51. package/build/src/akuma/projection.js +22 -43
  52. package/build/src/akuma/provider-recipe.d.ts +58 -13
  53. package/build/src/akuma/provider-recipe.js +62 -80
  54. package/build/src/akuma/provider.d.ts +6 -76
  55. package/build/src/akuma/provider.js +11 -219
  56. package/build/src/akuma/providers/acp/config.d.ts +2 -0
  57. package/build/src/akuma/providers/acp/config.js +26 -1
  58. package/build/src/akuma/providers/acp/core.d.ts +7 -0
  59. package/build/src/akuma/providers/acp/core.js +49 -18
  60. package/build/src/akuma/providers/acp/index.js +14 -6
  61. package/build/src/akuma/providers/grok-build/index.js +44 -13
  62. package/build/src/akuma/providers/index.d.ts +3 -3
  63. package/build/src/akuma/providers/index.js +2 -13
  64. package/build/src/akuma/providers/opencode-sdk/event-stream.d.ts +28 -0
  65. package/build/src/akuma/providers/opencode-sdk/event-stream.js +92 -0
  66. package/build/src/akuma/providers/opencode-sdk/events.d.ts +0 -1
  67. package/build/src/akuma/providers/opencode-sdk/index.js +200 -64
  68. package/build/src/akuma/providers/opencode-sdk/session.d.ts +41 -1
  69. package/build/src/akuma/providers/opencode-sdk/session.js +69 -2
  70. package/build/src/akuma/providers/pi/events.js +5 -2
  71. package/build/src/akuma/providers/pi/index.d.ts +3 -4
  72. package/build/src/akuma/providers/pi/index.js +99 -45
  73. package/build/src/akuma/publication.d.ts +84 -3
  74. package/build/src/akuma/publication.js +145 -2
  75. package/build/src/akuma/read-pool.d.ts +2 -0
  76. package/build/src/akuma/read-pool.js +15 -0
  77. package/build/src/akuma/request-rendezvous.js +10 -0
  78. package/build/src/akuma/request-serve.js +7 -0
  79. package/build/src/akuma/request-wire.d.ts +14 -26
  80. package/build/src/akuma/request-wire.js +4 -0
  81. package/build/src/akuma/requests.d.ts +0 -2
  82. package/build/src/akuma/requests.js +0 -17
  83. package/build/src/akuma/{fleet-observation.d.ts → selection-observation.d.ts} +37 -36
  84. package/build/src/akuma/selection-observation.js +65 -0
  85. package/build/src/akuma/{fleet-owner-port.d.ts → selection-owner-port.d.ts} +3 -3
  86. package/build/src/akuma/{fleet-owner-port.js → selection-owner-port.js} +11 -17
  87. package/build/src/akuma/{fleet-request.d.ts → selection-request.d.ts} +42 -82
  88. package/build/src/akuma/{fleet-request.js → selection-request.js} +92 -136
  89. package/build/src/akuma/turn-drive.js +73 -14
  90. package/build/src/akuma-body.js +91 -56
  91. package/build/src/body/amend.d.ts +5 -0
  92. package/build/src/body/amend.js +26 -50
  93. package/build/src/body/arc.d.ts +4 -2
  94. package/build/src/body/arc.js +19 -26
  95. package/build/src/body/criteria.d.ts +6 -0
  96. package/build/src/body/criteria.js +37 -0
  97. package/build/src/body/decode.js +5 -42
  98. package/build/src/body/region.d.ts +5 -0
  99. package/build/src/body/region.js +45 -2
  100. package/build/src/body/render.js +2 -4
  101. package/build/src/cli/activity.d.ts +26 -0
  102. package/build/src/cli/activity.js +75 -0
  103. package/build/src/cli/actor.d.ts +3 -1
  104. package/build/src/cli/actor.js +15 -2
  105. package/build/src/cli/commands/akuma-grammar.d.ts +75 -0
  106. package/build/src/cli/commands/akuma-grammar.js +414 -0
  107. package/build/src/cli/commands/akuma.d.ts +5 -69
  108. package/build/src/cli/commands/akuma.js +352 -319
  109. package/build/src/cli/commands/amend.d.ts +4 -5
  110. package/build/src/cli/commands/amend.js +1 -2
  111. package/build/src/cli/commands/bind.d.ts +4 -5
  112. package/build/src/cli/commands/bind.js +7 -10
  113. package/build/src/cli/commands/contract-grammar.d.ts +112 -0
  114. package/build/src/cli/commands/contract-grammar.js +282 -0
  115. package/build/src/cli/commands/contract-help.d.ts +17 -22
  116. package/build/src/cli/commands/contract-help.js +37 -24
  117. package/build/src/cli/commands/contract.d.ts +18 -97
  118. package/build/src/cli/commands/contract.js +621 -233
  119. package/build/src/cli/commands/install.d.ts +1 -1
  120. package/build/src/cli/commands/install.js +2 -2
  121. package/build/src/cli/commands/task-grammar.d.ts +19 -0
  122. package/build/src/cli/commands/task-grammar.js +438 -0
  123. package/build/src/cli/commands/task-query.js +23 -104
  124. package/build/src/cli/commands/task.d.ts +5 -20
  125. package/build/src/cli/commands/task.js +414 -364
  126. package/build/src/cli/coordinates.d.ts +10 -0
  127. package/build/src/cli/coordinates.js +20 -0
  128. package/build/src/cli/draft.d.ts +7 -1
  129. package/build/src/cli/main.js +10 -1
  130. package/build/src/cli/parse.d.ts +8 -9
  131. package/build/src/cli/parse.js +62 -62
  132. package/build/src/cli/render/akuma-activity.d.ts +54 -36
  133. package/build/src/cli/render/akuma-activity.js +262 -242
  134. package/build/src/cli/render/akuma-tool.d.ts +8 -4
  135. package/build/src/cli/render/akuma-tool.js +6 -5
  136. package/build/src/cli/render/akuma.d.ts +36 -16
  137. package/build/src/cli/render/akuma.js +65 -132
  138. package/build/src/cli/render/audit.d.ts +6 -2
  139. package/build/src/cli/render/audit.js +59 -28
  140. package/build/src/cli/render/catalog.d.ts +11 -2
  141. package/build/src/cli/render/catalog.js +75 -95
  142. package/build/src/cli/render/contract-history.d.ts +3 -1
  143. package/build/src/cli/render/contract-history.js +215 -22
  144. package/build/src/cli/render/contract-observation.d.ts +10 -5
  145. package/build/src/cli/render/contract-observation.js +29 -46
  146. package/build/src/cli/render/contract.d.ts +10 -3
  147. package/build/src/cli/render/contract.js +252 -103
  148. package/build/src/cli/render/effects.d.ts +26 -0
  149. package/build/src/cli/render/effects.js +41 -0
  150. package/build/src/cli/render/execution-progress.d.ts +18 -6
  151. package/build/src/cli/render/execution-progress.js +34 -31
  152. package/build/src/cli/render/kanshi-akuma.d.ts +1 -2
  153. package/build/src/cli/render/kanshi-akuma.js +5 -26
  154. package/build/src/cli/render/kanshi.js +107 -128
  155. package/build/src/cli/render/marks.d.ts +13 -0
  156. package/build/src/cli/render/marks.js +74 -0
  157. package/build/src/cli/render/nuke.js +18 -7
  158. package/build/src/cli/render/receipt.d.ts +10 -4
  159. package/build/src/cli/render/receipt.js +124 -44
  160. package/build/src/cli/render/reconcile.d.ts +5 -0
  161. package/build/src/cli/render/reconcile.js +152 -0
  162. package/build/src/cli/render/refusal.d.ts +21 -4
  163. package/build/src/cli/render/refusal.js +60 -33
  164. package/build/src/cli/render/region.js +3 -2
  165. package/build/src/cli/render/settings.js +2 -12
  166. package/build/src/cli/render/task.d.ts +37 -6
  167. package/build/src/cli/render/task.js +161 -157
  168. package/build/src/cli/render/terminal.d.ts +20 -1
  169. package/build/src/cli/render/terminal.js +92 -18
  170. package/build/src/cli/runtime.d.ts +32 -8
  171. package/build/src/cli/runtime.js +157 -165
  172. package/build/src/cli/selectors.d.ts +5 -2
  173. package/build/src/cli/selectors.js +11 -3
  174. package/build/src/cli/streams.d.ts +11 -0
  175. package/build/src/cli/streams.js +32 -0
  176. package/build/src/cli/usage.d.ts +2 -0
  177. package/build/src/cli/usage.js +12 -8
  178. package/build/src/contract-guidance.js +3 -7
  179. package/build/src/contract-worktree.d.ts +20 -28
  180. package/build/src/contract-worktree.js +18 -70
  181. package/build/src/coordination/durable-file.d.ts +2 -2
  182. package/build/src/coordination/durable-file.js +0 -27
  183. package/build/src/core/facts/codec.d.ts +1 -2
  184. package/build/src/core/facts/codec.js +6 -7
  185. package/build/src/core/facts/gate.d.ts +0 -1
  186. package/build/src/core/facts/gate.js +0 -82
  187. package/build/src/core/facts/types.d.ts +1 -2
  188. package/build/src/core/verbs/abandon.d.ts +2 -6
  189. package/build/src/core/verbs/abandon.js +0 -16
  190. package/build/src/core/verbs/amend.d.ts +0 -1
  191. package/build/src/core/verbs/amend.js +0 -20
  192. package/build/src/core/verbs/arc.d.ts +7 -8
  193. package/build/src/core/verbs/arc.js +2 -19
  194. package/build/src/core/verbs/attestation.d.ts +2 -6
  195. package/build/src/core/verbs/attestation.js +0 -16
  196. package/build/src/core/verbs/bind.d.ts +0 -1
  197. package/build/src/core/verbs/bind.js +0 -16
  198. package/build/src/core/verbs/deliver.d.ts +0 -1
  199. package/build/src/core/verbs/deliver.js +0 -16
  200. package/build/src/core/verbs/placement.d.ts +2 -1
  201. package/build/src/core/verbs/placement.js +10 -59
  202. package/build/src/git/admission.d.ts +6 -4
  203. package/build/src/git/admission.js +4 -0
  204. package/build/src/git/hooks.d.ts +55 -30
  205. package/build/src/git/hooks.js +30 -3
  206. package/build/src/git/identity.d.ts +6 -0
  207. package/build/src/git/identity.js +47 -0
  208. package/build/src/git/integration.d.ts +31 -13
  209. package/build/src/git/integration.js +32 -1
  210. package/build/src/git/nuke.d.ts +10 -1
  211. package/build/src/git/nuke.js +31 -11
  212. package/build/src/git/observe.js +2 -15
  213. package/build/src/git/private-state-seat.d.ts +6 -7
  214. package/build/src/git/private-state-seat.js +8 -6
  215. package/build/src/git/read-observation.d.ts +6 -1
  216. package/build/src/git/read-observation.js +81 -46
  217. package/build/src/git/reconcile.d.ts +117 -40
  218. package/build/src/git/reconcile.js +169 -40
  219. package/build/src/git/scratch.d.ts +7 -4
  220. package/build/src/git/scratch.js +28 -6
  221. package/build/src/git/target-placement.d.ts +53 -38
  222. package/build/src/git/target-placement.js +69 -54
  223. package/build/src/git/tender.d.ts +37 -28
  224. package/build/src/git/tender.js +39 -0
  225. package/build/src/git/terminal-reconcile.js +21 -23
  226. package/build/src/git/terminal-seal.d.ts +8 -6
  227. package/build/src/git/terminal-seal.js +10 -0
  228. package/build/src/git/workspace.d.ts +29 -15
  229. package/build/src/git/workspace.js +28 -2
  230. package/build/src/identity/normalize.js +19 -6
  231. package/build/src/index.d.ts +78 -7
  232. package/build/src/index.js +52 -4
  233. package/build/src/kanshi/read.d.ts +3 -3
  234. package/build/src/kanshi/read.js +21 -21
  235. package/build/src/kanshi/report.d.ts +9 -8
  236. package/build/src/kanshi/roster.d.ts +2 -0
  237. package/build/src/kanshi/roster.js +2 -0
  238. package/build/src/kanshi/select.js +7 -3
  239. package/build/src/library/address.d.ts +3 -7
  240. package/build/src/library/address.js +7 -7
  241. package/build/src/library/akuma-creation.d.ts +21 -32
  242. package/build/src/library/akuma-creation.js +148 -165
  243. package/build/src/library/akumas.d.ts +20 -22
  244. package/build/src/library/akumas.js +43 -20
  245. package/build/src/library/bind.d.ts +107 -13
  246. package/build/src/library/bind.js +29 -23
  247. package/build/src/library/continuation.d.ts +556 -28
  248. package/build/src/library/continuation.js +29 -54
  249. package/build/src/library/contract-composition.d.ts +40 -0
  250. package/build/src/library/contract-composition.js +105 -0
  251. package/build/src/library/contract-creation.d.ts +7 -0
  252. package/build/src/library/contract-creation.js +192 -0
  253. package/build/src/library/contract-execution.d.ts +29 -40
  254. package/build/src/library/contract-execution.js +503 -128
  255. package/build/src/library/contract-operations.d.ts +275 -134
  256. package/build/src/library/contract-operations.js +83 -92
  257. package/build/src/library/contract-outcomes.d.ts +71 -0
  258. package/build/src/library/contract-outcomes.js +32 -0
  259. package/build/src/library/contract-settings.d.ts +25 -0
  260. package/build/src/library/contract-settings.js +135 -0
  261. package/build/src/library/contract-types.d.ts +17 -38
  262. package/build/src/library/delivery.d.ts +530 -10
  263. package/build/src/library/delivery.js +20 -45
  264. package/build/src/library/input.d.ts +3 -1
  265. package/build/src/library/input.js +11 -16
  266. package/build/src/library/invocation.d.ts +87 -0
  267. package/build/src/library/invocation.js +290 -0
  268. package/build/src/library/keiyaku.d.ts +45 -22
  269. package/build/src/library/keiyaku.js +134 -8
  270. package/build/src/library/nuke.d.ts +2 -11
  271. package/build/src/library/nuke.js +70 -57
  272. package/build/src/library/outcome.d.ts +13196 -0
  273. package/build/src/library/outcome.js +487 -0
  274. package/build/src/library/reconcile.d.ts +96 -24
  275. package/build/src/library/reconcile.js +102 -42
  276. package/build/src/library/refusal.d.ts +470 -42
  277. package/build/src/library/refusal.js +55 -143
  278. package/build/src/library/region.d.ts +15 -7
  279. package/build/src/library/region.js +23 -3
  280. package/build/src/library/repo.d.ts +2 -12
  281. package/build/src/library/repo.js +1 -22
  282. package/build/src/library/selection.d.ts +121 -0
  283. package/build/src/library/{fleet.js → selection.js} +169 -152
  284. package/build/src/plugin/public.d.ts +2 -0
  285. package/build/src/protocol/abandon.d.ts +2 -2
  286. package/build/src/protocol/abandon.js +1 -0
  287. package/build/src/protocol/amend.js +1 -0
  288. package/build/src/protocol/arc.d.ts +6 -4
  289. package/build/src/protocol/attempt.d.ts +4 -2
  290. package/build/src/protocol/attempt.js +10 -0
  291. package/build/src/protocol/audit.d.ts +255 -52
  292. package/build/src/protocol/audit.js +63 -5
  293. package/build/src/protocol/bind.d.ts +18 -17
  294. package/build/src/protocol/bind.js +9 -28
  295. package/build/src/protocol/completion.d.ts +256 -22
  296. package/build/src/protocol/completion.js +100 -12
  297. package/build/src/protocol/deliver.d.ts +34 -23
  298. package/build/src/protocol/deliver.js +39 -25
  299. package/build/src/protocol/execution-observation.d.ts +36 -37
  300. package/build/src/protocol/execution-observation.js +7 -9
  301. package/build/src/protocol/intent.d.ts +101 -30
  302. package/build/src/protocol/intent.js +74 -1
  303. package/build/src/protocol/operations.d.ts +570 -64
  304. package/build/src/protocol/operations.js +189 -9
  305. package/build/src/protocol/outcome.d.ts +2 -1
  306. package/build/src/protocol/placement.d.ts +2 -2
  307. package/build/src/protocol/placement.js +3 -1
  308. package/build/src/protocol/progress.d.ts +108 -65
  309. package/build/src/protocol/progress.js +82 -132
  310. package/build/src/protocol/read/status.d.ts +4 -3
  311. package/build/src/protocol/read/status.js +6 -5
  312. package/build/src/protocol/reconcile.d.ts +3 -3
  313. package/build/src/protocol/reconcile.js +4 -0
  314. package/build/src/protocol/reintegrate.d.ts +2 -2
  315. package/build/src/protocol/review.d.ts +30 -12
  316. package/build/src/protocol/review.js +15 -24
  317. package/build/src/protocol/run.d.ts +34 -5
  318. package/build/src/protocol/run.js +24 -12
  319. package/build/src/runtime/proc/windows-launch.exe +0 -0
  320. package/build/src/settings.d.ts +0 -10
  321. package/build/src/settings.js +0 -76
  322. package/build/src/settlement/holder.d.ts +1 -1
  323. package/build/src/settlement/settle.d.ts +25 -16
  324. package/build/src/settlement/settle.js +80 -20
  325. package/build/src/task/board.d.ts +3 -1
  326. package/build/src/task/board.js +13 -17
  327. package/build/src/task/catalog.d.ts +0 -4
  328. package/build/src/task/catalog.js +0 -15
  329. package/build/src/task/compose-language.d.ts +19 -9
  330. package/build/src/task/compose-language.js +30 -20
  331. package/build/src/task/compose.d.ts +7 -37
  332. package/build/src/task/compose.js +20 -2
  333. package/build/src/task/created-observation.d.ts +0 -1
  334. package/build/src/task/created-observation.js +1 -4
  335. package/build/src/task/document.d.ts +12 -2
  336. package/build/src/task/document.js +4 -0
  337. package/build/src/task/identity.d.ts +4 -1
  338. package/build/src/task/identity.js +21 -17
  339. package/build/src/task/index.d.ts +36 -16
  340. package/build/src/task/index.js +103 -96
  341. package/build/src/task/lifecycle-operations.d.ts +1 -1
  342. package/build/src/task/mutation-result.d.ts +647 -586
  343. package/build/src/task/mutation-result.js +79 -46
  344. package/build/src/task/mutation.d.ts +298 -270
  345. package/build/src/task/mutation.js +93 -110
  346. package/build/src/task/operation-types.d.ts +6 -49
  347. package/build/src/task/operations.d.ts +2 -1
  348. package/build/src/task/operations.js +35 -12
  349. package/build/src/task/query.d.ts +9 -3
  350. package/build/src/task/query.js +42 -16
  351. package/build/src/task/store.d.ts +2 -1
  352. package/build/src/task/store.js +10 -14
  353. package/build/src/verification/declaration.d.ts +0 -1
  354. package/build/src/verification/declaration.js +1 -18
  355. package/build/src/verification/execution.d.ts +6 -2
  356. package/build/src/verification/observation.d.ts +1 -1
  357. package/package.json +2 -18
  358. package/build/src/akuma/akuma-product.d.ts +0 -58
  359. package/build/src/akuma/akuma-product.js +0 -276
  360. package/build/src/akuma/fleet-execution.js +0 -234
  361. package/build/src/akuma/fleet-observation.js +0 -97
  362. package/build/src/cli/accepted.d.ts +0 -24
  363. package/build/src/cli/accepted.js +0 -167
  364. package/build/src/cli/catalog.d.ts +0 -45
  365. package/build/src/cli/catalog.js +0 -1
  366. package/build/src/cli/commands/akuma-invoke.d.ts +0 -114
  367. package/build/src/cli/commands/akuma-invoke.js +0 -375
  368. package/build/src/cli/commands/contract-invoke.d.ts +0 -34
  369. package/build/src/cli/commands/contract-invoke.js +0 -259
  370. package/build/src/cli/commands/nuke.d.ts +0 -10
  371. package/build/src/cli/commands/nuke.js +0 -20
  372. package/build/src/cli/commands/status-set.d.ts +0 -4
  373. package/build/src/cli/commands/status-set.js +0 -52
  374. package/build/src/cli/commands/task-invoke.d.ts +0 -49
  375. package/build/src/cli/commands/task-invoke.js +0 -306
  376. package/build/src/cli/invoke.d.ts +0 -27
  377. package/build/src/cli/invoke.js +0 -521
  378. package/build/src/cli/render/board.d.ts +0 -3
  379. package/build/src/cli/render/board.js +0 -25
  380. package/build/src/cli/render/status-set.d.ts +0 -5
  381. package/build/src/cli/render/status-set.js +0 -19
  382. package/build/src/cli/render/text.d.ts +0 -3
  383. package/build/src/cli/render/text.js +0 -33
  384. package/build/src/cli/result.d.ts +0 -240
  385. package/build/src/cli/result.js +0 -1
  386. package/build/src/git/result-codec.d.ts +0 -29
  387. package/build/src/git/result-codec.js +0 -309
  388. package/build/src/kanshi/fleet.d.ts +0 -6
  389. package/build/src/kanshi/fleet.js +0 -27
  390. package/build/src/library/audit.d.ts +0 -29
  391. package/build/src/library/audit.js +0 -41
  392. package/build/src/library/composition.d.ts +0 -15
  393. package/build/src/library/composition.js +0 -28
  394. package/build/src/library/configuration.d.ts +0 -4
  395. package/build/src/library/configuration.js +0 -2
  396. package/build/src/library/contract-bind.d.ts +0 -31
  397. package/build/src/library/contract-bind.js +0 -140
  398. package/build/src/library/contract-forwarding.d.ts +0 -55
  399. package/build/src/library/contract-forwarding.js +0 -67
  400. package/build/src/library/contract-handle.d.ts +0 -50
  401. package/build/src/library/contract-handle.js +0 -385
  402. package/build/src/library/contract.d.ts +0 -46
  403. package/build/src/library/contract.js +0 -73
  404. package/build/src/library/execution-result.d.ts +0 -243
  405. package/build/src/library/execution-result.js +0 -101
  406. package/build/src/library/execution.d.ts +0 -8
  407. package/build/src/library/execution.js +0 -102
  408. package/build/src/library/fleet.d.ts +0 -83
  409. package/build/src/library/mutation.d.ts +0 -501
  410. package/build/src/library/mutation.js +0 -248
  411. package/build/src/library/result-codec.d.ts +0 -2
  412. package/build/src/library/result-codec.js +0 -12
  413. package/build/src/protocol/result-codec.d.ts +0 -23
  414. package/build/src/protocol/result-codec.js +0 -488
  415. package/build/src/settlement/result-codec.d.ts +0 -2
  416. package/build/src/settlement/result-codec.js +0 -56
  417. package/build/src/task/public.d.ts +0 -2
  418. package/build/src/task/public.js +0 -1
@@ -1,22 +1,23 @@
1
1
  /** @architectureCompositionRoot */
2
- import { appendFile } from "node:fs/promises";
3
2
  import { randomUUID } from "node:crypto";
4
- import { moveAlias } from "../alias/index.js";
5
- import { createAkumaProduct } from "../akuma/akuma-product.js";
6
- import { pathsForAkuId } from "../akuma/identity.js";
3
+ import { appendFile } from "node:fs/promises";
4
+ import { admitAkumaCall } from "../akuma/akuma-call.js";
5
+ import { AkumaOwner } from "../akuma/akuma-owner.js";
6
+ import { decodeAskObservation, observeAdmittedAskAkuma } from "../akuma/akuma-selection-execution.js";
7
+ import { canonicalBirthCwd } from "../akuma/call-input.js";
7
8
  import { readSoul } from "../akuma/heart/index.js";
9
+ import { pathsForAkuId } from "../akuma/identity.js";
10
+ import { localExecutionContext } from "../akuma/requests.js";
11
+ import { schemaJsonText } from "../akuma/schema.js";
12
+ import { moveAlias } from "../alias/index.js";
8
13
  import { AuthorityCorruptionError } from "../core/facts/errors.js";
9
14
  import { publishDispatch, readDispatch } from "../dispatch/index.js";
10
15
  import { parseAkumaAlias } from "../identity/selector.js";
11
16
  import { emitCalledPluginSignal } from "../plugin/akuma-signals.js";
12
17
  import { World } from "../world.js";
13
- import { schemaJsonText } from "../akuma/schema.js";
14
- import { decodeTellWaitObservation, observeAdmittedTellWaitAkuma, } from "../akuma/fleet-execution.js";
15
- import { localExecutionContext } from "../akuma/requests.js";
16
- import { canonicalBirthCwd } from "../akuma/call-input.js";
17
- import { requireInput } from "./input.js";
18
18
  import { addressAkuma } from "./address.js";
19
- import { seatForKeiyaku } from "./contract-handle.js";
19
+ import { requireInput } from "./input.js";
20
+ import { seatForKeiyaku } from "./keiyaku.js";
20
21
  import { scopeForRepo } from "./repo.js";
21
22
  function nonblank(value, label) {
22
23
  if (typeof value !== "string" || value.trim().length === 0) {
@@ -44,13 +45,6 @@ function homeOption(value) {
44
45
  return undefined;
45
46
  return nonblank(value, "home");
46
47
  }
47
- function akumaWorld(path, home, settings, execution) {
48
- return createAkumaProduct(path, {
49
- ...(home === undefined ? {} : { home }),
50
- ...(settings === undefined ? {} : { settings }),
51
- ...(execution === undefined ? {} : { execution }),
52
- });
53
- }
54
48
  function onlyKeys(values, allowed, label) {
55
49
  const accepted = new Set(allowed);
56
50
  for (const key of Object.keys(values)) {
@@ -71,6 +65,15 @@ function callMode(value) {
71
65
  return "wait";
72
66
  throw new TypeError("mode must be wait or detach");
73
67
  }
68
+ function callBody(value) {
69
+ return value === undefined ? undefined : text(value, "body");
70
+ }
71
+ function validateCallBodyOptions(body, values, mode) {
72
+ if (body === undefined && values.schema !== undefined)
73
+ throw new TypeError("schema requires body");
74
+ if (body === undefined && (mode === "wait" || values.timeoutMs !== undefined))
75
+ throw new TypeError("wait and timeoutMs require body");
76
+ }
74
77
  function callTimeout(value, mode) {
75
78
  if (mode === "detach" && value !== undefined) {
76
79
  throw new TypeError("timeoutMs is not valid in detach mode");
@@ -97,10 +100,8 @@ function callSeat(contract) {
97
100
  throw new TypeError("contract must be a Keiyaku");
98
101
  return seat;
99
102
  }
100
- async function callerAkuId(path, born) {
101
- if (born.kind !== "requested")
102
- return undefined;
103
- const soul = await readSoul(pathsForAkuId(path, born.id));
103
+ async function requestedParent(path, id) {
104
+ const soul = await readSoul(pathsForAkuId(path, id));
104
105
  return soul?.origin.kind === "request" ? soul.origin.parent : undefined;
105
106
  }
106
107
  function pluginDiagnostic(error) {
@@ -115,10 +116,16 @@ async function recordPluginDiagnostic(paths, error) {
115
116
  // Plugin diagnostic loss must not change an already admitted call.
116
117
  }
117
118
  }
119
+ /**
120
+ * The submitting process's optional called-plugin observation. It runs once,
121
+ * after the prepared executor returned its local value or the forwarded caller
122
+ * received its exact live output, and it never gates birth, initial Tell, or a
123
+ * later integration stage. A failed delivery stays a diagnostic.
124
+ */
118
125
  async function emitCalledSignal(input) {
119
126
  try {
120
- const callerAkumaId = await callerAkuId(input.path, input.born);
121
- const paths = input.born.kind === "requested" ? pathsForAkuId(input.path, input.akumaId) : input.born.allocated.paths;
127
+ const paths = pathsForAkuId(input.path, input.admitted.id);
128
+ const callerAkumaId = input.admitted.requested ? await requestedParent(input.path, input.admitted.id) : undefined;
122
129
  const reportDiagnostic = (message) => {
123
130
  void recordPluginDiagnostic(paths, message);
124
131
  };
@@ -127,7 +134,7 @@ async function emitCalledSignal(input) {
127
134
  world: input.path,
128
135
  ...(input.settings === undefined ? {} : { settings: input.settings }),
129
136
  reportDiagnostic,
130
- akumaId: input.akumaId,
137
+ akumaId: input.admitted.id,
131
138
  ...(callerAkumaId === undefined ? {} : { callerAkumaId }),
132
139
  ...(input.contractId === undefined ? {} : { contractId: input.contractId }),
133
140
  });
@@ -140,18 +147,6 @@ async function emitCalledSignal(input) {
140
147
  // Plugin delivery must not change an already admitted call.
141
148
  }
142
149
  }
143
- async function admitCall(input) {
144
- const born = await input.world.admit(input.call, input.context);
145
- const akuma = born.kind === "requested" ? born.id : born.allocated.id;
146
- await emitCalledSignal({
147
- path: input.path,
148
- ...(input.settings === undefined ? {} : { settings: input.settings }),
149
- born,
150
- akumaId: akuma,
151
- ...(input.contractId === undefined ? {} : { contractId: input.contractId }),
152
- });
153
- return { born, akuma };
154
- }
155
150
  async function dispatchStage(input) {
156
151
  try {
157
152
  const published = await publishDispatch(input);
@@ -223,10 +218,11 @@ async function parseCallInput(input) {
223
218
  onlyKeys(values, CALL_INPUT_KEYS, "Akumas.call input");
224
219
  const path = await World.prove(nonblank(values.path, "path"));
225
220
  const archetype = nonblank(values.archetype, "archetype");
226
- const body = text(values.body, "body");
221
+ const body = callBody(values.body);
227
222
  const initiator = values.initiator === undefined ? undefined : text(values.initiator, "initiator");
228
223
  const cwd = values.cwd === undefined ? undefined : nonblank(values.cwd, "cwd");
229
224
  const mode = callMode(values.mode);
225
+ validateCallBodyOptions(body, values, mode);
230
226
  const timeoutMs = callTimeout(values.timeoutMs, mode);
231
227
  const signal = callSignal(values.signal);
232
228
  const home = homeOption(values.home);
@@ -236,13 +232,15 @@ async function parseCallInput(input) {
236
232
  const schema = values.schema;
237
233
  const schemaJson = schema === undefined ? undefined : schemaJsonText(schema);
238
234
  const observe = values.observe;
239
- const initialTell = {
240
- tellId: randomUUID(),
241
- body,
242
- ...(schemaJson === undefined ? {} : { schemaJson }),
243
- ...(schema === undefined ? {} : { schema }),
244
- ...(initiator === undefined ? {} : { initiator }),
245
- };
235
+ const initialTell = body === undefined
236
+ ? undefined
237
+ : {
238
+ tellId: randomUUID(),
239
+ body,
240
+ ...(schemaJson === undefined ? {} : { schemaJson }),
241
+ ...(schema === undefined ? {} : { schema }),
242
+ ...(initiator === undefined ? {} : { initiator }),
243
+ };
246
244
  return {
247
245
  path,
248
246
  archetype,
@@ -255,171 +253,156 @@ async function parseCallInput(input) {
255
253
  ...(alias === undefined ? {} : { alias }),
256
254
  ...(values.allowed === undefined ? {} : { allowed: values.allowed }),
257
255
  seat,
258
- initialTell,
256
+ ...(initialTell === undefined ? {} : { initialTell }),
259
257
  ...(observe === undefined ? {} : { observe }),
260
258
  };
261
259
  }
260
+ function callConfiguration(input, execution) {
261
+ return {
262
+ ...(input.home === undefined ? {} : { home: input.home }),
263
+ ...(input.settings === undefined ? {} : { settings: input.settings }),
264
+ execution,
265
+ };
266
+ }
262
267
  function callAdmissionInput(input, execution) {
263
268
  return {
264
269
  archetype: input.archetype,
265
- initialTell: {
266
- tellId: input.initialTell.tellId,
267
- body: input.initialTell.body,
268
- ...(input.initialTell.schemaJson === undefined ? {} : { schemaJson: input.initialTell.schemaJson }),
269
- ...(input.initialTell.initiator === undefined ? {} : { initiator: input.initialTell.initiator }),
270
- },
270
+ ...(input.initialTell === undefined
271
+ ? {}
272
+ : {
273
+ initialTell: {
274
+ tellId: input.initialTell.tellId,
275
+ body: input.initialTell.body,
276
+ ...(input.initialTell.schemaJson === undefined ? {} : { schemaJson: input.initialTell.schemaJson }),
277
+ ...(input.initialTell.initiator === undefined ? {} : { initiator: input.initialTell.initiator }),
278
+ },
279
+ }),
271
280
  ...(input.allowed === undefined ? {} : { allowed: input.allowed }),
272
281
  ...(execution === undefined ? {} : { cwd: execution.cwd }),
273
282
  ...(input.signal === undefined ? {} : { signal: input.signal }),
274
283
  };
275
284
  }
276
- async function prepareCall(input, context) {
277
- const parsed = await parseCallInput(input);
278
- const execution = await resolveCallExecution(parsed.cwd === undefined ? {} : { cwd: parsed.cwd });
279
- const world = akumaWorld(parsed.path, parsed.home, parsed.settings, context);
280
- const { born, akuma } = await admitCall({
281
- path: parsed.path,
282
- world,
283
- call: callAdmissionInput(parsed, execution),
284
- context: execution === undefined ? {} : { cwdCanonical: true },
285
- ...(parsed.settings === undefined ? {} : { settings: parsed.settings }),
286
- ...(parsed.seat === undefined ? {} : { contractId: parsed.seat.id }),
287
- });
288
- const completedExecution = execution ?? born.execution;
289
- const dispatch = parsed.seat === undefined
290
- ? { kind: "none" }
291
- : await dispatchStage({ repository: parsed.seat.scope, akuId: akuma, contractId: parsed.seat.id });
292
- const aliasStage = await resolveAliasStage(parsed.path, parsed.alias, dispatch, akuma);
285
+ function callResultOf(akuma, execution, dispatch, alias, initialTell) {
293
286
  return {
294
- path: parsed.path,
295
- born,
296
- execution: completedExecution,
297
- mode: parsed.mode,
298
- timeoutMs: parsed.timeoutMs,
299
- ...(parsed.signal === undefined ? {} : { signal: parsed.signal }),
287
+ kind: "called",
288
+ akuma,
289
+ execution,
300
290
  dispatch,
301
- alias: aliasStage,
302
- initialTell: parsed.initialTell,
303
- ...(parsed.observe === undefined ? {} : { observe: parsed.observe }),
291
+ alias,
292
+ ...(initialTell?.schema === undefined ? {} : { structured: true }),
304
293
  };
305
294
  }
306
- async function publishCallTarget(born) {
307
- const world = akumaWorld(born.path);
308
- const contractId = born.dispatch.kind === "dispatched" ? born.dispatch.dispatch.contractId : undefined;
309
- const handle = await world.publish(born.born, { ...(contractId === undefined ? {} : { contractId }) }, born.signal);
295
+ function failedCall(result, tellId, error, tell) {
310
296
  return {
311
- born,
312
- handle,
313
- result: {
314
- kind: "called",
315
- akuma: handle.id,
316
- execution: born.execution,
317
- dispatch: born.dispatch,
318
- alias: born.alias,
319
- ...(born.initialTell.schema === undefined ? {} : { structured: true }),
320
- },
321
- };
322
- }
323
- function failedCall(call, error, tell) {
324
- return {
325
- ...call.result,
297
+ ...result,
326
298
  observation: {
327
299
  kind: "failed",
328
- tellId: call.born.initialTell.tellId,
300
+ tellId,
329
301
  ...(tell === undefined ? {} : { tell }),
330
302
  failure: integrationFailure(error),
331
303
  },
332
304
  };
333
305
  }
334
- async function admitCallTell(call) {
335
- const { born, handle } = call;
336
- if (born.born.kind === "requested")
337
- return { kind: "admitted" };
338
- let admitted;
339
- try {
340
- admitted = await handle.admitInitialTell(born.initialTell, {
341
- ...(born.signal === undefined ? {} : { signal: born.signal }),
342
- });
343
- }
344
- catch (error) {
345
- if (born.signal?.aborted)
346
- throw error;
347
- return { kind: "failed", result: failedCall(call, error) };
348
- }
349
- if (admitted.kind === "birth-failed")
350
- return { kind: "failed", result: failedCall(call, new Error(admitted.diagnostic)) };
351
- if (admitted.kind === "not-born")
352
- return {
353
- kind: "failed",
354
- result: failedCall(call, new Error(`Akuma ${handle.id} was not born for its initial Tell`)),
355
- };
356
- const wake = admitted.wake;
357
- void wake.catch(() => undefined);
358
- return { kind: "admitted", wake };
359
- }
360
- async function detachCall(call, admission) {
361
- let tell;
362
- try {
363
- tell =
364
- admission.wake === undefined
365
- ? await call.handle.admittedReceipt(call.born.initialTell.tellId)
366
- : await admission.wake;
367
- return { ...call.result, observation: { kind: "detached", tell } };
368
- }
369
- catch (error) {
370
- if (admission.wake !== undefined)
371
- tell = await call.handle.admittedReceipt(call.born.initialTell.tellId).catch(() => undefined);
372
- return failedCall(call, error, tell);
373
- }
374
- }
375
- async function observeCall(call, admission) {
376
- const { born, handle } = call;
377
- let tell;
306
+ async function observeCall(input) {
378
307
  const onObserve = {
379
308
  admitted: async (receipt, id) => {
380
- tell = receipt;
381
- await born.observe?.admitted?.(receipt, id, {
382
- dispatch: born.dispatch,
383
- alias: born.alias,
309
+ await input.observe?.admitted?.(receipt, id, {
310
+ dispatch: input.result.dispatch,
311
+ alias: input.result.alias,
384
312
  });
385
313
  },
386
- ...(born.observe?.observe === undefined ? {} : { observe: born.observe.observe }),
314
+ ...(input.observe?.observe === undefined ? {} : { observe: input.observe.observe }),
387
315
  };
388
316
  try {
389
- const observed = await observeAdmittedTellWaitAkuma({
390
- path: born.path,
391
- id: handle.id,
392
- tellId: born.initialTell.tellId,
393
- timeoutMs: born.timeoutMs,
394
- ...(admission.wake === undefined ? {} : { wake: admission.wake }),
395
- ...(born.signal === undefined ? {} : { signal: born.signal }),
317
+ const observed = await observeAdmittedAskAkuma({
318
+ path: input.path,
319
+ id: input.akuma,
320
+ tellId: input.initialTell.tellId,
321
+ timeoutMs: input.timeoutMs,
322
+ receipt: input.receipt,
323
+ ...(input.signal === undefined ? {} : { signal: input.signal }),
396
324
  onObserve,
397
325
  });
398
326
  return {
399
- ...call.result,
327
+ ...input.result,
400
328
  observation: {
401
329
  kind: "observed",
402
330
  tell: observed.tell,
403
- observation: born.initialTell.schema === undefined
331
+ observation: input.initialTell.schema === undefined
404
332
  ? observed.observation
405
- : decodeTellWaitObservation(observed.observation, born.initialTell.schema),
333
+ : decodeAskObservation(observed.observation, input.initialTell.schema),
406
334
  ...(observed.completedAt === undefined ? {} : { completedAt: observed.completedAt }),
407
335
  },
408
336
  };
409
337
  }
410
338
  catch (error) {
411
- if (born.signal?.aborted)
339
+ if (input.signal?.aborted)
412
340
  throw error;
413
- return failedCall(call, error, tell);
341
+ return failedCall(input.result, input.initialTell.tellId, error, input.receipt);
414
342
  }
415
343
  }
344
+ /** One failure that still names the child the invocation durably admitted. */
345
+ function knownChildFailure(reason, akuma) {
346
+ const error = reason instanceof Error ? reason : new Error(reason === undefined ? "call aborted" : String(reason));
347
+ Object.defineProperty(error, "akuma", { value: akuma, enumerable: false });
348
+ return error;
349
+ }
350
+ /** Preserve a native failure identity; only an unknown shape becomes a fresh Error. */
351
+ function asError(failure) {
352
+ return failure instanceof Error ? failure : new Error(failure === undefined ? "call failed" : String(failure));
353
+ }
416
354
  export async function callAkumas(input, execution = localExecutionContext()) {
417
- const born = await prepareCall(input, execution);
418
- const call = await publishCallTarget(born);
419
- const admission = await admitCallTell(call);
420
- if (admission.kind === "failed")
421
- return admission.result;
422
- return born.mode === "detach" ? await detachCall(call, admission) : await observeCall(call, admission);
355
+ const parsed = await parseCallInput(input);
356
+ const selectedExecution = await resolveCallExecution(parsed.cwd === undefined ? {} : { cwd: parsed.cwd });
357
+ const seat = parsed.seat;
358
+ const admitted = await admitAkumaCall(parsed.path, callConfiguration(parsed, execution), {
359
+ ...callAdmissionInput(parsed, selectedExecution),
360
+ ...(seat === undefined ? {} : { contractId: seat.id }),
361
+ }, selectedExecution === undefined ? {} : { cwdCanonical: true });
362
+ // One caller-wiring sequence, after the prepared executor returned its local value
363
+ // or the forwarded caller received its exact live output, before outcome observation.
364
+ await emitCalledSignal({
365
+ path: parsed.path,
366
+ ...(parsed.settings === undefined ? {} : { settings: parsed.settings }),
367
+ admitted,
368
+ ...(seat === undefined ? {} : { contractId: seat.id }),
369
+ });
370
+ const dispatch = seat === undefined
371
+ ? { kind: "none" }
372
+ : await dispatchStage({ repository: seat.scope, akuId: admitted.id, contractId: seat.id });
373
+ const aliasStage = await resolveAliasStage(parsed.path, parsed.alias, dispatch, admitted.id);
374
+ const result = callResultOf(admitted.id, selectedExecution ?? admitted.execution, dispatch, aliasStage, parsed.initialTell);
375
+ if (parsed.initialTell === undefined) {
376
+ // A prompt-free call must not report a clean birth when a launch stage failed
377
+ // after the child was durably born; keep the native failure and the child.
378
+ if (admitted.failure !== undefined)
379
+ throw knownChildFailure(admitted.failure, admitted.id);
380
+ return { ...result, observation: { kind: "born" } };
381
+ }
382
+ const receipt = admitted.tell;
383
+ if (receipt === undefined) {
384
+ if (parsed.signal?.aborted === true && admitted.failure !== undefined) {
385
+ // Cancellation keeps its native meaning, and the already-born child stays
386
+ // attached as private invocation evidence rather than being discarded.
387
+ throw knownChildFailure(parsed.signal.reason, admitted.id);
388
+ }
389
+ const failure = admitted.failure === undefined
390
+ ? new Error(`Akuma ${admitted.id} returned no exact initial Tell receipt`)
391
+ : asError(admitted.failure);
392
+ return failedCall(result, parsed.initialTell.tellId, failure);
393
+ }
394
+ return parsed.mode === "detach"
395
+ ? { ...result, observation: { kind: "detached", tell: receipt } }
396
+ : await observeCall({
397
+ path: parsed.path,
398
+ akuma: admitted.id,
399
+ result,
400
+ initialTell: parsed.initialTell,
401
+ receipt,
402
+ timeoutMs: parsed.timeoutMs,
403
+ ...(parsed.signal === undefined ? {} : { signal: parsed.signal }),
404
+ ...(parsed.observe === undefined ? {} : { observe: parsed.observe }),
405
+ });
423
406
  }
424
407
  export async function forkAkumas(input) {
425
408
  const values = requireInput(input, "Akumas.fork input");
@@ -428,7 +411,7 @@ export async function forkAkumas(input) {
428
411
  const addressed = await addressAkuma({ path: values.path, akuma: nonblank(values.akuma, "akuma") });
429
412
  const { path, id: akuma } = addressed;
430
413
  const repository = values.repo === undefined ? undefined : scopeForRepo(values.repo);
431
- const receipt = await createAkumaProduct(path).selectHandle({ id: akuma }).fork({ at });
414
+ const receipt = await new AkumaOwner(akuma, path).fork({ at });
432
415
  if (receipt.kind !== "forked")
433
416
  return { ...receipt, parent: akuma };
434
417
  const dispatch = repository === undefined
@@ -1,27 +1,20 @@
1
+ /** @architectureCompositionRoot */
1
2
  import type { AkumaList, AkumaListInput } from "../akuma/akuma.js";
2
- import { type ExecutionContext, type LibraryExecution } from "../akuma/requests.js";
3
- import type { CallInput as LibraryCallInput, CallResult, CallWaitHead, DispatchStage, ForkInput as LibraryForkInput, ForkResult } from "./akuma-creation.js";
4
- import { type AkumaHistoryInput as LibraryAkumaHistoryInput, type AkumaHistoryResult, type AkumaInterruptInput as LibraryAkumaInterruptInput, type AkumaInterruptResult, type AkumaKillInput as LibraryAkumaKillInput, type AkumaKillResult, type AkumaObservation, type AkumaObservationStage, type AkumaTellInput as LibraryAkumaTellInput, type AkumaTellResult, type AkumaWaitInput as LibraryAkumaWaitInput, type AkumaWaitResult } from "./fleet.js";
5
- import type { AkumaAddressInput as LibraryAkumaAddressInput, AkumaWorldScopeRefusal } from "./address.js";
6
- export { AkumaWorldScopeError, AkumaAddressError } from "./address.js";
7
- import type { TellResult, TellWake } from "../akuma/akuma.js";
3
+ import type { TellResult, TellWake } from "../akuma/body.js";
4
+ import { type ExecutionContext } from "../akuma/requests.js";
8
5
  import type { DispatchAssociation } from "../dispatch/association.js";
9
6
  import type { CreatedTaskObservation } from "../task/created-observation.js";
10
7
  import { type WorldRoot } from "../world.js";
11
- export type AkumaAddressInput = Omit<LibraryAkumaAddressInput, "path">;
12
- export type AkumaWaitInput = Omit<LibraryAkumaWaitInput, "path">;
13
- export type AkumaKillInput = Omit<LibraryAkumaKillInput, "path">;
14
- export type AkumaTellInput = Omit<LibraryAkumaTellInput, "path">;
15
- export type AkumaInterruptInput = Omit<LibraryAkumaInterruptInput, "path">;
16
- export type AkumaHistoryInput = Omit<LibraryAkumaHistoryInput, "path">;
17
- export type CallInput = Omit<LibraryCallInput, "path">;
18
- export type ForkInput = Omit<LibraryForkInput, "path">;
19
- export type AkumasOfInput = Readonly<{
20
- execution?: LibraryExecution;
21
- }>;
22
- export type { AkumaHistoryResult, AkumaInterruptResult, AkumaKillResult, AkumaObservation, AkumaObservationStage, AkumaTellResult, AkumaWaitResult, CallResult, CallWaitHead, CreatedTaskObservation, DispatchStage, DispatchAssociation, ForkResult, TellResult, TellWake, };
23
- export type { AkumaWorldScopeRefusal };
24
- export type { AkumaList, AkumaListInput };
8
+ import type { AkumaAddressInput, AkumaWorldScopeRefusal } from "./address.js";
9
+ import type { CallInput, CallResult, CallWaitHead, DispatchStage, ForkInput, ForkResult } from "./akuma-creation.js";
10
+ import { type AkumaAskInput, type AkumaAskResult, type AkumaHistoryInput, type AkumaHistoryResult, type AkumaKillInput, type AkumaKillResult, type AkumaObservation, type AkumaObservationStage, type AkumaTellInput, type AkumaTellResult, type AkumaWaitInput, type AkumaWaitResult } from "./selection.js";
11
+ export { AkumaAddressError, AkumaWorldScopeError } from "./address.js";
12
+ export type { AkumaAddressInput } from "./address.js";
13
+ export type { CallInput, ForkInput } from "./akuma-creation.js";
14
+ export type { AkumaAskInput, AkumaHistoryInput, AkumaKillInput, AkumaTellInput, AkumaWaitInput } from "./selection.js";
15
+ export type { AkumaAskResult, AkumaHistoryResult, AkumaKillResult, AkumaList, AkumaListInput, AkumaObservation, AkumaObservationStage, AkumaTellResult, AkumaWaitResult, AkumaWorldScopeRefusal, CallResult, CallWaitHead, CreatedTaskObservation, DispatchAssociation, DispatchStage, ForkResult, TellResult, TellWake, };
16
+ /** The existing native wait-observation seam, exposed type-only for CLI composition. */
17
+ export type { WaitObservedAkuma, WaitObserver, WaitSelectedAkuma } from "../akuma/akuma-wait.js";
25
18
  export type Akumas = AkumasHandle;
26
19
  declare class AkumasHandle {
27
20
  #private;
@@ -31,12 +24,17 @@ declare class AkumasHandle {
31
24
  fork(input: ForkInput): Promise<ForkResult>;
32
25
  status(input: AkumaAddressInput): Promise<AkumaObservation>;
33
26
  tell(input: AkumaTellInput): Promise<AkumaTellResult>;
27
+ ask<T = string>(input: AkumaAskInput<T>): Promise<AkumaAskResult<T>>;
34
28
  wait(input: AkumaWaitInput): Promise<AkumaWaitResult>;
35
29
  kill(input: AkumaKillInput): Promise<AkumaKillResult>;
36
30
  history(input: AkumaHistoryInput): Promise<AkumaHistoryResult>;
37
- interrupt(input: AkumaInterruptInput): Promise<AkumaInterruptResult>;
38
31
  private withWorld;
39
32
  }
33
+ /**
34
+ * The one Akumas composition. Public `of` fixes local execution; CLI and Body pass their captured
35
+ * internal channel through `akumasWithExecution` instead of a second constructor.
36
+ */
37
+ export declare function akumasWithExecution(world: WorldRoot, execution: ExecutionContext): Akumas;
40
38
  export declare const Akumas: Readonly<{
41
- of(world: WorldRoot, input?: AkumasOfInput): Akumas;
39
+ of(world: WorldRoot): Akumas;
42
40
  }>;
@@ -1,21 +1,28 @@
1
- /** @architectureCompositionRoot */
2
- import { readAkumaCatalog } from "../akuma/akuma.js";
3
- import { libraryExecution, localExecutionContext, } from "../akuma/requests.js";
1
+ import { readAkumaRoster } from "../akuma/akuma.js";
2
+ import { localExecutionContext } from "../akuma/requests.js";
3
+ import { readAliases } from "../alias/index.js";
4
+ import { World } from "../world.js";
4
5
  import { callAkumas, forkAkumas } from "./akuma-creation.js";
5
- import { historyAkuma, interruptAkuma, killAkuma, statusAkuma, tellAkuma, waitAkuma, } from "./fleet.js";
6
6
  import { requireInput } from "./input.js";
7
- export { AkumaWorldScopeError, AkumaAddressError } from "./address.js";
8
- import { World } from "../world.js";
7
+ import { askAkumaOn, historyAkuma, killAkumaOn, selectionSeam, statusAkuma, tellAkumaOn, waitAkumaOn, } from "./selection.js";
8
+ export { AkumaAddressError, AkumaWorldScopeError } from "./address.js";
9
9
  class AkumasHandle {
10
10
  #world;
11
11
  #execution;
12
+ #selection;
12
13
  constructor(world, execution) {
13
14
  this.#world = world;
14
15
  this.#execution = execution;
16
+ // One typed route seam captured at construction: no operation re-derives it.
17
+ this.#selection = selectionSeam(execution);
15
18
  Object.freeze(this);
16
19
  }
17
20
  async list(input) {
18
- return readAkumaCatalog(await World.prove(this.#world), input);
21
+ const path = await World.prove(this.#world);
22
+ const roster = await readAkumaRoster(path, input);
23
+ if (roster.rows.length === 0)
24
+ return roster;
25
+ return withRosterAliases(roster, await readAliases(path));
19
26
  }
20
27
  call(input) {
21
28
  return callAkumas(this.withWorld(input, "Akumas.call input"), this.#execution);
@@ -27,20 +34,20 @@ class AkumasHandle {
27
34
  return statusAkuma(this.withWorld(input, "Akumas.status input"));
28
35
  }
29
36
  tell(input) {
30
- return tellAkuma(this.withWorld(input, "Akumas.tell input"), this.#execution);
37
+ return tellAkumaOn(this.#selection, this.withWorld(input, "Akumas.tell input"));
38
+ }
39
+ ask(input) {
40
+ return askAkumaOn(this.#selection, this.withWorld(input, "Akumas.ask input"));
31
41
  }
32
42
  wait(input) {
33
- return waitAkuma(this.withWorld(input, "Akumas.wait input"), this.#execution);
43
+ return waitAkumaOn(this.#selection, this.withWorld(input, "Akumas.wait input"));
34
44
  }
35
45
  kill(input) {
36
- return killAkuma(this.withWorld(input, "Akumas.kill input"), this.#execution);
46
+ return killAkumaOn(this.#selection, this.withWorld(input, "Akumas.kill input"));
37
47
  }
38
48
  history(input) {
39
49
  return historyAkuma(this.withWorld(input, "Akumas.history input"));
40
50
  }
41
- interrupt(input) {
42
- return interruptAkuma(this.withWorld(input, "Akumas.interrupt input"));
43
- }
44
51
  withWorld(input, label) {
45
52
  const values = requireInput(input, label);
46
53
  if (Object.hasOwn(values, "path"))
@@ -48,14 +55,30 @@ class AkumasHandle {
48
55
  return { ...values, path: this.#world };
49
56
  }
50
57
  }
51
- function executionFor(input) {
52
- const values = requireInput(input === undefined ? {} : input, "Akumas.of input", ["execution"]);
53
- return values.execution === undefined ? localExecutionContext() : libraryExecution(values.execution);
58
+ /**
59
+ * Upper World composition attaches the frozen Alias context to the lower
60
+ * roster's native membership and semantic order without reopening its extent.
61
+ */
62
+ function withRosterAliases(roster, bindings) {
63
+ const byId = new Map();
64
+ for (const binding of bindings) {
65
+ const aliases = byId.get(binding.akuId) ?? [];
66
+ aliases.push(binding.alias);
67
+ byId.set(binding.akuId, aliases);
68
+ }
69
+ return { ...roster, rows: roster.rows.map((row) => ({ ...row, aliases: byId.get(row.id) ?? [] })) };
70
+ }
71
+ /**
72
+ * The one Akumas composition. Public `of` fixes local execution; CLI and Body pass their captured
73
+ * internal channel through `akumasWithExecution` instead of a second constructor.
74
+ */
75
+ export function akumasWithExecution(world, execution) {
76
+ if (typeof world !== "string")
77
+ throw new TypeError("Akumas.of world must be a WorldRoot");
78
+ return new AkumasHandle(world, execution);
54
79
  }
55
80
  export const Akumas = Object.freeze({
56
- of(world, input) {
57
- if (typeof world !== "string")
58
- throw new TypeError("Akumas.of world must be a WorldRoot");
59
- return new AkumasHandle(world, executionFor(input));
81
+ of(world) {
82
+ return akumasWithExecution(world, localExecutionContext());
60
83
  },
61
84
  });