@ashx-j/lunr 0.2.11 → 0.2.13
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/CHANGELOG.md +13 -0
- package/README.md +211 -236
- package/dist/builtin-extensions/ashxj-tui.d.ts +3 -0
- package/dist/builtin-extensions/ashxj-tui.d.ts.map +1 -1
- package/dist/builtin-extensions/ashxj-tui.js +28 -11
- package/dist/builtin-extensions/ashxj-tui.js.map +1 -1
- package/dist/builtin-extensions/index.d.ts.map +1 -1
- package/dist/builtin-extensions/index.js +0 -2
- package/dist/builtin-extensions/index.js.map +1 -1
- package/dist/builtin-extensions/lunr-cron.d.ts +1 -1
- package/dist/builtin-extensions/lunr-cron.d.ts.map +1 -1
- package/dist/builtin-extensions/lunr-cron.js +1 -1
- package/dist/builtin-extensions/lunr-cron.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/chain-validation.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/chain-validation.js +3 -3
- package/dist/builtin-extensions/pi-subagents/src/extension/chain-validation.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/doctor.d.ts +0 -2
- package/dist/builtin-extensions/pi-subagents/src/extension/doctor.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/doctor.js +1 -23
- package/dist/builtin-extensions/pi-subagents/src/extension/doctor.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.js +6 -7
- package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.js +7 -14
- package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts +12 -9
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js +38 -34
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts +3 -3
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js +32 -47
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/intercom/intercom-bridge.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/intercom/intercom-bridge.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/intercom/intercom-bridge.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts +7 -10
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js +90 -109
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.d.ts +3 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js +37 -50
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.d.ts +4 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.js +5 -5
- package/dist/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js +31 -13
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.d.ts +4 -3
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js +48 -20
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js +90 -64
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts +6 -8
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +262 -161
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.d.ts +2 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.js +24 -33
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts +25 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js +51 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/dynamic-fanout.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/dynamic-fanout.js +20 -3
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/dynamic-fanout.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts +4 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.d.ts +5 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.js +9 -3
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.js +2 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.js +20 -17
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts +70 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js +153 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/settings.d.ts +13 -8
- package/dist/builtin-extensions/pi-subagents/src/shared/settings.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/settings.js +20 -51
- package/dist/builtin-extensions/pi-subagents/src/shared/settings.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts +80 -20
- package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/types.js +10 -2
- package/dist/builtin-extensions/pi-subagents/src/shared/types.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js +20 -32
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts +2 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js +23 -449
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +2 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js +13 -11
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/runtime.d.ts +2 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/runtime.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/runtime.js +18 -17
- package/dist/builtin-extensions/pi-subagents/src/watchdog/runtime.js.map +1 -1
- package/dist/builtin-extensions/simple-pi-memory.d.ts +2 -2
- package/dist/builtin-extensions/simple-pi-memory.d.ts.map +1 -1
- package/dist/builtin-extensions/simple-pi-memory.js +41 -17
- package/dist/builtin-extensions/simple-pi-memory.js.map +1 -1
- package/dist/catalog/models.json +1 -1
- package/dist/catalog/providers/amazon-bedrock.json +1 -1
- package/dist/catalog/providers/azure-openai-responses.json +1 -1
- package/dist/catalog/providers/cloudflare-ai-gateway.json +1 -1
- package/dist/catalog/providers/cloudflare-workers-ai.json +1 -1
- package/dist/catalog/providers/fireworks.json +1 -1
- package/dist/catalog/providers/github-copilot.json +1 -1
- package/dist/catalog/providers/huggingface.json +1 -1
- package/dist/catalog/providers/minimax-cn.json +1 -1
- package/dist/catalog/providers/minimax.json +1 -1
- package/dist/catalog/providers/mistral.json +1 -1
- package/dist/catalog/providers/nvidia.json +1 -1
- package/dist/catalog/providers/openai.json +1 -1
- package/dist/catalog/providers/opencode-go.json +1 -1
- package/dist/catalog/providers/opencode.json +1 -1
- package/dist/catalog/providers/openrouter.json +1 -1
- package/dist/catalog/providers/qwen-cloud-cn.json +1 -1
- package/dist/catalog/providers/qwen-cloud.json +1 -1
- package/dist/catalog/providers/qwen-token-plan-cn.json +1 -1
- package/dist/catalog/providers/qwen-token-plan.json +1 -1
- package/dist/catalog/providers/together.json +1 -1
- package/dist/catalog/providers/vercel-ai-gateway.json +1 -1
- package/dist/catalog/providers/zai-coding-cn.json +1 -1
- package/dist/catalog/providers/zai.json +1 -1
- package/dist/catalog/publication.json +3 -3
- package/dist/core/agent-session.d.ts +7 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +34 -4
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/context-breakdown.d.ts +3 -1
- package/dist/core/context-breakdown.d.ts.map +1 -1
- package/dist/core/context-breakdown.js +5 -2
- package/dist/core/context-breakdown.js.map +1 -1
- package/dist/core/customize.d.ts +2 -0
- package/dist/core/customize.d.ts.map +1 -1
- package/dist/core/customize.js +6 -0
- package/dist/core/customize.js.map +1 -1
- package/dist/core/memory-cap.d.ts +4 -8
- package/dist/core/memory-cap.d.ts.map +1 -1
- package/dist/core/memory-cap.js +8 -8
- package/dist/core/memory-cap.js.map +1 -1
- package/dist/core/permissions.d.ts +2 -0
- package/dist/core/permissions.d.ts.map +1 -1
- package/dist/core/permissions.js +30 -14
- package/dist/core/permissions.js.map +1 -1
- package/dist/core/plan-mode.d.ts.map +1 -1
- package/dist/core/plan-mode.js +1 -9
- package/dist/core/plan-mode.js.map +1 -1
- package/dist/core/rollback.d.ts.map +1 -1
- package/dist/core/rollback.js +1 -1
- package/dist/core/rollback.js.map +1 -1
- package/dist/core/settings-manager.d.ts +16 -5
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +37 -10
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +1 -5
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/subagent-permission-inherit.d.ts +34 -22
- package/dist/core/subagent-permission-inherit.d.ts.map +1 -1
- package/dist/core/subagent-permission-inherit.js +37 -80
- package/dist/core/subagent-permission-inherit.js.map +1 -1
- package/dist/core/swarm.d.ts.map +1 -1
- package/dist/core/swarm.js +13 -7
- package/dist/core/swarm.js.map +1 -1
- package/dist/core/system-prompt.d.ts +6 -4
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +38 -48
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/usage-adapters/openai-codex.d.ts +1 -1
- package/dist/core/usage-adapters/openai-codex.d.ts.map +1 -1
- package/dist/core/usage-adapters/openai-codex.js +22 -17
- package/dist/core/usage-adapters/openai-codex.js.map +1 -1
- package/dist/core/usage-service.d.ts +10 -1
- package/dist/core/usage-service.d.ts.map +1 -1
- package/dist/core/usage-service.js +17 -6
- package/dist/core/usage-service.js.map +1 -1
- package/dist/gateway/agent-bridge.d.ts.map +1 -1
- package/dist/gateway/agent-bridge.js +1 -4
- package/dist/gateway/agent-bridge.js.map +1 -1
- package/dist/gateway/cron.d.ts.map +1 -1
- package/dist/gateway/cron.js +1 -4
- package/dist/gateway/cron.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +0 -5
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts +2 -0
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +21 -0
- package/dist/migrations.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +7 -4
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +122 -162
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/usage-view.d.ts +1 -1
- package/dist/modes/interactive/components/usage-view.d.ts.map +1 -1
- package/dist/modes/interactive/components/usage-view.js +7 -4
- package/dist/modes/interactive/components/usage-view.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +1 -2
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +55 -96
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/skill-tag-autocomplete.d.ts +13 -0
- package/dist/modes/interactive/skill-tag-autocomplete.d.ts.map +1 -0
- package/dist/modes/interactive/skill-tag-autocomplete.js +72 -0
- package/dist/modes/interactive/skill-tag-autocomplete.js.map +1 -0
- package/docs/compaction.md +23 -23
- package/docs/containerization.md +24 -24
- package/docs/custom-provider.md +18 -18
- package/docs/development.md +16 -15
- package/docs/docs.json +6 -2
- package/docs/extensions.md +82 -80
- package/docs/features.md +102 -0
- package/docs/index.md +25 -19
- package/docs/json.md +7 -7
- package/docs/keybindings.md +4 -4
- package/docs/models.md +2 -2
- package/docs/packages.md +38 -42
- package/docs/prompt-templates.md +4 -4
- package/docs/providers.md +22 -10
- package/docs/quickstart.md +81 -46
- package/docs/rpc.md +7 -13
- package/docs/sdk.md +43 -41
- package/docs/security.md +18 -18
- package/docs/session-format.md +9 -9
- package/docs/sessions.md +13 -12
- package/docs/settings.md +63 -24
- package/docs/shell-aliases.md +2 -2
- package/docs/skills.md +21 -11
- package/docs/terminal-setup.md +5 -5
- package/docs/termux.md +7 -7
- package/docs/themes.md +12 -14
- package/docs/tmux.md +4 -4
- package/docs/tui.md +23 -23
- package/docs/usage.md +112 -87
- package/docs/windows.md +10 -2
- package/examples/README.md +3 -1
- package/examples/extensions/README.md +6 -6
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/doom-overlay/README.md +2 -2
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/plan-mode/README.md +3 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/subagent/README.md +13 -11
- package/examples/extensions/todo.ts +2 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/examples/sdk/README.md +9 -5
- package/package.json +6 -7
- package/dist/builtin-extensions/lunr-behavior.d.ts +0 -44
- package/dist/builtin-extensions/lunr-behavior.d.ts.map +0 -1
- package/dist/builtin-extensions/lunr-behavior.js +0 -213
- package/dist/builtin-extensions/lunr-behavior.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/agents/context-builder.md +0 -46
- package/dist/builtin-extensions/pi-subagents/agents/deep-researcher.md +0 -36
- package/dist/builtin-extensions/pi-subagents/agents/delegate.md +0 -12
- package/dist/builtin-extensions/pi-subagents/agents/oracle.md +0 -73
- package/dist/builtin-extensions/pi-subagents/agents/planner.md +0 -55
- package/dist/builtin-extensions/pi-subagents/agents/research-writer.md +0 -37
- package/dist/builtin-extensions/pi-subagents/agents/researcher.md +0 -52
- package/dist/builtin-extensions/pi-subagents/agents/reviewer.md +0 -79
- package/dist/builtin-extensions/pi-subagents/agents/scout.md +0 -50
- package/dist/builtin-extensions/pi-subagents/agents/worker.md +0 -55
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.d.ts +0 -20
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.js +0 -1273
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-memory.d.ts +0 -49
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-memory.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-memory.js +0 -252
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-memory.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-scope.d.ts +0 -3
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-scope.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-scope.js +0 -6
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-scope.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-selection.d.ts +0 -3
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-selection.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-selection.js +0 -23
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-selection.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-serializer.d.ts +0 -8
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-serializer.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-serializer.js +0 -143
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-serializer.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agents.d.ts +0 -176
- package/dist/builtin-extensions/pi-subagents/src/agents/agents.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agents.js +0 -1326
- package/dist/builtin-extensions/pi-subagents/src/agents/agents.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/chain-serializer.d.ts +0 -7
- package/dist/builtin-extensions/pi-subagents/src/agents/chain-serializer.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/chain-serializer.js +0 -307
- package/dist/builtin-extensions/pi-subagents/src/agents/chain-serializer.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/identity.d.ts +0 -8
- package/dist/builtin-extensions/pi-subagents/src/agents/identity.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/identity.js +0 -30
- package/dist/builtin-extensions/pi-subagents/src/agents/identity.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/proactive-skills.d.ts +0 -35
- package/dist/builtin-extensions/pi-subagents/src/agents/proactive-skills.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/proactive-skills.js +0 -151
- package/dist/builtin-extensions/pi-subagents/src/agents/proactive-skills.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.d.ts +0 -131
- package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.js +0 -491
- package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.js.map +0 -1
- package/dist/core/behavior-preset.d.ts +0 -60
- package/dist/core/behavior-preset.d.ts.map +0 -1
- package/dist/core/behavior-preset.js +0 -257
- package/dist/core/behavior-preset.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acceptance.js","sourceRoot":"","sources":["../../../../../../src/builtin-extensions/pi-subagents/src/runs/shared/acceptance.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport { spawn } from \"node:child_process\";\nimport { spawnSync } from \"node:child_process\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type {\n\tAcceptanceConfig,\n\tAcceptanceEvidenceKind,\n\tAcceptanceInput,\n\tAcceptanceLedger,\n\tAcceptanceLevel,\n\tAcceptanceReport,\n\tAcceptanceRole,\n\tAcceptanceRuntimeCheck,\n\tAcceptanceRuntimeCheckStatus,\n\tAcceptanceReviewResult,\n\tAcceptanceVerifyCommand,\n\tAcceptanceVerifyResult,\n\tResolvedAcceptanceConfig,\n\tResolvedAcceptanceGate,\n\tSingleResult,\n\tSubagentRunMode,\n} from \"../../shared/types.ts\";\nimport { classifyTaskMutationIntent, taskMayMutate } from \"./task-intent.ts\";\n\nconst LEVEL_RANK: Record<Exclude<AcceptanceLevel, \"auto\">, number> = {\n\tnone: 0,\n\tattested: 1,\n\tchecked: 2,\n\tverified: 3,\n\treviewed: 4,\n};\n\nconst VALID_LEVELS = new Set<AcceptanceLevel>([\"auto\", \"none\", \"attested\", \"checked\", \"verified\", \"reviewed\"]);\nconst VALID_EVIDENCE = new Set<AcceptanceEvidenceKind>([\n\t\"changed-files\",\n\t\"tests-added\",\n\t\"commands-run\",\n\t\"validation-output\",\n\t\"residual-risks\",\n\t\"no-staged-files\",\n\t\"diff-summary\",\n\t\"review-findings\",\n\t\"manual-notes\",\n]);\nconst ACCEPTANCE_CONFIG_KEYS = new Set([\"level\", \"criteria\", \"evidence\", \"verify\", \"review\", \"stopRules\", \"reason\"]);\nconst ACCEPTANCE_GATE_KEYS = new Set([\"id\", \"must\", \"evidence\", \"severity\"]);\nconst ACCEPTANCE_VERIFY_KEYS = new Set([\"id\", \"command\", \"timeoutMs\", \"cwd\", \"env\", \"allowFailure\"]);\nconst ACCEPTANCE_REVIEW_KEYS = new Set([\"agent\", \"focus\", \"required\"]);\nconst EXPLICIT_REVIEWED_UNAVAILABLE = \"cannot be requested explicitly because this run cannot supply an independent reviewer result; use checked/verified and orchestrate the reviewer separately, or omit acceptance for read-only review tasks.\";\n\nfunction normalizeLevel(level: AcceptanceLevel | undefined): Exclude<AcceptanceLevel, \"auto\"> | \"auto\" {\n\treturn level ?? \"auto\";\n}\n\nfunction unique<T>(items: T[]): T[] {\n\treturn [...new Set(items)];\n}\n\nfunction requiredEvidenceForLevel(level: Exclude<AcceptanceLevel, \"auto\">): AcceptanceEvidenceKind[] {\n\tswitch (level) {\n\t\tcase \"none\":\n\t\t\treturn [];\n\t\tcase \"attested\":\n\t\t\treturn [\"manual-notes\", \"residual-risks\"];\n\t\tcase \"checked\":\n\t\t\treturn [\"changed-files\", \"tests-added\", \"commands-run\", \"residual-risks\", \"no-staged-files\"];\n\t\tcase \"verified\":\n\t\tcase \"reviewed\":\n\t\t\treturn [\"changed-files\", \"tests-added\", \"commands-run\", \"validation-output\", \"residual-risks\", \"no-staged-files\"];\n\t}\n}\n\nfunction inferLevel(input: {\n\tagentName: string;\n\tacceptanceRole?: AcceptanceRole;\n\ttask?: string;\n\tmode?: SubagentRunMode;\n\tasync?: boolean;\n\tdynamic?: boolean;\n\tdynamicGroup?: boolean;\n}): { level: Exclude<AcceptanceLevel, \"auto\">; reasons: string[]; criteria: string[]; evidence: AcceptanceEvidenceKind[]; review?: { agent?: string; required?: boolean } } {\n\tconst agent = input.agentName.toLowerCase();\n\tconst task = input.task?.toLowerCase() ?? \"\";\n\tconst reasons: string[] = [];\n\t// Declared roles replace name heuristics, so use the full writer grammar to detect explicit mutation independently of the actual agent name.\n\tconst intent = classifyTaskMutationIntent(input.acceptanceRole ? \"worker\" : input.agentName, input.task ?? \"\");\n\tconst readOnlyTask = intent.kind === \"read-only\"\n\t\t|| (intent.kind === \"unknown\" && /\\b(?:read[- ]only|review[- ]only|no edits|without edits|inspect|summari[sz]e)\\b/.test(task));\n\tconst rolePatchTask = input.acceptanceRole !== undefined\n\t\t&& intent.kind !== \"read-only\"\n\t\t&& !/\\b(?:do not|don't|must not)\\s+patch\\b/.test(task)\n\t\t&& /\\bpatch\\s+(?:(?:\\.{0,2}[\\\\/])?(?:[\\w.-]+[\\\\/])+[\\w.-]+|[\\w.-]+\\.[a-z0-9]+\\b|(?:the\\s+)?parser\\b)/.test(task);\n\tconst taskMayWrite = taskMayMutate(input.task ?? \"\") || intent.kind === \"implementation\" || rolePatchTask;\n\tconst readOnlyAgent = input.acceptanceRole === \"read-only\"\n\t\t|| (input.acceptanceRole === undefined && /\\b(?:reviewer|scout|context-builder|researcher|analyst)\\b/.test(agent));\n\tconst writeTask = taskMayWrite\n\t\t|| (input.acceptanceRole === \"writer\" && !readOnlyTask)\n\t\t|| (input.acceptanceRole === undefined && /\\bworker\\b/.test(agent) && !readOnlyTask);\n\tconst inferredReadOnly = readOnlyTask || (input.acceptanceRole === \"read-only\" && !taskMayWrite);\n\tconst roleResolvesReadOnly = input.acceptanceRole !== undefined && inferredReadOnly;\n\tconst keywordRiskReadOnly = input.acceptanceRole === undefined ? intent.kind === \"read-only\" : inferredReadOnly;\n\tconst risky = Boolean(input.async && writeTask)\n\t\t|| (Boolean(input.dynamic) && !roleResolvesReadOnly)\n\t\t|| (Boolean(input.dynamicGroup) && !roleResolvesReadOnly)\n\t\t|| (!keywordRiskReadOnly && /\\b(?:release|migration|migrate|security|data[- ]loss|destructive|post-review|fix pass)\\b/.test(task));\n\n\tif (risky) {\n\t\treasons.push(input.async ? \"async write-capable or risky run\" : \"risky write-capable run\");\n\t\tif (input.dynamic || input.dynamicGroup) reasons.push(\"dynamic fanout context\");\n\t\treturn {\n\t\t\tlevel: \"reviewed\",\n\t\t\treasons,\n\t\t\tcriteria: [\"Implement the requested change without widening scope\", \"Return evidence sufficient for an independent acceptance review\"],\n\t\t\tevidence: requiredEvidenceForLevel(\"reviewed\"),\n\t\t\treview: { agent: \"reviewer\", required: true },\n\t\t};\n\t}\n\tif (writeTask && !readOnlyTask) {\n\t\treasons.push(input.acceptanceRole === \"writer\" && !taskMayWrite ? \"declared writer acceptance role\" : \"write-capable worker/task\");\n\t\treturn {\n\t\t\tlevel: \"checked\",\n\t\t\treasons,\n\t\t\tcriteria: [\"Implement the requested change without widening scope\"],\n\t\t\tevidence: requiredEvidenceForLevel(\"checked\"),\n\t\t};\n\t}\n\tif (readOnlyAgent || readOnlyTask) {\n\t\treasons.push(input.acceptanceRole === \"read-only\" && !readOnlyTask ? \"declared read-only acceptance role\" : readOnlyAgent ? \"read-only/reviewer-style agent\" : \"read-only task wording\");\n\t\treturn {\n\t\t\tlevel: \"attested\",\n\t\t\treasons,\n\t\t\tcriteria: [\"Return concrete findings with file paths and severity when applicable\"],\n\t\t\tevidence: [\"review-findings\", \"residual-risks\"],\n\t\t};\n\t}\n\treasons.push(\"default lightweight attestation\");\n\treturn {\n\t\tlevel: \"attested\",\n\t\treasons,\n\t\tcriteria: [\"Return a concise result and residual risks when applicable\"],\n\t\tevidence: [\"manual-notes\", \"residual-risks\"],\n\t};\n}\n\nexport function normalizeAcceptanceInput(input: AcceptanceInput | undefined): AcceptanceConfig {\n\tif (input === undefined || input === \"auto\") return { level: \"auto\" };\n\tif (input === false) return { level: \"none\", reason: \"disabled by deprecated false shorthand\" };\n\tif (typeof input === \"string\") return { level: input };\n\treturn { ...input };\n}\n\nfunction explicitAcceptanceCanDisable(explicit: AcceptanceConfig): boolean {\n\treturn explicit.level === \"none\" && typeof explicit.reason === \"string\" && explicit.reason.trim().length > 0;\n}\n\nexport function validateAcceptanceInput(input: unknown, pathLabel = \"acceptance\"): string[] {\n\tconst errors: string[] = [];\n\tif (input === undefined) return errors;\n\tif (input === false) return errors;\n\tif (typeof input === \"string\") {\n\t\tif (!VALID_LEVELS.has(input as AcceptanceLevel)) errors.push(`${pathLabel} has invalid level '${input}'.`);\n\t\telse if (input === \"none\") errors.push(`${pathLabel} level \"none\" requires a reason; use { level: \"none\", reason: \"...\" }.`);\n\t\telse if (input === \"reviewed\") errors.push(`${pathLabel} ${EXPLICIT_REVIEWED_UNAVAILABLE}`);\n\t\treturn errors;\n\t}\n\tif (!input || typeof input !== \"object\" || Array.isArray(input)) {\n\t\terrors.push(`${pathLabel} must be a string level, false, or an object.`);\n\t\treturn errors;\n\t}\n\tconst value = input as Record<string, unknown>;\n\tfor (const key of Object.keys(value)) {\n\t\tif (!ACCEPTANCE_CONFIG_KEYS.has(key)) errors.push(`${pathLabel}.${key} is not supported.`);\n\t}\n\tif (value.level !== undefined && (typeof value.level !== \"string\" || !VALID_LEVELS.has(value.level as AcceptanceLevel))) {\n\t\terrors.push(`${pathLabel}.level must be one of auto, none, attested, checked, verified, reviewed.`);\n\t}\n\tif (value.level === \"none\" && (typeof value.reason !== \"string\" || !value.reason.trim())) {\n\t\terrors.push(`${pathLabel}.reason is required when level is none.`);\n\t}\n\tif (value.level === \"reviewed\") errors.push(`${pathLabel}.level ${EXPLICIT_REVIEWED_UNAVAILABLE}`);\n\tif (value.reason !== undefined && typeof value.reason !== \"string\") errors.push(`${pathLabel}.reason must be a string.`);\n\tif (value.criteria !== undefined && !Array.isArray(value.criteria)) errors.push(`${pathLabel}.criteria must be an array.`);\n\tif (Array.isArray(value.criteria)) {\n\t\tconst criterionIds = new Set<string>();\n\t\tfor (const [index, criterion] of value.criteria.entries()) {\n\t\t\tif (typeof criterion === \"string\") continue;\n\t\t\tconst criterionPath = `${pathLabel}.criteria[${index}]`;\n\t\t\tif (!criterion || typeof criterion !== \"object\" || Array.isArray(criterion)) {\n\t\t\t\terrors.push(`${criterionPath} must be a string or an object.`);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst gate = criterion as Record<string, unknown>;\n\t\t\tfor (const key of Object.keys(gate)) {\n\t\t\t\tif (!ACCEPTANCE_GATE_KEYS.has(key)) errors.push(`${criterionPath}.${key} is not supported.`);\n\t\t\t}\n\t\t\tif (typeof gate.id !== \"string\" || !gate.id.trim()) {\n\t\t\t\terrors.push(`${criterionPath}.id is required.`);\n\t\t\t} else {\n\t\t\t\tconst normalizedId = normalizedToken(gate.id);\n\t\t\t\tif (criterionIds.has(normalizedId)) errors.push(`${criterionPath}.id duplicates normalized criterion id '${normalizedId}'.`);\n\t\t\t\tcriterionIds.add(normalizedId);\n\t\t\t}\n\t\t\tif (typeof gate.must !== \"string\" || !gate.must.trim()) errors.push(`${criterionPath}.must is required.`);\n\t\t\tif (gate.evidence !== undefined && !Array.isArray(gate.evidence)) errors.push(`${criterionPath}.evidence must be an array.`);\n\t\t\tif (Array.isArray(gate.evidence)) {\n\t\t\t\tfor (const [evidenceIndex, item] of gate.evidence.entries()) {\n\t\t\t\t\tif (typeof item !== \"string\" || !VALID_EVIDENCE.has(item as AcceptanceEvidenceKind)) {\n\t\t\t\t\t\terrors.push(`${criterionPath}.evidence[${evidenceIndex}] is not a supported evidence kind.`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (gate.severity !== undefined && gate.severity !== \"required\" && gate.severity !== \"recommended\") {\n\t\t\t\terrors.push(`${criterionPath}.severity must be required or recommended.`);\n\t\t\t}\n\t\t}\n\t}\n\tif (Array.isArray(value.evidence)) {\n\t\tfor (const [index, item] of value.evidence.entries()) {\n\t\t\tif (typeof item !== \"string\" || !VALID_EVIDENCE.has(item as AcceptanceEvidenceKind)) {\n\t\t\t\terrors.push(`${pathLabel}.evidence[${index}] is not a supported evidence kind.`);\n\t\t\t}\n\t\t}\n\t} else if (value.evidence !== undefined) {\n\t\terrors.push(`${pathLabel}.evidence must be an array.`);\n\t}\n\tif (value.verify !== undefined && !Array.isArray(value.verify)) errors.push(`${pathLabel}.verify must be an array.`);\n\tif (Array.isArray(value.verify)) {\n\t\tfor (const [index, command] of value.verify.entries()) {\n\t\t\tif (!command || typeof command !== \"object\" || Array.isArray(command)) {\n\t\t\t\terrors.push(`${pathLabel}.verify[${index}] must be an object.`);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst cmd = command as Record<string, unknown>;\n\t\t\tfor (const key of Object.keys(cmd)) {\n\t\t\t\tif (!ACCEPTANCE_VERIFY_KEYS.has(key)) errors.push(`${pathLabel}.verify[${index}].${key} is not supported.`);\n\t\t\t}\n\t\t\tif (typeof cmd.id !== \"string\" || !cmd.id.trim()) errors.push(`${pathLabel}.verify[${index}].id is required.`);\n\t\t\tif (typeof cmd.command !== \"string\" || !cmd.command.trim()) errors.push(`${pathLabel}.verify[${index}].command is required.`);\n\t\t\tif (cmd.timeoutMs !== undefined && (typeof cmd.timeoutMs !== \"number\" || !Number.isInteger(cmd.timeoutMs) || cmd.timeoutMs < 1)) {\n\t\t\t\terrors.push(`${pathLabel}.verify[${index}].timeoutMs must be an integer >= 1.`);\n\t\t\t}\n\t\t\tif (cmd.cwd !== undefined && typeof cmd.cwd !== \"string\") errors.push(`${pathLabel}.verify[${index}].cwd must be a string.`);\n\t\t\tif (cmd.env !== undefined) {\n\t\t\t\tif (!cmd.env || typeof cmd.env !== \"object\" || Array.isArray(cmd.env)) {\n\t\t\t\t\terrors.push(`${pathLabel}.verify[${index}].env must be an object.`);\n\t\t\t\t} else {\n\t\t\t\t\tfor (const [envKey, envValue] of Object.entries(cmd.env as Record<string, unknown>)) {\n\t\t\t\t\t\tif (typeof envValue !== \"string\") errors.push(`${pathLabel}.verify[${index}].env.${envKey} must be a string.`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (cmd.allowFailure !== undefined && typeof cmd.allowFailure !== \"boolean\") {\n\t\t\t\terrors.push(`${pathLabel}.verify[${index}].allowFailure must be a boolean.`);\n\t\t\t}\n\t\t}\n\t}\n\tif (value.review !== undefined && value.review !== false) {\n\t\tif (!value.review || typeof value.review !== \"object\" || Array.isArray(value.review)) {\n\t\t\terrors.push(`${pathLabel}.review must be false or an object.`);\n\t\t} else {\n\t\t\tconst review = value.review as Record<string, unknown>;\n\t\t\tfor (const key of Object.keys(review)) {\n\t\t\t\tif (!ACCEPTANCE_REVIEW_KEYS.has(key)) errors.push(`${pathLabel}.review.${key} is not supported.`);\n\t\t\t}\n\t\t\tif (review.agent !== undefined && typeof review.agent !== \"string\") errors.push(`${pathLabel}.review.agent must be a string.`);\n\t\t\tif (review.focus !== undefined && typeof review.focus !== \"string\") errors.push(`${pathLabel}.review.focus must be a string.`);\n\t\t\tif (review.required !== undefined && typeof review.required !== \"boolean\") errors.push(`${pathLabel}.review.required must be a boolean.`);\n\t\t}\n\t}\n\tif (value.stopRules !== undefined && !Array.isArray(value.stopRules)) errors.push(`${pathLabel}.stopRules must be an array.`);\n\tif (Array.isArray(value.stopRules)) {\n\t\tfor (const [index, item] of value.stopRules.entries()) {\n\t\t\tif (typeof item !== \"string\") errors.push(`${pathLabel}.stopRules[${index}] must be a string.`);\n\t\t}\n\t}\n\treturn errors;\n}\n\nexport function validateExecutionAcceptance(input: {\n\tacceptance?: unknown;\n\ttasks?: Array<{ acceptance?: unknown }>;\n\tchain?: Array<{\n\t\tacceptance?: unknown;\n\t\tparallel?: Array<{ acceptance?: unknown }> | { acceptance?: unknown };\n\t}>;\n}): string[] {\n\tconst errors = validateAcceptanceInput(input.acceptance, \"acceptance\");\n\tfor (const [index, task] of (input.tasks ?? []).entries()) {\n\t\terrors.push(...validateAcceptanceInput(task.acceptance, `tasks[${index}].acceptance`));\n\t}\n\tfor (const [stepIndex, step] of (input.chain ?? []).entries()) {\n\t\terrors.push(...validateAcceptanceInput(step.acceptance, `chain[${stepIndex}].acceptance`));\n\t\tif (Array.isArray(step.parallel)) {\n\t\t\tfor (const [taskIndex, task] of step.parallel.entries()) {\n\t\t\t\terrors.push(...validateAcceptanceInput(task.acceptance, `chain[${stepIndex}].parallel[${taskIndex}].acceptance`));\n\t\t\t}\n\t\t} else if (step.parallel) {\n\t\t\terrors.push(...validateAcceptanceInput(step.parallel.acceptance, `chain[${stepIndex}].parallel.acceptance`));\n\t\t}\n\t}\n\treturn errors;\n}\n\nfunction normalizeCriteria(criteria: Array<string | { id?: string; must?: string; evidence?: AcceptanceEvidenceKind[]; severity?: \"required\" | \"recommended\" }> | undefined, evidence: AcceptanceEvidenceKind[]): ResolvedAcceptanceGate[] {\n\treturn (criteria ?? []).map((criterion, index) => {\n\t\tif (typeof criterion === \"string\") {\n\t\t\treturn { id: `criterion-${index + 1}`, must: criterion, evidence, severity: \"required\" };\n\t\t}\n\t\treturn {\n\t\t\tid: criterion.id?.trim() || `criterion-${index + 1}`,\n\t\t\tmust: criterion.must ?? \"\",\n\t\t\tevidence: criterion.evidence?.filter((item) => VALID_EVIDENCE.has(item)) ?? evidence,\n\t\t\tseverity: criterion.severity ?? \"required\",\n\t\t};\n\t}).filter((criterion) => criterion.must.trim());\n}\n\nexport function resolveEffectiveAcceptance(input: {\n\texplicit?: AcceptanceInput;\n\tagentName: string;\n\tacceptanceRole?: AcceptanceRole;\n\ttask?: string;\n\tmode?: SubagentRunMode;\n\tasync?: boolean;\n\tdynamic?: boolean;\n\tdynamicGroup?: boolean;\n}): ResolvedAcceptanceConfig {\n\tconst explicit = normalizeAcceptanceInput(input.explicit);\n\tconst inferred = inferLevel(input);\n\tconst explicitLevel = normalizeLevel(explicit.level);\n\tconst level = explicitAcceptanceCanDisable(explicit)\n\t\t? \"none\"\n\t\t: explicitLevel === \"auto\"\n\t\t\t? inferred.level\n\t\t\t: (LEVEL_RANK[explicitLevel] >= LEVEL_RANK[inferred.level] ? explicitLevel : inferred.level);\n\tconst evidence = unique([...(level === inferred.level ? inferred.evidence : requiredEvidenceForLevel(level)), ...(explicit.evidence ?? [])]);\n\tconst criteria = normalizeCriteria(\n\t\t(explicit.criteria?.length ? explicit.criteria : inferred.criteria) as Array<string | { id?: string; must?: string; evidence?: AcceptanceEvidenceKind[]; severity?: \"required\" | \"recommended\" }>,\n\t\tevidence,\n\t);\n\tlet review = explicit.review !== undefined ? explicit.review : inferred.review;\n\tif (level === \"reviewed\" && input.explicit !== undefined && explicitLevel !== \"reviewed\" && explicit.review === undefined && review && review !== false) {\n\t\treview = { ...review, required: false };\n\t}\n\treturn {\n\t\tlevel,\n\t\texplicit: input.explicit !== undefined,\n\t\tinferredReason: inferred.reasons,\n\t\tcriteria,\n\t\tevidence,\n\t\tverify: explicit.verify ?? [],\n\t\treview,\n\t\tstopRules: explicit.stopRules ?? [],\n\t\treason: explicit.reason,\n\t};\n}\n\nexport function formatAcceptancePrompt(acceptance: ResolvedAcceptanceConfig): string {\n\tif (acceptance.level === \"none\") return \"\";\n\tconst lines = [\n\t\t\"\",\n\t\t\"## Acceptance Contract\",\n\t\t`Acceptance level: ${acceptance.level}`,\n\t\t\"Completion is not accepted from prose alone. End with a structured acceptance report.\",\n\t\t\"\",\n\t\t\"Criteria:\",\n\t\t...(acceptance.criteria.length ? acceptance.criteria.map((criterion) => `- ${criterion.id}: ${criterion.must}`) : [\"- Return the requested result.\"]),\n\t\t\"\",\n\t\t`Required evidence: ${acceptance.evidence.join(\", \") || \"none\"}`,\n\t];\n\tif (acceptance.verify.length > 0) {\n\t\tlines.push(\"\", \"Runtime verification commands configured by parent:\");\n\t\tfor (const command of acceptance.verify) lines.push(`- ${command.id}: ${command.command}`);\n\t}\n\tif (acceptance.review && acceptance.review !== false) {\n\t\tlines.push(\"\", `Review gate: ${acceptance.review.required === false ? \"optional\" : \"required\"}${acceptance.review.agent ? ` by ${acceptance.review.agent}` : \"\"}.`);\n\t\tif (acceptance.review.focus) lines.push(`Review focus: ${acceptance.review.focus}`);\n\t}\n\tif (acceptance.stopRules.length > 0) {\n\t\tlines.push(\"\", \"Stop rules:\", ...acceptance.stopRules.map((rule) => `- ${rule}`));\n\t}\n\tlines.push(\n\t\t\"\",\n\t\t\"Finish with a fenced JSON block tagged `acceptance-report` in this shape:\",\n\t\t\"Use empty arrays when no items apply; array fields contain strings unless object entries are shown.\",\n\t\t\"`criteriaSatisfied[].status` must be exactly one of: satisfied, not-satisfied, not-applicable.\",\n\t\t\"`commandsRun[].result` must be exactly one of: passed, failed, not-run.\",\n\t\t\"`manualNotes` and `notes` are optional strings; an empty string means no note and does not satisfy `manual-notes` evidence.\",\n\t\t\"```acceptance-report\",\n\t\tJSON.stringify({\n\t\t\tcriteriaSatisfied: acceptance.criteria\n\t\t\t\t.filter((criterion) => criterion.severity !== \"recommended\")\n\t\t\t\t.map((criterion) => ({ id: criterion.id, status: \"satisfied\", evidence: \"specific proof\" })),\n\t\t\tchangedFiles: [\"src/file.ts\"],\n\t\t\ttestsAddedOrUpdated: [\"test/file.test.ts\"],\n\t\t\tcommandsRun: [{ command: \"command\", result: \"passed\", summary: \"short result\" }],\n\t\t\tvalidationOutput: [\"validation output or concise summary\"],\n\t\t\tresidualRisks: [\"none\"],\n\t\t\tnoStagedFiles: true,\n\t\t\tdiffSummary: \"short description of the diff\",\n\t\t\treviewFindings: [\"blocker: file.ts:12 - issue found, or no blockers\"],\n\t\t\tmanualNotes: \"anything else the parent should know\",\n\t\t}, null, 2),\n\t\t\"```\",\n\t);\n\treturn lines.join(\"\\n\");\n}\n\nfunction extractBalancedJson(text: string, start: number): string | undefined {\n\tlet depth = 0;\n\tlet inString = false;\n\tlet escaped = false;\n\tfor (let i = start; i < text.length; i++) {\n\t\tconst char = text[i]!;\n\t\tif (inString) {\n\t\t\tif (escaped) escaped = false;\n\t\t\telse if (char === \"\\\\\") escaped = true;\n\t\t\telse if (char === \"\\\"\") inString = false;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \"\\\"\") {\n\t\t\tinString = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \"{\") depth++;\n\t\tif (char === \"}\") {\n\t\t\tdepth--;\n\t\t\tif (depth === 0) return text.slice(start, i + 1);\n\t\t}\n\t}\n\treturn undefined;\n}\n\nconst ACCEPTANCE_REPORT_WRAPPERS = new Set([\"acceptance\", \"acceptance-report\", \"acceptance_report\", \"acceptanceReport\"]);\n\nconst ACCEPTANCE_REPORT_FIELDS: Record<string, keyof AcceptanceReport> = {\n\tcriteriaSatisfied: \"criteriaSatisfied\",\n\tcriteria_satisfied: \"criteriaSatisfied\",\n\tchangedFiles: \"changedFiles\",\n\tchanged_files: \"changedFiles\",\n\ttestsAddedOrUpdated: \"testsAddedOrUpdated\",\n\ttests_added_or_updated: \"testsAddedOrUpdated\",\n\tcommandsRun: \"commandsRun\",\n\tcommands_run: \"commandsRun\",\n\tvalidationOutput: \"validationOutput\",\n\tvalidation_output: \"validationOutput\",\n\tresidualRisks: \"residualRisks\",\n\tresidual_risks: \"residualRisks\",\n\tnoStagedFiles: \"noStagedFiles\",\n\tno_staged_files: \"noStagedFiles\",\n\tdiffSummary: \"diffSummary\",\n\tdiff_summary: \"diffSummary\",\n\treviewFindings: \"reviewFindings\",\n\treview_findings: \"reviewFindings\",\n\tmanualNotes: \"manualNotes\",\n\tmanual_notes: \"manualNotes\",\n\tnotes: \"notes\",\n};\n\nconst CRITERION_REPORT_FIELDS = new Set([\"id\", \"status\", \"evidence\"]);\nconst COMMAND_REPORT_FIELDS = new Set([\"command\", \"result\", \"summary\"]);\n\nfunction normalizedToken(value: string): string {\n\treturn value.trim().toLowerCase().replace(/[\\s_]+/g, \"-\").replace(/-+/g, \"-\");\n}\n\nfunction normalizeCriterionStatus(value: unknown): unknown {\n\tif (typeof value !== \"string\") return value;\n\tconst token = normalizedToken(value);\n\tif ([\"satisfied\", \"met\", \"complete\", \"completed\", \"done\", \"pass\", \"passed\", \"success\", \"succeeded\"].includes(token)) return \"satisfied\";\n\tif ([\"not-satisfied\", \"not-met\", \"unmet\", \"incomplete\", \"fail\", \"failed\"].includes(token)) return \"not-satisfied\";\n\tif ([\"not-applicable\", \"n-a\", \"na\", \"skip\", \"skipped\"].includes(token)) return \"not-applicable\";\n\treturn value;\n}\n\nfunction normalizeCommandResult(value: unknown): unknown {\n\tif (typeof value !== \"string\") return value;\n\tconst token = normalizedToken(value);\n\tif ([\"passed\", \"pass\", \"success\", \"successful\", \"succeeded\", \"ok\"].includes(token)) return \"passed\";\n\tif ([\"failed\", \"fail\", \"failure\", \"error\"].includes(token)) return \"failed\";\n\tif ([\"not-run\", \"not-executed\", \"skip\", \"skipped\"].includes(token)) return \"not-run\";\n\treturn value;\n}\n\nfunction normalizeCriterionReport(value: unknown, pathLabel: string, errors: string[]): unknown {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return value;\n\tconst normalized: Record<string, unknown> = {};\n\tfor (const [key, fieldValue] of Object.entries(value as Record<string, unknown>)) {\n\t\tif (!CRITERION_REPORT_FIELDS.has(key)) {\n\t\t\terrors.push(`${pathLabel}.${key}: unsupported acceptance criterion field`);\n\t\t\tcontinue;\n\t\t}\n\t\tnormalized[key] = key === \"id\" && typeof fieldValue === \"string\"\n\t\t\t? normalizedToken(fieldValue)\n\t\t\t: key === \"status\"\n\t\t\t\t? normalizeCriterionStatus(fieldValue)\n\t\t\t\t: fieldValue;\n\t}\n\treturn normalized;\n}\n\nfunction normalizeCommandReport(value: unknown, pathLabel: string, errors: string[]): unknown {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return value;\n\tconst normalized: Record<string, unknown> = {};\n\tfor (const [key, fieldValue] of Object.entries(value as Record<string, unknown>)) {\n\t\tif (!COMMAND_REPORT_FIELDS.has(key)) {\n\t\t\terrors.push(`${pathLabel}.${key}: unsupported acceptance command field`);\n\t\t\tcontinue;\n\t\t}\n\t\tnormalized[key] = key === \"result\" ? normalizeCommandResult(fieldValue) : fieldValue;\n\t}\n\treturn normalized;\n}\n\nfunction normalizeAcceptanceReportValue(value: unknown, pathLabel = \"\"): { value: unknown; pathLabel: string; errors: string[] } {\n\tconst errors: string[] = [];\n\tlet reportValue = value;\n\tlet reportPath = pathLabel;\n\tif (reportValue && typeof reportValue === \"object\" && !Array.isArray(reportValue)) {\n\t\tconst record = reportValue as Record<string, unknown>;\n\t\tconst wrapperKeys = Object.keys(record).filter((key) => ACCEPTANCE_REPORT_WRAPPERS.has(key));\n\t\tif (wrapperKeys.length > 0) {\n\t\t\tconst wrapperKey = wrapperKeys[0]!;\n\t\t\tif (wrapperKeys.length > 1) errors.push(`${pathLabel || \"acceptance-report\"}: multiple acceptance report wrappers are ambiguous`);\n\t\t\tfor (const key of Object.keys(record)) {\n\t\t\t\tif (key !== wrapperKey) errors.push(`${pathFor(pathLabel, key)}: unsupported alongside acceptance report wrapper '${wrapperKey}'`);\n\t\t\t}\n\t\t\treportValue = record[wrapperKey];\n\t\t\treportPath = pathFor(pathLabel, wrapperKey);\n\t\t}\n\t}\n\tif (!reportValue || typeof reportValue !== \"object\" || Array.isArray(reportValue)) return { value: reportValue, pathLabel: reportPath, errors };\n\n\tconst normalized: Record<string, unknown> = {};\n\tfor (const [key, fieldValue] of Object.entries(reportValue as Record<string, unknown>)) {\n\t\tconst canonical = ACCEPTANCE_REPORT_FIELDS[key];\n\t\tif (!canonical) {\n\t\t\terrors.push(`${pathFor(reportPath, key)}: unsupported acceptance report field`);\n\t\t\tcontinue;\n\t\t}\n\t\tif (Object.hasOwn(normalized, canonical)) {\n\t\t\terrors.push(`${pathFor(reportPath, key)}: duplicates normalized field '${canonical}'`);\n\t\t\tcontinue;\n\t\t}\n\t\tconst fieldPath = pathFor(reportPath, canonical);\n\t\tswitch (canonical) {\n\t\t\tcase \"criteriaSatisfied\": {\n\t\t\t\tconst items = Array.isArray(fieldValue) ? fieldValue : fieldValue && typeof fieldValue === \"object\" ? [fieldValue] : fieldValue;\n\t\t\t\tnormalized[canonical] = Array.isArray(items)\n\t\t\t\t\t? items.map((item, index) => normalizeCriterionReport(item, `${fieldPath}[${index}]`, errors))\n\t\t\t\t\t: items;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"commandsRun\": {\n\t\t\t\tconst items = Array.isArray(fieldValue) ? fieldValue : fieldValue && typeof fieldValue === \"object\" ? [fieldValue] : fieldValue;\n\t\t\t\tnormalized[canonical] = Array.isArray(items)\n\t\t\t\t\t? items.map((item, index) => normalizeCommandReport(item, `${fieldPath}[${index}]`, errors))\n\t\t\t\t\t: items;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"changedFiles\":\n\t\t\tcase \"testsAddedOrUpdated\":\n\t\t\tcase \"validationOutput\":\n\t\t\tcase \"residualRisks\":\n\t\t\tcase \"reviewFindings\":\n\t\t\t\tnormalized[canonical] = typeof fieldValue === \"string\" ? [fieldValue] : fieldValue;\n\t\t\t\tbreak;\n\t\t\tcase \"noStagedFiles\": {\n\t\t\t\tconst token = typeof fieldValue === \"string\" ? fieldValue.trim().toLowerCase() : undefined;\n\t\t\t\tnormalized[canonical] = token === \"true\" ? true : token === \"false\" ? false : fieldValue;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tnormalized[canonical] = fieldValue;\n\t\t}\n\t}\n\treturn { value: normalized, pathLabel: reportPath, errors };\n}\n\nfunction hasGenericAcceptanceReportSignal(value: unknown): boolean {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n\tconst record = value as Record<string, unknown>;\n\treturn \"criteriaSatisfied\" in record && [\n\t\t\"changedFiles\",\n\t\t\"testsAddedOrUpdated\",\n\t\t\"commandsRun\",\n\t\t\"validationOutput\",\n\t\t\"residualRisks\",\n\t\t\"noStagedFiles\",\n\t\t\"diffSummary\",\n\t\t\"reviewFindings\",\n\t\t\"manualNotes\",\n\t].some((key) => key in record);\n}\n\nfunction parseReportJson(body: string): unknown {\n\tconst trimmed = body.trim();\n\ttry {\n\t\treturn JSON.parse(trimmed) as unknown;\n\t} catch (error) {\n\t\tconst jsonStart = trimmed.indexOf(\"{\");\n\t\tif (jsonStart > 0) {\n\t\t\tconst json = extractBalancedJson(trimmed, jsonStart);\n\t\t\tif (json) return JSON.parse(json) as unknown;\n\t\t}\n\t\tthrow error;\n\t}\n}\n\nfunction fencedBlocks(output: string, tag: string): string[] {\n\treturn [...output.matchAll(new RegExp(`\\`\\`\\`${tag}\\\\s*\\\\n([\\\\s\\\\S]*?)\\`\\`\\``, \"gi\"))]\n\t\t.map((match) => match[1]?.trim())\n\t\t.filter((value): value is string => Boolean(value));\n}\n\nfunction parseAcceptanceReportBody(body: string): { report?: AcceptanceReport; errors: string[] } {\n\treturn validateAcceptanceReport(parseReportJson(body));\n}\n\nfunction parseGenericJsonAcceptanceReportBody(body: string): { report?: AcceptanceReport; error?: string } {\n\tconst parsed = parseReportJson(body);\n\tconst normalized = normalizeAcceptanceReportValue(parsed);\n\tconst hasCriteriaMarker = normalized.value !== null\n\t\t&& typeof normalized.value === \"object\"\n\t\t&& !Array.isArray(normalized.value)\n\t\t&& \"criteriaSatisfied\" in normalized.value;\n\tif (!hasGenericAcceptanceReportSignal(normalized.value) && !(hasCriteriaMarker && normalized.errors.length > 0)) return {};\n\tconst validation = validateAcceptanceReport(parsed);\n\treturn validation.report\n\t\t? { report: validation.report }\n\t\t: { error: `Invalid acceptance-report: ${validation.errors.join(\"; \")}` };\n}\n\nexport const ACCEPTANCE_REPORT_NOT_FOUND = \"Structured acceptance report not found.\";\n\nexport function parseAcceptanceReport(output: string): { report?: AcceptanceReport; error?: string } {\n\tconst explicitFencePresent = /```acceptance[-_]report\\b/i.test(output);\n\tconst fenced = fencedBlocks(output, \"acceptance[-_]report\");\n\tconst parseErrors: string[] = [];\n\tfor (const body of fenced) {\n\t\ttry {\n\t\t\tconst validation = parseAcceptanceReportBody(body);\n\t\t\tif (validation.report) return { report: validation.report };\n\t\t\tparseErrors.push(`Invalid acceptance-report: ${validation.errors.join(\"; \")}`);\n\t\t} catch (error) {\n\t\t\tparseErrors.push(error instanceof Error ? error.message : String(error));\n\t\t}\n\t}\n\tif (parseErrors.length > 0) return { error: `Failed to parse acceptance-report: ${parseErrors.join(\"; \")}` };\n\tif (explicitFencePresent) {\n\t\treturn { error: \"Failed to parse acceptance-report: Empty or unterminated acceptance-report fence.\" };\n\t}\n\tfor (const body of fencedBlocks(output, \"(?:json|jsonc|json5)\")) {\n\t\ttry {\n\t\t\tconst parsed = parseGenericJsonAcceptanceReportBody(body);\n\t\t\tif (parsed.report) return { report: parsed.report };\n\t\t\tif (parsed.error) return { error: `Failed to parse acceptance-report: ${parsed.error}` };\n\t\t} catch {\n\t\t\t// Ignore unrelated malformed generic JSON. A recognizable report shape\n\t\t\t// returns exact validation errors above instead of being mistaken for prose.\n\t\t}\n\t}\n\tconst markerIndex = output.search(/ACCEPTANCE_REPORT\\s*:/i);\n\tif (markerIndex !== -1) {\n\t\tconst jsonStart = output.indexOf(\"{\", markerIndex);\n\t\tif (jsonStart === -1) {\n\t\t\treturn { error: \"Failed to parse acceptance-report: Expected a JSON object after ACCEPTANCE_REPORT:.\" };\n\t\t}\n\t\tconst json = extractBalancedJson(output, jsonStart);\n\t\tif (!json) {\n\t\t\treturn { error: \"Failed to parse acceptance-report: Unterminated JSON object after ACCEPTANCE_REPORT:.\" };\n\t\t}\n\t\ttry {\n\t\t\tconst parsed = JSON.parse(json) as unknown;\n\t\t\tconst validation = validateAcceptanceReport(parsed);\n\t\t\tif (validation.report) return { report: validation.report };\n\t\t\treturn { error: `Failed to parse acceptance-report: Invalid acceptance-report: ${validation.errors.join(\"; \")}` };\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\treturn { error: `Failed to parse acceptance-report: ${message}` };\n\t\t}\n\t}\n\treturn { error: ACCEPTANCE_REPORT_NOT_FOUND };\n}\n\nfunction parseAcceptanceReportSources(\n\toutput: string,\n\tfileOutput: { content: string; path: string; authoritative?: boolean } | undefined,\n): { report?: AcceptanceReport; error?: string } {\n\tconst fromText = () => parseAcceptanceReport(output);\n\tconst fromFile = () => {\n\t\tif (!fileOutput) return { error: ACCEPTANCE_REPORT_NOT_FOUND };\n\t\tconst parsed = parseAcceptanceReport(fileOutput.content);\n\t\treturn parsed.report || parsed.error === ACCEPTANCE_REPORT_NOT_FOUND\n\t\t\t? parsed\n\t\t\t: { error: `${parsed.error} (in configured output ${fileOutput.path})` };\n\t};\n\tconst [primary, secondary] = fileOutput?.authoritative ? [fromFile, fromText] : [fromText, fromFile];\n\tconst first = primary();\n\t// A malformed report in the primary source is a defect to surface, not a\n\t// miss to paper over with the secondary source; only a genuinely absent\n\t// report falls through.\n\tif (first.report || first.error !== ACCEPTANCE_REPORT_NOT_FOUND) return first;\n\treturn secondary();\n}\n\nexport function stripAcceptanceReport(output: string): string {\n\tconst trailingFencePattern = /\\n?```(acceptance[-_]report|json|jsonc|json5)\\s*\\n([\\s\\S]*?)```\\s*/gi;\n\tlet trailingFence: { index: number; tag: string; body: string } | undefined;\n\tfor (const match of output.matchAll(trailingFencePattern)) {\n\t\tconst end = (match.index ?? 0) + match[0].length;\n\t\tif (output.slice(end).trim().length === 0 && match[1] && match[2]) {\n\t\t\ttrailingFence = { index: match.index ?? 0, tag: match[1].toLowerCase(), body: match[2] };\n\t\t}\n\t}\n\tif (trailingFence) {\n\t\tif (trailingFence.tag === \"acceptance-report\" || trailingFence.tag === \"acceptance_report\") return output.slice(0, trailingFence.index).trimEnd();\n\t\ttry {\n\t\t\tif (parseGenericJsonAcceptanceReportBody(trailingFence.body).report) return output.slice(0, trailingFence.index).trimEnd();\n\t\t} catch {\n\t\t\t// Leave unrelated or malformed generic JSON fences visible.\n\t\t}\n\t}\n\treturn output\n\t\t.replace(/\\n?```acceptance[-_]report\\s*\\n[\\s\\S]*?```\\s*$/i, \"\")\n\t\t.replace(/\\n?ACCEPTANCE_REPORT\\s*:\\s*\\{[\\s\\S]*\\}\\s*$/i, \"\")\n\t\t.trimEnd();\n}\n\nfunction isStringArray(value: unknown): value is string[] {\n\treturn Array.isArray(value) && value.every((item) => typeof item === \"string\");\n}\n\nfunction pathFor(base: string, segment: string): string {\n\treturn base ? `${base}.${segment}` : segment;\n}\n\nfunction describeValidationValue(value: unknown): string {\n\tif (value === undefined) return \"missing\";\n\tif (value === null) return \"null\";\n\tif (Array.isArray(value)) return \"array\";\n\tif (typeof value === \"object\") return \"object\";\n\tif (typeof value === \"string\") {\n\t\tconst short = value.length > 80 ? `${value.slice(0, 77)}...` : value;\n\t\treturn JSON.stringify(short);\n\t}\n\treturn `${typeof value} ${String(value)}`;\n}\n\nfunction pushTypeError(errors: string[], pathLabel: string, expected: string, value: unknown): void {\n\terrors.push(`${pathLabel}: expected ${expected}; got ${describeValidationValue(value)}`);\n}\n\nfunction validateStringArrayField(errors: string[], value: unknown, pathLabel: string): void {\n\tif (!Array.isArray(value)) {\n\t\tpushTypeError(errors, pathLabel, \"string[]\", value);\n\t\treturn;\n\t}\n\tfor (const [index, item] of value.entries()) {\n\t\tif (typeof item !== \"string\" || !item.trim()) pushTypeError(errors, `${pathLabel}[${index}]`, \"non-empty string\", item);\n\t}\n}\n\nfunction validateAcceptanceReport(value: unknown, pathLabel = \"\"): { report?: AcceptanceReport; errors: string[] } {\n\tconst normalized = normalizeAcceptanceReportValue(value, pathLabel);\n\tvalue = normalized.value;\n\tpathLabel = normalized.pathLabel;\n\tconst errors = normalized.errors;\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) {\n\t\tpushTypeError(errors, pathLabel || \"acceptance-report\", \"object\", value);\n\t\treturn { errors };\n\t}\n\tconst report = value as AcceptanceReport;\n\tif (report.criteriaSatisfied !== undefined) {\n\t\tif (!Array.isArray(report.criteriaSatisfied)) {\n\t\t\tpushTypeError(errors, pathFor(pathLabel, \"criteriaSatisfied\"), \"array\", report.criteriaSatisfied);\n\t\t} else {\n\t\t\tconst criterionIds = new Set<string>();\n\t\t\tfor (const [index, item] of report.criteriaSatisfied.entries()) {\n\t\t\t\tconst itemPath = `${pathFor(pathLabel, \"criteriaSatisfied\")}[${index}]`;\n\t\t\t\tif (!item || typeof item !== \"object\" || Array.isArray(item)) {\n\t\t\t\t\tpushTypeError(errors, itemPath, \"object\", item);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst criterion = item as { id?: unknown; status?: unknown; evidence?: unknown };\n\t\t\t\tif (criterion.id !== undefined && typeof criterion.id !== \"string\") {\n\t\t\t\t\tpushTypeError(errors, `${itemPath}.id`, \"string\", criterion.id);\n\t\t\t\t} else if (typeof criterion.id === \"string\" && criterion.id) {\n\t\t\t\t\tif (criterionIds.has(criterion.id)) errors.push(`${itemPath}.id: duplicate normalized criterion id '${criterion.id}'`);\n\t\t\t\t\tcriterionIds.add(criterion.id);\n\t\t\t\t}\n\t\t\t\tif (criterion.status !== \"satisfied\" && criterion.status !== \"not-satisfied\" && criterion.status !== \"not-applicable\") {\n\t\t\t\t\tpushTypeError(errors, `${itemPath}.status`, \"one of \\\"satisfied\\\", \\\"not-satisfied\\\", \\\"not-applicable\\\"\", criterion.status);\n\t\t\t\t}\n\t\t\t\tif (typeof criterion.evidence !== \"string\" || !criterion.evidence.trim()) pushTypeError(errors, `${itemPath}.evidence`, \"non-empty string\", criterion.evidence);\n\t\t\t}\n\t\t}\n\t}\n\tif (report.changedFiles !== undefined) validateStringArrayField(errors, report.changedFiles, pathFor(pathLabel, \"changedFiles\"));\n\tif (report.testsAddedOrUpdated !== undefined) validateStringArrayField(errors, report.testsAddedOrUpdated, pathFor(pathLabel, \"testsAddedOrUpdated\"));\n\tif (report.commandsRun !== undefined) {\n\t\tif (!Array.isArray(report.commandsRun)) {\n\t\t\tpushTypeError(errors, pathFor(pathLabel, \"commandsRun\"), \"array\", report.commandsRun);\n\t\t} else {\n\t\t\tfor (const [index, item] of report.commandsRun.entries()) {\n\t\t\t\tconst itemPath = `${pathFor(pathLabel, \"commandsRun\")}[${index}]`;\n\t\t\t\tif (!item || typeof item !== \"object\" || Array.isArray(item)) {\n\t\t\t\t\tpushTypeError(errors, itemPath, \"object\", item);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst command = item as { command?: unknown; result?: unknown; summary?: unknown };\n\t\t\t\tif (typeof command.command !== \"string\" || !command.command.trim()) pushTypeError(errors, `${itemPath}.command`, \"non-empty string\", command.command);\n\t\t\t\tif (command.result !== \"passed\" && command.result !== \"failed\" && command.result !== \"not-run\") {\n\t\t\t\t\tpushTypeError(errors, `${itemPath}.result`, \"one of \\\"passed\\\", \\\"failed\\\", \\\"not-run\\\"\", command.result);\n\t\t\t\t}\n\t\t\t\tif (typeof command.summary !== \"string\" || !command.summary.trim()) pushTypeError(errors, `${itemPath}.summary`, \"non-empty string\", command.summary);\n\t\t\t}\n\t\t}\n\t}\n\tif (report.validationOutput !== undefined) validateStringArrayField(errors, report.validationOutput, pathFor(pathLabel, \"validationOutput\"));\n\tif (report.residualRisks !== undefined) validateStringArrayField(errors, report.residualRisks, pathFor(pathLabel, \"residualRisks\"));\n\tif (report.noStagedFiles !== undefined && typeof report.noStagedFiles !== \"boolean\") pushTypeError(errors, pathFor(pathLabel, \"noStagedFiles\"), \"boolean\", report.noStagedFiles);\n\tif (report.diffSummary !== undefined && (typeof report.diffSummary !== \"string\" || !report.diffSummary.trim())) pushTypeError(errors, pathFor(pathLabel, \"diffSummary\"), \"non-empty string\", report.diffSummary);\n\tif (report.reviewFindings !== undefined) validateStringArrayField(errors, report.reviewFindings, pathFor(pathLabel, \"reviewFindings\"));\n\tif (report.manualNotes !== undefined && typeof report.manualNotes !== \"string\") pushTypeError(errors, pathFor(pathLabel, \"manualNotes\"), \"string\", report.manualNotes);\n\tif (report.notes !== undefined && typeof report.notes !== \"string\") pushTypeError(errors, pathFor(pathLabel, \"notes\"), \"string\", report.notes);\n\tif (errors.length > 0) return { errors };\n\tconst hasReportField = report.criteriaSatisfied !== undefined\n\t\t|| report.changedFiles !== undefined\n\t\t|| report.testsAddedOrUpdated !== undefined\n\t\t|| report.commandsRun !== undefined\n\t\t|| report.validationOutput !== undefined\n\t\t|| report.residualRisks !== undefined\n\t\t|| report.noStagedFiles !== undefined\n\t\t|| report.diffSummary !== undefined\n\t\t|| report.manualNotes !== undefined\n\t\t|| report.notes !== undefined\n\t\t|| report.reviewFindings !== undefined;\n\treturn hasReportField\n\t\t? { report, errors }\n\t\t: { errors: [`${pathLabel || \"acceptance-report\"}: expected at least one acceptance report field`] };\n}\n\nfunction checkCriteriaSatisfied(criteria: ResolvedAcceptanceGate[], report: AcceptanceReport): AcceptanceRuntimeCheck[] {\n\tconst reports = new Map((report.criteriaSatisfied ?? []).filter((item) => item.id).map((item) => [normalizedToken(item.id!), item]));\n\treturn criteria.filter((criterion) => criterion.severity !== \"recommended\").map((criterion) => {\n\t\tconst item = reports.get(normalizedToken(criterion.id));\n\t\tif (!item) return { id: `criterion:${criterion.id}`, status: \"failed\", message: `Required criterion '${criterion.id}' was not reported.` };\n\t\tif (item.status !== \"satisfied\") return { id: `criterion:${criterion.id}`, status: \"failed\", message: `Required criterion '${criterion.id}' was reported as ${item.status}.` };\n\t\treturn { id: `criterion:${criterion.id}`, status: \"passed\", message: `Required criterion '${criterion.id}' satisfied.` };\n\t});\n}\n\nfunction reportEvidenceStatus(report: AcceptanceReport, kind: AcceptanceEvidenceKind): AcceptanceRuntimeCheckStatus {\n\tswitch (kind) {\n\t\tcase \"changed-files\":\n\t\t\tif (!isStringArray(report.changedFiles)) return \"failed\";\n\t\t\treturn report.changedFiles.length === 0 ? \"not-applicable\" : \"passed\";\n\t\tcase \"tests-added\":\n\t\t\tif (!isStringArray(report.testsAddedOrUpdated)) return \"failed\";\n\t\t\treturn report.testsAddedOrUpdated.length === 0 ? \"not-applicable\" : \"passed\";\n\t\tcase \"commands-run\": return Array.isArray(report.commandsRun) && report.commandsRun.length > 0 ? \"passed\" : \"failed\";\n\t\tcase \"validation-output\": return isStringArray(report.validationOutput) && report.validationOutput.length > 0 ? \"passed\" : \"failed\";\n\t\tcase \"residual-risks\": return isStringArray(report.residualRisks) ? \"passed\" : \"failed\";\n\t\tcase \"no-staged-files\": return report.noStagedFiles === true ? \"passed\" : \"failed\";\n\t\tcase \"diff-summary\": return typeof report.diffSummary === \"string\" && report.diffSummary.trim().length > 0 ? \"passed\" : \"failed\";\n\t\tcase \"review-findings\": return isStringArray(report.reviewFindings) ? \"passed\" : \"failed\";\n\t\tcase \"manual-notes\": return Boolean((report.manualNotes ?? report.notes)?.trim()) ? \"passed\" : \"failed\";\n\t}\n}\n\nfunction checkNoStagedFiles(cwd: string): AcceptanceRuntimeCheck {\n\tconst result = spawnSync(\"git\", [\"status\", \"--short\"], { cwd, encoding: \"utf-8\" });\n\tif (result.status !== 0) {\n\t\treturn { id: \"no-staged-files\", status: \"not-applicable\", message: \"git status unavailable; no staged-files check skipped\" };\n\t}\n\tconst staged = result.stdout.split(/\\r?\\n/).filter((line) => line.length >= 2 && line[0] !== \" \" && line[0] !== \"?\");\n\treturn staged.length === 0\n\t\t? { id: \"no-staged-files\", status: \"passed\", message: \"No staged files detected.\" }\n\t\t: { id: \"no-staged-files\", status: \"failed\", message: `Staged files present: ${staged.join(\", \")}` };\n}\n\nfunction runStructuralChecks(acceptance: ResolvedAcceptanceConfig, report: AcceptanceReport, cwd: string): AcceptanceRuntimeCheck[] {\n\tconst checks: AcceptanceRuntimeCheck[] = [];\n\tfor (const kind of acceptance.evidence) {\n\t\tconst status = reportEvidenceStatus(report, kind);\n\t\tchecks.push({\n\t\t\tid: `evidence:${kind}`,\n\t\t\tstatus,\n\t\t\tmessage: status === \"passed\"\n\t\t\t\t? `${kind} evidence present.`\n\t\t\t\t: status === \"not-applicable\"\n\t\t\t\t\t? `${kind} evidence explicitly reported as not applicable.`\n\t\t\t\t\t: `${kind} evidence missing from child report.`,\n\t\t});\n\t}\n\tif (acceptance.evidence.includes(\"no-staged-files\")) checks.push(checkNoStagedFiles(cwd));\n\treturn checks;\n}\n\nfunction trimOutput(value: string): string | undefined {\n\tconst trimmed = value.trim();\n\tif (!trimmed) return undefined;\n\treturn trimmed.length > 12_000 ? `${trimmed.slice(0, 12_000)}\\n...[truncated]` : trimmed;\n}\n\nfunction uniqueStrings(items: Array<string | undefined>): string[] {\n\treturn unique(items.map((item) => item?.trim()).filter((item): item is string => Boolean(item)));\n}\n\nexport function aggregateAcceptanceReport(input: {\n\tresults: Array<Pick<SingleResult, \"agent\" | \"acceptance\" | \"error\" | \"exitCode\">>;\n\tnotes?: string;\n}): AcceptanceReport {\n\tconst childReports = input.results.map((result) => result.acceptance?.childReport).filter((report): report is AcceptanceReport => Boolean(report));\n\tconst blockers = input.results.filter((result) => result.exitCode !== 0 || result.acceptance?.status === \"rejected\");\n\tconst successfulChildren = input.results.length > 0 && blockers.length === 0;\n\treturn {\n\t\tcriteriaSatisfied: [\n\t\t\t{ id: \"criterion-1\", status: successfulChildren ? \"satisfied\" : \"not-satisfied\", evidence: successfulChildren ? `All ${input.results.length} dynamic child run(s) completed without child or acceptance blockers.` : \"Dynamic fanout produced no accepted child evidence.\" },\n\t\t\t{ id: \"criterion-2\", status: successfulChildren ? \"satisfied\" : \"not-satisfied\", evidence: successfulChildren ? \"Collected child acceptance evidence for aggregate review.\" : \"Dynamic fanout produced no aggregate review evidence.\" },\n\t\t\t...input.results.map((result, index) => ({\n\t\t\t\tid: `child-${index + 1}`,\n\t\t\t\tstatus: result.exitCode === 0 && result.acceptance?.status !== \"rejected\" ? \"satisfied\" : \"not-satisfied\",\n\t\t\t\tevidence: `${result.agent}: acceptance ${result.acceptance?.status ?? \"unreported\"}${result.error ? ` (${result.error})` : \"\"}`,\n\t\t\t})),\n\t\t],\n\t\tchangedFiles: uniqueStrings(childReports.flatMap((report) => report.changedFiles ?? [])),\n\t\ttestsAddedOrUpdated: uniqueStrings(childReports.flatMap((report) => report.testsAddedOrUpdated ?? [])),\n\t\tcommandsRun: childReports.flatMap((report) => report.commandsRun ?? []),\n\t\tvalidationOutput: uniqueStrings(childReports.flatMap((report) => report.validationOutput ?? [])),\n\t\tresidualRisks: uniqueStrings([\n\t\t\t...childReports.flatMap((report) => report.residualRisks ?? []),\n\t\t\t...blockers.map((result) => `${result.agent}: ${result.error ?? \"child or acceptance gate failed\"}`),\n\t\t]),\n\t\tnoStagedFiles: childReports.length > 0 && childReports.every((report) => report.noStagedFiles === true),\n\t\treviewFindings: uniqueStrings(childReports.flatMap((report) => report.reviewFindings ?? [])),\n\t\tmanualNotes: input.notes ?? `Aggregated acceptance evidence from ${input.results.length} dynamic fanout child run(s).`,\n\t\tnotes: input.notes,\n\t};\n}\n\nfunction runVerifyCommand(command: AcceptanceVerifyCommand, defaultCwd: string, options: { signal?: AbortSignal; abortMessage?: string } = {}): Promise<AcceptanceVerifyResult> {\n\treturn new Promise((resolve) => {\n\t\tconst startedAt = Date.now();\n\t\tconst cwd = command.cwd ? path.resolve(defaultCwd, command.cwd) : defaultCwd;\n\t\tlet stdout = \"\";\n\t\tlet stderr = \"\";\n\t\tlet timedOut = false;\n\t\tlet settled = false;\n\t\tlet hardKill: NodeJS.Timeout | undefined;\n\t\tconst child = spawn(command.command, {\n\t\t\tcwd,\n\t\t\tenv: { ...process.env, ...(command.env ?? {}) },\n\t\t\tshell: true,\n\t\t\tstdio: [\"ignore\", \"pipe\", \"pipe\"],\n\t\t\twindowsHide: true,\n\t\t});\n\t\tconst finish = (result: Omit<AcceptanceVerifyResult, \"id\" | \"command\" | \"cwd\" | \"durationMs\">) => {\n\t\t\tif (settled) return;\n\t\t\tsettled = true;\n\t\t\tclearTimeout(timeout);\n\t\t\tif (hardKill) clearTimeout(hardKill);\n\t\t\toptions.signal?.removeEventListener(\"abort\", abortVerification);\n\t\t\tresolve({\n\t\t\t\tid: command.id,\n\t\t\t\tcommand: command.command,\n\t\t\t\tcwd,\n\t\t\t\tdurationMs: Date.now() - startedAt,\n\t\t\t\t...result,\n\t\t\t});\n\t\t};\n\t\tconst abortVerification = () => {\n\t\t\tif (settled || timedOut) return;\n\t\t\ttimedOut = true;\n\t\t\tchild.kill(\"SIGTERM\");\n\t\t\thardKill = setTimeout(() => {\n\t\t\t\tchild.kill(\"SIGKILL\");\n\t\t\t\tfinish({\n\t\t\t\t\texitCode: null,\n\t\t\t\t\tstatus: \"timed-out\",\n\t\t\t\t\tstdout: trimOutput(stdout),\n\t\t\t\t\tstderr: trimOutput(stderr || options.abortMessage || \"Acceptance verification timed out.\"),\n\t\t\t\t});\n\t\t\t}, 1000);\n\t\t\thardKill.unref?.();\n\t\t};\n\t\tconst timeout = setTimeout(abortVerification, command.timeoutMs ?? 120_000);\n\t\ttimeout.unref?.();\n\t\tif (options.signal?.aborted) abortVerification();\n\t\telse options.signal?.addEventListener(\"abort\", abortVerification, { once: true });\n\t\tchild.stdout.on(\"data\", (chunk: Buffer) => {\n\t\t\tstdout += chunk.toString();\n\t\t});\n\t\tchild.stderr.on(\"data\", (chunk: Buffer) => {\n\t\t\tstderr += chunk.toString();\n\t\t});\n\t\tchild.on(\"close\", (exitCode) => {\n\t\t\tconst passed = exitCode === 0 && !timedOut;\n\t\t\tfinish({\n\t\t\t\texitCode,\n\t\t\t\tstatus: timedOut ? \"timed-out\" : passed ? \"passed\" : command.allowFailure ? \"allowed-failure\" : \"failed\",\n\t\t\t\tstdout: trimOutput(stdout),\n\t\t\t\tstderr: trimOutput(stderr || (timedOut ? options.abortMessage ?? \"\" : \"\")),\n\t\t\t});\n\t\t});\n\t\tchild.on(\"error\", (error) => {\n\t\t\tfinish({\n\t\t\t\texitCode: timedOut ? null : 1,\n\t\t\t\tstatus: timedOut ? \"timed-out\" : command.allowFailure ? \"allowed-failure\" : \"failed\",\n\t\t\t\tstderr: timedOut ? trimOutput(stderr || options.abortMessage || \"Acceptance verification timed out.\") : error instanceof Error ? error.message : String(error),\n\t\t\t});\n\t\t});\n\t});\n}\n\nexport async function evaluateAcceptance(input: {\n\tacceptance: ResolvedAcceptanceConfig;\n\toutput: string;\n\tcwd: string;\n\t/**\n\t * Content the child sent to its configured output file (from its own write\n\t * tool calls, not from disk, so a concurrent writer to the same path cannot\n\t * be misattributed). Searched for the acceptance report; searched before\n\t * the assistant output when `authoritative` (outputMode \"file-only\").\n\t */\n\tfileOutput?: { content: string; path: string; authoritative?: boolean };\n\treport?: AcceptanceReport;\n\treviewResult?: AcceptanceReviewResult;\n\tsignal?: AbortSignal;\n\tabortMessage?: string;\n}): Promise<AcceptanceLedger> {\n\tconst acceptance = input.acceptance;\n\tconst ledger: AcceptanceLedger = {\n\t\tstatus: acceptance.level === \"none\" ? \"not-required\" : \"claimed\",\n\t\texplicit: acceptance.explicit,\n\t\teffectiveAcceptance: acceptance,\n\t\tinferredReason: acceptance.inferredReason,\n\t\tcriteria: acceptance.criteria,\n\t\truntimeChecks: [],\n\t\tverifyRuns: [],\n\t};\n\tif (acceptance.level === \"none\") return ledger;\n\n\tconst parsed = input.report\n\t\t? (() => {\n\t\t\tconst validation = validateAcceptanceReport(input.report);\n\t\t\treturn validation.report\n\t\t\t\t? { report: validation.report }\n\t\t\t\t: { error: `Failed to parse acceptance-report: Invalid acceptance-report: ${validation.errors.join(\"; \")}` };\n\t\t})()\n\t\t: parseAcceptanceReportSources(input.output, input.fileOutput);\n\tif (parsed.report) {\n\t\tledger.childReport = parsed.report;\n\t\tledger.status = \"attested\";\n\t} else {\n\t\tledger.childReportParseError = parsed.error;\n\t\tledger.runtimeChecks.push({ id: \"attestation\", status: \"failed\", message: parsed.error ?? \"Structured acceptance report missing.\" });\n\t\tledger.status = \"rejected\";\n\t\treturn ledger;\n\t}\n\n\tif (LEVEL_RANK[acceptance.level] >= LEVEL_RANK.checked) {\n\t\tledger.runtimeChecks = [\n\t\t\t...checkCriteriaSatisfied(acceptance.criteria, parsed.report),\n\t\t\t...runStructuralChecks(acceptance, parsed.report, input.cwd),\n\t\t];\n\t\tif (ledger.runtimeChecks.some((check) => check.status === \"failed\")) {\n\t\t\tledger.status = \"rejected\";\n\t\t\treturn ledger;\n\t\t}\n\t\tledger.status = \"checked\";\n\t}\n\n\tif (LEVEL_RANK[acceptance.level] >= LEVEL_RANK.verified && (acceptance.level === \"verified\" || acceptance.verify.length > 0)) {\n\t\tif (acceptance.level === \"verified\" && acceptance.verify.length === 0) {\n\t\t\tledger.runtimeChecks.push({ id: \"verification-config\", status: \"failed\", message: \"verified acceptance requires runtime verify commands.\" });\n\t\t\tledger.status = \"rejected\";\n\t\t\treturn ledger;\n\t\t}\n\t\tledger.verifyRuns = [];\n\t\tfor (const command of acceptance.verify) {\n\t\t\tledger.verifyRuns.push(await runVerifyCommand(command, input.cwd, { signal: input.signal, abortMessage: input.abortMessage }));\n\t\t\tif (input.signal?.aborted) break;\n\t\t}\n\t\tif (ledger.verifyRuns.some((run) => run.status === \"failed\" || run.status === \"timed-out\")) {\n\t\t\tledger.status = \"rejected\";\n\t\t\treturn ledger;\n\t\t}\n\t\tledger.status = \"verified\";\n\t}\n\n\tif (acceptance.level === \"reviewed\") {\n\t\tif (input.reviewResult) {\n\t\t\tledger.reviewResult = input.reviewResult;\n\t\t\tledger.status = input.reviewResult.status === \"no-blockers\" ? \"reviewed\" : \"rejected\";\n\t\t} else {\n\t\t\tconst optionalReview = acceptance.review && acceptance.review !== false && acceptance.review.required === false;\n\t\t\tledger.reviewResult = {\n\t\t\t\tstatus: \"needs-parent-decision\",\n\t\t\t\tfindings: [{\n\t\t\t\t\tseverity: acceptance.explicit && !optionalReview ? \"blocker\" : \"non-blocking\",\n\t\t\t\t\tissue: \"Reviewed acceptance requires an independent reviewer result.\",\n\t\t\t\t\trationale: \"The run cannot be marked reviewed from child evidence alone.\",\n\t\t\t\t}],\n\t\t\t};\n\t\t\tif (acceptance.review === false || (acceptance.explicit && !optionalReview)) ledger.status = \"rejected\";\n\t\t}\n\t}\n\n\treturn ledger;\n}\n\nexport function buildSkippedAcceptanceLedger(acceptance: ResolvedAcceptanceConfig, input: { id: string; message: string }): AcceptanceLedger {\n\treturn {\n\t\tstatus: acceptance.level === \"none\" ? \"not-required\" : \"rejected\",\n\t\texplicit: acceptance.explicit,\n\t\teffectiveAcceptance: acceptance,\n\t\tinferredReason: acceptance.inferredReason,\n\t\tcriteria: acceptance.criteria,\n\t\truntimeChecks: acceptance.level === \"none\"\n\t\t\t? []\n\t\t\t: [{ id: input.id, status: \"failed\", message: input.message }],\n\t\tverifyRuns: [],\n\t};\n}\n\nexport function acceptanceFailureMessage(ledger: AcceptanceLedger): string | undefined {\n\tif (ledger.status !== \"rejected\") return undefined;\n\tconst failedCheck = ledger.runtimeChecks.find((check) => check.status === \"failed\");\n\tif (failedCheck) return `Acceptance rejected: ${failedCheck.message}`;\n\tconst failedVerify = ledger.verifyRuns.find((run) => run.status === \"failed\" || run.status === \"timed-out\");\n\tif (failedVerify) return `Acceptance verification '${failedVerify.id}' ${failedVerify.status}.`;\n\tif (ledger.reviewResult?.status === \"needs-parent-decision\") return \"Acceptance review required but no automatic reviewer result is available.\";\n\tif (ledger.reviewResult?.status === \"blockers\") return \"Acceptance review found blockers.\";\n\treturn \"Acceptance rejected.\";\n}\n"]}
|
|
1
|
+
{"version":3,"file":"acceptance.js","sourceRoot":"","sources":["../../../../../../src/builtin-extensions/pi-subagents/src/runs/shared/acceptance.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport { spawn } from \"node:child_process\";\nimport { spawnSync } from \"node:child_process\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type {\n\tAcceptanceConfig,\n\tAcceptanceEvidenceKind,\n\tAcceptanceInput,\n\tAcceptanceLedger,\n\tAcceptanceLevel,\n\tAcceptanceReport,\n\tAcceptanceRole,\n\tAcceptanceRuntimeCheck,\n\tAcceptanceRuntimeCheckStatus,\n\tAcceptanceReviewResult,\n\tAcceptanceVerifyCommand,\n\tAcceptanceVerifyResult,\n\tResolvedAcceptanceConfig,\n\tResolvedAcceptanceGate,\n\tSingleResult,\n\tSubagentRunMode,\n} from \"../../shared/types.ts\";\nimport { classifyTaskMutationIntent, taskMayMutate } from \"./task-intent.ts\";\n\nconst LEVEL_RANK: Record<Exclude<AcceptanceLevel, \"auto\">, number> = {\n\tnone: 0,\n\tattested: 1,\n\tchecked: 2,\n\tverified: 3,\n\treviewed: 4,\n};\n\nconst VALID_LEVELS = new Set<AcceptanceLevel>([\"auto\", \"none\", \"attested\", \"checked\", \"verified\", \"reviewed\"]);\nconst VALID_EVIDENCE = new Set<AcceptanceEvidenceKind>([\n\t\"changed-files\",\n\t\"tests-added\",\n\t\"commands-run\",\n\t\"validation-output\",\n\t\"residual-risks\",\n\t\"no-staged-files\",\n\t\"diff-summary\",\n\t\"review-findings\",\n\t\"manual-notes\",\n]);\nconst ACCEPTANCE_CONFIG_KEYS = new Set([\"level\", \"criteria\", \"evidence\", \"verify\", \"review\", \"stopRules\", \"reason\"]);\nconst ACCEPTANCE_GATE_KEYS = new Set([\"id\", \"must\", \"evidence\", \"severity\"]);\nconst ACCEPTANCE_VERIFY_KEYS = new Set([\"id\", \"command\", \"timeoutMs\", \"cwd\", \"env\", \"allowFailure\"]);\nconst ACCEPTANCE_REVIEW_KEYS = new Set([\"agent\", \"focus\", \"required\"]);\nconst EXPLICIT_REVIEWED_UNAVAILABLE = \"cannot be requested explicitly because this run cannot supply an independent reviewer result; use checked/verified and orchestrate the reviewer separately, or omit acceptance for read-only review tasks.\";\n\nfunction normalizeLevel(level: AcceptanceLevel | undefined): Exclude<AcceptanceLevel, \"auto\"> | \"auto\" {\n\treturn level ?? \"auto\";\n}\n\nfunction unique<T>(items: T[]): T[] {\n\treturn [...new Set(items)];\n}\n\nfunction requiredEvidenceForLevel(level: Exclude<AcceptanceLevel, \"auto\">): AcceptanceEvidenceKind[] {\n\tswitch (level) {\n\t\tcase \"none\":\n\t\t\treturn [];\n\t\tcase \"attested\":\n\t\t\treturn [\"manual-notes\", \"residual-risks\"];\n\t\tcase \"checked\":\n\t\t\treturn [\"changed-files\", \"tests-added\", \"commands-run\", \"residual-risks\", \"no-staged-files\"];\n\t\tcase \"verified\":\n\t\tcase \"reviewed\":\n\t\t\treturn [\"changed-files\", \"tests-added\", \"commands-run\", \"validation-output\", \"residual-risks\", \"no-staged-files\"];\n\t}\n}\n\nfunction inferLevel(input: {\n\tagentName?: string;\n\tpermissions?: \"full\" | \"read-only\";\n\tacceptanceRole?: AcceptanceRole;\n\ttask?: string;\n\tmode?: SubagentRunMode;\n\tasync?: boolean;\n\tdynamic?: boolean;\n\tdynamicGroup?: boolean;\n}): { level: Exclude<AcceptanceLevel, \"auto\">; reasons: string[]; criteria: string[]; evidence: AcceptanceEvidenceKind[]; review?: { agent?: string; required?: boolean } } {\n\tconst permissions = input.permissions\n\t\t?? (input.acceptanceRole === \"read-only\" ? \"read-only\" : \"full\");\n\tconst task = input.task?.toLowerCase() ?? \"\";\n\tconst reasons: string[] = [];\n\tconst intent = classifyTaskMutationIntent(permissions, input.task ?? \"\");\n\tconst readOnlyPermission = permissions === \"read-only\";\n\tconst readOnlyTask = readOnlyPermission\n\t\t|| intent.kind === \"read-only\"\n\t\t|| (intent.kind === \"unknown\" && /\\b(?:read[- ]only|review[- ]only|no edits|without edits|inspect|summari[sz]e)\\b/.test(task));\n\tconst taskMayWrite = !readOnlyPermission && (taskMayMutate(input.task ?? \"\") || intent.kind === \"implementation\");\n\tconst writeTask = taskMayWrite && !readOnlyTask;\n\tconst inferredReadOnly = readOnlyPermission || readOnlyTask;\n\tconst risky = !inferredReadOnly && (\n\t\tBoolean(input.async && writeTask)\n\t\t|| Boolean(input.dynamic)\n\t\t|| Boolean(input.dynamicGroup)\n\t\t|| /\\b(?:release|migration|migrate|security|data[- ]loss|destructive|post-review|fix pass)\\b/.test(task)\n\t);\n\n\tif (inferredReadOnly) {\n\t\treasons.push(readOnlyPermission ? \"read-only child permission\" : \"read-only task wording\");\n\t\treturn {\n\t\t\tlevel: \"attested\",\n\t\t\treasons,\n\t\t\tcriteria: [\"Return concrete findings with file paths and severity when applicable\"],\n\t\t\tevidence: [\"review-findings\", \"residual-risks\"],\n\t\t};\n\t}\n\tif (risky) {\n\t\treasons.push(input.async ? \"async write-capable or risky run\" : \"risky write-capable run\");\n\t\tif (input.dynamic || input.dynamicGroup) reasons.push(\"dynamic fanout context\");\n\t\treturn {\n\t\t\tlevel: \"reviewed\",\n\t\t\treasons,\n\t\t\tcriteria: [\"Implement the requested change without widening scope\", \"Return evidence sufficient for an independent acceptance review\"],\n\t\t\tevidence: requiredEvidenceForLevel(\"reviewed\"),\n\t\t};\n\t}\n\tif (writeTask) {\n\t\treasons.push(\"write-capable task with full child permission\");\n\t\treturn {\n\t\t\tlevel: \"checked\",\n\t\t\treasons,\n\t\t\tcriteria: [\"Implement the requested change without widening scope\"],\n\t\t\tevidence: requiredEvidenceForLevel(\"checked\"),\n\t\t};\n\t}\n\treasons.push(\"default lightweight attestation\");\n\treturn {\n\t\tlevel: \"attested\",\n\t\treasons,\n\t\tcriteria: [\"Return a concise result and residual risks when applicable\"],\n\t\tevidence: [\"manual-notes\", \"residual-risks\"],\n\t};\n}\n\nexport function normalizeAcceptanceInput(input: AcceptanceInput | undefined): AcceptanceConfig {\n\tif (input === undefined || input === \"auto\") return { level: \"auto\" };\n\tif (input === false) return { level: \"none\", reason: \"disabled by deprecated false shorthand\" };\n\tif (typeof input === \"string\") return { level: input };\n\treturn { ...input };\n}\n\nfunction explicitAcceptanceCanDisable(explicit: AcceptanceConfig): boolean {\n\treturn explicit.level === \"none\" && typeof explicit.reason === \"string\" && explicit.reason.trim().length > 0;\n}\n\nexport function validateAcceptanceInput(input: unknown, pathLabel = \"acceptance\"): string[] {\n\tconst errors: string[] = [];\n\tif (input === undefined) return errors;\n\tif (input === false) return errors;\n\tif (typeof input === \"string\") {\n\t\tif (!VALID_LEVELS.has(input as AcceptanceLevel)) errors.push(`${pathLabel} has invalid level '${input}'.`);\n\t\telse if (input === \"none\") errors.push(`${pathLabel} level \"none\" requires a reason; use { level: \"none\", reason: \"...\" }.`);\n\t\telse if (input === \"reviewed\") errors.push(`${pathLabel} ${EXPLICIT_REVIEWED_UNAVAILABLE}`);\n\t\treturn errors;\n\t}\n\tif (!input || typeof input !== \"object\" || Array.isArray(input)) {\n\t\terrors.push(`${pathLabel} must be a string level, false, or an object.`);\n\t\treturn errors;\n\t}\n\tconst value = input as Record<string, unknown>;\n\tfor (const key of Object.keys(value)) {\n\t\tif (!ACCEPTANCE_CONFIG_KEYS.has(key)) errors.push(`${pathLabel}.${key} is not supported.`);\n\t}\n\tif (value.level !== undefined && (typeof value.level !== \"string\" || !VALID_LEVELS.has(value.level as AcceptanceLevel))) {\n\t\terrors.push(`${pathLabel}.level must be one of auto, none, attested, checked, verified, reviewed.`);\n\t}\n\tif (value.level === \"none\" && (typeof value.reason !== \"string\" || !value.reason.trim())) {\n\t\terrors.push(`${pathLabel}.reason is required when level is none.`);\n\t}\n\tif (value.level === \"reviewed\") errors.push(`${pathLabel}.level ${EXPLICIT_REVIEWED_UNAVAILABLE}`);\n\tif (value.reason !== undefined && typeof value.reason !== \"string\") errors.push(`${pathLabel}.reason must be a string.`);\n\tif (value.criteria !== undefined && !Array.isArray(value.criteria)) errors.push(`${pathLabel}.criteria must be an array.`);\n\tif (Array.isArray(value.criteria)) {\n\t\tconst criterionIds = new Set<string>();\n\t\tfor (const [index, criterion] of value.criteria.entries()) {\n\t\t\tif (typeof criterion === \"string\") continue;\n\t\t\tconst criterionPath = `${pathLabel}.criteria[${index}]`;\n\t\t\tif (!criterion || typeof criterion !== \"object\" || Array.isArray(criterion)) {\n\t\t\t\terrors.push(`${criterionPath} must be a string or an object.`);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst gate = criterion as Record<string, unknown>;\n\t\t\tfor (const key of Object.keys(gate)) {\n\t\t\t\tif (!ACCEPTANCE_GATE_KEYS.has(key)) errors.push(`${criterionPath}.${key} is not supported.`);\n\t\t\t}\n\t\t\tif (typeof gate.id !== \"string\" || !gate.id.trim()) {\n\t\t\t\terrors.push(`${criterionPath}.id is required.`);\n\t\t\t} else {\n\t\t\t\tconst normalizedId = normalizedToken(gate.id);\n\t\t\t\tif (criterionIds.has(normalizedId)) errors.push(`${criterionPath}.id duplicates normalized criterion id '${normalizedId}'.`);\n\t\t\t\tcriterionIds.add(normalizedId);\n\t\t\t}\n\t\t\tif (typeof gate.must !== \"string\" || !gate.must.trim()) errors.push(`${criterionPath}.must is required.`);\n\t\t\tif (gate.evidence !== undefined && !Array.isArray(gate.evidence)) errors.push(`${criterionPath}.evidence must be an array.`);\n\t\t\tif (Array.isArray(gate.evidence)) {\n\t\t\t\tfor (const [evidenceIndex, item] of gate.evidence.entries()) {\n\t\t\t\t\tif (typeof item !== \"string\" || !VALID_EVIDENCE.has(item as AcceptanceEvidenceKind)) {\n\t\t\t\t\t\terrors.push(`${criterionPath}.evidence[${evidenceIndex}] is not a supported evidence kind.`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (gate.severity !== undefined && gate.severity !== \"required\" && gate.severity !== \"recommended\") {\n\t\t\t\terrors.push(`${criterionPath}.severity must be required or recommended.`);\n\t\t\t}\n\t\t}\n\t}\n\tif (Array.isArray(value.evidence)) {\n\t\tfor (const [index, item] of value.evidence.entries()) {\n\t\t\tif (typeof item !== \"string\" || !VALID_EVIDENCE.has(item as AcceptanceEvidenceKind)) {\n\t\t\t\terrors.push(`${pathLabel}.evidence[${index}] is not a supported evidence kind.`);\n\t\t\t}\n\t\t}\n\t} else if (value.evidence !== undefined) {\n\t\terrors.push(`${pathLabel}.evidence must be an array.`);\n\t}\n\tif (value.verify !== undefined && !Array.isArray(value.verify)) errors.push(`${pathLabel}.verify must be an array.`);\n\tif (Array.isArray(value.verify)) {\n\t\tfor (const [index, command] of value.verify.entries()) {\n\t\t\tif (!command || typeof command !== \"object\" || Array.isArray(command)) {\n\t\t\t\terrors.push(`${pathLabel}.verify[${index}] must be an object.`);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst cmd = command as Record<string, unknown>;\n\t\t\tfor (const key of Object.keys(cmd)) {\n\t\t\t\tif (!ACCEPTANCE_VERIFY_KEYS.has(key)) errors.push(`${pathLabel}.verify[${index}].${key} is not supported.`);\n\t\t\t}\n\t\t\tif (typeof cmd.id !== \"string\" || !cmd.id.trim()) errors.push(`${pathLabel}.verify[${index}].id is required.`);\n\t\t\tif (typeof cmd.command !== \"string\" || !cmd.command.trim()) errors.push(`${pathLabel}.verify[${index}].command is required.`);\n\t\t\tif (cmd.timeoutMs !== undefined && (typeof cmd.timeoutMs !== \"number\" || !Number.isInteger(cmd.timeoutMs) || cmd.timeoutMs < 1)) {\n\t\t\t\terrors.push(`${pathLabel}.verify[${index}].timeoutMs must be an integer >= 1.`);\n\t\t\t}\n\t\t\tif (cmd.cwd !== undefined && typeof cmd.cwd !== \"string\") errors.push(`${pathLabel}.verify[${index}].cwd must be a string.`);\n\t\t\tif (cmd.env !== undefined) {\n\t\t\t\tif (!cmd.env || typeof cmd.env !== \"object\" || Array.isArray(cmd.env)) {\n\t\t\t\t\terrors.push(`${pathLabel}.verify[${index}].env must be an object.`);\n\t\t\t\t} else {\n\t\t\t\t\tfor (const [envKey, envValue] of Object.entries(cmd.env as Record<string, unknown>)) {\n\t\t\t\t\t\tif (typeof envValue !== \"string\") errors.push(`${pathLabel}.verify[${index}].env.${envKey} must be a string.`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (cmd.allowFailure !== undefined && typeof cmd.allowFailure !== \"boolean\") {\n\t\t\t\terrors.push(`${pathLabel}.verify[${index}].allowFailure must be a boolean.`);\n\t\t\t}\n\t\t}\n\t}\n\tif (value.review !== undefined && value.review !== false) {\n\t\tif (!value.review || typeof value.review !== \"object\" || Array.isArray(value.review)) {\n\t\t\terrors.push(`${pathLabel}.review must be false or an object.`);\n\t\t} else {\n\t\t\tconst review = value.review as Record<string, unknown>;\n\t\t\tfor (const key of Object.keys(review)) {\n\t\t\t\tif (!ACCEPTANCE_REVIEW_KEYS.has(key)) errors.push(`${pathLabel}.review.${key} is not supported.`);\n\t\t\t}\n\t\t\tif (review.agent !== undefined && typeof review.agent !== \"string\") errors.push(`${pathLabel}.review.agent must be a string.`);\n\t\t\tif (review.focus !== undefined && typeof review.focus !== \"string\") errors.push(`${pathLabel}.review.focus must be a string.`);\n\t\t\tif (review.required !== undefined && typeof review.required !== \"boolean\") errors.push(`${pathLabel}.review.required must be a boolean.`);\n\t\t}\n\t}\n\tif (value.stopRules !== undefined && !Array.isArray(value.stopRules)) errors.push(`${pathLabel}.stopRules must be an array.`);\n\tif (Array.isArray(value.stopRules)) {\n\t\tfor (const [index, item] of value.stopRules.entries()) {\n\t\t\tif (typeof item !== \"string\") errors.push(`${pathLabel}.stopRules[${index}] must be a string.`);\n\t\t}\n\t}\n\treturn errors;\n}\n\nexport function validateExecutionAcceptance(input: {\n\tacceptance?: unknown;\n\ttasks?: Array<{ acceptance?: unknown }>;\n\tchain?: Array<{\n\t\tacceptance?: unknown;\n\t\tparallel?: Array<{ acceptance?: unknown }> | { acceptance?: unknown };\n\t}>;\n}): string[] {\n\tconst errors = validateAcceptanceInput(input.acceptance, \"acceptance\");\n\tfor (const [index, task] of (input.tasks ?? []).entries()) {\n\t\terrors.push(...validateAcceptanceInput(task.acceptance, `tasks[${index}].acceptance`));\n\t}\n\tfor (const [stepIndex, step] of (input.chain ?? []).entries()) {\n\t\terrors.push(...validateAcceptanceInput(step.acceptance, `chain[${stepIndex}].acceptance`));\n\t\tif (Array.isArray(step.parallel)) {\n\t\t\tfor (const [taskIndex, task] of step.parallel.entries()) {\n\t\t\t\terrors.push(...validateAcceptanceInput(task.acceptance, `chain[${stepIndex}].parallel[${taskIndex}].acceptance`));\n\t\t\t}\n\t\t} else if (step.parallel) {\n\t\t\terrors.push(...validateAcceptanceInput(step.parallel.acceptance, `chain[${stepIndex}].parallel.acceptance`));\n\t\t}\n\t}\n\treturn errors;\n}\n\nfunction normalizeCriteria(criteria: Array<string | { id?: string; must?: string; evidence?: AcceptanceEvidenceKind[]; severity?: \"required\" | \"recommended\" }> | undefined, evidence: AcceptanceEvidenceKind[]): ResolvedAcceptanceGate[] {\n\treturn (criteria ?? []).map((criterion, index) => {\n\t\tif (typeof criterion === \"string\") {\n\t\t\treturn { id: `criterion-${index + 1}`, must: criterion, evidence, severity: \"required\" };\n\t\t}\n\t\treturn {\n\t\t\tid: criterion.id?.trim() || `criterion-${index + 1}`,\n\t\t\tmust: criterion.must ?? \"\",\n\t\t\tevidence: criterion.evidence?.filter((item) => VALID_EVIDENCE.has(item)) ?? evidence,\n\t\t\tseverity: criterion.severity ?? \"required\",\n\t\t};\n\t}).filter((criterion) => criterion.must.trim());\n}\n\nexport function resolveEffectiveAcceptance(input: {\n\texplicit?: AcceptanceInput;\n\tagentName?: string;\n\tpermissions?: \"full\" | \"read-only\";\n\tacceptanceRole?: AcceptanceRole;\n\ttask?: string;\n\tmode?: SubagentRunMode;\n\tasync?: boolean;\n\tdynamic?: boolean;\n\tdynamicGroup?: boolean;\n}): ResolvedAcceptanceConfig {\n\tconst explicit = normalizeAcceptanceInput(input.explicit);\n\tconst inferred = inferLevel(input);\n\tconst explicitLevel = normalizeLevel(explicit.level);\n\tconst level = explicitAcceptanceCanDisable(explicit)\n\t\t? \"none\"\n\t\t: explicitLevel === \"auto\"\n\t\t\t? inferred.level\n\t\t\t: (LEVEL_RANK[explicitLevel] >= LEVEL_RANK[inferred.level] ? explicitLevel : inferred.level);\n\tconst evidence = unique([...(level === inferred.level ? inferred.evidence : requiredEvidenceForLevel(level)), ...(explicit.evidence ?? [])]);\n\tconst criteria = normalizeCriteria(\n\t\t(explicit.criteria?.length ? explicit.criteria : inferred.criteria) as Array<string | { id?: string; must?: string; evidence?: AcceptanceEvidenceKind[]; severity?: \"required\" | \"recommended\" }>,\n\t\tevidence,\n\t);\n\tlet review = explicit.review !== undefined ? explicit.review : inferred.review;\n\tif (level === \"reviewed\" && input.explicit !== undefined && explicitLevel !== \"reviewed\" && explicit.review === undefined && review && review !== false) {\n\t\treview = { ...review, required: false };\n\t}\n\treturn {\n\t\tlevel,\n\t\texplicit: input.explicit !== undefined,\n\t\tinferredReason: inferred.reasons,\n\t\tcriteria,\n\t\tevidence,\n\t\tverify: explicit.verify ?? [],\n\t\treview,\n\t\tstopRules: explicit.stopRules ?? [],\n\t\treason: explicit.reason,\n\t};\n}\n\nexport function formatAcceptancePrompt(acceptance: ResolvedAcceptanceConfig): string {\n\tif (acceptance.level === \"none\") return \"\";\n\tconst lines = [\n\t\t\"\",\n\t\t\"## Acceptance Contract\",\n\t\t`Acceptance level: ${acceptance.level}`,\n\t\t\"Completion is not accepted from prose alone. End with a structured acceptance report.\",\n\t\t\"\",\n\t\t\"Criteria:\",\n\t\t...(acceptance.criteria.length ? acceptance.criteria.map((criterion) => `- ${criterion.id}: ${criterion.must}`) : [\"- Return the requested result.\"]),\n\t\t\"\",\n\t\t`Required evidence: ${acceptance.evidence.join(\", \") || \"none\"}`,\n\t];\n\tif (acceptance.verify.length > 0) {\n\t\tlines.push(\"\", \"Runtime verification commands configured by parent:\");\n\t\tfor (const command of acceptance.verify) lines.push(`- ${command.id}: ${command.command}`);\n\t}\n\tif (acceptance.review && acceptance.review !== false) {\n\t\tlines.push(\"\", `Review gate: ${acceptance.review.required === false ? \"optional\" : \"required\"}${acceptance.review.agent ? ` by ${acceptance.review.agent}` : \"\"}.`);\n\t\tif (acceptance.review.focus) lines.push(`Review focus: ${acceptance.review.focus}`);\n\t}\n\tif (acceptance.stopRules.length > 0) {\n\t\tlines.push(\"\", \"Stop rules:\", ...acceptance.stopRules.map((rule) => `- ${rule}`));\n\t}\n\tlines.push(\n\t\t\"\",\n\t\t\"Finish with a fenced JSON block tagged `acceptance-report` in this shape:\",\n\t\t\"Use empty arrays when no items apply; array fields contain strings unless object entries are shown.\",\n\t\t\"`criteriaSatisfied[].status` must be exactly one of: satisfied, not-satisfied, not-applicable.\",\n\t\t\"`commandsRun[].result` must be exactly one of: passed, failed, not-run.\",\n\t\t\"`manualNotes` and `notes` are optional strings; an empty string means no note and does not satisfy `manual-notes` evidence.\",\n\t\t\"```acceptance-report\",\n\t\tJSON.stringify({\n\t\t\tcriteriaSatisfied: acceptance.criteria\n\t\t\t\t.filter((criterion) => criterion.severity !== \"recommended\")\n\t\t\t\t.map((criterion) => ({ id: criterion.id, status: \"satisfied\", evidence: \"specific proof\" })),\n\t\t\tchangedFiles: [\"src/file.ts\"],\n\t\t\ttestsAddedOrUpdated: [\"test/file.test.ts\"],\n\t\t\tcommandsRun: [{ command: \"command\", result: \"passed\", summary: \"short result\" }],\n\t\t\tvalidationOutput: [\"validation output or concise summary\"],\n\t\t\tresidualRisks: [\"none\"],\n\t\t\tnoStagedFiles: true,\n\t\t\tdiffSummary: \"short description of the diff\",\n\t\t\treviewFindings: [\"blocker: file.ts:12 - issue found, or no blockers\"],\n\t\t\tmanualNotes: \"anything else the parent should know\",\n\t\t}, null, 2),\n\t\t\"```\",\n\t);\n\treturn lines.join(\"\\n\");\n}\n\nfunction extractBalancedJson(text: string, start: number): string | undefined {\n\tlet depth = 0;\n\tlet inString = false;\n\tlet escaped = false;\n\tfor (let i = start; i < text.length; i++) {\n\t\tconst char = text[i]!;\n\t\tif (inString) {\n\t\t\tif (escaped) escaped = false;\n\t\t\telse if (char === \"\\\\\") escaped = true;\n\t\t\telse if (char === \"\\\"\") inString = false;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \"\\\"\") {\n\t\t\tinString = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \"{\") depth++;\n\t\tif (char === \"}\") {\n\t\t\tdepth--;\n\t\t\tif (depth === 0) return text.slice(start, i + 1);\n\t\t}\n\t}\n\treturn undefined;\n}\n\nconst ACCEPTANCE_REPORT_WRAPPERS = new Set([\"acceptance\", \"acceptance-report\", \"acceptance_report\", \"acceptanceReport\"]);\n\nconst ACCEPTANCE_REPORT_FIELDS: Record<string, keyof AcceptanceReport> = {\n\tcriteriaSatisfied: \"criteriaSatisfied\",\n\tcriteria_satisfied: \"criteriaSatisfied\",\n\tchangedFiles: \"changedFiles\",\n\tchanged_files: \"changedFiles\",\n\ttestsAddedOrUpdated: \"testsAddedOrUpdated\",\n\ttests_added_or_updated: \"testsAddedOrUpdated\",\n\tcommandsRun: \"commandsRun\",\n\tcommands_run: \"commandsRun\",\n\tvalidationOutput: \"validationOutput\",\n\tvalidation_output: \"validationOutput\",\n\tresidualRisks: \"residualRisks\",\n\tresidual_risks: \"residualRisks\",\n\tnoStagedFiles: \"noStagedFiles\",\n\tno_staged_files: \"noStagedFiles\",\n\tdiffSummary: \"diffSummary\",\n\tdiff_summary: \"diffSummary\",\n\treviewFindings: \"reviewFindings\",\n\treview_findings: \"reviewFindings\",\n\tmanualNotes: \"manualNotes\",\n\tmanual_notes: \"manualNotes\",\n\tnotes: \"notes\",\n};\n\nconst CRITERION_REPORT_FIELDS = new Set([\"id\", \"status\", \"evidence\"]);\nconst COMMAND_REPORT_FIELDS = new Set([\"command\", \"result\", \"summary\"]);\n\nfunction normalizedToken(value: string): string {\n\treturn value.trim().toLowerCase().replace(/[\\s_]+/g, \"-\").replace(/-+/g, \"-\");\n}\n\nfunction normalizeCriterionStatus(value: unknown): unknown {\n\tif (typeof value !== \"string\") return value;\n\tconst token = normalizedToken(value);\n\tif ([\"satisfied\", \"met\", \"complete\", \"completed\", \"done\", \"pass\", \"passed\", \"success\", \"succeeded\"].includes(token)) return \"satisfied\";\n\tif ([\"not-satisfied\", \"not-met\", \"unmet\", \"incomplete\", \"fail\", \"failed\"].includes(token)) return \"not-satisfied\";\n\tif ([\"not-applicable\", \"n-a\", \"na\", \"skip\", \"skipped\"].includes(token)) return \"not-applicable\";\n\treturn value;\n}\n\nfunction normalizeCommandResult(value: unknown): unknown {\n\tif (typeof value !== \"string\") return value;\n\tconst token = normalizedToken(value);\n\tif ([\"passed\", \"pass\", \"success\", \"successful\", \"succeeded\", \"ok\"].includes(token)) return \"passed\";\n\tif ([\"failed\", \"fail\", \"failure\", \"error\"].includes(token)) return \"failed\";\n\tif ([\"not-run\", \"not-executed\", \"skip\", \"skipped\"].includes(token)) return \"not-run\";\n\treturn value;\n}\n\nfunction normalizeCriterionReport(value: unknown, pathLabel: string, errors: string[]): unknown {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return value;\n\tconst normalized: Record<string, unknown> = {};\n\tfor (const [key, fieldValue] of Object.entries(value as Record<string, unknown>)) {\n\t\tif (!CRITERION_REPORT_FIELDS.has(key)) {\n\t\t\terrors.push(`${pathLabel}.${key}: unsupported acceptance criterion field`);\n\t\t\tcontinue;\n\t\t}\n\t\tnormalized[key] = key === \"id\" && typeof fieldValue === \"string\"\n\t\t\t? normalizedToken(fieldValue)\n\t\t\t: key === \"status\"\n\t\t\t\t? normalizeCriterionStatus(fieldValue)\n\t\t\t\t: fieldValue;\n\t}\n\treturn normalized;\n}\n\nfunction normalizeCommandReport(value: unknown, pathLabel: string, errors: string[]): unknown {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return value;\n\tconst normalized: Record<string, unknown> = {};\n\tfor (const [key, fieldValue] of Object.entries(value as Record<string, unknown>)) {\n\t\tif (!COMMAND_REPORT_FIELDS.has(key)) {\n\t\t\terrors.push(`${pathLabel}.${key}: unsupported acceptance command field`);\n\t\t\tcontinue;\n\t\t}\n\t\tnormalized[key] = key === \"result\" ? normalizeCommandResult(fieldValue) : fieldValue;\n\t}\n\treturn normalized;\n}\n\nfunction normalizeAcceptanceReportValue(value: unknown, pathLabel = \"\"): { value: unknown; pathLabel: string; errors: string[] } {\n\tconst errors: string[] = [];\n\tlet reportValue = value;\n\tlet reportPath = pathLabel;\n\tif (reportValue && typeof reportValue === \"object\" && !Array.isArray(reportValue)) {\n\t\tconst record = reportValue as Record<string, unknown>;\n\t\tconst wrapperKeys = Object.keys(record).filter((key) => ACCEPTANCE_REPORT_WRAPPERS.has(key));\n\t\tif (wrapperKeys.length > 0) {\n\t\t\tconst wrapperKey = wrapperKeys[0]!;\n\t\t\tif (wrapperKeys.length > 1) errors.push(`${pathLabel || \"acceptance-report\"}: multiple acceptance report wrappers are ambiguous`);\n\t\t\tfor (const key of Object.keys(record)) {\n\t\t\t\tif (key !== wrapperKey) errors.push(`${pathFor(pathLabel, key)}: unsupported alongside acceptance report wrapper '${wrapperKey}'`);\n\t\t\t}\n\t\t\treportValue = record[wrapperKey];\n\t\t\treportPath = pathFor(pathLabel, wrapperKey);\n\t\t}\n\t}\n\tif (!reportValue || typeof reportValue !== \"object\" || Array.isArray(reportValue)) return { value: reportValue, pathLabel: reportPath, errors };\n\n\tconst normalized: Record<string, unknown> = {};\n\tfor (const [key, fieldValue] of Object.entries(reportValue as Record<string, unknown>)) {\n\t\tconst canonical = ACCEPTANCE_REPORT_FIELDS[key];\n\t\tif (!canonical) {\n\t\t\terrors.push(`${pathFor(reportPath, key)}: unsupported acceptance report field`);\n\t\t\tcontinue;\n\t\t}\n\t\tif (Object.hasOwn(normalized, canonical)) {\n\t\t\terrors.push(`${pathFor(reportPath, key)}: duplicates normalized field '${canonical}'`);\n\t\t\tcontinue;\n\t\t}\n\t\tconst fieldPath = pathFor(reportPath, canonical);\n\t\tswitch (canonical) {\n\t\t\tcase \"criteriaSatisfied\": {\n\t\t\t\tconst items = Array.isArray(fieldValue) ? fieldValue : fieldValue && typeof fieldValue === \"object\" ? [fieldValue] : fieldValue;\n\t\t\t\tnormalized[canonical] = Array.isArray(items)\n\t\t\t\t\t? items.map((item, index) => normalizeCriterionReport(item, `${fieldPath}[${index}]`, errors))\n\t\t\t\t\t: items;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"commandsRun\": {\n\t\t\t\tconst items = Array.isArray(fieldValue) ? fieldValue : fieldValue && typeof fieldValue === \"object\" ? [fieldValue] : fieldValue;\n\t\t\t\tnormalized[canonical] = Array.isArray(items)\n\t\t\t\t\t? items.map((item, index) => normalizeCommandReport(item, `${fieldPath}[${index}]`, errors))\n\t\t\t\t\t: items;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"changedFiles\":\n\t\t\tcase \"testsAddedOrUpdated\":\n\t\t\tcase \"validationOutput\":\n\t\t\tcase \"residualRisks\":\n\t\t\tcase \"reviewFindings\":\n\t\t\t\tnormalized[canonical] = typeof fieldValue === \"string\" ? [fieldValue] : fieldValue;\n\t\t\t\tbreak;\n\t\t\tcase \"noStagedFiles\": {\n\t\t\t\tconst token = typeof fieldValue === \"string\" ? fieldValue.trim().toLowerCase() : undefined;\n\t\t\t\tnormalized[canonical] = token === \"true\" ? true : token === \"false\" ? false : fieldValue;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tnormalized[canonical] = fieldValue;\n\t\t}\n\t}\n\treturn { value: normalized, pathLabel: reportPath, errors };\n}\n\nfunction hasGenericAcceptanceReportSignal(value: unknown): boolean {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n\tconst record = value as Record<string, unknown>;\n\treturn \"criteriaSatisfied\" in record && [\n\t\t\"changedFiles\",\n\t\t\"testsAddedOrUpdated\",\n\t\t\"commandsRun\",\n\t\t\"validationOutput\",\n\t\t\"residualRisks\",\n\t\t\"noStagedFiles\",\n\t\t\"diffSummary\",\n\t\t\"reviewFindings\",\n\t\t\"manualNotes\",\n\t].some((key) => key in record);\n}\n\nfunction parseReportJson(body: string): unknown {\n\tconst trimmed = body.trim();\n\ttry {\n\t\treturn JSON.parse(trimmed) as unknown;\n\t} catch (error) {\n\t\tconst jsonStart = trimmed.indexOf(\"{\");\n\t\tif (jsonStart > 0) {\n\t\t\tconst json = extractBalancedJson(trimmed, jsonStart);\n\t\t\tif (json) return JSON.parse(json) as unknown;\n\t\t}\n\t\tthrow error;\n\t}\n}\n\nfunction fencedBlocks(output: string, tag: string): string[] {\n\treturn [...output.matchAll(new RegExp(`\\`\\`\\`${tag}\\\\s*\\\\n([\\\\s\\\\S]*?)\\`\\`\\``, \"gi\"))]\n\t\t.map((match) => match[1]?.trim())\n\t\t.filter((value): value is string => Boolean(value));\n}\n\nfunction parseAcceptanceReportBody(body: string): { report?: AcceptanceReport; errors: string[] } {\n\treturn validateAcceptanceReport(parseReportJson(body));\n}\n\nfunction parseGenericJsonAcceptanceReportBody(body: string): { report?: AcceptanceReport; error?: string } {\n\tconst parsed = parseReportJson(body);\n\tconst normalized = normalizeAcceptanceReportValue(parsed);\n\tconst hasCriteriaMarker = normalized.value !== null\n\t\t&& typeof normalized.value === \"object\"\n\t\t&& !Array.isArray(normalized.value)\n\t\t&& \"criteriaSatisfied\" in normalized.value;\n\tif (!hasGenericAcceptanceReportSignal(normalized.value) && !(hasCriteriaMarker && normalized.errors.length > 0)) return {};\n\tconst validation = validateAcceptanceReport(parsed);\n\treturn validation.report\n\t\t? { report: validation.report }\n\t\t: { error: `Invalid acceptance-report: ${validation.errors.join(\"; \")}` };\n}\n\nexport const ACCEPTANCE_REPORT_NOT_FOUND = \"Structured acceptance report not found.\";\n\nexport function parseAcceptanceReport(output: string): { report?: AcceptanceReport; error?: string } {\n\tconst explicitFencePresent = /```acceptance[-_]report\\b/i.test(output);\n\tconst fenced = fencedBlocks(output, \"acceptance[-_]report\");\n\tconst parseErrors: string[] = [];\n\tfor (const body of fenced) {\n\t\ttry {\n\t\t\tconst validation = parseAcceptanceReportBody(body);\n\t\t\tif (validation.report) return { report: validation.report };\n\t\t\tparseErrors.push(`Invalid acceptance-report: ${validation.errors.join(\"; \")}`);\n\t\t} catch (error) {\n\t\t\tparseErrors.push(error instanceof Error ? error.message : String(error));\n\t\t}\n\t}\n\tif (parseErrors.length > 0) return { error: `Failed to parse acceptance-report: ${parseErrors.join(\"; \")}` };\n\tif (explicitFencePresent) {\n\t\treturn { error: \"Failed to parse acceptance-report: Empty or unterminated acceptance-report fence.\" };\n\t}\n\tfor (const body of fencedBlocks(output, \"(?:json|jsonc|json5)\")) {\n\t\ttry {\n\t\t\tconst parsed = parseGenericJsonAcceptanceReportBody(body);\n\t\t\tif (parsed.report) return { report: parsed.report };\n\t\t\tif (parsed.error) return { error: `Failed to parse acceptance-report: ${parsed.error}` };\n\t\t} catch {\n\t\t\t// Ignore unrelated malformed generic JSON. A recognizable report shape\n\t\t\t// returns exact validation errors above instead of being mistaken for prose.\n\t\t}\n\t}\n\tconst markerIndex = output.search(/ACCEPTANCE_REPORT\\s*:/i);\n\tif (markerIndex !== -1) {\n\t\tconst jsonStart = output.indexOf(\"{\", markerIndex);\n\t\tif (jsonStart === -1) {\n\t\t\treturn { error: \"Failed to parse acceptance-report: Expected a JSON object after ACCEPTANCE_REPORT:.\" };\n\t\t}\n\t\tconst json = extractBalancedJson(output, jsonStart);\n\t\tif (!json) {\n\t\t\treturn { error: \"Failed to parse acceptance-report: Unterminated JSON object after ACCEPTANCE_REPORT:.\" };\n\t\t}\n\t\ttry {\n\t\t\tconst parsed = JSON.parse(json) as unknown;\n\t\t\tconst validation = validateAcceptanceReport(parsed);\n\t\t\tif (validation.report) return { report: validation.report };\n\t\t\treturn { error: `Failed to parse acceptance-report: Invalid acceptance-report: ${validation.errors.join(\"; \")}` };\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\treturn { error: `Failed to parse acceptance-report: ${message}` };\n\t\t}\n\t}\n\treturn { error: ACCEPTANCE_REPORT_NOT_FOUND };\n}\n\nfunction parseAcceptanceReportSources(\n\toutput: string,\n\tfileOutput: { content: string; path: string; authoritative?: boolean } | undefined,\n): { report?: AcceptanceReport; error?: string } {\n\tconst fromText = () => parseAcceptanceReport(output);\n\tconst fromFile = () => {\n\t\tif (!fileOutput) return { error: ACCEPTANCE_REPORT_NOT_FOUND };\n\t\tconst parsed = parseAcceptanceReport(fileOutput.content);\n\t\treturn parsed.report || parsed.error === ACCEPTANCE_REPORT_NOT_FOUND\n\t\t\t? parsed\n\t\t\t: { error: `${parsed.error} (in configured output ${fileOutput.path})` };\n\t};\n\tconst [primary, secondary] = fileOutput?.authoritative ? [fromFile, fromText] : [fromText, fromFile];\n\tconst first = primary();\n\t// A malformed report in the primary source is a defect to surface, not a\n\t// miss to paper over with the secondary source; only a genuinely absent\n\t// report falls through.\n\tif (first.report || first.error !== ACCEPTANCE_REPORT_NOT_FOUND) return first;\n\treturn secondary();\n}\n\nexport function stripAcceptanceReport(output: string): string {\n\tconst trailingFencePattern = /\\n?```(acceptance[-_]report|json|jsonc|json5)\\s*\\n([\\s\\S]*?)```\\s*/gi;\n\tlet trailingFence: { index: number; tag: string; body: string } | undefined;\n\tfor (const match of output.matchAll(trailingFencePattern)) {\n\t\tconst end = (match.index ?? 0) + match[0].length;\n\t\tif (output.slice(end).trim().length === 0 && match[1] && match[2]) {\n\t\t\ttrailingFence = { index: match.index ?? 0, tag: match[1].toLowerCase(), body: match[2] };\n\t\t}\n\t}\n\tif (trailingFence) {\n\t\tif (trailingFence.tag === \"acceptance-report\" || trailingFence.tag === \"acceptance_report\") return output.slice(0, trailingFence.index).trimEnd();\n\t\ttry {\n\t\t\tif (parseGenericJsonAcceptanceReportBody(trailingFence.body).report) return output.slice(0, trailingFence.index).trimEnd();\n\t\t} catch {\n\t\t\t// Leave unrelated or malformed generic JSON fences visible.\n\t\t}\n\t}\n\treturn output\n\t\t.replace(/\\n?```acceptance[-_]report\\s*\\n[\\s\\S]*?```\\s*$/i, \"\")\n\t\t.replace(/\\n?ACCEPTANCE_REPORT\\s*:\\s*\\{[\\s\\S]*\\}\\s*$/i, \"\")\n\t\t.trimEnd();\n}\n\nfunction isStringArray(value: unknown): value is string[] {\n\treturn Array.isArray(value) && value.every((item) => typeof item === \"string\");\n}\n\nfunction pathFor(base: string, segment: string): string {\n\treturn base ? `${base}.${segment}` : segment;\n}\n\nfunction describeValidationValue(value: unknown): string {\n\tif (value === undefined) return \"missing\";\n\tif (value === null) return \"null\";\n\tif (Array.isArray(value)) return \"array\";\n\tif (typeof value === \"object\") return \"object\";\n\tif (typeof value === \"string\") {\n\t\tconst short = value.length > 80 ? `${value.slice(0, 77)}...` : value;\n\t\treturn JSON.stringify(short);\n\t}\n\treturn `${typeof value} ${String(value)}`;\n}\n\nfunction pushTypeError(errors: string[], pathLabel: string, expected: string, value: unknown): void {\n\terrors.push(`${pathLabel}: expected ${expected}; got ${describeValidationValue(value)}`);\n}\n\nfunction validateStringArrayField(errors: string[], value: unknown, pathLabel: string): void {\n\tif (!Array.isArray(value)) {\n\t\tpushTypeError(errors, pathLabel, \"string[]\", value);\n\t\treturn;\n\t}\n\tfor (const [index, item] of value.entries()) {\n\t\tif (typeof item !== \"string\" || !item.trim()) pushTypeError(errors, `${pathLabel}[${index}]`, \"non-empty string\", item);\n\t}\n}\n\nfunction validateAcceptanceReport(value: unknown, pathLabel = \"\"): { report?: AcceptanceReport; errors: string[] } {\n\tconst normalized = normalizeAcceptanceReportValue(value, pathLabel);\n\tvalue = normalized.value;\n\tpathLabel = normalized.pathLabel;\n\tconst errors = normalized.errors;\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) {\n\t\tpushTypeError(errors, pathLabel || \"acceptance-report\", \"object\", value);\n\t\treturn { errors };\n\t}\n\tconst report = value as AcceptanceReport;\n\tif (report.criteriaSatisfied !== undefined) {\n\t\tif (!Array.isArray(report.criteriaSatisfied)) {\n\t\t\tpushTypeError(errors, pathFor(pathLabel, \"criteriaSatisfied\"), \"array\", report.criteriaSatisfied);\n\t\t} else {\n\t\t\tconst criterionIds = new Set<string>();\n\t\t\tfor (const [index, item] of report.criteriaSatisfied.entries()) {\n\t\t\t\tconst itemPath = `${pathFor(pathLabel, \"criteriaSatisfied\")}[${index}]`;\n\t\t\t\tif (!item || typeof item !== \"object\" || Array.isArray(item)) {\n\t\t\t\t\tpushTypeError(errors, itemPath, \"object\", item);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst criterion = item as { id?: unknown; status?: unknown; evidence?: unknown };\n\t\t\t\tif (criterion.id !== undefined && typeof criterion.id !== \"string\") {\n\t\t\t\t\tpushTypeError(errors, `${itemPath}.id`, \"string\", criterion.id);\n\t\t\t\t} else if (typeof criterion.id === \"string\" && criterion.id) {\n\t\t\t\t\tif (criterionIds.has(criterion.id)) errors.push(`${itemPath}.id: duplicate normalized criterion id '${criterion.id}'`);\n\t\t\t\t\tcriterionIds.add(criterion.id);\n\t\t\t\t}\n\t\t\t\tif (criterion.status !== \"satisfied\" && criterion.status !== \"not-satisfied\" && criterion.status !== \"not-applicable\") {\n\t\t\t\t\tpushTypeError(errors, `${itemPath}.status`, \"one of \\\"satisfied\\\", \\\"not-satisfied\\\", \\\"not-applicable\\\"\", criterion.status);\n\t\t\t\t}\n\t\t\t\tif (typeof criterion.evidence !== \"string\" || !criterion.evidence.trim()) pushTypeError(errors, `${itemPath}.evidence`, \"non-empty string\", criterion.evidence);\n\t\t\t}\n\t\t}\n\t}\n\tif (report.changedFiles !== undefined) validateStringArrayField(errors, report.changedFiles, pathFor(pathLabel, \"changedFiles\"));\n\tif (report.testsAddedOrUpdated !== undefined) validateStringArrayField(errors, report.testsAddedOrUpdated, pathFor(pathLabel, \"testsAddedOrUpdated\"));\n\tif (report.commandsRun !== undefined) {\n\t\tif (!Array.isArray(report.commandsRun)) {\n\t\t\tpushTypeError(errors, pathFor(pathLabel, \"commandsRun\"), \"array\", report.commandsRun);\n\t\t} else {\n\t\t\tfor (const [index, item] of report.commandsRun.entries()) {\n\t\t\t\tconst itemPath = `${pathFor(pathLabel, \"commandsRun\")}[${index}]`;\n\t\t\t\tif (!item || typeof item !== \"object\" || Array.isArray(item)) {\n\t\t\t\t\tpushTypeError(errors, itemPath, \"object\", item);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst command = item as { command?: unknown; result?: unknown; summary?: unknown };\n\t\t\t\tif (typeof command.command !== \"string\" || !command.command.trim()) pushTypeError(errors, `${itemPath}.command`, \"non-empty string\", command.command);\n\t\t\t\tif (command.result !== \"passed\" && command.result !== \"failed\" && command.result !== \"not-run\") {\n\t\t\t\t\tpushTypeError(errors, `${itemPath}.result`, \"one of \\\"passed\\\", \\\"failed\\\", \\\"not-run\\\"\", command.result);\n\t\t\t\t}\n\t\t\t\tif (typeof command.summary !== \"string\" || !command.summary.trim()) pushTypeError(errors, `${itemPath}.summary`, \"non-empty string\", command.summary);\n\t\t\t}\n\t\t}\n\t}\n\tif (report.validationOutput !== undefined) validateStringArrayField(errors, report.validationOutput, pathFor(pathLabel, \"validationOutput\"));\n\tif (report.residualRisks !== undefined) validateStringArrayField(errors, report.residualRisks, pathFor(pathLabel, \"residualRisks\"));\n\tif (report.noStagedFiles !== undefined && typeof report.noStagedFiles !== \"boolean\") pushTypeError(errors, pathFor(pathLabel, \"noStagedFiles\"), \"boolean\", report.noStagedFiles);\n\tif (report.diffSummary !== undefined && (typeof report.diffSummary !== \"string\" || !report.diffSummary.trim())) pushTypeError(errors, pathFor(pathLabel, \"diffSummary\"), \"non-empty string\", report.diffSummary);\n\tif (report.reviewFindings !== undefined) validateStringArrayField(errors, report.reviewFindings, pathFor(pathLabel, \"reviewFindings\"));\n\tif (report.manualNotes !== undefined && typeof report.manualNotes !== \"string\") pushTypeError(errors, pathFor(pathLabel, \"manualNotes\"), \"string\", report.manualNotes);\n\tif (report.notes !== undefined && typeof report.notes !== \"string\") pushTypeError(errors, pathFor(pathLabel, \"notes\"), \"string\", report.notes);\n\tif (errors.length > 0) return { errors };\n\tconst hasReportField = report.criteriaSatisfied !== undefined\n\t\t|| report.changedFiles !== undefined\n\t\t|| report.testsAddedOrUpdated !== undefined\n\t\t|| report.commandsRun !== undefined\n\t\t|| report.validationOutput !== undefined\n\t\t|| report.residualRisks !== undefined\n\t\t|| report.noStagedFiles !== undefined\n\t\t|| report.diffSummary !== undefined\n\t\t|| report.manualNotes !== undefined\n\t\t|| report.notes !== undefined\n\t\t|| report.reviewFindings !== undefined;\n\treturn hasReportField\n\t\t? { report, errors }\n\t\t: { errors: [`${pathLabel || \"acceptance-report\"}: expected at least one acceptance report field`] };\n}\n\nfunction checkCriteriaSatisfied(criteria: ResolvedAcceptanceGate[], report: AcceptanceReport): AcceptanceRuntimeCheck[] {\n\tconst reports = new Map((report.criteriaSatisfied ?? []).filter((item) => item.id).map((item) => [normalizedToken(item.id!), item]));\n\treturn criteria.filter((criterion) => criterion.severity !== \"recommended\").map((criterion) => {\n\t\tconst item = reports.get(normalizedToken(criterion.id));\n\t\tif (!item) return { id: `criterion:${criterion.id}`, status: \"failed\", message: `Required criterion '${criterion.id}' was not reported.` };\n\t\tif (item.status !== \"satisfied\") return { id: `criterion:${criterion.id}`, status: \"failed\", message: `Required criterion '${criterion.id}' was reported as ${item.status}.` };\n\t\treturn { id: `criterion:${criterion.id}`, status: \"passed\", message: `Required criterion '${criterion.id}' satisfied.` };\n\t});\n}\n\nfunction reportEvidenceStatus(report: AcceptanceReport, kind: AcceptanceEvidenceKind): AcceptanceRuntimeCheckStatus {\n\tswitch (kind) {\n\t\tcase \"changed-files\":\n\t\t\tif (!isStringArray(report.changedFiles)) return \"failed\";\n\t\t\treturn report.changedFiles.length === 0 ? \"not-applicable\" : \"passed\";\n\t\tcase \"tests-added\":\n\t\t\tif (!isStringArray(report.testsAddedOrUpdated)) return \"failed\";\n\t\t\treturn report.testsAddedOrUpdated.length === 0 ? \"not-applicable\" : \"passed\";\n\t\tcase \"commands-run\": return Array.isArray(report.commandsRun) && report.commandsRun.length > 0 ? \"passed\" : \"failed\";\n\t\tcase \"validation-output\": return isStringArray(report.validationOutput) && report.validationOutput.length > 0 ? \"passed\" : \"failed\";\n\t\tcase \"residual-risks\": return isStringArray(report.residualRisks) ? \"passed\" : \"failed\";\n\t\tcase \"no-staged-files\": return report.noStagedFiles === true ? \"passed\" : \"failed\";\n\t\tcase \"diff-summary\": return typeof report.diffSummary === \"string\" && report.diffSummary.trim().length > 0 ? \"passed\" : \"failed\";\n\t\tcase \"review-findings\": return isStringArray(report.reviewFindings) ? \"passed\" : \"failed\";\n\t\tcase \"manual-notes\": return Boolean((report.manualNotes ?? report.notes)?.trim()) ? \"passed\" : \"failed\";\n\t}\n}\n\nfunction checkNoStagedFiles(cwd: string): AcceptanceRuntimeCheck {\n\tconst result = spawnSync(\"git\", [\"status\", \"--short\"], { cwd, encoding: \"utf-8\" });\n\tif (result.status !== 0) {\n\t\treturn { id: \"no-staged-files\", status: \"not-applicable\", message: \"git status unavailable; no staged-files check skipped\" };\n\t}\n\tconst staged = result.stdout.split(/\\r?\\n/).filter((line) => line.length >= 2 && line[0] !== \" \" && line[0] !== \"?\");\n\treturn staged.length === 0\n\t\t? { id: \"no-staged-files\", status: \"passed\", message: \"No staged files detected.\" }\n\t\t: { id: \"no-staged-files\", status: \"failed\", message: `Staged files present: ${staged.join(\", \")}` };\n}\n\nfunction runStructuralChecks(acceptance: ResolvedAcceptanceConfig, report: AcceptanceReport, cwd: string): AcceptanceRuntimeCheck[] {\n\tconst checks: AcceptanceRuntimeCheck[] = [];\n\tfor (const kind of acceptance.evidence) {\n\t\tconst status = reportEvidenceStatus(report, kind);\n\t\tchecks.push({\n\t\t\tid: `evidence:${kind}`,\n\t\t\tstatus,\n\t\t\tmessage: status === \"passed\"\n\t\t\t\t? `${kind} evidence present.`\n\t\t\t\t: status === \"not-applicable\"\n\t\t\t\t\t? `${kind} evidence explicitly reported as not applicable.`\n\t\t\t\t\t: `${kind} evidence missing from child report.`,\n\t\t});\n\t}\n\tif (acceptance.evidence.includes(\"no-staged-files\")) checks.push(checkNoStagedFiles(cwd));\n\treturn checks;\n}\n\nfunction trimOutput(value: string): string | undefined {\n\tconst trimmed = value.trim();\n\tif (!trimmed) return undefined;\n\treturn trimmed.length > 12_000 ? `${trimmed.slice(0, 12_000)}\\n...[truncated]` : trimmed;\n}\n\nfunction uniqueStrings(items: Array<string | undefined>): string[] {\n\treturn unique(items.map((item) => item?.trim()).filter((item): item is string => Boolean(item)));\n}\n\nexport function aggregateAcceptanceReport(input: {\n\tresults: Array<Pick<SingleResult, \"agent\" | \"acceptance\" | \"error\" | \"exitCode\">>;\n\tnotes?: string;\n}): AcceptanceReport {\n\tconst childReports = input.results.map((result) => result.acceptance?.childReport).filter((report): report is AcceptanceReport => Boolean(report));\n\tconst blockers = input.results.filter((result) => result.exitCode !== 0 || result.acceptance?.status === \"rejected\");\n\tconst successfulChildren = input.results.length > 0 && blockers.length === 0;\n\treturn {\n\t\tcriteriaSatisfied: [\n\t\t\t{ id: \"criterion-1\", status: successfulChildren ? \"satisfied\" : \"not-satisfied\", evidence: successfulChildren ? `All ${input.results.length} dynamic child run(s) completed without child or acceptance blockers.` : \"Dynamic fanout produced no accepted child evidence.\" },\n\t\t\t{ id: \"criterion-2\", status: successfulChildren ? \"satisfied\" : \"not-satisfied\", evidence: successfulChildren ? \"Collected child acceptance evidence for aggregate review.\" : \"Dynamic fanout produced no aggregate review evidence.\" },\n\t\t\t...input.results.map((result, index) => ({\n\t\t\t\tid: `child-${index + 1}`,\n\t\t\t\tstatus: result.exitCode === 0 && result.acceptance?.status !== \"rejected\" ? \"satisfied\" : \"not-satisfied\",\n\t\t\t\tevidence: `${result.agent}: acceptance ${result.acceptance?.status ?? \"unreported\"}${result.error ? ` (${result.error})` : \"\"}`,\n\t\t\t})),\n\t\t],\n\t\tchangedFiles: uniqueStrings(childReports.flatMap((report) => report.changedFiles ?? [])),\n\t\ttestsAddedOrUpdated: uniqueStrings(childReports.flatMap((report) => report.testsAddedOrUpdated ?? [])),\n\t\tcommandsRun: childReports.flatMap((report) => report.commandsRun ?? []),\n\t\tvalidationOutput: uniqueStrings(childReports.flatMap((report) => report.validationOutput ?? [])),\n\t\tresidualRisks: uniqueStrings([\n\t\t\t...childReports.flatMap((report) => report.residualRisks ?? []),\n\t\t\t...blockers.map((result) => `${result.agent}: ${result.error ?? \"child or acceptance gate failed\"}`),\n\t\t]),\n\t\tnoStagedFiles: childReports.length > 0 && childReports.every((report) => report.noStagedFiles === true),\n\t\treviewFindings: uniqueStrings(childReports.flatMap((report) => report.reviewFindings ?? [])),\n\t\tmanualNotes: input.notes ?? `Aggregated acceptance evidence from ${input.results.length} dynamic fanout child run(s).`,\n\t\tnotes: input.notes,\n\t};\n}\n\nfunction runVerifyCommand(command: AcceptanceVerifyCommand, defaultCwd: string, options: { signal?: AbortSignal; abortMessage?: string } = {}): Promise<AcceptanceVerifyResult> {\n\treturn new Promise((resolve) => {\n\t\tconst startedAt = Date.now();\n\t\tconst cwd = command.cwd ? path.resolve(defaultCwd, command.cwd) : defaultCwd;\n\t\tlet stdout = \"\";\n\t\tlet stderr = \"\";\n\t\tlet timedOut = false;\n\t\tlet settled = false;\n\t\tlet hardKill: NodeJS.Timeout | undefined;\n\t\tconst child = spawn(command.command, {\n\t\t\tcwd,\n\t\t\tenv: { ...process.env, ...(command.env ?? {}) },\n\t\t\tshell: true,\n\t\t\tstdio: [\"ignore\", \"pipe\", \"pipe\"],\n\t\t\twindowsHide: true,\n\t\t});\n\t\tconst finish = (result: Omit<AcceptanceVerifyResult, \"id\" | \"command\" | \"cwd\" | \"durationMs\">) => {\n\t\t\tif (settled) return;\n\t\t\tsettled = true;\n\t\t\tclearTimeout(timeout);\n\t\t\tif (hardKill) clearTimeout(hardKill);\n\t\t\toptions.signal?.removeEventListener(\"abort\", abortVerification);\n\t\t\tresolve({\n\t\t\t\tid: command.id,\n\t\t\t\tcommand: command.command,\n\t\t\t\tcwd,\n\t\t\t\tdurationMs: Date.now() - startedAt,\n\t\t\t\t...result,\n\t\t\t});\n\t\t};\n\t\tconst abortVerification = () => {\n\t\t\tif (settled || timedOut) return;\n\t\t\ttimedOut = true;\n\t\t\tchild.kill(\"SIGTERM\");\n\t\t\thardKill = setTimeout(() => {\n\t\t\t\tchild.kill(\"SIGKILL\");\n\t\t\t\tfinish({\n\t\t\t\t\texitCode: null,\n\t\t\t\t\tstatus: \"timed-out\",\n\t\t\t\t\tstdout: trimOutput(stdout),\n\t\t\t\t\tstderr: trimOutput(stderr || options.abortMessage || \"Acceptance verification timed out.\"),\n\t\t\t\t});\n\t\t\t}, 1000);\n\t\t\thardKill.unref?.();\n\t\t};\n\t\tconst timeout = setTimeout(abortVerification, command.timeoutMs ?? 120_000);\n\t\ttimeout.unref?.();\n\t\tif (options.signal?.aborted) abortVerification();\n\t\telse options.signal?.addEventListener(\"abort\", abortVerification, { once: true });\n\t\tchild.stdout.on(\"data\", (chunk: Buffer) => {\n\t\t\tstdout += chunk.toString();\n\t\t});\n\t\tchild.stderr.on(\"data\", (chunk: Buffer) => {\n\t\t\tstderr += chunk.toString();\n\t\t});\n\t\tchild.on(\"close\", (exitCode) => {\n\t\t\tconst passed = exitCode === 0 && !timedOut;\n\t\t\tfinish({\n\t\t\t\texitCode,\n\t\t\t\tstatus: timedOut ? \"timed-out\" : passed ? \"passed\" : command.allowFailure ? \"allowed-failure\" : \"failed\",\n\t\t\t\tstdout: trimOutput(stdout),\n\t\t\t\tstderr: trimOutput(stderr || (timedOut ? options.abortMessage ?? \"\" : \"\")),\n\t\t\t});\n\t\t});\n\t\tchild.on(\"error\", (error) => {\n\t\t\tfinish({\n\t\t\t\texitCode: timedOut ? null : 1,\n\t\t\t\tstatus: timedOut ? \"timed-out\" : command.allowFailure ? \"allowed-failure\" : \"failed\",\n\t\t\t\tstderr: timedOut ? trimOutput(stderr || options.abortMessage || \"Acceptance verification timed out.\") : error instanceof Error ? error.message : String(error),\n\t\t\t});\n\t\t});\n\t});\n}\n\nexport async function evaluateAcceptance(input: {\n\tacceptance: ResolvedAcceptanceConfig;\n\toutput: string;\n\tcwd: string;\n\t/**\n\t * Content the child sent to its configured output file (from its own write\n\t * tool calls, not from disk, so a concurrent writer to the same path cannot\n\t * be misattributed). Searched for the acceptance report; searched before\n\t * the assistant output when `authoritative` (outputMode \"file-only\").\n\t */\n\tfileOutput?: { content: string; path: string; authoritative?: boolean };\n\treport?: AcceptanceReport;\n\treviewResult?: AcceptanceReviewResult;\n\tsignal?: AbortSignal;\n\tabortMessage?: string;\n}): Promise<AcceptanceLedger> {\n\tconst acceptance = input.acceptance;\n\tconst ledger: AcceptanceLedger = {\n\t\tstatus: acceptance.level === \"none\" ? \"not-required\" : \"claimed\",\n\t\texplicit: acceptance.explicit,\n\t\teffectiveAcceptance: acceptance,\n\t\tinferredReason: acceptance.inferredReason,\n\t\tcriteria: acceptance.criteria,\n\t\truntimeChecks: [],\n\t\tverifyRuns: [],\n\t};\n\tif (acceptance.level === \"none\") return ledger;\n\n\tconst parsed = input.report\n\t\t? (() => {\n\t\t\tconst validation = validateAcceptanceReport(input.report);\n\t\t\treturn validation.report\n\t\t\t\t? { report: validation.report }\n\t\t\t\t: { error: `Failed to parse acceptance-report: Invalid acceptance-report: ${validation.errors.join(\"; \")}` };\n\t\t})()\n\t\t: parseAcceptanceReportSources(input.output, input.fileOutput);\n\tif (parsed.report) {\n\t\tledger.childReport = parsed.report;\n\t\tledger.status = \"attested\";\n\t} else {\n\t\tledger.childReportParseError = parsed.error;\n\t\tledger.runtimeChecks.push({ id: \"attestation\", status: \"failed\", message: parsed.error ?? \"Structured acceptance report missing.\" });\n\t\tledger.status = \"rejected\";\n\t\treturn ledger;\n\t}\n\n\tif (LEVEL_RANK[acceptance.level] >= LEVEL_RANK.checked) {\n\t\tledger.runtimeChecks = [\n\t\t\t...checkCriteriaSatisfied(acceptance.criteria, parsed.report),\n\t\t\t...runStructuralChecks(acceptance, parsed.report, input.cwd),\n\t\t];\n\t\tif (ledger.runtimeChecks.some((check) => check.status === \"failed\")) {\n\t\t\tledger.status = \"rejected\";\n\t\t\treturn ledger;\n\t\t}\n\t\tledger.status = \"checked\";\n\t}\n\n\tif (LEVEL_RANK[acceptance.level] >= LEVEL_RANK.verified && (acceptance.level === \"verified\" || acceptance.verify.length > 0)) {\n\t\tif (acceptance.level === \"verified\" && acceptance.verify.length === 0) {\n\t\t\tledger.runtimeChecks.push({ id: \"verification-config\", status: \"failed\", message: \"verified acceptance requires runtime verify commands.\" });\n\t\t\tledger.status = \"rejected\";\n\t\t\treturn ledger;\n\t\t}\n\t\tledger.verifyRuns = [];\n\t\tfor (const command of acceptance.verify) {\n\t\t\tledger.verifyRuns.push(await runVerifyCommand(command, input.cwd, { signal: input.signal, abortMessage: input.abortMessage }));\n\t\t\tif (input.signal?.aborted) break;\n\t\t}\n\t\tif (ledger.verifyRuns.some((run) => run.status === \"failed\" || run.status === \"timed-out\")) {\n\t\t\tledger.status = \"rejected\";\n\t\t\treturn ledger;\n\t\t}\n\t\tledger.status = \"verified\";\n\t}\n\n\tif (acceptance.level === \"reviewed\") {\n\t\tif (input.reviewResult) {\n\t\t\tledger.reviewResult = input.reviewResult;\n\t\t\tledger.status = input.reviewResult.status === \"no-blockers\" ? \"reviewed\" : \"rejected\";\n\t\t} else {\n\t\t\tconst optionalReview = acceptance.review && acceptance.review !== false && acceptance.review.required === false;\n\t\t\tledger.reviewResult = {\n\t\t\t\tstatus: \"needs-parent-decision\",\n\t\t\t\tfindings: [{\n\t\t\t\t\tseverity: acceptance.explicit && !optionalReview ? \"blocker\" : \"non-blocking\",\n\t\t\t\t\tissue: \"Reviewed acceptance requires an independent reviewer result.\",\n\t\t\t\t\trationale: \"The run cannot be marked reviewed from child evidence alone.\",\n\t\t\t\t}],\n\t\t\t};\n\t\t\tif (acceptance.review === false || (acceptance.explicit && !optionalReview)) ledger.status = \"rejected\";\n\t\t}\n\t}\n\n\treturn ledger;\n}\n\nexport function buildSkippedAcceptanceLedger(acceptance: ResolvedAcceptanceConfig, input: { id: string; message: string }): AcceptanceLedger {\n\treturn {\n\t\tstatus: acceptance.level === \"none\" ? \"not-required\" : \"rejected\",\n\t\texplicit: acceptance.explicit,\n\t\teffectiveAcceptance: acceptance,\n\t\tinferredReason: acceptance.inferredReason,\n\t\tcriteria: acceptance.criteria,\n\t\truntimeChecks: acceptance.level === \"none\"\n\t\t\t? []\n\t\t\t: [{ id: input.id, status: \"failed\", message: input.message }],\n\t\tverifyRuns: [],\n\t};\n}\n\nexport function acceptanceFailureMessage(ledger: AcceptanceLedger): string | undefined {\n\tif (ledger.status !== \"rejected\") return undefined;\n\tconst failedCheck = ledger.runtimeChecks.find((check) => check.status === \"failed\");\n\tif (failedCheck) return `Acceptance rejected: ${failedCheck.message}`;\n\tconst failedVerify = ledger.verifyRuns.find((run) => run.status === \"failed\" || run.status === \"timed-out\");\n\tif (failedVerify) return `Acceptance verification '${failedVerify.id}' ${failedVerify.status}.`;\n\tif (ledger.reviewResult?.status === \"needs-parent-decision\") return \"Acceptance review required but no automatic reviewer result is available.\";\n\tif (ledger.reviewResult?.status === \"blockers\") return \"Acceptance review found blockers.\";\n\treturn \"Acceptance rejected.\";\n}\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Central permission-to-tool resolver for prompt-driven children.
|
|
3
|
+
*
|
|
4
|
+
* Full access is the coding-tool set (read/search/shell/edit/write/web/LSP/MCP
|
|
5
|
+
* plus output and supervisor coordination). It is not parent-equivalent: cron,
|
|
6
|
+
* memory, goals, plan approval, nested subagent management, and other
|
|
7
|
+
* persistent/user-config tools stay excluded.
|
|
8
|
+
*
|
|
9
|
+
* Read-only drops mutating coding tools from the registry and still runs under
|
|
10
|
+
* Plan mode as defense in depth.
|
|
11
|
+
*/
|
|
12
|
+
import type { ChildPermission } from "../../../../../core/subagent-permission-inherit.ts";
|
|
13
|
+
/** Parent-owned / persistent tools excluded even from full children. */
|
|
14
|
+
export declare const PARENT_OWNED_CHILD_TOOLS: readonly ["cron", "memory_add", "memory_remove", "memory_load", "present_plan", "goal_complete", "goal_blocked", "subagent", "subagent_wait"];
|
|
15
|
+
/** Mutating coding tools omitted from the read-only child registry. */
|
|
16
|
+
export declare const READ_ONLY_EXCLUDED_CHILD_TOOLS: readonly ["edit", "write", "code_rewrite", "lsp_rename"];
|
|
17
|
+
export interface ResolveChildExcludeToolsInput {
|
|
18
|
+
permissions: ChildPermission;
|
|
19
|
+
/** Dynamic fanout children may keep the child-safe subagent tool. */
|
|
20
|
+
fanoutAuthorized?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare function resolveChildExcludeTools(input: ResolveChildExcludeToolsInput): string[];
|
|
23
|
+
export declare function isParentOwnedChildTool(name: string): boolean;
|
|
24
|
+
export declare function isReadOnlyExcludedChildTool(name: string): boolean;
|
|
25
|
+
//# sourceMappingURL=child-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"child-tools.d.ts","sourceRoot":"","sources":["../../../../../../src/builtin-extensions/pi-subagents/src/runs/shared/child-tools.ts"],"names":[],"mappings":"AACA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oDAAoD,CAAC;AAE1F,wEAAwE;AACxE,eAAO,MAAM,wBAAwB,+IAU3B,CAAC;AAEX,uEAAuE;AACvE,eAAO,MAAM,8BAA8B,0DAKjC,CAAC;AAKX,MAAM,WAAW,6BAA6B;IAC7C,WAAW,EAAE,eAAe,CAAC;IAC7B,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,6BAA6B,GAAG,MAAM,EAAE,CASvF;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjE","sourcesContent":["// @ts-nocheck\n/**\n * Central permission-to-tool resolver for prompt-driven children.\n *\n * Full access is the coding-tool set (read/search/shell/edit/write/web/LSP/MCP\n * plus output and supervisor coordination). It is not parent-equivalent: cron,\n * memory, goals, plan approval, nested subagent management, and other\n * persistent/user-config tools stay excluded.\n *\n * Read-only drops mutating coding tools from the registry and still runs under\n * Plan mode as defense in depth.\n */\n\nimport type { ChildPermission } from \"../../../../../core/subagent-permission-inherit.ts\";\n\n/** Parent-owned / persistent tools excluded even from full children. */\nexport const PARENT_OWNED_CHILD_TOOLS = [\n\t\"cron\",\n\t\"memory_add\",\n\t\"memory_remove\",\n\t\"memory_load\",\n\t\"present_plan\",\n\t\"goal_complete\",\n\t\"goal_blocked\",\n\t\"subagent\",\n\t\"subagent_wait\",\n] as const;\n\n/** Mutating coding tools omitted from the read-only child registry. */\nexport const READ_ONLY_EXCLUDED_CHILD_TOOLS = [\n\t\"edit\",\n\t\"write\",\n\t\"code_rewrite\",\n\t\"lsp_rename\",\n] as const;\n\nconst PARENT_OWNED_SET = new Set<string>(PARENT_OWNED_CHILD_TOOLS);\nconst READ_ONLY_SET = new Set<string>(READ_ONLY_EXCLUDED_CHILD_TOOLS);\n\nexport interface ResolveChildExcludeToolsInput {\n\tpermissions: ChildPermission;\n\t/** Dynamic fanout children may keep the child-safe subagent tool. */\n\tfanoutAuthorized?: boolean;\n}\n\nexport function resolveChildExcludeTools(input: ResolveChildExcludeToolsInput): string[] {\n\tconst excluded = new Set<string>(PARENT_OWNED_SET);\n\tif (input.fanoutAuthorized) {\n\t\texcluded.delete(\"subagent\");\n\t}\n\tif (input.permissions === \"read-only\") {\n\t\tfor (const tool of READ_ONLY_SET) excluded.add(tool);\n\t}\n\treturn [...excluded];\n}\n\nexport function isParentOwnedChildTool(name: string): boolean {\n\treturn PARENT_OWNED_SET.has(name);\n}\n\nexport function isReadOnlyExcludedChildTool(name: string): boolean {\n\treturn READ_ONLY_SET.has(name);\n}\n"]}
|