@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,3 +1,4 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
1
2
|
import { randomBytes } from "node:crypto";
|
|
2
3
|
import { mkdir, writeFile } from "node:fs/promises";
|
|
3
4
|
import { dirname, join } from "node:path";
|
|
@@ -11,6 +12,16 @@ export function parsePublicHistoryId(value) {
|
|
|
11
12
|
const sequence = Number(match[1]);
|
|
12
13
|
return Number.isSafeInteger(sequence) ? sequence : null;
|
|
13
14
|
}
|
|
15
|
+
const pathText = z.string().refine((value) => value.trim() !== "");
|
|
16
|
+
export const akumaPathsSchema = z
|
|
17
|
+
.object({
|
|
18
|
+
directory: pathText,
|
|
19
|
+
heart: pathText,
|
|
20
|
+
leash: pathText,
|
|
21
|
+
log: pathText,
|
|
22
|
+
requests: pathText,
|
|
23
|
+
})
|
|
24
|
+
.strict();
|
|
14
25
|
export function archetypeName(value) {
|
|
15
26
|
return validateAkumaName(value);
|
|
16
27
|
}
|
|
@@ -36,6 +47,18 @@ export function parseAkuId(value) {
|
|
|
36
47
|
const suffix = suffixSegment(segments[1]);
|
|
37
48
|
return { id: value, archetype, suffix };
|
|
38
49
|
}
|
|
50
|
+
export const akumaIdSchema = z.string().transform((value, context) => {
|
|
51
|
+
try {
|
|
52
|
+
const id = parseAkuId(value).id;
|
|
53
|
+
if (id !== value)
|
|
54
|
+
throw new Error("not canonical");
|
|
55
|
+
return id;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
context.addIssue({ code: "custom", message: "expected canonical AkuId" });
|
|
59
|
+
return z.NEVER;
|
|
60
|
+
}
|
|
61
|
+
});
|
|
39
62
|
export function akumaRunRoot(worldRoot) {
|
|
40
63
|
return join(worldRoot, ".keiyaku", "akuma", "run");
|
|
41
64
|
}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
+
export type { WorldRoot } from "../world.js";
|
|
2
|
+
export { AkumaBusyError, AkumaDecodeError, AkumaNotBornError, AkumaProviderError } from "./akuma-errors.js";
|
|
1
3
|
export { Akuma } from "./akuma-instance.js";
|
|
2
|
-
export type { AkumaBirthInput, AkumaHistoryOptions, AkumaIdleOptions, AkumaIdleResult, AkumaSignalOptions, AkumaTellOptions, } from "./akuma-instance.js";
|
|
3
|
-
export type { InterruptReceipt
|
|
4
|
-
export { Schema } from "./schema.js";
|
|
5
|
-
export type { JsonSchema, JsonSchemaDocument, StandardSchemaV1, SchemaLike } from "./schema.js";
|
|
6
|
-
export type { AkuId } from "./identity.js";
|
|
4
|
+
export type { AkumaAskOptions, AkumaBirthInput, AkumaHistoryOptions, AkumaIdleOptions, AkumaIdleResult, AkumaSignalOptions, AkumaTellOptions, } from "./akuma-instance.js";
|
|
5
|
+
export type { InterruptReceipt } from "./akuma-owner.js";
|
|
7
6
|
export type { AkumaStatus } from "./akuma.js";
|
|
8
|
-
export type { ActivityHistory, ActivityRow } from "./projection.js";
|
|
9
7
|
export { ALLOWED_ACTIONS } from "./allowed.js";
|
|
10
8
|
export type { AllowedAction, AllowedActions } from "./allowed.js";
|
|
11
|
-
export type {
|
|
12
|
-
export {
|
|
9
|
+
export type { KillEvidence } from "./heart/index.js";
|
|
10
|
+
export type { AkuId } from "./identity.js";
|
|
11
|
+
export type { ActivityHistory, ActivityRow } from "./projection.js";
|
|
12
|
+
export { Schema } from "./schema.js";
|
|
13
|
+
export type { JsonSchema, JsonSchemaDocument, SchemaLike, StandardSchemaV1 } from "./schema.js";
|
|
14
|
+
export type { AkumaAskObservation, AkumaAskResult, AkumaTellResult } from "./selection-observation.js";
|
package/build/src/akuma/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
+
export { AkumaBusyError, AkumaDecodeError, AkumaNotBornError, AkumaProviderError } from "./akuma-errors.js";
|
|
1
2
|
export { Akuma } from "./akuma-instance.js";
|
|
2
|
-
export { Schema } from "./schema.js";
|
|
3
3
|
export { ALLOWED_ACTIONS } from "./allowed.js";
|
|
4
|
-
export {
|
|
4
|
+
export { Schema } from "./schema.js";
|
package/build/src/akuma/nuke.js
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
import { lstat, readdir, rm, rmdir } from "node:fs/promises";
|
|
2
2
|
import { dirname, join } from "node:path";
|
|
3
3
|
import { nukeAliases } from "../alias/index.js";
|
|
4
|
-
import {
|
|
4
|
+
import { settleAkumaKill } from "./akuma-owner.js";
|
|
5
5
|
import { acquireLeash } from "./control.js";
|
|
6
|
-
import {
|
|
6
|
+
import { classifyHeartSchema, readHeart } from "./heart/index.js";
|
|
7
7
|
import { akuIdFromDirectoryName, akumaPaths, akumaRunRoot } from "./identity.js";
|
|
8
|
+
export class AkumaResetStopError extends Error {
|
|
9
|
+
constructor(message) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.name = "AkumaResetStopError";
|
|
12
|
+
}
|
|
13
|
+
}
|
|
8
14
|
async function hasAkumaCustody(paths) {
|
|
9
15
|
try {
|
|
10
16
|
const value = await lstat(paths.heart);
|
|
@@ -20,13 +26,13 @@ async function stopRunningAkuma(entry) {
|
|
|
20
26
|
const settled = await settleAkumaKill(entry.paths, undefined, true);
|
|
21
27
|
if (settled.leash !== undefined)
|
|
22
28
|
return settled.leash;
|
|
23
|
-
throw new
|
|
29
|
+
throw new AkumaResetStopError(`Akuma ${entry.id} could not be stopped: ${settled.evidence}`);
|
|
24
30
|
}
|
|
25
31
|
async function removeKnownRegularFile(path) {
|
|
26
32
|
try {
|
|
27
33
|
const value = await lstat(path);
|
|
28
34
|
if (!value.isFile() || value.isSymbolicLink())
|
|
29
|
-
throw new
|
|
35
|
+
throw new AkumaResetStopError(`Akuma custody is not a regular file: ${path}`);
|
|
30
36
|
await rm(path, { force: true });
|
|
31
37
|
}
|
|
32
38
|
catch (error) {
|
|
@@ -68,7 +74,7 @@ async function removeKnownRequestChannel(path) {
|
|
|
68
74
|
try {
|
|
69
75
|
const value = await lstat(path);
|
|
70
76
|
if (!value.isDirectory() || value.isSymbolicLink())
|
|
71
|
-
throw new
|
|
77
|
+
throw new AkumaResetStopError(`Akuma custody is not a directory: ${path}`);
|
|
72
78
|
}
|
|
73
79
|
catch (error) {
|
|
74
80
|
if (error.code === "ENOENT")
|
|
@@ -174,14 +180,14 @@ export async function stopAkuma(world) {
|
|
|
174
180
|
? await stopRunningAkuma(entry)
|
|
175
181
|
: await acquireLeash(entry.paths);
|
|
176
182
|
if (leash === null)
|
|
177
|
-
throw new
|
|
183
|
+
throw new AkumaResetStopError(`Akuma ${entry.id} could not be verified stopped`);
|
|
178
184
|
try {
|
|
179
185
|
const after = await readHeart(entry.paths);
|
|
180
186
|
if (after.soul === null || after.latestBody?.end !== undefined) {
|
|
181
187
|
held.push(leash);
|
|
182
188
|
continue;
|
|
183
189
|
}
|
|
184
|
-
throw new
|
|
190
|
+
throw new AkumaResetStopError(`Akuma ${entry.id} stopped without a durable end`);
|
|
185
191
|
}
|
|
186
192
|
catch (error) {
|
|
187
193
|
leash.release();
|
|
@@ -135,7 +135,6 @@ declare const completedToolRowSchema: z.ZodObject<{
|
|
|
135
135
|
sequence: z.ZodNumber;
|
|
136
136
|
turnSequence: z.ZodNumber;
|
|
137
137
|
at: z.ZodString;
|
|
138
|
-
completedAt: z.ZodOptional<z.ZodString>;
|
|
139
138
|
durationMs: z.ZodOptional<z.ZodNumber>;
|
|
140
139
|
name: z.ZodString;
|
|
141
140
|
call: z.ZodUnion<readonly [z.ZodObject<{
|
|
@@ -352,7 +351,6 @@ declare const openSnapshotRowSchema: z.ZodUnion<readonly [z.ZodUnion<readonly [z
|
|
|
352
351
|
sequence: z.ZodNumber;
|
|
353
352
|
turnSequence: z.ZodNumber;
|
|
354
353
|
at: z.ZodString;
|
|
355
|
-
completedAt: z.ZodOptional<z.ZodString>;
|
|
356
354
|
durationMs: z.ZodOptional<z.ZodNumber>;
|
|
357
355
|
name: z.ZodString;
|
|
358
356
|
call: z.ZodUnion<readonly [z.ZodObject<{
|
|
@@ -470,7 +468,6 @@ declare const idleSnapshotRowSchema: z.ZodUnion<readonly [z.ZodUnion<readonly [z
|
|
|
470
468
|
sequence: z.ZodNumber;
|
|
471
469
|
turnSequence: z.ZodNumber;
|
|
472
470
|
at: z.ZodString;
|
|
473
|
-
completedAt: z.ZodOptional<z.ZodString>;
|
|
474
471
|
durationMs: z.ZodOptional<z.ZodNumber>;
|
|
475
472
|
name: z.ZodString;
|
|
476
473
|
call: z.ZodUnion<readonly [z.ZodObject<{
|
|
@@ -709,7 +706,6 @@ export declare const activitySnapshotSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
709
706
|
sequence: z.ZodNumber;
|
|
710
707
|
turnSequence: z.ZodNumber;
|
|
711
708
|
at: z.ZodString;
|
|
712
|
-
completedAt: z.ZodOptional<z.ZodString>;
|
|
713
709
|
durationMs: z.ZodOptional<z.ZodNumber>;
|
|
714
710
|
name: z.ZodString;
|
|
715
711
|
call: z.ZodUnion<readonly [z.ZodObject<{
|
|
@@ -868,7 +864,6 @@ export declare const activitySnapshotSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
868
864
|
sequence: z.ZodNumber;
|
|
869
865
|
turnSequence: z.ZodNumber;
|
|
870
866
|
at: z.ZodString;
|
|
871
|
-
completedAt: z.ZodOptional<z.ZodString>;
|
|
872
867
|
durationMs: z.ZodOptional<z.ZodNumber>;
|
|
873
868
|
name: z.ZodString;
|
|
874
869
|
call: z.ZodUnion<readonly [z.ZodObject<{
|
|
@@ -1,44 +1,25 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { toolCallSchema, toolResultSchema, toolInputSchema, fileChangeSchema, diffstatSchema, } from "./heart/activity-schema.js";
|
|
2
2
|
import { projectTell } from "./heart/facts.js";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
const nonblankTextSchema = z.string().refine((value) => value.trim() !== "");
|
|
5
5
|
const countSchema = z.number().int().nonnegative();
|
|
6
6
|
const sequenceSchema = z.number().int().positive();
|
|
7
7
|
const timestampSchema = z.string().refine((value) => Number.isFinite(Date.parse(value)), "expected timestamp");
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
z.object({ kind: z.literal("run"), command: z.string() }).strict(),
|
|
19
|
-
z
|
|
20
|
-
.object({
|
|
21
|
-
kind: z.literal("read"),
|
|
22
|
-
path: z.string(),
|
|
23
|
-
offset: countSchema.optional(),
|
|
24
|
-
limit: countSchema.optional(),
|
|
25
|
-
})
|
|
26
|
-
.strict(),
|
|
27
|
-
z
|
|
28
|
-
.object({
|
|
29
|
-
kind: z.literal("search"),
|
|
30
|
-
query: z.string(),
|
|
31
|
-
scope: z.enum(["content", "files", "web"]).optional(),
|
|
32
|
-
path: z.string().optional(),
|
|
33
|
-
glob: z.string().optional(),
|
|
8
|
+
const strictDiffstatSchema = diffstatSchema.strict();
|
|
9
|
+
const [runCall, readCall, searchCall, changeCall, otherCall] = toolCallSchema.options;
|
|
10
|
+
// Public observation historically admits zero-based read positions, unlike native narration.
|
|
11
|
+
const publicToolCallSchema = z.union([
|
|
12
|
+
runCall.strict(),
|
|
13
|
+
readCall.extend({ offset: countSchema.optional(), limit: countSchema.optional() }).strict(),
|
|
14
|
+
searchCall.strict(),
|
|
15
|
+
changeCall
|
|
16
|
+
.extend({
|
|
17
|
+
changes: z.array(fileChangeSchema.extend({ diffstat: strictDiffstatSchema.optional() }).strict()).readonly(),
|
|
34
18
|
})
|
|
35
19
|
.strict(),
|
|
36
|
-
|
|
37
|
-
z.object({ kind: z.literal("other"), display: z.string(), input: toolInputSchema.optional() }).strict(),
|
|
20
|
+
otherCall.extend({ input: toolInputSchema.strict().optional() }).strict(),
|
|
38
21
|
]);
|
|
39
|
-
const
|
|
40
|
-
.object({ status: z.enum(["ok", "error"]), message: z.string().optional(), exitCode: z.number().int().optional() })
|
|
41
|
-
.strict();
|
|
22
|
+
const publicToolResultSchema = toolResultSchema.strict();
|
|
42
23
|
const tellDeliverySchema = z
|
|
43
24
|
.object({
|
|
44
25
|
deliveredAt: timestampSchema,
|
|
@@ -107,7 +88,7 @@ const activeToolRowSchema = z
|
|
|
107
88
|
turnSequence: countSchema,
|
|
108
89
|
at: timestampSchema,
|
|
109
90
|
name: nonblankTextSchema,
|
|
110
|
-
call:
|
|
91
|
+
call: publicToolCallSchema,
|
|
111
92
|
state: z.literal("active"),
|
|
112
93
|
truncated: z.literal(true).optional(),
|
|
113
94
|
})
|
|
@@ -118,11 +99,10 @@ const completedToolRowSchema = z
|
|
|
118
99
|
sequence: countSchema,
|
|
119
100
|
turnSequence: countSchema,
|
|
120
101
|
at: timestampSchema,
|
|
121
|
-
completedAt: timestampSchema.optional(),
|
|
122
102
|
durationMs: z.number().finite().nonnegative().optional(),
|
|
123
103
|
name: nonblankTextSchema,
|
|
124
|
-
call:
|
|
125
|
-
state:
|
|
104
|
+
call: publicToolCallSchema,
|
|
105
|
+
state: publicToolResultSchema,
|
|
126
106
|
truncated: z.literal(true).optional(),
|
|
127
107
|
})
|
|
128
108
|
.strict();
|
|
@@ -133,7 +113,7 @@ const unsettledToolRowSchema = z
|
|
|
133
113
|
turnSequence: countSchema,
|
|
134
114
|
at: timestampSchema,
|
|
135
115
|
name: nonblankTextSchema,
|
|
136
|
-
call:
|
|
116
|
+
call: publicToolCallSchema,
|
|
137
117
|
state: z.literal("unsettled"),
|
|
138
118
|
truncated: z.literal(true).optional(),
|
|
139
119
|
})
|
|
@@ -157,7 +137,7 @@ const reportedFileChangeSchema = z
|
|
|
157
137
|
at: timestampSchema,
|
|
158
138
|
op: z.enum(["add", "update", "delete", "unspecified"]),
|
|
159
139
|
path: z.string(),
|
|
160
|
-
diffstat:
|
|
140
|
+
diffstat: strictDiffstatSchema.optional(),
|
|
161
141
|
})
|
|
162
142
|
.strict();
|
|
163
143
|
const reportedChangeFields = {
|
|
@@ -283,10 +263,9 @@ function projectToolEvent(rows, running, fact, event, phase) {
|
|
|
283
263
|
const durationMs = duration(started.at, fact.at);
|
|
284
264
|
rows[index] = {
|
|
285
265
|
kind: "tool",
|
|
286
|
-
sequence:
|
|
266
|
+
sequence: fact.sequence,
|
|
287
267
|
turnSequence: fact.turnSequence,
|
|
288
|
-
at:
|
|
289
|
-
completedAt: fact.at,
|
|
268
|
+
at: fact.at,
|
|
290
269
|
...(durationMs === undefined ? {} : { durationMs }),
|
|
291
270
|
name: event.name,
|
|
292
271
|
call: event.call,
|
|
@@ -296,7 +275,7 @@ function projectToolEvent(rows, running, fact, event, phase) {
|
|
|
296
275
|
running.delete(key);
|
|
297
276
|
}
|
|
298
277
|
function projectActivityEvent(state, fact) {
|
|
299
|
-
const event =
|
|
278
|
+
const event = fact.event;
|
|
300
279
|
const narration = narrationRow(fact, event);
|
|
301
280
|
if (narration !== null) {
|
|
302
281
|
const turn = state.turnsBySequence.get(fact.turnSequence);
|
|
@@ -328,7 +307,7 @@ function foldOutcomeVoice(rows, outcome) {
|
|
|
328
307
|
: rows;
|
|
329
308
|
}
|
|
330
309
|
function finishTurn(turn) {
|
|
331
|
-
const rows = foldOutcomeVoice(turn.rows, turn.outcome);
|
|
310
|
+
const rows = [...foldOutcomeVoice(turn.rows, turn.outcome)].sort((left, right) => left.sequence - right.sequence);
|
|
332
311
|
if (turn.phase === "closed" && turn.outcome !== undefined) {
|
|
333
312
|
return { kind: "closed", turn: turn.turn, rows: rows.map(demoteActive), outcome: turn.outcome };
|
|
334
313
|
}
|
|
@@ -1,17 +1,62 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
network?: "disabled" | "enabled";
|
|
6
|
-
systemPrompt?: string;
|
|
7
|
-
systemPromptMode?: SystemPromptMode;
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
declare const systemPromptModeSchema: z.ZodEnum<{
|
|
3
|
+
append: "append";
|
|
4
|
+
replace: "replace";
|
|
8
5
|
}>;
|
|
9
|
-
export type
|
|
6
|
+
export type SystemPromptMode = z.infer<typeof systemPromptModeSchema>;
|
|
7
|
+
export declare const providerOptionsSchema: z.ZodPipe<z.ZodObject<{
|
|
8
|
+
model: z.ZodOptional<z.ZodString>;
|
|
9
|
+
effort: z.ZodOptional<z.ZodString>;
|
|
10
|
+
network: z.ZodOptional<z.ZodEnum<{
|
|
11
|
+
disabled: "disabled";
|
|
12
|
+
enabled: "enabled";
|
|
13
|
+
}>>;
|
|
14
|
+
systemPrompt: z.ZodOptional<z.ZodString>;
|
|
15
|
+
systemPromptMode: z.ZodOptional<z.ZodEnum<{
|
|
16
|
+
append: "append";
|
|
17
|
+
replace: "replace";
|
|
18
|
+
}>>;
|
|
19
|
+
}, z.core.$strip>, z.ZodTransform<Readonly<{
|
|
20
|
+
systemPromptMode?: "append" | "replace";
|
|
21
|
+
systemPrompt?: string;
|
|
22
|
+
network?: "disabled" | "enabled";
|
|
23
|
+
effort?: string;
|
|
24
|
+
model?: string;
|
|
25
|
+
}>, {
|
|
26
|
+
model?: string | undefined;
|
|
27
|
+
effort?: string | undefined;
|
|
28
|
+
network?: "disabled" | "enabled" | undefined;
|
|
29
|
+
systemPrompt?: string | undefined;
|
|
30
|
+
systemPromptMode?: "append" | "replace" | undefined;
|
|
31
|
+
}>>;
|
|
32
|
+
export type ProviderOptions = z.infer<typeof providerOptionsSchema>;
|
|
33
|
+
export declare const providerRecipeSchema: z.ZodPipe<z.ZodObject<{
|
|
34
|
+
name: z.ZodString;
|
|
35
|
+
kind: z.ZodEnum<{
|
|
36
|
+
acp: "acp";
|
|
37
|
+
"claude-agent-sdk": "claude-agent-sdk";
|
|
38
|
+
"codex-app-server": "codex-app-server";
|
|
39
|
+
"grok-build": "grok-build";
|
|
40
|
+
"opencode-sdk": "opencode-sdk";
|
|
41
|
+
pi: "pi";
|
|
42
|
+
}>;
|
|
43
|
+
executable: z.ZodOptional<z.ZodString>;
|
|
44
|
+
config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
45
|
+
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
46
|
+
}, z.core.$strip>, z.ZodTransform<Readonly<{
|
|
47
|
+
env?: Readonly<Record<string, string>>;
|
|
48
|
+
config?: Readonly<Record<string, unknown>>;
|
|
49
|
+
executable?: string;
|
|
10
50
|
name: string;
|
|
11
51
|
kind: "acp" | "claude-agent-sdk" | "codex-app-server" | "grok-build" | "opencode-sdk" | "pi";
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
52
|
+
}>, {
|
|
53
|
+
name: string;
|
|
54
|
+
kind: "acp" | "claude-agent-sdk" | "codex-app-server" | "grok-build" | "opencode-sdk" | "pi";
|
|
55
|
+
executable?: string | undefined;
|
|
56
|
+
config?: Record<string, unknown> | undefined;
|
|
57
|
+
env?: Record<string, string> | undefined;
|
|
58
|
+
}>>;
|
|
59
|
+
export type ProviderExecution = z.infer<typeof providerRecipeSchema>;
|
|
16
60
|
export declare function decodeProviderOptions(value: unknown): ProviderOptions;
|
|
17
|
-
export declare function decodeProviderRecipe(
|
|
61
|
+
export declare function decodeProviderRecipe(value: unknown): ProviderExecution;
|
|
62
|
+
export {};
|
|
@@ -1,88 +1,70 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const modelText = z
|
|
3
|
+
.string({ error: "provider option model must be a nonblank string" })
|
|
4
|
+
.refine((value) => value.trim() !== "", "provider option model must be a nonblank string");
|
|
5
|
+
const effortText = z
|
|
6
|
+
.string({ error: "provider option effort must be a nonblank string" })
|
|
7
|
+
.refine((value) => value.trim() !== "", "provider option effort must be a nonblank string");
|
|
8
|
+
const systemPromptModeSchema = z.enum(["append", "replace"], {
|
|
9
|
+
error: "provider option systemPromptMode must be append, replace",
|
|
10
|
+
});
|
|
11
|
+
export const providerOptionsSchema = z
|
|
12
|
+
.object({
|
|
13
|
+
model: modelText.optional(),
|
|
14
|
+
effort: effortText.optional(),
|
|
15
|
+
network: z.enum(["disabled", "enabled"], { error: "provider option network must be disabled, enabled" }).optional(),
|
|
16
|
+
systemPrompt: z.string({ error: "provider option systemPrompt must be a string" }).optional(),
|
|
17
|
+
systemPromptMode: systemPromptModeSchema.optional(),
|
|
18
|
+
})
|
|
19
|
+
.refine((value) => value.systemPromptMode === undefined || value.systemPrompt !== undefined, "provider option systemPromptMode requires systemPrompt")
|
|
20
|
+
.transform(({ model, effort, network, systemPrompt, systemPromptMode }) => Object.freeze({
|
|
21
|
+
...(model === undefined ? {} : { model }),
|
|
22
|
+
...(effort === undefined ? {} : { effort }),
|
|
23
|
+
...(network === undefined ? {} : { network }),
|
|
24
|
+
...(systemPrompt === undefined ? {} : { systemPrompt }),
|
|
25
|
+
...(systemPromptMode === undefined ? {} : { systemPromptMode }),
|
|
26
|
+
}));
|
|
27
|
+
// Recipe configuration deliberately stays adapter-owned opaque data, including historical keys.
|
|
6
28
|
function snapshot(value) {
|
|
7
29
|
if (Array.isArray(value))
|
|
8
30
|
return Object.freeze(value.map(snapshot));
|
|
9
|
-
|
|
10
|
-
if (object === null)
|
|
31
|
+
if (value === null || typeof value !== "object")
|
|
11
32
|
return value;
|
|
12
|
-
return Object.freeze(Object.fromEntries(Object.entries(
|
|
13
|
-
}
|
|
14
|
-
function optionText(options, field, blank) {
|
|
15
|
-
const selected = options[field];
|
|
16
|
-
if (selected === undefined)
|
|
17
|
-
return undefined;
|
|
18
|
-
if (typeof selected !== "string" || (blank === "refuse" && selected.trim().length === 0)) {
|
|
19
|
-
throw new TypeError(`provider option ${field} must be ${blank === "allow" ? "a string" : "a nonblank string"}`);
|
|
20
|
-
}
|
|
21
|
-
return selected;
|
|
33
|
+
return Object.freeze(Object.fromEntries(Object.entries(value).map(([key, item]) => [key, snapshot(item)])));
|
|
22
34
|
}
|
|
35
|
+
export const providerRecipeSchema = z
|
|
36
|
+
.object({
|
|
37
|
+
name: z.string().refine((value) => value.trim() !== "", "provider execution name must be a nonblank string"),
|
|
38
|
+
kind: z.enum(["acp", "claude-agent-sdk", "codex-app-server", "grok-build", "opencode-sdk", "pi"], {
|
|
39
|
+
error: "provider execution has unknown kind",
|
|
40
|
+
}),
|
|
41
|
+
executable: z
|
|
42
|
+
.string()
|
|
43
|
+
.refine((value) => value.trim() !== "", "provider execution executable must be a nonblank string")
|
|
44
|
+
.optional(),
|
|
45
|
+
config: z.record(z.string(), z.unknown()).optional(),
|
|
46
|
+
env: z.record(z.string(), z.string()).optional(),
|
|
47
|
+
})
|
|
48
|
+
.transform(({ name, kind, executable, config, env }) => Object.freeze({
|
|
49
|
+
name,
|
|
50
|
+
kind,
|
|
51
|
+
...(executable === undefined ? {} : { executable }),
|
|
52
|
+
...(config === undefined ? {} : { config: snapshot(config) }),
|
|
53
|
+
...(env === undefined ? {} : { env: Object.freeze(env) }),
|
|
54
|
+
}));
|
|
23
55
|
export function decodeProviderOptions(value) {
|
|
24
|
-
const
|
|
25
|
-
if (
|
|
26
|
-
throw new TypeError("provider options must be an object"
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
if (network !== undefined && network !== "disabled" && network !== "enabled") {
|
|
31
|
-
throw new TypeError("provider option network must be disabled, enabled");
|
|
32
|
-
}
|
|
33
|
-
const systemPrompt = optionText(options, "systemPrompt", "allow");
|
|
34
|
-
const systemPromptMode = options.systemPromptMode;
|
|
35
|
-
if (systemPromptMode !== undefined) {
|
|
36
|
-
if (systemPromptMode !== "append" && systemPromptMode !== "replace") {
|
|
37
|
-
throw new TypeError("provider option systemPromptMode must be append, replace");
|
|
38
|
-
}
|
|
39
|
-
if (systemPrompt === undefined) {
|
|
40
|
-
throw new TypeError("provider option systemPromptMode requires systemPrompt");
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
return Object.freeze({
|
|
44
|
-
...(model === undefined ? {} : { model }),
|
|
45
|
-
...(effort === undefined ? {} : { effort }),
|
|
46
|
-
...(network === undefined ? {} : { network }),
|
|
47
|
-
...(systemPrompt === undefined ? {} : { systemPrompt }),
|
|
48
|
-
...(systemPromptMode === undefined ? {} : { systemPromptMode }),
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
function providerKind(value) {
|
|
52
|
-
return (value === "acp" ||
|
|
53
|
-
value === "claude-agent-sdk" ||
|
|
54
|
-
value === "codex-app-server" ||
|
|
55
|
-
value === "grok-build" ||
|
|
56
|
-
value === "opencode-sdk" ||
|
|
57
|
-
value === "pi");
|
|
56
|
+
const parsed = providerOptionsSchema.safeParse(value);
|
|
57
|
+
if (!parsed.success)
|
|
58
|
+
throw new TypeError(parsed.error.issues[0]?.message ?? "provider options must be an object", {
|
|
59
|
+
cause: parsed.error,
|
|
60
|
+
});
|
|
61
|
+
return parsed.data;
|
|
58
62
|
}
|
|
59
|
-
export function decodeProviderRecipe(
|
|
60
|
-
const
|
|
61
|
-
if (
|
|
62
|
-
throw new TypeError("provider execution must be an object"
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
if (!providerKind(value.kind))
|
|
67
|
-
throw new TypeError("provider execution has unknown kind");
|
|
68
|
-
if (value.executable !== undefined &&
|
|
69
|
-
(typeof value.executable !== "string" || value.executable.trim().length === 0)) {
|
|
70
|
-
throw new TypeError("provider execution executable must be a nonblank string");
|
|
71
|
-
}
|
|
72
|
-
const config = value.config === undefined ? undefined : record(value.config);
|
|
73
|
-
if (config === null)
|
|
74
|
-
throw new TypeError("provider execution config must be an object");
|
|
75
|
-
const env = value.env === undefined ? undefined : record(value.env);
|
|
76
|
-
if (env === null)
|
|
77
|
-
throw new TypeError("provider execution env must be an object");
|
|
78
|
-
if (env !== undefined && Object.values(env).some((item) => typeof item !== "string")) {
|
|
79
|
-
throw new TypeError("provider execution env must contain only string values");
|
|
80
|
-
}
|
|
81
|
-
return Object.freeze({
|
|
82
|
-
name: value.name,
|
|
83
|
-
kind: value.kind,
|
|
84
|
-
...(value.executable === undefined ? {} : { executable: value.executable }),
|
|
85
|
-
...(config === undefined ? {} : { config: snapshot(config) }),
|
|
86
|
-
...(env === undefined ? {} : { env: Object.freeze({ ...env }) }),
|
|
87
|
-
});
|
|
63
|
+
export function decodeProviderRecipe(value) {
|
|
64
|
+
const parsed = providerRecipeSchema.safeParse(value);
|
|
65
|
+
if (!parsed.success)
|
|
66
|
+
throw new TypeError(parsed.error.issues[0]?.message ?? "provider execution must be an object", {
|
|
67
|
+
cause: parsed.error,
|
|
68
|
+
});
|
|
69
|
+
return parsed.data;
|
|
88
70
|
}
|
|
@@ -1,85 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type ResumeCoordinate } from "./coordinate.js";
|
|
2
2
|
import type { ProviderOptions } from "./provider-recipe.js";
|
|
3
3
|
export type { ResumeCoordinate } from "./coordinate.js";
|
|
4
|
+
export { decodeResumeCoordinate, encodeResumeCoordinate } from "./coordinate.js";
|
|
4
5
|
export { AKUMA_REQUESTS_ENV } from "./providers/execution-environment.js";
|
|
5
6
|
export declare const AGENT_EVENT_TEXT_LIMIT = 16384;
|
|
6
7
|
export declare const AGENT_THOUGHT_TEXT_LIMIT = 4000;
|
|
7
8
|
export declare const AGENT_EVENT_QUEUE_LIMIT = 256;
|
|
8
|
-
export
|
|
9
|
-
export type ToolInput
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}>;
|
|
13
|
-
export type ToolCall = Readonly<{
|
|
14
|
-
kind: "run";
|
|
15
|
-
command: string;
|
|
16
|
-
}> | Readonly<{
|
|
17
|
-
kind: "read";
|
|
18
|
-
path: string;
|
|
19
|
-
offset?: number;
|
|
20
|
-
limit?: number;
|
|
21
|
-
}> | Readonly<{
|
|
22
|
-
kind: "search";
|
|
23
|
-
query: string;
|
|
24
|
-
scope?: SearchScope;
|
|
25
|
-
path?: string;
|
|
26
|
-
glob?: string;
|
|
27
|
-
}> | Readonly<{
|
|
28
|
-
kind: "fileChange";
|
|
29
|
-
changes: readonly Readonly<{
|
|
30
|
-
op: "add" | "update" | "delete" | "unspecified";
|
|
31
|
-
path: string;
|
|
32
|
-
diffstat?: Readonly<{
|
|
33
|
-
added: number;
|
|
34
|
-
removed: number;
|
|
35
|
-
}>;
|
|
36
|
-
}>[];
|
|
37
|
-
}> | Readonly<{
|
|
38
|
-
kind: "other";
|
|
39
|
-
display: string;
|
|
40
|
-
input?: ToolInput;
|
|
41
|
-
}>;
|
|
42
|
-
export type ToolResult = Readonly<{
|
|
43
|
-
status: "ok" | "error";
|
|
44
|
-
message?: string;
|
|
45
|
-
exitCode?: number;
|
|
46
|
-
}>;
|
|
47
|
-
export type ToolEvent = Readonly<{
|
|
48
|
-
type: "tool";
|
|
49
|
-
id: string;
|
|
50
|
-
name: string;
|
|
51
|
-
call: ToolCall;
|
|
52
|
-
truncated?: true;
|
|
53
|
-
}> & (Readonly<{
|
|
54
|
-
phase: "started";
|
|
55
|
-
result?: never;
|
|
56
|
-
}> | Readonly<{
|
|
57
|
-
phase: "completed";
|
|
58
|
-
result: ToolResult;
|
|
59
|
-
}>);
|
|
60
|
-
export type AgentEvent = Readonly<{
|
|
61
|
-
type: "session";
|
|
62
|
-
coordinate: ResumeCoordinate;
|
|
63
|
-
}> | Readonly<{
|
|
64
|
-
type: "assistant";
|
|
65
|
-
text: string;
|
|
66
|
-
truncated?: true;
|
|
67
|
-
}> | Readonly<{
|
|
68
|
-
type: "thought";
|
|
69
|
-
text: string;
|
|
70
|
-
truncated?: true;
|
|
71
|
-
}> | ToolEvent | Readonly<{
|
|
72
|
-
type: "note";
|
|
73
|
-
text: string;
|
|
74
|
-
truncated?: true;
|
|
75
|
-
}> | Readonly<{
|
|
76
|
-
type: "unknown";
|
|
77
|
-
kind: string;
|
|
78
|
-
truncated?: true;
|
|
79
|
-
}>;
|
|
80
|
-
export { decodeResumeCoordinate, encodeResumeCoordinate };
|
|
81
|
-
export declare function decodeAgentEvent(value: unknown): AgentEvent;
|
|
82
|
-
export declare function encodeAgentEvent(event: AgentEvent): unknown;
|
|
9
|
+
export { agentEventSchema, decodeAgentEvent } from "./heart/activity-schema.js";
|
|
10
|
+
export type { AgentEvent, SearchScope, ToolCall, ToolEvent, ToolInput, ToolResult } from "./heart/activity-schema.js";
|
|
11
|
+
import type { AgentEvent, ToolCall, ToolInput } from "./heart/activity-schema.js";
|
|
12
|
+
export declare function encodeAgentEvent(event: AgentEvent): AgentEvent;
|
|
83
13
|
/**
|
|
84
14
|
* Admit only a compact JSON view of structured tool invocation input. This
|
|
85
15
|
* deliberately receives adapter start evidence, never result or delta bodies.
|