@astrosheep/keiyaku 4.5.28 → 4.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (425) hide show
  1. package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku/SKILL.md +0 -13
  2. package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-akuma/SKILL.md +47 -78
  3. package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-akuma/references/automation.md +54 -41
  4. package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-babysit/SKILL.md +10 -0
  5. package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-bind/SKILL.md +27 -9
  6. package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-workflow/SKILL.md +68 -71
  7. package/build/src/akuma/akuma-call.d.ts +53 -0
  8. package/build/src/akuma/akuma-call.js +113 -0
  9. package/build/src/akuma/akuma-instance.d.ts +20 -19
  10. package/build/src/akuma/akuma-instance.js +65 -177
  11. package/build/src/akuma/akuma-observe.d.ts +3 -21
  12. package/build/src/akuma/akuma-observe.js +7 -25
  13. package/build/src/akuma/{akuma-handle.d.ts → akuma-owner.d.ts} +60 -25
  14. package/build/src/akuma/{akuma-handle.js → akuma-owner.js} +43 -29
  15. package/build/src/akuma/akuma-selection-execution.d.ts +51 -0
  16. package/build/src/akuma/akuma-selection-execution.js +134 -0
  17. package/build/src/akuma/{fleet-execution.d.ts → akuma-wait.d.ts} +24 -32
  18. package/build/src/akuma/akuma-wait.js +113 -0
  19. package/build/src/akuma/akuma.d.ts +35 -97
  20. package/build/src/akuma/akuma.js +148 -35
  21. package/build/src/akuma/archetype.d.ts +18 -6
  22. package/build/src/akuma/archetype.js +52 -34
  23. package/build/src/akuma/body.d.ts +79 -61
  24. package/build/src/akuma/body.js +101 -50
  25. package/build/src/akuma/call-initial-tell.d.ts +164 -0
  26. package/build/src/akuma/call-initial-tell.js +62 -0
  27. package/build/src/akuma/call-input.d.ts +0 -3
  28. package/build/src/akuma/call-input.js +0 -7
  29. package/build/src/akuma/call-request.d.ts +247 -38
  30. package/build/src/akuma/call-request.js +77 -92
  31. package/build/src/akuma/coordinate.d.ts +15 -5
  32. package/build/src/akuma/coordinate.js +12 -22
  33. package/build/src/akuma/dispatch-association.d.ts +1 -1
  34. package/build/src/akuma/dispatch-association.js +1 -10
  35. package/build/src/akuma/heart/activity-schema.d.ts +325 -0
  36. package/build/src/akuma/heart/activity-schema.js +53 -0
  37. package/build/src/akuma/heart/facts.d.ts +3 -9
  38. package/build/src/akuma/heart/index.d.ts +3 -1
  39. package/build/src/akuma/heart/index.js +4 -1
  40. package/build/src/akuma/heart/rows.d.ts +49 -2
  41. package/build/src/akuma/heart/rows.js +16 -2
  42. package/build/src/akuma/heart/soul.d.ts +1 -0
  43. package/build/src/akuma/heart/soul.js +7 -10
  44. package/build/src/akuma/heart/tells.d.ts +1 -0
  45. package/build/src/akuma/heart/tells.js +18 -0
  46. package/build/src/akuma/identity.d.ts +10 -7
  47. package/build/src/akuma/identity.js +23 -0
  48. package/build/src/akuma/index.d.ts +10 -8
  49. package/build/src/akuma/index.js +2 -2
  50. package/build/src/akuma/nuke.d.ts +3 -0
  51. package/build/src/akuma/nuke.js +13 -7
  52. package/build/src/akuma/projection-read.js +1 -2
  53. package/build/src/akuma/projection.d.ts +0 -5
  54. package/build/src/akuma/projection.js +22 -43
  55. package/build/src/akuma/provider-recipe.d.ts +58 -23
  56. package/build/src/akuma/provider-recipe.js +62 -103
  57. package/build/src/akuma/provider.d.ts +7 -78
  58. package/build/src/akuma/provider.js +11 -219
  59. package/build/src/akuma/providers/acp/config.d.ts +2 -0
  60. package/build/src/akuma/providers/acp/config.js +26 -1
  61. package/build/src/akuma/providers/acp/core.d.ts +7 -0
  62. package/build/src/akuma/providers/acp/core.js +49 -18
  63. package/build/src/akuma/providers/acp/index.js +14 -17
  64. package/build/src/akuma/providers/claude/index.js +2 -14
  65. package/build/src/akuma/providers/codex-app-server/index.js +0 -22
  66. package/build/src/akuma/providers/grok-build/index.js +44 -24
  67. package/build/src/akuma/providers/index.d.ts +3 -3
  68. package/build/src/akuma/providers/index.js +2 -13
  69. package/build/src/akuma/providers/opencode-sdk/event-stream.d.ts +28 -0
  70. package/build/src/akuma/providers/opencode-sdk/event-stream.js +92 -0
  71. package/build/src/akuma/providers/opencode-sdk/events.d.ts +0 -1
  72. package/build/src/akuma/providers/opencode-sdk/index.js +200 -74
  73. package/build/src/akuma/providers/opencode-sdk/session.d.ts +41 -1
  74. package/build/src/akuma/providers/opencode-sdk/session.js +69 -2
  75. package/build/src/akuma/providers/pi/events.js +5 -2
  76. package/build/src/akuma/providers/pi/index.js +70 -24
  77. package/build/src/akuma/publication.d.ts +84 -3
  78. package/build/src/akuma/publication.js +145 -2
  79. package/build/src/akuma/read-pool.d.ts +2 -0
  80. package/build/src/akuma/read-pool.js +15 -0
  81. package/build/src/akuma/request-rendezvous.js +10 -0
  82. package/build/src/akuma/request-serve.js +7 -0
  83. package/build/src/akuma/request-wire.d.ts +14 -26
  84. package/build/src/akuma/request-wire.js +4 -0
  85. package/build/src/akuma/requests.d.ts +0 -3
  86. package/build/src/akuma/requests.js +0 -24
  87. package/build/src/akuma/{fleet-observation.d.ts → selection-observation.d.ts} +61 -52
  88. package/build/src/akuma/selection-observation.js +65 -0
  89. package/build/src/akuma/{fleet-owner-port.d.ts → selection-owner-port.d.ts} +3 -3
  90. package/build/src/akuma/{fleet-owner-port.js → selection-owner-port.js} +11 -17
  91. package/build/src/akuma/{fleet-request.d.ts → selection-request.d.ts} +42 -82
  92. package/build/src/akuma/{fleet-request.js → selection-request.js} +92 -136
  93. package/build/src/akuma/turn-drive.d.ts +3 -0
  94. package/build/src/akuma/turn-drive.js +75 -16
  95. package/build/src/akuma-body.js +91 -56
  96. package/build/src/body/amend.d.ts +5 -0
  97. package/build/src/body/amend.js +26 -50
  98. package/build/src/body/arc.d.ts +4 -2
  99. package/build/src/body/arc.js +19 -26
  100. package/build/src/body/criteria.d.ts +6 -0
  101. package/build/src/body/criteria.js +37 -0
  102. package/build/src/body/decode.js +5 -42
  103. package/build/src/body/region.d.ts +5 -0
  104. package/build/src/body/region.js +45 -2
  105. package/build/src/body/render.js +2 -4
  106. package/build/src/cli/activity.d.ts +26 -0
  107. package/build/src/cli/activity.js +75 -0
  108. package/build/src/cli/actor.d.ts +3 -1
  109. package/build/src/cli/actor.js +15 -2
  110. package/build/src/cli/commands/akuma-grammar.d.ts +75 -0
  111. package/build/src/cli/commands/akuma-grammar.js +414 -0
  112. package/build/src/cli/commands/akuma.d.ts +5 -69
  113. package/build/src/cli/commands/akuma.js +352 -312
  114. package/build/src/cli/commands/amend.d.ts +4 -5
  115. package/build/src/cli/commands/amend.js +1 -2
  116. package/build/src/cli/commands/bind.d.ts +4 -5
  117. package/build/src/cli/commands/bind.js +5 -9
  118. package/build/src/cli/commands/contract-grammar.d.ts +112 -0
  119. package/build/src/cli/commands/contract-grammar.js +282 -0
  120. package/build/src/cli/commands/contract-help.d.ts +28 -30
  121. package/build/src/cli/commands/contract-help.js +69 -96
  122. package/build/src/cli/commands/contract.d.ts +18 -97
  123. package/build/src/cli/commands/contract.js +620 -237
  124. package/build/src/cli/commands/install.d.ts +1 -1
  125. package/build/src/cli/commands/install.js +2 -2
  126. package/build/src/cli/commands/task-grammar.d.ts +19 -0
  127. package/build/src/cli/commands/task-grammar.js +438 -0
  128. package/build/src/cli/commands/task-query.js +23 -104
  129. package/build/src/cli/commands/task.d.ts +5 -20
  130. package/build/src/cli/commands/task.js +415 -333
  131. package/build/src/cli/coordinates.d.ts +10 -0
  132. package/build/src/cli/coordinates.js +20 -0
  133. package/build/src/cli/draft.d.ts +7 -1
  134. package/build/src/cli/main.js +10 -1
  135. package/build/src/cli/parse.d.ts +8 -9
  136. package/build/src/cli/parse.js +63 -61
  137. package/build/src/cli/render/akuma-activity.d.ts +88 -39
  138. package/build/src/cli/render/akuma-activity.js +465 -263
  139. package/build/src/cli/render/akuma-tool.d.ts +15 -5
  140. package/build/src/cli/render/akuma-tool.js +40 -27
  141. package/build/src/cli/render/akuma.d.ts +40 -24
  142. package/build/src/cli/render/akuma.js +108 -205
  143. package/build/src/cli/render/audit.d.ts +6 -2
  144. package/build/src/cli/render/audit.js +61 -30
  145. package/build/src/cli/render/catalog.d.ts +11 -2
  146. package/build/src/cli/render/catalog.js +75 -94
  147. package/build/src/cli/render/contract-history.d.ts +3 -1
  148. package/build/src/cli/render/contract-history.js +215 -22
  149. package/build/src/cli/render/contract-observation.d.ts +10 -5
  150. package/build/src/cli/render/contract-observation.js +29 -46
  151. package/build/src/cli/render/contract.d.ts +10 -3
  152. package/build/src/cli/render/contract.js +255 -106
  153. package/build/src/cli/render/effects.d.ts +26 -0
  154. package/build/src/cli/render/effects.js +41 -0
  155. package/build/src/cli/render/execution-progress.d.ts +18 -6
  156. package/build/src/cli/render/execution-progress.js +34 -31
  157. package/build/src/cli/render/kanshi-akuma.d.ts +1 -2
  158. package/build/src/cli/render/kanshi-akuma.js +5 -26
  159. package/build/src/cli/render/kanshi.js +108 -129
  160. package/build/src/cli/render/marks.d.ts +13 -0
  161. package/build/src/cli/render/marks.js +74 -0
  162. package/build/src/cli/render/nuke.js +18 -7
  163. package/build/src/cli/render/receipt.d.ts +10 -4
  164. package/build/src/cli/render/receipt.js +126 -46
  165. package/build/src/cli/render/reconcile.d.ts +5 -0
  166. package/build/src/cli/render/reconcile.js +152 -0
  167. package/build/src/cli/render/refusal.d.ts +21 -4
  168. package/build/src/cli/render/refusal.js +61 -34
  169. package/build/src/cli/render/region.js +3 -2
  170. package/build/src/cli/render/settings.js +4 -14
  171. package/build/src/cli/render/task.d.ts +37 -6
  172. package/build/src/cli/render/task.js +162 -158
  173. package/build/src/cli/render/terminal.d.ts +25 -1
  174. package/build/src/cli/render/terminal.js +105 -18
  175. package/build/src/cli/runtime.d.ts +32 -8
  176. package/build/src/cli/runtime.js +161 -163
  177. package/build/src/cli/selectors.d.ts +5 -2
  178. package/build/src/cli/selectors.js +11 -3
  179. package/build/src/cli/streams.d.ts +11 -0
  180. package/build/src/cli/streams.js +32 -0
  181. package/build/src/cli/usage.d.ts +2 -0
  182. package/build/src/cli/usage.js +12 -8
  183. package/build/src/contract-guidance.js +3 -7
  184. package/build/src/contract-worktree.d.ts +20 -28
  185. package/build/src/contract-worktree.js +18 -70
  186. package/build/src/coordination/durable-file.d.ts +2 -2
  187. package/build/src/coordination/durable-file.js +0 -27
  188. package/build/src/core/facts/codec.d.ts +1 -2
  189. package/build/src/core/facts/codec.js +6 -7
  190. package/build/src/core/facts/gate.d.ts +0 -1
  191. package/build/src/core/facts/gate.js +0 -82
  192. package/build/src/core/facts/types.d.ts +1 -2
  193. package/build/src/core/verbs/abandon.d.ts +2 -6
  194. package/build/src/core/verbs/abandon.js +0 -16
  195. package/build/src/core/verbs/amend.d.ts +0 -1
  196. package/build/src/core/verbs/amend.js +0 -20
  197. package/build/src/core/verbs/arc.d.ts +7 -8
  198. package/build/src/core/verbs/arc.js +2 -19
  199. package/build/src/core/verbs/attestation.d.ts +2 -6
  200. package/build/src/core/verbs/attestation.js +0 -16
  201. package/build/src/core/verbs/bind.d.ts +0 -1
  202. package/build/src/core/verbs/bind.js +0 -16
  203. package/build/src/core/verbs/deliver.d.ts +0 -1
  204. package/build/src/core/verbs/deliver.js +0 -16
  205. package/build/src/core/verbs/placement.d.ts +2 -1
  206. package/build/src/core/verbs/placement.js +10 -59
  207. package/build/src/git/admission.d.ts +6 -4
  208. package/build/src/git/admission.js +4 -0
  209. package/build/src/git/hooks.d.ts +55 -30
  210. package/build/src/git/hooks.js +30 -3
  211. package/build/src/git/identity.d.ts +6 -0
  212. package/build/src/git/identity.js +47 -0
  213. package/build/src/git/integration.d.ts +31 -13
  214. package/build/src/git/integration.js +32 -1
  215. package/build/src/git/nuke.d.ts +10 -1
  216. package/build/src/git/nuke.js +31 -11
  217. package/build/src/git/observe.js +2 -15
  218. package/build/src/git/private-state-seat.d.ts +6 -7
  219. package/build/src/git/private-state-seat.js +8 -6
  220. package/build/src/git/read-observation.d.ts +6 -1
  221. package/build/src/git/read-observation.js +81 -46
  222. package/build/src/git/reconcile.d.ts +117 -40
  223. package/build/src/git/reconcile.js +169 -40
  224. package/build/src/git/scratch.d.ts +7 -4
  225. package/build/src/git/scratch.js +28 -6
  226. package/build/src/git/target-placement.d.ts +53 -38
  227. package/build/src/git/target-placement.js +69 -54
  228. package/build/src/git/tender.d.ts +37 -28
  229. package/build/src/git/tender.js +39 -0
  230. package/build/src/git/terminal-reconcile.js +21 -23
  231. package/build/src/git/terminal-seal.d.ts +8 -6
  232. package/build/src/git/terminal-seal.js +10 -0
  233. package/build/src/git/workspace.d.ts +29 -15
  234. package/build/src/git/workspace.js +28 -2
  235. package/build/src/identity/normalize.js +19 -6
  236. package/build/src/index.d.ts +78 -6
  237. package/build/src/index.js +52 -3
  238. package/build/src/kanshi/read.d.ts +3 -3
  239. package/build/src/kanshi/read.js +21 -21
  240. package/build/src/kanshi/report.d.ts +9 -8
  241. package/build/src/kanshi/roster.d.ts +2 -0
  242. package/build/src/kanshi/roster.js +2 -0
  243. package/build/src/kanshi/select.js +7 -3
  244. package/build/src/library/address.d.ts +3 -7
  245. package/build/src/library/address.js +7 -7
  246. package/build/src/library/akuma-creation.d.ts +35 -33
  247. package/build/src/library/akuma-creation.js +184 -167
  248. package/build/src/library/akumas.d.ts +40 -0
  249. package/build/src/library/akumas.js +84 -0
  250. package/build/src/library/bind.d.ts +107 -13
  251. package/build/src/library/bind.js +29 -23
  252. package/build/src/library/continuation.d.ts +556 -28
  253. package/build/src/library/continuation.js +29 -54
  254. package/build/src/library/contract-composition.d.ts +40 -0
  255. package/build/src/library/contract-composition.js +105 -0
  256. package/build/src/library/contract-creation.d.ts +7 -0
  257. package/build/src/library/contract-creation.js +192 -0
  258. package/build/src/library/contract-execution.d.ts +29 -40
  259. package/build/src/library/contract-execution.js +503 -128
  260. package/build/src/library/contract-operations.d.ts +275 -134
  261. package/build/src/library/contract-operations.js +83 -92
  262. package/build/src/library/contract-outcomes.d.ts +71 -0
  263. package/build/src/library/contract-outcomes.js +32 -0
  264. package/build/src/library/contract-settings.d.ts +25 -0
  265. package/build/src/library/contract-settings.js +135 -0
  266. package/build/src/library/contract-types.d.ts +24 -38
  267. package/build/src/library/delivery.d.ts +530 -10
  268. package/build/src/library/delivery.js +20 -45
  269. package/build/src/library/input.d.ts +3 -1
  270. package/build/src/library/input.js +11 -16
  271. package/build/src/library/invocation.d.ts +87 -0
  272. package/build/src/library/invocation.js +290 -0
  273. package/build/src/library/keiyaku.d.ts +44 -437
  274. package/build/src/library/keiyaku.js +132 -20
  275. package/build/src/library/nuke.d.ts +2 -11
  276. package/build/src/library/nuke.js +70 -57
  277. package/build/src/library/outcome.d.ts +13196 -0
  278. package/build/src/library/outcome.js +487 -0
  279. package/build/src/library/reconcile.d.ts +96 -24
  280. package/build/src/library/reconcile.js +102 -42
  281. package/build/src/library/refusal.d.ts +470 -42
  282. package/build/src/library/refusal.js +55 -143
  283. package/build/src/library/region.d.ts +15 -7
  284. package/build/src/library/region.js +23 -3
  285. package/build/src/library/repo.d.ts +2 -12
  286. package/build/src/library/repo.js +1 -22
  287. package/build/src/library/selection.d.ts +121 -0
  288. package/build/src/library/{fleet.js → selection.js} +177 -160
  289. package/build/src/plugin/public.d.ts +2 -0
  290. package/build/src/protocol/abandon.d.ts +2 -2
  291. package/build/src/protocol/abandon.js +1 -0
  292. package/build/src/protocol/amend.js +1 -0
  293. package/build/src/protocol/arc.d.ts +6 -4
  294. package/build/src/protocol/attempt.d.ts +4 -2
  295. package/build/src/protocol/attempt.js +10 -0
  296. package/build/src/protocol/audit.d.ts +255 -52
  297. package/build/src/protocol/audit.js +63 -5
  298. package/build/src/protocol/bind.d.ts +18 -17
  299. package/build/src/protocol/bind.js +9 -28
  300. package/build/src/protocol/completion.d.ts +256 -22
  301. package/build/src/protocol/completion.js +100 -12
  302. package/build/src/protocol/deliver.d.ts +34 -23
  303. package/build/src/protocol/deliver.js +39 -25
  304. package/build/src/protocol/execution-observation.d.ts +36 -37
  305. package/build/src/protocol/execution-observation.js +7 -9
  306. package/build/src/protocol/intent.d.ts +101 -30
  307. package/build/src/protocol/intent.js +74 -1
  308. package/build/src/protocol/operations.d.ts +570 -64
  309. package/build/src/protocol/operations.js +189 -9
  310. package/build/src/protocol/outcome.d.ts +2 -1
  311. package/build/src/protocol/placement.d.ts +2 -2
  312. package/build/src/protocol/placement.js +3 -1
  313. package/build/src/protocol/progress.d.ts +108 -65
  314. package/build/src/protocol/progress.js +82 -132
  315. package/build/src/protocol/read/status.d.ts +4 -3
  316. package/build/src/protocol/read/status.js +6 -5
  317. package/build/src/protocol/reconcile.d.ts +3 -3
  318. package/build/src/protocol/reconcile.js +4 -0
  319. package/build/src/protocol/reintegrate.d.ts +2 -2
  320. package/build/src/protocol/review.d.ts +30 -12
  321. package/build/src/protocol/review.js +15 -24
  322. package/build/src/protocol/run.d.ts +34 -5
  323. package/build/src/protocol/run.js +24 -12
  324. package/build/src/runtime/proc/windows-launch.exe +0 -0
  325. package/build/src/settings.d.ts +0 -10
  326. package/build/src/settings.js +0 -76
  327. package/build/src/settlement/holder.d.ts +1 -1
  328. package/build/src/settlement/settle.d.ts +25 -16
  329. package/build/src/settlement/settle.js +80 -20
  330. package/build/src/task/board.d.ts +3 -1
  331. package/build/src/task/board.js +13 -17
  332. package/build/src/task/catalog.d.ts +0 -4
  333. package/build/src/task/catalog.js +0 -15
  334. package/build/src/task/compose-language.d.ts +19 -9
  335. package/build/src/task/compose-language.js +30 -20
  336. package/build/src/task/compose.d.ts +7 -37
  337. package/build/src/task/compose.js +20 -2
  338. package/build/src/task/created-observation.d.ts +0 -1
  339. package/build/src/task/created-observation.js +1 -4
  340. package/build/src/task/document.d.ts +12 -2
  341. package/build/src/task/document.js +4 -0
  342. package/build/src/task/identity.d.ts +4 -1
  343. package/build/src/task/identity.js +21 -17
  344. package/build/src/task/index.d.ts +36 -16
  345. package/build/src/task/index.js +103 -96
  346. package/build/src/task/lifecycle-operations.d.ts +1 -1
  347. package/build/src/task/mutation-result.d.ts +647 -586
  348. package/build/src/task/mutation-result.js +79 -46
  349. package/build/src/task/mutation.d.ts +298 -270
  350. package/build/src/task/mutation.js +93 -110
  351. package/build/src/task/operation-types.d.ts +6 -49
  352. package/build/src/task/operations.d.ts +2 -1
  353. package/build/src/task/operations.js +35 -12
  354. package/build/src/task/query.d.ts +9 -3
  355. package/build/src/task/query.js +42 -16
  356. package/build/src/task/store.d.ts +2 -1
  357. package/build/src/task/store.js +10 -14
  358. package/build/src/verification/declaration.d.ts +0 -1
  359. package/build/src/verification/declaration.js +1 -18
  360. package/build/src/verification/execution.d.ts +6 -2
  361. package/build/src/verification/observation.d.ts +1 -1
  362. package/package.json +2 -14
  363. package/build/src/akuma/akuma-product-symbols.d.ts +0 -1
  364. package/build/src/akuma/akuma-product-symbols.js +0 -1
  365. package/build/src/akuma/akuma-product.d.ts +0 -62
  366. package/build/src/akuma/akuma-product.js +0 -293
  367. package/build/src/akuma/fleet-execution.js +0 -181
  368. package/build/src/akuma/fleet-observation.js +0 -91
  369. package/build/src/cli/accepted.d.ts +0 -24
  370. package/build/src/cli/accepted.js +0 -167
  371. package/build/src/cli/commands/akuma-invoke.d.ts +0 -114
  372. package/build/src/cli/commands/akuma-invoke.js +0 -402
  373. package/build/src/cli/commands/contract-invoke.d.ts +0 -34
  374. package/build/src/cli/commands/contract-invoke.js +0 -259
  375. package/build/src/cli/commands/nuke.d.ts +0 -10
  376. package/build/src/cli/commands/nuke.js +0 -20
  377. package/build/src/cli/commands/status-set.d.ts +0 -4
  378. package/build/src/cli/commands/status-set.js +0 -52
  379. package/build/src/cli/commands/task-invoke.d.ts +0 -49
  380. package/build/src/cli/commands/task-invoke.js +0 -306
  381. package/build/src/cli/invoke.d.ts +0 -27
  382. package/build/src/cli/invoke.js +0 -484
  383. package/build/src/cli/render/board.d.ts +0 -3
  384. package/build/src/cli/render/board.js +0 -25
  385. package/build/src/cli/render/status-set.d.ts +0 -5
  386. package/build/src/cli/render/status-set.js +0 -19
  387. package/build/src/cli/render/text.d.ts +0 -3
  388. package/build/src/cli/render/text.js +0 -33
  389. package/build/src/cli/result.d.ts +0 -240
  390. package/build/src/cli/result.js +0 -1
  391. package/build/src/git/result-codec.d.ts +0 -29
  392. package/build/src/git/result-codec.js +0 -309
  393. package/build/src/kanshi/fleet.d.ts +0 -6
  394. package/build/src/kanshi/fleet.js +0 -27
  395. package/build/src/library/audit.d.ts +0 -29
  396. package/build/src/library/audit.js +0 -41
  397. package/build/src/library/catalog.d.ts +0 -68
  398. package/build/src/library/catalog.js +0 -130
  399. package/build/src/library/composition.d.ts +0 -403
  400. package/build/src/library/composition.js +0 -29
  401. package/build/src/library/configuration.d.ts +0 -4
  402. package/build/src/library/configuration.js +0 -2
  403. package/build/src/library/contract-bind.d.ts +0 -31
  404. package/build/src/library/contract-bind.js +0 -140
  405. package/build/src/library/contract-forwarding.d.ts +0 -55
  406. package/build/src/library/contract-forwarding.js +0 -67
  407. package/build/src/library/contract-handle.d.ts +0 -45
  408. package/build/src/library/contract-handle.js +0 -373
  409. package/build/src/library/contract.d.ts +0 -53
  410. package/build/src/library/contract.js +0 -91
  411. package/build/src/library/execution-result.d.ts +0 -243
  412. package/build/src/library/execution-result.js +0 -101
  413. package/build/src/library/execution.d.ts +0 -8
  414. package/build/src/library/execution.js +0 -102
  415. package/build/src/library/fleet.d.ts +0 -83
  416. package/build/src/library/mutation.d.ts +0 -501
  417. package/build/src/library/mutation.js +0 -248
  418. package/build/src/library/result-codec.d.ts +0 -2
  419. package/build/src/library/result-codec.js +0 -12
  420. package/build/src/protocol/result-codec.d.ts +0 -23
  421. package/build/src/protocol/result-codec.js +0 -488
  422. package/build/src/settlement/result-codec.d.ts +0 -2
  423. package/build/src/settlement/result-codec.js +0 -56
  424. package/build/src/task/public.d.ts +0 -2
  425. package/build/src/task/public.js +0 -1
@@ -1,48 +1,87 @@
1
+ import { z } from "zod";
1
2
  import type { AkumaCallRequestChildLaunch } from "./call-request.js";
2
- import { type SessionFact, type Soul, type TellRow } from "./heart/index.js";
3
3
  import { type AkumaPaths } from "./identity.js";
4
+ import { type TellResult } from "./call-initial-tell.js";
5
+ export type { TellResult, TellWake } from "./call-initial-tell.js";
4
6
  import { type WorldRoot } from "../world.js";
5
7
  import type { ProviderAdapter } from "./provider.js";
6
8
  import type { ErasedRequestCommand } from "./request-wire.js";
7
- import { type OwnedProcess, type RunLogReference } from "../runtime/proc/run.js";
9
+ import { type OwnedProcess } from "../runtime/proc/run.js";
8
10
  export declare const LEASH_HELD_EXIT = 75;
9
11
  export { CONTROL_RESPONSE_MS } from "./body-supervisor.js";
10
- export type BodyLaunch = Readonly<{
11
- paths: AkumaPaths;
12
- seed?: Omit<Soul, "createdAt">;
13
- birthSession?: Omit<SessionFact, "sequence">;
14
- initialBody?: string;
15
- initiator?: string;
16
- initialSchemaJson?: string;
17
- refuseIfHeld?: boolean;
18
- completion?: Readonly<{
19
- contractId?: string;
20
- }>;
21
- }>;
22
- export type TellWake = Readonly<{
23
- kind: "told";
24
- }> | Readonly<{
25
- kind: "pursuing";
26
- bodySequence: number;
27
- }> | Readonly<{
28
- kind: "held";
29
- }> | Readonly<{
30
- kind: "failed";
31
- diagnostic: string;
32
- child?: Readonly<{
33
- code: number | null;
34
- signal: string | null;
35
- log: RunLogReference;
36
- }>;
37
- }>;
38
- export type TellResult = Readonly<{
39
- admission: Readonly<{
40
- tellId: string;
41
- fact: "recorded";
42
- }>;
43
- row: TellRow;
44
- wake: TellWake;
45
- }>;
12
+ export declare const bodyLaunchSchema: z.ZodObject<{
13
+ paths: z.ZodObject<{
14
+ directory: z.ZodString;
15
+ heart: z.ZodString;
16
+ leash: z.ZodString;
17
+ log: z.ZodString;
18
+ requests: z.ZodString;
19
+ }, z.core.$strict>;
20
+ seed: z.ZodOptional<z.ZodPipe<z.ZodUnknown, z.ZodTransform<Omit<Readonly<{
21
+ id: import("./identity.js").AkuId;
22
+ archetype: string;
23
+ description?: string;
24
+ provider: import("./provider-recipe.js").ProviderExecution;
25
+ options: import("./provider-recipe.js").ProviderOptions;
26
+ cwd: string;
27
+ origin: import("./heart/facts.js").AkumaOrigin;
28
+ allowed: import("./allowed.js").AllowedActions;
29
+ createdAt: string;
30
+ }>, "createdAt">, unknown>>>;
31
+ birthSession: z.ZodOptional<z.ZodObject<{
32
+ provider: z.ZodString;
33
+ coordinate: z.ZodUnion<readonly [z.ZodPipe<z.ZodObject<{
34
+ sessionFile: z.ZodString;
35
+ sessionId: z.ZodOptional<z.ZodString>;
36
+ }, z.core.$strict>, z.ZodTransform<{
37
+ sessionFile: string;
38
+ sessionId?: never;
39
+ } | {
40
+ sessionFile: string;
41
+ sessionId: string;
42
+ }, {
43
+ sessionFile: string;
44
+ sessionId?: string | undefined;
45
+ }>>, z.ZodObject<{
46
+ sessionId: z.ZodString;
47
+ }, z.core.$strict>]>;
48
+ cwd: z.ZodString;
49
+ options: z.ZodPipe<z.ZodObject<{
50
+ model: z.ZodOptional<z.ZodString>;
51
+ effort: z.ZodOptional<z.ZodString>;
52
+ network: z.ZodOptional<z.ZodEnum<{
53
+ disabled: "disabled";
54
+ enabled: "enabled";
55
+ }>>;
56
+ systemPrompt: z.ZodOptional<z.ZodString>;
57
+ systemPromptMode: z.ZodOptional<z.ZodEnum<{
58
+ append: "append";
59
+ replace: "replace";
60
+ }>>;
61
+ }, z.core.$strip>, z.ZodTransform<Readonly<{
62
+ systemPromptMode?: "append" | "replace";
63
+ systemPrompt?: string;
64
+ network?: "disabled" | "enabled";
65
+ effort?: string;
66
+ model?: string;
67
+ }>, {
68
+ model?: string | undefined;
69
+ effort?: string | undefined;
70
+ network?: "disabled" | "enabled" | undefined;
71
+ systemPrompt?: string | undefined;
72
+ systemPromptMode?: "append" | "replace" | undefined;
73
+ }>>;
74
+ admittedAt: z.ZodString;
75
+ }, z.core.$strict>>;
76
+ initialBody: z.ZodOptional<z.ZodString>;
77
+ initiator: z.ZodOptional<z.ZodString>;
78
+ initialSchemaJson: z.ZodOptional<z.ZodString>;
79
+ refuseIfHeld: z.ZodOptional<z.ZodBoolean>;
80
+ completion: z.ZodOptional<z.ZodObject<{
81
+ contractId: z.ZodOptional<z.ZodString>;
82
+ }, z.core.$strict>>;
83
+ }, z.core.$strict>;
84
+ export type BodyLaunch = z.infer<typeof bodyLaunchSchema>;
46
85
  export type TellWakeRuntime = Readonly<{
47
86
  spawn(paths: AkumaPaths): Promise<OwnedProcess>;
48
87
  schedule?(milliseconds: number, signal: AbortSignal): Promise<void>;
@@ -54,28 +93,7 @@ type BodyRuntime = Readonly<{
54
93
  world: WorldRoot;
55
94
  externalCommands: Readonly<Record<string, ErasedRequestCommand>>;
56
95
  }>;
57
- type RuntimeEnvironment = Readonly<{
58
- /** The current process executable, preferred only while it is a different live value. */
59
- current?: string;
60
- /** The present PATH used to resolve the recorded executable basename. */
61
- path?: string | undefined;
62
- exists?: (path: string) => boolean | Promise<boolean>;
63
- }>;
64
- /** One Body launch's runtime input: the runtime recorded for it and its resolution environment. */
65
- export type BodyLaunchRuntime = Readonly<{
66
- recorded?: string;
67
- environment?: RuntimeEnvironment;
68
- }>;
69
- /**
70
- * Resolve the runtime executable a Body spawn will use. The path recorded for
71
- * this process's birth wins while it exists. Once it is gone, wake re-resolves
72
- * the runtime before any spawn can fail: the current process executable while
73
- * that is a different live value, then the recorded executable basename on the
74
- * present PATH. An unresolvable runtime refuses with the stale record, the
75
- * failed re-resolution, and the kill-and-call-fresh remedy.
76
- */
77
- export declare function resolveRuntimeExecutable(recorded?: string, environment?: RuntimeEnvironment): Promise<string>;
78
- export declare function bodyProcessInput(launch: BodyLaunch, bodyModuleUrl?: string, runtime?: BodyLaunchRuntime): Promise<{
96
+ export declare function bodyProcessInput(launch: BodyLaunch, bodyModuleUrl?: string): Promise<{
79
97
  argv: string[];
80
98
  cwd: string;
81
99
  env: Record<string, string>;
@@ -83,6 +101,6 @@ export declare function bodyProcessInput(launch: BodyLaunch, bodyModuleUrl?: str
83
101
  }>;
84
102
  export declare function handoffPendingTells(paths: AkumaPaths, spawn?: (launch: BodyLaunch) => Promise<OwnedProcess>): Promise<void>;
85
103
  export declare function driveAkumaBody(launch: BodyLaunch, adapter?: ProviderAdapter, runtimeInput?: Partial<BodyRuntime>): Promise<"held" | void>;
86
- export declare function spawnAkumaBody(launch: BodyLaunch, runtime?: BodyLaunchRuntime): Promise<OwnedProcess>;
104
+ export declare function spawnAkumaBody(launch: BodyLaunch): Promise<OwnedProcess>;
87
105
  export declare function runAkumaBody(launch: BodyLaunch, world: WorldRoot, externalCommands: Readonly<Record<string, ErasedRequestCommand>>): Promise<"held" | void>;
88
106
  export declare function wakeRecordedTell(paths: AkumaPaths, tellId: string, runtime?: TellWakeRuntime, signal?: AbortSignal): Promise<TellResult>;
@@ -1,21 +1,45 @@
1
+ import { z } from "zod";
2
+ import { decodeSoulSeed } from "./heart/soul.js";
3
+ import { sessionAdmissionSchema } from "./heart/rows.js";
1
4
  import { appendFile, stat } from "node:fs/promises";
2
- import { basename, delimiter, join } from "node:path";
3
5
  import { fileURLToPath } from "node:url";
4
6
  import { abortable, abortableDelay } from "./abort.js";
5
7
  import { BodySupervisor } from "./body-supervisor.js";
6
8
  import { driveTurn, turnRecipe } from "./turn-drive.js";
7
- import { HeldAkumaLeash, breakBody, decidePendingTellDisposition, drainPendingTells, endTurn, failOpenBoundTurns, finishBodyIfIdle, heartExists, isHeartAbsent, probeLeash, projectTell, readHeart, readLatestTurnForBody, readOpenBoundTurns, readOpenPendingTellDisposition, readTell, readTurn, readNonterminalRequests, resolvePendingTellDisposition, } from "./heart/index.js";
8
- import { worldRootForAkumaPaths } from "./identity.js";
9
+ import { HeldAkumaLeash, breakBody, decidePendingTellDisposition, drainPendingTells, endTurn, failOpenBoundTurns, finishBodyIfIdle, heartExists, isHeartAbsent, probeLeash, projectTell, readHeart, readLatestTurnForBody, readOpenBoundTurns, readOpenPendingTellDisposition, readTell, readTurn, readTurnParticipants, readNonterminalRequests, resolvePendingTellDisposition, } from "./heart/index.js";
10
+ import { akumaPathsSchema, pathsForAkuId, worldRootForAkumaPaths } from "./identity.js";
11
+ import { admitCallInitialTell, } from "./call-initial-tell.js";
9
12
  import { akumaExecutionEnvironment } from "./providers/execution-environment.js";
10
13
  import { pluginRuntime } from "../plugin/runtime.js";
11
14
  import { World } from "../world.js";
12
15
  import { resolveProviderExecution } from "./providers/index.js";
13
16
  import { clearBodyRequestTransport, settleBodyRequests } from "./request-serve.js";
14
- import { spawnDetachedProcess, } from "../runtime/proc/run.js";
17
+ import { spawnDetachedProcess } from "../runtime/proc/run.js";
15
18
  const LEASH_RETRY_MS = 100;
16
19
  const WAKE_REREAD_MS = 100;
17
20
  export const LEASH_HELD_EXIT = 75;
18
21
  export { CONTROL_RESPONSE_MS } from "./body-supervisor.js";
22
+ const launchSeedSchema = z.unknown().transform((value, context) => {
23
+ try {
24
+ return decodeSoulSeed(value);
25
+ }
26
+ catch {
27
+ context.addIssue({ code: "custom", message: "invalid Body birth seed" });
28
+ return z.NEVER;
29
+ }
30
+ });
31
+ export const bodyLaunchSchema = z
32
+ .object({
33
+ paths: akumaPathsSchema,
34
+ seed: launchSeedSchema.optional(),
35
+ birthSession: sessionAdmissionSchema.optional(),
36
+ initialBody: z.string().optional(),
37
+ initiator: z.string().optional(),
38
+ initialSchemaJson: z.string().optional(),
39
+ refuseIfHeld: z.boolean().optional(),
40
+ completion: z.object({ contractId: z.string().optional() }).strict().optional(),
41
+ })
42
+ .strict();
19
43
  function missing(error) {
20
44
  return isHeartAbsent(error) || error.code === "ENOENT";
21
45
  }
@@ -147,64 +171,63 @@ const DEFAULT_RUNTIME = {
147
171
  spawnBody: spawnAkumaBody,
148
172
  };
149
173
  /**
150
- * The runtime executable this process recorded at its birth. A package-manager
151
- * upgrade can remove the file under a live process, so a wake re-resolves that
152
- * record instead of surfacing a bare missing-file launch failure.
174
+ * The Body spawn executable is the waking process's own executable, resolved
175
+ * at use time. There is no recorded path and no re-resolution chain: when the
176
+ * file is genuinely gone the spawn fails honestly and the wake diagnostic
177
+ * names the missing piece.
153
178
  */
154
- const RECORDED_RUNTIME = process.execPath;
155
- async function runtimeFileExists(path) {
179
+ async function executableMissing(path) {
156
180
  try {
157
- return (await stat(path)).isFile();
181
+ return !(await stat(path)).isFile();
158
182
  }
159
183
  catch {
160
- return false;
184
+ return true;
161
185
  }
162
186
  }
163
- async function runtimeCommandOnPath(command, path, exists) {
164
- if (command.length === 0 || command.includes("/") || command.includes("\\"))
165
- return null;
166
- for (const directory of (path ?? "").split(delimiter)) {
167
- if (directory.length === 0)
168
- continue;
169
- const candidate = join(directory, command);
170
- if (await exists(candidate))
171
- return candidate;
187
+ async function frozenCwdMissing(path) {
188
+ try {
189
+ await stat(path);
190
+ return false;
172
191
  }
173
- return null;
174
- }
175
- class StaleRuntimeError extends Error {
176
- constructor(recorded, current, command) {
177
- super(`recorded Body runtime ${recorded} no longer exists and re-resolution failed: neither this process executable ` +
178
- `${current} nor the command "${command}" on PATH names an existing file; kill this Akuma and call a fresh one`);
179
- this.name = "StaleRuntimeError";
192
+ catch {
193
+ return true;
180
194
  }
181
195
  }
182
196
  /**
183
- * Resolve the runtime executable a Body spawn will use. The path recorded for
184
- * this process's birth wins while it exists. Once it is gone, wake re-resolves
185
- * the runtime before any spawn can fail: the current process executable while
186
- * that is a different live value, then the recorded executable basename on the
187
- * present PATH. An unresolvable runtime refuses with the stale record, the
188
- * failed re-resolution, and the kill-and-call-fresh remedy.
197
+ * Diagnose an ENOENT Body spawn failure by checking the attempted executable
198
+ * and the frozen execution cwd separately. The message names the genuinely
199
+ * missing piece(s) with the kill-and-call-fresh remedy; a missing cwd likely
200
+ * means its Contract was accepted and the worktree cleaned up. When both
201
+ * pieces still exist the original failure passes through unchanged, as does
202
+ * any non-ENOENT spawn failure.
189
203
  */
190
- export async function resolveRuntimeExecutable(recorded = RECORDED_RUNTIME, environment = {}) {
191
- const exists = environment.exists ?? runtimeFileExists;
192
- if (await exists(recorded))
193
- return recorded;
194
- const current = environment.current ?? process.execPath;
195
- const command = basename(recorded);
196
- const reResolved = (current !== recorded && (await exists(current)) ? current : null) ??
197
- (await runtimeCommandOnPath(command, environment.path ?? process.env.PATH, exists));
198
- if (reResolved === null)
199
- throw new StaleRuntimeError(recorded, current, command);
200
- return reResolved;
201
- }
202
- export async function bodyProcessInput(launch, bodyModuleUrl = import.meta.url, runtime = {}) {
204
+ async function diagnoseSpawnEnoent(input, cause) {
205
+ const executable = input.argv[0] ?? process.execPath;
206
+ const cwd = input.cwd;
207
+ const [noExecutable, noCwd] = await Promise.all([executableMissing(executable), frozenCwdMissing(cwd)]);
208
+ if (!noExecutable && !noCwd)
209
+ return cause instanceof Error ? cause : new Error(String(cause));
210
+ const missing = [];
211
+ if (noCwd)
212
+ missing.push(`frozen execution directory ${cwd} no longer exists`);
213
+ if (noExecutable)
214
+ missing.push(`waking process executable ${executable} no longer exists (the host likely removed the running process binary)`);
215
+ const remedies = [];
216
+ if (noCwd)
217
+ remedies.push("a missing execution directory likely means its Contract was accepted and the worktree cleaned up, with deliverables already in Git");
218
+ if (noExecutable)
219
+ remedies.push("a missing executable likely means the host removed the running process binary: re-enter with a fresh CLI process and retry");
220
+ const remedy = `kill this Akuma and call a fresh one; ${remedies.join("; ")}`;
221
+ const error = new Error(`Body spawn failed: ${missing.join(" and ")}; ${remedy}`, { cause });
222
+ error.code = "ENOENT";
223
+ return error;
224
+ }
225
+ export async function bodyProcessInput(launch, bodyModuleUrl = import.meta.url) {
203
226
  const encoded = Buffer.from(JSON.stringify(launch), "utf8").toString("base64url");
204
227
  const actorId = launch.seed?.id ?? (await readHeart(launch.paths)).soul?.id;
205
228
  if (actorId === undefined)
206
229
  throw new Error("Akuma wake has no born soul");
207
- const executable = await resolveRuntimeExecutable(runtime.recorded, runtime.environment);
230
+ const executable = process.execPath;
208
231
  const source = bodyModuleUrl.endsWith(".ts");
209
232
  const entry = fileURLToPath(new URL(source ? "../akuma-body.ts" : "../akuma-body.js", bodyModuleUrl));
210
233
  return {
@@ -294,6 +317,7 @@ function turnOutcomeEmitter(launch, soul) {
294
317
  const turn = await readTurn(launch.paths, turnSequence);
295
318
  if (turn === null)
296
319
  throw new Error(`Committed Turn ${turnSequence} is missing from Heart`);
320
+ const participants = await readTurnParticipants(launch.paths, turnSequence);
297
321
  plugins ??= pluginRuntime({
298
322
  world: await World.at(worldRootForAkumaPaths(launch.paths)),
299
323
  reportDiagnostic,
@@ -304,6 +328,7 @@ function turnOutcomeEmitter(launch, soul) {
304
328
  bodySequence: turn.bodySequence,
305
329
  turnSequence,
306
330
  ...(turn.initiator === undefined ? {} : { initiator: turn.initiator }),
331
+ ...(participants.length === 0 ? {} : { participants }),
307
332
  outcome: outcome.outcome === "answered"
308
333
  ? { kind: "answered", text: outcome.answer }
309
334
  : { kind: "failed", reason: outcome.diagnostic },
@@ -323,7 +348,9 @@ function bodyEndEmitter(launch, soul) {
323
348
  };
324
349
  return (bodySequence, end, diagnostic) => (async () => {
325
350
  try {
326
- const initiator = (await readLatestTurnForBody(launch.paths, bodySequence))?.initiator;
351
+ const latestTurn = await readLatestTurnForBody(launch.paths, bodySequence);
352
+ const initiator = latestTurn?.initiator;
353
+ const participants = latestTurn === null ? [] : await readTurnParticipants(launch.paths, latestTurn.sequence);
327
354
  plugins ??= pluginRuntime({
328
355
  world: await World.at(worldRootForAkumaPaths(launch.paths)),
329
356
  reportDiagnostic,
@@ -335,6 +362,7 @@ function bodyEndEmitter(launch, soul) {
335
362
  bodySequence,
336
363
  end,
337
364
  ...(initiator === undefined ? {} : { initiator }),
365
+ ...(participants.length === 0 ? {} : { participants }),
338
366
  ...(diagnostic === undefined ? {} : { diagnostic }),
339
367
  ...(launch.completion?.contractId === undefined ? {} : { contractId: launch.completion.contractId }),
340
368
  }, reportDiagnostic);
@@ -344,6 +372,20 @@ function bodyEndEmitter(launch, soul) {
344
372
  }
345
373
  })();
346
374
  }
375
+ async function admitInitialCallTell(runtime, input) {
376
+ const paths = pathsForAkuId(runtime.world, input.id);
377
+ return await admitCallInitialTell({
378
+ world: runtime.world,
379
+ id: input.id,
380
+ initialTell: input.initialTell,
381
+ signal: input.signal,
382
+ now: runtime.now,
383
+ wake: async (tell) => await wakeRecordedTell(paths, tell.id, {
384
+ spawn: async (tellPaths) => await (runtime.spawnBody ?? spawnAkumaBody)({ paths: tellPaths, refuseIfHeld: true }),
385
+ schedule: abortableDelay,
386
+ }, input.signal),
387
+ });
388
+ }
347
389
  async function runBodyTurns(input) {
348
390
  const { launch, soul, adapter, bodySequence, supervisor, runtime, turnOutcome } = input;
349
391
  let initial = launch.initialBody;
@@ -371,6 +413,7 @@ async function runBodyTurns(input) {
371
413
  bodySequence,
372
414
  supervisor,
373
415
  runtimeSpawn: runtime.spawnChild ?? spawnAkumaBody,
416
+ admitInitialTell: async (admission) => await admitInitialCallTell(runtime, admission),
374
417
  body: initial ?? "",
375
418
  ...(initial === undefined ? {} : { call: initial }),
376
419
  ...(launch.initiator === undefined ? {} : { initiator: launch.initiator }),
@@ -560,8 +603,16 @@ export async function driveAkumaBody(launch, adapter, runtimeInput = {}) {
560
603
  await finished.notification;
561
604
  }
562
605
  }
563
- export async function spawnAkumaBody(launch, runtime = {}) {
564
- return await spawnDetachedProcess(await bodyProcessInput(launch, import.meta.url, runtime));
606
+ export async function spawnAkumaBody(launch) {
607
+ const input = await bodyProcessInput(launch, import.meta.url);
608
+ try {
609
+ return await spawnDetachedProcess(input);
610
+ }
611
+ catch (error) {
612
+ if (error?.code !== "ENOENT")
613
+ throw error;
614
+ throw await diagnoseSpawnEnoent(input, error);
615
+ }
565
616
  }
566
617
  export async function runAkumaBody(launch, world, externalCommands) {
567
618
  return await driveAkumaBody(launch, undefined, { world, externalCommands });
@@ -0,0 +1,164 @@
1
+ import { z } from "zod";
2
+ import type { WorldRoot } from "../world.js";
3
+ import { type TellFact } from "./heart/index.js";
4
+ import { type AkuId } from "./identity.js";
5
+ export type CallInitialTell = Readonly<{
6
+ tellId: string;
7
+ body: string;
8
+ schemaJson?: string;
9
+ initiator?: string;
10
+ }>;
11
+ declare const tellWakeSchema: z.ZodUnion<readonly [z.ZodObject<{
12
+ kind: z.ZodLiteral<"told">;
13
+ }, z.core.$strict>, z.ZodObject<{
14
+ kind: z.ZodLiteral<"held">;
15
+ }, z.core.$strict>, z.ZodObject<{
16
+ kind: z.ZodLiteral<"pursuing">;
17
+ bodySequence: z.ZodNumber;
18
+ }, z.core.$strict>, z.ZodPipe<z.ZodObject<{
19
+ kind: z.ZodLiteral<"failed">;
20
+ diagnostic: z.ZodString;
21
+ child: z.ZodOptional<z.ZodObject<{
22
+ code: z.ZodNullable<z.ZodNumber>;
23
+ signal: z.ZodNullable<z.ZodString>;
24
+ log: z.ZodObject<{
25
+ path: z.ZodString;
26
+ from: z.ZodNumber;
27
+ to: z.ZodNumber;
28
+ }, z.core.$strict>;
29
+ }, z.core.$strict>>;
30
+ }, z.core.$strict>, z.ZodTransform<{
31
+ kind: "failed";
32
+ diagnostic: string;
33
+ } | {
34
+ child: {
35
+ code: number | null;
36
+ signal: string | null;
37
+ log: {
38
+ path: string;
39
+ from: number;
40
+ to: number;
41
+ };
42
+ };
43
+ kind: "failed";
44
+ diagnostic: string;
45
+ }, {
46
+ kind: "failed";
47
+ diagnostic: string;
48
+ child?: {
49
+ code: number | null;
50
+ signal: string | null;
51
+ log: {
52
+ path: string;
53
+ from: number;
54
+ to: number;
55
+ };
56
+ } | undefined;
57
+ }>>]>;
58
+ export declare const tellResultSchema: z.ZodObject<{
59
+ admission: z.ZodObject<{
60
+ fact: z.ZodLiteral<"recorded">;
61
+ tellId: z.ZodString;
62
+ }, z.core.$strict>;
63
+ row: z.ZodObject<{
64
+ kind: z.ZodLiteral<"tell">;
65
+ sequence: z.ZodNumber;
66
+ at: z.ZodString;
67
+ tellId: z.ZodString;
68
+ text: z.ZodString;
69
+ state: z.ZodEnum<{
70
+ pending: "pending";
71
+ told: "told";
72
+ }>;
73
+ deliveries: z.ZodReadonly<z.ZodArray<z.ZodPipe<z.ZodObject<{
74
+ deliveredAt: z.ZodString;
75
+ route: z.ZodEnum<{
76
+ live: "live";
77
+ launch: "launch";
78
+ }>;
79
+ turnSequence: z.ZodNumber;
80
+ receipt: z.ZodOptional<z.ZodEnum<{
81
+ required: "required";
82
+ unavailable: "unavailable";
83
+ }>>;
84
+ }, z.core.$strict>, z.ZodTransform<Readonly<{
85
+ turnSequence: number;
86
+ route: "launch" | "live";
87
+ receipt?: "unavailable" | "required";
88
+ deliveredAt: string;
89
+ }>, {
90
+ deliveredAt: string;
91
+ route: "live" | "launch";
92
+ turnSequence: number;
93
+ receipt?: "required" | "unavailable" | undefined;
94
+ }>>>>;
95
+ }, z.core.$strict>;
96
+ wake: z.ZodUnion<readonly [z.ZodObject<{
97
+ kind: z.ZodLiteral<"told">;
98
+ }, z.core.$strict>, z.ZodObject<{
99
+ kind: z.ZodLiteral<"held">;
100
+ }, z.core.$strict>, z.ZodObject<{
101
+ kind: z.ZodLiteral<"pursuing">;
102
+ bodySequence: z.ZodNumber;
103
+ }, z.core.$strict>, z.ZodPipe<z.ZodObject<{
104
+ kind: z.ZodLiteral<"failed">;
105
+ diagnostic: z.ZodString;
106
+ child: z.ZodOptional<z.ZodObject<{
107
+ code: z.ZodNullable<z.ZodNumber>;
108
+ signal: z.ZodNullable<z.ZodString>;
109
+ log: z.ZodObject<{
110
+ path: z.ZodString;
111
+ from: z.ZodNumber;
112
+ to: z.ZodNumber;
113
+ }, z.core.$strict>;
114
+ }, z.core.$strict>>;
115
+ }, z.core.$strict>, z.ZodTransform<{
116
+ kind: "failed";
117
+ diagnostic: string;
118
+ } | {
119
+ child: {
120
+ code: number | null;
121
+ signal: string | null;
122
+ log: {
123
+ path: string;
124
+ from: number;
125
+ to: number;
126
+ };
127
+ };
128
+ kind: "failed";
129
+ diagnostic: string;
130
+ }, {
131
+ kind: "failed";
132
+ diagnostic: string;
133
+ child?: {
134
+ code: number | null;
135
+ signal: string | null;
136
+ log: {
137
+ path: string;
138
+ from: number;
139
+ to: number;
140
+ };
141
+ } | undefined;
142
+ }>>]>;
143
+ }, z.core.$strict>;
144
+ export type TellWake = z.infer<typeof tellWakeSchema>;
145
+ export type TellResult = z.infer<typeof tellResultSchema>;
146
+ export type CallInitialTellAdmission = Readonly<{
147
+ kind: "admitted";
148
+ tell: TellFact;
149
+ wake: Promise<TellResult>;
150
+ }> | Readonly<{
151
+ kind: "not-born";
152
+ }> | Readonly<{
153
+ kind: "birth-failed";
154
+ diagnostic: string;
155
+ }>;
156
+ export declare function admitCallInitialTell(input: Readonly<{
157
+ world: WorldRoot;
158
+ id: AkuId;
159
+ initialTell: CallInitialTell;
160
+ signal?: AbortSignal;
161
+ now?: () => string;
162
+ wake(tell: TellFact): Promise<TellResult>;
163
+ }>): Promise<CallInitialTellAdmission>;
164
+ export {};
@@ -0,0 +1,62 @@
1
+ import { z } from "zod";
2
+ import { bornStatus, defaultWaitComplete, readWaitComplete, waitForObservation } from "./akuma-observe.js";
3
+ import { recordTell } from "./heart/index.js";
4
+ import { pathsForAkuId } from "./identity.js";
5
+ import { tellRowSchema } from "./projection.js";
6
+ import { BIRTH_TIMEOUT_MS } from "./publication.js";
7
+ const nonblankTextSchema = z.string().refine((value) => value.trim() !== "");
8
+ const runLogReferenceSchema = z
9
+ .object({ path: z.string(), from: z.number().int().nonnegative(), to: z.number().int().nonnegative() })
10
+ .strict();
11
+ const failedTellWakeSchema = z
12
+ .object({
13
+ kind: z.literal("failed"),
14
+ diagnostic: z.string(),
15
+ child: z
16
+ .object({ code: z.number().int().nullable(), signal: z.string().nullable(), log: runLogReferenceSchema })
17
+ .strict()
18
+ .optional(),
19
+ })
20
+ .strict()
21
+ .transform(({ child, ...wake }) => (child === undefined ? wake : { ...wake, child }));
22
+ const tellWakeSchema = z.union([
23
+ z.object({ kind: z.literal("told") }).strict(),
24
+ z.object({ kind: z.literal("held") }).strict(),
25
+ z.object({ kind: z.literal("pursuing"), bodySequence: z.number().int().nonnegative() }).strict(),
26
+ failedTellWakeSchema,
27
+ ]);
28
+ export const tellResultSchema = z
29
+ .object({
30
+ admission: z.object({ fact: z.literal("recorded"), tellId: nonblankTextSchema }).strict(),
31
+ row: tellRowSchema,
32
+ wake: tellWakeSchema,
33
+ })
34
+ .strict();
35
+ export async function admitCallInitialTell(input) {
36
+ const paths = pathsForAkuId(input.world, input.id);
37
+ const birth = await waitForObservation({
38
+ timeoutMs: BIRTH_TIMEOUT_MS,
39
+ ...(input.signal === undefined ? {} : { signal: input.signal }),
40
+ probe: async () => await readWaitComplete(input.world, input.id),
41
+ observe: async () => (await bornStatus(paths, input.id, { aperture: "receipt" })).status,
42
+ complete: defaultWaitComplete,
43
+ });
44
+ if (birth.reason !== "completed" || birth.value.life !== "asleep") {
45
+ return {
46
+ kind: "birth-failed",
47
+ diagnostic: `Akuma ${input.id} prompt-free birth did not settle cleanly`,
48
+ };
49
+ }
50
+ input.signal?.throwIfAborted();
51
+ const recorded = await recordTell(paths, {
52
+ kind: "tell",
53
+ id: input.initialTell.tellId,
54
+ body: input.initialTell.body,
55
+ recordedAt: input.now?.() ?? new Date().toISOString(),
56
+ ...(input.initialTell.schemaJson === undefined ? {} : { schemaJson: input.initialTell.schemaJson }),
57
+ ...(input.initialTell.initiator === undefined ? {} : { initiator: input.initialTell.initiator }),
58
+ });
59
+ if (recorded.kind === "not-born")
60
+ return recorded;
61
+ return { kind: "admitted", tell: recorded.tell, wake: input.wake(recorded.tell) };
62
+ }
@@ -1,4 +1 @@
1
- export declare function callReadonly(value: unknown, diagnostic?: string): Readonly<{
2
- readonly?: true;
3
- }>;
4
1
  export declare function canonicalBirthCwd(input: string, diagnostic?: string): Promise<string>;
@@ -1,12 +1,5 @@
1
1
  import { realpath, stat } from "node:fs/promises";
2
2
  import { resolve } from "node:path";
3
- export function callReadonly(value, diagnostic = "Akuma call readonly must be true") {
4
- if (value === undefined)
5
- return {};
6
- if (value !== true)
7
- throw new TypeError(diagnostic);
8
- return { readonly: true };
9
- }
10
3
  export async function canonicalBirthCwd(input, diagnostic = `cwd is not an existing directory: ${input}`) {
11
4
  const selected = resolve(input);
12
5
  try {