@astrosheep/keiyaku 2.9.13 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -132
- package/build/integrations/marketplace/.agents/plugins/marketplace.json +12 -0
- package/build/integrations/marketplace/.claude-plugin/marketplace.json +5 -0
- package/build/integrations/marketplace/plugins/keiyaku/.claude-plugin/plugin.json +7 -0
- package/build/integrations/marketplace/plugins/keiyaku/.codex-plugin/plugin.json +18 -0
- package/build/integrations/marketplace/plugins/keiyaku/opencode.js +16 -0
- package/build/integrations/marketplace/plugins/keiyaku/package.json +8 -0
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku/SKILL.md +42 -0
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-akuma/SKILL.md +53 -0
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-bind/SKILL.md +94 -0
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-bind/agents/openai.yaml +4 -0
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-task/SKILL.md +97 -0
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-workflow/SKILL.md +189 -0
- package/build/src/akuma/akuma.d.ts +124 -0
- package/build/src/akuma/akuma.js +414 -0
- package/build/src/akuma/archetype.d.ts +39 -0
- package/build/src/akuma/archetype.js +207 -0
- package/build/src/akuma/body.d.ts +20 -0
- package/build/src/akuma/body.js +417 -0
- package/build/src/akuma/coordinate.d.ts +9 -0
- package/build/src/akuma/coordinate.js +22 -0
- package/build/src/akuma/heart/facts.d.ts +202 -0
- package/build/src/akuma/heart/facts.js +9 -0
- package/build/src/akuma/heart/index.d.ts +90 -0
- package/build/src/akuma/heart/index.js +240 -0
- package/build/src/akuma/heart/rows.d.ts +166 -0
- package/build/src/akuma/heart/rows.js +299 -0
- package/build/src/akuma/heart/schema.d.ts +5 -0
- package/build/src/akuma/heart/schema.js +160 -0
- package/build/src/akuma/heart/storage.d.ts +33 -0
- package/build/src/akuma/heart/storage.js +164 -0
- package/build/src/akuma/heart/tells.d.ts +12 -0
- package/build/src/akuma/heart/tells.js +79 -0
- package/build/src/akuma/heart/timeline.d.ts +15 -0
- package/build/src/akuma/heart/timeline.js +86 -0
- package/build/src/akuma/identity.d.ts +46 -0
- package/build/src/akuma/identity.js +89 -0
- package/build/src/akuma/index.d.ts +9 -0
- package/build/src/akuma/index.js +3 -0
- package/build/src/akuma/projection.d.ts +97 -0
- package/build/src/akuma/projection.js +145 -0
- package/build/src/akuma/provider.d.ts +169 -0
- package/build/src/akuma/provider.js +255 -0
- package/build/src/akuma/providers/claude/events.d.ts +52 -0
- package/build/src/akuma/providers/claude/events.js +185 -0
- package/build/src/akuma/providers/claude/index.d.ts +46 -0
- package/build/src/akuma/providers/claude/index.js +265 -0
- package/build/src/akuma/providers/claude/input.d.ts +13 -0
- package/build/src/akuma/providers/claude/input.js +109 -0
- package/build/src/akuma/providers/codex-app-server/events.d.ts +110 -0
- package/build/src/akuma/providers/codex-app-server/events.js +337 -0
- package/build/src/akuma/providers/codex-app-server/index.d.ts +29 -0
- package/build/src/akuma/providers/codex-app-server/index.js +213 -0
- package/build/src/akuma/providers/index.d.ts +4 -0
- package/build/src/akuma/providers/index.js +85 -0
- package/build/src/akuma/providers/opencode-sdk/events.d.ts +48 -0
- package/build/src/akuma/providers/opencode-sdk/events.js +116 -0
- package/build/src/akuma/providers/opencode-sdk/index.d.ts +32 -0
- package/build/src/akuma/providers/opencode-sdk/index.js +203 -0
- package/build/src/akuma/providers/opencode-sdk/session.d.ts +41 -0
- package/build/src/akuma/providers/opencode-sdk/session.js +62 -0
- package/build/src/akuma/providers/pi/events.d.ts +33 -0
- package/build/src/akuma/providers/pi/events.js +128 -0
- package/build/src/akuma/providers/pi/index.d.ts +11 -0
- package/build/src/akuma/providers/pi/index.js +162 -0
- package/build/src/akuma/publication.d.ts +10 -0
- package/build/src/akuma/publication.js +107 -0
- package/build/src/akuma/requests.d.ts +47 -0
- package/build/src/akuma/requests.js +391 -0
- package/build/src/alias/index.d.ts +18 -0
- package/build/src/alias/index.js +103 -0
- package/build/src/body/amend.d.ts +2 -0
- package/build/src/body/amend.js +289 -0
- package/build/src/body/arc.d.ts +2 -0
- package/build/src/body/arc.js +54 -0
- package/build/src/body/decode.d.ts +4 -0
- package/build/src/body/decode.js +146 -0
- package/build/src/body/keys.d.ts +4 -0
- package/build/src/body/keys.js +11 -0
- package/build/src/body/region.d.ts +6 -0
- package/build/src/body/region.js +139 -0
- package/build/src/body/render.d.ts +4 -0
- package/build/src/body/render.js +74 -0
- package/build/src/body/shape.d.ts +29 -0
- package/build/src/body/shape.js +22 -0
- package/build/src/body/types.d.ts +28 -0
- package/build/src/body/verification.d.ts +7 -0
- package/build/src/body/verification.js +40 -0
- package/build/src/cli/accepted.d.ts +18 -0
- package/build/src/cli/accepted.js +66 -0
- package/build/src/cli/actor.d.ts +8 -0
- package/build/src/cli/actor.js +11 -0
- package/build/src/cli/commands/akuma-invoke.d.ts +77 -0
- package/build/src/cli/commands/akuma-invoke.js +112 -0
- package/build/src/cli/commands/akuma.d.ts +50 -0
- package/build/src/cli/commands/akuma.js +262 -0
- package/build/src/cli/commands/amend.d.ts +13 -0
- package/build/src/cli/commands/amend.js +13 -0
- package/build/src/cli/commands/bind.d.ts +12 -0
- package/build/src/cli/commands/bind.js +17 -0
- package/build/src/cli/commands/contract.d.ts +142 -0
- package/build/src/cli/commands/contract.js +14 -0
- package/build/src/cli/commands/install.d.ts +25 -0
- package/build/src/cli/commands/install.js +105 -0
- package/build/src/cli/commands/task-invoke.d.ts +11 -0
- package/build/src/cli/commands/task-invoke.js +117 -0
- package/build/src/cli/commands/task.d.ts +16 -0
- package/build/src/cli/commands/task.js +144 -0
- package/build/src/cli/index.d.ts +2 -0
- package/build/src/cli/index.js +3 -0
- package/build/src/cli/invoke.d.ts +22 -0
- package/build/src/cli/invoke.js +463 -0
- package/build/src/cli/main.d.ts +1 -0
- package/build/src/cli/main.js +98 -0
- package/build/src/cli/parse.d.ts +107 -0
- package/build/src/cli/parse.js +348 -0
- package/build/src/cli/render/akuma-tool.d.ts +13 -0
- package/build/src/cli/render/akuma-tool.js +72 -0
- package/build/src/cli/render/akuma.d.ts +7 -0
- package/build/src/cli/render/akuma.js +194 -0
- package/build/src/cli/render/board.d.ts +2 -0
- package/build/src/cli/render/board.js +4 -0
- package/build/src/cli/render/catalog.d.ts +2 -0
- package/build/src/cli/render/catalog.js +16 -0
- package/build/src/cli/render/contract.d.ts +4 -0
- package/build/src/cli/render/contract.js +102 -0
- package/build/src/cli/render/kanshi.d.ts +3 -0
- package/build/src/cli/render/kanshi.js +252 -0
- package/build/src/cli/render/refusal.d.ts +2 -0
- package/build/src/cli/render/refusal.js +21 -0
- package/build/src/cli/render/settings.d.ts +3 -0
- package/build/src/cli/render/settings.js +30 -0
- package/build/src/cli/render/task.d.ts +6 -0
- package/build/src/cli/render/task.js +105 -0
- package/build/src/cli/render/terminal.d.ts +23 -0
- package/build/src/cli/render/terminal.js +151 -0
- package/build/src/cli/render/text.d.ts +3 -0
- package/build/src/cli/render/text.js +20 -0
- package/build/src/cli/result.d.ts +67 -0
- package/build/src/cli/selectors.d.ts +9 -0
- package/build/src/cli/selectors.js +66 -0
- package/build/src/cli/usage.d.ts +6 -0
- package/build/src/cli/usage.js +19 -0
- package/build/src/contract-worktree.d.ts +43 -0
- package/build/src/contract-worktree.js +213 -0
- package/build/src/coordination/durable-file.d.ts +4 -0
- package/build/src/coordination/durable-file.js +79 -0
- package/build/src/coordination/sqlite-transaction-lock.d.ts +14 -0
- package/build/src/coordination/sqlite-transaction-lock.js +119 -0
- package/build/src/core/decide.d.ts +45 -0
- package/build/src/core/facts/codec.d.ts +3 -0
- package/build/src/core/facts/codec.js +277 -0
- package/build/src/core/facts/eligibility.d.ts +7 -0
- package/build/src/core/facts/eligibility.js +26 -0
- package/build/src/core/facts/errors.d.ts +3 -0
- package/build/src/core/facts/errors.js +6 -0
- package/build/src/core/facts/fold.d.ts +2 -0
- package/build/src/core/facts/fold.js +97 -0
- package/build/src/core/facts/gate.d.ts +24 -0
- package/build/src/core/facts/gate.js +52 -0
- package/build/src/core/facts/observation.d.ts +15 -0
- package/build/src/core/facts/observation.js +35 -0
- package/build/src/core/facts/offer.d.ts +21 -0
- package/build/src/core/facts/types.d.ts +137 -0
- package/build/src/core/facts/types.js +66 -0
- package/build/src/core/subject.d.ts +21 -0
- package/build/src/core/subject.js +89 -0
- package/build/src/core/verbs/abandon.d.ts +13 -0
- package/build/src/core/verbs/abandon.js +17 -0
- package/build/src/core/verbs/amend.d.ts +14 -0
- package/build/src/core/verbs/amend.js +52 -0
- package/build/src/core/verbs/arc.d.ts +13 -0
- package/build/src/core/verbs/arc.js +25 -0
- package/build/src/core/verbs/attestation.d.ts +13 -0
- package/build/src/core/verbs/attestation.js +21 -0
- package/build/src/core/verbs/bind.d.ts +13 -0
- package/build/src/core/verbs/bind.js +26 -0
- package/build/src/core/verbs/deliver.d.ts +13 -0
- package/build/src/core/verbs/deliver.js +42 -0
- package/build/src/core/verbs/placement.d.ts +13 -0
- package/build/src/core/verbs/placement.js +37 -0
- package/build/src/dispatch/index.d.ts +33 -0
- package/build/src/dispatch/index.js +168 -0
- package/build/src/duration.d.ts +10 -0
- package/build/src/duration.js +22 -0
- package/build/src/git/admission.d.ts +18 -0
- package/build/src/git/admission.js +126 -0
- package/build/src/git/hooks.d.ts +49 -0
- package/build/src/git/hooks.js +310 -0
- package/build/src/git/identity.d.ts +17 -0
- package/build/src/git/identity.js +47 -0
- package/build/src/git/integration.d.ts +49 -0
- package/build/src/git/integration.js +214 -0
- package/build/src/git/observe.d.ts +50 -0
- package/build/src/git/observe.js +330 -0
- package/build/src/git/read-observation.d.ts +41 -0
- package/build/src/git/read-observation.js +361 -0
- package/build/src/git/reconcile.d.ts +59 -0
- package/build/src/git/reconcile.js +376 -0
- package/build/src/git/repository.d.ts +95 -0
- package/build/src/git/repository.js +490 -0
- package/build/src/git/scratch.d.ts +13 -0
- package/build/src/git/scratch.js +66 -0
- package/build/src/git/target-placement.d.ts +56 -0
- package/build/src/git/target-placement.js +255 -0
- package/build/src/git/tender.d.ts +48 -0
- package/build/src/git/tender.js +82 -0
- package/build/src/git/terminal-seal.d.ts +24 -0
- package/build/src/git/terminal-seal.js +87 -0
- package/build/src/git/tree.d.ts +34 -0
- package/build/src/git/tree.js +116 -0
- package/build/src/git/workspace.d.ts +21 -0
- package/build/src/git/workspace.js +104 -0
- package/build/src/identity/coordinates.d.ts +9 -0
- package/build/src/identity/coordinates.js +20 -0
- package/build/src/identity/normalize.d.ts +8 -0
- package/build/src/identity/normalize.js +45 -0
- package/build/src/identity/selector.d.ts +12 -0
- package/build/src/identity/selector.js +26 -0
- package/build/src/index.d.ts +6 -0
- package/build/src/index.js +3 -0
- package/build/src/kanshi/index.d.ts +5 -0
- package/build/src/kanshi/index.js +2 -0
- package/build/src/kanshi/read.d.ts +8 -0
- package/build/src/kanshi/read.js +209 -0
- package/build/src/kanshi/report.d.ts +60 -0
- package/build/src/kanshi/select.d.ts +8 -0
- package/build/src/kanshi/select.js +21 -0
- package/build/src/library/address.d.ts +48 -0
- package/build/src/library/address.js +134 -0
- package/build/src/library/akuma-creation.d.ts +83 -0
- package/build/src/library/akuma-creation.js +152 -0
- package/build/src/library/bind.d.ts +21 -0
- package/build/src/library/bind.js +56 -0
- package/build/src/library/catalog.d.ts +58 -0
- package/build/src/library/catalog.js +72 -0
- package/build/src/library/configuration.d.ts +17 -0
- package/build/src/library/configuration.js +97 -0
- package/build/src/library/contract.d.ts +120 -0
- package/build/src/library/contract.js +335 -0
- package/build/src/library/delivery.d.ts +23 -0
- package/build/src/library/delivery.js +21 -0
- package/build/src/library/fleet.d.ts +65 -0
- package/build/src/library/fleet.js +189 -0
- package/build/src/library/input.d.ts +16 -0
- package/build/src/library/input.js +101 -0
- package/build/src/library/keiyaku.d.ts +42 -0
- package/build/src/library/keiyaku.js +26 -0
- package/build/src/library/mutation.d.ts +38 -0
- package/build/src/library/mutation.js +39 -0
- package/build/src/library/refusal.d.ts +21 -0
- package/build/src/library/refusal.js +29 -0
- package/build/src/library/region.d.ts +18 -0
- package/build/src/library/region.js +30 -0
- package/build/src/library/repo.d.ts +36 -0
- package/build/src/library/repo.js +76 -0
- package/build/src/markdown/diff.d.ts +1 -0
- package/build/src/markdown/diff.js +4 -0
- package/build/src/markdown/lex.d.ts +3 -0
- package/build/src/markdown/lex.js +221 -0
- package/build/src/markdown/parse.d.ts +2 -0
- package/build/src/markdown/parse.js +221 -0
- package/build/src/markdown/query.d.ts +21 -0
- package/build/src/markdown/query.js +51 -0
- package/build/src/markdown/types.d.ts +118 -0
- package/build/src/markdown/types.js +6 -0
- package/build/src/protocol/attempt.d.ts +49 -0
- package/build/src/protocol/attempt.js +150 -0
- package/build/src/protocol/bind.d.ts +32 -0
- package/build/src/protocol/bind.js +70 -0
- package/build/src/protocol/intent.d.ts +76 -0
- package/build/src/protocol/intent.js +90 -0
- package/build/src/protocol/operations.d.ts +198 -0
- package/build/src/protocol/operations.js +485 -0
- package/build/src/protocol/outcome.d.ts +23 -0
- package/build/src/protocol/outcome.js +21 -0
- package/build/src/protocol/placement.d.ts +30 -0
- package/build/src/protocol/placement.js +114 -0
- package/build/src/protocol/read/audit.d.ts +31 -0
- package/build/src/protocol/read/audit.js +55 -0
- package/build/src/protocol/read/documents.d.ts +8 -0
- package/build/src/protocol/read/documents.js +16 -0
- package/build/src/protocol/read/status.d.ts +44 -0
- package/build/src/protocol/read/status.js +60 -0
- package/build/src/protocol/run.d.ts +81 -0
- package/build/src/protocol/run.js +64 -0
- package/build/src/runtime/proc/line-rpc.d.ts +38 -0
- package/build/src/runtime/proc/line-rpc.js +145 -0
- package/build/src/runtime/proc/run.d.ts +70 -0
- package/build/src/runtime/proc/run.js +226 -0
- package/build/src/settings.d.ts +51 -0
- package/build/src/settings.js +114 -0
- package/build/src/settlement/fence.d.ts +9 -0
- package/build/src/settlement/fence.js +23 -0
- package/build/src/settlement/holder.d.ts +36 -0
- package/build/src/settlement/holder.js +187 -0
- package/build/src/settlement/settle.d.ts +44 -0
- package/build/src/settlement/settle.js +165 -0
- package/build/src/task/board.d.ts +83 -0
- package/build/src/task/board.js +165 -0
- package/build/src/task/compose.d.ts +25 -0
- package/build/src/task/compose.js +232 -0
- package/build/src/task/context.d.ts +4 -0
- package/build/src/task/context.js +51 -0
- package/build/src/task/document.d.ts +24 -0
- package/build/src/task/document.js +118 -0
- package/build/src/task/identity.d.ts +12 -0
- package/build/src/task/identity.js +47 -0
- package/build/src/task/index.d.ts +90 -0
- package/build/src/task/index.js +182 -0
- package/build/src/task/operations.d.ts +134 -0
- package/build/src/task/operations.js +198 -0
- package/build/src/task/store.d.ts +20 -0
- package/build/src/task/store.js +114 -0
- package/build/src/verification/declaration.d.ts +23 -0
- package/build/src/verification/declaration.js +14 -0
- package/build/src/verification/execution.d.ts +49 -0
- package/build/src/verification/execution.js +104 -0
- package/build/src/world.d.ts +13 -0
- package/build/src/world.js +103 -0
- package/package.json +65 -44
- package/build/.tsbuildinfo +0 -1
- package/build/agents/call-terms.js +0 -32
- package/build/agents/harness/activity-values.js +0 -70
- package/build/agents/harness/control-types.js +0 -18
- package/build/agents/harness/event-channel.js +0 -213
- package/build/agents/harness/event-persistence.js +0 -220
- package/build/agents/harness/events.js +0 -48
- package/build/agents/harness/execution-handle.js +0 -172
- package/build/agents/harness/index.js +0 -11
- package/build/agents/harness/outcome-error.js +0 -81
- package/build/agents/harness/outcome.js +0 -220
- package/build/agents/harness/projection.js +0 -369
- package/build/agents/harness/provider-adapter.js +0 -58
- package/build/agents/harness/router.js +0 -30
- package/build/agents/harness/runtime.js +0 -85
- package/build/agents/harness/session.js +0 -15
- package/build/agents/launch-snapshot/model.js +0 -127
- package/build/agents/launch-snapshot/parse-helpers.js +0 -114
- package/build/agents/launch-snapshot/resolve.js +0 -46
- package/build/agents/opencode-sdk.js +0 -159
- package/build/agents/providers/claude-agent-sdk/adapter.js +0 -396
- package/build/agents/providers/claude-agent-sdk/events.js +0 -218
- package/build/agents/providers/claude-agent-sdk/registration.js +0 -225
- package/build/agents/providers/claude-agent-sdk/session-schema.js +0 -2
- package/build/agents/providers/claude-agent-sdk/session.js +0 -172
- package/build/agents/providers/codex-app-server/adapter.js +0 -387
- package/build/agents/providers/codex-app-server/events.js +0 -492
- package/build/agents/providers/codex-app-server/identity.js +0 -1
- package/build/agents/providers/codex-app-server/policy.js +0 -29
- package/build/agents/providers/codex-app-server/registration.js +0 -259
- package/build/agents/providers/codex-app-server/session-schema.js +0 -6
- package/build/agents/providers/codex-app-server/session.js +0 -273
- package/build/agents/providers/event-type-tail.js +0 -16
- package/build/agents/providers/opencode-sdk/adapter.js +0 -402
- package/build/agents/providers/opencode-sdk/events.js +0 -380
- package/build/agents/providers/opencode-sdk/registration.js +0 -146
- package/build/agents/providers/opencode-sdk/session-schema.js +0 -2
- package/build/agents/providers/opencode-sdk/session.js +0 -187
- package/build/agents/providers/pi/adapter.js +0 -285
- package/build/agents/providers/pi/checkpoint.js +0 -49
- package/build/agents/providers/pi/events.js +0 -285
- package/build/agents/providers/pi/registration.js +0 -160
- package/build/agents/providers/pi/session-schema.js +0 -6
- package/build/agents/providers/registration.js +0 -7
- package/build/agents/providers/registry.js +0 -76
- package/build/agents/selector.js +0 -120
- package/build/agents/session.js +0 -29
- package/build/agents/string-tail-buffer.js +0 -44
- package/build/agents/types.js +0 -30
- package/build/artifact-directories.js +0 -22
- package/build/cli/commands/akuma/akuma/handler.js +0 -5
- package/build/cli/commands/akuma/akuma/meta.js +0 -17
- package/build/cli/commands/akuma/catalog.js +0 -10
- package/build/cli/commands/akuma/list/handler.js +0 -15
- package/build/cli/commands/akuma/list/meta-list.js +0 -12
- package/build/cli/commands/akuma/list/meta-ls.js +0 -9
- package/build/cli/commands/akuma/show/handler.js +0 -27
- package/build/cli/commands/akuma/show/meta.js +0 -8
- package/build/cli/commands/akuma.js +0 -186
- package/build/cli/commands/contract/amend/handler.js +0 -17
- package/build/cli/commands/contract/amend/meta.js +0 -13
- package/build/cli/commands/contract/arc/handler.js +0 -16
- package/build/cli/commands/contract/arc/meta.js +0 -28
- package/build/cli/commands/contract/audit/handler.js +0 -42
- package/build/cli/commands/contract/audit/meta.js +0 -17
- package/build/cli/commands/contract/bind/handler.js +0 -39
- package/build/cli/commands/contract/bind/meta.js +0 -96
- package/build/cli/commands/contract/catalog.js +0 -18
- package/build/cli/commands/contract/forfeit/handler.js +0 -17
- package/build/cli/commands/contract/forfeit/meta.js +0 -12
- package/build/cli/commands/contract/log/handler.js +0 -12
- package/build/cli/commands/contract/log/meta.js +0 -12
- package/build/cli/commands/contract/petition/handler.js +0 -64
- package/build/cli/commands/contract/petition/meta.js +0 -23
- package/build/cli/commands/contract/renew/handler.js +0 -65
- package/build/cli/commands/contract/renew/meta.js +0 -19
- package/build/cli/commands/metadata.js +0 -68
- package/build/cli/commands/projection/call/handler.js +0 -43
- package/build/cli/commands/projection/call/meta.js +0 -12
- package/build/cli/commands/projection/catalog.js +0 -16
- package/build/cli/commands/projection/fork/handler.js +0 -61
- package/build/cli/commands/projection/fork/meta.js +0 -12
- package/build/cli/commands/projection/history/handler.js +0 -65
- package/build/cli/commands/projection/history/meta.js +0 -9
- package/build/cli/commands/projection/kill/handler.js +0 -20
- package/build/cli/commands/projection/kill/meta.js +0 -11
- package/build/cli/commands/projection/shared.js +0 -27
- package/build/cli/commands/projection/status/handler.js +0 -42
- package/build/cli/commands/projection/status/meta.js +0 -20
- package/build/cli/commands/projection/tell/handler.js +0 -32
- package/build/cli/commands/projection/tell/meta.js +0 -12
- package/build/cli/commands/projection/wait/handler.js +0 -80
- package/build/cli/commands/projection/wait/meta.js +0 -16
- package/build/cli/commands/registry.js +0 -48
- package/build/cli/commands/shared.js +0 -74
- package/build/cli/commands/skills/catalog.js +0 -6
- package/build/cli/commands/skills/install/handler.js +0 -7
- package/build/cli/commands/skills/install/meta.js +0 -9
- package/build/cli/commands/skills/skills/handler.js +0 -4
- package/build/cli/commands/skills/skills/meta.js +0 -10
- package/build/cli/commands/system/catalog.js +0 -10
- package/build/cli/commands/system/completion/handler.js +0 -10
- package/build/cli/commands/system/completion/meta.js +0 -9
- package/build/cli/commands/system/dump-env/handler.js +0 -3
- package/build/cli/commands/system/dump-env/meta.js +0 -10
- package/build/cli/commands/system/guide/handler.js +0 -4
- package/build/cli/commands/system/guide/meta.js +0 -9
- package/build/cli/commands/task/add/handler.js +0 -38
- package/build/cli/commands/task/add/meta.js +0 -31
- package/build/cli/commands/task/catalog.js +0 -32
- package/build/cli/commands/task/compose/handler.js +0 -18
- package/build/cli/commands/task/compose/meta.js +0 -10
- package/build/cli/commands/task/doctor/handler.js +0 -3
- package/build/cli/commands/task/doctor/meta.js +0 -8
- package/build/cli/commands/task/done/handler.js +0 -10
- package/build/cli/commands/task/done/meta.js +0 -8
- package/build/cli/commands/task/drop/handler.js +0 -8
- package/build/cli/commands/task/drop/meta.js +0 -11
- package/build/cli/commands/task/hold/handler.js +0 -3
- package/build/cli/commands/task/hold/meta.js +0 -8
- package/build/cli/commands/task/log/handler.js +0 -12
- package/build/cli/commands/task/log/meta.js +0 -8
- package/build/cli/commands/task/ls/handler.js +0 -17
- package/build/cli/commands/task/ls/meta.js +0 -8
- package/build/cli/commands/task/note/handler.js +0 -6
- package/build/cli/commands/task/note/meta.js +0 -11
- package/build/cli/commands/task/resume/handler.js +0 -3
- package/build/cli/commands/task/resume/meta.js +0 -8
- package/build/cli/commands/task/shared.js +0 -181
- package/build/cli/commands/task/show/handler.js +0 -13
- package/build/cli/commands/task/show/meta.js +0 -8
- package/build/cli/commands/task/start/handler.js +0 -3
- package/build/cli/commands/task/start/meta.js +0 -8
- package/build/cli/commands/task/stop/handler.js +0 -10
- package/build/cli/commands/task/stop/meta.js +0 -8
- package/build/cli/commands/task/task/handler.js +0 -5
- package/build/cli/commands/task/task/meta.js +0 -11
- package/build/cli/commands/task/update/handler.js +0 -21
- package/build/cli/commands/task/update/meta.js +0 -12
- package/build/cli/commands/verification/handler.js +0 -43
- package/build/cli/commands/verification/meta.js +0 -13
- package/build/cli/completion.js +0 -91
- package/build/cli/draft-artifact.js +0 -50
- package/build/cli/flags.js +0 -321
- package/build/cli/help.js +0 -99
- package/build/cli/index.js +0 -333
- package/build/cli/missing-subcommand.js +0 -7
- package/build/cli/output-stream-error-policy.js +0 -31
- package/build/cli/parse-flags.js +0 -301
- package/build/cli/parse-metadata.js +0 -132
- package/build/cli/parse-selectors.js +0 -83
- package/build/cli/parse.js +0 -250
- package/build/cli/projection-address.js +0 -105
- package/build/cli/render/address.js +0 -101
- package/build/cli/render/amendment-warning.js +0 -8
- package/build/cli/render/arc.js +0 -88
- package/build/cli/render/audit.js +0 -440
- package/build/cli/render/call.js +0 -70
- package/build/cli/render/compact-text.js +0 -3
- package/build/cli/render/errors.js +0 -101
- package/build/cli/render/format.js +0 -226
- package/build/cli/render/kanshi.js +0 -300
- package/build/cli/render/kill.js +0 -9
- package/build/cli/render/lifecycle.js +0 -56
- package/build/cli/render/line-width.js +0 -103
- package/build/cli/render/misc.js +0 -84
- package/build/cli/render/path-prefix-compaction.js +0 -131
- package/build/cli/render/petition.js +0 -85
- package/build/cli/render/projection-activity.js +0 -332
- package/build/cli/render/projection-history.js +0 -77
- package/build/cli/render/response-style.js +0 -27
- package/build/cli/render/shared.js +0 -232
- package/build/cli/render/skills.js +0 -10
- package/build/cli/render/status-indicator.js +0 -47
- package/build/cli/render/status.js +0 -243
- package/build/cli/render/success-response.js +0 -95
- package/build/cli/render/task.js +0 -175
- package/build/cli/render/tell.js +0 -11
- package/build/cli/render/terminal-failure.js +0 -65
- package/build/cli/render/tool-command-normalization.js +0 -137
- package/build/cli/render/tool-ledger-rollup.js +0 -74
- package/build/cli/render/tool-presentation.js +0 -98
- package/build/cli/render/types.js +0 -2
- package/build/cli/render/verification.js +0 -23
- package/build/cli/render/wait.js +0 -343
- package/build/cli/skills-install.js +0 -348
- package/build/cli/subagent-guard.js +0 -25
- package/build/cli/types.js +0 -2
- package/build/config/akuma-loader.js +0 -240
- package/build/config/env-keys.js +0 -57
- package/build/config/env.js +0 -304
- package/build/config/provider-policy-ownership.js +0 -10
- package/build/config/settings/disease.js +0 -33
- package/build/config/settings/knobs.js +0 -14
- package/build/config/settings/loader.js +0 -275
- package/build/config/settings/provider-instance-fields.js +0 -51
- package/build/config/settings/schema.js +0 -113
- package/build/core/address-carrier.js +0 -89
- package/build/core/addressing.js +0 -407
- package/build/core/amend.js +0 -321
- package/build/core/amendment-criteria.js +0 -17
- package/build/core/amendment-warning.js +0 -10
- package/build/core/arc.js +0 -293
- package/build/core/atomic-publish.js +0 -64
- package/build/core/audit/candidate.js +0 -141
- package/build/core/audit/coordinates.js +0 -230
- package/build/core/audit/evidence.js +0 -156
- package/build/core/audit/facade.js +0 -65
- package/build/core/audit/readiness.js +0 -4
- package/build/core/audit/report.js +0 -38
- package/build/core/audit.js +0 -1
- package/build/core/bind-reconciliation.js +0 -409
- package/build/core/bind-workspace.js +0 -115
- package/build/core/bind.js +0 -503
- package/build/core/call/call.js +0 -235
- package/build/core/call/context.js +0 -210
- package/build/core/call/execution.js +0 -255
- package/build/core/call/prompt.js +0 -27
- package/build/core/call/reference.js +0 -24
- package/build/core/call-persist.js +0 -76
- package/build/core/command-markdown.js +0 -45
- package/build/core/context.js +0 -104
- package/build/core/contract-carrier-runtime.js +0 -512
- package/build/core/contract-carrier.js +0 -353
- package/build/core/contract-view.js +0 -319
- package/build/core/contract.js +0 -19
- package/build/core/derived-replay.js +0 -340
- package/build/core/draft.js +0 -400
- package/build/core/execution-coordinate.js +0 -46
- package/build/core/execution-pact.js +0 -126
- package/build/core/forfeit.js +0 -132
- package/build/core/hints.js +0 -34
- package/build/core/identifier-slug.js +0 -116
- package/build/core/ids.js +0 -90
- package/build/core/lifecycle-history.js +0 -48
- package/build/core/lifecycle-recovery.js +0 -122
- package/build/core/lifecycle-runner.js +0 -377
- package/build/core/log.js +0 -50
- package/build/core/markdown/lex.js +0 -274
- package/build/core/markdown/parser.js +0 -260
- package/build/core/markdown/render.js +0 -68
- package/build/core/markdown/sections.js +0 -80
- package/build/core/markdown/titles.js +0 -9
- package/build/core/markdown/types.js +0 -6
- package/build/core/outcome-base.js +0 -185
- package/build/core/places.js +0 -175
- package/build/core/projection/akuma-name.js +0 -43
- package/build/core/projection/generation/database.js +0 -473
- package/build/core/projection/generation/identity.js +0 -84
- package/build/core/projection/generation/ledger.js +0 -91
- package/build/core/projection/generation/model.js +0 -261
- package/build/core/projection/generation/projection-generation-continuation.js +0 -84
- package/build/core/projection/generation/projection-generation-doorbell.js +0 -88
- package/build/core/projection/generation/projection-generation-execution.js +0 -241
- package/build/core/projection/generation/projection-generation-identity.js +0 -21
- package/build/core/projection/generation/projection-generation-launcher.js +0 -154
- package/build/core/projection/generation/projection-generation-process.js +0 -47
- package/build/core/projection/generation/projection-generation-runner.js +0 -489
- package/build/core/projection/generation/projection-generation-runtime.js +0 -46
- package/build/core/projection/generation/protocol.js +0 -68
- package/build/core/projection/generation/store.js +0 -108
- package/build/core/projection/generation/transitions.js +0 -463
- package/build/core/projection/heart.js +0 -9
- package/build/core/projection/index.js +0 -28
- package/build/core/projection/projection-activity.js +0 -273
- package/build/core/projection/projection-alias.js +0 -131
- package/build/core/projection/projection-coordinate.js +0 -61
- package/build/core/projection/projection-core.js +0 -127
- package/build/core/projection/projection-execution-observer.js +0 -270
- package/build/core/projection/projection-history.js +0 -474
- package/build/core/projection/projection-identity.js +0 -11
- package/build/core/projection/projection-kill.js +0 -112
- package/build/core/projection/projection-life-observer.js +0 -101
- package/build/core/projection/projection-mint.js +0 -170
- package/build/core/projection/projection-status-observation.js +0 -434
- package/build/core/projection/projection-status.js +0 -442
- package/build/core/projection/projection-terminal-failure.js +0 -111
- package/build/core/projection/projection-wait.js +0 -337
- package/build/core/projection/projection-wake.js +0 -298
- package/build/core/projection/tell/launch-store.js +0 -244
- package/build/core/projection/tell/model.js +0 -98
- package/build/core/projection/tell/store.js +0 -245
- package/build/core/provider-loader-ports.js +0 -4
- package/build/core/registry.js +0 -100
- package/build/core/renew-build.js +0 -554
- package/build/core/renew-plan.js +0 -264
- package/build/core/renew-rewrite.js +0 -118
- package/build/core/renew.js +0 -345
- package/build/core/repository-ledger/accepted-fold-read.js +0 -22
- package/build/core/repository-ledger/accepted-tail.js +0 -116
- package/build/core/repository-ledger/admission.js +0 -38
- package/build/core/repository-ledger/authoritative-transaction.js +0 -1
- package/build/core/repository-ledger/claim-evidence.js +0 -147
- package/build/core/repository-ledger/codec.js +0 -303
- package/build/core/repository-ledger/current-state-store.js +0 -968
- package/build/core/repository-ledger/fold-repository.js +0 -374
- package/build/core/repository-ledger/fold.js +0 -248
- package/build/core/repository-ledger/git-object-store.js +0 -243
- package/build/core/repository-ledger/history-read.js +0 -15
- package/build/core/repository-ledger/identity.js +0 -60
- package/build/core/repository-ledger/incremental-read.js +0 -153
- package/build/core/repository-ledger/index.js +0 -15
- package/build/core/repository-ledger/inventory-plan.js +0 -75
- package/build/core/repository-ledger/inventory.js +0 -310
- package/build/core/repository-ledger/publication-admission.js +0 -125
- package/build/core/repository-ledger/publication.js +0 -353
- package/build/core/repository-ledger/read-model.js +0 -517
- package/build/core/repository-ledger/transaction-membership.js +0 -78
- package/build/core/repository-ledger/traversal.js +0 -404
- package/build/core/repository-ledger/write-transaction.js +0 -346
- package/build/core/response-artifact-catalog-sqlite.js +0 -112
- package/build/core/response-artifact-catalog.js +0 -7
- package/build/core/response-artifact-id.js +0 -5
- package/build/core/run-control/connection-bound-close.js +0 -41
- package/build/core/run-control/detached-lease-bootstrap.js +0 -208
- package/build/core/run-control/detached-process.js +0 -14
- package/build/core/run-control/index.js +0 -6
- package/build/core/run-control/process-tree.js +0 -139
- package/build/core/run-control/runner-lease.js +0 -172
- package/build/core/run-control/sqlite-process-lifetime-lock.js +0 -174
- package/build/core/scope.js +0 -416
- package/build/core/seal.js +0 -364
- package/build/core/settlement/claim-delivery.js +0 -82
- package/build/core/settlement/claim.js +0 -258
- package/build/core/settlement/index.js +0 -19
- package/build/core/settlement/petition-claim-gates.js +0 -247
- package/build/core/settlement/petition-forfeit.js +0 -46
- package/build/core/settlement/petition-head-guard.js +0 -12
- package/build/core/settlement/petition-io.js +0 -1
- package/build/core/settlement/petition-preview.js +0 -125
- package/build/core/settlement/petition-window.js +0 -50
- package/build/core/settlement/petition.js +0 -315
- package/build/core/settlement/queue-read-model.js +0 -120
- package/build/core/settlement/queue-seat-allocation.js +0 -65
- package/build/core/settlement/queue.js +0 -6
- package/build/core/settlement/settlement.js +0 -385
- package/build/core/settlement/verdict.js +0 -126
- package/build/core/settlement/verification.js +0 -554
- package/build/core/status/board.js +0 -455
- package/build/core/status/drift.js +0 -113
- package/build/core/status/lifecycle.js +0 -11
- package/build/core/stored-agent-event.js +0 -129
- package/build/core/structured-query.js +0 -23
- package/build/core/target-ref.js +0 -10
- package/build/core/task/board.js +0 -248
- package/build/core/task/commands.js +0 -401
- package/build/core/task/compose.js +0 -328
- package/build/core/task/coordinate.js +0 -56
- package/build/core/task/document.js +0 -273
- package/build/core/task/index.js +0 -16
- package/build/core/task/model.js +0 -8
- package/build/core/task/query.js +0 -204
- package/build/core/task/settlement-git.js +0 -423
- package/build/core/task/settlement-policy.js +0 -137
- package/build/core/task/source-board.js +0 -104
- package/build/core/task/source-model.js +0 -1
- package/build/core/task/task-bind-preparation.js +0 -243
- package/build/core/task/task-contract.js +0 -371
- package/build/core/task/task-doctor.js +0 -14
- package/build/core/task/task-file-transaction.js +0 -171
- package/build/core/task/task-git-actor.js +0 -33
- package/build/core/task/task-git-runtime.js +0 -97
- package/build/core/task/task-git-store.js +0 -400
- package/build/core/task/task-repository.js +0 -1
- package/build/core/task/task-store-repository.js +0 -97
- package/build/core/task/task-store.js +0 -1
- package/build/core/task/task-worktree.js +0 -25
- package/build/core/task/task.js +0 -7
- package/build/core/task/tree.js +0 -37
- package/build/core/task/validation.js +0 -48
- package/build/core/transcripts.js +0 -485
- package/build/core/validation.js +0 -17
- package/build/core/verification-declaration.js +0 -95
- package/build/core/worktree-bootstrap.js +0 -195
- package/build/core/worktree-path.js +0 -371
- package/build/errno.js +0 -3
- package/build/flow-error.js +0 -191
- package/build/fs/durability.js +0 -27
- package/build/fs/path-coordinate.js +0 -16
- package/build/generated/version.js +0 -3
- package/build/git/branches.js +0 -84
- package/build/git/commits.js +0 -151
- package/build/git/core.js +0 -86
- package/build/git/diff/parsers.js +0 -181
- package/build/git/diff/pathspec.js +0 -3
- package/build/git/diff/preview.js +0 -38
- package/build/git/diff/read.js +0 -105
- package/build/git/diff/structured.js +0 -127
- package/build/git/diff/types.js +0 -1
- package/build/git/path-coordinate.js +0 -17
- package/build/git/process.js +0 -229
- package/build/git/refs.js +0 -250
- package/build/git/staging.js +0 -79
- package/build/git/streaming-batch.js +0 -354
- package/build/git/worktree.js +0 -175
- package/build/index.js +0 -67
- package/build/keiyaku-constants.js +0 -2
- package/build/keiyaku.js +0 -30
- package/build/telemetry/debug-log.js +0 -40
- package/build/telemetry/logger.js +0 -48
- package/skills/keiyaku/SKILL.md +0 -46
- package/skills/keiyaku-akuma/SKILL.md +0 -97
- package/skills/keiyaku-task/SKILL.md +0 -118
- package/skills/keiyaku-workflow/SKILL.md +0 -191
- /package/build/{agents/launch-snapshot → src/body}/types.js +0 -0
- /package/build/{agents/providers/claude-agent-sdk/terms.js → src/cli/result.js} +0 -0
- /package/build/{agents/providers/codex-app-server/terms.js → src/core/decide.js} +0 -0
- /package/build/{agents/providers/opencode-sdk/terms.js → src/core/facts/offer.js} +0 -0
- /package/build/{agents/providers/pi/terms.js → src/kanshi/report.js} +0 -0
|
@@ -1,332 +0,0 @@
|
|
|
1
|
-
import { compactText } from "./compact-text.js";
|
|
2
|
-
import { displayColumns, fitVariableLine, resolveLineColumns, truncateMiddleColumns, truncateColumns } from "./line-width.js";
|
|
3
|
-
import { presentFoldedToolActivity, } from "./tool-presentation.js";
|
|
4
|
-
import { presentLedgerPath, summarizeToolLedger } from "./tool-ledger-rollup.js";
|
|
5
|
-
const TIME_GUTTER_WIDTH = 5;
|
|
6
|
-
const VERB_WIDTH = 7;
|
|
7
|
-
const SILENCE_THRESHOLD_MS = 60_000;
|
|
8
|
-
const TIMELINE_GAP_MARKER = "⋮";
|
|
9
|
-
/** Keep the renderer and its gap grammar while giving Kanshi its smaller live window. */
|
|
10
|
-
export function selectProjectionActivityWindow(activity, ordinaryRows) {
|
|
11
|
-
// A Kanshi flow narrows only the settled history window. Unfinished activity
|
|
12
|
-
// remains pinned in its timeline position; it is not another history row.
|
|
13
|
-
const selected = activity.window.slice(-ordinaryRows);
|
|
14
|
-
const selectedOrders = new Set([
|
|
15
|
-
...selected.map((row) => row.order),
|
|
16
|
-
...activity.pinned.map((row) => row.order),
|
|
17
|
-
]);
|
|
18
|
-
return {
|
|
19
|
-
activity: {
|
|
20
|
-
...activity,
|
|
21
|
-
window: selected,
|
|
22
|
-
// Turn seals are a wait concern. Kanshi's narrow operational flow contains
|
|
23
|
-
// only ordinary activity plus durable tells.
|
|
24
|
-
timeline: activity.timeline.filter((row) => selectedOrders.has(row.order)),
|
|
25
|
-
},
|
|
26
|
-
leadingOmittedCount: activity.omittedSettledCount + activity.window.length - selected.length,
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
export function formatTimelineDuration(ms) {
|
|
30
|
-
const totalSeconds = Math.max(0, Math.floor(ms / 1_000));
|
|
31
|
-
if (totalSeconds < 60)
|
|
32
|
-
return `${totalSeconds}s`;
|
|
33
|
-
const totalMinutes = Math.floor(totalSeconds / 60);
|
|
34
|
-
const seconds = totalSeconds % 60;
|
|
35
|
-
if (totalMinutes < 60)
|
|
36
|
-
return `${totalMinutes}m${String(seconds).padStart(2, "0")}s`;
|
|
37
|
-
const hours = Math.floor(totalMinutes / 60);
|
|
38
|
-
const minutes = totalMinutes % 60;
|
|
39
|
-
if (hours < 24)
|
|
40
|
-
return `${hours}h${String(minutes).padStart(2, "0")}m`;
|
|
41
|
-
const days = Math.floor(hours / 24);
|
|
42
|
-
return `${days}d${String(hours % 24).padStart(2, "0")}h`;
|
|
43
|
-
}
|
|
44
|
-
function formatActionDuration(ms) {
|
|
45
|
-
if (ms === undefined)
|
|
46
|
-
return undefined;
|
|
47
|
-
if (ms < 10_000 && ms % 1_000 !== 0)
|
|
48
|
-
return `${(ms / 1_000).toFixed(1)}s`;
|
|
49
|
-
return formatTimelineDuration(ms);
|
|
50
|
-
}
|
|
51
|
-
function elapsedLabel(anchorMs, at) {
|
|
52
|
-
const eventMs = Date.parse(at);
|
|
53
|
-
if (!Number.isFinite(eventMs))
|
|
54
|
-
return "now";
|
|
55
|
-
return formatTimelineDuration(Math.max(0, anchorMs - eventMs));
|
|
56
|
-
}
|
|
57
|
-
export function formatWallClock(at) {
|
|
58
|
-
const value = new Date(at);
|
|
59
|
-
if (!Number.isFinite(value.getTime()))
|
|
60
|
-
return " : │";
|
|
61
|
-
return `${String(value.getHours()).padStart(2, "0")}:${String(value.getMinutes()).padStart(2, "0")}│`;
|
|
62
|
-
}
|
|
63
|
-
/** One durable-tell line dialect shared by wait and the embedded Kanshi flow. */
|
|
64
|
-
export function renderPendingProjectionTell(tell, input) {
|
|
65
|
-
const createdAtMs = Date.parse(tell.createdAt);
|
|
66
|
-
const age = Math.max(0, input.anchorMs - (Number.isFinite(createdAtMs) ? createdAtMs : input.anchorMs));
|
|
67
|
-
const fixed = `${formatWallClock(tell.createdAt)} ${"told".padEnd(VERB_WIDTH)} `;
|
|
68
|
-
const tail = ` — ${formatTimelineDuration(age)}…`;
|
|
69
|
-
return `${fixed}${truncateColumns(`“${tell.text}”`, Math.max(0, input.maxColumns - displayColumns(fixed) - displayColumns(tail)))}${input.renderUnconsumedTail?.(tail) ?? tail}`;
|
|
70
|
-
}
|
|
71
|
-
function commonPrefix(left, right) {
|
|
72
|
-
const a = [...left];
|
|
73
|
-
const b = [...right];
|
|
74
|
-
let index = 0;
|
|
75
|
-
while (index < a.length && index < b.length && a[index] === b[index])
|
|
76
|
-
index += 1;
|
|
77
|
-
return a.slice(0, index).join("");
|
|
78
|
-
}
|
|
79
|
-
function compressedPrefix(prefix) {
|
|
80
|
-
const points = [...prefix];
|
|
81
|
-
if (points.length < 24)
|
|
82
|
-
return undefined;
|
|
83
|
-
let cut = -1;
|
|
84
|
-
for (let index = points.length - 1; index >= 0; index -= 1) {
|
|
85
|
-
if (points[index] === " ") {
|
|
86
|
-
cut = index;
|
|
87
|
-
break;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
if (cut < 0)
|
|
91
|
-
return undefined;
|
|
92
|
-
const stable = points.slice(0, cut).join("");
|
|
93
|
-
const stablePoints = [...stable];
|
|
94
|
-
if (stablePoints.length < 24)
|
|
95
|
-
return undefined;
|
|
96
|
-
return {
|
|
97
|
-
text: `${stablePoints.slice(0, 10).join("")}…${stablePoints.slice(-14).join("")}`,
|
|
98
|
-
resumeAt: cut + 1,
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
function timelineGutter(label, spine) {
|
|
102
|
-
return label || `${"".padStart(TIME_GUTTER_WIDTH)}${spine}`;
|
|
103
|
-
}
|
|
104
|
-
function renderTimelineGap(omittedRowCount, maxColumns) {
|
|
105
|
-
return fitVariableLine(`${timelineGutter("", TIMELINE_GAP_MARKER)} `, `${omittedRowCount} more`, maxColumns);
|
|
106
|
-
}
|
|
107
|
-
function compactTokens(value) {
|
|
108
|
-
if (value < 1_000)
|
|
109
|
-
return String(value);
|
|
110
|
-
const compact = (value / 1_000).toFixed(value < 10_000 ? 1 : 0).replace(/\.0$/, "");
|
|
111
|
-
return `${compact}k`;
|
|
112
|
-
}
|
|
113
|
-
function warningText(row) {
|
|
114
|
-
const warning = row.warning;
|
|
115
|
-
if (warning.reason === "rate-limit") {
|
|
116
|
-
return `provider rate limit exhausted${row.count > 1 ? ` (${row.count})` : ""}`;
|
|
117
|
-
}
|
|
118
|
-
if (warning.reason === "retry") {
|
|
119
|
-
const status = warning.errorStatus === null ? "no response" : String(warning.errorStatus);
|
|
120
|
-
return `provider retrying ${warning.attempt}/${warning.maxRetries} · retry in ${formatTimelineDuration(warning.retryDelayMs)} · status ${status}${row.count > 1 ? ` (${row.count})` : ""}`;
|
|
121
|
-
}
|
|
122
|
-
const modelRoute = warning.originalModel && warning.fallbackModel
|
|
123
|
-
? ` ${warning.originalModel}→${warning.fallbackModel}`
|
|
124
|
-
: warning.direction
|
|
125
|
-
? ` ${warning.direction}`
|
|
126
|
-
: "";
|
|
127
|
-
return `provider ${warning.reason}${modelRoute}${row.count > 1 ? ` (${row.count})` : ""}`;
|
|
128
|
-
}
|
|
129
|
-
function renderPlan(plan, maxColumns) {
|
|
130
|
-
const width = 5;
|
|
131
|
-
const filled = plan.total === 0 ? 0 : Math.min(width, Math.round((plan.done / plan.total) * width));
|
|
132
|
-
const bar = `${"▰".repeat(filled)}${"▱".repeat(width - filled)}`;
|
|
133
|
-
const fixed = `${"now".padStart(TIME_GUTTER_WIDTH)}│ ${"plan".padEnd(VERB_WIDTH)} ${bar} ${plan.done}/${plan.total}`;
|
|
134
|
-
return fitVariableLine(fixed, plan.activeItem ? ` → ${compactText(plan.activeItem)}` : "", maxColumns);
|
|
135
|
-
}
|
|
136
|
-
function rollupCountLabel(semanticClass) {
|
|
137
|
-
return semanticClass === "run" ? "ran" : semanticClass;
|
|
138
|
-
}
|
|
139
|
-
function summarizeProjectionToolLedger(activity, workspaceRoot) {
|
|
140
|
-
return summarizeToolLedger(activity.ledgerActivities, activity.ledgerTurns, (value) => presentLedgerPath(value, workspaceRoot));
|
|
141
|
-
}
|
|
142
|
-
function toolCountSegments(summary) {
|
|
143
|
-
return summary.counts.map(({ semanticClass, count }) => `${count} ${rollupCountLabel(semanticClass)}`);
|
|
144
|
-
}
|
|
145
|
-
function projectionSummarySegments(summary) {
|
|
146
|
-
const segments = toolCountSegments(summary);
|
|
147
|
-
if (summary.tokens !== undefined) {
|
|
148
|
-
segments.push(`${compactTokens(summary.tokens)} tok`);
|
|
149
|
-
}
|
|
150
|
-
if (summary.costUsd !== undefined) {
|
|
151
|
-
segments.push(`$${summary.costUsd.toFixed(2)}`);
|
|
152
|
-
}
|
|
153
|
-
return segments;
|
|
154
|
-
}
|
|
155
|
-
export function renderProjectionActivitySummary(activity, input) {
|
|
156
|
-
const summary = summarizeProjectionToolLedger(activity, input.workspaceRoot);
|
|
157
|
-
const segments = projectionSummarySegments(summary);
|
|
158
|
-
if (segments.length === 0)
|
|
159
|
-
return undefined;
|
|
160
|
-
const spine = input.state === "dead" || input.state === "lost" ? "┆" : "│";
|
|
161
|
-
return fitVariableLine(`${"".padStart(TIME_GUTTER_WIDTH)}${spine} `, segments.join(" · "), input.maxColumns ?? resolveLineColumns());
|
|
162
|
-
}
|
|
163
|
-
function renderTerminalRollup(activity, input) {
|
|
164
|
-
const summary = summarizeProjectionToolLedger(activity, input.workspaceRoot);
|
|
165
|
-
const segments = projectionSummarySegments(summary);
|
|
166
|
-
const rows = input.diagnostic
|
|
167
|
-
? [{
|
|
168
|
-
kind: "diagnostic",
|
|
169
|
-
line: fitVariableLine(`${elapsedLabel(input.anchorMs, input.diagnostic.at).padStart(TIME_GUTTER_WIDTH)}┆ ${"warning".padEnd(VERB_WIDTH)} `, compactText(input.diagnostic.text), input.maxColumns),
|
|
170
|
-
}]
|
|
171
|
-
: [];
|
|
172
|
-
const endPrefix = `${"end".padStart(TIME_GUTTER_WIDTH)}└`;
|
|
173
|
-
rows.push({
|
|
174
|
-
kind: "end-anchor",
|
|
175
|
-
line: segments.length > 0
|
|
176
|
-
? fitVariableLine(`${endPrefix} `, segments.join(" · "), input.maxColumns)
|
|
177
|
-
: endPrefix,
|
|
178
|
-
});
|
|
179
|
-
if (input.includeFiles !== false) {
|
|
180
|
-
for (const file of summary.files) {
|
|
181
|
-
const repeat = file.count > 1 ? ` ×${file.count}` : "";
|
|
182
|
-
const diffstat = file.diffstat ? ` +${file.diffstat.additions} −${file.diffstat.deletions}` : "";
|
|
183
|
-
rows.push({ kind: "file", line: fitVariableLine("", `${file.path}${repeat}${diffstat}`, input.maxColumns) });
|
|
184
|
-
}
|
|
185
|
-
if (summary.hiddenFileCount > 0) {
|
|
186
|
-
rows.push({ kind: "file", line: fitVariableLine("", `… ${summary.hiddenFileCount} more files`, input.maxColumns) });
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
return { rows, hasMutationFiles: summary.files.length > 0 };
|
|
190
|
-
}
|
|
191
|
-
function timelineEntries(activity) {
|
|
192
|
-
const entries = [];
|
|
193
|
-
for (const row of activity.timeline) {
|
|
194
|
-
if (row.kind === "ran") {
|
|
195
|
-
for (const observation of row.observations) {
|
|
196
|
-
if (observation.order !== row.order)
|
|
197
|
-
entries.push({ kind: "clock", order: observation.order, at: observation.at });
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
entries.push({ kind: "row", order: row.order, at: row.at, row });
|
|
201
|
-
}
|
|
202
|
-
return entries.sort((left, right) => left.order - right.order);
|
|
203
|
-
}
|
|
204
|
-
export function renderProjectionActivity(activity, input) {
|
|
205
|
-
const lines = [];
|
|
206
|
-
const rowKinds = [];
|
|
207
|
-
const rowAts = [];
|
|
208
|
-
let priorAtMs;
|
|
209
|
-
let priorMinute;
|
|
210
|
-
let priorCompletedRan;
|
|
211
|
-
let hasEndAnchor = false;
|
|
212
|
-
let lastRunningTool;
|
|
213
|
-
const interrupted = input.state === "dead" || input.state === "lost" || input.state === "dismissed";
|
|
214
|
-
const maxColumns = input.maxColumns ?? resolveLineColumns();
|
|
215
|
-
const entries = timelineEntries(activity);
|
|
216
|
-
const gapBeforeOrder = input.leadingOmittedCount ? activity.window[0]?.order : undefined;
|
|
217
|
-
let gapEmitted = false;
|
|
218
|
-
const pushRow = (line, kind, at) => {
|
|
219
|
-
lines.push(line);
|
|
220
|
-
rowKinds.push(kind);
|
|
221
|
-
rowAts.push(at);
|
|
222
|
-
return true;
|
|
223
|
-
};
|
|
224
|
-
for (let index = 0; index < entries.length; index += 1) {
|
|
225
|
-
const entry = entries[index];
|
|
226
|
-
const atMs = Date.parse(entry.at);
|
|
227
|
-
if (entry.kind === "clock") {
|
|
228
|
-
if (Number.isFinite(atMs))
|
|
229
|
-
priorAtMs = atMs;
|
|
230
|
-
continue;
|
|
231
|
-
}
|
|
232
|
-
if (!gapEmitted && input.leadingOmittedCount && gapBeforeOrder !== undefined && entry.row.order >= gapBeforeOrder) {
|
|
233
|
-
pushRow(renderTimelineGap(input.leadingOmittedCount, maxColumns), "activity", entry.at);
|
|
234
|
-
gapEmitted = true;
|
|
235
|
-
}
|
|
236
|
-
if (input.showSilence !== false && priorAtMs !== undefined && Number.isFinite(atMs) && atMs - priorAtMs >= SILENCE_THRESHOLD_MS) {
|
|
237
|
-
pushRow(fitVariableLine(`${"".padStart(TIME_GUTTER_WIDTH)}┆ `, `${formatTimelineDuration(atMs - priorAtMs)} pass in silence`, maxColumns), "silence", entry.at);
|
|
238
|
-
}
|
|
239
|
-
if (Number.isFinite(atMs))
|
|
240
|
-
priorAtMs = atMs;
|
|
241
|
-
const row = entry.row;
|
|
242
|
-
const minute = row.kind === "turn" ? "" : formatWallClock(row.at);
|
|
243
|
-
const label = row.kind === "turn" || minute === priorMinute ? "" : minute;
|
|
244
|
-
if (minute)
|
|
245
|
-
priorMinute = minute;
|
|
246
|
-
const spine = row.kind === "turn"
|
|
247
|
-
? "├"
|
|
248
|
-
: interrupted
|
|
249
|
-
? "┆"
|
|
250
|
-
: "│";
|
|
251
|
-
if (row.kind === "ran") {
|
|
252
|
-
const duration = formatActionDuration(row.durationMs);
|
|
253
|
-
const activityState = row.state === "completed"
|
|
254
|
-
? "completed"
|
|
255
|
-
: interrupted
|
|
256
|
-
? "interrupted"
|
|
257
|
-
: input.state === "stalled" || input.state === "unknown"
|
|
258
|
-
? "unresolved"
|
|
259
|
-
: "running";
|
|
260
|
-
const presentation = presentFoldedToolActivity(row, { state: activityState, ...(duration ? { duration } : {}) }, (value) => presentLedgerPath(value, input.workspaceRoot) ?? value);
|
|
261
|
-
const fixed = `${timelineGutter(label, spine)} ${(presentation.semanticClass === "run" ? "ran" : presentation.semanticClass).padEnd(VERB_WIDTH)} `;
|
|
262
|
-
let variable = presentation.variableText;
|
|
263
|
-
if (row.state === "completed" && priorCompletedRan !== undefined) {
|
|
264
|
-
const common = commonPrefix(priorCompletedRan, variable);
|
|
265
|
-
const prefix = compressedPrefix(common);
|
|
266
|
-
if (prefix) {
|
|
267
|
-
variable = `${prefix.text} ${[...variable].slice(prefix.resumeAt).join("")}`;
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
priorCompletedRan = row.state === "completed" ? presentation.variableText : undefined;
|
|
271
|
-
const budget = Math.max(0, maxColumns - displayColumns(fixed) - displayColumns(presentation.fixedSuffix));
|
|
272
|
-
pushRow(`${fixed}${truncateMiddleColumns(variable, budget)}${presentation.fixedSuffix}`, "activity", entry.at);
|
|
273
|
-
continue;
|
|
274
|
-
}
|
|
275
|
-
if (row.kind === "said") {
|
|
276
|
-
priorCompletedRan = undefined;
|
|
277
|
-
pushRow(fitVariableLine(`${timelineGutter(label, spine)} ${"said".padEnd(VERB_WIDTH)} `, `“${compactText(row.text)}”`, maxColumns), "activity", entry.at);
|
|
278
|
-
}
|
|
279
|
-
else if (row.kind === "thought") {
|
|
280
|
-
priorCompletedRan = undefined;
|
|
281
|
-
const text = `${compactText(row.text)}${row.truncated && !row.text.endsWith("…") ? "…" : ""}`;
|
|
282
|
-
const duration = formatActionDuration(row.durationMs);
|
|
283
|
-
pushRow(fitVariableLine(`${timelineGutter(label, spine)} ${"thought".padEnd(VERB_WIDTH)} `, `${duration ? `${duration} — ` : ""}“${text}”`, maxColumns), "activity", entry.at);
|
|
284
|
-
}
|
|
285
|
-
else if (row.kind === "warning") {
|
|
286
|
-
priorCompletedRan = undefined;
|
|
287
|
-
pushRow(fitVariableLine(`${timelineGutter(label, spine)} ${"warning".padEnd(VERB_WIDTH)} `, warningText(row), maxColumns), "activity", entry.at);
|
|
288
|
-
}
|
|
289
|
-
else {
|
|
290
|
-
priorCompletedRan = undefined;
|
|
291
|
-
const usage = row.inputTokens !== undefined && row.outputTokens !== undefined
|
|
292
|
-
? ` · ${compactTokens(row.inputTokens)}▸${compactTokens(row.outputTokens)} tok`
|
|
293
|
-
: "";
|
|
294
|
-
const cost = row.costUsd !== undefined ? ` · $${row.costUsd.toFixed(2)}` : "";
|
|
295
|
-
pushRow(fitVariableLine(`${"".padStart(TIME_GUTTER_WIDTH)}├ `, `turn ${row.turn}${usage}${cost}`, maxColumns), "activity", entry.at);
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
for (const row of activity.pinned) {
|
|
299
|
-
if (row.kind === "ran" && row.state === "running")
|
|
300
|
-
lastRunningTool = compactText(row.tool);
|
|
301
|
-
}
|
|
302
|
-
if (input.showPlan && activity.plan) {
|
|
303
|
-
const planAtMs = Date.parse(activity.plan.at);
|
|
304
|
-
if (input.showSilence !== false && priorAtMs !== undefined && Number.isFinite(planAtMs) && planAtMs - priorAtMs >= SILENCE_THRESHOLD_MS) {
|
|
305
|
-
pushRow(fitVariableLine(`${"".padStart(TIME_GUTTER_WIDTH)}┆ `, `${formatTimelineDuration(planAtMs - priorAtMs)} pass in silence`, maxColumns), "silence", activity.plan.at);
|
|
306
|
-
}
|
|
307
|
-
pushRow(renderPlan(activity.plan, maxColumns), "plan", activity.plan.at);
|
|
308
|
-
}
|
|
309
|
-
let hasMutationFiles = false;
|
|
310
|
-
if (["returned", "dead", "lost", "dismissed"].includes(input.state)) {
|
|
311
|
-
const rollup = renderTerminalRollup(activity, {
|
|
312
|
-
anchorMs: input.anchorMs,
|
|
313
|
-
...(input.workspaceRoot ? { workspaceRoot: input.workspaceRoot } : {}),
|
|
314
|
-
...(input.terminalDiagnostic ? { diagnostic: input.terminalDiagnostic } : {}),
|
|
315
|
-
includeFiles: input.showTerminalFiles !== false,
|
|
316
|
-
maxColumns,
|
|
317
|
-
});
|
|
318
|
-
for (const row of rollup.rows) {
|
|
319
|
-
pushRow(row.line, row.kind, new Date(input.anchorMs).toISOString());
|
|
320
|
-
}
|
|
321
|
-
hasEndAnchor = true;
|
|
322
|
-
hasMutationFiles = rollup.hasMutationFiles;
|
|
323
|
-
}
|
|
324
|
-
return {
|
|
325
|
-
lines,
|
|
326
|
-
rowKinds,
|
|
327
|
-
rowAts,
|
|
328
|
-
...(lastRunningTool ? { lastRunningTool } : {}),
|
|
329
|
-
hasEndAnchor,
|
|
330
|
-
hasMutationFiles,
|
|
331
|
-
};
|
|
332
|
-
}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { renderProjectionActivity } from "./projection-activity.js";
|
|
2
|
-
function fact(value) {
|
|
3
|
-
return value ?? "unavailable";
|
|
4
|
-
}
|
|
5
|
-
function consequenceLines(run) {
|
|
6
|
-
const consequences = run.consequences;
|
|
7
|
-
if (consequences === null)
|
|
8
|
-
return [];
|
|
9
|
-
if (consequences.retention === "unavailable") {
|
|
10
|
-
return [`consequences: unavailable · ${consequences.reason}`];
|
|
11
|
-
}
|
|
12
|
-
const retained = (name, value, detail) => value.retention === "retained" ? `${name}: retained · ${detail}` : `${name}: unavailable · ${value.reason}`;
|
|
13
|
-
return [
|
|
14
|
-
`review: unavailable · ${consequences.review.reason}`,
|
|
15
|
-
retained("petition", consequences.petition, consequences.petition.retention === "retained" ? `${consequences.petition.intent} · ${consequences.petition.objectId}` : ""),
|
|
16
|
-
retained("verdict", consequences.verdict, consequences.verdict.retention === "retained" ? `${consequences.verdict.result} · ${consequences.verdict.objectId}` : ""),
|
|
17
|
-
retained("claim", consequences.claim, consequences.claim.retention === "retained" ? `${consequences.claim.objectId} · ${consequences.claim.mergeCommit}` : ""),
|
|
18
|
-
retained("landed commit", consequences.landedCommit, consequences.landedCommit.retention === "retained" ? consequences.landedCommit.commit : ""),
|
|
19
|
-
];
|
|
20
|
-
}
|
|
21
|
-
function runLines(run) {
|
|
22
|
-
return [
|
|
23
|
-
`${run.id}${run.alias ? ` (${run.alias})` : ""} · ${run.outcome}`,
|
|
24
|
-
`akuma: ${fact(run.akuma)} · provider: ${fact(run.provider)}${run.pid === null ? "" : ` · pid: ${run.pid}`} · role: ${run.role}`,
|
|
25
|
-
`contract: ${fact(run.contractId)}`,
|
|
26
|
-
`created: ${fact(run.mintedAt)}${run.terminalAt ? ` · terminal: ${run.terminalAt}` : ""}`,
|
|
27
|
-
...(run.generation ? [`generation: ${run.generation.executionId} · created: ${run.generation.createdAt}${run.generation.adoptedAt ? ` · adopted: ${run.generation.adoptedAt}` : ""}`] : []),
|
|
28
|
-
`activity: ${run.activityRetention} · ${run.activityCount} retained${run.activityRange ? ` · ${run.activityRange.first}-${run.activityRange.last}` : ""}`,
|
|
29
|
-
...(run.telemetry ? [`telemetry: ${run.telemetry.inputTokens} in · ${run.telemetry.outputTokens} out${run.telemetry.cachedInputTokens !== undefined ? ` · ${run.telemetry.cachedInputTokens} cached` : ""}${run.telemetry.costUsd !== undefined ? ` · $${run.telemetry.costUsd.toFixed(2)}` : ""}`] : []),
|
|
30
|
-
...(run.artifact ? [`artifact: ${fact(run.artifact.id)} · ${run.artifact.retention}${run.artifact.path ? ` · path: ${run.artifact.path}` : ""}`] : []),
|
|
31
|
-
...(run.terminalAnswer ? [`answer: ${run.terminalAnswer.text}`] : []),
|
|
32
|
-
...consequenceLines(run),
|
|
33
|
-
...run.diagnostics.map((diagnostic) => `diagnostic: ${diagnostic}`),
|
|
34
|
-
];
|
|
35
|
-
}
|
|
36
|
-
export function renderProjectionHistoryList(runs, pagination) {
|
|
37
|
-
const lines = runs.flatMap((run, index) => index === 0 ? runLines(run) : ["", ...runLines(run)]);
|
|
38
|
-
if (!pagination)
|
|
39
|
-
return lines.join("\n");
|
|
40
|
-
const range = runs.length === 0
|
|
41
|
-
? "none"
|
|
42
|
-
: `${pagination.offset}-${pagination.offset + runs.length - 1}`;
|
|
43
|
-
return [...lines, ...(lines.length > 0 ? [""] : []), `entries: ${range} of ${pagination.total}${pagination.nextOffset === null ? "" : ` · next offset: ${pagination.nextOffset}`}`].join("\n");
|
|
44
|
-
}
|
|
45
|
-
export function renderProjectionHistoryDetail(detail, entry) {
|
|
46
|
-
const lines = runLines(detail);
|
|
47
|
-
if (entry) {
|
|
48
|
-
return [...lines, "", `entry: ${entry.index}`, `event: ${JSON.stringify(entry.event)}`,
|
|
49
|
-
...(entry.raw ? [`raw: ${entry.raw.retention} · ${entry.raw.reason}`] : []),
|
|
50
|
-
].join("\n");
|
|
51
|
-
}
|
|
52
|
-
if (!detail.activity || detail.activity.retainedTimeline.length === 0) {
|
|
53
|
-
return lines.join("\n");
|
|
54
|
-
}
|
|
55
|
-
const state = detail.outcome === "done" ? "returned"
|
|
56
|
-
: detail.outcome === "out" ? "running"
|
|
57
|
-
: detail.outcome === "failed" || detail.outcome === "dead" ? "dead"
|
|
58
|
-
: detail.outcome === "lost" ? "lost"
|
|
59
|
-
: detail.outcome === "killed" || detail.outcome === "dismissed" ? "dismissed"
|
|
60
|
-
: detail.outcome === "startup-timeout" ? "stalled"
|
|
61
|
-
: "unknown";
|
|
62
|
-
const activity = renderProjectionActivity({
|
|
63
|
-
...detail.activity,
|
|
64
|
-
timeline: detail.activity.retainedTimeline,
|
|
65
|
-
omittedSettledCount: 0,
|
|
66
|
-
}, {
|
|
67
|
-
anchorMs: Date.now(),
|
|
68
|
-
state,
|
|
69
|
-
showPlan: false,
|
|
70
|
-
showSilence: false,
|
|
71
|
-
showTerminalFiles: false,
|
|
72
|
-
});
|
|
73
|
-
return [...lines, "", ...activity.lines].join("\n");
|
|
74
|
-
}
|
|
75
|
-
export function projectionHistoryJson(value) {
|
|
76
|
-
return `${JSON.stringify(value)}\n`;
|
|
77
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
export const RESPONSE_MARKERS = {
|
|
2
|
-
arc: "◆",
|
|
3
|
-
claim: "✓",
|
|
4
|
-
forfeit: "✗",
|
|
5
|
-
// Top-level outcome marker for failed calls.
|
|
6
|
-
failure: "✕",
|
|
7
|
-
};
|
|
8
|
-
export const DIFF_OVERVIEW_SECTION_TITLE = "Diff Overview";
|
|
9
|
-
export const BIND_RULES_SECTION_TITLE = "Rules (Project Level)";
|
|
10
|
-
export const WARNING_SECTION_TITLE = "Warning";
|
|
11
|
-
export const SECTION_ICONS = {
|
|
12
|
-
keiyaku: "·",
|
|
13
|
-
contract: "·",
|
|
14
|
-
goal: "▸",
|
|
15
|
-
rules: "!",
|
|
16
|
-
[BIND_RULES_SECTION_TITLE.toLowerCase()]: "!",
|
|
17
|
-
criteria: "✓",
|
|
18
|
-
context: "·",
|
|
19
|
-
summary: "·",
|
|
20
|
-
"diff overview": "±",
|
|
21
|
-
info: "i",
|
|
22
|
-
[WARNING_SECTION_TITLE.toLowerCase()]: "!",
|
|
23
|
-
blocked: "⊘",
|
|
24
|
-
// Detail-section marker for the ERROR block.
|
|
25
|
-
error: "‼",
|
|
26
|
-
hints: "…",
|
|
27
|
-
};
|
|
@@ -1,232 +0,0 @@
|
|
|
1
|
-
import { KEIYAKU_FILE } from "../../keiyaku.js";
|
|
2
|
-
import { isCompleteLifecycleOutcome } from "../../core/outcome-base.js";
|
|
3
|
-
import { commissionSlug, formatCommissionCoordinate } from "../../core/ids.js";
|
|
4
|
-
import { assembleResponse, buildSection, DISPLAY_TEXT_MAX_CHARS, FORMAT_LIST_MAX_ITEM_CHARS, FORMAT_LIST_MAX_ITEMS, formatMaybe, formatWarnings, shellQuote, truncateForDisplay, } from "./format.js";
|
|
5
|
-
import { WARNING_SECTION_TITLE } from "./response-style.js";
|
|
6
|
-
import { prependAddressReceipt } from "./address.js";
|
|
7
|
-
import { renderPathPreview, renderPatternPair } from "./path-prefix-compaction.js";
|
|
8
|
-
export function textResponse(text) {
|
|
9
|
-
const payload = {};
|
|
10
|
-
return {
|
|
11
|
-
text,
|
|
12
|
-
payload,
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
/** Carrier boundary: data must already be a named command payload assignable to JsonObject. */
|
|
16
|
-
export function coreTextResponse(text, data) {
|
|
17
|
-
return {
|
|
18
|
-
text,
|
|
19
|
-
payload: data,
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
export async function renderCoreResult(work, render) {
|
|
23
|
-
return render(await work);
|
|
24
|
-
}
|
|
25
|
-
export function buildBindDraftResponse(draftPath) {
|
|
26
|
-
const payload = { draftPath };
|
|
27
|
-
return coreTextResponse(`Draft saved to ${draftPath}.`, payload);
|
|
28
|
-
}
|
|
29
|
-
export function buildBindPreviewResponse(result) {
|
|
30
|
-
const overlapWarnings = renderScopeOverlapWarnings(result.scopeOverlaps);
|
|
31
|
-
const payload = {
|
|
32
|
-
id: result.id,
|
|
33
|
-
canonicalDraft: result.canonicalDraft,
|
|
34
|
-
target: result.target,
|
|
35
|
-
place: result.place,
|
|
36
|
-
workspace: result.workspace,
|
|
37
|
-
after: result.after,
|
|
38
|
-
warnings: overlapWarnings,
|
|
39
|
-
scopeOverlaps: result.scopeOverlaps,
|
|
40
|
-
};
|
|
41
|
-
return {
|
|
42
|
-
...coreTextResponse(result.canonicalDraft, payload),
|
|
43
|
-
...(overlapWarnings.length > 0 ? { stderr: ["Warnings:", ...overlapWarnings].join("\n") } : {}),
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
export function buildBindResponse(result, cwd) {
|
|
47
|
-
void cwd;
|
|
48
|
-
const overlapWarnings = renderScopeOverlapWarnings(result.scopeOverlaps);
|
|
49
|
-
const place = result.place;
|
|
50
|
-
const payload = {
|
|
51
|
-
id: result.id,
|
|
52
|
-
ref: result.ref,
|
|
53
|
-
worktreePath: result.worktreePath,
|
|
54
|
-
workspace: result.workspace,
|
|
55
|
-
place: result.place,
|
|
56
|
-
target: result.target,
|
|
57
|
-
ledgerHead: result.ledgerHead,
|
|
58
|
-
warnings: overlapWarnings,
|
|
59
|
-
scopeOverlaps: result.scopeOverlaps,
|
|
60
|
-
...(result.branch ? { branch: result.branch } : {}),
|
|
61
|
-
};
|
|
62
|
-
return coreTextResponse([
|
|
63
|
-
`Bound${place ? ` @${place}` : ""} · commission ${result.id} · target ${result.target}`,
|
|
64
|
-
...(overlapWarnings.length > 0 ? ["Warnings:", ...overlapWarnings] : []),
|
|
65
|
-
].join("\n"), payload);
|
|
66
|
-
}
|
|
67
|
-
export function buildContainedBindResponse(result) {
|
|
68
|
-
const payload = {
|
|
69
|
-
family: result.family,
|
|
70
|
-
completion: result.completion,
|
|
71
|
-
committed: result.committed,
|
|
72
|
-
heads: result.heads,
|
|
73
|
-
reconciliationKey: result.reconciliationKey,
|
|
74
|
-
prerequisites: result.prerequisites,
|
|
75
|
-
downstream: result.downstream,
|
|
76
|
-
replay: result.replay,
|
|
77
|
-
carrier: result.carrier,
|
|
78
|
-
cancellationObserved: result.cancellationObserved,
|
|
79
|
-
};
|
|
80
|
-
return coreTextResponse(`Bind committed with incomplete replay · head ${result.committed.head} · reconcile ${result.reconciliationKey}`, payload);
|
|
81
|
-
}
|
|
82
|
-
export function buildBindOutcomeResponse(result, cwd) {
|
|
83
|
-
return isCompleteLifecycleOutcome(result)
|
|
84
|
-
? buildBindResponse(result, cwd)
|
|
85
|
-
: buildContainedBindResponse(result);
|
|
86
|
-
}
|
|
87
|
-
function renderScopeOverlapWarnings(overlaps) {
|
|
88
|
-
const overlapsByCounterparty = new Map();
|
|
89
|
-
for (const overlap of overlaps) {
|
|
90
|
-
const counterparty = overlap.contracts[1];
|
|
91
|
-
const group = overlapsByCounterparty.get(counterparty);
|
|
92
|
-
if (group)
|
|
93
|
-
group.push(overlap);
|
|
94
|
-
else
|
|
95
|
-
overlapsByCounterparty.set(counterparty, [overlap]);
|
|
96
|
-
}
|
|
97
|
-
return [...overlapsByCounterparty.entries()].map(([contractId, overlaps]) => renderScopeOverlapGroup(commissionSlug(contractId), overlaps));
|
|
98
|
-
}
|
|
99
|
-
function renderScopeOverlapGroup(contractAddr, overlaps) {
|
|
100
|
-
const nextAddr = commissionSlug(overlaps[0].contracts[0]);
|
|
101
|
-
const pairs = overlaps.flatMap((overlap) => {
|
|
102
|
-
const [nextPattern, existingPattern] = overlap.patterns;
|
|
103
|
-
const patternPair = renderPatternPair(nextAddr, nextPattern, contractAddr, existingPattern);
|
|
104
|
-
const evidence = overlap.kind === "potential"
|
|
105
|
-
? ["potential · no current tracked path proves it"]
|
|
106
|
-
: renderPathPreview(overlap.paths);
|
|
107
|
-
return [...patternPair, ...evidence].map((line) => ` ${line}`);
|
|
108
|
-
});
|
|
109
|
-
return [
|
|
110
|
-
`▲ overlap ${nextAddr} ↔ ${contractAddr}`,
|
|
111
|
-
...pairs,
|
|
112
|
-
` consider --after ${contractAddr}`,
|
|
113
|
-
].join("\n");
|
|
114
|
-
}
|
|
115
|
-
export function buildForfeitResponse(result) {
|
|
116
|
-
const { address: _address, ...resultData } = result;
|
|
117
|
-
const payload = resultData;
|
|
118
|
-
const place = result.address.binding.kind === "commission"
|
|
119
|
-
? (result.address.place?.display ?? null)
|
|
120
|
-
: null;
|
|
121
|
-
const coordinate = formatCommissionCoordinate({ commissionId: result.contractId, place });
|
|
122
|
-
const base = `Forfeited ${coordinate}.`;
|
|
123
|
-
const warnings = [
|
|
124
|
-
...(result.cleanup.worktreeRemoveFailure
|
|
125
|
-
? [
|
|
126
|
-
`Could not remove contract worktree ${result.cleanup.worktreeRemoveFailure.path}: ${result.cleanup.worktreeRemoveFailure.reason}`,
|
|
127
|
-
]
|
|
128
|
-
: []),
|
|
129
|
-
...(result.cleanup.deliveryRef.status === "mismatch"
|
|
130
|
-
? [`Delivery ref ${result.cleanup.deliveryRef.mismatch.ref} remains present at ${result.cleanup.deliveryRef.mismatch.observed.head}; terminal replay preserved it as a projected-surface mismatch.`]
|
|
131
|
-
: []),
|
|
132
|
-
];
|
|
133
|
-
if (warnings.length === 0) {
|
|
134
|
-
return prependAddressReceipt(coreTextResponse(base, payload), result.address);
|
|
135
|
-
}
|
|
136
|
-
const warningSection = buildSection(WARNING_SECTION_TITLE, formatWarnings(warnings));
|
|
137
|
-
return prependAddressReceipt(coreTextResponse(assembleResponse(base, "", [warningSection].filter((section) => section !== null)), payload), result.address);
|
|
138
|
-
}
|
|
139
|
-
export const RULES_SECTION_MAX_CHARS = 5000;
|
|
140
|
-
export const INFO_SECTION_TITLE = "Info";
|
|
141
|
-
export const HINTS_SECTION_TITLE = "Hints";
|
|
142
|
-
export const REVIEW_SECTION_TITLE = "Review";
|
|
143
|
-
export const STATUS_KEIYAKU_SECTION_TITLE = "Keiyaku";
|
|
144
|
-
export const STATUS_WORKTREE_SECTION_TITLE = "Worktree";
|
|
145
|
-
export const STATUS_COMMANDS_SECTION_TITLE = "Commands";
|
|
146
|
-
export const CONTENT_SECTION_TITLE = "Content";
|
|
147
|
-
export const STATUS_ACTIVE_SUMMARY_PREFIX = "● Active";
|
|
148
|
-
export const STATUS_INACTIVE_SUMMARY = "○ Inactive";
|
|
149
|
-
export const SAVED_TO_PREFIX = "Saved to";
|
|
150
|
-
export const INFO_AKUMA_MAX_CHARS = 120;
|
|
151
|
-
export const INFO_FROM_DRAFT_MAX_CHARS = 300;
|
|
152
|
-
export const EXISTING_BRANCHES_MAX_ITEMS = FORMAT_LIST_MAX_ITEMS;
|
|
153
|
-
export const INFO_BRANCH_MAX_CHARS = 200;
|
|
154
|
-
export const INFO_COMMIT_MAX_CHARS = 100;
|
|
155
|
-
export const INFO_PLEA_MAX_CHARS = 220;
|
|
156
|
-
export const DROPPED_CHANGES_MAX_ITEMS = FORMAT_LIST_MAX_ITEMS;
|
|
157
|
-
export const HINTS_LIST_MAX_ITEMS = 12;
|
|
158
|
-
export const STATUS_PREVIEW_MAX_CHARS = 400;
|
|
159
|
-
export const BIND_PROTOCOL_FILES_CREATED = [KEIYAKU_FILE];
|
|
160
|
-
export const BIND_PROTOCOL_FILES_LABEL = "Protocol Files";
|
|
161
|
-
export function formatReview(review) {
|
|
162
|
-
const lines = [
|
|
163
|
-
`Review ${review.review}: ${review.result}`,
|
|
164
|
-
...formatMaybe("See", review.historyPath, FORMAT_LIST_MAX_ITEM_CHARS),
|
|
165
|
-
];
|
|
166
|
-
if (review.findings?.trim()) {
|
|
167
|
-
lines.push("", truncateForDisplay(review.findings, DISPLAY_TEXT_MAX_CHARS));
|
|
168
|
-
}
|
|
169
|
-
return lines;
|
|
170
|
-
}
|
|
171
|
-
export function toReviewPayload(review) {
|
|
172
|
-
return {
|
|
173
|
-
review: review.review,
|
|
174
|
-
result: review.result,
|
|
175
|
-
...(review.historyPath ? { historyPath: review.historyPath } : {}),
|
|
176
|
-
...(review.findings ? { findings: review.findings } : {}),
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
export function formatPersistenceSummary(responsePath) {
|
|
180
|
-
if (!responsePath)
|
|
181
|
-
return "";
|
|
182
|
-
return `${SAVED_TO_PREFIX} ${responsePath}.`;
|
|
183
|
-
}
|
|
184
|
-
export function formatCallCompletionHeading(projection) {
|
|
185
|
-
switch (projection?.phase) {
|
|
186
|
-
case "active":
|
|
187
|
-
case "quiescent": return "still out there";
|
|
188
|
-
case "done": return "returned";
|
|
189
|
-
case "failed": return "dead";
|
|
190
|
-
case "dismissed": return "dismissed";
|
|
191
|
-
case "lost": return undefined;
|
|
192
|
-
default: return "no record of this akuma";
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
/** Machine-generated durable fork command: artifactId + explicit repository coordinate. */
|
|
196
|
-
export function formatDurableReviveCommand(input) {
|
|
197
|
-
return input.repositoryCoordinate
|
|
198
|
-
? `keiyaku fork ${input.artifactId} --repo ${shellQuote(input.repositoryCoordinate)}`
|
|
199
|
-
: `keiyaku fork ${input.artifactId}`;
|
|
200
|
-
}
|
|
201
|
-
export function formatTellCommand(projectionId, body) {
|
|
202
|
-
return `keiyaku tell ${projectionId} [--wait DURATION] ${body}`;
|
|
203
|
-
}
|
|
204
|
-
export function projectionRejoinHintLines(projectionId) {
|
|
205
|
-
return [
|
|
206
|
-
"Come back for the result:",
|
|
207
|
-
` » keiyaku wait ${projectionId} [--timeout DURATION]`,
|
|
208
|
-
"Steer it while it works:",
|
|
209
|
-
` » ${formatTellCommand(projectionId, '"your words"')}`,
|
|
210
|
-
];
|
|
211
|
-
}
|
|
212
|
-
export function formatCallNextAction(input) {
|
|
213
|
-
if (input.projection?.phase === "active") {
|
|
214
|
-
return projectionRejoinHintLines(input.projection.id).join("\n");
|
|
215
|
-
}
|
|
216
|
-
if (input.projection?.phase === "done") {
|
|
217
|
-
return [
|
|
218
|
-
"The akuma is back.",
|
|
219
|
-
...(input.artifactId ? [`record: ${input.artifactId}`] : []),
|
|
220
|
-
"talk to it:",
|
|
221
|
-
` » ${formatTellCommand(input.projection.id, '"your words"')}`,
|
|
222
|
-
].join("\n");
|
|
223
|
-
}
|
|
224
|
-
return "» keiyaku status";
|
|
225
|
-
}
|
|
226
|
-
export function appendPersistenceSummary(base, responsePath) {
|
|
227
|
-
const persistence = formatPersistenceSummary(responsePath);
|
|
228
|
-
return persistence ? `${base} ${persistence}` : base;
|
|
229
|
-
}
|
|
230
|
-
export function formatUnavailableReasons(reasons) {
|
|
231
|
-
return reasons.map((reason) => reason.trim().replace(/[.。]+$/, "")).join("; ");
|
|
232
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/** Skills install success receipt: target rows plus optional warning block. */
|
|
2
|
-
export function renderSkillsInstallReceipt(result) {
|
|
3
|
-
return [
|
|
4
|
-
"Installed official Keiyaku skills:",
|
|
5
|
-
...result.targets.map((target) => `- ${target.path} -> ${target.source} (${target.status})`),
|
|
6
|
-
...(result.warnings.length > 0
|
|
7
|
-
? ["", "## Warning", ...result.warnings.map((warning) => `- ${warning}`)]
|
|
8
|
-
: []),
|
|
9
|
-
].join("\n");
|
|
10
|
-
}
|