@astrosheep/keiyaku 4.5.29 → 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 (417) 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.js +69 -19
  72. package/build/src/akuma/publication.d.ts +84 -3
  73. package/build/src/akuma/publication.js +145 -2
  74. package/build/src/akuma/read-pool.d.ts +2 -0
  75. package/build/src/akuma/read-pool.js +15 -0
  76. package/build/src/akuma/request-rendezvous.js +10 -0
  77. package/build/src/akuma/request-serve.js +7 -0
  78. package/build/src/akuma/request-wire.d.ts +14 -26
  79. package/build/src/akuma/request-wire.js +4 -0
  80. package/build/src/akuma/requests.d.ts +0 -2
  81. package/build/src/akuma/requests.js +0 -17
  82. package/build/src/akuma/{fleet-observation.d.ts → selection-observation.d.ts} +37 -36
  83. package/build/src/akuma/selection-observation.js +65 -0
  84. package/build/src/akuma/{fleet-owner-port.d.ts → selection-owner-port.d.ts} +3 -3
  85. package/build/src/akuma/{fleet-owner-port.js → selection-owner-port.js} +11 -17
  86. package/build/src/akuma/{fleet-request.d.ts → selection-request.d.ts} +42 -82
  87. package/build/src/akuma/{fleet-request.js → selection-request.js} +92 -136
  88. package/build/src/akuma/turn-drive.js +73 -14
  89. package/build/src/akuma-body.js +91 -56
  90. package/build/src/body/amend.d.ts +5 -0
  91. package/build/src/body/amend.js +26 -50
  92. package/build/src/body/arc.d.ts +4 -2
  93. package/build/src/body/arc.js +19 -26
  94. package/build/src/body/criteria.d.ts +6 -0
  95. package/build/src/body/criteria.js +37 -0
  96. package/build/src/body/decode.js +5 -42
  97. package/build/src/body/region.d.ts +5 -0
  98. package/build/src/body/region.js +45 -2
  99. package/build/src/body/render.js +2 -4
  100. package/build/src/cli/activity.d.ts +26 -0
  101. package/build/src/cli/activity.js +75 -0
  102. package/build/src/cli/actor.d.ts +3 -1
  103. package/build/src/cli/actor.js +15 -2
  104. package/build/src/cli/commands/akuma-grammar.d.ts +75 -0
  105. package/build/src/cli/commands/akuma-grammar.js +414 -0
  106. package/build/src/cli/commands/akuma.d.ts +5 -69
  107. package/build/src/cli/commands/akuma.js +352 -319
  108. package/build/src/cli/commands/amend.d.ts +4 -5
  109. package/build/src/cli/commands/amend.js +1 -2
  110. package/build/src/cli/commands/bind.d.ts +4 -5
  111. package/build/src/cli/commands/bind.js +7 -10
  112. package/build/src/cli/commands/contract-grammar.d.ts +112 -0
  113. package/build/src/cli/commands/contract-grammar.js +282 -0
  114. package/build/src/cli/commands/contract-help.d.ts +17 -22
  115. package/build/src/cli/commands/contract-help.js +37 -24
  116. package/build/src/cli/commands/contract.d.ts +18 -97
  117. package/build/src/cli/commands/contract.js +621 -233
  118. package/build/src/cli/commands/install.d.ts +1 -1
  119. package/build/src/cli/commands/install.js +2 -2
  120. package/build/src/cli/commands/task-grammar.d.ts +19 -0
  121. package/build/src/cli/commands/task-grammar.js +438 -0
  122. package/build/src/cli/commands/task-query.js +23 -104
  123. package/build/src/cli/commands/task.d.ts +5 -20
  124. package/build/src/cli/commands/task.js +414 -364
  125. package/build/src/cli/coordinates.d.ts +10 -0
  126. package/build/src/cli/coordinates.js +20 -0
  127. package/build/src/cli/draft.d.ts +7 -1
  128. package/build/src/cli/main.js +10 -1
  129. package/build/src/cli/parse.d.ts +8 -9
  130. package/build/src/cli/parse.js +62 -62
  131. package/build/src/cli/render/akuma-activity.d.ts +54 -36
  132. package/build/src/cli/render/akuma-activity.js +262 -242
  133. package/build/src/cli/render/akuma-tool.d.ts +8 -4
  134. package/build/src/cli/render/akuma-tool.js +6 -5
  135. package/build/src/cli/render/akuma.d.ts +36 -16
  136. package/build/src/cli/render/akuma.js +65 -132
  137. package/build/src/cli/render/audit.d.ts +6 -2
  138. package/build/src/cli/render/audit.js +59 -28
  139. package/build/src/cli/render/catalog.d.ts +11 -2
  140. package/build/src/cli/render/catalog.js +75 -95
  141. package/build/src/cli/render/contract-history.d.ts +3 -1
  142. package/build/src/cli/render/contract-history.js +215 -22
  143. package/build/src/cli/render/contract-observation.d.ts +10 -5
  144. package/build/src/cli/render/contract-observation.js +29 -46
  145. package/build/src/cli/render/contract.d.ts +10 -3
  146. package/build/src/cli/render/contract.js +252 -103
  147. package/build/src/cli/render/effects.d.ts +26 -0
  148. package/build/src/cli/render/effects.js +41 -0
  149. package/build/src/cli/render/execution-progress.d.ts +18 -6
  150. package/build/src/cli/render/execution-progress.js +34 -31
  151. package/build/src/cli/render/kanshi-akuma.d.ts +1 -2
  152. package/build/src/cli/render/kanshi-akuma.js +5 -26
  153. package/build/src/cli/render/kanshi.js +107 -128
  154. package/build/src/cli/render/marks.d.ts +13 -0
  155. package/build/src/cli/render/marks.js +74 -0
  156. package/build/src/cli/render/nuke.js +18 -7
  157. package/build/src/cli/render/receipt.d.ts +10 -4
  158. package/build/src/cli/render/receipt.js +124 -44
  159. package/build/src/cli/render/reconcile.d.ts +5 -0
  160. package/build/src/cli/render/reconcile.js +152 -0
  161. package/build/src/cli/render/refusal.d.ts +21 -4
  162. package/build/src/cli/render/refusal.js +60 -33
  163. package/build/src/cli/render/region.js +3 -2
  164. package/build/src/cli/render/settings.js +2 -12
  165. package/build/src/cli/render/task.d.ts +37 -6
  166. package/build/src/cli/render/task.js +161 -157
  167. package/build/src/cli/render/terminal.d.ts +20 -1
  168. package/build/src/cli/render/terminal.js +92 -18
  169. package/build/src/cli/runtime.d.ts +32 -8
  170. package/build/src/cli/runtime.js +157 -165
  171. package/build/src/cli/selectors.d.ts +5 -2
  172. package/build/src/cli/selectors.js +11 -3
  173. package/build/src/cli/streams.d.ts +11 -0
  174. package/build/src/cli/streams.js +32 -0
  175. package/build/src/cli/usage.d.ts +2 -0
  176. package/build/src/cli/usage.js +12 -8
  177. package/build/src/contract-guidance.js +3 -7
  178. package/build/src/contract-worktree.d.ts +20 -28
  179. package/build/src/contract-worktree.js +18 -70
  180. package/build/src/coordination/durable-file.d.ts +2 -2
  181. package/build/src/coordination/durable-file.js +0 -27
  182. package/build/src/core/facts/codec.d.ts +1 -2
  183. package/build/src/core/facts/codec.js +6 -7
  184. package/build/src/core/facts/gate.d.ts +0 -1
  185. package/build/src/core/facts/gate.js +0 -82
  186. package/build/src/core/facts/types.d.ts +1 -2
  187. package/build/src/core/verbs/abandon.d.ts +2 -6
  188. package/build/src/core/verbs/abandon.js +0 -16
  189. package/build/src/core/verbs/amend.d.ts +0 -1
  190. package/build/src/core/verbs/amend.js +0 -20
  191. package/build/src/core/verbs/arc.d.ts +7 -8
  192. package/build/src/core/verbs/arc.js +2 -19
  193. package/build/src/core/verbs/attestation.d.ts +2 -6
  194. package/build/src/core/verbs/attestation.js +0 -16
  195. package/build/src/core/verbs/bind.d.ts +0 -1
  196. package/build/src/core/verbs/bind.js +0 -16
  197. package/build/src/core/verbs/deliver.d.ts +0 -1
  198. package/build/src/core/verbs/deliver.js +0 -16
  199. package/build/src/core/verbs/placement.d.ts +2 -1
  200. package/build/src/core/verbs/placement.js +10 -59
  201. package/build/src/git/admission.d.ts +6 -4
  202. package/build/src/git/admission.js +4 -0
  203. package/build/src/git/hooks.d.ts +55 -30
  204. package/build/src/git/hooks.js +30 -3
  205. package/build/src/git/identity.d.ts +6 -0
  206. package/build/src/git/identity.js +47 -0
  207. package/build/src/git/integration.d.ts +31 -13
  208. package/build/src/git/integration.js +32 -1
  209. package/build/src/git/nuke.d.ts +10 -1
  210. package/build/src/git/nuke.js +31 -11
  211. package/build/src/git/observe.js +2 -15
  212. package/build/src/git/private-state-seat.d.ts +6 -7
  213. package/build/src/git/private-state-seat.js +8 -6
  214. package/build/src/git/read-observation.d.ts +6 -1
  215. package/build/src/git/read-observation.js +81 -46
  216. package/build/src/git/reconcile.d.ts +117 -40
  217. package/build/src/git/reconcile.js +169 -40
  218. package/build/src/git/scratch.d.ts +7 -4
  219. package/build/src/git/scratch.js +28 -6
  220. package/build/src/git/target-placement.d.ts +53 -38
  221. package/build/src/git/target-placement.js +69 -54
  222. package/build/src/git/tender.d.ts +37 -28
  223. package/build/src/git/tender.js +39 -0
  224. package/build/src/git/terminal-reconcile.js +21 -23
  225. package/build/src/git/terminal-seal.d.ts +8 -6
  226. package/build/src/git/terminal-seal.js +10 -0
  227. package/build/src/git/workspace.d.ts +29 -15
  228. package/build/src/git/workspace.js +28 -2
  229. package/build/src/identity/normalize.js +19 -6
  230. package/build/src/index.d.ts +78 -7
  231. package/build/src/index.js +52 -4
  232. package/build/src/kanshi/read.d.ts +3 -3
  233. package/build/src/kanshi/read.js +21 -21
  234. package/build/src/kanshi/report.d.ts +9 -8
  235. package/build/src/kanshi/roster.d.ts +2 -0
  236. package/build/src/kanshi/roster.js +2 -0
  237. package/build/src/kanshi/select.js +7 -3
  238. package/build/src/library/address.d.ts +3 -7
  239. package/build/src/library/address.js +7 -7
  240. package/build/src/library/akuma-creation.d.ts +21 -32
  241. package/build/src/library/akuma-creation.js +148 -165
  242. package/build/src/library/akumas.d.ts +20 -22
  243. package/build/src/library/akumas.js +43 -20
  244. package/build/src/library/bind.d.ts +107 -13
  245. package/build/src/library/bind.js +29 -23
  246. package/build/src/library/continuation.d.ts +556 -28
  247. package/build/src/library/continuation.js +29 -54
  248. package/build/src/library/contract-composition.d.ts +40 -0
  249. package/build/src/library/contract-composition.js +105 -0
  250. package/build/src/library/contract-creation.d.ts +7 -0
  251. package/build/src/library/contract-creation.js +192 -0
  252. package/build/src/library/contract-execution.d.ts +29 -40
  253. package/build/src/library/contract-execution.js +503 -128
  254. package/build/src/library/contract-operations.d.ts +275 -134
  255. package/build/src/library/contract-operations.js +83 -92
  256. package/build/src/library/contract-outcomes.d.ts +71 -0
  257. package/build/src/library/contract-outcomes.js +32 -0
  258. package/build/src/library/contract-settings.d.ts +25 -0
  259. package/build/src/library/contract-settings.js +135 -0
  260. package/build/src/library/contract-types.d.ts +17 -38
  261. package/build/src/library/delivery.d.ts +530 -10
  262. package/build/src/library/delivery.js +20 -45
  263. package/build/src/library/input.d.ts +3 -1
  264. package/build/src/library/input.js +11 -16
  265. package/build/src/library/invocation.d.ts +87 -0
  266. package/build/src/library/invocation.js +290 -0
  267. package/build/src/library/keiyaku.d.ts +45 -22
  268. package/build/src/library/keiyaku.js +134 -8
  269. package/build/src/library/nuke.d.ts +2 -11
  270. package/build/src/library/nuke.js +70 -57
  271. package/build/src/library/outcome.d.ts +13196 -0
  272. package/build/src/library/outcome.js +487 -0
  273. package/build/src/library/reconcile.d.ts +96 -24
  274. package/build/src/library/reconcile.js +102 -42
  275. package/build/src/library/refusal.d.ts +470 -42
  276. package/build/src/library/refusal.js +55 -143
  277. package/build/src/library/region.d.ts +15 -7
  278. package/build/src/library/region.js +23 -3
  279. package/build/src/library/repo.d.ts +2 -12
  280. package/build/src/library/repo.js +1 -22
  281. package/build/src/library/selection.d.ts +121 -0
  282. package/build/src/library/{fleet.js → selection.js} +169 -152
  283. package/build/src/plugin/public.d.ts +2 -0
  284. package/build/src/protocol/abandon.d.ts +2 -2
  285. package/build/src/protocol/abandon.js +1 -0
  286. package/build/src/protocol/amend.js +1 -0
  287. package/build/src/protocol/arc.d.ts +6 -4
  288. package/build/src/protocol/attempt.d.ts +4 -2
  289. package/build/src/protocol/attempt.js +10 -0
  290. package/build/src/protocol/audit.d.ts +255 -52
  291. package/build/src/protocol/audit.js +63 -5
  292. package/build/src/protocol/bind.d.ts +18 -17
  293. package/build/src/protocol/bind.js +9 -28
  294. package/build/src/protocol/completion.d.ts +256 -22
  295. package/build/src/protocol/completion.js +100 -12
  296. package/build/src/protocol/deliver.d.ts +34 -23
  297. package/build/src/protocol/deliver.js +39 -25
  298. package/build/src/protocol/execution-observation.d.ts +36 -37
  299. package/build/src/protocol/execution-observation.js +7 -9
  300. package/build/src/protocol/intent.d.ts +101 -30
  301. package/build/src/protocol/intent.js +74 -1
  302. package/build/src/protocol/operations.d.ts +570 -64
  303. package/build/src/protocol/operations.js +189 -9
  304. package/build/src/protocol/outcome.d.ts +2 -1
  305. package/build/src/protocol/placement.d.ts +2 -2
  306. package/build/src/protocol/placement.js +3 -1
  307. package/build/src/protocol/progress.d.ts +108 -65
  308. package/build/src/protocol/progress.js +82 -132
  309. package/build/src/protocol/read/status.d.ts +4 -3
  310. package/build/src/protocol/read/status.js +6 -5
  311. package/build/src/protocol/reconcile.d.ts +3 -3
  312. package/build/src/protocol/reconcile.js +4 -0
  313. package/build/src/protocol/reintegrate.d.ts +2 -2
  314. package/build/src/protocol/review.d.ts +30 -12
  315. package/build/src/protocol/review.js +15 -24
  316. package/build/src/protocol/run.d.ts +34 -5
  317. package/build/src/protocol/run.js +24 -12
  318. package/build/src/runtime/proc/windows-launch.exe +0 -0
  319. package/build/src/settings.d.ts +0 -10
  320. package/build/src/settings.js +0 -76
  321. package/build/src/settlement/holder.d.ts +1 -1
  322. package/build/src/settlement/settle.d.ts +25 -16
  323. package/build/src/settlement/settle.js +80 -20
  324. package/build/src/task/board.d.ts +3 -1
  325. package/build/src/task/board.js +13 -17
  326. package/build/src/task/catalog.d.ts +0 -4
  327. package/build/src/task/catalog.js +0 -15
  328. package/build/src/task/compose-language.d.ts +19 -9
  329. package/build/src/task/compose-language.js +30 -20
  330. package/build/src/task/compose.d.ts +7 -37
  331. package/build/src/task/compose.js +20 -2
  332. package/build/src/task/created-observation.d.ts +0 -1
  333. package/build/src/task/created-observation.js +1 -4
  334. package/build/src/task/document.d.ts +12 -2
  335. package/build/src/task/document.js +4 -0
  336. package/build/src/task/identity.d.ts +4 -1
  337. package/build/src/task/identity.js +21 -17
  338. package/build/src/task/index.d.ts +36 -16
  339. package/build/src/task/index.js +103 -96
  340. package/build/src/task/lifecycle-operations.d.ts +1 -1
  341. package/build/src/task/mutation-result.d.ts +647 -586
  342. package/build/src/task/mutation-result.js +79 -46
  343. package/build/src/task/mutation.d.ts +298 -270
  344. package/build/src/task/mutation.js +93 -110
  345. package/build/src/task/operation-types.d.ts +6 -49
  346. package/build/src/task/operations.d.ts +2 -1
  347. package/build/src/task/operations.js +35 -12
  348. package/build/src/task/query.d.ts +9 -3
  349. package/build/src/task/query.js +42 -16
  350. package/build/src/task/store.d.ts +2 -1
  351. package/build/src/task/store.js +10 -14
  352. package/build/src/verification/declaration.d.ts +0 -1
  353. package/build/src/verification/declaration.js +1 -18
  354. package/build/src/verification/execution.d.ts +6 -2
  355. package/build/src/verification/observation.d.ts +1 -1
  356. package/package.json +2 -18
  357. package/build/src/akuma/akuma-product.d.ts +0 -58
  358. package/build/src/akuma/akuma-product.js +0 -276
  359. package/build/src/akuma/fleet-execution.js +0 -234
  360. package/build/src/akuma/fleet-observation.js +0 -97
  361. package/build/src/cli/accepted.d.ts +0 -24
  362. package/build/src/cli/accepted.js +0 -167
  363. package/build/src/cli/catalog.d.ts +0 -45
  364. package/build/src/cli/catalog.js +0 -1
  365. package/build/src/cli/commands/akuma-invoke.d.ts +0 -114
  366. package/build/src/cli/commands/akuma-invoke.js +0 -375
  367. package/build/src/cli/commands/contract-invoke.d.ts +0 -34
  368. package/build/src/cli/commands/contract-invoke.js +0 -259
  369. package/build/src/cli/commands/nuke.d.ts +0 -10
  370. package/build/src/cli/commands/nuke.js +0 -20
  371. package/build/src/cli/commands/status-set.d.ts +0 -4
  372. package/build/src/cli/commands/status-set.js +0 -52
  373. package/build/src/cli/commands/task-invoke.d.ts +0 -49
  374. package/build/src/cli/commands/task-invoke.js +0 -306
  375. package/build/src/cli/invoke.d.ts +0 -27
  376. package/build/src/cli/invoke.js +0 -521
  377. package/build/src/cli/render/board.d.ts +0 -3
  378. package/build/src/cli/render/board.js +0 -25
  379. package/build/src/cli/render/status-set.d.ts +0 -5
  380. package/build/src/cli/render/status-set.js +0 -19
  381. package/build/src/cli/render/text.d.ts +0 -3
  382. package/build/src/cli/render/text.js +0 -33
  383. package/build/src/cli/result.d.ts +0 -240
  384. package/build/src/cli/result.js +0 -1
  385. package/build/src/git/result-codec.d.ts +0 -29
  386. package/build/src/git/result-codec.js +0 -309
  387. package/build/src/kanshi/fleet.d.ts +0 -6
  388. package/build/src/kanshi/fleet.js +0 -27
  389. package/build/src/library/audit.d.ts +0 -29
  390. package/build/src/library/audit.js +0 -41
  391. package/build/src/library/composition.d.ts +0 -15
  392. package/build/src/library/composition.js +0 -28
  393. package/build/src/library/configuration.d.ts +0 -4
  394. package/build/src/library/configuration.js +0 -2
  395. package/build/src/library/contract-bind.d.ts +0 -31
  396. package/build/src/library/contract-bind.js +0 -140
  397. package/build/src/library/contract-forwarding.d.ts +0 -55
  398. package/build/src/library/contract-forwarding.js +0 -67
  399. package/build/src/library/contract-handle.d.ts +0 -50
  400. package/build/src/library/contract-handle.js +0 -385
  401. package/build/src/library/contract.d.ts +0 -46
  402. package/build/src/library/contract.js +0 -73
  403. package/build/src/library/execution-result.d.ts +0 -243
  404. package/build/src/library/execution-result.js +0 -101
  405. package/build/src/library/execution.d.ts +0 -8
  406. package/build/src/library/execution.js +0 -102
  407. package/build/src/library/fleet.d.ts +0 -83
  408. package/build/src/library/mutation.d.ts +0 -501
  409. package/build/src/library/mutation.js +0 -248
  410. package/build/src/library/result-codec.d.ts +0 -2
  411. package/build/src/library/result-codec.js +0 -12
  412. package/build/src/protocol/result-codec.d.ts +0 -23
  413. package/build/src/protocol/result-codec.js +0 -488
  414. package/build/src/settlement/result-codec.d.ts +0 -2
  415. package/build/src/settlement/result-codec.js +0 -56
  416. package/build/src/task/public.d.ts +0 -2
  417. package/build/src/task/public.js +0 -1
@@ -0,0 +1,53 @@
1
+ import type { Settings } from "../settings.js";
2
+ import type { WorldRoot } from "../world.js";
3
+ import { type AllowedAction } from "./allowed.js";
4
+ import { type TellResult } from "./body.js";
5
+ import type { CallInitialTell } from "./call-initial-tell.js";
6
+ import { type AllocatedAkuma } from "./identity.js";
7
+ import { type ExecutionContext } from "./requests.js";
8
+ import type { Schema } from "./schema.js";
9
+ type AkumaCallExecution = Readonly<{
10
+ cwd: string;
11
+ source: "input" | "caller" | "process" | "world";
12
+ }>;
13
+ export type AkumaCallInput = Readonly<{
14
+ archetype: string;
15
+ body?: string;
16
+ cwd?: string;
17
+ allowed?: readonly AllowedAction[];
18
+ schema?: Schema<unknown>;
19
+ initiator?: string;
20
+ signal?: AbortSignal;
21
+ }>;
22
+ type AkumaCallContext = Readonly<{
23
+ initiatorCwd?: string;
24
+ cwdCanonical?: true;
25
+ }>;
26
+ export type AkumaConfiguration = Readonly<{
27
+ home?: string;
28
+ settings?: Settings;
29
+ execution?: ExecutionContext;
30
+ }>;
31
+ export type InitialCallTell = CallInitialTell;
32
+ /** One admitted call: the leading child identity plus the exact live initial Tell evidence when supplied. */
33
+ export type AdmittedAkumaCall = Readonly<{
34
+ id: AllocatedAkuma["id"];
35
+ cwd: string;
36
+ execution: AkumaCallExecution;
37
+ /** True when the serving process was reached through the one direct-parent request channel. */
38
+ requested: boolean;
39
+ tell?: TellResult;
40
+ /** The native local failure, or the request transport's diagnostic text, after a confirmed birth. */
41
+ failure?: unknown;
42
+ }>;
43
+ type AkumaCallLaunchInput = Omit<AkumaCallInput, "body" | "schema"> & Readonly<{
44
+ initialTell?: InitialCallTell;
45
+ contractId?: string;
46
+ }>;
47
+ /**
48
+ * The one lower recipe preparer and admission edge used by plural creation and
49
+ * standalone birth: load the caller Archetype/Settings, freeze allowed and cwd,
50
+ * then invoke the P3 prepared-call executor under local or request custody.
51
+ */
52
+ export declare function admitAkumaCall(path: WorldRoot, configuration: AkumaConfiguration, input: AkumaCallLaunchInput, context: AkumaCallContext): Promise<AdmittedAkumaCall>;
53
+ export {};
@@ -0,0 +1,113 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { settings as readSettings } from "../settings.js";
3
+ import { readAkumaBirthCwd } from "./akuma-observe.js";
4
+ import { AkumaOwner } from "./akuma-owner.js";
5
+ import { decodeAllowedActions, unionAllowedActions } from "./allowed.js";
6
+ import { AkumaArchetypeError, loadPreparedArchetype } from "./archetype.js";
7
+ import { spawnAkumaBody } from "./body.js";
8
+ import { canonicalBirthCwd } from "./call-input.js";
9
+ import { requestForwardedAkumaCall } from "./call-request.js";
10
+ import { archetypeName } from "./identity.js";
11
+ import { PreparedCallAdmissionError, executePreparedCall } from "./publication.js";
12
+ import { executionChannel } from "./requests.js";
13
+ async function admitBodyRequest(input) {
14
+ const cwd = input.call.cwd === undefined
15
+ ? undefined
16
+ : input.context.cwdCanonical === true
17
+ ? input.call.cwd
18
+ : await canonicalBirthCwd(input.call.cwd);
19
+ const response = await requestForwardedAkumaCall({
20
+ directory: input.execution.directory,
21
+ id: randomUUID(),
22
+ world: input.path,
23
+ archetype: input.name,
24
+ ...(input.call.initialTell === undefined ? {} : { initialTell: input.call.initialTell }),
25
+ ...(cwd === undefined ? {} : { cwd }),
26
+ recipe: input.recipe,
27
+ ...(input.call.signal === undefined ? {} : { signal: input.call.signal }),
28
+ });
29
+ const bornCwd = await readAkumaBirthCwd(input.path, response.id);
30
+ return {
31
+ id: response.id,
32
+ cwd: bornCwd,
33
+ requested: true,
34
+ execution: { cwd: bornCwd, source: cwd === undefined ? "caller" : "input" },
35
+ ...(response.kind === "live" && response.tell !== undefined ? { tell: response.tell } : {}),
36
+ ...(response.kind === "live" && response.tellFailure !== undefined ? { failure: response.tellFailure } : {}),
37
+ ...(response.kind === "reference" && input.call.initialTell !== undefined
38
+ ? { failure: `Akuma ${response.id} was born without its exact initial Tell receipt` }
39
+ : {}),
40
+ };
41
+ }
42
+ async function admitDirect(input) {
43
+ const initiatorCwd = input.context.initiatorCwd;
44
+ const selectedCwd = input.call.cwd ?? initiatorCwd ?? input.path;
45
+ const cwd = input.call.cwd !== undefined && input.context.cwdCanonical === true
46
+ ? input.call.cwd
47
+ : await canonicalBirthCwd(selectedCwd);
48
+ let result;
49
+ try {
50
+ result = await executePreparedCall({
51
+ archetype: input.archetype.name,
52
+ cwd,
53
+ ...(input.call.initialTell === undefined ? {} : { initialTell: input.call.initialTell }),
54
+ ...(input.call.signal === undefined ? {} : { signal: input.call.signal }),
55
+ custody: {
56
+ kind: "local",
57
+ world: input.path,
58
+ recipe: input.recipe,
59
+ spawn: async (launch) => await spawnAkumaBody({
60
+ paths: launch.paths,
61
+ seed: launch.seed,
62
+ ...(input.call.contractId === undefined ? {} : { completion: { contractId: input.call.contractId } }),
63
+ }),
64
+ admitInitialTell: async ({ id, initialTell, signal }) => await new AkumaOwner(id, input.path).admitInitialTell(initialTell, {
65
+ ...(signal === undefined ? {} : { signal }),
66
+ }),
67
+ },
68
+ });
69
+ }
70
+ catch (error) {
71
+ // The executor owns provider admission; this local edge restores the
72
+ // Archetype-classified refusal the initiating caller has always seen.
73
+ if (error instanceof PreparedCallAdmissionError) {
74
+ throw new AkumaArchetypeError(input.archetype.name, [input.archetype.path], error.stage === "options" ? `is unsupported: ${error.diagnostic}` : `uses ${error.diagnostic}`);
75
+ }
76
+ throw error;
77
+ }
78
+ return {
79
+ id: result.child.id,
80
+ cwd,
81
+ requested: false,
82
+ execution: {
83
+ cwd,
84
+ source: input.call.cwd !== undefined ? "input" : initiatorCwd === undefined ? "world" : "process",
85
+ },
86
+ ...(result.tell === undefined ? {} : { tell: result.tell }),
87
+ ...(result.failure === undefined ? {} : { failure: result.failure }),
88
+ };
89
+ }
90
+ /**
91
+ * The one lower recipe preparer and admission edge used by plural creation and
92
+ * standalone birth: load the caller Archetype/Settings, freeze allowed and cwd,
93
+ * then invoke the P3 prepared-call executor under local or request custody.
94
+ */
95
+ export async function admitAkumaCall(path, configuration, input, context) {
96
+ const name = archetypeName(input.archetype);
97
+ const home = configuration.home === undefined ? {} : { home: configuration.home };
98
+ const settings = configuration.settings ?? (await readSettings({ root: path, ...home }));
99
+ const archetype = await loadPreparedArchetype({ name, project: path, ...home, settings });
100
+ const allowed = input.allowed === undefined
101
+ ? archetype.allowed
102
+ : unionAllowedActions(archetype.allowed, decodeAllowedActions(input.allowed, "Akuma call allowed"));
103
+ const execution = executionChannel(configuration.execution);
104
+ const requestRecipe = Object.freeze({
105
+ ...(archetype.description === undefined ? {} : { description: archetype.description }),
106
+ provider: archetype.provider,
107
+ options: archetype.options,
108
+ allowed,
109
+ });
110
+ if (execution.kind === "body-request")
111
+ return await admitBodyRequest({ call: input, context, path, name, recipe: requestRecipe, execution });
112
+ return await admitDirect({ call: input, context, path, archetype, recipe: requestRecipe });
113
+ }
@@ -1,18 +1,19 @@
1
- import type { AllowedAction } from "./allowed.js";
2
- import type { AkumaStatus } from "./akuma.js";
3
- import type { InterruptReceipt, KillEvidence } from "./akuma.js";
4
- import { type WaitReason } from "./akuma-observe.js";
5
- import { type AkuId } from "./identity.js";
6
- import { type ActivityHistory } from "./projection.js";
7
1
  import type { Settings } from "../settings.js";
8
2
  import type { WorldRoot } from "../world.js";
3
+ import { type InterruptReceipt } from "./akuma-owner.js";
4
+ import { type AkumaStatus } from "./akuma.js";
5
+ import type { AllowedAction } from "./allowed.js";
6
+ import { type KillEvidence } from "./heart/index.js";
7
+ import { type AkuId } from "./identity.js";
8
+ import type { ActivityHistory } from "./projection.js";
9
9
  import { type Schema, type StandardSchemaV1 } from "./schema.js";
10
+ import { type AkumaAskResult, type AkumaTellResult } from "./selection-observation.js";
10
11
  export type AkumaIdleOptions = Readonly<{
11
12
  timeoutMs?: number;
12
13
  signal?: AbortSignal;
13
14
  }>;
14
15
  export type AkumaIdleResult = Readonly<{
15
- reason: WaitReason;
16
+ reason: "completed" | "deadline";
16
17
  status: AkumaStatus;
17
18
  }>;
18
19
  export type AkumaHistoryOptions = Readonly<{
@@ -30,27 +31,28 @@ export type AkumaBirthInput = Readonly<{
30
31
  settings?: Settings;
31
32
  allowed?: readonly AllowedAction[];
32
33
  }>;
33
- export type AkumaTellOptions<T> = Readonly<{
34
- schema: Schema<T> | StandardSchemaV1<T>;
34
+ export type AkumaTellOptions = AkumaSignalOptions & Readonly<{
35
35
  interrupt?: boolean;
36
36
  initiator?: string;
37
37
  }>;
38
+ export type AkumaAskOptions<T> = AkumaTellOptions & Readonly<{
39
+ timeoutMs?: number;
40
+ schema?: Schema<T> | StandardSchemaV1<T>;
41
+ }>;
42
+ export type { AkumaAskResult, AkumaTellResult, InterruptReceipt, KillEvidence };
38
43
  export declare class Akuma {
39
44
  readonly id: AkuId;
40
45
  private readonly root;
41
46
  private constructor();
42
- private get paths();
47
+ private owner;
43
48
  static birth(archetype: string, input: AkumaBirthInput): Promise<Akuma>;
44
49
  static select(root: WorldRoot, selector: string): Akuma;
45
- tell(text: string, options?: Readonly<{
46
- initiator?: string;
47
- signal?: AbortSignal;
48
- }>): Promise<string>;
49
- tell<T>(text: string, options: AkumaTellOptions<T> & AkumaSignalOptions): Promise<T>;
50
+ tell(text: string, options?: AkumaTellOptions): Promise<AkumaTellResult>;
51
+ ask(text: string, options?: AkumaAskOptions<string>): Promise<AkumaAskResult<string>>;
52
+ ask<T>(text: string, options: AkumaAskOptions<T> & Readonly<{
53
+ schema: Schema<T> | StandardSchemaV1<T>;
54
+ }>): Promise<AkumaAskResult<T>>;
50
55
  status(): Promise<AkumaStatus>;
51
- interrupt(text: string, options?: AkumaSignalOptions & Readonly<{
52
- initiator?: string;
53
- }>): Promise<InterruptReceipt>;
54
56
  idle(options?: AkumaIdleOptions): Promise<AkumaIdleResult>;
55
57
  history(options?: AkumaHistoryOptions): Promise<ActivityHistory>;
56
58
  kill(options?: AkumaSignalOptions): Promise<KillEvidence>;
@@ -1,19 +1,10 @@
1
- import { randomUUID } from "node:crypto";
2
- import { canonicalBirthCwd } from "./call-input.js";
3
- import { spawnAkumaBody } from "./body.js";
4
- import { decodeAllowedActions, unionAllowedActions } from "./allowed.js";
5
- import { AkumaDecodeError, AkumaProviderError } from "./akuma-errors.js";
6
- import { AkumaHandle } from "./akuma-handle.js";
7
- import { bornStatus, defaultWaitComplete, waitForObservation } from "./akuma-observe.js";
8
- import { loadArchetype } from "./archetype.js";
9
- import { activitySlice } from "./heart/index.js";
10
- import { parseAkuId, pathsForAkuId } from "./identity.js";
11
- import { birthAkuma, launchAkuma } from "./publication.js";
12
- import { projectTurns, selectHistory } from "./projection.js";
13
- import { settings as readSettings } from "../settings.js";
14
- import { schemaFromStandard, schemaJsonText } from "./schema.js";
15
1
  import { abortable } from "./abort.js";
16
- const HISTORY_LIMIT = 12;
2
+ import { admitAkumaCall } from "./akuma-call.js";
3
+ import { defaultWaitComplete } from "./akuma-observe.js";
4
+ import { AkumaOwner } from "./akuma-owner.js";
5
+ import { decodeAskObservation, executeAskAkuma, executeTellAkuma } from "./akuma-selection-execution.js";
6
+ import { parseAkuId } from "./identity.js";
7
+ import { schemaFromStandard, schemaJsonText } from "./schema.js";
17
8
  function signalOption(value) {
18
9
  if (value === undefined)
19
10
  return undefined;
@@ -21,63 +12,6 @@ function signalOption(value) {
21
12
  throw new TypeError("signal must be an AbortSignal");
22
13
  return value;
23
14
  }
24
- function recordedTell(result) {
25
- if (result.wake.kind === "failed")
26
- throw new AkumaProviderError(result.wake.diagnostic);
27
- return { tellId: result.admission.tellId };
28
- }
29
- async function recordPlainTell(input) {
30
- const { id, root, body, tellId, initiator, signal } = input;
31
- const admitted = await new AkumaHandle(id, root).tell(body, tellId, undefined, undefined, {
32
- ...(initiator === undefined ? {} : { initiator }),
33
- ...(signal === undefined ? {} : { signal }),
34
- });
35
- return recordedTell(admitted);
36
- }
37
- function plainTellInput(input) {
38
- return {
39
- id: input.id,
40
- root: input.root,
41
- body: input.body,
42
- tellId: input.tellId,
43
- ...(input.options?.initiator === undefined ? {} : { initiator: input.options.initiator }),
44
- ...(input.signal === undefined ? {} : { signal: input.signal }),
45
- };
46
- }
47
- async function recordSchemaTell(input) {
48
- const { id, body, tellId, schema, root } = input;
49
- if (input.interrupt === true) {
50
- const interrupted = await new AkumaHandle(id, root).interrupt(body, {
51
- tellId,
52
- schemaJson: schemaJsonText(schema),
53
- ...(input.initiator === undefined ? {} : { initiator: input.initiator }),
54
- ...(input.signal === undefined ? {} : { signal: input.signal }),
55
- });
56
- if (interrupted.kind === "unavailable") {
57
- throw new AkumaProviderError(`schema interrupt unavailable: ${interrupted.evidence}`);
58
- }
59
- return recordedTell(interrupted.tell);
60
- }
61
- const admitted = await new AkumaHandle(id, root).tell(body, tellId, undefined, undefined, {
62
- schemaJson: schemaJsonText(schema),
63
- ...(input.initiator === undefined ? {} : { initiator: input.initiator }),
64
- ...(input.signal === undefined ? {} : { signal: input.signal }),
65
- });
66
- return recordedTell(admitted);
67
- }
68
- function outcomeError(outcome) {
69
- if (outcome.kind === "invalid-output")
70
- throw new AkumaDecodeError(outcome.diagnostic, outcome.answer);
71
- if (outcome.kind === "failed")
72
- throw new AkumaProviderError(outcome.diagnostic);
73
- throw new AkumaProviderError("Akuma answered without a value");
74
- }
75
- async function awaitTellOutcome(handle, tellId, signal) {
76
- const observed = await handle.tellOutcome(tellId, signal === undefined ? {} : { signal });
77
- if (observed.outcome !== null)
78
- return observed.outcome;
79
- throw new AkumaProviderError(`recorded Tell ${tellId} reached a terminal delivery without a Turn binding`);
80
- }
81
15
  export class Akuma {
82
16
  id;
83
17
  root;
@@ -86,8 +20,8 @@ export class Akuma {
86
20
  this.root = root;
87
21
  Object.freeze(this);
88
22
  }
89
- get paths() {
90
- return pathsForAkuId(this.root, this.id);
23
+ owner() {
24
+ return new AkumaOwner(this.id, this.root);
91
25
  }
92
26
  static async birth(archetype, input) {
93
27
  if (typeof input !== "object" || input === null || Array.isArray(input)) {
@@ -95,101 +29,72 @@ export class Akuma {
95
29
  }
96
30
  if (typeof input.root !== "string")
97
31
  throw new TypeError("Akuma birth root must be a WorldRoot");
98
- const name = archetype;
99
- const home = input.home === undefined ? {} : { home: input.home };
100
- const settings = input.settings ?? (await readSettings({ root: input.root, ...home }));
101
- const loaded = await loadArchetype({ name, project: input.root, ...home, settings });
102
- const allowed = input.allowed === undefined
103
- ? loaded.allowed
104
- : unionAllowedActions(loaded.allowed, decodeAllowedActions(input.allowed, "Akuma birth allowed"));
105
- const cwd = input.cwd === undefined ? input.root : await canonicalBirthCwd(input.cwd);
106
- const allocated = await birthAkuma({ worldPath: input.root, archetype: loaded.name });
107
- await launchAkuma({
108
- allocated,
109
- launch: async (born) => await spawnAkumaBody({
110
- paths: born.paths,
111
- seed: {
112
- id: born.id,
113
- archetype: born.archetype,
114
- ...(loaded.description === undefined ? {} : { description: loaded.description }),
115
- provider: loaded.provider,
116
- options: loaded.options,
117
- allowed,
118
- cwd,
119
- origin: { kind: "direct" },
120
- },
121
- }),
122
- });
123
- return new Akuma(allocated.id, input.root);
32
+ const admitted = await admitAkumaCall(input.root, {
33
+ ...(input.home === undefined ? {} : { home: input.home }),
34
+ ...(input.settings === undefined ? {} : { settings: input.settings }),
35
+ }, {
36
+ archetype,
37
+ ...(input.cwd === undefined ? {} : { cwd: input.cwd }),
38
+ ...(input.allowed === undefined ? {} : { allowed: input.allowed }),
39
+ }, {});
40
+ if (admitted.failure !== undefined)
41
+ throw admitted.failure;
42
+ return new Akuma(admitted.id, input.root);
124
43
  }
125
44
  static select(root, selector) {
126
45
  if (typeof root !== "string")
127
46
  throw new TypeError("Akuma.select root must be a WorldRoot");
128
47
  return new Akuma(parseAkuId(selector).id, root);
129
48
  }
130
- async tell(text, options) {
49
+ async tell(text, options = {}) {
131
50
  if (typeof text !== "string")
132
51
  throw new TypeError("Akuma tell text must be a string");
133
- const signal = signalOption(options?.signal);
52
+ if (typeof options !== "object" || options === null || Array.isArray(options))
53
+ throw new TypeError("Akuma tell options must be an object");
54
+ if ("schema" in options)
55
+ throw new TypeError("Akuma tell does not accept schema; use ask");
56
+ const unknown = Object.keys(options).find((key) => !["interrupt", "initiator", "signal"].includes(key));
57
+ if (unknown !== undefined)
58
+ throw new TypeError(`Akuma tell options has unknown field: ${unknown}`);
59
+ const signal = signalOption(options.signal);
134
60
  signal?.throwIfAborted();
135
- const tellId = randomUUID();
136
- const schemaOptions = options !== undefined && "schema" in options ? options : undefined;
137
- const schema = schemaOptions === undefined ? undefined : schemaFromStandard(schemaOptions.schema);
138
- const recorded = schemaOptions === undefined || schema === undefined
139
- ? await recordPlainTell(plainTellInput({
140
- id: this.id,
141
- root: this.root,
142
- body: text,
143
- tellId,
144
- options,
145
- signal,
146
- }))
147
- : await recordSchemaTell({
148
- id: this.id,
149
- body: text,
150
- tellId,
151
- schema,
152
- root: this.root,
153
- ...(schemaOptions.interrupt === undefined ? {} : { interrupt: schemaOptions.interrupt }),
154
- ...(schemaOptions.initiator === undefined ? {} : { initiator: schemaOptions.initiator }),
155
- ...(signal === undefined ? {} : { signal }),
156
- });
157
- const outcome = await awaitTellOutcome(new AkumaHandle(this.id, this.root), recorded.tellId, signal);
158
- if (outcome.kind !== "answered")
159
- outcomeError(outcome);
160
- if (schema === undefined)
161
- return outcome.answer;
162
- const raw = outcome.answerJson ?? outcome.answer;
163
- let parsed;
164
- try {
165
- parsed = JSON.parse(raw);
166
- }
167
- catch (error) {
168
- throw new AkumaDecodeError(error instanceof Error ? error.message : "Answer is not valid JSON", outcome.answer);
169
- }
170
- try {
171
- return schema.decode(parsed);
172
- }
173
- catch (error) {
174
- throw new AkumaDecodeError(error instanceof Error ? error.message : "Answer failed schema decode", outcome.answer);
175
- }
176
- }
177
- async status() {
178
- return (await bornStatus(this.paths, this.id, { aperture: "monitoring" })).status;
61
+ return await executeTellAkuma({
62
+ path: this.root,
63
+ id: this.id,
64
+ body: text,
65
+ ...(options.interrupt === true ? { interrupt: true } : {}),
66
+ ...(options.initiator === undefined ? {} : { initiator: options.initiator }),
67
+ ...(signal === undefined ? {} : { signal }),
68
+ });
179
69
  }
180
- async interrupt(text, options = {}) {
70
+ async ask(text, options = {}) {
181
71
  if (typeof text !== "string")
182
- throw new TypeError("Akuma interrupt text must be a string");
183
- if (typeof options !== "object" || options === null || Array.isArray(options)) {
184
- throw new TypeError("Akuma interrupt options must be an object");
185
- }
72
+ throw new TypeError("Akuma ask text must be a string");
73
+ if (typeof options !== "object" || options === null || Array.isArray(options))
74
+ throw new TypeError("Akuma ask options must be an object");
75
+ const unknown = Object.keys(options).find((key) => !["schema", "timeoutMs", "interrupt", "initiator", "signal"].includes(key));
76
+ if (unknown !== undefined)
77
+ throw new TypeError(`Akuma ask options has unknown field: ${unknown}`);
78
+ if (options.timeoutMs !== undefined &&
79
+ (!Number.isFinite(options.timeoutMs) || !Number.isInteger(options.timeoutMs) || options.timeoutMs < 0))
80
+ throw new TypeError("Akuma ask timeoutMs must be a nonnegative finite millisecond duration");
186
81
  const signal = signalOption(options.signal);
187
82
  signal?.throwIfAborted();
188
- const operation = new AkumaHandle(this.id, this.root).interrupt(text, {
189
- ...(signal === undefined ? {} : { signal }),
83
+ const schema = options.schema === undefined ? undefined : schemaFromStandard(options.schema);
84
+ const result = await executeAskAkuma({
85
+ path: this.root,
86
+ id: this.id,
87
+ body: text,
88
+ ...(options.timeoutMs === undefined ? {} : { timeoutMs: options.timeoutMs }),
89
+ ...(schema === undefined ? {} : { schemaJson: schemaJsonText(schema) }),
90
+ ...(options.interrupt === true ? { interrupt: true } : {}),
190
91
  ...(options.initiator === undefined ? {} : { initiator: options.initiator }),
92
+ ...(signal === undefined ? {} : { signal }),
191
93
  });
192
- return await abortable(operation, signal ?? new AbortController().signal);
94
+ return (schema === undefined ? result : { ...result, observation: decodeAskObservation(result.observation, schema) });
95
+ }
96
+ async status() {
97
+ return await this.owner().status();
193
98
  }
194
99
  async idle(options = {}) {
195
100
  if (typeof options !== "object" || options === null || Array.isArray(options)) {
@@ -202,13 +107,11 @@ export class Akuma {
202
107
  throw new TypeError("Akuma idle timeoutMs must be a nonnegative finite millisecond duration");
203
108
  }
204
109
  const signal = signalOption(options.signal);
205
- const waited = await waitForObservation({
110
+ const waited = await this.owner().waitReceipt(defaultWaitComplete, {
206
111
  ...(options.timeoutMs === undefined ? {} : { timeoutMs: options.timeoutMs }),
207
112
  ...(signal === undefined ? {} : { signal }),
208
- observe: async () => (await bornStatus(this.paths, this.id, { aperture: "monitoring" })).status,
209
- complete: defaultWaitComplete,
210
113
  });
211
- return { reason: waited.reason, status: waited.value };
114
+ return { reason: waited.reason, status: waited.status };
212
115
  }
213
116
  async history(options = {}) {
214
117
  if (typeof options !== "object" || options === null || Array.isArray(options)) {
@@ -220,24 +123,11 @@ export class Akuma {
220
123
  if (options.before !== undefined && options.since !== undefined) {
221
124
  throw new TypeError("Akuma history before and since are mutually exclusive");
222
125
  }
223
- for (const [name, value] of [
224
- ["before", options.before],
225
- ["since", options.since],
226
- ]) {
227
- if (value !== undefined && (!Number.isSafeInteger(value) || value <= 0)) {
228
- throw new TypeError(`Akuma history ${name} must be a positive safe integer`);
229
- }
230
- }
231
- const limit = options.limit ?? HISTORY_LIMIT;
232
- if (!Number.isSafeInteger(limit) || limit <= 0 || limit > 5_000) {
233
- throw new TypeError("Akuma history limit must be a positive safe integer no greater than 5000");
234
- }
235
- const slice = await activitySlice(this.paths);
236
- return selectHistory(projectTurns(slice.rows, { lowestRetained: slice.lowestRetained, highest: slice.highest }), {
126
+ return (await this.owner().history({
237
127
  ...(options.before === undefined ? {} : { before: options.before }),
238
128
  ...(options.since === undefined ? {} : { since: options.since }),
239
- limit,
240
- });
129
+ ...(options.limit === undefined ? {} : { limit: options.limit }),
130
+ }));
241
131
  }
242
132
  async kill(options = {}) {
243
133
  if (typeof options !== "object" || options === null || Array.isArray(options)) {
@@ -245,6 +135,6 @@ export class Akuma {
245
135
  }
246
136
  const signal = signalOption(options.signal);
247
137
  signal?.throwIfAborted();
248
- return await abortable(new AkumaHandle(this.id, this.root).kill(signal === undefined ? {} : { signal }), signal ?? new AbortController().signal);
138
+ return await abortable(this.owner().kill(signal === undefined ? {} : { signal }), signal ?? new AbortController().signal);
249
139
  }
250
140
  }
@@ -1,9 +1,10 @@
1
1
  import { type AkuId, type AkumaPaths } from "./identity.js";
2
2
  import { selectHistory, type ActivityHistory, type ActivityRow, type ActivitySnapshot } from "./projection.js";
3
3
  import type { WorldRoot } from "../world.js";
4
+ import type { AkumaAlias } from "../identity/selector.js";
4
5
  import type { AkumaListRow, AkumaStatus, UnbornAkumaListRow } from "./akuma.js";
5
- export declare function fleetListRow(paths: AkumaPaths, expected: AkuId): Promise<AkumaListRow | UnbornAkumaListRow>;
6
- export type BudgetedStatusObservation = Readonly<{
6
+ export declare function rosterListRow(paths: AkumaPaths, expected: AkuId, aliases?: readonly AkumaAlias[]): Promise<AkumaListRow | UnbornAkumaListRow>;
7
+ type BudgetedStatusObservation = Readonly<{
7
8
  status: AkumaStatus;
8
9
  ordinarySelected: number;
9
10
  }>;
@@ -26,11 +27,6 @@ export declare function bornStatus(paths: AkumaPaths, expected: AkuId, input: Re
26
27
  ordinaryBudget?: number;
27
28
  admittedTellId?: string;
28
29
  }>): Promise<BudgetedStatusObservation>;
29
- export declare function readBudgetedStatus(worldPath: WorldRoot, id: AkuId, input: Readonly<{
30
- aperture: "monitoring" | "receipt";
31
- ordinaryBudget?: number;
32
- admittedTellId?: string;
33
- }>): Promise<BudgetedStatusObservation>;
34
30
  export declare function readLiveStatus(worldPath: WorldRoot, id: AkuId, input: Readonly<{
35
31
  aperture: "monitoring" | "receipt";
36
32
  ordinaryBudget?: number;
@@ -55,19 +51,5 @@ export declare function waitForObservation<T>(input: Readonly<{
55
51
  reason: WaitReason;
56
52
  value: T;
57
53
  }>>;
58
- /**
59
- * Successive status observations of one already born Akuma until its
60
- * observation window closes. Every acquired observation is reported to
61
- * `observe` before completion or deadline judgment, including the first
62
- * already-complete observation; the last status is returned.
63
- */
64
- export declare function observeAkumaStatus(worldPath: WorldRoot, expected: AkuId, input: Readonly<{
65
- timeoutMs: number;
66
- signal?: AbortSignal;
67
- observe: (status: LiveStatusObservation) => void;
68
- }>): Promise<Readonly<{
69
- reason: WaitReason;
70
- status: AkumaStatus;
71
- }>>;
72
54
  export declare function readAkumaBirthCwd(worldPath: WorldRoot, id: AkuId): Promise<string>;
73
55
  export { selectHistory, type ActivityHistory, type ActivitySnapshot };
@@ -4,7 +4,7 @@ import { ordinarySnapshotBudget, projectTurns, selectHistory, selectSnapshot, }
4
4
  import { resolveProviderExecution } from "./providers/index.js";
5
5
  import { abortableDelay } from "./abort.js";
6
6
  import { AkumaNotBornError } from "./akuma-errors.js";
7
- export async function fleetListRow(paths, expected) {
7
+ export async function rosterListRow(paths, expected, aliases = []) {
8
8
  const snapshot = await readHeart(paths);
9
9
  if (snapshot.soul !== null) {
10
10
  const observed = await bornObservation(paths, expected, () => readHeart(paths), snapshot);
@@ -16,17 +16,20 @@ export async function fleetListRow(paths, expected) {
16
16
  lifeAt: lifeAt(observed.currentLife, observed.snapshot.latestBody, observed.snapshot.latestKill, observed.soul.createdAt),
17
17
  lastActivityAt: observed.snapshot.lastActivityAt,
18
18
  pending: observed.snapshot.pending.map((tell) => tell.id),
19
+ aliases,
19
20
  };
20
21
  }
21
22
  try {
22
23
  if ((await probeLeash(paths)) === "held")
23
- return { id: expected, life: "unborn" };
24
+ return { id: expected, life: "unborn", aliases };
24
25
  const seal = await readSeal(paths);
25
- return seal === null ? { id: expected, life: "unborn" } : { id: expected, life: "stillborn", seal };
26
+ return seal === null
27
+ ? { id: expected, life: "unborn", aliases }
28
+ : { id: expected, life: "stillborn", seal, aliases };
26
29
  }
27
30
  catch (error) {
28
31
  if (isHeartAbsent(error))
29
- return { id: expected, life: "unborn" };
32
+ return { id: expected, life: "unborn", aliases };
30
33
  throw error;
31
34
  }
32
35
  }
@@ -88,9 +91,6 @@ export async function bornStatus(paths, expected, input) {
88
91
  const { rows: _rows, ...status } = await bornLiveStatus(paths, expected, input);
89
92
  return status;
90
93
  }
91
- export async function readBudgetedStatus(worldPath, id, input) {
92
- return await bornStatus(pathsForAkuId(worldPath, id), id, input);
93
- }
94
94
  export async function readLiveStatus(worldPath, id, input) {
95
95
  return await bornLiveStatus(pathsForAkuId(worldPath, id), id, input);
96
96
  }
@@ -135,23 +135,6 @@ export async function waitForObservation(input) {
135
135
  : Math.min(OBSERVATION_POLL_MS, Math.max(0, deadline - performance.now())), input.signal);
136
136
  }
137
137
  }
138
- /**
139
- * Successive status observations of one already born Akuma until its
140
- * observation window closes. Every acquired observation is reported to
141
- * `observe` before completion or deadline judgment, including the first
142
- * already-complete observation; the last status is returned.
143
- */
144
- export async function observeAkumaStatus(worldPath, expected, input) {
145
- const paths = pathsForAkuId(worldPath, expected);
146
- const waited = await waitForObservation({
147
- timeoutMs: input.timeoutMs,
148
- ...(input.signal === undefined ? {} : { signal: input.signal }),
149
- observe: async () => await bornLiveStatus(paths, expected, { aperture: "monitoring" }),
150
- complete: (observation) => defaultWaitComplete(observation.status),
151
- onObserve: input.observe,
152
- });
153
- return { reason: waited.reason, status: waited.value.status };
154
- }
155
138
  export async function readAkumaBirthCwd(worldPath, id) {
156
139
  const soul = await readSoul(pathsForAkuId(worldPath, id));
157
140
  if (soul === null)