@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,15 +1,31 @@
1
+ import { entryUlidSchema } from "./attempt.js";
2
+ import { z } from "zod";
3
+ import { snapshotIdSchema } from "./operations.js";
4
+ import { conflictRecoverySchema, worktreeWorkspaceSchema } from "../git/workspace.js";
1
5
  import { materializeIntegrationSnapshot, materializeJudgedConflict, planIntegration, worktreeChangeId, } from "../git/integration.js";
2
6
  import { captureTender, dirtyTenderRefusal, materializeTenderSnapshot, prepareDeliveryCommitMetadata, } from "../git/tender.js";
3
7
  import { checkoutDetachedSnapshot, recordConflictHandoff, retireConflictHandoff, workspaceMergeStatePresent, worktreePath, conflictRecovery, } from "../git/workspace.js";
4
8
  import { observeContractsForAdmissionAt } from "../git/observe.js";
5
- import { contractStateWitness, privateStateSeatAttempt, sameWorktreeWitness, STALE_PRIVATE_STATE_PREPARATION, } from "./run.js";
9
+ import { contractStateWitness, privateStateSeatAttempt, runBoundedAttempts, sameWorktreeWitness, STALE_PRIVATE_STATE_PREPARATION, } from "./run.js";
6
10
  import { contractState } from "../core/facts/observation.js";
7
11
  import { decideDeliver } from "../core/verbs/deliver.js";
8
12
  import { currentVerifiedAttestation } from "./intent.js";
9
13
  import { admitDecidedOffer, mintAttempts } from "./attempt.js";
10
14
  import { appointmentFor, readPlaceRegister } from "../workspace-place.js";
11
15
  import { attemptDecisionWithSeatClose, timestamp } from "./operations.js";
12
- export { decodeMaterializedConflict } from "./result-codec.js";
16
+ export const deliverLeadingSchema = z
17
+ .object({ kind: z.enum(["admitted-now", "already-admitted"]), fact: entryUlidSchema })
18
+ .strict();
19
+ export const materializedConflictSchema = z
20
+ .object({
21
+ kind: z.literal("integration-conflict-materialized"),
22
+ targetHead: snapshotIdSchema,
23
+ conflictPaths: z.array(z.string().refine((value) => value.trim() !== "")).readonly(),
24
+ workspace: worktreeWorkspaceSchema,
25
+ handoffBase: snapshotIdSchema,
26
+ recovery: conflictRecoverySchema,
27
+ })
28
+ .strict();
13
29
  const DELIVER_CONFLICT_RECOVERY = conflictRecovery;
14
30
  async function captureAuthorizedDeliveryTender(repository, stage, includeDirty) {
15
31
  const { contractId, coordinates } = stage;
@@ -299,13 +315,19 @@ function continuationDeliveryDecision(input, observation, assembled) {
299
315
  if (record === undefined || state === null || state.delivery === null || assembled.derivation === undefined) {
300
316
  return { kind: "redecide" };
301
317
  }
318
+ const delivery = record.entries.findLast((entry) => entry.kind === "deliver");
319
+ if (delivery === undefined)
320
+ throw new Error("current delivery is missing its journal fact");
302
321
  input.progress?.recordAdmission({ kind: "accepted", facts: [], state, journal: record.entries });
303
322
  return {
304
323
  kind: "accepted",
305
324
  facts: [],
306
325
  state,
307
326
  journal: record.entries,
308
- value: state.delivery.data,
327
+ value: {
328
+ ...state.delivery.data,
329
+ leading: { kind: "already-admitted", fact: delivery.entry },
330
+ },
309
331
  };
310
332
  }
311
333
  async function decideAndAdmitDelivery(input, attempt, seat, observation, assembled) {
@@ -343,9 +365,15 @@ async function decideAndAdmitDelivery(input, attempt, seat, observation, assembl
343
365
  });
344
366
  if (admission.kind !== "accepted")
345
367
  return admission;
368
+ const deliverFact = admission.facts.find((fact) => fact.contract === input.contractId && fact.kind === "deliver");
369
+ if (deliverFact?.kind !== "deliver")
370
+ throw new Error("confirmed delivery requires its own receipt");
346
371
  return {
347
372
  ...admission,
348
- value: preparation.data,
373
+ value: {
374
+ ...preparation.data,
375
+ leading: { kind: "admitted-now", fact: deliverFact.entry },
376
+ },
349
377
  };
350
378
  }
351
379
  /**
@@ -476,25 +504,11 @@ async function finishDeliverRefusal(input, refusal) {
476
504
  return await materializeDeliverConflict(input, refusal);
477
505
  }
478
506
  export async function admitDeliveryOperation(input) {
479
- const attempts = mintAttempts({ entryCount: 2 });
480
- let first = null;
481
- for (let index = 0; index < attempts.length; index += 1) {
482
- const result = await deliverAttempt(input, attempts[index]);
483
- if (result.kind === "accepted") {
484
- first = result;
485
- break;
486
- }
487
- if (result.kind === "refused")
488
- return await finishDeliverRefusal(input, result.refusal);
489
- if (result.kind === "publication-failed")
490
- return { kind: "retry", reason: result };
491
- if (result.kind === "stale" || result.kind === "redecide")
492
- continue;
493
- if (result.kind === "collision" && index + 1 === attempts.length)
494
- return { kind: "retry", reason: result };
495
- }
496
- if (first === null)
497
- return { kind: "retry", reason: { kind: "exhausted" } };
498
- input.progress?.recordResidue(input.contractId, first);
499
- return first;
507
+ const result = await runBoundedAttempts(mintAttempts({ entryCount: 2 }), (attempt) => deliverAttempt(input, attempt));
508
+ if (result.kind === "refused")
509
+ return await finishDeliverRefusal(input, result.refusal);
510
+ if (result.kind !== "accepted")
511
+ return { kind: "retry", reason: result };
512
+ input.progress?.recordResidue(input.contractId, result);
513
+ return result;
500
514
  }
@@ -1,14 +1,14 @@
1
1
  import { z } from "zod";
2
2
  declare const observationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3
3
  kind: z.ZodLiteral<"admitted">;
4
- contractId: z.ZodPipe<z.ZodString, z.ZodTransform<import("../core/facts/types.js").ContractId, string>>;
4
+ contractId: z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").ContractId, string>>;
5
5
  fact: z.ZodPipe<z.ZodUnknown, z.ZodTransform<Readonly<{
6
6
  v: 1;
7
7
  kind: "bind";
8
- contract: import("../core/facts/types.js").ContractId;
8
+ contract: import("../index.js").ContractId;
9
9
  entry: import("../core/facts/types.js").EntryUlid;
10
10
  at: string;
11
- actor?: import("../core/facts/types.js").ActorId;
11
+ actor?: import("../index.js").ActorId;
12
12
  data: Readonly<{
13
13
  coordinates: import("../core/facts/types.js").ContractCoordinates;
14
14
  terms: import("../core/facts/types.js").ContractTerms;
@@ -16,10 +16,10 @@ declare const observationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
16
16
  }> | Readonly<{
17
17
  v: 1;
18
18
  kind: "amend";
19
- contract: import("../core/facts/types.js").ContractId;
19
+ contract: import("../index.js").ContractId;
20
20
  entry: import("../core/facts/types.js").EntryUlid;
21
21
  at: string;
22
- actor?: import("../core/facts/types.js").ActorId;
22
+ actor?: import("../index.js").ActorId;
23
23
  data: Readonly<{
24
24
  document: Readonly<{
25
25
  bytes: string;
@@ -27,29 +27,29 @@ declare const observationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
27
27
  }>;
28
28
  segments: readonly import("../core/facts/types.js").DocumentSegmentKey[];
29
29
  gates: readonly import("../core/facts/types.js").Gate[];
30
- after: readonly import("../core/facts/types.js").ContractId[];
30
+ after: readonly import("../index.js").ContractId[];
31
31
  }>;
32
32
  }> | Readonly<{
33
33
  v: 1;
34
34
  kind: "bound";
35
- contract: import("../core/facts/types.js").ContractId;
35
+ contract: import("../index.js").ContractId;
36
36
  entry: import("../core/facts/types.js").EntryUlid;
37
37
  at: string;
38
- actor?: import("../core/facts/types.js").ActorId;
38
+ actor?: import("../index.js").ActorId;
39
39
  data: Readonly<Record<string, never>>;
40
40
  }> | Readonly<{
41
41
  v: 1;
42
42
  kind: "deliver";
43
- contract: import("../core/facts/types.js").ContractId;
43
+ contract: import("../index.js").ContractId;
44
44
  entry: import("../core/facts/types.js").EntryUlid;
45
45
  at: string;
46
- actor?: import("../core/facts/types.js").ActorId;
46
+ actor?: import("../index.js").ActorId;
47
47
  data: Readonly<{
48
- tenderSnapshot: import("../core/facts/types.js").SnapshotId;
48
+ tenderSnapshot: import("../index.js").SnapshotId;
49
49
  integration: Readonly<{
50
- predecessor: import("../core/facts/types.js").SnapshotId;
51
- snapshot: import("../core/facts/types.js").SnapshotId;
52
- changeId: import("../core/facts/types.js").ChangeId;
50
+ predecessor: import("../index.js").SnapshotId;
51
+ snapshot: import("../index.js").SnapshotId;
52
+ changeId: import("../index.js").ChangeId;
53
53
  }>;
54
54
  method: "squash";
55
55
  policy: Readonly<{
@@ -59,21 +59,21 @@ declare const observationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
59
59
  }> | Readonly<{
60
60
  v: 1;
61
61
  kind: "reintegrated";
62
- contract: import("../core/facts/types.js").ContractId;
62
+ contract: import("../index.js").ContractId;
63
63
  entry: import("../core/facts/types.js").EntryUlid;
64
64
  at: string;
65
- actor?: import("../core/facts/types.js").ActorId;
65
+ actor?: import("../index.js").ActorId;
66
66
  data: Readonly<{
67
- predecessor: import("../core/facts/types.js").SnapshotId;
68
- snapshot: import("../core/facts/types.js").SnapshotId;
67
+ predecessor: import("../index.js").SnapshotId;
68
+ snapshot: import("../index.js").SnapshotId;
69
69
  }>;
70
70
  }> | Readonly<{
71
71
  v: 1;
72
72
  kind: "attestation";
73
- contract: import("../core/facts/types.js").ContractId;
73
+ contract: import("../index.js").ContractId;
74
74
  entry: import("../core/facts/types.js").EntryUlid;
75
75
  at: string;
76
- actor?: import("../core/facts/types.js").ActorId;
76
+ actor?: import("../index.js").ActorId;
77
77
  data: Readonly<{
78
78
  gate: import("../core/facts/types.js").Gate;
79
79
  subject: import("../core/facts/types.js").DependencyKeySet;
@@ -83,45 +83,44 @@ declare const observationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
83
83
  }> | Readonly<{
84
84
  v: 1;
85
85
  kind: "claimed";
86
- contract: import("../core/facts/types.js").ContractId;
86
+ contract: import("../index.js").ContractId;
87
87
  entry: import("../core/facts/types.js").EntryUlid;
88
88
  at: string;
89
- actor?: import("../core/facts/types.js").ActorId;
89
+ actor?: import("../index.js").ActorId;
90
90
  data: Readonly<{
91
91
  delivery: import("../core/facts/types.js").EntryUlid;
92
92
  }>;
93
93
  }> | Readonly<{
94
94
  v: 1;
95
95
  kind: "arc";
96
- contract: import("../core/facts/types.js").ContractId;
96
+ contract: import("../index.js").ContractId;
97
97
  entry: import("../core/facts/types.js").EntryUlid;
98
98
  at: string;
99
- actor?: import("../core/facts/types.js").ActorId;
99
+ actor?: import("../index.js").ActorId;
100
100
  data: Readonly<{
101
101
  seq: number;
102
102
  title: string;
103
- objective: string;
104
- brief: string;
103
+ body: string;
105
104
  }>;
106
105
  }> | Readonly<{
107
106
  v: 1;
108
107
  kind: "abandoned";
109
- contract: import("../core/facts/types.js").ContractId;
108
+ contract: import("../index.js").ContractId;
110
109
  entry: import("../core/facts/types.js").EntryUlid;
111
110
  at: string;
112
- actor?: import("../core/facts/types.js").ActorId;
111
+ actor?: import("../index.js").ActorId;
113
112
  data: Readonly<{
114
113
  note?: string;
115
114
  }>;
116
115
  }>, unknown>>;
117
116
  }, z.core.$strict>, z.ZodObject<{
118
117
  kind: z.ZodLiteral<"verification">;
119
- contractId: z.ZodPipe<z.ZodString, z.ZodTransform<import("../core/facts/types.js").ContractId, string>>;
120
- snapshot: z.ZodPipe<z.ZodString, z.ZodTransform<import("../core/facts/types.js").SnapshotId, string>>;
118
+ contractId: z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").ContractId, string>>;
119
+ snapshot: z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").SnapshotId, string>>;
121
120
  observation: z.ZodDiscriminatedUnion<[z.ZodObject<{
122
121
  state: z.ZodEnum<{
123
- finished: "finished";
124
122
  started: "started";
123
+ finished: "finished";
125
124
  }>;
126
125
  outcome: z.ZodOptional<z.ZodString>;
127
126
  elapsedMs: z.ZodOptional<z.ZodNumber>;
@@ -158,24 +157,24 @@ declare const observationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
158
157
  }, z.core.$strict>], "kind">;
159
158
  }, z.core.$strict>, z.ZodObject<{
160
159
  kind: z.ZodLiteral<"stage">;
161
- contractId: z.ZodPipe<z.ZodString, z.ZodTransform<import("../core/facts/types.js").ContractId, string>>;
160
+ contractId: z.ZodPipe<z.ZodString, z.ZodTransform<import("../index.js").ContractId, string>>;
162
161
  stage: z.ZodEnum<{
163
162
  placement: "placement";
164
163
  continuation: "continuation";
165
164
  reconciliation: "reconciliation";
166
165
  }>;
167
166
  state: z.ZodEnum<{
168
- finished: "finished";
169
167
  started: "started";
168
+ finished: "finished";
170
169
  }>;
171
170
  }, z.core.$strict>, z.ZodObject<{
172
171
  kind: z.ZodLiteral<"progress-dropped">;
173
172
  count: z.ZodNumber;
174
173
  }, z.core.$strict>], "kind">;
175
- export type ExecutionEvent = z.infer<typeof observationSchema>;
176
- export type ExecutionObserver = (event: ExecutionEvent) => void;
174
+ export type ExecutionObservation = z.infer<typeof observationSchema>;
175
+ export type ExecutionObserver = (event: ExecutionObservation) => void | PromiseLike<void>;
177
176
  /** One owner decoder for local and transported ephemeral observations. */
178
- export declare function decodeExecutionEvent(value: unknown): ExecutionEvent;
177
+ export declare function decodeExecutionObservation(value: unknown): ExecutionObservation;
179
178
  /** Observation failure cannot change execution, admission, or process custody. */
180
- export declare function observeExecution(observer: ExecutionObserver | undefined, event: ExecutionEvent): void;
179
+ export declare function observeExecution(observer: ExecutionObserver | undefined, event: ExecutionObservation): void;
181
180
  export {};
@@ -1,29 +1,27 @@
1
1
  import { z } from "zod";
2
2
  import { decodeJournalEntry } from "../core/facts/codec.js";
3
- import { contractId, snapshotId } from "../core/facts/types.js";
3
+ import { contractIdSchema, snapshotIdSchema } from "../git/identity.js";
4
4
  import { verificationObservationSchema } from "../verification/observation.js";
5
- const contract = z.string().transform((value) => contractId(value));
6
- const snapshot = z.string().transform((value) => snapshotId(value));
7
5
  const observationSchema = z.discriminatedUnion("kind", [
8
6
  z
9
7
  .object({
10
8
  kind: z.literal("admitted"),
11
- contractId: contract,
9
+ contractId: contractIdSchema,
12
10
  fact: z.unknown().transform(decodeJournalEntry),
13
11
  })
14
12
  .strict(),
15
13
  z
16
14
  .object({
17
15
  kind: z.literal("verification"),
18
- contractId: contract,
19
- snapshot,
16
+ contractId: contractIdSchema,
17
+ snapshot: snapshotIdSchema,
20
18
  observation: verificationObservationSchema,
21
19
  })
22
20
  .strict(),
23
21
  z
24
22
  .object({
25
23
  kind: z.literal("stage"),
26
- contractId: contract,
24
+ contractId: contractIdSchema,
27
25
  stage: z.enum(["placement", "continuation", "reconciliation"]),
28
26
  state: z.enum(["started", "finished"]),
29
27
  })
@@ -31,13 +29,13 @@ const observationSchema = z.discriminatedUnion("kind", [
31
29
  z.object({ kind: z.literal("progress-dropped"), count: z.number().int().positive() }).strict(),
32
30
  ]);
33
31
  /** One owner decoder for local and transported ephemeral observations. */
34
- export function decodeExecutionEvent(value) {
32
+ export function decodeExecutionObservation(value) {
35
33
  return observationSchema.parse(value);
36
34
  }
37
35
  /** Observation failure cannot change execution, admission, or process custody. */
38
36
  export function observeExecution(observer, event) {
39
37
  try {
40
- observer?.(event);
38
+ void Promise.resolve(observer?.(event)).catch(() => undefined);
41
39
  }
42
40
  catch {
43
41
  // A consumer controls observation only, not the operation being observed.
@@ -1,17 +1,16 @@
1
- import type { ExecutionProgress } from "./progress.js";
1
+ import { z } from "zod";
2
+ import type { ProtocolProgress } from "./progress.js";
2
3
  import type { GitDecisionObservation } from "../git/observe.js";
3
4
  import type { GitDecodeChannel, GitTreeSelection } from "../git/read-observation.js";
4
5
  import type { GitRepository } from "../git/process.js";
5
6
  import { type WorktreeLeak } from "../git/scratch.js";
6
- import type { HookFailure } from "../git/hooks.js";
7
7
  import type { DecideInput, OfferDecision } from "../core/decide.js";
8
- import type { ActorId, ContractId, ContractState, EntryUlid, SnapshotId } from "../core/facts/types.js";
9
- import { type AttestationRefusal } from "../core/verbs/attestation.js";
10
- import { type CapturedOutput } from "../verification/execution.js";
8
+ import { type ActiveContractRefusal } from "../core/facts/observation.js";
9
+ import type { ActorId, AttestationEntry, ContractId, ContractState, DependencyKeySet, SnapshotId } from "../core/facts/types.js";
11
10
  import { type VerificationDefinition } from "../verification/declaration.js";
12
11
  import { type CompanionDecorator, type ProtocolPreparation, type ProtocolResult } from "./run.js";
13
12
  type CommonIntentAdmissionOptions<Refusal> = Readonly<{
14
- progress?: ExecutionProgress;
13
+ progress?: ProtocolProgress;
15
14
  observedContracts?: readonly ContractId[];
16
15
  observe?: (repository: GitRepository, channel: GitDecodeChannel, contracts: readonly ContractId[]) => Promise<GitDecisionObservation>;
17
16
  decorateOffer?: CompanionDecorator;
@@ -45,29 +44,96 @@ type VerifyDeliveryInput = Readonly<{
45
44
  snapshot?: SnapshotId;
46
45
  signal?: AbortSignal;
47
46
  verification?: VerificationDefinition;
48
- progress?: ExecutionProgress;
47
+ progress?: ProtocolProgress;
49
48
  }>;
50
- export type VerificationRuntimeStop = CapturedOutput & (Readonly<{
51
- failure: "unknown-exit" | "cancelled";
52
- }> | Readonly<{
53
- failure: "candidate-unavailable" | "spawn-error";
54
- diagnostic: string;
55
- }> | Readonly<{
56
- failure: "environment-failure";
57
- diagnostic: string;
58
- }> | Readonly<{
59
- failure: "environment-failure";
60
- name: string;
61
- detail: HookFailure;
62
- }>);
63
- export type VerificationCleanupFailure = Readonly<{
64
- phase: "destroy";
65
- name: string;
66
- detail: HookFailure;
49
+ export declare const verificationRuntimeStopSchema: z.ZodUnion<readonly [z.ZodObject<{
50
+ stdout: z.ZodOptional<z.ZodString>;
51
+ stderr: z.ZodOptional<z.ZodString>;
52
+ truncated: z.ZodOptional<z.ZodLiteral<true>>;
53
+ failure: z.ZodEnum<{
54
+ cancelled: "cancelled";
55
+ "unknown-exit": "unknown-exit";
56
+ }>;
57
+ }, z.core.$strict>, z.ZodObject<{
58
+ stdout: z.ZodOptional<z.ZodString>;
59
+ stderr: z.ZodOptional<z.ZodString>;
60
+ truncated: z.ZodOptional<z.ZodLiteral<true>>;
61
+ failure: z.ZodEnum<{
62
+ "spawn-error": "spawn-error";
63
+ "candidate-unavailable": "candidate-unavailable";
64
+ }>;
65
+ diagnostic: z.ZodString;
66
+ }, z.core.$strict>, z.ZodObject<{
67
+ stdout: z.ZodOptional<z.ZodString>;
68
+ stderr: z.ZodOptional<z.ZodString>;
69
+ truncated: z.ZodOptional<z.ZodLiteral<true>>;
70
+ failure: z.ZodLiteral<"environment-failure">;
71
+ diagnostic: z.ZodString;
72
+ }, z.core.$strict>, z.ZodObject<{
73
+ stdout: z.ZodOptional<z.ZodString>;
74
+ stderr: z.ZodOptional<z.ZodString>;
75
+ truncated: z.ZodOptional<z.ZodLiteral<true>>;
76
+ failure: z.ZodLiteral<"environment-failure">;
77
+ name: z.ZodString;
78
+ detail: z.ZodUnion<readonly [z.ZodObject<{
79
+ kind: z.ZodLiteral<"exit">;
80
+ code: z.ZodNumber;
81
+ stdout: z.ZodString;
82
+ stderr: z.ZodString;
83
+ truncated: z.ZodBoolean;
84
+ }, z.core.$strict>, z.ZodObject<{
85
+ stdout: z.ZodOptional<z.ZodString>;
86
+ stderr: z.ZodOptional<z.ZodString>;
87
+ truncated: z.ZodOptional<z.ZodBoolean>;
88
+ kind: z.ZodLiteral<"timeout">;
89
+ }, z.core.$strict>, z.ZodObject<{
90
+ stdout: z.ZodOptional<z.ZodString>;
91
+ stderr: z.ZodOptional<z.ZodString>;
92
+ truncated: z.ZodOptional<z.ZodBoolean>;
93
+ kind: z.ZodLiteral<"unknown-exit">;
94
+ }, z.core.$strict>, z.ZodObject<{
95
+ kind: z.ZodLiteral<"spawn-error">;
96
+ diagnostic: z.ZodString;
97
+ }, z.core.$strict>]>;
98
+ }, z.core.$strict>]>;
99
+ type VerificationRuntimeStop = z.infer<typeof verificationRuntimeStopSchema>;
100
+ export declare const verificationCleanupFailureSchema: z.ZodObject<{
101
+ phase: z.ZodLiteral<"destroy">;
102
+ name: z.ZodString;
103
+ detail: z.ZodUnion<readonly [z.ZodObject<{
104
+ kind: z.ZodLiteral<"exit">;
105
+ code: z.ZodNumber;
106
+ stdout: z.ZodString;
107
+ stderr: z.ZodString;
108
+ truncated: z.ZodBoolean;
109
+ }, z.core.$strict>, z.ZodObject<{
110
+ stdout: z.ZodOptional<z.ZodString>;
111
+ stderr: z.ZodOptional<z.ZodString>;
112
+ truncated: z.ZodOptional<z.ZodBoolean>;
113
+ kind: z.ZodLiteral<"timeout">;
114
+ }, z.core.$strict>, z.ZodObject<{
115
+ stdout: z.ZodOptional<z.ZodString>;
116
+ stderr: z.ZodOptional<z.ZodString>;
117
+ truncated: z.ZodOptional<z.ZodBoolean>;
118
+ kind: z.ZodLiteral<"unknown-exit">;
119
+ }, z.core.$strict>, z.ZodObject<{
120
+ kind: z.ZodLiteral<"spawn-error">;
121
+ diagnostic: z.ZodString;
122
+ }, z.core.$strict>]>;
123
+ }, z.core.$strict>;
124
+ export type VerificationCleanupFailure = z.infer<typeof verificationCleanupFailureSchema>;
125
+ type VerificationReuseRefusal = Readonly<{
126
+ kind: "verification-reuse";
127
+ reuse: CurrentVerifiedAttestation;
128
+ }>;
129
+ export type VerificationReuseStep = Readonly<{
130
+ kind: "reused";
131
+ reuse: CurrentVerifiedAttestation;
67
132
  }>;
68
- export type VerificationStep = ProtocolResult<AttestationRefusal> | VerificationRuntimeStop;
133
+ export type VerificationStep = ProtocolResult<ActiveContractRefusal | VerificationReuseRefusal> | VerificationRuntimeStop | VerificationReuseStep;
69
134
  export type VerificationResult = Readonly<{
70
135
  step: VerificationStep;
136
+ reuse?: CurrentVerifiedAttestation;
71
137
  counts?: Readonly<{
72
138
  passed: number;
73
139
  total: number;
@@ -77,11 +143,16 @@ export type VerificationResult = Readonly<{
77
143
  cleanup?: VerificationCleanupFailure;
78
144
  leak?: WorktreeLeak;
79
145
  }>;
80
- export type CurrentVerifiedAttestation = Readonly<{
81
- entry: EntryUlid;
82
- verdict: "satisfied" | "unsatisfied";
83
- summary?: string;
84
- }>;
146
+ export declare const verificationReuseSchema: z.ZodObject<{
147
+ entry: z.ZodPipe<z.ZodString, z.ZodTransform<import("../core/facts/types.js").EntryUlid, string>>;
148
+ verdict: z.ZodEnum<{
149
+ satisfied: "satisfied";
150
+ unsatisfied: "unsatisfied";
151
+ }>;
152
+ summary: z.ZodOptional<z.ZodString>;
153
+ }, z.core.$strict>;
154
+ export type CurrentVerifiedAttestation = z.infer<typeof verificationReuseSchema>;
155
+ export declare function reusableVerificationAttestation(current: AttestationEntry | undefined, subject: DependencyKeySet, verdict: "satisfied" | "unsatisfied"): CurrentVerifiedAttestation | undefined;
85
156
  /** Read the latest current verified attestation through the generic currentness judge. */
86
157
  export declare function currentVerifiedAttestation(state: ContractState): CurrentVerifiedAttestation | undefined;
87
158
  /** Run Verification against an explicit or admitted integration snapshot. */
@@ -1,5 +1,9 @@
1
+ import { entryUlidSchema } from "./attempt.js";
2
+ import { z } from "zod";
3
+ import { hookFailureSchema } from "../git/hooks.js";
1
4
  import { materializeScratchCandidate } from "../git/scratch.js";
2
5
  import { projectSettings } from "../settings.js";
6
+ import { activeContract } from "../core/facts/observation.js";
3
7
  import { dependencyKeySet } from "../core/subject.js";
4
8
  import { latestCurrentAttestations } from "../core/facts/gate.js";
5
9
  import { decideAttestation } from "../core/verbs/attestation.js";
@@ -47,6 +51,43 @@ export function admitPreparedIntent(channel, repository, input, decide, options)
47
51
  decide,
48
52
  });
49
53
  }
54
+ const verificationCapturedOutputFields = {
55
+ stdout: z.string().min(1).optional(),
56
+ stderr: z.string().min(1).optional(),
57
+ truncated: z.literal(true).optional(),
58
+ };
59
+ export const verificationRuntimeStopSchema = z.union([
60
+ z.object({ failure: z.enum(["unknown-exit", "cancelled"]), ...verificationCapturedOutputFields }).strict(),
61
+ z
62
+ .object({
63
+ failure: z.enum(["candidate-unavailable", "spawn-error"]),
64
+ diagnostic: z.string().refine((value) => value.trim() !== ""),
65
+ ...verificationCapturedOutputFields,
66
+ })
67
+ .strict(),
68
+ z
69
+ .object({
70
+ failure: z.literal("environment-failure"),
71
+ diagnostic: z.string().refine((value) => value.trim() !== ""),
72
+ ...verificationCapturedOutputFields,
73
+ })
74
+ .strict(),
75
+ z
76
+ .object({
77
+ failure: z.literal("environment-failure"),
78
+ name: z.string().refine((value) => value.trim() !== ""),
79
+ detail: hookFailureSchema,
80
+ ...verificationCapturedOutputFields,
81
+ })
82
+ .strict(),
83
+ ]);
84
+ export const verificationCleanupFailureSchema = z
85
+ .object({
86
+ phase: z.literal("destroy"),
87
+ name: z.string().refine((value) => value.trim() !== ""),
88
+ detail: hookFailureSchema,
89
+ })
90
+ .strict();
50
91
  function runtimeStop(outcome) {
51
92
  return outcome.kind === "spawn-error"
52
93
  ? { failure: outcome.kind, diagnostic: outcome.diagnostic, ...capturedOutput(outcome) }
@@ -68,6 +109,22 @@ function verificationInput(outcome, input, subject) {
68
109
  },
69
110
  };
70
111
  }
112
+ export const verificationReuseSchema = z
113
+ .object({
114
+ entry: entryUlidSchema,
115
+ verdict: z.enum(["satisfied", "unsatisfied"]),
116
+ summary: z.string().optional(),
117
+ })
118
+ .strict();
119
+ export function reusableVerificationAttestation(current, subject, verdict) {
120
+ if (current === undefined || current.data.subject !== subject || current.data.verdict !== verdict)
121
+ return undefined;
122
+ return {
123
+ entry: current.entry,
124
+ verdict: current.data.verdict,
125
+ ...(current.data.summary === undefined ? {} : { summary: current.data.summary }),
126
+ };
127
+ }
71
128
  /** Read the latest current verified attestation through the generic currentness judge. */
72
129
  export function currentVerifiedAttestation(state) {
73
130
  const current = latestCurrentAttestations(state, new Set([VERIFIED])).get(VERIFIED);
@@ -85,7 +142,22 @@ function retainVerificationReceipt(input, step) {
85
142
  }
86
143
  async function verificationStep(input, execution, subject) {
87
144
  if (execution.outcome.kind === "terminal") {
88
- return await admitIntent(input.channel, input.repository, verificationInput(execution.outcome, input, subject), decideAttestation, input.progress === undefined ? {} : { progress: input.progress });
145
+ const verdict = execution.outcome.verdict;
146
+ const admission = await admitIntent(input.channel, input.repository, verificationInput(execution.outcome, input, subject), decideAttestation, {
147
+ ...(input.progress === undefined ? {} : { progress: input.progress }),
148
+ validateAdmission: (observation) => {
149
+ const state = activeContract(observation.decision, input.contractId);
150
+ if ("kind" in state)
151
+ return undefined;
152
+ const current = [...state.attestations].reverse().find((attestation) => attestation.data.gate === VERIFIED);
153
+ const reuse = reusableVerificationAttestation(current, subject, verdict);
154
+ return reuse === undefined ? undefined : { kind: "verification-reuse", reuse };
155
+ },
156
+ });
157
+ if (admission.kind === "refused" && admission.refusal.kind === "verification-reuse") {
158
+ return { kind: "reused", reuse: admission.refusal.reuse };
159
+ }
160
+ return admission;
89
161
  }
90
162
  if (execution.outcome.kind === "candidate-unavailable")
91
163
  return { failure: "candidate-unavailable", diagnostic: execution.outcome.diagnostic };
@@ -134,6 +206,7 @@ export async function verifyDelivery(input) {
134
206
  retainVerificationReceipt(input, step);
135
207
  return {
136
208
  step,
209
+ ...("kind" in step && step.kind === "reused" ? { reuse: step.reuse } : {}),
137
210
  ...(counts === undefined ? {} : { counts }),
138
211
  ...(execution.cleanup === undefined ? {} : { cleanup: execution.cleanup }),
139
212
  ...(execution.leak === undefined ? {} : { leak: execution.leak }),