@astrosheep/keiyaku 4.5.29 → 4.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku/SKILL.md +0 -13
  2. package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-akuma/SKILL.md +47 -78
  3. package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-akuma/references/automation.md +54 -41
  4. package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-babysit/SKILL.md +10 -0
  5. package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-bind/SKILL.md +27 -9
  6. package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-workflow/SKILL.md +68 -71
  7. package/build/src/akuma/akuma-call.d.ts +53 -0
  8. package/build/src/akuma/akuma-call.js +113 -0
  9. package/build/src/akuma/akuma-instance.d.ts +20 -18
  10. package/build/src/akuma/akuma-instance.js +65 -175
  11. package/build/src/akuma/akuma-observe.d.ts +3 -21
  12. package/build/src/akuma/akuma-observe.js +7 -24
  13. package/build/src/akuma/{akuma-handle.d.ts → akuma-owner.d.ts} +55 -27
  14. package/build/src/akuma/{akuma-handle.js → akuma-owner.js} +24 -23
  15. package/build/src/akuma/akuma-selection-execution.d.ts +51 -0
  16. package/build/src/akuma/akuma-selection-execution.js +134 -0
  17. package/build/src/akuma/{fleet-execution.d.ts → akuma-wait.d.ts} +24 -44
  18. package/build/src/akuma/akuma-wait.js +113 -0
  19. package/build/src/akuma/akuma.d.ts +35 -89
  20. package/build/src/akuma/akuma.js +148 -30
  21. package/build/src/akuma/archetype.d.ts +12 -0
  22. package/build/src/akuma/archetype.js +47 -19
  23. package/build/src/akuma/body.d.ts +76 -36
  24. package/build/src/akuma/body.js +84 -49
  25. package/build/src/akuma/call-initial-tell.d.ts +131 -22
  26. package/build/src/akuma/call-initial-tell.js +31 -1
  27. package/build/src/akuma/call-request.d.ts +237 -31
  28. package/build/src/akuma/call-request.js +67 -94
  29. package/build/src/akuma/coordinate.d.ts +15 -5
  30. package/build/src/akuma/coordinate.js +12 -22
  31. package/build/src/akuma/dispatch-association.d.ts +1 -1
  32. package/build/src/akuma/dispatch-association.js +1 -10
  33. package/build/src/akuma/heart/activity-schema.d.ts +325 -0
  34. package/build/src/akuma/heart/activity-schema.js +53 -0
  35. package/build/src/akuma/heart/facts.d.ts +1 -6
  36. package/build/src/akuma/heart/index.d.ts +3 -1
  37. package/build/src/akuma/heart/index.js +4 -1
  38. package/build/src/akuma/heart/rows.d.ts +49 -2
  39. package/build/src/akuma/heart/rows.js +16 -2
  40. package/build/src/akuma/heart/soul.d.ts +1 -0
  41. package/build/src/akuma/heart/soul.js +6 -4
  42. package/build/src/akuma/heart/tells.d.ts +1 -0
  43. package/build/src/akuma/heart/tells.js +18 -0
  44. package/build/src/akuma/identity.d.ts +10 -7
  45. package/build/src/akuma/identity.js +23 -0
  46. package/build/src/akuma/index.d.ts +10 -8
  47. package/build/src/akuma/index.js +2 -2
  48. package/build/src/akuma/nuke.d.ts +3 -0
  49. package/build/src/akuma/nuke.js +13 -7
  50. package/build/src/akuma/projection.d.ts +0 -5
  51. package/build/src/akuma/projection.js +22 -43
  52. package/build/src/akuma/provider-recipe.d.ts +58 -13
  53. package/build/src/akuma/provider-recipe.js +62 -80
  54. package/build/src/akuma/provider.d.ts +6 -76
  55. package/build/src/akuma/provider.js +11 -219
  56. package/build/src/akuma/providers/acp/config.d.ts +2 -0
  57. package/build/src/akuma/providers/acp/config.js +26 -1
  58. package/build/src/akuma/providers/acp/core.d.ts +7 -0
  59. package/build/src/akuma/providers/acp/core.js +49 -18
  60. package/build/src/akuma/providers/acp/index.js +14 -6
  61. package/build/src/akuma/providers/grok-build/index.js +44 -13
  62. package/build/src/akuma/providers/index.d.ts +3 -3
  63. package/build/src/akuma/providers/index.js +2 -13
  64. package/build/src/akuma/providers/opencode-sdk/event-stream.d.ts +28 -0
  65. package/build/src/akuma/providers/opencode-sdk/event-stream.js +92 -0
  66. package/build/src/akuma/providers/opencode-sdk/events.d.ts +0 -1
  67. package/build/src/akuma/providers/opencode-sdk/index.js +200 -64
  68. package/build/src/akuma/providers/opencode-sdk/session.d.ts +41 -1
  69. package/build/src/akuma/providers/opencode-sdk/session.js +69 -2
  70. package/build/src/akuma/providers/pi/events.js +5 -2
  71. package/build/src/akuma/providers/pi/index.d.ts +3 -4
  72. package/build/src/akuma/providers/pi/index.js +99 -45
  73. package/build/src/akuma/publication.d.ts +84 -3
  74. package/build/src/akuma/publication.js +145 -2
  75. package/build/src/akuma/read-pool.d.ts +2 -0
  76. package/build/src/akuma/read-pool.js +15 -0
  77. package/build/src/akuma/request-rendezvous.js +10 -0
  78. package/build/src/akuma/request-serve.js +7 -0
  79. package/build/src/akuma/request-wire.d.ts +14 -26
  80. package/build/src/akuma/request-wire.js +4 -0
  81. package/build/src/akuma/requests.d.ts +0 -2
  82. package/build/src/akuma/requests.js +0 -17
  83. package/build/src/akuma/{fleet-observation.d.ts → selection-observation.d.ts} +37 -36
  84. package/build/src/akuma/selection-observation.js +65 -0
  85. package/build/src/akuma/{fleet-owner-port.d.ts → selection-owner-port.d.ts} +3 -3
  86. package/build/src/akuma/{fleet-owner-port.js → selection-owner-port.js} +11 -17
  87. package/build/src/akuma/{fleet-request.d.ts → selection-request.d.ts} +42 -82
  88. package/build/src/akuma/{fleet-request.js → selection-request.js} +92 -136
  89. package/build/src/akuma/turn-drive.js +73 -14
  90. package/build/src/akuma-body.js +91 -56
  91. package/build/src/body/amend.d.ts +5 -0
  92. package/build/src/body/amend.js +26 -50
  93. package/build/src/body/arc.d.ts +4 -2
  94. package/build/src/body/arc.js +19 -26
  95. package/build/src/body/criteria.d.ts +6 -0
  96. package/build/src/body/criteria.js +37 -0
  97. package/build/src/body/decode.js +5 -42
  98. package/build/src/body/region.d.ts +5 -0
  99. package/build/src/body/region.js +45 -2
  100. package/build/src/body/render.js +2 -4
  101. package/build/src/cli/activity.d.ts +26 -0
  102. package/build/src/cli/activity.js +75 -0
  103. package/build/src/cli/actor.d.ts +3 -1
  104. package/build/src/cli/actor.js +15 -2
  105. package/build/src/cli/commands/akuma-grammar.d.ts +75 -0
  106. package/build/src/cli/commands/akuma-grammar.js +414 -0
  107. package/build/src/cli/commands/akuma.d.ts +5 -69
  108. package/build/src/cli/commands/akuma.js +352 -319
  109. package/build/src/cli/commands/amend.d.ts +4 -5
  110. package/build/src/cli/commands/amend.js +1 -2
  111. package/build/src/cli/commands/bind.d.ts +4 -5
  112. package/build/src/cli/commands/bind.js +7 -10
  113. package/build/src/cli/commands/contract-grammar.d.ts +112 -0
  114. package/build/src/cli/commands/contract-grammar.js +282 -0
  115. package/build/src/cli/commands/contract-help.d.ts +17 -22
  116. package/build/src/cli/commands/contract-help.js +37 -24
  117. package/build/src/cli/commands/contract.d.ts +18 -97
  118. package/build/src/cli/commands/contract.js +621 -233
  119. package/build/src/cli/commands/install.d.ts +1 -1
  120. package/build/src/cli/commands/install.js +2 -2
  121. package/build/src/cli/commands/task-grammar.d.ts +19 -0
  122. package/build/src/cli/commands/task-grammar.js +438 -0
  123. package/build/src/cli/commands/task-query.js +23 -104
  124. package/build/src/cli/commands/task.d.ts +5 -20
  125. package/build/src/cli/commands/task.js +414 -364
  126. package/build/src/cli/coordinates.d.ts +10 -0
  127. package/build/src/cli/coordinates.js +20 -0
  128. package/build/src/cli/draft.d.ts +7 -1
  129. package/build/src/cli/main.js +10 -1
  130. package/build/src/cli/parse.d.ts +8 -9
  131. package/build/src/cli/parse.js +62 -62
  132. package/build/src/cli/render/akuma-activity.d.ts +54 -36
  133. package/build/src/cli/render/akuma-activity.js +262 -242
  134. package/build/src/cli/render/akuma-tool.d.ts +8 -4
  135. package/build/src/cli/render/akuma-tool.js +6 -5
  136. package/build/src/cli/render/akuma.d.ts +36 -16
  137. package/build/src/cli/render/akuma.js +65 -132
  138. package/build/src/cli/render/audit.d.ts +6 -2
  139. package/build/src/cli/render/audit.js +59 -28
  140. package/build/src/cli/render/catalog.d.ts +11 -2
  141. package/build/src/cli/render/catalog.js +75 -95
  142. package/build/src/cli/render/contract-history.d.ts +3 -1
  143. package/build/src/cli/render/contract-history.js +215 -22
  144. package/build/src/cli/render/contract-observation.d.ts +10 -5
  145. package/build/src/cli/render/contract-observation.js +29 -46
  146. package/build/src/cli/render/contract.d.ts +10 -3
  147. package/build/src/cli/render/contract.js +252 -103
  148. package/build/src/cli/render/effects.d.ts +26 -0
  149. package/build/src/cli/render/effects.js +41 -0
  150. package/build/src/cli/render/execution-progress.d.ts +18 -6
  151. package/build/src/cli/render/execution-progress.js +34 -31
  152. package/build/src/cli/render/kanshi-akuma.d.ts +1 -2
  153. package/build/src/cli/render/kanshi-akuma.js +5 -26
  154. package/build/src/cli/render/kanshi.js +107 -128
  155. package/build/src/cli/render/marks.d.ts +13 -0
  156. package/build/src/cli/render/marks.js +74 -0
  157. package/build/src/cli/render/nuke.js +18 -7
  158. package/build/src/cli/render/receipt.d.ts +10 -4
  159. package/build/src/cli/render/receipt.js +124 -44
  160. package/build/src/cli/render/reconcile.d.ts +5 -0
  161. package/build/src/cli/render/reconcile.js +152 -0
  162. package/build/src/cli/render/refusal.d.ts +21 -4
  163. package/build/src/cli/render/refusal.js +60 -33
  164. package/build/src/cli/render/region.js +3 -2
  165. package/build/src/cli/render/settings.js +2 -12
  166. package/build/src/cli/render/task.d.ts +37 -6
  167. package/build/src/cli/render/task.js +161 -157
  168. package/build/src/cli/render/terminal.d.ts +20 -1
  169. package/build/src/cli/render/terminal.js +92 -18
  170. package/build/src/cli/runtime.d.ts +32 -8
  171. package/build/src/cli/runtime.js +157 -165
  172. package/build/src/cli/selectors.d.ts +5 -2
  173. package/build/src/cli/selectors.js +11 -3
  174. package/build/src/cli/streams.d.ts +11 -0
  175. package/build/src/cli/streams.js +32 -0
  176. package/build/src/cli/usage.d.ts +2 -0
  177. package/build/src/cli/usage.js +12 -8
  178. package/build/src/contract-guidance.js +3 -7
  179. package/build/src/contract-worktree.d.ts +20 -28
  180. package/build/src/contract-worktree.js +18 -70
  181. package/build/src/coordination/durable-file.d.ts +2 -2
  182. package/build/src/coordination/durable-file.js +0 -27
  183. package/build/src/core/facts/codec.d.ts +1 -2
  184. package/build/src/core/facts/codec.js +6 -7
  185. package/build/src/core/facts/gate.d.ts +0 -1
  186. package/build/src/core/facts/gate.js +0 -82
  187. package/build/src/core/facts/types.d.ts +1 -2
  188. package/build/src/core/verbs/abandon.d.ts +2 -6
  189. package/build/src/core/verbs/abandon.js +0 -16
  190. package/build/src/core/verbs/amend.d.ts +0 -1
  191. package/build/src/core/verbs/amend.js +0 -20
  192. package/build/src/core/verbs/arc.d.ts +7 -8
  193. package/build/src/core/verbs/arc.js +2 -19
  194. package/build/src/core/verbs/attestation.d.ts +2 -6
  195. package/build/src/core/verbs/attestation.js +0 -16
  196. package/build/src/core/verbs/bind.d.ts +0 -1
  197. package/build/src/core/verbs/bind.js +0 -16
  198. package/build/src/core/verbs/deliver.d.ts +0 -1
  199. package/build/src/core/verbs/deliver.js +0 -16
  200. package/build/src/core/verbs/placement.d.ts +2 -1
  201. package/build/src/core/verbs/placement.js +10 -59
  202. package/build/src/git/admission.d.ts +6 -4
  203. package/build/src/git/admission.js +4 -0
  204. package/build/src/git/hooks.d.ts +55 -30
  205. package/build/src/git/hooks.js +30 -3
  206. package/build/src/git/identity.d.ts +6 -0
  207. package/build/src/git/identity.js +47 -0
  208. package/build/src/git/integration.d.ts +31 -13
  209. package/build/src/git/integration.js +32 -1
  210. package/build/src/git/nuke.d.ts +10 -1
  211. package/build/src/git/nuke.js +31 -11
  212. package/build/src/git/observe.js +2 -15
  213. package/build/src/git/private-state-seat.d.ts +6 -7
  214. package/build/src/git/private-state-seat.js +8 -6
  215. package/build/src/git/read-observation.d.ts +6 -1
  216. package/build/src/git/read-observation.js +81 -46
  217. package/build/src/git/reconcile.d.ts +117 -40
  218. package/build/src/git/reconcile.js +169 -40
  219. package/build/src/git/scratch.d.ts +7 -4
  220. package/build/src/git/scratch.js +28 -6
  221. package/build/src/git/target-placement.d.ts +53 -38
  222. package/build/src/git/target-placement.js +69 -54
  223. package/build/src/git/tender.d.ts +37 -28
  224. package/build/src/git/tender.js +39 -0
  225. package/build/src/git/terminal-reconcile.js +21 -23
  226. package/build/src/git/terminal-seal.d.ts +8 -6
  227. package/build/src/git/terminal-seal.js +10 -0
  228. package/build/src/git/workspace.d.ts +29 -15
  229. package/build/src/git/workspace.js +28 -2
  230. package/build/src/identity/normalize.js +19 -6
  231. package/build/src/index.d.ts +78 -7
  232. package/build/src/index.js +52 -4
  233. package/build/src/kanshi/read.d.ts +3 -3
  234. package/build/src/kanshi/read.js +21 -21
  235. package/build/src/kanshi/report.d.ts +9 -8
  236. package/build/src/kanshi/roster.d.ts +2 -0
  237. package/build/src/kanshi/roster.js +2 -0
  238. package/build/src/kanshi/select.js +7 -3
  239. package/build/src/library/address.d.ts +3 -7
  240. package/build/src/library/address.js +7 -7
  241. package/build/src/library/akuma-creation.d.ts +21 -32
  242. package/build/src/library/akuma-creation.js +148 -165
  243. package/build/src/library/akumas.d.ts +20 -22
  244. package/build/src/library/akumas.js +43 -20
  245. package/build/src/library/bind.d.ts +107 -13
  246. package/build/src/library/bind.js +29 -23
  247. package/build/src/library/continuation.d.ts +556 -28
  248. package/build/src/library/continuation.js +29 -54
  249. package/build/src/library/contract-composition.d.ts +40 -0
  250. package/build/src/library/contract-composition.js +105 -0
  251. package/build/src/library/contract-creation.d.ts +7 -0
  252. package/build/src/library/contract-creation.js +192 -0
  253. package/build/src/library/contract-execution.d.ts +29 -40
  254. package/build/src/library/contract-execution.js +503 -128
  255. package/build/src/library/contract-operations.d.ts +275 -134
  256. package/build/src/library/contract-operations.js +83 -92
  257. package/build/src/library/contract-outcomes.d.ts +71 -0
  258. package/build/src/library/contract-outcomes.js +32 -0
  259. package/build/src/library/contract-settings.d.ts +25 -0
  260. package/build/src/library/contract-settings.js +135 -0
  261. package/build/src/library/contract-types.d.ts +17 -38
  262. package/build/src/library/delivery.d.ts +530 -10
  263. package/build/src/library/delivery.js +20 -45
  264. package/build/src/library/input.d.ts +3 -1
  265. package/build/src/library/input.js +11 -16
  266. package/build/src/library/invocation.d.ts +87 -0
  267. package/build/src/library/invocation.js +290 -0
  268. package/build/src/library/keiyaku.d.ts +45 -22
  269. package/build/src/library/keiyaku.js +134 -8
  270. package/build/src/library/nuke.d.ts +2 -11
  271. package/build/src/library/nuke.js +70 -57
  272. package/build/src/library/outcome.d.ts +13196 -0
  273. package/build/src/library/outcome.js +487 -0
  274. package/build/src/library/reconcile.d.ts +96 -24
  275. package/build/src/library/reconcile.js +102 -42
  276. package/build/src/library/refusal.d.ts +470 -42
  277. package/build/src/library/refusal.js +55 -143
  278. package/build/src/library/region.d.ts +15 -7
  279. package/build/src/library/region.js +23 -3
  280. package/build/src/library/repo.d.ts +2 -12
  281. package/build/src/library/repo.js +1 -22
  282. package/build/src/library/selection.d.ts +121 -0
  283. package/build/src/library/{fleet.js → selection.js} +169 -152
  284. package/build/src/plugin/public.d.ts +2 -0
  285. package/build/src/protocol/abandon.d.ts +2 -2
  286. package/build/src/protocol/abandon.js +1 -0
  287. package/build/src/protocol/amend.js +1 -0
  288. package/build/src/protocol/arc.d.ts +6 -4
  289. package/build/src/protocol/attempt.d.ts +4 -2
  290. package/build/src/protocol/attempt.js +10 -0
  291. package/build/src/protocol/audit.d.ts +255 -52
  292. package/build/src/protocol/audit.js +63 -5
  293. package/build/src/protocol/bind.d.ts +18 -17
  294. package/build/src/protocol/bind.js +9 -28
  295. package/build/src/protocol/completion.d.ts +256 -22
  296. package/build/src/protocol/completion.js +100 -12
  297. package/build/src/protocol/deliver.d.ts +34 -23
  298. package/build/src/protocol/deliver.js +39 -25
  299. package/build/src/protocol/execution-observation.d.ts +36 -37
  300. package/build/src/protocol/execution-observation.js +7 -9
  301. package/build/src/protocol/intent.d.ts +101 -30
  302. package/build/src/protocol/intent.js +74 -1
  303. package/build/src/protocol/operations.d.ts +570 -64
  304. package/build/src/protocol/operations.js +189 -9
  305. package/build/src/protocol/outcome.d.ts +2 -1
  306. package/build/src/protocol/placement.d.ts +2 -2
  307. package/build/src/protocol/placement.js +3 -1
  308. package/build/src/protocol/progress.d.ts +108 -65
  309. package/build/src/protocol/progress.js +82 -132
  310. package/build/src/protocol/read/status.d.ts +4 -3
  311. package/build/src/protocol/read/status.js +6 -5
  312. package/build/src/protocol/reconcile.d.ts +3 -3
  313. package/build/src/protocol/reconcile.js +4 -0
  314. package/build/src/protocol/reintegrate.d.ts +2 -2
  315. package/build/src/protocol/review.d.ts +30 -12
  316. package/build/src/protocol/review.js +15 -24
  317. package/build/src/protocol/run.d.ts +34 -5
  318. package/build/src/protocol/run.js +24 -12
  319. package/build/src/runtime/proc/windows-launch.exe +0 -0
  320. package/build/src/settings.d.ts +0 -10
  321. package/build/src/settings.js +0 -76
  322. package/build/src/settlement/holder.d.ts +1 -1
  323. package/build/src/settlement/settle.d.ts +25 -16
  324. package/build/src/settlement/settle.js +80 -20
  325. package/build/src/task/board.d.ts +3 -1
  326. package/build/src/task/board.js +13 -17
  327. package/build/src/task/catalog.d.ts +0 -4
  328. package/build/src/task/catalog.js +0 -15
  329. package/build/src/task/compose-language.d.ts +19 -9
  330. package/build/src/task/compose-language.js +30 -20
  331. package/build/src/task/compose.d.ts +7 -37
  332. package/build/src/task/compose.js +20 -2
  333. package/build/src/task/created-observation.d.ts +0 -1
  334. package/build/src/task/created-observation.js +1 -4
  335. package/build/src/task/document.d.ts +12 -2
  336. package/build/src/task/document.js +4 -0
  337. package/build/src/task/identity.d.ts +4 -1
  338. package/build/src/task/identity.js +21 -17
  339. package/build/src/task/index.d.ts +36 -16
  340. package/build/src/task/index.js +103 -96
  341. package/build/src/task/lifecycle-operations.d.ts +1 -1
  342. package/build/src/task/mutation-result.d.ts +647 -586
  343. package/build/src/task/mutation-result.js +79 -46
  344. package/build/src/task/mutation.d.ts +298 -270
  345. package/build/src/task/mutation.js +93 -110
  346. package/build/src/task/operation-types.d.ts +6 -49
  347. package/build/src/task/operations.d.ts +2 -1
  348. package/build/src/task/operations.js +35 -12
  349. package/build/src/task/query.d.ts +9 -3
  350. package/build/src/task/query.js +42 -16
  351. package/build/src/task/store.d.ts +2 -1
  352. package/build/src/task/store.js +10 -14
  353. package/build/src/verification/declaration.d.ts +0 -1
  354. package/build/src/verification/declaration.js +1 -18
  355. package/build/src/verification/execution.d.ts +6 -2
  356. package/build/src/verification/observation.d.ts +1 -1
  357. package/package.json +2 -18
  358. package/build/src/akuma/akuma-product.d.ts +0 -58
  359. package/build/src/akuma/akuma-product.js +0 -276
  360. package/build/src/akuma/fleet-execution.js +0 -234
  361. package/build/src/akuma/fleet-observation.js +0 -97
  362. package/build/src/cli/accepted.d.ts +0 -24
  363. package/build/src/cli/accepted.js +0 -167
  364. package/build/src/cli/catalog.d.ts +0 -45
  365. package/build/src/cli/catalog.js +0 -1
  366. package/build/src/cli/commands/akuma-invoke.d.ts +0 -114
  367. package/build/src/cli/commands/akuma-invoke.js +0 -375
  368. package/build/src/cli/commands/contract-invoke.d.ts +0 -34
  369. package/build/src/cli/commands/contract-invoke.js +0 -259
  370. package/build/src/cli/commands/nuke.d.ts +0 -10
  371. package/build/src/cli/commands/nuke.js +0 -20
  372. package/build/src/cli/commands/status-set.d.ts +0 -4
  373. package/build/src/cli/commands/status-set.js +0 -52
  374. package/build/src/cli/commands/task-invoke.d.ts +0 -49
  375. package/build/src/cli/commands/task-invoke.js +0 -306
  376. package/build/src/cli/invoke.d.ts +0 -27
  377. package/build/src/cli/invoke.js +0 -521
  378. package/build/src/cli/render/board.d.ts +0 -3
  379. package/build/src/cli/render/board.js +0 -25
  380. package/build/src/cli/render/status-set.d.ts +0 -5
  381. package/build/src/cli/render/status-set.js +0 -19
  382. package/build/src/cli/render/text.d.ts +0 -3
  383. package/build/src/cli/render/text.js +0 -33
  384. package/build/src/cli/result.d.ts +0 -240
  385. package/build/src/cli/result.js +0 -1
  386. package/build/src/git/result-codec.d.ts +0 -29
  387. package/build/src/git/result-codec.js +0 -309
  388. package/build/src/kanshi/fleet.d.ts +0 -6
  389. package/build/src/kanshi/fleet.js +0 -27
  390. package/build/src/library/audit.d.ts +0 -29
  391. package/build/src/library/audit.js +0 -41
  392. package/build/src/library/composition.d.ts +0 -15
  393. package/build/src/library/composition.js +0 -28
  394. package/build/src/library/configuration.d.ts +0 -4
  395. package/build/src/library/configuration.js +0 -2
  396. package/build/src/library/contract-bind.d.ts +0 -31
  397. package/build/src/library/contract-bind.js +0 -140
  398. package/build/src/library/contract-forwarding.d.ts +0 -55
  399. package/build/src/library/contract-forwarding.js +0 -67
  400. package/build/src/library/contract-handle.d.ts +0 -50
  401. package/build/src/library/contract-handle.js +0 -385
  402. package/build/src/library/contract.d.ts +0 -46
  403. package/build/src/library/contract.js +0 -73
  404. package/build/src/library/execution-result.d.ts +0 -243
  405. package/build/src/library/execution-result.js +0 -101
  406. package/build/src/library/execution.d.ts +0 -8
  407. package/build/src/library/execution.js +0 -102
  408. package/build/src/library/fleet.d.ts +0 -83
  409. package/build/src/library/mutation.d.ts +0 -501
  410. package/build/src/library/mutation.js +0 -248
  411. package/build/src/library/result-codec.d.ts +0 -2
  412. package/build/src/library/result-codec.js +0 -12
  413. package/build/src/protocol/result-codec.d.ts +0 -23
  414. package/build/src/protocol/result-codec.js +0 -488
  415. package/build/src/settlement/result-codec.d.ts +0 -2
  416. package/build/src/settlement/result-codec.js +0 -56
  417. package/build/src/task/public.d.ts +0 -2
  418. package/build/src/task/public.js +0 -1
@@ -1,3 +1,4 @@
1
+ import { z } from "zod";
1
2
  import { randomBytes } from "node:crypto";
2
3
  import { mkdir, writeFile } from "node:fs/promises";
3
4
  import { dirname, join } from "node:path";
@@ -11,6 +12,16 @@ export function parsePublicHistoryId(value) {
11
12
  const sequence = Number(match[1]);
12
13
  return Number.isSafeInteger(sequence) ? sequence : null;
13
14
  }
15
+ const pathText = z.string().refine((value) => value.trim() !== "");
16
+ export const akumaPathsSchema = z
17
+ .object({
18
+ directory: pathText,
19
+ heart: pathText,
20
+ leash: pathText,
21
+ log: pathText,
22
+ requests: pathText,
23
+ })
24
+ .strict();
14
25
  export function archetypeName(value) {
15
26
  return validateAkumaName(value);
16
27
  }
@@ -36,6 +47,18 @@ export function parseAkuId(value) {
36
47
  const suffix = suffixSegment(segments[1]);
37
48
  return { id: value, archetype, suffix };
38
49
  }
50
+ export const akumaIdSchema = z.string().transform((value, context) => {
51
+ try {
52
+ const id = parseAkuId(value).id;
53
+ if (id !== value)
54
+ throw new Error("not canonical");
55
+ return id;
56
+ }
57
+ catch {
58
+ context.addIssue({ code: "custom", message: "expected canonical AkuId" });
59
+ return z.NEVER;
60
+ }
61
+ });
39
62
  export function akumaRunRoot(worldRoot) {
40
63
  return join(worldRoot, ".keiyaku", "akuma", "run");
41
64
  }
@@ -1,12 +1,14 @@
1
+ export type { WorldRoot } from "../world.js";
2
+ export { AkumaBusyError, AkumaDecodeError, AkumaNotBornError, AkumaProviderError } from "./akuma-errors.js";
1
3
  export { Akuma } from "./akuma-instance.js";
2
- export type { AkumaBirthInput, AkumaHistoryOptions, AkumaIdleOptions, AkumaIdleResult, AkumaSignalOptions, AkumaTellOptions, } from "./akuma-instance.js";
3
- export type { InterruptReceipt, KillEvidence } from "./akuma.js";
4
- export { Schema } from "./schema.js";
5
- export type { JsonSchema, JsonSchemaDocument, StandardSchemaV1, SchemaLike } from "./schema.js";
6
- export type { AkuId } from "./identity.js";
4
+ export type { AkumaAskOptions, AkumaBirthInput, AkumaHistoryOptions, AkumaIdleOptions, AkumaIdleResult, AkumaSignalOptions, AkumaTellOptions, } from "./akuma-instance.js";
5
+ export type { InterruptReceipt } from "./akuma-owner.js";
7
6
  export type { AkumaStatus } from "./akuma.js";
8
- export type { ActivityHistory, ActivityRow } from "./projection.js";
9
7
  export { ALLOWED_ACTIONS } from "./allowed.js";
10
8
  export type { AllowedAction, AllowedActions } from "./allowed.js";
11
- export type { WorldRoot } from "../world.js";
12
- export { AkumaBusyError, AkumaDecodeError, AkumaNotBornError, AkumaProviderError } from "./akuma-errors.js";
9
+ export type { KillEvidence } from "./heart/index.js";
10
+ export type { AkuId } from "./identity.js";
11
+ export type { ActivityHistory, ActivityRow } from "./projection.js";
12
+ export { Schema } from "./schema.js";
13
+ export type { JsonSchema, JsonSchemaDocument, SchemaLike, StandardSchemaV1 } from "./schema.js";
14
+ export type { AkumaAskObservation, AkumaAskResult, AkumaTellResult } from "./selection-observation.js";
@@ -1,4 +1,4 @@
1
+ export { AkumaBusyError, AkumaDecodeError, AkumaNotBornError, AkumaProviderError } from "./akuma-errors.js";
1
2
  export { Akuma } from "./akuma-instance.js";
2
- export { Schema } from "./schema.js";
3
3
  export { ALLOWED_ACTIONS } from "./allowed.js";
4
- export { AkumaBusyError, AkumaDecodeError, AkumaNotBornError, AkumaProviderError } from "./akuma-errors.js";
4
+ export { Schema } from "./schema.js";
@@ -1,2 +1,5 @@
1
1
  import type { WorldRoot } from "../world.js";
2
+ export declare class AkumaResetStopError extends Error {
3
+ constructor(message: string);
4
+ }
2
5
  export declare function stopAkuma(world: WorldRoot): Promise<() => Promise<void>>;
@@ -1,10 +1,16 @@
1
1
  import { lstat, readdir, rm, rmdir } from "node:fs/promises";
2
2
  import { dirname, join } from "node:path";
3
3
  import { nukeAliases } from "../alias/index.js";
4
- import { classifyHeartSchema, readHeart } from "./heart/index.js";
4
+ import { settleAkumaKill } from "./akuma-owner.js";
5
5
  import { acquireLeash } from "./control.js";
6
- import { settleAkumaKill } from "./akuma-handle.js";
6
+ import { classifyHeartSchema, readHeart } from "./heart/index.js";
7
7
  import { akuIdFromDirectoryName, akumaPaths, akumaRunRoot } from "./identity.js";
8
+ export class AkumaResetStopError extends Error {
9
+ constructor(message) {
10
+ super(message);
11
+ this.name = "AkumaResetStopError";
12
+ }
13
+ }
8
14
  async function hasAkumaCustody(paths) {
9
15
  try {
10
16
  const value = await lstat(paths.heart);
@@ -20,13 +26,13 @@ async function stopRunningAkuma(entry) {
20
26
  const settled = await settleAkumaKill(entry.paths, undefined, true);
21
27
  if (settled.leash !== undefined)
22
28
  return settled.leash;
23
- throw new Error(`Akuma ${entry.id} could not be stopped: ${settled.evidence}`);
29
+ throw new AkumaResetStopError(`Akuma ${entry.id} could not be stopped: ${settled.evidence}`);
24
30
  }
25
31
  async function removeKnownRegularFile(path) {
26
32
  try {
27
33
  const value = await lstat(path);
28
34
  if (!value.isFile() || value.isSymbolicLink())
29
- throw new Error(`Akuma custody is not a regular file: ${path}`);
35
+ throw new AkumaResetStopError(`Akuma custody is not a regular file: ${path}`);
30
36
  await rm(path, { force: true });
31
37
  }
32
38
  catch (error) {
@@ -68,7 +74,7 @@ async function removeKnownRequestChannel(path) {
68
74
  try {
69
75
  const value = await lstat(path);
70
76
  if (!value.isDirectory() || value.isSymbolicLink())
71
- throw new Error(`Akuma custody is not a directory: ${path}`);
77
+ throw new AkumaResetStopError(`Akuma custody is not a directory: ${path}`);
72
78
  }
73
79
  catch (error) {
74
80
  if (error.code === "ENOENT")
@@ -174,14 +180,14 @@ export async function stopAkuma(world) {
174
180
  ? await stopRunningAkuma(entry)
175
181
  : await acquireLeash(entry.paths);
176
182
  if (leash === null)
177
- throw new Error(`Akuma ${entry.id} could not be verified stopped`);
183
+ throw new AkumaResetStopError(`Akuma ${entry.id} could not be verified stopped`);
178
184
  try {
179
185
  const after = await readHeart(entry.paths);
180
186
  if (after.soul === null || after.latestBody?.end !== undefined) {
181
187
  held.push(leash);
182
188
  continue;
183
189
  }
184
- throw new Error(`Akuma ${entry.id} stopped without a durable end`);
190
+ throw new AkumaResetStopError(`Akuma ${entry.id} stopped without a durable end`);
185
191
  }
186
192
  catch (error) {
187
193
  leash.release();
@@ -135,7 +135,6 @@ declare const completedToolRowSchema: z.ZodObject<{
135
135
  sequence: z.ZodNumber;
136
136
  turnSequence: z.ZodNumber;
137
137
  at: z.ZodString;
138
- completedAt: z.ZodOptional<z.ZodString>;
139
138
  durationMs: z.ZodOptional<z.ZodNumber>;
140
139
  name: z.ZodString;
141
140
  call: z.ZodUnion<readonly [z.ZodObject<{
@@ -352,7 +351,6 @@ declare const openSnapshotRowSchema: z.ZodUnion<readonly [z.ZodUnion<readonly [z
352
351
  sequence: z.ZodNumber;
353
352
  turnSequence: z.ZodNumber;
354
353
  at: z.ZodString;
355
- completedAt: z.ZodOptional<z.ZodString>;
356
354
  durationMs: z.ZodOptional<z.ZodNumber>;
357
355
  name: z.ZodString;
358
356
  call: z.ZodUnion<readonly [z.ZodObject<{
@@ -470,7 +468,6 @@ declare const idleSnapshotRowSchema: z.ZodUnion<readonly [z.ZodUnion<readonly [z
470
468
  sequence: z.ZodNumber;
471
469
  turnSequence: z.ZodNumber;
472
470
  at: z.ZodString;
473
- completedAt: z.ZodOptional<z.ZodString>;
474
471
  durationMs: z.ZodOptional<z.ZodNumber>;
475
472
  name: z.ZodString;
476
473
  call: z.ZodUnion<readonly [z.ZodObject<{
@@ -709,7 +706,6 @@ export declare const activitySnapshotSchema: z.ZodUnion<readonly [z.ZodObject<{
709
706
  sequence: z.ZodNumber;
710
707
  turnSequence: z.ZodNumber;
711
708
  at: z.ZodString;
712
- completedAt: z.ZodOptional<z.ZodString>;
713
709
  durationMs: z.ZodOptional<z.ZodNumber>;
714
710
  name: z.ZodString;
715
711
  call: z.ZodUnion<readonly [z.ZodObject<{
@@ -868,7 +864,6 @@ export declare const activitySnapshotSchema: z.ZodUnion<readonly [z.ZodObject<{
868
864
  sequence: z.ZodNumber;
869
865
  turnSequence: z.ZodNumber;
870
866
  at: z.ZodString;
871
- completedAt: z.ZodOptional<z.ZodString>;
872
867
  durationMs: z.ZodOptional<z.ZodNumber>;
873
868
  name: z.ZodString;
874
869
  call: z.ZodUnion<readonly [z.ZodObject<{
@@ -1,44 +1,25 @@
1
- import { decodeAgentEvent } from "./provider.js";
1
+ import { toolCallSchema, toolResultSchema, toolInputSchema, fileChangeSchema, diffstatSchema, } from "./heart/activity-schema.js";
2
2
  import { projectTell } from "./heart/facts.js";
3
3
  import { z } from "zod";
4
4
  const nonblankTextSchema = z.string().refine((value) => value.trim() !== "");
5
5
  const countSchema = z.number().int().nonnegative();
6
6
  const sequenceSchema = z.number().int().positive();
7
7
  const timestampSchema = z.string().refine((value) => Number.isFinite(Date.parse(value)), "expected timestamp");
8
- const diffstatSchema = z.object({ added: countSchema, removed: countSchema }).strict();
9
- const fileChangeSchema = z
10
- .object({
11
- op: z.enum(["add", "update", "delete", "unspecified"]),
12
- path: z.string(),
13
- diffstat: diffstatSchema.optional(),
14
- })
15
- .strict();
16
- const toolInputSchema = z.object({ json: z.string(), truncated: z.boolean() }).strict();
17
- const toolCallSchema = z.union([
18
- z.object({ kind: z.literal("run"), command: z.string() }).strict(),
19
- z
20
- .object({
21
- kind: z.literal("read"),
22
- path: z.string(),
23
- offset: countSchema.optional(),
24
- limit: countSchema.optional(),
25
- })
26
- .strict(),
27
- z
28
- .object({
29
- kind: z.literal("search"),
30
- query: z.string(),
31
- scope: z.enum(["content", "files", "web"]).optional(),
32
- path: z.string().optional(),
33
- glob: z.string().optional(),
8
+ const strictDiffstatSchema = diffstatSchema.strict();
9
+ const [runCall, readCall, searchCall, changeCall, otherCall] = toolCallSchema.options;
10
+ // Public observation historically admits zero-based read positions, unlike native narration.
11
+ const publicToolCallSchema = z.union([
12
+ runCall.strict(),
13
+ readCall.extend({ offset: countSchema.optional(), limit: countSchema.optional() }).strict(),
14
+ searchCall.strict(),
15
+ changeCall
16
+ .extend({
17
+ changes: z.array(fileChangeSchema.extend({ diffstat: strictDiffstatSchema.optional() }).strict()).readonly(),
34
18
  })
35
19
  .strict(),
36
- z.object({ kind: z.literal("fileChange"), changes: z.array(fileChangeSchema).readonly() }).strict(),
37
- z.object({ kind: z.literal("other"), display: z.string(), input: toolInputSchema.optional() }).strict(),
20
+ otherCall.extend({ input: toolInputSchema.strict().optional() }).strict(),
38
21
  ]);
39
- const toolResultSchema = z
40
- .object({ status: z.enum(["ok", "error"]), message: z.string().optional(), exitCode: z.number().int().optional() })
41
- .strict();
22
+ const publicToolResultSchema = toolResultSchema.strict();
42
23
  const tellDeliverySchema = z
43
24
  .object({
44
25
  deliveredAt: timestampSchema,
@@ -107,7 +88,7 @@ const activeToolRowSchema = z
107
88
  turnSequence: countSchema,
108
89
  at: timestampSchema,
109
90
  name: nonblankTextSchema,
110
- call: toolCallSchema,
91
+ call: publicToolCallSchema,
111
92
  state: z.literal("active"),
112
93
  truncated: z.literal(true).optional(),
113
94
  })
@@ -118,11 +99,10 @@ const completedToolRowSchema = z
118
99
  sequence: countSchema,
119
100
  turnSequence: countSchema,
120
101
  at: timestampSchema,
121
- completedAt: timestampSchema.optional(),
122
102
  durationMs: z.number().finite().nonnegative().optional(),
123
103
  name: nonblankTextSchema,
124
- call: toolCallSchema,
125
- state: toolResultSchema,
104
+ call: publicToolCallSchema,
105
+ state: publicToolResultSchema,
126
106
  truncated: z.literal(true).optional(),
127
107
  })
128
108
  .strict();
@@ -133,7 +113,7 @@ const unsettledToolRowSchema = z
133
113
  turnSequence: countSchema,
134
114
  at: timestampSchema,
135
115
  name: nonblankTextSchema,
136
- call: toolCallSchema,
116
+ call: publicToolCallSchema,
137
117
  state: z.literal("unsettled"),
138
118
  truncated: z.literal(true).optional(),
139
119
  })
@@ -157,7 +137,7 @@ const reportedFileChangeSchema = z
157
137
  at: timestampSchema,
158
138
  op: z.enum(["add", "update", "delete", "unspecified"]),
159
139
  path: z.string(),
160
- diffstat: diffstatSchema.optional(),
140
+ diffstat: strictDiffstatSchema.optional(),
161
141
  })
162
142
  .strict();
163
143
  const reportedChangeFields = {
@@ -283,10 +263,9 @@ function projectToolEvent(rows, running, fact, event, phase) {
283
263
  const durationMs = duration(started.at, fact.at);
284
264
  rows[index] = {
285
265
  kind: "tool",
286
- sequence: started.sequence,
266
+ sequence: fact.sequence,
287
267
  turnSequence: fact.turnSequence,
288
- at: started.at,
289
- completedAt: fact.at,
268
+ at: fact.at,
290
269
  ...(durationMs === undefined ? {} : { durationMs }),
291
270
  name: event.name,
292
271
  call: event.call,
@@ -296,7 +275,7 @@ function projectToolEvent(rows, running, fact, event, phase) {
296
275
  running.delete(key);
297
276
  }
298
277
  function projectActivityEvent(state, fact) {
299
- const event = decodeAgentEvent(fact.event);
278
+ const event = fact.event;
300
279
  const narration = narrationRow(fact, event);
301
280
  if (narration !== null) {
302
281
  const turn = state.turnsBySequence.get(fact.turnSequence);
@@ -328,7 +307,7 @@ function foldOutcomeVoice(rows, outcome) {
328
307
  : rows;
329
308
  }
330
309
  function finishTurn(turn) {
331
- const rows = foldOutcomeVoice(turn.rows, turn.outcome);
310
+ const rows = [...foldOutcomeVoice(turn.rows, turn.outcome)].sort((left, right) => left.sequence - right.sequence);
332
311
  if (turn.phase === "closed" && turn.outcome !== undefined) {
333
312
  return { kind: "closed", turn: turn.turn, rows: rows.map(demoteActive), outcome: turn.outcome };
334
313
  }
@@ -1,17 +1,62 @@
1
- export type SystemPromptMode = "append" | "replace";
2
- export type ProviderOptions = Readonly<{
3
- model?: string;
4
- effort?: string;
5
- network?: "disabled" | "enabled";
6
- systemPrompt?: string;
7
- systemPromptMode?: SystemPromptMode;
1
+ import { z } from "zod";
2
+ declare const systemPromptModeSchema: z.ZodEnum<{
3
+ append: "append";
4
+ replace: "replace";
8
5
  }>;
9
- export type ProviderExecution = Readonly<{
6
+ export type SystemPromptMode = z.infer<typeof systemPromptModeSchema>;
7
+ export declare const providerOptionsSchema: z.ZodPipe<z.ZodObject<{
8
+ model: z.ZodOptional<z.ZodString>;
9
+ effort: z.ZodOptional<z.ZodString>;
10
+ network: z.ZodOptional<z.ZodEnum<{
11
+ disabled: "disabled";
12
+ enabled: "enabled";
13
+ }>>;
14
+ systemPrompt: z.ZodOptional<z.ZodString>;
15
+ systemPromptMode: z.ZodOptional<z.ZodEnum<{
16
+ append: "append";
17
+ replace: "replace";
18
+ }>>;
19
+ }, z.core.$strip>, z.ZodTransform<Readonly<{
20
+ systemPromptMode?: "append" | "replace";
21
+ systemPrompt?: string;
22
+ network?: "disabled" | "enabled";
23
+ effort?: string;
24
+ model?: string;
25
+ }>, {
26
+ model?: string | undefined;
27
+ effort?: string | undefined;
28
+ network?: "disabled" | "enabled" | undefined;
29
+ systemPrompt?: string | undefined;
30
+ systemPromptMode?: "append" | "replace" | undefined;
31
+ }>>;
32
+ export type ProviderOptions = z.infer<typeof providerOptionsSchema>;
33
+ export declare const providerRecipeSchema: z.ZodPipe<z.ZodObject<{
34
+ name: z.ZodString;
35
+ kind: z.ZodEnum<{
36
+ acp: "acp";
37
+ "claude-agent-sdk": "claude-agent-sdk";
38
+ "codex-app-server": "codex-app-server";
39
+ "grok-build": "grok-build";
40
+ "opencode-sdk": "opencode-sdk";
41
+ pi: "pi";
42
+ }>;
43
+ executable: z.ZodOptional<z.ZodString>;
44
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
45
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
46
+ }, z.core.$strip>, z.ZodTransform<Readonly<{
47
+ env?: Readonly<Record<string, string>>;
48
+ config?: Readonly<Record<string, unknown>>;
49
+ executable?: string;
10
50
  name: string;
11
51
  kind: "acp" | "claude-agent-sdk" | "codex-app-server" | "grok-build" | "opencode-sdk" | "pi";
12
- executable?: string;
13
- config?: Readonly<Record<string, unknown>>;
14
- env?: Readonly<Record<string, string>>;
15
- }>;
52
+ }>, {
53
+ name: string;
54
+ kind: "acp" | "claude-agent-sdk" | "codex-app-server" | "grok-build" | "opencode-sdk" | "pi";
55
+ executable?: string | undefined;
56
+ config?: Record<string, unknown> | undefined;
57
+ env?: Record<string, string> | undefined;
58
+ }>>;
59
+ export type ProviderExecution = z.infer<typeof providerRecipeSchema>;
16
60
  export declare function decodeProviderOptions(value: unknown): ProviderOptions;
17
- export declare function decodeProviderRecipe(input: unknown): ProviderExecution;
61
+ export declare function decodeProviderRecipe(value: unknown): ProviderExecution;
62
+ export {};
@@ -1,88 +1,70 @@
1
- function record(value) {
2
- return value !== null && typeof value === "object" && !Array.isArray(value)
3
- ? value
4
- : null;
5
- }
1
+ import { z } from "zod";
2
+ const modelText = z
3
+ .string({ error: "provider option model must be a nonblank string" })
4
+ .refine((value) => value.trim() !== "", "provider option model must be a nonblank string");
5
+ const effortText = z
6
+ .string({ error: "provider option effort must be a nonblank string" })
7
+ .refine((value) => value.trim() !== "", "provider option effort must be a nonblank string");
8
+ const systemPromptModeSchema = z.enum(["append", "replace"], {
9
+ error: "provider option systemPromptMode must be append, replace",
10
+ });
11
+ export const providerOptionsSchema = z
12
+ .object({
13
+ model: modelText.optional(),
14
+ effort: effortText.optional(),
15
+ network: z.enum(["disabled", "enabled"], { error: "provider option network must be disabled, enabled" }).optional(),
16
+ systemPrompt: z.string({ error: "provider option systemPrompt must be a string" }).optional(),
17
+ systemPromptMode: systemPromptModeSchema.optional(),
18
+ })
19
+ .refine((value) => value.systemPromptMode === undefined || value.systemPrompt !== undefined, "provider option systemPromptMode requires systemPrompt")
20
+ .transform(({ model, effort, network, systemPrompt, systemPromptMode }) => Object.freeze({
21
+ ...(model === undefined ? {} : { model }),
22
+ ...(effort === undefined ? {} : { effort }),
23
+ ...(network === undefined ? {} : { network }),
24
+ ...(systemPrompt === undefined ? {} : { systemPrompt }),
25
+ ...(systemPromptMode === undefined ? {} : { systemPromptMode }),
26
+ }));
27
+ // Recipe configuration deliberately stays adapter-owned opaque data, including historical keys.
6
28
  function snapshot(value) {
7
29
  if (Array.isArray(value))
8
30
  return Object.freeze(value.map(snapshot));
9
- const object = record(value);
10
- if (object === null)
31
+ if (value === null || typeof value !== "object")
11
32
  return value;
12
- return Object.freeze(Object.fromEntries(Object.entries(object).map(([key, item]) => [key, snapshot(item)])));
13
- }
14
- function optionText(options, field, blank) {
15
- const selected = options[field];
16
- if (selected === undefined)
17
- return undefined;
18
- if (typeof selected !== "string" || (blank === "refuse" && selected.trim().length === 0)) {
19
- throw new TypeError(`provider option ${field} must be ${blank === "allow" ? "a string" : "a nonblank string"}`);
20
- }
21
- return selected;
33
+ return Object.freeze(Object.fromEntries(Object.entries(value).map(([key, item]) => [key, snapshot(item)])));
22
34
  }
35
+ export const providerRecipeSchema = z
36
+ .object({
37
+ name: z.string().refine((value) => value.trim() !== "", "provider execution name must be a nonblank string"),
38
+ kind: z.enum(["acp", "claude-agent-sdk", "codex-app-server", "grok-build", "opencode-sdk", "pi"], {
39
+ error: "provider execution has unknown kind",
40
+ }),
41
+ executable: z
42
+ .string()
43
+ .refine((value) => value.trim() !== "", "provider execution executable must be a nonblank string")
44
+ .optional(),
45
+ config: z.record(z.string(), z.unknown()).optional(),
46
+ env: z.record(z.string(), z.string()).optional(),
47
+ })
48
+ .transform(({ name, kind, executable, config, env }) => Object.freeze({
49
+ name,
50
+ kind,
51
+ ...(executable === undefined ? {} : { executable }),
52
+ ...(config === undefined ? {} : { config: snapshot(config) }),
53
+ ...(env === undefined ? {} : { env: Object.freeze(env) }),
54
+ }));
23
55
  export function decodeProviderOptions(value) {
24
- const options = record(value);
25
- if (options === null)
26
- throw new TypeError("provider options must be an object");
27
- const model = optionText(options, "model", "refuse");
28
- const effort = optionText(options, "effort", "refuse");
29
- const network = options.network;
30
- if (network !== undefined && network !== "disabled" && network !== "enabled") {
31
- throw new TypeError("provider option network must be disabled, enabled");
32
- }
33
- const systemPrompt = optionText(options, "systemPrompt", "allow");
34
- const systemPromptMode = options.systemPromptMode;
35
- if (systemPromptMode !== undefined) {
36
- if (systemPromptMode !== "append" && systemPromptMode !== "replace") {
37
- throw new TypeError("provider option systemPromptMode must be append, replace");
38
- }
39
- if (systemPrompt === undefined) {
40
- throw new TypeError("provider option systemPromptMode requires systemPrompt");
41
- }
42
- }
43
- return Object.freeze({
44
- ...(model === undefined ? {} : { model }),
45
- ...(effort === undefined ? {} : { effort }),
46
- ...(network === undefined ? {} : { network }),
47
- ...(systemPrompt === undefined ? {} : { systemPrompt }),
48
- ...(systemPromptMode === undefined ? {} : { systemPromptMode }),
49
- });
50
- }
51
- function providerKind(value) {
52
- return (value === "acp" ||
53
- value === "claude-agent-sdk" ||
54
- value === "codex-app-server" ||
55
- value === "grok-build" ||
56
- value === "opencode-sdk" ||
57
- value === "pi");
56
+ const parsed = providerOptionsSchema.safeParse(value);
57
+ if (!parsed.success)
58
+ throw new TypeError(parsed.error.issues[0]?.message ?? "provider options must be an object", {
59
+ cause: parsed.error,
60
+ });
61
+ return parsed.data;
58
62
  }
59
- export function decodeProviderRecipe(input) {
60
- const value = record(input);
61
- if (value === null)
62
- throw new TypeError("provider execution must be an object");
63
- if (typeof value.name !== "string" || value.name.trim().length === 0) {
64
- throw new TypeError("provider execution name must be a nonblank string");
65
- }
66
- if (!providerKind(value.kind))
67
- throw new TypeError("provider execution has unknown kind");
68
- if (value.executable !== undefined &&
69
- (typeof value.executable !== "string" || value.executable.trim().length === 0)) {
70
- throw new TypeError("provider execution executable must be a nonblank string");
71
- }
72
- const config = value.config === undefined ? undefined : record(value.config);
73
- if (config === null)
74
- throw new TypeError("provider execution config must be an object");
75
- const env = value.env === undefined ? undefined : record(value.env);
76
- if (env === null)
77
- throw new TypeError("provider execution env must be an object");
78
- if (env !== undefined && Object.values(env).some((item) => typeof item !== "string")) {
79
- throw new TypeError("provider execution env must contain only string values");
80
- }
81
- return Object.freeze({
82
- name: value.name,
83
- kind: value.kind,
84
- ...(value.executable === undefined ? {} : { executable: value.executable }),
85
- ...(config === undefined ? {} : { config: snapshot(config) }),
86
- ...(env === undefined ? {} : { env: Object.freeze({ ...env }) }),
87
- });
63
+ export function decodeProviderRecipe(value) {
64
+ const parsed = providerRecipeSchema.safeParse(value);
65
+ if (!parsed.success)
66
+ throw new TypeError(parsed.error.issues[0]?.message ?? "provider execution must be an object", {
67
+ cause: parsed.error,
68
+ });
69
+ return parsed.data;
88
70
  }
@@ -1,85 +1,15 @@
1
- import { decodeResumeCoordinate, encodeResumeCoordinate, type ResumeCoordinate } from "./coordinate.js";
1
+ import { type ResumeCoordinate } from "./coordinate.js";
2
2
  import type { ProviderOptions } from "./provider-recipe.js";
3
3
  export type { ResumeCoordinate } from "./coordinate.js";
4
+ export { decodeResumeCoordinate, encodeResumeCoordinate } from "./coordinate.js";
4
5
  export { AKUMA_REQUESTS_ENV } from "./providers/execution-environment.js";
5
6
  export declare const AGENT_EVENT_TEXT_LIMIT = 16384;
6
7
  export declare const AGENT_THOUGHT_TEXT_LIMIT = 4000;
7
8
  export declare const AGENT_EVENT_QUEUE_LIMIT = 256;
8
- export type SearchScope = "content" | "files" | "web";
9
- export type ToolInput = Readonly<{
10
- json: string;
11
- truncated: boolean;
12
- }>;
13
- export type ToolCall = Readonly<{
14
- kind: "run";
15
- command: string;
16
- }> | Readonly<{
17
- kind: "read";
18
- path: string;
19
- offset?: number;
20
- limit?: number;
21
- }> | Readonly<{
22
- kind: "search";
23
- query: string;
24
- scope?: SearchScope;
25
- path?: string;
26
- glob?: string;
27
- }> | Readonly<{
28
- kind: "fileChange";
29
- changes: readonly Readonly<{
30
- op: "add" | "update" | "delete" | "unspecified";
31
- path: string;
32
- diffstat?: Readonly<{
33
- added: number;
34
- removed: number;
35
- }>;
36
- }>[];
37
- }> | Readonly<{
38
- kind: "other";
39
- display: string;
40
- input?: ToolInput;
41
- }>;
42
- export type ToolResult = Readonly<{
43
- status: "ok" | "error";
44
- message?: string;
45
- exitCode?: number;
46
- }>;
47
- export type ToolEvent = Readonly<{
48
- type: "tool";
49
- id: string;
50
- name: string;
51
- call: ToolCall;
52
- truncated?: true;
53
- }> & (Readonly<{
54
- phase: "started";
55
- result?: never;
56
- }> | Readonly<{
57
- phase: "completed";
58
- result: ToolResult;
59
- }>);
60
- export type AgentEvent = Readonly<{
61
- type: "session";
62
- coordinate: ResumeCoordinate;
63
- }> | Readonly<{
64
- type: "assistant";
65
- text: string;
66
- truncated?: true;
67
- }> | Readonly<{
68
- type: "thought";
69
- text: string;
70
- truncated?: true;
71
- }> | ToolEvent | Readonly<{
72
- type: "note";
73
- text: string;
74
- truncated?: true;
75
- }> | Readonly<{
76
- type: "unknown";
77
- kind: string;
78
- truncated?: true;
79
- }>;
80
- export { decodeResumeCoordinate, encodeResumeCoordinate };
81
- export declare function decodeAgentEvent(value: unknown): AgentEvent;
82
- export declare function encodeAgentEvent(event: AgentEvent): unknown;
9
+ export { agentEventSchema, decodeAgentEvent } from "./heart/activity-schema.js";
10
+ export type { AgentEvent, SearchScope, ToolCall, ToolEvent, ToolInput, ToolResult } from "./heart/activity-schema.js";
11
+ import type { AgentEvent, ToolCall, ToolInput } from "./heart/activity-schema.js";
12
+ export declare function encodeAgentEvent(event: AgentEvent): AgentEvent;
83
13
  /**
84
14
  * Admit only a compact JSON view of structured tool invocation input. This
85
15
  * deliberately receives adapter start evidence, never result or delta bodies.