@astrosheep/keiyaku 4.5.29 → 4.6.2
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/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku/SKILL.md +0 -13
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-akuma/SKILL.md +47 -78
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-akuma/references/automation.md +54 -41
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-babysit/SKILL.md +10 -0
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-bind/SKILL.md +27 -9
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-workflow/SKILL.md +68 -71
- package/build/src/akuma/akuma-call.d.ts +53 -0
- package/build/src/akuma/akuma-call.js +113 -0
- package/build/src/akuma/akuma-instance.d.ts +20 -18
- package/build/src/akuma/akuma-instance.js +65 -175
- package/build/src/akuma/akuma-observe.d.ts +3 -21
- package/build/src/akuma/akuma-observe.js +7 -24
- package/build/src/akuma/{akuma-handle.d.ts → akuma-owner.d.ts} +55 -27
- package/build/src/akuma/{akuma-handle.js → akuma-owner.js} +24 -23
- package/build/src/akuma/akuma-selection-execution.d.ts +51 -0
- package/build/src/akuma/akuma-selection-execution.js +134 -0
- package/build/src/akuma/{fleet-execution.d.ts → akuma-wait.d.ts} +24 -44
- package/build/src/akuma/akuma-wait.js +113 -0
- package/build/src/akuma/akuma.d.ts +35 -89
- package/build/src/akuma/akuma.js +148 -30
- package/build/src/akuma/archetype.d.ts +12 -0
- package/build/src/akuma/archetype.js +47 -19
- package/build/src/akuma/body.d.ts +76 -36
- package/build/src/akuma/body.js +84 -49
- package/build/src/akuma/call-initial-tell.d.ts +131 -22
- package/build/src/akuma/call-initial-tell.js +31 -1
- package/build/src/akuma/call-request.d.ts +237 -31
- package/build/src/akuma/call-request.js +67 -94
- package/build/src/akuma/coordinate.d.ts +15 -5
- package/build/src/akuma/coordinate.js +12 -22
- package/build/src/akuma/dispatch-association.d.ts +1 -1
- package/build/src/akuma/dispatch-association.js +1 -10
- package/build/src/akuma/heart/activity-schema.d.ts +325 -0
- package/build/src/akuma/heart/activity-schema.js +53 -0
- package/build/src/akuma/heart/facts.d.ts +1 -6
- package/build/src/akuma/heart/index.d.ts +3 -1
- package/build/src/akuma/heart/index.js +4 -1
- package/build/src/akuma/heart/rows.d.ts +49 -2
- package/build/src/akuma/heart/rows.js +16 -2
- package/build/src/akuma/heart/soul.d.ts +1 -0
- package/build/src/akuma/heart/soul.js +6 -4
- package/build/src/akuma/heart/tells.d.ts +1 -0
- package/build/src/akuma/heart/tells.js +18 -0
- package/build/src/akuma/identity.d.ts +10 -7
- package/build/src/akuma/identity.js +23 -0
- package/build/src/akuma/index.d.ts +10 -8
- package/build/src/akuma/index.js +2 -2
- package/build/src/akuma/nuke.d.ts +3 -0
- package/build/src/akuma/nuke.js +13 -7
- package/build/src/akuma/projection.d.ts +0 -5
- package/build/src/akuma/projection.js +22 -43
- package/build/src/akuma/provider-recipe.d.ts +58 -13
- package/build/src/akuma/provider-recipe.js +62 -80
- package/build/src/akuma/provider.d.ts +6 -76
- package/build/src/akuma/provider.js +11 -219
- package/build/src/akuma/providers/acp/config.d.ts +2 -0
- package/build/src/akuma/providers/acp/config.js +26 -1
- package/build/src/akuma/providers/acp/core.d.ts +7 -0
- package/build/src/akuma/providers/acp/core.js +49 -18
- package/build/src/akuma/providers/acp/index.js +14 -6
- package/build/src/akuma/providers/grok-build/index.js +44 -13
- package/build/src/akuma/providers/index.d.ts +3 -3
- package/build/src/akuma/providers/index.js +2 -13
- package/build/src/akuma/providers/opencode-sdk/event-stream.d.ts +28 -0
- package/build/src/akuma/providers/opencode-sdk/event-stream.js +92 -0
- package/build/src/akuma/providers/opencode-sdk/events.d.ts +0 -1
- package/build/src/akuma/providers/opencode-sdk/index.js +200 -64
- package/build/src/akuma/providers/opencode-sdk/session.d.ts +41 -1
- package/build/src/akuma/providers/opencode-sdk/session.js +69 -2
- package/build/src/akuma/providers/pi/events.js +5 -2
- package/build/src/akuma/providers/pi/index.d.ts +3 -4
- package/build/src/akuma/providers/pi/index.js +99 -45
- package/build/src/akuma/publication.d.ts +84 -3
- package/build/src/akuma/publication.js +145 -2
- package/build/src/akuma/read-pool.d.ts +2 -0
- package/build/src/akuma/read-pool.js +15 -0
- package/build/src/akuma/request-rendezvous.js +10 -0
- package/build/src/akuma/request-serve.js +7 -0
- package/build/src/akuma/request-wire.d.ts +14 -26
- package/build/src/akuma/request-wire.js +4 -0
- package/build/src/akuma/requests.d.ts +0 -2
- package/build/src/akuma/requests.js +0 -17
- package/build/src/akuma/{fleet-observation.d.ts → selection-observation.d.ts} +37 -36
- package/build/src/akuma/selection-observation.js +65 -0
- package/build/src/akuma/{fleet-owner-port.d.ts → selection-owner-port.d.ts} +3 -3
- package/build/src/akuma/{fleet-owner-port.js → selection-owner-port.js} +11 -17
- package/build/src/akuma/{fleet-request.d.ts → selection-request.d.ts} +42 -82
- package/build/src/akuma/{fleet-request.js → selection-request.js} +92 -136
- package/build/src/akuma/turn-drive.js +73 -14
- package/build/src/akuma-body.js +91 -56
- package/build/src/body/amend.d.ts +5 -0
- package/build/src/body/amend.js +26 -50
- package/build/src/body/arc.d.ts +4 -2
- package/build/src/body/arc.js +19 -26
- package/build/src/body/criteria.d.ts +6 -0
- package/build/src/body/criteria.js +37 -0
- package/build/src/body/decode.js +5 -42
- package/build/src/body/region.d.ts +5 -0
- package/build/src/body/region.js +45 -2
- package/build/src/body/render.js +2 -4
- package/build/src/cli/activity.d.ts +26 -0
- package/build/src/cli/activity.js +75 -0
- package/build/src/cli/actor.d.ts +3 -1
- package/build/src/cli/actor.js +15 -2
- package/build/src/cli/commands/akuma-grammar.d.ts +75 -0
- package/build/src/cli/commands/akuma-grammar.js +414 -0
- package/build/src/cli/commands/akuma.d.ts +5 -69
- package/build/src/cli/commands/akuma.js +352 -319
- package/build/src/cli/commands/amend.d.ts +4 -5
- package/build/src/cli/commands/amend.js +1 -2
- package/build/src/cli/commands/bind.d.ts +4 -5
- package/build/src/cli/commands/bind.js +7 -10
- package/build/src/cli/commands/contract-grammar.d.ts +112 -0
- package/build/src/cli/commands/contract-grammar.js +282 -0
- package/build/src/cli/commands/contract-help.d.ts +17 -22
- package/build/src/cli/commands/contract-help.js +37 -24
- package/build/src/cli/commands/contract.d.ts +18 -97
- package/build/src/cli/commands/contract.js +621 -233
- package/build/src/cli/commands/install.d.ts +1 -1
- package/build/src/cli/commands/install.js +2 -2
- package/build/src/cli/commands/task-grammar.d.ts +19 -0
- package/build/src/cli/commands/task-grammar.js +438 -0
- package/build/src/cli/commands/task-query.js +23 -104
- package/build/src/cli/commands/task.d.ts +5 -20
- package/build/src/cli/commands/task.js +414 -364
- package/build/src/cli/coordinates.d.ts +10 -0
- package/build/src/cli/coordinates.js +20 -0
- package/build/src/cli/draft.d.ts +7 -1
- package/build/src/cli/main.js +10 -1
- package/build/src/cli/parse.d.ts +8 -9
- package/build/src/cli/parse.js +62 -62
- package/build/src/cli/render/akuma-activity.d.ts +54 -36
- package/build/src/cli/render/akuma-activity.js +262 -242
- package/build/src/cli/render/akuma-tool.d.ts +8 -4
- package/build/src/cli/render/akuma-tool.js +6 -5
- package/build/src/cli/render/akuma.d.ts +36 -16
- package/build/src/cli/render/akuma.js +65 -132
- package/build/src/cli/render/audit.d.ts +6 -2
- package/build/src/cli/render/audit.js +59 -28
- package/build/src/cli/render/catalog.d.ts +11 -2
- package/build/src/cli/render/catalog.js +75 -95
- package/build/src/cli/render/contract-history.d.ts +3 -1
- package/build/src/cli/render/contract-history.js +215 -22
- package/build/src/cli/render/contract-observation.d.ts +10 -5
- package/build/src/cli/render/contract-observation.js +29 -46
- package/build/src/cli/render/contract.d.ts +10 -3
- package/build/src/cli/render/contract.js +252 -103
- package/build/src/cli/render/effects.d.ts +26 -0
- package/build/src/cli/render/effects.js +41 -0
- package/build/src/cli/render/execution-progress.d.ts +18 -6
- package/build/src/cli/render/execution-progress.js +34 -31
- package/build/src/cli/render/kanshi-akuma.d.ts +1 -2
- package/build/src/cli/render/kanshi-akuma.js +5 -26
- package/build/src/cli/render/kanshi.js +107 -128
- package/build/src/cli/render/marks.d.ts +13 -0
- package/build/src/cli/render/marks.js +74 -0
- package/build/src/cli/render/nuke.js +18 -7
- package/build/src/cli/render/receipt.d.ts +10 -4
- package/build/src/cli/render/receipt.js +124 -44
- package/build/src/cli/render/reconcile.d.ts +5 -0
- package/build/src/cli/render/reconcile.js +152 -0
- package/build/src/cli/render/refusal.d.ts +21 -4
- package/build/src/cli/render/refusal.js +60 -33
- package/build/src/cli/render/region.js +3 -2
- package/build/src/cli/render/settings.js +2 -12
- package/build/src/cli/render/task.d.ts +37 -6
- package/build/src/cli/render/task.js +161 -157
- package/build/src/cli/render/terminal.d.ts +20 -1
- package/build/src/cli/render/terminal.js +92 -18
- package/build/src/cli/runtime.d.ts +32 -8
- package/build/src/cli/runtime.js +157 -165
- package/build/src/cli/selectors.d.ts +5 -2
- package/build/src/cli/selectors.js +11 -3
- package/build/src/cli/streams.d.ts +11 -0
- package/build/src/cli/streams.js +32 -0
- package/build/src/cli/usage.d.ts +2 -0
- package/build/src/cli/usage.js +12 -8
- package/build/src/contract-guidance.js +3 -7
- package/build/src/contract-worktree.d.ts +20 -28
- package/build/src/contract-worktree.js +18 -70
- package/build/src/coordination/durable-file.d.ts +2 -2
- package/build/src/coordination/durable-file.js +0 -27
- package/build/src/core/facts/codec.d.ts +1 -2
- package/build/src/core/facts/codec.js +6 -7
- package/build/src/core/facts/gate.d.ts +0 -1
- package/build/src/core/facts/gate.js +0 -82
- package/build/src/core/facts/types.d.ts +1 -2
- package/build/src/core/verbs/abandon.d.ts +2 -6
- package/build/src/core/verbs/abandon.js +0 -16
- package/build/src/core/verbs/amend.d.ts +0 -1
- package/build/src/core/verbs/amend.js +0 -20
- package/build/src/core/verbs/arc.d.ts +7 -8
- package/build/src/core/verbs/arc.js +2 -19
- package/build/src/core/verbs/attestation.d.ts +2 -6
- package/build/src/core/verbs/attestation.js +0 -16
- package/build/src/core/verbs/bind.d.ts +0 -1
- package/build/src/core/verbs/bind.js +0 -16
- package/build/src/core/verbs/deliver.d.ts +0 -1
- package/build/src/core/verbs/deliver.js +0 -16
- package/build/src/core/verbs/placement.d.ts +2 -1
- package/build/src/core/verbs/placement.js +10 -59
- package/build/src/git/admission.d.ts +6 -4
- package/build/src/git/admission.js +4 -0
- package/build/src/git/hooks.d.ts +55 -30
- package/build/src/git/hooks.js +30 -3
- package/build/src/git/identity.d.ts +6 -0
- package/build/src/git/identity.js +47 -0
- package/build/src/git/integration.d.ts +31 -13
- package/build/src/git/integration.js +32 -1
- package/build/src/git/nuke.d.ts +10 -1
- package/build/src/git/nuke.js +31 -11
- package/build/src/git/observe.js +2 -15
- package/build/src/git/private-state-seat.d.ts +6 -7
- package/build/src/git/private-state-seat.js +8 -6
- package/build/src/git/read-observation.d.ts +6 -1
- package/build/src/git/read-observation.js +81 -46
- package/build/src/git/reconcile.d.ts +117 -40
- package/build/src/git/reconcile.js +169 -40
- package/build/src/git/scratch.d.ts +7 -4
- package/build/src/git/scratch.js +28 -6
- package/build/src/git/target-placement.d.ts +53 -38
- package/build/src/git/target-placement.js +69 -54
- package/build/src/git/tender.d.ts +37 -28
- package/build/src/git/tender.js +39 -0
- package/build/src/git/terminal-reconcile.js +21 -23
- package/build/src/git/terminal-seal.d.ts +8 -6
- package/build/src/git/terminal-seal.js +10 -0
- package/build/src/git/workspace.d.ts +29 -15
- package/build/src/git/workspace.js +28 -2
- package/build/src/identity/normalize.js +19 -6
- package/build/src/index.d.ts +78 -7
- package/build/src/index.js +52 -4
- package/build/src/kanshi/read.d.ts +3 -3
- package/build/src/kanshi/read.js +21 -21
- package/build/src/kanshi/report.d.ts +9 -8
- package/build/src/kanshi/roster.d.ts +2 -0
- package/build/src/kanshi/roster.js +2 -0
- package/build/src/kanshi/select.js +7 -3
- package/build/src/library/address.d.ts +3 -7
- package/build/src/library/address.js +7 -7
- package/build/src/library/akuma-creation.d.ts +21 -32
- package/build/src/library/akuma-creation.js +148 -165
- package/build/src/library/akumas.d.ts +20 -22
- package/build/src/library/akumas.js +43 -20
- package/build/src/library/bind.d.ts +107 -13
- package/build/src/library/bind.js +29 -23
- package/build/src/library/continuation.d.ts +556 -28
- package/build/src/library/continuation.js +29 -54
- package/build/src/library/contract-composition.d.ts +40 -0
- package/build/src/library/contract-composition.js +105 -0
- package/build/src/library/contract-creation.d.ts +7 -0
- package/build/src/library/contract-creation.js +192 -0
- package/build/src/library/contract-execution.d.ts +29 -40
- package/build/src/library/contract-execution.js +503 -128
- package/build/src/library/contract-operations.d.ts +275 -134
- package/build/src/library/contract-operations.js +83 -92
- package/build/src/library/contract-outcomes.d.ts +71 -0
- package/build/src/library/contract-outcomes.js +32 -0
- package/build/src/library/contract-settings.d.ts +25 -0
- package/build/src/library/contract-settings.js +135 -0
- package/build/src/library/contract-types.d.ts +17 -38
- package/build/src/library/delivery.d.ts +530 -10
- package/build/src/library/delivery.js +20 -45
- package/build/src/library/input.d.ts +3 -1
- package/build/src/library/input.js +11 -16
- package/build/src/library/invocation.d.ts +87 -0
- package/build/src/library/invocation.js +290 -0
- package/build/src/library/keiyaku.d.ts +45 -22
- package/build/src/library/keiyaku.js +134 -8
- package/build/src/library/nuke.d.ts +2 -11
- package/build/src/library/nuke.js +70 -57
- package/build/src/library/outcome.d.ts +13196 -0
- package/build/src/library/outcome.js +487 -0
- package/build/src/library/reconcile.d.ts +96 -24
- package/build/src/library/reconcile.js +102 -42
- package/build/src/library/refusal.d.ts +470 -42
- package/build/src/library/refusal.js +55 -143
- package/build/src/library/region.d.ts +15 -7
- package/build/src/library/region.js +23 -3
- package/build/src/library/repo.d.ts +2 -12
- package/build/src/library/repo.js +1 -22
- package/build/src/library/selection.d.ts +121 -0
- package/build/src/library/{fleet.js → selection.js} +169 -152
- package/build/src/plugin/public.d.ts +2 -0
- package/build/src/protocol/abandon.d.ts +2 -2
- package/build/src/protocol/abandon.js +1 -0
- package/build/src/protocol/amend.js +1 -0
- package/build/src/protocol/arc.d.ts +6 -4
- package/build/src/protocol/attempt.d.ts +4 -2
- package/build/src/protocol/attempt.js +10 -0
- package/build/src/protocol/audit.d.ts +255 -52
- package/build/src/protocol/audit.js +63 -5
- package/build/src/protocol/bind.d.ts +18 -17
- package/build/src/protocol/bind.js +9 -28
- package/build/src/protocol/completion.d.ts +256 -22
- package/build/src/protocol/completion.js +100 -12
- package/build/src/protocol/deliver.d.ts +34 -23
- package/build/src/protocol/deliver.js +39 -25
- package/build/src/protocol/execution-observation.d.ts +36 -37
- package/build/src/protocol/execution-observation.js +7 -9
- package/build/src/protocol/intent.d.ts +101 -30
- package/build/src/protocol/intent.js +74 -1
- package/build/src/protocol/operations.d.ts +570 -64
- package/build/src/protocol/operations.js +189 -9
- package/build/src/protocol/outcome.d.ts +2 -1
- package/build/src/protocol/placement.d.ts +2 -2
- package/build/src/protocol/placement.js +3 -1
- package/build/src/protocol/progress.d.ts +108 -65
- package/build/src/protocol/progress.js +82 -132
- package/build/src/protocol/read/status.d.ts +4 -3
- package/build/src/protocol/read/status.js +6 -5
- package/build/src/protocol/reconcile.d.ts +3 -3
- package/build/src/protocol/reconcile.js +4 -0
- package/build/src/protocol/reintegrate.d.ts +2 -2
- package/build/src/protocol/review.d.ts +30 -12
- package/build/src/protocol/review.js +15 -24
- package/build/src/protocol/run.d.ts +34 -5
- package/build/src/protocol/run.js +24 -12
- package/build/src/runtime/proc/windows-launch.exe +0 -0
- package/build/src/settings.d.ts +0 -10
- package/build/src/settings.js +0 -76
- package/build/src/settlement/holder.d.ts +1 -1
- package/build/src/settlement/settle.d.ts +25 -16
- package/build/src/settlement/settle.js +80 -20
- package/build/src/task/board.d.ts +3 -1
- package/build/src/task/board.js +13 -17
- package/build/src/task/catalog.d.ts +0 -4
- package/build/src/task/catalog.js +0 -15
- package/build/src/task/compose-language.d.ts +19 -9
- package/build/src/task/compose-language.js +30 -20
- package/build/src/task/compose.d.ts +7 -37
- package/build/src/task/compose.js +20 -2
- package/build/src/task/created-observation.d.ts +0 -1
- package/build/src/task/created-observation.js +1 -4
- package/build/src/task/document.d.ts +12 -2
- package/build/src/task/document.js +4 -0
- package/build/src/task/identity.d.ts +4 -1
- package/build/src/task/identity.js +21 -17
- package/build/src/task/index.d.ts +36 -16
- package/build/src/task/index.js +103 -96
- package/build/src/task/lifecycle-operations.d.ts +1 -1
- package/build/src/task/mutation-result.d.ts +647 -586
- package/build/src/task/mutation-result.js +79 -46
- package/build/src/task/mutation.d.ts +298 -270
- package/build/src/task/mutation.js +93 -110
- package/build/src/task/operation-types.d.ts +6 -49
- package/build/src/task/operations.d.ts +2 -1
- package/build/src/task/operations.js +35 -12
- package/build/src/task/query.d.ts +9 -3
- package/build/src/task/query.js +42 -16
- package/build/src/task/store.d.ts +2 -1
- package/build/src/task/store.js +10 -14
- package/build/src/verification/declaration.d.ts +0 -1
- package/build/src/verification/declaration.js +1 -18
- package/build/src/verification/execution.d.ts +6 -2
- package/build/src/verification/observation.d.ts +1 -1
- package/package.json +2 -18
- package/build/src/akuma/akuma-product.d.ts +0 -58
- package/build/src/akuma/akuma-product.js +0 -276
- package/build/src/akuma/fleet-execution.js +0 -234
- package/build/src/akuma/fleet-observation.js +0 -97
- package/build/src/cli/accepted.d.ts +0 -24
- package/build/src/cli/accepted.js +0 -167
- package/build/src/cli/catalog.d.ts +0 -45
- package/build/src/cli/catalog.js +0 -1
- package/build/src/cli/commands/akuma-invoke.d.ts +0 -114
- package/build/src/cli/commands/akuma-invoke.js +0 -375
- package/build/src/cli/commands/contract-invoke.d.ts +0 -34
- package/build/src/cli/commands/contract-invoke.js +0 -259
- package/build/src/cli/commands/nuke.d.ts +0 -10
- package/build/src/cli/commands/nuke.js +0 -20
- package/build/src/cli/commands/status-set.d.ts +0 -4
- package/build/src/cli/commands/status-set.js +0 -52
- package/build/src/cli/commands/task-invoke.d.ts +0 -49
- package/build/src/cli/commands/task-invoke.js +0 -306
- package/build/src/cli/invoke.d.ts +0 -27
- package/build/src/cli/invoke.js +0 -521
- package/build/src/cli/render/board.d.ts +0 -3
- package/build/src/cli/render/board.js +0 -25
- package/build/src/cli/render/status-set.d.ts +0 -5
- package/build/src/cli/render/status-set.js +0 -19
- package/build/src/cli/render/text.d.ts +0 -3
- package/build/src/cli/render/text.js +0 -33
- package/build/src/cli/result.d.ts +0 -240
- package/build/src/cli/result.js +0 -1
- package/build/src/git/result-codec.d.ts +0 -29
- package/build/src/git/result-codec.js +0 -309
- package/build/src/kanshi/fleet.d.ts +0 -6
- package/build/src/kanshi/fleet.js +0 -27
- package/build/src/library/audit.d.ts +0 -29
- package/build/src/library/audit.js +0 -41
- package/build/src/library/composition.d.ts +0 -15
- package/build/src/library/composition.js +0 -28
- package/build/src/library/configuration.d.ts +0 -4
- package/build/src/library/configuration.js +0 -2
- package/build/src/library/contract-bind.d.ts +0 -31
- package/build/src/library/contract-bind.js +0 -140
- package/build/src/library/contract-forwarding.d.ts +0 -55
- package/build/src/library/contract-forwarding.js +0 -67
- package/build/src/library/contract-handle.d.ts +0 -50
- package/build/src/library/contract-handle.js +0 -385
- package/build/src/library/contract.d.ts +0 -46
- package/build/src/library/contract.js +0 -73
- package/build/src/library/execution-result.d.ts +0 -243
- package/build/src/library/execution-result.js +0 -101
- package/build/src/library/execution.d.ts +0 -8
- package/build/src/library/execution.js +0 -102
- package/build/src/library/fleet.d.ts +0 -83
- package/build/src/library/mutation.d.ts +0 -501
- package/build/src/library/mutation.js +0 -248
- package/build/src/library/result-codec.d.ts +0 -2
- package/build/src/library/result-codec.js +0 -12
- package/build/src/protocol/result-codec.d.ts +0 -23
- package/build/src/protocol/result-codec.js +0 -488
- package/build/src/settlement/result-codec.d.ts +0 -2
- package/build/src/settlement/result-codec.js +0 -56
- package/build/src/task/public.d.ts +0 -2
- package/build/src/task/public.js +0 -1
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import { type ActorId, type
|
|
2
|
-
import type { ParsedAmend } from "./contract.js";
|
|
1
|
+
import { type ActorId, type Keiyaku, type Repo } from "../../index.js";
|
|
2
|
+
import type { ParsedAmend } from "./contract-grammar.js";
|
|
3
3
|
type AmendCommandInput = Readonly<{
|
|
4
4
|
command: ParsedAmend;
|
|
5
5
|
repo: Repo;
|
|
6
6
|
contract: Keiyaku;
|
|
7
7
|
markdown?: string;
|
|
8
|
-
gates
|
|
8
|
+
gates?: readonly string[];
|
|
9
9
|
actor?: ActorId;
|
|
10
|
-
hooks?: WorktreeHooks;
|
|
11
10
|
}>;
|
|
12
|
-
export declare function amendFromCommand({ command, repo, contract, markdown, gates, actor,
|
|
11
|
+
export declare function amendFromCommand({ command, repo, contract, markdown, gates, actor, }: AmendCommandInput): ReturnType<Keiyaku["amend"]>;
|
|
13
12
|
export {};
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { contractFromInput } from "../selectors.js";
|
|
2
|
-
export function amendFromCommand({ command, repo, contract, markdown, gates, actor,
|
|
2
|
+
export function amendFromCommand({ command, repo, contract, markdown, gates, actor, }) {
|
|
3
3
|
const after = command.clearAfter === true ? [] : command.after?.map((id) => contractFromInput(repo, id).id);
|
|
4
4
|
return contract.amend({
|
|
5
5
|
...(markdown === undefined ? {} : { markdown }),
|
|
6
6
|
...(actor === undefined ? {} : { actor }),
|
|
7
|
-
...(hooks === undefined ? {} : { hooks }),
|
|
8
7
|
...(after === undefined ? {} : { after }),
|
|
9
8
|
...(gates === undefined ? {} : { gates }),
|
|
10
9
|
});
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import { type ActorId, type BindResult, type
|
|
2
|
-
import type { ParsedBind } from "./contract.js";
|
|
1
|
+
import { type ActorId, type BindResult, type KeiyakuLibrary, type Repo } from "../../index.js";
|
|
2
|
+
import type { ParsedBind } from "./contract-grammar.js";
|
|
3
3
|
type BindCommandInput = Readonly<{
|
|
4
4
|
command: ParsedBind;
|
|
5
5
|
repo: Repo;
|
|
6
|
+
library: KeiyakuLibrary;
|
|
6
7
|
markdown?: string;
|
|
7
|
-
gates?: readonly Gate[];
|
|
8
8
|
actor?: ActorId;
|
|
9
|
-
hooks?: WorktreeHooks;
|
|
10
9
|
}>;
|
|
11
|
-
export declare function bindFromCommand({ command, repo,
|
|
10
|
+
export declare function bindFromCommand({ command, repo, library, markdown, actor, }: BindCommandInput): Promise<BindResult>;
|
|
12
11
|
export {};
|
|
@@ -1,26 +1,23 @@
|
|
|
1
|
-
import { Keiyaku, } from "../../index.js";
|
|
2
|
-
import { bindFromCli } from "../../library/contract-bind.js";
|
|
3
1
|
import { contractFromInput } from "../selectors.js";
|
|
4
|
-
export async function bindFromCommand({ command, repo,
|
|
2
|
+
export async function bindFromCommand({ command, repo, library, markdown, actor, }) {
|
|
5
3
|
if (command.forkOf !== undefined) {
|
|
6
|
-
return
|
|
4
|
+
return library.bind({
|
|
7
5
|
repo,
|
|
8
6
|
forkOf: contractFromInput(repo, command.forkOf).id,
|
|
9
7
|
...(command.target === undefined ? {} : { target: command.target }),
|
|
8
|
+
...(actor === undefined ? {} : { actor }),
|
|
10
9
|
});
|
|
11
10
|
}
|
|
12
11
|
const after = command.after?.map((id) => contractFromInput(repo, id).id);
|
|
13
|
-
if (markdown === undefined
|
|
12
|
+
if (markdown === undefined)
|
|
14
13
|
throw new Error("Markdown bind command is missing stdin terms");
|
|
15
|
-
|
|
16
|
-
return bindFromCli({
|
|
14
|
+
return library.bind({
|
|
17
15
|
repo,
|
|
18
16
|
markdown,
|
|
19
17
|
...(command.task === undefined ? {} : { task: command.task }),
|
|
20
18
|
...(command.target === undefined ? {} : { target: command.target }),
|
|
21
19
|
...(actor === undefined ? {} : { actor }),
|
|
22
|
-
...(hooks === undefined ? {} : { hooks }),
|
|
23
20
|
...(after === undefined ? {} : { after }),
|
|
24
|
-
gates,
|
|
25
|
-
}
|
|
21
|
+
...(command.gates === undefined ? {} : { gates: command.gates }),
|
|
22
|
+
});
|
|
26
23
|
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { type ContractCommand } from "./contract-help.js";
|
|
2
|
+
type CatalogQuery = Readonly<{
|
|
3
|
+
kind: "tasks";
|
|
4
|
+
namespace?: readonly string[];
|
|
5
|
+
limit?: number;
|
|
6
|
+
}> | Readonly<{
|
|
7
|
+
kind: "contracts";
|
|
8
|
+
limit?: number;
|
|
9
|
+
}> | Readonly<{
|
|
10
|
+
kind: "archetypes";
|
|
11
|
+
limit?: number;
|
|
12
|
+
}> | Readonly<{
|
|
13
|
+
kind: "akuma";
|
|
14
|
+
archetype?: string;
|
|
15
|
+
limit?: number;
|
|
16
|
+
}>;
|
|
17
|
+
type Output = Readonly<{
|
|
18
|
+
output: "text" | "json";
|
|
19
|
+
}>;
|
|
20
|
+
type Actor = Readonly<{
|
|
21
|
+
actor?: string;
|
|
22
|
+
}>;
|
|
23
|
+
export type ParsedBind = Output & Actor & Readonly<{
|
|
24
|
+
command: "bind";
|
|
25
|
+
forkOf?: string;
|
|
26
|
+
task?: string;
|
|
27
|
+
target?: string;
|
|
28
|
+
after?: readonly string[];
|
|
29
|
+
gates?: readonly string[];
|
|
30
|
+
}>;
|
|
31
|
+
export type ParsedAmend = Output & Actor & Readonly<{
|
|
32
|
+
command: "amend";
|
|
33
|
+
contract?: string;
|
|
34
|
+
after?: readonly string[];
|
|
35
|
+
clearAfter?: true;
|
|
36
|
+
gates?: readonly string[];
|
|
37
|
+
stdin?: true;
|
|
38
|
+
}>;
|
|
39
|
+
export type ParsedDeliver = Output & Readonly<{
|
|
40
|
+
command: "deliver";
|
|
41
|
+
contract?: string;
|
|
42
|
+
message?: string;
|
|
43
|
+
includeDirty: boolean;
|
|
44
|
+
materializeConflict: boolean;
|
|
45
|
+
overwrite: boolean;
|
|
46
|
+
}>;
|
|
47
|
+
export type ParsedReview = Output & Readonly<{
|
|
48
|
+
command: "review";
|
|
49
|
+
contract?: string;
|
|
50
|
+
verdict: "satisfied" | "unsatisfied";
|
|
51
|
+
summary?: string;
|
|
52
|
+
summaryFromStdin?: true;
|
|
53
|
+
}>;
|
|
54
|
+
export type ParsedArc = Output & Actor & Readonly<{
|
|
55
|
+
command: "arc";
|
|
56
|
+
contract?: string;
|
|
57
|
+
}>;
|
|
58
|
+
export type ParsedAbandon = Output & Actor & Readonly<{
|
|
59
|
+
command: "abandon";
|
|
60
|
+
contract?: string;
|
|
61
|
+
note?: string;
|
|
62
|
+
}>;
|
|
63
|
+
export type ParsedStatus = Output & (Readonly<{
|
|
64
|
+
command: "status";
|
|
65
|
+
contract?: string;
|
|
66
|
+
selectors?: readonly string[];
|
|
67
|
+
akuma?: never;
|
|
68
|
+
guidance?: true;
|
|
69
|
+
}> | Readonly<{
|
|
70
|
+
command: "status";
|
|
71
|
+
contract: string;
|
|
72
|
+
akuma: true;
|
|
73
|
+
guidance?: never;
|
|
74
|
+
}>);
|
|
75
|
+
export type ParsedLs = Output & Readonly<{
|
|
76
|
+
command: "ls";
|
|
77
|
+
query: CatalogQuery;
|
|
78
|
+
}>;
|
|
79
|
+
export type ParsedAudit = Output & Readonly<{
|
|
80
|
+
command: "audit";
|
|
81
|
+
contract?: string;
|
|
82
|
+
includeDirty: boolean;
|
|
83
|
+
showDiff: boolean;
|
|
84
|
+
}>;
|
|
85
|
+
export type ParsedReconcile = Output & Readonly<{
|
|
86
|
+
command: "reconcile";
|
|
87
|
+
contract?: string;
|
|
88
|
+
retryHooks: boolean;
|
|
89
|
+
}>;
|
|
90
|
+
export type ParsedNuke = Output & Readonly<{
|
|
91
|
+
command: "nuke";
|
|
92
|
+
confirm?: string;
|
|
93
|
+
}>;
|
|
94
|
+
export type ParsedSettings = Output & Readonly<{
|
|
95
|
+
command: "settings";
|
|
96
|
+
}>;
|
|
97
|
+
export type ParsedRegion = Output & Readonly<{
|
|
98
|
+
command: "region";
|
|
99
|
+
contract?: string;
|
|
100
|
+
paths?: readonly [string, ...string[]];
|
|
101
|
+
}>;
|
|
102
|
+
export type ParsedContractParts = Readonly<{
|
|
103
|
+
command: ContractCommand;
|
|
104
|
+
flags: Readonly<Record<string, string | true | readonly string[]>>;
|
|
105
|
+
positionals: readonly string[];
|
|
106
|
+
stdin: boolean;
|
|
107
|
+
output: "text" | "json";
|
|
108
|
+
actor?: string;
|
|
109
|
+
}>;
|
|
110
|
+
export type ParsedContractCommand = ParsedBind | ParsedAmend | ParsedDeliver | ParsedReview | ParsedArc | ParsedAbandon | ParsedStatus | ParsedLs | ParsedAudit | ParsedReconcile | ParsedNuke | ParsedSettings | ParsedRegion;
|
|
111
|
+
export declare function parseContractCommand(parts: ParsedContractParts): ParsedContractCommand;
|
|
112
|
+
export {};
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { archetypeName } from "../../akuma/identity.js";
|
|
2
|
+
import { parseTaskNamespaceSelector } from "../../task/catalog.js";
|
|
3
|
+
import { CliUsageError, commandGuide } from "../usage.js";
|
|
4
|
+
import { CONTRACT_COMMAND_SPECS } from "./contract-help.js";
|
|
5
|
+
function parseAkumaCatalogPath(value) {
|
|
6
|
+
if (value === "aku" || value === "aku/")
|
|
7
|
+
return { kind: "archetypes" };
|
|
8
|
+
if (value === "aku/*/*")
|
|
9
|
+
return { kind: "akuma" };
|
|
10
|
+
const scopedGlob = /^aku\/([^/]+)\/\*$/u.exec(value);
|
|
11
|
+
if (scopedGlob !== null)
|
|
12
|
+
return { kind: "akuma", archetype: archetypeName(scopedGlob[1]) };
|
|
13
|
+
const match = /^aku\/([^/]+)\/?$/u.exec(value);
|
|
14
|
+
if (match === null)
|
|
15
|
+
return null;
|
|
16
|
+
return { kind: "akuma", archetype: archetypeName(match[1]) };
|
|
17
|
+
}
|
|
18
|
+
function optionalFlag(flags, name) {
|
|
19
|
+
const value = flags[name];
|
|
20
|
+
return typeof value === "string" ? value : undefined;
|
|
21
|
+
}
|
|
22
|
+
function refuse(command, message) {
|
|
23
|
+
throw new CliUsageError(message, commandGuide(command, CONTRACT_COMMAND_SPECS[command].usage));
|
|
24
|
+
}
|
|
25
|
+
function parseGateNames(parts, command) {
|
|
26
|
+
const value = optionalFlag(parts.flags, "gates");
|
|
27
|
+
if (value === undefined)
|
|
28
|
+
return undefined;
|
|
29
|
+
if (value === "")
|
|
30
|
+
return [];
|
|
31
|
+
const names = value.split(",");
|
|
32
|
+
if (names.some((name) => name.length === 0)) {
|
|
33
|
+
refuse(command, '--gates requires comma-separated names or "" to clear gates');
|
|
34
|
+
}
|
|
35
|
+
return names;
|
|
36
|
+
}
|
|
37
|
+
function parseBind(parts) {
|
|
38
|
+
const forkOf = optionalFlag(parts.flags, "fork-of");
|
|
39
|
+
if (forkOf !== undefined) {
|
|
40
|
+
if (parts.stdin)
|
|
41
|
+
refuse("bind", "fork bind reads no stdin");
|
|
42
|
+
for (const option of ["task", "after", "gates"]) {
|
|
43
|
+
if (parts.flags[option] !== undefined)
|
|
44
|
+
refuse("bind", `--${option} is not valid with --fork-of`);
|
|
45
|
+
}
|
|
46
|
+
const target = optionalFlag(parts.flags, "target");
|
|
47
|
+
return {
|
|
48
|
+
command: "bind",
|
|
49
|
+
forkOf,
|
|
50
|
+
...(target === undefined ? {} : { target }),
|
|
51
|
+
...(parts.actor === undefined ? {} : { actor: parts.actor }),
|
|
52
|
+
output: parts.output,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
if (!parts.stdin)
|
|
56
|
+
refuse("bind", "bind requires stdin");
|
|
57
|
+
const task = optionalFlag(parts.flags, "task");
|
|
58
|
+
const target = optionalFlag(parts.flags, "target");
|
|
59
|
+
const after = parts.flags.after === undefined ? [] : Array.isArray(parts.flags.after) ? parts.flags.after : [parts.flags.after];
|
|
60
|
+
const gates = parseGateNames(parts, "bind");
|
|
61
|
+
return {
|
|
62
|
+
command: "bind",
|
|
63
|
+
...(task === undefined ? {} : { task }),
|
|
64
|
+
...(target === undefined ? {} : { target }),
|
|
65
|
+
...(parts.flags.after === undefined ? {} : { after }),
|
|
66
|
+
...(gates === undefined ? {} : { gates }),
|
|
67
|
+
...(parts.actor === undefined ? {} : { actor: parts.actor }),
|
|
68
|
+
output: parts.output,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
function parseAmend(parts) {
|
|
72
|
+
const contract = parts.positionals[0];
|
|
73
|
+
const after = parts.flags.after === undefined ? [] : Array.isArray(parts.flags.after) ? parts.flags.after : [parts.flags.after];
|
|
74
|
+
if (parts.flags["clear-after"] === true && after.length > 0)
|
|
75
|
+
refuse("amend", "--clear-after and --after are mutually exclusive");
|
|
76
|
+
const gates = parseGateNames(parts, "amend");
|
|
77
|
+
if (!parts.stdin && parts.flags.after === undefined && parts.flags["clear-after"] !== true && gates === undefined) {
|
|
78
|
+
refuse("amend", "amend requires stdin or --after, --clear-after, or --gates");
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
command: "amend",
|
|
82
|
+
...(contract === undefined ? {} : { contract }),
|
|
83
|
+
...(parts.flags.after === undefined ? {} : { after }),
|
|
84
|
+
...(parts.flags["clear-after"] === true ? { clearAfter: true } : {}),
|
|
85
|
+
...(gates === undefined ? {} : { gates }),
|
|
86
|
+
...(parts.actor === undefined ? {} : { actor: parts.actor }),
|
|
87
|
+
...(parts.stdin ? { stdin: true } : {}),
|
|
88
|
+
output: parts.output,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function parseDeliver(parts) {
|
|
92
|
+
const contract = parts.positionals[0];
|
|
93
|
+
const message = optionalFlag(parts.flags, "message");
|
|
94
|
+
return {
|
|
95
|
+
command: "deliver",
|
|
96
|
+
...(contract === undefined ? {} : { contract }),
|
|
97
|
+
...(message === undefined ? {} : { message }),
|
|
98
|
+
includeDirty: parts.flags["include-dirty"] === true,
|
|
99
|
+
materializeConflict: parts.flags["materialize-conflict"] === true,
|
|
100
|
+
overwrite: parts.flags.overwrite === true,
|
|
101
|
+
output: parts.output,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
function parseReview(parts) {
|
|
105
|
+
if (Number(parts.flags.satisfied === true) + Number(parts.flags.unsatisfied === true) !== 1) {
|
|
106
|
+
refuse("review", "review requires exactly one verdict flag");
|
|
107
|
+
}
|
|
108
|
+
const summary = optionalFlag(parts.flags, "summary");
|
|
109
|
+
if (parts.stdin === (summary !== undefined)) {
|
|
110
|
+
refuse("review", "review requires exactly one of --summary <text> or stdin '-'");
|
|
111
|
+
}
|
|
112
|
+
const contract = parts.positionals[0];
|
|
113
|
+
return {
|
|
114
|
+
command: "review",
|
|
115
|
+
...(contract === undefined ? {} : { contract }),
|
|
116
|
+
verdict: parts.flags.satisfied === true ? "satisfied" : "unsatisfied",
|
|
117
|
+
...(summary === undefined ? {} : { summary }),
|
|
118
|
+
...(parts.stdin ? { summaryFromStdin: true } : {}),
|
|
119
|
+
output: parts.output,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
function parseStatus(parts) {
|
|
123
|
+
const guidance = parts.flags.guidance === true;
|
|
124
|
+
if (guidance) {
|
|
125
|
+
const selected = parts.positionals[0];
|
|
126
|
+
if (parts.positionals.length > 1)
|
|
127
|
+
refuse("status", "--guidance accepts at most one Contract selector");
|
|
128
|
+
if (selected?.startsWith("aku/") === true)
|
|
129
|
+
refuse("status", "--guidance cannot select an Akuma");
|
|
130
|
+
return {
|
|
131
|
+
command: "status",
|
|
132
|
+
...(selected === undefined ? {} : { contract: selected }),
|
|
133
|
+
guidance: true,
|
|
134
|
+
output: parts.output,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
if (parts.positionals.length > 1) {
|
|
138
|
+
return { command: "status", selectors: parts.positionals, output: parts.output };
|
|
139
|
+
}
|
|
140
|
+
const contract = parts.positionals[0];
|
|
141
|
+
if (contract?.startsWith("aku/") === true) {
|
|
142
|
+
return { command: "status", contract, akuma: true, output: parts.output };
|
|
143
|
+
}
|
|
144
|
+
return { command: "status", ...(contract === undefined ? {} : { contract }), output: parts.output };
|
|
145
|
+
}
|
|
146
|
+
function parseRegion(parts) {
|
|
147
|
+
const contract = parts.positionals[0];
|
|
148
|
+
const pathFlag = parts.flags.path;
|
|
149
|
+
const paths = pathFlag === undefined ? undefined : Array.isArray(pathFlag) ? pathFlag : [pathFlag];
|
|
150
|
+
if (paths !== undefined && contract !== undefined)
|
|
151
|
+
refuse("region", "--path cannot combine with a contract");
|
|
152
|
+
return {
|
|
153
|
+
command: "region",
|
|
154
|
+
...(contract === undefined ? {} : { contract }),
|
|
155
|
+
...(paths === undefined ? {} : { paths: paths }),
|
|
156
|
+
output: parts.output,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
function akumaCatalogQuery(query, parts) {
|
|
160
|
+
const limit = optionalFlag(parts.flags, "limit");
|
|
161
|
+
if (limit !== undefined && (!/^[1-9][0-9]*$/u.test(limit) || !Number.isSafeInteger(Number(limit))))
|
|
162
|
+
refuse("ls", "--limit requires a positive safe integer");
|
|
163
|
+
return {
|
|
164
|
+
...query,
|
|
165
|
+
...(limit === undefined ? {} : { limit: Number(limit) }),
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
function listLimit(parts) {
|
|
169
|
+
const limit = optionalFlag(parts.flags, "limit");
|
|
170
|
+
if (limit !== undefined && (!/^[1-9][0-9]*$/u.test(limit) || !Number.isSafeInteger(Number(limit))))
|
|
171
|
+
refuse("ls", "--limit requires a positive safe integer");
|
|
172
|
+
return limit === undefined ? undefined : Number(limit);
|
|
173
|
+
}
|
|
174
|
+
function taskCatalogQuery(path, limit) {
|
|
175
|
+
if (path === "task" || path === "task/") {
|
|
176
|
+
return { kind: "tasks", namespace: [], ...(limit === undefined ? {} : { limit }) };
|
|
177
|
+
}
|
|
178
|
+
if (!path.startsWith("task/"))
|
|
179
|
+
return null;
|
|
180
|
+
if (!path.endsWith("/"))
|
|
181
|
+
refuse("ls", `invalid Task namespace selector: ${path}`);
|
|
182
|
+
const body = path.slice("task/".length, -1);
|
|
183
|
+
if (body.length === 0 || body.split("/").some((segment) => segment.length === 0))
|
|
184
|
+
refuse("ls", `invalid Task namespace selector: ${path}`);
|
|
185
|
+
try {
|
|
186
|
+
const namespace = parseTaskNamespaceSelector(path);
|
|
187
|
+
return { kind: "tasks", namespace, ...(limit === undefined ? {} : { limit }) };
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
refuse("ls", error instanceof Error ? error.message : `invalid Task namespace selector: ${path}`);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
function parseLs(parts) {
|
|
194
|
+
const path = parts.positionals[0];
|
|
195
|
+
if (path === undefined)
|
|
196
|
+
refuse("ls", "ls requires a selector");
|
|
197
|
+
const limit = listLimit(parts);
|
|
198
|
+
const taskQuery = taskCatalogQuery(path, limit);
|
|
199
|
+
if (taskQuery !== null)
|
|
200
|
+
return { command: "ls", query: taskQuery, output: parts.output };
|
|
201
|
+
if (path === "kei" || path === "kei/") {
|
|
202
|
+
return {
|
|
203
|
+
command: "ls",
|
|
204
|
+
query: { kind: "contracts", ...(limit === undefined ? {} : { limit }) },
|
|
205
|
+
output: parts.output,
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
try {
|
|
209
|
+
const query = parseAkumaCatalogPath(path);
|
|
210
|
+
if (query === null)
|
|
211
|
+
refuse("ls", "ls requires a supported identity directory selector");
|
|
212
|
+
return { command: "ls", query: akumaCatalogQuery(query, parts), output: parts.output };
|
|
213
|
+
}
|
|
214
|
+
catch (error) {
|
|
215
|
+
if (error instanceof CliUsageError)
|
|
216
|
+
throw error;
|
|
217
|
+
refuse("ls", error instanceof Error ? error.message : "invalid ls directory");
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
export function parseContractCommand(parts) {
|
|
221
|
+
switch (parts.command) {
|
|
222
|
+
case "bind":
|
|
223
|
+
return parseBind(parts);
|
|
224
|
+
case "amend":
|
|
225
|
+
return parseAmend(parts);
|
|
226
|
+
case "deliver":
|
|
227
|
+
return parseDeliver(parts);
|
|
228
|
+
case "review":
|
|
229
|
+
return parseReview(parts);
|
|
230
|
+
case "arc": {
|
|
231
|
+
const contract = parts.positionals[0];
|
|
232
|
+
return {
|
|
233
|
+
command: "arc",
|
|
234
|
+
...(contract === undefined ? {} : { contract }),
|
|
235
|
+
...(parts.actor === undefined ? {} : { actor: parts.actor }),
|
|
236
|
+
output: parts.output,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
case "abandon": {
|
|
240
|
+
const contract = parts.positionals[0];
|
|
241
|
+
const note = optionalFlag(parts.flags, "note");
|
|
242
|
+
return {
|
|
243
|
+
command: "abandon",
|
|
244
|
+
...(contract === undefined ? {} : { contract }),
|
|
245
|
+
...(note === undefined ? {} : { note }),
|
|
246
|
+
...(parts.actor === undefined ? {} : { actor: parts.actor }),
|
|
247
|
+
output: parts.output,
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
case "status":
|
|
251
|
+
return parseStatus(parts);
|
|
252
|
+
case "ls":
|
|
253
|
+
return parseLs(parts);
|
|
254
|
+
case "audit": {
|
|
255
|
+
const contract = parts.positionals[0];
|
|
256
|
+
return {
|
|
257
|
+
command: "audit",
|
|
258
|
+
...(contract === undefined ? {} : { contract }),
|
|
259
|
+
includeDirty: parts.flags["include-dirty"] === true,
|
|
260
|
+
showDiff: parts.flags["show-diff"] === true,
|
|
261
|
+
output: parts.output,
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
case "reconcile": {
|
|
265
|
+
const contract = parts.positionals[0];
|
|
266
|
+
return {
|
|
267
|
+
command: "reconcile",
|
|
268
|
+
...(contract === undefined ? {} : { contract }),
|
|
269
|
+
retryHooks: parts.flags["retry-hooks"] === true,
|
|
270
|
+
output: parts.output,
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
case "nuke": {
|
|
274
|
+
const confirm = optionalFlag(parts.flags, "confirm");
|
|
275
|
+
return { command: "nuke", ...(confirm === undefined ? {} : { confirm }), output: parts.output };
|
|
276
|
+
}
|
|
277
|
+
case "settings":
|
|
278
|
+
return { command: "settings", output: parts.output };
|
|
279
|
+
case "region":
|
|
280
|
+
return parseRegion(parts);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
type ContractFlagKind = "boolean" | "value" | "raw-value" | "repeat-value";
|
|
2
2
|
export type ContractCommandSpec = Readonly<{
|
|
3
3
|
positional: "none" | "optional";
|
|
4
4
|
stdin: "none" | "optional" | "required";
|
|
@@ -62,7 +62,7 @@ export declare const CONTRACT_COMMAND_SPECS: {
|
|
|
62
62
|
readonly json: "boolean";
|
|
63
63
|
};
|
|
64
64
|
readonly usage: "review [<contract>|@<contract>] (--satisfied | --unsatisfied) (--summary <text> | -)";
|
|
65
|
-
readonly purpose: "Record whether a Contract meets its acceptance criteria
|
|
65
|
+
readonly purpose: "Record whether a Contract meets its acceptance criteria.";
|
|
66
66
|
readonly details: string;
|
|
67
67
|
};
|
|
68
68
|
readonly arc: {
|
|
@@ -73,7 +73,8 @@ export declare const CONTRACT_COMMAND_SPECS: {
|
|
|
73
73
|
readonly json: "boolean";
|
|
74
74
|
};
|
|
75
75
|
readonly usage: "arc [<contract>|@<contract>] [--actor <actor>] -";
|
|
76
|
-
readonly purpose: "
|
|
76
|
+
readonly purpose: "Name the current chapter of a Contract's story (a story arc).";
|
|
77
|
+
readonly details: string;
|
|
77
78
|
};
|
|
78
79
|
readonly abandon: {
|
|
79
80
|
readonly positional: "optional";
|
|
@@ -90,20 +91,12 @@ export declare const CONTRACT_COMMAND_SPECS: {
|
|
|
90
91
|
readonly positional: "optional";
|
|
91
92
|
readonly stdin: "none";
|
|
92
93
|
readonly flags: {
|
|
94
|
+
readonly guidance: "boolean";
|
|
93
95
|
readonly json: "boolean";
|
|
94
96
|
};
|
|
95
|
-
readonly usage: "status [<contract>|@name|<aku/...>]
|
|
97
|
+
readonly usage: "status [<contract>|@name|<aku/...>]...\nstatus --guidance [<contract>|@<contract>]";
|
|
96
98
|
readonly purpose: "Show the world overview or selected Contract and Akuma status.";
|
|
97
|
-
readonly details:
|
|
98
|
-
};
|
|
99
|
-
readonly show: {
|
|
100
|
-
readonly positional: "optional";
|
|
101
|
-
readonly stdin: "none";
|
|
102
|
-
readonly flags: {
|
|
103
|
-
readonly json: "boolean";
|
|
104
|
-
};
|
|
105
|
-
readonly usage: "show [<contract>|@<contract>]";
|
|
106
|
-
readonly purpose: "Show one Contract's requirements, current state, and work guidance.";
|
|
99
|
+
readonly details: string;
|
|
107
100
|
};
|
|
108
101
|
readonly ls: {
|
|
109
102
|
readonly positional: "optional";
|
|
@@ -112,8 +105,9 @@ export declare const CONTRACT_COMMAND_SPECS: {
|
|
|
112
105
|
readonly limit: "value";
|
|
113
106
|
readonly json: "boolean";
|
|
114
107
|
};
|
|
115
|
-
readonly usage: "ls task[/] [--limit <count>]\nls kei[/] [--limit <count>]\nls aku[/] [--limit <count>]\nls aku/<
|
|
116
|
-
readonly purpose: "List Tasks, Contracts, or Akumas
|
|
108
|
+
readonly usage: "ls task[/] [--limit <count>]\nls kei[/] [--limit <count>]\nls aku[/] [--limit <count>]\nls aku/<name>[/] [--limit <count>]\nls \"aku/<name>/*\" [--limit <count>]\nls \"aku/*/*\" [--limit <count>]";
|
|
109
|
+
readonly purpose: "List Tasks, Contracts, or Akumas.";
|
|
110
|
+
readonly details: string;
|
|
117
111
|
};
|
|
118
112
|
readonly audit: {
|
|
119
113
|
readonly positional: "optional";
|
|
@@ -124,7 +118,7 @@ export declare const CONTRACT_COMMAND_SPECS: {
|
|
|
124
118
|
readonly json: "boolean";
|
|
125
119
|
};
|
|
126
120
|
readonly usage: "audit [<contract>|@<contract>] [--include-dirty] [--show-diff]";
|
|
127
|
-
readonly purpose: "Preview what would happen if you delivered a Contract now
|
|
121
|
+
readonly purpose: "Preview what would happen if you delivered a Contract now.";
|
|
128
122
|
readonly details: string;
|
|
129
123
|
};
|
|
130
124
|
readonly reconcile: {
|
|
@@ -135,7 +129,7 @@ export declare const CONTRACT_COMMAND_SPECS: {
|
|
|
135
129
|
readonly json: "boolean";
|
|
136
130
|
};
|
|
137
131
|
readonly usage: "reconcile [<contract>|@<contract>] [--retry-hooks]";
|
|
138
|
-
readonly purpose: "Restore a Contract's Git workspace from its recorded state, or
|
|
132
|
+
readonly purpose: "Restore a Contract's Git workspace from its recorded state, or all of this World's.";
|
|
139
133
|
readonly details: "--retry-hooks reruns configured setup commands even when a Contract workspace already exists; otherwise they run when reconciliation creates it.";
|
|
140
134
|
};
|
|
141
135
|
readonly nuke: {
|
|
@@ -146,7 +140,7 @@ export declare const CONTRACT_COMMAND_SPECS: {
|
|
|
146
140
|
readonly json: "boolean";
|
|
147
141
|
};
|
|
148
142
|
readonly usage: "nuke [--confirm <world-directory>]";
|
|
149
|
-
readonly purpose: "Remove Keiyaku-owned data from
|
|
143
|
+
readonly purpose: "Remove Keiyaku-owned data from this World.";
|
|
150
144
|
readonly details: "Stops Akumas and removes this World's Tasks and Keiyaku-created worktrees and Git references. --confirm must exactly match this World's directory; source files are not deleted.";
|
|
151
145
|
};
|
|
152
146
|
readonly settings: {
|
|
@@ -156,7 +150,7 @@ export declare const CONTRACT_COMMAND_SPECS: {
|
|
|
156
150
|
readonly json: "boolean";
|
|
157
151
|
};
|
|
158
152
|
readonly usage: "settings";
|
|
159
|
-
readonly purpose: "Show effective Settings (user + project, read-only)";
|
|
153
|
+
readonly purpose: "Show effective Settings (user + project, read-only).";
|
|
160
154
|
};
|
|
161
155
|
readonly region: {
|
|
162
156
|
readonly positional: "optional";
|
|
@@ -166,9 +160,10 @@ export declare const CONTRACT_COMMAND_SPECS: {
|
|
|
166
160
|
readonly json: "boolean";
|
|
167
161
|
};
|
|
168
162
|
readonly usage: "region [<contract>]\nregion --path <pattern> [--path <pattern> ...]";
|
|
169
|
-
readonly purpose: "Show declared Contract
|
|
163
|
+
readonly purpose: "Show declared Contract write patterns — all, one Contract's, or those overlapping given paths.";
|
|
164
|
+
readonly details: "Check overlap before starting parallel work.";
|
|
170
165
|
};
|
|
171
166
|
};
|
|
172
167
|
export type ContractCommand = keyof typeof CONTRACT_COMMAND_SPECS;
|
|
173
168
|
export declare function renderContractHelp(command: ContractCommand): string;
|
|
174
|
-
export
|
|
169
|
+
export {};
|