@astrosheep/keiyaku 2.9.13 → 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 (670) hide show
  1. package/README.md +10 -130
  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 -32
  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 -5
  313. package/build/cli/commands/akuma/akuma/meta.js +0 -17
  314. package/build/cli/commands/akuma/catalog.js +0 -10
  315. package/build/cli/commands/akuma/list/handler.js +0 -15
  316. package/build/cli/commands/akuma/list/meta-list.js +0 -12
  317. package/build/cli/commands/akuma/list/meta-ls.js +0 -9
  318. package/build/cli/commands/akuma/show/handler.js +0 -27
  319. package/build/cli/commands/akuma/show/meta.js +0 -8
  320. package/build/cli/commands/akuma.js +0 -186
  321. package/build/cli/commands/contract/amend/handler.js +0 -17
  322. package/build/cli/commands/contract/amend/meta.js +0 -13
  323. package/build/cli/commands/contract/arc/handler.js +0 -16
  324. package/build/cli/commands/contract/arc/meta.js +0 -28
  325. package/build/cli/commands/contract/audit/handler.js +0 -42
  326. package/build/cli/commands/contract/audit/meta.js +0 -17
  327. package/build/cli/commands/contract/bind/handler.js +0 -39
  328. package/build/cli/commands/contract/bind/meta.js +0 -96
  329. package/build/cli/commands/contract/catalog.js +0 -18
  330. package/build/cli/commands/contract/forfeit/handler.js +0 -17
  331. package/build/cli/commands/contract/forfeit/meta.js +0 -12
  332. package/build/cli/commands/contract/log/handler.js +0 -12
  333. package/build/cli/commands/contract/log/meta.js +0 -12
  334. package/build/cli/commands/contract/petition/handler.js +0 -64
  335. package/build/cli/commands/contract/petition/meta.js +0 -23
  336. package/build/cli/commands/contract/renew/handler.js +0 -65
  337. package/build/cli/commands/contract/renew/meta.js +0 -19
  338. package/build/cli/commands/metadata.js +0 -68
  339. package/build/cli/commands/projection/call/handler.js +0 -43
  340. package/build/cli/commands/projection/call/meta.js +0 -12
  341. package/build/cli/commands/projection/catalog.js +0 -16
  342. package/build/cli/commands/projection/fork/handler.js +0 -61
  343. package/build/cli/commands/projection/fork/meta.js +0 -12
  344. package/build/cli/commands/projection/history/handler.js +0 -65
  345. package/build/cli/commands/projection/history/meta.js +0 -9
  346. package/build/cli/commands/projection/kill/handler.js +0 -20
  347. package/build/cli/commands/projection/kill/meta.js +0 -11
  348. package/build/cli/commands/projection/shared.js +0 -27
  349. package/build/cli/commands/projection/status/handler.js +0 -42
  350. package/build/cli/commands/projection/status/meta.js +0 -20
  351. package/build/cli/commands/projection/tell/handler.js +0 -32
  352. package/build/cli/commands/projection/tell/meta.js +0 -12
  353. package/build/cli/commands/projection/wait/handler.js +0 -80
  354. package/build/cli/commands/projection/wait/meta.js +0 -16
  355. package/build/cli/commands/registry.js +0 -48
  356. package/build/cli/commands/shared.js +0 -74
  357. package/build/cli/commands/skills/catalog.js +0 -6
  358. package/build/cli/commands/skills/install/handler.js +0 -7
  359. package/build/cli/commands/skills/install/meta.js +0 -9
  360. package/build/cli/commands/skills/skills/handler.js +0 -4
  361. package/build/cli/commands/skills/skills/meta.js +0 -10
  362. package/build/cli/commands/system/catalog.js +0 -10
  363. package/build/cli/commands/system/completion/handler.js +0 -10
  364. package/build/cli/commands/system/completion/meta.js +0 -9
  365. package/build/cli/commands/system/dump-env/handler.js +0 -3
  366. package/build/cli/commands/system/dump-env/meta.js +0 -10
  367. package/build/cli/commands/system/guide/handler.js +0 -4
  368. package/build/cli/commands/system/guide/meta.js +0 -9
  369. package/build/cli/commands/task/add/handler.js +0 -38
  370. package/build/cli/commands/task/add/meta.js +0 -31
  371. package/build/cli/commands/task/catalog.js +0 -32
  372. package/build/cli/commands/task/compose/handler.js +0 -18
  373. package/build/cli/commands/task/compose/meta.js +0 -10
  374. package/build/cli/commands/task/doctor/handler.js +0 -3
  375. package/build/cli/commands/task/doctor/meta.js +0 -8
  376. package/build/cli/commands/task/done/handler.js +0 -10
  377. package/build/cli/commands/task/done/meta.js +0 -8
  378. package/build/cli/commands/task/drop/handler.js +0 -8
  379. package/build/cli/commands/task/drop/meta.js +0 -11
  380. package/build/cli/commands/task/hold/handler.js +0 -3
  381. package/build/cli/commands/task/hold/meta.js +0 -8
  382. package/build/cli/commands/task/log/handler.js +0 -12
  383. package/build/cli/commands/task/log/meta.js +0 -8
  384. package/build/cli/commands/task/ls/handler.js +0 -17
  385. package/build/cli/commands/task/ls/meta.js +0 -8
  386. package/build/cli/commands/task/note/handler.js +0 -6
  387. package/build/cli/commands/task/note/meta.js +0 -11
  388. package/build/cli/commands/task/resume/handler.js +0 -3
  389. package/build/cli/commands/task/resume/meta.js +0 -8
  390. package/build/cli/commands/task/shared.js +0 -181
  391. package/build/cli/commands/task/show/handler.js +0 -13
  392. package/build/cli/commands/task/show/meta.js +0 -8
  393. package/build/cli/commands/task/start/handler.js +0 -3
  394. package/build/cli/commands/task/start/meta.js +0 -8
  395. package/build/cli/commands/task/stop/handler.js +0 -10
  396. package/build/cli/commands/task/stop/meta.js +0 -8
  397. package/build/cli/commands/task/task/handler.js +0 -5
  398. package/build/cli/commands/task/task/meta.js +0 -11
  399. package/build/cli/commands/task/update/handler.js +0 -21
  400. package/build/cli/commands/task/update/meta.js +0 -12
  401. package/build/cli/commands/verification/handler.js +0 -43
  402. package/build/cli/commands/verification/meta.js +0 -13
  403. package/build/cli/completion.js +0 -91
  404. package/build/cli/draft-artifact.js +0 -50
  405. package/build/cli/flags.js +0 -321
  406. package/build/cli/help.js +0 -99
  407. package/build/cli/index.js +0 -333
  408. package/build/cli/missing-subcommand.js +0 -7
  409. package/build/cli/output-stream-error-policy.js +0 -31
  410. package/build/cli/parse-flags.js +0 -301
  411. package/build/cli/parse-metadata.js +0 -132
  412. package/build/cli/parse-selectors.js +0 -83
  413. package/build/cli/parse.js +0 -250
  414. package/build/cli/projection-address.js +0 -105
  415. package/build/cli/render/address.js +0 -101
  416. package/build/cli/render/amendment-warning.js +0 -8
  417. package/build/cli/render/arc.js +0 -88
  418. package/build/cli/render/audit.js +0 -440
  419. package/build/cli/render/call.js +0 -70
  420. package/build/cli/render/compact-text.js +0 -3
  421. package/build/cli/render/errors.js +0 -101
  422. package/build/cli/render/format.js +0 -226
  423. package/build/cli/render/kanshi.js +0 -300
  424. package/build/cli/render/kill.js +0 -9
  425. package/build/cli/render/lifecycle.js +0 -56
  426. package/build/cli/render/line-width.js +0 -103
  427. package/build/cli/render/misc.js +0 -84
  428. package/build/cli/render/path-prefix-compaction.js +0 -131
  429. package/build/cli/render/petition.js +0 -85
  430. package/build/cli/render/projection-activity.js +0 -332
  431. package/build/cli/render/projection-history.js +0 -77
  432. package/build/cli/render/response-style.js +0 -27
  433. package/build/cli/render/shared.js +0 -232
  434. package/build/cli/render/skills.js +0 -10
  435. package/build/cli/render/status-indicator.js +0 -47
  436. package/build/cli/render/status.js +0 -243
  437. package/build/cli/render/success-response.js +0 -95
  438. package/build/cli/render/task.js +0 -175
  439. package/build/cli/render/tell.js +0 -11
  440. package/build/cli/render/terminal-failure.js +0 -65
  441. package/build/cli/render/tool-command-normalization.js +0 -137
  442. package/build/cli/render/tool-ledger-rollup.js +0 -74
  443. package/build/cli/render/tool-presentation.js +0 -98
  444. package/build/cli/render/types.js +0 -2
  445. package/build/cli/render/verification.js +0 -23
  446. package/build/cli/render/wait.js +0 -343
  447. package/build/cli/skills-install.js +0 -348
  448. package/build/cli/subagent-guard.js +0 -25
  449. package/build/cli/types.js +0 -2
  450. package/build/config/akuma-loader.js +0 -240
  451. package/build/config/env-keys.js +0 -57
  452. package/build/config/env.js +0 -304
  453. package/build/config/provider-policy-ownership.js +0 -10
  454. package/build/config/settings/disease.js +0 -33
  455. package/build/config/settings/knobs.js +0 -14
  456. package/build/config/settings/loader.js +0 -275
  457. package/build/config/settings/provider-instance-fields.js +0 -51
  458. package/build/config/settings/schema.js +0 -113
  459. package/build/core/address-carrier.js +0 -89
  460. package/build/core/addressing.js +0 -407
  461. package/build/core/amend.js +0 -321
  462. package/build/core/amendment-criteria.js +0 -17
  463. package/build/core/amendment-warning.js +0 -10
  464. package/build/core/arc.js +0 -293
  465. package/build/core/atomic-publish.js +0 -64
  466. package/build/core/audit/candidate.js +0 -141
  467. package/build/core/audit/coordinates.js +0 -230
  468. package/build/core/audit/evidence.js +0 -156
  469. package/build/core/audit/facade.js +0 -65
  470. package/build/core/audit/readiness.js +0 -4
  471. package/build/core/audit/report.js +0 -38
  472. package/build/core/audit.js +0 -1
  473. package/build/core/bind-reconciliation.js +0 -409
  474. package/build/core/bind-workspace.js +0 -115
  475. package/build/core/bind.js +0 -503
  476. package/build/core/call/call.js +0 -235
  477. package/build/core/call/context.js +0 -210
  478. package/build/core/call/execution.js +0 -255
  479. package/build/core/call/prompt.js +0 -27
  480. package/build/core/call/reference.js +0 -24
  481. package/build/core/call-persist.js +0 -76
  482. package/build/core/command-markdown.js +0 -45
  483. package/build/core/context.js +0 -104
  484. package/build/core/contract-carrier-runtime.js +0 -512
  485. package/build/core/contract-carrier.js +0 -353
  486. package/build/core/contract-view.js +0 -319
  487. package/build/core/contract.js +0 -19
  488. package/build/core/derived-replay.js +0 -340
  489. package/build/core/draft.js +0 -400
  490. package/build/core/execution-coordinate.js +0 -46
  491. package/build/core/execution-pact.js +0 -126
  492. package/build/core/forfeit.js +0 -132
  493. package/build/core/hints.js +0 -34
  494. package/build/core/identifier-slug.js +0 -116
  495. package/build/core/ids.js +0 -90
  496. package/build/core/lifecycle-history.js +0 -48
  497. package/build/core/lifecycle-recovery.js +0 -122
  498. package/build/core/lifecycle-runner.js +0 -377
  499. package/build/core/log.js +0 -50
  500. package/build/core/markdown/lex.js +0 -274
  501. package/build/core/markdown/parser.js +0 -260
  502. package/build/core/markdown/render.js +0 -68
  503. package/build/core/markdown/sections.js +0 -80
  504. package/build/core/markdown/titles.js +0 -9
  505. package/build/core/markdown/types.js +0 -6
  506. package/build/core/outcome-base.js +0 -185
  507. package/build/core/places.js +0 -175
  508. package/build/core/projection/akuma-name.js +0 -43
  509. package/build/core/projection/generation/database.js +0 -473
  510. package/build/core/projection/generation/identity.js +0 -84
  511. package/build/core/projection/generation/ledger.js +0 -91
  512. package/build/core/projection/generation/model.js +0 -261
  513. package/build/core/projection/generation/projection-generation-continuation.js +0 -84
  514. package/build/core/projection/generation/projection-generation-doorbell.js +0 -88
  515. package/build/core/projection/generation/projection-generation-execution.js +0 -241
  516. package/build/core/projection/generation/projection-generation-identity.js +0 -21
  517. package/build/core/projection/generation/projection-generation-launcher.js +0 -154
  518. package/build/core/projection/generation/projection-generation-process.js +0 -47
  519. package/build/core/projection/generation/projection-generation-runner.js +0 -489
  520. package/build/core/projection/generation/projection-generation-runtime.js +0 -46
  521. package/build/core/projection/generation/protocol.js +0 -68
  522. package/build/core/projection/generation/store.js +0 -108
  523. package/build/core/projection/generation/transitions.js +0 -463
  524. package/build/core/projection/heart.js +0 -9
  525. package/build/core/projection/index.js +0 -28
  526. package/build/core/projection/projection-activity.js +0 -273
  527. package/build/core/projection/projection-alias.js +0 -131
  528. package/build/core/projection/projection-coordinate.js +0 -61
  529. package/build/core/projection/projection-core.js +0 -127
  530. package/build/core/projection/projection-execution-observer.js +0 -270
  531. package/build/core/projection/projection-history.js +0 -474
  532. package/build/core/projection/projection-identity.js +0 -11
  533. package/build/core/projection/projection-kill.js +0 -112
  534. package/build/core/projection/projection-life-observer.js +0 -101
  535. package/build/core/projection/projection-mint.js +0 -170
  536. package/build/core/projection/projection-status-observation.js +0 -434
  537. package/build/core/projection/projection-status.js +0 -442
  538. package/build/core/projection/projection-terminal-failure.js +0 -111
  539. package/build/core/projection/projection-wait.js +0 -337
  540. package/build/core/projection/projection-wake.js +0 -298
  541. package/build/core/projection/tell/launch-store.js +0 -244
  542. package/build/core/projection/tell/model.js +0 -98
  543. package/build/core/projection/tell/store.js +0 -245
  544. package/build/core/provider-loader-ports.js +0 -4
  545. package/build/core/registry.js +0 -100
  546. package/build/core/renew-build.js +0 -554
  547. package/build/core/renew-plan.js +0 -264
  548. package/build/core/renew-rewrite.js +0 -118
  549. package/build/core/renew.js +0 -345
  550. package/build/core/repository-ledger/accepted-fold-read.js +0 -22
  551. package/build/core/repository-ledger/accepted-tail.js +0 -116
  552. package/build/core/repository-ledger/admission.js +0 -38
  553. package/build/core/repository-ledger/authoritative-transaction.js +0 -1
  554. package/build/core/repository-ledger/claim-evidence.js +0 -147
  555. package/build/core/repository-ledger/codec.js +0 -303
  556. package/build/core/repository-ledger/current-state-store.js +0 -968
  557. package/build/core/repository-ledger/fold-repository.js +0 -374
  558. package/build/core/repository-ledger/fold.js +0 -248
  559. package/build/core/repository-ledger/git-object-store.js +0 -243
  560. package/build/core/repository-ledger/history-read.js +0 -15
  561. package/build/core/repository-ledger/identity.js +0 -60
  562. package/build/core/repository-ledger/incremental-read.js +0 -153
  563. package/build/core/repository-ledger/index.js +0 -15
  564. package/build/core/repository-ledger/inventory-plan.js +0 -75
  565. package/build/core/repository-ledger/inventory.js +0 -310
  566. package/build/core/repository-ledger/publication-admission.js +0 -125
  567. package/build/core/repository-ledger/publication.js +0 -353
  568. package/build/core/repository-ledger/read-model.js +0 -517
  569. package/build/core/repository-ledger/transaction-membership.js +0 -78
  570. package/build/core/repository-ledger/traversal.js +0 -404
  571. package/build/core/repository-ledger/write-transaction.js +0 -346
  572. package/build/core/response-artifact-catalog-sqlite.js +0 -112
  573. package/build/core/response-artifact-catalog.js +0 -7
  574. package/build/core/response-artifact-id.js +0 -5
  575. package/build/core/run-control/connection-bound-close.js +0 -41
  576. package/build/core/run-control/detached-lease-bootstrap.js +0 -208
  577. package/build/core/run-control/detached-process.js +0 -14
  578. package/build/core/run-control/index.js +0 -6
  579. package/build/core/run-control/process-tree.js +0 -139
  580. package/build/core/run-control/runner-lease.js +0 -172
  581. package/build/core/run-control/sqlite-process-lifetime-lock.js +0 -174
  582. package/build/core/scope.js +0 -416
  583. package/build/core/seal.js +0 -364
  584. package/build/core/settlement/claim-delivery.js +0 -82
  585. package/build/core/settlement/claim.js +0 -258
  586. package/build/core/settlement/index.js +0 -19
  587. package/build/core/settlement/petition-claim-gates.js +0 -247
  588. package/build/core/settlement/petition-forfeit.js +0 -46
  589. package/build/core/settlement/petition-head-guard.js +0 -12
  590. package/build/core/settlement/petition-io.js +0 -1
  591. package/build/core/settlement/petition-preview.js +0 -125
  592. package/build/core/settlement/petition-window.js +0 -50
  593. package/build/core/settlement/petition.js +0 -315
  594. package/build/core/settlement/queue-read-model.js +0 -120
  595. package/build/core/settlement/queue-seat-allocation.js +0 -65
  596. package/build/core/settlement/queue.js +0 -6
  597. package/build/core/settlement/settlement.js +0 -385
  598. package/build/core/settlement/verdict.js +0 -126
  599. package/build/core/settlement/verification.js +0 -554
  600. package/build/core/status/board.js +0 -455
  601. package/build/core/status/drift.js +0 -113
  602. package/build/core/status/lifecycle.js +0 -11
  603. package/build/core/stored-agent-event.js +0 -129
  604. package/build/core/structured-query.js +0 -23
  605. package/build/core/target-ref.js +0 -10
  606. package/build/core/task/board.js +0 -248
  607. package/build/core/task/commands.js +0 -401
  608. package/build/core/task/compose.js +0 -328
  609. package/build/core/task/coordinate.js +0 -56
  610. package/build/core/task/document.js +0 -273
  611. package/build/core/task/index.js +0 -16
  612. package/build/core/task/model.js +0 -8
  613. package/build/core/task/query.js +0 -204
  614. package/build/core/task/settlement-git.js +0 -423
  615. package/build/core/task/settlement-policy.js +0 -137
  616. package/build/core/task/source-board.js +0 -104
  617. package/build/core/task/source-model.js +0 -1
  618. package/build/core/task/task-bind-preparation.js +0 -243
  619. package/build/core/task/task-contract.js +0 -371
  620. package/build/core/task/task-doctor.js +0 -14
  621. package/build/core/task/task-file-transaction.js +0 -171
  622. package/build/core/task/task-git-actor.js +0 -33
  623. package/build/core/task/task-git-runtime.js +0 -97
  624. package/build/core/task/task-git-store.js +0 -400
  625. package/build/core/task/task-repository.js +0 -1
  626. package/build/core/task/task-store-repository.js +0 -97
  627. package/build/core/task/task-store.js +0 -1
  628. package/build/core/task/task-worktree.js +0 -25
  629. package/build/core/task/task.js +0 -7
  630. package/build/core/task/tree.js +0 -37
  631. package/build/core/task/validation.js +0 -48
  632. package/build/core/transcripts.js +0 -485
  633. package/build/core/validation.js +0 -17
  634. package/build/core/verification-declaration.js +0 -95
  635. package/build/core/worktree-bootstrap.js +0 -195
  636. package/build/core/worktree-path.js +0 -371
  637. package/build/errno.js +0 -3
  638. package/build/flow-error.js +0 -191
  639. package/build/fs/durability.js +0 -27
  640. package/build/fs/path-coordinate.js +0 -16
  641. package/build/generated/version.js +0 -3
  642. package/build/git/branches.js +0 -84
  643. package/build/git/commits.js +0 -151
  644. package/build/git/core.js +0 -86
  645. package/build/git/diff/parsers.js +0 -181
  646. package/build/git/diff/pathspec.js +0 -3
  647. package/build/git/diff/preview.js +0 -38
  648. package/build/git/diff/read.js +0 -105
  649. package/build/git/diff/structured.js +0 -127
  650. package/build/git/diff/types.js +0 -1
  651. package/build/git/path-coordinate.js +0 -17
  652. package/build/git/process.js +0 -229
  653. package/build/git/refs.js +0 -250
  654. package/build/git/staging.js +0 -79
  655. package/build/git/streaming-batch.js +0 -354
  656. package/build/git/worktree.js +0 -175
  657. package/build/index.js +0 -67
  658. package/build/keiyaku-constants.js +0 -2
  659. package/build/keiyaku.js +0 -30
  660. package/build/telemetry/debug-log.js +0 -40
  661. package/build/telemetry/logger.js +0 -48
  662. package/skills/keiyaku/SKILL.md +0 -46
  663. package/skills/keiyaku-akuma/SKILL.md +0 -97
  664. package/skills/keiyaku-task/SKILL.md +0 -118
  665. package/skills/keiyaku-workflow/SKILL.md +0 -191
  666. /package/build/{agents/launch-snapshot → src/body}/types.js +0 -0
  667. /package/build/{agents/providers/claude-agent-sdk/terms.js → src/cli/result.js} +0 -0
  668. /package/build/{agents/providers/codex-app-server/terms.js → src/core/decide.js} +0 -0
  669. /package/build/{agents/providers/opencode-sdk/terms.js → src/core/facts/offer.js} +0 -0
  670. /package/build/{agents/providers/pi/terms.js → src/kanshi/report.js} +0 -0
package/README.md CHANGED
@@ -1,136 +1,16 @@
1
- # Keiyaku
1
+ # Keiyaku v4
2
2
 
3
- 契約 a contract.
3
+ Keiyaku v4 is a clean implementation of an agent-facing contract workflow.
4
4
 
5
- Keiyaku is an AI-first CLI: its user is a coding agent. Not a human writing
6
- specs for an agent to implement an agent delegating to other agents,
7
- running the whole loop itself: writing the terms, calling the worker,
8
- supervising the run, settling the outcome.
5
+ The first milestone is intentionally narrow: a Git-backed facts kernel with
6
+ per-contract append-only journals, Git-tree evidence, atomic path-set CAS,
7
+ and tests that prove clone and garbage-collection durability.
9
8
 
10
- That is why it is a contract system rather than a spec system. A spec relies
11
- on someone with judgment reading it charitably; here both the worker and the
12
- judge are models, and a model honors what you wrote, not what you meant. So
13
- terms are binding, the worker — an akuma (悪魔, demon) — runs on an isolated
14
- branch, gates and a reviewer judge the diff against the criteria alone, and
15
- settlement is mechanical: the change lands on main with a commit-hash
16
- receipt, or the branch is deleted. No human needs to be in the loop for any
17
- step; nothing depends on anyone eyeballing anything.
9
+ No v3 runtime code is wired into this repository.
18
10
 
19
- ```bash
20
- npm install -g @astrosheep/keiyaku
21
- ```
22
-
23
- Node ≥ 22.19, inside a git repository with a clean worktree.
24
-
25
- ## One deal, end to end
26
-
27
- ```bash
28
- # Write the terms: Title, Context, Objective, Design & Approach, Scope, Criteria.
29
- # The criteria are read by the letter — precision goes here, not in prompts.
30
- keiyaku bind - < contract.md
31
-
32
- # Put an akuma on it. It works alone in the contract's own worktree.
33
- keiyaku call worker-akuma --detach "fulfill the contract"
34
-
35
- # It runs for as long as it needs. You are not its babysitter —
36
- # but you can be:
37
- keiyaku wait worker-akuma/3f21ab9e --timeout 10m
38
- keiyaku tell worker-akuma/3f21ab9e "criteria 3 also covers the CLI output"
39
- keiyaku kill worker-akuma/3f21ab9e # death is not an error state
40
-
41
- # Ask for judgment: gates run, a reviewer akuma reads the diff
42
- # against the criteria.
43
- keiyaku petition
44
-
45
- # claim → the change lands on main, with a commit-hash receipt
46
- # forfeit → the branch is deleted; partial fulfillment is forfeiture
47
- ```
48
-
49
- Every step appends to the contract's ledger. `keiyaku log` replays any deal,
50
- finished or dead, from its receipts.
51
-
52
- ## The board
53
-
54
- `keiyaku status` is the one screen of state. Real output:
55
-
56
- ```text
57
- kanshi ─────────────────────────────────────────────────────── 現世 b4c38cc
58
-
59
- marks ● active · … starting · ⧗ waiting · ○ ready · ‖ paused · ✓ success · × stopped · ! failed/broken · ? unknown
60
-
61
- keiyaku 2
62
- ⧗ fridge Add task arrange for atomic existing-task reorganization waiting on task-reorganization.01J8TEST · active 27m
63
- ● hermitcrab Let task commands select a contract workspace bound 8m
64
-
65
- task 120
66
- ● in_progress P1 centralize-repository-ledger-test-construction last update 14h ago
67
- ‖ on_hold P0 windows-common-commands-must-eliminate-git-proc last update 3d ago
68
- + 108 ready · 9 blocked · 1 on hold
11
+ ## Install
69
12
 
70
- akuma 2/2
71
- running 1/1
72
- worker-default/e03addad @fridge out · running for 27m · last activity 2s ago
73
- recent terminal 1/1
74
- ! worker-default/64b92f01 failed 5m ago · ran 12m · last activity 5m ago
75
- full roster: keiyaku status --akuma
76
- ```
77
-
78
- The indicator grammar is shared across contracts, Akuma, and tasks; every row
79
- still names its exact state. `⧗` appears only with a typed wait reason, never
80
- because work is old or behind its target. Terminal failure is factual state; it
81
- does not by itself mean `needs attention` or an actionable obligation.
82
- Durations are measured, exit codes are real, and drift is reported as `behind
83
- <ref> by <count>`, never as a `renew` recommendation.
84
-
85
- ## An akuma is one Markdown file
86
-
87
- Filename is the name, frontmatter picks the provider and model, the body is
88
- the standing instructions. That's all it takes to make one callable.
89
-
90
- ```markdown
91
- ---
92
- provider: codex-sdk
93
- model: gpt-5.4
94
- description: Repository implementation agent
95
- ---
96
- Make scoped changes and run relevant tests.
97
- ```
98
-
99
- Providers: `codex-sdk`, `codex-app-server`, `claude-agent-sdk`,
100
- `opencode-sdk`, `pi` — one contract can be worked by any of them, and a
101
- finished run leaves an artifact that `fork` can continue from, even across
102
- sessions.
103
-
104
- `.keiyaku/settings.json` assigns roles and gates:
105
-
106
- ```json
107
- {
108
- "default": "worker-akuma",
109
- "reviewer": "review-akuma",
110
- "gate": { "commands": [{ "label": "tests", "command": "npm", "args": ["test"] }] }
111
- }
13
+ ```sh
14
+ npm install -g @astrosheep/keiyaku
15
+ keiyaku --help
112
16
  ```
113
-
114
- ## And the rest
115
-
116
- | | |
117
- | --- | --- |
118
- | contract | `bind` `arc` `amend` `renew` `audit` `petition` `forfeit` `log` |
119
- | akuma | `call` `tell` `wait` `kill` `fork` `status` `history` |
120
- | tasks | `task add/show/ls/log/start/stop/hold/resume/done/drop/update/doctor` |
121
- | system | `guide` `completion` `dump-env` |
122
-
123
- `keiyaku task` is a file-backed planning board for work that isn't worth a
124
- contract yet — typed dependencies, one micro-commit per change, promotion
125
- into a contract when it's ready.
126
-
127
- Conventions hold everywhere: a literal `-` reads stdin for long bodies,
128
- `--json` where structure matters, and a rejected command states the legal
129
- grammar instead of guessing intent. State lives in `KEIYAKU.md` (the active
130
- contract) and `.keiyaku/` (akuma, settings, task board, history).
131
-
132
- Full product documentation: [`docs/keiyaku-v3/`](docs/keiyaku-v3/README.md).
133
-
134
- Keiyaku is early and experimental — breaking changes are intentional.
135
-
136
- MIT.
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "keiyaku",
3
+ "interface": { "displayName": "Keiyaku" },
4
+ "plugins": [
5
+ {
6
+ "name": "keiyaku",
7
+ "source": { "source": "local", "path": "./plugins/keiyaku" },
8
+ "policy": { "installation": "AVAILABLE", "authentication": "ON_INSTALL" },
9
+ "category": "Productivity"
10
+ }
11
+ ]
12
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "keiyaku",
3
+ "owner": { "name": "Keiyaku" },
4
+ "plugins": [{ "name": "keiyaku", "source": "./plugins/keiyaku" }]
5
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "name": "keiyaku",
3
+ "version": "0.1.0",
4
+ "description": "Use the Keiyaku v4 contract, task, and Akuma CLI.",
5
+ "author": { "name": "Keiyaku" },
6
+ "skills": "./skills/"
7
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "keiyaku",
3
+ "version": "0.1.0",
4
+ "description": "Use the Keiyaku v4 contract, task, and Akuma CLI.",
5
+ "author": {
6
+ "name": "Keiyaku"
7
+ },
8
+ "skills": "./skills/",
9
+ "interface": {
10
+ "displayName": "Keiyaku",
11
+ "shortDescription": "Use Keiyaku in Codex.",
12
+ "longDescription": "Keiyaku adds the v4 agent-facing workflow CLI.",
13
+ "developerName": "Keiyaku",
14
+ "category": "Productivity",
15
+ "capabilities": [],
16
+ "defaultPrompt": "Use Keiyaku v4 to coordinate this work."
17
+ }
18
+ }
@@ -0,0 +1,16 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { fileURLToPath } from "node:url";
3
+
4
+ const skills = ["keiyaku", "keiyaku-task", "keiyaku-workflow", "keiyaku-akuma"]
5
+ .map((name) => fileURLToPath(new URL(`./skills/${name}/SKILL.md`, import.meta.url)));
6
+
7
+ export default {
8
+ id: "keiyaku-v4",
9
+ server: async () => ({
10
+ config: async (config) => {
11
+ const instructions = config.instructions ?? (config.instructions = []);
12
+ await Promise.all(skills.map((skill) => readFile(skill, "utf8")));
13
+ for (const skill of skills) if (!instructions.includes(skill)) instructions.push(skill);
14
+ },
15
+ }),
16
+ };
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "keiyaku-v4-harness",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "main": "./opencode.js",
6
+ "keywords": ["pi-package"],
7
+ "pi": { "skills": ["./skills"] }
8
+ }
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: keiyaku
3
+ description: Use the Keiyaku v4 CLI for contract delivery, task coordination, and Akuma work.
4
+ ---
5
+
6
+ # Keiyaku
7
+
8
+ Use `keiyaku` as an agent-facing ledger. Keep decisions with the flagship;
9
+ read `<command> --help` before using flags.
10
+
11
+ ## Model
12
+
13
+ - `task` is planning; see `keiyaku-task`.
14
+ - A Contract is delivery authority; see `keiyaku-workflow`.
15
+ - An Akuma is a callable worker; see `keiyaku-akuma`.
16
+
17
+ ## Quick Start
18
+
19
+ ```bash
20
+ keiyaku -C <repo> task add "title"
21
+ keiyaku -C <repo> task start <task-id>
22
+ keiyaku -C <repo> bind -
23
+ keiyaku -C <repo> status
24
+ keiyaku -C <repo> deliver [<contract>|@<contract>]
25
+ keiyaku -C <repo> review [<contract>|@<contract>] --satisfied
26
+ ```
27
+
28
+ ```bash
29
+ keiyaku -C <repo> call <akuma> [--contract <kei/...>] [--alias @name] [--workdir <path>] [--wait [--timeout <duration>] | -d | --detach] [--json] -
30
+ keiyaku -C <repo> wait <aku/...>
31
+ keiyaku -C <repo> tell <aku/...> -
32
+ ```
33
+
34
+ Use text by default; add `--json` when a script needs structured output.
@@ -0,0 +1,50 @@
1
+ ---
2
+ name: keiyaku-akuma
3
+ description: Use when delegating work to, supervising, steering, inspecting, forking, or stopping a Keiyaku v4 Akuma.
4
+ ---
5
+
6
+ # Keiyaku Akuma
7
+
8
+ An Akuma is a durable callable worker projection. Its complete id is
9
+ `aku/<archetype>/<hex8>`; keep that id for recovery.
10
+
11
+ ## Choose A Verb
12
+
13
+ ```bash
14
+ keiyaku -C <repo> call <akuma> [--contract <kei/...>] [--alias @name] [--workdir <path>] [--wait [--timeout <duration>] | -d | --detach] [--json] -
15
+ keiyaku -C <repo> wait <aku/...> [--timeout <duration>]
16
+ keiyaku -C <repo> tell <aku/...> -
17
+ keiyaku -C <repo> interrupt <aku/...> -
18
+ keiyaku -C <repo> history <aku/...>
19
+ keiyaku -C <repo> fork <aku/...> --at <historyId>
20
+ keiyaku -C <repo> kill <aku/...>
21
+ ```
22
+
23
+ `call` starts from an Archetype, requires a final stdin body, and waits up to
24
+ five minutes by default. Use `-d` or `--detach` to return after birth. `tell` continues
25
+ the same projection, including after it has answered. `fork` starts a child
26
+ from one exact retained answered-turn coordinate and leaves the source alone.
27
+ `interrupt` puts down the current body synchronously, then records the tell;
28
+ it is not terminal kill. `kill` records death and returns typed physical
29
+ evidence.
30
+
31
+ ## Observe
32
+
33
+ ```bash
34
+ keiyaku -C <repo> status
35
+ keiyaku -C <repo> status <aku/...>
36
+ keiyaku -C <repo> wait <aku/...> --timeout 5m
37
+ keiyaku -C <repo> history <aku/...> --before <index>
38
+ keiyaku -C <repo> history <aku/...> --since <index>
39
+ keiyaku -C <repo> history <aku/...> --last
40
+ ```
41
+
42
+ Bare `status` shows the compact fleet. Exact `status <aku/...>` and `wait`
43
+ share the public status carrier; a wait timeout returns the current snapshot,
44
+ not a fabricated timeout state. History cursors are persistent activity
45
+ sequences and `--before`/`--since` are exclusive. `--last` writes only the
46
+ complete answer bytes. Use `--json` when a script needs the typed values.
47
+
48
+ Read the exact command help for duration syntax and provider-specific Archetype
49
+ configuration. Do not use old `follow`, plural wait, `--after`, or `--at`
50
+ index forms; they are not root commands.
@@ -0,0 +1,62 @@
1
+ ---
2
+ name: keiyaku-task
3
+ description: "Use when planning work in a Keiyaku v4 repo: add tasks, wire dependencies, inspect readiness, and track lifecycle."
4
+ ---
5
+
6
+ # Keiyaku Task
7
+
8
+ Task is a directory-context planning product. It is separate from Contract
9
+ delivery and Akuma execution. A task records intent; `start` does not execute
10
+ it and no task command binds a Contract.
11
+
12
+ ## Lifecycle
13
+
14
+ ```text
15
+ open -> in_progress -> done | drop
16
+ | |
17
+ +-> on_hold <-+
18
+ ```
19
+
20
+ Use `ready` for open tasks whose `needs` are terminal. `blocked` reports open
21
+ or in-progress tasks with unresolved needs. `on_hold` appears in neither view.
22
+ Both `done` and `drop` release dependents. `doctor` diagnoses the complete
23
+ world and never repairs it.
24
+
25
+ ## Common Commands
26
+
27
+ ```bash
28
+ keiyaku task add "title"
29
+ keiyaku task add "title" --priority 1 --needs <task-id>
30
+ keiyaku task add --namespace <ns> -
31
+ keiyaku task show <task-id>
32
+ keiyaku task ls
33
+ keiyaku task ls --closed
34
+ keiyaku task ls --all --world
35
+ keiyaku task ready
36
+ keiyaku task blocked
37
+ keiyaku task tree <task-id> [--full]
38
+ keiyaku task doctor
39
+ ```
40
+
41
+ `ls`, `ready`, and `blocked` use the current namespace; add `--world` to
42
+ observe the complete Task world. `show`, `tree`, `update`, and lifecycle
43
+ commands require a complete TaskId and never infer namespace.
44
+
45
+ ## Mutations
46
+
47
+ ```bash
48
+ keiyaku task start <task-id>
49
+ keiyaku task stop <task-id>
50
+ keiyaku task hold <task-id>
51
+ keiyaku task resume <task-id>
52
+ keiyaku task done <task-id>...
53
+ keiyaku task drop <task-id>... [--note <text>]
54
+ keiyaku task update <task-id> --title <text>
55
+ keiyaku task namespace [<namespace>]
56
+ ```
57
+
58
+ Use `--json` on any command when a script must inspect the typed result. Use
59
+ `task compose -` for one atomic tree/graph edit; read its command help for the
60
+ composition grammar. Relations are explicit facts: `needs` orders work,
61
+ `parent` groups it, `supersedes` navigates replacement, and `relates` does not
62
+ affect readiness.
@@ -0,0 +1,72 @@
1
+ ---
2
+ name: keiyaku-workflow
3
+ description: Use when authoring, binding, delivering, reviewing, amending, auditing, or abandoning a Keiyaku v4 Contract.
4
+ ---
5
+
6
+ # Keiyaku Workflow
7
+
8
+ A Contract is one delivery authority. Its document is ordinary input until
9
+ `bind` admits it; the bound Contract owns its coordinates, terms, prerequisite
10
+ snapshot, candidate, reviews, gates, and terminal decision. Task planning and
11
+ Akuma execution remain separate products.
12
+
13
+ ## Lifecycle
14
+
15
+ ```text
16
+ bind -> waiting | bound -> pending delivery -> claimed
17
+ \-> abandoned
18
+ ```
19
+
20
+ `claimed` and `abandoned` are terminal. A prerequisite `after` list is ordered
21
+ and immutable after `bound`; `amend` can replace terms and change prerequisites
22
+ only before they are consumed. `deliver` tenders current worktree bytes.
23
+ `review --satisfied` records testimony and requests placement; placement claims
24
+ only when every declared gate is current. `review --unsatisfied` records
25
+ judgment without claiming. `audit` observes and never places.
26
+
27
+ ## Bind
28
+
29
+ Write one canonical Contract document to stdin and bind it:
30
+
31
+ ```bash
32
+ keiyaku bind -
33
+ keiyaku bind --target <ref> -
34
+ keiyaku bind --here -
35
+ keiyaku bind --after <kei/...> --gates <name> -
36
+ ```
37
+
38
+ The document owns the delivery objective, design, scope, criteria, and optional
39
+ verification declaration. Use the exact `bind --help` grammar; do not invent
40
+ identity or timestamps. A successful receipt is the source of the complete
41
+ Contract coordinate and any managed worktree facts.
42
+
43
+ ## Work And Acceptance
44
+
45
+ ```bash
46
+ keiyaku status [<contract>|@<contract>]
47
+ keiyaku amend [<contract>|@<contract>] -
48
+ keiyaku arc [<contract>|@<contract>] -
49
+ keiyaku deliver [<contract>|@<contract>]
50
+ keiyaku review [<contract>|@<contract>] --satisfied
51
+ keiyaku review [<contract>|@<contract>] --unsatisfied
52
+ keiyaku audit [<contract>|@<contract>] [--show-diff-body]
53
+ keiyaku reconcile [<contract>|@<contract>]
54
+ ```
55
+
56
+ Use complete `kei/...` IDs or `@...` managed-worktree references. Omitted
57
+ selectors are contextual only when the CLI reports exactly one active
58
+ worktree contract. `amend` reads amendment operations, `arc` reads arc
59
+ Markdown, and both require their final `-`; `deliver`, `review`, `audit`, and
60
+ `reconcile` do not read an unselected stdin body. `review --summary <text>` is
61
+ opaque testimony and is mutually exclusive with review stdin.
62
+
63
+ ## Terminal Choice
64
+
65
+ `abandon [<contract>|@<contract>] [--note <text>]` writes the terminal
66
+ abandoned fact and does not touch a target ref. There is no `petition`, `claim`,
67
+ `forfeit`, `renew`, or `bind --task` command in v4. A successful placement
68
+ produces the claimed terminal state; inspect the typed result and decide what
69
+ to do next.
70
+
71
+ Use default text output for routine observation. Add `--json` when a script
72
+ needs the public result without renderer-specific text.
@@ -0,0 +1,66 @@
1
+ import { type ToolCall, type ToolResult } from "./provider.js";
2
+ import type { ActivityFact, ActivitySlice, TellFact, TurnFact } from "./heart/index.js";
3
+ export type ActivityRow = Readonly<{
4
+ kind: "said";
5
+ sequence: number;
6
+ bodySequence: number;
7
+ at: string;
8
+ text: string;
9
+ }> | Readonly<{
10
+ kind: "thought";
11
+ sequence: number;
12
+ bodySequence: number;
13
+ at: string;
14
+ text: string;
15
+ }> | Readonly<{
16
+ kind: "tool";
17
+ sequence: number;
18
+ bodySequence: number;
19
+ at: string;
20
+ completedAt?: string;
21
+ durationMs?: number;
22
+ name: string;
23
+ call: ToolCall;
24
+ state: "running" | ToolResult;
25
+ }> | Readonly<{
26
+ kind: "note";
27
+ sequence: number;
28
+ bodySequence: number;
29
+ at: string;
30
+ text: string;
31
+ }>;
32
+ export type PendingTell = Readonly<{
33
+ id: string;
34
+ body: string;
35
+ recordedAt: string;
36
+ }>;
37
+ export type ActivitySnapshot = Readonly<{
38
+ rows: readonly ActivityRow[];
39
+ pendingTells: readonly PendingTell[];
40
+ omitted: number;
41
+ lowestRetained: number | null;
42
+ highest: number | null;
43
+ }>;
44
+ export type ActivityHistory = Readonly<{
45
+ rows: readonly ActivityRow[];
46
+ turns: readonly TurnFact[];
47
+ omitted: number;
48
+ hasEarlier: boolean;
49
+ hasLater: boolean;
50
+ historyLost: boolean;
51
+ lowestRetained: number | null;
52
+ highest: number | null;
53
+ }>;
54
+ /** Fold the complete retained typed event window before any display budget. */
55
+ export declare function foldActivity(facts: readonly ActivityFact[]): readonly ActivityRow[];
56
+ /** Apply the one bounded recent selection after folding semantic rows. */
57
+ export declare function selectActivitySnapshot(facts: readonly ActivityFact[], input?: Readonly<{
58
+ pending?: readonly TellFact[];
59
+ lowestRetained?: number | null;
60
+ highest?: number | null;
61
+ }>): ActivitySnapshot;
62
+ /** Project a cursor page; history never applies the recent snapshot pinning rules. */
63
+ export declare function projectActivityHistory(slice: ActivitySlice, turns: readonly TurnFact[], input: Readonly<{
64
+ since?: boolean;
65
+ limit: number;
66
+ }>): ActivityHistory;
@@ -0,0 +1,139 @@
1
+ import { decodeAgentEvent } from "./provider.js";
2
+ const SETTLED_LIMIT = 8;
3
+ const INTENT_LIMIT = 2;
4
+ function duration(startedAt, completedAt) {
5
+ const start = Date.parse(startedAt);
6
+ const end = Date.parse(completedAt);
7
+ if (!Number.isFinite(start) || !Number.isFinite(end) || end < start)
8
+ return undefined;
9
+ return end - start;
10
+ }
11
+ function toolKey(bodySequence, id) {
12
+ return `${bodySequence}:${id}`;
13
+ }
14
+ function narrationRow(fact, event) {
15
+ if (event.type === "assistant") {
16
+ return { kind: "said", sequence: fact.sequence, bodySequence: fact.bodySequence, at: fact.at, text: event.text };
17
+ }
18
+ if (event.type === "thought" || event.type === "note") {
19
+ return { kind: event.type, sequence: fact.sequence, bodySequence: fact.bodySequence, at: fact.at, text: event.text };
20
+ }
21
+ return null;
22
+ }
23
+ /** Fold the complete retained typed event window before any display budget. */
24
+ export function foldActivity(facts) {
25
+ const rows = [];
26
+ const running = new Map();
27
+ for (const fact of facts) {
28
+ const event = decodeAgentEvent(fact.event);
29
+ const narration = narrationRow(fact, event);
30
+ if (narration !== null) {
31
+ rows.push({ settled: true, row: narration });
32
+ continue;
33
+ }
34
+ if (event.type !== "tool")
35
+ continue;
36
+ const key = toolKey(fact.bodySequence, event.id);
37
+ if (event.phase === "started") {
38
+ const index = rows.length;
39
+ rows.push({
40
+ settled: false,
41
+ row: {
42
+ kind: "tool",
43
+ sequence: fact.sequence,
44
+ bodySequence: fact.bodySequence,
45
+ at: fact.at,
46
+ name: event.name,
47
+ call: event.call,
48
+ state: "running",
49
+ },
50
+ });
51
+ running.set(key, index);
52
+ continue;
53
+ }
54
+ const index = running.get(key);
55
+ if (index === undefined) {
56
+ rows.push({
57
+ settled: true,
58
+ row: {
59
+ kind: "tool",
60
+ sequence: fact.sequence,
61
+ bodySequence: fact.bodySequence,
62
+ at: fact.at,
63
+ name: event.name,
64
+ call: event.call,
65
+ state: event.result,
66
+ },
67
+ });
68
+ continue;
69
+ }
70
+ const started = rows[index].row;
71
+ if (started.kind !== "tool")
72
+ throw new Error("Akuma activity tool fold lost its start row");
73
+ const elapsed = duration(started.at, fact.at);
74
+ rows[index] = {
75
+ settled: true,
76
+ row: {
77
+ kind: "tool",
78
+ sequence: started.sequence,
79
+ bodySequence: started.bodySequence,
80
+ at: started.at,
81
+ completedAt: fact.at,
82
+ ...(elapsed === undefined ? {} : { durationMs: elapsed }),
83
+ name: event.name,
84
+ call: event.call,
85
+ state: event.result,
86
+ },
87
+ };
88
+ running.delete(key);
89
+ }
90
+ return rows.map((entry) => entry.row);
91
+ }
92
+ function pendingTellFacts(tells) {
93
+ return tells
94
+ .filter((tell) => tell.state !== "consumed" && tell.state !== "voided-by-death")
95
+ .map((tell) => ({ id: tell.id, body: tell.body, recordedAt: tell.recordedAt }));
96
+ }
97
+ /** Apply the one bounded recent selection after folding semantic rows. */
98
+ export function selectActivitySnapshot(facts, input = {}) {
99
+ const folded = foldActivity(facts);
100
+ const settled = folded.filter((row) => row.kind !== "tool" || row.state !== "running");
101
+ const selected = new Set(settled.slice(-SETTLED_LIMIT));
102
+ const intent = settled.filter((row) => row.kind === "said" || row.kind === "thought").slice(-INTENT_LIMIT);
103
+ for (const row of intent)
104
+ selected.add(row);
105
+ for (const row of folded) {
106
+ if (row.kind === "tool" && row.state === "running")
107
+ selected.add(row);
108
+ }
109
+ return {
110
+ rows: folded.filter((row) => selected.has(row)),
111
+ pendingTells: pendingTellFacts(input.pending ?? []),
112
+ omitted: settled.length - [...selected].filter((row) => row.kind !== "tool" || row.state !== "running").length,
113
+ lowestRetained: input.lowestRetained ?? (facts[0]?.sequence ?? null),
114
+ highest: input.highest ?? (facts.at(-1)?.sequence ?? null),
115
+ };
116
+ }
117
+ function visibleRows(facts, since, limit) {
118
+ const folded = foldActivity(facts);
119
+ return since ? folded.slice(0, limit) : folded.slice(-limit);
120
+ }
121
+ /** Project a cursor page; history never applies the recent snapshot pinning rules. */
122
+ export function projectActivityHistory(slice, turns, input) {
123
+ const all = foldActivity(slice.rows);
124
+ const rows = visibleRows(slice.rows, input.since === true, input.limit);
125
+ const bodySequences = new Set(rows.map((row) => row.bodySequence));
126
+ return {
127
+ rows,
128
+ turns: turns.filter((turn) => bodySequences.has(turn.bodySequence)),
129
+ omitted: Math.max(0, all.length - rows.length),
130
+ hasEarlier: input.since !== true && all.length > rows.length,
131
+ hasLater: input.since === true && all.length > rows.length,
132
+ historyLost: input.since !== true
133
+ && all.length === rows.length
134
+ && slice.lowestRetained !== null
135
+ && slice.lowestRetained > 1,
136
+ lowestRetained: slice.lowestRetained,
137
+ highest: slice.highest,
138
+ };
139
+ }