@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,17 +1,99 @@
1
+ import { snapshotIdSchema, mintedSnapshotInputSchema } from "./identity.js";
2
+ import { z } from "zod";
3
+ import { targetCheckoutEffectSchema, targetCheckoutLagSchema } from "./target-placement.js";
4
+ import { worktreeHookLagSchema } from "./hooks.js";
5
+ import { unsealedBytesSchema } from "./terminal-seal.js";
1
6
  import { access, mkdir } from "node:fs/promises";
2
7
  import { dirname, join } from "node:path";
3
- import { acquireSqliteTransactionLock, } from "../coordination/sqlite-transaction-lock.js";
8
+ import { acquireSqliteTransactionLock, SqliteTransactionLockError, } from "../coordination/sqlite-transaction-lock.js";
4
9
  import { AuthorityCorruptionError } from "../core/facts/errors.js";
5
10
  import { CANDIDATE_PIN_REF_NAMESPACE, commonGitDirectory, DELIVERY_REF_NAMESPACE, registeredWorktreePaths, } from "./repository.js";
6
- import { runGit } from "./process.js";
11
+ import { runGit, GitPlumbingError } from "./process.js";
7
12
  import { contractLocator, contractPhysicalName, gitObjectIdForSnapshot } from "./identity.js";
8
13
  import { observeContractAt } from "./observe.js";
9
- import { acquireTargetPlacementFence, recoverTargetPlacement, } from "./target-placement.js";
14
+ import { acquireTargetPlacementFence, recoverTargetPlacement } from "./target-placement.js";
10
15
  import { runCreateHooks } from "./hooks.js";
11
16
  import { followDependentManagedWorktree, retireConflictHandoff, worktreePath } from "./workspace.js";
12
17
  import { removeCollectableScratchWorktrees } from "./scratch.js";
13
18
  import { reconcileTerminalManagedWorktree, removeRef, updateRef } from "./terminal-reconcile.js";
19
+ class WorktreeCustodyError extends Error {
20
+ }
14
21
  const pathExists = (path) => access(path).then(() => true, () => false);
22
+ export const reconcileEffectSchema = z.union([
23
+ z
24
+ .object({
25
+ kind: z.literal("worktree"),
26
+ path: z.string().refine((value) => value.trim() !== ""),
27
+ action: z.enum(["created", "removed", "unchanged"]),
28
+ before: z.unknown().optional(),
29
+ after: z.unknown().optional(),
30
+ })
31
+ .strict()
32
+ .transform(({ before: _before, after: _after, ...effect }) => effect),
33
+ z
34
+ .object({
35
+ kind: z.literal("worktree"),
36
+ path: z.string().refine((value) => value.trim() !== ""),
37
+ action: z.literal("followed"),
38
+ before: snapshotIdSchema,
39
+ after: snapshotIdSchema,
40
+ })
41
+ .strict(),
42
+ z
43
+ .object({
44
+ kind: z.literal("recovery-snapshot"),
45
+ action: z.literal("created"),
46
+ snapshot: snapshotIdSchema,
47
+ retention: z.literal("ephemeral"),
48
+ })
49
+ .strict(),
50
+ targetCheckoutEffectSchema,
51
+ z
52
+ .object({
53
+ kind: z.literal("ref"),
54
+ name: z.string().refine((value) => value.trim() !== ""),
55
+ before: z.string().min(1).nullable(),
56
+ after: z.string().min(1).nullable(),
57
+ action: z.enum(["created", "updated", "removed", "unchanged"]),
58
+ })
59
+ .strict(),
60
+ ]);
61
+ const reconcileFailureSchema = z
62
+ .object({
63
+ kind: z.literal("reconcile-failed"),
64
+ stage: z.enum(["observation", "effect"]),
65
+ diagnostic: z.string().refine((value) => value.trim() !== ""),
66
+ })
67
+ .strict();
68
+ export const gitReconcileLagSchema = z.union([
69
+ z
70
+ .object({
71
+ kind: z.literal("worktree-retained"),
72
+ path: z.string().refine((value) => value.trim() !== ""),
73
+ diagnostic: z
74
+ .string()
75
+ .refine((value) => value.trim() !== "")
76
+ .optional(),
77
+ })
78
+ .strict(),
79
+ z
80
+ .object({
81
+ kind: z.literal("worktree-follow-retained"),
82
+ path: z.string().refine((value) => value.trim() !== ""),
83
+ tender: mintedSnapshotInputSchema,
84
+ head: mintedSnapshotInputSchema,
85
+ reason: z.enum(["head-moved", "head-attached", "operation-in-progress", "unsupported-parent-shape"]),
86
+ paths: z
87
+ .array(z.string().refine((value) => value.trim() !== ""))
88
+ .readonly()
89
+ .optional(),
90
+ })
91
+ .strict(),
92
+ unsealedBytesSchema,
93
+ targetCheckoutLagSchema,
94
+ worktreeHookLagSchema,
95
+ reconcileFailureSchema,
96
+ ]);
15
97
  function deliveryRefFor(contract) {
16
98
  return `${DELIVERY_REF_NAMESPACE}/${contractPhysicalName(contract)}`;
17
99
  }
@@ -34,8 +116,36 @@ function diagnostic(error) {
34
116
  function complete(effects = [], lag = [], hookRuns = []) {
35
117
  return hookRuns.length === 0 ? { effects, lag } : { effects, lag, hookRuns };
36
118
  }
119
+ /** Append owner observations and publish those same objects before the next await. */
120
+ function reconcileAccumulation(onPhysical) {
121
+ const effects = [];
122
+ const lag = [];
123
+ return {
124
+ effects,
125
+ lag,
126
+ hookRuns: [],
127
+ recordEffect(...observed) {
128
+ effects.push(...observed);
129
+ if (observed.length > 0)
130
+ onPhysical?.({ effects: observed, lag: [] });
131
+ },
132
+ recordLag(...observed) {
133
+ lag.push(...observed);
134
+ if (observed.length > 0)
135
+ onPhysical?.({ effects: [], lag: observed });
136
+ },
137
+ };
138
+ }
37
139
  function failed(stage, error, effects = [], lag = []) {
38
- if (error instanceof AuthorityCorruptionError || error instanceof TypeError)
140
+ if (!(error instanceof WorktreeCustodyError ||
141
+ error instanceof GitPlumbingError ||
142
+ error instanceof SqliteTransactionLockError ||
143
+ (error instanceof Error &&
144
+ !(error instanceof AuthorityCorruptionError) &&
145
+ !(error instanceof TypeError) &&
146
+ "code" in error &&
147
+ typeof error.code === "string" &&
148
+ /^E[A-Z0-9]+$/u.test(error.code))))
39
149
  throw error;
40
150
  return { effects, lag: [...lag, { kind: "reconcile-failed", stage, diagnostic: diagnostic(error) }] };
41
151
  }
@@ -52,20 +162,24 @@ async function worktree(repository, topology, path, desired) {
52
162
  topology.paths.delete(path);
53
163
  }
54
164
  if (await pathExists(path))
55
- throw new Error(`delivery worktree path is occupied: ${path}`);
165
+ throw new WorktreeCustodyError(`delivery worktree path is occupied: ${path}`);
56
166
  await mkdir(dirname(path), { recursive: true });
57
167
  await runGit(repository, ["worktree", "add", "--detach", path, gitObjectIdForSnapshot(desired)]);
58
168
  topology.paths.add(path);
59
169
  return { kind: "worktree", path, action: "created" };
60
170
  }
61
- async function removeCollectableScratch(repository, topology, effects, lag) {
171
+ async function removeCollectableScratch(repository, topology, acc) {
62
172
  for (const removal of await removeCollectableScratchWorktrees(repository, topology.paths)) {
63
- effects.push({ kind: "worktree", path: removal.path, action: removal.action });
173
+ acc.recordEffect({ kind: "worktree", path: removal.path, action: removal.action });
64
174
  if (removal.retained)
65
- lag.push({ kind: "worktree-retained", path: removal.path });
175
+ acc.recordLag({
176
+ kind: "worktree-retained",
177
+ path: removal.path,
178
+ ...(removal.diagnostic === undefined ? {} : { diagnostic: removal.diagnostic }),
179
+ });
66
180
  }
67
181
  }
68
- async function reconcileTargetCheckouts(repository, state) {
182
+ async function reconcileTargetCheckouts(repository, state, onPhysical) {
69
183
  if (state.terminal?.kind !== "claimed" || state.coordinates.target === undefined || state.delivery === null) {
70
184
  return complete();
71
185
  }
@@ -79,14 +193,16 @@ async function reconcileTargetCheckouts(repository, state) {
79
193
  let result;
80
194
  let exceptional;
81
195
  try {
82
- const recovered = await recoverTargetPlacement(repository, state);
196
+ const recovered = await recoverTargetPlacement(repository, state, onPhysical);
83
197
  result = complete(recovered.effects, recovered.lag);
84
198
  }
85
199
  catch (error) {
86
- if (error instanceof AuthorityCorruptionError || error instanceof TypeError)
87
- exceptional = error;
88
- else
200
+ try {
89
201
  result = failed("effect", error);
202
+ }
203
+ catch (unexpected) {
204
+ exceptional = { error: unexpected };
205
+ }
90
206
  }
91
207
  let releaseFailure;
92
208
  try {
@@ -96,21 +212,24 @@ async function reconcileTargetCheckouts(repository, state) {
96
212
  releaseFailure = error;
97
213
  }
98
214
  if (exceptional !== undefined)
99
- throw exceptional;
215
+ throw exceptional.error;
100
216
  if (result === undefined)
101
217
  throw new Error("target checkout reconcile produced no result");
102
218
  if (releaseFailure !== undefined)
103
219
  result = failed("effect", releaseFailure, result.effects, result.lag);
104
220
  return result;
105
221
  }
106
- async function reconcileActiveManagedWorktree({ repository, hooks, retryHooks, place }, state, topology, { effects, lag, hookRuns }) {
107
- if (place === undefined)
108
- return complete(effects, [...lag, missingPlaceLag(repository)]);
222
+ async function reconcileActiveManagedWorktree({ repository, hooks, retryHooks, place }, state, topology, acc) {
223
+ const { effects, lag, hookRuns } = acc;
224
+ if (place === undefined) {
225
+ acc.recordLag(missingPlaceLag(repository));
226
+ return complete(effects, lag);
227
+ }
109
228
  const path = worktreePath(repository, place);
110
229
  const desired = state.delivery?.data.tenderSnapshot ?? state.coordinates.start;
111
- effects.push(await updateRef(repository, deliveryRefFor(state.id), desired));
230
+ acc.recordEffect(await updateRef(repository, deliveryRefFor(state.id), desired));
112
231
  const projection = await worktree(repository, topology, path, desired);
113
- effects.push(projection);
232
+ acc.recordEffect(projection);
114
233
  const handoff = await retireConflictHandoff(repository, {
115
234
  contractId: state.id,
116
235
  place,
@@ -118,7 +237,7 @@ async function reconcileActiveManagedWorktree({ repository, hooks, retryHooks, p
118
237
  consume: state.delivery !== null,
119
238
  });
120
239
  if (state.delivery !== null && handoff.kind === "retained") {
121
- lag.push({
240
+ acc.recordLag({
122
241
  kind: "reconcile-failed",
123
242
  stage: "effect",
124
243
  diagnostic: `conflict handoff retirement retained: ${handoff.reason}`,
@@ -128,14 +247,14 @@ async function reconcileActiveManagedWorktree({ repository, hooks, retryHooks, p
128
247
  const hookRun = await runCreateHooks(path, hooks);
129
248
  hookRuns.push(...hookRun.runs.map((name) => ({ phase: "create", name })));
130
249
  if (hookRun.lag !== null)
131
- lag.push(hookRun.lag);
250
+ acc.recordLag(hookRun.lag);
132
251
  }
133
- effects.push(await (state.delivery
252
+ acc.recordEffect(await (state.delivery
134
253
  ? await updateRef(repository, candidatePinRefFor(state.id), state.currentIntegration?.snapshot ?? state.delivery.data.integration.snapshot)
135
254
  : await removeRef(repository, candidatePinRefFor(state.id))));
136
255
  return complete(effects, lag, hookRuns);
137
256
  }
138
- async function terminalHandoffRetained(input, state, topology, lag) {
257
+ async function terminalHandoffRetained(input, state, topology, acc) {
139
258
  if (input.place === undefined)
140
259
  return false;
141
260
  const path = worktreePath(input.repository, input.place);
@@ -148,7 +267,7 @@ async function terminalHandoffRetained(input, state, topology, lag) {
148
267
  consume: state.delivery !== null,
149
268
  });
150
269
  if (handoff.kind === "active") {
151
- lag.push({
270
+ acc.recordLag({
152
271
  kind: "reconcile-failed",
153
272
  stage: "effect",
154
273
  diagnostic: "conflict handoff retirement retained: active",
@@ -157,7 +276,7 @@ async function terminalHandoffRetained(input, state, topology, lag) {
157
276
  }
158
277
  if (handoff.kind !== "retained")
159
278
  return false;
160
- lag.push({
279
+ acc.recordLag({
161
280
  kind: "reconcile-failed",
162
281
  stage: "effect",
163
282
  diagnostic: `conflict handoff retirement retained: ${handoff.reason}`,
@@ -166,22 +285,24 @@ async function terminalHandoffRetained(input, state, topology, lag) {
166
285
  }
167
286
  async function reconcileWithTopology(input, state, topology) {
168
287
  const { repository } = input;
169
- const effects = [];
170
- const lag = [];
171
- const hookRuns = [];
288
+ const acc = reconcileAccumulation(input.onPhysical);
289
+ const { effects, lag, hookRuns } = acc;
172
290
  try {
173
- await removeCollectableScratch(repository, topology, effects, lag);
291
+ await removeCollectableScratch(repository, topology, acc);
174
292
  if (!state)
175
293
  return complete(effects, lag);
176
- const targetCheckouts = await reconcileTargetCheckouts(repository, state);
177
- effects.push(...targetCheckouts.effects);
178
- lag.push(...targetCheckouts.lag);
294
+ const targetCheckouts = await reconcileTargetCheckouts(repository, state, input.onPhysical);
295
+ acc.recordEffect(...targetCheckouts.effects);
296
+ acc.recordLag(...targetCheckouts.lag);
179
297
  if (state.terminal) {
180
- if (await terminalHandoffRetained(input, state, topology, lag))
298
+ if (await terminalHandoffRetained(input, state, topology, acc))
181
299
  return complete(effects, lag, hookRuns);
182
- return await reconcileTerminalManagedWorktree(input, state, topology, { effects, lag, hookRuns }, { ref: deliveryRefFor(state.id), pin: candidatePinRefFor(state.id) });
300
+ return await reconcileTerminalManagedWorktree(input, state, topology, acc, {
301
+ ref: deliveryRefFor(state.id),
302
+ pin: candidatePinRefFor(state.id),
303
+ });
183
304
  }
184
- const result = await reconcileActiveManagedWorktree(input, state, topology, { effects, lag, hookRuns });
305
+ const result = await reconcileActiveManagedWorktree(input, state, topology, acc);
185
306
  return hookRuns.length === 0 ? result : { ...result, hookRuns };
186
307
  }
187
308
  catch (error) {
@@ -221,16 +342,24 @@ export async function reconcile(input) {
221
342
  state,
222
343
  result: await reconcileWithTopology(input, state, topology),
223
344
  };
345
+ input.onPhysical?.(observation.result);
224
346
  }
225
347
  catch (error) {
226
- if (error instanceof AuthorityCorruptionError || error instanceof TypeError)
227
- exceptional = error;
228
- else
348
+ try {
229
349
  observation = { state: null, result: failed("observation", error) };
350
+ }
351
+ catch (unexpected) {
352
+ exceptional = { error: unexpected };
353
+ }
354
+ }
355
+ try {
356
+ observation = releaseFailure(held, observation);
357
+ }
358
+ catch (error) {
359
+ exceptional ??= { error };
230
360
  }
231
- observation = releaseFailure(held, observation);
232
361
  if (exceptional !== undefined)
233
- throw exceptional;
362
+ throw exceptional.error;
234
363
  if (observation === undefined)
235
364
  throw new Error("reconcile produced no observation");
236
365
  return observation;
@@ -1,17 +1,20 @@
1
+ import { z } from "zod";
1
2
  import type { SnapshotId } from "../core/facts/types.js";
2
3
  import { type GitRepository } from "./process.js";
3
4
  export type MaterializedScratchCandidate = Readonly<{
4
5
  cwd: string;
5
6
  dispose: () => Promise<WorktreeLeak | null>;
6
7
  }>;
7
- export type WorktreeLeak = Readonly<{
8
- path: string;
9
- diagnostic: string;
10
- }>;
8
+ export declare const worktreeLeakSchema: z.ZodObject<{
9
+ path: z.ZodString;
10
+ diagnostic: z.ZodString;
11
+ }, z.core.$strict>;
12
+ export type WorktreeLeak = z.infer<typeof worktreeLeakSchema>;
11
13
  type CollectableScratchRemoval = Readonly<{
12
14
  path: string;
13
15
  action: "removed" | "unchanged";
14
16
  retained: boolean;
17
+ diagnostic?: string;
15
18
  }>;
16
19
  /** Remove only abandoned Verification scratch worktrees whose ownership locks are held. */
17
20
  export declare function removeCollectableScratchWorktrees(repository: GitRepository, paths: Set<string>): Promise<readonly CollectableScratchRemoval[]>;
@@ -1,5 +1,6 @@
1
+ import { z } from "zod";
1
2
  import { randomBytes } from "node:crypto";
2
- import { access, realpath } from "node:fs/promises";
3
+ import { access, realpath, unlink } from "node:fs/promises";
3
4
  import { tmpdir } from "node:os";
4
5
  import { basename, dirname, join } from "node:path";
5
6
  import { tryAcquireSqliteTransactionLock, } from "../coordination/sqlite-transaction-lock.js";
@@ -8,6 +9,7 @@ import { runGit } from "./process.js";
8
9
  const SCRATCH_PREFIX = "keiyaku-v4-verify-";
9
10
  const SCRATCH_ROOT = await realpath(tmpdir());
10
11
  const SCRATCH_PATTERN = /^keiyaku-v4-verify-([0-9a-f]{24})$/;
12
+ export const worktreeLeakSchema = z.object({ path: z.string(), diagnostic: z.string() }).strict();
11
13
  function scratchPath() {
12
14
  return join(SCRATCH_ROOT, `${SCRATCH_PREFIX}${randomBytes(12).toString("hex")}`);
13
15
  }
@@ -17,6 +19,12 @@ function ownershipLockPath(path) {
17
19
  const match = SCRATCH_PATTERN.exec(basename(path));
18
20
  return match === null ? null : join(SCRATCH_ROOT, `.${SCRATCH_PREFIX}${match[1]}.owner.sqlite`);
19
21
  }
22
+ async function removeOwnershipLock(lockPath) {
23
+ await unlink(lockPath).catch((error) => {
24
+ if (error.code !== "ENOENT")
25
+ throw error;
26
+ });
27
+ }
20
28
  async function collectableScratchWorktrees(paths) {
21
29
  const collectable = [];
22
30
  for (const path of paths) {
@@ -25,7 +33,7 @@ async function collectableScratchWorktrees(paths) {
25
33
  continue;
26
34
  const lock = await tryAcquireSqliteTransactionLock({ path: lockPath, mode: "exclusive" });
27
35
  if (lock !== null)
28
- collectable.push({ path, release: () => lock.close() });
36
+ collectable.push({ path, lockPath, release: () => lock.close() });
29
37
  }
30
38
  return collectable;
31
39
  }
@@ -34,24 +42,34 @@ const pathExists = (path) => access(path).then(() => true, () => false);
34
42
  export async function removeCollectableScratchWorktrees(repository, paths) {
35
43
  const removals = [];
36
44
  for (const scratch of await collectableScratchWorktrees(paths)) {
45
+ let removed = false;
37
46
  try {
38
47
  if (!(await pathExists(scratch.path))) {
39
48
  await runGit(repository, ["worktree", "remove", scratch.path]);
40
49
  paths.delete(scratch.path);
50
+ removed = true;
41
51
  removals.push({ path: scratch.path, action: "removed", retained: false });
42
52
  continue;
43
53
  }
44
54
  try {
45
55
  await runGit(repository, ["worktree", "remove", "--force", scratch.path]);
46
56
  paths.delete(scratch.path);
57
+ removed = true;
47
58
  removals.push({ path: scratch.path, action: "removed", retained: false });
48
59
  }
49
- catch {
50
- removals.push({ path: scratch.path, action: "unchanged", retained: true });
60
+ catch (error) {
61
+ removals.push({
62
+ path: scratch.path,
63
+ action: "unchanged",
64
+ retained: true,
65
+ diagnostic: error instanceof Error ? error.message : String(error),
66
+ });
51
67
  }
52
68
  }
53
69
  finally {
54
70
  scratch.release();
71
+ if (removed)
72
+ await removeOwnershipLock(scratch.lockPath);
55
73
  }
56
74
  }
57
75
  return removals;
@@ -73,6 +91,7 @@ export async function materializeScratchCandidate(repository, candidate) {
73
91
  }
74
92
  catch (error) {
75
93
  ownership.close();
94
+ await removeOwnershipLock(lockPath);
76
95
  throw error;
77
96
  }
78
97
  let disposed = false;
@@ -82,19 +101,22 @@ export async function materializeScratchCandidate(repository, candidate) {
82
101
  if (disposed)
83
102
  return null;
84
103
  disposed = true;
104
+ let leak = null;
85
105
  try {
86
106
  await runGit({ ...repository, signal: AbortSignal.timeout(5_000) }, ["worktree", "remove", "--force", cwd]);
87
- return null;
88
107
  }
89
108
  catch (error) {
90
- return {
109
+ leak = {
91
110
  path: cwd,
92
111
  diagnostic: error instanceof Error ? error.message : String(error),
93
112
  };
94
113
  }
95
114
  finally {
96
115
  ownership.close();
116
+ if (leak === null)
117
+ await removeOwnershipLock(lockPath);
97
118
  }
119
+ return leak;
98
120
  },
99
121
  };
100
122
  }
@@ -1,28 +1,35 @@
1
+ import { z } from "zod";
1
2
  import { type HeldSqliteTransactionLock } from "../coordination/sqlite-transaction-lock.js";
2
3
  import type { ContractId, ContractState, SnapshotId } from "../core/facts/types.js";
3
4
  import type { RefOperation } from "../core/facts/offer.js";
4
5
  import { type GitRepository } from "./process.js";
5
- export type CheckoutNotFollowableRefusal = Readonly<{
6
- kind: "checkout-not-followable";
7
- contractId: ContractId;
8
- target: string;
9
- path: string;
10
- reason: "staged" | "dirty-tracked" | "unmerged" | "untracked";
11
- paths: readonly string[];
12
- }>;
6
+ export declare const checkoutNotFollowableRefusalSchema: z.ZodObject<{
7
+ kind: z.ZodLiteral<"checkout-not-followable">;
8
+ contractId: z.ZodPipe<z.ZodString, z.ZodTransform<ContractId, string>>;
9
+ target: z.ZodString;
10
+ path: z.ZodString;
11
+ reason: z.ZodLiteral<"untracked">;
12
+ paths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
13
+ }, z.core.$strict>;
14
+ type CheckoutNotFollowableRefusal = z.infer<typeof checkoutNotFollowableRefusalSchema>;
13
15
  export type TargetPlacementRefusal = CheckoutNotFollowableRefusal;
14
- export type TargetCheckoutEffect = Readonly<{
15
- kind: "target-checkout";
16
- path: string;
17
- target: string;
18
- action: "followed" | "recovered";
19
- }>;
20
- export type TargetCheckoutLag = Readonly<{
21
- kind: "target-checkout-retained";
22
- path: string;
23
- target: string;
24
- diagnostic: string;
25
- }>;
16
+ export declare const targetCheckoutEffectSchema: z.ZodObject<{
17
+ kind: z.ZodLiteral<"target-checkout">;
18
+ path: z.ZodString;
19
+ target: z.ZodString;
20
+ action: z.ZodEnum<{
21
+ followed: "followed";
22
+ recovered: "recovered";
23
+ }>;
24
+ }, z.core.$strict>;
25
+ type TargetCheckoutEffect = z.infer<typeof targetCheckoutEffectSchema>;
26
+ export declare const targetCheckoutLagSchema: z.ZodObject<{
27
+ kind: z.ZodLiteral<"target-checkout-retained">;
28
+ path: z.ZodString;
29
+ target: z.ZodString;
30
+ diagnostic: z.ZodString;
31
+ }, z.core.$strict>;
32
+ type TargetCheckoutLag = z.infer<typeof targetCheckoutLagSchema>;
26
33
  export type TargetPlacementPhysicalResult = Readonly<{
27
34
  effects: readonly TargetCheckoutEffect[];
28
35
  lag: readonly TargetCheckoutLag[];
@@ -74,31 +81,39 @@ export type TargetPlacementObservation = Readonly<{
74
81
  }>;
75
82
  /** Observe whether registered target checkouts can follow a predecessor-to-candidate movement. */
76
83
  export declare function observeTargetPlacement(repository: GitRepository, input: TargetPlacementObservationInput, changes?: TargetPlacementChanges): Promise<TargetPlacementObservation>;
77
- export type AuditTargetAnswer = Readonly<{
78
- kind: "placeable";
79
- ref: string;
80
- head: SnapshotId;
81
- }> | Readonly<{
82
- kind: "moved";
83
- ref: string;
84
- expected: SnapshotId;
85
- observed: SnapshotId | null;
86
- }> | Readonly<{
87
- kind: "refused";
88
- refusal: TargetPlacementRefusal;
89
- }> | Readonly<{
90
- kind: "failed";
91
- diagnostic: string;
92
- }>;
84
+ export declare const auditTargetAnswerSchema: z.ZodUnion<readonly [z.ZodObject<{
85
+ kind: z.ZodLiteral<"placeable">;
86
+ ref: z.ZodString;
87
+ head: z.ZodPipe<z.ZodString, z.ZodTransform<SnapshotId, string>>;
88
+ }, z.core.$strict>, z.ZodObject<{
89
+ kind: z.ZodLiteral<"moved">;
90
+ ref: z.ZodString;
91
+ expected: z.ZodPipe<z.ZodString, z.ZodTransform<SnapshotId, string>>;
92
+ observed: z.ZodNullable<z.ZodPipe<z.ZodString, z.ZodTransform<SnapshotId, string>>>;
93
+ }, z.core.$strict>, z.ZodObject<{
94
+ kind: z.ZodLiteral<"refused">;
95
+ refusal: z.ZodObject<{
96
+ kind: z.ZodLiteral<"checkout-not-followable">;
97
+ contractId: z.ZodPipe<z.ZodString, z.ZodTransform<ContractId, string>>;
98
+ target: z.ZodString;
99
+ path: z.ZodString;
100
+ reason: z.ZodLiteral<"untracked">;
101
+ paths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
102
+ }, z.core.$strict>;
103
+ }, z.core.$strict>, z.ZodObject<{
104
+ kind: z.ZodLiteral<"failed">;
105
+ diagnostic: z.ZodString;
106
+ }, z.core.$strict>]>;
107
+ type AuditTargetAnswer = z.infer<typeof auditTargetAnswerSchema>;
93
108
  /** Adjudicate the complete post-Verification audit target answer without placing. */
94
109
  export declare function adjudicateAuditTarget(repository: GitRepository, input: TargetPlacementObservationInput): Promise<AuditTargetAnswer>;
95
110
  export declare function prepareTargetPlacement(repository: GitRepository, state: ContractState, target: RefOperation, changes?: TargetPlacementChanges): Promise<TargetPlacementPreparation>;
96
- export declare function followTargetPlacement(repository: GitRepository, prepared: PreparedTargetPlacement): Promise<TargetPlacementPhysicalResult>;
111
+ export declare function followTargetPlacement(repository: GitRepository, prepared: PreparedTargetPlacement, onPhysical?: (report: TargetPlacementPhysicalResult) => void): Promise<TargetPlacementPhysicalResult>;
97
112
  /** Judge the target-checkout shape without mutating refs, worktrees, or indexes. */
98
113
  export declare function observeTargetCheckoutShape(repository: GitRepository, input: Readonly<{
99
114
  path: string;
100
115
  predecessor: SnapshotId;
101
116
  candidate: SnapshotId;
102
117
  }>): Promise<"complete" | "recoverable" | "retained">;
103
- export declare function recoverTargetPlacement(repository: GitRepository, state: ContractState): Promise<TargetPlacementPhysicalResult>;
118
+ export declare function recoverTargetPlacement(repository: GitRepository, state: ContractState, onPhysical?: (report: TargetPlacementPhysicalResult) => void): Promise<TargetPlacementPhysicalResult>;
104
119
  export {};