@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.
- package/README.md +10 -130
- package/build/integrations/marketplace/.agents/plugins/marketplace.json +12 -0
- package/build/integrations/marketplace/.claude-plugin/marketplace.json +5 -0
- package/build/integrations/marketplace/plugins/keiyaku/.claude-plugin/plugin.json +7 -0
- package/build/integrations/marketplace/plugins/keiyaku/.codex-plugin/plugin.json +18 -0
- package/build/integrations/marketplace/plugins/keiyaku/opencode.js +16 -0
- package/build/integrations/marketplace/plugins/keiyaku/package.json +8 -0
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku/SKILL.md +34 -0
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-akuma/SKILL.md +50 -0
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-task/SKILL.md +62 -0
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-workflow/SKILL.md +72 -0
- package/build/src/akuma/activity.d.ts +66 -0
- package/build/src/akuma/activity.js +139 -0
- package/build/src/akuma/akuma.d.ts +116 -0
- package/build/src/akuma/akuma.js +382 -0
- package/build/src/akuma/archetype.d.ts +31 -0
- package/build/src/akuma/archetype.js +188 -0
- package/build/src/akuma/body.d.ts +20 -0
- package/build/src/akuma/body.js +305 -0
- package/build/src/akuma/heart/facts.d.ts +150 -0
- package/build/src/akuma/heart/facts.js +9 -0
- package/build/src/akuma/heart/index.d.ts +78 -0
- package/build/src/akuma/heart/index.js +361 -0
- package/build/src/akuma/heart/rows.d.ts +189 -0
- package/build/src/akuma/heart/rows.js +319 -0
- package/build/src/akuma/heart/schema.d.ts +5 -0
- package/build/src/akuma/heart/schema.js +113 -0
- package/build/src/akuma/identity.d.ts +46 -0
- package/build/src/akuma/identity.js +89 -0
- package/build/src/akuma/index.d.ts +7 -0
- package/build/src/akuma/index.js +3 -0
- package/build/src/akuma/provider.d.ts +123 -0
- package/build/src/akuma/provider.js +235 -0
- package/build/src/akuma/providers/claude.d.ts +84 -0
- package/build/src/akuma/providers/claude.js +305 -0
- package/build/src/akuma/providers/codex-app-server/events.d.ts +110 -0
- package/build/src/akuma/providers/codex-app-server/events.js +337 -0
- package/build/src/akuma/providers/codex-app-server/index.d.ts +27 -0
- package/build/src/akuma/providers/codex-app-server/index.js +162 -0
- package/build/src/akuma/providers/index.d.ts +4 -0
- package/build/src/akuma/providers/index.js +71 -0
- package/build/src/akuma/publication.d.ts +10 -0
- package/build/src/akuma/publication.js +107 -0
- package/build/src/akuma/requests.d.ts +46 -0
- package/build/src/akuma/requests.js +388 -0
- package/build/src/alias/index.d.ts +17 -0
- package/build/src/alias/index.js +104 -0
- package/build/src/body/amend.d.ts +2 -0
- package/build/src/body/amend.js +289 -0
- package/build/src/body/arc.d.ts +2 -0
- package/build/src/body/arc.js +54 -0
- package/build/src/body/decode.d.ts +4 -0
- package/build/src/body/decode.js +146 -0
- package/build/src/body/keys.d.ts +4 -0
- package/build/src/body/keys.js +11 -0
- package/build/src/body/region.d.ts +6 -0
- package/build/src/body/region.js +139 -0
- package/build/src/body/render.d.ts +4 -0
- package/build/src/body/render.js +73 -0
- package/build/src/body/shape.d.ts +29 -0
- package/build/src/body/shape.js +16 -0
- package/build/src/body/types.d.ts +28 -0
- package/build/src/body/verification.d.ts +7 -0
- package/build/src/body/verification.js +25 -0
- package/build/src/cli/accepted.d.ts +16 -0
- package/build/src/cli/accepted.js +65 -0
- package/build/src/cli/actor.d.ts +8 -0
- package/build/src/cli/actor.js +11 -0
- package/build/src/cli/commands/akuma-invoke.d.ts +53 -0
- package/build/src/cli/commands/akuma-invoke.js +68 -0
- package/build/src/cli/commands/akuma.d.ts +42 -0
- package/build/src/cli/commands/akuma.js +224 -0
- package/build/src/cli/commands/amend.d.ts +13 -0
- package/build/src/cli/commands/amend.js +13 -0
- package/build/src/cli/commands/bind.d.ts +12 -0
- package/build/src/cli/commands/bind.js +17 -0
- package/build/src/cli/commands/install.d.ts +25 -0
- package/build/src/cli/commands/install.js +103 -0
- package/build/src/cli/commands/task-invoke.d.ts +9 -0
- package/build/src/cli/commands/task-invoke.js +92 -0
- package/build/src/cli/commands/task.d.ts +16 -0
- package/build/src/cli/commands/task.js +144 -0
- package/build/src/cli/index.d.ts +2 -0
- package/build/src/cli/index.js +3 -0
- package/build/src/cli/invoke.d.ts +17 -0
- package/build/src/cli/invoke.js +265 -0
- package/build/src/cli/main.d.ts +1 -0
- package/build/src/cli/main.js +79 -0
- package/build/src/cli/parse.d.ts +210 -0
- package/build/src/cli/parse.js +375 -0
- package/build/src/cli/render/akuma-tool.d.ts +11 -0
- package/build/src/cli/render/akuma-tool.js +68 -0
- package/build/src/cli/render/akuma.d.ts +6 -0
- package/build/src/cli/render/akuma.js +254 -0
- package/build/src/cli/render/board.d.ts +2 -0
- package/build/src/cli/render/board.js +4 -0
- package/build/src/cli/render/contract.d.ts +4 -0
- package/build/src/cli/render/contract.js +69 -0
- package/build/src/cli/render/kanshi.d.ts +3 -0
- package/build/src/cli/render/kanshi.js +204 -0
- package/build/src/cli/render/refusal.d.ts +2 -0
- package/build/src/cli/render/refusal.js +4 -0
- package/build/src/cli/render/settings.d.ts +3 -0
- package/build/src/cli/render/settings.js +30 -0
- package/build/src/cli/render/task.d.ts +6 -0
- package/build/src/cli/render/task.js +105 -0
- package/build/src/cli/render/terminal.d.ts +10 -0
- package/build/src/cli/render/terminal.js +76 -0
- package/build/src/cli/render/text.d.ts +3 -0
- package/build/src/cli/render/text.js +15 -0
- package/build/src/cli/result.d.ts +55 -0
- package/build/src/cli/selectors.d.ts +9 -0
- package/build/src/cli/selectors.js +66 -0
- package/build/src/cli/usage.d.ts +6 -0
- package/build/src/cli/usage.js +19 -0
- package/build/src/context-root.d.ts +4 -0
- package/build/src/context-root.js +15 -0
- package/build/src/coordination/durable-file.d.ts +1 -0
- package/build/src/coordination/durable-file.js +36 -0
- package/build/src/coordination/sqlite-transaction-lock.d.ts +14 -0
- package/build/src/coordination/sqlite-transaction-lock.js +119 -0
- package/build/src/core/decide.d.ts +45 -0
- package/build/src/core/facts/codec.d.ts +3 -0
- package/build/src/core/facts/codec.js +258 -0
- package/build/src/core/facts/eligibility.d.ts +16 -0
- package/build/src/core/facts/eligibility.js +75 -0
- package/build/src/core/facts/errors.d.ts +3 -0
- package/build/src/core/facts/errors.js +6 -0
- package/build/src/core/facts/fold.d.ts +2 -0
- package/build/src/core/facts/fold.js +97 -0
- package/build/src/core/facts/gate.d.ts +24 -0
- package/build/src/core/facts/gate.js +52 -0
- package/build/src/core/facts/observation.d.ts +12 -0
- package/build/src/core/facts/observation.js +23 -0
- package/build/src/core/facts/offer.d.ts +21 -0
- package/build/src/core/facts/types.d.ts +130 -0
- package/build/src/core/facts/types.js +66 -0
- package/build/src/core/subject.d.ts +21 -0
- package/build/src/core/subject.js +89 -0
- package/build/src/core/verbs/abandon.d.ts +13 -0
- package/build/src/core/verbs/abandon.js +17 -0
- package/build/src/core/verbs/amend.d.ts +14 -0
- package/build/src/core/verbs/amend.js +56 -0
- package/build/src/core/verbs/arc.d.ts +13 -0
- package/build/src/core/verbs/arc.js +25 -0
- package/build/src/core/verbs/attestation.d.ts +13 -0
- package/build/src/core/verbs/attestation.js +21 -0
- package/build/src/core/verbs/bind.d.ts +13 -0
- package/build/src/core/verbs/bind.js +40 -0
- package/build/src/core/verbs/deliver.d.ts +13 -0
- package/build/src/core/verbs/deliver.js +26 -0
- package/build/src/core/verbs/placement.d.ts +13 -0
- package/build/src/core/verbs/placement.js +42 -0
- package/build/src/dispatch/index.d.ts +31 -0
- package/build/src/dispatch/index.js +159 -0
- package/build/src/git/admission.d.ts +18 -0
- package/build/src/git/admission.js +116 -0
- package/build/src/git/delivery.d.ts +20 -0
- package/build/src/git/delivery.js +109 -0
- package/build/src/git/hooks.d.ts +34 -0
- package/build/src/git/hooks.js +258 -0
- package/build/src/git/identity.d.ts +13 -0
- package/build/src/git/identity.js +28 -0
- package/build/src/git/observe.d.ts +38 -0
- package/build/src/git/observe.js +227 -0
- package/build/src/git/reconcile.d.ts +49 -0
- package/build/src/git/reconcile.js +223 -0
- package/build/src/git/repository.d.ts +80 -0
- package/build/src/git/repository.js +456 -0
- package/build/src/git/tree.d.ts +34 -0
- package/build/src/git/tree.js +112 -0
- package/build/src/git/verification.d.ts +14 -0
- package/build/src/git/verification.js +56 -0
- package/build/src/identity/coordinates.d.ts +9 -0
- package/build/src/identity/coordinates.js +20 -0
- package/build/src/identity/normalize.d.ts +8 -0
- package/build/src/identity/normalize.js +45 -0
- package/build/src/identity/selector.d.ts +6 -0
- package/build/src/identity/selector.js +7 -0
- package/build/src/index.d.ts +4 -0
- package/build/src/index.js +2 -0
- package/build/src/kanshi/index.d.ts +5 -0
- package/build/src/kanshi/index.js +2 -0
- package/build/src/kanshi/read.d.ts +5 -0
- package/build/src/kanshi/read.js +100 -0
- package/build/src/kanshi/report.d.ts +35 -0
- package/build/src/kanshi/select.d.ts +8 -0
- package/build/src/kanshi/select.js +21 -0
- package/build/src/library/akuma-creation.d.ts +79 -0
- package/build/src/library/akuma-creation.js +151 -0
- package/build/src/library/configuration.d.ts +26 -0
- package/build/src/library/configuration.js +100 -0
- package/build/src/library/contract.d.ts +145 -0
- package/build/src/library/contract.js +325 -0
- package/build/src/library/input.d.ts +13 -0
- package/build/src/library/input.js +82 -0
- package/build/src/library/keiyaku.d.ts +28 -0
- package/build/src/library/keiyaku.js +16 -0
- package/build/src/library/region.d.ts +17 -0
- package/build/src/library/region.js +30 -0
- package/build/src/library/repo.d.ts +33 -0
- package/build/src/library/repo.js +61 -0
- package/build/src/markdown/diff.d.ts +1 -0
- package/build/src/markdown/diff.js +4 -0
- package/build/src/markdown/lex.d.ts +3 -0
- package/build/src/markdown/lex.js +221 -0
- package/build/src/markdown/parse.d.ts +2 -0
- package/build/src/markdown/parse.js +221 -0
- package/build/src/markdown/query.d.ts +21 -0
- package/build/src/markdown/query.js +51 -0
- package/build/src/markdown/types.d.ts +118 -0
- package/build/src/markdown/types.js +6 -0
- package/build/src/protocol/attempt.d.ts +36 -0
- package/build/src/protocol/attempt.js +119 -0
- package/build/src/protocol/bind.d.ts +25 -0
- package/build/src/protocol/bind.js +62 -0
- package/build/src/protocol/intent.d.ts +52 -0
- package/build/src/protocol/intent.js +129 -0
- package/build/src/protocol/operations.d.ts +140 -0
- package/build/src/protocol/operations.js +373 -0
- package/build/src/protocol/outcome.d.ts +18 -0
- package/build/src/protocol/outcome.js +15 -0
- package/build/src/protocol/read/audit.d.ts +25 -0
- package/build/src/protocol/read/audit.js +39 -0
- package/build/src/protocol/read/documents.d.ts +8 -0
- package/build/src/protocol/read/documents.js +16 -0
- package/build/src/protocol/read/status.d.ts +38 -0
- package/build/src/protocol/read/status.js +47 -0
- package/build/src/protocol/run.d.ts +39 -0
- package/build/src/protocol/run.js +36 -0
- package/build/src/runtime/proc/line-rpc.d.ts +37 -0
- package/build/src/runtime/proc/line-rpc.js +124 -0
- package/build/src/runtime/proc/run.d.ts +54 -0
- package/build/src/runtime/proc/run.js +200 -0
- package/build/src/settings.d.ts +45 -0
- package/build/src/settings.js +99 -0
- package/build/src/settlement/holder.d.ts +15 -0
- package/build/src/settlement/holder.js +113 -0
- package/build/src/settlement/settle.d.ts +36 -0
- package/build/src/settlement/settle.js +91 -0
- package/build/src/task/board.d.ts +65 -0
- package/build/src/task/board.js +155 -0
- package/build/src/task/compose.d.ts +25 -0
- package/build/src/task/compose.js +232 -0
- package/build/src/task/context.d.ts +4 -0
- package/build/src/task/context.js +56 -0
- package/build/src/task/document.d.ts +24 -0
- package/build/src/task/document.js +118 -0
- package/build/src/task/identity.d.ts +12 -0
- package/build/src/task/identity.js +47 -0
- package/build/src/task/index.d.ts +90 -0
- package/build/src/task/index.js +179 -0
- package/build/src/task/operations.d.ts +115 -0
- package/build/src/task/operations.js +194 -0
- package/build/src/task/store.d.ts +22 -0
- package/build/src/task/store.js +114 -0
- package/build/src/verification/declaration.d.ts +22 -0
- package/build/src/verification/declaration.js +14 -0
- package/build/src/verification/producer.d.ts +23 -0
- package/build/src/verification/producer.js +54 -0
- package/package.json +62 -44
- package/build/.tsbuildinfo +0 -1
- package/build/agents/call-terms.js +0 -32
- package/build/agents/harness/activity-values.js +0 -70
- package/build/agents/harness/control-types.js +0 -18
- package/build/agents/harness/event-channel.js +0 -213
- package/build/agents/harness/event-persistence.js +0 -220
- package/build/agents/harness/events.js +0 -48
- package/build/agents/harness/execution-handle.js +0 -172
- package/build/agents/harness/index.js +0 -11
- package/build/agents/harness/outcome-error.js +0 -81
- package/build/agents/harness/outcome.js +0 -220
- package/build/agents/harness/projection.js +0 -369
- package/build/agents/harness/provider-adapter.js +0 -58
- package/build/agents/harness/router.js +0 -30
- package/build/agents/harness/runtime.js +0 -85
- package/build/agents/harness/session.js +0 -15
- package/build/agents/launch-snapshot/model.js +0 -127
- package/build/agents/launch-snapshot/parse-helpers.js +0 -114
- package/build/agents/launch-snapshot/resolve.js +0 -46
- package/build/agents/opencode-sdk.js +0 -159
- package/build/agents/providers/claude-agent-sdk/adapter.js +0 -396
- package/build/agents/providers/claude-agent-sdk/events.js +0 -218
- package/build/agents/providers/claude-agent-sdk/registration.js +0 -225
- package/build/agents/providers/claude-agent-sdk/session-schema.js +0 -2
- package/build/agents/providers/claude-agent-sdk/session.js +0 -172
- package/build/agents/providers/codex-app-server/adapter.js +0 -387
- package/build/agents/providers/codex-app-server/events.js +0 -492
- package/build/agents/providers/codex-app-server/identity.js +0 -1
- package/build/agents/providers/codex-app-server/policy.js +0 -29
- package/build/agents/providers/codex-app-server/registration.js +0 -259
- package/build/agents/providers/codex-app-server/session-schema.js +0 -6
- package/build/agents/providers/codex-app-server/session.js +0 -273
- package/build/agents/providers/event-type-tail.js +0 -16
- package/build/agents/providers/opencode-sdk/adapter.js +0 -402
- package/build/agents/providers/opencode-sdk/events.js +0 -380
- package/build/agents/providers/opencode-sdk/registration.js +0 -146
- package/build/agents/providers/opencode-sdk/session-schema.js +0 -2
- package/build/agents/providers/opencode-sdk/session.js +0 -187
- package/build/agents/providers/pi/adapter.js +0 -285
- package/build/agents/providers/pi/checkpoint.js +0 -49
- package/build/agents/providers/pi/events.js +0 -285
- package/build/agents/providers/pi/registration.js +0 -160
- package/build/agents/providers/pi/session-schema.js +0 -6
- package/build/agents/providers/registration.js +0 -7
- package/build/agents/providers/registry.js +0 -76
- package/build/agents/selector.js +0 -120
- package/build/agents/session.js +0 -29
- package/build/agents/string-tail-buffer.js +0 -44
- package/build/agents/types.js +0 -30
- package/build/artifact-directories.js +0 -22
- package/build/cli/commands/akuma/akuma/handler.js +0 -5
- package/build/cli/commands/akuma/akuma/meta.js +0 -17
- package/build/cli/commands/akuma/catalog.js +0 -10
- package/build/cli/commands/akuma/list/handler.js +0 -15
- package/build/cli/commands/akuma/list/meta-list.js +0 -12
- package/build/cli/commands/akuma/list/meta-ls.js +0 -9
- package/build/cli/commands/akuma/show/handler.js +0 -27
- package/build/cli/commands/akuma/show/meta.js +0 -8
- package/build/cli/commands/akuma.js +0 -186
- package/build/cli/commands/contract/amend/handler.js +0 -17
- package/build/cli/commands/contract/amend/meta.js +0 -13
- package/build/cli/commands/contract/arc/handler.js +0 -16
- package/build/cli/commands/contract/arc/meta.js +0 -28
- package/build/cli/commands/contract/audit/handler.js +0 -42
- package/build/cli/commands/contract/audit/meta.js +0 -17
- package/build/cli/commands/contract/bind/handler.js +0 -39
- package/build/cli/commands/contract/bind/meta.js +0 -96
- package/build/cli/commands/contract/catalog.js +0 -18
- package/build/cli/commands/contract/forfeit/handler.js +0 -17
- package/build/cli/commands/contract/forfeit/meta.js +0 -12
- package/build/cli/commands/contract/log/handler.js +0 -12
- package/build/cli/commands/contract/log/meta.js +0 -12
- package/build/cli/commands/contract/petition/handler.js +0 -64
- package/build/cli/commands/contract/petition/meta.js +0 -23
- package/build/cli/commands/contract/renew/handler.js +0 -65
- package/build/cli/commands/contract/renew/meta.js +0 -19
- package/build/cli/commands/metadata.js +0 -68
- package/build/cli/commands/projection/call/handler.js +0 -43
- package/build/cli/commands/projection/call/meta.js +0 -12
- package/build/cli/commands/projection/catalog.js +0 -16
- package/build/cli/commands/projection/fork/handler.js +0 -61
- package/build/cli/commands/projection/fork/meta.js +0 -12
- package/build/cli/commands/projection/history/handler.js +0 -65
- package/build/cli/commands/projection/history/meta.js +0 -9
- package/build/cli/commands/projection/kill/handler.js +0 -20
- package/build/cli/commands/projection/kill/meta.js +0 -11
- package/build/cli/commands/projection/shared.js +0 -27
- package/build/cli/commands/projection/status/handler.js +0 -42
- package/build/cli/commands/projection/status/meta.js +0 -20
- package/build/cli/commands/projection/tell/handler.js +0 -32
- package/build/cli/commands/projection/tell/meta.js +0 -12
- package/build/cli/commands/projection/wait/handler.js +0 -80
- package/build/cli/commands/projection/wait/meta.js +0 -16
- package/build/cli/commands/registry.js +0 -48
- package/build/cli/commands/shared.js +0 -74
- package/build/cli/commands/skills/catalog.js +0 -6
- package/build/cli/commands/skills/install/handler.js +0 -7
- package/build/cli/commands/skills/install/meta.js +0 -9
- package/build/cli/commands/skills/skills/handler.js +0 -4
- package/build/cli/commands/skills/skills/meta.js +0 -10
- package/build/cli/commands/system/catalog.js +0 -10
- package/build/cli/commands/system/completion/handler.js +0 -10
- package/build/cli/commands/system/completion/meta.js +0 -9
- package/build/cli/commands/system/dump-env/handler.js +0 -3
- package/build/cli/commands/system/dump-env/meta.js +0 -10
- package/build/cli/commands/system/guide/handler.js +0 -4
- package/build/cli/commands/system/guide/meta.js +0 -9
- package/build/cli/commands/task/add/handler.js +0 -38
- package/build/cli/commands/task/add/meta.js +0 -31
- package/build/cli/commands/task/catalog.js +0 -32
- package/build/cli/commands/task/compose/handler.js +0 -18
- package/build/cli/commands/task/compose/meta.js +0 -10
- package/build/cli/commands/task/doctor/handler.js +0 -3
- package/build/cli/commands/task/doctor/meta.js +0 -8
- package/build/cli/commands/task/done/handler.js +0 -10
- package/build/cli/commands/task/done/meta.js +0 -8
- package/build/cli/commands/task/drop/handler.js +0 -8
- package/build/cli/commands/task/drop/meta.js +0 -11
- package/build/cli/commands/task/hold/handler.js +0 -3
- package/build/cli/commands/task/hold/meta.js +0 -8
- package/build/cli/commands/task/log/handler.js +0 -12
- package/build/cli/commands/task/log/meta.js +0 -8
- package/build/cli/commands/task/ls/handler.js +0 -17
- package/build/cli/commands/task/ls/meta.js +0 -8
- package/build/cli/commands/task/note/handler.js +0 -6
- package/build/cli/commands/task/note/meta.js +0 -11
- package/build/cli/commands/task/resume/handler.js +0 -3
- package/build/cli/commands/task/resume/meta.js +0 -8
- package/build/cli/commands/task/shared.js +0 -181
- package/build/cli/commands/task/show/handler.js +0 -13
- package/build/cli/commands/task/show/meta.js +0 -8
- package/build/cli/commands/task/start/handler.js +0 -3
- package/build/cli/commands/task/start/meta.js +0 -8
- package/build/cli/commands/task/stop/handler.js +0 -10
- package/build/cli/commands/task/stop/meta.js +0 -8
- package/build/cli/commands/task/task/handler.js +0 -5
- package/build/cli/commands/task/task/meta.js +0 -11
- package/build/cli/commands/task/update/handler.js +0 -21
- package/build/cli/commands/task/update/meta.js +0 -12
- package/build/cli/commands/verification/handler.js +0 -43
- package/build/cli/commands/verification/meta.js +0 -13
- package/build/cli/completion.js +0 -91
- package/build/cli/draft-artifact.js +0 -50
- package/build/cli/flags.js +0 -321
- package/build/cli/help.js +0 -99
- package/build/cli/index.js +0 -333
- package/build/cli/missing-subcommand.js +0 -7
- package/build/cli/output-stream-error-policy.js +0 -31
- package/build/cli/parse-flags.js +0 -301
- package/build/cli/parse-metadata.js +0 -132
- package/build/cli/parse-selectors.js +0 -83
- package/build/cli/parse.js +0 -250
- package/build/cli/projection-address.js +0 -105
- package/build/cli/render/address.js +0 -101
- package/build/cli/render/amendment-warning.js +0 -8
- package/build/cli/render/arc.js +0 -88
- package/build/cli/render/audit.js +0 -440
- package/build/cli/render/call.js +0 -70
- package/build/cli/render/compact-text.js +0 -3
- package/build/cli/render/errors.js +0 -101
- package/build/cli/render/format.js +0 -226
- package/build/cli/render/kanshi.js +0 -300
- package/build/cli/render/kill.js +0 -9
- package/build/cli/render/lifecycle.js +0 -56
- package/build/cli/render/line-width.js +0 -103
- package/build/cli/render/misc.js +0 -84
- package/build/cli/render/path-prefix-compaction.js +0 -131
- package/build/cli/render/petition.js +0 -85
- package/build/cli/render/projection-activity.js +0 -332
- package/build/cli/render/projection-history.js +0 -77
- package/build/cli/render/response-style.js +0 -27
- package/build/cli/render/shared.js +0 -232
- package/build/cli/render/skills.js +0 -10
- package/build/cli/render/status-indicator.js +0 -47
- package/build/cli/render/status.js +0 -243
- package/build/cli/render/success-response.js +0 -95
- package/build/cli/render/task.js +0 -175
- package/build/cli/render/tell.js +0 -11
- package/build/cli/render/terminal-failure.js +0 -65
- package/build/cli/render/tool-command-normalization.js +0 -137
- package/build/cli/render/tool-ledger-rollup.js +0 -74
- package/build/cli/render/tool-presentation.js +0 -98
- package/build/cli/render/types.js +0 -2
- package/build/cli/render/verification.js +0 -23
- package/build/cli/render/wait.js +0 -343
- package/build/cli/skills-install.js +0 -348
- package/build/cli/subagent-guard.js +0 -25
- package/build/cli/types.js +0 -2
- package/build/config/akuma-loader.js +0 -240
- package/build/config/env-keys.js +0 -57
- package/build/config/env.js +0 -304
- package/build/config/provider-policy-ownership.js +0 -10
- package/build/config/settings/disease.js +0 -33
- package/build/config/settings/knobs.js +0 -14
- package/build/config/settings/loader.js +0 -275
- package/build/config/settings/provider-instance-fields.js +0 -51
- package/build/config/settings/schema.js +0 -113
- package/build/core/address-carrier.js +0 -89
- package/build/core/addressing.js +0 -407
- package/build/core/amend.js +0 -321
- package/build/core/amendment-criteria.js +0 -17
- package/build/core/amendment-warning.js +0 -10
- package/build/core/arc.js +0 -293
- package/build/core/atomic-publish.js +0 -64
- package/build/core/audit/candidate.js +0 -141
- package/build/core/audit/coordinates.js +0 -230
- package/build/core/audit/evidence.js +0 -156
- package/build/core/audit/facade.js +0 -65
- package/build/core/audit/readiness.js +0 -4
- package/build/core/audit/report.js +0 -38
- package/build/core/audit.js +0 -1
- package/build/core/bind-reconciliation.js +0 -409
- package/build/core/bind-workspace.js +0 -115
- package/build/core/bind.js +0 -503
- package/build/core/call/call.js +0 -235
- package/build/core/call/context.js +0 -210
- package/build/core/call/execution.js +0 -255
- package/build/core/call/prompt.js +0 -27
- package/build/core/call/reference.js +0 -24
- package/build/core/call-persist.js +0 -76
- package/build/core/command-markdown.js +0 -45
- package/build/core/context.js +0 -104
- package/build/core/contract-carrier-runtime.js +0 -512
- package/build/core/contract-carrier.js +0 -353
- package/build/core/contract-view.js +0 -319
- package/build/core/contract.js +0 -19
- package/build/core/derived-replay.js +0 -340
- package/build/core/draft.js +0 -400
- package/build/core/execution-coordinate.js +0 -46
- package/build/core/execution-pact.js +0 -126
- package/build/core/forfeit.js +0 -132
- package/build/core/hints.js +0 -34
- package/build/core/identifier-slug.js +0 -116
- package/build/core/ids.js +0 -90
- package/build/core/lifecycle-history.js +0 -48
- package/build/core/lifecycle-recovery.js +0 -122
- package/build/core/lifecycle-runner.js +0 -377
- package/build/core/log.js +0 -50
- package/build/core/markdown/lex.js +0 -274
- package/build/core/markdown/parser.js +0 -260
- package/build/core/markdown/render.js +0 -68
- package/build/core/markdown/sections.js +0 -80
- package/build/core/markdown/titles.js +0 -9
- package/build/core/markdown/types.js +0 -6
- package/build/core/outcome-base.js +0 -185
- package/build/core/places.js +0 -175
- package/build/core/projection/akuma-name.js +0 -43
- package/build/core/projection/generation/database.js +0 -473
- package/build/core/projection/generation/identity.js +0 -84
- package/build/core/projection/generation/ledger.js +0 -91
- package/build/core/projection/generation/model.js +0 -261
- package/build/core/projection/generation/projection-generation-continuation.js +0 -84
- package/build/core/projection/generation/projection-generation-doorbell.js +0 -88
- package/build/core/projection/generation/projection-generation-execution.js +0 -241
- package/build/core/projection/generation/projection-generation-identity.js +0 -21
- package/build/core/projection/generation/projection-generation-launcher.js +0 -154
- package/build/core/projection/generation/projection-generation-process.js +0 -47
- package/build/core/projection/generation/projection-generation-runner.js +0 -489
- package/build/core/projection/generation/projection-generation-runtime.js +0 -46
- package/build/core/projection/generation/protocol.js +0 -68
- package/build/core/projection/generation/store.js +0 -108
- package/build/core/projection/generation/transitions.js +0 -463
- package/build/core/projection/heart.js +0 -9
- package/build/core/projection/index.js +0 -28
- package/build/core/projection/projection-activity.js +0 -273
- package/build/core/projection/projection-alias.js +0 -131
- package/build/core/projection/projection-coordinate.js +0 -61
- package/build/core/projection/projection-core.js +0 -127
- package/build/core/projection/projection-execution-observer.js +0 -270
- package/build/core/projection/projection-history.js +0 -474
- package/build/core/projection/projection-identity.js +0 -11
- package/build/core/projection/projection-kill.js +0 -112
- package/build/core/projection/projection-life-observer.js +0 -101
- package/build/core/projection/projection-mint.js +0 -170
- package/build/core/projection/projection-status-observation.js +0 -434
- package/build/core/projection/projection-status.js +0 -442
- package/build/core/projection/projection-terminal-failure.js +0 -111
- package/build/core/projection/projection-wait.js +0 -337
- package/build/core/projection/projection-wake.js +0 -298
- package/build/core/projection/tell/launch-store.js +0 -244
- package/build/core/projection/tell/model.js +0 -98
- package/build/core/projection/tell/store.js +0 -245
- package/build/core/provider-loader-ports.js +0 -4
- package/build/core/registry.js +0 -100
- package/build/core/renew-build.js +0 -554
- package/build/core/renew-plan.js +0 -264
- package/build/core/renew-rewrite.js +0 -118
- package/build/core/renew.js +0 -345
- package/build/core/repository-ledger/accepted-fold-read.js +0 -22
- package/build/core/repository-ledger/accepted-tail.js +0 -116
- package/build/core/repository-ledger/admission.js +0 -38
- package/build/core/repository-ledger/authoritative-transaction.js +0 -1
- package/build/core/repository-ledger/claim-evidence.js +0 -147
- package/build/core/repository-ledger/codec.js +0 -303
- package/build/core/repository-ledger/current-state-store.js +0 -968
- package/build/core/repository-ledger/fold-repository.js +0 -374
- package/build/core/repository-ledger/fold.js +0 -248
- package/build/core/repository-ledger/git-object-store.js +0 -243
- package/build/core/repository-ledger/history-read.js +0 -15
- package/build/core/repository-ledger/identity.js +0 -60
- package/build/core/repository-ledger/incremental-read.js +0 -153
- package/build/core/repository-ledger/index.js +0 -15
- package/build/core/repository-ledger/inventory-plan.js +0 -75
- package/build/core/repository-ledger/inventory.js +0 -310
- package/build/core/repository-ledger/publication-admission.js +0 -125
- package/build/core/repository-ledger/publication.js +0 -353
- package/build/core/repository-ledger/read-model.js +0 -517
- package/build/core/repository-ledger/transaction-membership.js +0 -78
- package/build/core/repository-ledger/traversal.js +0 -404
- package/build/core/repository-ledger/write-transaction.js +0 -346
- package/build/core/response-artifact-catalog-sqlite.js +0 -112
- package/build/core/response-artifact-catalog.js +0 -7
- package/build/core/response-artifact-id.js +0 -5
- package/build/core/run-control/connection-bound-close.js +0 -41
- package/build/core/run-control/detached-lease-bootstrap.js +0 -208
- package/build/core/run-control/detached-process.js +0 -14
- package/build/core/run-control/index.js +0 -6
- package/build/core/run-control/process-tree.js +0 -139
- package/build/core/run-control/runner-lease.js +0 -172
- package/build/core/run-control/sqlite-process-lifetime-lock.js +0 -174
- package/build/core/scope.js +0 -416
- package/build/core/seal.js +0 -364
- package/build/core/settlement/claim-delivery.js +0 -82
- package/build/core/settlement/claim.js +0 -258
- package/build/core/settlement/index.js +0 -19
- package/build/core/settlement/petition-claim-gates.js +0 -247
- package/build/core/settlement/petition-forfeit.js +0 -46
- package/build/core/settlement/petition-head-guard.js +0 -12
- package/build/core/settlement/petition-io.js +0 -1
- package/build/core/settlement/petition-preview.js +0 -125
- package/build/core/settlement/petition-window.js +0 -50
- package/build/core/settlement/petition.js +0 -315
- package/build/core/settlement/queue-read-model.js +0 -120
- package/build/core/settlement/queue-seat-allocation.js +0 -65
- package/build/core/settlement/queue.js +0 -6
- package/build/core/settlement/settlement.js +0 -385
- package/build/core/settlement/verdict.js +0 -126
- package/build/core/settlement/verification.js +0 -554
- package/build/core/status/board.js +0 -455
- package/build/core/status/drift.js +0 -113
- package/build/core/status/lifecycle.js +0 -11
- package/build/core/stored-agent-event.js +0 -129
- package/build/core/structured-query.js +0 -23
- package/build/core/target-ref.js +0 -10
- package/build/core/task/board.js +0 -248
- package/build/core/task/commands.js +0 -401
- package/build/core/task/compose.js +0 -328
- package/build/core/task/coordinate.js +0 -56
- package/build/core/task/document.js +0 -273
- package/build/core/task/index.js +0 -16
- package/build/core/task/model.js +0 -8
- package/build/core/task/query.js +0 -204
- package/build/core/task/settlement-git.js +0 -423
- package/build/core/task/settlement-policy.js +0 -137
- package/build/core/task/source-board.js +0 -104
- package/build/core/task/source-model.js +0 -1
- package/build/core/task/task-bind-preparation.js +0 -243
- package/build/core/task/task-contract.js +0 -371
- package/build/core/task/task-doctor.js +0 -14
- package/build/core/task/task-file-transaction.js +0 -171
- package/build/core/task/task-git-actor.js +0 -33
- package/build/core/task/task-git-runtime.js +0 -97
- package/build/core/task/task-git-store.js +0 -400
- package/build/core/task/task-repository.js +0 -1
- package/build/core/task/task-store-repository.js +0 -97
- package/build/core/task/task-store.js +0 -1
- package/build/core/task/task-worktree.js +0 -25
- package/build/core/task/task.js +0 -7
- package/build/core/task/tree.js +0 -37
- package/build/core/task/validation.js +0 -48
- package/build/core/transcripts.js +0 -485
- package/build/core/validation.js +0 -17
- package/build/core/verification-declaration.js +0 -95
- package/build/core/worktree-bootstrap.js +0 -195
- package/build/core/worktree-path.js +0 -371
- package/build/errno.js +0 -3
- package/build/flow-error.js +0 -191
- package/build/fs/durability.js +0 -27
- package/build/fs/path-coordinate.js +0 -16
- package/build/generated/version.js +0 -3
- package/build/git/branches.js +0 -84
- package/build/git/commits.js +0 -151
- package/build/git/core.js +0 -86
- package/build/git/diff/parsers.js +0 -181
- package/build/git/diff/pathspec.js +0 -3
- package/build/git/diff/preview.js +0 -38
- package/build/git/diff/read.js +0 -105
- package/build/git/diff/structured.js +0 -127
- package/build/git/diff/types.js +0 -1
- package/build/git/path-coordinate.js +0 -17
- package/build/git/process.js +0 -229
- package/build/git/refs.js +0 -250
- package/build/git/staging.js +0 -79
- package/build/git/streaming-batch.js +0 -354
- package/build/git/worktree.js +0 -175
- package/build/index.js +0 -67
- package/build/keiyaku-constants.js +0 -2
- package/build/keiyaku.js +0 -30
- package/build/telemetry/debug-log.js +0 -40
- package/build/telemetry/logger.js +0 -48
- package/skills/keiyaku/SKILL.md +0 -46
- package/skills/keiyaku-akuma/SKILL.md +0 -97
- package/skills/keiyaku-task/SKILL.md +0 -118
- package/skills/keiyaku-workflow/SKILL.md +0 -191
- /package/build/{agents/launch-snapshot → src/body}/types.js +0 -0
- /package/build/{agents/providers/claude-agent-sdk/terms.js → src/cli/result.js} +0 -0
- /package/build/{agents/providers/codex-app-server/terms.js → src/core/decide.js} +0 -0
- /package/build/{agents/providers/opencode-sdk/terms.js → src/core/facts/offer.js} +0 -0
- /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
|
-
|
|
3
|
+
Keiyaku v4 is a clean implementation of an agent-facing contract workflow.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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,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,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
|
+
}
|