@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
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type ContractId, type ContractState, type JournalEntry, type SnapshotId } from "../core/facts/types.js";
|
|
2
|
+
import type { ContractsObservation } from "../core/facts/observation.js";
|
|
3
|
+
import { type GitSnapshot, type GitOid, type GitRepository } from "./repository.js";
|
|
4
|
+
import { type GitDecodeChannel, type GitReadObservation, type GitTreeSelection } from "./read-observation.js";
|
|
5
|
+
export type TargetObservation = Readonly<{
|
|
6
|
+
head: SnapshotId | null;
|
|
7
|
+
drift: boolean;
|
|
8
|
+
}>;
|
|
9
|
+
export declare function observeDeliveryTargetAt(observation: GitReadObservation, state: ContractState): Promise<TargetObservation | null>;
|
|
10
|
+
type GitJournalRecord = Readonly<{
|
|
11
|
+
entries: readonly JournalEntry[];
|
|
12
|
+
state: ContractState | null;
|
|
13
|
+
}>;
|
|
14
|
+
export type ContractWorldObservation = Readonly<{
|
|
15
|
+
snapshot: SnapshotId | null;
|
|
16
|
+
contracts: ReadonlyMap<ContractId, GitJournalRecord>;
|
|
17
|
+
}>;
|
|
18
|
+
export type ActiveContractWorldObservation = ContractWorldObservation & Readonly<{
|
|
19
|
+
eligibility: ContractsObservation;
|
|
20
|
+
}>;
|
|
21
|
+
export type GitAdmissionSnapshot = Readonly<{
|
|
22
|
+
snapshot: GitSnapshot;
|
|
23
|
+
frozenJournalBytes: ReadonlyMap<GitOid, Buffer>;
|
|
24
|
+
treeDirectories: ReadonlyMap<string, ReadonlyMap<string, import("./tree.js").TreeEntry>>;
|
|
25
|
+
}>;
|
|
26
|
+
export type GitDecisionObservation = Readonly<{
|
|
27
|
+
admission: GitAdmissionSnapshot;
|
|
28
|
+
decision: ContractsObservation;
|
|
29
|
+
journals: ReadonlyMap<ContractId, GitJournalRecord>;
|
|
30
|
+
}>;
|
|
31
|
+
export type BindCoordinatesObservation = Readonly<{
|
|
32
|
+
start: SnapshotId;
|
|
33
|
+
target?: string;
|
|
34
|
+
branch: string | null;
|
|
35
|
+
}>;
|
|
36
|
+
export declare function normalizeTargetBranch(repository: GitRepository, input: string): string | null;
|
|
37
|
+
/** Read one worktree's attached branch, or null for detached HEAD. */
|
|
38
|
+
export declare function currentBranch(repository: GitRepository, path?: string): string | null;
|
|
39
|
+
/** Observe bind's tender start and optional reward target without creating persistent state. */
|
|
40
|
+
export declare function observeBindCoordinates(repository: GitRepository, requestedTarget?: string): BindCoordinatesObservation | null;
|
|
41
|
+
export declare function observeActiveContractWorld(observation: GitReadObservation): Promise<ActiveContractWorldObservation>;
|
|
42
|
+
export declare function observeContractWorld(observation: GitReadObservation, requested?: readonly ContractId[]): Promise<ContractWorldObservation>;
|
|
43
|
+
export declare function observeContractsForAdmissionAt(repository: GitRepository, channel: GitDecodeChannel, ids: readonly ContractId[], selection?: GitTreeSelection): Promise<GitDecisionObservation>;
|
|
44
|
+
export declare function withContractReadObservationAt<Value>(repository: GitRepository, channel: GitDecodeChannel, id: ContractId, consume: (observation: GitReadObservation) => Value | PromiseLike<Value>): Promise<Value>;
|
|
45
|
+
/** Observe targeted Contract journals within an already frozen Git epoch. */
|
|
46
|
+
export declare function observeContractsForAdmissionInObservationAt(observation: GitReadObservation, ids: readonly ContractId[]): Promise<GitDecisionObservation>;
|
|
47
|
+
export declare function observeContractAt(repository: GitRepository, channel: GitDecodeChannel, id: ContractId): Promise<GitJournalRecord>;
|
|
48
|
+
export declare function extendContractsForAdmissionAt(channel: GitDecodeChannel, observation: GitDecisionObservation, ids: readonly ContractId[]): Promise<GitDecisionObservation>;
|
|
49
|
+
export declare function extendAdmissionPathsAt(channel: GitDecodeChannel, observation: GitDecisionObservation, paths: readonly string[]): Promise<GitDecisionObservation>;
|
|
50
|
+
export {};
|
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
import { decodeJournal } from "../core/facts/codec.js";
|
|
2
|
+
import { AuthorityCorruptionError } from "../core/facts/errors.js";
|
|
3
|
+
import { foldJournal } from "../core/facts/fold.js";
|
|
4
|
+
import { contractJournalPath, contractJournalPaths, mintContractHead, mintSnapshotId, } from "./identity.js";
|
|
5
|
+
import { GitPlumbingError, isKeiyakuOwnedRef, runGit, } from "./repository.js";
|
|
6
|
+
import { readGitTreeSelection, withGitTargetedReadObservation, } from "./read-observation.js";
|
|
7
|
+
export async function observeDeliveryTargetAt(observation, state) {
|
|
8
|
+
const target = state.coordinates.target;
|
|
9
|
+
if (target === undefined)
|
|
10
|
+
return null;
|
|
11
|
+
const value = await observation.resolveRef(target);
|
|
12
|
+
const head = value === null ? null : mintSnapshotId(value);
|
|
13
|
+
const delivery = state.delivery?.data;
|
|
14
|
+
if (delivery === undefined)
|
|
15
|
+
return { head, drift: false };
|
|
16
|
+
const expected = state.terminal?.kind === "claimed"
|
|
17
|
+
? delivery.integration.snapshot
|
|
18
|
+
: delivery.integration.predecessor;
|
|
19
|
+
return { head, drift: head !== expected };
|
|
20
|
+
}
|
|
21
|
+
const TARGET_COORDINATES_FORMAT = "%(refname)%00%(objectname)%00";
|
|
22
|
+
export function normalizeTargetBranch(repository, input) {
|
|
23
|
+
if (input.includes("\0"))
|
|
24
|
+
return null;
|
|
25
|
+
const prefix = "refs/heads/";
|
|
26
|
+
if (input.startsWith("refs/") && !input.startsWith(prefix))
|
|
27
|
+
return null;
|
|
28
|
+
const branch = input.startsWith(prefix) ? input.slice(prefix.length) : input;
|
|
29
|
+
const target = `${prefix}${branch}`;
|
|
30
|
+
if (branch.length === 0 || branch.startsWith("-") || isKeiyakuOwnedRef(target))
|
|
31
|
+
return null;
|
|
32
|
+
try {
|
|
33
|
+
const checked = runGit(repository, ["check-ref-format", "--branch", branch]).toString("utf8").trim();
|
|
34
|
+
return checked === branch ? target : null;
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
if (error instanceof GitPlumbingError && error.status !== null)
|
|
38
|
+
return null;
|
|
39
|
+
throw error;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/** Read one worktree's attached branch, or null for detached HEAD. */
|
|
43
|
+
export function currentBranch(repository, path) {
|
|
44
|
+
try {
|
|
45
|
+
const ref = runGit(repository, [
|
|
46
|
+
...(path === undefined ? [] : ["-C", path]),
|
|
47
|
+
"symbolic-ref",
|
|
48
|
+
"--quiet",
|
|
49
|
+
"HEAD",
|
|
50
|
+
]).toString("utf8").trim();
|
|
51
|
+
return ref.startsWith("refs/heads/") ? ref : null;
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
if (error instanceof GitPlumbingError && error.status === 1)
|
|
55
|
+
return null;
|
|
56
|
+
throw error;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function malformedBindCoordinatesOutput() {
|
|
60
|
+
throw new Error("malformed structured Git output while observing bind coordinates");
|
|
61
|
+
}
|
|
62
|
+
function structuredFields(output, fieldCount) {
|
|
63
|
+
const fields = output.toString("utf8").split("\0");
|
|
64
|
+
if (fields.length !== fieldCount + 1 || fields.at(-1) !== "\n")
|
|
65
|
+
malformedBindCoordinatesOutput();
|
|
66
|
+
return fields.slice(0, -1);
|
|
67
|
+
}
|
|
68
|
+
/** Observe bind's tender start and optional reward target without creating persistent state. */
|
|
69
|
+
export function observeBindCoordinates(repository, requestedTarget) {
|
|
70
|
+
if (requestedTarget === undefined) {
|
|
71
|
+
try {
|
|
72
|
+
return {
|
|
73
|
+
start: mintSnapshotId(runGit(repository, ["rev-parse", "--verify", "HEAD"]).toString("utf8").trim()),
|
|
74
|
+
branch: currentBranch(repository),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
malformedBindCoordinatesOutput();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (isKeiyakuOwnedRef(requestedTarget)) {
|
|
82
|
+
throw new Error(`bind target names a Keiyaku-owned ref: ${requestedTarget}`);
|
|
83
|
+
}
|
|
84
|
+
const output = runGit(repository, [
|
|
85
|
+
"for-each-ref",
|
|
86
|
+
`--format=${TARGET_COORDINATES_FORMAT}`,
|
|
87
|
+
"--",
|
|
88
|
+
requestedTarget,
|
|
89
|
+
]);
|
|
90
|
+
if (output.length === 0)
|
|
91
|
+
return null;
|
|
92
|
+
const [target, start] = structuredFields(output, 2);
|
|
93
|
+
if (target !== requestedTarget || start === undefined)
|
|
94
|
+
malformedBindCoordinatesOutput();
|
|
95
|
+
try {
|
|
96
|
+
return { target, start: mintSnapshotId(start), branch: currentBranch(repository) };
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
malformedBindCoordinatesOutput();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function decodeGitJournal(path, git, bytes, expectedId) {
|
|
103
|
+
const journal = git.paths.get(path);
|
|
104
|
+
if (journal === undefined)
|
|
105
|
+
throw new AuthorityCorruptionError(`missing Git journal: ${path}`);
|
|
106
|
+
if (journal.type !== "blob")
|
|
107
|
+
throw new AuthorityCorruptionError(`journal path is not a blob: ${path}`);
|
|
108
|
+
const entries = decodeJournal(bytes.toString("utf8"));
|
|
109
|
+
const first = entries[0];
|
|
110
|
+
if (first === undefined
|
|
111
|
+
|| (expectedId !== undefined && first.contract !== expectedId)
|
|
112
|
+
|| entries.some((entry) => entry.contract !== (expectedId ?? first.contract))) {
|
|
113
|
+
if (expectedId !== undefined) {
|
|
114
|
+
throw new AuthorityCorruptionError(`journal content does not canonically identify ${expectedId}: ${path}`);
|
|
115
|
+
}
|
|
116
|
+
throw new AuthorityCorruptionError(`journal content does not canonically identify ${path}`);
|
|
117
|
+
}
|
|
118
|
+
const id = first.contract;
|
|
119
|
+
if (!contractJournalPaths(id).includes(path)) {
|
|
120
|
+
throw new AuthorityCorruptionError(`journal path does not match canonical contract identity: ${path}`);
|
|
121
|
+
}
|
|
122
|
+
return { id, entries, oid: journal.oid };
|
|
123
|
+
}
|
|
124
|
+
function journalClass(state) {
|
|
125
|
+
return state.terminal === null ? "active" : "terminal";
|
|
126
|
+
}
|
|
127
|
+
function observeDecodedJournal(id, decoded, path) {
|
|
128
|
+
const state = foldJournal(id, decoded.entries, mintContractHead(decoded.oid));
|
|
129
|
+
if (path !== undefined && contractJournalPath(id, journalClass(state)) !== path) {
|
|
130
|
+
throw new AuthorityCorruptionError(`journal path class does not match folded state: ${path}`);
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
entries: decoded.entries,
|
|
134
|
+
state,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
function observeFromGit(git, id, blobs) {
|
|
138
|
+
const matches = contractJournalPaths(id)
|
|
139
|
+
.flatMap((path) => git.paths.has(path) ? [path] : []);
|
|
140
|
+
if (matches.length > 1)
|
|
141
|
+
throw new AuthorityCorruptionError(`duplicate contract journal identity: ${id}`);
|
|
142
|
+
const path = matches[0];
|
|
143
|
+
if (path === undefined)
|
|
144
|
+
return { entries: [], state: null };
|
|
145
|
+
const journal = git.paths.get(path);
|
|
146
|
+
if (journal.type !== "blob")
|
|
147
|
+
throw new AuthorityCorruptionError(`journal path is not a blob: ${path}`);
|
|
148
|
+
const bytes = blobs.get(journal.oid);
|
|
149
|
+
if (bytes === undefined)
|
|
150
|
+
throw new Error(`missing batched journal bytes: ${path}`);
|
|
151
|
+
const decoded = decodeGitJournal(path, git, bytes, id);
|
|
152
|
+
return observeDecodedJournal(id, decoded, path);
|
|
153
|
+
}
|
|
154
|
+
function enumerateContractObservations(git, blobs, journalClass) {
|
|
155
|
+
const observations = new Map();
|
|
156
|
+
const seen = new Set();
|
|
157
|
+
for (const [path, journal] of git.paths) {
|
|
158
|
+
const match = /^contracts\/(active|terminal)\/[0-9a-f]{2}\/[0-9a-f]{2}\/[0-9a-f]{60}\.jsonl$/u.exec(path);
|
|
159
|
+
if (match === null || (journalClass !== undefined && match[1] !== journalClass))
|
|
160
|
+
continue;
|
|
161
|
+
if (journal.type !== "blob")
|
|
162
|
+
throw new AuthorityCorruptionError(`journal path is not a blob: ${path}`);
|
|
163
|
+
const bytes = blobs.get(journal.oid);
|
|
164
|
+
if (bytes === undefined)
|
|
165
|
+
throw new Error(`missing batched journal bytes: ${path}`);
|
|
166
|
+
const decoded = decodeGitJournal(path, git, bytes);
|
|
167
|
+
const id = decoded.id;
|
|
168
|
+
if (seen.has(id))
|
|
169
|
+
throw new AuthorityCorruptionError(`duplicate contract journal identity: ${id}`);
|
|
170
|
+
seen.add(id);
|
|
171
|
+
observations.set(id, observeDecodedJournal(id, decoded, path));
|
|
172
|
+
}
|
|
173
|
+
return observations;
|
|
174
|
+
}
|
|
175
|
+
export async function observeActiveContractWorld(observation) {
|
|
176
|
+
const git = observation.snapshot;
|
|
177
|
+
const journals = [...git.paths]
|
|
178
|
+
.filter(([path, entry]) => path.startsWith("contracts/active/") && path.endsWith(".jsonl") && entry.type === "blob");
|
|
179
|
+
const results = await observation.readBlobs(journals.map(([, entry]) => entry.oid));
|
|
180
|
+
const blobs = new Map();
|
|
181
|
+
for (const [path, entry] of journals) {
|
|
182
|
+
const result = results.get(entry.oid);
|
|
183
|
+
if (result?.kind !== "present")
|
|
184
|
+
throw new AuthorityCorruptionError(`missing Git journal object: ${path}`);
|
|
185
|
+
blobs.set(entry.oid, result.bytes);
|
|
186
|
+
}
|
|
187
|
+
const contracts = new Map(enumerateContractObservations(git, blobs, "active"));
|
|
188
|
+
const prerequisites = [...new Set([...contracts.values()].flatMap((record) => record.state?.terms.after ?? []))];
|
|
189
|
+
const dependencyRecords = await observeTargetedContractsAt(observation, prerequisites);
|
|
190
|
+
return {
|
|
191
|
+
snapshot: git.commit === null ? null : mintSnapshotId(git.commit),
|
|
192
|
+
contracts,
|
|
193
|
+
eligibility: decisionProjection({
|
|
194
|
+
contracts: new Map([...contracts, ...dependencyRecords.contracts]),
|
|
195
|
+
}),
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
export async function observeContractWorld(observation, requested = []) {
|
|
199
|
+
const git = observation.snapshot;
|
|
200
|
+
const journals = [...git.paths]
|
|
201
|
+
.filter(([path, entry]) => /^contracts\/(?:active|terminal)\//u.test(path) && path.endsWith(".jsonl") && entry.type === "blob");
|
|
202
|
+
const results = await observation.readBlobs(journals.map(([, entry]) => entry.oid));
|
|
203
|
+
const blobs = new Map();
|
|
204
|
+
for (const [path, entry] of journals) {
|
|
205
|
+
const result = results.get(entry.oid);
|
|
206
|
+
if (result?.kind !== "present")
|
|
207
|
+
throw new AuthorityCorruptionError(`missing Git journal object: ${path}`);
|
|
208
|
+
blobs.set(entry.oid, result.bytes);
|
|
209
|
+
}
|
|
210
|
+
const contracts = new Map(enumerateContractObservations(git, blobs));
|
|
211
|
+
for (const id of requested) {
|
|
212
|
+
if (!contracts.has(id))
|
|
213
|
+
contracts.set(id, observeFromGit(git, id, blobs));
|
|
214
|
+
}
|
|
215
|
+
return {
|
|
216
|
+
snapshot: git.commit === null ? null : mintSnapshotId(git.commit),
|
|
217
|
+
contracts,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
async function observeTargetedContractsAt(observation, ids) {
|
|
221
|
+
return observeTargetedContractsFromSnapshotAt(observation.snapshot, observation.readBlobs, ids);
|
|
222
|
+
}
|
|
223
|
+
async function observeTargetedContractsFromSnapshotAt(snapshot, readBlobsAt, ids) {
|
|
224
|
+
const paths = ids.flatMap(contractJournalPaths);
|
|
225
|
+
const entries = paths.flatMap((path) => {
|
|
226
|
+
const journal = snapshot.paths.get(path);
|
|
227
|
+
return journal?.type === "blob" ? [[path, journal]] : [];
|
|
228
|
+
});
|
|
229
|
+
const results = await readBlobsAt(entries.map(([, entry]) => entry.oid));
|
|
230
|
+
const blobs = new Map();
|
|
231
|
+
for (const [path, entry] of entries) {
|
|
232
|
+
const result = results.get(entry.oid);
|
|
233
|
+
if (result?.kind !== "present")
|
|
234
|
+
throw new AuthorityCorruptionError(`missing Git journal object: ${path}`);
|
|
235
|
+
blobs.set(entry.oid, result.bytes);
|
|
236
|
+
}
|
|
237
|
+
const contracts = new Map();
|
|
238
|
+
for (const id of ids)
|
|
239
|
+
contracts.set(id, observeFromGit(snapshot, id, blobs));
|
|
240
|
+
return { contracts, frozenJournalBytes: blobs };
|
|
241
|
+
}
|
|
242
|
+
export async function observeContractsForAdmissionAt(repository, channel, ids, selection = {}) {
|
|
243
|
+
return withGitTargetedReadObservation(repository, channel, {
|
|
244
|
+
paths: [...ids.flatMap(contractJournalPaths), ...(selection.paths ?? [])],
|
|
245
|
+
...(selection.subtrees === undefined ? {} : { subtrees: selection.subtrees }),
|
|
246
|
+
}, (observation) => observeContractsForAdmissionInObservationAt(observation, ids));
|
|
247
|
+
}
|
|
248
|
+
export function withContractReadObservationAt(repository, channel, id, consume) {
|
|
249
|
+
return withGitTargetedReadObservation(repository, channel, {
|
|
250
|
+
paths: contractJournalPaths(id),
|
|
251
|
+
}, consume);
|
|
252
|
+
}
|
|
253
|
+
/** Observe targeted Contract journals within an already frozen Git epoch. */
|
|
254
|
+
export async function observeContractsForAdmissionInObservationAt(observation, ids) {
|
|
255
|
+
const contracts = await observeTargetedContractsAt(observation, ids);
|
|
256
|
+
return {
|
|
257
|
+
admission: {
|
|
258
|
+
snapshot: observation.snapshot,
|
|
259
|
+
frozenJournalBytes: contracts.frozenJournalBytes,
|
|
260
|
+
treeDirectories: observation.treeDirectories,
|
|
261
|
+
},
|
|
262
|
+
decision: decisionProjection(contracts),
|
|
263
|
+
journals: contracts.contracts,
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
export async function observeContractAt(repository, channel, id) {
|
|
267
|
+
const observation = await observeContractsForAdmissionAt(repository, channel, [id]);
|
|
268
|
+
const record = observation.journals.get(id);
|
|
269
|
+
if (record === undefined)
|
|
270
|
+
throw new Error(`missing requested contract observation: ${id}`);
|
|
271
|
+
return record;
|
|
272
|
+
}
|
|
273
|
+
export async function extendContractsForAdmissionAt(channel, observation, ids) {
|
|
274
|
+
const missing = ids.filter((id) => !observation.decision.has(id));
|
|
275
|
+
if (missing.length === 0)
|
|
276
|
+
return observation;
|
|
277
|
+
const readBlobsAt = async (oids) => {
|
|
278
|
+
const objects = await channel.readObjects(oids);
|
|
279
|
+
const blobs = new Map();
|
|
280
|
+
for (const [oid, object] of objects) {
|
|
281
|
+
if (object.kind === "missing")
|
|
282
|
+
blobs.set(oid, object);
|
|
283
|
+
else {
|
|
284
|
+
if (object.type !== "blob")
|
|
285
|
+
throw new AuthorityCorruptionError(`Git object is not a blob: ${oid}`);
|
|
286
|
+
blobs.set(oid, { kind: "present", bytes: object.bytes });
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
return blobs;
|
|
290
|
+
};
|
|
291
|
+
const snapshot = observation.admission.snapshot;
|
|
292
|
+
if (snapshot.tree === null)
|
|
293
|
+
return observation;
|
|
294
|
+
const selected = await readGitTreeSelection(channel, snapshot.tree, {
|
|
295
|
+
paths: missing.flatMap(contractJournalPaths),
|
|
296
|
+
});
|
|
297
|
+
const extendedSnapshot = {
|
|
298
|
+
...snapshot,
|
|
299
|
+
paths: new Map([...snapshot.paths, ...selected.paths]),
|
|
300
|
+
};
|
|
301
|
+
const added = await observeTargetedContractsFromSnapshotAt(extendedSnapshot, readBlobsAt, missing);
|
|
302
|
+
return {
|
|
303
|
+
admission: {
|
|
304
|
+
snapshot: extendedSnapshot,
|
|
305
|
+
frozenJournalBytes: new Map([...observation.admission.frozenJournalBytes, ...added.frozenJournalBytes]),
|
|
306
|
+
treeDirectories: new Map([...observation.admission.treeDirectories, ...selected.directories]),
|
|
307
|
+
},
|
|
308
|
+
decision: new Map([...observation.decision, ...decisionProjection(added)]),
|
|
309
|
+
journals: new Map([...observation.journals, ...added.contracts]),
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
export async function extendAdmissionPathsAt(channel, observation, paths) {
|
|
313
|
+
if (paths.length === 0 || observation.admission.snapshot.tree === null)
|
|
314
|
+
return observation;
|
|
315
|
+
const selected = await readGitTreeSelection(channel, observation.admission.snapshot.tree, { paths });
|
|
316
|
+
return {
|
|
317
|
+
...observation,
|
|
318
|
+
admission: {
|
|
319
|
+
...observation.admission,
|
|
320
|
+
snapshot: {
|
|
321
|
+
...observation.admission.snapshot,
|
|
322
|
+
paths: new Map([...observation.admission.snapshot.paths, ...selected.paths]),
|
|
323
|
+
},
|
|
324
|
+
treeDirectories: new Map([...observation.admission.treeDirectories, ...selected.directories]),
|
|
325
|
+
},
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
function decisionProjection(observation) {
|
|
329
|
+
return new Map([...observation.contracts].map(([id, record]) => [id, record.state]));
|
|
330
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type TreeEntry } from "./tree.js";
|
|
2
|
+
import { type GitOid, type GitRepository, type GitSnapshot } from "./repository.js";
|
|
3
|
+
declare const gitReadObservationBrand: unique symbol;
|
|
4
|
+
declare const gitDecodeChannelBrand: unique symbol;
|
|
5
|
+
export type GitBlobResult = Readonly<{
|
|
6
|
+
kind: "present";
|
|
7
|
+
bytes: Buffer;
|
|
8
|
+
}> | Readonly<{
|
|
9
|
+
kind: "missing";
|
|
10
|
+
}>;
|
|
11
|
+
export type GitReadObservation = Readonly<{
|
|
12
|
+
readonly [gitReadObservationBrand]: true;
|
|
13
|
+
repository: GitRepository;
|
|
14
|
+
snapshot: GitSnapshot;
|
|
15
|
+
treeDirectories: ReadonlyMap<string, ReadonlyMap<string, TreeEntry>>;
|
|
16
|
+
readBlobs(oids: readonly GitOid[]): Promise<ReadonlyMap<GitOid, GitBlobResult>>;
|
|
17
|
+
resolveRef(ref: string): Promise<GitOid | null>;
|
|
18
|
+
}>;
|
|
19
|
+
export type GitObjectResult = Readonly<{
|
|
20
|
+
kind: "present";
|
|
21
|
+
type: string;
|
|
22
|
+
bytes: Buffer;
|
|
23
|
+
}> | Readonly<{
|
|
24
|
+
kind: "missing";
|
|
25
|
+
}>;
|
|
26
|
+
export type GitDecodeChannel = Readonly<{
|
|
27
|
+
readonly [gitDecodeChannelBrand]: true;
|
|
28
|
+
readObjects(oids: readonly GitOid[]): Promise<ReadonlyMap<GitOid, GitObjectResult>>;
|
|
29
|
+
}>;
|
|
30
|
+
export type GitTreeSelection = Readonly<{
|
|
31
|
+
paths?: readonly string[];
|
|
32
|
+
subtrees?: readonly string[];
|
|
33
|
+
}>;
|
|
34
|
+
export declare function readGitTreeSelection(channel: GitDecodeChannel, root: GitOid, selection: GitTreeSelection): Promise<Readonly<{
|
|
35
|
+
paths: ReadonlyMap<string, TreeEntry>;
|
|
36
|
+
directories: ReadonlyMap<string, ReadonlyMap<string, TreeEntry>>;
|
|
37
|
+
}>>;
|
|
38
|
+
export declare function withGitDecodeChannel<Value>(repository: GitRepository, consume: (channel: GitDecodeChannel) => Value | PromiseLike<Value>): Promise<Value>;
|
|
39
|
+
export declare function withGitReadObservation<Value>(repository: GitRepository, channel: GitDecodeChannel, consume: (observation: GitReadObservation) => Value | PromiseLike<Value>): Promise<Value>;
|
|
40
|
+
export declare function withGitTargetedReadObservation<Value>(repository: GitRepository, channel: GitDecodeChannel, selection: GitTreeSelection, consume: (observation: GitReadObservation) => Value | PromiseLike<Value>): Promise<Value>;
|
|
41
|
+
export {};
|