@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
package/build/src/akuma/body.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { decodeSoulSeed } from "./heart/soul.js";
|
|
3
|
+
import { sessionAdmissionSchema } from "./heart/rows.js";
|
|
1
4
|
import { appendFile, stat } from "node:fs/promises";
|
|
2
|
-
import { basename, delimiter, join } from "node:path";
|
|
3
5
|
import { fileURLToPath } from "node:url";
|
|
4
6
|
import { abortable, abortableDelay } from "./abort.js";
|
|
5
7
|
import { BodySupervisor } from "./body-supervisor.js";
|
|
6
8
|
import { driveTurn, turnRecipe } from "./turn-drive.js";
|
|
7
|
-
import { HeldAkumaLeash, breakBody, decidePendingTellDisposition, drainPendingTells, endTurn, failOpenBoundTurns, finishBodyIfIdle, heartExists, isHeartAbsent, probeLeash, projectTell, readHeart, readLatestTurnForBody, readOpenBoundTurns, readOpenPendingTellDisposition, readTell, readTurn, readNonterminalRequests, resolvePendingTellDisposition, } from "./heart/index.js";
|
|
8
|
-
import { pathsForAkuId, worldRootForAkumaPaths } from "./identity.js";
|
|
9
|
+
import { HeldAkumaLeash, breakBody, decidePendingTellDisposition, drainPendingTells, endTurn, failOpenBoundTurns, finishBodyIfIdle, heartExists, isHeartAbsent, probeLeash, projectTell, readHeart, readLatestTurnForBody, readOpenBoundTurns, readOpenPendingTellDisposition, readTell, readTurn, readTurnParticipants, readNonterminalRequests, resolvePendingTellDisposition, } from "./heart/index.js";
|
|
10
|
+
import { akumaPathsSchema, pathsForAkuId, worldRootForAkumaPaths } from "./identity.js";
|
|
9
11
|
import { admitCallInitialTell, } from "./call-initial-tell.js";
|
|
10
12
|
import { akumaExecutionEnvironment } from "./providers/execution-environment.js";
|
|
11
13
|
import { pluginRuntime } from "../plugin/runtime.js";
|
|
@@ -17,6 +19,27 @@ const LEASH_RETRY_MS = 100;
|
|
|
17
19
|
const WAKE_REREAD_MS = 100;
|
|
18
20
|
export const LEASH_HELD_EXIT = 75;
|
|
19
21
|
export { CONTROL_RESPONSE_MS } from "./body-supervisor.js";
|
|
22
|
+
const launchSeedSchema = z.unknown().transform((value, context) => {
|
|
23
|
+
try {
|
|
24
|
+
return decodeSoulSeed(value);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
context.addIssue({ code: "custom", message: "invalid Body birth seed" });
|
|
28
|
+
return z.NEVER;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
export const bodyLaunchSchema = z
|
|
32
|
+
.object({
|
|
33
|
+
paths: akumaPathsSchema,
|
|
34
|
+
seed: launchSeedSchema.optional(),
|
|
35
|
+
birthSession: sessionAdmissionSchema.optional(),
|
|
36
|
+
initialBody: z.string().optional(),
|
|
37
|
+
initiator: z.string().optional(),
|
|
38
|
+
initialSchemaJson: z.string().optional(),
|
|
39
|
+
refuseIfHeld: z.boolean().optional(),
|
|
40
|
+
completion: z.object({ contractId: z.string().optional() }).strict().optional(),
|
|
41
|
+
})
|
|
42
|
+
.strict();
|
|
20
43
|
function missing(error) {
|
|
21
44
|
return isHeartAbsent(error) || error.code === "ENOENT";
|
|
22
45
|
}
|
|
@@ -148,64 +171,63 @@ const DEFAULT_RUNTIME = {
|
|
|
148
171
|
spawnBody: spawnAkumaBody,
|
|
149
172
|
};
|
|
150
173
|
/**
|
|
151
|
-
* The
|
|
152
|
-
*
|
|
153
|
-
*
|
|
174
|
+
* The Body spawn executable is the waking process's own executable, resolved
|
|
175
|
+
* at use time. There is no recorded path and no re-resolution chain: when the
|
|
176
|
+
* file is genuinely gone the spawn fails honestly and the wake diagnostic
|
|
177
|
+
* names the missing piece.
|
|
154
178
|
*/
|
|
155
|
-
|
|
156
|
-
async function runtimeFileExists(path) {
|
|
179
|
+
async function executableMissing(path) {
|
|
157
180
|
try {
|
|
158
|
-
return (await stat(path)).isFile();
|
|
181
|
+
return !(await stat(path)).isFile();
|
|
159
182
|
}
|
|
160
183
|
catch {
|
|
161
|
-
return
|
|
184
|
+
return true;
|
|
162
185
|
}
|
|
163
186
|
}
|
|
164
|
-
async function
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
if (directory.length === 0)
|
|
169
|
-
continue;
|
|
170
|
-
const candidate = join(directory, command);
|
|
171
|
-
if (await exists(candidate))
|
|
172
|
-
return candidate;
|
|
187
|
+
async function frozenCwdMissing(path) {
|
|
188
|
+
try {
|
|
189
|
+
await stat(path);
|
|
190
|
+
return false;
|
|
173
191
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
class StaleRuntimeError extends Error {
|
|
177
|
-
constructor(recorded, current, command) {
|
|
178
|
-
super(`recorded Body runtime ${recorded} no longer exists and re-resolution failed: neither this process executable ` +
|
|
179
|
-
`${current} nor the command "${command}" on PATH names an existing file; kill this Akuma and call a fresh one`);
|
|
180
|
-
this.name = "StaleRuntimeError";
|
|
192
|
+
catch {
|
|
193
|
+
return true;
|
|
181
194
|
}
|
|
182
195
|
}
|
|
183
196
|
/**
|
|
184
|
-
*
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
197
|
+
* Diagnose an ENOENT Body spawn failure by checking the attempted executable
|
|
198
|
+
* and the frozen execution cwd separately. The message names the genuinely
|
|
199
|
+
* missing piece(s) with the kill-and-call-fresh remedy; a missing cwd likely
|
|
200
|
+
* means its Contract was accepted and the worktree cleaned up. When both
|
|
201
|
+
* pieces still exist the original failure passes through unchanged, as does
|
|
202
|
+
* any non-ENOENT spawn failure.
|
|
190
203
|
*/
|
|
191
|
-
|
|
192
|
-
const
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
const
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
+
async function diagnoseSpawnEnoent(input, cause) {
|
|
205
|
+
const executable = input.argv[0] ?? process.execPath;
|
|
206
|
+
const cwd = input.cwd;
|
|
207
|
+
const [noExecutable, noCwd] = await Promise.all([executableMissing(executable), frozenCwdMissing(cwd)]);
|
|
208
|
+
if (!noExecutable && !noCwd)
|
|
209
|
+
return cause instanceof Error ? cause : new Error(String(cause));
|
|
210
|
+
const missing = [];
|
|
211
|
+
if (noCwd)
|
|
212
|
+
missing.push(`frozen execution directory ${cwd} no longer exists`);
|
|
213
|
+
if (noExecutable)
|
|
214
|
+
missing.push(`waking process executable ${executable} no longer exists (the host likely removed the running process binary)`);
|
|
215
|
+
const remedies = [];
|
|
216
|
+
if (noCwd)
|
|
217
|
+
remedies.push("a missing execution directory likely means its Contract was accepted and the worktree cleaned up, with deliverables already in Git");
|
|
218
|
+
if (noExecutable)
|
|
219
|
+
remedies.push("a missing executable likely means the host removed the running process binary: re-enter with a fresh CLI process and retry");
|
|
220
|
+
const remedy = `kill this Akuma and call a fresh one; ${remedies.join("; ")}`;
|
|
221
|
+
const error = new Error(`Body spawn failed: ${missing.join(" and ")}; ${remedy}`, { cause });
|
|
222
|
+
error.code = "ENOENT";
|
|
223
|
+
return error;
|
|
224
|
+
}
|
|
225
|
+
export async function bodyProcessInput(launch, bodyModuleUrl = import.meta.url) {
|
|
204
226
|
const encoded = Buffer.from(JSON.stringify(launch), "utf8").toString("base64url");
|
|
205
227
|
const actorId = launch.seed?.id ?? (await readHeart(launch.paths)).soul?.id;
|
|
206
228
|
if (actorId === undefined)
|
|
207
229
|
throw new Error("Akuma wake has no born soul");
|
|
208
|
-
const executable =
|
|
230
|
+
const executable = process.execPath;
|
|
209
231
|
const source = bodyModuleUrl.endsWith(".ts");
|
|
210
232
|
const entry = fileURLToPath(new URL(source ? "../akuma-body.ts" : "../akuma-body.js", bodyModuleUrl));
|
|
211
233
|
return {
|
|
@@ -295,6 +317,7 @@ function turnOutcomeEmitter(launch, soul) {
|
|
|
295
317
|
const turn = await readTurn(launch.paths, turnSequence);
|
|
296
318
|
if (turn === null)
|
|
297
319
|
throw new Error(`Committed Turn ${turnSequence} is missing from Heart`);
|
|
320
|
+
const participants = await readTurnParticipants(launch.paths, turnSequence);
|
|
298
321
|
plugins ??= pluginRuntime({
|
|
299
322
|
world: await World.at(worldRootForAkumaPaths(launch.paths)),
|
|
300
323
|
reportDiagnostic,
|
|
@@ -305,6 +328,7 @@ function turnOutcomeEmitter(launch, soul) {
|
|
|
305
328
|
bodySequence: turn.bodySequence,
|
|
306
329
|
turnSequence,
|
|
307
330
|
...(turn.initiator === undefined ? {} : { initiator: turn.initiator }),
|
|
331
|
+
...(participants.length === 0 ? {} : { participants }),
|
|
308
332
|
outcome: outcome.outcome === "answered"
|
|
309
333
|
? { kind: "answered", text: outcome.answer }
|
|
310
334
|
: { kind: "failed", reason: outcome.diagnostic },
|
|
@@ -324,7 +348,9 @@ function bodyEndEmitter(launch, soul) {
|
|
|
324
348
|
};
|
|
325
349
|
return (bodySequence, end, diagnostic) => (async () => {
|
|
326
350
|
try {
|
|
327
|
-
const
|
|
351
|
+
const latestTurn = await readLatestTurnForBody(launch.paths, bodySequence);
|
|
352
|
+
const initiator = latestTurn?.initiator;
|
|
353
|
+
const participants = latestTurn === null ? [] : await readTurnParticipants(launch.paths, latestTurn.sequence);
|
|
328
354
|
plugins ??= pluginRuntime({
|
|
329
355
|
world: await World.at(worldRootForAkumaPaths(launch.paths)),
|
|
330
356
|
reportDiagnostic,
|
|
@@ -336,6 +362,7 @@ function bodyEndEmitter(launch, soul) {
|
|
|
336
362
|
bodySequence,
|
|
337
363
|
end,
|
|
338
364
|
...(initiator === undefined ? {} : { initiator }),
|
|
365
|
+
...(participants.length === 0 ? {} : { participants }),
|
|
339
366
|
...(diagnostic === undefined ? {} : { diagnostic }),
|
|
340
367
|
...(launch.completion?.contractId === undefined ? {} : { contractId: launch.completion.contractId }),
|
|
341
368
|
}, reportDiagnostic);
|
|
@@ -576,8 +603,16 @@ export async function driveAkumaBody(launch, adapter, runtimeInput = {}) {
|
|
|
576
603
|
await finished.notification;
|
|
577
604
|
}
|
|
578
605
|
}
|
|
579
|
-
export async function spawnAkumaBody(launch
|
|
580
|
-
|
|
606
|
+
export async function spawnAkumaBody(launch) {
|
|
607
|
+
const input = await bodyProcessInput(launch, import.meta.url);
|
|
608
|
+
try {
|
|
609
|
+
return await spawnDetachedProcess(input);
|
|
610
|
+
}
|
|
611
|
+
catch (error) {
|
|
612
|
+
if (error?.code !== "ENOENT")
|
|
613
|
+
throw error;
|
|
614
|
+
throw await diagnoseSpawnEnoent(input, error);
|
|
615
|
+
}
|
|
581
616
|
}
|
|
582
617
|
export async function runAkumaBody(launch, world, externalCommands) {
|
|
583
618
|
return await driveAkumaBody(launch, undefined, { world, externalCommands });
|
|
@@ -1,40 +1,148 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { type AkuId } from "./identity.js";
|
|
1
|
+
import { z } from "zod";
|
|
3
2
|
import type { WorldRoot } from "../world.js";
|
|
3
|
+
import { type TellFact } from "./heart/index.js";
|
|
4
|
+
import { type AkuId } from "./identity.js";
|
|
4
5
|
export type CallInitialTell = Readonly<{
|
|
5
6
|
tellId: string;
|
|
6
7
|
body: string;
|
|
7
8
|
schemaJson?: string;
|
|
8
9
|
initiator?: string;
|
|
9
10
|
}>;
|
|
10
|
-
|
|
11
|
-
kind: "told"
|
|
12
|
-
}
|
|
13
|
-
kind: "
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
11
|
+
declare const tellWakeSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
12
|
+
kind: z.ZodLiteral<"told">;
|
|
13
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
14
|
+
kind: z.ZodLiteral<"held">;
|
|
15
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
16
|
+
kind: z.ZodLiteral<"pursuing">;
|
|
17
|
+
bodySequence: z.ZodNumber;
|
|
18
|
+
}, z.core.$strict>, z.ZodPipe<z.ZodObject<{
|
|
19
|
+
kind: z.ZodLiteral<"failed">;
|
|
20
|
+
diagnostic: z.ZodString;
|
|
21
|
+
child: z.ZodOptional<z.ZodObject<{
|
|
22
|
+
code: z.ZodNullable<z.ZodNumber>;
|
|
23
|
+
signal: z.ZodNullable<z.ZodString>;
|
|
24
|
+
log: z.ZodObject<{
|
|
25
|
+
path: z.ZodString;
|
|
26
|
+
from: z.ZodNumber;
|
|
27
|
+
to: z.ZodNumber;
|
|
28
|
+
}, z.core.$strict>;
|
|
29
|
+
}, z.core.$strict>>;
|
|
30
|
+
}, z.core.$strict>, z.ZodTransform<{
|
|
31
|
+
kind: "failed";
|
|
32
|
+
diagnostic: string;
|
|
33
|
+
} | {
|
|
34
|
+
child: {
|
|
35
|
+
code: number | null;
|
|
36
|
+
signal: string | null;
|
|
37
|
+
log: {
|
|
38
|
+
path: string;
|
|
39
|
+
from: number;
|
|
40
|
+
to: number;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
18
43
|
kind: "failed";
|
|
19
44
|
diagnostic: string;
|
|
20
|
-
|
|
45
|
+
}, {
|
|
46
|
+
kind: "failed";
|
|
47
|
+
diagnostic: string;
|
|
48
|
+
child?: {
|
|
21
49
|
code: number | null;
|
|
22
50
|
signal: string | null;
|
|
23
|
-
log:
|
|
51
|
+
log: {
|
|
24
52
|
path: string;
|
|
25
53
|
from: number;
|
|
26
54
|
to: number;
|
|
55
|
+
};
|
|
56
|
+
} | undefined;
|
|
57
|
+
}>>]>;
|
|
58
|
+
export declare const tellResultSchema: z.ZodObject<{
|
|
59
|
+
admission: z.ZodObject<{
|
|
60
|
+
fact: z.ZodLiteral<"recorded">;
|
|
61
|
+
tellId: z.ZodString;
|
|
62
|
+
}, z.core.$strict>;
|
|
63
|
+
row: z.ZodObject<{
|
|
64
|
+
kind: z.ZodLiteral<"tell">;
|
|
65
|
+
sequence: z.ZodNumber;
|
|
66
|
+
at: z.ZodString;
|
|
67
|
+
tellId: z.ZodString;
|
|
68
|
+
text: z.ZodString;
|
|
69
|
+
state: z.ZodEnum<{
|
|
70
|
+
pending: "pending";
|
|
71
|
+
told: "told";
|
|
27
72
|
}>;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
73
|
+
deliveries: z.ZodReadonly<z.ZodArray<z.ZodPipe<z.ZodObject<{
|
|
74
|
+
deliveredAt: z.ZodString;
|
|
75
|
+
route: z.ZodEnum<{
|
|
76
|
+
live: "live";
|
|
77
|
+
launch: "launch";
|
|
78
|
+
}>;
|
|
79
|
+
turnSequence: z.ZodNumber;
|
|
80
|
+
receipt: z.ZodOptional<z.ZodEnum<{
|
|
81
|
+
required: "required";
|
|
82
|
+
unavailable: "unavailable";
|
|
83
|
+
}>>;
|
|
84
|
+
}, z.core.$strict>, z.ZodTransform<Readonly<{
|
|
85
|
+
turnSequence: number;
|
|
86
|
+
route: "launch" | "live";
|
|
87
|
+
receipt?: "unavailable" | "required";
|
|
88
|
+
deliveredAt: string;
|
|
89
|
+
}>, {
|
|
90
|
+
deliveredAt: string;
|
|
91
|
+
route: "live" | "launch";
|
|
92
|
+
turnSequence: number;
|
|
93
|
+
receipt?: "required" | "unavailable" | undefined;
|
|
94
|
+
}>>>>;
|
|
95
|
+
}, z.core.$strict>;
|
|
96
|
+
wake: z.ZodUnion<readonly [z.ZodObject<{
|
|
97
|
+
kind: z.ZodLiteral<"told">;
|
|
98
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
99
|
+
kind: z.ZodLiteral<"held">;
|
|
100
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
101
|
+
kind: z.ZodLiteral<"pursuing">;
|
|
102
|
+
bodySequence: z.ZodNumber;
|
|
103
|
+
}, z.core.$strict>, z.ZodPipe<z.ZodObject<{
|
|
104
|
+
kind: z.ZodLiteral<"failed">;
|
|
105
|
+
diagnostic: z.ZodString;
|
|
106
|
+
child: z.ZodOptional<z.ZodObject<{
|
|
107
|
+
code: z.ZodNullable<z.ZodNumber>;
|
|
108
|
+
signal: z.ZodNullable<z.ZodString>;
|
|
109
|
+
log: z.ZodObject<{
|
|
110
|
+
path: z.ZodString;
|
|
111
|
+
from: z.ZodNumber;
|
|
112
|
+
to: z.ZodNumber;
|
|
113
|
+
}, z.core.$strict>;
|
|
114
|
+
}, z.core.$strict>>;
|
|
115
|
+
}, z.core.$strict>, z.ZodTransform<{
|
|
116
|
+
kind: "failed";
|
|
117
|
+
diagnostic: string;
|
|
118
|
+
} | {
|
|
119
|
+
child: {
|
|
120
|
+
code: number | null;
|
|
121
|
+
signal: string | null;
|
|
122
|
+
log: {
|
|
123
|
+
path: string;
|
|
124
|
+
from: number;
|
|
125
|
+
to: number;
|
|
126
|
+
};
|
|
127
|
+
};
|
|
128
|
+
kind: "failed";
|
|
129
|
+
diagnostic: string;
|
|
130
|
+
}, {
|
|
131
|
+
kind: "failed";
|
|
132
|
+
diagnostic: string;
|
|
133
|
+
child?: {
|
|
134
|
+
code: number | null;
|
|
135
|
+
signal: string | null;
|
|
136
|
+
log: {
|
|
137
|
+
path: string;
|
|
138
|
+
from: number;
|
|
139
|
+
to: number;
|
|
140
|
+
};
|
|
141
|
+
} | undefined;
|
|
142
|
+
}>>]>;
|
|
143
|
+
}, z.core.$strict>;
|
|
144
|
+
export type TellWake = z.infer<typeof tellWakeSchema>;
|
|
145
|
+
export type TellResult = z.infer<typeof tellResultSchema>;
|
|
38
146
|
export type CallInitialTellAdmission = Readonly<{
|
|
39
147
|
kind: "admitted";
|
|
40
148
|
tell: TellFact;
|
|
@@ -53,3 +161,4 @@ export declare function admitCallInitialTell(input: Readonly<{
|
|
|
53
161
|
now?: () => string;
|
|
54
162
|
wake(tell: TellFact): Promise<TellResult>;
|
|
55
163
|
}>): Promise<CallInitialTellAdmission>;
|
|
164
|
+
export {};
|
|
@@ -1,7 +1,37 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { bornStatus, defaultWaitComplete, readWaitComplete, waitForObservation } from "./akuma-observe.js";
|
|
2
3
|
import { recordTell } from "./heart/index.js";
|
|
3
4
|
import { pathsForAkuId } from "./identity.js";
|
|
5
|
+
import { tellRowSchema } from "./projection.js";
|
|
4
6
|
import { BIRTH_TIMEOUT_MS } from "./publication.js";
|
|
7
|
+
const nonblankTextSchema = z.string().refine((value) => value.trim() !== "");
|
|
8
|
+
const runLogReferenceSchema = z
|
|
9
|
+
.object({ path: z.string(), from: z.number().int().nonnegative(), to: z.number().int().nonnegative() })
|
|
10
|
+
.strict();
|
|
11
|
+
const failedTellWakeSchema = z
|
|
12
|
+
.object({
|
|
13
|
+
kind: z.literal("failed"),
|
|
14
|
+
diagnostic: z.string(),
|
|
15
|
+
child: z
|
|
16
|
+
.object({ code: z.number().int().nullable(), signal: z.string().nullable(), log: runLogReferenceSchema })
|
|
17
|
+
.strict()
|
|
18
|
+
.optional(),
|
|
19
|
+
})
|
|
20
|
+
.strict()
|
|
21
|
+
.transform(({ child, ...wake }) => (child === undefined ? wake : { ...wake, child }));
|
|
22
|
+
const tellWakeSchema = z.union([
|
|
23
|
+
z.object({ kind: z.literal("told") }).strict(),
|
|
24
|
+
z.object({ kind: z.literal("held") }).strict(),
|
|
25
|
+
z.object({ kind: z.literal("pursuing"), bodySequence: z.number().int().nonnegative() }).strict(),
|
|
26
|
+
failedTellWakeSchema,
|
|
27
|
+
]);
|
|
28
|
+
export const tellResultSchema = z
|
|
29
|
+
.object({
|
|
30
|
+
admission: z.object({ fact: z.literal("recorded"), tellId: nonblankTextSchema }).strict(),
|
|
31
|
+
row: tellRowSchema,
|
|
32
|
+
wake: tellWakeSchema,
|
|
33
|
+
})
|
|
34
|
+
.strict();
|
|
5
35
|
export async function admitCallInitialTell(input) {
|
|
6
36
|
const paths = pathsForAkuId(input.world, input.id);
|
|
7
37
|
const birth = await waitForObservation({
|