@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
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { FlowError } from "../../flow-error.js";
|
|
2
|
-
import { readRepositoryLifecycle } from "../repository-ledger/read-model.js";
|
|
3
|
-
import { queueMembership, } from "./queue-read-model.js";
|
|
4
|
-
function isPositiveSafeInteger(value) {
|
|
5
|
-
return typeof value === "number" && Number.isSafeInteger(value) && value > 0;
|
|
6
|
-
}
|
|
7
|
-
export function assertClaimQueueHead(model, contractId) {
|
|
8
|
-
const lifecycleDisease = model.diagnosticsByContract.get(contractId)?.find((diagnostic) => diagnostic.kind === "lifecycle-disease");
|
|
9
|
-
if (lifecycleDisease?.kind === "lifecycle-disease") {
|
|
10
|
-
throw new FlowError("INTERNAL_STATE", `contract ${contractId} is unavailable because its repository ledger history is ${lifecycleDisease.status}`, {
|
|
11
|
-
facts: {
|
|
12
|
-
kind: "repository_lifecycle_disease",
|
|
13
|
-
contractId,
|
|
14
|
-
status: lifecycleDisease.status,
|
|
15
|
-
diagnostics: lifecycleDisease.diagnostics.map((diagnostic) => ({ ...diagnostic })),
|
|
16
|
-
},
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
const membership = queueMembership(model, contractId);
|
|
20
|
-
if (!membership) {
|
|
21
|
-
if (model.unattributedDiagnostics.length > 0) {
|
|
22
|
-
throw new FlowError("INTERNAL_STATE", `contract ${contractId} queue membership is indeterminate because the repository ledger is diseased`, {
|
|
23
|
-
facts: {
|
|
24
|
-
kind: "repository_lifecycle_disease",
|
|
25
|
-
contractId,
|
|
26
|
-
status: "indeterminate",
|
|
27
|
-
diagnostics: model.unattributedDiagnostics.map((diagnostic) => ({ ...diagnostic })),
|
|
28
|
-
},
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
throw new FlowError("INTERNAL_STATE", `contract ${contractId} is not queue head; position=not queued`);
|
|
32
|
-
}
|
|
33
|
-
const collision = membership.diagnostics.find((diagnostic) => diagnostic.kind === "duplicate-seat");
|
|
34
|
-
if (collision && collision.kind === "duplicate-seat") {
|
|
35
|
-
throw new FlowError("INTERNAL_STATE", `contract ${contractId} has duplicate settlement seat ${collision.seat} with ${collision.with}; reject its petition and petition again`);
|
|
36
|
-
}
|
|
37
|
-
if (membership.position !== 1) {
|
|
38
|
-
throw new FlowError("INTERNAL_STATE", `contract ${contractId} is not queue head; position=${membership.position ?? "not queued"}`);
|
|
39
|
-
}
|
|
40
|
-
return membership;
|
|
41
|
-
}
|
|
42
|
-
async function ledgerSeatFloor(cwd, target) {
|
|
43
|
-
const lifecycle = await readRepositoryLifecycle(cwd);
|
|
44
|
-
let maxSeat = 0;
|
|
45
|
-
for (const model of lifecycle.contracts) {
|
|
46
|
-
for (const { entry } of model.history) {
|
|
47
|
-
if (entry.kind !== "petition")
|
|
48
|
-
continue;
|
|
49
|
-
if (entry.data.target !== target)
|
|
50
|
-
continue;
|
|
51
|
-
if (entry.data.seat > maxSeat)
|
|
52
|
-
maxSeat = entry.data.seat;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
return maxSeat;
|
|
56
|
-
}
|
|
57
|
-
export async function allocateSettlementSeat(cwd, input) {
|
|
58
|
-
// The candidate is derived from one typed ledger observation. The later
|
|
59
|
-
// repository-ledger transaction owns the only authoritative CAS and commit.
|
|
60
|
-
const seat = (await ledgerSeatFloor(cwd, input.target)) + 1;
|
|
61
|
-
if (!isPositiveSafeInteger(seat)) {
|
|
62
|
-
throw new FlowError("INTERNAL_STATE", `settlement seats exhausted for ${input.target}`);
|
|
63
|
-
}
|
|
64
|
-
return { seat };
|
|
65
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Settlement queue surface: read-model derivation/query and seat allocation/assertion.
|
|
3
|
-
* Implementation lives in sibling files; this module preserves the historical import path.
|
|
4
|
-
*/
|
|
5
|
-
export { deriveQueueReadModel, queueMembership, readQueueReadModel, } from "./queue-read-model.js";
|
|
6
|
-
export { allocateSettlementSeat, assertClaimQueueHead, } from "./queue-seat-allocation.js";
|
|
@@ -1,385 +0,0 @@
|
|
|
1
|
-
import { FlowError } from "../../flow-error.js";
|
|
2
|
-
import { readCurrentContractContext } from "../context.js";
|
|
3
|
-
import { convergeContractCarrier, withContractCarrierSession } from "../contract-carrier.js";
|
|
4
|
-
import { requireCommitCoordinate } from "../../git/commits.js";
|
|
5
|
-
import { getCurrentBranch, requireGitRepository } from "../../git/branches.js";
|
|
6
|
-
import { readContractLog } from "../log.js";
|
|
7
|
-
import { scopePathEvidence } from "../scope.js";
|
|
8
|
-
import { nextReviewResponseNumber } from "../transcripts.js";
|
|
9
|
-
import { stableRepoRoot } from "../worktree-path.js";
|
|
10
|
-
import { isCompleteLifecycleOutcome } from "../outcome-base.js";
|
|
11
|
-
import { claimContract } from "./claim.js";
|
|
12
|
-
import { assertClaimQueueHead, deriveQueueReadModel } from "./queue.js";
|
|
13
|
-
import { classifyCurrentPetitionWindow } from "./petition-window.js";
|
|
14
|
-
import { buildClaimGatePipeline, } from "./petition-claim-gates.js";
|
|
15
|
-
import { composeVerificationPlan, contractVerificationDeclarations, resolveVerificationPolicy } from "./verification.js";
|
|
16
|
-
import { forfeitKeiyaku } from "./petition-forfeit.js";
|
|
17
|
-
import { assertHeadUnchanged } from "./petition-head-guard.js";
|
|
18
|
-
import { petitionContract } from "./petition.js";
|
|
19
|
-
import { verdictContract } from "./verdict.js";
|
|
20
|
-
const VERDICT_DENIED_CODE = "VERDICT_DENIED";
|
|
21
|
-
async function resolveClaimGateConfig(cwd) {
|
|
22
|
-
const merged = {
|
|
23
|
-
repositoryGates: [],
|
|
24
|
-
verificationTimeoutMs: 300_000,
|
|
25
|
-
};
|
|
26
|
-
try {
|
|
27
|
-
const policy = await resolveVerificationPolicy(cwd);
|
|
28
|
-
merged.repositoryGates = policy.commands;
|
|
29
|
-
merged.verificationTimeoutMs = policy.timeoutMs;
|
|
30
|
-
return merged;
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
if (error instanceof FlowError && error.code === "INVALID_SETTINGS") {
|
|
34
|
-
throw new FlowError(VERDICT_DENIED_CODE, `Configuration Error: ${error.message}`, {
|
|
35
|
-
cause: error,
|
|
36
|
-
facts: error.facts,
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
throw error;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
async function pinnedCloseCandidate(cwd, contractId, signal) {
|
|
43
|
-
return withContractCarrierSession({ cwd, contractId, mode: "observe-only", signal }, async (session) => {
|
|
44
|
-
if (session.target.status !== "available" || !session.pins.delivery.head) {
|
|
45
|
-
throw new FlowError("INTERNAL_STATE", session.target.status === "available" ? `contract ${contractId} delivery ref does not resolve` : session.target.reason);
|
|
46
|
-
}
|
|
47
|
-
const coordinate = await requireCommitCoordinate(session.target.root, "HEAD");
|
|
48
|
-
if (coordinate.commit !== session.pins.delivery.head) {
|
|
49
|
-
throw new FlowError("INTERNAL_STATE", `contract ${contractId} delivery head changed while petition was being prepared`);
|
|
50
|
-
}
|
|
51
|
-
const bind = session.lifecycle.history.find(({ entry }) => entry.kind === "bind")?.entry;
|
|
52
|
-
return {
|
|
53
|
-
deliveryCwd: session.target.root,
|
|
54
|
-
candidate: { head: coordinate.commit, tree: coordinate.tree },
|
|
55
|
-
contractVerification: contractVerificationDeclarations(session.lifecycle),
|
|
56
|
-
preparation: bind?.kind === "bind" && bind.data.workspace === "worktree" ? bind.data.bootstrap ?? null : null,
|
|
57
|
-
};
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
async function loadCloseContext(cwd, requestedContractId, signal) {
|
|
61
|
-
await requireGitRepository(cwd, "petition");
|
|
62
|
-
if (requestedContractId) {
|
|
63
|
-
const lifecycle = (await convergeContractCarrier({ cwd, contractId: requestedContractId, signal, mode: "observe-only" })).lifecycle;
|
|
64
|
-
const pinned = await pinnedCloseCandidate(cwd, requestedContractId, signal);
|
|
65
|
-
return {
|
|
66
|
-
cwd,
|
|
67
|
-
deliveryCwd: pinned.deliveryCwd,
|
|
68
|
-
verificationCandidate: pinned.candidate,
|
|
69
|
-
contractVerification: pinned.contractVerification,
|
|
70
|
-
verificationPreparation: pinned.preparation,
|
|
71
|
-
keiyakuBranch: `keiyaku/${requestedContractId}`,
|
|
72
|
-
baseBranch: lifecycle.pins.target.ref.slice("refs/heads/".length),
|
|
73
|
-
contractId: requestedContractId,
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
let contractContext;
|
|
77
|
-
try {
|
|
78
|
-
contractContext = await readCurrentContractContext(cwd);
|
|
79
|
-
}
|
|
80
|
-
catch (error) {
|
|
81
|
-
if (!(error instanceof FlowError) || error.code !== "EMPTY_PARAM") {
|
|
82
|
-
throw error;
|
|
83
|
-
}
|
|
84
|
-
throw new FlowError("NOT_ACTIVE_KEIYAKU_BRANCH", "Current workspace is not addressing an active Keiyaku contract.");
|
|
85
|
-
}
|
|
86
|
-
const keiyakuBranch = await getCurrentBranch(cwd);
|
|
87
|
-
const pinned = await pinnedCloseCandidate(cwd, contractContext.contractId, signal);
|
|
88
|
-
return {
|
|
89
|
-
cwd,
|
|
90
|
-
deliveryCwd: pinned.deliveryCwd,
|
|
91
|
-
verificationCandidate: pinned.candidate,
|
|
92
|
-
contractVerification: pinned.contractVerification,
|
|
93
|
-
verificationPreparation: pinned.preparation,
|
|
94
|
-
keiyakuBranch,
|
|
95
|
-
baseBranch: contractContext.baseBranch,
|
|
96
|
-
contractId: contractContext.contractId,
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
async function throwClaimGateFailure(failure, _input, context, _dependencies) {
|
|
100
|
-
void _input;
|
|
101
|
-
void _dependencies;
|
|
102
|
-
void context.contractId;
|
|
103
|
-
if (failure.reviewHeadBeforeWrite) {
|
|
104
|
-
await assertHeadUnchanged(context.cwd, failure.reviewHeadBeforeWrite, "claim review");
|
|
105
|
-
}
|
|
106
|
-
throw new FlowError(failure.code, failure.message, {
|
|
107
|
-
review: failure.review,
|
|
108
|
-
facts: failure.facts,
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
async function runClaimGatePipelineOrThrow(input, context, dependencies) {
|
|
112
|
-
const deliveryCwd = context.deliveryCwd ?? context.cwd;
|
|
113
|
-
const verificationCandidate = context.verificationCandidate ?? await (async () => {
|
|
114
|
-
const coordinate = await requireCommitCoordinate(deliveryCwd, "HEAD");
|
|
115
|
-
return { head: coordinate.commit, tree: coordinate.tree };
|
|
116
|
-
})();
|
|
117
|
-
const verificationPreparation = context.verificationPreparation ?? null;
|
|
118
|
-
const gateConfig = await dependencies.resolveClaimGateConfig(context.cwd);
|
|
119
|
-
const repositoryGates = gateConfig.repositoryGates ?? gateConfig.verificationCommands ?? [];
|
|
120
|
-
const verificationPlan = composeVerificationPlan({ contract: context.contractVerification ?? [], repositoryGates, timeoutMs: gateConfig.verificationTimeoutMs });
|
|
121
|
-
const repositoryRoot = await stableRepoRoot(context.cwd);
|
|
122
|
-
let review;
|
|
123
|
-
let reviewHeadBeforeWrite;
|
|
124
|
-
let reviewerActor;
|
|
125
|
-
let reviewPersistence;
|
|
126
|
-
let verification;
|
|
127
|
-
for (const gate of buildClaimGatePipeline()) {
|
|
128
|
-
const result = await gate.evaluate({
|
|
129
|
-
cwd: deliveryCwd,
|
|
130
|
-
repositoryRoot,
|
|
131
|
-
contractId: context.contractId,
|
|
132
|
-
input,
|
|
133
|
-
verificationPlan,
|
|
134
|
-
verificationCandidate,
|
|
135
|
-
verificationPreparation,
|
|
136
|
-
baseBranch: dependencies.baseBranch,
|
|
137
|
-
reviewNumber: dependencies.reviewNumber,
|
|
138
|
-
});
|
|
139
|
-
if (!result.pass) {
|
|
140
|
-
await throwClaimGateFailure(result, input, context, dependencies);
|
|
141
|
-
}
|
|
142
|
-
if (result.review) {
|
|
143
|
-
review = result.review;
|
|
144
|
-
reviewHeadBeforeWrite = result.reviewHeadBeforeWrite;
|
|
145
|
-
}
|
|
146
|
-
if (result.reviewerActor)
|
|
147
|
-
reviewerActor = result.reviewerActor;
|
|
148
|
-
if (result.reviewPersistence)
|
|
149
|
-
reviewPersistence = result.reviewPersistence;
|
|
150
|
-
if ("verification" in result && result.verification)
|
|
151
|
-
verification = result.verification;
|
|
152
|
-
}
|
|
153
|
-
await assertHeadUnchanged(deliveryCwd, verificationCandidate.head, "claim verification");
|
|
154
|
-
return { review, reviewHeadBeforeWrite, reviewerActor, reviewPersistence, verification };
|
|
155
|
-
}
|
|
156
|
-
function maxArc(entries) {
|
|
157
|
-
return entries.filter((entry) => entry.kind === "arc").length;
|
|
158
|
-
}
|
|
159
|
-
function cleanupWarnings(cleanup) {
|
|
160
|
-
return [
|
|
161
|
-
...(cleanup.worktreeRemoveFailure
|
|
162
|
-
? [`Could not remove contract worktree ${cleanup.worktreeRemoveFailure.path}: ${cleanup.worktreeRemoveFailure.reason}`]
|
|
163
|
-
: []),
|
|
164
|
-
...(cleanup.deliveryRef.status === "mismatch"
|
|
165
|
-
? [`Delivery ref ${cleanup.deliveryRef.mismatch.ref} remains present at ${cleanup.deliveryRef.mismatch.observed.head}; terminal replay preserved it as a projected-surface mismatch.`]
|
|
166
|
-
: []),
|
|
167
|
-
];
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Crash-recovery head: petition → approved verdict → no claim.
|
|
171
|
-
* Orchestrator resumes claim delivery only; no gates, petition, or re-judgment.
|
|
172
|
-
*/
|
|
173
|
-
function isApprovedVerdictAwaitingClaim(lifecycle) {
|
|
174
|
-
return lifecycle.phase === "approved"
|
|
175
|
-
&& lifecycle.petition.state === "approved"
|
|
176
|
-
&& lifecycle.petition.intent === "claim";
|
|
177
|
-
}
|
|
178
|
-
/** Resume the first missing stage of an existing petition settlement. */
|
|
179
|
-
export async function reconcilePetitionRetry(input) {
|
|
180
|
-
const observed = await withContractCarrierSession({ ...input, mode: "observe-only" }, async (session) => ({
|
|
181
|
-
window: classifyCurrentPetitionWindow(session.lifecycle, session.pins),
|
|
182
|
-
queue: deriveQueueReadModel(session.repository),
|
|
183
|
-
}));
|
|
184
|
-
if (observed.window.status === "none")
|
|
185
|
-
return { status: "not-needed" };
|
|
186
|
-
if (observed.window.status === "approved-awaiting-claim") {
|
|
187
|
-
return { status: "approved-awaiting-claim" };
|
|
188
|
-
}
|
|
189
|
-
if (observed.window.status === "invalid") {
|
|
190
|
-
throw new FlowError("INTERNAL_STATE", `contract ${input.contractId} petition recovery is invalid: ${observed.window.reason}`);
|
|
191
|
-
}
|
|
192
|
-
assertClaimQueueHead(observed.queue, input.contractId);
|
|
193
|
-
if (observed.window.coordinates === "fresh") {
|
|
194
|
-
return {
|
|
195
|
-
status: "verdict",
|
|
196
|
-
result: "approved",
|
|
197
|
-
reason: "resume",
|
|
198
|
-
verdict: await verdictContract({
|
|
199
|
-
cwd: input.cwd,
|
|
200
|
-
contractId: input.contractId,
|
|
201
|
-
actor: "keiyaku",
|
|
202
|
-
nowMs: Date.now(),
|
|
203
|
-
result: "approved",
|
|
204
|
-
summary: "Recovered passed petition at its pinned candidate.",
|
|
205
|
-
signal: input.signal,
|
|
206
|
-
}),
|
|
207
|
-
};
|
|
208
|
-
}
|
|
209
|
-
const reason = observed.window.coordinates;
|
|
210
|
-
return {
|
|
211
|
-
status: "verdict",
|
|
212
|
-
result: "rejected",
|
|
213
|
-
reason,
|
|
214
|
-
verdict: await verdictContract({
|
|
215
|
-
cwd: input.cwd,
|
|
216
|
-
contractId: input.contractId,
|
|
217
|
-
actor: "keiyaku",
|
|
218
|
-
nowMs: Date.now(),
|
|
219
|
-
result: "rejected",
|
|
220
|
-
summary: reason === "target-drift"
|
|
221
|
-
? "Petition target advanced before verdict."
|
|
222
|
-
: "Petition delivery changed before verdict.",
|
|
223
|
-
signal: input.signal,
|
|
224
|
-
}),
|
|
225
|
-
};
|
|
226
|
-
}
|
|
227
|
-
export async function recoverCurrentPetitionSeal(cwd, lifecycle) {
|
|
228
|
-
if (lifecycle.petition.state !== "approved" || lifecycle.petition.intent !== "claim")
|
|
229
|
-
return undefined;
|
|
230
|
-
const petitionObjectId = lifecycle.petition.objectId;
|
|
231
|
-
const petitionIndex = lifecycle.history.findIndex(({ objectId }) => objectId === petitionObjectId);
|
|
232
|
-
if (petitionIndex <= 0)
|
|
233
|
-
return undefined;
|
|
234
|
-
const seal = lifecycle.history[petitionIndex - 1];
|
|
235
|
-
if (seal?.entry.kind !== "seal" || seal.entry.data.sealedBy !== "petition")
|
|
236
|
-
return undefined;
|
|
237
|
-
const scopeViolationEvidence = await scopePathEvidence(cwd, lifecycle.effectiveScope, seal.entry.data.scopeAudit.violations);
|
|
238
|
-
return {
|
|
239
|
-
...seal.entry.data,
|
|
240
|
-
receipts: [...seal.entry.data.receipts],
|
|
241
|
-
diffstat: { ...seal.entry.data.diffstat },
|
|
242
|
-
scopeAudit: { violations: [...seal.entry.data.scopeAudit.violations] },
|
|
243
|
-
scopeViolationEvidence,
|
|
244
|
-
ledgerHead: seal.objectId,
|
|
245
|
-
};
|
|
246
|
-
}
|
|
247
|
-
async function finishApprovedClaim(context, options) {
|
|
248
|
-
const { cwd, baseBranch, contractId } = context;
|
|
249
|
-
// Capture arc facts before claim cleanup may remove the delivery worktree cwd.
|
|
250
|
-
const log = await readContractLog({ cwd, contractId, signal: options.signal });
|
|
251
|
-
const claimed = await claimContract({
|
|
252
|
-
cwd,
|
|
253
|
-
contractId,
|
|
254
|
-
actor: "keiyaku",
|
|
255
|
-
nowMs: options.nowMs,
|
|
256
|
-
signal: options.signal,
|
|
257
|
-
});
|
|
258
|
-
if (!isCompleteLifecycleOutcome(claimed))
|
|
259
|
-
return claimed;
|
|
260
|
-
if (!claimed.cleanup)
|
|
261
|
-
throw new FlowError("INTERNAL_STATE", "complete claim has no terminal cleanup facts");
|
|
262
|
-
const cleanup = claimed.cleanup;
|
|
263
|
-
const warnings = [...(claimed.warnings ?? []), ...cleanupWarnings(cleanup)];
|
|
264
|
-
return {
|
|
265
|
-
...claimed,
|
|
266
|
-
status: "success",
|
|
267
|
-
result: "merged",
|
|
268
|
-
arc: maxArc(log.entries),
|
|
269
|
-
currentBranch: baseBranch,
|
|
270
|
-
baseBranch,
|
|
271
|
-
commit: claimed.mergeCommit,
|
|
272
|
-
mergedInto: baseBranch,
|
|
273
|
-
cleanup,
|
|
274
|
-
diff: `Merged contract ${contractId} with merge-tree/commit-tree CAS.`,
|
|
275
|
-
// Prior public outcome carried sealed facts when petition sealed an open arc.
|
|
276
|
-
...(options.sealed ? { sealed: options.sealed } : {}),
|
|
277
|
-
...(warnings.length > 0 ? { meta: { warnings } } : {}),
|
|
278
|
-
carrier: claimed.carrier,
|
|
279
|
-
};
|
|
280
|
-
}
|
|
281
|
-
/**
|
|
282
|
-
* Settlement claim path: gates → petition → pure verdict → claim delivery.
|
|
283
|
-
* Stage modules do not call each other; this orchestrator owns the sequence.
|
|
284
|
-
*
|
|
285
|
-
* Atomicity equivalence: previously verdictContract appended the verdict entry
|
|
286
|
-
* then immediately invoked claimContract. That remains two sequential append
|
|
287
|
-
* windows (verdict then claim). Crash after approved verdict leaves state
|
|
288
|
-
* petitioned with an approved verdict; the orchestrator detects that head and
|
|
289
|
-
* resumes claimContract idempotently without re-running gates or judgment.
|
|
290
|
-
*/
|
|
291
|
-
export async function claimKeiyaku(input, context, dependencies) {
|
|
292
|
-
const { cwd, baseBranch, contractId } = context;
|
|
293
|
-
const retry = await reconcilePetitionRetry({
|
|
294
|
-
cwd,
|
|
295
|
-
contractId,
|
|
296
|
-
signal: input.signal,
|
|
297
|
-
});
|
|
298
|
-
if (retry.status === "verdict" && !isCompleteLifecycleOutcome(retry.verdict)) {
|
|
299
|
-
return retry.verdict;
|
|
300
|
-
}
|
|
301
|
-
// Crash recovery: petition → approved verdict → no claim.
|
|
302
|
-
// Resume claim delivery only; do not re-gate, re-petition, or re-judge.
|
|
303
|
-
const existing = await convergeContractCarrier({ cwd, contractId, signal: input.signal, mode: "observe-only" });
|
|
304
|
-
if (isApprovedVerdictAwaitingClaim(existing.lifecycle)) {
|
|
305
|
-
const sealed = await recoverCurrentPetitionSeal(cwd, existing.lifecycle);
|
|
306
|
-
return finishApprovedClaim(context, {
|
|
307
|
-
nowMs: Date.now(),
|
|
308
|
-
signal: input.signal,
|
|
309
|
-
...(sealed ? { sealed } : {}),
|
|
310
|
-
});
|
|
311
|
-
}
|
|
312
|
-
const claimResult = "dangerouslyBypassGates" in input && input.dangerouslyBypassGates
|
|
313
|
-
? { review: undefined, reviewHeadBeforeWrite: undefined, reviewPersistence: undefined, bypassedByArchitect: true }
|
|
314
|
-
: {
|
|
315
|
-
...(await runClaimGatePipelineOrThrow(input, context, {
|
|
316
|
-
...dependencies,
|
|
317
|
-
baseBranch,
|
|
318
|
-
reviewNumber: await nextReviewResponseNumber(cwd),
|
|
319
|
-
})),
|
|
320
|
-
bypassedByArchitect: false,
|
|
321
|
-
};
|
|
322
|
-
const oath = String(input.oath ?? "").trim();
|
|
323
|
-
if (!oath) {
|
|
324
|
-
throw new FlowError("OATH_MISSING", "Oath missing.");
|
|
325
|
-
}
|
|
326
|
-
// 1. Petition: seal + admit onto the target-local settlement queue.
|
|
327
|
-
const petition = await petitionContract({
|
|
328
|
-
cwd,
|
|
329
|
-
contractId,
|
|
330
|
-
actor: "keiyaku",
|
|
331
|
-
nowMs: Date.now(),
|
|
332
|
-
intent: "claim",
|
|
333
|
-
oath,
|
|
334
|
-
appendScope: input.appendScope,
|
|
335
|
-
reviewPersistence: claimResult.reviewPersistence,
|
|
336
|
-
signal: input.signal,
|
|
337
|
-
});
|
|
338
|
-
if (!isCompleteLifecycleOutcome(petition))
|
|
339
|
-
return petition;
|
|
340
|
-
const review = claimResult.review
|
|
341
|
-
? { ...claimResult.review, ...(petition.reviewHistoryPath ? { historyPath: petition.reviewHistoryPath } : {}) }
|
|
342
|
-
: undefined;
|
|
343
|
-
// 2. Pure verdict: judgment facts only; no claim execution.
|
|
344
|
-
// Capture one clock for verdict + claim so ledger timestamps match the prior
|
|
345
|
-
// verdict→claim atomic pair (verdict previously forwarded its own nowMs).
|
|
346
|
-
const judgmentNowMs = Date.now();
|
|
347
|
-
const verdict = await verdictContract({
|
|
348
|
-
cwd,
|
|
349
|
-
contractId,
|
|
350
|
-
actor: claimResult.reviewerActor ?? "keiyaku",
|
|
351
|
-
nowMs: judgmentNowMs,
|
|
352
|
-
result: "approved",
|
|
353
|
-
summary: review?.findings?.trim() || "礼成",
|
|
354
|
-
signal: input.signal,
|
|
355
|
-
});
|
|
356
|
-
if (!isCompleteLifecycleOutcome(verdict))
|
|
357
|
-
return verdict;
|
|
358
|
-
// 3. Execution: approved → claim delivery (same sequential append window as before).
|
|
359
|
-
// Rejected verdict publication is verdictContract itself (state returns active).
|
|
360
|
-
if (verdict.result !== "approved") {
|
|
361
|
-
throw new FlowError("INTERNAL_STATE", `settlement expected approved verdict for ${contractId}, got ${verdict.result}`);
|
|
362
|
-
}
|
|
363
|
-
const completed = await finishApprovedClaim(context, {
|
|
364
|
-
nowMs: judgmentNowMs,
|
|
365
|
-
signal: input.signal,
|
|
366
|
-
...(petition.sealed ? { sealed: petition.sealed } : {}),
|
|
367
|
-
});
|
|
368
|
-
if (!claimResult.verification || !isCompleteLifecycleOutcome(completed))
|
|
369
|
-
return completed;
|
|
370
|
-
return { ...completed, verification: claimResult.verification };
|
|
371
|
-
}
|
|
372
|
-
/** Public settlement entrypoint for CLI petition (claim or forfeit). */
|
|
373
|
-
export async function petitionKeiyaku(input) {
|
|
374
|
-
const context = await loadCloseContext(input.cwd, input.contractId, input.signal);
|
|
375
|
-
const { intent } = input;
|
|
376
|
-
if (intent === "FORFEIT") {
|
|
377
|
-
return forfeitKeiyaku(context, input.signal);
|
|
378
|
-
}
|
|
379
|
-
if (intent === "CLAIM") {
|
|
380
|
-
return claimKeiyaku(input, context, {
|
|
381
|
-
resolveClaimGateConfig,
|
|
382
|
-
});
|
|
383
|
-
}
|
|
384
|
-
throw new FlowError("INVALID_CLOSE_INTENT", `unsupported close intent: ${intent}`);
|
|
385
|
-
}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { FlowError } from "../../flow-error.js";
|
|
2
|
-
import { runLifecycle } from "../lifecycle-runner.js";
|
|
3
|
-
import { assertClaimQueueHead } from "./queue.js";
|
|
4
|
-
import { deriveQueueReadModel } from "./queue-read-model.js";
|
|
5
|
-
import { currentLifecycleState } from "../repository-ledger/read-model.js";
|
|
6
|
-
function assertFoldedPetitioned(contractId, model) {
|
|
7
|
-
const state = currentLifecycleState(model);
|
|
8
|
-
if (state.state !== "petitioned") {
|
|
9
|
-
throw new FlowError("INTERNAL_STATE", `contract ${contractId} cannot verdict from state ${state.state}`);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
function assertApprovedWindow(contractId, model, pins) {
|
|
13
|
-
if (model.petition.state !== "awaiting-verdict") {
|
|
14
|
-
throw new FlowError("VERDICT_DENIED", `contract ${contractId} cannot approve petition without an awaiting-verdict fold`);
|
|
15
|
-
}
|
|
16
|
-
if (!pins.target.head || !pins.delivery.head) {
|
|
17
|
-
throw new FlowError("VERDICT_DENIED", `contract ${contractId} cannot approve petition because current coordinates do not resolve`);
|
|
18
|
-
}
|
|
19
|
-
if (model.pins.base !== pins.target.head) {
|
|
20
|
-
throw new FlowError("VERDICT_DENIED", `contract ${contractId} cannot approve petition from target-drift`);
|
|
21
|
-
}
|
|
22
|
-
if (model.pins.delivery !== pins.delivery.head) {
|
|
23
|
-
throw new FlowError("VERDICT_DENIED", `contract ${contractId} cannot approve petition from delivery-drift`);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Append a verdict entry and return typed judgment facts.
|
|
28
|
-
* Does not claim, clean up, or otherwise execute delivery.
|
|
29
|
-
*/
|
|
30
|
-
export async function verdictContract(input) {
|
|
31
|
-
const at = new Date(input.nowMs).toISOString();
|
|
32
|
-
const execution = await runLifecycle({
|
|
33
|
-
cwd: input.cwd,
|
|
34
|
-
contractId: input.contractId,
|
|
35
|
-
mutation: {
|
|
36
|
-
verb: "verdict",
|
|
37
|
-
matchesAccepted: (transaction) => {
|
|
38
|
-
const accepted = transaction.entries.at(-1);
|
|
39
|
-
return accepted?.kind === "verdict"
|
|
40
|
-
&& accepted.data.result === input.result
|
|
41
|
-
&& accepted.data.summary === input.summary;
|
|
42
|
-
},
|
|
43
|
-
},
|
|
44
|
-
signal: input.signal,
|
|
45
|
-
admit: async (session, replay) => {
|
|
46
|
-
const transaction = replay.state === "verb-committed" ? replay.transaction : undefined;
|
|
47
|
-
const accepted = transaction?.entries.at(-1);
|
|
48
|
-
if (accepted && accepted.kind !== "verdict") {
|
|
49
|
-
throw new FlowError("INTERNAL_STATE", `accepted transaction ${transaction.transactionObjectId} is not a verdict`);
|
|
50
|
-
}
|
|
51
|
-
if (!accepted)
|
|
52
|
-
assertFoldedPetitioned(input.contractId, session.lifecycle);
|
|
53
|
-
const queue = input.result === "approved" && !accepted ? deriveQueueReadModel(session.repository) : null;
|
|
54
|
-
if (queue) {
|
|
55
|
-
assertClaimQueueHead(queue, input.contractId);
|
|
56
|
-
assertApprovedWindow(input.contractId, session.lifecycle, session.pins);
|
|
57
|
-
}
|
|
58
|
-
return {
|
|
59
|
-
existing: accepted?.kind === "verdict"
|
|
60
|
-
? { transactionObjectId: transaction.transactionObjectId, result: accepted.data.result, summary: accepted.data.summary }
|
|
61
|
-
: undefined,
|
|
62
|
-
};
|
|
63
|
-
},
|
|
64
|
-
prepare: () => ({ entry: {
|
|
65
|
-
v: 1,
|
|
66
|
-
kind: "verdict",
|
|
67
|
-
contract: input.contractId,
|
|
68
|
-
at,
|
|
69
|
-
actor: input.actor,
|
|
70
|
-
data: {
|
|
71
|
-
result: input.result,
|
|
72
|
-
summary: input.summary,
|
|
73
|
-
},
|
|
74
|
-
} }),
|
|
75
|
-
revalidate: async ({ session, admission }) => {
|
|
76
|
-
if (admission.business.existing) {
|
|
77
|
-
return session.repository.topology.nodes.some((node) => node.objectId === admission.business.existing.transactionObjectId)
|
|
78
|
-
? undefined
|
|
79
|
-
: { code: "VERDICT_CHANGED", message: "current petition verdict changed during preparation" };
|
|
80
|
-
}
|
|
81
|
-
assertFoldedPetitioned(input.contractId, session.lifecycle);
|
|
82
|
-
if (input.result === "approved") {
|
|
83
|
-
const queue = deriveQueueReadModel(session.repository);
|
|
84
|
-
try {
|
|
85
|
-
assertClaimQueueHead(queue, input.contractId);
|
|
86
|
-
assertApprovedWindow(input.contractId, session.lifecycle, session.pins);
|
|
87
|
-
}
|
|
88
|
-
catch (error) {
|
|
89
|
-
return {
|
|
90
|
-
code: "VERDICT_COORDINATES_CHANGED",
|
|
91
|
-
message: error instanceof Error ? error.message : String(error),
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
return undefined;
|
|
96
|
-
},
|
|
97
|
-
effect: async ({ context, admission, prepared }) => {
|
|
98
|
-
if (admission.business.existing) {
|
|
99
|
-
return {
|
|
100
|
-
kind: "committed",
|
|
101
|
-
commit: await context.replayCommitted({ transactionObjectId: admission.business.existing.transactionObjectId }),
|
|
102
|
-
entryKind: "verdict",
|
|
103
|
-
value: { result: admission.business.existing.result, summary: admission.business.existing.summary },
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
const committed = await context.publishAuthoritative({ verb: "verdict", admittedLedgerHead: admission.ledgerHead, acceptedLifecycleTail: context.session.lifecycle.contractHead, entries: [prepared.entry] });
|
|
107
|
-
if (committed.status === "indeterminate") {
|
|
108
|
-
return { kind: "precommit-effects-only", authoritativeHead: committed.currentHead ?? admission.ledgerHead };
|
|
109
|
-
}
|
|
110
|
-
if (committed.status !== "committed") {
|
|
111
|
-
return { kind: "refused-before-effects", authoritativeHead: committed.currentHead ?? context.session.pins.repositoryLedgerHead, refusal: { code: "LEDGER_CAS_CONFLICT", message: `contract ${input.contractId} changed during verdict` } };
|
|
112
|
-
}
|
|
113
|
-
return {
|
|
114
|
-
kind: "committed",
|
|
115
|
-
commit: committed,
|
|
116
|
-
entryKind: "verdict",
|
|
117
|
-
value: { result: input.result, summary: input.summary },
|
|
118
|
-
};
|
|
119
|
-
},
|
|
120
|
-
});
|
|
121
|
-
if (execution.kind === "noncommitted")
|
|
122
|
-
return execution.outcome;
|
|
123
|
-
if (execution.kind === "contained")
|
|
124
|
-
return { ...execution.outcome, contractId: input.contractId };
|
|
125
|
-
return { ...execution.outcome, contractId: input.contractId, ...execution.payload, carrier: execution.carrier };
|
|
126
|
-
}
|