@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":"chain-clarify.js","sourceRoot":"","sources":["../../../../../../src/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\n/**\n * Chain Clarification TUI Component\n *\n * Shows templates and resolved behaviors for each step in a chain.\n * Supports runtime editing of templates, output paths, reads lists, and progress toggle.\n */\n\nimport type { Theme } from \"@ashx-j/lunr\";\nimport type { Component, TUI } from \"@ashx-j/lunr-tui\";\nimport { matchesKey, visibleWidth, truncateToWidth } from \"@ashx-j/lunr-tui\";\nimport type { AgentConfig } from \"../../agents/agents.ts\";\nimport type { ResolvedStepBehavior } from \"../../shared/settings.ts\";\nimport { resolveModelCandidate, splitThinkingSuffix } from \"../shared/model-fallback.ts\";\nimport { findModelInfo, getSupportedThinkingLevels, type ModelInfo, type ThinkingLevel } from \"../../shared/model-info.ts\";\n\ntype ClarifyMode = 'single' | 'parallel' | 'chain';\n\nexport interface BehaviorOverride {\n\toutput?: string | false;\n\treads?: string[] | false;\n\tprogress?: boolean;\n\tmodel?: string;\n\tskills?: string[] | false;\n}\n\nexport interface ChainClarifyResult {\n\tconfirmed: boolean;\n\ttemplates: string[];\n\tbehaviorOverrides: (BehaviorOverride | undefined)[];\n\trunInBackground?: boolean;\n}\n\ntype EditMode = \"template\" | \"output\" | \"reads\" | \"model\" | \"thinking\" | \"skills\";\n\n\ninterface TextEditorState {\n\tbuffer: string;\n\tcursor: number;\n\tviewportOffset: number;\n}\n\nfunction createEditorState(initial = \"\"): TextEditorState {\n\treturn { buffer: initial, cursor: 0, viewportOffset: 0 };\n}\n\nfunction wrapText(text: string, width: number): { lines: string[]; starts: number[] } {\n\tif (width <= 0) return { lines: [text], starts: [0] };\n\tif (text.length === 0) return { lines: [\"\"], starts: [0] };\n\n\tconst lines: string[] = [];\n\tconst starts: number[] = [];\n\tlet offset = 0;\n\tconst segments = text.split(\"\\n\");\n\tfor (const [index, segment] of segments.entries()) {\n\t\tif (segment.length === 0) {\n\t\t\tstarts.push(offset);\n\t\t\tlines.push(\"\");\n\t\t} else {\n\t\t\tlet lineStart = 0;\n\t\t\tlet pos = 0;\n\t\t\tlet lineWidth = 0;\n\t\t\twhile (pos < segment.length) {\n\t\t\t\tconst char = String.fromCodePoint(segment.codePointAt(pos)!);\n\t\t\t\tconst charWidth = visibleWidth(char);\n\t\t\t\tif (lineWidth > 0 && lineWidth + charWidth > width) {\n\t\t\t\t\tstarts.push(offset + lineStart);\n\t\t\t\t\tlines.push(segment.slice(lineStart, pos));\n\t\t\t\t\tlineStart = pos;\n\t\t\t\t\tlineWidth = 0;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tpos += char.length;\n\t\t\t\tlineWidth += charWidth;\n\t\t\t}\n\t\t\tstarts.push(offset + lineStart);\n\t\t\tlines.push(segment.slice(lineStart));\n\t\t}\n\t\toffset += segment.length + (index < segments.length - 1 ? 1 : 0);\n\t}\n\tif (!text.endsWith(\"\\n\") && text.length > 0 && visibleWidth(lines[lines.length - 1] ?? \"\") === width) {\n\t\tstarts.push(text.length);\n\t\tlines.push(\"\");\n\t}\n\treturn { lines, starts };\n}\n\nfunction getCursorDisplayPos(cursor: number, starts: number[]): { line: number; col: number } {\n\tfor (let i = starts.length - 1; i >= 0; i--) {\n\t\tif (cursor >= starts[i]!) return { line: i, col: cursor - starts[i]! };\n\t}\n\treturn { line: 0, col: 0 };\n}\n\nfunction ensureCursorVisible(cursorLine: number, viewportHeight: number, currentOffset: number): number {\n\tif (cursorLine < currentOffset) return Math.max(0, cursorLine);\n\tif (cursorLine >= currentOffset + viewportHeight) return Math.max(0, cursorLine - viewportHeight + 1);\n\treturn Math.max(0, currentOffset);\n}\n\nfunction isWordChar(ch: string): boolean {\n\tconst code = ch.charCodeAt(0);\n\treturn (code >= 48 && code <= 57) || (code >= 65 && code <= 90) || (code >= 97 && code <= 122) || code === 95;\n}\n\nfunction wordBackward(buffer: string, cursor: number): number {\n\tlet pos = cursor;\n\twhile (pos > 0 && !isWordChar(buffer[pos - 1]!)) pos--;\n\twhile (pos > 0 && isWordChar(buffer[pos - 1]!)) pos--;\n\treturn pos;\n}\n\nfunction wordForward(buffer: string, cursor: number): number {\n\tlet pos = cursor;\n\twhile (pos < buffer.length && isWordChar(buffer[pos]!)) pos++;\n\twhile (pos < buffer.length && !isWordChar(buffer[pos]!)) pos++;\n\treturn pos;\n}\n\nfunction normalizeInsertText(data: string): string | null {\n\tlet text = data.split(\"\\x1b[200~\").join(\"\").split(\"\\x1b[201~\").join(\"\");\n\ttext = text.replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n\tconst newline = text.indexOf(\"\\n\");\n\tif (newline !== -1) text = text.slice(0, newline);\n\ttext = text.replace(/\\t/g, \" \");\n\tif (text.length === 0) return null;\n\tfor (let i = 0; i < text.length; i++) {\n\t\tif (text.charCodeAt(i) < 32) return null;\n\t}\n\treturn text;\n}\n\nfunction handleEditorInput(state: TextEditorState, data: string, textWidth: number): TextEditorState | null {\n\tif (matchesKey(data, \"escape\") || matchesKey(data, \"ctrl+c\") || matchesKey(data, \"return\")) return null;\n\n\tconst { lines: wrapped, starts } = wrapText(state.buffer, textWidth);\n\tconst cursorPos = getCursorDisplayPos(state.cursor, starts);\n\n\tif (matchesKey(data, \"alt+left\") || matchesKey(data, \"ctrl+left\")) return { ...state, cursor: wordBackward(state.buffer, state.cursor) };\n\tif (matchesKey(data, \"alt+right\") || matchesKey(data, \"ctrl+right\")) return { ...state, cursor: wordForward(state.buffer, state.cursor) };\n\tif (matchesKey(data, \"left\")) return state.cursor > 0 ? { ...state, cursor: state.cursor - 1 } : state;\n\tif (matchesKey(data, \"right\")) return state.cursor < state.buffer.length ? { ...state, cursor: state.cursor + 1 } : state;\n\tif (matchesKey(data, \"up\") && cursorPos.line > 0) {\n\t\tconst targetLine = cursorPos.line - 1;\n\t\treturn { ...state, cursor: starts[targetLine]! + Math.min(cursorPos.col, wrapped[targetLine]?.length ?? 0) };\n\t}\n\tif (matchesKey(data, \"down\") && cursorPos.line < wrapped.length - 1) {\n\t\tconst targetLine = cursorPos.line + 1;\n\t\treturn { ...state, cursor: starts[targetLine]! + Math.min(cursorPos.col, wrapped[targetLine]?.length ?? 0) };\n\t}\n\tif (matchesKey(data, \"home\")) return { ...state, cursor: starts[cursorPos.line]! };\n\tif (matchesKey(data, \"end\")) return { ...state, cursor: starts[cursorPos.line]! + (wrapped[cursorPos.line]?.length ?? 0) };\n\tif (matchesKey(data, \"ctrl+home\")) return { ...state, cursor: 0 };\n\tif (matchesKey(data, \"ctrl+end\")) return { ...state, cursor: state.buffer.length };\n\tif (matchesKey(data, \"alt+backspace\")) {\n\t\tconst target = wordBackward(state.buffer, state.cursor);\n\t\treturn target === state.cursor ? state : { ...state, buffer: state.buffer.slice(0, target) + state.buffer.slice(state.cursor), cursor: target };\n\t}\n\tif (matchesKey(data, \"backspace\")) {\n\t\treturn state.cursor > 0\n\t\t\t? { ...state, buffer: state.buffer.slice(0, state.cursor - 1) + state.buffer.slice(state.cursor), cursor: state.cursor - 1 }\n\t\t\t: state;\n\t}\n\tif (matchesKey(data, \"delete\")) {\n\t\treturn state.cursor < state.buffer.length\n\t\t\t? { ...state, buffer: state.buffer.slice(0, state.cursor) + state.buffer.slice(state.cursor + 1) }\n\t\t\t: state;\n\t}\n\n\tconst insert = normalizeInsertText(data);\n\treturn insert\n\t\t? { ...state, buffer: state.buffer.slice(0, state.cursor) + insert + state.buffer.slice(state.cursor), cursor: state.cursor + insert.length }\n\t\t: null;\n}\n\nfunction renderWithCursor(text: string, cursorPos: number): string {\n\tconst before = text.slice(0, cursorPos);\n\tconst cursorChar = text[cursorPos] ?? \" \";\n\tconst after = text.slice(cursorPos + 1);\n\treturn `${before}\\x1b[7m${cursorChar}\\x1b[27m${after}`;\n}\n\nfunction renderEditor(state: TextEditorState, width: number, viewportHeight: number): string[] {\n\tconst { lines: wrapped, starts } = wrapText(state.buffer, width);\n\tconst cursorPos = getCursorDisplayPos(state.cursor, starts);\n\tconst lines: string[] = [];\n\tfor (let i = 0; i < viewportHeight; i++) {\n\t\tconst lineIdx = state.viewportOffset + i;\n\t\tlet content = lineIdx < wrapped.length ? wrapped[lineIdx] ?? \"\" : \"\";\n\t\tif (lineIdx === cursorPos.line) content = renderWithCursor(content, cursorPos.col);\n\t\tlines.push(content);\n\t}\n\treturn lines;\n}\n\n/**\n * TUI component for chain clarification.\n * Factory signature matches ctx.ui.custom: (tui, theme, kb, done) => Component\n */\nexport class ChainClarifyComponent implements Component {\n\treadonly width = 84;\n\n\tprivate selectedStep = 0;\n\tprivate editingStep: number | null = null;\n\tprivate editMode: EditMode = \"template\";\n\tprivate editState: TextEditorState = createEditorState();\n\n\tprivate readonly EDIT_VIEWPORT_HEIGHT = 12;\n\tprivate behaviorOverrides: Map<number, BehaviorOverride> = new Map();\n\tprivate modelSearchQuery: string = \"\";\n\tprivate modelSelectedIndex: number = 0;\n\tprivate filteredModels: ModelInfo[] = [];\n\tprivate readonly MODEL_SELECTOR_HEIGHT = 10;\n\tprivate thinkingSelectedIndex: number = 0;\n\tprivate skillSearchQuery: string = \"\";\n\tprivate skillSelectedNames: Set<string> = new Set();\n\tprivate skillCursorIndex: number = 0;\n\tprivate filteredSkills: Array<{ name: string; source: string; description?: string }> = [];\n\tprivate noticeMessage: { text: string; type: \"info\" | \"error\" } | null = null;\n\tprivate noticeMessageTimer: ReturnType<typeof setTimeout> | null = null;\n\t/** Run in background (async) mode */\n\tprivate runInBackground = false;\n\tprivate tui: TUI;\n\tprivate theme: Theme;\n\tprivate agentConfigs: AgentConfig[];\n\tprivate templates: string[];\n\tprivate originalTask: string;\n\tprivate chainDir: string | undefined;\n\tprivate resolvedBehaviors: ResolvedStepBehavior[];\n\tprivate availableModels: ModelInfo[];\n\tprivate preferredProvider: string | undefined;\n\tprivate availableSkills: Array<{ name: string; source: string; description?: string }>;\n\tprivate done: (result: ChainClarifyResult) => void;\n\tprivate mode: ClarifyMode;\n\n\tconstructor(\n\t\ttui: TUI,\n\t\ttheme: Theme,\n\t\tagentConfigs: AgentConfig[],\n\t\ttemplates: string[],\n\t\toriginalTask: string,\n\t\tchainDir: string | undefined,\n\t\tresolvedBehaviors: ResolvedStepBehavior[],\n\t\tavailableModels: ModelInfo[],\n\t\tpreferredProvider: string | undefined,\n\t\tavailableSkills: Array<{ name: string; source: string; description?: string }>,\n\t\tdone: (result: ChainClarifyResult) => void,\n\t\tmode: ClarifyMode = 'chain',\n\t) {\n\t\tthis.tui = tui;\n\t\tthis.theme = theme;\n\t\tthis.agentConfigs = agentConfigs;\n\t\tthis.templates = templates;\n\t\tthis.originalTask = originalTask;\n\t\tthis.chainDir = chainDir;\n\t\tthis.resolvedBehaviors = resolvedBehaviors;\n\t\tthis.availableModels = availableModels;\n\t\tthis.preferredProvider = preferredProvider;\n\t\tthis.availableSkills = availableSkills;\n\t\tthis.done = done;\n\t\tthis.mode = mode;\n\t\tthis.filteredModels = [...availableModels];\n\t\tthis.filteredSkills = [...availableSkills];\n\t}\n\n\t// ─────────────────────────────────────────────────────────────────────────────\n\t// Helper methods for rendering\n\t// ─────────────────────────────────────────────────────────────────────────────\n\n\t/** Pad string to specified visible width */\n\tprivate pad(s: string, len: number): string {\n\t\tconst vis = visibleWidth(s);\n\t\treturn s + \" \".repeat(Math.max(0, len - vis));\n\t}\n\n\t/** Create a row with border characters */\n\tprivate row(content: string): string {\n\t\tconst innerW = this.width - 2;\n\t\treturn this.theme.fg(\"border\", \"│\") + this.pad(content, innerW) + this.theme.fg(\"border\", \"│\");\n\t}\n\n\t/** Render centered header line with border */\n\tprivate renderHeader(text: string): string {\n\t\tconst innerW = this.width - 2;\n\t\tconst padLen = Math.max(0, innerW - visibleWidth(text));\n\t\tconst padLeft = Math.floor(padLen / 2);\n\t\tconst padRight = padLen - padLeft;\n\t\treturn (\n\t\t\tthis.theme.fg(\"border\", \"╭\" + \"─\".repeat(padLeft)) +\n\t\t\tthis.theme.fg(\"accent\", text) +\n\t\t\tthis.theme.fg(\"border\", \"─\".repeat(padRight) + \"╮\")\n\t\t);\n\t}\n\n\t/** Render centered footer line with border */\n\tprivate renderFooter(text: string): string {\n\t\tconst innerW = this.width - 2;\n\t\tconst padLen = Math.max(0, innerW - visibleWidth(text));\n\t\tconst padLeft = Math.floor(padLen / 2);\n\t\tconst padRight = padLen - padLeft;\n\t\treturn (\n\t\t\tthis.theme.fg(\"border\", \"╰\" + \"─\".repeat(padLeft)) +\n\t\t\tthis.theme.fg(\"dim\", text) +\n\t\t\tthis.theme.fg(\"border\", \"─\".repeat(padRight) + \"╯\")\n\t\t);\n\t}\n\n\t/** Exit edit mode and reset state */\n\tprivate exitEditMode(): void {\n\t\tthis.editingStep = null;\n\t\tthis.editState = createEditorState();\n\t\tthis.tui.requestRender();\n\t}\n\n\t// ─────────────────────────────────────────────────────────────────────────────\n\t// Full edit mode methods\n\t// ─────────────────────────────────────────────────────────────────────────────\n\n\t/** Render the full-edit takeover view */\n\tprivate renderFullEditMode(): string[] {\n\t\tconst innerW = this.width - 2;\n\t\tconst textWidth = innerW - 2; // 1 char padding on each side\n\t\tconst lines: string[] = [];\n\n\t\tconst { lines: wrapped, starts } = wrapText(this.editState.buffer, textWidth);\n\t\tconst cursorPos = getCursorDisplayPos(this.editState.cursor, starts);\n\t\tthis.editState = {\n\t\t\t...this.editState,\n\t\t\tviewportOffset: ensureCursorVisible(\n\t\t\t\tcursorPos.line,\n\t\t\t\tthis.EDIT_VIEWPORT_HEIGHT,\n\t\t\t\tthis.editState.viewportOffset,\n\t\t\t),\n\t\t};\n\n\t\t// Header (truncate agent name to prevent overflow)\n\t\tconst fieldName = this.editMode === \"template\" ? \"task\" : this.editMode;\n\t\tconst rawAgentName = this.agentConfigs[this.editingStep!]?.name ?? \"unknown\";\n\t\tconst maxAgentLen = innerW - 30; // Reserve space for \" Editing X (Step/Task N: ) \"\n\t\tconst agentName = rawAgentName.length > maxAgentLen\n\t\t\t? rawAgentName.slice(0, maxAgentLen - 1) + \"…\"\n\t\t\t: rawAgentName;\n\t\t// Use mode-appropriate terminology\n\t\tconst stepLabel = this.mode === 'single' \n\t\t\t? agentName \n\t\t\t: this.mode === 'parallel' \n\t\t\t\t? `Task ${this.editingStep! + 1}: ${agentName}` \n\t\t\t\t: `Step ${this.editingStep! + 1}: ${agentName}`;\n\t\tconst headerText = ` Editing ${fieldName} (${stepLabel}) `;\n\t\tlines.push(this.renderHeader(headerText));\n\t\tlines.push(this.row(\"\"));\n\n\t\tconst editorLines = renderEditor(this.editState, textWidth, this.EDIT_VIEWPORT_HEIGHT);\n\t\tfor (const line of editorLines) {\n\t\t\tlines.push(this.row(` ${line}`));\n\t\t}\n\n\t\tconst linesBelow = wrapped.length - this.editState.viewportOffset - this.EDIT_VIEWPORT_HEIGHT;\n\t\tconst hasMore = linesBelow > 0;\n\t\tconst hasLess = this.editState.viewportOffset > 0;\n\t\tlet scrollInfo = \"\";\n\t\tif (hasLess) scrollInfo += \"↑\";\n\t\tif (hasMore) scrollInfo += `↓ ${linesBelow}+`;\n\n\t\tlines.push(this.row(\"\"));\n\n\t\tconst footerText = scrollInfo\n\t\t\t? ` [Esc] Done • [Ctrl+C] Discard • ${scrollInfo} `\n\t\t\t: \" [Esc] Done • [Ctrl+C] Discard \";\n\t\tlines.push(this.renderFooter(footerText));\n\n\t\treturn lines;\n\t}\n\n\t// ─────────────────────────────────────────────────────────────────────────────\n\t// Behavior helpers\n\t// ─────────────────────────────────────────────────────────────────────────────\n\n\t/** Get effective behavior for a step (with user overrides applied) */\n\tprivate getEffectiveBehavior(stepIndex: number): ResolvedStepBehavior {\n\t\tconst base = this.resolvedBehaviors[stepIndex]!;\n\t\tconst override = this.behaviorOverrides.get(stepIndex);\n\t\tif (!override) return base;\n\n\t\treturn {\n\t\t\toutput: override.output !== undefined ? override.output : base.output,\n\t\t\toutputMode: base.outputMode,\n\t\t\treads: override.reads !== undefined ? override.reads : base.reads,\n\t\t\tprogress: override.progress !== undefined ? override.progress : base.progress,\n\t\t\tskills: override.skills !== undefined ? override.skills : base.skills,\n\t\t\tmodel: override.model !== undefined ? override.model : base.model,\n\t\t};\n\t}\n\n\t/** Get the effective model for a step (override or agent default) */\n\tprivate getEffectiveModel(stepIndex: number): string {\n\t\tconst override = this.behaviorOverrides.get(stepIndex);\n\t\tif (override?.model) return this.resolveModelFullId(override.model);\n\n\t\tconst baseModel = this.resolvedBehaviors[stepIndex]?.model;\n\t\tif (baseModel) return this.resolveModelFullId(baseModel);\n\t\treturn \"default\";\n\t}\n\n\t/** Resolve a model name to its full provider/model format */\n\tprivate resolveModelFullId(modelName: string): string {\n\t\treturn resolveModelCandidate(modelName, this.availableModels, this.preferredProvider) ?? modelName;\n\t}\n\n\t/** Update a behavior override for a step */\n\tprivate updateBehavior(stepIndex: number, field: keyof BehaviorOverride, value: string | boolean | string[] | false): void {\n\t\tconst existing = this.behaviorOverrides.get(stepIndex) ?? {};\n\t\tthis.behaviorOverrides.set(stepIndex, { ...existing, [field]: value });\n\t}\n\n\tprivate showNotice(text: string, type: \"info\" | \"error\"): void {\n\t\tthis.noticeMessage = { text, type };\n\t\tif (this.noticeMessageTimer) clearTimeout(this.noticeMessageTimer);\n\t\tthis.noticeMessageTimer = setTimeout(() => {\n\t\t\tthis.noticeMessage = null;\n\t\t\tthis.noticeMessageTimer = null;\n\t\t\tthis.tui.requestRender();\n\t\t}, 2000);\n\t\tthis.tui.requestRender();\n\t}\n\n\thandleInput(data: string): void {\n\t\tif (this.editingStep !== null) {\n\t\t\tif (this.editMode === \"model\") {\n\t\t\t\tthis.handleModelSelectorInput(data);\n\t\t\t} else if (this.editMode === \"thinking\") {\n\t\t\t\tthis.handleThinkingSelectorInput(data);\n\t\t\t} else if (this.editMode === \"skills\") {\n\t\t\t\tthis.handleSkillSelectorInput(data);\n\t\t\t} else {\n\t\t\t\tthis.handleEditInput(data);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"escape\") || matchesKey(data, \"ctrl+c\")) {\n\t\t\tthis.done({ confirmed: false, templates: [], behaviorOverrides: [] });\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"return\")) {\n\t\t\tconst overrides: (BehaviorOverride | undefined)[] = [];\n\t\t\tfor (let i = 0; i < this.agentConfigs.length; i++) {\n\t\t\t\toverrides.push(this.behaviorOverrides.get(i));\n\t\t\t}\n\t\t\tthis.done({ confirmed: true, templates: this.templates, behaviorOverrides: overrides, runInBackground: this.runInBackground });\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"up\")) {\n\t\t\tthis.selectedStep = Math.max(0, this.selectedStep - 1);\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"down\")) {\n\t\t\tconst maxStep = Math.max(0, this.agentConfigs.length - 1);\n\t\t\tthis.selectedStep = Math.min(maxStep, this.selectedStep + 1);\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (data === \"e\") {\n\t\t\tthis.enterEditMode(\"template\");\n\t\t\treturn;\n\t\t}\n\n\t\tif (data === \"m\") {\n\t\t\tthis.enterModelSelector();\n\t\t\treturn;\n\t\t}\n\n\t\tif (data === \"t\") {\n\t\t\tthis.enterThinkingSelector();\n\t\t\treturn;\n\t\t}\n\n\t\tif (data === \"s\") {\n\t\t\tthis.editingStep = this.selectedStep;\n\t\t\tthis.editMode = \"skills\";\n\t\t\tthis.skillSearchQuery = \"\";\n\t\t\tthis.skillCursorIndex = 0;\n\t\t\tthis.filteredSkills = [...this.availableSkills];\n\t\t\tconst current = this.getEffectiveBehavior(this.selectedStep).skills;\n\t\t\tthis.skillSelectedNames.clear();\n\t\t\tif (current !== false && current.length > 0) {\n\t\t\t\tcurrent.forEach((skillName) => this.skillSelectedNames.add(skillName));\n\t\t\t}\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (data === \"w\" && this.mode !== 'parallel') {\n\t\t\tthis.enterEditMode(\"output\");\n\t\t\treturn;\n\t\t}\n\n\t\tif (data === \"r\" && this.mode === 'chain') {\n\t\t\tthis.enterEditMode(\"reads\");\n\t\t\treturn;\n\t\t}\n\n\t\tif (data === \"p\" && this.mode === 'chain') {\n\t\t\tconst anyEnabled = this.agentConfigs.some((_, i) => this.getEffectiveBehavior(i).progress);\n\t\t\tconst newState = !anyEnabled;\n\t\t\tfor (let i = 0; i < this.agentConfigs.length; i++) {\n\t\t\t\tthis.updateBehavior(i, \"progress\", newState);\n\t\t\t}\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (data === \"b\") {\n\t\t\tthis.runInBackground = !this.runInBackground;\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t}\n\n\tprivate enterEditMode(mode: EditMode): void {\n\t\tthis.editingStep = this.selectedStep;\n\t\tthis.editMode = mode;\n\t\tlet buffer = \"\";\n\n\t\tif (mode === \"template\") {\n\t\t\tconst template = this.templates[this.selectedStep] ?? \"\";\n\t\t\tbuffer = template.split(\"\\n\")[0] ?? \"\";\n\t\t} else if (mode === \"output\") {\n\t\t\tconst behavior = this.getEffectiveBehavior(this.selectedStep);\n\t\t\tbuffer = behavior.output === false ? \"\" : (behavior.output || \"\");\n\t\t} else if (mode === \"reads\") {\n\t\t\tconst behavior = this.getEffectiveBehavior(this.selectedStep);\n\t\t\tbuffer = behavior.reads === false ? \"\" : (behavior.reads?.join(\", \") || \"\");\n\t\t}\n\n\t\tthis.editState = createEditorState(buffer);\n\t\tthis.tui.requestRender();\n\t}\n\n\t/** Enter model selector mode */\n\tprivate enterModelSelector(): void {\n\t\tthis.editingStep = this.selectedStep;\n\t\tthis.editMode = \"model\";\n\t\tthis.modelSearchQuery = \"\";\n\t\tthis.modelSelectedIndex = 0;\n\t\tthis.filteredModels = [...this.availableModels];\n\t\tconst currentModel = splitThinkingSuffix(this.getEffectiveModel(this.selectedStep)).baseModel;\n\t\tconst currentIndex = this.filteredModels.findIndex((m) => m.fullId === currentModel || m.id === currentModel);\n\t\tif (currentIndex >= 0) {\n\t\t\tthis.modelSelectedIndex = currentIndex;\n\t\t}\n\n\t\tthis.tui.requestRender();\n\t}\n\n\t/** Filter models based on search query */\n\tprivate filterModels(): void {\n\t\tconst query = this.modelSearchQuery.toLowerCase();\n\t\tif (!query) {\n\t\t\tthis.filteredModels = [...this.availableModels];\n\t\t} else {\n\t\t\tthis.filteredModels = this.availableModels.filter((m) =>\n\t\t\t\tm.fullId.toLowerCase().includes(query) ||\n\t\t\t\tm.id.toLowerCase().includes(query) ||\n\t\t\t\tm.provider.toLowerCase().includes(query)\n\t\t\t);\n\t\t}\n\t\tthis.modelSelectedIndex = Math.min(this.modelSelectedIndex, Math.max(0, this.filteredModels.length - 1));\n\t}\n\n\tprivate handleModelSelectorInput(data: string): void {\n\t\tif (matchesKey(data, \"escape\") || matchesKey(data, \"ctrl+c\")) {\n\t\t\tthis.exitEditMode();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"return\")) {\n\t\t\tconst selected = this.filteredModels[this.modelSelectedIndex];\n\t\t\tif (selected) {\n\t\t\t\tconst { thinkingSuffix } = splitThinkingSuffix(this.getEffectiveModel(this.editingStep!));\n\t\t\t\tconst requestedLevel = thinkingSuffix.slice(1);\n\t\t\t\tconst selectedModel = findModelInfo(selected.fullId, this.availableModels, this.preferredProvider);\n\t\t\t\tconst suffix = getSupportedThinkingLevels(selectedModel).some((level) => level === requestedLevel) ? thinkingSuffix : \"\";\n\t\t\t\tthis.updateBehavior(this.editingStep!, \"model\", `${selected.fullId}${suffix}`);\n\t\t\t}\n\t\t\tthis.exitEditMode();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"up\")) {\n\t\t\tif (this.filteredModels.length > 0) {\n\t\t\t\tthis.modelSelectedIndex = this.modelSelectedIndex === 0\n\t\t\t\t\t? this.filteredModels.length - 1\n\t\t\t\t\t: this.modelSelectedIndex - 1;\n\t\t\t}\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"down\")) {\n\t\t\tif (this.filteredModels.length > 0) {\n\t\t\t\tthis.modelSelectedIndex = this.modelSelectedIndex === this.filteredModels.length - 1\n\t\t\t\t\t? 0\n\t\t\t\t\t: this.modelSelectedIndex + 1;\n\t\t\t}\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"backspace\")) {\n\t\t\tif (this.modelSearchQuery.length > 0) {\n\t\t\t\tthis.modelSearchQuery = this.modelSearchQuery.slice(0, -1);\n\t\t\t\tthis.filterModels();\n\t\t\t}\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (data.length === 1 && data.charCodeAt(0) >= 32) {\n\t\t\tthis.modelSearchQuery += data;\n\t\t\tthis.filterModels();\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\t}\n\n\tprivate getAvailableThinkingLevels(stepIndex: number): ThinkingLevel[] {\n\t\treturn getSupportedThinkingLevels(findModelInfo(this.getEffectiveModel(stepIndex), this.availableModels, this.preferredProvider));\n\t}\n\n\t/** Enter thinking level selector mode */\n\tprivate enterThinkingSelector(): void {\n\t\tif (!this.getEffectiveBehavior(this.selectedStep).model) {\n\t\t\tthis.showNotice(\"Select a model first\", \"error\");\n\t\t\treturn;\n\t\t}\n\t\tthis.editingStep = this.selectedStep;\n\t\tthis.editMode = \"thinking\";\n\n\t\tconst levels = this.getAvailableThinkingLevels(this.selectedStep);\n\t\tconst { thinkingSuffix } = splitThinkingSuffix(this.getEffectiveModel(this.selectedStep));\n\t\tconst suffix = thinkingSuffix.slice(1);\n\t\tconst levelIdx = levels.findIndex((level) => level === suffix);\n\t\tthis.thinkingSelectedIndex = levelIdx >= 0 ? levelIdx : Math.max(0, levels.indexOf(\"off\"));\n\n\t\tthis.tui.requestRender();\n\t}\n\n\tprivate handleThinkingSelectorInput(data: string): void {\n\t\tif (matchesKey(data, \"escape\") || matchesKey(data, \"ctrl+c\")) {\n\t\t\tthis.exitEditMode();\n\t\t\treturn;\n\t\t}\n\n\t\tconst levels = this.getAvailableThinkingLevels(this.editingStep!);\n\t\tif (levels.length === 0) return;\n\n\t\tif (matchesKey(data, \"return\")) {\n\t\t\tconst selectedLevel = levels[this.thinkingSelectedIndex] ?? \"off\";\n\t\t\tthis.applyThinkingLevel(selectedLevel);\n\t\t\tthis.exitEditMode();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"up\")) {\n\t\t\tthis.thinkingSelectedIndex = this.thinkingSelectedIndex === 0\n\t\t\t\t? levels.length - 1\n\t\t\t\t: this.thinkingSelectedIndex - 1;\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"down\")) {\n\t\t\tthis.thinkingSelectedIndex = this.thinkingSelectedIndex === levels.length - 1\n\t\t\t\t? 0\n\t\t\t\t: this.thinkingSelectedIndex + 1;\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\t}\n\n\t/** Apply thinking level to the current step's model */\n\tprivate applyThinkingLevel(level: ThinkingLevel): void {\n\t\tconst stepIndex = this.editingStep!;\n\t\tconst currentModel = this.getEffectiveBehavior(stepIndex).model;\n\t\tif (!currentModel) return;\n\n\t\tconst { baseModel } = splitThinkingSuffix(currentModel);\n\t\tconst newModel = level === \"off\" ? baseModel : `${baseModel}:${level}`;\n\t\tthis.updateBehavior(stepIndex, \"model\", newModel);\n\t}\n\n\tprivate filterSkills(): void {\n\t\tconst query = this.skillSearchQuery.toLowerCase();\n\t\tif (!query) {\n\t\t\tthis.filteredSkills = [...this.availableSkills];\n\t\t} else {\n\t\t\tthis.filteredSkills = this.availableSkills.filter((s) =>\n\t\t\t\ts.name.toLowerCase().includes(query) ||\n\t\t\t\t(s.description?.toLowerCase().includes(query) ?? false),\n\t\t\t);\n\t\t}\n\t\tthis.skillCursorIndex = Math.min(this.skillCursorIndex, Math.max(0, this.filteredSkills.length - 1));\n\t}\n\n\tprivate handleSkillSelectorInput(data: string): void {\n\t\tif (matchesKey(data, \"escape\") || matchesKey(data, \"ctrl+c\")) {\n\t\t\tthis.exitEditMode();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"return\")) {\n\t\t\tconst selected = [...this.skillSelectedNames];\n\t\t\tthis.updateBehavior(this.editingStep!, \"skills\", selected);\n\t\t\tthis.exitEditMode();\n\t\t\treturn;\n\t\t}\n\n\t\tif (data === \" \") {\n\t\t\tif (this.filteredSkills.length > 0) {\n\t\t\t\tconst skill = this.filteredSkills[this.skillCursorIndex];\n\t\t\t\tif (skill) {\n\t\t\t\t\tif (this.skillSelectedNames.has(skill.name)) {\n\t\t\t\t\t\tthis.skillSelectedNames.delete(skill.name);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.skillSelectedNames.add(skill.name);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"up\")) {\n\t\t\tif (this.filteredSkills.length > 0) {\n\t\t\t\tthis.skillCursorIndex = this.skillCursorIndex === 0\n\t\t\t\t\t? this.filteredSkills.length - 1\n\t\t\t\t\t: this.skillCursorIndex - 1;\n\t\t\t}\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"down\")) {\n\t\t\tif (this.filteredSkills.length > 0) {\n\t\t\t\tthis.skillCursorIndex = this.skillCursorIndex === this.filteredSkills.length - 1\n\t\t\t\t\t? 0\n\t\t\t\t\t: this.skillCursorIndex + 1;\n\t\t\t}\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"backspace\")) {\n\t\t\tif (this.skillSearchQuery.length > 0) {\n\t\t\t\tthis.skillSearchQuery = this.skillSearchQuery.slice(0, -1);\n\t\t\t\tthis.filterSkills();\n\t\t\t}\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (data.length === 1 && data.charCodeAt(0) >= 32) {\n\t\t\tthis.skillSearchQuery += data;\n\t\t\tthis.filterSkills();\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\t}\n\n\tprivate handleEditInput(data: string): void {\n\t\tconst textWidth = this.width - 4; // Must match render: innerW - 2 = (width - 2) - 2\n\t\tif (matchesKey(data, \"shift+up\") || matchesKey(data, \"pageup\")) {\n\t\t\tconst { lines: wrapped, starts } = wrapText(this.editState.buffer, textWidth);\n\t\t\tconst cursorPos = getCursorDisplayPos(this.editState.cursor, starts);\n\t\t\tconst targetLine = Math.max(0, cursorPos.line - this.EDIT_VIEWPORT_HEIGHT);\n\t\t\tconst targetCol = Math.min(cursorPos.col, wrapped[targetLine]?.length ?? 0);\n\t\t\tthis.editState = { ...this.editState, cursor: starts[targetLine] + targetCol };\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"shift+down\") || matchesKey(data, \"pagedown\")) {\n\t\t\tconst { lines: wrapped, starts } = wrapText(this.editState.buffer, textWidth);\n\t\t\tconst cursorPos = getCursorDisplayPos(this.editState.cursor, starts);\n\t\t\tconst targetLine = Math.min(wrapped.length - 1, cursorPos.line + this.EDIT_VIEWPORT_HEIGHT);\n\t\t\tconst targetCol = Math.min(cursorPos.col, wrapped[targetLine]?.length ?? 0);\n\t\t\tthis.editState = { ...this.editState, cursor: starts[targetLine] + targetCol };\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"tab\")) return;\n\n\t\tconst nextState = handleEditorInput(this.editState, data, textWidth);\n\t\tif (nextState) {\n\t\t\tthis.editState = nextState;\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"escape\")) {\n\t\t\tthis.saveEdit();\n\t\t\tthis.exitEditMode();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"ctrl+c\")) {\n\t\t\tthis.exitEditMode();\n\t\t\treturn;\n\t\t}\n\t}\n\n\tprivate saveEdit(): void {\n\t\tconst stepIndex = this.editingStep!;\n\n\t\tif (this.editMode === \"template\") {\n\t\t\t// For template, preserve other lines if they existed\n\t\t\tconst original = this.templates[stepIndex] ?? \"\";\n\t\t\tconst originalLines = original.split(\"\\n\");\n\t\t\toriginalLines[0] = this.editState.buffer;\n\t\t\tthis.templates[stepIndex] = originalLines.join(\"\\n\");\n\t\t} else if (this.editMode === \"output\") {\n\t\t\t// Capture OLD output before updating (for downstream propagation)\n\t\t\tconst oldBehavior = this.getEffectiveBehavior(stepIndex);\n\t\t\tconst oldOutput = typeof oldBehavior.output === \"string\" ? oldBehavior.output : null;\n\n\t\t\t// Empty string or whitespace means disable output\n\t\t\tconst trimmed = this.editState.buffer.trim();\n\t\t\tconst newOutput = trimmed === \"\" ? false : trimmed;\n\t\t\tthis.updateBehavior(stepIndex, \"output\", newOutput);\n\n\t\t\t// Propagate output filename change to downstream steps' reads\n\t\t\tif (oldOutput && typeof newOutput === \"string\" && oldOutput !== newOutput) {\n\t\t\t\tthis.propagateOutputChange(stepIndex, oldOutput, newOutput);\n\t\t\t}\n\t\t} else if (this.editMode === \"reads\") {\n\t\t\t// Parse comma-separated list, empty means disable reads\n\t\t\tconst trimmed = this.editState.buffer.trim();\n\t\t\tif (trimmed === \"\") {\n\t\t\t\tthis.updateBehavior(stepIndex, \"reads\", false);\n\t\t\t} else {\n\t\t\t\tconst files = trimmed.split(\",\").map(f => f.trim()).filter(f => f !== \"\");\n\t\t\t\tthis.updateBehavior(stepIndex, \"reads\", files.length > 0 ? files : false);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * When a step's output filename changes, update downstream steps that read from it.\n\t * This maintains the chain dependency automatically.\n\t */\n\tprivate propagateOutputChange(changedStepIndex: number, oldOutput: string, newOutput: string): void {\n\t\t// Check all downstream steps (steps that come after the changed step)\n\t\tfor (let i = changedStepIndex + 1; i < this.agentConfigs.length; i++) {\n\t\t\tconst behavior = this.getEffectiveBehavior(i);\n\t\t\t\n\t\t\t// Skip if reads is disabled or empty\n\t\t\tif (behavior.reads === false || !behavior.reads || behavior.reads.length === 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Check if this step reads the old output file\n\t\t\tconst readsArray = behavior.reads;\n\t\t\tconst oldIndex = readsArray.indexOf(oldOutput);\n\t\t\t\n\t\t\tif (oldIndex !== -1) {\n\t\t\t\t// Replace old filename with new filename in reads\n\t\t\t\tconst newReads = [...readsArray];\n\t\t\t\tnewReads[oldIndex] = newOutput;\n\t\t\t\tthis.updateBehavior(i, \"reads\", newReads);\n\t\t\t}\n\t\t}\n\t}\n\n\trender(_width: number): string[] {\n\t\tif (this.editingStep !== null) {\n\t\t\tif (this.editMode === \"model\") {\n\t\t\t\treturn this.renderModelSelector();\n\t\t\t}\n\t\t\tif (this.editMode === \"thinking\") {\n\t\t\t\treturn this.renderThinkingSelector();\n\t\t\t}\n\t\t\tif (this.editMode === \"skills\") {\n\t\t\t\treturn this.renderSkillSelector();\n\t\t\t}\n\t\t\treturn this.renderFullEditMode();\n\t\t}\n\t\t// Mode-based navigation rendering\n\t\tswitch (this.mode) {\n\t\t\tcase 'single': return this.renderSingleMode();\n\t\t\tcase 'parallel': return this.renderParallelMode();\n\t\t\tcase 'chain': return this.renderChainMode();\n\t\t}\n\t}\n\n\t/** Render the model selector view */\n\tprivate renderModelSelector(): string[] {\n\t\tconst th = this.theme;\n\t\tconst lines: string[] = [];\n\n\t\t// Header (mode-aware terminology)\n\t\tconst agentName = this.agentConfigs[this.editingStep!]?.name ?? \"unknown\";\n\t\tconst stepLabel = this.mode === 'single' \n\t\t\t? agentName \n\t\t\t: this.mode === 'parallel' \n\t\t\t\t? `Task ${this.editingStep! + 1}: ${agentName}` \n\t\t\t\t: `Step ${this.editingStep! + 1}: ${agentName}`;\n\t\tconst headerText = ` Select Model (${stepLabel}) `;\n\t\tlines.push(this.renderHeader(headerText));\n\t\tlines.push(this.row(\"\"));\n\n\t\tconst searchPrefix = th.fg(\"dim\", \"Search: \");\n\t\tconst cursor = \"\\x1b[7m \\x1b[27m\"; // Reverse video space for cursor\n\t\tconst searchDisplay = this.modelSearchQuery + cursor;\n\t\tlines.push(this.row(` ${searchPrefix}${searchDisplay}`));\n\t\tlines.push(this.row(\"\"));\n\n\t\tconst currentModel = this.getEffectiveModel(this.editingStep!);\n\t\tconst currentModelBase = splitThinkingSuffix(currentModel).baseModel;\n\t\tconst currentLabel = th.fg(\"dim\", \"Current: \");\n\t\tlines.push(this.row(` ${currentLabel}${th.fg(\"warning\", currentModel)}`));\n\t\tlines.push(this.row(\"\"));\n\n\t\tif (this.filteredModels.length === 0) {\n\t\t\tlines.push(this.row(` ${th.fg(\"dim\", \"No matching models\")}`));\n\t\t} else {\n\t\t\tconst maxVisible = this.MODEL_SELECTOR_HEIGHT;\n\t\t\tlet startIdx = 0;\n\n\t\t\tif (this.filteredModels.length > maxVisible) {\n\t\t\t\tstartIdx = Math.max(0, this.modelSelectedIndex - Math.floor(maxVisible / 2));\n\t\t\t\tstartIdx = Math.min(startIdx, this.filteredModels.length - maxVisible);\n\t\t\t}\n\n\t\t\tconst endIdx = Math.min(startIdx + maxVisible, this.filteredModels.length);\n\n\t\t\tif (startIdx > 0) {\n\t\t\t\tlines.push(this.row(` ${th.fg(\"dim\", ` ↑ ${startIdx} more`)}`));\n\t\t\t}\n\n\t\t\tfor (let i = startIdx; i < endIdx; i++) {\n\t\t\t\tconst model = this.filteredModels[i]!;\n\t\t\t\tconst isSelected = i === this.modelSelectedIndex;\n\t\t\t\tconst isCurrent = model.fullId === currentModelBase || model.id === currentModelBase;\n\t\t\t\tconst prefix = isSelected ? th.fg(\"accent\", \"→ \") : \" \";\n\t\t\t\tconst modelText = isSelected ? th.fg(\"accent\", model.id) : model.id;\n\t\t\t\tconst providerBadge = th.fg(\"dim\", ` [${model.provider}]`);\n\t\t\t\tconst currentBadge = isCurrent ? th.fg(\"success\", \" current\") : \"\";\n\n\t\t\t\tlines.push(this.row(` ${prefix}${modelText}${providerBadge}${currentBadge}`));\n\t\t\t}\n\n\t\t\tconst remaining = this.filteredModels.length - endIdx;\n\t\t\tif (remaining > 0) {\n\t\t\t\tlines.push(this.row(` ${th.fg(\"dim\", ` ↓ ${remaining} more`)}`));\n\t\t\t}\n\t\t}\n\n\t\tconst contentLines = lines.length;\n\t\tconst targetHeight = 18;\n\t\tfor (let i = contentLines; i < targetHeight; i++) {\n\t\t\tlines.push(this.row(\"\"));\n\t\t}\n\n\t\tconst footerText = \" [Enter] Select • [Esc] Cancel • Type to search \";\n\t\tlines.push(this.renderFooter(footerText));\n\n\t\treturn lines;\n\t}\n\n\t/** Render the thinking level selector view */\n\tprivate renderThinkingSelector(): string[] {\n\t\tconst th = this.theme;\n\t\tconst lines: string[] = [];\n\n\t\tconst agentName = this.agentConfigs[this.editingStep!]?.name ?? \"unknown\";\n\t\tconst stepLabel = this.mode === 'single' \n\t\t\t? agentName \n\t\t\t: this.mode === 'parallel' \n\t\t\t\t? `Task ${this.editingStep! + 1}: ${agentName}` \n\t\t\t\t: `Step ${this.editingStep! + 1}: ${agentName}`;\n\t\tconst headerText = ` Thinking Level (${stepLabel}) `;\n\t\tlines.push(this.renderHeader(headerText));\n\t\tlines.push(this.row(\"\"));\n\n\t\tconst currentModel = this.getEffectiveModel(this.editingStep!);\n\t\tconst currentLabel = th.fg(\"dim\", \"Model: \");\n\t\tlines.push(this.row(` ${currentLabel}${th.fg(\"accent\", currentModel)}`));\n\t\tlines.push(this.row(\"\"));\n\n\t\tlines.push(this.row(` ${th.fg(\"dim\", \"Select thinking level (extended thinking budget):\")}`));\n\t\tlines.push(this.row(\"\"));\n\n\t\tconst levelDescriptions: Record<ThinkingLevel, string> = {\n\t\t\t\"off\": \"No extended thinking\",\n\t\t\t\"minimal\": \"Brief reasoning\",\n\t\t\t\"low\": \"Light reasoning\",\n\t\t\t\"medium\": \"Moderate reasoning\",\n\t\t\t\"high\": \"Deep reasoning\",\n\t\t\t\"xhigh\": \"Maximum reasoning (ultrathink)\",\n\t\t\t\"max\": \"Maximum available reasoning\",\n\t\t};\n\n\t\tconst levels = this.getAvailableThinkingLevels(this.editingStep!);\n\t\tif (levels.length === 0) {\n\t\t\tlines.push(this.row(` ${th.fg(\"dim\", \"No supported thinking levels\")}`));\n\t\t} else {\n\t\t\tfor (let i = 0; i < levels.length; i++) {\n\t\t\t\tconst level = levels[i]!;\n\t\t\t\tconst isSelected = i === this.thinkingSelectedIndex;\n\t\t\t\tconst prefix = isSelected ? th.fg(\"accent\", \"→ \") : \" \";\n\t\t\t\tconst levelText = isSelected ? th.fg(\"accent\", level) : level;\n\t\t\t\tconst desc = th.fg(\"dim\", ` - ${levelDescriptions[level]}`);\n\t\t\t\tlines.push(this.row(` ${prefix}${levelText}${desc}`));\n\t\t\t}\n\t\t}\n\n\t\tconst contentLines = lines.length;\n\t\tconst targetHeight = 16;\n\t\tfor (let i = contentLines; i < targetHeight; i++) {\n\t\t\tlines.push(this.row(\"\"));\n\t\t}\n\n\t\tconst footerText = levels.length === 0\n\t\t\t? \" [Esc] Cancel \"\n\t\t\t: \" [Enter] Select • [Esc] Cancel • ↑↓ Navigate \";\n\t\tlines.push(this.renderFooter(footerText));\n\n\t\treturn lines;\n\t}\n\n\tprivate renderSkillSelector(): string[] {\n\t\tconst innerW = this.width - 2;\n\t\tconst th = this.theme;\n\t\tconst lines: string[] = [];\n\n\t\tconst agentName = this.agentConfigs[this.editingStep!]?.name ?? \"unknown\";\n\t\tconst stepLabel = this.mode === 'single'\n\t\t\t? agentName\n\t\t\t: this.mode === 'parallel'\n\t\t\t\t? `Task ${this.editingStep! + 1}: ${agentName}`\n\t\t\t\t: `Step ${this.editingStep! + 1}: ${agentName}`;\n\t\tlines.push(this.renderHeader(` Select Skills (${stepLabel}) `));\n\t\tlines.push(this.row(\"\"));\n\n\t\tconst cursor = \"\\x1b[7m \\x1b[27m\";\n\t\tlines.push(this.row(` ${th.fg(\"dim\", \"Search: \")}${this.skillSearchQuery}${cursor}`));\n\t\tlines.push(this.row(\"\"));\n\n\t\tconst selected = [...this.skillSelectedNames].join(\", \") || th.fg(\"dim\", \"(none)\");\n\t\tlines.push(this.row(` ${th.fg(\"dim\", \"Selected: \")}${truncateToWidth(selected, innerW - 12)}`));\n\t\tlines.push(this.row(\"\"));\n\n\t\tconst selectorHeight = 10;\n\t\tif (this.filteredSkills.length === 0) {\n\t\t\tlines.push(this.row(` ${th.fg(\"dim\", \"No matching skills\")}`));\n\t\t} else {\n\t\t\tlet startIdx = 0;\n\t\t\tif (this.filteredSkills.length > selectorHeight) {\n\t\t\t\tstartIdx = Math.max(0, this.skillCursorIndex - Math.floor(selectorHeight / 2));\n\t\t\t\tstartIdx = Math.min(startIdx, this.filteredSkills.length - selectorHeight);\n\t\t\t}\n\t\t\tconst endIdx = Math.min(startIdx + selectorHeight, this.filteredSkills.length);\n\n\t\t\tif (startIdx > 0) {\n\t\t\t\tlines.push(this.row(` ${th.fg(\"dim\", ` ↑ ${startIdx} more`)}`));\n\t\t\t}\n\n\t\t\tfor (let i = startIdx; i < endIdx; i++) {\n\t\t\t\tconst skill = this.filteredSkills[i]!;\n\t\t\t\tconst isCursor = i === this.skillCursorIndex;\n\t\t\t\tconst isSelected = this.skillSelectedNames.has(skill.name);\n\n\t\t\t\tconst prefix = isCursor ? th.fg(\"accent\", \"→ \") : \" \";\n\t\t\t\tconst checkbox = isSelected ? th.fg(\"success\", \"[x]\") : \"[ ]\";\n\t\t\t\tconst nameText = isCursor ? th.fg(\"accent\", skill.name) : skill.name;\n\t\t\t\tconst sourceBadge = th.fg(\"dim\", ` [${skill.source}]`);\n\t\t\t\tconst desc = skill.description\n\t\t\t\t\t? th.fg(\"dim\", ` - ${truncateToWidth(skill.description, 25)}`)\n\t\t\t\t\t: \"\";\n\n\t\t\t\tlines.push(this.row(` ${prefix}${checkbox} ${nameText}${sourceBadge}${desc}`));\n\t\t\t}\n\n\t\t\tconst remaining = this.filteredSkills.length - endIdx;\n\t\t\tif (remaining > 0) {\n\t\t\t\tlines.push(this.row(` ${th.fg(\"dim\", ` ↓ ${remaining} more`)}`));\n\t\t\t}\n\t\t}\n\n\t\tconst targetHeight = 18;\n\t\tfor (let i = lines.length; i < targetHeight; i++) {\n\t\t\tlines.push(this.row(\"\"));\n\t\t}\n\n\t\tlines.push(this.renderFooter(\" [Enter] Confirm • [Space] Toggle • [Esc] Cancel \"));\n\t\treturn lines;\n\t}\n\n\tprivate getShortcutHelpText(): string {\n\t\tconst th = this.theme;\n\t\tconst shortcut = (key: string, label: string) =>\n\t\t\tth.fg(\"accent\", `[${key}]`) + th.fg(\"dim\", label);\n\t\tconst backgroundState = this.runInBackground ? \"ON\" : \"OFF\";\n\t\tconst background = shortcut(\"b\", `Background:${backgroundState}`);\n\n\t\tswitch (this.mode) {\n\t\t\tcase 'single':\n\t\t\t\treturn ` ${shortcut(\"e\", \"Task\")} ${shortcut(\"m\", \"Model\")} ${shortcut(\"t\", \"Think\")} ${shortcut(\"w\", \"Output\")} ${shortcut(\"s\", \"Skills\")} ${background}`;\n\t\t\tcase 'parallel':\n\t\t\t\treturn ` ${shortcut(\"e\", \"Task\")} ${shortcut(\"m\", \"Model\")} ${shortcut(\"t\", \"Think\")} ${shortcut(\"s\", \"Skills\")} ${background}`;\n\t\t\tcase 'chain':\n\t\t\t\treturn ` ${shortcut(\"e\", \"Task\")} ${shortcut(\"m\", \"Model\")} ${shortcut(\"t\", \"Think\")} ${shortcut(\"w\", \"Output\")} ${shortcut(\"r\", \"Reads\")} ${shortcut(\"p\", \"Prog\")} ${shortcut(\"s\", \"Skills\")} ${background}`;\n\t\t}\n\t}\n\n\tprivate getFooterText(): string {\n\t\treturn this.mode === 'single'\n\t\t\t? \" [Enter] Run • [Esc] Cancel \"\n\t\t\t: \" [Enter] Run • [Esc] Cancel • [↑↓] Navigate \";\n\t}\n\n\tprivate appendNotice(lines: string[]): void {\n\t\tif (!this.noticeMessage) return;\n\t\tconst color = this.noticeMessage.type === \"error\" ? \"error\" : \"success\";\n\t\tlines.push(this.row(` ${this.theme.fg(color, this.noticeMessage.text)}`));\n\t}\n\n\tprivate renderSingleMode(): string[] {\n\t\tconst innerW = this.width - 2;\n\t\tconst th = this.theme;\n\t\tconst lines: string[] = [];\n\n\t\tconst agentName = this.agentConfigs[0]?.name ?? \"unknown\";\n\t\tconst maxHeaderLen = innerW - 4;\n\t\tconst headerText = ` Agent: ${truncateToWidth(agentName, maxHeaderLen - 9)} `;\n\t\tlines.push(this.renderHeader(headerText));\n\t\tlines.push(this.row(\"\"));\n\n\t\tconst config = this.agentConfigs[0]!;\n\t\tconst behavior = this.getEffectiveBehavior(0);\n\n\t\tconst stepLabel = config.name;\n\t\tlines.push(this.row(` ${th.fg(\"accent\", \"▶ \" + stepLabel)}`));\n\n\t\tconst template = (this.templates[0] ?? \"\").split(\"\\n\")[0] ?? \"\";\n\t\tconst taskLabel = th.fg(\"dim\", \"task: \");\n\t\tlines.push(this.row(` ${taskLabel}${truncateToWidth(template, innerW - 12)}`));\n\n\t\tconst effectiveModel = this.getEffectiveModel(0);\n\t\tconst override = this.behaviorOverrides.get(0);\n\t\tconst isOverridden = override?.model !== undefined;\n\t\tconst modelValue = isOverridden\n\t\t\t? th.fg(\"warning\", effectiveModel) + th.fg(\"dim\", \" ✎\")\n\t\t\t: effectiveModel;\n\t\tconst modelLabel = th.fg(\"dim\", \"model: \");\n\t\tlines.push(this.row(` ${modelLabel}${truncateToWidth(modelValue, innerW - 13)}`));\n\n\t\tconst writesValue = behavior.output === false\n\t\t\t? th.fg(\"dim\", \"(disabled)\")\n\t\t\t: (behavior.output || th.fg(\"dim\", \"(none)\"));\n\t\tconst writesLabel = th.fg(\"dim\", \"writes: \");\n\t\tlines.push(this.row(` ${writesLabel}${truncateToWidth(writesValue, innerW - 14)}`));\n\n\t\tconst skillsValue = behavior.skills === false\n\t\t\t? th.fg(\"dim\", \"(disabled)\")\n\t\t\t: (behavior.skills?.length ? behavior.skills.join(\", \") : th.fg(\"dim\", \"(none)\"));\n\t\tconst skillsLabel = th.fg(\"dim\", \"skills: \");\n\t\tlines.push(this.row(` ${skillsLabel}${truncateToWidth(skillsValue, innerW - 14)}`));\n\n\t\tlines.push(this.row(this.getShortcutHelpText()));\n\n\t\tthis.appendNotice(lines);\n\t\tlines.push(this.renderFooter(this.getFooterText()));\n\n\t\treturn lines;\n\t}\n\n\tprivate renderParallelMode(): string[] {\n\t\tconst innerW = this.width - 2;\n\t\tconst th = this.theme;\n\t\tconst lines: string[] = [];\n\n\t\tconst headerText = ` Parallel Tasks (${this.agentConfigs.length}) `;\n\t\tlines.push(this.renderHeader(headerText));\n\t\tlines.push(this.row(\"\"));\n\n\t\tfor (let i = 0; i < this.agentConfigs.length; i++) {\n\t\t\tconst config = this.agentConfigs[i]!;\n\t\t\tconst isSelected = i === this.selectedStep;\n\n\t\t\tconst color = isSelected ? \"accent\" : \"dim\";\n\t\t\tconst prefix = isSelected ? \"▶ \" : \" \";\n\t\t\tconst taskPrefix = `Task ${i + 1}: `;\n\t\t\tconst maxNameLen = innerW - 4 - prefix.length - taskPrefix.length;\n\t\t\tconst agentName = config.name.length > maxNameLen\n\t\t\t\t? config.name.slice(0, maxNameLen - 1) + \"…\"\n\t\t\t\t: config.name;\n\t\t\tconst taskLabel = `${taskPrefix}${agentName}`;\n\t\t\tlines.push(this.row(` ${th.fg(color, prefix + taskLabel)}`));\n\n\t\t\tconst template = (this.templates[i] ?? \"\").split(\"\\n\")[0] ?? \"\";\n\t\t\tconst taskTextLabel = th.fg(\"dim\", \"task: \");\n\t\t\tlines.push(this.row(` ${taskTextLabel}${truncateToWidth(template, innerW - 12)}`));\n\n\t\t\tconst effectiveModel = this.getEffectiveModel(i);\n\t\t\tconst override = this.behaviorOverrides.get(i);\n\t\t\tconst isOverridden = override?.model !== undefined;\n\t\t\tconst modelValue = isOverridden\n\t\t\t\t? th.fg(\"warning\", effectiveModel) + th.fg(\"dim\", \" ✎\")\n\t\t\t\t: effectiveModel;\n\t\t\tconst modelLabel = th.fg(\"dim\", \"model: \");\n\t\t\tlines.push(this.row(` ${modelLabel}${truncateToWidth(modelValue, innerW - 13)}`));\n\n\t\t\tconst behavior = this.getEffectiveBehavior(i);\n\t\t\tconst skillsValue = behavior.skills === false\n\t\t\t\t? th.fg(\"dim\", \"(disabled)\")\n\t\t\t\t: (behavior.skills?.length ? behavior.skills.join(\", \") : th.fg(\"dim\", \"(none)\"));\n\t\t\tconst skillsLabel = th.fg(\"dim\", \"skills: \");\n\t\t\tlines.push(this.row(` ${skillsLabel}${truncateToWidth(skillsValue, innerW - 14)}`));\n\n\t\t\tlines.push(this.row(\"\"));\n\t\t}\n\n\t\tif (this.agentConfigs.length > 0) lines.pop();\n\t\tlines.push(this.row(this.getShortcutHelpText()));\n\t\tthis.appendNotice(lines);\n\t\tlines.push(this.renderFooter(this.getFooterText()));\n\n\t\treturn lines;\n\t}\n\n\tprivate renderChainMode(): string[] {\n\t\tconst innerW = this.width - 2;\n\t\tconst th = this.theme;\n\t\tconst lines: string[] = [];\n\n\t\tconst chainLabel = this.agentConfigs.map((c) => c.name).join(\" → \");\n\t\tconst maxHeaderLen = innerW - 4;\n\t\tconst headerText = ` Chain: ${truncateToWidth(chainLabel, maxHeaderLen - 9)} `;\n\t\tlines.push(this.renderHeader(headerText));\n\n\t\tlines.push(this.row(\"\"));\n\n\t\tconst taskPreview = truncateToWidth(this.originalTask, innerW - 16);\n\t\tlines.push(this.row(` Original Task: ${taskPreview}`));\n\t\tconst chainDirPreview = truncateToWidth(this.chainDir ?? \"\", innerW - 12);\n\t\tlines.push(this.row(` Chain Dir: ${th.fg(\"dim\", chainDirPreview)}`));\n\n\t\tconst progressEnabled = this.agentConfigs.some((_, i) => this.getEffectiveBehavior(i).progress);\n\t\tconst progressValue = progressEnabled ? th.fg(\"success\", \"enabled\") : th.fg(\"dim\", \"disabled\");\n\t\tlines.push(this.row(` Progress: ${progressValue} ${th.fg(\"dim\", \"(press [p] to toggle)\")}`));\n\t\tlines.push(this.row(\"\"));\n\n\t\tfor (let i = 0; i < this.agentConfigs.length; i++) {\n\t\t\tconst config = this.agentConfigs[i]!;\n\t\t\tconst isSelected = i === this.selectedStep;\n\t\t\tconst behavior = this.getEffectiveBehavior(i);\n\n\t\t\tconst color = isSelected ? \"accent\" : \"dim\";\n\t\t\tconst prefix = isSelected ? \"▶ \" : \" \";\n\t\t\tconst stepPrefix = `Step ${i + 1}: `;\n\t\t\tconst maxNameLen = innerW - 4 - prefix.length - stepPrefix.length;\n\t\t\tconst agentName = config.name.length > maxNameLen\n\t\t\t\t? config.name.slice(0, maxNameLen - 1) + \"…\"\n\t\t\t\t: config.name;\n\t\t\tconst stepLabel = `${stepPrefix}${agentName}`;\n\t\t\tlines.push(\n\t\t\t\tthis.row(` ${th.fg(color, prefix + stepLabel)}`),\n\t\t\t);\n\n\t\t\tconst template = (this.templates[i] ?? \"\").split(\"\\n\")[0] ?? \"\";\n\t\t\tconst highlighted = template\n\t\t\t\t.replace(/\\{task\\}/g, th.fg(\"success\", \"{task}\"))\n\t\t\t\t.replace(/\\{previous\\}/g, th.fg(\"warning\", \"{previous}\"))\n\t\t\t\t.replace(/\\{chain_dir\\}/g, th.fg(\"accent\", \"{chain_dir}\"));\n\n\t\t\tconst templateLabel = th.fg(\"dim\", \"task: \");\n\t\t\tlines.push(this.row(` ${templateLabel}${truncateToWidth(highlighted, innerW - 12)}`));\n\n\t\t\tconst effectiveModel = this.getEffectiveModel(i);\n\t\t\tconst override = this.behaviorOverrides.get(i);\n\t\t\tconst isOverridden = override?.model !== undefined;\n\t\t\tconst modelValue = isOverridden\n\t\t\t\t? th.fg(\"warning\", effectiveModel) + th.fg(\"dim\", \" ✎\")\n\t\t\t\t: effectiveModel;\n\t\t\tconst modelLabel = th.fg(\"dim\", \"model: \");\n\t\t\tlines.push(this.row(` ${modelLabel}${truncateToWidth(modelValue, innerW - 13)}`));\n\n\t\t\tconst writesValue = behavior.output === false\n\t\t\t\t? th.fg(\"dim\", \"(disabled)\")\n\t\t\t\t: (behavior.output || th.fg(\"dim\", \"(none)\"));\n\t\t\tconst writesLabel = th.fg(\"dim\", \"writes: \");\n\t\t\tlines.push(this.row(` ${writesLabel}${truncateToWidth(writesValue, innerW - 14)}`));\n\n\t\t\tconst readsValue = behavior.reads === false\n\t\t\t\t? th.fg(\"dim\", \"(disabled)\")\n\t\t\t\t: (behavior.reads && behavior.reads.length > 0\n\t\t\t\t\t? behavior.reads.join(\", \")\n\t\t\t\t\t: th.fg(\"dim\", \"(none)\"));\n\t\t\tconst readsLabel = th.fg(\"dim\", \"reads: \");\n\t\t\tlines.push(this.row(` ${readsLabel}${truncateToWidth(readsValue, innerW - 13)}`));\n\n\t\t\tconst skillsValue = behavior.skills === false\n\t\t\t\t? th.fg(\"dim\", \"(disabled)\")\n\t\t\t\t: (behavior.skills?.length ? behavior.skills.join(\", \") : th.fg(\"dim\", \"(none)\"));\n\t\t\tconst skillsLabel = th.fg(\"dim\", \"skills: \");\n\t\t\tlines.push(this.row(` ${skillsLabel}${truncateToWidth(skillsValue, innerW - 14)}`));\n\n\t\t\tif (progressEnabled) {\n\t\t\t\tconst isFirstStep = i === 0;\n\t\t\t\tconst progressAction = isFirstStep \n\t\t\t\t\t? th.fg(\"success\", \"writes progress.md\")\n\t\t\t\t\t: th.fg(\"accent\", \"reads progress.md\");\n\t\t\t\tconst progressLabel = th.fg(\"dim\", \"progress: \");\n\t\t\t\tlines.push(this.row(` ${progressLabel}${progressAction}`));\n\t\t\t}\n\n\t\t\tif (i < this.agentConfigs.length - 1) {\n\t\t\t\tconst nextStepUsePrevious = (this.templates[i + 1] ?? \"\").includes(\"{previous}\");\n\t\t\t\tif (nextStepUsePrevious) {\n\t\t\t\t\tconst indicator = th.fg(\"dim\", \" ↳ response → \") + th.fg(\"warning\", \"{previous}\");\n\t\t\t\t\tlines.push(this.row(indicator));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlines.push(this.row(\"\"));\n\t\t}\n\n\t\tif (this.agentConfigs.length > 0) lines.pop();\n\t\tlines.push(this.row(this.getShortcutHelpText()));\n\t\tthis.appendNotice(lines);\n\t\tlines.push(this.renderFooter(this.getFooterText()));\n\n\t\treturn lines;\n\t}\n\n\tinvalidate(): void {}\n\tdispose(): void {\n\t\tif (this.noticeMessageTimer) clearTimeout(this.noticeMessageTimer);\n\t\tthis.noticeMessageTimer = null;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"chain-clarify.js","sourceRoot":"","sources":["../../../../../../src/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\n/**\n * Chain Clarification TUI Component\n *\n * Shows templates and resolved behaviors for each step in a chain.\n * Supports runtime editing of templates, output paths, reads lists, and progress toggle.\n */\n\nimport type { Theme } from \"@ashx-j/lunr\";\nimport type { Component, TUI } from \"@ashx-j/lunr-tui\";\nimport { matchesKey, visibleWidth, truncateToWidth } from \"@ashx-j/lunr-tui\";\nimport type { ChildRuntimeConfig } from \"../../shared/types.ts\";\nimport type { ResolvedStepBehavior } from \"../../shared/settings.ts\";\nimport { resolveModelCandidate, splitThinkingSuffix } from \"../shared/model-fallback.ts\";\nimport { findModelInfo, getSupportedThinkingLevels, type ModelInfo, type ThinkingLevel } from \"../../shared/model-info.ts\";\n\ntype ClarifyMode = 'single' | 'parallel' | 'chain';\n\nexport interface BehaviorOverride {\n\toutput?: string | false;\n\treads?: string[] | false;\n\tprogress?: boolean;\n\tmodel?: string;\n\tskills?: string[] | false;\n}\n\nexport interface ChainClarifyResult {\n\tconfirmed: boolean;\n\ttemplates: string[];\n\tbehaviorOverrides: (BehaviorOverride | undefined)[];\n\trunInBackground?: boolean;\n}\n\ntype EditMode = \"template\" | \"output\" | \"reads\" | \"model\" | \"thinking\" | \"skills\";\n\n\ninterface TextEditorState {\n\tbuffer: string;\n\tcursor: number;\n\tviewportOffset: number;\n}\n\nfunction createEditorState(initial = \"\"): TextEditorState {\n\treturn { buffer: initial, cursor: 0, viewportOffset: 0 };\n}\n\nfunction wrapText(text: string, width: number): { lines: string[]; starts: number[] } {\n\tif (width <= 0) return { lines: [text], starts: [0] };\n\tif (text.length === 0) return { lines: [\"\"], starts: [0] };\n\n\tconst lines: string[] = [];\n\tconst starts: number[] = [];\n\tlet offset = 0;\n\tconst segments = text.split(\"\\n\");\n\tfor (const [index, segment] of segments.entries()) {\n\t\tif (segment.length === 0) {\n\t\t\tstarts.push(offset);\n\t\t\tlines.push(\"\");\n\t\t} else {\n\t\t\tlet lineStart = 0;\n\t\t\tlet pos = 0;\n\t\t\tlet lineWidth = 0;\n\t\t\twhile (pos < segment.length) {\n\t\t\t\tconst char = String.fromCodePoint(segment.codePointAt(pos)!);\n\t\t\t\tconst charWidth = visibleWidth(char);\n\t\t\t\tif (lineWidth > 0 && lineWidth + charWidth > width) {\n\t\t\t\t\tstarts.push(offset + lineStart);\n\t\t\t\t\tlines.push(segment.slice(lineStart, pos));\n\t\t\t\t\tlineStart = pos;\n\t\t\t\t\tlineWidth = 0;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tpos += char.length;\n\t\t\t\tlineWidth += charWidth;\n\t\t\t}\n\t\t\tstarts.push(offset + lineStart);\n\t\t\tlines.push(segment.slice(lineStart));\n\t\t}\n\t\toffset += segment.length + (index < segments.length - 1 ? 1 : 0);\n\t}\n\tif (!text.endsWith(\"\\n\") && text.length > 0 && visibleWidth(lines[lines.length - 1] ?? \"\") === width) {\n\t\tstarts.push(text.length);\n\t\tlines.push(\"\");\n\t}\n\treturn { lines, starts };\n}\n\nfunction getCursorDisplayPos(cursor: number, starts: number[]): { line: number; col: number } {\n\tfor (let i = starts.length - 1; i >= 0; i--) {\n\t\tif (cursor >= starts[i]!) return { line: i, col: cursor - starts[i]! };\n\t}\n\treturn { line: 0, col: 0 };\n}\n\nfunction ensureCursorVisible(cursorLine: number, viewportHeight: number, currentOffset: number): number {\n\tif (cursorLine < currentOffset) return Math.max(0, cursorLine);\n\tif (cursorLine >= currentOffset + viewportHeight) return Math.max(0, cursorLine - viewportHeight + 1);\n\treturn Math.max(0, currentOffset);\n}\n\nfunction isWordChar(ch: string): boolean {\n\tconst code = ch.charCodeAt(0);\n\treturn (code >= 48 && code <= 57) || (code >= 65 && code <= 90) || (code >= 97 && code <= 122) || code === 95;\n}\n\nfunction wordBackward(buffer: string, cursor: number): number {\n\tlet pos = cursor;\n\twhile (pos > 0 && !isWordChar(buffer[pos - 1]!)) pos--;\n\twhile (pos > 0 && isWordChar(buffer[pos - 1]!)) pos--;\n\treturn pos;\n}\n\nfunction wordForward(buffer: string, cursor: number): number {\n\tlet pos = cursor;\n\twhile (pos < buffer.length && isWordChar(buffer[pos]!)) pos++;\n\twhile (pos < buffer.length && !isWordChar(buffer[pos]!)) pos++;\n\treturn pos;\n}\n\nfunction normalizeInsertText(data: string): string | null {\n\tlet text = data.split(\"\\x1b[200~\").join(\"\").split(\"\\x1b[201~\").join(\"\");\n\ttext = text.replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n\tconst newline = text.indexOf(\"\\n\");\n\tif (newline !== -1) text = text.slice(0, newline);\n\ttext = text.replace(/\\t/g, \" \");\n\tif (text.length === 0) return null;\n\tfor (let i = 0; i < text.length; i++) {\n\t\tif (text.charCodeAt(i) < 32) return null;\n\t}\n\treturn text;\n}\n\nfunction handleEditorInput(state: TextEditorState, data: string, textWidth: number): TextEditorState | null {\n\tif (matchesKey(data, \"escape\") || matchesKey(data, \"ctrl+c\") || matchesKey(data, \"return\")) return null;\n\n\tconst { lines: wrapped, starts } = wrapText(state.buffer, textWidth);\n\tconst cursorPos = getCursorDisplayPos(state.cursor, starts);\n\n\tif (matchesKey(data, \"alt+left\") || matchesKey(data, \"ctrl+left\")) return { ...state, cursor: wordBackward(state.buffer, state.cursor) };\n\tif (matchesKey(data, \"alt+right\") || matchesKey(data, \"ctrl+right\")) return { ...state, cursor: wordForward(state.buffer, state.cursor) };\n\tif (matchesKey(data, \"left\")) return state.cursor > 0 ? { ...state, cursor: state.cursor - 1 } : state;\n\tif (matchesKey(data, \"right\")) return state.cursor < state.buffer.length ? { ...state, cursor: state.cursor + 1 } : state;\n\tif (matchesKey(data, \"up\") && cursorPos.line > 0) {\n\t\tconst targetLine = cursorPos.line - 1;\n\t\treturn { ...state, cursor: starts[targetLine]! + Math.min(cursorPos.col, wrapped[targetLine]?.length ?? 0) };\n\t}\n\tif (matchesKey(data, \"down\") && cursorPos.line < wrapped.length - 1) {\n\t\tconst targetLine = cursorPos.line + 1;\n\t\treturn { ...state, cursor: starts[targetLine]! + Math.min(cursorPos.col, wrapped[targetLine]?.length ?? 0) };\n\t}\n\tif (matchesKey(data, \"home\")) return { ...state, cursor: starts[cursorPos.line]! };\n\tif (matchesKey(data, \"end\")) return { ...state, cursor: starts[cursorPos.line]! + (wrapped[cursorPos.line]?.length ?? 0) };\n\tif (matchesKey(data, \"ctrl+home\")) return { ...state, cursor: 0 };\n\tif (matchesKey(data, \"ctrl+end\")) return { ...state, cursor: state.buffer.length };\n\tif (matchesKey(data, \"alt+backspace\")) {\n\t\tconst target = wordBackward(state.buffer, state.cursor);\n\t\treturn target === state.cursor ? state : { ...state, buffer: state.buffer.slice(0, target) + state.buffer.slice(state.cursor), cursor: target };\n\t}\n\tif (matchesKey(data, \"backspace\")) {\n\t\treturn state.cursor > 0\n\t\t\t? { ...state, buffer: state.buffer.slice(0, state.cursor - 1) + state.buffer.slice(state.cursor), cursor: state.cursor - 1 }\n\t\t\t: state;\n\t}\n\tif (matchesKey(data, \"delete\")) {\n\t\treturn state.cursor < state.buffer.length\n\t\t\t? { ...state, buffer: state.buffer.slice(0, state.cursor) + state.buffer.slice(state.cursor + 1) }\n\t\t\t: state;\n\t}\n\n\tconst insert = normalizeInsertText(data);\n\treturn insert\n\t\t? { ...state, buffer: state.buffer.slice(0, state.cursor) + insert + state.buffer.slice(state.cursor), cursor: state.cursor + insert.length }\n\t\t: null;\n}\n\nfunction renderWithCursor(text: string, cursorPos: number): string {\n\tconst before = text.slice(0, cursorPos);\n\tconst cursorChar = text[cursorPos] ?? \" \";\n\tconst after = text.slice(cursorPos + 1);\n\treturn `${before}\\x1b[7m${cursorChar}\\x1b[27m${after}`;\n}\n\nfunction renderEditor(state: TextEditorState, width: number, viewportHeight: number): string[] {\n\tconst { lines: wrapped, starts } = wrapText(state.buffer, width);\n\tconst cursorPos = getCursorDisplayPos(state.cursor, starts);\n\tconst lines: string[] = [];\n\tfor (let i = 0; i < viewportHeight; i++) {\n\t\tconst lineIdx = state.viewportOffset + i;\n\t\tlet content = lineIdx < wrapped.length ? wrapped[lineIdx] ?? \"\" : \"\";\n\t\tif (lineIdx === cursorPos.line) content = renderWithCursor(content, cursorPos.col);\n\t\tlines.push(content);\n\t}\n\treturn lines;\n}\n\n/**\n * TUI component for chain clarification.\n * Factory signature matches ctx.ui.custom: (tui, theme, kb, done) => Component\n */\nexport class ChainClarifyComponent implements Component {\n\treadonly width = 84;\n\n\tprivate selectedStep = 0;\n\tprivate editingStep: number | null = null;\n\tprivate editMode: EditMode = \"template\";\n\tprivate editState: TextEditorState = createEditorState();\n\n\tprivate readonly EDIT_VIEWPORT_HEIGHT = 12;\n\tprivate behaviorOverrides: Map<number, BehaviorOverride> = new Map();\n\tprivate modelSearchQuery: string = \"\";\n\tprivate modelSelectedIndex: number = 0;\n\tprivate filteredModels: ModelInfo[] = [];\n\tprivate readonly MODEL_SELECTOR_HEIGHT = 10;\n\tprivate thinkingSelectedIndex: number = 0;\n\tprivate skillSearchQuery: string = \"\";\n\tprivate skillSelectedNames: Set<string> = new Set();\n\tprivate skillCursorIndex: number = 0;\n\tprivate filteredSkills: Array<{ name: string; source: string; description?: string }> = [];\n\tprivate noticeMessage: { text: string; type: \"info\" | \"error\" } | null = null;\n\tprivate noticeMessageTimer: ReturnType<typeof setTimeout> | null = null;\n\t/** Run in background (async) mode */\n\tprivate runInBackground = false;\n\tprivate tui: TUI;\n\tprivate theme: Theme;\n\tprivate agentConfigs: ChildRuntimeConfig[];\n\tprivate templates: string[];\n\tprivate originalTask: string;\n\tprivate chainDir: string | undefined;\n\tprivate resolvedBehaviors: ResolvedStepBehavior[];\n\tprivate availableModels: ModelInfo[];\n\tprivate preferredProvider: string | undefined;\n\tprivate availableSkills: Array<{ name: string; source: string; description?: string }>;\n\tprivate done: (result: ChainClarifyResult) => void;\n\tprivate mode: ClarifyMode;\n\n\tconstructor(\n\t\ttui: TUI,\n\t\ttheme: Theme,\n\t\tagentConfigs: ChildRuntimeConfig[],\n\t\ttemplates: string[],\n\t\toriginalTask: string,\n\t\tchainDir: string | undefined,\n\t\tresolvedBehaviors: ResolvedStepBehavior[],\n\t\tavailableModels: ModelInfo[],\n\t\tpreferredProvider: string | undefined,\n\t\tavailableSkills: Array<{ name: string; source: string; description?: string }>,\n\t\tdone: (result: ChainClarifyResult) => void,\n\t\tmode: ClarifyMode = 'chain',\n\t) {\n\t\tthis.tui = tui;\n\t\tthis.theme = theme;\n\t\tthis.agentConfigs = agentConfigs;\n\t\tthis.templates = templates;\n\t\tthis.originalTask = originalTask;\n\t\tthis.chainDir = chainDir;\n\t\tthis.resolvedBehaviors = resolvedBehaviors;\n\t\tthis.availableModels = availableModels;\n\t\tthis.preferredProvider = preferredProvider;\n\t\tthis.availableSkills = availableSkills;\n\t\tthis.done = done;\n\t\tthis.mode = mode;\n\t\tthis.filteredModels = [...availableModels];\n\t\tthis.filteredSkills = [...availableSkills];\n\t}\n\n\t// ─────────────────────────────────────────────────────────────────────────────\n\t// Helper methods for rendering\n\t// ─────────────────────────────────────────────────────────────────────────────\n\n\t/** Pad string to specified visible width */\n\tprivate pad(s: string, len: number): string {\n\t\tconst vis = visibleWidth(s);\n\t\treturn s + \" \".repeat(Math.max(0, len - vis));\n\t}\n\n\t/** Create a row with border characters */\n\tprivate row(content: string): string {\n\t\tconst innerW = this.width - 2;\n\t\treturn this.theme.fg(\"border\", \"│\") + this.pad(content, innerW) + this.theme.fg(\"border\", \"│\");\n\t}\n\n\t/** Render centered header line with border */\n\tprivate renderHeader(text: string): string {\n\t\tconst innerW = this.width - 2;\n\t\tconst padLen = Math.max(0, innerW - visibleWidth(text));\n\t\tconst padLeft = Math.floor(padLen / 2);\n\t\tconst padRight = padLen - padLeft;\n\t\treturn (\n\t\t\tthis.theme.fg(\"border\", \"╭\" + \"─\".repeat(padLeft)) +\n\t\t\tthis.theme.fg(\"accent\", text) +\n\t\t\tthis.theme.fg(\"border\", \"─\".repeat(padRight) + \"╮\")\n\t\t);\n\t}\n\n\t/** Render centered footer line with border */\n\tprivate renderFooter(text: string): string {\n\t\tconst innerW = this.width - 2;\n\t\tconst padLen = Math.max(0, innerW - visibleWidth(text));\n\t\tconst padLeft = Math.floor(padLen / 2);\n\t\tconst padRight = padLen - padLeft;\n\t\treturn (\n\t\t\tthis.theme.fg(\"border\", \"╰\" + \"─\".repeat(padLeft)) +\n\t\t\tthis.theme.fg(\"dim\", text) +\n\t\t\tthis.theme.fg(\"border\", \"─\".repeat(padRight) + \"╯\")\n\t\t);\n\t}\n\n\t/** Exit edit mode and reset state */\n\tprivate exitEditMode(): void {\n\t\tthis.editingStep = null;\n\t\tthis.editState = createEditorState();\n\t\tthis.tui.requestRender();\n\t}\n\n\t// ─────────────────────────────────────────────────────────────────────────────\n\t// Full edit mode methods\n\t// ─────────────────────────────────────────────────────────────────────────────\n\n\t/** Render the full-edit takeover view */\n\tprivate renderFullEditMode(): string[] {\n\t\tconst innerW = this.width - 2;\n\t\tconst textWidth = innerW - 2; // 1 char padding on each side\n\t\tconst lines: string[] = [];\n\n\t\tconst { lines: wrapped, starts } = wrapText(this.editState.buffer, textWidth);\n\t\tconst cursorPos = getCursorDisplayPos(this.editState.cursor, starts);\n\t\tthis.editState = {\n\t\t\t...this.editState,\n\t\t\tviewportOffset: ensureCursorVisible(\n\t\t\t\tcursorPos.line,\n\t\t\t\tthis.EDIT_VIEWPORT_HEIGHT,\n\t\t\t\tthis.editState.viewportOffset,\n\t\t\t),\n\t\t};\n\n\t\t// Header (truncate agent name to prevent overflow)\n\t\tconst fieldName = this.editMode === \"template\" ? \"task\" : this.editMode;\n\t\tconst rawAgentName = this.agentConfigs[this.editingStep!]?.name ?? \"unknown\";\n\t\tconst maxAgentLen = innerW - 30; // Reserve space for \" Editing X (Step/Task N: ) \"\n\t\tconst agentName = rawAgentName.length > maxAgentLen\n\t\t\t? rawAgentName.slice(0, maxAgentLen - 1) + \"…\"\n\t\t\t: rawAgentName;\n\t\t// Use mode-appropriate terminology\n\t\tconst stepLabel = this.mode === 'single' \n\t\t\t? agentName \n\t\t\t: this.mode === 'parallel' \n\t\t\t\t? `Task ${this.editingStep! + 1}: ${agentName}` \n\t\t\t\t: `Step ${this.editingStep! + 1}: ${agentName}`;\n\t\tconst headerText = ` Editing ${fieldName} (${stepLabel}) `;\n\t\tlines.push(this.renderHeader(headerText));\n\t\tlines.push(this.row(\"\"));\n\n\t\tconst editorLines = renderEditor(this.editState, textWidth, this.EDIT_VIEWPORT_HEIGHT);\n\t\tfor (const line of editorLines) {\n\t\t\tlines.push(this.row(` ${line}`));\n\t\t}\n\n\t\tconst linesBelow = wrapped.length - this.editState.viewportOffset - this.EDIT_VIEWPORT_HEIGHT;\n\t\tconst hasMore = linesBelow > 0;\n\t\tconst hasLess = this.editState.viewportOffset > 0;\n\t\tlet scrollInfo = \"\";\n\t\tif (hasLess) scrollInfo += \"↑\";\n\t\tif (hasMore) scrollInfo += `↓ ${linesBelow}+`;\n\n\t\tlines.push(this.row(\"\"));\n\n\t\tconst footerText = scrollInfo\n\t\t\t? ` [Esc] Done • [Ctrl+C] Discard • ${scrollInfo} `\n\t\t\t: \" [Esc] Done • [Ctrl+C] Discard \";\n\t\tlines.push(this.renderFooter(footerText));\n\n\t\treturn lines;\n\t}\n\n\t// ─────────────────────────────────────────────────────────────────────────────\n\t// Behavior helpers\n\t// ─────────────────────────────────────────────────────────────────────────────\n\n\t/** Get effective behavior for a step (with user overrides applied) */\n\tprivate getEffectiveBehavior(stepIndex: number): ResolvedStepBehavior {\n\t\tconst base = this.resolvedBehaviors[stepIndex]!;\n\t\tconst override = this.behaviorOverrides.get(stepIndex);\n\t\tif (!override) return base;\n\n\t\treturn {\n\t\t\toutput: override.output !== undefined ? override.output : base.output,\n\t\t\toutputMode: base.outputMode,\n\t\t\treads: override.reads !== undefined ? override.reads : base.reads,\n\t\t\tprogress: override.progress !== undefined ? override.progress : base.progress,\n\t\t\tskills: override.skills !== undefined ? override.skills : base.skills,\n\t\t\tmodel: override.model !== undefined ? override.model : base.model,\n\t\t};\n\t}\n\n\t/** Get the effective model for a step (override or agent default) */\n\tprivate getEffectiveModel(stepIndex: number): string {\n\t\tconst override = this.behaviorOverrides.get(stepIndex);\n\t\tif (override?.model) return this.resolveModelFullId(override.model);\n\n\t\tconst baseModel = this.resolvedBehaviors[stepIndex]?.model;\n\t\tif (baseModel) return this.resolveModelFullId(baseModel);\n\t\treturn \"default\";\n\t}\n\n\t/** Resolve a model name to its full provider/model format */\n\tprivate resolveModelFullId(modelName: string): string {\n\t\treturn resolveModelCandidate(modelName, this.availableModels, this.preferredProvider) ?? modelName;\n\t}\n\n\t/** Update a behavior override for a step */\n\tprivate updateBehavior(stepIndex: number, field: keyof BehaviorOverride, value: string | boolean | string[] | false): void {\n\t\tconst existing = this.behaviorOverrides.get(stepIndex) ?? {};\n\t\tthis.behaviorOverrides.set(stepIndex, { ...existing, [field]: value });\n\t}\n\n\tprivate showNotice(text: string, type: \"info\" | \"error\"): void {\n\t\tthis.noticeMessage = { text, type };\n\t\tif (this.noticeMessageTimer) clearTimeout(this.noticeMessageTimer);\n\t\tthis.noticeMessageTimer = setTimeout(() => {\n\t\t\tthis.noticeMessage = null;\n\t\t\tthis.noticeMessageTimer = null;\n\t\t\tthis.tui.requestRender();\n\t\t}, 2000);\n\t\tthis.tui.requestRender();\n\t}\n\n\thandleInput(data: string): void {\n\t\tif (this.editingStep !== null) {\n\t\t\tif (this.editMode === \"model\") {\n\t\t\t\tthis.handleModelSelectorInput(data);\n\t\t\t} else if (this.editMode === \"thinking\") {\n\t\t\t\tthis.handleThinkingSelectorInput(data);\n\t\t\t} else if (this.editMode === \"skills\") {\n\t\t\t\tthis.handleSkillSelectorInput(data);\n\t\t\t} else {\n\t\t\t\tthis.handleEditInput(data);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"escape\") || matchesKey(data, \"ctrl+c\")) {\n\t\t\tthis.done({ confirmed: false, templates: [], behaviorOverrides: [] });\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"return\")) {\n\t\t\tconst overrides: (BehaviorOverride | undefined)[] = [];\n\t\t\tfor (let i = 0; i < this.agentConfigs.length; i++) {\n\t\t\t\toverrides.push(this.behaviorOverrides.get(i));\n\t\t\t}\n\t\t\tthis.done({ confirmed: true, templates: this.templates, behaviorOverrides: overrides, runInBackground: this.runInBackground });\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"up\")) {\n\t\t\tthis.selectedStep = Math.max(0, this.selectedStep - 1);\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"down\")) {\n\t\t\tconst maxStep = Math.max(0, this.agentConfigs.length - 1);\n\t\t\tthis.selectedStep = Math.min(maxStep, this.selectedStep + 1);\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (data === \"e\") {\n\t\t\tthis.enterEditMode(\"template\");\n\t\t\treturn;\n\t\t}\n\n\t\tif (data === \"m\") {\n\t\t\tthis.enterModelSelector();\n\t\t\treturn;\n\t\t}\n\n\t\tif (data === \"t\") {\n\t\t\tthis.enterThinkingSelector();\n\t\t\treturn;\n\t\t}\n\n\t\tif (data === \"s\") {\n\t\t\tthis.editingStep = this.selectedStep;\n\t\t\tthis.editMode = \"skills\";\n\t\t\tthis.skillSearchQuery = \"\";\n\t\t\tthis.skillCursorIndex = 0;\n\t\t\tthis.filteredSkills = [...this.availableSkills];\n\t\t\tconst current = this.getEffectiveBehavior(this.selectedStep).skills;\n\t\t\tthis.skillSelectedNames.clear();\n\t\t\tif (current !== false && current.length > 0) {\n\t\t\t\tcurrent.forEach((skillName) => this.skillSelectedNames.add(skillName));\n\t\t\t}\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (data === \"w\" && this.mode !== 'parallel') {\n\t\t\tthis.enterEditMode(\"output\");\n\t\t\treturn;\n\t\t}\n\n\t\tif (data === \"r\" && this.mode === 'chain') {\n\t\t\tthis.enterEditMode(\"reads\");\n\t\t\treturn;\n\t\t}\n\n\t\tif (data === \"p\" && this.mode === 'chain') {\n\t\t\tconst anyEnabled = this.agentConfigs.some((_, i) => this.getEffectiveBehavior(i).progress);\n\t\t\tconst newState = !anyEnabled;\n\t\t\tfor (let i = 0; i < this.agentConfigs.length; i++) {\n\t\t\t\tthis.updateBehavior(i, \"progress\", newState);\n\t\t\t}\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (data === \"b\") {\n\t\t\tthis.runInBackground = !this.runInBackground;\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t}\n\n\tprivate enterEditMode(mode: EditMode): void {\n\t\tthis.editingStep = this.selectedStep;\n\t\tthis.editMode = mode;\n\t\tlet buffer = \"\";\n\n\t\tif (mode === \"template\") {\n\t\t\tconst template = this.templates[this.selectedStep] ?? \"\";\n\t\t\tbuffer = template.split(\"\\n\")[0] ?? \"\";\n\t\t} else if (mode === \"output\") {\n\t\t\tconst behavior = this.getEffectiveBehavior(this.selectedStep);\n\t\t\tbuffer = behavior.output === false ? \"\" : (behavior.output || \"\");\n\t\t} else if (mode === \"reads\") {\n\t\t\tconst behavior = this.getEffectiveBehavior(this.selectedStep);\n\t\t\tbuffer = behavior.reads === false ? \"\" : (behavior.reads?.join(\", \") || \"\");\n\t\t}\n\n\t\tthis.editState = createEditorState(buffer);\n\t\tthis.tui.requestRender();\n\t}\n\n\t/** Enter model selector mode */\n\tprivate enterModelSelector(): void {\n\t\tthis.editingStep = this.selectedStep;\n\t\tthis.editMode = \"model\";\n\t\tthis.modelSearchQuery = \"\";\n\t\tthis.modelSelectedIndex = 0;\n\t\tthis.filteredModels = [...this.availableModels];\n\t\tconst currentModel = splitThinkingSuffix(this.getEffectiveModel(this.selectedStep)).baseModel;\n\t\tconst currentIndex = this.filteredModels.findIndex((m) => m.fullId === currentModel || m.id === currentModel);\n\t\tif (currentIndex >= 0) {\n\t\t\tthis.modelSelectedIndex = currentIndex;\n\t\t}\n\n\t\tthis.tui.requestRender();\n\t}\n\n\t/** Filter models based on search query */\n\tprivate filterModels(): void {\n\t\tconst query = this.modelSearchQuery.toLowerCase();\n\t\tif (!query) {\n\t\t\tthis.filteredModels = [...this.availableModels];\n\t\t} else {\n\t\t\tthis.filteredModels = this.availableModels.filter((m) =>\n\t\t\t\tm.fullId.toLowerCase().includes(query) ||\n\t\t\t\tm.id.toLowerCase().includes(query) ||\n\t\t\t\tm.provider.toLowerCase().includes(query)\n\t\t\t);\n\t\t}\n\t\tthis.modelSelectedIndex = Math.min(this.modelSelectedIndex, Math.max(0, this.filteredModels.length - 1));\n\t}\n\n\tprivate handleModelSelectorInput(data: string): void {\n\t\tif (matchesKey(data, \"escape\") || matchesKey(data, \"ctrl+c\")) {\n\t\t\tthis.exitEditMode();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"return\")) {\n\t\t\tconst selected = this.filteredModels[this.modelSelectedIndex];\n\t\t\tif (selected) {\n\t\t\t\tconst { thinkingSuffix } = splitThinkingSuffix(this.getEffectiveModel(this.editingStep!));\n\t\t\t\tconst requestedLevel = thinkingSuffix.slice(1);\n\t\t\t\tconst selectedModel = findModelInfo(selected.fullId, this.availableModels, this.preferredProvider);\n\t\t\t\tconst suffix = getSupportedThinkingLevels(selectedModel).some((level) => level === requestedLevel) ? thinkingSuffix : \"\";\n\t\t\t\tthis.updateBehavior(this.editingStep!, \"model\", `${selected.fullId}${suffix}`);\n\t\t\t}\n\t\t\tthis.exitEditMode();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"up\")) {\n\t\t\tif (this.filteredModels.length > 0) {\n\t\t\t\tthis.modelSelectedIndex = this.modelSelectedIndex === 0\n\t\t\t\t\t? this.filteredModels.length - 1\n\t\t\t\t\t: this.modelSelectedIndex - 1;\n\t\t\t}\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"down\")) {\n\t\t\tif (this.filteredModels.length > 0) {\n\t\t\t\tthis.modelSelectedIndex = this.modelSelectedIndex === this.filteredModels.length - 1\n\t\t\t\t\t? 0\n\t\t\t\t\t: this.modelSelectedIndex + 1;\n\t\t\t}\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"backspace\")) {\n\t\t\tif (this.modelSearchQuery.length > 0) {\n\t\t\t\tthis.modelSearchQuery = this.modelSearchQuery.slice(0, -1);\n\t\t\t\tthis.filterModels();\n\t\t\t}\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (data.length === 1 && data.charCodeAt(0) >= 32) {\n\t\t\tthis.modelSearchQuery += data;\n\t\t\tthis.filterModels();\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\t}\n\n\tprivate getAvailableThinkingLevels(stepIndex: number): ThinkingLevel[] {\n\t\treturn getSupportedThinkingLevels(findModelInfo(this.getEffectiveModel(stepIndex), this.availableModels, this.preferredProvider));\n\t}\n\n\t/** Enter thinking level selector mode */\n\tprivate enterThinkingSelector(): void {\n\t\tif (!this.getEffectiveBehavior(this.selectedStep).model) {\n\t\t\tthis.showNotice(\"Select a model first\", \"error\");\n\t\t\treturn;\n\t\t}\n\t\tthis.editingStep = this.selectedStep;\n\t\tthis.editMode = \"thinking\";\n\n\t\tconst levels = this.getAvailableThinkingLevels(this.selectedStep);\n\t\tconst { thinkingSuffix } = splitThinkingSuffix(this.getEffectiveModel(this.selectedStep));\n\t\tconst suffix = thinkingSuffix.slice(1);\n\t\tconst levelIdx = levels.findIndex((level) => level === suffix);\n\t\tthis.thinkingSelectedIndex = levelIdx >= 0 ? levelIdx : Math.max(0, levels.indexOf(\"off\"));\n\n\t\tthis.tui.requestRender();\n\t}\n\n\tprivate handleThinkingSelectorInput(data: string): void {\n\t\tif (matchesKey(data, \"escape\") || matchesKey(data, \"ctrl+c\")) {\n\t\t\tthis.exitEditMode();\n\t\t\treturn;\n\t\t}\n\n\t\tconst levels = this.getAvailableThinkingLevels(this.editingStep!);\n\t\tif (levels.length === 0) return;\n\n\t\tif (matchesKey(data, \"return\")) {\n\t\t\tconst selectedLevel = levels[this.thinkingSelectedIndex] ?? \"off\";\n\t\t\tthis.applyThinkingLevel(selectedLevel);\n\t\t\tthis.exitEditMode();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"up\")) {\n\t\t\tthis.thinkingSelectedIndex = this.thinkingSelectedIndex === 0\n\t\t\t\t? levels.length - 1\n\t\t\t\t: this.thinkingSelectedIndex - 1;\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"down\")) {\n\t\t\tthis.thinkingSelectedIndex = this.thinkingSelectedIndex === levels.length - 1\n\t\t\t\t? 0\n\t\t\t\t: this.thinkingSelectedIndex + 1;\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\t}\n\n\t/** Apply thinking level to the current step's model */\n\tprivate applyThinkingLevel(level: ThinkingLevel): void {\n\t\tconst stepIndex = this.editingStep!;\n\t\tconst currentModel = this.getEffectiveBehavior(stepIndex).model;\n\t\tif (!currentModel) return;\n\n\t\tconst { baseModel } = splitThinkingSuffix(currentModel);\n\t\tconst newModel = level === \"off\" ? baseModel : `${baseModel}:${level}`;\n\t\tthis.updateBehavior(stepIndex, \"model\", newModel);\n\t}\n\n\tprivate filterSkills(): void {\n\t\tconst query = this.skillSearchQuery.toLowerCase();\n\t\tif (!query) {\n\t\t\tthis.filteredSkills = [...this.availableSkills];\n\t\t} else {\n\t\t\tthis.filteredSkills = this.availableSkills.filter((s) =>\n\t\t\t\ts.name.toLowerCase().includes(query) ||\n\t\t\t\t(s.description?.toLowerCase().includes(query) ?? false),\n\t\t\t);\n\t\t}\n\t\tthis.skillCursorIndex = Math.min(this.skillCursorIndex, Math.max(0, this.filteredSkills.length - 1));\n\t}\n\n\tprivate handleSkillSelectorInput(data: string): void {\n\t\tif (matchesKey(data, \"escape\") || matchesKey(data, \"ctrl+c\")) {\n\t\t\tthis.exitEditMode();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"return\")) {\n\t\t\tconst selected = [...this.skillSelectedNames];\n\t\t\tthis.updateBehavior(this.editingStep!, \"skills\", selected);\n\t\t\tthis.exitEditMode();\n\t\t\treturn;\n\t\t}\n\n\t\tif (data === \" \") {\n\t\t\tif (this.filteredSkills.length > 0) {\n\t\t\t\tconst skill = this.filteredSkills[this.skillCursorIndex];\n\t\t\t\tif (skill) {\n\t\t\t\t\tif (this.skillSelectedNames.has(skill.name)) {\n\t\t\t\t\t\tthis.skillSelectedNames.delete(skill.name);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.skillSelectedNames.add(skill.name);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"up\")) {\n\t\t\tif (this.filteredSkills.length > 0) {\n\t\t\t\tthis.skillCursorIndex = this.skillCursorIndex === 0\n\t\t\t\t\t? this.filteredSkills.length - 1\n\t\t\t\t\t: this.skillCursorIndex - 1;\n\t\t\t}\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"down\")) {\n\t\t\tif (this.filteredSkills.length > 0) {\n\t\t\t\tthis.skillCursorIndex = this.skillCursorIndex === this.filteredSkills.length - 1\n\t\t\t\t\t? 0\n\t\t\t\t\t: this.skillCursorIndex + 1;\n\t\t\t}\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"backspace\")) {\n\t\t\tif (this.skillSearchQuery.length > 0) {\n\t\t\t\tthis.skillSearchQuery = this.skillSearchQuery.slice(0, -1);\n\t\t\t\tthis.filterSkills();\n\t\t\t}\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (data.length === 1 && data.charCodeAt(0) >= 32) {\n\t\t\tthis.skillSearchQuery += data;\n\t\t\tthis.filterSkills();\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\t}\n\n\tprivate handleEditInput(data: string): void {\n\t\tconst textWidth = this.width - 4; // Must match render: innerW - 2 = (width - 2) - 2\n\t\tif (matchesKey(data, \"shift+up\") || matchesKey(data, \"pageup\")) {\n\t\t\tconst { lines: wrapped, starts } = wrapText(this.editState.buffer, textWidth);\n\t\t\tconst cursorPos = getCursorDisplayPos(this.editState.cursor, starts);\n\t\t\tconst targetLine = Math.max(0, cursorPos.line - this.EDIT_VIEWPORT_HEIGHT);\n\t\t\tconst targetCol = Math.min(cursorPos.col, wrapped[targetLine]?.length ?? 0);\n\t\t\tthis.editState = { ...this.editState, cursor: starts[targetLine] + targetCol };\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"shift+down\") || matchesKey(data, \"pagedown\")) {\n\t\t\tconst { lines: wrapped, starts } = wrapText(this.editState.buffer, textWidth);\n\t\t\tconst cursorPos = getCursorDisplayPos(this.editState.cursor, starts);\n\t\t\tconst targetLine = Math.min(wrapped.length - 1, cursorPos.line + this.EDIT_VIEWPORT_HEIGHT);\n\t\t\tconst targetCol = Math.min(cursorPos.col, wrapped[targetLine]?.length ?? 0);\n\t\t\tthis.editState = { ...this.editState, cursor: starts[targetLine] + targetCol };\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"tab\")) return;\n\n\t\tconst nextState = handleEditorInput(this.editState, data, textWidth);\n\t\tif (nextState) {\n\t\t\tthis.editState = nextState;\n\t\t\tthis.tui.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"escape\")) {\n\t\t\tthis.saveEdit();\n\t\t\tthis.exitEditMode();\n\t\t\treturn;\n\t\t}\n\n\t\tif (matchesKey(data, \"ctrl+c\")) {\n\t\t\tthis.exitEditMode();\n\t\t\treturn;\n\t\t}\n\t}\n\n\tprivate saveEdit(): void {\n\t\tconst stepIndex = this.editingStep!;\n\n\t\tif (this.editMode === \"template\") {\n\t\t\t// For template, preserve other lines if they existed\n\t\t\tconst original = this.templates[stepIndex] ?? \"\";\n\t\t\tconst originalLines = original.split(\"\\n\");\n\t\t\toriginalLines[0] = this.editState.buffer;\n\t\t\tthis.templates[stepIndex] = originalLines.join(\"\\n\");\n\t\t} else if (this.editMode === \"output\") {\n\t\t\t// Capture OLD output before updating (for downstream propagation)\n\t\t\tconst oldBehavior = this.getEffectiveBehavior(stepIndex);\n\t\t\tconst oldOutput = typeof oldBehavior.output === \"string\" ? oldBehavior.output : null;\n\n\t\t\t// Empty string or whitespace means disable output\n\t\t\tconst trimmed = this.editState.buffer.trim();\n\t\t\tconst newOutput = trimmed === \"\" ? false : trimmed;\n\t\t\tthis.updateBehavior(stepIndex, \"output\", newOutput);\n\n\t\t\t// Propagate output filename change to downstream steps' reads\n\t\t\tif (oldOutput && typeof newOutput === \"string\" && oldOutput !== newOutput) {\n\t\t\t\tthis.propagateOutputChange(stepIndex, oldOutput, newOutput);\n\t\t\t}\n\t\t} else if (this.editMode === \"reads\") {\n\t\t\t// Parse comma-separated list, empty means disable reads\n\t\t\tconst trimmed = this.editState.buffer.trim();\n\t\t\tif (trimmed === \"\") {\n\t\t\t\tthis.updateBehavior(stepIndex, \"reads\", false);\n\t\t\t} else {\n\t\t\t\tconst files = trimmed.split(\",\").map(f => f.trim()).filter(f => f !== \"\");\n\t\t\t\tthis.updateBehavior(stepIndex, \"reads\", files.length > 0 ? files : false);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * When a step's output filename changes, update downstream steps that read from it.\n\t * This maintains the chain dependency automatically.\n\t */\n\tprivate propagateOutputChange(changedStepIndex: number, oldOutput: string, newOutput: string): void {\n\t\t// Check all downstream steps (steps that come after the changed step)\n\t\tfor (let i = changedStepIndex + 1; i < this.agentConfigs.length; i++) {\n\t\t\tconst behavior = this.getEffectiveBehavior(i);\n\t\t\t\n\t\t\t// Skip if reads is disabled or empty\n\t\t\tif (behavior.reads === false || !behavior.reads || behavior.reads.length === 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Check if this step reads the old output file\n\t\t\tconst readsArray = behavior.reads;\n\t\t\tconst oldIndex = readsArray.indexOf(oldOutput);\n\t\t\t\n\t\t\tif (oldIndex !== -1) {\n\t\t\t\t// Replace old filename with new filename in reads\n\t\t\t\tconst newReads = [...readsArray];\n\t\t\t\tnewReads[oldIndex] = newOutput;\n\t\t\t\tthis.updateBehavior(i, \"reads\", newReads);\n\t\t\t}\n\t\t}\n\t}\n\n\trender(_width: number): string[] {\n\t\tif (this.editingStep !== null) {\n\t\t\tif (this.editMode === \"model\") {\n\t\t\t\treturn this.renderModelSelector();\n\t\t\t}\n\t\t\tif (this.editMode === \"thinking\") {\n\t\t\t\treturn this.renderThinkingSelector();\n\t\t\t}\n\t\t\tif (this.editMode === \"skills\") {\n\t\t\t\treturn this.renderSkillSelector();\n\t\t\t}\n\t\t\treturn this.renderFullEditMode();\n\t\t}\n\t\t// Mode-based navigation rendering\n\t\tswitch (this.mode) {\n\t\t\tcase 'single': return this.renderSingleMode();\n\t\t\tcase 'parallel': return this.renderParallelMode();\n\t\t\tcase 'chain': return this.renderChainMode();\n\t\t}\n\t}\n\n\t/** Render the model selector view */\n\tprivate renderModelSelector(): string[] {\n\t\tconst th = this.theme;\n\t\tconst lines: string[] = [];\n\n\t\t// Header (mode-aware terminology)\n\t\tconst agentName = this.agentConfigs[this.editingStep!]?.name ?? \"unknown\";\n\t\tconst stepLabel = this.mode === 'single' \n\t\t\t? agentName \n\t\t\t: this.mode === 'parallel' \n\t\t\t\t? `Task ${this.editingStep! + 1}: ${agentName}` \n\t\t\t\t: `Step ${this.editingStep! + 1}: ${agentName}`;\n\t\tconst headerText = ` Select Model (${stepLabel}) `;\n\t\tlines.push(this.renderHeader(headerText));\n\t\tlines.push(this.row(\"\"));\n\n\t\tconst searchPrefix = th.fg(\"dim\", \"Search: \");\n\t\tconst cursor = \"\\x1b[7m \\x1b[27m\"; // Reverse video space for cursor\n\t\tconst searchDisplay = this.modelSearchQuery + cursor;\n\t\tlines.push(this.row(` ${searchPrefix}${searchDisplay}`));\n\t\tlines.push(this.row(\"\"));\n\n\t\tconst currentModel = this.getEffectiveModel(this.editingStep!);\n\t\tconst currentModelBase = splitThinkingSuffix(currentModel).baseModel;\n\t\tconst currentLabel = th.fg(\"dim\", \"Current: \");\n\t\tlines.push(this.row(` ${currentLabel}${th.fg(\"warning\", currentModel)}`));\n\t\tlines.push(this.row(\"\"));\n\n\t\tif (this.filteredModels.length === 0) {\n\t\t\tlines.push(this.row(` ${th.fg(\"dim\", \"No matching models\")}`));\n\t\t} else {\n\t\t\tconst maxVisible = this.MODEL_SELECTOR_HEIGHT;\n\t\t\tlet startIdx = 0;\n\n\t\t\tif (this.filteredModels.length > maxVisible) {\n\t\t\t\tstartIdx = Math.max(0, this.modelSelectedIndex - Math.floor(maxVisible / 2));\n\t\t\t\tstartIdx = Math.min(startIdx, this.filteredModels.length - maxVisible);\n\t\t\t}\n\n\t\t\tconst endIdx = Math.min(startIdx + maxVisible, this.filteredModels.length);\n\n\t\t\tif (startIdx > 0) {\n\t\t\t\tlines.push(this.row(` ${th.fg(\"dim\", ` ↑ ${startIdx} more`)}`));\n\t\t\t}\n\n\t\t\tfor (let i = startIdx; i < endIdx; i++) {\n\t\t\t\tconst model = this.filteredModels[i]!;\n\t\t\t\tconst isSelected = i === this.modelSelectedIndex;\n\t\t\t\tconst isCurrent = model.fullId === currentModelBase || model.id === currentModelBase;\n\t\t\t\tconst prefix = isSelected ? th.fg(\"accent\", \"→ \") : \" \";\n\t\t\t\tconst modelText = isSelected ? th.fg(\"accent\", model.id) : model.id;\n\t\t\t\tconst providerBadge = th.fg(\"dim\", ` [${model.provider}]`);\n\t\t\t\tconst currentBadge = isCurrent ? th.fg(\"success\", \" current\") : \"\";\n\n\t\t\t\tlines.push(this.row(` ${prefix}${modelText}${providerBadge}${currentBadge}`));\n\t\t\t}\n\n\t\t\tconst remaining = this.filteredModels.length - endIdx;\n\t\t\tif (remaining > 0) {\n\t\t\t\tlines.push(this.row(` ${th.fg(\"dim\", ` ↓ ${remaining} more`)}`));\n\t\t\t}\n\t\t}\n\n\t\tconst contentLines = lines.length;\n\t\tconst targetHeight = 18;\n\t\tfor (let i = contentLines; i < targetHeight; i++) {\n\t\t\tlines.push(this.row(\"\"));\n\t\t}\n\n\t\tconst footerText = \" [Enter] Select • [Esc] Cancel • Type to search \";\n\t\tlines.push(this.renderFooter(footerText));\n\n\t\treturn lines;\n\t}\n\n\t/** Render the thinking level selector view */\n\tprivate renderThinkingSelector(): string[] {\n\t\tconst th = this.theme;\n\t\tconst lines: string[] = [];\n\n\t\tconst agentName = this.agentConfigs[this.editingStep!]?.name ?? \"unknown\";\n\t\tconst stepLabel = this.mode === 'single' \n\t\t\t? agentName \n\t\t\t: this.mode === 'parallel' \n\t\t\t\t? `Task ${this.editingStep! + 1}: ${agentName}` \n\t\t\t\t: `Step ${this.editingStep! + 1}: ${agentName}`;\n\t\tconst headerText = ` Thinking Level (${stepLabel}) `;\n\t\tlines.push(this.renderHeader(headerText));\n\t\tlines.push(this.row(\"\"));\n\n\t\tconst currentModel = this.getEffectiveModel(this.editingStep!);\n\t\tconst currentLabel = th.fg(\"dim\", \"Model: \");\n\t\tlines.push(this.row(` ${currentLabel}${th.fg(\"accent\", currentModel)}`));\n\t\tlines.push(this.row(\"\"));\n\n\t\tlines.push(this.row(` ${th.fg(\"dim\", \"Select thinking level (extended thinking budget):\")}`));\n\t\tlines.push(this.row(\"\"));\n\n\t\tconst levelDescriptions: Record<ThinkingLevel, string> = {\n\t\t\t\"off\": \"No extended thinking\",\n\t\t\t\"minimal\": \"Brief reasoning\",\n\t\t\t\"low\": \"Light reasoning\",\n\t\t\t\"medium\": \"Moderate reasoning\",\n\t\t\t\"high\": \"Deep reasoning\",\n\t\t\t\"xhigh\": \"Maximum reasoning (ultrathink)\",\n\t\t\t\"max\": \"Maximum available reasoning\",\n\t\t};\n\n\t\tconst levels = this.getAvailableThinkingLevels(this.editingStep!);\n\t\tif (levels.length === 0) {\n\t\t\tlines.push(this.row(` ${th.fg(\"dim\", \"No supported thinking levels\")}`));\n\t\t} else {\n\t\t\tfor (let i = 0; i < levels.length; i++) {\n\t\t\t\tconst level = levels[i]!;\n\t\t\t\tconst isSelected = i === this.thinkingSelectedIndex;\n\t\t\t\tconst prefix = isSelected ? th.fg(\"accent\", \"→ \") : \" \";\n\t\t\t\tconst levelText = isSelected ? th.fg(\"accent\", level) : level;\n\t\t\t\tconst desc = th.fg(\"dim\", ` - ${levelDescriptions[level]}`);\n\t\t\t\tlines.push(this.row(` ${prefix}${levelText}${desc}`));\n\t\t\t}\n\t\t}\n\n\t\tconst contentLines = lines.length;\n\t\tconst targetHeight = 16;\n\t\tfor (let i = contentLines; i < targetHeight; i++) {\n\t\t\tlines.push(this.row(\"\"));\n\t\t}\n\n\t\tconst footerText = levels.length === 0\n\t\t\t? \" [Esc] Cancel \"\n\t\t\t: \" [Enter] Select • [Esc] Cancel • ↑↓ Navigate \";\n\t\tlines.push(this.renderFooter(footerText));\n\n\t\treturn lines;\n\t}\n\n\tprivate renderSkillSelector(): string[] {\n\t\tconst innerW = this.width - 2;\n\t\tconst th = this.theme;\n\t\tconst lines: string[] = [];\n\n\t\tconst agentName = this.agentConfigs[this.editingStep!]?.name ?? \"unknown\";\n\t\tconst stepLabel = this.mode === 'single'\n\t\t\t? agentName\n\t\t\t: this.mode === 'parallel'\n\t\t\t\t? `Task ${this.editingStep! + 1}: ${agentName}`\n\t\t\t\t: `Step ${this.editingStep! + 1}: ${agentName}`;\n\t\tlines.push(this.renderHeader(` Select Skills (${stepLabel}) `));\n\t\tlines.push(this.row(\"\"));\n\n\t\tconst cursor = \"\\x1b[7m \\x1b[27m\";\n\t\tlines.push(this.row(` ${th.fg(\"dim\", \"Search: \")}${this.skillSearchQuery}${cursor}`));\n\t\tlines.push(this.row(\"\"));\n\n\t\tconst selected = [...this.skillSelectedNames].join(\", \") || th.fg(\"dim\", \"(none)\");\n\t\tlines.push(this.row(` ${th.fg(\"dim\", \"Selected: \")}${truncateToWidth(selected, innerW - 12)}`));\n\t\tlines.push(this.row(\"\"));\n\n\t\tconst selectorHeight = 10;\n\t\tif (this.filteredSkills.length === 0) {\n\t\t\tlines.push(this.row(` ${th.fg(\"dim\", \"No matching skills\")}`));\n\t\t} else {\n\t\t\tlet startIdx = 0;\n\t\t\tif (this.filteredSkills.length > selectorHeight) {\n\t\t\t\tstartIdx = Math.max(0, this.skillCursorIndex - Math.floor(selectorHeight / 2));\n\t\t\t\tstartIdx = Math.min(startIdx, this.filteredSkills.length - selectorHeight);\n\t\t\t}\n\t\t\tconst endIdx = Math.min(startIdx + selectorHeight, this.filteredSkills.length);\n\n\t\t\tif (startIdx > 0) {\n\t\t\t\tlines.push(this.row(` ${th.fg(\"dim\", ` ↑ ${startIdx} more`)}`));\n\t\t\t}\n\n\t\t\tfor (let i = startIdx; i < endIdx; i++) {\n\t\t\t\tconst skill = this.filteredSkills[i]!;\n\t\t\t\tconst isCursor = i === this.skillCursorIndex;\n\t\t\t\tconst isSelected = this.skillSelectedNames.has(skill.name);\n\n\t\t\t\tconst prefix = isCursor ? th.fg(\"accent\", \"→ \") : \" \";\n\t\t\t\tconst checkbox = isSelected ? th.fg(\"success\", \"[x]\") : \"[ ]\";\n\t\t\t\tconst nameText = isCursor ? th.fg(\"accent\", skill.name) : skill.name;\n\t\t\t\tconst sourceBadge = th.fg(\"dim\", ` [${skill.source}]`);\n\t\t\t\tconst desc = skill.description\n\t\t\t\t\t? th.fg(\"dim\", ` - ${truncateToWidth(skill.description, 25)}`)\n\t\t\t\t\t: \"\";\n\n\t\t\t\tlines.push(this.row(` ${prefix}${checkbox} ${nameText}${sourceBadge}${desc}`));\n\t\t\t}\n\n\t\t\tconst remaining = this.filteredSkills.length - endIdx;\n\t\t\tif (remaining > 0) {\n\t\t\t\tlines.push(this.row(` ${th.fg(\"dim\", ` ↓ ${remaining} more`)}`));\n\t\t\t}\n\t\t}\n\n\t\tconst targetHeight = 18;\n\t\tfor (let i = lines.length; i < targetHeight; i++) {\n\t\t\tlines.push(this.row(\"\"));\n\t\t}\n\n\t\tlines.push(this.renderFooter(\" [Enter] Confirm • [Space] Toggle • [Esc] Cancel \"));\n\t\treturn lines;\n\t}\n\n\tprivate getShortcutHelpText(): string {\n\t\tconst th = this.theme;\n\t\tconst shortcut = (key: string, label: string) =>\n\t\t\tth.fg(\"accent\", `[${key}]`) + th.fg(\"dim\", label);\n\t\tconst backgroundState = this.runInBackground ? \"ON\" : \"OFF\";\n\t\tconst background = shortcut(\"b\", `Background:${backgroundState}`);\n\n\t\tswitch (this.mode) {\n\t\t\tcase 'single':\n\t\t\t\treturn ` ${shortcut(\"e\", \"Task\")} ${shortcut(\"m\", \"Model\")} ${shortcut(\"t\", \"Think\")} ${shortcut(\"w\", \"Output\")} ${shortcut(\"s\", \"Skills\")} ${background}`;\n\t\t\tcase 'parallel':\n\t\t\t\treturn ` ${shortcut(\"e\", \"Task\")} ${shortcut(\"m\", \"Model\")} ${shortcut(\"t\", \"Think\")} ${shortcut(\"s\", \"Skills\")} ${background}`;\n\t\t\tcase 'chain':\n\t\t\t\treturn ` ${shortcut(\"e\", \"Task\")} ${shortcut(\"m\", \"Model\")} ${shortcut(\"t\", \"Think\")} ${shortcut(\"w\", \"Output\")} ${shortcut(\"r\", \"Reads\")} ${shortcut(\"p\", \"Prog\")} ${shortcut(\"s\", \"Skills\")} ${background}`;\n\t\t}\n\t}\n\n\tprivate getFooterText(): string {\n\t\treturn this.mode === 'single'\n\t\t\t? \" [Enter] Run • [Esc] Cancel \"\n\t\t\t: \" [Enter] Run • [Esc] Cancel • [↑↓] Navigate \";\n\t}\n\n\tprivate appendNotice(lines: string[]): void {\n\t\tif (!this.noticeMessage) return;\n\t\tconst color = this.noticeMessage.type === \"error\" ? \"error\" : \"success\";\n\t\tlines.push(this.row(` ${this.theme.fg(color, this.noticeMessage.text)}`));\n\t}\n\n\tprivate renderSingleMode(): string[] {\n\t\tconst innerW = this.width - 2;\n\t\tconst th = this.theme;\n\t\tconst lines: string[] = [];\n\n\t\tconst agentName = this.agentConfigs[0]?.name ?? \"unknown\";\n\t\tconst maxHeaderLen = innerW - 4;\n\t\tconst headerText = ` Agent: ${truncateToWidth(agentName, maxHeaderLen - 9)} `;\n\t\tlines.push(this.renderHeader(headerText));\n\t\tlines.push(this.row(\"\"));\n\n\t\tconst config = this.agentConfigs[0]!;\n\t\tconst behavior = this.getEffectiveBehavior(0);\n\n\t\tconst stepLabel = config.name;\n\t\tlines.push(this.row(` ${th.fg(\"accent\", \"▶ \" + stepLabel)}`));\n\n\t\tconst template = (this.templates[0] ?? \"\").split(\"\\n\")[0] ?? \"\";\n\t\tconst taskLabel = th.fg(\"dim\", \"task: \");\n\t\tlines.push(this.row(` ${taskLabel}${truncateToWidth(template, innerW - 12)}`));\n\n\t\tconst effectiveModel = this.getEffectiveModel(0);\n\t\tconst override = this.behaviorOverrides.get(0);\n\t\tconst isOverridden = override?.model !== undefined;\n\t\tconst modelValue = isOverridden\n\t\t\t? th.fg(\"warning\", effectiveModel) + th.fg(\"dim\", \" ✎\")\n\t\t\t: effectiveModel;\n\t\tconst modelLabel = th.fg(\"dim\", \"model: \");\n\t\tlines.push(this.row(` ${modelLabel}${truncateToWidth(modelValue, innerW - 13)}`));\n\n\t\tconst writesValue = behavior.output === false\n\t\t\t? th.fg(\"dim\", \"(disabled)\")\n\t\t\t: (behavior.output || th.fg(\"dim\", \"(none)\"));\n\t\tconst writesLabel = th.fg(\"dim\", \"writes: \");\n\t\tlines.push(this.row(` ${writesLabel}${truncateToWidth(writesValue, innerW - 14)}`));\n\n\t\tconst skillsValue = behavior.skills === false\n\t\t\t? th.fg(\"dim\", \"(disabled)\")\n\t\t\t: (behavior.skills?.length ? behavior.skills.join(\", \") : th.fg(\"dim\", \"(none)\"));\n\t\tconst skillsLabel = th.fg(\"dim\", \"skills: \");\n\t\tlines.push(this.row(` ${skillsLabel}${truncateToWidth(skillsValue, innerW - 14)}`));\n\n\t\tlines.push(this.row(this.getShortcutHelpText()));\n\n\t\tthis.appendNotice(lines);\n\t\tlines.push(this.renderFooter(this.getFooterText()));\n\n\t\treturn lines;\n\t}\n\n\tprivate renderParallelMode(): string[] {\n\t\tconst innerW = this.width - 2;\n\t\tconst th = this.theme;\n\t\tconst lines: string[] = [];\n\n\t\tconst headerText = ` Parallel Tasks (${this.agentConfigs.length}) `;\n\t\tlines.push(this.renderHeader(headerText));\n\t\tlines.push(this.row(\"\"));\n\n\t\tfor (let i = 0; i < this.agentConfigs.length; i++) {\n\t\t\tconst config = this.agentConfigs[i]!;\n\t\t\tconst isSelected = i === this.selectedStep;\n\n\t\t\tconst color = isSelected ? \"accent\" : \"dim\";\n\t\t\tconst prefix = isSelected ? \"▶ \" : \" \";\n\t\t\tconst taskPrefix = `Task ${i + 1}: `;\n\t\t\tconst maxNameLen = innerW - 4 - prefix.length - taskPrefix.length;\n\t\t\tconst agentName = config.name.length > maxNameLen\n\t\t\t\t? config.name.slice(0, maxNameLen - 1) + \"…\"\n\t\t\t\t: config.name;\n\t\t\tconst taskLabel = `${taskPrefix}${agentName}`;\n\t\t\tlines.push(this.row(` ${th.fg(color, prefix + taskLabel)}`));\n\n\t\t\tconst template = (this.templates[i] ?? \"\").split(\"\\n\")[0] ?? \"\";\n\t\t\tconst taskTextLabel = th.fg(\"dim\", \"task: \");\n\t\t\tlines.push(this.row(` ${taskTextLabel}${truncateToWidth(template, innerW - 12)}`));\n\n\t\t\tconst effectiveModel = this.getEffectiveModel(i);\n\t\t\tconst override = this.behaviorOverrides.get(i);\n\t\t\tconst isOverridden = override?.model !== undefined;\n\t\t\tconst modelValue = isOverridden\n\t\t\t\t? th.fg(\"warning\", effectiveModel) + th.fg(\"dim\", \" ✎\")\n\t\t\t\t: effectiveModel;\n\t\t\tconst modelLabel = th.fg(\"dim\", \"model: \");\n\t\t\tlines.push(this.row(` ${modelLabel}${truncateToWidth(modelValue, innerW - 13)}`));\n\n\t\t\tconst behavior = this.getEffectiveBehavior(i);\n\t\t\tconst skillsValue = behavior.skills === false\n\t\t\t\t? th.fg(\"dim\", \"(disabled)\")\n\t\t\t\t: (behavior.skills?.length ? behavior.skills.join(\", \") : th.fg(\"dim\", \"(none)\"));\n\t\t\tconst skillsLabel = th.fg(\"dim\", \"skills: \");\n\t\t\tlines.push(this.row(` ${skillsLabel}${truncateToWidth(skillsValue, innerW - 14)}`));\n\n\t\t\tlines.push(this.row(\"\"));\n\t\t}\n\n\t\tif (this.agentConfigs.length > 0) lines.pop();\n\t\tlines.push(this.row(this.getShortcutHelpText()));\n\t\tthis.appendNotice(lines);\n\t\tlines.push(this.renderFooter(this.getFooterText()));\n\n\t\treturn lines;\n\t}\n\n\tprivate renderChainMode(): string[] {\n\t\tconst innerW = this.width - 2;\n\t\tconst th = this.theme;\n\t\tconst lines: string[] = [];\n\n\t\tconst chainLabel = this.agentConfigs.map((c) => c.name).join(\" → \");\n\t\tconst maxHeaderLen = innerW - 4;\n\t\tconst headerText = ` Chain: ${truncateToWidth(chainLabel, maxHeaderLen - 9)} `;\n\t\tlines.push(this.renderHeader(headerText));\n\n\t\tlines.push(this.row(\"\"));\n\n\t\tconst taskPreview = truncateToWidth(this.originalTask, innerW - 16);\n\t\tlines.push(this.row(` Original Task: ${taskPreview}`));\n\t\tconst chainDirPreview = truncateToWidth(this.chainDir ?? \"\", innerW - 12);\n\t\tlines.push(this.row(` Chain Dir: ${th.fg(\"dim\", chainDirPreview)}`));\n\n\t\tconst progressEnabled = this.agentConfigs.some((_, i) => this.getEffectiveBehavior(i).progress);\n\t\tconst progressValue = progressEnabled ? th.fg(\"success\", \"enabled\") : th.fg(\"dim\", \"disabled\");\n\t\tlines.push(this.row(` Progress: ${progressValue} ${th.fg(\"dim\", \"(press [p] to toggle)\")}`));\n\t\tlines.push(this.row(\"\"));\n\n\t\tfor (let i = 0; i < this.agentConfigs.length; i++) {\n\t\t\tconst config = this.agentConfigs[i]!;\n\t\t\tconst isSelected = i === this.selectedStep;\n\t\t\tconst behavior = this.getEffectiveBehavior(i);\n\n\t\t\tconst color = isSelected ? \"accent\" : \"dim\";\n\t\t\tconst prefix = isSelected ? \"▶ \" : \" \";\n\t\t\tconst stepPrefix = `Step ${i + 1}: `;\n\t\t\tconst maxNameLen = innerW - 4 - prefix.length - stepPrefix.length;\n\t\t\tconst agentName = config.name.length > maxNameLen\n\t\t\t\t? config.name.slice(0, maxNameLen - 1) + \"…\"\n\t\t\t\t: config.name;\n\t\t\tconst stepLabel = `${stepPrefix}${agentName}`;\n\t\t\tlines.push(\n\t\t\t\tthis.row(` ${th.fg(color, prefix + stepLabel)}`),\n\t\t\t);\n\n\t\t\tconst template = (this.templates[i] ?? \"\").split(\"\\n\")[0] ?? \"\";\n\t\t\tconst highlighted = template\n\t\t\t\t.replace(/\\{task\\}/g, th.fg(\"success\", \"{task}\"))\n\t\t\t\t.replace(/\\{previous\\}/g, th.fg(\"warning\", \"{previous}\"))\n\t\t\t\t.replace(/\\{chain_dir\\}/g, th.fg(\"accent\", \"{chain_dir}\"));\n\n\t\t\tconst templateLabel = th.fg(\"dim\", \"task: \");\n\t\t\tlines.push(this.row(` ${templateLabel}${truncateToWidth(highlighted, innerW - 12)}`));\n\n\t\t\tconst effectiveModel = this.getEffectiveModel(i);\n\t\t\tconst override = this.behaviorOverrides.get(i);\n\t\t\tconst isOverridden = override?.model !== undefined;\n\t\t\tconst modelValue = isOverridden\n\t\t\t\t? th.fg(\"warning\", effectiveModel) + th.fg(\"dim\", \" ✎\")\n\t\t\t\t: effectiveModel;\n\t\t\tconst modelLabel = th.fg(\"dim\", \"model: \");\n\t\t\tlines.push(this.row(` ${modelLabel}${truncateToWidth(modelValue, innerW - 13)}`));\n\n\t\t\tconst writesValue = behavior.output === false\n\t\t\t\t? th.fg(\"dim\", \"(disabled)\")\n\t\t\t\t: (behavior.output || th.fg(\"dim\", \"(none)\"));\n\t\t\tconst writesLabel = th.fg(\"dim\", \"writes: \");\n\t\t\tlines.push(this.row(` ${writesLabel}${truncateToWidth(writesValue, innerW - 14)}`));\n\n\t\t\tconst readsValue = behavior.reads === false\n\t\t\t\t? th.fg(\"dim\", \"(disabled)\")\n\t\t\t\t: (behavior.reads && behavior.reads.length > 0\n\t\t\t\t\t? behavior.reads.join(\", \")\n\t\t\t\t\t: th.fg(\"dim\", \"(none)\"));\n\t\t\tconst readsLabel = th.fg(\"dim\", \"reads: \");\n\t\t\tlines.push(this.row(` ${readsLabel}${truncateToWidth(readsValue, innerW - 13)}`));\n\n\t\t\tconst skillsValue = behavior.skills === false\n\t\t\t\t? th.fg(\"dim\", \"(disabled)\")\n\t\t\t\t: (behavior.skills?.length ? behavior.skills.join(\", \") : th.fg(\"dim\", \"(none)\"));\n\t\t\tconst skillsLabel = th.fg(\"dim\", \"skills: \");\n\t\t\tlines.push(this.row(` ${skillsLabel}${truncateToWidth(skillsValue, innerW - 14)}`));\n\n\t\t\tif (progressEnabled) {\n\t\t\t\tconst isFirstStep = i === 0;\n\t\t\t\tconst progressAction = isFirstStep \n\t\t\t\t\t? th.fg(\"success\", \"writes progress.md\")\n\t\t\t\t\t: th.fg(\"accent\", \"reads progress.md\");\n\t\t\t\tconst progressLabel = th.fg(\"dim\", \"progress: \");\n\t\t\t\tlines.push(this.row(` ${progressLabel}${progressAction}`));\n\t\t\t}\n\n\t\t\tif (i < this.agentConfigs.length - 1) {\n\t\t\t\tconst nextStepUsePrevious = (this.templates[i + 1] ?? \"\").includes(\"{previous}\");\n\t\t\t\tif (nextStepUsePrevious) {\n\t\t\t\t\tconst indicator = th.fg(\"dim\", \" ↳ response → \") + th.fg(\"warning\", \"{previous}\");\n\t\t\t\t\tlines.push(this.row(indicator));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlines.push(this.row(\"\"));\n\t\t}\n\n\t\tif (this.agentConfigs.length > 0) lines.pop();\n\t\tlines.push(this.row(this.getShortcutHelpText()));\n\t\tthis.appendNotice(lines);\n\t\tlines.push(this.renderFooter(this.getFooterText()));\n\n\t\treturn lines;\n\t}\n\n\tinvalidate(): void {}\n\tdispose(): void {\n\t\tif (this.noticeMessageTimer) clearTimeout(this.noticeMessageTimer);\n\t\tthis.noticeMessageTimer = null;\n\t}\n}\n"]}
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { AgentToolResult } from "@ashx-j/lunr-agent";
|
|
5
5
|
import type { ExtensionContext } from "@ashx-j/lunr";
|
|
6
|
-
import type {
|
|
6
|
+
import type { ChildRuntimeConfig } from "../../shared/types.ts";
|
|
7
7
|
import { type ChainStep } from "../../shared/settings.ts";
|
|
8
8
|
import { type ActivityState, type ArtifactConfig, type ControlEvent, type Details, type IntercomEventBus, type NestedRouteInfo, type ResolvedControlConfig, type ResolvedTurnBudget, type ResolvedToolBudget, type SingleResult, type ToolBudgetConfig } from "../../shared/types.ts";
|
|
9
9
|
interface ChainExecutionParams {
|
|
10
10
|
chain: ChainStep[];
|
|
11
11
|
task?: string;
|
|
12
|
-
agents:
|
|
12
|
+
agents: ChildRuntimeConfig[];
|
|
13
13
|
ctx: ExtensionContext;
|
|
14
14
|
intercomEvents?: IntercomEventBus;
|
|
15
15
|
signal?: AbortSignal;
|
|
@@ -19,7 +19,7 @@ interface ChainExecutionParams {
|
|
|
19
19
|
sessionDirForIndex: (idx?: number) => string | undefined;
|
|
20
20
|
sessionFileForIndex?: (idx?: number) => string | undefined;
|
|
21
21
|
sessionFileForTask?: (agentName: string, idx?: number, modelOverride?: string) => string | undefined;
|
|
22
|
-
thinkingOverrideForTask?: (agentName: string, idx?: number, modelOverride?: string) =>
|
|
22
|
+
thinkingOverrideForTask?: (agentName: string, idx?: number, modelOverride?: string) => ChildRuntimeConfig["thinking"] | undefined;
|
|
23
23
|
artifactsDir: string;
|
|
24
24
|
artifactConfig: ArtifactConfig;
|
|
25
25
|
includeProgress?: boolean;
|
|
@@ -32,6 +32,7 @@ interface ChainExecutionParams {
|
|
|
32
32
|
foregroundControl?: {
|
|
33
33
|
updatedAt: number;
|
|
34
34
|
currentAgent?: string;
|
|
35
|
+
currentChildId?: string;
|
|
35
36
|
currentIndex?: number;
|
|
36
37
|
currentActivityState?: ActivityState;
|
|
37
38
|
lastActivityAt?: number;
|