@astrosheep/keiyaku 2.9.13 → 4.0.1
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 +5 -132
- 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 +42 -0
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-akuma/SKILL.md +53 -0
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-bind/SKILL.md +94 -0
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-bind/agents/openai.yaml +4 -0
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-task/SKILL.md +97 -0
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-workflow/SKILL.md +189 -0
- package/build/src/akuma/akuma.d.ts +124 -0
- package/build/src/akuma/akuma.js +414 -0
- package/build/src/akuma/archetype.d.ts +39 -0
- package/build/src/akuma/archetype.js +207 -0
- package/build/src/akuma/body.d.ts +20 -0
- package/build/src/akuma/body.js +417 -0
- package/build/src/akuma/coordinate.d.ts +9 -0
- package/build/src/akuma/coordinate.js +22 -0
- package/build/src/akuma/heart/facts.d.ts +202 -0
- package/build/src/akuma/heart/facts.js +9 -0
- package/build/src/akuma/heart/index.d.ts +90 -0
- package/build/src/akuma/heart/index.js +240 -0
- package/build/src/akuma/heart/rows.d.ts +166 -0
- package/build/src/akuma/heart/rows.js +299 -0
- package/build/src/akuma/heart/schema.d.ts +5 -0
- package/build/src/akuma/heart/schema.js +160 -0
- package/build/src/akuma/heart/storage.d.ts +33 -0
- package/build/src/akuma/heart/storage.js +164 -0
- package/build/src/akuma/heart/tells.d.ts +12 -0
- package/build/src/akuma/heart/tells.js +79 -0
- package/build/src/akuma/heart/timeline.d.ts +15 -0
- package/build/src/akuma/heart/timeline.js +86 -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 +9 -0
- package/build/src/akuma/index.js +3 -0
- package/build/src/akuma/projection.d.ts +97 -0
- package/build/src/akuma/projection.js +145 -0
- package/build/src/akuma/provider.d.ts +169 -0
- package/build/src/akuma/provider.js +255 -0
- package/build/src/akuma/providers/claude/events.d.ts +52 -0
- package/build/src/akuma/providers/claude/events.js +185 -0
- package/build/src/akuma/providers/claude/index.d.ts +46 -0
- package/build/src/akuma/providers/claude/index.js +265 -0
- package/build/src/akuma/providers/claude/input.d.ts +13 -0
- package/build/src/akuma/providers/claude/input.js +109 -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 +29 -0
- package/build/src/akuma/providers/codex-app-server/index.js +213 -0
- package/build/src/akuma/providers/index.d.ts +4 -0
- package/build/src/akuma/providers/index.js +85 -0
- package/build/src/akuma/providers/opencode-sdk/events.d.ts +48 -0
- package/build/src/akuma/providers/opencode-sdk/events.js +116 -0
- package/build/src/akuma/providers/opencode-sdk/index.d.ts +32 -0
- package/build/src/akuma/providers/opencode-sdk/index.js +203 -0
- package/build/src/akuma/providers/opencode-sdk/session.d.ts +41 -0
- package/build/src/akuma/providers/opencode-sdk/session.js +62 -0
- package/build/src/akuma/providers/pi/events.d.ts +33 -0
- package/build/src/akuma/providers/pi/events.js +128 -0
- package/build/src/akuma/providers/pi/index.d.ts +11 -0
- package/build/src/akuma/providers/pi/index.js +162 -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 +47 -0
- package/build/src/akuma/requests.js +391 -0
- package/build/src/alias/index.d.ts +18 -0
- package/build/src/alias/index.js +103 -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 +74 -0
- package/build/src/body/shape.d.ts +29 -0
- package/build/src/body/shape.js +22 -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 +40 -0
- package/build/src/cli/accepted.d.ts +18 -0
- package/build/src/cli/accepted.js +66 -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 +77 -0
- package/build/src/cli/commands/akuma-invoke.js +112 -0
- package/build/src/cli/commands/akuma.d.ts +50 -0
- package/build/src/cli/commands/akuma.js +262 -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/contract.d.ts +142 -0
- package/build/src/cli/commands/contract.js +14 -0
- package/build/src/cli/commands/install.d.ts +25 -0
- package/build/src/cli/commands/install.js +105 -0
- package/build/src/cli/commands/task-invoke.d.ts +11 -0
- package/build/src/cli/commands/task-invoke.js +117 -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 +22 -0
- package/build/src/cli/invoke.js +463 -0
- package/build/src/cli/main.d.ts +1 -0
- package/build/src/cli/main.js +98 -0
- package/build/src/cli/parse.d.ts +107 -0
- package/build/src/cli/parse.js +348 -0
- package/build/src/cli/render/akuma-tool.d.ts +13 -0
- package/build/src/cli/render/akuma-tool.js +72 -0
- package/build/src/cli/render/akuma.d.ts +7 -0
- package/build/src/cli/render/akuma.js +194 -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/catalog.d.ts +2 -0
- package/build/src/cli/render/catalog.js +16 -0
- package/build/src/cli/render/contract.d.ts +4 -0
- package/build/src/cli/render/contract.js +102 -0
- package/build/src/cli/render/kanshi.d.ts +3 -0
- package/build/src/cli/render/kanshi.js +252 -0
- package/build/src/cli/render/refusal.d.ts +2 -0
- package/build/src/cli/render/refusal.js +21 -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 +23 -0
- package/build/src/cli/render/terminal.js +151 -0
- package/build/src/cli/render/text.d.ts +3 -0
- package/build/src/cli/render/text.js +20 -0
- package/build/src/cli/result.d.ts +67 -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/contract-worktree.d.ts +43 -0
- package/build/src/contract-worktree.js +213 -0
- package/build/src/coordination/durable-file.d.ts +4 -0
- package/build/src/coordination/durable-file.js +79 -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 +277 -0
- package/build/src/core/facts/eligibility.d.ts +7 -0
- package/build/src/core/facts/eligibility.js +26 -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 +15 -0
- package/build/src/core/facts/observation.js +35 -0
- package/build/src/core/facts/offer.d.ts +21 -0
- package/build/src/core/facts/types.d.ts +137 -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 +52 -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 +26 -0
- package/build/src/core/verbs/deliver.d.ts +13 -0
- package/build/src/core/verbs/deliver.js +42 -0
- package/build/src/core/verbs/placement.d.ts +13 -0
- package/build/src/core/verbs/placement.js +37 -0
- package/build/src/dispatch/index.d.ts +33 -0
- package/build/src/dispatch/index.js +168 -0
- package/build/src/duration.d.ts +10 -0
- package/build/src/duration.js +22 -0
- package/build/src/git/admission.d.ts +18 -0
- package/build/src/git/admission.js +126 -0
- package/build/src/git/hooks.d.ts +49 -0
- package/build/src/git/hooks.js +310 -0
- package/build/src/git/identity.d.ts +17 -0
- package/build/src/git/identity.js +47 -0
- package/build/src/git/integration.d.ts +49 -0
- package/build/src/git/integration.js +214 -0
- package/build/src/git/observe.d.ts +50 -0
- package/build/src/git/observe.js +330 -0
- package/build/src/git/read-observation.d.ts +41 -0
- package/build/src/git/read-observation.js +361 -0
- package/build/src/git/reconcile.d.ts +59 -0
- package/build/src/git/reconcile.js +376 -0
- package/build/src/git/repository.d.ts +95 -0
- package/build/src/git/repository.js +490 -0
- package/build/src/git/scratch.d.ts +13 -0
- package/build/src/git/scratch.js +66 -0
- package/build/src/git/target-placement.d.ts +56 -0
- package/build/src/git/target-placement.js +255 -0
- package/build/src/git/tender.d.ts +48 -0
- package/build/src/git/tender.js +82 -0
- package/build/src/git/terminal-seal.d.ts +24 -0
- package/build/src/git/terminal-seal.js +87 -0
- package/build/src/git/tree.d.ts +34 -0
- package/build/src/git/tree.js +116 -0
- package/build/src/git/workspace.d.ts +21 -0
- package/build/src/git/workspace.js +104 -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 +12 -0
- package/build/src/identity/selector.js +26 -0
- package/build/src/index.d.ts +6 -0
- package/build/src/index.js +3 -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 +8 -0
- package/build/src/kanshi/read.js +209 -0
- package/build/src/kanshi/report.d.ts +60 -0
- package/build/src/kanshi/select.d.ts +8 -0
- package/build/src/kanshi/select.js +21 -0
- package/build/src/library/address.d.ts +48 -0
- package/build/src/library/address.js +134 -0
- package/build/src/library/akuma-creation.d.ts +83 -0
- package/build/src/library/akuma-creation.js +152 -0
- package/build/src/library/bind.d.ts +21 -0
- package/build/src/library/bind.js +56 -0
- package/build/src/library/catalog.d.ts +58 -0
- package/build/src/library/catalog.js +72 -0
- package/build/src/library/configuration.d.ts +17 -0
- package/build/src/library/configuration.js +97 -0
- package/build/src/library/contract.d.ts +120 -0
- package/build/src/library/contract.js +335 -0
- package/build/src/library/delivery.d.ts +23 -0
- package/build/src/library/delivery.js +21 -0
- package/build/src/library/fleet.d.ts +65 -0
- package/build/src/library/fleet.js +189 -0
- package/build/src/library/input.d.ts +16 -0
- package/build/src/library/input.js +101 -0
- package/build/src/library/keiyaku.d.ts +42 -0
- package/build/src/library/keiyaku.js +26 -0
- package/build/src/library/mutation.d.ts +38 -0
- package/build/src/library/mutation.js +39 -0
- package/build/src/library/refusal.d.ts +21 -0
- package/build/src/library/refusal.js +29 -0
- package/build/src/library/region.d.ts +18 -0
- package/build/src/library/region.js +30 -0
- package/build/src/library/repo.d.ts +36 -0
- package/build/src/library/repo.js +76 -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 +49 -0
- package/build/src/protocol/attempt.js +150 -0
- package/build/src/protocol/bind.d.ts +32 -0
- package/build/src/protocol/bind.js +70 -0
- package/build/src/protocol/intent.d.ts +76 -0
- package/build/src/protocol/intent.js +90 -0
- package/build/src/protocol/operations.d.ts +198 -0
- package/build/src/protocol/operations.js +485 -0
- package/build/src/protocol/outcome.d.ts +23 -0
- package/build/src/protocol/outcome.js +21 -0
- package/build/src/protocol/placement.d.ts +30 -0
- package/build/src/protocol/placement.js +114 -0
- package/build/src/protocol/read/audit.d.ts +31 -0
- package/build/src/protocol/read/audit.js +55 -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 +44 -0
- package/build/src/protocol/read/status.js +60 -0
- package/build/src/protocol/run.d.ts +81 -0
- package/build/src/protocol/run.js +64 -0
- package/build/src/runtime/proc/line-rpc.d.ts +38 -0
- package/build/src/runtime/proc/line-rpc.js +145 -0
- package/build/src/runtime/proc/run.d.ts +70 -0
- package/build/src/runtime/proc/run.js +226 -0
- package/build/src/settings.d.ts +51 -0
- package/build/src/settings.js +114 -0
- package/build/src/settlement/fence.d.ts +9 -0
- package/build/src/settlement/fence.js +23 -0
- package/build/src/settlement/holder.d.ts +36 -0
- package/build/src/settlement/holder.js +187 -0
- package/build/src/settlement/settle.d.ts +44 -0
- package/build/src/settlement/settle.js +165 -0
- package/build/src/task/board.d.ts +83 -0
- package/build/src/task/board.js +165 -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 +51 -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 +182 -0
- package/build/src/task/operations.d.ts +134 -0
- package/build/src/task/operations.js +198 -0
- package/build/src/task/store.d.ts +20 -0
- package/build/src/task/store.js +114 -0
- package/build/src/verification/declaration.d.ts +23 -0
- package/build/src/verification/declaration.js +14 -0
- package/build/src/verification/execution.d.ts +49 -0
- package/build/src/verification/execution.js +104 -0
- package/build/src/world.d.ts +13 -0
- package/build/src/world.js +103 -0
- package/package.json +65 -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,108 +0,0 @@
|
|
|
1
|
-
import { PROJECTION_GENERATION_SCHEMA_VERSION, PROJECTION_GENERATION_STORE_FILE, assertDatabaseOpen, closeDatabase, connectionBoundGenerationStore, openMutableDatabase, openReadOnlyDatabase, readValidatedHistory, } from "./database.js";
|
|
2
|
-
import { initializeIdentity as initializeProjectionIdentity, readIdentity as readProjectionIdentity, } from "./identity.js";
|
|
3
|
-
import * as transitions from "./transitions.js";
|
|
4
|
-
export { PROJECTION_GENERATION_SCHEMA_VERSION, PROJECTION_GENERATION_STORE_FILE, };
|
|
5
|
-
export { GENERATION_VERDICT_STATES, isIncompatibleProjectionGenerationStoreError, ProjectionGenerationStoreError, } from "./model.js";
|
|
6
|
-
export class ProjectionGenerationStore {
|
|
7
|
-
databasePath;
|
|
8
|
-
readOnly;
|
|
9
|
-
#database;
|
|
10
|
-
#generationStore;
|
|
11
|
-
constructor(databasePath, database, readOnly) {
|
|
12
|
-
this.databasePath = databasePath;
|
|
13
|
-
this.#database = database;
|
|
14
|
-
this.readOnly = readOnly;
|
|
15
|
-
this.#generationStore = connectionBoundGenerationStore(database, readOnly);
|
|
16
|
-
}
|
|
17
|
-
static open(projectionDirectory) {
|
|
18
|
-
const { databasePath, database } = openMutableDatabase(projectionDirectory);
|
|
19
|
-
return new ProjectionGenerationStore(databasePath, database, false);
|
|
20
|
-
}
|
|
21
|
-
static openReadOnly(projectionDirectory) {
|
|
22
|
-
const { databasePath, database } = openReadOnlyDatabase(projectionDirectory);
|
|
23
|
-
return new ProjectionGenerationStore(databasePath, database, true);
|
|
24
|
-
}
|
|
25
|
-
close() {
|
|
26
|
-
assertDatabaseOpen(this.#database);
|
|
27
|
-
this.#generationStore.rollbackWriteTransaction();
|
|
28
|
-
closeDatabase(this.#database);
|
|
29
|
-
}
|
|
30
|
-
beginWriteTransaction() {
|
|
31
|
-
assertDatabaseOpen(this.#database);
|
|
32
|
-
this.#generationStore.beginWriteTransaction();
|
|
33
|
-
}
|
|
34
|
-
commitWriteTransaction() {
|
|
35
|
-
assertDatabaseOpen(this.#database);
|
|
36
|
-
this.#generationStore.commitWriteTransaction();
|
|
37
|
-
}
|
|
38
|
-
rollbackWriteTransaction() {
|
|
39
|
-
assertDatabaseOpen(this.#database);
|
|
40
|
-
this.#generationStore.rollbackWriteTransaction();
|
|
41
|
-
}
|
|
42
|
-
connectionForRunnerClose() {
|
|
43
|
-
assertDatabaseOpen(this.#database);
|
|
44
|
-
return this.#database;
|
|
45
|
-
}
|
|
46
|
-
readRecords() {
|
|
47
|
-
assertDatabaseOpen(this.#database);
|
|
48
|
-
return readValidatedHistory(this.#database, this.readOnly).records;
|
|
49
|
-
}
|
|
50
|
-
readCurrentGeneration() {
|
|
51
|
-
assertDatabaseOpen(this.#database);
|
|
52
|
-
return readValidatedHistory(this.#database, this.readOnly).current;
|
|
53
|
-
}
|
|
54
|
-
initializeIdentity(identity) {
|
|
55
|
-
initializeProjectionIdentity(this.#database, this.databasePath, this.readOnly, identity);
|
|
56
|
-
}
|
|
57
|
-
readIdentity() {
|
|
58
|
-
return readProjectionIdentity(this.#database, this.databasePath);
|
|
59
|
-
}
|
|
60
|
-
launchIfSettled(input) {
|
|
61
|
-
return transitions.launchIfSettled(this.#database, this.readOnly, input);
|
|
62
|
-
}
|
|
63
|
-
failInterruptWakeIfSettled(input) {
|
|
64
|
-
return transitions.failInterruptWakeIfSettled(this.#database, this.readOnly, input);
|
|
65
|
-
}
|
|
66
|
-
adoptionIfCurrent(input) {
|
|
67
|
-
return transitions.adoptionIfCurrent(this.#database, this.readOnly, input);
|
|
68
|
-
}
|
|
69
|
-
requestKillIfOpen(input) {
|
|
70
|
-
return transitions.requestKillIfOpen(this.#database, this.readOnly, input);
|
|
71
|
-
}
|
|
72
|
-
requestInterruptIfOpen(input) {
|
|
73
|
-
return transitions.requestInterruptIfOpen(this.#database, this.readOnly, input);
|
|
74
|
-
}
|
|
75
|
-
runnerKilledIfRequested(input) {
|
|
76
|
-
return transitions.runnerKilledIfRequested(this.#database, this.readOnly, input);
|
|
77
|
-
}
|
|
78
|
-
runnerInterruptedIfRequested(input) {
|
|
79
|
-
return transitions.runnerInterruptedIfRequested(this.#database, this.readOnly, input);
|
|
80
|
-
}
|
|
81
|
-
runnerVerdictIfOpen(input) {
|
|
82
|
-
return transitions.runnerVerdictIfOpen(this.#database, this.readOnly, input);
|
|
83
|
-
}
|
|
84
|
-
settleKillIfRunnerDead(input) {
|
|
85
|
-
return transitions.settleKillIfRunnerDead(this.#database, this.readOnly, input);
|
|
86
|
-
}
|
|
87
|
-
verdictIfOpen(input) {
|
|
88
|
-
return transitions.verdictIfOpen(this.#database, this.readOnly, input);
|
|
89
|
-
}
|
|
90
|
-
supersedeStartupTimeout(input) {
|
|
91
|
-
return transitions.supersedeStartupTimeout(this.#database, this.readOnly, input);
|
|
92
|
-
}
|
|
93
|
-
settleStartupFailure(input) {
|
|
94
|
-
return transitions.settleStartupFailure(this.#database, this.readOnly, input);
|
|
95
|
-
}
|
|
96
|
-
replaceDeadRunner(input) {
|
|
97
|
-
return transitions.replaceDeadRunner(this.#database, this.readOnly, input);
|
|
98
|
-
}
|
|
99
|
-
handoff(input) {
|
|
100
|
-
return transitions.handoff(this.#database, this.readOnly, input);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
export function openProjectionGenerationStore(projectionDirectory) {
|
|
104
|
-
return ProjectionGenerationStore.open(projectionDirectory);
|
|
105
|
-
}
|
|
106
|
-
export function openProjectionGenerationStoreReadOnly(projectionDirectory) {
|
|
107
|
-
return ProjectionGenerationStore.openReadOnly(projectionDirectory);
|
|
108
|
-
}
|
|
@@ -1,463 +0,0 @@
|
|
|
1
|
-
import { appendRecord, readValidatedHistory, writeTransition, } from "./database.js";
|
|
2
|
-
import { ProjectionGenerationStoreError, VERDICTS, assertExecutionId, assertIsoTimestamp, cloneFacts, validateAdoptionFacts, validateInterruptIntentFacts, validateKillIntentFacts, validateLaunchFacts, validateTellFence, validateVerdictFacts, } from "./model.js";
|
|
3
|
-
function committed(records) {
|
|
4
|
-
return { status: "committed", records };
|
|
5
|
-
}
|
|
6
|
-
function rejected(reason, current) {
|
|
7
|
-
return { status: "rejected", reason, current };
|
|
8
|
-
}
|
|
9
|
-
export function launchIfSettled(database, readOnly, input) {
|
|
10
|
-
const executionId = assertExecutionId(input.executionId);
|
|
11
|
-
const facts = validateLaunchFacts(input.facts, "launch facts");
|
|
12
|
-
return writeTransition(database, readOnly, () => {
|
|
13
|
-
const history = readValidatedHistory(database, readOnly);
|
|
14
|
-
if (history.records.some((record) => record.kind === "launch" && record.executionId === executionId)) {
|
|
15
|
-
return rejected("execution-id-already-used", history.current);
|
|
16
|
-
}
|
|
17
|
-
if (history.current && !history.current.verdict) {
|
|
18
|
-
return rejected("current-generation-open", history.current);
|
|
19
|
-
}
|
|
20
|
-
return committed([appendRecord(database, "launch", executionId, facts, history.records.length + 1)]);
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
/** Persist an asynchronous interrupt wake rejection as one closed successor. */
|
|
24
|
-
export function failInterruptWakeIfSettled(database, readOnly, input) {
|
|
25
|
-
const predecessorExecutionId = assertExecutionId(input.predecessorExecutionId);
|
|
26
|
-
const successorExecutionId = assertExecutionId(input.successorExecutionId);
|
|
27
|
-
const successorFacts = validateLaunchFacts(input.successorFacts, "interrupt wake successor launch facts");
|
|
28
|
-
const terminalAt = assertIsoTimestamp(input.terminalAt, "terminalAt");
|
|
29
|
-
return writeTransition(database, readOnly, () => {
|
|
30
|
-
const history = readValidatedHistory(database, readOnly);
|
|
31
|
-
const current = history.current;
|
|
32
|
-
if (!current)
|
|
33
|
-
return rejected("no-current-launch", null);
|
|
34
|
-
if (current.launch.executionId !== predecessorExecutionId)
|
|
35
|
-
return rejected("not-current", current);
|
|
36
|
-
if (current.verdict?.facts.state !== "interrupted") {
|
|
37
|
-
return rejected(current.verdict ? "already-terminal" : "current-generation-open", current);
|
|
38
|
-
}
|
|
39
|
-
if (history.records.some((record) => record.kind === "launch" && record.executionId === successorExecutionId)) {
|
|
40
|
-
return rejected("execution-id-already-used", current);
|
|
41
|
-
}
|
|
42
|
-
const verdictFacts = validateVerdictFacts({
|
|
43
|
-
state: "launch-failed",
|
|
44
|
-
cause: input.cause,
|
|
45
|
-
tellRetained: true,
|
|
46
|
-
terminalAt,
|
|
47
|
-
}, "interrupt wake failure verdict facts");
|
|
48
|
-
const firstSeq = history.records.length + 1;
|
|
49
|
-
return committed([
|
|
50
|
-
appendRecord(database, "launch", successorExecutionId, successorFacts, firstSeq),
|
|
51
|
-
appendRecord(database, "verdict", successorExecutionId, verdictFacts, firstSeq + 1),
|
|
52
|
-
]);
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
export function adoptionIfCurrent(database, readOnly, input) {
|
|
56
|
-
const executionId = assertExecutionId(input.executionId);
|
|
57
|
-
const facts = validateAdoptionFacts(input.facts, "adoption facts");
|
|
58
|
-
return writeTransition(database, readOnly, () => {
|
|
59
|
-
const history = readValidatedHistory(database, readOnly);
|
|
60
|
-
const current = history.current;
|
|
61
|
-
if (!current)
|
|
62
|
-
return rejected("no-current-launch", null);
|
|
63
|
-
if (current.launch.executionId !== executionId)
|
|
64
|
-
return rejected("not-current", current);
|
|
65
|
-
if (current.verdict)
|
|
66
|
-
return rejected("already-terminal", current);
|
|
67
|
-
if (current.adoption)
|
|
68
|
-
return rejected("already-adopted", current);
|
|
69
|
-
return committed([appendRecord(database, "adoption", executionId, facts, history.records.length + 1)]);
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
export function requestKillIfOpen(database, readOnly, input) {
|
|
73
|
-
const executionId = assertExecutionId(input.executionId);
|
|
74
|
-
const killedAt = assertIsoTimestamp(input.killedAt, "killedAt");
|
|
75
|
-
return writeTransition(database, readOnly, () => {
|
|
76
|
-
const history = readValidatedHistory(database, readOnly);
|
|
77
|
-
const current = history.current;
|
|
78
|
-
if (!current)
|
|
79
|
-
return rejected("no-current-launch", null);
|
|
80
|
-
if (current.launch.executionId !== executionId)
|
|
81
|
-
return rejected("not-current", current);
|
|
82
|
-
if (current.verdict)
|
|
83
|
-
return rejected("already-terminal", current);
|
|
84
|
-
if (current.killIntent)
|
|
85
|
-
return rejected("kill-requested", current);
|
|
86
|
-
if (current.interruptIntent)
|
|
87
|
-
return rejected("interrupt-requested", current);
|
|
88
|
-
const facts = validateKillIntentFacts({ operatorAction: "kill", killedAt }, "kill-intent facts");
|
|
89
|
-
return committed([appendRecord(database, "kill-intent", executionId, facts, history.records.length + 1)]);
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
export function requestInterruptIfOpen(database, readOnly, input) {
|
|
93
|
-
const executionId = assertExecutionId(input.executionId);
|
|
94
|
-
const interruptedAt = assertIsoTimestamp(input.interruptedAt, "interruptedAt");
|
|
95
|
-
return writeTransition(database, readOnly, () => {
|
|
96
|
-
const history = readValidatedHistory(database, readOnly);
|
|
97
|
-
const current = history.current;
|
|
98
|
-
if (!current)
|
|
99
|
-
return rejected("no-current-launch", null);
|
|
100
|
-
if (current.launch.executionId !== executionId)
|
|
101
|
-
return rejected("not-current", current);
|
|
102
|
-
if (current.verdict)
|
|
103
|
-
return rejected("already-terminal", current);
|
|
104
|
-
if (current.killIntent)
|
|
105
|
-
return rejected("kill-requested", current);
|
|
106
|
-
if (current.interruptIntent)
|
|
107
|
-
return rejected("interrupt-requested", current);
|
|
108
|
-
const facts = validateInterruptIntentFacts({ interruptedAt }, "interrupt-intent facts");
|
|
109
|
-
return committed([appendRecord(database, "interrupt-intent", executionId, facts, history.records.length + 1)]);
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
export function runnerKilledIfRequested(database, readOnly, input) {
|
|
113
|
-
const executionId = assertExecutionId(input.executionId);
|
|
114
|
-
const terminalAt = assertIsoTimestamp(input.terminalAt, "terminalAt");
|
|
115
|
-
const callerFacts = cloneFacts(input.facts ?? {}, "killed verdict facts");
|
|
116
|
-
if ("state" in callerFacts) {
|
|
117
|
-
throw new ProjectionGenerationStoreError("killed verdict facts.state is reserved");
|
|
118
|
-
}
|
|
119
|
-
if ("killIntentSeq" in callerFacts) {
|
|
120
|
-
throw new ProjectionGenerationStoreError("killed verdict facts.killIntentSeq is reserved");
|
|
121
|
-
}
|
|
122
|
-
if ("killedAt" in callerFacts) {
|
|
123
|
-
throw new ProjectionGenerationStoreError("killed verdict facts.killedAt is reserved");
|
|
124
|
-
}
|
|
125
|
-
if ("terminalAt" in callerFacts) {
|
|
126
|
-
throw new ProjectionGenerationStoreError("killed verdict facts.terminalAt is reserved");
|
|
127
|
-
}
|
|
128
|
-
return writeTransition(database, readOnly, () => {
|
|
129
|
-
const history = readValidatedHistory(database, readOnly);
|
|
130
|
-
const current = history.current;
|
|
131
|
-
if (!current)
|
|
132
|
-
return rejected("no-current-launch", null);
|
|
133
|
-
if (current.launch.executionId !== executionId)
|
|
134
|
-
return rejected("not-current", current);
|
|
135
|
-
if (current.verdict)
|
|
136
|
-
return rejected("already-terminal", current);
|
|
137
|
-
if (!current.killIntent)
|
|
138
|
-
return rejected("kill-not-requested", current);
|
|
139
|
-
const facts = validateVerdictFacts({
|
|
140
|
-
...callerFacts,
|
|
141
|
-
state: "killed",
|
|
142
|
-
killIntentSeq: current.killIntent.seq,
|
|
143
|
-
killedAt: current.killIntent.facts.killedAt,
|
|
144
|
-
terminalAt,
|
|
145
|
-
}, "killed verdict facts");
|
|
146
|
-
return committed([appendRecord(database, "verdict", executionId, facts, history.records.length + 1)]);
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
export function runnerInterruptedIfRequested(database, readOnly, input) {
|
|
150
|
-
const executionId = assertExecutionId(input.executionId);
|
|
151
|
-
const callerFacts = cloneFacts(input.facts ?? {}, "interrupted verdict facts");
|
|
152
|
-
for (const reserved of ["state", "interruptIntentSeq", "interruptedAt", "terminalAt"]) {
|
|
153
|
-
if (reserved in callerFacts) {
|
|
154
|
-
throw new ProjectionGenerationStoreError(`interrupted verdict facts.${reserved} is reserved`);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
const terminalAt = input.terminalAt === undefined
|
|
158
|
-
? undefined
|
|
159
|
-
: assertIsoTimestamp(input.terminalAt, "terminalAt");
|
|
160
|
-
return writeTransition(database, readOnly, () => {
|
|
161
|
-
const history = readValidatedHistory(database, readOnly);
|
|
162
|
-
const current = history.current;
|
|
163
|
-
if (!current)
|
|
164
|
-
return rejected("no-current-launch", null);
|
|
165
|
-
if (current.launch.executionId !== executionId)
|
|
166
|
-
return rejected("not-current", current);
|
|
167
|
-
if (current.verdict)
|
|
168
|
-
return rejected("already-terminal", current);
|
|
169
|
-
if (!current.interruptIntent)
|
|
170
|
-
return rejected("kill-not-requested", current);
|
|
171
|
-
const facts = validateVerdictFacts({
|
|
172
|
-
...callerFacts,
|
|
173
|
-
state: "interrupted",
|
|
174
|
-
interruptIntentSeq: current.interruptIntent.seq,
|
|
175
|
-
interruptedAt: current.interruptIntent.facts.interruptedAt,
|
|
176
|
-
...(terminalAt ? { terminalAt } : {}),
|
|
177
|
-
}, "interrupted verdict facts");
|
|
178
|
-
return committed([appendRecord(database, "verdict", executionId, facts, history.records.length + 1)]);
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
/** Publish a stopped provider outcome while atomically honoring any stop intent that won first. */
|
|
182
|
-
export function runnerVerdictIfOpen(database, readOnly, input) {
|
|
183
|
-
const executionId = assertExecutionId(input.executionId);
|
|
184
|
-
if (!VERDICTS.has(input.verdict))
|
|
185
|
-
throw new ProjectionGenerationStoreError(`unknown verdict '${String(input.verdict)}'`);
|
|
186
|
-
if (input.verdict === "killed" || input.verdict === "interrupted" || input.verdict === "launch-failed" || input.verdict === "lost-runner") {
|
|
187
|
-
throw new ProjectionGenerationStoreError(`runner outcome verdict '${input.verdict}' is not publishable`);
|
|
188
|
-
}
|
|
189
|
-
const callerFacts = cloneFacts(input.facts ?? {}, "runner verdict facts");
|
|
190
|
-
const terminalAt = assertIsoTimestamp(input.terminalAt, "terminalAt");
|
|
191
|
-
return writeTransition(database, readOnly, () => {
|
|
192
|
-
const history = readValidatedHistory(database, readOnly);
|
|
193
|
-
const current = history.current;
|
|
194
|
-
if (!current)
|
|
195
|
-
return rejected("no-current-launch", null);
|
|
196
|
-
if (current.launch.executionId !== executionId)
|
|
197
|
-
return rejected("not-current", current);
|
|
198
|
-
if (current.verdict)
|
|
199
|
-
return rejected("already-terminal", current);
|
|
200
|
-
let facts;
|
|
201
|
-
if (current.interruptIntent) {
|
|
202
|
-
const { state: _state, interruptIntentSeq: _seq, interruptedAt: _at, terminalAt: _terminal, ...rest } = callerFacts;
|
|
203
|
-
facts = validateVerdictFacts({
|
|
204
|
-
...rest,
|
|
205
|
-
state: "interrupted",
|
|
206
|
-
interruptIntentSeq: current.interruptIntent.seq,
|
|
207
|
-
interruptedAt: current.interruptIntent.facts.interruptedAt,
|
|
208
|
-
terminalAt,
|
|
209
|
-
}, "runner interrupted verdict facts");
|
|
210
|
-
}
|
|
211
|
-
else if (current.killIntent && !(input.verdict === "failed" && callerFacts.operatorAction === "kill")) {
|
|
212
|
-
const { state: _state, killIntentSeq: _seq, killedAt: _at, terminalAt: _terminal, ...rest } = callerFacts;
|
|
213
|
-
facts = validateVerdictFacts({
|
|
214
|
-
...rest,
|
|
215
|
-
state: "killed",
|
|
216
|
-
killIntentSeq: current.killIntent.seq,
|
|
217
|
-
killedAt: current.killIntent.facts.killedAt,
|
|
218
|
-
terminalAt,
|
|
219
|
-
}, "runner killed verdict facts");
|
|
220
|
-
}
|
|
221
|
-
else {
|
|
222
|
-
facts = validateVerdictFacts({ ...callerFacts, state: input.verdict, terminalAt }, "runner verdict facts");
|
|
223
|
-
}
|
|
224
|
-
return committed([appendRecord(database, "verdict", executionId, facts, history.records.length + 1)]);
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
|
-
export function settleKillIfRunnerDead(database, readOnly, input) {
|
|
228
|
-
const executionId = assertExecutionId(input.executionId);
|
|
229
|
-
const terminalAt = assertIsoTimestamp(input.terminalAt, "terminalAt");
|
|
230
|
-
const releasedLockEvidence = cloneFacts(input.releasedLockEvidence, "released runner-lock evidence");
|
|
231
|
-
if (Object.keys(releasedLockEvidence).length === 0) {
|
|
232
|
-
throw new ProjectionGenerationStoreError("released runner-lock evidence must not be empty");
|
|
233
|
-
}
|
|
234
|
-
const callerFacts = cloneFacts(input.facts ?? {}, "killed verdict facts");
|
|
235
|
-
if ("state" in callerFacts) {
|
|
236
|
-
throw new ProjectionGenerationStoreError("killed verdict facts.state is reserved");
|
|
237
|
-
}
|
|
238
|
-
if ("killIntentSeq" in callerFacts) {
|
|
239
|
-
throw new ProjectionGenerationStoreError("killed verdict facts.killIntentSeq is reserved");
|
|
240
|
-
}
|
|
241
|
-
if ("killedAt" in callerFacts) {
|
|
242
|
-
throw new ProjectionGenerationStoreError("killed verdict facts.killedAt is reserved");
|
|
243
|
-
}
|
|
244
|
-
if ("terminalAt" in callerFacts) {
|
|
245
|
-
throw new ProjectionGenerationStoreError("killed verdict facts.terminalAt is reserved");
|
|
246
|
-
}
|
|
247
|
-
return writeTransition(database, readOnly, () => {
|
|
248
|
-
const history = readValidatedHistory(database, readOnly);
|
|
249
|
-
const current = history.current;
|
|
250
|
-
if (!current)
|
|
251
|
-
return rejected("no-current-launch", null);
|
|
252
|
-
if (current.launch.executionId !== executionId)
|
|
253
|
-
return rejected("not-current", current);
|
|
254
|
-
if (current.verdict)
|
|
255
|
-
return rejected("already-terminal", current);
|
|
256
|
-
if (!current.killIntent)
|
|
257
|
-
return rejected("kill-not-requested", current);
|
|
258
|
-
const facts = validateVerdictFacts({
|
|
259
|
-
...callerFacts,
|
|
260
|
-
state: "killed",
|
|
261
|
-
killIntentSeq: current.killIntent.seq,
|
|
262
|
-
killedAt: current.killIntent.facts.killedAt,
|
|
263
|
-
terminalAt,
|
|
264
|
-
releasedLockEvidence,
|
|
265
|
-
}, "killed verdict facts");
|
|
266
|
-
return committed([appendRecord(database, "verdict", executionId, facts, history.records.length + 1)]);
|
|
267
|
-
});
|
|
268
|
-
}
|
|
269
|
-
export function verdictIfOpen(database, readOnly, input) {
|
|
270
|
-
const executionId = assertExecutionId(input.executionId);
|
|
271
|
-
if (!VERDICTS.has(input.verdict))
|
|
272
|
-
throw new ProjectionGenerationStoreError(`unknown verdict '${String(input.verdict)}'`);
|
|
273
|
-
if (input.verdict === "killed" || input.verdict === "interrupted") {
|
|
274
|
-
throw new ProjectionGenerationStoreError(`verdict '${input.verdict}' is reserved to its runner-owned transition`);
|
|
275
|
-
}
|
|
276
|
-
return writeTransition(database, readOnly, () => {
|
|
277
|
-
const history = readValidatedHistory(database, readOnly);
|
|
278
|
-
const current = history.current;
|
|
279
|
-
if (!current)
|
|
280
|
-
return rejected("no-current-launch", null);
|
|
281
|
-
if (current.launch.executionId !== executionId)
|
|
282
|
-
return rejected("not-current", current);
|
|
283
|
-
if (current.verdict)
|
|
284
|
-
return rejected("already-terminal", current);
|
|
285
|
-
if (input.verdict === "launch-failed" && current.adoption) {
|
|
286
|
-
return rejected("already-adopted", current);
|
|
287
|
-
}
|
|
288
|
-
if (current.killIntent) {
|
|
289
|
-
const killEscalationFailed = input.verdict === "failed"
|
|
290
|
-
&& input.facts?.operatorAction === "kill";
|
|
291
|
-
if (!killEscalationFailed)
|
|
292
|
-
return rejected("kill-requested", current);
|
|
293
|
-
}
|
|
294
|
-
const facts = validateVerdictFacts({ ...(input.facts ?? {}), state: input.verdict, ...(input.terminalAt ? { terminalAt: assertIsoTimestamp(input.terminalAt, "terminalAt") } : {}) }, "verdict facts");
|
|
295
|
-
return committed([appendRecord(database, "verdict", executionId, facts, history.records.length + 1)]);
|
|
296
|
-
});
|
|
297
|
-
}
|
|
298
|
-
export function supersedeStartupTimeout(database, readOnly, input) {
|
|
299
|
-
const executionId = assertExecutionId(input.executionId);
|
|
300
|
-
const successorExecutionId = assertExecutionId(input.successorExecutionId);
|
|
301
|
-
const releasedLockEvidence = cloneFacts(input.releasedLockEvidence, "released startup-lock evidence");
|
|
302
|
-
if (Object.keys(releasedLockEvidence).length === 0) {
|
|
303
|
-
throw new ProjectionGenerationStoreError("released startup-lock evidence must not be empty");
|
|
304
|
-
}
|
|
305
|
-
const diagnostic = cloneFacts(input.diagnostic, "startup-timeout diagnostic");
|
|
306
|
-
const successorFacts = validateLaunchFacts(input.successorFacts, "successor launch facts");
|
|
307
|
-
const terminalAt = input.terminalAt === undefined
|
|
308
|
-
? undefined
|
|
309
|
-
: assertIsoTimestamp(input.terminalAt, "terminalAt");
|
|
310
|
-
return writeTransition(database, readOnly, () => {
|
|
311
|
-
const history = readValidatedHistory(database, readOnly);
|
|
312
|
-
const current = history.current;
|
|
313
|
-
if (!current)
|
|
314
|
-
return rejected("no-current-launch", null);
|
|
315
|
-
if (current.launch.executionId !== executionId)
|
|
316
|
-
return rejected("not-current", current);
|
|
317
|
-
if (current.verdict)
|
|
318
|
-
return rejected("already-terminal", current);
|
|
319
|
-
if (current.adoption)
|
|
320
|
-
return rejected("already-adopted", current);
|
|
321
|
-
if (current.killIntent) {
|
|
322
|
-
const verdictFacts = validateVerdictFacts({
|
|
323
|
-
state: "killed",
|
|
324
|
-
killIntentSeq: current.killIntent.seq,
|
|
325
|
-
killedAt: current.killIntent.facts.killedAt,
|
|
326
|
-
releasedLockEvidence,
|
|
327
|
-
...(terminalAt === undefined ? {} : { terminalAt }),
|
|
328
|
-
}, "startup-timeout killed verdict facts");
|
|
329
|
-
return committed([appendRecord(database, "verdict", executionId, verdictFacts, history.records.length + 1)]);
|
|
330
|
-
}
|
|
331
|
-
if (history.records.some((record) => record.kind === "launch" && record.executionId === successorExecutionId)) {
|
|
332
|
-
return rejected("execution-id-already-used", current);
|
|
333
|
-
}
|
|
334
|
-
const verdictFactsBase = {
|
|
335
|
-
...diagnostic,
|
|
336
|
-
releasedLockEvidence,
|
|
337
|
-
state: "launch-failed",
|
|
338
|
-
...(terminalAt === undefined ? {} : { terminalAt }),
|
|
339
|
-
};
|
|
340
|
-
const verdictFacts = validateVerdictFacts(verdictFactsBase, "startup-timeout verdict facts");
|
|
341
|
-
const firstSeq = history.records.length + 1;
|
|
342
|
-
return committed([
|
|
343
|
-
appendRecord(database, "verdict", executionId, verdictFacts, firstSeq),
|
|
344
|
-
appendRecord(database, "launch", successorExecutionId, successorFacts, firstSeq + 1),
|
|
345
|
-
]);
|
|
346
|
-
});
|
|
347
|
-
}
|
|
348
|
-
export function settleStartupFailure(database, readOnly, input) {
|
|
349
|
-
const executionId = assertExecutionId(input.executionId);
|
|
350
|
-
const releasedLockEvidence = cloneFacts(input.releasedLockEvidence, "released startup-lock evidence");
|
|
351
|
-
if (Object.keys(releasedLockEvidence).length === 0) {
|
|
352
|
-
throw new ProjectionGenerationStoreError("released startup-lock evidence must not be empty");
|
|
353
|
-
}
|
|
354
|
-
const diagnostic = cloneFacts(input.diagnostic, "startup failure diagnostic");
|
|
355
|
-
const terminalAt = input.terminalAt === undefined
|
|
356
|
-
? undefined
|
|
357
|
-
: assertIsoTimestamp(input.terminalAt, "terminalAt");
|
|
358
|
-
return writeTransition(database, readOnly, () => {
|
|
359
|
-
const history = readValidatedHistory(database, readOnly);
|
|
360
|
-
const current = history.current;
|
|
361
|
-
if (!current)
|
|
362
|
-
return rejected("no-current-launch", null);
|
|
363
|
-
if (current.launch.executionId !== executionId)
|
|
364
|
-
return rejected("not-current", current);
|
|
365
|
-
if (current.verdict)
|
|
366
|
-
return rejected("already-terminal", current);
|
|
367
|
-
if (current.adoption)
|
|
368
|
-
return rejected("already-adopted", current);
|
|
369
|
-
const facts = current.killIntent
|
|
370
|
-
? validateVerdictFacts({
|
|
371
|
-
state: "killed",
|
|
372
|
-
killIntentSeq: current.killIntent.seq,
|
|
373
|
-
killedAt: current.killIntent.facts.killedAt,
|
|
374
|
-
releasedLockEvidence,
|
|
375
|
-
...(terminalAt === undefined ? {} : { terminalAt }),
|
|
376
|
-
}, "startup failure killed verdict facts")
|
|
377
|
-
: validateVerdictFacts({
|
|
378
|
-
...diagnostic,
|
|
379
|
-
releasedLockEvidence,
|
|
380
|
-
state: "launch-failed",
|
|
381
|
-
...(terminalAt === undefined ? {} : { terminalAt }),
|
|
382
|
-
}, "startup failure verdict facts");
|
|
383
|
-
return committed([appendRecord(database, "verdict", executionId, facts, history.records.length + 1)]);
|
|
384
|
-
});
|
|
385
|
-
}
|
|
386
|
-
export function replaceDeadRunner(database, readOnly, input) {
|
|
387
|
-
const executionId = assertExecutionId(input.executionId);
|
|
388
|
-
const successorExecutionId = assertExecutionId(input.successorExecutionId);
|
|
389
|
-
const releasedLockEvidence = cloneFacts(input.releasedLockEvidence, "released runner-lock evidence");
|
|
390
|
-
if (Object.keys(releasedLockEvidence).length === 0) {
|
|
391
|
-
throw new ProjectionGenerationStoreError("released runner-lock evidence must not be empty");
|
|
392
|
-
}
|
|
393
|
-
const successorFacts = validateLaunchFacts(input.successorFacts, "dead-runner successor launch facts");
|
|
394
|
-
const terminalAt = input.terminalAt === undefined
|
|
395
|
-
? undefined
|
|
396
|
-
: assertIsoTimestamp(input.terminalAt, "terminalAt");
|
|
397
|
-
return writeTransition(database, readOnly, () => {
|
|
398
|
-
const history = readValidatedHistory(database, readOnly);
|
|
399
|
-
const current = history.current;
|
|
400
|
-
if (!current)
|
|
401
|
-
return rejected("no-current-launch", null);
|
|
402
|
-
if (current.launch.executionId !== executionId)
|
|
403
|
-
return rejected("not-current", current);
|
|
404
|
-
if (current.verdict)
|
|
405
|
-
return rejected("already-terminal", current);
|
|
406
|
-
if (current.killIntent)
|
|
407
|
-
return rejected("kill-requested", current);
|
|
408
|
-
if (!current.adoption)
|
|
409
|
-
return rejected("not-adopted", current);
|
|
410
|
-
if (history.records.some((record) => record.kind === "launch" && record.executionId === successorExecutionId)) {
|
|
411
|
-
return rejected("execution-id-already-used", current);
|
|
412
|
-
}
|
|
413
|
-
const verdictFactsBase = {
|
|
414
|
-
state: "lost-runner",
|
|
415
|
-
releasedLockEvidence,
|
|
416
|
-
...(terminalAt === undefined ? {} : { terminalAt }),
|
|
417
|
-
};
|
|
418
|
-
const verdictFacts = validateVerdictFacts(verdictFactsBase, "dead-runner verdict facts");
|
|
419
|
-
const firstSeq = history.records.length + 1;
|
|
420
|
-
return committed([
|
|
421
|
-
appendRecord(database, "verdict", executionId, verdictFacts, firstSeq),
|
|
422
|
-
appendRecord(database, "launch", successorExecutionId, successorFacts, firstSeq + 1),
|
|
423
|
-
]);
|
|
424
|
-
});
|
|
425
|
-
}
|
|
426
|
-
export function handoff(database, readOnly, input) {
|
|
427
|
-
const executionId = assertExecutionId(input.executionId);
|
|
428
|
-
const successorExecutionId = assertExecutionId(input.successorExecutionId);
|
|
429
|
-
const completionFacts = cloneFacts(input.completionFacts, "handoff completion facts");
|
|
430
|
-
if ("state" in completionFacts)
|
|
431
|
-
throw new ProjectionGenerationStoreError("handoff completion facts.state is reserved");
|
|
432
|
-
const successorFactsBase = validateLaunchFacts(input.successorFacts, "handoff successor launch facts");
|
|
433
|
-
if (successorFactsBase.tellFence !== undefined) {
|
|
434
|
-
throw new ProjectionGenerationStoreError("handoff successor launch facts.tellFence must be supplied only through handoff.tellFence");
|
|
435
|
-
}
|
|
436
|
-
const tellFence = validateTellFence([...input.tellFence], "handoff tellFence");
|
|
437
|
-
const successorFacts = validateLaunchFacts({ ...successorFactsBase, tellFence }, "handoff successor launch facts");
|
|
438
|
-
return writeTransition(database, readOnly, () => {
|
|
439
|
-
const history = readValidatedHistory(database, readOnly);
|
|
440
|
-
const current = history.current;
|
|
441
|
-
if (!current)
|
|
442
|
-
return rejected("no-current-launch", null);
|
|
443
|
-
if (current.launch.executionId !== executionId)
|
|
444
|
-
return rejected("not-current", current);
|
|
445
|
-
if (current.verdict)
|
|
446
|
-
return rejected("already-terminal", current);
|
|
447
|
-
if (current.killIntent)
|
|
448
|
-
return rejected("kill-requested", current);
|
|
449
|
-
if (current.interruptIntent)
|
|
450
|
-
return rejected("interrupt-requested", current);
|
|
451
|
-
if (!current.adoption)
|
|
452
|
-
return rejected("not-adopted", current);
|
|
453
|
-
if (history.records.some((record) => record.kind === "launch" && record.executionId === successorExecutionId)) {
|
|
454
|
-
return rejected("execution-id-already-used", current);
|
|
455
|
-
}
|
|
456
|
-
const verdictFacts = validateVerdictFacts({ ...completionFacts, state: "completed" }, "handoff verdict facts");
|
|
457
|
-
const firstSeq = history.records.length + 1;
|
|
458
|
-
return committed([
|
|
459
|
-
appendRecord(database, "verdict", executionId, verdictFacts, firstSeq),
|
|
460
|
-
appendRecord(database, "launch", successorExecutionId, successorFacts, firstSeq + 1),
|
|
461
|
-
]);
|
|
462
|
-
});
|
|
463
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import * as path from "node:path";
|
|
2
|
-
export const HEART_FILE = "heart";
|
|
3
|
-
export const HEART_BUSY_TIMEOUT_MS = 5_000;
|
|
4
|
-
export function heartPath(projectionDirectory) {
|
|
5
|
-
return path.join(projectionDirectory, HEART_FILE);
|
|
6
|
-
}
|
|
7
|
-
export function configureHeartBusyTimeout(database) {
|
|
8
|
-
database.exec(`PRAGMA busy_timeout = ${HEART_BUSY_TIMEOUT_MS}`);
|
|
9
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Public surface for the projection package.
|
|
3
|
-
* Only symbols required by current external consumers are re-exported.
|
|
4
|
-
* Package-internal modules must import each other directly, not through this file.
|
|
5
|
-
*/
|
|
6
|
-
export { heartPath } from "./heart.js";
|
|
7
|
-
export { AGENT_ACTIVITY_WINDOW_SIZE, foldAgentActivity, } from "./projection-activity.js";
|
|
8
|
-
export { assertProjectionAlias, isProjectionAlias, moveProjectionAlias, projectionAliasRoot, projectionAliasRootAtCoordinate, readProjectionAlias, readProjectionAliasAtRoot, } from "./projection-alias.js";
|
|
9
|
-
export { resolveProjectionCoordinate } from "./projection-coordinate.js";
|
|
10
|
-
export { appendGenerationEvent, executionEventsPath, isProjectionId, isPublishedProjection, isoFromNowMs, projectionDir, projectionDirAtCoordinate, projectionRoot, readProjectionEvents, readGenerationEventsWithRetention, } from "./projection-core.js";
|
|
11
|
-
export { readProjectionIdentity } from "./projection-identity.js";
|
|
12
|
-
export { interruptProjectionGeneration, killProjectionGeneration } from "./projection-kill.js";
|
|
13
|
-
export { openProjectionGenerationDoorbell, projectionGenerationDoorbellAddress, ringProjectionGenerationDoorbell, } from "./generation/projection-generation-doorbell.js";
|
|
14
|
-
export { observeProjectionLife, observeProjectionLifeSnapshot, } from "./projection-life-observer.js";
|
|
15
|
-
export { mintProjection, mintRepositoryProjection, ProjectionMintCollisionError, } from "./projection-mint.js";
|
|
16
|
-
export { hasStrandableProjectionGeneration, prioritizeProjectionStatusRows, paginateProjectionStatusRoster, triageProjectionStatusRows, readAkumaNonterminalProjectionStatus, readExactProjectionStatus, readOperationalProjectionStatusBoard, readProjectionRosterStatusBoard, selectProjectionStatus, } from "./projection-status.js";
|
|
17
|
-
export { PROJECTION_HISTORY_FILTER_COMPLETION, PROJECTION_HISTORY_FILTER_FIELDS, PROJECTION_HISTORY_FILTER_GRAMMAR, parseProjectionHistoryFilter, parseProjectionHistorySort, readProjectionHistoryAddress, readExactProjectionHistory, readProjectionHistory, resolveProjectionHistoryAddress, selectProjectionHistory, } from "./projection-history.js";
|
|
18
|
-
export { projectTerminalFailure, } from "./projection-terminal-failure.js";
|
|
19
|
-
export { snapshotCommissionProjectionIds, snapshotCommissionProjectionIdsAtCoordinate, waitForProjection, waitForProjectionSet, } from "./projection-wait.js";
|
|
20
|
-
export { assertTellEffortSupported, assertProjectionTellable, tellProjection, } from "./projection-wake.js";
|
|
21
|
-
export { openProjectionGenerationStore, openProjectionGenerationStoreReadOnly, ProjectionGenerationStore, } from "./generation/store.js";
|
|
22
|
-
export { createProjectionExecutionId, projectionRunnerLeasePath, } from "./generation/projection-generation-identity.js";
|
|
23
|
-
export { startProjectionGeneration } from "./generation/projection-generation-launcher.js";
|
|
24
|
-
export { projectionGenerationRunnerArgv, prepareProjectionGenerationRunner, } from "./generation/projection-generation-process.js";
|
|
25
|
-
export { runProjectionGeneration, } from "./generation/projection-generation-runner.js";
|
|
26
|
-
export { executeProjectionGeneration, prepareProjectionGenerationExecution, } from "./generation/projection-generation-execution.js";
|
|
27
|
-
export { runProjectionGenerationRuntime } from "./generation/projection-generation-runtime.js";
|
|
28
|
-
export { bindTellLaunchReservation, claimAndReserveFencedTells, claimFencedTells, claimTellToInflight, listTellLaunchBatch, listTellLaunchAdmissions, isTellLaunchAdmissionMember, listTellIds, markTellSubmitted, recordTellReceipt, recordTellReceiptCapabilities, readTellReceiptCapabilities, readPendingTellWindow, readProjectionTellCounts, readTellOriginal, readTellSubmitted, writeInboxTell, } from "./tell/store.js";
|