@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 type { Offer } from "../core/facts/offer.js";
2
3
  import type { GitAdmissionSnapshot } from "./observe.js";
3
4
  import { type GitRefAssertion } from "./repository.js";
@@ -7,10 +8,11 @@ type Accepted = Readonly<{
7
8
  kind: "accepted";
8
9
  heads: Readonly<Record<string, ContractHead>>;
9
10
  }>;
10
- export type PublicationFailed = Readonly<{
11
- kind: "publication-failed";
12
- diagnostic: string;
13
- }>;
11
+ export declare const publicationFailedSchema: z.ZodObject<{
12
+ kind: z.ZodLiteral<"publication-failed">;
13
+ diagnostic: z.ZodString;
14
+ }, z.core.$strict>;
15
+ export type PublicationFailed = z.infer<typeof publicationFailedSchema>;
14
16
  type Unknown = Readonly<{
15
17
  kind: "unknown";
16
18
  }>;
@@ -1,9 +1,13 @@
1
+ import { z } from "zod";
1
2
  import { decodeJournal, encodeEntry } from "../core/facts/codec.js";
2
3
  import { AuthorityCorruptionError } from "../core/facts/errors.js";
3
4
  import { foldJournal } from "../core/facts/fold.js";
4
5
  import { GIT_FORMAT_BYTES, GIT_FORMAT_PATH, GIT_REF, updateGitTreeFromFrozenDirectories, updateRefsAtomically, writeBlob, writeStateCommit, } from "./repository.js";
5
6
  import { contractJournalPath, contractJournalPaths, gitObjectIdForSnapshot, mintContractHead, mintSnapshotId, } from "./identity.js";
6
7
  import { validPath } from "./tree.js";
8
+ export const publicationFailedSchema = z
9
+ .object({ kind: z.literal("publication-failed"), diagnostic: z.string() })
10
+ .strict();
7
11
  const CONTRACT_JOURNAL_PATH = /^contracts\/(?:active|terminal)\/[0-9a-f]{2}\/[0-9a-f]{2}\/[0-9a-f]{60}\.jsonl$/u;
8
12
  function assertAppendStructure(appends) {
9
13
  const seen = new Set();
@@ -1,3 +1,4 @@
1
+ import { z } from "zod";
1
2
  import { type Settings } from "../settings.js";
2
3
  export type HookCommand = Readonly<{
3
4
  name: string;
@@ -8,42 +9,65 @@ export type WorktreeHooks = Readonly<{
8
9
  create: readonly HookCommand[];
9
10
  destroy: readonly HookCommand[];
10
11
  }>;
11
- export type HookFailure = Readonly<{
12
- kind: "exit";
13
- code: number;
14
- stdout: string;
15
- stderr: string;
16
- truncated: boolean;
17
- }> | Readonly<{
18
- kind: "timeout";
19
- stdout?: string;
20
- stderr?: string;
21
- truncated?: boolean;
22
- }> | Readonly<{
23
- kind: "spawn-error";
24
- diagnostic: string;
25
- }> | Readonly<{
26
- kind: "unknown-exit";
27
- stdout?: string;
28
- stderr?: string;
29
- truncated?: boolean;
30
- }>;
31
- export type WorktreeHookLag = Readonly<{
32
- kind: "worktree-hook-failed";
33
- phase: HookPhase;
34
- path: string;
35
- command: number;
36
- name: string;
37
- failure: HookFailure;
38
- }>;
12
+ export declare const hookFailureSchema: z.ZodUnion<readonly [z.ZodObject<{
13
+ kind: z.ZodLiteral<"exit">;
14
+ code: z.ZodNumber;
15
+ stdout: z.ZodString;
16
+ stderr: z.ZodString;
17
+ truncated: z.ZodBoolean;
18
+ }, z.core.$strict>, z.ZodObject<{
19
+ stdout: z.ZodOptional<z.ZodString>;
20
+ stderr: z.ZodOptional<z.ZodString>;
21
+ truncated: z.ZodOptional<z.ZodBoolean>;
22
+ kind: z.ZodLiteral<"timeout">;
23
+ }, z.core.$strict>, z.ZodObject<{
24
+ stdout: z.ZodOptional<z.ZodString>;
25
+ stderr: z.ZodOptional<z.ZodString>;
26
+ truncated: z.ZodOptional<z.ZodBoolean>;
27
+ kind: z.ZodLiteral<"unknown-exit">;
28
+ }, z.core.$strict>, z.ZodObject<{
29
+ kind: z.ZodLiteral<"spawn-error">;
30
+ diagnostic: z.ZodString;
31
+ }, z.core.$strict>]>;
32
+ export type HookFailure = z.infer<typeof hookFailureSchema>;
33
+ export declare const worktreeHookLagSchema: z.ZodObject<{
34
+ kind: z.ZodLiteral<"worktree-hook-failed">;
35
+ phase: z.ZodEnum<{
36
+ destroy: "destroy";
37
+ create: "create";
38
+ }>;
39
+ path: z.ZodString;
40
+ command: z.ZodNumber;
41
+ name: z.ZodString;
42
+ failure: z.ZodUnion<readonly [z.ZodObject<{
43
+ kind: z.ZodLiteral<"exit">;
44
+ code: z.ZodNumber;
45
+ stdout: z.ZodString;
46
+ stderr: z.ZodString;
47
+ truncated: z.ZodBoolean;
48
+ }, z.core.$strict>, z.ZodObject<{
49
+ stdout: z.ZodOptional<z.ZodString>;
50
+ stderr: z.ZodOptional<z.ZodString>;
51
+ truncated: z.ZodOptional<z.ZodBoolean>;
52
+ kind: z.ZodLiteral<"timeout">;
53
+ }, z.core.$strict>, z.ZodObject<{
54
+ stdout: z.ZodOptional<z.ZodString>;
55
+ stderr: z.ZodOptional<z.ZodString>;
56
+ truncated: z.ZodOptional<z.ZodBoolean>;
57
+ kind: z.ZodLiteral<"unknown-exit">;
58
+ }, z.core.$strict>, z.ZodObject<{
59
+ kind: z.ZodLiteral<"spawn-error">;
60
+ diagnostic: z.ZodString;
61
+ }, z.core.$strict>]>;
62
+ }, z.core.$strict>;
63
+ export type WorktreeHookLag = z.infer<typeof worktreeHookLagSchema>;
39
64
  export type HookPhase = "create" | "destroy";
40
- export type WorktreeHooksFromInput = Readonly<{
65
+ type WorktreeHooksFromInput = Readonly<{
41
66
  settings: Settings;
42
67
  }>;
43
68
  export declare function worktreeHooksFrom(input: WorktreeHooksFromInput): WorktreeHooks;
44
69
  export declare function normalizedWorktreeHooks(value: unknown): WorktreeHooks;
45
70
  export declare const EMPTY_WORKTREE_HOOKS: WorktreeHooks;
46
- export declare function worktreeHooksOption(value: unknown): WorktreeHooks;
47
71
  export type HookCommandRun = Readonly<{
48
72
  kind: "ok";
49
73
  }> | Readonly<{
@@ -67,3 +91,4 @@ export type HookPhaseRun = Readonly<{
67
91
  }>;
68
92
  export declare function runCreateHooks(worktree: string, hooks: WorktreeHooks): Promise<HookPhaseRun>;
69
93
  export declare function runDestroyHooks(worktree: string, hooks: WorktreeHooks): Promise<HookPhaseRun>;
94
+ export {};
@@ -1,5 +1,35 @@
1
+ import { z } from "zod";
1
2
  import { runProcess } from "../runtime/proc/run.js";
2
3
  import { SettingsError } from "../settings.js";
4
+ const hookOutputFields = {
5
+ stdout: z.string().optional(),
6
+ stderr: z.string().optional(),
7
+ truncated: z.boolean().optional(),
8
+ };
9
+ export const hookFailureSchema = z.union([
10
+ z
11
+ .object({
12
+ kind: z.literal("exit"),
13
+ code: z.number().int(),
14
+ stdout: z.string(),
15
+ stderr: z.string(),
16
+ truncated: z.boolean(),
17
+ })
18
+ .strict(),
19
+ z.object({ kind: z.literal("timeout"), ...hookOutputFields }).strict(),
20
+ z.object({ kind: z.literal("unknown-exit"), ...hookOutputFields }).strict(),
21
+ z.object({ kind: z.literal("spawn-error"), diagnostic: z.string().refine((value) => value.trim() !== "") }).strict(),
22
+ ]);
23
+ export const worktreeHookLagSchema = z
24
+ .object({
25
+ kind: z.literal("worktree-hook-failed"),
26
+ phase: z.enum(["create", "destroy"]),
27
+ path: z.string().refine((value) => value.trim() !== ""),
28
+ command: z.number().int().nonnegative(),
29
+ name: z.string().refine((value) => value.trim() !== ""),
30
+ failure: hookFailureSchema,
31
+ })
32
+ .strict();
3
33
  function record(value) {
4
34
  return value !== null && typeof value === "object" && !Array.isArray(value);
5
35
  }
@@ -80,9 +110,6 @@ export const EMPTY_WORKTREE_HOOKS = Object.freeze({
80
110
  create: Object.freeze([]),
81
111
  destroy: Object.freeze([]),
82
112
  });
83
- export function worktreeHooksOption(value) {
84
- return value === undefined ? EMPTY_WORKTREE_HOOKS : normalizedWorktreeHooks(value);
85
- }
86
113
  function failedOutcome(outcome) {
87
114
  if (outcome.kind === "terminal") {
88
115
  return outcome.code === 0
@@ -1,4 +1,10 @@
1
+ import { z } from "zod";
1
2
  import { type ChangeId, type ContractHead, type ContractId, type SnapshotId } from "../core/facts/types.js";
3
+ export declare const contractIdSchema: z.ZodPipe<z.ZodString, z.ZodTransform<ContractId, string>>;
4
+ export declare const snapshotIdSchema: z.ZodPipe<z.ZodString, z.ZodTransform<SnapshotId, string>>;
5
+ export declare const contractHeadSchema: z.ZodPipe<z.ZodString, z.ZodTransform<ContractHead, string>>;
6
+ export declare const changeIdSchema: z.ZodPipe<z.ZodString, z.ZodTransform<ChangeId, string>>;
7
+ export declare const mintedSnapshotInputSchema: z.ZodPipe<z.ZodString, z.ZodTransform<SnapshotId, string>>;
2
8
  declare const gitObjectIdBrand: unique symbol;
3
9
  export type GitObjectId = string & {
4
10
  readonly [gitObjectIdBrand]: "GitObjectId";
@@ -1,5 +1,52 @@
1
+ import { z } from "zod";
1
2
  import { createHash } from "node:crypto";
2
3
  import { changeId, contractHead, contractId, snapshotId, } from "../core/facts/types.js";
4
+ // Structural admission reuses the pure identity constructors; physical minting remains distinct.
5
+ export const contractIdSchema = z.string().transform((value, context) => {
6
+ try {
7
+ return contractId(value);
8
+ }
9
+ catch {
10
+ context.addIssue({ code: "custom", message: "invalid contractId" });
11
+ return z.NEVER;
12
+ }
13
+ });
14
+ export const snapshotIdSchema = z.string().transform((value, context) => {
15
+ try {
16
+ return snapshotId(value);
17
+ }
18
+ catch {
19
+ context.addIssue({ code: "custom", message: "invalid snapshotId" });
20
+ return z.NEVER;
21
+ }
22
+ });
23
+ export const contractHeadSchema = z.string().transform((value, context) => {
24
+ try {
25
+ return contractHead(value);
26
+ }
27
+ catch {
28
+ context.addIssue({ code: "custom", message: "invalid ContractHead" });
29
+ return z.NEVER;
30
+ }
31
+ });
32
+ export const changeIdSchema = z.string().transform((value, context) => {
33
+ try {
34
+ return changeId(value);
35
+ }
36
+ catch {
37
+ context.addIssue({ code: "custom", message: "invalid changeId" });
38
+ return z.NEVER;
39
+ }
40
+ });
41
+ export const mintedSnapshotInputSchema = z.string().transform((value, context) => {
42
+ try {
43
+ return mintSnapshotId(value);
44
+ }
45
+ catch {
46
+ context.addIssue({ code: "custom", message: "invalid mintSnapshotId" });
47
+ return z.NEVER;
48
+ }
49
+ });
3
50
  const GIT_OBJECT_ID = /^(?:[0-9a-f]{40}|[0-9a-f]{64})$/;
4
51
  function locator(value) {
5
52
  return createHash("sha256").update(value, "utf8").digest("hex");
@@ -1,3 +1,4 @@
1
+ import { z } from "zod";
1
2
  import type { Preparation } from "../core/decide.js";
2
3
  import type { ChangeId, ContractCoordinates, ContractId, SnapshotId } from "../core/facts/types.js";
3
4
  import { type GitObjectId } from "./identity.js";
@@ -6,18 +7,35 @@ import type { DeliveryCommitMetadata, TenderCapture } from "./tender.js";
6
7
  import { workspaceMergeStatePresent } from "./workspace.js";
7
8
  export { workspaceMergeStatePresent };
8
9
  type IntegrationTender = Pick<TenderCapture, "head" | "tree">;
9
- declare const REQUIRED_GIT: "2.38";
10
- export type IntegrationPreparationRefusal = Readonly<{
10
+ export declare const integrationPreparationRefusalSchema: z.ZodUnion<readonly [z.ZodPipe<z.ZodObject<{
11
+ kind: z.ZodLiteral<"integration-failed">;
12
+ contractId: z.ZodPipe<z.ZodString, z.ZodTransform<ContractId, string>>;
13
+ reason: z.ZodEnum<{
14
+ "not-based-on-target": "not-based-on-target";
15
+ "unrelated-histories": "unrelated-histories";
16
+ conflict: "conflict";
17
+ }>;
18
+ targetHead: z.ZodPipe<z.ZodString, z.ZodTransform<SnapshotId, string>>;
19
+ conflictPaths: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
20
+ }, z.core.$strict>, z.ZodTransform<{
11
21
  kind: "integration-failed";
12
22
  contractId: ContractId;
13
23
  reason: "not-based-on-target" | "unrelated-histories" | "conflict";
14
24
  targetHead: SnapshotId;
25
+ } & {
15
26
  conflictPaths?: readonly string[];
16
- }> | Readonly<{
17
- kind: "integration-unsupported";
27
+ }, {
28
+ kind: "integration-failed";
18
29
  contractId: ContractId;
19
- requiredGit: typeof REQUIRED_GIT;
20
- }>;
30
+ reason: "not-based-on-target" | "unrelated-histories" | "conflict";
31
+ targetHead: SnapshotId;
32
+ conflictPaths?: readonly string[] | undefined;
33
+ }>>, z.ZodObject<{
34
+ kind: z.ZodLiteral<"integration-unsupported">;
35
+ contractId: z.ZodPipe<z.ZodString, z.ZodTransform<ContractId, string>>;
36
+ requiredGit: z.ZodLiteral<"2.38">;
37
+ }, z.core.$strict>]>;
38
+ export type IntegrationPreparationRefusal = z.infer<typeof integrationPreparationRefusalSchema>;
21
39
  export type IntegrationCoordinates = Readonly<{
22
40
  contractId: ContractId;
23
41
  coordinates: ContractCoordinates;
@@ -38,13 +56,13 @@ export declare function planIntegration(repository: GitRepository, input: Integr
38
56
  kind: "target-missing";
39
57
  contractId: ContractId;
40
58
  }> | IntegrationPreparationRefusal>>;
41
- export type DeliveryDiffScope = Readonly<{
42
- filesChanged: number;
43
- insertions: number;
44
- deletions: number;
45
- paths?: readonly string[];
46
- }>;
47
- /** Compute predecessor-to-candidate scope from the exact integration trees. */
59
+ export declare const deliveryDiffScopeSchema: z.ZodObject<{
60
+ filesChanged: z.ZodNumber;
61
+ insertions: z.ZodNumber;
62
+ deletions: z.ZodNumber;
63
+ paths: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodString>>>;
64
+ }, z.core.$strict>;
65
+ type DeliveryDiffScope = z.infer<typeof deliveryDiffScopeSchema>;
48
66
  export declare function readDeliveryScope(repository: GitRepository, predecessor: SnapshotId, candidate: SnapshotId, includePaths: boolean): Promise<DeliveryDiffScope>;
49
67
  /** Read a recorded integration pair's patch, or null when Git no longer has it. */
50
68
  export declare function readDeliveryDiff(repository: GitRepository, predecessor: SnapshotId, candidate: SnapshotId): Promise<string | null>;
@@ -1,3 +1,5 @@
1
+ import { contractIdSchema, snapshotIdSchema } from "./identity.js";
2
+ import { z } from "zod";
1
3
  import { AuthorityCorruptionError } from "../core/facts/errors.js";
2
4
  import { gitObjectId, gitObjectIdForSnapshot, mintChangeId, mintSnapshotId } from "./identity.js";
3
5
  import { decodeGitNameOnly, decodeGitNumstat, readRef } from "./repository.js";
@@ -15,6 +17,28 @@ async function runAllowingNonzero(repository, args, input) {
15
17
  return { stdout: error.stdout, stderr: error.stderr, status: error.status };
16
18
  }
17
19
  }
20
+ export const integrationPreparationRefusalSchema = z.union([
21
+ z
22
+ .object({
23
+ kind: z.literal("integration-failed"),
24
+ contractId: contractIdSchema,
25
+ reason: z.enum(["not-based-on-target", "unrelated-histories", "conflict"]),
26
+ targetHead: snapshotIdSchema,
27
+ conflictPaths: z
28
+ .array(z.string().refine((value) => value.trim() !== ""))
29
+ .readonly()
30
+ .optional(),
31
+ })
32
+ .strict()
33
+ .transform(({ conflictPaths, ...refusal }) => ({ ...refusal, ...(conflictPaths === undefined ? {} : { conflictPaths }) })),
34
+ z
35
+ .object({
36
+ kind: z.literal("integration-unsupported"),
37
+ contractId: contractIdSchema,
38
+ requiredGit: z.literal(REQUIRED_GIT),
39
+ })
40
+ .strict(),
41
+ ]);
18
42
  /** Mint the one worktree-content identity shared by review and delivery. */
19
43
  export async function worktreeChangeId(repository, input, tender) {
20
44
  const result = await runGitPipe(repository, [
@@ -290,7 +314,14 @@ async function deliverySnapshotAvailability(repository, predecessor, candidate)
290
314
  }
291
315
  return "available";
292
316
  }
293
- /** Compute predecessor-to-candidate scope from the exact integration trees. */
317
+ export const deliveryDiffScopeSchema = z
318
+ .object({
319
+ filesChanged: z.number().int(),
320
+ insertions: z.number().int(),
321
+ deletions: z.number().int(),
322
+ paths: z.array(z.string()).readonly().optional(),
323
+ })
324
+ .strict();
294
325
  export async function readDeliveryScope(repository, predecessor, candidate, includePaths) {
295
326
  const scope = decodeGitNumstat(await runGit(repository, [
296
327
  "diff",
@@ -1,4 +1,13 @@
1
1
  import type { WorldRoot } from "../world.js";
2
2
  import { type GitRepository } from "./process.js";
3
3
  import { type PrivateStateSeatOutcome } from "./private-state-seat.js";
4
- export declare function nukeGit(world: WorldRoot, gitPath?: string, options?: Readonly<Pick<GitRepository, "onPrivateStateSeatContention" | "onPrivateStateSeatClose">>): Promise<PrivateStateSeatOutcome<void>>;
4
+ export declare class GitResetStopError extends Error {
5
+ constructor(message: string);
6
+ }
7
+ export declare function nukeGit(world: WorldRoot, gitPath?: string, options?: Readonly<Pick<GitRepository, "onPrivateStateSeatContention" | "onPrivateStateSeatClose">>, progress?: (confirmed: Readonly<{
8
+ refs?: number;
9
+ worktrees?: number;
10
+ }>) => void): Promise<PrivateStateSeatOutcome<Readonly<{
11
+ refs: number;
12
+ worktrees: number;
13
+ }>>>;
@@ -5,6 +5,12 @@ import { GitPlumbingError, runGit } from "./process.js";
5
5
  import { confirmPrivateStatePublication, withPrivateStatePublicationSeat, } from "./private-state-seat.js";
6
6
  import { CANDIDATE_PIN_REF_NAMESPACE, DELIVERY_REF_NAMESPACE, GIT_REF, NoGitWorldError, readRef, registeredWorktrees, repositoryAt, worktreeGitDirectory, } from "./repository.js";
7
7
  import { worktreePath } from "./workspace.js";
8
+ export class GitResetStopError extends Error {
9
+ constructor(message) {
10
+ super(message);
11
+ this.name = "GitResetStopError";
12
+ }
13
+ }
8
14
  async function managedCustody(repository) {
9
15
  const register = await readPlaceRegister(repository);
10
16
  return {
@@ -64,7 +70,7 @@ async function removeUnregisteredResidue(repository, entry) {
64
70
  if (!present)
65
71
  return true;
66
72
  if (!(await unregisteredResidueBelongsToRepository(repository, entry.path))) {
67
- throw new Error(`managed Place path has foreign custody: ${entry.path}`);
73
+ throw new GitResetStopError(`managed Place path has foreign custody: ${entry.path}`);
68
74
  }
69
75
  await rm(entry.path, { recursive: true, force: true });
70
76
  try {
@@ -75,7 +81,7 @@ async function removeUnregisteredResidue(repository, entry) {
75
81
  return true;
76
82
  throw error;
77
83
  }
78
- throw new Error(`managed Place worktree remains present: ${entry.path}`);
84
+ throw new GitResetStopError(`managed Place worktree remains present: ${entry.path}`);
79
85
  }
80
86
  async function removeManagedWorktree(repository, entry) {
81
87
  const registered = (await registeredWorktrees(repository)).find((candidate) => candidate.path === entry.path);
@@ -85,7 +91,7 @@ async function removeManagedWorktree(repository, entry) {
85
91
  return false;
86
92
  await runGit(repository, ["worktree", "remove", "--force", entry.path]);
87
93
  if ((await registeredWorktrees(repository)).some((candidate) => candidate.path === entry.path)) {
88
- throw new Error(`managed Place worktree remains registered: ${entry.path}`);
94
+ throw new GitResetStopError(`managed Place worktree remains registered: ${entry.path}`);
89
95
  }
90
96
  try {
91
97
  await access(entry.path);
@@ -95,7 +101,7 @@ async function removeManagedWorktree(repository, entry) {
95
101
  return true;
96
102
  throw error;
97
103
  }
98
- throw new Error(`managed Place worktree remains present: ${entry.path}`);
104
+ throw new GitResetStopError(`managed Place worktree remains present: ${entry.path}`);
99
105
  }
100
106
  async function deleteRefAt(repository, ref, expectedOid) {
101
107
  await runGit(repository, ["update-ref", "--no-deref", "-d", ref, expectedOid]);
@@ -114,9 +120,10 @@ async function deleteObservedStateRef(repository, expectedOid, seat) {
114
120
  confirmPrivateStatePublication(seat);
115
121
  return;
116
122
  }
117
- throw new Error("state-ref deletion outcome is unknown");
123
+ throw new GitResetStopError("state-ref deletion outcome is unknown");
118
124
  }
119
- async function removeOwnedRefs(repository) {
125
+ async function removeOwnedRefs(repository, onRemoved) {
126
+ let removed = 0;
120
127
  const roots = [DELIVERY_REF_NAMESPACE, CANDIDATE_PIN_REF_NAMESPACE];
121
128
  for (const root of roots) {
122
129
  const refs = (await runGit(repository, ["for-each-ref", "--format=%(refname)", root]))
@@ -125,34 +132,47 @@ async function removeOwnedRefs(repository) {
125
132
  .filter((ref) => ref.length > root.length && ref.startsWith(`${root}/`));
126
133
  for (const ref of refs) {
127
134
  const oid = await readRef(repository, ref);
128
- if (oid !== null)
135
+ if (oid !== null) {
129
136
  await deleteRefAt(repository, ref, oid);
137
+ removed += 1;
138
+ onRemoved?.(1);
139
+ }
130
140
  }
131
141
  }
142
+ return removed;
132
143
  }
133
- export async function nukeGit(world, gitPath = "git", options) {
144
+ export async function nukeGit(world, gitPath = "git", options, progress) {
134
145
  let repository;
135
146
  try {
136
147
  repository = { ...(await repositoryAt(world, gitPath)), ...options };
137
148
  }
138
149
  catch (error) {
139
150
  if (error instanceof NoGitWorldError)
140
- return { value: undefined };
151
+ return { value: { refs: 0, worktrees: 0 } };
141
152
  throw error;
142
153
  }
143
154
  return await withPlaceAuthorityFence(repository, async (placeFence) => {
144
155
  const custody = await managedCustody(repository);
145
156
  return await withPrivateStatePublicationSeat(repository, async (seat) => {
157
+ let refs = 0;
158
+ let worktrees = 0;
146
159
  const state = await readRef(repository, GIT_REF);
147
- if (state !== null)
160
+ if (state !== null) {
148
161
  await deleteObservedStateRef(repository, state, seat);
162
+ refs += 1;
163
+ progress?.({ refs: 1 });
164
+ }
149
165
  for (const entry of custody.entries) {
150
166
  if (await removeManagedWorktree(repository, entry)) {
167
+ worktrees += 1;
168
+ progress?.({ worktrees: 1 });
151
169
  await releaseManagedWorktrees(repository, [entry.contract], placeFence);
152
170
  }
153
171
  }
154
172
  await nukeEmptyPlaceAuthority(repository, placeFence);
155
- await removeOwnedRefs(repository);
173
+ const ownedRefs = await removeOwnedRefs(repository, (count) => progress?.({ refs: count }));
174
+ refs += ownedRefs;
175
+ return { refs, worktrees };
156
176
  });
157
177
  });
158
178
  }
@@ -4,7 +4,7 @@ import { foldJournal } from "../core/facts/fold.js";
4
4
  import { contractJournalPath, contractJournalPaths, mintContractHead, mintSnapshotId, } from "./identity.js";
5
5
  import { isKeiyakuOwnedRef } from "./repository.js";
6
6
  import { GitPlumbingError, runGit } from "./process.js";
7
- import { readGitTreeSelection, withGitTargetedReadObservation, } from "./read-observation.js";
7
+ import { readBlobResults, readGitTreeSelection, withGitTargetedReadObservation, } from "./read-observation.js";
8
8
  export async function observeDeliveryTargetAt(observation, state) {
9
9
  const target = state.coordinates.target;
10
10
  if (target === undefined)
@@ -288,20 +288,7 @@ export async function extendContractsForAdmissionAt(channel, observation, ids) {
288
288
  const missing = ids.filter((id) => !observation.decision.has(id));
289
289
  if (missing.length === 0)
290
290
  return observation;
291
- const readBlobsAt = async (oids) => {
292
- const objects = await channel.readObjects(oids);
293
- const blobs = new Map();
294
- for (const [oid, object] of objects) {
295
- if (object.kind === "missing")
296
- blobs.set(oid, object);
297
- else {
298
- if (object.type !== "blob")
299
- throw new AuthorityCorruptionError(`Git object is not a blob: ${oid}`);
300
- blobs.set(oid, { kind: "present", bytes: object.bytes });
301
- }
302
- }
303
- return blobs;
304
- };
291
+ const readBlobsAt = async (oids) => await readBlobResults(channel, oids);
305
292
  const snapshot = observation.admission.snapshot;
306
293
  if (snapshot.tree === null)
307
294
  return observation;
@@ -1,3 +1,4 @@
1
+ import { z } from "zod";
1
2
  import type { GitRepository } from "./process.js";
2
3
  declare const privateStateSeat: unique symbol;
3
4
  /** Timed-out wait for the private-state publication seat. The holder and lock are unchanged. */
@@ -10,11 +11,11 @@ export type PrivateStatePublicationSeat = Readonly<{
10
11
  readonly [privateStateSeat]: true;
11
12
  }>;
12
13
  /** Post-confirmation failure to release the private-state publication seat. */
13
- export type PrivateStateSeatCloseLag = Readonly<{
14
- kind: "private-state-seat-close-failed";
15
- diagnostic: string;
16
- }>;
17
- /** Action result plus any confirmed-publication seat-close lag. */
14
+ export declare const privateStateSeatCloseLagSchema: z.ZodObject<{
15
+ kind: z.ZodLiteral<"private-state-seat-close-failed">;
16
+ diagnostic: z.ZodString;
17
+ }, z.core.$strict>;
18
+ export type PrivateStateSeatCloseLag = z.infer<typeof privateStateSeatCloseLagSchema>;
18
19
  export type PrivateStateSeatOutcome<T> = Readonly<{
19
20
  value: T;
20
21
  closeLag?: PrivateStateSeatCloseLag;
@@ -25,8 +26,6 @@ export declare function privateStatePublicationSeatPath(repository: GitRepositor
25
26
  export declare function privateStateSeatCloseLag(error: unknown): PrivateStateSeatCloseLag;
26
27
  export declare function concatenatePrivateStateSeatClose(current: readonly PrivateStateSeatCloseLag[] | undefined, next: readonly PrivateStateSeatCloseLag[] | undefined): readonly PrivateStateSeatCloseLag[] | undefined;
27
28
  export declare function appendPrivateStateSeatClose(current: readonly PrivateStateSeatCloseLag[] | undefined, closeLag: PrivateStateSeatCloseLag): readonly PrivateStateSeatCloseLag[];
28
- /** Unwrap a seat outcome that has no typed lag surface; confirmed close lag throws. */
29
- export declare function requireClosedPrivateStateSeat<T>(outcome: PrivateStateSeatOutcome<T>): T;
30
29
  /** Unwrap a seat outcome through an owner-typed merge of confirmed close lag. */
31
30
  export declare function mergePrivateStateSeatClose<T>(outcome: PrivateStateSeatOutcome<T>, merge: (value: T, closeLag: PrivateStateSeatCloseLag) => T): T;
32
31
  export declare function isPrivateStateSeatContention(error: unknown): error is GitPrivateStateSeatContentionError;
@@ -1,3 +1,4 @@
1
+ import { z } from "zod";
1
2
  import { AsyncLocalStorage } from "node:async_hooks";
2
3
  import { join } from "node:path";
3
4
  import { acquireSqliteTransactionLock, SqliteTransactionLockError } from "../coordination/sqlite-transaction-lock.js";
@@ -14,6 +15,13 @@ export class GitPrivateStateSeatContentionError extends Error {
14
15
  this.name = "GitPrivateStateSeatContentionError";
15
16
  }
16
17
  }
18
+ /** Post-confirmation failure to release the private-state publication seat. */
19
+ export const privateStateSeatCloseLagSchema = z
20
+ .object({
21
+ kind: z.literal("private-state-seat-close-failed"),
22
+ diagnostic: z.string().refine((value) => value.trim() !== ""),
23
+ })
24
+ .strict();
17
25
  /** Record a known or exact-read-back-proven private-root publication. */
18
26
  export function confirmPrivateStatePublication(seat) {
19
27
  confirmedPublications.add(seat);
@@ -34,12 +42,6 @@ export function concatenatePrivateStateSeatClose(current, next) {
34
42
  export function appendPrivateStateSeatClose(current, closeLag) {
35
43
  return current === undefined ? [closeLag] : [...current, closeLag];
36
44
  }
37
- /** Unwrap a seat outcome that has no typed lag surface; confirmed close lag throws. */
38
- export function requireClosedPrivateStateSeat(outcome) {
39
- if (outcome.closeLag !== undefined)
40
- throw new Error(outcome.closeLag.diagnostic);
41
- return outcome.value;
42
- }
43
45
  /** Unwrap a seat outcome through an owner-typed merge of confirmed close lag. */
44
46
  export function mergePrivateStateSeatClose(outcome, merge) {
45
47
  return outcome.closeLag === undefined ? outcome.value : merge(outcome.value, outcome.closeLag);
@@ -36,7 +36,12 @@ export declare function readGitTreeSelection(channel: GitDecodeChannel, root: Gi
36
36
  paths: ReadonlyMap<string, TreeEntry>;
37
37
  directories: ReadonlyMap<string, ReadonlyMap<string, TreeEntry>>;
38
38
  }>>;
39
- export declare function withGitDecodeChannel<Value>(repository: GitRepository, consume: (channel: GitDecodeChannel) => Value | PromiseLike<Value>): Promise<Value>;
39
+ export declare function withGitDecodeChannel<Value>(repository: GitRepository, consume: (channel: GitDecodeChannel) => Value | PromiseLike<Value>, onRetirementFailure?: (error: unknown) => void): Promise<Value>;
40
+ /**
41
+ * Blob-only reads over a decode channel: a missing object stays missing, and a present
42
+ * non-blob object is authority corruption, never a silent skip.
43
+ */
44
+ export declare function readBlobResults(channel: GitDecodeChannel, oids: readonly GitOid[]): Promise<ReadonlyMap<GitOid, GitBlobResult>>;
40
45
  export declare function withGitReadObservation<Value>(repository: GitRepository, channel: GitDecodeChannel, consume: (observation: GitReadObservation) => Value | PromiseLike<Value>): Promise<Value>;
41
46
  export declare function withGitTargetedReadObservation<Value>(repository: GitRepository, channel: GitDecodeChannel, selection: GitTreeSelection, consume: (observation: GitReadObservation) => Value | PromiseLike<Value>): Promise<Value>;
42
47
  export {};