@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,17 +1,9 @@
|
|
|
1
|
-
import { type AkumaLife, type KillEvidence, type ResumeCoordinate } from "./heart/index.js";
|
|
2
|
-
export type { KillEvidence };
|
|
3
|
-
import { type AkuId } from "./identity.js";
|
|
4
|
-
import type { Settings } from "../settings.js";
|
|
5
|
-
import type { WorldRoot } from "../world.js";
|
|
6
|
-
import { type AllowedAction } from "./allowed.js";
|
|
7
|
-
import type { ExecutionContext } from "./requests.js";
|
|
8
1
|
import { z } from "zod";
|
|
9
|
-
import type
|
|
10
|
-
import type {
|
|
11
|
-
import {
|
|
12
|
-
import type {
|
|
13
|
-
|
|
14
|
-
export declare const POLL_MS = 100;
|
|
2
|
+
import { type BoundedList } from "../bounded-list.js";
|
|
3
|
+
import type { AkumaAlias } from "../identity/selector.js";
|
|
4
|
+
import type { WorldRoot } from "../world.js";
|
|
5
|
+
import type { AkumaLife } from "./heart/index.js";
|
|
6
|
+
import { type AkuId } from "./identity.js";
|
|
15
7
|
export type AkumaListRow = Readonly<{
|
|
16
8
|
id: AkuId;
|
|
17
9
|
archetype: string;
|
|
@@ -20,8 +12,26 @@ export type AkumaListRow = Readonly<{
|
|
|
20
12
|
lifeAt: string | null;
|
|
21
13
|
lastActivityAt: string | null;
|
|
22
14
|
pending: readonly string[];
|
|
15
|
+
aliases: readonly AkumaAlias[];
|
|
16
|
+
}>;
|
|
17
|
+
export type UnbornAkumaListRow = Readonly<{
|
|
18
|
+
id: AkuId;
|
|
19
|
+
life: "unborn" | "stillborn";
|
|
20
|
+
aliases: readonly AkumaAlias[];
|
|
21
|
+
seal?: Readonly<{
|
|
22
|
+
evidence: string;
|
|
23
|
+
at: string;
|
|
24
|
+
}>;
|
|
25
|
+
}>;
|
|
26
|
+
export type AkumaList = BoundedList<AkumaListRow | UnbornAkumaListRow> & Readonly<{
|
|
27
|
+
observedAt: string;
|
|
28
|
+
searched: readonly string[];
|
|
29
|
+
}>;
|
|
30
|
+
export type AkumaCompleteList = Omit<AkumaList, "hasMore">;
|
|
31
|
+
export type AkumaListInput = Readonly<{
|
|
32
|
+
archetype?: string;
|
|
33
|
+
limit?: number;
|
|
23
34
|
}>;
|
|
24
|
-
export declare const akumaIdSchema: z.ZodPipe<z.ZodString, z.ZodTransform<AkuId, string>>;
|
|
25
35
|
export declare const akumaStatusSchema: z.ZodObject<{
|
|
26
36
|
id: z.ZodPipe<z.ZodString, z.ZodTransform<AkuId, string>>;
|
|
27
37
|
life: z.ZodEnum<{
|
|
@@ -214,7 +224,6 @@ export declare const akumaStatusSchema: z.ZodObject<{
|
|
|
214
224
|
sequence: z.ZodNumber;
|
|
215
225
|
turnSequence: z.ZodNumber;
|
|
216
226
|
at: z.ZodString;
|
|
217
|
-
completedAt: z.ZodOptional<z.ZodString>;
|
|
218
227
|
durationMs: z.ZodOptional<z.ZodNumber>;
|
|
219
228
|
name: z.ZodString;
|
|
220
229
|
call: z.ZodUnion<readonly [z.ZodObject<{
|
|
@@ -373,7 +382,6 @@ export declare const akumaStatusSchema: z.ZodObject<{
|
|
|
373
382
|
sequence: z.ZodNumber;
|
|
374
383
|
turnSequence: z.ZodNumber;
|
|
375
384
|
at: z.ZodString;
|
|
376
|
-
completedAt: z.ZodOptional<z.ZodString>;
|
|
377
385
|
durationMs: z.ZodOptional<z.ZodNumber>;
|
|
378
386
|
name: z.ZodString;
|
|
379
387
|
call: z.ZodUnion<readonly [z.ZodObject<{
|
|
@@ -434,79 +442,17 @@ export declare const akumaStatusSchema: z.ZodObject<{
|
|
|
434
442
|
}, z.core.$strict>;
|
|
435
443
|
export type AkumaStatus = z.infer<typeof akumaStatusSchema>;
|
|
436
444
|
export declare function parseAkumaStatus(value: unknown): AkumaStatus;
|
|
437
|
-
export
|
|
438
|
-
export { withoutReportedChanges } from "./projection.js";
|
|
439
|
-
export type * from "./projection.js";
|
|
440
|
-
export type UnbornAkumaListRow = Readonly<{
|
|
441
|
-
id: AkuId;
|
|
442
|
-
life: "unborn" | "stillborn";
|
|
443
|
-
seal?: Readonly<{
|
|
444
|
-
evidence: string;
|
|
445
|
-
at: string;
|
|
446
|
-
}>;
|
|
447
|
-
}>;
|
|
448
|
-
export type AkumaList = BoundedList<AkumaListRow | UnbornAkumaListRow> & Readonly<{
|
|
449
|
-
observedAt: string;
|
|
450
|
-
searched: readonly string[];
|
|
451
|
-
}>;
|
|
452
|
-
export type AkumaCompleteList = Omit<AkumaList, "hasMore">;
|
|
453
|
-
export type AkumaListInput = Readonly<{
|
|
454
|
-
archetype?: string;
|
|
455
|
-
limit?: number;
|
|
456
|
-
}>;
|
|
457
|
-
export type AkumaCallExecution = Readonly<{
|
|
458
|
-
cwd: string;
|
|
459
|
-
source: "input" | "caller" | "process" | "world";
|
|
460
|
-
}>;
|
|
461
|
-
export type AkumaCallInput = Readonly<{
|
|
462
|
-
archetype: string;
|
|
463
|
-
body: string;
|
|
464
|
-
cwd?: string;
|
|
465
|
-
allowed?: readonly AllowedAction[];
|
|
466
|
-
schema?: Schema<unknown>;
|
|
467
|
-
initiator?: string;
|
|
468
|
-
signal?: AbortSignal;
|
|
469
|
-
}>;
|
|
470
|
-
export type AkumaCallContext = Readonly<{
|
|
471
|
-
initiatorCwd?: string;
|
|
472
|
-
cwdCanonical?: true;
|
|
473
|
-
}>;
|
|
474
|
-
export type { TellResult, TellWake } from "./body.js";
|
|
475
|
-
export type InterruptReceipt = Readonly<{
|
|
476
|
-
kind: "unavailable";
|
|
477
|
-
evidence: "hung" | "untidy" | "unavailable";
|
|
478
|
-
}> | Readonly<{
|
|
479
|
-
kind: "interrupted";
|
|
480
|
-
putDown: "was-idle" | "self-aborted";
|
|
481
|
-
tell: TellResult;
|
|
482
|
-
}>;
|
|
483
|
-
export type ForkReceipt = Readonly<{
|
|
484
|
-
kind: "forked";
|
|
485
|
-
child: AkuId;
|
|
486
|
-
}> | Readonly<{
|
|
487
|
-
kind: "provider-cannot-fork";
|
|
488
|
-
provider: string;
|
|
489
|
-
}> | Readonly<{
|
|
490
|
-
kind: "unknown-history";
|
|
491
|
-
at: string;
|
|
492
|
-
}> | Readonly<{
|
|
493
|
-
kind: "fork-failed";
|
|
494
|
-
diagnostic: string;
|
|
495
|
-
}> | Readonly<{
|
|
496
|
-
kind: "upstream-forked";
|
|
497
|
-
childSession: ResumeCoordinate;
|
|
498
|
-
diagnostic: string;
|
|
499
|
-
}>;
|
|
500
|
-
export { AkumaNotBornError } from "./akuma-errors.js";
|
|
501
|
-
export declare function wait(milliseconds: number): Promise<void>;
|
|
502
|
-
export { bornStatus, fleetListRow, readAkumaBirthCwd, readBudgetedStatus, type BudgetedStatusObservation, } from "./akuma-observe.js";
|
|
503
|
-
export type AkumaConfiguration = Readonly<{
|
|
445
|
+
export declare function listAkumaArchetypes(path: WorldRoot, input?: Readonly<{
|
|
504
446
|
home?: string;
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
447
|
+
}>): Promise<readonly string[]>;
|
|
448
|
+
/**
|
|
449
|
+
* The bounded recent-activity roster: native membership, semantic order and
|
|
450
|
+
* observed extent. World Alias context is attached by the upper composition.
|
|
451
|
+
*/
|
|
452
|
+
export declare function readAkumaRoster(path: WorldRoot, input?: AkumaListInput): Promise<AkumaList>;
|
|
453
|
+
/** The complete native roster for callers whose semantics require a frozen set. */
|
|
454
|
+
export declare function readAkumaCompleteRoster(path: WorldRoot, input?: Readonly<{
|
|
455
|
+
archetype?: string;
|
|
456
|
+
}>): Promise<AkumaCompleteList>;
|
|
510
457
|
/** Internal timeline observation for composition owners. */
|
|
511
458
|
export declare function readAkumaTimeline(path: WorldRoot, id: AkuId): Promise<AkumaStatus["timeline"]>;
|
|
512
|
-
export { AkumaBusyError, AkumaDecodeError, AkumaProviderError } from "./akuma-errors.js";
|
package/build/src/akuma/akuma.js
CHANGED
|
@@ -1,23 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { activitySnapshotSchema } from "./projection.js";
|
|
3
|
-
import { allowedActionsSchema } from "./allowed.js";
|
|
1
|
+
import { readdir, stat } from "node:fs/promises";
|
|
4
2
|
import { z } from "zod";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
throw new Error("not canonical");
|
|
14
|
-
return id;
|
|
15
|
-
}
|
|
16
|
-
catch {
|
|
17
|
-
context.addIssue({ code: "custom", message: "expected canonical AkuId" });
|
|
18
|
-
return z.NEVER;
|
|
19
|
-
}
|
|
20
|
-
});
|
|
3
|
+
import { boundedListLimit, projectBoundedList } from "../bounded-list.js";
|
|
4
|
+
import { rosterListRow } from "./akuma-observe.js";
|
|
5
|
+
import { AkumaOwner } from "./akuma-owner.js";
|
|
6
|
+
import { allowedActionsSchema } from "./allowed.js";
|
|
7
|
+
import { listArchetypes as readArchetypes } from "./archetype.js";
|
|
8
|
+
import { akuIdFromDirectoryName, akumaIdSchema, akumaPaths, akumaRunRoot, archetypeName, } from "./identity.js";
|
|
9
|
+
import { activitySnapshotSchema } from "./projection.js";
|
|
10
|
+
import { PAGE_POOL_SIZE, boundedMap } from "./read-pool.js";
|
|
21
11
|
export const akumaStatusSchema = z
|
|
22
12
|
.object({
|
|
23
13
|
id: akumaIdSchema,
|
|
@@ -31,19 +21,147 @@ export const akumaStatusSchema = z
|
|
|
31
21
|
export function parseAkumaStatus(value) {
|
|
32
22
|
return akumaStatusSchema.parse(value);
|
|
33
23
|
}
|
|
34
|
-
export
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
24
|
+
export async function listAkumaArchetypes(path, input = {}) {
|
|
25
|
+
return readArchetypes({ project: path, ...(input.home === undefined ? {} : { home: input.home }) });
|
|
26
|
+
}
|
|
27
|
+
function activityAt(row) {
|
|
28
|
+
if (!("lifeAt" in row))
|
|
29
|
+
return null;
|
|
30
|
+
if (row.lifeAt === null)
|
|
31
|
+
return row.lastActivityAt;
|
|
32
|
+
if (row.lastActivityAt === null)
|
|
33
|
+
return row.lifeAt;
|
|
34
|
+
return row.lifeAt > row.lastActivityAt ? row.lifeAt : row.lastActivityAt;
|
|
35
|
+
}
|
|
36
|
+
function compareActivity(left, right) {
|
|
37
|
+
if (left === right)
|
|
38
|
+
return 0;
|
|
39
|
+
if (left === null)
|
|
40
|
+
return 1;
|
|
41
|
+
if (right === null)
|
|
42
|
+
return -1;
|
|
43
|
+
return left > right ? -1 : 1;
|
|
44
|
+
}
|
|
45
|
+
function compareRows(left, right) {
|
|
46
|
+
const activity = compareActivity(activityAt(left), activityAt(right));
|
|
47
|
+
if (activity !== 0)
|
|
48
|
+
return activity;
|
|
49
|
+
return left.id < right.id ? -1 : left.id > right.id ? 1 : 0;
|
|
50
|
+
}
|
|
51
|
+
async function mtimeBound(paths) {
|
|
52
|
+
const read = async (path) => {
|
|
53
|
+
try {
|
|
54
|
+
return (await stat(path)).mtimeMs;
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
return error.code === "ENOENT" ? 0 : Number.POSITIVE_INFINITY;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
return Math.max(await read(paths.heart), await read(`${paths.heart}-wal`));
|
|
61
|
+
}
|
|
62
|
+
async function knownAkuma(path, selected) {
|
|
63
|
+
const runRoot = akumaRunRoot(path);
|
|
64
|
+
let names;
|
|
65
|
+
try {
|
|
66
|
+
names = (await readdir(runRoot, { withFileTypes: true }))
|
|
67
|
+
.filter((entry) => entry.isDirectory())
|
|
68
|
+
.map((entry) => entry.name)
|
|
69
|
+
.sort();
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
if (error.code === "ENOENT")
|
|
73
|
+
return { runRoot, rows: [] };
|
|
74
|
+
throw error;
|
|
75
|
+
}
|
|
76
|
+
const rows = [];
|
|
77
|
+
for (const name of names) {
|
|
78
|
+
let physical;
|
|
79
|
+
try {
|
|
80
|
+
physical = akuIdFromDirectoryName(name);
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
if (selected !== undefined && physical.archetype !== selected)
|
|
86
|
+
continue;
|
|
87
|
+
rows.push({
|
|
88
|
+
id: physical.id,
|
|
89
|
+
paths: akumaPaths({ runRoot, archetype: physical.archetype, suffix: physical.suffix }),
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
return { runRoot, rows };
|
|
93
|
+
}
|
|
94
|
+
async function readableRows(rows) {
|
|
95
|
+
const loaded = await boundedMap(rows, async ({ id, paths }) => {
|
|
96
|
+
try {
|
|
97
|
+
return await rosterListRow(paths, id);
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
return [...loaded].filter((row) => row !== null);
|
|
104
|
+
}
|
|
105
|
+
function rosterArchetype(input, allowLimit) {
|
|
106
|
+
if (typeof input !== "object" || input === null || Array.isArray(input))
|
|
107
|
+
throw new TypeError("Akuma list input must be an object");
|
|
108
|
+
const allowed = allowLimit ? ["archetype", "limit"] : ["archetype"];
|
|
109
|
+
const unknown = Object.keys(input).find((key) => !allowed.includes(key));
|
|
110
|
+
if (unknown !== undefined)
|
|
111
|
+
throw new TypeError(`Akuma list input has unknown field: ${unknown}`);
|
|
112
|
+
return input.archetype === undefined ? undefined : archetypeName(input.archetype);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* The bounded recent-activity roster: native membership, semantic order and
|
|
116
|
+
* observed extent. World Alias context is attached by the upper composition.
|
|
117
|
+
*/
|
|
118
|
+
export async function readAkumaRoster(path, input = {}) {
|
|
119
|
+
const selected = rosterArchetype(input, true);
|
|
120
|
+
const limit = boundedListLimit(input.limit);
|
|
121
|
+
const observedAt = new Date().toISOString();
|
|
122
|
+
const known = await knownAkuma(path, selected);
|
|
123
|
+
const candidatesWithBounds = await boundedMap(known.rows, async (row) => ({
|
|
124
|
+
...row,
|
|
125
|
+
bound: await mtimeBound(row.paths),
|
|
126
|
+
}));
|
|
127
|
+
const candidates = [...candidatesWithBounds].sort((left, right) => right.bound - left.bound);
|
|
128
|
+
const readable = [];
|
|
129
|
+
let cursor = 0;
|
|
130
|
+
while (cursor < candidates.length) {
|
|
131
|
+
const batch = candidates.slice(cursor, cursor + PAGE_POOL_SIZE);
|
|
132
|
+
readable.push(...(await readableRows(batch)));
|
|
133
|
+
cursor += batch.length;
|
|
134
|
+
const ranked = readable.sort(compareRows);
|
|
135
|
+
const lookahead = ranked[limit];
|
|
136
|
+
const activity = lookahead === undefined ? null : activityAt(lookahead);
|
|
137
|
+
const unreadBound = candidates[cursor]?.bound;
|
|
138
|
+
if (lookahead !== undefined &&
|
|
139
|
+
activity !== null &&
|
|
140
|
+
unreadBound !== undefined &&
|
|
141
|
+
Number.isFinite(unreadBound) &&
|
|
142
|
+
Number.isFinite(Date.parse(activity)) &&
|
|
143
|
+
unreadBound < Date.parse(activity)) {
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
const ranked = readable.sort(compareRows);
|
|
148
|
+
return {
|
|
149
|
+
observedAt,
|
|
150
|
+
searched: [known.runRoot],
|
|
151
|
+
...projectBoundedList(ranked, limit),
|
|
152
|
+
};
|
|
39
153
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
154
|
+
/** The complete native roster for callers whose semantics require a frozen set. */
|
|
155
|
+
export async function readAkumaCompleteRoster(path, input = {}) {
|
|
156
|
+
const selected = rosterArchetype(input, false);
|
|
157
|
+
const known = await knownAkuma(path, selected);
|
|
158
|
+
return {
|
|
159
|
+
observedAt: new Date().toISOString(),
|
|
160
|
+
rows: [...(await readableRows(known.rows))].sort(compareRows),
|
|
161
|
+
searched: [known.runRoot],
|
|
162
|
+
};
|
|
44
163
|
}
|
|
45
164
|
/** Internal timeline observation for composition owners. */
|
|
46
165
|
export async function readAkumaTimeline(path, id) {
|
|
47
|
-
return (await
|
|
166
|
+
return (await new AkumaOwner(id, path).status()).timeline;
|
|
48
167
|
}
|
|
49
|
-
export { AkumaBusyError, AkumaDecodeError, AkumaProviderError } from "./akuma-errors.js";
|
|
@@ -8,6 +8,7 @@ type DecodedArchetype = Readonly<{
|
|
|
8
8
|
path: string;
|
|
9
9
|
provider: string;
|
|
10
10
|
description?: string;
|
|
11
|
+
hidden?: boolean;
|
|
11
12
|
options: ProviderOptions;
|
|
12
13
|
allowed: AllowedActions;
|
|
13
14
|
}>;
|
|
@@ -22,6 +23,10 @@ type ArchetypeDefinition = DecodedArchetype & Readonly<{
|
|
|
22
23
|
type AdmittedArchetype = Omit<ArchetypeDefinition, "provider"> & Readonly<{
|
|
23
24
|
provider: ProviderExecution;
|
|
24
25
|
}>;
|
|
26
|
+
/** One loaded archetype whose provider owner has decoded its execution but not yet admitted its options. */
|
|
27
|
+
type PreparedArchetype = Omit<DecodedArchetype, "provider"> & Readonly<{
|
|
28
|
+
provider: ProviderExecution;
|
|
29
|
+
}>;
|
|
25
30
|
export declare class AkumaArchetypeError extends Error {
|
|
26
31
|
readonly archetype: string;
|
|
27
32
|
readonly searched: readonly string[];
|
|
@@ -37,6 +42,13 @@ export declare function listArchetypes(input?: ArchetypeCoordinates): Promise<re
|
|
|
37
42
|
export declare function listArchetypeDefinitions(input?: ArchetypeCoordinates & Readonly<{
|
|
38
43
|
limit?: number;
|
|
39
44
|
}>): Promise<BoundedList<ArchetypeCatalogRow>>;
|
|
45
|
+
/** Resolve one archetype and decode its provider execution, leaving option admission to the caller. */
|
|
46
|
+
export declare function loadPreparedArchetype(input: Readonly<{
|
|
47
|
+
name: string;
|
|
48
|
+
project?: string;
|
|
49
|
+
home?: string;
|
|
50
|
+
settings: Settings;
|
|
51
|
+
}>): Promise<PreparedArchetype>;
|
|
40
52
|
export declare function loadArchetype(input: Readonly<{
|
|
41
53
|
name: string;
|
|
42
54
|
project?: string;
|
|
@@ -100,6 +100,14 @@ function archetypeEnum(values, key, allowed) {
|
|
|
100
100
|
throw new TypeError(`Akuma ${key} must be one of ${allowed.join(", ")}`);
|
|
101
101
|
return value;
|
|
102
102
|
}
|
|
103
|
+
function archetypeBoolean(values, key) {
|
|
104
|
+
const value = values[key];
|
|
105
|
+
if (value === undefined)
|
|
106
|
+
return undefined;
|
|
107
|
+
if (typeof value !== "boolean")
|
|
108
|
+
throw new TypeError(`Akuma ${key} must be a boolean`);
|
|
109
|
+
return value;
|
|
110
|
+
}
|
|
103
111
|
function parseArchetypeFrontmatter(markdown) {
|
|
104
112
|
const lines = markdown.split(/\r?\n/u);
|
|
105
113
|
if (lines[0]?.trim() !== "---")
|
|
@@ -124,6 +132,7 @@ function decodeArchetypeFields(values) {
|
|
|
124
132
|
const effort = archetypeField(values, "effort");
|
|
125
133
|
const network = archetypeEnum(values, "network", ["disabled", "enabled"]);
|
|
126
134
|
const description = archetypeField(values, "description");
|
|
135
|
+
const hidden = archetypeBoolean(values, "hidden");
|
|
127
136
|
const allowedPresent = "allowed" in values;
|
|
128
137
|
const allowed = allowedPresent ? decodeAllowedActions(values.allowed) : undefined;
|
|
129
138
|
const systemPromptMode = archetypeEnum(values, "systemPromptMode", ["append", "replace"]);
|
|
@@ -134,6 +143,7 @@ function decodeArchetypeFields(values) {
|
|
|
134
143
|
...(effort === undefined ? {} : { effort }),
|
|
135
144
|
...(network === undefined ? {} : { network }),
|
|
136
145
|
...(description === undefined ? {} : { description }),
|
|
146
|
+
...(hidden === undefined ? {} : { hidden }),
|
|
137
147
|
...(allowed === undefined ? {} : { allowed }),
|
|
138
148
|
allowedPresent,
|
|
139
149
|
...(systemPromptMode === undefined ? {} : { systemPromptMode }),
|
|
@@ -152,6 +162,7 @@ function decodeArchetype(name, path, markdown) {
|
|
|
152
162
|
...(fields.base === undefined ? {} : { base: fields.base }),
|
|
153
163
|
...(fields.provider === undefined ? {} : { provider: fields.provider }),
|
|
154
164
|
...(fields.description === undefined ? {} : { description: fields.description }),
|
|
165
|
+
...(fields.hidden === undefined ? {} : { hidden: fields.hidden }),
|
|
155
166
|
options: decodeProviderOptions({
|
|
156
167
|
...(fields.model === undefined ? {} : { model: fields.model }),
|
|
157
168
|
...(fields.effort === undefined ? {} : { effort: fields.effort }),
|
|
@@ -182,6 +193,8 @@ function mergeArchetype(base, local) {
|
|
|
182
193
|
? {}
|
|
183
194
|
: { description: base.description }
|
|
184
195
|
: { description: local.description }),
|
|
196
|
+
// Hiddenness is the file's own catalogue visibility; it never flows through base.
|
|
197
|
+
...(local.hidden === true ? { hidden: true } : {}),
|
|
185
198
|
options,
|
|
186
199
|
allowed,
|
|
187
200
|
});
|
|
@@ -229,20 +242,9 @@ export async function listArchetypeDefinitions(input = {}) {
|
|
|
229
242
|
// definition in catalog byte order, not whichever read happened to finish first.
|
|
230
243
|
const limit = input.limit === undefined ? undefined : boundedListLimit(input.limit);
|
|
231
244
|
const all = await archetypePaths(input);
|
|
232
|
-
const
|
|
233
|
-
? { paths: all, hasMore: false }
|
|
234
|
-
: (() => {
|
|
235
|
-
const paths = all.slice(0, limit + 1);
|
|
236
|
-
return { paths: paths.slice(0, limit), hasMore: paths.length > limit };
|
|
237
|
-
})();
|
|
238
|
-
const settled = await Promise.allSettled(selected.paths.map(async ({ name, path }) => {
|
|
245
|
+
const settled = await Promise.allSettled(all.map(async ({ name, path }) => {
|
|
239
246
|
try {
|
|
240
|
-
|
|
241
|
-
return Object.freeze({
|
|
242
|
-
name: definition.name,
|
|
243
|
-
...(definition.options.model === undefined ? {} : { model: definition.options.model }),
|
|
244
|
-
...(definition.description === undefined ? {} : { description: definition.description }),
|
|
245
|
-
});
|
|
247
|
+
return await resolveArchetype(name, input, undefined);
|
|
246
248
|
}
|
|
247
249
|
catch (error) {
|
|
248
250
|
if (error instanceof AkumaArchetypeError)
|
|
@@ -253,9 +255,17 @@ export async function listArchetypeDefinitions(input = {}) {
|
|
|
253
255
|
const firstInvalid = settled.find((result) => result.status === "rejected");
|
|
254
256
|
if (firstInvalid !== undefined)
|
|
255
257
|
throw firstInvalid.reason;
|
|
258
|
+
const visible = settled
|
|
259
|
+
.map((result) => result.value)
|
|
260
|
+
.filter((definition) => definition.hidden !== true)
|
|
261
|
+
.map((definition) => Object.freeze({
|
|
262
|
+
name: definition.name,
|
|
263
|
+
...(definition.options.model === undefined ? {} : { model: definition.options.model }),
|
|
264
|
+
...(definition.description === undefined ? {} : { description: definition.description }),
|
|
265
|
+
}));
|
|
256
266
|
return {
|
|
257
|
-
rows:
|
|
258
|
-
hasMore:
|
|
267
|
+
rows: limit === undefined ? visible : visible.slice(0, limit),
|
|
268
|
+
hasMore: limit === undefined ? false : visible.length > limit,
|
|
259
269
|
};
|
|
260
270
|
}
|
|
261
271
|
function record(value) {
|
|
@@ -292,6 +302,11 @@ const BUILTIN_EXECUTIONS = {
|
|
|
292
302
|
claude: { kind: "claude-agent-sdk" },
|
|
293
303
|
"codex-app-server": { kind: "codex-app-server" },
|
|
294
304
|
"opencode-sdk": { kind: "opencode-sdk" },
|
|
305
|
+
kimi: {
|
|
306
|
+
kind: "acp",
|
|
307
|
+
executable: "kimi",
|
|
308
|
+
config: { argvBefore: ["acp"], argvAfter: [], modelConfigId: "model", effortConfigId: "thinking" },
|
|
309
|
+
},
|
|
295
310
|
pi: { kind: "pi" },
|
|
296
311
|
"grok-build": {
|
|
297
312
|
kind: "grok-build",
|
|
@@ -310,10 +325,10 @@ function providerExecution(settings, name) {
|
|
|
310
325
|
return decodeProviderRecipe({ name, ...builtin });
|
|
311
326
|
throw new TypeError(`unknown provider ${name}`);
|
|
312
327
|
}
|
|
313
|
-
async function admitArchetype(archetype
|
|
328
|
+
async function admitArchetype(archetype) {
|
|
314
329
|
let selected;
|
|
315
330
|
try {
|
|
316
|
-
selected = await resolveProviderExecution(
|
|
331
|
+
selected = await resolveProviderExecution(archetype.provider);
|
|
317
332
|
}
|
|
318
333
|
catch (error) {
|
|
319
334
|
if (error instanceof TypeError)
|
|
@@ -333,8 +348,21 @@ async function admitArchetype(archetype, settings) {
|
|
|
333
348
|
options: admission.options,
|
|
334
349
|
});
|
|
335
350
|
}
|
|
336
|
-
|
|
351
|
+
/** Resolve one archetype and decode its provider execution, leaving option admission to the caller. */
|
|
352
|
+
export async function loadPreparedArchetype(input) {
|
|
337
353
|
const name = archetypeName(input.name);
|
|
338
354
|
const definition = await resolveArchetype(name, input, undefined);
|
|
339
|
-
|
|
355
|
+
let provider;
|
|
356
|
+
try {
|
|
357
|
+
provider = providerExecution(input.settings, definition.provider);
|
|
358
|
+
}
|
|
359
|
+
catch (error) {
|
|
360
|
+
if (error instanceof TypeError)
|
|
361
|
+
throw new AkumaArchetypeError(definition.name, [definition.path], `uses ${error.message}`);
|
|
362
|
+
throw error;
|
|
363
|
+
}
|
|
364
|
+
return Object.freeze({ ...definition, provider });
|
|
365
|
+
}
|
|
366
|
+
export async function loadArchetype(input) {
|
|
367
|
+
return await admitArchetype(await loadPreparedArchetype(input));
|
|
340
368
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
1
2
|
import type { AkumaCallRequestChildLaunch } from "./call-request.js";
|
|
2
|
-
import { type SessionFact, type Soul } from "./heart/index.js";
|
|
3
3
|
import { type AkumaPaths } from "./identity.js";
|
|
4
4
|
import { type TellResult } from "./call-initial-tell.js";
|
|
5
5
|
export type { TellResult, TellWake } from "./call-initial-tell.js";
|
|
@@ -9,18 +9,79 @@ import type { ErasedRequestCommand } from "./request-wire.js";
|
|
|
9
9
|
import { type OwnedProcess } from "../runtime/proc/run.js";
|
|
10
10
|
export declare const LEASH_HELD_EXIT = 75;
|
|
11
11
|
export { CONTROL_RESPONSE_MS } from "./body-supervisor.js";
|
|
12
|
-
export
|
|
13
|
-
paths:
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
12
|
+
export declare const bodyLaunchSchema: z.ZodObject<{
|
|
13
|
+
paths: z.ZodObject<{
|
|
14
|
+
directory: z.ZodString;
|
|
15
|
+
heart: z.ZodString;
|
|
16
|
+
leash: z.ZodString;
|
|
17
|
+
log: z.ZodString;
|
|
18
|
+
requests: z.ZodString;
|
|
19
|
+
}, z.core.$strict>;
|
|
20
|
+
seed: z.ZodOptional<z.ZodPipe<z.ZodUnknown, z.ZodTransform<Omit<Readonly<{
|
|
21
|
+
id: import("./identity.js").AkuId;
|
|
22
|
+
archetype: string;
|
|
23
|
+
description?: string;
|
|
24
|
+
provider: import("./provider-recipe.js").ProviderExecution;
|
|
25
|
+
options: import("./provider-recipe.js").ProviderOptions;
|
|
26
|
+
cwd: string;
|
|
27
|
+
origin: import("./heart/facts.js").AkumaOrigin;
|
|
28
|
+
allowed: import("./allowed.js").AllowedActions;
|
|
29
|
+
createdAt: string;
|
|
30
|
+
}>, "createdAt">, unknown>>>;
|
|
31
|
+
birthSession: z.ZodOptional<z.ZodObject<{
|
|
32
|
+
provider: z.ZodString;
|
|
33
|
+
coordinate: z.ZodUnion<readonly [z.ZodPipe<z.ZodObject<{
|
|
34
|
+
sessionFile: z.ZodString;
|
|
35
|
+
sessionId: z.ZodOptional<z.ZodString>;
|
|
36
|
+
}, z.core.$strict>, z.ZodTransform<{
|
|
37
|
+
sessionFile: string;
|
|
38
|
+
sessionId?: never;
|
|
39
|
+
} | {
|
|
40
|
+
sessionFile: string;
|
|
41
|
+
sessionId: string;
|
|
42
|
+
}, {
|
|
43
|
+
sessionFile: string;
|
|
44
|
+
sessionId?: string | undefined;
|
|
45
|
+
}>>, z.ZodObject<{
|
|
46
|
+
sessionId: z.ZodString;
|
|
47
|
+
}, z.core.$strict>]>;
|
|
48
|
+
cwd: z.ZodString;
|
|
49
|
+
options: z.ZodPipe<z.ZodObject<{
|
|
50
|
+
model: z.ZodOptional<z.ZodString>;
|
|
51
|
+
effort: z.ZodOptional<z.ZodString>;
|
|
52
|
+
network: z.ZodOptional<z.ZodEnum<{
|
|
53
|
+
disabled: "disabled";
|
|
54
|
+
enabled: "enabled";
|
|
55
|
+
}>>;
|
|
56
|
+
systemPrompt: z.ZodOptional<z.ZodString>;
|
|
57
|
+
systemPromptMode: z.ZodOptional<z.ZodEnum<{
|
|
58
|
+
append: "append";
|
|
59
|
+
replace: "replace";
|
|
60
|
+
}>>;
|
|
61
|
+
}, z.core.$strip>, z.ZodTransform<Readonly<{
|
|
62
|
+
systemPromptMode?: "append" | "replace";
|
|
63
|
+
systemPrompt?: string;
|
|
64
|
+
network?: "disabled" | "enabled";
|
|
65
|
+
effort?: string;
|
|
66
|
+
model?: string;
|
|
67
|
+
}>, {
|
|
68
|
+
model?: string | undefined;
|
|
69
|
+
effort?: string | undefined;
|
|
70
|
+
network?: "disabled" | "enabled" | undefined;
|
|
71
|
+
systemPrompt?: string | undefined;
|
|
72
|
+
systemPromptMode?: "append" | "replace" | undefined;
|
|
73
|
+
}>>;
|
|
74
|
+
admittedAt: z.ZodString;
|
|
75
|
+
}, z.core.$strict>>;
|
|
76
|
+
initialBody: z.ZodOptional<z.ZodString>;
|
|
77
|
+
initiator: z.ZodOptional<z.ZodString>;
|
|
78
|
+
initialSchemaJson: z.ZodOptional<z.ZodString>;
|
|
79
|
+
refuseIfHeld: z.ZodOptional<z.ZodBoolean>;
|
|
80
|
+
completion: z.ZodOptional<z.ZodObject<{
|
|
81
|
+
contractId: z.ZodOptional<z.ZodString>;
|
|
82
|
+
}, z.core.$strict>>;
|
|
83
|
+
}, z.core.$strict>;
|
|
84
|
+
export type BodyLaunch = z.infer<typeof bodyLaunchSchema>;
|
|
24
85
|
export type TellWakeRuntime = Readonly<{
|
|
25
86
|
spawn(paths: AkumaPaths): Promise<OwnedProcess>;
|
|
26
87
|
schedule?(milliseconds: number, signal: AbortSignal): Promise<void>;
|
|
@@ -32,28 +93,7 @@ type BodyRuntime = Readonly<{
|
|
|
32
93
|
world: WorldRoot;
|
|
33
94
|
externalCommands: Readonly<Record<string, ErasedRequestCommand>>;
|
|
34
95
|
}>;
|
|
35
|
-
|
|
36
|
-
/** The current process executable, preferred only while it is a different live value. */
|
|
37
|
-
current?: string;
|
|
38
|
-
/** The present PATH used to resolve the recorded executable basename. */
|
|
39
|
-
path?: string | undefined;
|
|
40
|
-
exists?: (path: string) => boolean | Promise<boolean>;
|
|
41
|
-
}>;
|
|
42
|
-
/** One Body launch's runtime input: the runtime recorded for it and its resolution environment. */
|
|
43
|
-
export type BodyLaunchRuntime = Readonly<{
|
|
44
|
-
recorded?: string;
|
|
45
|
-
environment?: RuntimeEnvironment;
|
|
46
|
-
}>;
|
|
47
|
-
/**
|
|
48
|
-
* Resolve the runtime executable a Body spawn will use. The path recorded for
|
|
49
|
-
* this process's birth wins while it exists. Once it is gone, wake re-resolves
|
|
50
|
-
* the runtime before any spawn can fail: the current process executable while
|
|
51
|
-
* that is a different live value, then the recorded executable basename on the
|
|
52
|
-
* present PATH. An unresolvable runtime refuses with the stale record, the
|
|
53
|
-
* failed re-resolution, and the kill-and-call-fresh remedy.
|
|
54
|
-
*/
|
|
55
|
-
export declare function resolveRuntimeExecutable(recorded?: string, environment?: RuntimeEnvironment): Promise<string>;
|
|
56
|
-
export declare function bodyProcessInput(launch: BodyLaunch, bodyModuleUrl?: string, runtime?: BodyLaunchRuntime): Promise<{
|
|
96
|
+
export declare function bodyProcessInput(launch: BodyLaunch, bodyModuleUrl?: string): Promise<{
|
|
57
97
|
argv: string[];
|
|
58
98
|
cwd: string;
|
|
59
99
|
env: Record<string, string>;
|
|
@@ -61,6 +101,6 @@ export declare function bodyProcessInput(launch: BodyLaunch, bodyModuleUrl?: str
|
|
|
61
101
|
}>;
|
|
62
102
|
export declare function handoffPendingTells(paths: AkumaPaths, spawn?: (launch: BodyLaunch) => Promise<OwnedProcess>): Promise<void>;
|
|
63
103
|
export declare function driveAkumaBody(launch: BodyLaunch, adapter?: ProviderAdapter, runtimeInput?: Partial<BodyRuntime>): Promise<"held" | void>;
|
|
64
|
-
export declare function spawnAkumaBody(launch: BodyLaunch
|
|
104
|
+
export declare function spawnAkumaBody(launch: BodyLaunch): Promise<OwnedProcess>;
|
|
65
105
|
export declare function runAkumaBody(launch: BodyLaunch, world: WorldRoot, externalCommands: Readonly<Record<string, ErasedRequestCommand>>): Promise<"held" | void>;
|
|
66
106
|
export declare function wakeRecordedTell(paths: AkumaPaths, tellId: string, runtime?: TellWakeRuntime, signal?: AbortSignal): Promise<TellResult>;
|