@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":"settings.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/shared/settings.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\n/**\n * Chain behavior, template resolution, and directory management\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { AgentConfig } from \"../agents/agents.ts\";\nimport { normalizeSkillInput } from \"../agents/skills.ts\";\nimport { CHAIN_RUNS_DIR, type AcceptanceInput, type JsonSchemaObject, type OutputMode, type ToolBudgetConfig } from \"./types.ts\";\nconst CHAIN_DIR_MAX_AGE_MS = 24 * 60 * 60 * 1000; // 24 hours\nconst INITIAL_PROGRESS_CONTENT = \"# Progress\\n\\n## Status\\nIn Progress\\n\\n## Tasks\\n\\n## Files Changed\\n\\n## Notes\\n\";\n\n// =============================================================================\n// Behavior Resolution Types\n// =============================================================================\n\nexport interface ResolvedStepBehavior {\n\toutput: string | false;\n\toutputMode: OutputMode;\n\treads: string[] | false;\n\tprogress: boolean;\n\tskills: string[] | false;\n\tmodel?: string;\n}\n\nexport interface StepOverrides {\n\toutput?: string | false;\n\toutputMode?: OutputMode;\n\treads?: string[] | false;\n\tprogress?: boolean;\n\tskills?: string[] | false;\n\tmodel?: string;\n}\n\nfunction normalizeOutputOverride(output: string | false | undefined): string | false | undefined {\n\treturn output === \"false\" ? false : output;\n}\n\n// =============================================================================\n// Chain Step Types\n// =============================================================================\n\n/** Sequential step: single agent execution */\nexport interface SequentialStep {\n\tagent: string;\n\ttask?: string;\n\tphase?: string;\n\tlabel?: string;\n\tas?: string;\n\toutputSchema?: JsonSchemaObject;\n\tcwd?: string;\n\toutput?: string | false;\n\toutputMode?: OutputMode;\n\treads?: string[] | false;\n\tprogress?: boolean;\n\tskill?: string | string[] | false;\n\tmodel?: string;\n\ttoolBudget?: ToolBudgetConfig;\n\tacceptance?: AcceptanceInput;\n}\n\n/** Parallel task item within a parallel step */\nexport interface ParallelTaskItem {\n\tagent: string;\n\ttask?: string;\n\tphase?: string;\n\tlabel?: string;\n\tas?: string;\n\toutputSchema?: JsonSchemaObject;\n\tcwd?: string;\n\tcount?: number;\n\toutput?: string | false;\n\toutputMode?: OutputMode;\n\treads?: string[] | false;\n\tprogress?: boolean;\n\tskill?: string | string[] | false;\n\tmodel?: string;\n\ttoolBudget?: ToolBudgetConfig;\n\tacceptance?: AcceptanceInput;\n}\n\nexport interface DynamicExpandSpec {\n\tfrom: {\n\t\toutput: string;\n\t\tpath: string;\n\t};\n\titem?: string;\n\tkey?: string;\n\tmaxItems?: number;\n\tonEmpty?: \"skip\" | \"fail\";\n}\n\nexport type DynamicParallelTemplate = Omit<ParallelTaskItem, \"as\" | \"count\">;\n\nexport interface DynamicCollectSpec {\n\tas: string;\n\toutputSchema?: JsonSchemaObject;\n}\n\nexport interface DynamicParallelStep {\n\texpand: DynamicExpandSpec;\n\tparallel: DynamicParallelTemplate;\n\tcollect: DynamicCollectSpec;\n\tconcurrency?: number;\n\tfailFast?: boolean;\n\tphase?: string;\n\tlabel?: string;\n\tacceptance?: AcceptanceInput;\n}\n\n/** Parallel step: multiple agents running concurrently */\nexport interface ParallelStep {\n\tparallel: ParallelTaskItem[];\n\tconcurrency?: number;\n\tfailFast?: boolean;\n\tworktree?: boolean;\n\tcwd?: string;\n}\n\n/** Union type for chain steps */\nexport type ChainStep = SequentialStep | ParallelStep | DynamicParallelStep;\n\n// =============================================================================\n// Type Guards\n// =============================================================================\n\nexport function isParallelStep(step: ChainStep): step is ParallelStep {\n\treturn \"parallel\" in step && Array.isArray((step as ParallelStep).parallel);\n}\n\nexport function isDynamicParallelStep(step: ChainStep): step is DynamicParallelStep {\n\treturn \"expand\" in step && \"collect\" in step && \"parallel\" in step && !Array.isArray((step as { parallel?: unknown }).parallel);\n}\n\n/** Get all agent names in a step (single for sequential, multiple for parallel) */\nexport function getStepAgents(step: ChainStep): string[] {\n\tif (isParallelStep(step)) {\n\t\treturn step.parallel.map((t) => t.agent);\n\t}\n\tif (isDynamicParallelStep(step)) {\n\t\treturn [step.parallel.agent];\n\t}\n\treturn [step.agent];\n}\n\n// =============================================================================\n// Chain Directory Management\n// =============================================================================\n\nexport function createChainDir(runId: string, baseDir?: string): string {\n\tconst chainDir = path.join(baseDir ? path.resolve(baseDir) : CHAIN_RUNS_DIR, runId);\n\tfs.mkdirSync(chainDir, { recursive: true });\n\treturn chainDir;\n}\n\nexport function removeChainDir(chainDir: string): void {\n\ttry {\n\t\tfs.rmSync(chainDir, { recursive: true });\n\t} catch {\n\t\t// Chain cleanup is best-effort. Runs can already have cleaned their temp dir.\n\t}\n}\n\nexport function cleanupOldChainDirs(): void {\n\tif (!fs.existsSync(CHAIN_RUNS_DIR)) return;\n\tconst now = Date.now();\n\tlet dirs: string[];\n\ttry {\n\t\tdirs = fs.readdirSync(CHAIN_RUNS_DIR);\n\t} catch {\n\t\t// Startup cleanup is best-effort. If the scoped temp root is unreadable,\n\t\t// skip cleanup instead of failing extension startup.\n\t\treturn;\n\t}\n\n\tfor (const dir of dirs) {\n\t\ttry {\n\t\t\tconst dirPath = path.join(CHAIN_RUNS_DIR, dir);\n\t\t\tconst stat = fs.statSync(dirPath);\n\t\t\tif (stat.isDirectory() && now - stat.mtimeMs > CHAIN_DIR_MAX_AGE_MS) {\n\t\t\t\tfs.rmSync(dirPath, { recursive: true });\n\t\t\t}\n\t\t} catch {\n\t\t\t// Skip directories that can't be processed; continue with others\n\t\t}\n\t}\n}\n\n// =============================================================================\n// Template Resolution\n// =============================================================================\n\n/** Resolved templates for a chain - string for sequential, string[] for parallel */\nexport type ResolvedTemplates = (string | string[])[];\n\n/**\n * Resolve templates for a chain with parallel step support.\n * Returns string for sequential steps, string[] for parallel steps.\n */\nexport function resolveChainTemplates(\n\tsteps: ChainStep[],\n): ResolvedTemplates {\n\treturn steps.map((step, i) => {\n\t\tif (isParallelStep(step)) {\n\t\t\t// Parallel step: resolve each task's template\n\t\t\treturn step.parallel.map((task) => {\n\t\t\t\tif (task.task) return task.task;\n\t\t\t\t// Default for parallel tasks is {previous}\n\t\t\t\treturn \"{previous}\";\n\t\t\t});\n\t\t}\n\t\tif (isDynamicParallelStep(step)) {\n\t\t\treturn step.parallel.task ?? \"{previous}\";\n\t\t}\n\t\t// Sequential step: existing logic\n\t\tconst seq = step as SequentialStep;\n\t\tif (seq.task) return seq.task;\n\t\t// Default: first step uses {task}, others use {previous}\n\t\treturn i === 0 ? \"{task}\" : \"{previous}\";\n\t});\n}\n\n// =============================================================================\n// Behavior Resolution\n// =============================================================================\n\n/**\n * Resolve effective chain behavior per step.\n * Priority: step override > agent frontmatter > false (disabled)\n */\nexport function resolveStepBehavior(\n\tagentConfig: AgentConfig,\n\tstepOverrides: StepOverrides,\n\tchainSkills?: string[],\n): ResolvedStepBehavior {\n\t// Output: step override > frontmatter > false (no output)\n\tconst stepOutput = normalizeOutputOverride(stepOverrides.output);\n\tconst output =\n\t\tstepOutput !== undefined\n\t\t\t? stepOutput\n\t\t\t: normalizeOutputOverride(agentConfig.output) ?? false;\n\n\t// Reads: step override > frontmatter defaultReads > false (no reads)\n\tconst reads =\n\t\tstepOverrides.reads !== undefined\n\t\t\t? stepOverrides.reads\n\t\t\t: agentConfig.defaultReads ?? false;\n\n\t// Progress: step override > frontmatter defaultProgress > false\n\tconst progress =\n\t\tstepOverrides.progress !== undefined\n\t\t\t? stepOverrides.progress\n\t\t\t: agentConfig.defaultProgress ?? false;\n\n\tlet skills: string[] | false;\n\tif (stepOverrides.skills === false) {\n\t\tskills = false;\n\t} else if (stepOverrides.skills !== undefined) {\n\t\tskills = [...stepOverrides.skills];\n\t\tif (chainSkills && chainSkills.length > 0) {\n\t\t\tskills = [...new Set([...skills, ...chainSkills])];\n\t\t}\n\t} else {\n\t\tskills = agentConfig.skills ? [...agentConfig.skills] : [];\n\t\tif (chainSkills && chainSkills.length > 0) {\n\t\t\tskills = [...new Set([...skills, ...chainSkills])];\n\t\t}\n\t}\n\n\tconst outputMode = stepOverrides.outputMode ?? \"inline\";\n\tconst model = stepOverrides.model ?? agentConfig.model;\n\treturn { output, outputMode, reads, progress, skills, model };\n}\n\nexport function resolveTaskTextForFileUpdatePolicy(task: string | undefined, originalTask?: string): string | undefined {\n\tif (!task) return originalTask;\n\treturn originalTask ? task.replaceAll(\"{task}\", originalTask) : task;\n}\n\nexport function taskDisallowsFileUpdates(task: string | undefined): boolean {\n\tif (!task) return false;\n\treturn /\\breview[- ]only\\b/i.test(task)\n\t\t|| /\\bread[- ]only\\s+(?:review|audit|inspection|pass)\\b/i.test(task)\n\t\t|| /\\b(?:no|without)\\s+(?:file\\s+)?edits?\\b/i.test(task)\n\t\t|| /\\b(?:do not|don't|must not)\\s+(?:edit|modify|write|touch)\\b/i.test(task)\n\t\t|| /\\bleave\\s+files?\\s+unchanged\\b/i.test(task);\n}\n\nexport function suppressProgressForReadOnlyTask(behavior: ResolvedStepBehavior, task: string | undefined, originalTask?: string): ResolvedStepBehavior {\n\tconst policyTask = resolveTaskTextForFileUpdatePolicy(task, originalTask);\n\treturn behavior.progress && taskDisallowsFileUpdates(policyTask) ? { ...behavior, progress: false } : behavior;\n}\n\n// =============================================================================\n// Chain Instruction Injection\n// =============================================================================\n\n/**\n * Resolve a file path: absolute paths pass through, relative paths get chainDir prepended.\n */\nfunction resolveChainPath(filePath: string, chainDir: string): string {\n\treturn path.isAbsolute(filePath) ? filePath : path.join(chainDir, filePath);\n}\n\n/**\n * Build chain instructions from resolved behavior.\n * These are appended to the task to tell the agent what to read/write.\n */\nexport function writeInitialProgressFile(progressDir: string): void {\n\tfs.mkdirSync(progressDir, { recursive: true });\n\tfs.writeFileSync(path.join(progressDir, \"progress.md\"), INITIAL_PROGRESS_CONTENT);\n}\n\nexport function buildChainInstructions(\n\tbehavior: ResolvedStepBehavior,\n\tchainDir: string,\n\tisFirstProgressAgent: boolean,\n\tpreviousSummary?: string,\n): { prefix: string; suffix: string } {\n\tconst prefixParts: string[] = [];\n\tconst suffixParts: string[] = [];\n\n\t// READS - prepend to override any hardcoded filenames in task text\n\tif (behavior.reads && behavior.reads.length > 0) {\n\t\tconst files = behavior.reads.map((f) => resolveChainPath(f, chainDir));\n\t\tprefixParts.push(`[Read from: ${files.join(\", \")}]`);\n\t}\n\n\t// OUTPUT - prepend so agent knows where to write\n\tif (behavior.output) {\n\t\tconst outputPath = resolveChainPath(behavior.output, chainDir);\n\t\tprefixParts.push(`[Write to: ${outputPath}]`);\n\t}\n\n\t// Progress instructions in suffix (less critical)\n\tif (behavior.progress) {\n\t\tconst progressPath = path.join(chainDir, \"progress.md\");\n\t\tif (isFirstProgressAgent) {\n\t\t\tsuffixParts.push(`Create and maintain progress at: ${progressPath}`);\n\t\t} else {\n\t\t\tsuffixParts.push(`Update progress at: ${progressPath}`);\n\t\t}\n\t}\n\n\t// Include previous step's summary in suffix if available\n\tif (previousSummary && previousSummary.trim()) {\n\t\tsuffixParts.push(`Previous step output:\\n${previousSummary.trim()}`);\n\t}\n\n\tconst prefix = prefixParts.length > 0 \n\t\t? prefixParts.join(\"\\n\") + \"\\n\\n\"\n\t\t: \"\";\n\t\n\tconst suffix = suffixParts.length > 0\n\t\t? \"\\n\\n---\\n\" + suffixParts.join(\"\\n\")\n\t\t: \"\";\n\n\treturn { prefix, suffix };\n}\n\n// =============================================================================\n// Parallel Step Support\n// =============================================================================\n\n/**\n * Resolve behaviors for all tasks in a parallel step.\n * Creates namespaced output paths to avoid collisions.\n */\nexport function resolveParallelBehaviors(\n\ttasks: ParallelTaskItem[],\n\tagentConfigs: AgentConfig[],\n\tstepIndex: number,\n\tchainSkills?: string[],\n): ResolvedStepBehavior[] {\n\treturn tasks.map((task, taskIndex) => {\n\t\tconst config = agentConfigs.find((a) => a.name === task.agent);\n\t\tif (!config) {\n\t\t\tthrow new Error(`Unknown agent: ${task.agent}`);\n\t\t}\n\n\t\t// Build subdirectory path for this parallel task\n\t\tconst subdir = path.join(`parallel-${stepIndex}`, `${taskIndex}-${task.agent}`);\n\n\t\t// Output: task override > agent default (namespaced) > false\n\t\t// Absolute paths pass through unchanged; relative paths get namespaced under subdir\n\t\tlet output: string | false = false;\n\t\tconst taskOutput = normalizeOutputOverride(task.output);\n\t\tconst configOutput = normalizeOutputOverride(config.output);\n\t\tif (taskOutput !== undefined) {\n\t\t\tif (taskOutput === false) {\n\t\t\t\toutput = false;\n\t\t\t} else if (path.isAbsolute(taskOutput)) {\n\t\t\t\toutput = taskOutput; // Absolute path: use as-is\n\t\t\t} else {\n\t\t\t\toutput = path.join(subdir, taskOutput); // Relative: namespace under subdir\n\t\t\t}\n\t\t} else if (configOutput) {\n\t\t\t// Agent defaults are always relative, so namespace them\n\t\t\toutput = path.join(subdir, configOutput);\n\t\t}\n\n\t\t// Reads: task override > agent default > false\n\t\tconst reads =\n\t\t\ttask.reads !== undefined ? task.reads : config.defaultReads ?? false;\n\n\t\t// Progress: task override > agent default > false\n\t\tconst progress =\n\t\t\ttask.progress !== undefined\n\t\t\t\t? task.progress\n\t\t\t\t: config.defaultProgress ?? false;\n\n\t\tconst taskSkillInput = normalizeSkillInput(task.skill);\n\t\tlet skills: string[] | false;\n\t\tif (taskSkillInput === false) {\n\t\t\tskills = false;\n\t\t} else if (taskSkillInput !== undefined) {\n\t\t\tskills = [...taskSkillInput];\n\t\t\tif (chainSkills && chainSkills.length > 0) {\n\t\t\t\tskills = [...new Set([...skills, ...chainSkills])];\n\t\t\t}\n\t\t} else {\n\t\t\tskills = config.skills ? [...config.skills] : [];\n\t\t\tif (chainSkills && chainSkills.length > 0) {\n\t\t\t\tskills = [...new Set([...skills, ...chainSkills])];\n\t\t\t}\n\t\t}\n\n\t\tconst outputMode = task.outputMode ?? \"inline\";\n\t\tconst model = task.model ?? config.model;\n\t\treturn { output, outputMode, reads, progress, skills, model };\n\t});\n}\n\n/**\n * Create subdirectories for parallel step outputs\n */\nexport function createParallelDirs(\n\tchainDir: string,\n\tstepIndex: number,\n\ttaskCount: number,\n\tagentNames: string[],\n): void {\n\tfor (let i = 0; i < taskCount; i++) {\n\t\tconst subdir = path.join(chainDir, `parallel-${stepIndex}`, `${i}-${agentNames[i]}`);\n\t\tfs.mkdirSync(subdir, { recursive: true });\n\t}\n}\n\nexport type { ParallelTaskResult } from \"../runs/shared/parallel-utils.ts\";\nexport { aggregateParallelOutputs } from \"../runs/shared/parallel-utils.ts\";\n"]}
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/shared/settings.ts"],"names":[],"mappings":"AACA;;GAEG;AAKH,OAAO,EAAkB,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAQjI,MAAM,WAAW,oBAAoB;IACpC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACxB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAUD,sDAAsD;AACtD,MAAM,WAAW,cAAc;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACxB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;IACtC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,UAAU,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED,gDAAgD;AAChD,MAAM,WAAW,gBAAgB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACxB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;IACtC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,UAAU,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACb,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC;AAE7E,MAAM,WAAW,kBAAkB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,CAAC,EAAE,gBAAgB,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IACnC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,uBAAuB,CAAC;IAClC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED,0DAA0D;AAC1D,MAAM,WAAW,YAAY;IAC5B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED,iCAAiC;AACjC,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,YAAY,GAAG,mBAAmB,CAAC;AAM5E,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,IAAI,YAAY,CAEpE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,IAAI,mBAAmB,CAElF;AAED,+DAA+D;AAC/D,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,EAAE,CAQvD;AAMD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAItE;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMrD;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAuB1C;AAMD,oFAAoF;AACpF,MAAM,MAAM,iBAAiB,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC;AAEtD;;;GAGG;AACH,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,SAAS,EAAE,GAChB,iBAAiB,CAmBnB;AAMD;;;GAGG;AACH,wBAAgB,mBAAmB,CAClC,aAAa,EAAE,aAAa,EAC5B,WAAW,CAAC,EAAE,MAAM,EAAE,GACpB,oBAAoB,CAqBtB;AAED,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGtH;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAO1E;AAED,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAGrJ;AAaD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAGlE;AAED,wBAAgB,sBAAsB,CACrC,QAAQ,EAAE,oBAAoB,EAC9B,QAAQ,EAAE,MAAM,EAChB,oBAAoB,EAAE,OAAO,EAC7B,eAAe,CAAC,EAAE,MAAM,GACtB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAwCpC;AAMD;;;GAGG;AACH,wBAAgB,wBAAwB,CACvC,KAAK,EAAE,gBAAgB,EAAE,EACzB,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,EAAE,GACpB,oBAAoB,EAAE,CAkCxB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CACjC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAAE,GAClB,IAAI,CAKN;AAED,YAAY,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC","sourcesContent":["// @ts-nocheck\n/**\n * Chain behavior, template resolution, and directory management\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { normalizeSkillInput } from \"../agents/skills.ts\";\nimport { CHAIN_RUNS_DIR, type AcceptanceInput, type JsonSchemaObject, type OutputMode, type ToolBudgetConfig } from \"./types.ts\";\nconst CHAIN_DIR_MAX_AGE_MS = 24 * 60 * 60 * 1000; // 24 hours\nconst INITIAL_PROGRESS_CONTENT = \"# Progress\\n\\n## Status\\nIn Progress\\n\\n## Tasks\\n\\n## Files Changed\\n\\n## Notes\\n\";\n\n// =============================================================================\n// Behavior Resolution Types\n// =============================================================================\n\nexport interface ResolvedStepBehavior {\n\toutput: string | false;\n\toutputMode: OutputMode;\n\treads: string[] | false;\n\tprogress: boolean;\n\tskills: string[] | false;\n\tmodel?: string;\n}\n\nexport interface StepOverrides {\n\toutput?: string | false;\n\toutputMode?: OutputMode;\n\treads?: string[] | false;\n\tprogress?: boolean;\n\tskills?: string[] | false;\n\tmodel?: string;\n}\n\nfunction normalizeOutputOverride(output: string | false | undefined): string | false | undefined {\n\treturn output === \"false\" ? false : output;\n}\n\n// =============================================================================\n// Chain Step Types\n// =============================================================================\n\n/** Sequential step: single generic child execution */\nexport interface SequentialStep {\n\tagent?: string;\n\ttask?: string;\n\tdescription?: string;\n\tpermissions?: \"full\" | \"read-only\";\n\tphase?: string;\n\tlabel?: string;\n\tas?: string;\n\toutputSchema?: JsonSchemaObject;\n\tcwd?: string;\n\toutput?: string | false;\n\toutputMode?: OutputMode;\n\treads?: string[] | false;\n\tprogress?: boolean;\n\tskill?: string | string[] | false;\n\tmodel?: string;\n\ttier?: \"light\" | \"standard\" | \"heavy\";\n\ttoolBudget?: ToolBudgetConfig;\n\tacceptance?: AcceptanceInput;\n}\n\n/** Parallel task item within a parallel step */\nexport interface ParallelTaskItem {\n\tagent?: string;\n\ttask?: string;\n\tdescription?: string;\n\tpermissions?: \"full\" | \"read-only\";\n\tphase?: string;\n\tlabel?: string;\n\tas?: string;\n\toutputSchema?: JsonSchemaObject;\n\tcwd?: string;\n\tcount?: number;\n\toutput?: string | false;\n\toutputMode?: OutputMode;\n\treads?: string[] | false;\n\tprogress?: boolean;\n\tskill?: string | string[] | false;\n\tmodel?: string;\n\ttier?: \"light\" | \"standard\" | \"heavy\";\n\ttoolBudget?: ToolBudgetConfig;\n\tacceptance?: AcceptanceInput;\n}\n\nexport interface DynamicExpandSpec {\n\tfrom: {\n\t\toutput: string;\n\t\tpath: string;\n\t};\n\titem?: string;\n\tkey?: string;\n\tmaxItems?: number;\n\tonEmpty?: \"skip\" | \"fail\";\n}\n\nexport type DynamicParallelTemplate = Omit<ParallelTaskItem, \"as\" | \"count\">;\n\nexport interface DynamicCollectSpec {\n\tas: string;\n\toutputSchema?: JsonSchemaObject;\n}\n\nexport interface DynamicParallelStep {\n\texpand: DynamicExpandSpec;\n\tparallel: DynamicParallelTemplate;\n\tcollect: DynamicCollectSpec;\n\tconcurrency?: number;\n\tfailFast?: boolean;\n\tphase?: string;\n\tlabel?: string;\n\tacceptance?: AcceptanceInput;\n}\n\n/** Parallel step: multiple agents running concurrently */\nexport interface ParallelStep {\n\tparallel: ParallelTaskItem[];\n\tconcurrency?: number;\n\tfailFast?: boolean;\n\tworktree?: boolean;\n\tcwd?: string;\n}\n\n/** Union type for chain steps */\nexport type ChainStep = SequentialStep | ParallelStep | DynamicParallelStep;\n\n// =============================================================================\n// Type Guards\n// =============================================================================\n\nexport function isParallelStep(step: ChainStep): step is ParallelStep {\n\treturn \"parallel\" in step && Array.isArray((step as ParallelStep).parallel);\n}\n\nexport function isDynamicParallelStep(step: ChainStep): step is DynamicParallelStep {\n\treturn \"expand\" in step && \"collect\" in step && \"parallel\" in step && !Array.isArray((step as { parallel?: unknown }).parallel);\n}\n\n/** Get display labels (description) for children in a step. */\nexport function getStepAgents(step: ChainStep): string[] {\n\tif (isParallelStep(step)) {\n\t\treturn step.parallel.map((t) => t.description || t.label || t.agent || \"child\");\n\t}\n\tif (isDynamicParallelStep(step)) {\n\t\treturn [step.parallel.description || step.parallel.label || step.parallel.agent || \"child\"];\n\t}\n\treturn [step.description || step.label || step.agent || \"child\"];\n}\n\n// =============================================================================\n// Chain Directory Management\n// =============================================================================\n\nexport function createChainDir(runId: string, baseDir?: string): string {\n\tconst chainDir = path.join(baseDir ? path.resolve(baseDir) : CHAIN_RUNS_DIR, runId);\n\tfs.mkdirSync(chainDir, { recursive: true });\n\treturn chainDir;\n}\n\nexport function removeChainDir(chainDir: string): void {\n\ttry {\n\t\tfs.rmSync(chainDir, { recursive: true });\n\t} catch {\n\t\t// Chain cleanup is best-effort. Runs can already have cleaned their temp dir.\n\t}\n}\n\nexport function cleanupOldChainDirs(): void {\n\tif (!fs.existsSync(CHAIN_RUNS_DIR)) return;\n\tconst now = Date.now();\n\tlet dirs: string[];\n\ttry {\n\t\tdirs = fs.readdirSync(CHAIN_RUNS_DIR);\n\t} catch {\n\t\t// Startup cleanup is best-effort. If the scoped temp root is unreadable,\n\t\t// skip cleanup instead of failing extension startup.\n\t\treturn;\n\t}\n\n\tfor (const dir of dirs) {\n\t\ttry {\n\t\t\tconst dirPath = path.join(CHAIN_RUNS_DIR, dir);\n\t\t\tconst stat = fs.statSync(dirPath);\n\t\t\tif (stat.isDirectory() && now - stat.mtimeMs > CHAIN_DIR_MAX_AGE_MS) {\n\t\t\t\tfs.rmSync(dirPath, { recursive: true });\n\t\t\t}\n\t\t} catch {\n\t\t\t// Skip directories that can't be processed; continue with others\n\t\t}\n\t}\n}\n\n// =============================================================================\n// Template Resolution\n// =============================================================================\n\n/** Resolved templates for a chain - string for sequential, string[] for parallel */\nexport type ResolvedTemplates = (string | string[])[];\n\n/**\n * Resolve templates for a chain with parallel step support.\n * Returns string for sequential steps, string[] for parallel steps.\n */\nexport function resolveChainTemplates(\n\tsteps: ChainStep[],\n): ResolvedTemplates {\n\treturn steps.map((step, i) => {\n\t\tif (isParallelStep(step)) {\n\t\t\t// Parallel step: resolve each task's template\n\t\t\treturn step.parallel.map((task) => {\n\t\t\t\tif (task.task) return task.task;\n\t\t\t\t// Default for parallel tasks is {previous}\n\t\t\t\treturn \"{previous}\";\n\t\t\t});\n\t\t}\n\t\tif (isDynamicParallelStep(step)) {\n\t\t\treturn step.parallel.task ?? \"{previous}\";\n\t\t}\n\t\t// Sequential step: existing logic\n\t\tconst seq = step as SequentialStep;\n\t\tif (seq.task) return seq.task;\n\t\t// Default: first step uses {task}, others use {previous}\n\t\treturn i === 0 ? \"{task}\" : \"{previous}\";\n\t});\n}\n\n// =============================================================================\n// Behavior Resolution\n// =============================================================================\n\n/**\n * Resolve effective chain behavior per step.\n * Priority: step override > false (disabled). Children have no named-agent defaults.\n */\nexport function resolveStepBehavior(\n\tstepOverrides: StepOverrides,\n\tchainSkills?: string[],\n): ResolvedStepBehavior {\n\tconst stepOutput = normalizeOutputOverride(stepOverrides.output);\n\tconst output = stepOutput !== undefined ? stepOutput : false;\n\tconst reads = stepOverrides.reads !== undefined ? stepOverrides.reads : false;\n\tconst progress = stepOverrides.progress !== undefined ? stepOverrides.progress : false;\n\n\tlet skills: string[] | false;\n\tif (stepOverrides.skills === false) {\n\t\tskills = false;\n\t} else if (stepOverrides.skills !== undefined) {\n\t\tskills = [...stepOverrides.skills];\n\t\tif (chainSkills && chainSkills.length > 0) {\n\t\t\tskills = [...new Set([...skills, ...chainSkills])];\n\t\t}\n\t} else {\n\t\tskills = chainSkills && chainSkills.length > 0 ? [...chainSkills] : [];\n\t}\n\n\tconst outputMode = stepOverrides.outputMode ?? \"inline\";\n\tconst model = stepOverrides.model;\n\treturn { output, outputMode, reads, progress, skills, model };\n}\n\nexport function resolveTaskTextForFileUpdatePolicy(task: string | undefined, originalTask?: string): string | undefined {\n\tif (!task) return originalTask;\n\treturn originalTask ? task.replaceAll(\"{task}\", originalTask) : task;\n}\n\nexport function taskDisallowsFileUpdates(task: string | undefined): boolean {\n\tif (!task) return false;\n\treturn /\\breview[- ]only\\b/i.test(task)\n\t\t|| /\\bread[- ]only\\s+(?:review|audit|inspection|pass)\\b/i.test(task)\n\t\t|| /\\b(?:no|without)\\s+(?:file\\s+)?edits?\\b/i.test(task)\n\t\t|| /\\b(?:do not|don't|must not)\\s+(?:edit|modify|write|touch)\\b/i.test(task)\n\t\t|| /\\bleave\\s+files?\\s+unchanged\\b/i.test(task);\n}\n\nexport function suppressProgressForReadOnlyTask(behavior: ResolvedStepBehavior, task: string | undefined, originalTask?: string): ResolvedStepBehavior {\n\tconst policyTask = resolveTaskTextForFileUpdatePolicy(task, originalTask);\n\treturn behavior.progress && taskDisallowsFileUpdates(policyTask) ? { ...behavior, progress: false } : behavior;\n}\n\n// =============================================================================\n// Chain Instruction Injection\n// =============================================================================\n\n/**\n * Resolve a file path: absolute paths pass through, relative paths get chainDir prepended.\n */\nfunction resolveChainPath(filePath: string, chainDir: string): string {\n\treturn path.isAbsolute(filePath) ? filePath : path.join(chainDir, filePath);\n}\n\n/**\n * Build chain instructions from resolved behavior.\n * These are appended to the task to tell the agent what to read/write.\n */\nexport function writeInitialProgressFile(progressDir: string): void {\n\tfs.mkdirSync(progressDir, { recursive: true });\n\tfs.writeFileSync(path.join(progressDir, \"progress.md\"), INITIAL_PROGRESS_CONTENT);\n}\n\nexport function buildChainInstructions(\n\tbehavior: ResolvedStepBehavior,\n\tchainDir: string,\n\tisFirstProgressAgent: boolean,\n\tpreviousSummary?: string,\n): { prefix: string; suffix: string } {\n\tconst prefixParts: string[] = [];\n\tconst suffixParts: string[] = [];\n\n\t// READS - prepend to override any hardcoded filenames in task text\n\tif (behavior.reads && behavior.reads.length > 0) {\n\t\tconst files = behavior.reads.map((f) => resolveChainPath(f, chainDir));\n\t\tprefixParts.push(`[Read from: ${files.join(\", \")}]`);\n\t}\n\n\t// OUTPUT - prepend so agent knows where to write\n\tif (behavior.output) {\n\t\tconst outputPath = resolveChainPath(behavior.output, chainDir);\n\t\tprefixParts.push(`[Write to: ${outputPath}]`);\n\t}\n\n\t// Progress instructions in suffix (less critical)\n\tif (behavior.progress) {\n\t\tconst progressPath = path.join(chainDir, \"progress.md\");\n\t\tif (isFirstProgressAgent) {\n\t\t\tsuffixParts.push(`Create and maintain progress at: ${progressPath}`);\n\t\t} else {\n\t\t\tsuffixParts.push(`Update progress at: ${progressPath}`);\n\t\t}\n\t}\n\n\t// Include previous step's summary in suffix if available\n\tif (previousSummary && previousSummary.trim()) {\n\t\tsuffixParts.push(`Previous step output:\\n${previousSummary.trim()}`);\n\t}\n\n\tconst prefix = prefixParts.length > 0 \n\t\t? prefixParts.join(\"\\n\") + \"\\n\\n\"\n\t\t: \"\";\n\t\n\tconst suffix = suffixParts.length > 0\n\t\t? \"\\n\\n---\\n\" + suffixParts.join(\"\\n\")\n\t\t: \"\";\n\n\treturn { prefix, suffix };\n}\n\n// =============================================================================\n// Parallel Step Support\n// =============================================================================\n\n/**\n * Resolve behaviors for all tasks in a parallel step.\n * Creates namespaced output paths to avoid collisions.\n */\nexport function resolveParallelBehaviors(\n\ttasks: ParallelTaskItem[],\n\tstepIndex: number,\n\tchainSkills?: string[],\n): ResolvedStepBehavior[] {\n\treturn tasks.map((task, taskIndex) => {\n\t\tconst subdir = path.join(`parallel-${stepIndex}`, String(taskIndex));\n\t\tlet output: string | false = false;\n\t\tconst taskOutput = normalizeOutputOverride(task.output);\n\t\tif (taskOutput !== undefined) {\n\t\t\tif (taskOutput === false) {\n\t\t\t\toutput = false;\n\t\t\t} else if (path.isAbsolute(taskOutput)) {\n\t\t\t\toutput = taskOutput;\n\t\t\t} else {\n\t\t\t\toutput = path.join(subdir, taskOutput);\n\t\t\t}\n\t\t}\n\n\t\tconst reads = task.reads !== undefined ? task.reads : false;\n\t\tconst progress = task.progress !== undefined ? task.progress : false;\n\t\tconst taskSkillInput = normalizeSkillInput(task.skill);\n\t\tlet skills: string[] | false;\n\t\tif (taskSkillInput === false) {\n\t\t\tskills = false;\n\t\t} else if (taskSkillInput !== undefined) {\n\t\t\tskills = [...taskSkillInput];\n\t\t\tif (chainSkills && chainSkills.length > 0) {\n\t\t\t\tskills = [...new Set([...skills, ...chainSkills])];\n\t\t\t}\n\t\t} else {\n\t\t\tskills = chainSkills && chainSkills.length > 0 ? [...chainSkills] : [];\n\t\t}\n\n\t\tconst outputMode = task.outputMode ?? \"inline\";\n\t\tconst model = task.model;\n\t\treturn { output, outputMode, reads, progress, skills, model };\n\t});\n}\n\n/**\n * Create subdirectories for parallel step outputs\n */\nexport function createParallelDirs(\n\tchainDir: string,\n\tstepIndex: number,\n\ttaskCount: number,\n\tagentNames: string[],\n): void {\n\tfor (let i = 0; i < taskCount; i++) {\n\t\tconst subdir = path.join(chainDir, `parallel-${stepIndex}`, String(i));\n\t\tfs.mkdirSync(subdir, { recursive: true });\n\t}\n}\n\nexport type { ParallelTaskResult } from \"../runs/shared/parallel-utils.ts\";\nexport { aggregateParallelOutputs } from \"../runs/shared/parallel-utils.ts\";\n"]}
|
|
@@ -20,15 +20,15 @@ export function isParallelStep(step) {
|
|
|
20
20
|
export function isDynamicParallelStep(step) {
|
|
21
21
|
return "expand" in step && "collect" in step && "parallel" in step && !Array.isArray(step.parallel);
|
|
22
22
|
}
|
|
23
|
-
/** Get
|
|
23
|
+
/** Get display labels (description) for children in a step. */
|
|
24
24
|
export function getStepAgents(step) {
|
|
25
25
|
if (isParallelStep(step)) {
|
|
26
|
-
return step.parallel.map((t) => t.agent);
|
|
26
|
+
return step.parallel.map((t) => t.description || t.label || t.agent || "child");
|
|
27
27
|
}
|
|
28
28
|
if (isDynamicParallelStep(step)) {
|
|
29
|
-
return [step.parallel.agent];
|
|
29
|
+
return [step.parallel.description || step.parallel.label || step.parallel.agent || "child"];
|
|
30
30
|
}
|
|
31
|
-
return [step.agent];
|
|
31
|
+
return [step.description || step.label || step.agent || "child"];
|
|
32
32
|
}
|
|
33
33
|
// =============================================================================
|
|
34
34
|
// Chain Directory Management
|
|
@@ -103,22 +103,13 @@ export function resolveChainTemplates(steps) {
|
|
|
103
103
|
// =============================================================================
|
|
104
104
|
/**
|
|
105
105
|
* Resolve effective chain behavior per step.
|
|
106
|
-
* Priority: step override >
|
|
106
|
+
* Priority: step override > false (disabled). Children have no named-agent defaults.
|
|
107
107
|
*/
|
|
108
|
-
export function resolveStepBehavior(
|
|
109
|
-
// Output: step override > frontmatter > false (no output)
|
|
108
|
+
export function resolveStepBehavior(stepOverrides, chainSkills) {
|
|
110
109
|
const stepOutput = normalizeOutputOverride(stepOverrides.output);
|
|
111
|
-
const output = stepOutput !== undefined
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
// Reads: step override > frontmatter defaultReads > false (no reads)
|
|
115
|
-
const reads = stepOverrides.reads !== undefined
|
|
116
|
-
? stepOverrides.reads
|
|
117
|
-
: agentConfig.defaultReads ?? false;
|
|
118
|
-
// Progress: step override > frontmatter defaultProgress > false
|
|
119
|
-
const progress = stepOverrides.progress !== undefined
|
|
120
|
-
? stepOverrides.progress
|
|
121
|
-
: agentConfig.defaultProgress ?? false;
|
|
110
|
+
const output = stepOutput !== undefined ? stepOutput : false;
|
|
111
|
+
const reads = stepOverrides.reads !== undefined ? stepOverrides.reads : false;
|
|
112
|
+
const progress = stepOverrides.progress !== undefined ? stepOverrides.progress : false;
|
|
122
113
|
let skills;
|
|
123
114
|
if (stepOverrides.skills === false) {
|
|
124
115
|
skills = false;
|
|
@@ -130,13 +121,10 @@ export function resolveStepBehavior(agentConfig, stepOverrides, chainSkills) {
|
|
|
130
121
|
}
|
|
131
122
|
}
|
|
132
123
|
else {
|
|
133
|
-
skills =
|
|
134
|
-
if (chainSkills && chainSkills.length > 0) {
|
|
135
|
-
skills = [...new Set([...skills, ...chainSkills])];
|
|
136
|
-
}
|
|
124
|
+
skills = chainSkills && chainSkills.length > 0 ? [...chainSkills] : [];
|
|
137
125
|
}
|
|
138
126
|
const outputMode = stepOverrides.outputMode ?? "inline";
|
|
139
|
-
const model = stepOverrides.model
|
|
127
|
+
const model = stepOverrides.model;
|
|
140
128
|
return { output, outputMode, reads, progress, skills, model };
|
|
141
129
|
}
|
|
142
130
|
export function resolveTaskTextForFileUpdatePolicy(task, originalTask) {
|
|
@@ -216,40 +204,24 @@ export function buildChainInstructions(behavior, chainDir, isFirstProgressAgent,
|
|
|
216
204
|
* Resolve behaviors for all tasks in a parallel step.
|
|
217
205
|
* Creates namespaced output paths to avoid collisions.
|
|
218
206
|
*/
|
|
219
|
-
export function resolveParallelBehaviors(tasks,
|
|
207
|
+
export function resolveParallelBehaviors(tasks, stepIndex, chainSkills) {
|
|
220
208
|
return tasks.map((task, taskIndex) => {
|
|
221
|
-
const
|
|
222
|
-
if (!config) {
|
|
223
|
-
throw new Error(`Unknown agent: ${task.agent}`);
|
|
224
|
-
}
|
|
225
|
-
// Build subdirectory path for this parallel task
|
|
226
|
-
const subdir = path.join(`parallel-${stepIndex}`, `${taskIndex}-${task.agent}`);
|
|
227
|
-
// Output: task override > agent default (namespaced) > false
|
|
228
|
-
// Absolute paths pass through unchanged; relative paths get namespaced under subdir
|
|
209
|
+
const subdir = path.join(`parallel-${stepIndex}`, String(taskIndex));
|
|
229
210
|
let output = false;
|
|
230
211
|
const taskOutput = normalizeOutputOverride(task.output);
|
|
231
|
-
const configOutput = normalizeOutputOverride(config.output);
|
|
232
212
|
if (taskOutput !== undefined) {
|
|
233
213
|
if (taskOutput === false) {
|
|
234
214
|
output = false;
|
|
235
215
|
}
|
|
236
216
|
else if (path.isAbsolute(taskOutput)) {
|
|
237
|
-
output = taskOutput;
|
|
217
|
+
output = taskOutput;
|
|
238
218
|
}
|
|
239
219
|
else {
|
|
240
|
-
output = path.join(subdir, taskOutput);
|
|
220
|
+
output = path.join(subdir, taskOutput);
|
|
241
221
|
}
|
|
242
222
|
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
output = path.join(subdir, configOutput);
|
|
246
|
-
}
|
|
247
|
-
// Reads: task override > agent default > false
|
|
248
|
-
const reads = task.reads !== undefined ? task.reads : config.defaultReads ?? false;
|
|
249
|
-
// Progress: task override > agent default > false
|
|
250
|
-
const progress = task.progress !== undefined
|
|
251
|
-
? task.progress
|
|
252
|
-
: config.defaultProgress ?? false;
|
|
223
|
+
const reads = task.reads !== undefined ? task.reads : false;
|
|
224
|
+
const progress = task.progress !== undefined ? task.progress : false;
|
|
253
225
|
const taskSkillInput = normalizeSkillInput(task.skill);
|
|
254
226
|
let skills;
|
|
255
227
|
if (taskSkillInput === false) {
|
|
@@ -262,13 +234,10 @@ export function resolveParallelBehaviors(tasks, agentConfigs, stepIndex, chainSk
|
|
|
262
234
|
}
|
|
263
235
|
}
|
|
264
236
|
else {
|
|
265
|
-
skills =
|
|
266
|
-
if (chainSkills && chainSkills.length > 0) {
|
|
267
|
-
skills = [...new Set([...skills, ...chainSkills])];
|
|
268
|
-
}
|
|
237
|
+
skills = chainSkills && chainSkills.length > 0 ? [...chainSkills] : [];
|
|
269
238
|
}
|
|
270
239
|
const outputMode = task.outputMode ?? "inline";
|
|
271
|
-
const model = task.model
|
|
240
|
+
const model = task.model;
|
|
272
241
|
return { output, outputMode, reads, progress, skills, model };
|
|
273
242
|
});
|
|
274
243
|
}
|
|
@@ -277,7 +246,7 @@ export function resolveParallelBehaviors(tasks, agentConfigs, stepIndex, chainSk
|
|
|
277
246
|
*/
|
|
278
247
|
export function createParallelDirs(chainDir, stepIndex, taskCount, agentNames) {
|
|
279
248
|
for (let i = 0; i < taskCount; i++) {
|
|
280
|
-
const subdir = path.join(chainDir, `parallel-${stepIndex}`,
|
|
249
|
+
const subdir = path.join(chainDir, `parallel-${stepIndex}`, String(i));
|
|
281
250
|
fs.mkdirSync(subdir, { recursive: true });
|
|
282
251
|
}
|
|
283
252
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/shared/settings.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\n/**\n * Chain behavior, template resolution, and directory management\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { AgentConfig } from \"../agents/agents.ts\";\nimport { normalizeSkillInput } from \"../agents/skills.ts\";\nimport { CHAIN_RUNS_DIR, type AcceptanceInput, type JsonSchemaObject, type OutputMode, type ToolBudgetConfig } from \"./types.ts\";\nconst CHAIN_DIR_MAX_AGE_MS = 24 * 60 * 60 * 1000; // 24 hours\nconst INITIAL_PROGRESS_CONTENT = \"# Progress\\n\\n## Status\\nIn Progress\\n\\n## Tasks\\n\\n## Files Changed\\n\\n## Notes\\n\";\n\n// =============================================================================\n// Behavior Resolution Types\n// =============================================================================\n\nexport interface ResolvedStepBehavior {\n\toutput: string | false;\n\toutputMode: OutputMode;\n\treads: string[] | false;\n\tprogress: boolean;\n\tskills: string[] | false;\n\tmodel?: string;\n}\n\nexport interface StepOverrides {\n\toutput?: string | false;\n\toutputMode?: OutputMode;\n\treads?: string[] | false;\n\tprogress?: boolean;\n\tskills?: string[] | false;\n\tmodel?: string;\n}\n\nfunction normalizeOutputOverride(output: string | false | undefined): string | false | undefined {\n\treturn output === \"false\" ? false : output;\n}\n\n// =============================================================================\n// Chain Step Types\n// =============================================================================\n\n/** Sequential step: single agent execution */\nexport interface SequentialStep {\n\tagent: string;\n\ttask?: string;\n\tphase?: string;\n\tlabel?: string;\n\tas?: string;\n\toutputSchema?: JsonSchemaObject;\n\tcwd?: string;\n\toutput?: string | false;\n\toutputMode?: OutputMode;\n\treads?: string[] | false;\n\tprogress?: boolean;\n\tskill?: string | string[] | false;\n\tmodel?: string;\n\ttoolBudget?: ToolBudgetConfig;\n\tacceptance?: AcceptanceInput;\n}\n\n/** Parallel task item within a parallel step */\nexport interface ParallelTaskItem {\n\tagent: string;\n\ttask?: string;\n\tphase?: string;\n\tlabel?: string;\n\tas?: string;\n\toutputSchema?: JsonSchemaObject;\n\tcwd?: string;\n\tcount?: number;\n\toutput?: string | false;\n\toutputMode?: OutputMode;\n\treads?: string[] | false;\n\tprogress?: boolean;\n\tskill?: string | string[] | false;\n\tmodel?: string;\n\ttoolBudget?: ToolBudgetConfig;\n\tacceptance?: AcceptanceInput;\n}\n\nexport interface DynamicExpandSpec {\n\tfrom: {\n\t\toutput: string;\n\t\tpath: string;\n\t};\n\titem?: string;\n\tkey?: string;\n\tmaxItems?: number;\n\tonEmpty?: \"skip\" | \"fail\";\n}\n\nexport type DynamicParallelTemplate = Omit<ParallelTaskItem, \"as\" | \"count\">;\n\nexport interface DynamicCollectSpec {\n\tas: string;\n\toutputSchema?: JsonSchemaObject;\n}\n\nexport interface DynamicParallelStep {\n\texpand: DynamicExpandSpec;\n\tparallel: DynamicParallelTemplate;\n\tcollect: DynamicCollectSpec;\n\tconcurrency?: number;\n\tfailFast?: boolean;\n\tphase?: string;\n\tlabel?: string;\n\tacceptance?: AcceptanceInput;\n}\n\n/** Parallel step: multiple agents running concurrently */\nexport interface ParallelStep {\n\tparallel: ParallelTaskItem[];\n\tconcurrency?: number;\n\tfailFast?: boolean;\n\tworktree?: boolean;\n\tcwd?: string;\n}\n\n/** Union type for chain steps */\nexport type ChainStep = SequentialStep | ParallelStep | DynamicParallelStep;\n\n// =============================================================================\n// Type Guards\n// =============================================================================\n\nexport function isParallelStep(step: ChainStep): step is ParallelStep {\n\treturn \"parallel\" in step && Array.isArray((step as ParallelStep).parallel);\n}\n\nexport function isDynamicParallelStep(step: ChainStep): step is DynamicParallelStep {\n\treturn \"expand\" in step && \"collect\" in step && \"parallel\" in step && !Array.isArray((step as { parallel?: unknown }).parallel);\n}\n\n/** Get all agent names in a step (single for sequential, multiple for parallel) */\nexport function getStepAgents(step: ChainStep): string[] {\n\tif (isParallelStep(step)) {\n\t\treturn step.parallel.map((t) => t.agent);\n\t}\n\tif (isDynamicParallelStep(step)) {\n\t\treturn [step.parallel.agent];\n\t}\n\treturn [step.agent];\n}\n\n// =============================================================================\n// Chain Directory Management\n// =============================================================================\n\nexport function createChainDir(runId: string, baseDir?: string): string {\n\tconst chainDir = path.join(baseDir ? path.resolve(baseDir) : CHAIN_RUNS_DIR, runId);\n\tfs.mkdirSync(chainDir, { recursive: true });\n\treturn chainDir;\n}\n\nexport function removeChainDir(chainDir: string): void {\n\ttry {\n\t\tfs.rmSync(chainDir, { recursive: true });\n\t} catch {\n\t\t// Chain cleanup is best-effort. Runs can already have cleaned their temp dir.\n\t}\n}\n\nexport function cleanupOldChainDirs(): void {\n\tif (!fs.existsSync(CHAIN_RUNS_DIR)) return;\n\tconst now = Date.now();\n\tlet dirs: string[];\n\ttry {\n\t\tdirs = fs.readdirSync(CHAIN_RUNS_DIR);\n\t} catch {\n\t\t// Startup cleanup is best-effort. If the scoped temp root is unreadable,\n\t\t// skip cleanup instead of failing extension startup.\n\t\treturn;\n\t}\n\n\tfor (const dir of dirs) {\n\t\ttry {\n\t\t\tconst dirPath = path.join(CHAIN_RUNS_DIR, dir);\n\t\t\tconst stat = fs.statSync(dirPath);\n\t\t\tif (stat.isDirectory() && now - stat.mtimeMs > CHAIN_DIR_MAX_AGE_MS) {\n\t\t\t\tfs.rmSync(dirPath, { recursive: true });\n\t\t\t}\n\t\t} catch {\n\t\t\t// Skip directories that can't be processed; continue with others\n\t\t}\n\t}\n}\n\n// =============================================================================\n// Template Resolution\n// =============================================================================\n\n/** Resolved templates for a chain - string for sequential, string[] for parallel */\nexport type ResolvedTemplates = (string | string[])[];\n\n/**\n * Resolve templates for a chain with parallel step support.\n * Returns string for sequential steps, string[] for parallel steps.\n */\nexport function resolveChainTemplates(\n\tsteps: ChainStep[],\n): ResolvedTemplates {\n\treturn steps.map((step, i) => {\n\t\tif (isParallelStep(step)) {\n\t\t\t// Parallel step: resolve each task's template\n\t\t\treturn step.parallel.map((task) => {\n\t\t\t\tif (task.task) return task.task;\n\t\t\t\t// Default for parallel tasks is {previous}\n\t\t\t\treturn \"{previous}\";\n\t\t\t});\n\t\t}\n\t\tif (isDynamicParallelStep(step)) {\n\t\t\treturn step.parallel.task ?? \"{previous}\";\n\t\t}\n\t\t// Sequential step: existing logic\n\t\tconst seq = step as SequentialStep;\n\t\tif (seq.task) return seq.task;\n\t\t// Default: first step uses {task}, others use {previous}\n\t\treturn i === 0 ? \"{task}\" : \"{previous}\";\n\t});\n}\n\n// =============================================================================\n// Behavior Resolution\n// =============================================================================\n\n/**\n * Resolve effective chain behavior per step.\n * Priority: step override > agent frontmatter > false (disabled)\n */\nexport function resolveStepBehavior(\n\tagentConfig: AgentConfig,\n\tstepOverrides: StepOverrides,\n\tchainSkills?: string[],\n): ResolvedStepBehavior {\n\t// Output: step override > frontmatter > false (no output)\n\tconst stepOutput = normalizeOutputOverride(stepOverrides.output);\n\tconst output =\n\t\tstepOutput !== undefined\n\t\t\t? stepOutput\n\t\t\t: normalizeOutputOverride(agentConfig.output) ?? false;\n\n\t// Reads: step override > frontmatter defaultReads > false (no reads)\n\tconst reads =\n\t\tstepOverrides.reads !== undefined\n\t\t\t? stepOverrides.reads\n\t\t\t: agentConfig.defaultReads ?? false;\n\n\t// Progress: step override > frontmatter defaultProgress > false\n\tconst progress =\n\t\tstepOverrides.progress !== undefined\n\t\t\t? stepOverrides.progress\n\t\t\t: agentConfig.defaultProgress ?? false;\n\n\tlet skills: string[] | false;\n\tif (stepOverrides.skills === false) {\n\t\tskills = false;\n\t} else if (stepOverrides.skills !== undefined) {\n\t\tskills = [...stepOverrides.skills];\n\t\tif (chainSkills && chainSkills.length > 0) {\n\t\t\tskills = [...new Set([...skills, ...chainSkills])];\n\t\t}\n\t} else {\n\t\tskills = agentConfig.skills ? [...agentConfig.skills] : [];\n\t\tif (chainSkills && chainSkills.length > 0) {\n\t\t\tskills = [...new Set([...skills, ...chainSkills])];\n\t\t}\n\t}\n\n\tconst outputMode = stepOverrides.outputMode ?? \"inline\";\n\tconst model = stepOverrides.model ?? agentConfig.model;\n\treturn { output, outputMode, reads, progress, skills, model };\n}\n\nexport function resolveTaskTextForFileUpdatePolicy(task: string | undefined, originalTask?: string): string | undefined {\n\tif (!task) return originalTask;\n\treturn originalTask ? task.replaceAll(\"{task}\", originalTask) : task;\n}\n\nexport function taskDisallowsFileUpdates(task: string | undefined): boolean {\n\tif (!task) return false;\n\treturn /\\breview[- ]only\\b/i.test(task)\n\t\t|| /\\bread[- ]only\\s+(?:review|audit|inspection|pass)\\b/i.test(task)\n\t\t|| /\\b(?:no|without)\\s+(?:file\\s+)?edits?\\b/i.test(task)\n\t\t|| /\\b(?:do not|don't|must not)\\s+(?:edit|modify|write|touch)\\b/i.test(task)\n\t\t|| /\\bleave\\s+files?\\s+unchanged\\b/i.test(task);\n}\n\nexport function suppressProgressForReadOnlyTask(behavior: ResolvedStepBehavior, task: string | undefined, originalTask?: string): ResolvedStepBehavior {\n\tconst policyTask = resolveTaskTextForFileUpdatePolicy(task, originalTask);\n\treturn behavior.progress && taskDisallowsFileUpdates(policyTask) ? { ...behavior, progress: false } : behavior;\n}\n\n// =============================================================================\n// Chain Instruction Injection\n// =============================================================================\n\n/**\n * Resolve a file path: absolute paths pass through, relative paths get chainDir prepended.\n */\nfunction resolveChainPath(filePath: string, chainDir: string): string {\n\treturn path.isAbsolute(filePath) ? filePath : path.join(chainDir, filePath);\n}\n\n/**\n * Build chain instructions from resolved behavior.\n * These are appended to the task to tell the agent what to read/write.\n */\nexport function writeInitialProgressFile(progressDir: string): void {\n\tfs.mkdirSync(progressDir, { recursive: true });\n\tfs.writeFileSync(path.join(progressDir, \"progress.md\"), INITIAL_PROGRESS_CONTENT);\n}\n\nexport function buildChainInstructions(\n\tbehavior: ResolvedStepBehavior,\n\tchainDir: string,\n\tisFirstProgressAgent: boolean,\n\tpreviousSummary?: string,\n): { prefix: string; suffix: string } {\n\tconst prefixParts: string[] = [];\n\tconst suffixParts: string[] = [];\n\n\t// READS - prepend to override any hardcoded filenames in task text\n\tif (behavior.reads && behavior.reads.length > 0) {\n\t\tconst files = behavior.reads.map((f) => resolveChainPath(f, chainDir));\n\t\tprefixParts.push(`[Read from: ${files.join(\", \")}]`);\n\t}\n\n\t// OUTPUT - prepend so agent knows where to write\n\tif (behavior.output) {\n\t\tconst outputPath = resolveChainPath(behavior.output, chainDir);\n\t\tprefixParts.push(`[Write to: ${outputPath}]`);\n\t}\n\n\t// Progress instructions in suffix (less critical)\n\tif (behavior.progress) {\n\t\tconst progressPath = path.join(chainDir, \"progress.md\");\n\t\tif (isFirstProgressAgent) {\n\t\t\tsuffixParts.push(`Create and maintain progress at: ${progressPath}`);\n\t\t} else {\n\t\t\tsuffixParts.push(`Update progress at: ${progressPath}`);\n\t\t}\n\t}\n\n\t// Include previous step's summary in suffix if available\n\tif (previousSummary && previousSummary.trim()) {\n\t\tsuffixParts.push(`Previous step output:\\n${previousSummary.trim()}`);\n\t}\n\n\tconst prefix = prefixParts.length > 0 \n\t\t? prefixParts.join(\"\\n\") + \"\\n\\n\"\n\t\t: \"\";\n\t\n\tconst suffix = suffixParts.length > 0\n\t\t? \"\\n\\n---\\n\" + suffixParts.join(\"\\n\")\n\t\t: \"\";\n\n\treturn { prefix, suffix };\n}\n\n// =============================================================================\n// Parallel Step Support\n// =============================================================================\n\n/**\n * Resolve behaviors for all tasks in a parallel step.\n * Creates namespaced output paths to avoid collisions.\n */\nexport function resolveParallelBehaviors(\n\ttasks: ParallelTaskItem[],\n\tagentConfigs: AgentConfig[],\n\tstepIndex: number,\n\tchainSkills?: string[],\n): ResolvedStepBehavior[] {\n\treturn tasks.map((task, taskIndex) => {\n\t\tconst config = agentConfigs.find((a) => a.name === task.agent);\n\t\tif (!config) {\n\t\t\tthrow new Error(`Unknown agent: ${task.agent}`);\n\t\t}\n\n\t\t// Build subdirectory path for this parallel task\n\t\tconst subdir = path.join(`parallel-${stepIndex}`, `${taskIndex}-${task.agent}`);\n\n\t\t// Output: task override > agent default (namespaced) > false\n\t\t// Absolute paths pass through unchanged; relative paths get namespaced under subdir\n\t\tlet output: string | false = false;\n\t\tconst taskOutput = normalizeOutputOverride(task.output);\n\t\tconst configOutput = normalizeOutputOverride(config.output);\n\t\tif (taskOutput !== undefined) {\n\t\t\tif (taskOutput === false) {\n\t\t\t\toutput = false;\n\t\t\t} else if (path.isAbsolute(taskOutput)) {\n\t\t\t\toutput = taskOutput; // Absolute path: use as-is\n\t\t\t} else {\n\t\t\t\toutput = path.join(subdir, taskOutput); // Relative: namespace under subdir\n\t\t\t}\n\t\t} else if (configOutput) {\n\t\t\t// Agent defaults are always relative, so namespace them\n\t\t\toutput = path.join(subdir, configOutput);\n\t\t}\n\n\t\t// Reads: task override > agent default > false\n\t\tconst reads =\n\t\t\ttask.reads !== undefined ? task.reads : config.defaultReads ?? false;\n\n\t\t// Progress: task override > agent default > false\n\t\tconst progress =\n\t\t\ttask.progress !== undefined\n\t\t\t\t? task.progress\n\t\t\t\t: config.defaultProgress ?? false;\n\n\t\tconst taskSkillInput = normalizeSkillInput(task.skill);\n\t\tlet skills: string[] | false;\n\t\tif (taskSkillInput === false) {\n\t\t\tskills = false;\n\t\t} else if (taskSkillInput !== undefined) {\n\t\t\tskills = [...taskSkillInput];\n\t\t\tif (chainSkills && chainSkills.length > 0) {\n\t\t\t\tskills = [...new Set([...skills, ...chainSkills])];\n\t\t\t}\n\t\t} else {\n\t\t\tskills = config.skills ? [...config.skills] : [];\n\t\t\tif (chainSkills && chainSkills.length > 0) {\n\t\t\t\tskills = [...new Set([...skills, ...chainSkills])];\n\t\t\t}\n\t\t}\n\n\t\tconst outputMode = task.outputMode ?? \"inline\";\n\t\tconst model = task.model ?? config.model;\n\t\treturn { output, outputMode, reads, progress, skills, model };\n\t});\n}\n\n/**\n * Create subdirectories for parallel step outputs\n */\nexport function createParallelDirs(\n\tchainDir: string,\n\tstepIndex: number,\n\ttaskCount: number,\n\tagentNames: string[],\n): void {\n\tfor (let i = 0; i < taskCount; i++) {\n\t\tconst subdir = path.join(chainDir, `parallel-${stepIndex}`, `${i}-${agentNames[i]}`);\n\t\tfs.mkdirSync(subdir, { recursive: true });\n\t}\n}\n\nexport type { ParallelTaskResult } from \"../runs/shared/parallel-utils.ts\";\nexport { aggregateParallelOutputs } from \"../runs/shared/parallel-utils.ts\";\n"]}
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/shared/settings.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\n/**\n * Chain behavior, template resolution, and directory management\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { normalizeSkillInput } from \"../agents/skills.ts\";\nimport { CHAIN_RUNS_DIR, type AcceptanceInput, type JsonSchemaObject, type OutputMode, type ToolBudgetConfig } from \"./types.ts\";\nconst CHAIN_DIR_MAX_AGE_MS = 24 * 60 * 60 * 1000; // 24 hours\nconst INITIAL_PROGRESS_CONTENT = \"# Progress\\n\\n## Status\\nIn Progress\\n\\n## Tasks\\n\\n## Files Changed\\n\\n## Notes\\n\";\n\n// =============================================================================\n// Behavior Resolution Types\n// =============================================================================\n\nexport interface ResolvedStepBehavior {\n\toutput: string | false;\n\toutputMode: OutputMode;\n\treads: string[] | false;\n\tprogress: boolean;\n\tskills: string[] | false;\n\tmodel?: string;\n}\n\nexport interface StepOverrides {\n\toutput?: string | false;\n\toutputMode?: OutputMode;\n\treads?: string[] | false;\n\tprogress?: boolean;\n\tskills?: string[] | false;\n\tmodel?: string;\n}\n\nfunction normalizeOutputOverride(output: string | false | undefined): string | false | undefined {\n\treturn output === \"false\" ? false : output;\n}\n\n// =============================================================================\n// Chain Step Types\n// =============================================================================\n\n/** Sequential step: single generic child execution */\nexport interface SequentialStep {\n\tagent?: string;\n\ttask?: string;\n\tdescription?: string;\n\tpermissions?: \"full\" | \"read-only\";\n\tphase?: string;\n\tlabel?: string;\n\tas?: string;\n\toutputSchema?: JsonSchemaObject;\n\tcwd?: string;\n\toutput?: string | false;\n\toutputMode?: OutputMode;\n\treads?: string[] | false;\n\tprogress?: boolean;\n\tskill?: string | string[] | false;\n\tmodel?: string;\n\ttier?: \"light\" | \"standard\" | \"heavy\";\n\ttoolBudget?: ToolBudgetConfig;\n\tacceptance?: AcceptanceInput;\n}\n\n/** Parallel task item within a parallel step */\nexport interface ParallelTaskItem {\n\tagent?: string;\n\ttask?: string;\n\tdescription?: string;\n\tpermissions?: \"full\" | \"read-only\";\n\tphase?: string;\n\tlabel?: string;\n\tas?: string;\n\toutputSchema?: JsonSchemaObject;\n\tcwd?: string;\n\tcount?: number;\n\toutput?: string | false;\n\toutputMode?: OutputMode;\n\treads?: string[] | false;\n\tprogress?: boolean;\n\tskill?: string | string[] | false;\n\tmodel?: string;\n\ttier?: \"light\" | \"standard\" | \"heavy\";\n\ttoolBudget?: ToolBudgetConfig;\n\tacceptance?: AcceptanceInput;\n}\n\nexport interface DynamicExpandSpec {\n\tfrom: {\n\t\toutput: string;\n\t\tpath: string;\n\t};\n\titem?: string;\n\tkey?: string;\n\tmaxItems?: number;\n\tonEmpty?: \"skip\" | \"fail\";\n}\n\nexport type DynamicParallelTemplate = Omit<ParallelTaskItem, \"as\" | \"count\">;\n\nexport interface DynamicCollectSpec {\n\tas: string;\n\toutputSchema?: JsonSchemaObject;\n}\n\nexport interface DynamicParallelStep {\n\texpand: DynamicExpandSpec;\n\tparallel: DynamicParallelTemplate;\n\tcollect: DynamicCollectSpec;\n\tconcurrency?: number;\n\tfailFast?: boolean;\n\tphase?: string;\n\tlabel?: string;\n\tacceptance?: AcceptanceInput;\n}\n\n/** Parallel step: multiple agents running concurrently */\nexport interface ParallelStep {\n\tparallel: ParallelTaskItem[];\n\tconcurrency?: number;\n\tfailFast?: boolean;\n\tworktree?: boolean;\n\tcwd?: string;\n}\n\n/** Union type for chain steps */\nexport type ChainStep = SequentialStep | ParallelStep | DynamicParallelStep;\n\n// =============================================================================\n// Type Guards\n// =============================================================================\n\nexport function isParallelStep(step: ChainStep): step is ParallelStep {\n\treturn \"parallel\" in step && Array.isArray((step as ParallelStep).parallel);\n}\n\nexport function isDynamicParallelStep(step: ChainStep): step is DynamicParallelStep {\n\treturn \"expand\" in step && \"collect\" in step && \"parallel\" in step && !Array.isArray((step as { parallel?: unknown }).parallel);\n}\n\n/** Get display labels (description) for children in a step. */\nexport function getStepAgents(step: ChainStep): string[] {\n\tif (isParallelStep(step)) {\n\t\treturn step.parallel.map((t) => t.description || t.label || t.agent || \"child\");\n\t}\n\tif (isDynamicParallelStep(step)) {\n\t\treturn [step.parallel.description || step.parallel.label || step.parallel.agent || \"child\"];\n\t}\n\treturn [step.description || step.label || step.agent || \"child\"];\n}\n\n// =============================================================================\n// Chain Directory Management\n// =============================================================================\n\nexport function createChainDir(runId: string, baseDir?: string): string {\n\tconst chainDir = path.join(baseDir ? path.resolve(baseDir) : CHAIN_RUNS_DIR, runId);\n\tfs.mkdirSync(chainDir, { recursive: true });\n\treturn chainDir;\n}\n\nexport function removeChainDir(chainDir: string): void {\n\ttry {\n\t\tfs.rmSync(chainDir, { recursive: true });\n\t} catch {\n\t\t// Chain cleanup is best-effort. Runs can already have cleaned their temp dir.\n\t}\n}\n\nexport function cleanupOldChainDirs(): void {\n\tif (!fs.existsSync(CHAIN_RUNS_DIR)) return;\n\tconst now = Date.now();\n\tlet dirs: string[];\n\ttry {\n\t\tdirs = fs.readdirSync(CHAIN_RUNS_DIR);\n\t} catch {\n\t\t// Startup cleanup is best-effort. If the scoped temp root is unreadable,\n\t\t// skip cleanup instead of failing extension startup.\n\t\treturn;\n\t}\n\n\tfor (const dir of dirs) {\n\t\ttry {\n\t\t\tconst dirPath = path.join(CHAIN_RUNS_DIR, dir);\n\t\t\tconst stat = fs.statSync(dirPath);\n\t\t\tif (stat.isDirectory() && now - stat.mtimeMs > CHAIN_DIR_MAX_AGE_MS) {\n\t\t\t\tfs.rmSync(dirPath, { recursive: true });\n\t\t\t}\n\t\t} catch {\n\t\t\t// Skip directories that can't be processed; continue with others\n\t\t}\n\t}\n}\n\n// =============================================================================\n// Template Resolution\n// =============================================================================\n\n/** Resolved templates for a chain - string for sequential, string[] for parallel */\nexport type ResolvedTemplates = (string | string[])[];\n\n/**\n * Resolve templates for a chain with parallel step support.\n * Returns string for sequential steps, string[] for parallel steps.\n */\nexport function resolveChainTemplates(\n\tsteps: ChainStep[],\n): ResolvedTemplates {\n\treturn steps.map((step, i) => {\n\t\tif (isParallelStep(step)) {\n\t\t\t// Parallel step: resolve each task's template\n\t\t\treturn step.parallel.map((task) => {\n\t\t\t\tif (task.task) return task.task;\n\t\t\t\t// Default for parallel tasks is {previous}\n\t\t\t\treturn \"{previous}\";\n\t\t\t});\n\t\t}\n\t\tif (isDynamicParallelStep(step)) {\n\t\t\treturn step.parallel.task ?? \"{previous}\";\n\t\t}\n\t\t// Sequential step: existing logic\n\t\tconst seq = step as SequentialStep;\n\t\tif (seq.task) return seq.task;\n\t\t// Default: first step uses {task}, others use {previous}\n\t\treturn i === 0 ? \"{task}\" : \"{previous}\";\n\t});\n}\n\n// =============================================================================\n// Behavior Resolution\n// =============================================================================\n\n/**\n * Resolve effective chain behavior per step.\n * Priority: step override > false (disabled). Children have no named-agent defaults.\n */\nexport function resolveStepBehavior(\n\tstepOverrides: StepOverrides,\n\tchainSkills?: string[],\n): ResolvedStepBehavior {\n\tconst stepOutput = normalizeOutputOverride(stepOverrides.output);\n\tconst output = stepOutput !== undefined ? stepOutput : false;\n\tconst reads = stepOverrides.reads !== undefined ? stepOverrides.reads : false;\n\tconst progress = stepOverrides.progress !== undefined ? stepOverrides.progress : false;\n\n\tlet skills: string[] | false;\n\tif (stepOverrides.skills === false) {\n\t\tskills = false;\n\t} else if (stepOverrides.skills !== undefined) {\n\t\tskills = [...stepOverrides.skills];\n\t\tif (chainSkills && chainSkills.length > 0) {\n\t\t\tskills = [...new Set([...skills, ...chainSkills])];\n\t\t}\n\t} else {\n\t\tskills = chainSkills && chainSkills.length > 0 ? [...chainSkills] : [];\n\t}\n\n\tconst outputMode = stepOverrides.outputMode ?? \"inline\";\n\tconst model = stepOverrides.model;\n\treturn { output, outputMode, reads, progress, skills, model };\n}\n\nexport function resolveTaskTextForFileUpdatePolicy(task: string | undefined, originalTask?: string): string | undefined {\n\tif (!task) return originalTask;\n\treturn originalTask ? task.replaceAll(\"{task}\", originalTask) : task;\n}\n\nexport function taskDisallowsFileUpdates(task: string | undefined): boolean {\n\tif (!task) return false;\n\treturn /\\breview[- ]only\\b/i.test(task)\n\t\t|| /\\bread[- ]only\\s+(?:review|audit|inspection|pass)\\b/i.test(task)\n\t\t|| /\\b(?:no|without)\\s+(?:file\\s+)?edits?\\b/i.test(task)\n\t\t|| /\\b(?:do not|don't|must not)\\s+(?:edit|modify|write|touch)\\b/i.test(task)\n\t\t|| /\\bleave\\s+files?\\s+unchanged\\b/i.test(task);\n}\n\nexport function suppressProgressForReadOnlyTask(behavior: ResolvedStepBehavior, task: string | undefined, originalTask?: string): ResolvedStepBehavior {\n\tconst policyTask = resolveTaskTextForFileUpdatePolicy(task, originalTask);\n\treturn behavior.progress && taskDisallowsFileUpdates(policyTask) ? { ...behavior, progress: false } : behavior;\n}\n\n// =============================================================================\n// Chain Instruction Injection\n// =============================================================================\n\n/**\n * Resolve a file path: absolute paths pass through, relative paths get chainDir prepended.\n */\nfunction resolveChainPath(filePath: string, chainDir: string): string {\n\treturn path.isAbsolute(filePath) ? filePath : path.join(chainDir, filePath);\n}\n\n/**\n * Build chain instructions from resolved behavior.\n * These are appended to the task to tell the agent what to read/write.\n */\nexport function writeInitialProgressFile(progressDir: string): void {\n\tfs.mkdirSync(progressDir, { recursive: true });\n\tfs.writeFileSync(path.join(progressDir, \"progress.md\"), INITIAL_PROGRESS_CONTENT);\n}\n\nexport function buildChainInstructions(\n\tbehavior: ResolvedStepBehavior,\n\tchainDir: string,\n\tisFirstProgressAgent: boolean,\n\tpreviousSummary?: string,\n): { prefix: string; suffix: string } {\n\tconst prefixParts: string[] = [];\n\tconst suffixParts: string[] = [];\n\n\t// READS - prepend to override any hardcoded filenames in task text\n\tif (behavior.reads && behavior.reads.length > 0) {\n\t\tconst files = behavior.reads.map((f) => resolveChainPath(f, chainDir));\n\t\tprefixParts.push(`[Read from: ${files.join(\", \")}]`);\n\t}\n\n\t// OUTPUT - prepend so agent knows where to write\n\tif (behavior.output) {\n\t\tconst outputPath = resolveChainPath(behavior.output, chainDir);\n\t\tprefixParts.push(`[Write to: ${outputPath}]`);\n\t}\n\n\t// Progress instructions in suffix (less critical)\n\tif (behavior.progress) {\n\t\tconst progressPath = path.join(chainDir, \"progress.md\");\n\t\tif (isFirstProgressAgent) {\n\t\t\tsuffixParts.push(`Create and maintain progress at: ${progressPath}`);\n\t\t} else {\n\t\t\tsuffixParts.push(`Update progress at: ${progressPath}`);\n\t\t}\n\t}\n\n\t// Include previous step's summary in suffix if available\n\tif (previousSummary && previousSummary.trim()) {\n\t\tsuffixParts.push(`Previous step output:\\n${previousSummary.trim()}`);\n\t}\n\n\tconst prefix = prefixParts.length > 0 \n\t\t? prefixParts.join(\"\\n\") + \"\\n\\n\"\n\t\t: \"\";\n\t\n\tconst suffix = suffixParts.length > 0\n\t\t? \"\\n\\n---\\n\" + suffixParts.join(\"\\n\")\n\t\t: \"\";\n\n\treturn { prefix, suffix };\n}\n\n// =============================================================================\n// Parallel Step Support\n// =============================================================================\n\n/**\n * Resolve behaviors for all tasks in a parallel step.\n * Creates namespaced output paths to avoid collisions.\n */\nexport function resolveParallelBehaviors(\n\ttasks: ParallelTaskItem[],\n\tstepIndex: number,\n\tchainSkills?: string[],\n): ResolvedStepBehavior[] {\n\treturn tasks.map((task, taskIndex) => {\n\t\tconst subdir = path.join(`parallel-${stepIndex}`, String(taskIndex));\n\t\tlet output: string | false = false;\n\t\tconst taskOutput = normalizeOutputOverride(task.output);\n\t\tif (taskOutput !== undefined) {\n\t\t\tif (taskOutput === false) {\n\t\t\t\toutput = false;\n\t\t\t} else if (path.isAbsolute(taskOutput)) {\n\t\t\t\toutput = taskOutput;\n\t\t\t} else {\n\t\t\t\toutput = path.join(subdir, taskOutput);\n\t\t\t}\n\t\t}\n\n\t\tconst reads = task.reads !== undefined ? task.reads : false;\n\t\tconst progress = task.progress !== undefined ? task.progress : false;\n\t\tconst taskSkillInput = normalizeSkillInput(task.skill);\n\t\tlet skills: string[] | false;\n\t\tif (taskSkillInput === false) {\n\t\t\tskills = false;\n\t\t} else if (taskSkillInput !== undefined) {\n\t\t\tskills = [...taskSkillInput];\n\t\t\tif (chainSkills && chainSkills.length > 0) {\n\t\t\t\tskills = [...new Set([...skills, ...chainSkills])];\n\t\t\t}\n\t\t} else {\n\t\t\tskills = chainSkills && chainSkills.length > 0 ? [...chainSkills] : [];\n\t\t}\n\n\t\tconst outputMode = task.outputMode ?? \"inline\";\n\t\tconst model = task.model;\n\t\treturn { output, outputMode, reads, progress, skills, model };\n\t});\n}\n\n/**\n * Create subdirectories for parallel step outputs\n */\nexport function createParallelDirs(\n\tchainDir: string,\n\tstepIndex: number,\n\ttaskCount: number,\n\tagentNames: string[],\n): void {\n\tfor (let i = 0; i < taskCount; i++) {\n\t\tconst subdir = path.join(chainDir, `parallel-${stepIndex}`, String(i));\n\t\tfs.mkdirSync(subdir, { recursive: true });\n\t}\n}\n\nexport type { ParallelTaskResult } from \"../runs/shared/parallel-utils.ts\";\nexport { aggregateParallelOutputs } from \"../runs/shared/parallel-utils.ts\";\n"]}
|
|
@@ -10,6 +10,60 @@ export interface MaxOutputConfig {
|
|
|
10
10
|
lines?: number;
|
|
11
11
|
}
|
|
12
12
|
export type OutputMode = "inline" | "file-only";
|
|
13
|
+
export type ChildPermission = "full" | "read-only";
|
|
14
|
+
export type ChildTier = "light" | "standard" | "heavy";
|
|
15
|
+
export interface ChildSpec {
|
|
16
|
+
childId: string;
|
|
17
|
+
task: string;
|
|
18
|
+
description: string;
|
|
19
|
+
requestedPermissions: ChildPermission;
|
|
20
|
+
effectivePermissions: ChildPermission;
|
|
21
|
+
model?: string;
|
|
22
|
+
tier?: ChildTier;
|
|
23
|
+
skill?: string | string[] | false;
|
|
24
|
+
cwd?: string;
|
|
25
|
+
output?: string | false;
|
|
26
|
+
outputMode?: OutputMode;
|
|
27
|
+
acceptance?: AcceptanceInput;
|
|
28
|
+
toolBudget?: ToolBudgetConfig;
|
|
29
|
+
count?: number;
|
|
30
|
+
reads?: string[] | false;
|
|
31
|
+
progress?: boolean;
|
|
32
|
+
label?: string;
|
|
33
|
+
phase?: string;
|
|
34
|
+
as?: string;
|
|
35
|
+
outputSchema?: JsonSchemaObject;
|
|
36
|
+
fanoutAuthorized?: boolean;
|
|
37
|
+
}
|
|
38
|
+
/** Internal execution compatibility shape. It is built from ChildSpec and is never user-discovered. */
|
|
39
|
+
export interface ChildRuntimeConfig {
|
|
40
|
+
name: string;
|
|
41
|
+
description: string;
|
|
42
|
+
tools?: string[];
|
|
43
|
+
mcpDirectTools?: string[];
|
|
44
|
+
model?: string;
|
|
45
|
+
fallbackModels?: string[];
|
|
46
|
+
thinking?: string | false;
|
|
47
|
+
systemPromptMode: "append" | "replace";
|
|
48
|
+
inheritProjectContext: boolean;
|
|
49
|
+
inheritSkills: boolean;
|
|
50
|
+
acceptanceRole?: AcceptanceRole;
|
|
51
|
+
systemPrompt: string;
|
|
52
|
+
skills?: string[];
|
|
53
|
+
skillPath?: string[];
|
|
54
|
+
extensions?: string[];
|
|
55
|
+
subagentOnlyExtensions?: string[];
|
|
56
|
+
output?: string;
|
|
57
|
+
maxSubagentDepth?: number;
|
|
58
|
+
completionGuard?: boolean;
|
|
59
|
+
toolBudget?: ToolBudgetConfig;
|
|
60
|
+
}
|
|
61
|
+
export declare function childRowLabel(entry: {
|
|
62
|
+
description?: string;
|
|
63
|
+
label?: string;
|
|
64
|
+
agent?: string;
|
|
65
|
+
childId?: string;
|
|
66
|
+
}): string;
|
|
13
67
|
export type AcceptanceRole = "read-only" | "writer";
|
|
14
68
|
export type JsonSchemaObject = Record<string, unknown>;
|
|
15
69
|
export interface ChainOutputMapEntry {
|
|
@@ -180,8 +234,10 @@ export interface ControlEvent {
|
|
|
180
234
|
}
|
|
181
235
|
export type SubagentResultStatus = "completed" | "failed" | "paused" | "stopped" | "detached";
|
|
182
236
|
export type SubagentRunMode = "single" | "parallel" | "chain";
|
|
183
|
-
export declare const SUBAGENT_LIFECYCLE_ARTIFACT_VERSION =
|
|
237
|
+
export declare const SUBAGENT_LIFECYCLE_ARTIFACT_VERSION = 3;
|
|
184
238
|
export type SubagentLifecycleArtifactVersion = typeof SUBAGENT_LIFECYCLE_ARTIFACT_VERSION;
|
|
239
|
+
export declare const UNSUPPORTED_SUBAGENT_LIFECYCLE_MESSAGE = "This subagent run uses an unsupported lifecycle format. Named agent types cannot be resumed. Launch a new prompt-driven child instead.";
|
|
240
|
+
export declare function isSupportedSubagentLifecycleVersion(version: unknown): boolean;
|
|
185
241
|
export type SteeringActionState = "delivered" | "scheduled" | "pending" | "partial" | "recovered" | "failed";
|
|
186
242
|
export type SteeringTargetState = "scheduled" | "routed" | "delivered" | "late" | "failed" | "recovered";
|
|
187
243
|
export interface SteeringTargetStatus {
|
|
@@ -238,30 +294,18 @@ export interface SteeringNotice {
|
|
|
238
294
|
currentSessionId?: string;
|
|
239
295
|
}
|
|
240
296
|
export interface SteeringRecoveryDescriptor {
|
|
241
|
-
version:
|
|
297
|
+
version: 3;
|
|
298
|
+
lifecycleArtifactVersion?: SubagentLifecycleArtifactVersion;
|
|
242
299
|
sourceRunId: string;
|
|
300
|
+
childId: string;
|
|
301
|
+
description: string;
|
|
302
|
+
permissions: ChildPermission;
|
|
243
303
|
agent: string;
|
|
244
304
|
sessionFile?: string;
|
|
245
305
|
cwd: string;
|
|
246
306
|
model?: string;
|
|
247
|
-
fallbackModels?: string[];
|
|
248
307
|
thinking?: string;
|
|
249
|
-
tools?: string[];
|
|
250
|
-
extensions?: string[];
|
|
251
|
-
subagentOnlyExtensions?: string[];
|
|
252
|
-
mcpDirectTools?: string[];
|
|
253
|
-
systemPrompt?: string;
|
|
254
|
-
systemPromptMode: "append" | "replace";
|
|
255
|
-
inheritProjectContext: boolean;
|
|
256
|
-
inheritSkills: boolean;
|
|
257
308
|
skills?: string[];
|
|
258
|
-
skillPath?: string[];
|
|
259
|
-
agentFilePath?: string;
|
|
260
|
-
completionGuard?: boolean;
|
|
261
|
-
memory?: {
|
|
262
|
-
scope: "project" | "user";
|
|
263
|
-
path: string;
|
|
264
|
-
};
|
|
265
309
|
outputPath?: string;
|
|
266
310
|
outputMode: "inline" | "file-only";
|
|
267
311
|
acceptance?: AcceptanceInput;
|
|
@@ -326,6 +370,9 @@ export interface ChildWatchdogProgress {
|
|
|
326
370
|
}
|
|
327
371
|
export interface AgentProgress {
|
|
328
372
|
index: number;
|
|
373
|
+
childId?: string;
|
|
374
|
+
description?: string;
|
|
375
|
+
permissions?: ChildPermission;
|
|
329
376
|
agent: string;
|
|
330
377
|
status: "pending" | "running" | "completed" | "failed" | "detached";
|
|
331
378
|
activityState?: ActivityState;
|
|
@@ -491,6 +538,9 @@ export interface ProtocolOutputLimit {
|
|
|
491
538
|
diagnosticTail: string;
|
|
492
539
|
}
|
|
493
540
|
export interface SingleResult {
|
|
541
|
+
childId?: string;
|
|
542
|
+
description?: string;
|
|
543
|
+
permissions?: ChildPermission;
|
|
494
544
|
agent: string;
|
|
495
545
|
task: string;
|
|
496
546
|
exitCode: number;
|
|
@@ -563,6 +613,11 @@ export interface Details {
|
|
|
563
613
|
artifactPath?: string;
|
|
564
614
|
};
|
|
565
615
|
chainAgents?: string[];
|
|
616
|
+
chainChildren?: Array<{
|
|
617
|
+
childId: string;
|
|
618
|
+
description: string;
|
|
619
|
+
permissions: ChildPermission;
|
|
620
|
+
}>;
|
|
566
621
|
totalSteps?: number;
|
|
567
622
|
currentStepIndex?: number;
|
|
568
623
|
workflowGraph?: WorkflowGraphSnapshot;
|
|
@@ -738,6 +793,9 @@ export interface AsyncStatus {
|
|
|
738
793
|
parallelGroups?: AsyncParallelGroupStatus[];
|
|
739
794
|
workflowGraph?: WorkflowGraphSnapshot;
|
|
740
795
|
steps?: Array<{
|
|
796
|
+
childId?: string;
|
|
797
|
+
description?: string;
|
|
798
|
+
permissions?: ChildPermission;
|
|
741
799
|
agent: string;
|
|
742
800
|
phase?: string;
|
|
743
801
|
label?: string;
|
|
@@ -888,6 +946,7 @@ export interface SubagentState {
|
|
|
888
946
|
startedAt: number;
|
|
889
947
|
updatedAt: number;
|
|
890
948
|
currentAgent?: string;
|
|
949
|
+
currentChildId?: string;
|
|
891
950
|
currentIndex?: number;
|
|
892
951
|
currentActivityState?: ActivityState;
|
|
893
952
|
lastActivityAt?: number;
|
|
@@ -977,7 +1036,7 @@ export interface RunSyncOptions {
|
|
|
977
1036
|
/** Override the agent's default model (format: "provider/id" or just "id") */
|
|
978
1037
|
modelOverride?: string;
|
|
979
1038
|
/** Override the agent's default thinking level for this run */
|
|
980
|
-
thinkingOverride?:
|
|
1039
|
+
thinkingOverride?: string | false;
|
|
981
1040
|
/** Registry models available for heuristic bare-model resolution */
|
|
982
1041
|
availableModels?: Array<{
|
|
983
1042
|
provider: string;
|
|
@@ -1084,7 +1143,8 @@ export declare const SLASH_SUBAGENT_CANCEL_EVENT = "subagent:slash:cancel";
|
|
|
1084
1143
|
export declare const POLL_INTERVAL_MS = 250;
|
|
1085
1144
|
export declare const MAX_WIDGET_JOBS = 4;
|
|
1086
1145
|
export declare const DEFAULT_SUBAGENT_MAX_DEPTH = 2;
|
|
1087
|
-
export declare const SUBAGENT_ACTIONS: readonly ["
|
|
1146
|
+
export declare const SUBAGENT_ACTIONS: readonly ["status", "interrupt", "resume", "steer", "stop", "append-step", "doctor", "watchdog.status", "watchdog.check", "watchdog.configure", "watchdog.recommend-model", "schedule", "schedule-list", "schedule-status", "schedule-cancel"];
|
|
1147
|
+
export declare const REMOVED_SUBAGENT_ACTIONS: readonly ["list", "get", "models", "create", "update", "delete", "eject", "disable", "enable", "reset"];
|
|
1088
1148
|
export declare const DEFAULT_FORK_PREAMBLE: string;
|
|
1089
1149
|
export declare function resolveTopLevelParallelMaxTasks(value: unknown): number;
|
|
1090
1150
|
export declare function resolveTopLevelParallelConcurrency(override: unknown, configValue: unknown): number;
|