@ashx-j/lunr 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/builtin-extensions/ashxj-spinners.d.ts +1 -1
- package/dist/builtin-extensions/ashxj-spinners.d.ts.map +1 -1
- package/dist/builtin-extensions/ashxj-spinners.js.map +1 -1
- package/dist/builtin-extensions/ashxj-thinking.d.ts +5 -5
- package/dist/builtin-extensions/ashxj-thinking.d.ts.map +1 -1
- package/dist/builtin-extensions/ashxj-thinking.js +3 -3
- package/dist/builtin-extensions/ashxj-thinking.js.map +1 -1
- package/dist/builtin-extensions/ashxj-tui.d.ts +2 -2
- package/dist/builtin-extensions/ashxj-tui.d.ts.map +1 -1
- package/dist/builtin-extensions/ashxj-tui.js +2 -2
- package/dist/builtin-extensions/ashxj-tui.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.map +1 -1
- package/dist/builtin-extensions/lunr-local-providers/index.d.ts +1 -1
- package/dist/builtin-extensions/lunr-local-providers/index.d.ts.map +1 -1
- package/dist/builtin-extensions/lunr-local-providers/index.js.map +1 -1
- package/dist/builtin-extensions/lunr-local-providers/local-servers.d.ts +1 -1
- package/dist/builtin-extensions/lunr-local-providers/local-servers.d.ts.map +1 -1
- package/dist/builtin-extensions/lunr-local-providers/local-servers.js.map +1 -1
- package/dist/builtin-extensions/lunr-plan-tools.d.ts +1 -1
- package/dist/builtin-extensions/lunr-plan-tools.d.ts.map +1 -1
- package/dist/builtin-extensions/lunr-plan-tools.js +1 -1
- package/dist/builtin-extensions/lunr-plan-tools.js.map +1 -1
- package/dist/builtin-extensions/lunr-skill-creator/index.d.ts +1 -1
- package/dist/builtin-extensions/lunr-skill-creator/index.d.ts.map +1 -1
- package/dist/builtin-extensions/lunr-skill-creator/index.js.map +1 -1
- package/dist/builtin-extensions/lunr-todos.d.ts +1 -1
- package/dist/builtin-extensions/lunr-todos.d.ts.map +1 -1
- package/dist/builtin-extensions/lunr-todos.js +1 -1
- package/dist/builtin-extensions/lunr-todos.js.map +1 -1
- package/dist/builtin-extensions/narumiruna-pi-goal/src/accounting.d.ts.map +1 -1
- package/dist/builtin-extensions/narumiruna-pi-goal/src/accounting.js.map +1 -1
- package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.d.ts +1 -1
- package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.d.ts.map +1 -1
- package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.js.map +1 -1
- package/dist/builtin-extensions/narumiruna-pi-goal/src/runtime.d.ts +2 -2
- package/dist/builtin-extensions/narumiruna-pi-goal/src/runtime.d.ts.map +1 -1
- package/dist/builtin-extensions/narumiruna-pi-goal/src/runtime.js +1 -1
- package/dist/builtin-extensions/narumiruna-pi-goal/src/runtime.js.map +1 -1
- package/dist/builtin-extensions/pi-intercom/index.d.ts +1 -1
- package/dist/builtin-extensions/pi-intercom/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-intercom/index.js +2 -2
- package/dist/builtin-extensions/pi-intercom/index.js.map +1 -1
- package/dist/builtin-extensions/pi-intercom/ui/compose.d.ts +2 -2
- package/dist/builtin-extensions/pi-intercom/ui/compose.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-intercom/ui/compose.js +1 -1
- package/dist/builtin-extensions/pi-intercom/ui/compose.js.map +1 -1
- package/dist/builtin-extensions/pi-intercom/ui/inline-message.d.ts +2 -2
- package/dist/builtin-extensions/pi-intercom/ui/inline-message.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-intercom/ui/inline-message.js +1 -1
- package/dist/builtin-extensions/pi-intercom/ui/inline-message.js.map +1 -1
- package/dist/builtin-extensions/pi-intercom/ui/session-list.d.ts +2 -2
- package/dist/builtin-extensions/pi-intercom/ui/session-list.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-intercom/ui/session-list.js +1 -1
- package/dist/builtin-extensions/pi-intercom/ui/session-list.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/bemol-extension/index.d.ts +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/bemol-extension/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/bemol-extension/index.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/index.d.ts +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/index.js +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/index.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-actions.d.ts +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-actions.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-actions.js +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-actions.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-overview.d.ts +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-overview.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-overview.js +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-overview.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-rewrite.d.ts +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-rewrite.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-rewrite.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-search.d.ts +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-search.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/code-search.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/completions.d.ts +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/completions.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/completions.js +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/completions.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/definition.d.ts +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/definition.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/definition.js +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/definition.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/diagnostics.d.ts +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/diagnostics.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/diagnostics.js +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/diagnostics.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/hover.d.ts +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/hover.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/hover.js +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/hover.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/references.d.ts +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/references.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/references.js +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/references.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/rename.d.ts +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/rename.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/rename.js +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/rename.js.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/symbols.d.ts +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/symbols.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/symbols.js +1 -1
- package/dist/builtin-extensions/pi-lsp-extension/src/tools/symbols.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/commands.d.ts +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/commands.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/commands.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.d.ts +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/elicitation-handler.d.ts +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/elicitation-handler.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/elicitation-handler.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/index.d.ts +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/index.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/init.d.ts +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/init.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/init.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/mcp-panel.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/mcp-panel.js +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/mcp-panel.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/mcp-setup-panel.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/mcp-setup-panel.js +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/mcp-setup-panel.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/panel-keys.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/panel-keys.js +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/panel-keys.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/proxy-modes.d.ts +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/proxy-modes.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/proxy-modes.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/sampling-handler.d.ts +2 -2
- package/dist/builtin-extensions/pi-mcp-adapter/sampling-handler.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/sampling-handler.js +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/sampling-handler.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/state.d.ts +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/state.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/state.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/tool-result-renderer.d.ts +2 -2
- package/dist/builtin-extensions/pi-mcp-adapter/tool-result-renderer.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/tool-result-renderer.js +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/tool-result-renderer.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/types.d.ts +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/types.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/types.js.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/utils.d.ts +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/utils.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-mcp-adapter/utils.js.map +1 -1
- package/dist/builtin-extensions/pi-ollama-cloud/index.d.ts +1 -1
- package/dist/builtin-extensions/pi-ollama-cloud/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-ollama-cloud/index.js.map +1 -1
- package/dist/builtin-extensions/pi-ollama-cloud/models.d.ts +1 -1
- package/dist/builtin-extensions/pi-ollama-cloud/models.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-ollama-cloud/models.generated.d.ts +1 -1
- package/dist/builtin-extensions/pi-ollama-cloud/models.generated.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-ollama-cloud/models.generated.js.map +1 -1
- package/dist/builtin-extensions/pi-ollama-cloud/models.js.map +1 -1
- package/dist/builtin-extensions/pi-ollama-cloud/thinking-levels.d.ts +1 -1
- package/dist/builtin-extensions/pi-ollama-cloud/thinking-levels.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-ollama-cloud/thinking-levels.js.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/deterministic-renderer.d.ts +2 -2
- package/dist/builtin-extensions/pi-prompt-template-model/deterministic-renderer.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/deterministic-renderer.js +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/deterministic-renderer.js.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/index.d.ts +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/index.js.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/loop-utils.d.ts +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/loop-utils.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/loop-utils.js.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/model-selection.d.ts +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/model-selection.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/model-selection.js.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/notifications.d.ts +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/notifications.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/notifications.js.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/prompt-execution.d.ts +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/prompt-execution.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/prompt-execution.js.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.d.ts +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/skill-loaded-renderer.d.ts +2 -2
- package/dist/builtin-extensions/pi-prompt-template-model/skill-loaded-renderer.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/skill-loaded-renderer.js +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/skill-loaded-renderer.js.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/subagent-renderer.d.ts +2 -2
- package/dist/builtin-extensions/pi-prompt-template-model/subagent-renderer.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/subagent-renderer.js +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/subagent-renderer.js.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/subagent-step.d.ts +3 -3
- package/dist/builtin-extensions/pi-prompt-template-model/subagent-step.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/subagent-step.js +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/subagent-step.js.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/subagent-widget.d.ts +2 -2
- package/dist/builtin-extensions/pi-prompt-template-model/subagent-widget.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/subagent-widget.js +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/subagent-widget.js.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.d.ts +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/control-notices.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/control-notices.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/control-notices.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.d.ts +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.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 +2 -2
- package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/rpc.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/extension/rpc.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/rpc.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/steering-notices.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/steering-notices.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/steering-notices.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts +1 -1
- 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.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/auto-drain.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/auto-drain.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/auto-drain.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/fleet-view.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/fleet-view.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/fleet-view.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.d.ts +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.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.d.ts +2 -2
- 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.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.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/async-steering-action.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/async-steering-action.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/async-steering-action.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 +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 +2 -2
- 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.map +1 -1
- 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.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts +2 -2
- 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.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/completion-guard.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/completion-guard.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/completion-guard.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-spawn.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-spawn.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-spawn.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-spawn.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/single-output.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/single-output.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/single-output.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.d.ts +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.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/child-transcript.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/child-transcript.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/child-transcript.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts +3 -3
- package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/types.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/utils.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/utils.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/utils.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/utils.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts +1 -1
- 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.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-bridge.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-bridge.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-bridge.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts +1 -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 +2 -2
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-live-state.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-live-state.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-live-state.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/fleet.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/tui/fleet.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/fleet.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/fleet.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render-helpers.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render-helpers.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render-helpers.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render-helpers.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +3 -3
- package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js +2 -2
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/model-selection.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/model-selection.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/model-selection.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/register-child.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/register-child.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/register-child.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/register-main.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/register-main.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/register-main.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/register-main.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/render.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/render.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/render.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/render.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/review.d.ts +3 -3
- package/dist/builtin-extensions/pi-subagents/src/watchdog/review.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js +3 -3
- package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/runtime.d.ts +1 -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.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/tool-actions.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/watchdog/tool-actions.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/tool-actions.js.map +1 -1
- package/dist/builtin-extensions/pi-tps.d.ts +1 -1
- package/dist/builtin-extensions/pi-tps.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-tps.js.map +1 -1
- package/dist/builtin-extensions/pi-web-access/gemini-search.d.ts +1 -1
- package/dist/builtin-extensions/pi-web-access/gemini-search.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-web-access/gemini-search.js.map +1 -1
- package/dist/builtin-extensions/pi-web-access/index.d.ts +1 -1
- package/dist/builtin-extensions/pi-web-access/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-web-access/index.js +2 -2
- package/dist/builtin-extensions/pi-web-access/index.js.map +1 -1
- package/dist/builtin-extensions/pi-web-access/openai-search.d.ts +1 -1
- package/dist/builtin-extensions/pi-web-access/openai-search.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-web-access/openai-search.js +1 -1
- package/dist/builtin-extensions/pi-web-access/openai-search.js.map +1 -1
- package/dist/builtin-extensions/pi-web-access/storage.d.ts +1 -1
- package/dist/builtin-extensions/pi-web-access/storage.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-web-access/storage.js.map +1 -1
- package/dist/builtin-extensions/pi-web-access/summary-review.d.ts +1 -1
- package/dist/builtin-extensions/pi-web-access/summary-review.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-web-access/summary-review.js +1 -1
- package/dist/builtin-extensions/pi-web-access/summary-review.js.map +1 -1
- package/dist/bun/cli.d.ts.map +1 -1
- package/dist/bun/cli.js +1 -1
- package/dist/bun/cli.js.map +1 -1
- package/dist/bun/register-bedrock.d.ts.map +1 -1
- package/dist/bun/register-bedrock.js +2 -2
- package/dist/bun/register-bedrock.js.map +1 -1
- package/dist/catalog/models.json +1 -1
- package/dist/catalog/providers/opencode-go.json +1 -1
- package/dist/catalog/providers/openrouter.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/publication.json +3 -3
- package/dist/cli/args.d.ts +1 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/config-selector.d.ts.map +1 -1
- package/dist/cli/config-selector.js +1 -1
- package/dist/cli/config-selector.js.map +1 -1
- package/dist/cli/file-processor.d.ts +1 -1
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/cli/initial-message.d.ts +1 -1
- package/dist/cli/initial-message.d.ts.map +1 -1
- package/dist/cli/initial-message.js.map +1 -1
- package/dist/cli/list-models.d.ts.map +1 -1
- package/dist/cli/list-models.js +1 -1
- package/dist/cli/list-models.js.map +1 -1
- package/dist/cli/session-picker.d.ts.map +1 -1
- package/dist/cli/session-picker.js +1 -1
- package/dist/cli/session-picker.js.map +1 -1
- package/dist/cli/startup-ui.d.ts +1 -1
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli/startup-ui.js +2 -2
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +2 -2
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +2 -2
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +1 -1
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts +1 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/cache-stats.d.ts +1 -1
- package/dist/core/cache-stats.d.ts.map +1 -1
- package/dist/core/cache-stats.js.map +1 -1
- package/dist/core/catalog-merge.d.ts +1 -1
- package/dist/core/catalog-merge.d.ts.map +1 -1
- package/dist/core/catalog-merge.js +7 -1
- package/dist/core/catalog-merge.js.map +1 -1
- package/dist/core/compaction/branch-summarization.d.ts +2 -2
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +1 -1
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +2 -2
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +1 -1
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/utils.d.ts +2 -2
- package/dist/core/compaction/utils.d.ts.map +1 -1
- package/dist/core/compaction/utils.js.map +1 -1
- package/dist/core/context-breakdown.d.ts +1 -1
- package/dist/core/context-breakdown.d.ts.map +1 -1
- package/dist/core/context-breakdown.js.map +1 -1
- package/dist/core/defaults.d.ts +1 -1
- package/dist/core/defaults.d.ts.map +1 -1
- package/dist/core/defaults.js.map +1 -1
- package/dist/core/export-html/index.d.ts +1 -1
- package/dist/core/export-html/index.d.ts.map +1 -1
- package/dist/core/export-html/index.js.map +1 -1
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
- package/dist/core/export-html/tool-renderer.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +25 -25
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +3 -3
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +5 -5
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/extensions/wrapper.d.ts +1 -1
- package/dist/core/extensions/wrapper.d.ts.map +1 -1
- package/dist/core/extensions/wrapper.js.map +1 -1
- package/dist/core/grok-cli-auth.d.ts +32 -0
- package/dist/core/grok-cli-auth.d.ts.map +1 -0
- package/dist/core/grok-cli-auth.js +218 -0
- package/dist/core/grok-cli-auth.js.map +1 -0
- package/dist/core/keybindings.d.ts +2 -2
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +1 -1
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/live-catalog.d.ts +1 -1
- package/dist/core/live-catalog.d.ts.map +1 -1
- package/dist/core/live-catalog.js.map +1 -1
- package/dist/core/messages.d.ts +3 -3
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js.map +1 -1
- package/dist/core/model-registry.d.ts +1 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts +2 -2
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +1 -1
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/model-runtime.d.ts +10 -1
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +24 -5
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/models-store.d.ts +1 -1
- package/dist/core/models-store.d.ts.map +1 -1
- package/dist/core/models-store.js.map +1 -1
- package/dist/core/official-catalog.d.ts +1 -1
- package/dist/core/official-catalog.d.ts.map +1 -1
- package/dist/core/official-catalog.js.map +1 -1
- package/dist/core/provider-attribution.d.ts +1 -1
- package/dist/core/provider-attribution.d.ts.map +1 -1
- package/dist/core/provider-attribution.js.map +1 -1
- package/dist/core/provider-composer.d.ts +1 -1
- package/dist/core/provider-composer.d.ts.map +1 -1
- package/dist/core/provider-composer.js +2 -2
- package/dist/core/provider-composer.js.map +1 -1
- package/dist/core/runtime-credentials.d.ts +1 -1
- package/dist/core/runtime-credentials.d.ts.map +1 -1
- package/dist/core/runtime-credentials.js.map +1 -1
- package/dist/core/sdk.d.ts +3 -3
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +3 -3
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager.d.ts +2 -2
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +1 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +2 -2
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/subscriptions.d.ts +1 -1
- package/dist/core/subscriptions.d.ts.map +1 -1
- package/dist/core/subscriptions.js.map +1 -1
- package/dist/core/tools/bash.d.ts +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +1 -1
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit.d.ts +2 -2
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +1 -1
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/find.d.ts +1 -1
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +1 -1
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts +1 -1
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +1 -1
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/index.d.ts +1 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/ls.d.ts +1 -1
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js +1 -1
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/read.d.ts +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +1 -1
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/render-utils.d.ts +1 -1
- package/dist/core/tools/render-utils.d.ts.map +1 -1
- package/dist/core/tools/render-utils.js +1 -1
- package/dist/core/tools/render-utils.js.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/tools/write.d.ts +1 -1
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +1 -1
- package/dist/core/tools/write.js.map +1 -1
- package/dist/core/usage-adapters/openai-codex.d.ts.map +1 -1
- package/dist/core/usage-adapters/openai-codex.js.map +1 -1
- package/dist/core/usage-adapters/xai.d.ts.map +1 -1
- package/dist/core/usage-adapters/xai.js +4 -0
- package/dist/core/usage-adapters/xai.js.map +1 -1
- package/dist/core/usage-history.d.ts.map +1 -1
- package/dist/core/usage-history.js.map +1 -1
- package/dist/core/usage-service.d.ts +11 -1
- package/dist/core/usage-service.d.ts.map +1 -1
- package/dist/core/usage-service.js +45 -9
- package/dist/core/usage-service.js.map +1 -1
- package/dist/core/user-models.d.ts +1 -1
- package/dist/core/user-models.d.ts.map +1 -1
- package/dist/core/user-models.js.map +1 -1
- package/dist/gateway/agent-bridge.d.ts +3 -3
- package/dist/gateway/agent-bridge.d.ts.map +1 -1
- package/dist/gateway/agent-bridge.js.map +1 -1
- package/dist/gateway/commands.d.ts.map +1 -1
- package/dist/gateway/commands.js.map +1 -1
- package/dist/gateway/cron.d.ts.map +1 -1
- package/dist/gateway/cron.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/armin.d.ts +1 -1
- package/dist/modes/interactive/components/armin.d.ts.map +1 -1
- package/dist/modes/interactive/components/armin.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts +2 -2
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +1 -1
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/bash-execution.js +1 -1
- package/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/dist/modes/interactive/components/boot-screen.d.ts +1 -1
- package/dist/modes/interactive/components/boot-screen.d.ts.map +1 -1
- package/dist/modes/interactive/components/boot-screen.js +1 -1
- package/dist/modes/interactive/components/boot-screen.js.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.d.ts +1 -1
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.js +1 -1
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.js +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +1 -1
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.d.ts +1 -1
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-editor.js +1 -1
- package/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/dist/modes/interactive/components/custom-entry.d.ts +1 -1
- package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-entry.js +1 -1
- package/dist/modes/interactive/components/custom-entry.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +1 -1
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/daxnuts.d.ts +1 -1
- package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
- package/dist/modes/interactive/components/daxnuts.js.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.d.ts +1 -1
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
- package/dist/modes/interactive/components/earendil-announcement.d.ts +1 -1
- package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
- package/dist/modes/interactive/components/earendil-announcement.js +1 -1
- package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
- package/dist/modes/interactive/components/extension-editor.d.ts +1 -1
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-editor.js +1 -1
- package/dist/modes/interactive/components/extension-editor.js.map +1 -1
- package/dist/modes/interactive/components/extension-input.d.ts +1 -1
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-input.js +1 -1
- package/dist/modes/interactive/components/extension-input.js.map +1 -1
- package/dist/modes/interactive/components/extension-selector.d.ts +1 -1
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-selector.js +1 -1
- package/dist/modes/interactive/components/extension-selector.js.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.d.ts +1 -1
- package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.js +1 -1
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +1 -1
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/injected-prompt-message.d.ts +1 -1
- package/dist/modes/interactive/components/injected-prompt-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/injected-prompt-message.js +1 -1
- package/dist/modes/interactive/components/injected-prompt-message.js.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts +1 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts +2 -2
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +1 -1
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +2 -2
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +2 -2
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts +2 -2
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js +1 -1
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/components/processes-selector.d.ts +1 -1
- package/dist/modes/interactive/components/processes-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/processes-selector.js +1 -1
- package/dist/modes/interactive/components/processes-selector.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +2 -2
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector-search.js +1 -1
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +1 -1
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +3 -3
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +1 -1
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.d.ts +1 -1
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.js +1 -1
- package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
- package/dist/modes/interactive/components/status-indicator.d.ts +1 -1
- package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
- package/dist/modes/interactive/components/status-indicator.js +1 -1
- package/dist/modes/interactive/components/status-indicator.js.map +1 -1
- package/dist/modes/interactive/components/theme-selector.d.ts +1 -1
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/theme-selector.js +1 -1
- package/dist/modes/interactive/components/theme-selector.js.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts +2 -2
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +1 -1
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/components/thinking-summary.d.ts +1 -1
- package/dist/modes/interactive/components/thinking-summary.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-summary.js.map +1 -1
- package/dist/modes/interactive/components/thinking-tail.d.ts +1 -1
- package/dist/modes/interactive/components/thinking-tail.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-tail.js +1 -1
- package/dist/modes/interactive/components/thinking-tail.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +1 -1
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector.d.ts +1 -1
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector.js +1 -1
- package/dist/modes/interactive/components/tree-selector.js.map +1 -1
- package/dist/modes/interactive/components/trust-selector.d.ts +1 -1
- package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/trust-selector.js +1 -1
- package/dist/modes/interactive/components/trust-selector.js.map +1 -1
- package/dist/modes/interactive/components/usage-view.d.ts.map +1 -1
- package/dist/modes/interactive/components/usage-view.js +1 -1
- package/dist/modes/interactive/components/usage-view.js.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.d.ts +1 -1
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.js +1 -1
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message.d.ts +1 -1
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.js +1 -1
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.js +1 -1
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +29 -4
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/smooth-streaming.d.ts +1 -1
- package/dist/modes/interactive/smooth-streaming.d.ts.map +1 -1
- package/dist/modes/interactive/smooth-streaming.js.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.d.ts +1 -1
- package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts +2 -2
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +2 -2
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/print-mode.d.ts +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +2 -2
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +2 -2
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/examples/extensions/auto-commit-on-exit.ts +1 -1
- package/examples/extensions/bash-spawn-hook.ts +2 -2
- package/examples/extensions/bookmark.ts +1 -1
- package/examples/extensions/border-status-editor.ts +3 -3
- package/examples/extensions/built-in-tool-renderer.ts +3 -3
- package/examples/extensions/claude-rules.ts +1 -1
- package/examples/extensions/commands.ts +1 -1
- package/examples/extensions/confirm-destructive.ts +1 -1
- package/examples/extensions/custom-compaction.ts +3 -3
- package/examples/extensions/custom-footer.ts +3 -3
- package/examples/extensions/custom-header.ts +2 -2
- package/examples/extensions/custom-provider-anthropic/index.ts +2 -2
- 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/index.ts +2 -2
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +1 -1
- package/examples/extensions/dirty-repo-guard.ts +1 -1
- package/examples/extensions/doom-overlay/doom-component.ts +2 -2
- package/examples/extensions/doom-overlay/doom-keys.ts +1 -1
- package/examples/extensions/doom-overlay/index.ts +1 -1
- package/examples/extensions/dynamic-resources/index.ts +1 -1
- package/examples/extensions/dynamic-tools.ts +1 -1
- package/examples/extensions/entry-renderer.ts +2 -2
- package/examples/extensions/event-bus.ts +1 -1
- package/examples/extensions/file-trigger.ts +1 -1
- package/examples/extensions/git-checkpoint.ts +1 -1
- package/examples/extensions/git-merge-and-resolve.ts +1 -1
- package/examples/extensions/github-issue-autocomplete.ts +2 -2
- package/examples/extensions/gondolin/index.ts +2 -2
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/handoff.ts +4 -4
- package/examples/extensions/hello.ts +2 -2
- package/examples/extensions/hidden-thinking-label.ts +1 -1
- package/examples/extensions/inline-bash.ts +1 -1
- package/examples/extensions/input-transform-streaming.ts +1 -1
- package/examples/extensions/input-transform.ts +1 -1
- package/examples/extensions/interactive-shell.ts +1 -1
- package/examples/extensions/kimi-deferred-tools.ts +1 -1
- package/examples/extensions/mac-system-theme.ts +1 -1
- package/examples/extensions/message-renderer.ts +2 -2
- package/examples/extensions/minimal-mode.ts +3 -3
- package/examples/extensions/modal-editor.ts +2 -2
- package/examples/extensions/model-status.ts +1 -1
- package/examples/extensions/notify.ts +1 -1
- package/examples/extensions/overlay-qa-tests.ts +3 -3
- package/examples/extensions/overlay-test.ts +2 -2
- package/examples/extensions/permission-gate.ts +1 -1
- package/examples/extensions/pirate.ts +1 -1
- package/examples/extensions/plan-mode/index.ts +4 -4
- package/examples/extensions/preset.ts +4 -4
- package/examples/extensions/project-trust.ts +1 -1
- package/examples/extensions/prompt-customizer.ts +1 -1
- package/examples/extensions/protected-paths.ts +1 -1
- package/examples/extensions/provider-payload.ts +1 -1
- package/examples/extensions/qna.ts +3 -3
- package/examples/extensions/question.ts +2 -2
- package/examples/extensions/questionnaire.ts +2 -2
- package/examples/extensions/rainbow-editor.ts +1 -1
- package/examples/extensions/reload-runtime.ts +1 -1
- package/examples/extensions/rpc-demo.ts +1 -1
- package/examples/extensions/sandbox/index.ts +2 -2
- package/examples/extensions/send-user-message.ts +1 -1
- package/examples/extensions/session-name.ts +1 -1
- package/examples/extensions/shutdown-command.ts +1 -1
- package/examples/extensions/snake.ts +2 -2
- package/examples/extensions/space-invaders.ts +2 -2
- package/examples/extensions/ssh.ts +2 -2
- package/examples/extensions/status-line.ts +1 -1
- package/examples/extensions/structured-output.ts +2 -2
- package/examples/extensions/subagent/agents.ts +1 -1
- package/examples/extensions/subagent/index.ts +5 -5
- package/examples/extensions/summarize.ts +4 -4
- package/examples/extensions/system-prompt-header.ts +1 -1
- package/examples/extensions/tic-tac-toe.ts +3 -3
- package/examples/extensions/timed-confirm.ts +1 -1
- package/examples/extensions/titlebar-spinner.ts +1 -1
- package/examples/extensions/todo.ts +3 -3
- package/examples/extensions/tool-override.ts +2 -2
- package/examples/extensions/tools.ts +3 -3
- package/examples/extensions/trigger-compact.ts +1 -1
- package/examples/extensions/truncated-tool.ts +3 -3
- package/examples/extensions/widget-placement.ts +1 -1
- package/examples/extensions/with-deps/index.ts +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/examples/extensions/working-indicator.ts +1 -1
- package/examples/extensions/working-message-test.ts +1 -1
- package/examples/rpc-extension-ui.ts +1 -1
- package/examples/sdk/01-minimal.ts +1 -1
- package/examples/sdk/02-custom-model.ts +2 -2
- package/examples/sdk/03-custom-prompt.ts +1 -1
- package/examples/sdk/04-skills.ts +1 -1
- package/examples/sdk/05-tools.ts +1 -1
- package/examples/sdk/06-extensions.ts +2 -2
- package/examples/sdk/07-context-files.ts +1 -1
- package/examples/sdk/08-prompt-templates.ts +1 -1
- package/examples/sdk/09-api-keys-and-oauth.ts +1 -1
- package/examples/sdk/10-settings.ts +1 -1
- package/examples/sdk/11-sessions.ts +1 -1
- package/examples/sdk/12-full-control.ts +2 -2
- package/examples/sdk/13-session-runtime.ts +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-step.js","sourceRoot":"","sources":["../../../src/builtin-extensions/pi-prompt-template-model/subagent-step.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport { existsSync } from \"node:fs\";\nimport { randomUUID } from \"node:crypto\";\nimport type { AssistantMessage, Message } from \"@earendil-works/pi-ai\";\nimport type { ExtensionAPI, ExtensionContext } from \"@earendil-works/pi-coding-agent\";\nimport type { Model } from \"@earendil-works/pi-ai\";\nimport { Key, matchesKey } from \"@earendil-works/pi-tui\";\nimport { preparePromptExecution } from \"./prompt-execution.ts\";\nimport type { PromptWithModel } from \"./prompt-loader.ts\";\nimport { notify } from \"./notifications.ts\";\nimport {\n\tDEFAULT_SUBAGENT_NAME,\n\tappendDelegatedLiveOutput,\n\tclearDelegatedLiveState,\n\tgetDelegatedLiveState,\n\tPROMPT_TEMPLATE_SUBAGENT_CANCEL_EVENT,\n\tPROMPT_TEMPLATE_SUBAGENT_MESSAGE_TYPE,\n\tPROMPT_TEMPLATE_SUBAGENT_REQUEST_EVENT,\n\tPROMPT_TEMPLATE_SUBAGENT_RESPONSE_EVENT,\n\tPROMPT_TEMPLATE_SUBAGENT_STARTED_EVENT,\n\tPROMPT_TEMPLATE_SUBAGENT_UPDATE_EVENT,\n\tupdateDelegatedLiveState,\n\ttype DelegatedSubagentParallelResult,\n\ttype DelegatedSubagentRequest,\n\ttype DelegatedSubagentResponse,\n\ttype DelegatedSubagentTask,\n\ttype DelegatedSubagentTaskProgress,\n\ttype DelegatedSubagentUpdate,\n} from \"./subagent-runtime.ts\";\nimport type { SubagentOverride } from \"./args.ts\";\nimport { createDelegatedProgressWidget, DELEGATED_WIDGET_KEY } from \"./subagent-widget.ts\";\n\ninterface DelegatedPromptBaseOptions {\n\tpi: ExtensionAPI;\n\tctx: ExtensionContext;\n\tcurrentModel: Model<any> | undefined;\n\toverride?: SubagentOverride;\n\tsignal?: AbortSignal;\n\tinheritedModel?: Model<any>;\n\ttaskPreamble?: string;\n\tworktree?: boolean;\n\tallowPartialFailures?: boolean;\n}\n\ninterface DelegatedSinglePromptOptions extends DelegatedPromptBaseOptions {\n\tprompt: PromptWithModel;\n\targs: string[];\n\tparallel?: never;\n}\n\ninterface DelegatedParallelTaskInput {\n\tprompt: PromptWithModel;\n\targs: string[];\n\ttaskPrefix?: string;\n}\n\ninterface DelegatedParallelPromptOptions extends DelegatedPromptBaseOptions {\n\tparallel: DelegatedParallelTaskInput[];\n\tprompt?: never;\n\targs?: never;\n}\n\ntype DelegatedPromptOptions = DelegatedSinglePromptOptions | DelegatedParallelPromptOptions;\n\nexport interface DelegatedPromptParallelResult {\n\tagent: string;\n\ttext: string;\n\tmessages: Message[];\n\tisError: boolean;\n\terrorText?: string;\n}\n\nexport interface DelegatedPromptOutcome {\n\tchanged: boolean;\n\ttext: string;\n\tagent: string;\n\tparallelResults?: DelegatedPromptParallelResult[];\n}\n\nfunction extractTextFromBlocks(content: AssistantMessage[\"content\"]): string {\n\tfor (let i = content.length - 1; i >= 0; i--) {\n\t\tconst block = content[i];\n\t\tif (block.type === \"text\") {\n\t\t\tconst trimmed = block.text.trim();\n\t\t\tif (trimmed) return trimmed;\n\t\t}\n\t}\n\treturn \"\";\n}\n\nfunction extractDelegatedText(messages: Message[]): string {\n\tfor (let i = messages.length - 1; i >= 0; i--) {\n\t\tconst message = messages[i];\n\t\tif (message.role !== \"assistant\") continue;\n\t\tconst text = extractTextFromBlocks((message as AssistantMessage).content);\n\t\tif (text) return text;\n\t}\n\treturn \"\";\n}\n\nfunction delegatedMessagesChanged(messages: Message[]): boolean {\n\tfor (const message of messages) {\n\t\tif (message.role !== \"assistant\") continue;\n\t\tfor (const block of (message as AssistantMessage).content) {\n\t\t\tif (block.type !== \"toolCall\") continue;\n\t\t\tif (block.name === \"write\" || block.name === \"edit\") return true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction coerceMessages(messages: unknown[]): Message[] {\n\tif (!Array.isArray(messages)) return [];\n\treturn messages as Message[];\n}\n\nfunction coerceParallelResults(parallelResults: DelegatedSubagentParallelResult[] | undefined): DelegatedPromptParallelResult[] {\n\tif (!Array.isArray(parallelResults)) return [];\n\treturn parallelResults.map((result) => {\n\t\tconst messages = coerceMessages(result.messages);\n\t\treturn {\n\t\t\tagent: result.agent,\n\t\t\ttext: extractDelegatedText(messages),\n\t\t\tmessages,\n\t\t\tisError: result.isError === true,\n\t\t\terrorText: result.errorText,\n\t\t};\n\t});\n}\n\nfunction renderParallelDelegatedText(\n\tresults: Array<{\n\t\tagent: string;\n\t\tmessages: Message[];\n\t}>,\n): string {\n\treturn results\n\t\t.map((result, index) => {\n\t\t\tconst text = extractDelegatedText(result.messages);\n\t\t\tconst body = text || \"(no assistant text)\";\n\t\t\treturn `=== Parallel Task ${index + 1} (${result.agent}) ===\\n${body}`;\n\t\t})\n\t\t.join(\"\\n\\n\");\n}\n\nfunction resolveDelegationName(prompt: PromptWithModel, override?: SubagentOverride): string | undefined {\n\tif (override) {\n\t\treturn override.agent || (typeof prompt.subagent === \"string\" ? prompt.subagent : DEFAULT_SUBAGENT_NAME);\n\t}\n\tif (prompt.subagent === true) return DEFAULT_SUBAGENT_NAME;\n\tif (typeof prompt.subagent === \"string\") return prompt.subagent;\n\treturn undefined;\n}\n\ninterface PreparedDelegatedTask {\n\tpromptName: string;\n\tagent: string;\n\ttask: string;\n\tcontext: \"fresh\" | \"fork\";\n\tmodel: string;\n\tcwd: string;\n}\n\nasync function prepareDelegatedTask(\n\ttask: DelegatedParallelTaskInput,\n\tctx: ExtensionContext,\n\tcurrentModel: Model<any> | undefined,\n\toverride: SubagentOverride | undefined,\n\tinheritedModel: Model<any> | undefined,\n\ttaskPreamble: string | undefined,\n): Promise<PreparedDelegatedTask> {\n\tconst requestedAgent = resolveDelegationName(task.prompt, override);\n\tif (!requestedAgent) {\n\t\tthrow new Error(`Prompt \\`${task.prompt.name}\\` is not configured for delegated execution.`);\n\t}\n\tconst effectiveCwd = task.prompt.cwd ?? ctx.cwd;\n\tif (effectiveCwd !== ctx.cwd && !existsSync(effectiveCwd)) {\n\t\tthrow new Error(`cwd directory does not exist: ${effectiveCwd}`);\n\t}\n\tconst agent = requestedAgent;\n\tconst preparationOptions = inheritedModel === undefined ? undefined : { inheritedModel };\n\tconst prepared = await preparePromptExecution(\n\t\ttask.prompt,\n\t\ttask.args,\n\t\tcurrentModel,\n\t\tctx.modelRegistry,\n\t\tpreparationOptions,\n\t);\n\tif (!prepared) {\n\t\tthrow new Error(`No available model from: ${task.prompt.models.join(\", \")}`);\n\t}\n\tif (\"message\" in prepared) {\n\t\tif (prepared.warning) notify(ctx, prepared.warning, \"warning\");\n\t\tthrow new Error(prepared.message);\n\t}\n\tif (prepared.warning) notify(ctx, prepared.warning, \"warning\");\n\tlet taskText = prepared.content;\n\tif (!task.prompt.inheritContext && taskPreamble) {\n\t\ttaskText = `${taskPreamble}\\n\\n---\\n\\n${prepared.content}`;\n\t}\n\tif (task.taskPrefix) {\n\t\ttaskText = `${task.taskPrefix}\\n\\n${taskText}`;\n\t}\n\n\treturn {\n\t\tpromptName: task.prompt.name,\n\t\tagent,\n\t\ttask: taskText,\n\t\tcontext: task.prompt.inheritContext ? \"fork\" : \"fresh\",\n\t\tmodel: `${prepared.selectedModel.model.provider}/${prepared.selectedModel.model.id}`,\n\t\tcwd: effectiveCwd,\n\t};\n}\n\nfunction formatProgressStatus(update: DelegatedSubagentUpdate): string | undefined {\n\tif (update.currentTool) {\n\t\treturn `running ${update.currentTool}${update.currentToolArgs ? ` ${update.currentToolArgs}` : \"\"}`;\n\t}\n\tif (update.taskProgress?.some((task) => task.status === \"running\")) {\n\t\treturn \"running\";\n\t}\n\tif (update.toolCount && update.toolCount > 0) {\n\t\treturn `completed ${update.toolCount} tool${update.toolCount === 1 ? \"\" : \"s\"}`;\n\t}\n\treturn undefined;\n}\n\nfunction formatParallelProgressStatus(update: DelegatedSubagentUpdate): string | undefined {\n\tif (!update.taskProgress || update.taskProgress.length === 0) return undefined;\n\tconst completed = update.taskProgress.filter((task) => task.status === \"completed\").length;\n\treturn `parallel ${completed}/${update.taskProgress.length} running`;\n}\n\nfunction hasOwn<T extends object>(value: T, key: PropertyKey): boolean {\n\treturn Object.prototype.hasOwnProperty.call(value, key);\n}\n\nfunction sanitizeOutputLines(lines: string[] | undefined): string[] {\n\tif (!lines || lines.length === 0) return [];\n\treturn lines.filter((line): line is string => typeof line === \"string\" && line.trim() && line.trim() !== \"(running...)\");\n}\n\nfunction collectNewOutputLines(previous: string[] | undefined, next: string[] | undefined): string[] {\n\tconst previousLines = sanitizeOutputLines(previous);\n\tconst nextLines = sanitizeOutputLines(next);\n\tif (nextLines.length === 0) return [];\n\tif (previousLines.length === 0) return nextLines;\n\n\tconst overlapLimit = Math.min(previousLines.length, nextLines.length);\n\tfor (let overlap = overlapLimit; overlap > 0; overlap--) {\n\t\tlet matches = true;\n\t\tfor (let index = 0; index < overlap; index++) {\n\t\t\tif (previousLines[previousLines.length - overlap + index] !== nextLines[index]) {\n\t\t\t\tmatches = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (matches) {\n\t\t\treturn nextLines.slice(overlap);\n\t\t}\n\t}\n\n\treturn nextLines;\n}\n\nfunction mergeTaskProgress(\n\trequestTasks: DelegatedSubagentTask[] | undefined,\n\texistingProgress: DelegatedSubagentTaskProgress[] | undefined,\n\tincomingProgress: DelegatedSubagentTaskProgress[] | undefined,\n): DelegatedSubagentTaskProgress[] | undefined {\n\tif (!requestTasks || requestTasks.length === 0) return incomingProgress;\n\n\tconst merged = requestTasks.map((task, index) => {\n\t\tconst existing =\n\t\t\texistingProgress?.find((entry) => entry.index === index) ??\n\t\t\texistingProgress?.[index] ??\n\t\t\texistingProgress?.find((entry) => entry.agent === task.agent);\n\t\treturn {\n\t\t\tindex,\n\t\t\tagent: task.agent,\n\t\t\tstatus: existing?.status ?? \"pending\",\n\t\t\tcurrentTool: existing?.currentTool,\n\t\t\tcurrentToolArgs: existing?.currentToolArgs,\n\t\t\trecentOutput: existing?.recentOutput,\n\t\t\trecentOutputLines: existing?.recentOutputLines,\n\t\t\trecentTools: existing?.recentTools,\n\t\t\tmodel: existing?.model ?? task.model,\n\t\t\ttoolCount: existing?.toolCount,\n\t\t\tdurationMs: existing?.durationMs,\n\t\t\ttokens: existing?.tokens,\n\t\t};\n\t});\n\n\tif (!incomingProgress || incomingProgress.length === 0) return merged;\n\n\tconst consumed = new Set<number>();\n\tfor (const entry of incomingProgress) {\n\t\tlet targetIndex =\n\t\t\ttypeof entry.index === \"number\" && entry.index >= 0 && entry.index < merged.length\n\t\t\t\t? entry.index\n\t\t\t\t: -1;\n\n\t\tif (targetIndex < 0) {\n\t\t\ttargetIndex = merged.findIndex((task, index) => task.agent === entry.agent && !consumed.has(index));\n\t\t}\n\t\tif (targetIndex < 0) continue;\n\t\tconsumed.add(targetIndex);\n\t\tconst current = merged[targetIndex]!;\n\t\tmerged[targetIndex] = {\n\t\t\tindex: targetIndex,\n\t\t\tagent: current.agent,\n\t\t\tstatus: entry.status ?? current.status,\n\t\t\tcurrentTool: hasOwn(entry, \"currentTool\") ? entry.currentTool : current.currentTool,\n\t\t\tcurrentToolArgs: hasOwn(entry, \"currentToolArgs\") ? entry.currentToolArgs : current.currentToolArgs,\n\t\t\trecentOutput: entry.recentOutput ?? current.recentOutput,\n\t\t\trecentOutputLines: entry.recentOutputLines ?? current.recentOutputLines,\n\t\t\trecentTools: entry.recentTools ?? current.recentTools,\n\t\t\tmodel: entry.model ?? current.model,\n\t\t\ttoolCount: entry.toolCount ?? current.toolCount,\n\t\t\tdurationMs: entry.durationMs ?? current.durationMs,\n\t\t\ttokens: entry.tokens ?? current.tokens,\n\t\t};\n\t}\n\n\treturn merged;\n}\n\nasync function requestDelegatedRun(\n\tpi: ExtensionAPI,\n\tctx: ExtensionContext,\n\trequest: DelegatedSubagentRequest,\n\tsignal?: AbortSignal,\n): Promise<DelegatedSubagentResponse> {\n\treturn await new Promise((resolve, reject) => {\n\t\tconst requestLabel = request.tasks && request.tasks.length > 0 ? `parallel(${request.tasks.length})` : request.agent;\n\t\tlet done = false;\n\t\tlet started = false;\n\t\tconst startTimeoutMs = Number(process.env.PI_PROMPT_SUBAGENT_START_TIMEOUT_MS ?? \"15000\");\n\t\tconst effectiveTimeout = Number.isFinite(startTimeoutMs) && startTimeoutMs > 0 ? startTimeoutMs : 15_000;\n\t\tconst startTimeout = setTimeout(() => {\n\t\t\tfinish(() => reject(new Error(`Delegated subagent \\`${requestLabel}\\` did not start within ${Math.round(effectiveTimeout / 1000)}s. Check that the pi-subagents extension is loaded.`)));\n\t\t}, effectiveTimeout);\n\n\t\tconst onStarted = (data: unknown) => {\n\t\t\tif (done || !data || typeof data !== \"object\") return;\n\t\t\tconst requestId = (data as { requestId?: unknown }).requestId;\n\t\t\tif (requestId !== request.requestId) return;\n\t\t\tstarted = true;\n\t\t\tclearTimeout(startTimeout);\n\t\t\tupdateDelegatedLiveState(request.requestId, {\n\t\t\t\tstatus: \"running...\",\n\t\t\t\ttoolCount: 0,\n\t\t\t\trecentOutput: [],\n\t\t\t\ttaskProgress: request.tasks?.map((task, index) => ({ index, agent: task.agent, status: \"pending\" })) ?? [],\n\t\t\t});\n\t\t\tshowWidget();\n\t\t};\n\n\t\tconst onResponse = (data: unknown) => {\n\t\t\tif (done || !data || typeof data !== \"object\") return;\n\t\t\tconst payload = data as Partial<DelegatedSubagentResponse>;\n\t\t\tif (payload.requestId !== request.requestId) return;\n\t\t\tclearTimeout(startTimeout);\n\t\t\tupdateDelegatedLiveState(request.requestId, {\n\t\t\t\tstatus: payload.isError ? \"failed\" : \"completed\",\n\t\t\t\ttaskProgress: payload.parallelResults?.map((result, index) => ({\n\t\t\t\t\tindex,\n\t\t\t\t\tagent: result.agent,\n\t\t\t\t\tstatus: result.isError ? \"failed\" : \"completed\",\n\t\t\t\t})),\n\t\t\t});\n\t\t\tclearWidget();\n\t\t\tfinish(() => resolve(payload as DelegatedSubagentResponse));\n\t\t};\n\n\t\tlet lastProgressStatus = \"\";\n\t\tlet widgetSet = false;\n\t\tlet refreshTimer: ReturnType<typeof setInterval> | null = null;\n\n\t\tconst showWidget = () => {\n\t\t\tif (!ctx.hasUI || widgetSet) return;\n\t\t\twidgetSet = true;\n\t\t\tctx.ui.setWidget(\n\t\t\t\tDELEGATED_WIDGET_KEY,\n\t\t\t\t(_tui, theme) => createDelegatedProgressWidget(request.requestId, request.agent, request.context, request.task, request.tasks, theme, request.model),\n\t\t\t\t{ placement: \"aboveEditor\" },\n\t\t\t);\n\t\t\t// Force TUI repaints every second so the elapsed timer ticks during idle periods\n\t\t\trefreshTimer = setInterval(() => {\n\t\t\t\tif (done) return;\n\t\t\t\tconst statusLine = lastProgressStatus || \"running...\";\n\t\t\t\tctx.ui.setStatus(\"prompt-subagent\", `delegating to ${requestLabel} · ${statusLine}`);\n\t\t\t}, 1000);\n\t\t};\n\n\t\tconst clearWidget = () => {\n\t\t\tif (refreshTimer) {\n\t\t\t\tclearInterval(refreshTimer);\n\t\t\t\trefreshTimer = null;\n\t\t\t}\n\t\t\tif (ctx.hasUI && widgetSet) {\n\t\t\t\tctx.ui.setWidget(DELEGATED_WIDGET_KEY, undefined);\n\t\t\t\twidgetSet = false;\n\t\t\t}\n\t\t};\n\n\t\tconst onUpdate = (data: unknown) => {\n\t\t\tif (done || !data || typeof data !== \"object\") return;\n\t\t\tconst update = data as DelegatedSubagentUpdate;\n\t\t\tif (update.requestId !== request.requestId) return;\n\n\t\t\tconst previousTaskProgress = getDelegatedLiveState(request.requestId)?.taskProgress;\n\t\t\tconst mergedTaskProgress = mergeTaskProgress(\n\t\t\t\trequest.tasks,\n\t\t\t\tpreviousTaskProgress,\n\t\t\t\tupdate.taskProgress,\n\t\t\t);\n\t\t\tconst isParallel = (request.tasks?.length ?? 0) > 0;\n\t\t\tconst progressStatus = isParallel\n\t\t\t\t? formatParallelProgressStatus({\n\t\t\t\t\t...update,\n\t\t\t\t\ttaskProgress: mergedTaskProgress,\n\t\t\t\t}) ?? formatProgressStatus(update)\n\t\t\t\t: formatProgressStatus(update);\n\t\t\tif (progressStatus) {\n\t\t\t\tlastProgressStatus = progressStatus;\n\t\t\t}\n\n\t\t\tupdateDelegatedLiveState(request.requestId, {\n\t\t\t\tstatus: progressStatus ?? (lastProgressStatus || \"running...\"),\n\t\t\t\tcurrentTool: update.currentTool,\n\t\t\t\tcurrentToolArgs: update.currentToolArgs,\n\t\t\t\trecentTools: update.recentTools,\n\t\t\t\tmodel: update.model,\n\t\t\t\ttoolCount: update.toolCount,\n\t\t\t\tdurationMs: update.durationMs,\n\t\t\t\ttokens: update.tokens,\n\t\t\t\ttaskProgress: mergedTaskProgress,\n\t\t\t});\n\n\t\t\tif (!isParallel) {\n\t\t\t\tif (update.recentOutputLines && update.recentOutputLines.length > 0) {\n\t\t\t\t\tupdateDelegatedLiveState(request.requestId, {\n\t\t\t\t\t\trecentOutput: sanitizeOutputLines(update.recentOutputLines),\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tappendDelegatedLiveOutput(request.requestId, update.recentOutput);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isParallel && mergedTaskProgress) {\n\t\t\t\tfor (const task of mergedTaskProgress) {\n\t\t\t\t\tconst previousTask =\n\t\t\t\t\t\tpreviousTaskProgress?.find((entry) => entry.index === task.index) ??\n\t\t\t\t\t\tpreviousTaskProgress?.find((entry) => entry.agent === task.agent);\n\n\t\t\t\t\tconst newOutputLines = collectNewOutputLines(previousTask?.recentOutputLines, task.recentOutputLines);\n\t\t\t\t\tif (newOutputLines.length > 0) {\n\t\t\t\t\t\tfor (const line of newOutputLines) {\n\t\t\t\t\t\t\tappendDelegatedLiveOutput(request.requestId, line);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!task.recentOutput || task.recentOutput === previousTask?.recentOutput) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tappendDelegatedLiveOutput(request.requestId, task.recentOutput);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!ctx.hasUI) return;\n\t\t\tconst statusLine = progressStatus ?? (lastProgressStatus || \"running...\");\n\t\t\tctx.ui.setStatus(\"prompt-subagent\", `delegating to ${requestLabel} · ${statusLine}`);\n\t\t};\n\n\t\tconst onTerminalInput = ctx.hasUI\n\t\t\t? ctx.ui.onTerminalInput((input) => {\n\t\t\t\tif (!matchesKey(input, Key.escape)) return undefined;\n\t\t\t\tpi.events.emit(PROMPT_TEMPLATE_SUBAGENT_CANCEL_EVENT, {\n\t\t\t\t\trequestId: request.requestId,\n\t\t\t\t\treason: \"escape\",\n\t\t\t\t});\n\t\t\t\tfinish(() => reject(new Error(\"Delegated prompt cancelled.\")));\n\t\t\t\treturn { consume: true };\n\t\t\t})\n\t\t\t: undefined;\n\n\t\tconst unsubscribeStarted = pi.events.on(PROMPT_TEMPLATE_SUBAGENT_STARTED_EVENT, onStarted);\n\t\tconst unsubscribeResponse = pi.events.on(PROMPT_TEMPLATE_SUBAGENT_RESPONSE_EVENT, onResponse);\n\t\tconst unsubscribeUpdate = pi.events.on(PROMPT_TEMPLATE_SUBAGENT_UPDATE_EVENT, onUpdate);\n\t\tlet onAbort: (() => void) | undefined;\n\n\t\tconst finish = (next: () => void) => {\n\t\t\tif (done) return;\n\t\t\tdone = true;\n\t\t\tclearTimeout(startTimeout);\n\t\t\tunsubscribeStarted();\n\t\t\tunsubscribeResponse();\n\t\t\tunsubscribeUpdate();\n\t\t\tonTerminalInput?.();\n\t\t\tclearWidget();\n\t\t\tif (signal && onAbort) signal.removeEventListener(\"abort\", onAbort);\n\t\t\tnext();\n\t\t};\n\n\t\tonAbort = () => {\n\t\t\tpi.events.emit(PROMPT_TEMPLATE_SUBAGENT_CANCEL_EVENT, {\n\t\t\t\trequestId: request.requestId,\n\t\t\t\treason: \"abort\",\n\t\t\t});\n\t\t\tfinish(() => reject(new Error(\"Delegated prompt cancelled.\")));\n\t\t};\n\t\tif (signal) {\n\t\t\tif (signal.aborted) {\n\t\t\t\tonAbort();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsignal.addEventListener(\"abort\", onAbort, { once: true });\n\t\t}\n\n\t\tpi.events.emit(PROMPT_TEMPLATE_SUBAGENT_REQUEST_EVENT, request);\n\n\t\t// The bridge emits STARTED_EVENT synchronously during the REQUEST_EVENT\n\t\t// emit (all sync before the first await in the async handler chain).\n\t\t// If started is still false, no bridge received the request.\n\t\tif (!started && done) return; // already finished (e.g. response came synchronously)\n\t\tif (!started) {\n\t\t\tfinish(() => reject(new Error(\n\t\t\t\t`No loaded pi-subagents bridge responded for \\`${requestLabel}\\`. ` +\n\t\t\t\t`Install or load pi-subagents and make sure no extension name conflicts are blocking it.`,\n\t\t\t)));\n\t\t\treturn;\n\t\t}\n\t});\n}\n\nexport async function executeSubagentPromptStep(options: DelegatedPromptOptions): Promise<DelegatedPromptOutcome | undefined> {\n\tconst { pi, ctx, currentModel, override, signal, inheritedModel, taskPreamble, allowPartialFailures } = options;\n\tconst isParallelRequest = \"parallel\" in options;\n\n\tconst tasks = isParallelRequest\n\t\t? options.parallel\n\t\t: [{ prompt: options.prompt, args: options.args }];\n\tif (tasks.length === 0) return undefined;\n\n\tconst preparedTasks: PreparedDelegatedTask[] = [];\n\tfor (const task of tasks) {\n\t\tconst preparedTask = await prepareDelegatedTask(task, ctx, currentModel, override, inheritedModel, taskPreamble);\n\t\tpreparedTasks.push(preparedTask);\n\t}\n\n\tconst requestContext = preparedTasks[0]!.context;\n\tconst requestCwd = preparedTasks[0]!.cwd;\n\tfor (const preparedTask of preparedTasks) {\n\t\tif (preparedTask.context !== requestContext) {\n\t\t\tthrow new Error(\"Parallel delegated prompts must share the same inheritContext setting.\");\n\t\t}\n\t\tif (options.worktree === true && preparedTask.cwd !== requestCwd) {\n\t\t\tthrow new Error(\"Parallel delegated prompts with worktree enabled must share the same cwd setting.\");\n\t\t}\n\t}\n\n\tconst request: DelegatedSubagentRequest = {\n\t\trequestId: randomUUID(),\n\t\tagent: preparedTasks[0]!.agent,\n\t\ttask: preparedTasks[0]!.task,\n\t\t...(isParallelRequest\n\t\t\t? {\n\t\t\t\ttasks: preparedTasks.map<DelegatedSubagentTask>((task) => ({\n\t\t\t\t\tagent: task.agent,\n\t\t\t\t\ttask: task.task,\n\t\t\t\t\tmodel: task.model,\n\t\t\t\t\tcwd: task.cwd,\n\t\t\t\t})),\n\t\t\t}\n\t\t\t: {}),\n\t\tcontext: requestContext,\n\t\tmodel: preparedTasks[0]!.model,\n\t\tcwd: requestCwd,\n\t\t...(options.worktree ? { worktree: true } : {}),\n\t};\n\n\tconst promptLabel = preparedTasks.map((task) => task.promptName).join(\", \");\n\tconst statusLabel = isParallelRequest ? `parallel(${preparedTasks.length})` : preparedTasks[0]!.agent;\n\tif (ctx.hasUI) {\n\t\tctx.ui.setStatus(\"prompt-subagent\", `delegating to ${statusLabel}`);\n\t\tctx.ui.setWorkingMessage(isParallelRequest ? `Running delegated parallel prompts with ${statusLabel}...` : `Running delegated prompt with ${statusLabel}...`);\n\t}\n\tnotify(\n\t\tctx,\n\t\tisParallelRequest\n\t\t\t? `Delegating parallel prompts (${promptLabel})`\n\t\t\t: `Delegating prompt \\`${preparedTasks[0]!.promptName}\\` to subagent \\`${preparedTasks[0]!.agent}\\``,\n\t\t\"info\",\n\t);\n\n\ttry {\n\t\tconst response = await requestDelegatedRun(pi, ctx, request, signal);\n\t\tif (response.isError) {\n\t\t\tthrow new Error(\n\t\t\t\t`Delegated prompt execution failed: ${response.errorText || \"unknown delegated error\"}`,\n\t\t\t);\n\t\t}\n\n\t\tif (isParallelRequest) {\n\t\t\tconst parallelResults = coerceParallelResults(response.parallelResults);\n\t\t\tif (parallelResults.length === 0) {\n\t\t\t\tthrow new Error(\"Delegated parallel execution returned no results.\");\n\t\t\t}\n\t\t\tconst failures = parallelResults.filter((result) => result.isError);\n\t\t\tif (!allowPartialFailures && failures.length > 0) {\n\t\t\t\tconst failureText = failures\n\t\t\t\t\t.map((failure) => `${failure.agent}: ${failure.errorText || \"unknown delegated error\"}`)\n\t\t\t\t\t.join(\"; \");\n\t\t\t\tthrow new Error(`Delegated parallel execution failed: ${failureText}`);\n\t\t\t}\n\n\t\t\tconst text = response.contentText?.trim() || renderParallelDelegatedText(parallelResults);\n\t\t\tconst changed =\n\t\t\t\tparallelResults.some((result) => delegatedMessagesChanged(result.messages))\n\t\t\t\t|| text.includes(\"=== Worktree Changes ===\");\n\t\t\tpi.sendMessage({\n\t\t\t\tcustomType: PROMPT_TEMPLATE_SUBAGENT_MESSAGE_TYPE,\n\t\t\t\tcontent: text,\n\t\t\t\tdisplay: true,\n\t\t\t\tdetails: {\n\t\t\t\t\trequestId: response.requestId,\n\t\t\t\t\tagent: request.agent,\n\t\t\t\t\ttask: preparedTasks.map((task) => task.task).join(\"\\n\\n\"),\n\t\t\t\t\tcontext: response.context,\n\t\t\t\t\tmodel: response.model,\n\t\t\t\t\tmessages: [],\n\t\t\t\t\tparallelResults,\n\t\t\t\t\ttext,\n\t\t\t\t\tchanged,\n\t\t\t\t\tisError: false,\n\t\t\t\t\terrorText: response.errorText,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tchanged,\n\t\t\t\ttext,\n\t\t\t\tagent: request.agent,\n\t\t\t\tparallelResults,\n\t\t\t};\n\t\t}\n\n\t\tconst messages = coerceMessages(response.messages);\n\t\tconst text = extractDelegatedText(messages);\n\t\tif (!text) {\n\t\t\tthrow new Error(\"Delegated subagent returned no assistant text.\");\n\t\t}\n\n\t\tconst changed = delegatedMessagesChanged(messages);\n\t\tpi.sendMessage({\n\t\t\tcustomType: PROMPT_TEMPLATE_SUBAGENT_MESSAGE_TYPE,\n\t\t\tcontent: text,\n\t\t\tdisplay: true,\n\t\t\tdetails: {\n\t\t\t\trequestId: response.requestId,\n\t\t\t\tagent: preparedTasks[0]!.agent,\n\t\t\t\ttask: request.task,\n\t\t\t\tcontext: response.context,\n\t\t\t\tmodel: response.model,\n\t\t\t\tmessages,\n\t\t\t\ttext,\n\t\t\t\tchanged,\n\t\t\t\tisError: false,\n\t\t\t\terrorText: response.errorText,\n\t\t\t},\n\t\t});\n\n\t\treturn {\n\t\t\tchanged,\n\t\t\ttext,\n\t\t\tagent: preparedTasks[0]!.agent,\n\t\t};\n\t} catch (error) {\n\t\tconst cause = error instanceof Error ? error : new Error(String(error));\n\t\tconst responseText = cause.message;\n\t\tif (isParallelRequest) {\n\t\t\tthrow new Error(`Parallel delegated prompts (${promptLabel}) failed: ${responseText}`, { cause });\n\t\t}\n\t\tthrow new Error(`Prompt \\`${preparedTasks[0]!.promptName}\\` delegated subagent \\`${preparedTasks[0]!.agent}\\` failed: ${responseText}`, { cause });\n\t} finally {\n\t\tclearDelegatedLiveState(request.requestId);\n\t\tif (ctx.hasUI) {\n\t\t\tctx.ui.setStatus(\"prompt-subagent\", undefined);\n\t\t\tctx.ui.setWorkingMessage();\n\t\t}\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"subagent-step.js","sourceRoot":"","sources":["../../../src/builtin-extensions/pi-prompt-template-model/subagent-step.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport { existsSync } from \"node:fs\";\nimport { randomUUID } from \"node:crypto\";\nimport type { AssistantMessage, Message } from \"@ashx-j/lunr-ai\";\nimport type { ExtensionAPI, ExtensionContext } from \"@ashx-j/lunr\";\nimport type { Model } from \"@ashx-j/lunr-ai\";\nimport { Key, matchesKey } from \"@ashx-j/lunr-tui\";\nimport { preparePromptExecution } from \"./prompt-execution.ts\";\nimport type { PromptWithModel } from \"./prompt-loader.ts\";\nimport { notify } from \"./notifications.ts\";\nimport {\n\tDEFAULT_SUBAGENT_NAME,\n\tappendDelegatedLiveOutput,\n\tclearDelegatedLiveState,\n\tgetDelegatedLiveState,\n\tPROMPT_TEMPLATE_SUBAGENT_CANCEL_EVENT,\n\tPROMPT_TEMPLATE_SUBAGENT_MESSAGE_TYPE,\n\tPROMPT_TEMPLATE_SUBAGENT_REQUEST_EVENT,\n\tPROMPT_TEMPLATE_SUBAGENT_RESPONSE_EVENT,\n\tPROMPT_TEMPLATE_SUBAGENT_STARTED_EVENT,\n\tPROMPT_TEMPLATE_SUBAGENT_UPDATE_EVENT,\n\tupdateDelegatedLiveState,\n\ttype DelegatedSubagentParallelResult,\n\ttype DelegatedSubagentRequest,\n\ttype DelegatedSubagentResponse,\n\ttype DelegatedSubagentTask,\n\ttype DelegatedSubagentTaskProgress,\n\ttype DelegatedSubagentUpdate,\n} from \"./subagent-runtime.ts\";\nimport type { SubagentOverride } from \"./args.ts\";\nimport { createDelegatedProgressWidget, DELEGATED_WIDGET_KEY } from \"./subagent-widget.ts\";\n\ninterface DelegatedPromptBaseOptions {\n\tpi: ExtensionAPI;\n\tctx: ExtensionContext;\n\tcurrentModel: Model<any> | undefined;\n\toverride?: SubagentOverride;\n\tsignal?: AbortSignal;\n\tinheritedModel?: Model<any>;\n\ttaskPreamble?: string;\n\tworktree?: boolean;\n\tallowPartialFailures?: boolean;\n}\n\ninterface DelegatedSinglePromptOptions extends DelegatedPromptBaseOptions {\n\tprompt: PromptWithModel;\n\targs: string[];\n\tparallel?: never;\n}\n\ninterface DelegatedParallelTaskInput {\n\tprompt: PromptWithModel;\n\targs: string[];\n\ttaskPrefix?: string;\n}\n\ninterface DelegatedParallelPromptOptions extends DelegatedPromptBaseOptions {\n\tparallel: DelegatedParallelTaskInput[];\n\tprompt?: never;\n\targs?: never;\n}\n\ntype DelegatedPromptOptions = DelegatedSinglePromptOptions | DelegatedParallelPromptOptions;\n\nexport interface DelegatedPromptParallelResult {\n\tagent: string;\n\ttext: string;\n\tmessages: Message[];\n\tisError: boolean;\n\terrorText?: string;\n}\n\nexport interface DelegatedPromptOutcome {\n\tchanged: boolean;\n\ttext: string;\n\tagent: string;\n\tparallelResults?: DelegatedPromptParallelResult[];\n}\n\nfunction extractTextFromBlocks(content: AssistantMessage[\"content\"]): string {\n\tfor (let i = content.length - 1; i >= 0; i--) {\n\t\tconst block = content[i];\n\t\tif (block.type === \"text\") {\n\t\t\tconst trimmed = block.text.trim();\n\t\t\tif (trimmed) return trimmed;\n\t\t}\n\t}\n\treturn \"\";\n}\n\nfunction extractDelegatedText(messages: Message[]): string {\n\tfor (let i = messages.length - 1; i >= 0; i--) {\n\t\tconst message = messages[i];\n\t\tif (message.role !== \"assistant\") continue;\n\t\tconst text = extractTextFromBlocks((message as AssistantMessage).content);\n\t\tif (text) return text;\n\t}\n\treturn \"\";\n}\n\nfunction delegatedMessagesChanged(messages: Message[]): boolean {\n\tfor (const message of messages) {\n\t\tif (message.role !== \"assistant\") continue;\n\t\tfor (const block of (message as AssistantMessage).content) {\n\t\t\tif (block.type !== \"toolCall\") continue;\n\t\t\tif (block.name === \"write\" || block.name === \"edit\") return true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction coerceMessages(messages: unknown[]): Message[] {\n\tif (!Array.isArray(messages)) return [];\n\treturn messages as Message[];\n}\n\nfunction coerceParallelResults(parallelResults: DelegatedSubagentParallelResult[] | undefined): DelegatedPromptParallelResult[] {\n\tif (!Array.isArray(parallelResults)) return [];\n\treturn parallelResults.map((result) => {\n\t\tconst messages = coerceMessages(result.messages);\n\t\treturn {\n\t\t\tagent: result.agent,\n\t\t\ttext: extractDelegatedText(messages),\n\t\t\tmessages,\n\t\t\tisError: result.isError === true,\n\t\t\terrorText: result.errorText,\n\t\t};\n\t});\n}\n\nfunction renderParallelDelegatedText(\n\tresults: Array<{\n\t\tagent: string;\n\t\tmessages: Message[];\n\t}>,\n): string {\n\treturn results\n\t\t.map((result, index) => {\n\t\t\tconst text = extractDelegatedText(result.messages);\n\t\t\tconst body = text || \"(no assistant text)\";\n\t\t\treturn `=== Parallel Task ${index + 1} (${result.agent}) ===\\n${body}`;\n\t\t})\n\t\t.join(\"\\n\\n\");\n}\n\nfunction resolveDelegationName(prompt: PromptWithModel, override?: SubagentOverride): string | undefined {\n\tif (override) {\n\t\treturn override.agent || (typeof prompt.subagent === \"string\" ? prompt.subagent : DEFAULT_SUBAGENT_NAME);\n\t}\n\tif (prompt.subagent === true) return DEFAULT_SUBAGENT_NAME;\n\tif (typeof prompt.subagent === \"string\") return prompt.subagent;\n\treturn undefined;\n}\n\ninterface PreparedDelegatedTask {\n\tpromptName: string;\n\tagent: string;\n\ttask: string;\n\tcontext: \"fresh\" | \"fork\";\n\tmodel: string;\n\tcwd: string;\n}\n\nasync function prepareDelegatedTask(\n\ttask: DelegatedParallelTaskInput,\n\tctx: ExtensionContext,\n\tcurrentModel: Model<any> | undefined,\n\toverride: SubagentOverride | undefined,\n\tinheritedModel: Model<any> | undefined,\n\ttaskPreamble: string | undefined,\n): Promise<PreparedDelegatedTask> {\n\tconst requestedAgent = resolveDelegationName(task.prompt, override);\n\tif (!requestedAgent) {\n\t\tthrow new Error(`Prompt \\`${task.prompt.name}\\` is not configured for delegated execution.`);\n\t}\n\tconst effectiveCwd = task.prompt.cwd ?? ctx.cwd;\n\tif (effectiveCwd !== ctx.cwd && !existsSync(effectiveCwd)) {\n\t\tthrow new Error(`cwd directory does not exist: ${effectiveCwd}`);\n\t}\n\tconst agent = requestedAgent;\n\tconst preparationOptions = inheritedModel === undefined ? undefined : { inheritedModel };\n\tconst prepared = await preparePromptExecution(\n\t\ttask.prompt,\n\t\ttask.args,\n\t\tcurrentModel,\n\t\tctx.modelRegistry,\n\t\tpreparationOptions,\n\t);\n\tif (!prepared) {\n\t\tthrow new Error(`No available model from: ${task.prompt.models.join(\", \")}`);\n\t}\n\tif (\"message\" in prepared) {\n\t\tif (prepared.warning) notify(ctx, prepared.warning, \"warning\");\n\t\tthrow new Error(prepared.message);\n\t}\n\tif (prepared.warning) notify(ctx, prepared.warning, \"warning\");\n\tlet taskText = prepared.content;\n\tif (!task.prompt.inheritContext && taskPreamble) {\n\t\ttaskText = `${taskPreamble}\\n\\n---\\n\\n${prepared.content}`;\n\t}\n\tif (task.taskPrefix) {\n\t\ttaskText = `${task.taskPrefix}\\n\\n${taskText}`;\n\t}\n\n\treturn {\n\t\tpromptName: task.prompt.name,\n\t\tagent,\n\t\ttask: taskText,\n\t\tcontext: task.prompt.inheritContext ? \"fork\" : \"fresh\",\n\t\tmodel: `${prepared.selectedModel.model.provider}/${prepared.selectedModel.model.id}`,\n\t\tcwd: effectiveCwd,\n\t};\n}\n\nfunction formatProgressStatus(update: DelegatedSubagentUpdate): string | undefined {\n\tif (update.currentTool) {\n\t\treturn `running ${update.currentTool}${update.currentToolArgs ? ` ${update.currentToolArgs}` : \"\"}`;\n\t}\n\tif (update.taskProgress?.some((task) => task.status === \"running\")) {\n\t\treturn \"running\";\n\t}\n\tif (update.toolCount && update.toolCount > 0) {\n\t\treturn `completed ${update.toolCount} tool${update.toolCount === 1 ? \"\" : \"s\"}`;\n\t}\n\treturn undefined;\n}\n\nfunction formatParallelProgressStatus(update: DelegatedSubagentUpdate): string | undefined {\n\tif (!update.taskProgress || update.taskProgress.length === 0) return undefined;\n\tconst completed = update.taskProgress.filter((task) => task.status === \"completed\").length;\n\treturn `parallel ${completed}/${update.taskProgress.length} running`;\n}\n\nfunction hasOwn<T extends object>(value: T, key: PropertyKey): boolean {\n\treturn Object.prototype.hasOwnProperty.call(value, key);\n}\n\nfunction sanitizeOutputLines(lines: string[] | undefined): string[] {\n\tif (!lines || lines.length === 0) return [];\n\treturn lines.filter((line): line is string => typeof line === \"string\" && line.trim() && line.trim() !== \"(running...)\");\n}\n\nfunction collectNewOutputLines(previous: string[] | undefined, next: string[] | undefined): string[] {\n\tconst previousLines = sanitizeOutputLines(previous);\n\tconst nextLines = sanitizeOutputLines(next);\n\tif (nextLines.length === 0) return [];\n\tif (previousLines.length === 0) return nextLines;\n\n\tconst overlapLimit = Math.min(previousLines.length, nextLines.length);\n\tfor (let overlap = overlapLimit; overlap > 0; overlap--) {\n\t\tlet matches = true;\n\t\tfor (let index = 0; index < overlap; index++) {\n\t\t\tif (previousLines[previousLines.length - overlap + index] !== nextLines[index]) {\n\t\t\t\tmatches = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (matches) {\n\t\t\treturn nextLines.slice(overlap);\n\t\t}\n\t}\n\n\treturn nextLines;\n}\n\nfunction mergeTaskProgress(\n\trequestTasks: DelegatedSubagentTask[] | undefined,\n\texistingProgress: DelegatedSubagentTaskProgress[] | undefined,\n\tincomingProgress: DelegatedSubagentTaskProgress[] | undefined,\n): DelegatedSubagentTaskProgress[] | undefined {\n\tif (!requestTasks || requestTasks.length === 0) return incomingProgress;\n\n\tconst merged = requestTasks.map((task, index) => {\n\t\tconst existing =\n\t\t\texistingProgress?.find((entry) => entry.index === index) ??\n\t\t\texistingProgress?.[index] ??\n\t\t\texistingProgress?.find((entry) => entry.agent === task.agent);\n\t\treturn {\n\t\t\tindex,\n\t\t\tagent: task.agent,\n\t\t\tstatus: existing?.status ?? \"pending\",\n\t\t\tcurrentTool: existing?.currentTool,\n\t\t\tcurrentToolArgs: existing?.currentToolArgs,\n\t\t\trecentOutput: existing?.recentOutput,\n\t\t\trecentOutputLines: existing?.recentOutputLines,\n\t\t\trecentTools: existing?.recentTools,\n\t\t\tmodel: existing?.model ?? task.model,\n\t\t\ttoolCount: existing?.toolCount,\n\t\t\tdurationMs: existing?.durationMs,\n\t\t\ttokens: existing?.tokens,\n\t\t};\n\t});\n\n\tif (!incomingProgress || incomingProgress.length === 0) return merged;\n\n\tconst consumed = new Set<number>();\n\tfor (const entry of incomingProgress) {\n\t\tlet targetIndex =\n\t\t\ttypeof entry.index === \"number\" && entry.index >= 0 && entry.index < merged.length\n\t\t\t\t? entry.index\n\t\t\t\t: -1;\n\n\t\tif (targetIndex < 0) {\n\t\t\ttargetIndex = merged.findIndex((task, index) => task.agent === entry.agent && !consumed.has(index));\n\t\t}\n\t\tif (targetIndex < 0) continue;\n\t\tconsumed.add(targetIndex);\n\t\tconst current = merged[targetIndex]!;\n\t\tmerged[targetIndex] = {\n\t\t\tindex: targetIndex,\n\t\t\tagent: current.agent,\n\t\t\tstatus: entry.status ?? current.status,\n\t\t\tcurrentTool: hasOwn(entry, \"currentTool\") ? entry.currentTool : current.currentTool,\n\t\t\tcurrentToolArgs: hasOwn(entry, \"currentToolArgs\") ? entry.currentToolArgs : current.currentToolArgs,\n\t\t\trecentOutput: entry.recentOutput ?? current.recentOutput,\n\t\t\trecentOutputLines: entry.recentOutputLines ?? current.recentOutputLines,\n\t\t\trecentTools: entry.recentTools ?? current.recentTools,\n\t\t\tmodel: entry.model ?? current.model,\n\t\t\ttoolCount: entry.toolCount ?? current.toolCount,\n\t\t\tdurationMs: entry.durationMs ?? current.durationMs,\n\t\t\ttokens: entry.tokens ?? current.tokens,\n\t\t};\n\t}\n\n\treturn merged;\n}\n\nasync function requestDelegatedRun(\n\tpi: ExtensionAPI,\n\tctx: ExtensionContext,\n\trequest: DelegatedSubagentRequest,\n\tsignal?: AbortSignal,\n): Promise<DelegatedSubagentResponse> {\n\treturn await new Promise((resolve, reject) => {\n\t\tconst requestLabel = request.tasks && request.tasks.length > 0 ? `parallel(${request.tasks.length})` : request.agent;\n\t\tlet done = false;\n\t\tlet started = false;\n\t\tconst startTimeoutMs = Number(process.env.PI_PROMPT_SUBAGENT_START_TIMEOUT_MS ?? \"15000\");\n\t\tconst effectiveTimeout = Number.isFinite(startTimeoutMs) && startTimeoutMs > 0 ? startTimeoutMs : 15_000;\n\t\tconst startTimeout = setTimeout(() => {\n\t\t\tfinish(() => reject(new Error(`Delegated subagent \\`${requestLabel}\\` did not start within ${Math.round(effectiveTimeout / 1000)}s. Check that the pi-subagents extension is loaded.`)));\n\t\t}, effectiveTimeout);\n\n\t\tconst onStarted = (data: unknown) => {\n\t\t\tif (done || !data || typeof data !== \"object\") return;\n\t\t\tconst requestId = (data as { requestId?: unknown }).requestId;\n\t\t\tif (requestId !== request.requestId) return;\n\t\t\tstarted = true;\n\t\t\tclearTimeout(startTimeout);\n\t\t\tupdateDelegatedLiveState(request.requestId, {\n\t\t\t\tstatus: \"running...\",\n\t\t\t\ttoolCount: 0,\n\t\t\t\trecentOutput: [],\n\t\t\t\ttaskProgress: request.tasks?.map((task, index) => ({ index, agent: task.agent, status: \"pending\" })) ?? [],\n\t\t\t});\n\t\t\tshowWidget();\n\t\t};\n\n\t\tconst onResponse = (data: unknown) => {\n\t\t\tif (done || !data || typeof data !== \"object\") return;\n\t\t\tconst payload = data as Partial<DelegatedSubagentResponse>;\n\t\t\tif (payload.requestId !== request.requestId) return;\n\t\t\tclearTimeout(startTimeout);\n\t\t\tupdateDelegatedLiveState(request.requestId, {\n\t\t\t\tstatus: payload.isError ? \"failed\" : \"completed\",\n\t\t\t\ttaskProgress: payload.parallelResults?.map((result, index) => ({\n\t\t\t\t\tindex,\n\t\t\t\t\tagent: result.agent,\n\t\t\t\t\tstatus: result.isError ? \"failed\" : \"completed\",\n\t\t\t\t})),\n\t\t\t});\n\t\t\tclearWidget();\n\t\t\tfinish(() => resolve(payload as DelegatedSubagentResponse));\n\t\t};\n\n\t\tlet lastProgressStatus = \"\";\n\t\tlet widgetSet = false;\n\t\tlet refreshTimer: ReturnType<typeof setInterval> | null = null;\n\n\t\tconst showWidget = () => {\n\t\t\tif (!ctx.hasUI || widgetSet) return;\n\t\t\twidgetSet = true;\n\t\t\tctx.ui.setWidget(\n\t\t\t\tDELEGATED_WIDGET_KEY,\n\t\t\t\t(_tui, theme) => createDelegatedProgressWidget(request.requestId, request.agent, request.context, request.task, request.tasks, theme, request.model),\n\t\t\t\t{ placement: \"aboveEditor\" },\n\t\t\t);\n\t\t\t// Force TUI repaints every second so the elapsed timer ticks during idle periods\n\t\t\trefreshTimer = setInterval(() => {\n\t\t\t\tif (done) return;\n\t\t\t\tconst statusLine = lastProgressStatus || \"running...\";\n\t\t\t\tctx.ui.setStatus(\"prompt-subagent\", `delegating to ${requestLabel} · ${statusLine}`);\n\t\t\t}, 1000);\n\t\t};\n\n\t\tconst clearWidget = () => {\n\t\t\tif (refreshTimer) {\n\t\t\t\tclearInterval(refreshTimer);\n\t\t\t\trefreshTimer = null;\n\t\t\t}\n\t\t\tif (ctx.hasUI && widgetSet) {\n\t\t\t\tctx.ui.setWidget(DELEGATED_WIDGET_KEY, undefined);\n\t\t\t\twidgetSet = false;\n\t\t\t}\n\t\t};\n\n\t\tconst onUpdate = (data: unknown) => {\n\t\t\tif (done || !data || typeof data !== \"object\") return;\n\t\t\tconst update = data as DelegatedSubagentUpdate;\n\t\t\tif (update.requestId !== request.requestId) return;\n\n\t\t\tconst previousTaskProgress = getDelegatedLiveState(request.requestId)?.taskProgress;\n\t\t\tconst mergedTaskProgress = mergeTaskProgress(\n\t\t\t\trequest.tasks,\n\t\t\t\tpreviousTaskProgress,\n\t\t\t\tupdate.taskProgress,\n\t\t\t);\n\t\t\tconst isParallel = (request.tasks?.length ?? 0) > 0;\n\t\t\tconst progressStatus = isParallel\n\t\t\t\t? formatParallelProgressStatus({\n\t\t\t\t\t...update,\n\t\t\t\t\ttaskProgress: mergedTaskProgress,\n\t\t\t\t}) ?? formatProgressStatus(update)\n\t\t\t\t: formatProgressStatus(update);\n\t\t\tif (progressStatus) {\n\t\t\t\tlastProgressStatus = progressStatus;\n\t\t\t}\n\n\t\t\tupdateDelegatedLiveState(request.requestId, {\n\t\t\t\tstatus: progressStatus ?? (lastProgressStatus || \"running...\"),\n\t\t\t\tcurrentTool: update.currentTool,\n\t\t\t\tcurrentToolArgs: update.currentToolArgs,\n\t\t\t\trecentTools: update.recentTools,\n\t\t\t\tmodel: update.model,\n\t\t\t\ttoolCount: update.toolCount,\n\t\t\t\tdurationMs: update.durationMs,\n\t\t\t\ttokens: update.tokens,\n\t\t\t\ttaskProgress: mergedTaskProgress,\n\t\t\t});\n\n\t\t\tif (!isParallel) {\n\t\t\t\tif (update.recentOutputLines && update.recentOutputLines.length > 0) {\n\t\t\t\t\tupdateDelegatedLiveState(request.requestId, {\n\t\t\t\t\t\trecentOutput: sanitizeOutputLines(update.recentOutputLines),\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tappendDelegatedLiveOutput(request.requestId, update.recentOutput);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isParallel && mergedTaskProgress) {\n\t\t\t\tfor (const task of mergedTaskProgress) {\n\t\t\t\t\tconst previousTask =\n\t\t\t\t\t\tpreviousTaskProgress?.find((entry) => entry.index === task.index) ??\n\t\t\t\t\t\tpreviousTaskProgress?.find((entry) => entry.agent === task.agent);\n\n\t\t\t\t\tconst newOutputLines = collectNewOutputLines(previousTask?.recentOutputLines, task.recentOutputLines);\n\t\t\t\t\tif (newOutputLines.length > 0) {\n\t\t\t\t\t\tfor (const line of newOutputLines) {\n\t\t\t\t\t\t\tappendDelegatedLiveOutput(request.requestId, line);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!task.recentOutput || task.recentOutput === previousTask?.recentOutput) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tappendDelegatedLiveOutput(request.requestId, task.recentOutput);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!ctx.hasUI) return;\n\t\t\tconst statusLine = progressStatus ?? (lastProgressStatus || \"running...\");\n\t\t\tctx.ui.setStatus(\"prompt-subagent\", `delegating to ${requestLabel} · ${statusLine}`);\n\t\t};\n\n\t\tconst onTerminalInput = ctx.hasUI\n\t\t\t? ctx.ui.onTerminalInput((input) => {\n\t\t\t\tif (!matchesKey(input, Key.escape)) return undefined;\n\t\t\t\tpi.events.emit(PROMPT_TEMPLATE_SUBAGENT_CANCEL_EVENT, {\n\t\t\t\t\trequestId: request.requestId,\n\t\t\t\t\treason: \"escape\",\n\t\t\t\t});\n\t\t\t\tfinish(() => reject(new Error(\"Delegated prompt cancelled.\")));\n\t\t\t\treturn { consume: true };\n\t\t\t})\n\t\t\t: undefined;\n\n\t\tconst unsubscribeStarted = pi.events.on(PROMPT_TEMPLATE_SUBAGENT_STARTED_EVENT, onStarted);\n\t\tconst unsubscribeResponse = pi.events.on(PROMPT_TEMPLATE_SUBAGENT_RESPONSE_EVENT, onResponse);\n\t\tconst unsubscribeUpdate = pi.events.on(PROMPT_TEMPLATE_SUBAGENT_UPDATE_EVENT, onUpdate);\n\t\tlet onAbort: (() => void) | undefined;\n\n\t\tconst finish = (next: () => void) => {\n\t\t\tif (done) return;\n\t\t\tdone = true;\n\t\t\tclearTimeout(startTimeout);\n\t\t\tunsubscribeStarted();\n\t\t\tunsubscribeResponse();\n\t\t\tunsubscribeUpdate();\n\t\t\tonTerminalInput?.();\n\t\t\tclearWidget();\n\t\t\tif (signal && onAbort) signal.removeEventListener(\"abort\", onAbort);\n\t\t\tnext();\n\t\t};\n\n\t\tonAbort = () => {\n\t\t\tpi.events.emit(PROMPT_TEMPLATE_SUBAGENT_CANCEL_EVENT, {\n\t\t\t\trequestId: request.requestId,\n\t\t\t\treason: \"abort\",\n\t\t\t});\n\t\t\tfinish(() => reject(new Error(\"Delegated prompt cancelled.\")));\n\t\t};\n\t\tif (signal) {\n\t\t\tif (signal.aborted) {\n\t\t\t\tonAbort();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsignal.addEventListener(\"abort\", onAbort, { once: true });\n\t\t}\n\n\t\tpi.events.emit(PROMPT_TEMPLATE_SUBAGENT_REQUEST_EVENT, request);\n\n\t\t// The bridge emits STARTED_EVENT synchronously during the REQUEST_EVENT\n\t\t// emit (all sync before the first await in the async handler chain).\n\t\t// If started is still false, no bridge received the request.\n\t\tif (!started && done) return; // already finished (e.g. response came synchronously)\n\t\tif (!started) {\n\t\t\tfinish(() => reject(new Error(\n\t\t\t\t`No loaded pi-subagents bridge responded for \\`${requestLabel}\\`. ` +\n\t\t\t\t`Install or load pi-subagents and make sure no extension name conflicts are blocking it.`,\n\t\t\t)));\n\t\t\treturn;\n\t\t}\n\t});\n}\n\nexport async function executeSubagentPromptStep(options: DelegatedPromptOptions): Promise<DelegatedPromptOutcome | undefined> {\n\tconst { pi, ctx, currentModel, override, signal, inheritedModel, taskPreamble, allowPartialFailures } = options;\n\tconst isParallelRequest = \"parallel\" in options;\n\n\tconst tasks = isParallelRequest\n\t\t? options.parallel\n\t\t: [{ prompt: options.prompt, args: options.args }];\n\tif (tasks.length === 0) return undefined;\n\n\tconst preparedTasks: PreparedDelegatedTask[] = [];\n\tfor (const task of tasks) {\n\t\tconst preparedTask = await prepareDelegatedTask(task, ctx, currentModel, override, inheritedModel, taskPreamble);\n\t\tpreparedTasks.push(preparedTask);\n\t}\n\n\tconst requestContext = preparedTasks[0]!.context;\n\tconst requestCwd = preparedTasks[0]!.cwd;\n\tfor (const preparedTask of preparedTasks) {\n\t\tif (preparedTask.context !== requestContext) {\n\t\t\tthrow new Error(\"Parallel delegated prompts must share the same inheritContext setting.\");\n\t\t}\n\t\tif (options.worktree === true && preparedTask.cwd !== requestCwd) {\n\t\t\tthrow new Error(\"Parallel delegated prompts with worktree enabled must share the same cwd setting.\");\n\t\t}\n\t}\n\n\tconst request: DelegatedSubagentRequest = {\n\t\trequestId: randomUUID(),\n\t\tagent: preparedTasks[0]!.agent,\n\t\ttask: preparedTasks[0]!.task,\n\t\t...(isParallelRequest\n\t\t\t? {\n\t\t\t\ttasks: preparedTasks.map<DelegatedSubagentTask>((task) => ({\n\t\t\t\t\tagent: task.agent,\n\t\t\t\t\ttask: task.task,\n\t\t\t\t\tmodel: task.model,\n\t\t\t\t\tcwd: task.cwd,\n\t\t\t\t})),\n\t\t\t}\n\t\t\t: {}),\n\t\tcontext: requestContext,\n\t\tmodel: preparedTasks[0]!.model,\n\t\tcwd: requestCwd,\n\t\t...(options.worktree ? { worktree: true } : {}),\n\t};\n\n\tconst promptLabel = preparedTasks.map((task) => task.promptName).join(\", \");\n\tconst statusLabel = isParallelRequest ? `parallel(${preparedTasks.length})` : preparedTasks[0]!.agent;\n\tif (ctx.hasUI) {\n\t\tctx.ui.setStatus(\"prompt-subagent\", `delegating to ${statusLabel}`);\n\t\tctx.ui.setWorkingMessage(isParallelRequest ? `Running delegated parallel prompts with ${statusLabel}...` : `Running delegated prompt with ${statusLabel}...`);\n\t}\n\tnotify(\n\t\tctx,\n\t\tisParallelRequest\n\t\t\t? `Delegating parallel prompts (${promptLabel})`\n\t\t\t: `Delegating prompt \\`${preparedTasks[0]!.promptName}\\` to subagent \\`${preparedTasks[0]!.agent}\\``,\n\t\t\"info\",\n\t);\n\n\ttry {\n\t\tconst response = await requestDelegatedRun(pi, ctx, request, signal);\n\t\tif (response.isError) {\n\t\t\tthrow new Error(\n\t\t\t\t`Delegated prompt execution failed: ${response.errorText || \"unknown delegated error\"}`,\n\t\t\t);\n\t\t}\n\n\t\tif (isParallelRequest) {\n\t\t\tconst parallelResults = coerceParallelResults(response.parallelResults);\n\t\t\tif (parallelResults.length === 0) {\n\t\t\t\tthrow new Error(\"Delegated parallel execution returned no results.\");\n\t\t\t}\n\t\t\tconst failures = parallelResults.filter((result) => result.isError);\n\t\t\tif (!allowPartialFailures && failures.length > 0) {\n\t\t\t\tconst failureText = failures\n\t\t\t\t\t.map((failure) => `${failure.agent}: ${failure.errorText || \"unknown delegated error\"}`)\n\t\t\t\t\t.join(\"; \");\n\t\t\t\tthrow new Error(`Delegated parallel execution failed: ${failureText}`);\n\t\t\t}\n\n\t\t\tconst text = response.contentText?.trim() || renderParallelDelegatedText(parallelResults);\n\t\t\tconst changed =\n\t\t\t\tparallelResults.some((result) => delegatedMessagesChanged(result.messages))\n\t\t\t\t|| text.includes(\"=== Worktree Changes ===\");\n\t\t\tpi.sendMessage({\n\t\t\t\tcustomType: PROMPT_TEMPLATE_SUBAGENT_MESSAGE_TYPE,\n\t\t\t\tcontent: text,\n\t\t\t\tdisplay: true,\n\t\t\t\tdetails: {\n\t\t\t\t\trequestId: response.requestId,\n\t\t\t\t\tagent: request.agent,\n\t\t\t\t\ttask: preparedTasks.map((task) => task.task).join(\"\\n\\n\"),\n\t\t\t\t\tcontext: response.context,\n\t\t\t\t\tmodel: response.model,\n\t\t\t\t\tmessages: [],\n\t\t\t\t\tparallelResults,\n\t\t\t\t\ttext,\n\t\t\t\t\tchanged,\n\t\t\t\t\tisError: false,\n\t\t\t\t\terrorText: response.errorText,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tchanged,\n\t\t\t\ttext,\n\t\t\t\tagent: request.agent,\n\t\t\t\tparallelResults,\n\t\t\t};\n\t\t}\n\n\t\tconst messages = coerceMessages(response.messages);\n\t\tconst text = extractDelegatedText(messages);\n\t\tif (!text) {\n\t\t\tthrow new Error(\"Delegated subagent returned no assistant text.\");\n\t\t}\n\n\t\tconst changed = delegatedMessagesChanged(messages);\n\t\tpi.sendMessage({\n\t\t\tcustomType: PROMPT_TEMPLATE_SUBAGENT_MESSAGE_TYPE,\n\t\t\tcontent: text,\n\t\t\tdisplay: true,\n\t\t\tdetails: {\n\t\t\t\trequestId: response.requestId,\n\t\t\t\tagent: preparedTasks[0]!.agent,\n\t\t\t\ttask: request.task,\n\t\t\t\tcontext: response.context,\n\t\t\t\tmodel: response.model,\n\t\t\t\tmessages,\n\t\t\t\ttext,\n\t\t\t\tchanged,\n\t\t\t\tisError: false,\n\t\t\t\terrorText: response.errorText,\n\t\t\t},\n\t\t});\n\n\t\treturn {\n\t\t\tchanged,\n\t\t\ttext,\n\t\t\tagent: preparedTasks[0]!.agent,\n\t\t};\n\t} catch (error) {\n\t\tconst cause = error instanceof Error ? error : new Error(String(error));\n\t\tconst responseText = cause.message;\n\t\tif (isParallelRequest) {\n\t\t\tthrow new Error(`Parallel delegated prompts (${promptLabel}) failed: ${responseText}`, { cause });\n\t\t}\n\t\tthrow new Error(`Prompt \\`${preparedTasks[0]!.promptName}\\` delegated subagent \\`${preparedTasks[0]!.agent}\\` failed: ${responseText}`, { cause });\n\t} finally {\n\t\tclearDelegatedLiveState(request.requestId);\n\t\tif (ctx.hasUI) {\n\t\t\tctx.ui.setStatus(\"prompt-subagent\", undefined);\n\t\t\tctx.ui.setWorkingMessage();\n\t\t}\n\t}\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Theme } from "@
|
|
2
|
-
import { Container } from "@
|
|
1
|
+
import type { Theme } from "@ashx-j/lunr";
|
|
2
|
+
import { Container } from "@ashx-j/lunr-tui";
|
|
3
3
|
import { type DelegatedSubagentTask } from "./subagent-runtime.ts";
|
|
4
4
|
export declare const DELEGATED_WIDGET_KEY = "prompt-subagent-progress";
|
|
5
5
|
export declare function createDelegatedProgressWidget(requestId: string, agent: string, context: "fresh" | "fork", task: string, tasks: DelegatedSubagentTask[] | undefined, theme: Theme, model?: string): Container & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-widget.d.ts","sourceRoot":"","sources":["../../../src/builtin-extensions/pi-prompt-template-model/subagent-widget.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAO,SAAS,EAAgB,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAGN,KAAK,qBAAqB,EAE1B,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,oBAAoB,6BAA6B,CAAC;AA+O/D,wBAAgB,6BAA6B,CAC5C,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,GAAG,MAAM,EACzB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,qBAAqB,EAAE,GAAG,SAAS,EAC1C,KAAK,EAAE,KAAK,EACZ,KAAK,CAAC,EAAE,MAAM,GACZ,SAAS,GAAG;IAAE,OAAO,CAAC,IAAI,IAAI,CAAA;CAAE,CA+BlC","sourcesContent":["// @ts-nocheck\nimport type { Theme } from \"@earendil-works/pi-coding-agent\";\nimport { Box, Container, Spacer, Text } from \"@earendil-works/pi-tui\";\nimport {\n\tgetDelegatedLiveState,\n\ttype DelegatedSubagentLiveState,\n\ttype DelegatedSubagentTask,\n\ttype DelegatedSubagentTaskProgress,\n} from \"./subagent-runtime.ts\";\n\nexport const DELEGATED_WIDGET_KEY = \"prompt-subagent-progress\";\n\nfunction formatDuration(ms: number): string {\n\tconst seconds = Math.floor(ms / 1000);\n\tif (seconds < 60) return `${seconds}s`;\n\tconst minutes = Math.floor(seconds / 60);\n\tconst remaining = seconds % 60;\n\treturn `${minutes}m${remaining}s`;\n}\n\nfunction formatTokens(n: number | undefined): string {\n\tif (!n) return \"0\";\n\tif (n >= 1000) return `${(n / 1000).toFixed(1)}k`;\n\treturn String(n);\n}\n\nfunction normalizeModelLabel(model: string | undefined): string | undefined {\n\tif (!model) return undefined;\n\treturn model.includes(\"/\") ? model.split(\"/\").pop() : model;\n}\n\nfunction formatToolCall(tool: string, args: string): string {\n\tconst safeArgs = args ?? \"\";\n\tswitch (tool) {\n\t\tcase \"bash\": {\n\t\t\tconst cmd = safeArgs.replace(/[\\n\\t]/g, \" \").trim();\n\t\t\treturn `$ ${cmd.length > 80 ? cmd.slice(0, 80) + \"...\" : cmd}`;\n\t\t}\n\t\tcase \"read\": return `[read: ${safeArgs}]`;\n\t\tcase \"write\": return `[write: ${safeArgs}]`;\n\t\tcase \"edit\": return `[edit: ${safeArgs}]`;\n\t\tdefault: {\n\t\t\tconst short = safeArgs.length > 60 ? safeArgs.slice(0, 60) + \"...\" : safeArgs;\n\t\t\treturn `[${tool}: ${short}]`;\n\t\t}\n\t}\n}\n\nfunction stateKey(state: DelegatedSubagentLiveState | undefined, elapsed: number): string {\n\tif (!state) return \"none\";\n\tconst elapsedBucket = Math.floor(elapsed / 1000);\n\tconst tool = state.currentTool ?? \"\";\n\tconst outputLen = state.recentOutput.length;\n\tconst outputTail = state.recentOutput.length > 0\n\t\t? state.recentOutput[state.recentOutput.length - 1]?.slice(0, 80) ?? \"\"\n\t\t: \"\";\n\tconst toolsLen = state.recentTools.length;\n\tconst taskProgressKey = state.taskProgress\n\t\t.map((entry) => {\n\t\t\tconst recentOutputLines = (entry.recentOutputLines ?? []).slice(-3).join(\"\\u241f\");\n\t\t\tconst recentTool = entry.recentTools?.[entry.recentTools.length - 1];\n\t\t\treturn [\n\t\t\t\tentry.index ?? \"\",\n\t\t\t\tentry.agent,\n\t\t\t\tentry.status ?? \"\",\n\t\t\t\tentry.currentTool ?? \"\",\n\t\t\t\tentry.toolCount ?? 0,\n\t\t\t\tentry.tokens ?? 0,\n\t\t\t\tentry.model ?? \"\",\n\t\t\t\trecentTool?.tool ?? \"\",\n\t\t\t\trecentTool?.args ?? \"\",\n\t\t\t\trecentOutputLines,\n\t\t\t].join(\":\");\n\t\t})\n\t\t.join(\"|\");\n\treturn `${state.status}|${tool}|${state.toolCount}|${state.tokens}|${outputLen}:${outputTail}|${toolsLen}|${state.model ?? \"\"}|${taskProgressKey}|${elapsedBucket}`;\n}\n\nfunction getParallelPreviewLimits(taskCount: number): { tools: number; output: number } {\n\tif (taskCount <= 2) return { tools: 3, output: 6 };\n\tif (taskCount <= 4) return { tools: 2, output: 4 };\n\treturn { tools: 2, output: 3 };\n}\n\nfunction resolveTaskProgress(\n\ttaskProgress: DelegatedSubagentTaskProgress[],\n\ttask: DelegatedSubagentTask,\n\tindex: number,\n): DelegatedSubagentTaskProgress | undefined {\n\treturn taskProgress.find((entry) => entry.index === index)\n\t\t?? taskProgress.find((entry) => entry.index === undefined && entry.agent === task.agent)\n\t\t?? taskProgress[index];\n}\n\nfunction getTaskOutputLines(progress: DelegatedSubagentTaskProgress | undefined): string[] {\n\tif (!progress) return [];\n\tif (progress.recentOutputLines && progress.recentOutputLines.length > 0) {\n\t\treturn progress.recentOutputLines.filter((line) => line.trim());\n\t}\n\tif (!progress.recentOutput?.trim()) return [];\n\treturn progress.recentOutput.split(\"\\n\").filter((line) => line.trim());\n}\n\nfunction getTaskHeader(\n\tindex: number,\n\ttask: DelegatedSubagentTask,\n\tprogress: DelegatedSubagentTaskProgress | undefined,\n\ttheme: Theme,\n): string {\n\tconst status = progress?.status ?? \"pending\";\n\tconst modelLabel = normalizeModelLabel(progress?.model ?? task.model);\n\tconst modelSuffix = modelLabel ? ` ${theme.fg(\"dim\", modelLabel)}` : \"\";\n\tconst label = `task ${index + 1} · ${task.agent}`;\n\tif (status === \"running\") return `${theme.fg(\"toolTitle\", label)}${modelSuffix} ${theme.fg(\"warning\", \"running\")}`;\n\tif (status === \"completed\") return `${theme.fg(\"toolTitle\", label)}${modelSuffix} ${theme.fg(\"success\", \"completed\")}`;\n\tif (status === \"failed\") return `${theme.fg(\"toolTitle\", label)}${modelSuffix} ${theme.fg(\"error\", \"failed\")}`;\n\treturn `${theme.fg(\"toolTitle\", label)}${modelSuffix} ${theme.fg(\"dim\", status)}`;\n}\n\nfunction addParallelTaskPreview(\n\tbox: Box,\n\ttask: DelegatedSubagentTask,\n\tprogress: DelegatedSubagentTaskProgress | undefined,\n\tindex: number,\n\ttaskCount: number,\n\ttheme: Theme,\n): void {\n\tbox.addChild(new Text(getTaskHeader(index, task, progress, theme), 0, 0));\n\n\tconst limits = getParallelPreviewLimits(taskCount);\n\tif (!progress) {\n\t\tbox.addChild(new Text(theme.fg(\"dim\", \" waiting for updates\"), 0, 0));\n\t\treturn;\n\t}\n\n\tif (progress.currentTool) {\n\t\tbox.addChild(new Text(theme.fg(\"warning\", ` > ${formatToolCall(progress.currentTool, progress.currentToolArgs ?? \"\")}`), 0, 0));\n\t}\n\n\tconst recentTools = (progress.recentTools ?? []).slice(-limits.tools);\n\tfor (const tool of recentTools) {\n\t\tbox.addChild(new Text(theme.fg(\"dim\", ` ${formatToolCall(tool.tool, tool.args)}`), 0, 0));\n\t}\n\n\tconst outputLines = getTaskOutputLines(progress);\n\tconst visibleOutputLines = outputLines.slice(-limits.output);\n\tfor (const line of visibleOutputLines) {\n\t\tbox.addChild(new Text(theme.fg(\"dim\", ` ${line}`), 0, 0));\n\t}\n\n\tconst hiddenLineCount = outputLines.length - visibleOutputLines.length;\n\tif (hiddenLineCount > 0) {\n\t\tbox.addChild(new Text(theme.fg(\"warning\", ` ... (${hiddenLineCount} older line${hiddenLineCount === 1 ? \"\" : \"s\"})`), 0, 0));\n\t}\n\n\tif (!progress.currentTool && recentTools.length === 0 && visibleOutputLines.length === 0) {\n\t\tif (progress.status === \"completed\") {\n\t\t\tconst toolCount = progress.toolCount ?? 0;\n\t\t\tbox.addChild(new Text(theme.fg(\"dim\", ` completed (${toolCount} tool${toolCount === 1 ? \"\" : \"s\"})`), 0, 0));\n\t\t} else if (progress.status === \"failed\") {\n\t\t\tbox.addChild(new Text(theme.fg(\"error\", \" task failed\"), 0, 0));\n\t\t} else {\n\t\t\tbox.addChild(new Text(theme.fg(\"dim\", \" waiting for output\"), 0, 0));\n\t\t}\n\t}\n}\n\nfunction rebuildBox(\n\tbox: Box,\n\tagent: string,\n\tcontextSuffix: string,\n\ttaskPreview: string,\n\tparallelTasks: DelegatedSubagentTask[],\n\tisParallel: boolean,\n\tstate: DelegatedSubagentLiveState | undefined,\n\telapsed: number,\n\ttheme: Theme,\n\trequestModel?: string,\n): void {\n\tbox.clear();\n\n\tconst taskProgress = state?.taskProgress ?? [];\n\tconst baseToolCount = state?.toolCount ?? 0;\n\tconst baseTokens = state?.tokens ?? 0;\n\tconst parallelToolCount = taskProgress.reduce((sum, entry) => sum + (entry.toolCount ?? 0), 0);\n\tconst parallelTokens = taskProgress.reduce((sum, entry) => sum + (entry.tokens ?? 0), 0);\n\tconst toolCount = isParallel && parallelToolCount > 0 ? parallelToolCount : baseToolCount;\n\tconst tokens = isParallel && parallelTokens > 0 ? parallelTokens : baseTokens;\n\tconst tokensLabel = formatTokens(tokens);\n\tconst duration = formatDuration(elapsed);\n\tconst isThinking = toolCount === 0 && tokens === 0;\n\tconst icon = theme.fg(\"warning\", \"...\");\n\tconst modelLabel = isParallel\n\t\t? requestModel\n\t\t: normalizeModelLabel(state?.model ?? requestModel);\n\tconst modelSuffix = modelLabel ? ` ${theme.fg(\"dim\", modelLabel)}` : \"\";\n\tconst stats = isThinking\n\t\t? `thinking, ${duration}`\n\t\t: `${toolCount} tool${toolCount === 1 ? \"\" : \"s\"}, ${tokensLabel} tok, ${duration}`;\n\n\tif (isParallel) {\n\t\tconst completedCount = taskProgress.filter((entry) => entry.status === \"completed\").length;\n\t\tconst runningLabel = `parallel ${completedCount}/${parallelTasks.length} running`;\n\t\tbox.addChild(new Text(`${icon} ${theme.fg(\"toolTitle\", theme.bold(runningLabel))}${contextSuffix}${modelSuffix} | ${stats}`, 0, 0));\n\t} else {\n\t\tbox.addChild(new Text(\n\t\t\t`${icon} ${theme.fg(\"toolTitle\", theme.bold(agent))}${contextSuffix}${modelSuffix} | ${stats}`,\n\t\t\t0,\n\t\t\t0,\n\t\t));\n\t}\n\tbox.addChild(new Spacer(1));\n\n\tif (!isParallel) {\n\t\tbox.addChild(new Text(theme.fg(\"dim\", `Task: ${taskPreview}`), 0, 0));\n\t\tbox.addChild(new Spacer(1));\n\t}\n\n\tif (isParallel) {\n\t\tfor (let index = 0; index < parallelTasks.length; index++) {\n\t\t\tconst task = parallelTasks[index]!;\n\t\t\tconst progress = resolveTaskProgress(taskProgress, task, index);\n\t\t\taddParallelTaskPreview(box, task, progress, index, parallelTasks.length, theme);\n\t\t\tif (index < parallelTasks.length - 1) {\n\t\t\t\tbox.addChild(new Spacer(1));\n\t\t\t}\n\t\t}\n\t\treturn;\n\t}\n\n\tconst recentTools = state?.recentTools ?? [];\n\tfor (const tool of recentTools) {\n\t\tbox.addChild(new Text(theme.fg(\"dim\", formatToolCall(tool.tool, tool.args)), 0, 0));\n\t}\n\tif (state?.currentTool) {\n\t\tconst active = formatToolCall(state.currentTool, state.currentToolArgs ?? \"\");\n\t\tbox.addChild(new Text(theme.fg(\"warning\", `> ${active}`), 0, 0));\n\t}\n\n\tif (state && state.recentOutput.length > 0) {\n\t\tif (recentTools.length > 0 || state.currentTool) {\n\t\t\tbox.addChild(new Spacer(1));\n\t\t}\n\t\tfor (const line of state.recentOutput) {\n\t\t\tbox.addChild(new Text(theme.fg(\"dim\", ` ${line}`), 0, 0));\n\t\t}\n\t}\n}\n\nexport function createDelegatedProgressWidget(\n\trequestId: string,\n\tagent: string,\n\tcontext: \"fresh\" | \"fork\",\n\ttask: string,\n\ttasks: DelegatedSubagentTask[] | undefined,\n\ttheme: Theme,\n\tmodel?: string,\n): Container & { dispose?(): void } {\n\tconst contextSuffix = context === \"fork\" ? theme.fg(\"warning\", \" [fork]\") : \"\";\n\tconst taskPreview = task.length > 200 ? `${task.slice(0, 200)}...` : task;\n\tconst parallelTasks = tasks ?? [];\n\tconst isParallel = parallelTasks.length > 0;\n\tconst parallelModels = [...new Set(parallelTasks\n\t\t.map((task) => normalizeModelLabel(task.model))\n\t\t.filter((entry): entry is string => !!entry))];\n\tconst requestModel = isParallel\n\t\t? (parallelModels.length === 1 ? parallelModels[0] : undefined)\n\t\t: normalizeModelLabel(model);\n\n\tconst container = new Container();\n\tcontainer.addChild(new Spacer(1));\n\tconst box = new Box(1, 1, (text: string) => theme.bg(\"toolPendingBg\", text));\n\tcontainer.addChild(box);\n\n\tlet lastKey = \"\";\n\n\tcontainer.render = (width: number): string[] => {\n\t\tconst state = getDelegatedLiveState(requestId);\n\t\tconst elapsed = state ? Date.now() - state.startedAt : 0;\n\t\tconst key = stateKey(state, elapsed);\n\t\tif (key !== lastKey) {\n\t\t\tlastKey = key;\n\t\t\trebuildBox(box, agent, contextSuffix, taskPreview, parallelTasks, isParallel, state, elapsed, theme, requestModel);\n\t\t}\n\t\treturn Container.prototype.render.call(container, width);\n\t};\n\n\treturn container;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"subagent-widget.d.ts","sourceRoot":"","sources":["../../../src/builtin-extensions/pi-prompt-template-model/subagent-widget.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAO,SAAS,EAAgB,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAGN,KAAK,qBAAqB,EAE1B,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,oBAAoB,6BAA6B,CAAC;AA+O/D,wBAAgB,6BAA6B,CAC5C,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,GAAG,MAAM,EACzB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,qBAAqB,EAAE,GAAG,SAAS,EAC1C,KAAK,EAAE,KAAK,EACZ,KAAK,CAAC,EAAE,MAAM,GACZ,SAAS,GAAG;IAAE,OAAO,CAAC,IAAI,IAAI,CAAA;CAAE,CA+BlC","sourcesContent":["// @ts-nocheck\nimport type { Theme } from \"@ashx-j/lunr\";\nimport { Box, Container, Spacer, Text } from \"@ashx-j/lunr-tui\";\nimport {\n\tgetDelegatedLiveState,\n\ttype DelegatedSubagentLiveState,\n\ttype DelegatedSubagentTask,\n\ttype DelegatedSubagentTaskProgress,\n} from \"./subagent-runtime.ts\";\n\nexport const DELEGATED_WIDGET_KEY = \"prompt-subagent-progress\";\n\nfunction formatDuration(ms: number): string {\n\tconst seconds = Math.floor(ms / 1000);\n\tif (seconds < 60) return `${seconds}s`;\n\tconst minutes = Math.floor(seconds / 60);\n\tconst remaining = seconds % 60;\n\treturn `${minutes}m${remaining}s`;\n}\n\nfunction formatTokens(n: number | undefined): string {\n\tif (!n) return \"0\";\n\tif (n >= 1000) return `${(n / 1000).toFixed(1)}k`;\n\treturn String(n);\n}\n\nfunction normalizeModelLabel(model: string | undefined): string | undefined {\n\tif (!model) return undefined;\n\treturn model.includes(\"/\") ? model.split(\"/\").pop() : model;\n}\n\nfunction formatToolCall(tool: string, args: string): string {\n\tconst safeArgs = args ?? \"\";\n\tswitch (tool) {\n\t\tcase \"bash\": {\n\t\t\tconst cmd = safeArgs.replace(/[\\n\\t]/g, \" \").trim();\n\t\t\treturn `$ ${cmd.length > 80 ? cmd.slice(0, 80) + \"...\" : cmd}`;\n\t\t}\n\t\tcase \"read\": return `[read: ${safeArgs}]`;\n\t\tcase \"write\": return `[write: ${safeArgs}]`;\n\t\tcase \"edit\": return `[edit: ${safeArgs}]`;\n\t\tdefault: {\n\t\t\tconst short = safeArgs.length > 60 ? safeArgs.slice(0, 60) + \"...\" : safeArgs;\n\t\t\treturn `[${tool}: ${short}]`;\n\t\t}\n\t}\n}\n\nfunction stateKey(state: DelegatedSubagentLiveState | undefined, elapsed: number): string {\n\tif (!state) return \"none\";\n\tconst elapsedBucket = Math.floor(elapsed / 1000);\n\tconst tool = state.currentTool ?? \"\";\n\tconst outputLen = state.recentOutput.length;\n\tconst outputTail = state.recentOutput.length > 0\n\t\t? state.recentOutput[state.recentOutput.length - 1]?.slice(0, 80) ?? \"\"\n\t\t: \"\";\n\tconst toolsLen = state.recentTools.length;\n\tconst taskProgressKey = state.taskProgress\n\t\t.map((entry) => {\n\t\t\tconst recentOutputLines = (entry.recentOutputLines ?? []).slice(-3).join(\"\\u241f\");\n\t\t\tconst recentTool = entry.recentTools?.[entry.recentTools.length - 1];\n\t\t\treturn [\n\t\t\t\tentry.index ?? \"\",\n\t\t\t\tentry.agent,\n\t\t\t\tentry.status ?? \"\",\n\t\t\t\tentry.currentTool ?? \"\",\n\t\t\t\tentry.toolCount ?? 0,\n\t\t\t\tentry.tokens ?? 0,\n\t\t\t\tentry.model ?? \"\",\n\t\t\t\trecentTool?.tool ?? \"\",\n\t\t\t\trecentTool?.args ?? \"\",\n\t\t\t\trecentOutputLines,\n\t\t\t].join(\":\");\n\t\t})\n\t\t.join(\"|\");\n\treturn `${state.status}|${tool}|${state.toolCount}|${state.tokens}|${outputLen}:${outputTail}|${toolsLen}|${state.model ?? \"\"}|${taskProgressKey}|${elapsedBucket}`;\n}\n\nfunction getParallelPreviewLimits(taskCount: number): { tools: number; output: number } {\n\tif (taskCount <= 2) return { tools: 3, output: 6 };\n\tif (taskCount <= 4) return { tools: 2, output: 4 };\n\treturn { tools: 2, output: 3 };\n}\n\nfunction resolveTaskProgress(\n\ttaskProgress: DelegatedSubagentTaskProgress[],\n\ttask: DelegatedSubagentTask,\n\tindex: number,\n): DelegatedSubagentTaskProgress | undefined {\n\treturn taskProgress.find((entry) => entry.index === index)\n\t\t?? taskProgress.find((entry) => entry.index === undefined && entry.agent === task.agent)\n\t\t?? taskProgress[index];\n}\n\nfunction getTaskOutputLines(progress: DelegatedSubagentTaskProgress | undefined): string[] {\n\tif (!progress) return [];\n\tif (progress.recentOutputLines && progress.recentOutputLines.length > 0) {\n\t\treturn progress.recentOutputLines.filter((line) => line.trim());\n\t}\n\tif (!progress.recentOutput?.trim()) return [];\n\treturn progress.recentOutput.split(\"\\n\").filter((line) => line.trim());\n}\n\nfunction getTaskHeader(\n\tindex: number,\n\ttask: DelegatedSubagentTask,\n\tprogress: DelegatedSubagentTaskProgress | undefined,\n\ttheme: Theme,\n): string {\n\tconst status = progress?.status ?? \"pending\";\n\tconst modelLabel = normalizeModelLabel(progress?.model ?? task.model);\n\tconst modelSuffix = modelLabel ? ` ${theme.fg(\"dim\", modelLabel)}` : \"\";\n\tconst label = `task ${index + 1} · ${task.agent}`;\n\tif (status === \"running\") return `${theme.fg(\"toolTitle\", label)}${modelSuffix} ${theme.fg(\"warning\", \"running\")}`;\n\tif (status === \"completed\") return `${theme.fg(\"toolTitle\", label)}${modelSuffix} ${theme.fg(\"success\", \"completed\")}`;\n\tif (status === \"failed\") return `${theme.fg(\"toolTitle\", label)}${modelSuffix} ${theme.fg(\"error\", \"failed\")}`;\n\treturn `${theme.fg(\"toolTitle\", label)}${modelSuffix} ${theme.fg(\"dim\", status)}`;\n}\n\nfunction addParallelTaskPreview(\n\tbox: Box,\n\ttask: DelegatedSubagentTask,\n\tprogress: DelegatedSubagentTaskProgress | undefined,\n\tindex: number,\n\ttaskCount: number,\n\ttheme: Theme,\n): void {\n\tbox.addChild(new Text(getTaskHeader(index, task, progress, theme), 0, 0));\n\n\tconst limits = getParallelPreviewLimits(taskCount);\n\tif (!progress) {\n\t\tbox.addChild(new Text(theme.fg(\"dim\", \" waiting for updates\"), 0, 0));\n\t\treturn;\n\t}\n\n\tif (progress.currentTool) {\n\t\tbox.addChild(new Text(theme.fg(\"warning\", ` > ${formatToolCall(progress.currentTool, progress.currentToolArgs ?? \"\")}`), 0, 0));\n\t}\n\n\tconst recentTools = (progress.recentTools ?? []).slice(-limits.tools);\n\tfor (const tool of recentTools) {\n\t\tbox.addChild(new Text(theme.fg(\"dim\", ` ${formatToolCall(tool.tool, tool.args)}`), 0, 0));\n\t}\n\n\tconst outputLines = getTaskOutputLines(progress);\n\tconst visibleOutputLines = outputLines.slice(-limits.output);\n\tfor (const line of visibleOutputLines) {\n\t\tbox.addChild(new Text(theme.fg(\"dim\", ` ${line}`), 0, 0));\n\t}\n\n\tconst hiddenLineCount = outputLines.length - visibleOutputLines.length;\n\tif (hiddenLineCount > 0) {\n\t\tbox.addChild(new Text(theme.fg(\"warning\", ` ... (${hiddenLineCount} older line${hiddenLineCount === 1 ? \"\" : \"s\"})`), 0, 0));\n\t}\n\n\tif (!progress.currentTool && recentTools.length === 0 && visibleOutputLines.length === 0) {\n\t\tif (progress.status === \"completed\") {\n\t\t\tconst toolCount = progress.toolCount ?? 0;\n\t\t\tbox.addChild(new Text(theme.fg(\"dim\", ` completed (${toolCount} tool${toolCount === 1 ? \"\" : \"s\"})`), 0, 0));\n\t\t} else if (progress.status === \"failed\") {\n\t\t\tbox.addChild(new Text(theme.fg(\"error\", \" task failed\"), 0, 0));\n\t\t} else {\n\t\t\tbox.addChild(new Text(theme.fg(\"dim\", \" waiting for output\"), 0, 0));\n\t\t}\n\t}\n}\n\nfunction rebuildBox(\n\tbox: Box,\n\tagent: string,\n\tcontextSuffix: string,\n\ttaskPreview: string,\n\tparallelTasks: DelegatedSubagentTask[],\n\tisParallel: boolean,\n\tstate: DelegatedSubagentLiveState | undefined,\n\telapsed: number,\n\ttheme: Theme,\n\trequestModel?: string,\n): void {\n\tbox.clear();\n\n\tconst taskProgress = state?.taskProgress ?? [];\n\tconst baseToolCount = state?.toolCount ?? 0;\n\tconst baseTokens = state?.tokens ?? 0;\n\tconst parallelToolCount = taskProgress.reduce((sum, entry) => sum + (entry.toolCount ?? 0), 0);\n\tconst parallelTokens = taskProgress.reduce((sum, entry) => sum + (entry.tokens ?? 0), 0);\n\tconst toolCount = isParallel && parallelToolCount > 0 ? parallelToolCount : baseToolCount;\n\tconst tokens = isParallel && parallelTokens > 0 ? parallelTokens : baseTokens;\n\tconst tokensLabel = formatTokens(tokens);\n\tconst duration = formatDuration(elapsed);\n\tconst isThinking = toolCount === 0 && tokens === 0;\n\tconst icon = theme.fg(\"warning\", \"...\");\n\tconst modelLabel = isParallel\n\t\t? requestModel\n\t\t: normalizeModelLabel(state?.model ?? requestModel);\n\tconst modelSuffix = modelLabel ? ` ${theme.fg(\"dim\", modelLabel)}` : \"\";\n\tconst stats = isThinking\n\t\t? `thinking, ${duration}`\n\t\t: `${toolCount} tool${toolCount === 1 ? \"\" : \"s\"}, ${tokensLabel} tok, ${duration}`;\n\n\tif (isParallel) {\n\t\tconst completedCount = taskProgress.filter((entry) => entry.status === \"completed\").length;\n\t\tconst runningLabel = `parallel ${completedCount}/${parallelTasks.length} running`;\n\t\tbox.addChild(new Text(`${icon} ${theme.fg(\"toolTitle\", theme.bold(runningLabel))}${contextSuffix}${modelSuffix} | ${stats}`, 0, 0));\n\t} else {\n\t\tbox.addChild(new Text(\n\t\t\t`${icon} ${theme.fg(\"toolTitle\", theme.bold(agent))}${contextSuffix}${modelSuffix} | ${stats}`,\n\t\t\t0,\n\t\t\t0,\n\t\t));\n\t}\n\tbox.addChild(new Spacer(1));\n\n\tif (!isParallel) {\n\t\tbox.addChild(new Text(theme.fg(\"dim\", `Task: ${taskPreview}`), 0, 0));\n\t\tbox.addChild(new Spacer(1));\n\t}\n\n\tif (isParallel) {\n\t\tfor (let index = 0; index < parallelTasks.length; index++) {\n\t\t\tconst task = parallelTasks[index]!;\n\t\t\tconst progress = resolveTaskProgress(taskProgress, task, index);\n\t\t\taddParallelTaskPreview(box, task, progress, index, parallelTasks.length, theme);\n\t\t\tif (index < parallelTasks.length - 1) {\n\t\t\t\tbox.addChild(new Spacer(1));\n\t\t\t}\n\t\t}\n\t\treturn;\n\t}\n\n\tconst recentTools = state?.recentTools ?? [];\n\tfor (const tool of recentTools) {\n\t\tbox.addChild(new Text(theme.fg(\"dim\", formatToolCall(tool.tool, tool.args)), 0, 0));\n\t}\n\tif (state?.currentTool) {\n\t\tconst active = formatToolCall(state.currentTool, state.currentToolArgs ?? \"\");\n\t\tbox.addChild(new Text(theme.fg(\"warning\", `> ${active}`), 0, 0));\n\t}\n\n\tif (state && state.recentOutput.length > 0) {\n\t\tif (recentTools.length > 0 || state.currentTool) {\n\t\t\tbox.addChild(new Spacer(1));\n\t\t}\n\t\tfor (const line of state.recentOutput) {\n\t\t\tbox.addChild(new Text(theme.fg(\"dim\", ` ${line}`), 0, 0));\n\t\t}\n\t}\n}\n\nexport function createDelegatedProgressWidget(\n\trequestId: string,\n\tagent: string,\n\tcontext: \"fresh\" | \"fork\",\n\ttask: string,\n\ttasks: DelegatedSubagentTask[] | undefined,\n\ttheme: Theme,\n\tmodel?: string,\n): Container & { dispose?(): void } {\n\tconst contextSuffix = context === \"fork\" ? theme.fg(\"warning\", \" [fork]\") : \"\";\n\tconst taskPreview = task.length > 200 ? `${task.slice(0, 200)}...` : task;\n\tconst parallelTasks = tasks ?? [];\n\tconst isParallel = parallelTasks.length > 0;\n\tconst parallelModels = [...new Set(parallelTasks\n\t\t.map((task) => normalizeModelLabel(task.model))\n\t\t.filter((entry): entry is string => !!entry))];\n\tconst requestModel = isParallel\n\t\t? (parallelModels.length === 1 ? parallelModels[0] : undefined)\n\t\t: normalizeModelLabel(model);\n\n\tconst container = new Container();\n\tcontainer.addChild(new Spacer(1));\n\tconst box = new Box(1, 1, (text: string) => theme.bg(\"toolPendingBg\", text));\n\tcontainer.addChild(box);\n\n\tlet lastKey = \"\";\n\n\tcontainer.render = (width: number): string[] => {\n\t\tconst state = getDelegatedLiveState(requestId);\n\t\tconst elapsed = state ? Date.now() - state.startedAt : 0;\n\t\tconst key = stateKey(state, elapsed);\n\t\tif (key !== lastKey) {\n\t\t\tlastKey = key;\n\t\t\trebuildBox(box, agent, contextSuffix, taskPreview, parallelTasks, isParallel, state, elapsed, theme, requestModel);\n\t\t}\n\t\treturn Container.prototype.render.call(container, width);\n\t};\n\n\treturn container;\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Box, Container, Spacer, Text } from "@
|
|
1
|
+
import { Box, Container, Spacer, Text } from "@ashx-j/lunr-tui";
|
|
2
2
|
import { getDelegatedLiveState, } from "./subagent-runtime.js";
|
|
3
3
|
export const DELEGATED_WIDGET_KEY = "prompt-subagent-progress";
|
|
4
4
|
function formatDuration(ms) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-widget.js","sourceRoot":"","sources":["../../../src/builtin-extensions/pi-prompt-template-model/subagent-widget.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport type { Theme } from \"@earendil-works/pi-coding-agent\";\nimport { Box, Container, Spacer, Text } from \"@earendil-works/pi-tui\";\nimport {\n\tgetDelegatedLiveState,\n\ttype DelegatedSubagentLiveState,\n\ttype DelegatedSubagentTask,\n\ttype DelegatedSubagentTaskProgress,\n} from \"./subagent-runtime.ts\";\n\nexport const DELEGATED_WIDGET_KEY = \"prompt-subagent-progress\";\n\nfunction formatDuration(ms: number): string {\n\tconst seconds = Math.floor(ms / 1000);\n\tif (seconds < 60) return `${seconds}s`;\n\tconst minutes = Math.floor(seconds / 60);\n\tconst remaining = seconds % 60;\n\treturn `${minutes}m${remaining}s`;\n}\n\nfunction formatTokens(n: number | undefined): string {\n\tif (!n) return \"0\";\n\tif (n >= 1000) return `${(n / 1000).toFixed(1)}k`;\n\treturn String(n);\n}\n\nfunction normalizeModelLabel(model: string | undefined): string | undefined {\n\tif (!model) return undefined;\n\treturn model.includes(\"/\") ? model.split(\"/\").pop() : model;\n}\n\nfunction formatToolCall(tool: string, args: string): string {\n\tconst safeArgs = args ?? \"\";\n\tswitch (tool) {\n\t\tcase \"bash\": {\n\t\t\tconst cmd = safeArgs.replace(/[\\n\\t]/g, \" \").trim();\n\t\t\treturn `$ ${cmd.length > 80 ? cmd.slice(0, 80) + \"...\" : cmd}`;\n\t\t}\n\t\tcase \"read\": return `[read: ${safeArgs}]`;\n\t\tcase \"write\": return `[write: ${safeArgs}]`;\n\t\tcase \"edit\": return `[edit: ${safeArgs}]`;\n\t\tdefault: {\n\t\t\tconst short = safeArgs.length > 60 ? safeArgs.slice(0, 60) + \"...\" : safeArgs;\n\t\t\treturn `[${tool}: ${short}]`;\n\t\t}\n\t}\n}\n\nfunction stateKey(state: DelegatedSubagentLiveState | undefined, elapsed: number): string {\n\tif (!state) return \"none\";\n\tconst elapsedBucket = Math.floor(elapsed / 1000);\n\tconst tool = state.currentTool ?? \"\";\n\tconst outputLen = state.recentOutput.length;\n\tconst outputTail = state.recentOutput.length > 0\n\t\t? state.recentOutput[state.recentOutput.length - 1]?.slice(0, 80) ?? \"\"\n\t\t: \"\";\n\tconst toolsLen = state.recentTools.length;\n\tconst taskProgressKey = state.taskProgress\n\t\t.map((entry) => {\n\t\t\tconst recentOutputLines = (entry.recentOutputLines ?? []).slice(-3).join(\"\\u241f\");\n\t\t\tconst recentTool = entry.recentTools?.[entry.recentTools.length - 1];\n\t\t\treturn [\n\t\t\t\tentry.index ?? \"\",\n\t\t\t\tentry.agent,\n\t\t\t\tentry.status ?? \"\",\n\t\t\t\tentry.currentTool ?? \"\",\n\t\t\t\tentry.toolCount ?? 0,\n\t\t\t\tentry.tokens ?? 0,\n\t\t\t\tentry.model ?? \"\",\n\t\t\t\trecentTool?.tool ?? \"\",\n\t\t\t\trecentTool?.args ?? \"\",\n\t\t\t\trecentOutputLines,\n\t\t\t].join(\":\");\n\t\t})\n\t\t.join(\"|\");\n\treturn `${state.status}|${tool}|${state.toolCount}|${state.tokens}|${outputLen}:${outputTail}|${toolsLen}|${state.model ?? \"\"}|${taskProgressKey}|${elapsedBucket}`;\n}\n\nfunction getParallelPreviewLimits(taskCount: number): { tools: number; output: number } {\n\tif (taskCount <= 2) return { tools: 3, output: 6 };\n\tif (taskCount <= 4) return { tools: 2, output: 4 };\n\treturn { tools: 2, output: 3 };\n}\n\nfunction resolveTaskProgress(\n\ttaskProgress: DelegatedSubagentTaskProgress[],\n\ttask: DelegatedSubagentTask,\n\tindex: number,\n): DelegatedSubagentTaskProgress | undefined {\n\treturn taskProgress.find((entry) => entry.index === index)\n\t\t?? taskProgress.find((entry) => entry.index === undefined && entry.agent === task.agent)\n\t\t?? taskProgress[index];\n}\n\nfunction getTaskOutputLines(progress: DelegatedSubagentTaskProgress | undefined): string[] {\n\tif (!progress) return [];\n\tif (progress.recentOutputLines && progress.recentOutputLines.length > 0) {\n\t\treturn progress.recentOutputLines.filter((line) => line.trim());\n\t}\n\tif (!progress.recentOutput?.trim()) return [];\n\treturn progress.recentOutput.split(\"\\n\").filter((line) => line.trim());\n}\n\nfunction getTaskHeader(\n\tindex: number,\n\ttask: DelegatedSubagentTask,\n\tprogress: DelegatedSubagentTaskProgress | undefined,\n\ttheme: Theme,\n): string {\n\tconst status = progress?.status ?? \"pending\";\n\tconst modelLabel = normalizeModelLabel(progress?.model ?? task.model);\n\tconst modelSuffix = modelLabel ? ` ${theme.fg(\"dim\", modelLabel)}` : \"\";\n\tconst label = `task ${index + 1} · ${task.agent}`;\n\tif (status === \"running\") return `${theme.fg(\"toolTitle\", label)}${modelSuffix} ${theme.fg(\"warning\", \"running\")}`;\n\tif (status === \"completed\") return `${theme.fg(\"toolTitle\", label)}${modelSuffix} ${theme.fg(\"success\", \"completed\")}`;\n\tif (status === \"failed\") return `${theme.fg(\"toolTitle\", label)}${modelSuffix} ${theme.fg(\"error\", \"failed\")}`;\n\treturn `${theme.fg(\"toolTitle\", label)}${modelSuffix} ${theme.fg(\"dim\", status)}`;\n}\n\nfunction addParallelTaskPreview(\n\tbox: Box,\n\ttask: DelegatedSubagentTask,\n\tprogress: DelegatedSubagentTaskProgress | undefined,\n\tindex: number,\n\ttaskCount: number,\n\ttheme: Theme,\n): void {\n\tbox.addChild(new Text(getTaskHeader(index, task, progress, theme), 0, 0));\n\n\tconst limits = getParallelPreviewLimits(taskCount);\n\tif (!progress) {\n\t\tbox.addChild(new Text(theme.fg(\"dim\", \" waiting for updates\"), 0, 0));\n\t\treturn;\n\t}\n\n\tif (progress.currentTool) {\n\t\tbox.addChild(new Text(theme.fg(\"warning\", ` > ${formatToolCall(progress.currentTool, progress.currentToolArgs ?? \"\")}`), 0, 0));\n\t}\n\n\tconst recentTools = (progress.recentTools ?? []).slice(-limits.tools);\n\tfor (const tool of recentTools) {\n\t\tbox.addChild(new Text(theme.fg(\"dim\", ` ${formatToolCall(tool.tool, tool.args)}`), 0, 0));\n\t}\n\n\tconst outputLines = getTaskOutputLines(progress);\n\tconst visibleOutputLines = outputLines.slice(-limits.output);\n\tfor (const line of visibleOutputLines) {\n\t\tbox.addChild(new Text(theme.fg(\"dim\", ` ${line}`), 0, 0));\n\t}\n\n\tconst hiddenLineCount = outputLines.length - visibleOutputLines.length;\n\tif (hiddenLineCount > 0) {\n\t\tbox.addChild(new Text(theme.fg(\"warning\", ` ... (${hiddenLineCount} older line${hiddenLineCount === 1 ? \"\" : \"s\"})`), 0, 0));\n\t}\n\n\tif (!progress.currentTool && recentTools.length === 0 && visibleOutputLines.length === 0) {\n\t\tif (progress.status === \"completed\") {\n\t\t\tconst toolCount = progress.toolCount ?? 0;\n\t\t\tbox.addChild(new Text(theme.fg(\"dim\", ` completed (${toolCount} tool${toolCount === 1 ? \"\" : \"s\"})`), 0, 0));\n\t\t} else if (progress.status === \"failed\") {\n\t\t\tbox.addChild(new Text(theme.fg(\"error\", \" task failed\"), 0, 0));\n\t\t} else {\n\t\t\tbox.addChild(new Text(theme.fg(\"dim\", \" waiting for output\"), 0, 0));\n\t\t}\n\t}\n}\n\nfunction rebuildBox(\n\tbox: Box,\n\tagent: string,\n\tcontextSuffix: string,\n\ttaskPreview: string,\n\tparallelTasks: DelegatedSubagentTask[],\n\tisParallel: boolean,\n\tstate: DelegatedSubagentLiveState | undefined,\n\telapsed: number,\n\ttheme: Theme,\n\trequestModel?: string,\n): void {\n\tbox.clear();\n\n\tconst taskProgress = state?.taskProgress ?? [];\n\tconst baseToolCount = state?.toolCount ?? 0;\n\tconst baseTokens = state?.tokens ?? 0;\n\tconst parallelToolCount = taskProgress.reduce((sum, entry) => sum + (entry.toolCount ?? 0), 0);\n\tconst parallelTokens = taskProgress.reduce((sum, entry) => sum + (entry.tokens ?? 0), 0);\n\tconst toolCount = isParallel && parallelToolCount > 0 ? parallelToolCount : baseToolCount;\n\tconst tokens = isParallel && parallelTokens > 0 ? parallelTokens : baseTokens;\n\tconst tokensLabel = formatTokens(tokens);\n\tconst duration = formatDuration(elapsed);\n\tconst isThinking = toolCount === 0 && tokens === 0;\n\tconst icon = theme.fg(\"warning\", \"...\");\n\tconst modelLabel = isParallel\n\t\t? requestModel\n\t\t: normalizeModelLabel(state?.model ?? requestModel);\n\tconst modelSuffix = modelLabel ? ` ${theme.fg(\"dim\", modelLabel)}` : \"\";\n\tconst stats = isThinking\n\t\t? `thinking, ${duration}`\n\t\t: `${toolCount} tool${toolCount === 1 ? \"\" : \"s\"}, ${tokensLabel} tok, ${duration}`;\n\n\tif (isParallel) {\n\t\tconst completedCount = taskProgress.filter((entry) => entry.status === \"completed\").length;\n\t\tconst runningLabel = `parallel ${completedCount}/${parallelTasks.length} running`;\n\t\tbox.addChild(new Text(`${icon} ${theme.fg(\"toolTitle\", theme.bold(runningLabel))}${contextSuffix}${modelSuffix} | ${stats}`, 0, 0));\n\t} else {\n\t\tbox.addChild(new Text(\n\t\t\t`${icon} ${theme.fg(\"toolTitle\", theme.bold(agent))}${contextSuffix}${modelSuffix} | ${stats}`,\n\t\t\t0,\n\t\t\t0,\n\t\t));\n\t}\n\tbox.addChild(new Spacer(1));\n\n\tif (!isParallel) {\n\t\tbox.addChild(new Text(theme.fg(\"dim\", `Task: ${taskPreview}`), 0, 0));\n\t\tbox.addChild(new Spacer(1));\n\t}\n\n\tif (isParallel) {\n\t\tfor (let index = 0; index < parallelTasks.length; index++) {\n\t\t\tconst task = parallelTasks[index]!;\n\t\t\tconst progress = resolveTaskProgress(taskProgress, task, index);\n\t\t\taddParallelTaskPreview(box, task, progress, index, parallelTasks.length, theme);\n\t\t\tif (index < parallelTasks.length - 1) {\n\t\t\t\tbox.addChild(new Spacer(1));\n\t\t\t}\n\t\t}\n\t\treturn;\n\t}\n\n\tconst recentTools = state?.recentTools ?? [];\n\tfor (const tool of recentTools) {\n\t\tbox.addChild(new Text(theme.fg(\"dim\", formatToolCall(tool.tool, tool.args)), 0, 0));\n\t}\n\tif (state?.currentTool) {\n\t\tconst active = formatToolCall(state.currentTool, state.currentToolArgs ?? \"\");\n\t\tbox.addChild(new Text(theme.fg(\"warning\", `> ${active}`), 0, 0));\n\t}\n\n\tif (state && state.recentOutput.length > 0) {\n\t\tif (recentTools.length > 0 || state.currentTool) {\n\t\t\tbox.addChild(new Spacer(1));\n\t\t}\n\t\tfor (const line of state.recentOutput) {\n\t\t\tbox.addChild(new Text(theme.fg(\"dim\", ` ${line}`), 0, 0));\n\t\t}\n\t}\n}\n\nexport function createDelegatedProgressWidget(\n\trequestId: string,\n\tagent: string,\n\tcontext: \"fresh\" | \"fork\",\n\ttask: string,\n\ttasks: DelegatedSubagentTask[] | undefined,\n\ttheme: Theme,\n\tmodel?: string,\n): Container & { dispose?(): void } {\n\tconst contextSuffix = context === \"fork\" ? theme.fg(\"warning\", \" [fork]\") : \"\";\n\tconst taskPreview = task.length > 200 ? `${task.slice(0, 200)}...` : task;\n\tconst parallelTasks = tasks ?? [];\n\tconst isParallel = parallelTasks.length > 0;\n\tconst parallelModels = [...new Set(parallelTasks\n\t\t.map((task) => normalizeModelLabel(task.model))\n\t\t.filter((entry): entry is string => !!entry))];\n\tconst requestModel = isParallel\n\t\t? (parallelModels.length === 1 ? parallelModels[0] : undefined)\n\t\t: normalizeModelLabel(model);\n\n\tconst container = new Container();\n\tcontainer.addChild(new Spacer(1));\n\tconst box = new Box(1, 1, (text: string) => theme.bg(\"toolPendingBg\", text));\n\tcontainer.addChild(box);\n\n\tlet lastKey = \"\";\n\n\tcontainer.render = (width: number): string[] => {\n\t\tconst state = getDelegatedLiveState(requestId);\n\t\tconst elapsed = state ? Date.now() - state.startedAt : 0;\n\t\tconst key = stateKey(state, elapsed);\n\t\tif (key !== lastKey) {\n\t\t\tlastKey = key;\n\t\t\trebuildBox(box, agent, contextSuffix, taskPreview, parallelTasks, isParallel, state, elapsed, theme, requestModel);\n\t\t}\n\t\treturn Container.prototype.render.call(container, width);\n\t};\n\n\treturn container;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"subagent-widget.js","sourceRoot":"","sources":["../../../src/builtin-extensions/pi-prompt-template-model/subagent-widget.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport type { Theme } from \"@ashx-j/lunr\";\nimport { Box, Container, Spacer, Text } from \"@ashx-j/lunr-tui\";\nimport {\n\tgetDelegatedLiveState,\n\ttype DelegatedSubagentLiveState,\n\ttype DelegatedSubagentTask,\n\ttype DelegatedSubagentTaskProgress,\n} from \"./subagent-runtime.ts\";\n\nexport const DELEGATED_WIDGET_KEY = \"prompt-subagent-progress\";\n\nfunction formatDuration(ms: number): string {\n\tconst seconds = Math.floor(ms / 1000);\n\tif (seconds < 60) return `${seconds}s`;\n\tconst minutes = Math.floor(seconds / 60);\n\tconst remaining = seconds % 60;\n\treturn `${minutes}m${remaining}s`;\n}\n\nfunction formatTokens(n: number | undefined): string {\n\tif (!n) return \"0\";\n\tif (n >= 1000) return `${(n / 1000).toFixed(1)}k`;\n\treturn String(n);\n}\n\nfunction normalizeModelLabel(model: string | undefined): string | undefined {\n\tif (!model) return undefined;\n\treturn model.includes(\"/\") ? model.split(\"/\").pop() : model;\n}\n\nfunction formatToolCall(tool: string, args: string): string {\n\tconst safeArgs = args ?? \"\";\n\tswitch (tool) {\n\t\tcase \"bash\": {\n\t\t\tconst cmd = safeArgs.replace(/[\\n\\t]/g, \" \").trim();\n\t\t\treturn `$ ${cmd.length > 80 ? cmd.slice(0, 80) + \"...\" : cmd}`;\n\t\t}\n\t\tcase \"read\": return `[read: ${safeArgs}]`;\n\t\tcase \"write\": return `[write: ${safeArgs}]`;\n\t\tcase \"edit\": return `[edit: ${safeArgs}]`;\n\t\tdefault: {\n\t\t\tconst short = safeArgs.length > 60 ? safeArgs.slice(0, 60) + \"...\" : safeArgs;\n\t\t\treturn `[${tool}: ${short}]`;\n\t\t}\n\t}\n}\n\nfunction stateKey(state: DelegatedSubagentLiveState | undefined, elapsed: number): string {\n\tif (!state) return \"none\";\n\tconst elapsedBucket = Math.floor(elapsed / 1000);\n\tconst tool = state.currentTool ?? \"\";\n\tconst outputLen = state.recentOutput.length;\n\tconst outputTail = state.recentOutput.length > 0\n\t\t? state.recentOutput[state.recentOutput.length - 1]?.slice(0, 80) ?? \"\"\n\t\t: \"\";\n\tconst toolsLen = state.recentTools.length;\n\tconst taskProgressKey = state.taskProgress\n\t\t.map((entry) => {\n\t\t\tconst recentOutputLines = (entry.recentOutputLines ?? []).slice(-3).join(\"\\u241f\");\n\t\t\tconst recentTool = entry.recentTools?.[entry.recentTools.length - 1];\n\t\t\treturn [\n\t\t\t\tentry.index ?? \"\",\n\t\t\t\tentry.agent,\n\t\t\t\tentry.status ?? \"\",\n\t\t\t\tentry.currentTool ?? \"\",\n\t\t\t\tentry.toolCount ?? 0,\n\t\t\t\tentry.tokens ?? 0,\n\t\t\t\tentry.model ?? \"\",\n\t\t\t\trecentTool?.tool ?? \"\",\n\t\t\t\trecentTool?.args ?? \"\",\n\t\t\t\trecentOutputLines,\n\t\t\t].join(\":\");\n\t\t})\n\t\t.join(\"|\");\n\treturn `${state.status}|${tool}|${state.toolCount}|${state.tokens}|${outputLen}:${outputTail}|${toolsLen}|${state.model ?? \"\"}|${taskProgressKey}|${elapsedBucket}`;\n}\n\nfunction getParallelPreviewLimits(taskCount: number): { tools: number; output: number } {\n\tif (taskCount <= 2) return { tools: 3, output: 6 };\n\tif (taskCount <= 4) return { tools: 2, output: 4 };\n\treturn { tools: 2, output: 3 };\n}\n\nfunction resolveTaskProgress(\n\ttaskProgress: DelegatedSubagentTaskProgress[],\n\ttask: DelegatedSubagentTask,\n\tindex: number,\n): DelegatedSubagentTaskProgress | undefined {\n\treturn taskProgress.find((entry) => entry.index === index)\n\t\t?? taskProgress.find((entry) => entry.index === undefined && entry.agent === task.agent)\n\t\t?? taskProgress[index];\n}\n\nfunction getTaskOutputLines(progress: DelegatedSubagentTaskProgress | undefined): string[] {\n\tif (!progress) return [];\n\tif (progress.recentOutputLines && progress.recentOutputLines.length > 0) {\n\t\treturn progress.recentOutputLines.filter((line) => line.trim());\n\t}\n\tif (!progress.recentOutput?.trim()) return [];\n\treturn progress.recentOutput.split(\"\\n\").filter((line) => line.trim());\n}\n\nfunction getTaskHeader(\n\tindex: number,\n\ttask: DelegatedSubagentTask,\n\tprogress: DelegatedSubagentTaskProgress | undefined,\n\ttheme: Theme,\n): string {\n\tconst status = progress?.status ?? \"pending\";\n\tconst modelLabel = normalizeModelLabel(progress?.model ?? task.model);\n\tconst modelSuffix = modelLabel ? ` ${theme.fg(\"dim\", modelLabel)}` : \"\";\n\tconst label = `task ${index + 1} · ${task.agent}`;\n\tif (status === \"running\") return `${theme.fg(\"toolTitle\", label)}${modelSuffix} ${theme.fg(\"warning\", \"running\")}`;\n\tif (status === \"completed\") return `${theme.fg(\"toolTitle\", label)}${modelSuffix} ${theme.fg(\"success\", \"completed\")}`;\n\tif (status === \"failed\") return `${theme.fg(\"toolTitle\", label)}${modelSuffix} ${theme.fg(\"error\", \"failed\")}`;\n\treturn `${theme.fg(\"toolTitle\", label)}${modelSuffix} ${theme.fg(\"dim\", status)}`;\n}\n\nfunction addParallelTaskPreview(\n\tbox: Box,\n\ttask: DelegatedSubagentTask,\n\tprogress: DelegatedSubagentTaskProgress | undefined,\n\tindex: number,\n\ttaskCount: number,\n\ttheme: Theme,\n): void {\n\tbox.addChild(new Text(getTaskHeader(index, task, progress, theme), 0, 0));\n\n\tconst limits = getParallelPreviewLimits(taskCount);\n\tif (!progress) {\n\t\tbox.addChild(new Text(theme.fg(\"dim\", \" waiting for updates\"), 0, 0));\n\t\treturn;\n\t}\n\n\tif (progress.currentTool) {\n\t\tbox.addChild(new Text(theme.fg(\"warning\", ` > ${formatToolCall(progress.currentTool, progress.currentToolArgs ?? \"\")}`), 0, 0));\n\t}\n\n\tconst recentTools = (progress.recentTools ?? []).slice(-limits.tools);\n\tfor (const tool of recentTools) {\n\t\tbox.addChild(new Text(theme.fg(\"dim\", ` ${formatToolCall(tool.tool, tool.args)}`), 0, 0));\n\t}\n\n\tconst outputLines = getTaskOutputLines(progress);\n\tconst visibleOutputLines = outputLines.slice(-limits.output);\n\tfor (const line of visibleOutputLines) {\n\t\tbox.addChild(new Text(theme.fg(\"dim\", ` ${line}`), 0, 0));\n\t}\n\n\tconst hiddenLineCount = outputLines.length - visibleOutputLines.length;\n\tif (hiddenLineCount > 0) {\n\t\tbox.addChild(new Text(theme.fg(\"warning\", ` ... (${hiddenLineCount} older line${hiddenLineCount === 1 ? \"\" : \"s\"})`), 0, 0));\n\t}\n\n\tif (!progress.currentTool && recentTools.length === 0 && visibleOutputLines.length === 0) {\n\t\tif (progress.status === \"completed\") {\n\t\t\tconst toolCount = progress.toolCount ?? 0;\n\t\t\tbox.addChild(new Text(theme.fg(\"dim\", ` completed (${toolCount} tool${toolCount === 1 ? \"\" : \"s\"})`), 0, 0));\n\t\t} else if (progress.status === \"failed\") {\n\t\t\tbox.addChild(new Text(theme.fg(\"error\", \" task failed\"), 0, 0));\n\t\t} else {\n\t\t\tbox.addChild(new Text(theme.fg(\"dim\", \" waiting for output\"), 0, 0));\n\t\t}\n\t}\n}\n\nfunction rebuildBox(\n\tbox: Box,\n\tagent: string,\n\tcontextSuffix: string,\n\ttaskPreview: string,\n\tparallelTasks: DelegatedSubagentTask[],\n\tisParallel: boolean,\n\tstate: DelegatedSubagentLiveState | undefined,\n\telapsed: number,\n\ttheme: Theme,\n\trequestModel?: string,\n): void {\n\tbox.clear();\n\n\tconst taskProgress = state?.taskProgress ?? [];\n\tconst baseToolCount = state?.toolCount ?? 0;\n\tconst baseTokens = state?.tokens ?? 0;\n\tconst parallelToolCount = taskProgress.reduce((sum, entry) => sum + (entry.toolCount ?? 0), 0);\n\tconst parallelTokens = taskProgress.reduce((sum, entry) => sum + (entry.tokens ?? 0), 0);\n\tconst toolCount = isParallel && parallelToolCount > 0 ? parallelToolCount : baseToolCount;\n\tconst tokens = isParallel && parallelTokens > 0 ? parallelTokens : baseTokens;\n\tconst tokensLabel = formatTokens(tokens);\n\tconst duration = formatDuration(elapsed);\n\tconst isThinking = toolCount === 0 && tokens === 0;\n\tconst icon = theme.fg(\"warning\", \"...\");\n\tconst modelLabel = isParallel\n\t\t? requestModel\n\t\t: normalizeModelLabel(state?.model ?? requestModel);\n\tconst modelSuffix = modelLabel ? ` ${theme.fg(\"dim\", modelLabel)}` : \"\";\n\tconst stats = isThinking\n\t\t? `thinking, ${duration}`\n\t\t: `${toolCount} tool${toolCount === 1 ? \"\" : \"s\"}, ${tokensLabel} tok, ${duration}`;\n\n\tif (isParallel) {\n\t\tconst completedCount = taskProgress.filter((entry) => entry.status === \"completed\").length;\n\t\tconst runningLabel = `parallel ${completedCount}/${parallelTasks.length} running`;\n\t\tbox.addChild(new Text(`${icon} ${theme.fg(\"toolTitle\", theme.bold(runningLabel))}${contextSuffix}${modelSuffix} | ${stats}`, 0, 0));\n\t} else {\n\t\tbox.addChild(new Text(\n\t\t\t`${icon} ${theme.fg(\"toolTitle\", theme.bold(agent))}${contextSuffix}${modelSuffix} | ${stats}`,\n\t\t\t0,\n\t\t\t0,\n\t\t));\n\t}\n\tbox.addChild(new Spacer(1));\n\n\tif (!isParallel) {\n\t\tbox.addChild(new Text(theme.fg(\"dim\", `Task: ${taskPreview}`), 0, 0));\n\t\tbox.addChild(new Spacer(1));\n\t}\n\n\tif (isParallel) {\n\t\tfor (let index = 0; index < parallelTasks.length; index++) {\n\t\t\tconst task = parallelTasks[index]!;\n\t\t\tconst progress = resolveTaskProgress(taskProgress, task, index);\n\t\t\taddParallelTaskPreview(box, task, progress, index, parallelTasks.length, theme);\n\t\t\tif (index < parallelTasks.length - 1) {\n\t\t\t\tbox.addChild(new Spacer(1));\n\t\t\t}\n\t\t}\n\t\treturn;\n\t}\n\n\tconst recentTools = state?.recentTools ?? [];\n\tfor (const tool of recentTools) {\n\t\tbox.addChild(new Text(theme.fg(\"dim\", formatToolCall(tool.tool, tool.args)), 0, 0));\n\t}\n\tif (state?.currentTool) {\n\t\tconst active = formatToolCall(state.currentTool, state.currentToolArgs ?? \"\");\n\t\tbox.addChild(new Text(theme.fg(\"warning\", `> ${active}`), 0, 0));\n\t}\n\n\tif (state && state.recentOutput.length > 0) {\n\t\tif (recentTools.length > 0 || state.currentTool) {\n\t\t\tbox.addChild(new Spacer(1));\n\t\t}\n\t\tfor (const line of state.recentOutput) {\n\t\t\tbox.addChild(new Text(theme.fg(\"dim\", ` ${line}`), 0, 0));\n\t\t}\n\t}\n}\n\nexport function createDelegatedProgressWidget(\n\trequestId: string,\n\tagent: string,\n\tcontext: \"fresh\" | \"fork\",\n\ttask: string,\n\ttasks: DelegatedSubagentTask[] | undefined,\n\ttheme: Theme,\n\tmodel?: string,\n): Container & { dispose?(): void } {\n\tconst contextSuffix = context === \"fork\" ? theme.fg(\"warning\", \" [fork]\") : \"\";\n\tconst taskPreview = task.length > 200 ? `${task.slice(0, 200)}...` : task;\n\tconst parallelTasks = tasks ?? [];\n\tconst isParallel = parallelTasks.length > 0;\n\tconst parallelModels = [...new Set(parallelTasks\n\t\t.map((task) => normalizeModelLabel(task.model))\n\t\t.filter((entry): entry is string => !!entry))];\n\tconst requestModel = isParallel\n\t\t? (parallelModels.length === 1 ? parallelModels[0] : undefined)\n\t\t: normalizeModelLabel(model);\n\n\tconst container = new Container();\n\tcontainer.addChild(new Spacer(1));\n\tconst box = new Box(1, 1, (text: string) => theme.bg(\"toolPendingBg\", text));\n\tcontainer.addChild(box);\n\n\tlet lastKey = \"\";\n\n\tcontainer.render = (width: number): string[] => {\n\t\tconst state = getDelegatedLiveState(requestId);\n\t\tconst elapsed = state ? Date.now() - state.startedAt : 0;\n\t\tconst key = stateKey(state, elapsed);\n\t\tif (key !== lastKey) {\n\t\t\tlastKey = key;\n\t\t\trebuildBox(box, agent, contextSuffix, taskPreview, parallelTasks, isParallel, state, elapsed, theme, requestModel);\n\t\t}\n\t\treturn Container.prototype.render.call(container, width);\n\t};\n\n\treturn container;\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ExtensionAPI, type ExtensionCommandContext, type ExtensionContext } from "@
|
|
1
|
+
import { type ExtensionAPI, type ExtensionCommandContext, type ExtensionContext } from "@ashx-j/lunr";
|
|
2
2
|
export interface ToolManagerDeps {
|
|
3
3
|
isActive(): boolean;
|
|
4
4
|
getStoredCtx(): ExtensionCommandContext | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-manager.d.ts","sourceRoot":"","sources":["../../../src/builtin-extensions/pi-prompt-template-model/tool-manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,KAAK,YAAY,EAAE,KAAK,uBAAuB,EAAE,KAAK,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAItI,MAAM,WAAW,eAAe;IAC/B,QAAQ,IAAI,OAAO,CAAC;IACpB,YAAY,IAAI,uBAAuB,GAAG,IAAI,CAAC;IAC/C,YAAY,CAAC,GAAG,EAAE,uBAAuB,GAAG,IAAI,GAAG,IAAI,CAAC;IACxD,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7E;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe;;;;;;;;EA+MxE","sourcesContent":["// @ts-nocheck\nimport { mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { getAgentDir, type ExtensionAPI, type ExtensionCommandContext, type ExtensionContext } from \"@
|
|
1
|
+
{"version":3,"file":"tool-manager.d.ts","sourceRoot":"","sources":["../../../src/builtin-extensions/pi-prompt-template-model/tool-manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,KAAK,YAAY,EAAE,KAAK,uBAAuB,EAAE,KAAK,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAItI,MAAM,WAAW,eAAe;IAC/B,QAAQ,IAAI,OAAO,CAAC;IACpB,YAAY,IAAI,uBAAuB,GAAG,IAAI,CAAC;IAC/C,YAAY,CAAC,GAAG,EAAE,uBAAuB,GAAG,IAAI,GAAG,IAAI,CAAC;IACxD,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7E;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe;;;;;;;;EA+MxE","sourcesContent":["// @ts-nocheck\nimport { mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { getAgentDir, type ExtensionAPI, type ExtensionCommandContext, type ExtensionContext } from \"@ashx-j/lunr\";\nimport { Type } from \"typebox\";\nimport { notify } from \"./notifications.ts\";\n\nexport interface ToolManagerDeps {\n\tisActive(): boolean;\n\tgetStoredCtx(): ExtensionCommandContext | null;\n\tsetStoredCtx(ctx: ExtensionCommandContext | null): void;\n\texecuteCommand(command: string, ctx: ExtensionCommandContext): Promise<void>;\n}\n\nexport function createToolManager(pi: ExtensionAPI, deps: ToolManagerDeps) {\n\tlet toolEnabled = false;\n\tlet toolGuidance: string | null = null;\n\tlet toolRegistered = false;\n\tlet toolQueuedCommand: string | null = null;\n\tconst configPath = join(getAgentDir(), \"prompt-template-model.json\");\n\n\ttry {\n\t\tconst rawConfig = JSON.parse(readFileSync(configPath, \"utf-8\"));\n\t\tif (rawConfig && typeof rawConfig === \"object\") {\n\t\t\tconst config = rawConfig as { toolEnabled?: unknown; toolGuidance?: unknown };\n\t\t\tif (typeof config.toolEnabled === \"boolean\") {\n\t\t\t\ttoolEnabled = config.toolEnabled;\n\t\t\t}\n\t\t\tif (typeof config.toolGuidance === \"string\") {\n\t\t\t\ttoolGuidance = config.toolGuidance;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconst err = error as NodeJS.ErrnoException;\n\t\tif (err.code !== \"ENOENT\") {\n\t\t\tprocess.stderr.write(\n\t\t\t\t`[pi-prompt-template-model] Failed to read ${configPath}: ${error instanceof Error ? error.message : String(error)}\\n`,\n\t\t\t);\n\t\t}\n\t}\n\n\tfunction saveToolConfig() {\n\t\ttry {\n\t\t\tmkdirSync(getAgentDir(), { recursive: true });\n\t\t\twriteFileSync(configPath, JSON.stringify({ toolEnabled, toolGuidance }, null, 2));\n\t\t} catch (error) {\n\t\t\tprocess.stderr.write(\n\t\t\t\t`[pi-prompt-template-model] Failed to write ${configPath}: ${error instanceof Error ? error.message : String(error)}\\n`,\n\t\t\t);\n\t\t}\n\t}\n\n\tfunction ensureRegistered() {\n\t\tif (toolRegistered) return;\n\t\ttoolRegistered = true;\n\t\tpi.registerTool({\n\t\t\tname: \"run-prompt\",\n\t\t\tlabel: \"Run Prompt\",\n\t\t\tdescription:\n\t\t\t\t\"Run a prompt template command. Pass the template name and any arguments. \" +\n\t\t\t\t\"Supports --loop for loops (e.g. 'deslop --loop 5', 'deslop --loop=5', 'deslop --loop' for unlimited until convergence with a 999-iteration cap), \" +\n\t\t\t\t\"--fresh for context collapse between iterations, and --no-converge to disable early stopping for bounded loops. \" +\n\t\t\t\t\"Supports runtime delegation override via --subagent, --subagent=<name>, or --subagent:<name>. \" +\n\t\t\t\t\"Use 'chain-prompts template1 -> template2' for chaining and add --chain-context to pass previous step summaries into delegated steps.\",\n\t\t\tpromptSnippet:\n\t\t\t\t\"Use this to run slash/prompt templates by name with args (including --loop/--fresh and chain-prompts flows) when the user asks to execute a prompt template.\",\n\t\t\tparameters: Type.Object({\n\t\t\t\tcommand: Type.String({\n\t\t\t\t\tdescription: \"Template name and arguments (e.g. 'deslop --loop 5 --fresh', 'deslop --subagent:worker', 'deslop --subagent', 'chain-prompts analyze -> fix --chain-context', 'chain-prompts analyze -> fix --loop=3')\",\n\t\t\t\t}),\n\t\t\t}),\n\t\t\texecute: async (_id, params) => {\n\t\t\t\tif (!toolEnabled) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: \"run-prompt tool is disabled. User must run `/prompt-tool on` to enable.\" }],\n\t\t\t\t\t\tdetails: {},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (deps.isActive()) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: \"A prompt command is already running. Wait for it to complete.\" }],\n\t\t\t\t\t\tdetails: {},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (!deps.getStoredCtx()) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: \"No command context. Run any prompt command first to initialize.\" }],\n\t\t\t\t\t\tdetails: {},\n\t\t\t\t\t\tisError: true,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tconst commandParam = (params as { command?: unknown }).command;\n\t\t\t\tconst command = typeof commandParam === \"string\" ? commandParam.trim() : \"\";\n\t\t\t\tif (!command) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: \"No command specified.\" }],\n\t\t\t\t\t\tdetails: {},\n\t\t\t\t\t\tisError: true,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (toolQueuedCommand) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: \"A prompt command is already queued. Wait for it to execute.\" }],\n\t\t\t\t\t\tdetails: {},\n\t\t\t\t\t\tisError: true,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\ttoolQueuedCommand = command;\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [{ type: \"text\", text: `Prompt command queued: \"${command}\". Will execute when this turn ends.` }],\n\t\t\t\t\tdetails: {},\n\t\t\t\t};\n\t\t\t},\n\t\t});\n\t}\n\n\tfunction registerCommand() {\n\t\tpi.registerCommand(\"prompt-tool\", {\n\t\t\tdescription: \"Manage the run-prompt tool (agent-accessible prompt execution)\",\n\t\t\thandler: async (args, ctx) => {\n\t\t\t\tdeps.setStoredCtx(ctx);\n\t\t\t\tconst trimmed = args.trim();\n\n\t\t\t\tif (trimmed === \"on\" || trimmed.startsWith(\"on \")) {\n\t\t\t\t\ttoolEnabled = true;\n\t\t\t\t\tensureRegistered();\n\t\t\t\t\tconst guidanceRaw = trimmed.slice(\"on\".length).trim();\n\t\t\t\t\tif (guidanceRaw) {\n\t\t\t\t\t\ttoolGuidance = guidanceRaw.replace(/^[\"']|[\"']$/g, \"\");\n\t\t\t\t\t\tnotify(ctx, `run-prompt tool enabled with guidance: \"${toolGuidance}\"`, \"info\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnotify(ctx, \"run-prompt tool enabled.\", \"info\");\n\t\t\t\t\t}\n\t\t\t\t\tsaveToolConfig();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (trimmed === \"off\") {\n\t\t\t\t\ttoolEnabled = false;\n\t\t\t\t\tsaveToolConfig();\n\t\t\t\t\tnotify(ctx, \"run-prompt tool disabled.\", \"info\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (trimmed === \"guidance\" || trimmed.startsWith(\"guidance \")) {\n\t\t\t\t\tif (trimmed === \"guidance\" || trimmed === \"guidance show\") {\n\t\t\t\t\t\tif (toolGuidance) {\n\t\t\t\t\t\t\tnotify(ctx, `Current guidance: \"${toolGuidance}\"`, \"info\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnotify(ctx, \"No guidance set. Use `/prompt-tool guidance <text>` to set.\", \"info\");\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (trimmed === \"guidance clear\") {\n\t\t\t\t\t\ttoolGuidance = null;\n\t\t\t\t\t\tsaveToolConfig();\n\t\t\t\t\t\tnotify(ctx, \"Guidance cleared.\", \"info\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst guidanceRaw = trimmed.slice(\"guidance\".length).trim();\n\t\t\t\t\t\ttoolGuidance = guidanceRaw.replace(/^[\"']|[\"']$/g, \"\");\n\t\t\t\t\t\tsaveToolConfig();\n\t\t\t\t\t\tnotify(ctx, `Guidance set: \"${toolGuidance}\"`, \"info\");\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!trimmed) {\n\t\t\t\t\tif (toolEnabled) {\n\t\t\t\t\t\tconst guidanceInfo = toolGuidance ? ` | Guidance: \"${toolGuidance}\"` : \"\";\n\t\t\t\t\t\tnotify(ctx, `run-prompt tool is enabled${guidanceInfo}`, \"info\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnotify(ctx, \"run-prompt tool is disabled\", \"info\");\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tnotify(ctx, \"Usage: /prompt-tool [on [guidance] | off | guidance [text|clear]]\", \"error\");\n\t\t\t},\n\t\t});\n\t}\n\n\tasync function processQueue(ctx: ExtensionContext, restoreFn: () => Promise<void>) {\n\t\tif (!toolQueuedCommand) return false;\n\t\tconst storedCtx = deps.getStoredCtx();\n\t\tif (!storedCtx) {\n\t\t\ttoolQueuedCommand = null;\n\t\t\treturn false;\n\t\t}\n\n\t\tconst command = toolQueuedCommand;\n\t\ttoolQueuedCommand = null;\n\t\tawait restoreFn();\n\t\ttry {\n\t\t\tawait deps.executeCommand(command, storedCtx);\n\t\t} catch (error) {\n\t\t\tnotify(\n\t\t\t\tctx,\n\t\t\t\t`Failed to execute queued prompt command \"${command}\": ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t\"error\",\n\t\t\t);\n\t\t}\n\t\treturn true;\n\t}\n\n\treturn {\n\t\tisEnabled() {\n\t\t\treturn toolEnabled;\n\t\t},\n\t\tgetGuidance() {\n\t\t\treturn toolGuidance;\n\t\t},\n\t\thasQueuedCommand() {\n\t\t\treturn toolQueuedCommand !== null;\n\t\t},\n\t\tclearQueue() {\n\t\t\ttoolQueuedCommand = null;\n\t\t},\n\t\tensureRegistered,\n\t\tregisterCommand,\n\t\tprocessQueue,\n\t};\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
2
|
import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
3
3
|
import { join } from "node:path";
|
|
4
|
-
import { getAgentDir } from "@
|
|
4
|
+
import { getAgentDir } from "@ashx-j/lunr";
|
|
5
5
|
import { Type } from "typebox";
|
|
6
6
|
import { notify } from "./notifications.js";
|
|
7
7
|
export function createToolManager(pi, deps) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-manager.js","sourceRoot":"","sources":["../../../src/builtin-extensions/pi-prompt-template-model/tool-manager.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport { mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { getAgentDir, type ExtensionAPI, type ExtensionCommandContext, type ExtensionContext } from \"@earendil-works/pi-coding-agent\";\nimport { Type } from \"typebox\";\nimport { notify } from \"./notifications.ts\";\n\nexport interface ToolManagerDeps {\n\tisActive(): boolean;\n\tgetStoredCtx(): ExtensionCommandContext | null;\n\tsetStoredCtx(ctx: ExtensionCommandContext | null): void;\n\texecuteCommand(command: string, ctx: ExtensionCommandContext): Promise<void>;\n}\n\nexport function createToolManager(pi: ExtensionAPI, deps: ToolManagerDeps) {\n\tlet toolEnabled = false;\n\tlet toolGuidance: string | null = null;\n\tlet toolRegistered = false;\n\tlet toolQueuedCommand: string | null = null;\n\tconst configPath = join(getAgentDir(), \"prompt-template-model.json\");\n\n\ttry {\n\t\tconst rawConfig = JSON.parse(readFileSync(configPath, \"utf-8\"));\n\t\tif (rawConfig && typeof rawConfig === \"object\") {\n\t\t\tconst config = rawConfig as { toolEnabled?: unknown; toolGuidance?: unknown };\n\t\t\tif (typeof config.toolEnabled === \"boolean\") {\n\t\t\t\ttoolEnabled = config.toolEnabled;\n\t\t\t}\n\t\t\tif (typeof config.toolGuidance === \"string\") {\n\t\t\t\ttoolGuidance = config.toolGuidance;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconst err = error as NodeJS.ErrnoException;\n\t\tif (err.code !== \"ENOENT\") {\n\t\t\tprocess.stderr.write(\n\t\t\t\t`[pi-prompt-template-model] Failed to read ${configPath}: ${error instanceof Error ? error.message : String(error)}\\n`,\n\t\t\t);\n\t\t}\n\t}\n\n\tfunction saveToolConfig() {\n\t\ttry {\n\t\t\tmkdirSync(getAgentDir(), { recursive: true });\n\t\t\twriteFileSync(configPath, JSON.stringify({ toolEnabled, toolGuidance }, null, 2));\n\t\t} catch (error) {\n\t\t\tprocess.stderr.write(\n\t\t\t\t`[pi-prompt-template-model] Failed to write ${configPath}: ${error instanceof Error ? error.message : String(error)}\\n`,\n\t\t\t);\n\t\t}\n\t}\n\n\tfunction ensureRegistered() {\n\t\tif (toolRegistered) return;\n\t\ttoolRegistered = true;\n\t\tpi.registerTool({\n\t\t\tname: \"run-prompt\",\n\t\t\tlabel: \"Run Prompt\",\n\t\t\tdescription:\n\t\t\t\t\"Run a prompt template command. Pass the template name and any arguments. \" +\n\t\t\t\t\"Supports --loop for loops (e.g. 'deslop --loop 5', 'deslop --loop=5', 'deslop --loop' for unlimited until convergence with a 999-iteration cap), \" +\n\t\t\t\t\"--fresh for context collapse between iterations, and --no-converge to disable early stopping for bounded loops. \" +\n\t\t\t\t\"Supports runtime delegation override via --subagent, --subagent=<name>, or --subagent:<name>. \" +\n\t\t\t\t\"Use 'chain-prompts template1 -> template2' for chaining and add --chain-context to pass previous step summaries into delegated steps.\",\n\t\t\tpromptSnippet:\n\t\t\t\t\"Use this to run slash/prompt templates by name with args (including --loop/--fresh and chain-prompts flows) when the user asks to execute a prompt template.\",\n\t\t\tparameters: Type.Object({\n\t\t\t\tcommand: Type.String({\n\t\t\t\t\tdescription: \"Template name and arguments (e.g. 'deslop --loop 5 --fresh', 'deslop --subagent:worker', 'deslop --subagent', 'chain-prompts analyze -> fix --chain-context', 'chain-prompts analyze -> fix --loop=3')\",\n\t\t\t\t}),\n\t\t\t}),\n\t\t\texecute: async (_id, params) => {\n\t\t\t\tif (!toolEnabled) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: \"run-prompt tool is disabled. User must run `/prompt-tool on` to enable.\" }],\n\t\t\t\t\t\tdetails: {},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (deps.isActive()) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: \"A prompt command is already running. Wait for it to complete.\" }],\n\t\t\t\t\t\tdetails: {},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (!deps.getStoredCtx()) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: \"No command context. Run any prompt command first to initialize.\" }],\n\t\t\t\t\t\tdetails: {},\n\t\t\t\t\t\tisError: true,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tconst commandParam = (params as { command?: unknown }).command;\n\t\t\t\tconst command = typeof commandParam === \"string\" ? commandParam.trim() : \"\";\n\t\t\t\tif (!command) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: \"No command specified.\" }],\n\t\t\t\t\t\tdetails: {},\n\t\t\t\t\t\tisError: true,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (toolQueuedCommand) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: \"A prompt command is already queued. Wait for it to execute.\" }],\n\t\t\t\t\t\tdetails: {},\n\t\t\t\t\t\tisError: true,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\ttoolQueuedCommand = command;\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [{ type: \"text\", text: `Prompt command queued: \"${command}\". Will execute when this turn ends.` }],\n\t\t\t\t\tdetails: {},\n\t\t\t\t};\n\t\t\t},\n\t\t});\n\t}\n\n\tfunction registerCommand() {\n\t\tpi.registerCommand(\"prompt-tool\", {\n\t\t\tdescription: \"Manage the run-prompt tool (agent-accessible prompt execution)\",\n\t\t\thandler: async (args, ctx) => {\n\t\t\t\tdeps.setStoredCtx(ctx);\n\t\t\t\tconst trimmed = args.trim();\n\n\t\t\t\tif (trimmed === \"on\" || trimmed.startsWith(\"on \")) {\n\t\t\t\t\ttoolEnabled = true;\n\t\t\t\t\tensureRegistered();\n\t\t\t\t\tconst guidanceRaw = trimmed.slice(\"on\".length).trim();\n\t\t\t\t\tif (guidanceRaw) {\n\t\t\t\t\t\ttoolGuidance = guidanceRaw.replace(/^[\"']|[\"']$/g, \"\");\n\t\t\t\t\t\tnotify(ctx, `run-prompt tool enabled with guidance: \"${toolGuidance}\"`, \"info\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnotify(ctx, \"run-prompt tool enabled.\", \"info\");\n\t\t\t\t\t}\n\t\t\t\t\tsaveToolConfig();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (trimmed === \"off\") {\n\t\t\t\t\ttoolEnabled = false;\n\t\t\t\t\tsaveToolConfig();\n\t\t\t\t\tnotify(ctx, \"run-prompt tool disabled.\", \"info\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (trimmed === \"guidance\" || trimmed.startsWith(\"guidance \")) {\n\t\t\t\t\tif (trimmed === \"guidance\" || trimmed === \"guidance show\") {\n\t\t\t\t\t\tif (toolGuidance) {\n\t\t\t\t\t\t\tnotify(ctx, `Current guidance: \"${toolGuidance}\"`, \"info\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnotify(ctx, \"No guidance set. Use `/prompt-tool guidance <text>` to set.\", \"info\");\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (trimmed === \"guidance clear\") {\n\t\t\t\t\t\ttoolGuidance = null;\n\t\t\t\t\t\tsaveToolConfig();\n\t\t\t\t\t\tnotify(ctx, \"Guidance cleared.\", \"info\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst guidanceRaw = trimmed.slice(\"guidance\".length).trim();\n\t\t\t\t\t\ttoolGuidance = guidanceRaw.replace(/^[\"']|[\"']$/g, \"\");\n\t\t\t\t\t\tsaveToolConfig();\n\t\t\t\t\t\tnotify(ctx, `Guidance set: \"${toolGuidance}\"`, \"info\");\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!trimmed) {\n\t\t\t\t\tif (toolEnabled) {\n\t\t\t\t\t\tconst guidanceInfo = toolGuidance ? ` | Guidance: \"${toolGuidance}\"` : \"\";\n\t\t\t\t\t\tnotify(ctx, `run-prompt tool is enabled${guidanceInfo}`, \"info\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnotify(ctx, \"run-prompt tool is disabled\", \"info\");\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tnotify(ctx, \"Usage: /prompt-tool [on [guidance] | off | guidance [text|clear]]\", \"error\");\n\t\t\t},\n\t\t});\n\t}\n\n\tasync function processQueue(ctx: ExtensionContext, restoreFn: () => Promise<void>) {\n\t\tif (!toolQueuedCommand) return false;\n\t\tconst storedCtx = deps.getStoredCtx();\n\t\tif (!storedCtx) {\n\t\t\ttoolQueuedCommand = null;\n\t\t\treturn false;\n\t\t}\n\n\t\tconst command = toolQueuedCommand;\n\t\ttoolQueuedCommand = null;\n\t\tawait restoreFn();\n\t\ttry {\n\t\t\tawait deps.executeCommand(command, storedCtx);\n\t\t} catch (error) {\n\t\t\tnotify(\n\t\t\t\tctx,\n\t\t\t\t`Failed to execute queued prompt command \"${command}\": ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t\"error\",\n\t\t\t);\n\t\t}\n\t\treturn true;\n\t}\n\n\treturn {\n\t\tisEnabled() {\n\t\t\treturn toolEnabled;\n\t\t},\n\t\tgetGuidance() {\n\t\t\treturn toolGuidance;\n\t\t},\n\t\thasQueuedCommand() {\n\t\t\treturn toolQueuedCommand !== null;\n\t\t},\n\t\tclearQueue() {\n\t\t\ttoolQueuedCommand = null;\n\t\t},\n\t\tensureRegistered,\n\t\tregisterCommand,\n\t\tprocessQueue,\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tool-manager.js","sourceRoot":"","sources":["../../../src/builtin-extensions/pi-prompt-template-model/tool-manager.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport { mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { getAgentDir, type ExtensionAPI, type ExtensionCommandContext, type ExtensionContext } from \"@ashx-j/lunr\";\nimport { Type } from \"typebox\";\nimport { notify } from \"./notifications.ts\";\n\nexport interface ToolManagerDeps {\n\tisActive(): boolean;\n\tgetStoredCtx(): ExtensionCommandContext | null;\n\tsetStoredCtx(ctx: ExtensionCommandContext | null): void;\n\texecuteCommand(command: string, ctx: ExtensionCommandContext): Promise<void>;\n}\n\nexport function createToolManager(pi: ExtensionAPI, deps: ToolManagerDeps) {\n\tlet toolEnabled = false;\n\tlet toolGuidance: string | null = null;\n\tlet toolRegistered = false;\n\tlet toolQueuedCommand: string | null = null;\n\tconst configPath = join(getAgentDir(), \"prompt-template-model.json\");\n\n\ttry {\n\t\tconst rawConfig = JSON.parse(readFileSync(configPath, \"utf-8\"));\n\t\tif (rawConfig && typeof rawConfig === \"object\") {\n\t\t\tconst config = rawConfig as { toolEnabled?: unknown; toolGuidance?: unknown };\n\t\t\tif (typeof config.toolEnabled === \"boolean\") {\n\t\t\t\ttoolEnabled = config.toolEnabled;\n\t\t\t}\n\t\t\tif (typeof config.toolGuidance === \"string\") {\n\t\t\t\ttoolGuidance = config.toolGuidance;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconst err = error as NodeJS.ErrnoException;\n\t\tif (err.code !== \"ENOENT\") {\n\t\t\tprocess.stderr.write(\n\t\t\t\t`[pi-prompt-template-model] Failed to read ${configPath}: ${error instanceof Error ? error.message : String(error)}\\n`,\n\t\t\t);\n\t\t}\n\t}\n\n\tfunction saveToolConfig() {\n\t\ttry {\n\t\t\tmkdirSync(getAgentDir(), { recursive: true });\n\t\t\twriteFileSync(configPath, JSON.stringify({ toolEnabled, toolGuidance }, null, 2));\n\t\t} catch (error) {\n\t\t\tprocess.stderr.write(\n\t\t\t\t`[pi-prompt-template-model] Failed to write ${configPath}: ${error instanceof Error ? error.message : String(error)}\\n`,\n\t\t\t);\n\t\t}\n\t}\n\n\tfunction ensureRegistered() {\n\t\tif (toolRegistered) return;\n\t\ttoolRegistered = true;\n\t\tpi.registerTool({\n\t\t\tname: \"run-prompt\",\n\t\t\tlabel: \"Run Prompt\",\n\t\t\tdescription:\n\t\t\t\t\"Run a prompt template command. Pass the template name and any arguments. \" +\n\t\t\t\t\"Supports --loop for loops (e.g. 'deslop --loop 5', 'deslop --loop=5', 'deslop --loop' for unlimited until convergence with a 999-iteration cap), \" +\n\t\t\t\t\"--fresh for context collapse between iterations, and --no-converge to disable early stopping for bounded loops. \" +\n\t\t\t\t\"Supports runtime delegation override via --subagent, --subagent=<name>, or --subagent:<name>. \" +\n\t\t\t\t\"Use 'chain-prompts template1 -> template2' for chaining and add --chain-context to pass previous step summaries into delegated steps.\",\n\t\t\tpromptSnippet:\n\t\t\t\t\"Use this to run slash/prompt templates by name with args (including --loop/--fresh and chain-prompts flows) when the user asks to execute a prompt template.\",\n\t\t\tparameters: Type.Object({\n\t\t\t\tcommand: Type.String({\n\t\t\t\t\tdescription: \"Template name and arguments (e.g. 'deslop --loop 5 --fresh', 'deslop --subagent:worker', 'deslop --subagent', 'chain-prompts analyze -> fix --chain-context', 'chain-prompts analyze -> fix --loop=3')\",\n\t\t\t\t}),\n\t\t\t}),\n\t\t\texecute: async (_id, params) => {\n\t\t\t\tif (!toolEnabled) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: \"run-prompt tool is disabled. User must run `/prompt-tool on` to enable.\" }],\n\t\t\t\t\t\tdetails: {},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (deps.isActive()) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: \"A prompt command is already running. Wait for it to complete.\" }],\n\t\t\t\t\t\tdetails: {},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (!deps.getStoredCtx()) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: \"No command context. Run any prompt command first to initialize.\" }],\n\t\t\t\t\t\tdetails: {},\n\t\t\t\t\t\tisError: true,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tconst commandParam = (params as { command?: unknown }).command;\n\t\t\t\tconst command = typeof commandParam === \"string\" ? commandParam.trim() : \"\";\n\t\t\t\tif (!command) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: \"No command specified.\" }],\n\t\t\t\t\t\tdetails: {},\n\t\t\t\t\t\tisError: true,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (toolQueuedCommand) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: \"A prompt command is already queued. Wait for it to execute.\" }],\n\t\t\t\t\t\tdetails: {},\n\t\t\t\t\t\tisError: true,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\ttoolQueuedCommand = command;\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [{ type: \"text\", text: `Prompt command queued: \"${command}\". Will execute when this turn ends.` }],\n\t\t\t\t\tdetails: {},\n\t\t\t\t};\n\t\t\t},\n\t\t});\n\t}\n\n\tfunction registerCommand() {\n\t\tpi.registerCommand(\"prompt-tool\", {\n\t\t\tdescription: \"Manage the run-prompt tool (agent-accessible prompt execution)\",\n\t\t\thandler: async (args, ctx) => {\n\t\t\t\tdeps.setStoredCtx(ctx);\n\t\t\t\tconst trimmed = args.trim();\n\n\t\t\t\tif (trimmed === \"on\" || trimmed.startsWith(\"on \")) {\n\t\t\t\t\ttoolEnabled = true;\n\t\t\t\t\tensureRegistered();\n\t\t\t\t\tconst guidanceRaw = trimmed.slice(\"on\".length).trim();\n\t\t\t\t\tif (guidanceRaw) {\n\t\t\t\t\t\ttoolGuidance = guidanceRaw.replace(/^[\"']|[\"']$/g, \"\");\n\t\t\t\t\t\tnotify(ctx, `run-prompt tool enabled with guidance: \"${toolGuidance}\"`, \"info\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnotify(ctx, \"run-prompt tool enabled.\", \"info\");\n\t\t\t\t\t}\n\t\t\t\t\tsaveToolConfig();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (trimmed === \"off\") {\n\t\t\t\t\ttoolEnabled = false;\n\t\t\t\t\tsaveToolConfig();\n\t\t\t\t\tnotify(ctx, \"run-prompt tool disabled.\", \"info\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (trimmed === \"guidance\" || trimmed.startsWith(\"guidance \")) {\n\t\t\t\t\tif (trimmed === \"guidance\" || trimmed === \"guidance show\") {\n\t\t\t\t\t\tif (toolGuidance) {\n\t\t\t\t\t\t\tnotify(ctx, `Current guidance: \"${toolGuidance}\"`, \"info\");\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnotify(ctx, \"No guidance set. Use `/prompt-tool guidance <text>` to set.\", \"info\");\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (trimmed === \"guidance clear\") {\n\t\t\t\t\t\ttoolGuidance = null;\n\t\t\t\t\t\tsaveToolConfig();\n\t\t\t\t\t\tnotify(ctx, \"Guidance cleared.\", \"info\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst guidanceRaw = trimmed.slice(\"guidance\".length).trim();\n\t\t\t\t\t\ttoolGuidance = guidanceRaw.replace(/^[\"']|[\"']$/g, \"\");\n\t\t\t\t\t\tsaveToolConfig();\n\t\t\t\t\t\tnotify(ctx, `Guidance set: \"${toolGuidance}\"`, \"info\");\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!trimmed) {\n\t\t\t\t\tif (toolEnabled) {\n\t\t\t\t\t\tconst guidanceInfo = toolGuidance ? ` | Guidance: \"${toolGuidance}\"` : \"\";\n\t\t\t\t\t\tnotify(ctx, `run-prompt tool is enabled${guidanceInfo}`, \"info\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnotify(ctx, \"run-prompt tool is disabled\", \"info\");\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tnotify(ctx, \"Usage: /prompt-tool [on [guidance] | off | guidance [text|clear]]\", \"error\");\n\t\t\t},\n\t\t});\n\t}\n\n\tasync function processQueue(ctx: ExtensionContext, restoreFn: () => Promise<void>) {\n\t\tif (!toolQueuedCommand) return false;\n\t\tconst storedCtx = deps.getStoredCtx();\n\t\tif (!storedCtx) {\n\t\t\ttoolQueuedCommand = null;\n\t\t\treturn false;\n\t\t}\n\n\t\tconst command = toolQueuedCommand;\n\t\ttoolQueuedCommand = null;\n\t\tawait restoreFn();\n\t\ttry {\n\t\t\tawait deps.executeCommand(command, storedCtx);\n\t\t} catch (error) {\n\t\t\tnotify(\n\t\t\t\tctx,\n\t\t\t\t`Failed to execute queued prompt command \"${command}\": ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t\"error\",\n\t\t\t);\n\t\t}\n\t\treturn true;\n\t}\n\n\treturn {\n\t\tisEnabled() {\n\t\t\treturn toolEnabled;\n\t\t},\n\t\tgetGuidance() {\n\t\t\treturn toolGuidance;\n\t\t},\n\t\thasQueuedCommand() {\n\t\t\treturn toolQueuedCommand !== null;\n\t\t},\n\t\tclearQueue() {\n\t\t\ttoolQueuedCommand = null;\n\t\t},\n\t\tensureRegistered,\n\t\tregisterCommand,\n\t\tprocessQueue,\n\t};\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AgentToolResult } from "@
|
|
2
|
-
import type { ExtensionContext } from "@
|
|
1
|
+
import type { AgentToolResult } from "@ashx-j/lunr-agent";
|
|
2
|
+
import type { ExtensionContext } from "@ashx-j/lunr";
|
|
3
3
|
import type { Details, ExtensionConfig } from "../shared/types.ts";
|
|
4
4
|
type ManagementContext = Pick<ExtensionContext, "cwd" | "modelRegistry"> & {
|
|
5
5
|
model?: ExtensionContext["model"];
|