@astrosheep/keiyaku 2.9.12 → 4.0.0

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 (655) hide show
  1. package/README.md +10 -126
  2. package/build/integrations/marketplace/.agents/plugins/marketplace.json +12 -0
  3. package/build/integrations/marketplace/.claude-plugin/marketplace.json +5 -0
  4. package/build/integrations/marketplace/plugins/keiyaku/.claude-plugin/plugin.json +7 -0
  5. package/build/integrations/marketplace/plugins/keiyaku/.codex-plugin/plugin.json +18 -0
  6. package/build/integrations/marketplace/plugins/keiyaku/opencode.js +16 -0
  7. package/build/integrations/marketplace/plugins/keiyaku/package.json +8 -0
  8. package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku/SKILL.md +34 -0
  9. package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-akuma/SKILL.md +50 -0
  10. package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-task/SKILL.md +62 -0
  11. package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-workflow/SKILL.md +72 -0
  12. package/build/src/akuma/activity.d.ts +66 -0
  13. package/build/src/akuma/activity.js +139 -0
  14. package/build/src/akuma/akuma.d.ts +116 -0
  15. package/build/src/akuma/akuma.js +382 -0
  16. package/build/src/akuma/archetype.d.ts +31 -0
  17. package/build/src/akuma/archetype.js +188 -0
  18. package/build/src/akuma/body.d.ts +20 -0
  19. package/build/src/akuma/body.js +305 -0
  20. package/build/src/akuma/heart/facts.d.ts +150 -0
  21. package/build/src/akuma/heart/facts.js +9 -0
  22. package/build/src/akuma/heart/index.d.ts +78 -0
  23. package/build/src/akuma/heart/index.js +361 -0
  24. package/build/src/akuma/heart/rows.d.ts +189 -0
  25. package/build/src/akuma/heart/rows.js +319 -0
  26. package/build/src/akuma/heart/schema.d.ts +5 -0
  27. package/build/src/akuma/heart/schema.js +113 -0
  28. package/build/src/akuma/identity.d.ts +46 -0
  29. package/build/src/akuma/identity.js +89 -0
  30. package/build/src/akuma/index.d.ts +7 -0
  31. package/build/src/akuma/index.js +3 -0
  32. package/build/src/akuma/provider.d.ts +123 -0
  33. package/build/src/akuma/provider.js +235 -0
  34. package/build/src/akuma/providers/claude.d.ts +84 -0
  35. package/build/src/akuma/providers/claude.js +305 -0
  36. package/build/src/akuma/providers/codex-app-server/events.d.ts +110 -0
  37. package/build/src/akuma/providers/codex-app-server/events.js +337 -0
  38. package/build/src/akuma/providers/codex-app-server/index.d.ts +27 -0
  39. package/build/src/akuma/providers/codex-app-server/index.js +162 -0
  40. package/build/src/akuma/providers/index.d.ts +4 -0
  41. package/build/src/akuma/providers/index.js +71 -0
  42. package/build/src/akuma/publication.d.ts +10 -0
  43. package/build/src/akuma/publication.js +107 -0
  44. package/build/src/akuma/requests.d.ts +46 -0
  45. package/build/src/akuma/requests.js +388 -0
  46. package/build/src/alias/index.d.ts +17 -0
  47. package/build/src/alias/index.js +104 -0
  48. package/build/src/body/amend.d.ts +2 -0
  49. package/build/src/body/amend.js +289 -0
  50. package/build/src/body/arc.d.ts +2 -0
  51. package/build/src/body/arc.js +54 -0
  52. package/build/src/body/decode.d.ts +4 -0
  53. package/build/src/body/decode.js +146 -0
  54. package/build/src/body/keys.d.ts +4 -0
  55. package/build/src/body/keys.js +11 -0
  56. package/build/src/body/region.d.ts +6 -0
  57. package/build/src/body/region.js +139 -0
  58. package/build/src/body/render.d.ts +4 -0
  59. package/build/src/body/render.js +73 -0
  60. package/build/src/body/shape.d.ts +29 -0
  61. package/build/src/body/shape.js +16 -0
  62. package/build/src/body/types.d.ts +28 -0
  63. package/build/src/body/verification.d.ts +7 -0
  64. package/build/src/body/verification.js +25 -0
  65. package/build/src/cli/accepted.d.ts +16 -0
  66. package/build/src/cli/accepted.js +65 -0
  67. package/build/src/cli/actor.d.ts +8 -0
  68. package/build/src/cli/actor.js +11 -0
  69. package/build/src/cli/commands/akuma-invoke.d.ts +53 -0
  70. package/build/src/cli/commands/akuma-invoke.js +68 -0
  71. package/build/src/cli/commands/akuma.d.ts +42 -0
  72. package/build/src/cli/commands/akuma.js +224 -0
  73. package/build/src/cli/commands/amend.d.ts +13 -0
  74. package/build/src/cli/commands/amend.js +13 -0
  75. package/build/src/cli/commands/bind.d.ts +12 -0
  76. package/build/src/cli/commands/bind.js +17 -0
  77. package/build/src/cli/commands/install.d.ts +25 -0
  78. package/build/src/cli/commands/install.js +103 -0
  79. package/build/src/cli/commands/task-invoke.d.ts +9 -0
  80. package/build/src/cli/commands/task-invoke.js +92 -0
  81. package/build/src/cli/commands/task.d.ts +16 -0
  82. package/build/src/cli/commands/task.js +144 -0
  83. package/build/src/cli/index.d.ts +2 -0
  84. package/build/src/cli/index.js +3 -0
  85. package/build/src/cli/invoke.d.ts +17 -0
  86. package/build/src/cli/invoke.js +265 -0
  87. package/build/src/cli/main.d.ts +1 -0
  88. package/build/src/cli/main.js +79 -0
  89. package/build/src/cli/parse.d.ts +210 -0
  90. package/build/src/cli/parse.js +375 -0
  91. package/build/src/cli/render/akuma-tool.d.ts +11 -0
  92. package/build/src/cli/render/akuma-tool.js +68 -0
  93. package/build/src/cli/render/akuma.d.ts +6 -0
  94. package/build/src/cli/render/akuma.js +254 -0
  95. package/build/src/cli/render/board.d.ts +2 -0
  96. package/build/src/cli/render/board.js +4 -0
  97. package/build/src/cli/render/contract.d.ts +4 -0
  98. package/build/src/cli/render/contract.js +69 -0
  99. package/build/src/cli/render/kanshi.d.ts +3 -0
  100. package/build/src/cli/render/kanshi.js +204 -0
  101. package/build/src/cli/render/refusal.d.ts +2 -0
  102. package/build/src/cli/render/refusal.js +4 -0
  103. package/build/src/cli/render/settings.d.ts +3 -0
  104. package/build/src/cli/render/settings.js +30 -0
  105. package/build/src/cli/render/task.d.ts +6 -0
  106. package/build/src/cli/render/task.js +105 -0
  107. package/build/src/cli/render/terminal.d.ts +10 -0
  108. package/build/src/cli/render/terminal.js +76 -0
  109. package/build/src/cli/render/text.d.ts +3 -0
  110. package/build/src/cli/render/text.js +15 -0
  111. package/build/src/cli/result.d.ts +55 -0
  112. package/build/src/cli/selectors.d.ts +9 -0
  113. package/build/src/cli/selectors.js +66 -0
  114. package/build/src/cli/usage.d.ts +6 -0
  115. package/build/src/cli/usage.js +19 -0
  116. package/build/src/context-root.d.ts +4 -0
  117. package/build/src/context-root.js +15 -0
  118. package/build/src/coordination/durable-file.d.ts +1 -0
  119. package/build/src/coordination/durable-file.js +36 -0
  120. package/build/src/coordination/sqlite-transaction-lock.d.ts +14 -0
  121. package/build/src/coordination/sqlite-transaction-lock.js +119 -0
  122. package/build/src/core/decide.d.ts +45 -0
  123. package/build/src/core/facts/codec.d.ts +3 -0
  124. package/build/src/core/facts/codec.js +258 -0
  125. package/build/src/core/facts/eligibility.d.ts +16 -0
  126. package/build/src/core/facts/eligibility.js +75 -0
  127. package/build/src/core/facts/errors.d.ts +3 -0
  128. package/build/src/core/facts/errors.js +6 -0
  129. package/build/src/core/facts/fold.d.ts +2 -0
  130. package/build/src/core/facts/fold.js +97 -0
  131. package/build/src/core/facts/gate.d.ts +24 -0
  132. package/build/src/core/facts/gate.js +52 -0
  133. package/build/src/core/facts/observation.d.ts +12 -0
  134. package/build/src/core/facts/observation.js +23 -0
  135. package/build/src/core/facts/offer.d.ts +21 -0
  136. package/build/src/core/facts/types.d.ts +130 -0
  137. package/build/src/core/facts/types.js +66 -0
  138. package/build/src/core/subject.d.ts +21 -0
  139. package/build/src/core/subject.js +89 -0
  140. package/build/src/core/verbs/abandon.d.ts +13 -0
  141. package/build/src/core/verbs/abandon.js +17 -0
  142. package/build/src/core/verbs/amend.d.ts +14 -0
  143. package/build/src/core/verbs/amend.js +56 -0
  144. package/build/src/core/verbs/arc.d.ts +13 -0
  145. package/build/src/core/verbs/arc.js +25 -0
  146. package/build/src/core/verbs/attestation.d.ts +13 -0
  147. package/build/src/core/verbs/attestation.js +21 -0
  148. package/build/src/core/verbs/bind.d.ts +13 -0
  149. package/build/src/core/verbs/bind.js +40 -0
  150. package/build/src/core/verbs/deliver.d.ts +13 -0
  151. package/build/src/core/verbs/deliver.js +26 -0
  152. package/build/src/core/verbs/placement.d.ts +13 -0
  153. package/build/src/core/verbs/placement.js +42 -0
  154. package/build/src/dispatch/index.d.ts +31 -0
  155. package/build/src/dispatch/index.js +159 -0
  156. package/build/src/git/admission.d.ts +18 -0
  157. package/build/src/git/admission.js +116 -0
  158. package/build/src/git/delivery.d.ts +20 -0
  159. package/build/src/git/delivery.js +109 -0
  160. package/build/src/git/hooks.d.ts +34 -0
  161. package/build/src/git/hooks.js +258 -0
  162. package/build/src/git/identity.d.ts +13 -0
  163. package/build/src/git/identity.js +28 -0
  164. package/build/src/git/observe.d.ts +38 -0
  165. package/build/src/git/observe.js +227 -0
  166. package/build/src/git/reconcile.d.ts +49 -0
  167. package/build/src/git/reconcile.js +223 -0
  168. package/build/src/git/repository.d.ts +80 -0
  169. package/build/src/git/repository.js +456 -0
  170. package/build/src/git/tree.d.ts +34 -0
  171. package/build/src/git/tree.js +112 -0
  172. package/build/src/git/verification.d.ts +14 -0
  173. package/build/src/git/verification.js +56 -0
  174. package/build/src/identity/coordinates.d.ts +9 -0
  175. package/build/src/identity/coordinates.js +20 -0
  176. package/build/src/identity/normalize.d.ts +8 -0
  177. package/build/src/identity/normalize.js +45 -0
  178. package/build/src/identity/selector.d.ts +6 -0
  179. package/build/src/identity/selector.js +7 -0
  180. package/build/src/index.d.ts +4 -0
  181. package/build/src/index.js +2 -0
  182. package/build/src/kanshi/index.d.ts +5 -0
  183. package/build/src/kanshi/index.js +2 -0
  184. package/build/src/kanshi/read.d.ts +5 -0
  185. package/build/src/kanshi/read.js +100 -0
  186. package/build/src/kanshi/report.d.ts +35 -0
  187. package/build/src/kanshi/select.d.ts +8 -0
  188. package/build/src/kanshi/select.js +21 -0
  189. package/build/src/library/akuma-creation.d.ts +79 -0
  190. package/build/src/library/akuma-creation.js +151 -0
  191. package/build/src/library/configuration.d.ts +26 -0
  192. package/build/src/library/configuration.js +100 -0
  193. package/build/src/library/contract.d.ts +145 -0
  194. package/build/src/library/contract.js +325 -0
  195. package/build/src/library/input.d.ts +13 -0
  196. package/build/src/library/input.js +82 -0
  197. package/build/src/library/keiyaku.d.ts +28 -0
  198. package/build/src/library/keiyaku.js +16 -0
  199. package/build/src/library/region.d.ts +17 -0
  200. package/build/src/library/region.js +30 -0
  201. package/build/src/library/repo.d.ts +33 -0
  202. package/build/src/library/repo.js +61 -0
  203. package/build/src/markdown/diff.d.ts +1 -0
  204. package/build/src/markdown/diff.js +4 -0
  205. package/build/src/markdown/lex.d.ts +3 -0
  206. package/build/src/markdown/lex.js +221 -0
  207. package/build/src/markdown/parse.d.ts +2 -0
  208. package/build/src/markdown/parse.js +221 -0
  209. package/build/src/markdown/query.d.ts +21 -0
  210. package/build/src/markdown/query.js +51 -0
  211. package/build/src/markdown/types.d.ts +118 -0
  212. package/build/src/markdown/types.js +6 -0
  213. package/build/src/protocol/attempt.d.ts +36 -0
  214. package/build/src/protocol/attempt.js +119 -0
  215. package/build/src/protocol/bind.d.ts +25 -0
  216. package/build/src/protocol/bind.js +62 -0
  217. package/build/src/protocol/intent.d.ts +52 -0
  218. package/build/src/protocol/intent.js +129 -0
  219. package/build/src/protocol/operations.d.ts +140 -0
  220. package/build/src/protocol/operations.js +373 -0
  221. package/build/src/protocol/outcome.d.ts +18 -0
  222. package/build/src/protocol/outcome.js +15 -0
  223. package/build/src/protocol/read/audit.d.ts +25 -0
  224. package/build/src/protocol/read/audit.js +39 -0
  225. package/build/src/protocol/read/documents.d.ts +8 -0
  226. package/build/src/protocol/read/documents.js +16 -0
  227. package/build/src/protocol/read/status.d.ts +38 -0
  228. package/build/src/protocol/read/status.js +47 -0
  229. package/build/src/protocol/run.d.ts +39 -0
  230. package/build/src/protocol/run.js +36 -0
  231. package/build/src/runtime/proc/line-rpc.d.ts +37 -0
  232. package/build/src/runtime/proc/line-rpc.js +124 -0
  233. package/build/src/runtime/proc/run.d.ts +54 -0
  234. package/build/src/runtime/proc/run.js +200 -0
  235. package/build/src/settings.d.ts +45 -0
  236. package/build/src/settings.js +99 -0
  237. package/build/src/settlement/holder.d.ts +15 -0
  238. package/build/src/settlement/holder.js +113 -0
  239. package/build/src/settlement/settle.d.ts +36 -0
  240. package/build/src/settlement/settle.js +91 -0
  241. package/build/src/task/board.d.ts +65 -0
  242. package/build/src/task/board.js +155 -0
  243. package/build/src/task/compose.d.ts +25 -0
  244. package/build/src/task/compose.js +232 -0
  245. package/build/src/task/context.d.ts +4 -0
  246. package/build/src/task/context.js +56 -0
  247. package/build/src/task/document.d.ts +24 -0
  248. package/build/src/task/document.js +118 -0
  249. package/build/src/task/identity.d.ts +12 -0
  250. package/build/src/task/identity.js +47 -0
  251. package/build/src/task/index.d.ts +90 -0
  252. package/build/src/task/index.js +179 -0
  253. package/build/src/task/operations.d.ts +115 -0
  254. package/build/src/task/operations.js +194 -0
  255. package/build/src/task/store.d.ts +22 -0
  256. package/build/src/task/store.js +114 -0
  257. package/build/src/verification/declaration.d.ts +22 -0
  258. package/build/src/verification/declaration.js +14 -0
  259. package/build/src/verification/producer.d.ts +23 -0
  260. package/build/src/verification/producer.js +54 -0
  261. package/package.json +62 -44
  262. package/build/.tsbuildinfo +0 -1
  263. package/build/agents/call-terms.js +0 -31
  264. package/build/agents/harness/activity-values.js +0 -70
  265. package/build/agents/harness/control-types.js +0 -18
  266. package/build/agents/harness/event-channel.js +0 -213
  267. package/build/agents/harness/event-persistence.js +0 -220
  268. package/build/agents/harness/events.js +0 -48
  269. package/build/agents/harness/execution-handle.js +0 -172
  270. package/build/agents/harness/index.js +0 -11
  271. package/build/agents/harness/outcome-error.js +0 -81
  272. package/build/agents/harness/outcome.js +0 -220
  273. package/build/agents/harness/projection.js +0 -369
  274. package/build/agents/harness/provider-adapter.js +0 -58
  275. package/build/agents/harness/router.js +0 -30
  276. package/build/agents/harness/runtime.js +0 -85
  277. package/build/agents/harness/session.js +0 -15
  278. package/build/agents/launch-snapshot/model.js +0 -127
  279. package/build/agents/launch-snapshot/parse-helpers.js +0 -114
  280. package/build/agents/launch-snapshot/resolve.js +0 -46
  281. package/build/agents/opencode-sdk.js +0 -159
  282. package/build/agents/providers/claude-agent-sdk/adapter.js +0 -396
  283. package/build/agents/providers/claude-agent-sdk/events.js +0 -218
  284. package/build/agents/providers/claude-agent-sdk/registration.js +0 -225
  285. package/build/agents/providers/claude-agent-sdk/session-schema.js +0 -2
  286. package/build/agents/providers/claude-agent-sdk/session.js +0 -172
  287. package/build/agents/providers/codex-app-server/adapter.js +0 -387
  288. package/build/agents/providers/codex-app-server/events.js +0 -492
  289. package/build/agents/providers/codex-app-server/identity.js +0 -1
  290. package/build/agents/providers/codex-app-server/policy.js +0 -29
  291. package/build/agents/providers/codex-app-server/registration.js +0 -259
  292. package/build/agents/providers/codex-app-server/session-schema.js +0 -6
  293. package/build/agents/providers/codex-app-server/session.js +0 -273
  294. package/build/agents/providers/event-type-tail.js +0 -16
  295. package/build/agents/providers/opencode-sdk/adapter.js +0 -402
  296. package/build/agents/providers/opencode-sdk/events.js +0 -380
  297. package/build/agents/providers/opencode-sdk/registration.js +0 -146
  298. package/build/agents/providers/opencode-sdk/session-schema.js +0 -2
  299. package/build/agents/providers/opencode-sdk/session.js +0 -187
  300. package/build/agents/providers/pi/adapter.js +0 -285
  301. package/build/agents/providers/pi/checkpoint.js +0 -49
  302. package/build/agents/providers/pi/events.js +0 -285
  303. package/build/agents/providers/pi/registration.js +0 -160
  304. package/build/agents/providers/pi/session-schema.js +0 -6
  305. package/build/agents/providers/registration.js +0 -7
  306. package/build/agents/providers/registry.js +0 -76
  307. package/build/agents/selector.js +0 -120
  308. package/build/agents/session.js +0 -29
  309. package/build/agents/string-tail-buffer.js +0 -44
  310. package/build/agents/types.js +0 -30
  311. package/build/artifact-directories.js +0 -22
  312. package/build/cli/commands/akuma/akuma/handler.js +0 -4
  313. package/build/cli/commands/akuma/akuma/meta.js +0 -16
  314. package/build/cli/commands/akuma/catalog.js +0 -8
  315. package/build/cli/commands/akuma/list/handler.js +0 -15
  316. package/build/cli/commands/akuma/list/meta-ls.js +0 -9
  317. package/build/cli/commands/akuma/show/handler.js +0 -27
  318. package/build/cli/commands/akuma/show/meta.js +0 -8
  319. package/build/cli/commands/akuma.js +0 -181
  320. package/build/cli/commands/contract/amend/handler.js +0 -17
  321. package/build/cli/commands/contract/amend/meta.js +0 -12
  322. package/build/cli/commands/contract/arc/handler.js +0 -16
  323. package/build/cli/commands/contract/arc/meta.js +0 -26
  324. package/build/cli/commands/contract/audit/handler.js +0 -16
  325. package/build/cli/commands/contract/audit/meta.js +0 -16
  326. package/build/cli/commands/contract/bind/handler.js +0 -39
  327. package/build/cli/commands/contract/bind/meta.js +0 -96
  328. package/build/cli/commands/contract/catalog.js +0 -18
  329. package/build/cli/commands/contract/forfeit/handler.js +0 -17
  330. package/build/cli/commands/contract/forfeit/meta.js +0 -12
  331. package/build/cli/commands/contract/log/handler.js +0 -12
  332. package/build/cli/commands/contract/log/meta.js +0 -12
  333. package/build/cli/commands/contract/petition/handler.js +0 -63
  334. package/build/cli/commands/contract/petition/meta.js +0 -23
  335. package/build/cli/commands/contract/renew/handler.js +0 -24
  336. package/build/cli/commands/contract/renew/meta.js +0 -18
  337. package/build/cli/commands/metadata.js +0 -65
  338. package/build/cli/commands/projection/call/handler.js +0 -43
  339. package/build/cli/commands/projection/call/meta.js +0 -12
  340. package/build/cli/commands/projection/catalog.js +0 -16
  341. package/build/cli/commands/projection/history/handler.js +0 -21
  342. package/build/cli/commands/projection/history/meta.js +0 -9
  343. package/build/cli/commands/projection/kill/handler.js +0 -20
  344. package/build/cli/commands/projection/kill/meta.js +0 -11
  345. package/build/cli/commands/projection/revive/handler.js +0 -56
  346. package/build/cli/commands/projection/revive/meta.js +0 -12
  347. package/build/cli/commands/projection/shared.js +0 -27
  348. package/build/cli/commands/projection/status/handler.js +0 -26
  349. package/build/cli/commands/projection/status/meta.js +0 -9
  350. package/build/cli/commands/projection/tell/handler.js +0 -28
  351. package/build/cli/commands/projection/tell/meta.js +0 -12
  352. package/build/cli/commands/projection/wait/handler.js +0 -55
  353. package/build/cli/commands/projection/wait/meta.js +0 -16
  354. package/build/cli/commands/registry.js +0 -48
  355. package/build/cli/commands/shared.js +0 -74
  356. package/build/cli/commands/skills/catalog.js +0 -6
  357. package/build/cli/commands/skills/install/handler.js +0 -7
  358. package/build/cli/commands/skills/install/meta.js +0 -9
  359. package/build/cli/commands/skills/skills/handler.js +0 -4
  360. package/build/cli/commands/skills/skills/meta.js +0 -10
  361. package/build/cli/commands/system/catalog.js +0 -8
  362. package/build/cli/commands/system/completion/handler.js +0 -10
  363. package/build/cli/commands/system/completion/meta.js +0 -9
  364. package/build/cli/commands/system/dump-env/handler.js +0 -3
  365. package/build/cli/commands/system/dump-env/meta.js +0 -10
  366. package/build/cli/commands/system/guide/handler.js +0 -4
  367. package/build/cli/commands/system/guide/meta.js +0 -9
  368. package/build/cli/commands/task/add/handler.js +0 -22
  369. package/build/cli/commands/task/add/meta.js +0 -19
  370. package/build/cli/commands/task/catalog.js +0 -30
  371. package/build/cli/commands/task/compose/handler.js +0 -18
  372. package/build/cli/commands/task/compose/meta.js +0 -10
  373. package/build/cli/commands/task/doctor/handler.js +0 -4
  374. package/build/cli/commands/task/doctor/meta.js +0 -8
  375. package/build/cli/commands/task/done/handler.js +0 -10
  376. package/build/cli/commands/task/done/meta.js +0 -8
  377. package/build/cli/commands/task/drop/handler.js +0 -3
  378. package/build/cli/commands/task/drop/meta.js +0 -8
  379. package/build/cli/commands/task/hold/handler.js +0 -3
  380. package/build/cli/commands/task/hold/meta.js +0 -8
  381. package/build/cli/commands/task/log/handler.js +0 -12
  382. package/build/cli/commands/task/log/meta.js +0 -8
  383. package/build/cli/commands/task/ls/handler.js +0 -17
  384. package/build/cli/commands/task/ls/meta.js +0 -8
  385. package/build/cli/commands/task/resume/handler.js +0 -3
  386. package/build/cli/commands/task/resume/meta.js +0 -8
  387. package/build/cli/commands/task/shared.js +0 -167
  388. package/build/cli/commands/task/show/handler.js +0 -13
  389. package/build/cli/commands/task/show/meta.js +0 -8
  390. package/build/cli/commands/task/start/handler.js +0 -3
  391. package/build/cli/commands/task/start/meta.js +0 -8
  392. package/build/cli/commands/task/stop/handler.js +0 -10
  393. package/build/cli/commands/task/stop/meta.js +0 -8
  394. package/build/cli/commands/task/task/handler.js +0 -5
  395. package/build/cli/commands/task/task/meta.js +0 -11
  396. package/build/cli/commands/task/update/handler.js +0 -21
  397. package/build/cli/commands/task/update/meta.js +0 -11
  398. package/build/cli/completion.js +0 -88
  399. package/build/cli/draft-artifact.js +0 -50
  400. package/build/cli/flags.js +0 -289
  401. package/build/cli/help.js +0 -100
  402. package/build/cli/index.js +0 -332
  403. package/build/cli/missing-subcommand.js +0 -7
  404. package/build/cli/output-stream-error-policy.js +0 -31
  405. package/build/cli/parse-flags.js +0 -262
  406. package/build/cli/parse-metadata.js +0 -129
  407. package/build/cli/parse-selectors.js +0 -65
  408. package/build/cli/parse.js +0 -237
  409. package/build/cli/projection-address.js +0 -105
  410. package/build/cli/render/address.js +0 -101
  411. package/build/cli/render/amendment-warning.js +0 -8
  412. package/build/cli/render/arc.js +0 -79
  413. package/build/cli/render/audit.js +0 -440
  414. package/build/cli/render/call.js +0 -70
  415. package/build/cli/render/compact-text.js +0 -3
  416. package/build/cli/render/errors.js +0 -101
  417. package/build/cli/render/format.js +0 -226
  418. package/build/cli/render/kanshi.js +0 -263
  419. package/build/cli/render/kill.js +0 -9
  420. package/build/cli/render/lifecycle.js +0 -56
  421. package/build/cli/render/line-width.js +0 -103
  422. package/build/cli/render/misc.js +0 -84
  423. package/build/cli/render/path-prefix-compaction.js +0 -131
  424. package/build/cli/render/petition.js +0 -70
  425. package/build/cli/render/projection-activity.js +0 -332
  426. package/build/cli/render/projection-history.js +0 -64
  427. package/build/cli/render/response-style.js +0 -27
  428. package/build/cli/render/shared.js +0 -232
  429. package/build/cli/render/skills.js +0 -10
  430. package/build/cli/render/status.js +0 -213
  431. package/build/cli/render/success-response.js +0 -80
  432. package/build/cli/render/task.js +0 -174
  433. package/build/cli/render/tell.js +0 -5
  434. package/build/cli/render/terminal-failure.js +0 -65
  435. package/build/cli/render/tool-ledger-rollup.js +0 -74
  436. package/build/cli/render/tool-presentation.js +0 -97
  437. package/build/cli/render/types.js +0 -2
  438. package/build/cli/render/wait.js +0 -275
  439. package/build/cli/skills-install.js +0 -348
  440. package/build/cli/subagent-guard.js +0 -25
  441. package/build/cli/types.js +0 -1
  442. package/build/config/akuma-loader.js +0 -220
  443. package/build/config/env-keys.js +0 -57
  444. package/build/config/env.js +0 -304
  445. package/build/config/provider-policy-ownership.js +0 -10
  446. package/build/config/settings/disease.js +0 -33
  447. package/build/config/settings/knobs.js +0 -8
  448. package/build/config/settings/loader.js +0 -275
  449. package/build/config/settings/provider-instance-fields.js +0 -51
  450. package/build/config/settings/schema.js +0 -108
  451. package/build/core/address-carrier.js +0 -89
  452. package/build/core/addressing.js +0 -407
  453. package/build/core/amend.js +0 -236
  454. package/build/core/amendment-criteria.js +0 -17
  455. package/build/core/amendment-warning.js +0 -10
  456. package/build/core/arc.js +0 -293
  457. package/build/core/atomic-publish.js +0 -64
  458. package/build/core/audit/candidate.js +0 -149
  459. package/build/core/audit/coordinates.js +0 -235
  460. package/build/core/audit/evidence.js +0 -154
  461. package/build/core/audit/facade.js +0 -65
  462. package/build/core/audit/readiness.js +0 -4
  463. package/build/core/audit/report.js +0 -38
  464. package/build/core/audit.js +0 -1
  465. package/build/core/bind-reconciliation.js +0 -390
  466. package/build/core/bind-workspace.js +0 -115
  467. package/build/core/bind.js +0 -402
  468. package/build/core/call/call.js +0 -236
  469. package/build/core/call/context.js +0 -197
  470. package/build/core/call/execution.js +0 -240
  471. package/build/core/call/prompt.js +0 -58
  472. package/build/core/call/reference.js +0 -24
  473. package/build/core/call-persist.js +0 -76
  474. package/build/core/command-markdown.js +0 -45
  475. package/build/core/context.js +0 -104
  476. package/build/core/contract-carrier-runtime.js +0 -408
  477. package/build/core/contract-carrier.js +0 -270
  478. package/build/core/contract-view.js +0 -282
  479. package/build/core/contract.js +0 -18
  480. package/build/core/derived-replay.js +0 -207
  481. package/build/core/draft.js +0 -396
  482. package/build/core/execution-coordinate.js +0 -46
  483. package/build/core/execution-pact.js +0 -126
  484. package/build/core/forfeit.js +0 -132
  485. package/build/core/hints.js +0 -34
  486. package/build/core/identifier-slug.js +0 -116
  487. package/build/core/ids.js +0 -90
  488. package/build/core/lifecycle-history.js +0 -35
  489. package/build/core/lifecycle-recovery.js +0 -117
  490. package/build/core/lifecycle-runner.js +0 -377
  491. package/build/core/log.js +0 -50
  492. package/build/core/markdown/lex.js +0 -274
  493. package/build/core/markdown/parser.js +0 -260
  494. package/build/core/markdown/render.js +0 -68
  495. package/build/core/markdown/sections.js +0 -80
  496. package/build/core/markdown/titles.js +0 -9
  497. package/build/core/markdown/types.js +0 -6
  498. package/build/core/outcome-base.js +0 -185
  499. package/build/core/places.js +0 -175
  500. package/build/core/process-group.js +0 -139
  501. package/build/core/projection/generation/database.js +0 -411
  502. package/build/core/projection/generation/identity.js +0 -84
  503. package/build/core/projection/generation/model.js +0 -256
  504. package/build/core/projection/generation/projection-generation-continuation.js +0 -84
  505. package/build/core/projection/generation/projection-generation-execution.js +0 -217
  506. package/build/core/projection/generation/projection-generation-identity.js +0 -17
  507. package/build/core/projection/generation/projection-generation-launcher.js +0 -220
  508. package/build/core/projection/generation/projection-generation-process.js +0 -46
  509. package/build/core/projection/generation/projection-generation-runner.js +0 -443
  510. package/build/core/projection/generation/projection-generation-runtime.js +0 -97
  511. package/build/core/projection/generation/store.js +0 -98
  512. package/build/core/projection/generation/transitions.js +0 -463
  513. package/build/core/projection/heart.js +0 -9
  514. package/build/core/projection/index.js +0 -28
  515. package/build/core/projection/projection-activity.js +0 -273
  516. package/build/core/projection/projection-alias.js +0 -131
  517. package/build/core/projection/projection-coordinate.js +0 -61
  518. package/build/core/projection/projection-core.js +0 -123
  519. package/build/core/projection/projection-execution-observer.js +0 -270
  520. package/build/core/projection/projection-history.js +0 -474
  521. package/build/core/projection/projection-identity.js +0 -11
  522. package/build/core/projection/projection-kill.js +0 -103
  523. package/build/core/projection/projection-life-observer.js +0 -101
  524. package/build/core/projection/projection-life-protocol.js +0 -115
  525. package/build/core/projection/projection-mint.js +0 -172
  526. package/build/core/projection/projection-runner-lock.js +0 -211
  527. package/build/core/projection/projection-status-observation.js +0 -365
  528. package/build/core/projection/projection-status.js +0 -295
  529. package/build/core/projection/projection-terminal-failure.js +0 -111
  530. package/build/core/projection/projection-wait.js +0 -318
  531. package/build/core/projection/projection-wake.js +0 -360
  532. package/build/core/projection/tell/database.js +0 -127
  533. package/build/core/projection/tell/launch-store.js +0 -244
  534. package/build/core/projection/tell/model.js +0 -98
  535. package/build/core/projection/tell/store.js +0 -245
  536. package/build/core/provider-loader-ports.js +0 -4
  537. package/build/core/registry.js +0 -100
  538. package/build/core/renew-build.js +0 -424
  539. package/build/core/renew-plan.js +0 -239
  540. package/build/core/renew-rewrite.js +0 -77
  541. package/build/core/renew.js +0 -341
  542. package/build/core/repository-ledger/accepted-fold-read.js +0 -19
  543. package/build/core/repository-ledger/accepted-tail.js +0 -116
  544. package/build/core/repository-ledger/admission.js +0 -38
  545. package/build/core/repository-ledger/authoritative-transaction.js +0 -1
  546. package/build/core/repository-ledger/claim-evidence.js +0 -147
  547. package/build/core/repository-ledger/codec.js +0 -297
  548. package/build/core/repository-ledger/current-state-store.js +0 -971
  549. package/build/core/repository-ledger/fold-repository.js +0 -375
  550. package/build/core/repository-ledger/fold.js +0 -248
  551. package/build/core/repository-ledger/git-object-store.js +0 -243
  552. package/build/core/repository-ledger/history-read.js +0 -15
  553. package/build/core/repository-ledger/incremental-read.js +0 -153
  554. package/build/core/repository-ledger/index.js +0 -15
  555. package/build/core/repository-ledger/inventory-plan.js +0 -75
  556. package/build/core/repository-ledger/inventory.js +0 -310
  557. package/build/core/repository-ledger/publication-admission.js +0 -125
  558. package/build/core/repository-ledger/publication.js +0 -353
  559. package/build/core/repository-ledger/read-model.js +0 -469
  560. package/build/core/repository-ledger/transaction-membership.js +0 -78
  561. package/build/core/repository-ledger/traversal.js +0 -404
  562. package/build/core/repository-ledger/write-transaction.js +0 -341
  563. package/build/core/response-artifact-catalog-sqlite.js +0 -112
  564. package/build/core/response-artifact-catalog.js +0 -7
  565. package/build/core/response-artifact-id.js +0 -5
  566. package/build/core/scope.js +0 -416
  567. package/build/core/seal.js +0 -352
  568. package/build/core/settlement/claim-delivery.js +0 -69
  569. package/build/core/settlement/claim.js +0 -256
  570. package/build/core/settlement/index.js +0 -19
  571. package/build/core/settlement/petition-claim-gates.js +0 -246
  572. package/build/core/settlement/petition-forfeit.js +0 -46
  573. package/build/core/settlement/petition-head-guard.js +0 -13
  574. package/build/core/settlement/petition-io.js +0 -1
  575. package/build/core/settlement/petition-preview.js +0 -109
  576. package/build/core/settlement/petition-window.js +0 -50
  577. package/build/core/settlement/petition.js +0 -281
  578. package/build/core/settlement/queue-read-model.js +0 -120
  579. package/build/core/settlement/queue-seat-allocation.js +0 -65
  580. package/build/core/settlement/queue.js +0 -6
  581. package/build/core/settlement/settlement.js +0 -380
  582. package/build/core/settlement/verdict.js +0 -126
  583. package/build/core/settlement/verification-coordination.js +0 -305
  584. package/build/core/settlement/verification-supervisor.js +0 -275
  585. package/build/core/settlement/verification.js +0 -426
  586. package/build/core/sqlite-process-lifetime-lock.js +0 -194
  587. package/build/core/status/board.js +0 -346
  588. package/build/core/status/drift.js +0 -115
  589. package/build/core/status/lifecycle.js +0 -11
  590. package/build/core/stored-agent-event.js +0 -129
  591. package/build/core/structured-query.js +0 -23
  592. package/build/core/target-ref.js +0 -10
  593. package/build/core/task/board.js +0 -247
  594. package/build/core/task/commands.js +0 -376
  595. package/build/core/task/compose.js +0 -327
  596. package/build/core/task/coordinate.js +0 -56
  597. package/build/core/task/document.js +0 -210
  598. package/build/core/task/index.js +0 -16
  599. package/build/core/task/model.js +0 -8
  600. package/build/core/task/query.js +0 -204
  601. package/build/core/task/settlement-git.js +0 -426
  602. package/build/core/task/settlement-policy.js +0 -124
  603. package/build/core/task/source-board.js +0 -103
  604. package/build/core/task/source-model.js +0 -1
  605. package/build/core/task/task-bind-preparation.js +0 -193
  606. package/build/core/task/task-contract.js +0 -371
  607. package/build/core/task/task-doctor.js +0 -14
  608. package/build/core/task/task-file-transaction.js +0 -171
  609. package/build/core/task/task-git-actor.js +0 -33
  610. package/build/core/task/task-git-runtime.js +0 -97
  611. package/build/core/task/task-git-store.js +0 -400
  612. package/build/core/task/task-repository.js +0 -1
  613. package/build/core/task/task-store-repository.js +0 -96
  614. package/build/core/task/task-store.js +0 -1
  615. package/build/core/task/task-worktree.js +0 -25
  616. package/build/core/task/task.js +0 -7
  617. package/build/core/task/tree.js +0 -37
  618. package/build/core/task/validation.js +0 -48
  619. package/build/core/transcripts.js +0 -485
  620. package/build/core/validation.js +0 -17
  621. package/build/core/worktree-bootstrap.js +0 -195
  622. package/build/core/worktree-path.js +0 -375
  623. package/build/errno.js +0 -3
  624. package/build/flow-error.js +0 -183
  625. package/build/fs/durability.js +0 -27
  626. package/build/fs/path-coordinate.js +0 -16
  627. package/build/generated/version.js +0 -3
  628. package/build/git/branches.js +0 -113
  629. package/build/git/commits.js +0 -80
  630. package/build/git/core.js +0 -238
  631. package/build/git/diff/parsers.js +0 -181
  632. package/build/git/diff/pathspec.js +0 -3
  633. package/build/git/diff/preview.js +0 -38
  634. package/build/git/diff/read.js +0 -105
  635. package/build/git/diff/structured.js +0 -127
  636. package/build/git/diff/types.js +0 -1
  637. package/build/git/path-coordinate.js +0 -17
  638. package/build/git/refs.js +0 -225
  639. package/build/git/staging.js +0 -155
  640. package/build/git/streaming-batch.js +0 -361
  641. package/build/git/worktree.js +0 -162
  642. package/build/index.js +0 -60
  643. package/build/keiyaku-constants.js +0 -2
  644. package/build/keiyaku.js +0 -30
  645. package/build/telemetry/debug-log.js +0 -40
  646. package/build/telemetry/logger.js +0 -48
  647. package/skills/keiyaku/SKILL.md +0 -46
  648. package/skills/keiyaku-akuma/SKILL.md +0 -96
  649. package/skills/keiyaku-task/SKILL.md +0 -84
  650. package/skills/keiyaku-workflow/SKILL.md +0 -151
  651. /package/build/{agents/launch-snapshot → src/body}/types.js +0 -0
  652. /package/build/{agents/providers/claude-agent-sdk/terms.js → src/cli/result.js} +0 -0
  653. /package/build/{agents/providers/codex-app-server/terms.js → src/core/decide.js} +0 -0
  654. /package/build/{agents/providers/opencode-sdk/terms.js → src/core/facts/offer.js} +0 -0
  655. /package/build/{agents/providers/pi/terms.js → src/kanshi/report.js} +0 -0
@@ -1,371 +0,0 @@
1
- import { FlowError } from "../../flow-error.js";
2
- import { assertGitObservation, requireGitRepository } from "../../git/branches.js";
3
- import { assertTaskBoardGeneration, withLockHeldTaskBoard, } from "./task-git-store.js";
4
- import { prepareTaskDocumentReplacements, taskBoardFromSourceBoard, taskRepositoryFromLockedBoard } from "./task-store-repository.js";
5
- import { buildTaskSourceBoard } from "./source-board.js";
6
- import { formatTaskCoordinate } from "./coordinate.js";
7
- import { createTaskBoardCommit, publishTaskMutationCommit, inspectCurrentBranch, publishForwardTaskBoardCommit, reconcileTaskPathsetIndex, refHead, taskContractAtCommit, taskSourcesAtCommit, taskWritesFromSources, trackedTaskPaths, updateBranch, } from "./settlement-git.js";
8
- import { contractPointerDocument, doneTaskReplacements, reopenedTaskDocument, requireHealthySettlementBoard, requireSettledTask, selectReadyTasksForBind, tasksForContract, } from "./settlement-policy.js";
9
- import { stableRepoRoot } from "../worktree-path.js";
10
- /**
11
- * Read the same healthy task board and run the same ready-task selector as bind
12
- * under the task admission lock, without replacing sources or publishing.
13
- */
14
- export async function previewTaskBoardForBind(input) {
15
- await requireGitRepository(input.cwd, "task bind");
16
- return await withLockHeldTaskBoard(input.cwd, async (transaction) => {
17
- if (transaction.location.mode !== "git") {
18
- if (transaction.location.capability === "unavailable") {
19
- assertGitObservation({ capability: "unavailable" }, "task bind");
20
- }
21
- throw new FlowError("NOT_GIT_REPO", "task bind requires Git task storage");
22
- }
23
- const repository = taskRepositoryFromLockedBoard(transaction);
24
- const board = requireHealthySettlementBoard(await repository.read());
25
- return { tasks: input.taskIds === undefined ? [] : selectReadyTasksForBind(board, input.taskIds) };
26
- });
27
- }
28
- function sourcePath(root, source) {
29
- return source.path.slice(root.length + 1).split("\\").join("/");
30
- }
31
- function taskPath(id) {
32
- return `.keiyaku/tasks/${id}.md`;
33
- }
34
- function ownedTaskPaths(board, taskIds) {
35
- if (!taskIds || taskIds.length === 0)
36
- return [];
37
- const paths = new Set();
38
- for (const taskId of taskIds) {
39
- let current = board.byId.get(taskId);
40
- while (current) {
41
- paths.add(taskPath(current.coordinate));
42
- current = current.parent === null ? undefined : board.byId.get(current.parent);
43
- }
44
- }
45
- return [...paths].sort();
46
- }
47
- function selectSettlementSources(input) {
48
- const tracked = new Set(input.trackedPaths);
49
- const sourceByPath = new Map(input.sources.map((source) => [sourcePath(input.root, source), source]));
50
- // An ancestry path is eligible only when it was already tracked. A mutation is
51
- // the sole explicit adoption authority for an untracked task document.
52
- const selected = new Set([
53
- ...input.ownedPaths.filter((taskSourcePath) => tracked.has(taskSourcePath)),
54
- ...input.mutationPaths,
55
- ].filter((taskSourcePath) => sourceByPath.has(taskSourcePath)));
56
- const selectedPaths = [...selected].sort();
57
- const adoptedPaths = selectedPaths.filter((taskSourcePath) => !tracked.has(taskSourcePath));
58
- const observedPaths = new Set([...tracked, ...sourceByPath.keys()]);
59
- return {
60
- sources: selectedPaths.map((taskSourcePath) => sourceByPath.get(taskSourcePath)),
61
- evidence: {
62
- selectedPaths,
63
- rejectedPaths: [...observedPaths].filter((taskSourcePath) => !selected.has(taskSourcePath)).sort(),
64
- adoptedPaths,
65
- },
66
- };
67
- }
68
- function repositoryForSettlement(transaction, sources) {
69
- let currentSources = sources;
70
- return {
71
- read: async () => taskBoardFromSourceBoard(buildTaskSourceBoard(currentSources)),
72
- sources: () => currentSources,
73
- mutate: async (apply) => {
74
- const board = taskBoardFromSourceBoard(buildTaskSourceBoard(currentSources));
75
- const mutation = await apply(board);
76
- const prepared = prepareTaskDocumentReplacements(currentSources, mutation.replacements);
77
- await transaction.replace(prepared.writes);
78
- currentSources = prepared.sources;
79
- return mutation.select(prepared.board);
80
- },
81
- };
82
- }
83
- async function clearAttemptedPointers(input) {
84
- return input.repository.mutate((board) => {
85
- const replacements = input.tasks.flatMap((task) => {
86
- const current = requireSettledTask(board, task.coordinate);
87
- return current.contractId === input.contractId
88
- ? [contractPointerDocument(current, undefined, input.updatedAt)]
89
- : [];
90
- });
91
- return { replacements, select: () => replacements.map((replacement) => replacement.coordinate ?? replacement.id) };
92
- });
93
- }
94
- async function replaceTaskDocuments(repository, replacements) {
95
- return repository.mutate(() => ({
96
- replacements,
97
- select: (resulting) => replacements.map((replacement) => requireSettledTask(resulting, replacement.coordinate ?? replacement.id)),
98
- }));
99
- }
100
- async function restorePreAdmissionTaskMutations(input) {
101
- // Write text is ignored by restore; the id selects the path whose prior bytes return.
102
- await input.transaction.restore(input.taskIds.map((id) => ({ id, text: "" })), input.previousSources);
103
- }
104
- async function rollForwardClearAttemptedPointer(input) {
105
- const clearedIds = await clearAttemptedPointers({
106
- repository: input.repository,
107
- tasks: input.selected,
108
- contractId: input.contractId,
109
- updatedAt: input.updatedAt,
110
- });
111
- if (clearedIds.length === 0)
112
- return;
113
- const rollbackSelection = selectSettlementSources({
114
- root: input.root,
115
- sources: input.repository.sources(),
116
- trackedPaths: await trackedTaskPaths(input.hubCwd, input.trackedHead),
117
- ownedPaths: input.selectedPaths,
118
- mutationPaths: clearedIds.map(taskPath),
119
- });
120
- await publishForwardTaskBoardCommit({
121
- cwd: input.hubCwd,
122
- ref: input.branchRef,
123
- gitDir: input.gitDir,
124
- root: input.root,
125
- sources: rollbackSelection.sources,
126
- paths: rollbackSelection.evidence.selectedPaths,
127
- subject: `Clear failed contract ${input.contractId} from ${clearedIds.length === 1 ? `task ${clearedIds[0]}` : `${clearedIds.length} tasks`}`,
128
- }, input.deps);
129
- }
130
- export async function settleTaskBoardForBind(input, deps = {}) {
131
- const updatedAt = new Date().toISOString();
132
- await requireGitRepository(input.cwd, "task bind");
133
- return withLockHeldTaskBoard(input.cwd, async (transaction) => {
134
- if (transaction.location.mode !== "git") {
135
- if (transaction.location.capability === "unavailable") {
136
- assertGitObservation({ capability: "unavailable" }, "task bind");
137
- }
138
- throw new FlowError("NOT_GIT_REPO", "task bind requires Git task storage");
139
- }
140
- const hubCwd = transaction.location.root;
141
- const branch = await inspectCurrentBranch(hubCwd);
142
- const previousSources = transaction.sources;
143
- const repository = repositoryForSettlement(transaction, transaction.sources);
144
- const board = requireHealthySettlementBoard(await repository.read());
145
- const taskBound = "taskIds" in input;
146
- const selectedTasks = taskBound ? selectReadyTasksForBind(board, input.taskIds) : [];
147
- const prepared = taskBound ? await input.prepare(selectedTasks) : input;
148
- const contractId = prepared.contractId;
149
- if (taskBound && selectedTasks.length > 0) {
150
- await replaceTaskDocuments(repository, selectedTasks.map((task) => contractPointerDocument(task, contractId, updatedAt)));
151
- }
152
- const taskIds = taskBound ? selectedTasks.map((t) => t.coordinate) : undefined;
153
- const selectedPaths = ownedTaskPaths(await repository.read(), taskIds);
154
- const mutationPaths = taskBound ? selectedTasks.map((t) => taskPath(t.coordinate)) : [];
155
- const selectCurrentSettlement = async () => selectSettlementSources({
156
- root: transaction.location.root,
157
- sources: repository.sources(),
158
- trackedPaths: await trackedTaskPaths(hubCwd, branch.head),
159
- ownedPaths: selectedPaths,
160
- mutationPaths,
161
- });
162
- const selection = await selectCurrentSettlement();
163
- const makeBoardCommit = deps.createTaskBoardCommit ?? createTaskBoardCommit;
164
- const reconcileIndex = deps.reconcileTaskPathsetIndex ?? reconcileTaskPathsetIndex;
165
- let firstCommit;
166
- try {
167
- const taskLabel = taskBound
168
- ? selectedTasks.length === 1
169
- ? `task ${selectedTasks[0].coordinate}`
170
- : `${selectedTasks.length} tasks`
171
- : "";
172
- firstCommit = await makeBoardCommit({
173
- cwd: hubCwd,
174
- gitDir: transaction.location.gitDir,
175
- root: transaction.location.root,
176
- parent: branch.head,
177
- sources: selection.sources,
178
- subject: taskBound
179
- ? `Bind ${taskLabel} to contract ${contractId}`
180
- : `Flush task board for contract ${contractId}`,
181
- });
182
- }
183
- catch (error) {
184
- if (taskBound) {
185
- await restorePreAdmissionTaskMutations({ transaction, taskIds: selectedTasks.map((task) => task.coordinate), previousSources });
186
- }
187
- throw error;
188
- }
189
- try {
190
- await updateBranch({ cwd: hubCwd, ref: branch.ref, next: firstCommit, expected: branch.head }, deps);
191
- }
192
- catch (error) {
193
- if (taskBound) {
194
- const concurrentHead = await refHead(hubCwd, branch.ref);
195
- const concurrentMatches = await Promise.all(selectedTasks.map(async (task) => (await taskContractAtCommit(hubCwd, concurrentHead, task.coordinate)) === contractId));
196
- if (concurrentMatches.every(Boolean)) {
197
- await rollForwardClearAttemptedPointer({
198
- repository, selected: selectedTasks, contractId, hubCwd,
199
- branchRef: branch.ref, trackedHead: branch.head,
200
- gitDir: transaction.location.gitDir, root: transaction.location.root,
201
- selectedPaths, deps, updatedAt,
202
- });
203
- }
204
- else {
205
- await restorePreAdmissionTaskMutations({ transaction, taskIds: selectedTasks.map((task) => task.coordinate), previousSources });
206
- }
207
- }
208
- throw error;
209
- }
210
- try {
211
- await reconcileIndex(hubCwd, firstCommit, selection.evidence.selectedPaths);
212
- }
213
- catch (indexError) {
214
- if (taskBound) {
215
- await rollForwardClearAttemptedPointer({
216
- repository, selected: selectedTasks, contractId, hubCwd,
217
- branchRef: branch.ref, trackedHead: branch.head,
218
- gitDir: transaction.location.gitDir, root: transaction.location.root,
219
- selectedPaths, deps, updatedAt,
220
- });
221
- }
222
- throw indexError;
223
- }
224
- try {
225
- const ledger = await prepared.publishLedger(firstCommit);
226
- const boardAfter = requireHealthySettlementBoard(await repository.read());
227
- return {
228
- boardCommit: firstCommit,
229
- contractId,
230
- ledger,
231
- ...(taskBound && selectedTasks.length > 0 ? { tasks: selectedTasks.map((t) => requireSettledTask(boardAfter, t.coordinate)) } : {}),
232
- evidence: selection.evidence,
233
- };
234
- }
235
- catch (publishError) {
236
- if (!taskBound)
237
- throw publishError;
238
- await rollForwardClearAttemptedPointer({
239
- repository, selected: selectedTasks, contractId, hubCwd,
240
- branchRef: branch.ref, trackedHead: branch.head,
241
- gitDir: transaction.location.gitDir, root: transaction.location.root,
242
- selectedPaths, deps, updatedAt,
243
- });
244
- throw publishError;
245
- }
246
- }, { signal: input.signal });
247
- }
248
- export async function reconcileTaskForfeit(input) {
249
- const updatedAt = new Date().toISOString();
250
- await requireGitRepository(input.cwd, "task forfeit");
251
- const hubRoot = await stableRepoRoot(input.cwd);
252
- return withLockHeldTaskBoard(hubRoot, async (transaction) => {
253
- if (transaction.location.mode !== "git") {
254
- if (transaction.location.capability === "unavailable") {
255
- assertGitObservation({ capability: "unavailable" }, "task forfeit");
256
- }
257
- throw new FlowError("NOT_GIT_REPO", "task forfeit requires Git task storage");
258
- }
259
- assertTaskBoardGeneration(transaction, input.expectedGeneration);
260
- const repository = taskRepositoryFromLockedBoard(transaction);
261
- const branch = await inspectCurrentBranch(transaction.location.root);
262
- const trackedPaths = await trackedTaskPaths(transaction.location.root, branch.head);
263
- const branchSources = await taskSourcesAtCommit(transaction.location.root, transaction.location.root, branch.head, trackedPaths);
264
- if (!branchSources)
265
- throw new FlowError("INTERNAL_STATE", `task branch ${branch.head} lost tracked task sources`);
266
- const branchBoard = requireHealthySettlementBoard(taskBoardFromSourceBoard(buildTaskSourceBoard(branchSources)));
267
- const matched = tasksForContract(branchBoard, input.contractId);
268
- const worktreeMatched = tasksForContract(await repository.read(), input.contractId);
269
- if (matched.length === 0 && worktreeMatched.length === 0) {
270
- input.observeEffect?.({ effect: "task-source-reconciliation", status: "succeeded", taskCount: 0, detail: "current" });
271
- input.observeEffect?.({ effect: "task-reconciliation", status: "succeeded", commit: branch.head, detail: "current" });
272
- input.observeEffect?.({ effect: "task-index-reconciliation", status: "succeeded", commit: branch.head });
273
- return { ledger: await input.publishLedger() };
274
- }
275
- const reopenedDocuments = matched.map((task) => reopenedTaskDocument(task, updatedAt));
276
- const prepared = prepareTaskDocumentReplacements(branchSources, reopenedDocuments);
277
- const projectionIds = matched.length > 0 ? matched.map((task) => task.coordinate) : worktreeMatched.map((task) => task.coordinate);
278
- const branchSourcesByPath = new Map(branchSources.map((source) => [sourcePath(transaction.location.root, source), source]));
279
- const writes = matched.length > 0
280
- ? prepared.writes
281
- : taskWritesFromSources(projectionIds.map((id) => {
282
- const source = branchSourcesByPath.get(taskPath(id));
283
- if (!source)
284
- throw new FlowError("INTERNAL_STATE", `task ${id} is missing from authoritative task branch ${branch.head}`);
285
- return source;
286
- }));
287
- const reopened = projectionIds.map((id) => requireSettledTask(prepared.board, id));
288
- const taskLabel = projectionIds.length === 1 ? `task ${projectionIds[0]}` : `${projectionIds.length} tasks`;
289
- let indexSucceeded = false;
290
- await publishTaskMutationCommit({
291
- cwd: transaction.location.root,
292
- gitDir: transaction.location.gitDir,
293
- writes,
294
- subject: `Reopen ${taskLabel} after forfeit of ${input.contractId}`,
295
- observeEffect: (effect) => {
296
- input.observeEffect?.(effect);
297
- if (effect.effect === "task-index-reconciliation" && effect.status === "succeeded")
298
- indexSucceeded = true;
299
- },
300
- });
301
- if (!indexSucceeded)
302
- throw new FlowError("INTERNAL_STATE", "task index reconciliation failed before forfeit ledger publication");
303
- try {
304
- await transaction.replace(writes);
305
- input.observeEffect?.({ effect: "task-source-reconciliation", status: "succeeded", taskCount: reopened.length, detail: "materialized" });
306
- }
307
- catch (error) {
308
- input.observeEffect?.({ effect: "task-source-reconciliation", status: "failed", error });
309
- throw error;
310
- }
311
- const ledger = await input.publishLedger();
312
- return { ledger, tasks: reopened };
313
- });
314
- }
315
- /** Replay the claim's folded task selection after target+ledger authority commits. */
316
- export async function replayClaimTasks(input) {
317
- await requireGitRepository(input.cwd, "task claim replay");
318
- const hubRoot = await stableRepoRoot(input.cwd);
319
- return await withLockHeldTaskBoard(hubRoot, async (transaction) => {
320
- if (transaction.location.mode !== "git") {
321
- if (transaction.location.capability === "unavailable") {
322
- assertGitObservation({ capability: "unavailable" }, "task claim replay");
323
- }
324
- throw new FlowError("NOT_GIT_REPO", "task claim replay requires Git task storage");
325
- }
326
- const hubBranch = await inspectCurrentBranch(transaction.location.root);
327
- const materializeHub = hubBranch.ref === input.targetRef;
328
- const selectedPaths = input.taskIds.map(taskPath);
329
- for (let attempt = 0; attempt < 4; attempt += 1) {
330
- const targetHead = await refHead(input.cwd, input.targetRef);
331
- const paths = await trackedTaskPaths(input.cwd, targetHead);
332
- const sources = await taskSourcesAtCommit(input.cwd, transaction.location.root, targetHead, paths);
333
- if (!sources)
334
- throw new FlowError("INTERNAL_STATE", `claim target ${targetHead} lost tracked task sources`);
335
- const board = requireHealthySettlementBoard(taskBoardFromSourceBoard(buildTaskSourceBoard(sources)));
336
- const replacements = doneTaskReplacements(board, input.contractId, input.taskIds, input.updatedAt);
337
- if (replacements.length === 0) {
338
- const selected = new Set(selectedPaths);
339
- const writes = taskWritesFromSources(sources.filter((source) => selected.has(sourcePath(transaction.location.root, source))));
340
- if (materializeHub) {
341
- if (writes.length > 0)
342
- await transaction.replace(writes);
343
- await reconcileTaskPathsetIndex(transaction.location.root, targetHead, selectedPaths);
344
- }
345
- return { taskCount: input.taskIds.length, commit: targetHead, worktree: materializeHub ? "materialized" : "ref-only" };
346
- }
347
- const prepared = prepareTaskDocumentReplacements(sources, replacements);
348
- const commit = await createTaskBoardCommit({
349
- cwd: input.cwd,
350
- gitDir: transaction.location.gitDir,
351
- root: transaction.location.root,
352
- parent: targetHead,
353
- sources: prepared.sources,
354
- subject: `Complete ${replacements.length === 1 ? `task ${replacements[0].coordinate ?? formatTaskCoordinate(replacements[0].namespace ?? null, replacements[0].id)}` : `${replacements.length} tasks`} after claim of ${input.contractId}`,
355
- });
356
- try {
357
- await updateBranch({ cwd: input.cwd, ref: input.targetRef, next: commit, expected: targetHead }, {});
358
- if (materializeHub) {
359
- await transaction.replace(prepared.writes);
360
- await reconcileTaskPathsetIndex(transaction.location.root, commit, selectedPaths);
361
- }
362
- return { taskCount: input.taskIds.length, commit, worktree: materializeHub ? "materialized" : "ref-only" };
363
- }
364
- catch (error) {
365
- if (attempt === 3)
366
- throw error;
367
- }
368
- }
369
- throw new FlowError("CONCURRENT_MODIFICATION", `claim target ${input.targetRef} kept moving during task replay`);
370
- });
371
- }
@@ -1,14 +0,0 @@
1
- import { rollbackOrphanTaskPointers } from "./task.js";
2
- import { buildTaskSourceBoard } from "./source-board.js";
3
- export async function inspectTaskDoctor(store, repository, facts) {
4
- const orphans = facts.lockHeld ? [] : await rollbackOrphanTaskPointers(repository, facts.contractIds);
5
- const sources = await store.read();
6
- const board = buildTaskSourceBoard(sources);
7
- return {
8
- board,
9
- sources,
10
- orphans,
11
- landingDiagnostics: facts.landingDiagnostics ?? [],
12
- lockHeld: facts.lockHeld === true,
13
- };
14
- }
@@ -1,171 +0,0 @@
1
- import { createHash, randomBytes } from "node:crypto";
2
- import * as fs from "node:fs";
3
- import * as path from "node:path";
4
- import { FlowError } from "../../flow-error.js";
5
- import { syncDirectorySync } from "../../fs/durability.js";
6
- import { isTaskCoordinate } from "./coordinate.js";
7
- export function atomicReplaceTaskFile(filePath, text, _deps) {
8
- const directory = path.dirname(filePath);
9
- fs.mkdirSync(directory, { recursive: true });
10
- const temporary = path.join(directory, `.${path.basename(filePath)}.${process.pid}.${randomBytes(12).toString("hex")}.tmp`);
11
- let descriptor;
12
- try {
13
- descriptor = fs.openSync(temporary, fs.constants.O_WRONLY | fs.constants.O_CREAT | fs.constants.O_EXCL, 0o644);
14
- fs.writeFileSync(descriptor, text, { encoding: "utf8" });
15
- fs.fsyncSync(descriptor);
16
- fs.closeSync(descriptor);
17
- descriptor = undefined;
18
- fs.renameSync(temporary, filePath);
19
- syncDirectorySync(directory);
20
- }
21
- catch (error) {
22
- if (descriptor !== undefined) {
23
- try {
24
- fs.closeSync(descriptor);
25
- }
26
- catch { /* preserve original failure */ }
27
- }
28
- try {
29
- fs.unlinkSync(temporary);
30
- }
31
- catch { /* absent after rename or already cleaned */ }
32
- throw error;
33
- }
34
- }
35
- function lstatIfPresent(target) {
36
- try {
37
- return fs.lstatSync(target);
38
- }
39
- catch (error) {
40
- if (error.code === "ENOENT")
41
- return undefined;
42
- throw error;
43
- }
44
- }
45
- export function validateTaskMutationWrites(writes) {
46
- if (writes.length === 0) {
47
- throw new FlowError("INTERNAL_STATE", "task mutation must contain at least one write");
48
- }
49
- const targets = new Set();
50
- for (const write of writes) {
51
- const target = `${write.id}.md`;
52
- if (!isTaskCoordinate(write.id)) {
53
- throw new FlowError("INTERNAL_STATE", `invalid task mutation coordinate: ${write.id}`);
54
- }
55
- if (targets.has(target))
56
- throw new FlowError("INTERNAL_STATE", `duplicate task mutation target: ${target}`);
57
- targets.add(target);
58
- }
59
- }
60
- function mutationTarget(write) {
61
- return `${write.id}.md`;
62
- }
63
- function capturePreviousFiles(directory, writes) {
64
- return writes.map((write) => {
65
- const destination = path.join(directory, mutationTarget(write));
66
- const stat = lstatIfPresent(destination);
67
- if (!stat)
68
- return { path: destination };
69
- if (stat.isSymbolicLink() || !stat.isFile()) {
70
- throw new FlowError("INTERNAL_STATE", `task destination is not a regular file: ${destination}`);
71
- }
72
- return { path: destination, text: fs.readFileSync(destination, "utf8") };
73
- });
74
- }
75
- export function sameSources(left, right) {
76
- return left.length === right.length && left.every((source, index) => {
77
- const candidate = right[index];
78
- return candidate !== undefined && source.path === candidate.path && source.text === candidate.text;
79
- });
80
- }
81
- export function generationFor(location, sources) {
82
- const digest = createHash("sha256").update("keiyaku-task-board-v1\0");
83
- for (const source of [...sources].sort((left, right) => Buffer.from(left.path).compare(Buffer.from(right.path)))) {
84
- const relativePath = path.relative(location.mode === "git" ? location.surfaceRoot : location.root, source.path).split(path.sep).join("/");
85
- digest.update(String(Buffer.byteLength(relativePath))).update(":").update(relativePath);
86
- digest.update(String(Buffer.byteLength(source.text))).update(":").update(source.text);
87
- }
88
- return { root: location.root, fingerprint: digest.digest("hex") };
89
- }
90
- export function taskBoardGeneration(transaction) {
91
- return generationFor(transaction.location, transaction.sources);
92
- }
93
- export function assertTaskBoardGeneration(transaction, expected) {
94
- const current = taskBoardGeneration(transaction);
95
- if (current.root === expected.root && current.fingerprint === expected.fingerprint)
96
- return;
97
- throw new FlowError("CONCURRENT_MODIFICATION", "task board generation changed during lifecycle preparation", {
98
- facts: { kind: "task_board_generation_changed", expected, current },
99
- });
100
- }
101
- function removeTaskFile(filePath) {
102
- try {
103
- fs.unlinkSync(filePath);
104
- syncDirectorySync(path.dirname(filePath));
105
- }
106
- catch (error) {
107
- if (error.code !== "ENOENT")
108
- throw error;
109
- }
110
- }
111
- function restoreFiles(previous, deps) {
112
- for (const entry of previous) {
113
- if (entry.text === undefined)
114
- removeTaskFile(entry.path);
115
- else
116
- (deps.atomicReplace ?? atomicReplaceTaskFile)(entry.path, entry.text);
117
- }
118
- }
119
- function writeTaskFile(directory, write, deps) {
120
- const destination = path.join(directory, mutationTarget(write));
121
- (deps.atomicReplace ?? atomicReplaceTaskFile)(destination, write.text);
122
- }
123
- function assertTaskDirectorySafety(directory) {
124
- const stat = lstatIfPresent(directory);
125
- if (stat && (stat.isSymbolicLink() || !stat.isDirectory())) {
126
- throw new FlowError("INTERNAL_STATE", `task directory is not a regular directory: ${directory}`);
127
- }
128
- }
129
- export function createTaskFileTransaction(input) {
130
- return {
131
- location: input.location,
132
- get sources() { return input.getSources(); },
133
- async replace(writes) {
134
- validateTaskMutationWrites(writes);
135
- input.assertBoardSafety();
136
- assertTaskDirectorySafety(input.directory);
137
- const currentSources = await input.readSources();
138
- if (!sameSources(input.getSources(), currentSources)) {
139
- throw new FlowError("CONCURRENT_MODIFICATION", "task sources changed while applying the mutation");
140
- }
141
- input.assertBoardSafety();
142
- assertTaskDirectorySafety(input.directory);
143
- const previous = capturePreviousFiles(input.directory, writes);
144
- let applied = 0;
145
- try {
146
- for (const write of writes) {
147
- writeTaskFile(input.directory, write, input.deps);
148
- applied += 1;
149
- }
150
- }
151
- catch (error) {
152
- try {
153
- restoreFiles(previous.slice(0, applied + 1), input.deps);
154
- }
155
- catch { /* the original replacement failure remains authoritative */ }
156
- throw error;
157
- }
158
- input.setSources(await input.readSources());
159
- },
160
- async restore(writes, previousSources) {
161
- validateTaskMutationWrites(writes);
162
- const currentSources = await input.readSources();
163
- if (!sameSources(input.getSources(), currentSources)) {
164
- throw new FlowError("CONCURRENT_MODIFICATION", "task sources changed while rolling back a failed publication");
165
- }
166
- const previousById = new Map(previousSources.map((source) => [path.relative(input.directory, source.path).slice(0, -3).split(path.sep).join("/"), source.text]));
167
- restoreFiles(writes.map((write) => ({ path: path.join(input.directory, mutationTarget(write)), text: previousById.get(write.id) })), input.deps);
168
- input.setSources(await input.readSources());
169
- },
170
- };
171
- }
@@ -1,33 +0,0 @@
1
- import { runGitProcess } from "../../git/core.js";
2
- const ANONYMOUS_TASK_CREATOR = "(anonymous)";
3
- const TASK_ACTOR_ENV = "KEIYAKU_ACTOR";
4
- const GIT_ACTOR_KEYS = ["keiyaku.actor", "user.name"];
5
- async function defaultRunGit(cwd, args, env) {
6
- return await runGitProcess(cwd, args, { env: { ...env } });
7
- }
8
- function attribution(value) {
9
- const trimmed = value?.trim();
10
- return trimmed ? trimmed : undefined;
11
- }
12
- export async function resolveTaskCreator(cwd, deps = {}) {
13
- const sourceEnv = deps.env ?? process.env;
14
- const environmentActor = attribution(sourceEnv[TASK_ACTOR_ENV]);
15
- if (environmentActor)
16
- return environmentActor;
17
- const gitEnv = { ...sourceEnv, GIT_TERMINAL_PROMPT: "0", LC_ALL: "C" };
18
- const runGit = deps.runGit ?? defaultRunGit;
19
- for (const key of GIT_ACTOR_KEYS) {
20
- try {
21
- const result = await runGit(cwd, ["config", "--get", key], gitEnv);
22
- if (!result.error && result.status === 0) {
23
- const configuredActor = attribution(result.stdout);
24
- if (configuredActor)
25
- return configuredActor;
26
- }
27
- }
28
- catch {
29
- // Creator attribution is advisory and must not prevent task creation.
30
- }
31
- }
32
- return ANONYMOUS_TASK_CREATOR;
33
- }