@astrosheep/keiyaku 2.9.12 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -126
- package/build/integrations/marketplace/.agents/plugins/marketplace.json +12 -0
- package/build/integrations/marketplace/.claude-plugin/marketplace.json +5 -0
- package/build/integrations/marketplace/plugins/keiyaku/.claude-plugin/plugin.json +7 -0
- package/build/integrations/marketplace/plugins/keiyaku/.codex-plugin/plugin.json +18 -0
- package/build/integrations/marketplace/plugins/keiyaku/opencode.js +16 -0
- package/build/integrations/marketplace/plugins/keiyaku/package.json +8 -0
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku/SKILL.md +34 -0
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-akuma/SKILL.md +50 -0
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-task/SKILL.md +62 -0
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-workflow/SKILL.md +72 -0
- package/build/src/akuma/activity.d.ts +66 -0
- package/build/src/akuma/activity.js +139 -0
- package/build/src/akuma/akuma.d.ts +116 -0
- package/build/src/akuma/akuma.js +382 -0
- package/build/src/akuma/archetype.d.ts +31 -0
- package/build/src/akuma/archetype.js +188 -0
- package/build/src/akuma/body.d.ts +20 -0
- package/build/src/akuma/body.js +305 -0
- package/build/src/akuma/heart/facts.d.ts +150 -0
- package/build/src/akuma/heart/facts.js +9 -0
- package/build/src/akuma/heart/index.d.ts +78 -0
- package/build/src/akuma/heart/index.js +361 -0
- package/build/src/akuma/heart/rows.d.ts +189 -0
- package/build/src/akuma/heart/rows.js +319 -0
- package/build/src/akuma/heart/schema.d.ts +5 -0
- package/build/src/akuma/heart/schema.js +113 -0
- package/build/src/akuma/identity.d.ts +46 -0
- package/build/src/akuma/identity.js +89 -0
- package/build/src/akuma/index.d.ts +7 -0
- package/build/src/akuma/index.js +3 -0
- package/build/src/akuma/provider.d.ts +123 -0
- package/build/src/akuma/provider.js +235 -0
- package/build/src/akuma/providers/claude.d.ts +84 -0
- package/build/src/akuma/providers/claude.js +305 -0
- package/build/src/akuma/providers/codex-app-server/events.d.ts +110 -0
- package/build/src/akuma/providers/codex-app-server/events.js +337 -0
- package/build/src/akuma/providers/codex-app-server/index.d.ts +27 -0
- package/build/src/akuma/providers/codex-app-server/index.js +162 -0
- package/build/src/akuma/providers/index.d.ts +4 -0
- package/build/src/akuma/providers/index.js +71 -0
- package/build/src/akuma/publication.d.ts +10 -0
- package/build/src/akuma/publication.js +107 -0
- package/build/src/akuma/requests.d.ts +46 -0
- package/build/src/akuma/requests.js +388 -0
- package/build/src/alias/index.d.ts +17 -0
- package/build/src/alias/index.js +104 -0
- package/build/src/body/amend.d.ts +2 -0
- package/build/src/body/amend.js +289 -0
- package/build/src/body/arc.d.ts +2 -0
- package/build/src/body/arc.js +54 -0
- package/build/src/body/decode.d.ts +4 -0
- package/build/src/body/decode.js +146 -0
- package/build/src/body/keys.d.ts +4 -0
- package/build/src/body/keys.js +11 -0
- package/build/src/body/region.d.ts +6 -0
- package/build/src/body/region.js +139 -0
- package/build/src/body/render.d.ts +4 -0
- package/build/src/body/render.js +73 -0
- package/build/src/body/shape.d.ts +29 -0
- package/build/src/body/shape.js +16 -0
- package/build/src/body/types.d.ts +28 -0
- package/build/src/body/verification.d.ts +7 -0
- package/build/src/body/verification.js +25 -0
- package/build/src/cli/accepted.d.ts +16 -0
- package/build/src/cli/accepted.js +65 -0
- package/build/src/cli/actor.d.ts +8 -0
- package/build/src/cli/actor.js +11 -0
- package/build/src/cli/commands/akuma-invoke.d.ts +53 -0
- package/build/src/cli/commands/akuma-invoke.js +68 -0
- package/build/src/cli/commands/akuma.d.ts +42 -0
- package/build/src/cli/commands/akuma.js +224 -0
- package/build/src/cli/commands/amend.d.ts +13 -0
- package/build/src/cli/commands/amend.js +13 -0
- package/build/src/cli/commands/bind.d.ts +12 -0
- package/build/src/cli/commands/bind.js +17 -0
- package/build/src/cli/commands/install.d.ts +25 -0
- package/build/src/cli/commands/install.js +103 -0
- package/build/src/cli/commands/task-invoke.d.ts +9 -0
- package/build/src/cli/commands/task-invoke.js +92 -0
- package/build/src/cli/commands/task.d.ts +16 -0
- package/build/src/cli/commands/task.js +144 -0
- package/build/src/cli/index.d.ts +2 -0
- package/build/src/cli/index.js +3 -0
- package/build/src/cli/invoke.d.ts +17 -0
- package/build/src/cli/invoke.js +265 -0
- package/build/src/cli/main.d.ts +1 -0
- package/build/src/cli/main.js +79 -0
- package/build/src/cli/parse.d.ts +210 -0
- package/build/src/cli/parse.js +375 -0
- package/build/src/cli/render/akuma-tool.d.ts +11 -0
- package/build/src/cli/render/akuma-tool.js +68 -0
- package/build/src/cli/render/akuma.d.ts +6 -0
- package/build/src/cli/render/akuma.js +254 -0
- package/build/src/cli/render/board.d.ts +2 -0
- package/build/src/cli/render/board.js +4 -0
- package/build/src/cli/render/contract.d.ts +4 -0
- package/build/src/cli/render/contract.js +69 -0
- package/build/src/cli/render/kanshi.d.ts +3 -0
- package/build/src/cli/render/kanshi.js +204 -0
- package/build/src/cli/render/refusal.d.ts +2 -0
- package/build/src/cli/render/refusal.js +4 -0
- package/build/src/cli/render/settings.d.ts +3 -0
- package/build/src/cli/render/settings.js +30 -0
- package/build/src/cli/render/task.d.ts +6 -0
- package/build/src/cli/render/task.js +105 -0
- package/build/src/cli/render/terminal.d.ts +10 -0
- package/build/src/cli/render/terminal.js +76 -0
- package/build/src/cli/render/text.d.ts +3 -0
- package/build/src/cli/render/text.js +15 -0
- package/build/src/cli/result.d.ts +55 -0
- package/build/src/cli/selectors.d.ts +9 -0
- package/build/src/cli/selectors.js +66 -0
- package/build/src/cli/usage.d.ts +6 -0
- package/build/src/cli/usage.js +19 -0
- package/build/src/context-root.d.ts +4 -0
- package/build/src/context-root.js +15 -0
- package/build/src/coordination/durable-file.d.ts +1 -0
- package/build/src/coordination/durable-file.js +36 -0
- package/build/src/coordination/sqlite-transaction-lock.d.ts +14 -0
- package/build/src/coordination/sqlite-transaction-lock.js +119 -0
- package/build/src/core/decide.d.ts +45 -0
- package/build/src/core/facts/codec.d.ts +3 -0
- package/build/src/core/facts/codec.js +258 -0
- package/build/src/core/facts/eligibility.d.ts +16 -0
- package/build/src/core/facts/eligibility.js +75 -0
- package/build/src/core/facts/errors.d.ts +3 -0
- package/build/src/core/facts/errors.js +6 -0
- package/build/src/core/facts/fold.d.ts +2 -0
- package/build/src/core/facts/fold.js +97 -0
- package/build/src/core/facts/gate.d.ts +24 -0
- package/build/src/core/facts/gate.js +52 -0
- package/build/src/core/facts/observation.d.ts +12 -0
- package/build/src/core/facts/observation.js +23 -0
- package/build/src/core/facts/offer.d.ts +21 -0
- package/build/src/core/facts/types.d.ts +130 -0
- package/build/src/core/facts/types.js +66 -0
- package/build/src/core/subject.d.ts +21 -0
- package/build/src/core/subject.js +89 -0
- package/build/src/core/verbs/abandon.d.ts +13 -0
- package/build/src/core/verbs/abandon.js +17 -0
- package/build/src/core/verbs/amend.d.ts +14 -0
- package/build/src/core/verbs/amend.js +56 -0
- package/build/src/core/verbs/arc.d.ts +13 -0
- package/build/src/core/verbs/arc.js +25 -0
- package/build/src/core/verbs/attestation.d.ts +13 -0
- package/build/src/core/verbs/attestation.js +21 -0
- package/build/src/core/verbs/bind.d.ts +13 -0
- package/build/src/core/verbs/bind.js +40 -0
- package/build/src/core/verbs/deliver.d.ts +13 -0
- package/build/src/core/verbs/deliver.js +26 -0
- package/build/src/core/verbs/placement.d.ts +13 -0
- package/build/src/core/verbs/placement.js +42 -0
- package/build/src/dispatch/index.d.ts +31 -0
- package/build/src/dispatch/index.js +159 -0
- package/build/src/git/admission.d.ts +18 -0
- package/build/src/git/admission.js +116 -0
- package/build/src/git/delivery.d.ts +20 -0
- package/build/src/git/delivery.js +109 -0
- package/build/src/git/hooks.d.ts +34 -0
- package/build/src/git/hooks.js +258 -0
- package/build/src/git/identity.d.ts +13 -0
- package/build/src/git/identity.js +28 -0
- package/build/src/git/observe.d.ts +38 -0
- package/build/src/git/observe.js +227 -0
- package/build/src/git/reconcile.d.ts +49 -0
- package/build/src/git/reconcile.js +223 -0
- package/build/src/git/repository.d.ts +80 -0
- package/build/src/git/repository.js +456 -0
- package/build/src/git/tree.d.ts +34 -0
- package/build/src/git/tree.js +112 -0
- package/build/src/git/verification.d.ts +14 -0
- package/build/src/git/verification.js +56 -0
- package/build/src/identity/coordinates.d.ts +9 -0
- package/build/src/identity/coordinates.js +20 -0
- package/build/src/identity/normalize.d.ts +8 -0
- package/build/src/identity/normalize.js +45 -0
- package/build/src/identity/selector.d.ts +6 -0
- package/build/src/identity/selector.js +7 -0
- package/build/src/index.d.ts +4 -0
- package/build/src/index.js +2 -0
- package/build/src/kanshi/index.d.ts +5 -0
- package/build/src/kanshi/index.js +2 -0
- package/build/src/kanshi/read.d.ts +5 -0
- package/build/src/kanshi/read.js +100 -0
- package/build/src/kanshi/report.d.ts +35 -0
- package/build/src/kanshi/select.d.ts +8 -0
- package/build/src/kanshi/select.js +21 -0
- package/build/src/library/akuma-creation.d.ts +79 -0
- package/build/src/library/akuma-creation.js +151 -0
- package/build/src/library/configuration.d.ts +26 -0
- package/build/src/library/configuration.js +100 -0
- package/build/src/library/contract.d.ts +145 -0
- package/build/src/library/contract.js +325 -0
- package/build/src/library/input.d.ts +13 -0
- package/build/src/library/input.js +82 -0
- package/build/src/library/keiyaku.d.ts +28 -0
- package/build/src/library/keiyaku.js +16 -0
- package/build/src/library/region.d.ts +17 -0
- package/build/src/library/region.js +30 -0
- package/build/src/library/repo.d.ts +33 -0
- package/build/src/library/repo.js +61 -0
- package/build/src/markdown/diff.d.ts +1 -0
- package/build/src/markdown/diff.js +4 -0
- package/build/src/markdown/lex.d.ts +3 -0
- package/build/src/markdown/lex.js +221 -0
- package/build/src/markdown/parse.d.ts +2 -0
- package/build/src/markdown/parse.js +221 -0
- package/build/src/markdown/query.d.ts +21 -0
- package/build/src/markdown/query.js +51 -0
- package/build/src/markdown/types.d.ts +118 -0
- package/build/src/markdown/types.js +6 -0
- package/build/src/protocol/attempt.d.ts +36 -0
- package/build/src/protocol/attempt.js +119 -0
- package/build/src/protocol/bind.d.ts +25 -0
- package/build/src/protocol/bind.js +62 -0
- package/build/src/protocol/intent.d.ts +52 -0
- package/build/src/protocol/intent.js +129 -0
- package/build/src/protocol/operations.d.ts +140 -0
- package/build/src/protocol/operations.js +373 -0
- package/build/src/protocol/outcome.d.ts +18 -0
- package/build/src/protocol/outcome.js +15 -0
- package/build/src/protocol/read/audit.d.ts +25 -0
- package/build/src/protocol/read/audit.js +39 -0
- package/build/src/protocol/read/documents.d.ts +8 -0
- package/build/src/protocol/read/documents.js +16 -0
- package/build/src/protocol/read/status.d.ts +38 -0
- package/build/src/protocol/read/status.js +47 -0
- package/build/src/protocol/run.d.ts +39 -0
- package/build/src/protocol/run.js +36 -0
- package/build/src/runtime/proc/line-rpc.d.ts +37 -0
- package/build/src/runtime/proc/line-rpc.js +124 -0
- package/build/src/runtime/proc/run.d.ts +54 -0
- package/build/src/runtime/proc/run.js +200 -0
- package/build/src/settings.d.ts +45 -0
- package/build/src/settings.js +99 -0
- package/build/src/settlement/holder.d.ts +15 -0
- package/build/src/settlement/holder.js +113 -0
- package/build/src/settlement/settle.d.ts +36 -0
- package/build/src/settlement/settle.js +91 -0
- package/build/src/task/board.d.ts +65 -0
- package/build/src/task/board.js +155 -0
- package/build/src/task/compose.d.ts +25 -0
- package/build/src/task/compose.js +232 -0
- package/build/src/task/context.d.ts +4 -0
- package/build/src/task/context.js +56 -0
- package/build/src/task/document.d.ts +24 -0
- package/build/src/task/document.js +118 -0
- package/build/src/task/identity.d.ts +12 -0
- package/build/src/task/identity.js +47 -0
- package/build/src/task/index.d.ts +90 -0
- package/build/src/task/index.js +179 -0
- package/build/src/task/operations.d.ts +115 -0
- package/build/src/task/operations.js +194 -0
- package/build/src/task/store.d.ts +22 -0
- package/build/src/task/store.js +114 -0
- package/build/src/verification/declaration.d.ts +22 -0
- package/build/src/verification/declaration.js +14 -0
- package/build/src/verification/producer.d.ts +23 -0
- package/build/src/verification/producer.js +54 -0
- package/package.json +62 -44
- package/build/.tsbuildinfo +0 -1
- package/build/agents/call-terms.js +0 -31
- 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 -4
- package/build/cli/commands/akuma/akuma/meta.js +0 -16
- package/build/cli/commands/akuma/catalog.js +0 -8
- package/build/cli/commands/akuma/list/handler.js +0 -15
- 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 -181
- package/build/cli/commands/contract/amend/handler.js +0 -17
- package/build/cli/commands/contract/amend/meta.js +0 -12
- package/build/cli/commands/contract/arc/handler.js +0 -16
- package/build/cli/commands/contract/arc/meta.js +0 -26
- package/build/cli/commands/contract/audit/handler.js +0 -16
- package/build/cli/commands/contract/audit/meta.js +0 -16
- 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 -63
- package/build/cli/commands/contract/petition/meta.js +0 -23
- package/build/cli/commands/contract/renew/handler.js +0 -24
- package/build/cli/commands/contract/renew/meta.js +0 -18
- package/build/cli/commands/metadata.js +0 -65
- 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/history/handler.js +0 -21
- 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/revive/handler.js +0 -56
- package/build/cli/commands/projection/revive/meta.js +0 -12
- package/build/cli/commands/projection/shared.js +0 -27
- package/build/cli/commands/projection/status/handler.js +0 -26
- package/build/cli/commands/projection/status/meta.js +0 -9
- package/build/cli/commands/projection/tell/handler.js +0 -28
- package/build/cli/commands/projection/tell/meta.js +0 -12
- package/build/cli/commands/projection/wait/handler.js +0 -55
- 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 -8
- 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 -22
- package/build/cli/commands/task/add/meta.js +0 -19
- package/build/cli/commands/task/catalog.js +0 -30
- 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 -4
- 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 -3
- package/build/cli/commands/task/drop/meta.js +0 -8
- 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/resume/handler.js +0 -3
- package/build/cli/commands/task/resume/meta.js +0 -8
- package/build/cli/commands/task/shared.js +0 -167
- 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 -11
- package/build/cli/completion.js +0 -88
- package/build/cli/draft-artifact.js +0 -50
- package/build/cli/flags.js +0 -289
- package/build/cli/help.js +0 -100
- package/build/cli/index.js +0 -332
- 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 -262
- package/build/cli/parse-metadata.js +0 -129
- package/build/cli/parse-selectors.js +0 -65
- package/build/cli/parse.js +0 -237
- 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 -79
- 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 -263
- 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 -70
- package/build/cli/render/projection-activity.js +0 -332
- package/build/cli/render/projection-history.js +0 -64
- 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.js +0 -213
- package/build/cli/render/success-response.js +0 -80
- package/build/cli/render/task.js +0 -174
- package/build/cli/render/tell.js +0 -5
- package/build/cli/render/terminal-failure.js +0 -65
- package/build/cli/render/tool-ledger-rollup.js +0 -74
- package/build/cli/render/tool-presentation.js +0 -97
- package/build/cli/render/types.js +0 -2
- package/build/cli/render/wait.js +0 -275
- package/build/cli/skills-install.js +0 -348
- package/build/cli/subagent-guard.js +0 -25
- package/build/cli/types.js +0 -1
- package/build/config/akuma-loader.js +0 -220
- 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 -8
- 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 -108
- package/build/core/address-carrier.js +0 -89
- package/build/core/addressing.js +0 -407
- package/build/core/amend.js +0 -236
- 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 -149
- package/build/core/audit/coordinates.js +0 -235
- package/build/core/audit/evidence.js +0 -154
- 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 -390
- package/build/core/bind-workspace.js +0 -115
- package/build/core/bind.js +0 -402
- package/build/core/call/call.js +0 -236
- package/build/core/call/context.js +0 -197
- package/build/core/call/execution.js +0 -240
- package/build/core/call/prompt.js +0 -58
- 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 -408
- package/build/core/contract-carrier.js +0 -270
- package/build/core/contract-view.js +0 -282
- package/build/core/contract.js +0 -18
- package/build/core/derived-replay.js +0 -207
- package/build/core/draft.js +0 -396
- 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 -35
- package/build/core/lifecycle-recovery.js +0 -117
- 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/process-group.js +0 -139
- package/build/core/projection/generation/database.js +0 -411
- package/build/core/projection/generation/identity.js +0 -84
- package/build/core/projection/generation/model.js +0 -256
- package/build/core/projection/generation/projection-generation-continuation.js +0 -84
- package/build/core/projection/generation/projection-generation-execution.js +0 -217
- package/build/core/projection/generation/projection-generation-identity.js +0 -17
- package/build/core/projection/generation/projection-generation-launcher.js +0 -220
- package/build/core/projection/generation/projection-generation-process.js +0 -46
- package/build/core/projection/generation/projection-generation-runner.js +0 -443
- package/build/core/projection/generation/projection-generation-runtime.js +0 -97
- package/build/core/projection/generation/store.js +0 -98
- 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 -123
- 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 -103
- package/build/core/projection/projection-life-observer.js +0 -101
- package/build/core/projection/projection-life-protocol.js +0 -115
- package/build/core/projection/projection-mint.js +0 -172
- package/build/core/projection/projection-runner-lock.js +0 -211
- package/build/core/projection/projection-status-observation.js +0 -365
- package/build/core/projection/projection-status.js +0 -295
- package/build/core/projection/projection-terminal-failure.js +0 -111
- package/build/core/projection/projection-wait.js +0 -318
- package/build/core/projection/projection-wake.js +0 -360
- package/build/core/projection/tell/database.js +0 -127
- 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 -424
- package/build/core/renew-plan.js +0 -239
- package/build/core/renew-rewrite.js +0 -77
- package/build/core/renew.js +0 -341
- package/build/core/repository-ledger/accepted-fold-read.js +0 -19
- 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 -297
- package/build/core/repository-ledger/current-state-store.js +0 -971
- package/build/core/repository-ledger/fold-repository.js +0 -375
- 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/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 -469
- 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 -341
- 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/scope.js +0 -416
- package/build/core/seal.js +0 -352
- package/build/core/settlement/claim-delivery.js +0 -69
- package/build/core/settlement/claim.js +0 -256
- package/build/core/settlement/index.js +0 -19
- package/build/core/settlement/petition-claim-gates.js +0 -246
- package/build/core/settlement/petition-forfeit.js +0 -46
- package/build/core/settlement/petition-head-guard.js +0 -13
- package/build/core/settlement/petition-io.js +0 -1
- package/build/core/settlement/petition-preview.js +0 -109
- package/build/core/settlement/petition-window.js +0 -50
- package/build/core/settlement/petition.js +0 -281
- 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 -380
- package/build/core/settlement/verdict.js +0 -126
- package/build/core/settlement/verification-coordination.js +0 -305
- package/build/core/settlement/verification-supervisor.js +0 -275
- package/build/core/settlement/verification.js +0 -426
- package/build/core/sqlite-process-lifetime-lock.js +0 -194
- package/build/core/status/board.js +0 -346
- package/build/core/status/drift.js +0 -115
- 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 -247
- package/build/core/task/commands.js +0 -376
- package/build/core/task/compose.js +0 -327
- package/build/core/task/coordinate.js +0 -56
- package/build/core/task/document.js +0 -210
- 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 -426
- package/build/core/task/settlement-policy.js +0 -124
- package/build/core/task/source-board.js +0 -103
- package/build/core/task/source-model.js +0 -1
- package/build/core/task/task-bind-preparation.js +0 -193
- 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 -96
- 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/worktree-bootstrap.js +0 -195
- package/build/core/worktree-path.js +0 -375
- package/build/errno.js +0 -3
- package/build/flow-error.js +0 -183
- 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 -113
- package/build/git/commits.js +0 -80
- package/build/git/core.js +0 -238
- 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/refs.js +0 -225
- package/build/git/staging.js +0 -155
- package/build/git/streaming-batch.js +0 -361
- package/build/git/worktree.js +0 -162
- package/build/index.js +0 -60
- 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 -96
- package/skills/keiyaku-task/SKILL.md +0 -84
- package/skills/keiyaku-workflow/SKILL.md +0 -151
- /package/build/{agents/launch-snapshot → src/body}/types.js +0 -0
- /package/build/{agents/providers/claude-agent-sdk/terms.js → src/cli/result.js} +0 -0
- /package/build/{agents/providers/codex-app-server/terms.js → src/core/decide.js} +0 -0
- /package/build/{agents/providers/opencode-sdk/terms.js → src/core/facts/offer.js} +0 -0
- /package/build/{agents/providers/pi/terms.js → src/kanshi/report.js} +0 -0
package/build/flow-error.js
DELETED
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
import { ACTOR_IDENTITY, SETTINGS_PATH_SEGMENTS } from "./keiyaku-constants.js";
|
|
2
|
-
import { formatArtifactDirectories, KEIYAKU_ARTIFACT_DIRS } from "./artifact-directories.js";
|
|
3
|
-
const SETTINGS_DISPLAY_PATH = SETTINGS_PATH_SEGMENTS.join("/");
|
|
4
|
-
const DEFAULT_HINT_CONTEXT = {
|
|
5
|
-
bindToolName: "bind",
|
|
6
|
-
arcToolName: "arc",
|
|
7
|
-
renewToolName: "renew",
|
|
8
|
-
closeToolName: "petition",
|
|
9
|
-
actorIdentity: ACTOR_IDENTITY,
|
|
10
|
-
availableActorNames: [],
|
|
11
|
-
};
|
|
12
|
-
const DEFAULT_ERROR_HINT = "Error details identify what must be corrected before retrying.";
|
|
13
|
-
export function renderTemplate(template, values) {
|
|
14
|
-
return template.replace(/\$\{(?<key>[A-Za-z0-9_]+)\}/g, (match, _captured, _offset, _text, groups) => {
|
|
15
|
-
const key = groups?.key;
|
|
16
|
-
if (!key)
|
|
17
|
-
return match;
|
|
18
|
-
return Object.prototype.hasOwnProperty.call(values, key) ? values[key] : match;
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
function formatInvalidSettingsDiseaseHints(diseases) {
|
|
22
|
-
return diseases.map((disease) => {
|
|
23
|
-
const where = disease.knob ? `${disease.coordinate}:${disease.knob}` : `${disease.coordinate}:(root)`;
|
|
24
|
-
return `${where}: ${disease.reason}`;
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
/** CLI-owned typed hint table. Domain code supplies code + facts only. */
|
|
28
|
-
export function resolveFlowErrorHints(code, context, facts) {
|
|
29
|
-
if (facts?.kind === "invalid_settings") {
|
|
30
|
-
return formatInvalidSettingsDiseaseHints(facts.diseases);
|
|
31
|
-
}
|
|
32
|
-
if (facts?.kind === "verification_failure") {
|
|
33
|
-
return [
|
|
34
|
-
`Fix failures from '${facts.label}', then retry CLAIM.`,
|
|
35
|
-
`stdout:\n${facts.stdout}`,
|
|
36
|
-
`stderr:\n${facts.stderr}`,
|
|
37
|
-
];
|
|
38
|
-
}
|
|
39
|
-
if (facts?.kind === "dirty_worktree") {
|
|
40
|
-
return [
|
|
41
|
-
`Files under \`.keiyaku/\` are blocking the operation. Add ${formatArtifactDirectories(KEIYAKU_ARTIFACT_DIRS)} to \`.gitignore\` if you do not want those artifacts tracked.`,
|
|
42
|
-
];
|
|
43
|
-
}
|
|
44
|
-
if (facts?.kind === "loose_commits") {
|
|
45
|
-
return [
|
|
46
|
-
`keiyaku @${facts.contractId} arc — opens a new arc to receipt them, then ${facts.nextVerb}`,
|
|
47
|
-
];
|
|
48
|
-
}
|
|
49
|
-
if (facts?.kind === "needs_renew") {
|
|
50
|
-
return [`keiyaku @${facts.contractId} renew — renews delivery before petition`];
|
|
51
|
-
}
|
|
52
|
-
if (facts?.kind === "projection_in_flight") {
|
|
53
|
-
return ["keiyaku status — watch for the akuma to land, then renew"];
|
|
54
|
-
}
|
|
55
|
-
if (facts?.kind === "projection_wake_failure") {
|
|
56
|
-
return [];
|
|
57
|
-
}
|
|
58
|
-
switch (code) {
|
|
59
|
-
case "NOT_GIT_REPO":
|
|
60
|
-
return ["The provided `cwd` is not a git repository."];
|
|
61
|
-
case "GIT_UNAVAILABLE":
|
|
62
|
-
return ["Install Git, or use an explicitly bare command that does not require repository authority."];
|
|
63
|
-
case "ACTIVE_KEIYAKU_EXISTS":
|
|
64
|
-
return [`Next: open an arc with \`${context.arcToolName}\`, then use \`${context.renewToolName}\` when delivery must follow the current base, or \`${context.closeToolName}\` to settle it.`];
|
|
65
|
-
case "CONTRACT_AMBIGUOUS":
|
|
66
|
-
return ["Address a specific contract workspace, or use `call --bare` to run without contract attachment."];
|
|
67
|
-
case "TASK_AMBIGUOUS":
|
|
68
|
-
return ["Pass one complete task coordinate from the listed candidates."];
|
|
69
|
-
case "UNKNOWN_COMMAND":
|
|
70
|
-
return ["Run `keiyaku --help` to inspect available commands."];
|
|
71
|
-
case "UNKNOWN_OPTION":
|
|
72
|
-
case "UNKNOWN_ADDRESS":
|
|
73
|
-
case "INVALID_USAGE":
|
|
74
|
-
case "STDIN_EMPTY":
|
|
75
|
-
return [];
|
|
76
|
-
case "EMPTY_PARAM":
|
|
77
|
-
return ["One or more required parameters are empty."];
|
|
78
|
-
case "DIRTY_WORKTREE":
|
|
79
|
-
return ["The working tree has uncommitted changes."];
|
|
80
|
-
case "NOT_ACTIVE_KEIYAKU_BRANCH":
|
|
81
|
-
return ["keiyaku bind — opens a new contract"];
|
|
82
|
-
case "MISSING_KEIYAKU_BASE":
|
|
83
|
-
return ["Current branch is not associated with an active contract ledger."];
|
|
84
|
-
case "MISSING_PROTOCOL_FILES":
|
|
85
|
-
return ["Required protocol file is missing (`KEIYAKU.md`)."];
|
|
86
|
-
case "CLOSE_MERGE_CONFLICT":
|
|
87
|
-
return [];
|
|
88
|
-
case "RENEW_COORDINATE_DRIFT":
|
|
89
|
-
return [`Restore the delivery to its ledger-recorded history with Git reflog, then retry \`keiyaku ${context.renewToolName}\`.`];
|
|
90
|
-
case "RENEW_SCRATCH_NOT_FOUND":
|
|
91
|
-
return [`No renew conflict scratch is open; run \`keiyaku ${context.renewToolName}\` normally.`];
|
|
92
|
-
case "CLOSE_QUALITY_GATE_FAILED":
|
|
93
|
-
return [`CLAIM denied: a configured verification command failed. Use \`${context.arcToolName}\` after addressing the failure before petitioning again.`];
|
|
94
|
-
case "INVALID_BRANCH_TITLE":
|
|
95
|
-
return ["Title cannot be converted to a valid branch token for `keiyaku/<title>`."];
|
|
96
|
-
case "UNKNOWN_SUBAGENT": {
|
|
97
|
-
const names = context.availableActorNames.join(", ");
|
|
98
|
-
return [`Unknown ${context.actorIdentity.toLowerCase()} name. Valid options: ${names}.`];
|
|
99
|
-
}
|
|
100
|
-
case "FROM_DRAFT_NOT_FOUND":
|
|
101
|
-
return ["The path in `from_draft` does not exist. `from_draft` must reference an existing file path (absolute or relative to `cwd`)."];
|
|
102
|
-
case "INVALID_KEIYAKU_DRAFT":
|
|
103
|
-
return ["Invalid draft/input. Use a `# <title>` heading with non-empty `## Context`, `## Objective`, `## Design & Approach`, `## Scope`, `## Criteria`, and `## Verification` sections (or the equivalent shape in `from_draft`)."];
|
|
104
|
-
case "BIND_TASK_INCOMPLETE":
|
|
105
|
-
return ["Task supplies title/objective defaults; pipe only the missing sections as partial contract Markdown on stdin."];
|
|
106
|
-
case "KEIYAKU_FILE_EXISTS":
|
|
107
|
-
return [`\`${context.bindToolName}\` requires a clean slate. \`KEIYAKU.md\` must be removed before starting.`];
|
|
108
|
-
case "DETACHED_HEAD":
|
|
109
|
-
return ["Repository is in detached HEAD state. Address an active contract workspace before retrying."];
|
|
110
|
-
case "INVALID_RESPONSE_PATH":
|
|
111
|
-
return ["`keiyaku revive ARTIFACT_ID` needs a valid previous Keiyaku response artifact that includes complete provenance plus `session` and `subagent_name`."];
|
|
112
|
-
case "INVALID_CLOSE_INTENT":
|
|
113
|
-
return ["Invalid close intent. Valid values are `CLAIM` and `FORFEIT`."];
|
|
114
|
-
case "INVALID_SETTINGS":
|
|
115
|
-
return [`Fix invalid configuration in \`${SETTINGS_DISPLAY_PATH}\` and retry.`];
|
|
116
|
-
case "INVALID_EFFORT_OVERRIDE":
|
|
117
|
-
return ["Choose an effort value declared by the selected Akuma's effortOptions."];
|
|
118
|
-
case "CONCURRENT_MODIFICATION":
|
|
119
|
-
return [`Concurrent repository changes were detected during \`${context.arcToolName}\` or \`${context.renewToolName}\`. Retry on the latest branch state.`];
|
|
120
|
-
case "TASK_LOCK_ADMISSION_TIMEOUT":
|
|
121
|
-
return ["Task coordination did not become available before the bounded deadline. Retry the command; repeated timeouts indicate a stuck or damaged repository lock."];
|
|
122
|
-
case "INTERNAL_STATE":
|
|
123
|
-
return ["An internal state error occurred. Please verify your repository status."];
|
|
124
|
-
case "SCOPE_VIOLATION":
|
|
125
|
-
return ["Files outside the contract's declared scope were modified. Append ordered scope terms with `--append-scope`, amend the contract, or move the changes back."];
|
|
126
|
-
case "NO_OPEN_ARC":
|
|
127
|
-
return ["Open an arc to receipt delivery commits after the fence, then retry."];
|
|
128
|
-
case "REVIEW_REJECTED":
|
|
129
|
-
return [`CLAIM denied by the reviewer. Address the findings and retry \`${context.arcToolName}\` before petitioning again.`];
|
|
130
|
-
case "VERDICT_DENIED":
|
|
131
|
-
case "OATH_MISSING":
|
|
132
|
-
return [DEFAULT_ERROR_HINT];
|
|
133
|
-
default:
|
|
134
|
-
return [DEFAULT_ERROR_HINT];
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
function getDefaultErrorHint() {
|
|
138
|
-
return DEFAULT_ERROR_HINT;
|
|
139
|
-
}
|
|
140
|
-
export class FlowError extends Error {
|
|
141
|
-
code;
|
|
142
|
-
review;
|
|
143
|
-
facts;
|
|
144
|
-
constructor(code, message, options) {
|
|
145
|
-
super(message, options?.cause === undefined ? undefined : { cause: options.cause });
|
|
146
|
-
this.name = "FlowError";
|
|
147
|
-
this.code = code;
|
|
148
|
-
this.review = options?.review;
|
|
149
|
-
this.facts = options?.facts;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
export function isFlowError(err) {
|
|
153
|
-
return err instanceof FlowError;
|
|
154
|
-
}
|
|
155
|
-
export function requireText(name, value) {
|
|
156
|
-
const normalized = value.trim();
|
|
157
|
-
if (!normalized) {
|
|
158
|
-
throw new FlowError("EMPTY_PARAM", `parameter '${name}' cannot be empty`);
|
|
159
|
-
}
|
|
160
|
-
return normalized;
|
|
161
|
-
}
|
|
162
|
-
export function asMessage(err) {
|
|
163
|
-
return err instanceof Error ? err.message : String(err);
|
|
164
|
-
}
|
|
165
|
-
export function wrapFlowError(action, err) {
|
|
166
|
-
if (err instanceof Error && err.name === "AbortError") {
|
|
167
|
-
return err;
|
|
168
|
-
}
|
|
169
|
-
if (isFlowError(err)) {
|
|
170
|
-
return new FlowError(err.code, `${action} failed: ${err.message}`, {
|
|
171
|
-
cause: err,
|
|
172
|
-
review: err.review,
|
|
173
|
-
facts: err.facts,
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
return new Error(`${action} failed: ${asMessage(err)}`);
|
|
177
|
-
}
|
|
178
|
-
export function pickHintsFromError(err, hintContext = DEFAULT_HINT_CONTEXT) {
|
|
179
|
-
if (isFlowError(err)) {
|
|
180
|
-
return resolveFlowErrorHints(err.code, hintContext, err.facts);
|
|
181
|
-
}
|
|
182
|
-
return [getDefaultErrorHint()];
|
|
183
|
-
}
|
package/build/fs/durability.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import * as fs from "node:fs";
|
|
2
|
-
import * as fsPromises from "node:fs/promises";
|
|
3
|
-
export function supportsDirectorySync(platform = process.platform) {
|
|
4
|
-
return platform !== "win32";
|
|
5
|
-
}
|
|
6
|
-
export function syncDirectorySync(directory, platform = process.platform) {
|
|
7
|
-
if (!supportsDirectorySync(platform))
|
|
8
|
-
return;
|
|
9
|
-
const descriptor = fs.openSync(directory, fs.constants.O_RDONLY);
|
|
10
|
-
try {
|
|
11
|
-
fs.fsyncSync(descriptor);
|
|
12
|
-
}
|
|
13
|
-
finally {
|
|
14
|
-
fs.closeSync(descriptor);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
export async function syncDirectory(directory, platform = process.platform) {
|
|
18
|
-
if (!supportsDirectorySync(platform))
|
|
19
|
-
return;
|
|
20
|
-
const handle = await fsPromises.open(directory, "r");
|
|
21
|
-
try {
|
|
22
|
-
await handle.sync();
|
|
23
|
-
}
|
|
24
|
-
finally {
|
|
25
|
-
await handle.close();
|
|
26
|
-
}
|
|
27
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import * as path from "node:path";
|
|
2
|
-
/**
|
|
3
|
-
* Keep one host-native spelling before using a coordinate as a filesystem cwd.
|
|
4
|
-
* Git for Windows may emit or receive native, slash-normalized, or MSYS drive
|
|
5
|
-
* paths for the same location.
|
|
6
|
-
*/
|
|
7
|
-
export function normalizeFilesystemCoordinate(raw, platform = process.platform) {
|
|
8
|
-
const value = raw.trim();
|
|
9
|
-
if (platform !== "win32")
|
|
10
|
-
return path.normalize(value);
|
|
11
|
-
const msysDrive = value.match(/^\/([A-Za-z])(?:\/|$)(.*)$/);
|
|
12
|
-
if (msysDrive)
|
|
13
|
-
return path.win32.normalize(`${msysDrive[1].toUpperCase()}:/${msysDrive[2]}`);
|
|
14
|
-
const normalized = path.win32.normalize(value);
|
|
15
|
-
return normalized.replace(/^([a-z]):/, (_, drive) => `${drive.toUpperCase()}:`);
|
|
16
|
-
}
|
package/build/git/branches.js
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { simpleGit } from "simple-git";
|
|
2
|
-
import { FlowError } from "../flow-error.js";
|
|
3
|
-
import { normalizeFilesystemCoordinate } from "../fs/path-coordinate.js";
|
|
4
|
-
import { createGit, errorContainsAnyPattern, isGitExecutableUnavailable, NOT_GIT_REPOSITORY_PATTERNS, wrapGitError, } from "./core.js";
|
|
5
|
-
export async function observeGitRepository(cwd) {
|
|
6
|
-
try {
|
|
7
|
-
const git = simpleGit(normalizeFilesystemCoordinate(cwd));
|
|
8
|
-
git.env("GIT_TERMINAL_PROMPT", "0");
|
|
9
|
-
git.env("GCM_INTERACTIVE", "Never");
|
|
10
|
-
git.env("GIT_MERGE_AUTOEDIT", "no");
|
|
11
|
-
git.env("LC_ALL", "C");
|
|
12
|
-
git.env("PATH", process.env.PATH ?? "");
|
|
13
|
-
const output = await git.raw(["rev-parse", "--is-inside-work-tree", "--is-bare-repository"]);
|
|
14
|
-
const [insideWorktree, bare] = output.trim().split(/\r?\n/);
|
|
15
|
-
return {
|
|
16
|
-
capability: "available",
|
|
17
|
-
coordinate: insideWorktree === "true" && bare !== "true" ? "repository" : "non-repository",
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
catch (err) {
|
|
21
|
-
if (isGitExecutableUnavailable(err))
|
|
22
|
-
return { capability: "unavailable" };
|
|
23
|
-
if (errorContainsAnyPattern(err, NOT_GIT_REPOSITORY_PATTERNS)) {
|
|
24
|
-
return { capability: "available", coordinate: "non-repository" };
|
|
25
|
-
}
|
|
26
|
-
return { capability: "unknown", error: wrapGitError("check-is-repo", err, cwd) };
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
export function assertGitObservation(observation, operation) {
|
|
30
|
-
if (observation.capability === "unavailable") {
|
|
31
|
-
throw new FlowError("GIT_UNAVAILABLE", `Git executable is unavailable; ${operation} requires repository authority.`);
|
|
32
|
-
}
|
|
33
|
-
if (observation.capability === "unknown")
|
|
34
|
-
throw observation.error;
|
|
35
|
-
return observation.coordinate;
|
|
36
|
-
}
|
|
37
|
-
export async function requireGitRepository(cwd, operation) {
|
|
38
|
-
if (assertGitObservation(await observeGitRepository(cwd), operation) === "non-repository") {
|
|
39
|
-
throw new FlowError("NOT_GIT_REPO", `${cwd} is not a git repository`);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
export async function getCurrentBranch(cwd) {
|
|
43
|
-
const git = createGit(cwd);
|
|
44
|
-
let status;
|
|
45
|
-
try {
|
|
46
|
-
status = await git.status();
|
|
47
|
-
}
|
|
48
|
-
catch (err) {
|
|
49
|
-
throw wrapGitError("status", err, cwd);
|
|
50
|
-
}
|
|
51
|
-
if (!status.current) {
|
|
52
|
-
throw new FlowError("DETACHED_HEAD", "Detached HEAD or no branch found");
|
|
53
|
-
}
|
|
54
|
-
return status.current;
|
|
55
|
-
}
|
|
56
|
-
export async function listLocalBranches(cwd) {
|
|
57
|
-
const git = createGit(cwd);
|
|
58
|
-
let branches;
|
|
59
|
-
try {
|
|
60
|
-
branches = await git.branchLocal();
|
|
61
|
-
}
|
|
62
|
-
catch (err) {
|
|
63
|
-
throw wrapGitError("branch --list", err, cwd);
|
|
64
|
-
}
|
|
65
|
-
return branches.all;
|
|
66
|
-
}
|
|
67
|
-
export async function createAndSwitchBranch(cwd, branchName) {
|
|
68
|
-
const git = createGit(cwd);
|
|
69
|
-
try {
|
|
70
|
-
await git.raw(["switch", "-c", branchName]);
|
|
71
|
-
}
|
|
72
|
-
catch (err) {
|
|
73
|
-
throw wrapGitError(`switch -c ${branchName}`, err, cwd);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
export async function switchBranch(cwd, branchName) {
|
|
77
|
-
const git = createGit(cwd);
|
|
78
|
-
try {
|
|
79
|
-
await git.raw(["switch", branchName]);
|
|
80
|
-
}
|
|
81
|
-
catch (err) {
|
|
82
|
-
throw wrapGitError(`switch ${branchName}`, err, cwd);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
export async function deleteBranch(cwd, branchName, force = false) {
|
|
86
|
-
const git = createGit(cwd);
|
|
87
|
-
try {
|
|
88
|
-
await git.deleteLocalBranch(branchName, force);
|
|
89
|
-
}
|
|
90
|
-
catch (err) {
|
|
91
|
-
throw wrapGitError(`branch -d${force ? " -D" : ""} ${branchName}`, err, cwd);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
export async function hasLocalBranch(cwd, branchName) {
|
|
95
|
-
const git = createGit(cwd);
|
|
96
|
-
let branches;
|
|
97
|
-
try {
|
|
98
|
-
branches = await git.branchLocal();
|
|
99
|
-
}
|
|
100
|
-
catch (err) {
|
|
101
|
-
throw wrapGitError("branch --list", err, cwd);
|
|
102
|
-
}
|
|
103
|
-
return branches.all.includes(branchName);
|
|
104
|
-
}
|
|
105
|
-
export async function assertValidBranchName(cwd, branchName) {
|
|
106
|
-
const git = createGit(cwd);
|
|
107
|
-
try {
|
|
108
|
-
await git.raw(["check-ref-format", "--branch", branchName]);
|
|
109
|
-
}
|
|
110
|
-
catch (err) {
|
|
111
|
-
throw wrapGitError(`check-ref-format --branch ${branchName}`, err, cwd);
|
|
112
|
-
}
|
|
113
|
-
}
|
package/build/git/commits.js
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { FlowError } from "../flow-error.js";
|
|
2
|
-
import { createGit, wrapGitError } from "./core.js";
|
|
3
|
-
export function shortCommitHash(hash) {
|
|
4
|
-
return hash.slice(0, 12);
|
|
5
|
-
}
|
|
6
|
-
export async function resolveCommitRef(cwd, ref) {
|
|
7
|
-
const git = createGit(cwd);
|
|
8
|
-
try {
|
|
9
|
-
const output = await git.raw(["rev-parse", "--verify", `${ref}^{commit}`]);
|
|
10
|
-
return output.trim();
|
|
11
|
-
}
|
|
12
|
-
catch (error) {
|
|
13
|
-
throw new FlowError("INVALID_COMMIT", `commit '${ref}' does not resolve to a commit`, { cause: error });
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
export async function isCommitReachableFromHead(cwd, commit) {
|
|
17
|
-
return isCommitAncestor(cwd, commit, "HEAD");
|
|
18
|
-
}
|
|
19
|
-
export async function isCommitAncestor(cwd, ancestor, descendant) {
|
|
20
|
-
const git = createGit(cwd);
|
|
21
|
-
try {
|
|
22
|
-
await git.raw(["merge-base", "--is-ancestor", ancestor, descendant]);
|
|
23
|
-
return true;
|
|
24
|
-
}
|
|
25
|
-
catch {
|
|
26
|
-
return false;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
export async function getHeadCommitHash(cwd) {
|
|
30
|
-
const git = createGit(cwd);
|
|
31
|
-
try {
|
|
32
|
-
const output = await git.raw(["rev-parse", "HEAD"]);
|
|
33
|
-
return output.trim();
|
|
34
|
-
}
|
|
35
|
-
catch (error) {
|
|
36
|
-
throw wrapGitError("rev-parse HEAD", error, cwd);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
export async function resolveCommitRefs(cwd, refs) {
|
|
40
|
-
if (refs.length === 0) {
|
|
41
|
-
throw new FlowError("INVALID_COMMIT", "commits must include at least one commit ref");
|
|
42
|
-
}
|
|
43
|
-
const resolved = [];
|
|
44
|
-
const seen = new Set();
|
|
45
|
-
for (const ref of refs) {
|
|
46
|
-
const trimmedRef = ref.trim();
|
|
47
|
-
if (!trimmedRef) {
|
|
48
|
-
throw new FlowError("INVALID_COMMIT", "commit refs cannot be empty");
|
|
49
|
-
}
|
|
50
|
-
const commit = await resolveCommitRef(cwd, trimmedRef);
|
|
51
|
-
if (seen.has(commit)) {
|
|
52
|
-
throw new FlowError("INVALID_COMMIT", `duplicate commit ref '${trimmedRef}' resolves to ${commit}`);
|
|
53
|
-
}
|
|
54
|
-
if (!(await isCommitReachableFromHead(cwd, commit))) {
|
|
55
|
-
throw new FlowError("INVALID_COMMIT", `commit '${trimmedRef}' (${commit}) is not reachable from HEAD`);
|
|
56
|
-
}
|
|
57
|
-
seen.add(commit);
|
|
58
|
-
resolved.push(commit);
|
|
59
|
-
}
|
|
60
|
-
return resolved;
|
|
61
|
-
}
|
|
62
|
-
export async function renderCommitStatPreview(cwd, commits) {
|
|
63
|
-
if (commits.length === 0)
|
|
64
|
-
return "No delivery commits recorded.";
|
|
65
|
-
const git = createGit(cwd);
|
|
66
|
-
try {
|
|
67
|
-
const chunks = await Promise.all(commits.map(async (commit) => (await git.raw([
|
|
68
|
-
"show",
|
|
69
|
-
"--stat",
|
|
70
|
-
"--summary",
|
|
71
|
-
"--format=commit %H%n%s",
|
|
72
|
-
"--no-renames",
|
|
73
|
-
commit,
|
|
74
|
-
])).trim()));
|
|
75
|
-
return chunks.filter((chunk) => chunk.length > 0).join("\n\n");
|
|
76
|
-
}
|
|
77
|
-
catch (error) {
|
|
78
|
-
throw wrapGitError("show --stat delivery commits", error, cwd);
|
|
79
|
-
}
|
|
80
|
-
}
|
package/build/git/core.js
DELETED
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
import { spawn } from "node:child_process";
|
|
2
|
-
import { simpleGit } from "simple-git";
|
|
3
|
-
import { normalizeFilesystemCoordinate } from "../fs/path-coordinate.js";
|
|
4
|
-
import { getConfig } from "../config/env.js";
|
|
5
|
-
import { appendDebugBlock } from "../telemetry/debug-log.js";
|
|
6
|
-
const GIT_ERROR_COMPACT_MAX_CHARS = 4000;
|
|
7
|
-
export const GIT_ABORT_FORCE_KILL_MS = 250;
|
|
8
|
-
/** Terminate one non-detached Git child and wait until Node drains its stdio close. */
|
|
9
|
-
export async function terminateGitChild(child, closed, graceMs = GIT_ABORT_FORCE_KILL_MS) {
|
|
10
|
-
if (child.exitCode === null && child.signalCode === null)
|
|
11
|
-
child.kill("SIGTERM");
|
|
12
|
-
let grace;
|
|
13
|
-
const exited = await Promise.race([
|
|
14
|
-
closed.then(() => true),
|
|
15
|
-
new Promise((resolve) => {
|
|
16
|
-
grace = setTimeout(() => resolve(false), graceMs);
|
|
17
|
-
grace.unref();
|
|
18
|
-
}),
|
|
19
|
-
]);
|
|
20
|
-
if (grace)
|
|
21
|
-
clearTimeout(grace);
|
|
22
|
-
// Only the close event proves process exit and stdio drain. `killed` and
|
|
23
|
-
// `signalCode` merely report signal delivery and can be set while a handler
|
|
24
|
-
// keeps the child alive.
|
|
25
|
-
if (!exited)
|
|
26
|
-
child.kill("SIGKILL");
|
|
27
|
-
await closed;
|
|
28
|
-
}
|
|
29
|
-
export const MISSING_GIT_CONFIG_PATTERNS = ["No such section or key"];
|
|
30
|
-
export const NOT_GIT_REPOSITORY_PATTERNS = ["not a git repository"];
|
|
31
|
-
export const MISSING_HEAD_PATTERNS = [
|
|
32
|
-
"Needed a single revision",
|
|
33
|
-
"ambiguous argument 'HEAD'",
|
|
34
|
-
"unknown revision or path not in the working tree",
|
|
35
|
-
"bad revision 'HEAD'",
|
|
36
|
-
];
|
|
37
|
-
/** Accept only a complete object id from either supported Git object format. */
|
|
38
|
-
export function isFullGitObjectId(value) {
|
|
39
|
-
return /^(?:[0-9a-f]{40}|[0-9a-f]{64})$/i.test(value);
|
|
40
|
-
}
|
|
41
|
-
/** Git is an optional adapter for directory-local product surfaces. */
|
|
42
|
-
export function isGitExecutableUnavailable(error) {
|
|
43
|
-
const source = (error ?? {});
|
|
44
|
-
if (source.code === "ENOENT")
|
|
45
|
-
return true;
|
|
46
|
-
const message = typeof source.message === "string" ? source.message : String(error);
|
|
47
|
-
return /spawn\s+git\s+ENOENT|git(?:\.exe)?["']?\s*:\s*(?:not found|no such file)/i.test(message);
|
|
48
|
-
}
|
|
49
|
-
export function compactText(input, maxChars = GIT_ERROR_COMPACT_MAX_CHARS) {
|
|
50
|
-
const text = input.trim();
|
|
51
|
-
if (!text)
|
|
52
|
-
return "";
|
|
53
|
-
if (text.length <= maxChars)
|
|
54
|
-
return text;
|
|
55
|
-
const marker = `\n...[truncated ${text.length - maxChars} chars]...\n`;
|
|
56
|
-
const side = Math.floor((maxChars - marker.length) / 2);
|
|
57
|
-
return `${text.slice(0, side)}${marker}${text.slice(text.length - side)}`;
|
|
58
|
-
}
|
|
59
|
-
export function collectGitErrorText(err) {
|
|
60
|
-
const source = (err ?? {});
|
|
61
|
-
return [source.message, source.stderr, source.stdErr, source.stdout, source.stdOut]
|
|
62
|
-
.filter((value) => typeof value === "string" && value.length > 0)
|
|
63
|
-
.join("\n");
|
|
64
|
-
}
|
|
65
|
-
export function errorContainsAnyPattern(err, patterns) {
|
|
66
|
-
const text = collectGitErrorText(err);
|
|
67
|
-
return patterns.some((pattern) => text.includes(pattern));
|
|
68
|
-
}
|
|
69
|
-
/** Parse `git rev-list` stdout into ordered object ids. Sole shared line parser. */
|
|
70
|
-
export function parseRevListOutput(output) {
|
|
71
|
-
return output
|
|
72
|
-
.trim()
|
|
73
|
-
.split(/\r?\n/)
|
|
74
|
-
.map((line) => line.trim())
|
|
75
|
-
.filter((line) => line.length > 0);
|
|
76
|
-
}
|
|
77
|
-
export function wrapGitError(commandLabel, err, cwd) {
|
|
78
|
-
const source = (err ?? {});
|
|
79
|
-
const message = source.message ?? String(err);
|
|
80
|
-
const stderr = compactText(source.stderr ?? source.stdErr ?? "");
|
|
81
|
-
const stdout = compactText(source.stdout ?? source.stdOut ?? "");
|
|
82
|
-
let detailedMessage = `[git ${commandLabel}] ${message}`;
|
|
83
|
-
if (stderr)
|
|
84
|
-
detailedMessage += `\n\n--- GIT STDERR ---\n${stderr}\n------------------`;
|
|
85
|
-
if (stdout)
|
|
86
|
-
detailedMessage += `\n\n--- GIT STDOUT ---\n${stdout}\n------------------`;
|
|
87
|
-
if (stderr || stdout) {
|
|
88
|
-
appendDebugBlock(`git ${commandLabel} failure details`, `${detailedMessage}`, { cwd, section: "git-error" });
|
|
89
|
-
}
|
|
90
|
-
const wrapped = new Error(detailedMessage, err === undefined ? undefined : { cause: err });
|
|
91
|
-
if (source.git !== undefined) {
|
|
92
|
-
Object.assign(wrapped, { git: source.git });
|
|
93
|
-
}
|
|
94
|
-
return wrapped;
|
|
95
|
-
}
|
|
96
|
-
/** Configured Git timeout, with a bootstrap-safe default before env loads. */
|
|
97
|
-
export function resolveGitTimeoutMs() {
|
|
98
|
-
try {
|
|
99
|
-
return getConfig().git.timeoutMs;
|
|
100
|
-
}
|
|
101
|
-
catch {
|
|
102
|
-
// Git coordinates and early probes remain usable before config bootstrap.
|
|
103
|
-
return 60_000;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
/** Non-interactive Git process environment shared by one-shot and streaming gates. */
|
|
107
|
-
export function gitProcessEnv(extra) {
|
|
108
|
-
return {
|
|
109
|
-
...process.env,
|
|
110
|
-
...extra,
|
|
111
|
-
GIT_TERMINAL_PROMPT: "0",
|
|
112
|
-
GCM_INTERACTIVE: "Never",
|
|
113
|
-
GIT_MERGE_AUTOEDIT: "no",
|
|
114
|
-
LC_ALL: "C",
|
|
115
|
-
PATH: extra?.PATH ?? process.env.PATH ?? "",
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
export function createGit(cwd) {
|
|
119
|
-
const timeoutMs = resolveGitTimeoutMs();
|
|
120
|
-
const git = simpleGit(normalizeFilesystemCoordinate(cwd), {
|
|
121
|
-
timeout: { block: timeoutMs, stdErr: true, stdOut: true },
|
|
122
|
-
});
|
|
123
|
-
// simple-git replaces its child environment when configured through env().
|
|
124
|
-
// Preserve trace controls explicitly without admitting unrelated ambient Git
|
|
125
|
-
// behavior such as a pager into command execution.
|
|
126
|
-
const traceEnvironment = Object.fromEntries(Object.entries(process.env).filter(([key]) => key.startsWith("GIT_TRACE2")));
|
|
127
|
-
git.env({
|
|
128
|
-
...traceEnvironment,
|
|
129
|
-
GIT_TERMINAL_PROMPT: "0",
|
|
130
|
-
GCM_INTERACTIVE: "Never",
|
|
131
|
-
GIT_MERGE_AUTOEDIT: "no",
|
|
132
|
-
LC_ALL: "C",
|
|
133
|
-
PATH: process.env.PATH ?? "",
|
|
134
|
-
});
|
|
135
|
-
return git;
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Asynchronous one-shot Git process boundary that preserves stdout/stderr/status facts.
|
|
139
|
-
* Prefer `createGit` when non-zero exits are fatal; use this when callers need
|
|
140
|
-
* soft status codes or stdin (simple-git drops empty-stderr non-zero exits).
|
|
141
|
-
* Long-lived multi-request stdin/stdout sessions use `openGitStreamingBatch`.
|
|
142
|
-
*/
|
|
143
|
-
export async function runGitProcessBytes(cwd, args, options) {
|
|
144
|
-
options?.signal?.throwIfAborted();
|
|
145
|
-
const timeoutMs = resolveGitTimeoutMs();
|
|
146
|
-
const env = gitProcessEnv(options?.env);
|
|
147
|
-
return await new Promise((resolve) => {
|
|
148
|
-
const child = spawn("git", [...args], {
|
|
149
|
-
cwd: normalizeFilesystemCoordinate(cwd),
|
|
150
|
-
env,
|
|
151
|
-
shell: false,
|
|
152
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
153
|
-
});
|
|
154
|
-
const stdoutChunks = [];
|
|
155
|
-
const stderrChunks = [];
|
|
156
|
-
let settled = false;
|
|
157
|
-
let timedOut = false;
|
|
158
|
-
let aborting = false;
|
|
159
|
-
let terminationPromise;
|
|
160
|
-
const closed = new Promise((resolveClosed) => child.once("close", () => resolveClosed()));
|
|
161
|
-
const finish = (result) => {
|
|
162
|
-
if (settled)
|
|
163
|
-
return;
|
|
164
|
-
settled = true;
|
|
165
|
-
clearTimeout(timeout);
|
|
166
|
-
options?.signal?.removeEventListener("abort", abort);
|
|
167
|
-
resolve(result);
|
|
168
|
-
};
|
|
169
|
-
const abort = () => {
|
|
170
|
-
if (aborting)
|
|
171
|
-
return;
|
|
172
|
-
aborting = true;
|
|
173
|
-
terminationPromise = terminateGitChild(child, closed);
|
|
174
|
-
};
|
|
175
|
-
options?.signal?.addEventListener("abort", abort, { once: true });
|
|
176
|
-
if (options?.signal?.aborted)
|
|
177
|
-
abort();
|
|
178
|
-
const timeout = setTimeout(() => {
|
|
179
|
-
timedOut = true;
|
|
180
|
-
child.kill("SIGKILL");
|
|
181
|
-
}, timeoutMs);
|
|
182
|
-
if (options?.input !== undefined) {
|
|
183
|
-
if (typeof options.input === "string")
|
|
184
|
-
child.stdin.end(options.input, "utf8");
|
|
185
|
-
else
|
|
186
|
-
child.stdin.end(options.input);
|
|
187
|
-
}
|
|
188
|
-
else {
|
|
189
|
-
child.stdin.end();
|
|
190
|
-
}
|
|
191
|
-
child.stdout.on("data", (chunk) => stdoutChunks.push(chunk));
|
|
192
|
-
child.stderr.on("data", (chunk) => stderrChunks.push(chunk));
|
|
193
|
-
child.on("error", (error) => {
|
|
194
|
-
finish({
|
|
195
|
-
stdout: Buffer.concat(stdoutChunks),
|
|
196
|
-
stderr: Buffer.concat(stderrChunks),
|
|
197
|
-
status: null,
|
|
198
|
-
error,
|
|
199
|
-
});
|
|
200
|
-
});
|
|
201
|
-
child.on("close", async (code, signal) => {
|
|
202
|
-
if (terminationPromise)
|
|
203
|
-
await terminationPromise;
|
|
204
|
-
const stdout = Buffer.concat(stdoutChunks);
|
|
205
|
-
const stderr = Buffer.concat(stderrChunks);
|
|
206
|
-
if (timedOut) {
|
|
207
|
-
finish({
|
|
208
|
-
stdout,
|
|
209
|
-
stderr,
|
|
210
|
-
status: null,
|
|
211
|
-
error: new Error("git timed out"),
|
|
212
|
-
});
|
|
213
|
-
return;
|
|
214
|
-
}
|
|
215
|
-
if (signal) {
|
|
216
|
-
finish({
|
|
217
|
-
stdout,
|
|
218
|
-
stderr,
|
|
219
|
-
status: null,
|
|
220
|
-
error: options?.signal?.aborted
|
|
221
|
-
? options.signal.reason instanceof Error ? options.signal.reason : new DOMException("The operation was aborted", "AbortError")
|
|
222
|
-
: new Error(`git exited from signal ${signal}`),
|
|
223
|
-
});
|
|
224
|
-
return;
|
|
225
|
-
}
|
|
226
|
-
finish({ stdout, stderr, status: code });
|
|
227
|
-
});
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
export async function runGitProcess(cwd, args, options) {
|
|
231
|
-
const result = await runGitProcessBytes(cwd, args, options);
|
|
232
|
-
return {
|
|
233
|
-
stdout: result.stdout.toString("utf8"),
|
|
234
|
-
stderr: result.stderr.toString("utf8"),
|
|
235
|
-
status: result.status,
|
|
236
|
-
...(result.error ? { error: result.error } : {}),
|
|
237
|
-
};
|
|
238
|
-
}
|