@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":"index.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/extension/index.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\n/**\n * Subagent Tool\n *\n * Full-featured subagent with sync and async modes.\n * - Sync (default): Streams output, renders markdown, tracks usage\n * - Async: Background execution, emits events when done\n *\n * Modes: single (agent + task), parallel (tasks[]), chain (chain[] with {previous})\n * Toggle: async parameter (default: false, configurable via config.json)\n *\n * Config file: ~/.pi/agent/extensions/subagent/config.json\n * { \"asyncByDefault\": true, \"forceTopLevelAsync\": true, \"maxSubagentDepth\": 1, \"intercomBridge\": { \"mode\": \"always\", \"instructionFile\": \"./intercom-bridge.md\" }, \"worktreeSetupHook\": \"./scripts/setup-worktree.mjs\" }\n */\n\nimport { randomUUID } from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport type { AgentToolResult } from \"@earendil-works/pi-agent-core\";\nimport { keyText, type ExtensionAPI, type ExtensionContext, type ToolDefinition } from \"@earendil-works/pi-coding-agent\";\nimport { Box, Container, Spacer, Text, truncateToWidth, visibleWidth, wrapTextWithAnsi, type Component } from \"@earendil-works/pi-tui\";\nimport { discoverAgents } from \"../agents/agents.ts\";\nimport { cleanupAllArtifactDirs, cleanupOldArtifacts, getArtifactsDir } from \"../shared/artifacts.ts\";\nimport { resolveCurrentSessionId } from \"../shared/session-identity.ts\";\nimport { cleanupOldChainDirs } from \"../shared/settings.ts\";\nimport { clearLegacyResultAnimationTimer, renderSubagentResult, subagentAnimSink } from \"../tui/render.ts\";\nimport { SubagentParams } from \"./schemas.ts\";\nimport { validateChainInput } from \"./chain-validation.ts\";\nimport { createSubagentExecutor, type SubagentParamsLike } from \"../runs/foreground/subagent-executor.ts\";\nimport { createAsyncJobTracker } from \"../runs/background/async-job-tracker.ts\";\nimport { createResultWatcher } from \"../runs/background/result-watcher.ts\";\nimport { createScheduledRunManager } from \"../runs/background/scheduled-runs.ts\";\nimport { registerSlashCommands } from \"../slash/slash-commands.ts\";\nimport { registerPromptTemplateDelegationBridge } from \"../slash/prompt-template-bridge.ts\";\nimport { registerMainWatchdog } from \"../watchdog/register-main.ts\";\nimport { registerSlashSubagentBridge } from \"../slash/slash-bridge.ts\";\nimport { createNativeSupervisorChannel } from \"../intercom/native-supervisor-channel.ts\";\nimport { registerSubagentRpcBridge } from \"./rpc.ts\";\nimport { clearSlashSnapshots, getSlashRenderableSnapshot, resolveSlashMessageDetails, restoreSlashFinalSnapshots, type SlashMessageDetails } from \"../slash/slash-live-state.ts\";\nimport { inspectSubagentStatus } from \"../runs/background/run-status.ts\";\nimport { resolveWaitToolConfig } from \"../runs/background/subagent-wait.ts\";\nimport { registerWaitTool } from \"../runs/background/wait-tool.ts\";\nimport { drainOutstandingWork } from \"../runs/background/auto-drain.ts\";\nimport registerSubagentNotify, { parseSubagentNotifyContent, type SubagentNotifyDetails } from \"../runs/background/notify.ts\";\nimport { formatSteeringNotice, handleSubagentSteeringNotice, SUBAGENT_STEERING_MESSAGE_TYPE, type SubagentSteeringMessageDetails } from \"./steering-notices.ts\";\nimport { SUBAGENT_CHILD_ENV, SUBAGENT_PARENT_SESSION_ENV } from \"../runs/shared/pi-args.ts\";\nimport { formatDuration, shortenPath } from \"../shared/formatters.ts\";\nimport { loadConfig } from \"./config.ts\";\nimport { buildSubagentToolDescription } from \"./tool-description.ts\";\nimport {\n\ttype Details,\n\ttype SubagentState,\n\tASYNC_DIR,\n\tDEFAULT_ARTIFACT_CONFIG,\n\tRESULTS_DIR,\n\tSLASH_RESULT_TYPE,\n\tSLASH_TEXT_RESULT_TYPE,\n\tSUBAGENT_ASYNC_COMPLETE_EVENT,\n\tSUBAGENT_ASYNC_STARTED_EVENT,\n\tSUBAGENT_CONTROL_EVENT,\n\tSUBAGENT_STEERING_NOTICE_EVENT,\n\tWIDGET_KEY,\n} from \"../shared/types.ts\";\nimport {\n\tclearPendingForegroundControlNotices,\n\tformatSubagentControlNotice,\n\thandleSubagentControlNotice,\n\tSUBAGENT_CONTROL_MESSAGE_TYPE,\n\ttype SubagentControlMessageDetails,\n} from \"./control-notices.ts\";\n\nexport { loadConfig } from \"./config.ts\";\n\n/**\n * Derive subagent session base directory from parent session file.\n * If parent session is ~/.pi/agent/sessions/abc123.jsonl,\n * returns ~/.pi/agent/sessions/abc123/ as the base.\n * Callers add runId to create the actual session root: abc123/{runId}/\n * Falls back to a unique temp directory if no parent session.\n */\nfunction getSubagentSessionRoot(parentSessionFile: string | null): string {\n\tif (parentSessionFile) {\n\t\tconst baseName = path.basename(parentSessionFile, \".jsonl\");\n\t\tconst sessionsDir = path.dirname(parentSessionFile);\n\t\treturn path.join(sessionsDir, baseName);\n\t}\n\treturn fs.mkdtempSync(path.join(os.tmpdir(), \"pi-subagent-session-\"));\n}\n\nfunction expandTilde(p: string): string {\n\treturn p.startsWith(\"~/\") ? path.join(os.homedir(), p.slice(2)) : p;\n}\n\n/**\n * Create a directory and verify it is actually accessible.\n * On Windows with Azure AD/Entra ID, directories created shortly after\n * wake-from-sleep can end up with broken NTFS ACLs (null DACL) when the\n * cloud SID cannot be resolved without network connectivity. This leaves\n * the directory completely inaccessible to the creating user.\n */\nfunction ensureAccessibleDir(dirPath: string): void {\n\tfs.mkdirSync(dirPath, { recursive: true });\n\ttry {\n\t\tfs.accessSync(dirPath, fs.constants.R_OK | fs.constants.W_OK);\n\t} catch {\n\t\ttry {\n\t\t\tfs.rmSync(dirPath, { recursive: true, force: true });\n\t\t} catch {\n\t\t\t// Best effort: retry mkdir/access even if cleanup fails.\n\t\t}\n\t\tfs.mkdirSync(dirPath, { recursive: true });\n\t\tfs.accessSync(dirPath, fs.constants.R_OK | fs.constants.W_OK);\n\t}\n}\n\nfunction isSlashResultRunning(result: { details?: Details }): boolean {\n\treturn result.details?.progress?.some((entry) => entry.status === \"running\")\n\t\t|| result.details?.results.some((entry) => entry.progress?.status === \"running\")\n\t\t|| false;\n}\n\n// Drives the inline running-indicator braille animation for foreground subagent\n// results. Foreground runs receive progress only on child events, so the glyph\n// (derived from progress fields) would freeze between events. While a result is\n// running we tick a frame counter every 80ms; renderResult registers the\n// running-glyph lines in state.animEntries (via subagentAnimSink) and the timer\n// rewrites just those Text nodes + requests a repaint, instead of invalidate()-ing\n// the whole tool component (a full renderSubagentResult rebuild 12.5x/s made the\n// spinner laggy).\nfunction subagentResultIsRunning(result: { details?: Details }): boolean {\n\treturn result.details?.progress?.some((entry) => entry.status === \"running\")\n\t\t|| result.details?.results.some((entry) => entry.progress?.status === \"running\")\n\t\t|| false;\n}\n\nfunction ensureSubagentResultAnimation(context: { state: Record<string, unknown>; invalidate?: () => void; requestRender?: () => void }): void {\n\tconst state = context.state as {\n\t\tsubagentResultAnimationTimer?: ReturnType<typeof setInterval>;\n\t\tframe?: number;\n\t\tanimEntries?: Array<{ text: Text; line: (frame: number) => string }>;\n\t};\n\tif (state.subagentResultAnimationTimer) return;\n\tif (typeof context.invalidate !== \"function\") return;\n\tif (state.frame === undefined) state.frame = 0;\n\tstate.subagentResultAnimationTimer = setInterval(() => {\n\t\tstate.frame = ((state.frame ?? 0) + 1) % 10;\n\t\ttry {\n\t\t\tconst entries = state.animEntries;\n\t\t\tif (entries?.length && typeof context.requestRender === \"function\") {\n\t\t\t\tfor (const entry of entries) entry.text.setText(entry.line(state.frame ?? 0));\n\t\t\t\tcontext.requestRender();\n\t\t\t} else {\n\t\t\t\tcontext.invalidate();\n\t\t\t}\n\t\t} catch {}\n\t}, 80);\n}\n\nfunction isSlashResultError(result: { details?: Details }): boolean {\n\treturn result.details?.results.some((entry) => entry.exitCode !== 0 && entry.progress?.status !== \"running\") || false;\n}\n\nfunction isStaleExtensionContextError(error: unknown): boolean {\n\treturn error instanceof Error && error.message.includes(\"Extension context no longer active\");\n}\n\nfunction rebuildSlashResultContainer(\n\tcontainer: Container,\n\tresult: AgentToolResult<Details>,\n\toptions: { expanded: boolean },\n\ttheme: ExtensionContext[\"ui\"][\"theme\"],\n): void {\n\tcontainer.clear();\n\tcontainer.addChild(new Spacer(1));\n\tconst boxTheme = isSlashResultRunning(result) ? \"toolPendingBg\" : isSlashResultError(result) ? \"toolErrorBg\" : \"toolSuccessBg\";\n\tconst box = new Box(1, 1, (text: string) => theme.bg(boxTheme, text));\n\tbox.addChild(renderSubagentResult(result, options, theme));\n\tcontainer.addChild(box);\n}\n\nfunction createSlashResultComponent(\n\tdetails: SlashMessageDetails,\n\toptions: { expanded: boolean },\n\ttheme: ExtensionContext[\"ui\"][\"theme\"],\n): Container {\n\tconst container = new Container();\n\tlet lastVersion = -1;\n\tcontainer.render = (width: number): string[] => {\n\t\tconst snapshot = getSlashRenderableSnapshot(details);\n\t\tif (snapshot.version !== lastVersion || isSlashResultRunning(snapshot.result)) {\n\t\t\tlastVersion = snapshot.version;\n\t\t\trebuildSlashResultContainer(container, snapshot.result, options, theme);\n\t\t}\n\t\treturn Container.prototype.render.call(container, width);\n\t};\n\treturn container;\n}\n\nclass SubagentControlNoticeComponent implements Component {\n\tconstructor(\n\t\tprivate readonly details: SubagentControlMessageDetails,\n\t\tprivate readonly theme: ExtensionContext[\"ui\"][\"theme\"],\n\t) {}\n\n\tinvalidate(): void {}\n\n\trender(width: number): string[] {\n\t\tconst eventLabel = this.details.event.type.replaceAll(\"_\", \" \");\n\t\tif (width < 3) return [truncateToWidth(`Subagent ${eventLabel}`, width)];\n\t\tconst bodyWidth = Math.max(1, width - 2);\n\t\tconst borderChar = \"─\";\n\t\tconst header = ` ⚠ Subagent ${eventLabel}: ${this.details.event.agent} `;\n\t\tconst headerText = truncateToWidth(header, bodyWidth, \"\");\n\t\tconst headerPadding = Math.max(0, bodyWidth - visibleWidth(headerText));\n\t\tconst lines = [this.theme.fg(\"accent\", `╭${headerText}${borderChar.repeat(headerPadding)}╮`)];\n\n\t\tfor (const line of wrapTextWithAnsi(formatSubagentControlNotice(this.details), bodyWidth)) {\n\t\t\tconst text = truncateToWidth(line, bodyWidth, \"\");\n\t\t\tconst padding = Math.max(0, bodyWidth - visibleWidth(text));\n\t\t\tlines.push(this.theme.fg(\"accent\", `│${text}${\" \".repeat(padding)}│`));\n\t\t}\n\t\tlines.push(this.theme.fg(\"accent\", `╰${borderChar.repeat(bodyWidth)}╯`));\n\t\treturn lines;\n\t}\n}\n\nexport default function registerSubagentExtension(pi: ExtensionAPI): void {\n\tif (process.env[SUBAGENT_CHILD_ENV] === \"1\") {\n\t\treturn;\n\t}\n\tconst globalStore = globalThis as Record<string, unknown>;\n\tconst runtimeCleanupStoreKey = \"__piSubagentRuntimeCleanup\";\n\tconst previousRuntimeCleanup = globalStore[runtimeCleanupStoreKey];\n\tif (typeof previousRuntimeCleanup === \"function\") {\n\t\ttry {\n\t\t\tpreviousRuntimeCleanup();\n\t\t} catch {\n\t\t\t// Best effort cleanup for stale timers from an older reload.\n\t\t}\n\t}\n\n\tensureAccessibleDir(RESULTS_DIR);\n\tensureAccessibleDir(ASYNC_DIR);\n\tcleanupOldChainDirs();\n\n\tconst config = loadConfig();\n\tconst waitToolConfig = resolveWaitToolConfig(config.waitTool);\n\tconst asyncByDefault = config.asyncByDefault === true;\n\tconst tempArtifactsDir = getArtifactsDir(null);\n\tcleanupAllArtifactDirs(DEFAULT_ARTIFACT_CONFIG.cleanupDays);\n\n\tconst state: SubagentState = {\n\t\tbaseCwd: \"\",\n\t\tcurrentSessionId: null,\n\t\tsubagentInProgress: false,\n\t\tsubagentSpawns: { sessionId: null, count: 0 },\n\t\tasyncJobs: new Map(),\n\t\tfleetJobs: new Map(),\n\t\tforegroundRuns: new Map(),\n\t\tforegroundControls: new Map(),\n\t\tlastForegroundControlId: null,\n\t\tpendingForegroundControlNotices: new Map(),\n\t\tcleanupTimers: new Map(),\n\t\tlastUiContext: null,\n\t\tpoller: null,\n\t\tcompletionSeen: new Map(),\n\t\twatcher: null,\n\t\twatcherRestartTimer: null,\n\t\tresultFileCoalescer: {\n\t\t\tschedule: () => false,\n\t\t\tclear: () => {},\n\t\t},\n\t};\n\n\tconst supervisorChannel = createNativeSupervisorChannel(pi, state);\n\tconst mainWatchdog = registerMainWatchdog(pi);\n\tconst { startResultWatcher, primeExistingResults, stopResultWatcher } = createResultWatcher(\n\t\tpi,\n\t\tstate,\n\t\tRESULTS_DIR,\n\t\t10 * 60 * 1000,\n\t);\n\tstartResultWatcher();\n\tprimeExistingResults();\n\n\tconst runtimeCleanup = () => {\n\t\tmainWatchdog.dispose();\n\t\tstopResultWatcher();\n\t\tscheduledRunManager.stop();\n\t\tsupervisorChannel.dispose();\n\t\tclearPendingForegroundControlNotices(state);\n\t\tif (state.poller) {\n\t\t\tclearInterval(state.poller);\n\t\t\tstate.poller = null;\n\t\t}\n\t};\n\tglobalStore[runtimeCleanupStoreKey] = runtimeCleanup;\n\n\tconst { ensurePoller, refreshWidget, handleStarted, handleComplete, resetJobs, restoreActiveJobs } = createAsyncJobTracker(pi, state, ASYNC_DIR, {\n\t\twidgetEnabled: config.asyncWidget !== false,\n\t});\n\tlet executorExecute: ((id: string, params: SubagentParamsLike, signal: AbortSignal, onUpdate: ((r: AgentToolResult<Details>) => void) | undefined, ctx: ExtensionContext) => Promise<AgentToolResult<Details>>) | undefined;\n\tconst scheduledRunManager = createScheduledRunManager({\n\t\tconfig,\n\t\tlaunch: (params, ctx, signal) => {\n\t\t\tif (!executorExecute) {\n\t\t\t\treturn Promise.resolve({\n\t\t\t\t\tcontent: [{ type: \"text\", text: \"Scheduled subagent launch is unavailable (executor not ready).\" }],\n\t\t\t\t\tisError: true,\n\t\t\t\t\tdetails: { mode: \"management\" as const, results: [] },\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn executorExecute(randomUUID(), params, signal, undefined, ctx);\n\t\t},\n\t});\n\tconst executor = createSubagentExecutor({\n\t\tpi,\n\t\tstate,\n\t\tconfig,\n\t\tasyncByDefault,\n\t\twaitToolEnabled: waitToolConfig.enabled,\n\t\thandleScheduledRunAction: (params, ctx) => scheduledRunManager.handleToolCall(params, ctx),\n\t\twatchdog: mainWatchdog,\n\t\ttempArtifactsDir,\n\t\tgetSubagentSessionRoot,\n\t\texpandTilde,\n\t\tdiscoverAgents,\n\t});\n\texecutorExecute = executor.execute;\n\n\tpi.registerMessageRenderer<SlashMessageDetails>(SLASH_RESULT_TYPE, (message, options, theme) => {\n\t\tconst details = resolveSlashMessageDetails(message.details);\n\t\tif (!details) return undefined;\n\t\treturn createSlashResultComponent(details, options, theme);\n\t});\n\n\tpi.registerMessageRenderer<undefined>(SLASH_TEXT_RESULT_TYPE, (message, _options, _theme) => {\n\t\tconst content = typeof message.content === \"string\"\n\t\t\t? message.content\n\t\t\t: message.content\n\t\t\t\t.filter((entry) => entry.type === \"text\")\n\t\t\t\t.map((entry) => entry.text)\n\t\t\t\t.join(\"\\n\");\n\t\treturn new Text(content, 0, 0);\n\t});\n\n\tpi.registerMessageRenderer<SubagentNotifyDetails>(\"subagent-notify\", (message, options, theme) => {\n\t\tconst content = typeof message.content === \"string\" ? message.content : \"\";\n\t\tconst details = (message.details as SubagentNotifyDetails | undefined) ?? parseSubagentNotifyContent(content);\n\t\tif (!details) return new Text(content, 0, 0);\n\t\tconst icon = details.status === \"completed\"\n\t\t\t? theme.fg(\"success\", \"✓\")\n\t\t\t: details.status === \"paused\"\n\t\t\t\t? theme.fg(\"warning\", \"■\")\n\t\t\t\t: theme.fg(\"error\", \"✗\");\n\t\tconst parts: string[] = [];\n\t\tif (details.taskInfo) parts.push(details.taskInfo);\n\t\tif (details.durationMs !== undefined) parts.push(formatDuration(details.durationMs));\n\t\tlet text = `${icon} ${theme.bold(details.agent)} ${theme.fg(\"dim\", details.status)}`;\n\t\tif (parts.length > 0) text += ` ${theme.fg(\"dim\", \"·\")} ${parts.map((part) => theme.fg(\"dim\", part)).join(` ${theme.fg(\"dim\", \"·\")} `)}`;\n\t\tconst trimmedPreview = details.resultPreview.trim();\n\t\tconst previewLines = options.expanded\n\t\t\t? trimmedPreview.split(\"\\n\").filter((line) => line.trim())\n\t\t\t: [trimmedPreview.split(\"\\n\", 1)[0] ?? \"\"].filter((line) => line.trim());\n\t\tfor (const line of previewLines.length > 0 ? previewLines : [\"(no output)\"]) {\n\t\t\ttext += `\\n ${theme.fg(\"dim\", `⎿ ${line}`)}`;\n\t\t}\n\t\tif (!options.expanded && trimmedPreview.includes(\"\\n\")) {\n\t\t\tconst expandKey = keyText(\"app.tools.expand\");\n\t\t\ttext += `\\n ${theme.fg(\"dim\", `${expandKey} full notification`)}`;\n\t\t}\n\t\tif (details.sessionLabel && details.sessionValue) {\n\t\t\ttext += `\\n ${theme.fg(\"muted\", `${details.sessionLabel}: ${shortenPath(details.sessionValue)}`)}`;\n\t\t}\n\t\treturn new Text(text, 0, 0);\n\t});\n\n\tpi.registerMessageRenderer<SubagentSteeringMessageDetails>(SUBAGENT_STEERING_MESSAGE_TYPE, (message, _options, theme) => {\n\t\tconst details = message.details as SubagentSteeringMessageDetails | undefined;\n\t\tif (!details) return undefined;\n\t\treturn new Text(theme.fg(details.state === \"recovered\" ? \"warning\" : \"error\", formatSteeringNotice(details)), 0, 0);\n\t});\n\n\tpi.registerMessageRenderer<SubagentControlMessageDetails>(SUBAGENT_CONTROL_MESSAGE_TYPE, (message, _options, theme) => {\n\t\tconst details = message.details as SubagentControlMessageDetails | undefined;\n\t\tif (!details?.event) return undefined;\n\t\tconst content = typeof message.content === \"string\" ? message.content : undefined;\n\t\treturn new SubagentControlNoticeComponent({ ...details, noticeText: formatSubagentControlNotice(details, content) }, theme);\n\t});\n\n\tconst executeSubagentCollapsed = (id: string, params: SubagentParamsLike, signal: AbortSignal, onUpdate: ((result: AgentToolResult<Details>) => void) | undefined, ctx: ExtensionContext) => {\n\t\tif (ctx.hasUI) ctx.ui.setToolsExpanded(false);\n\t\treturn executor.execute(id, params, signal, onUpdate, ctx);\n\t};\n\n\tconst slashBridge = registerSlashSubagentBridge({\n\t\tevents: pi.events,\n\t\tgetContext: () => state.lastUiContext,\n\t\texecute: (id, params, signal, onUpdate, ctx) =>\n\t\t\texecuteSubagentCollapsed(id, params, signal, onUpdate, ctx),\n\t});\n\n\tconst promptTemplateBridge = registerPromptTemplateDelegationBridge({\n\t\tevents: pi.events,\n\t\tgetContext: () => state.lastUiContext,\n\t\texecute: (requestId, params, signal, ctx, onUpdate) =>\n\t\t\texecuteSubagentCollapsed(requestId, params, signal, onUpdate, ctx),\n\t});\n\n\tconst rpcBridge = registerSubagentRpcBridge({\n\t\tevents: pi.events,\n\t\tgetContext: () => state.lastUiContext,\n\t\texecute: (id, params, signal, onUpdate, ctx) => executor.execute(id, params, signal, onUpdate, ctx),\n\t});\n\n\tfunction effectiveParallelTaskCount(tasks: Array<{ count?: unknown }> | undefined): number {\n\t\tif (!tasks || tasks.length === 0) return 0;\n\t\treturn tasks.reduce((total, task) => {\n\t\t\tconst count = typeof task.count === \"number\" && Number.isInteger(task.count) && task.count >= 1 ? task.count : 1;\n\t\t\treturn total + count;\n\t\t}, 0);\n\t}\n\n\tconst tool: ToolDefinition<typeof SubagentParams, Details> = {\n\t\tname: \"subagent\",\n\t\tlabel: \"Subagent\",\n\t\tdescription: buildSubagentToolDescription(config),\n\t\tparameters: SubagentParams,\n\t\t// lunr: sequential so multiple subagent calls in one turn run one-at-a-time\n\t\t// instead of tripping the subagentInProgress guard (parallel mode uses the tasks array).\n\t\texecutionMode: \"sequential\",\n\n\t\tprepareArguments(args) {\n\t\t\t// Run friendly chain validation before pi-ai's raw TypeBox schema check\n\t\t\t// so the model sees which property is disallowed, what is allowed, and a\n\t\t\t// valid example instead of `chain.N: must not have additional properties`.\n\t\t\tvalidateChainInput(args);\n\t\t\treturn args as never;\n\t\t},\n\n\t\texecute(id, params, signal, onUpdate, ctx) {\n\t\t\treturn executeSubagentCollapsed(id, params, signal, onUpdate, ctx);\n\t\t},\n\n\t\trenderCall(args, theme) {\n\t\t\tif (args.action) {\n\t\t\t\tconst target = args.agent || args.chainName || \"\";\n\t\t\t\treturn new Text(\n\t\t\t\t\t`${theme.fg(\"toolTitle\", theme.bold(\"subagent \"))}${args.action}${target ? ` ${theme.fg(\"accent\", target)}` : \"\"}`,\n\t\t\t\t\t0, 0,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst isParallel = (args.tasks?.length ?? 0) > 0;\n\t\t\tconst parallelCount = effectiveParallelTaskCount(args.tasks as Array<{ count?: unknown }> | undefined);\n\t\t\tconst asyncLabel = args.async === true && args.clarify !== true ? theme.fg(\"warning\", \" [async]\") : \"\";\n\t\t\tif (args.chain?.length)\n\t\t\t\treturn new Text(\n\t\t\t\t\t`${theme.fg(\"toolTitle\", theme.bold(\"subagent \"))}chain (${args.chain.length})${asyncLabel}`,\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t);\n\t\t\tif (isParallel)\n\t\t\t\treturn new Text(\n\t\t\t\t\t`${theme.fg(\"toolTitle\", theme.bold(\"subagent \"))}parallel (${parallelCount})${asyncLabel}`,\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t);\n\t\t\treturn new Text(\n\t\t\t\t`${theme.fg(\"toolTitle\", theme.bold(\"subagent \"))}${theme.fg(\"accent\", args.agent || \"?\")}${asyncLabel}`,\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t);\n\t\t},\n\n\t\trenderResult(result, options, theme, context) {\n\t\t\t// lunr: hide the `subagent list` result body — the call row already shows\n\t\t\t// the action; the roster stays in the transcript for the model.\n\t\t\tif ((context.args as { action?: string } | undefined)?.action === \"list\") {\n\t\t\t\treturn { render: () => [], invalidate() {} };\n\t\t\t}\n\t\t\tif (subagentResultIsRunning(result)) {\n\t\t\t\tensureSubagentResultAnimation(context);\n\t\t\t} else {\n\t\t\t\tclearLegacyResultAnimationTimer(context);\n\t\t\t}\n\t\t\tconst state = context.state as { frame?: number; animEntries?: Array<{ text: Text; line: (frame: number) => string }> };\n\t\t\t// lunr: collect running-glyph line templates while rendering so the\n\t\t\t// animation timer can rewrite them in place (see ensureSubagentResultAnimation).\n\t\t\tconst entries: Array<{ text: Text; line: (frame: number) => string }> = [];\n\t\t\tstate.animEntries = entries;\n\t\t\tsubagentAnimSink.current = entries;\n\t\t\ttry {\n\t\t\t\treturn renderSubagentResult(result, options, theme, state.frame ?? 0);\n\t\t\t} finally {\n\t\t\t\tsubagentAnimSink.current = null;\n\t\t\t}\n\t\t},\n\n\t};\n\n\tpi.registerTool(tool);\n\n\t// lunr: register a callback so toggling model tiers mid-session rebuilds the subagent\n\t// tool description (adds/removes MODEL TIERS guidance) and refreshes the tool registry.\n\tconst modelTierBridge = (globalThis as Record<symbol, unknown>)[Symbol.for(\"@lunr/model-tiers\")] as\n\t\t| { registerToolDescriptionRefresher?: (refresher: () => void) => void }\n\t\t| undefined;\n\tmodelTierBridge?.registerToolDescriptionRefresher?.(() => {\n\t\ttool.description = buildSubagentToolDescription(config);\n\t\tpi.runtime.refreshTools();\n\t});\n\n\tregisterWaitTool(pi, state, waitToolConfig.enabled);\n\n\tpi.on(\"agent_end\", async (_event, ctx) => {\n\t\tif (ctx.hasUI) return;\n\t\tawait drainOutstandingWork({ state, events: pi.events });\n\t});\n\n\tregisterSlashCommands(pi, state);\n\n\tconst eventUnsubscribeStoreKey = \"__piSubagentEventUnsubscribes\";\n\tconst controlNoticeSeenStoreKey = \"__piSubagentVisibleControlNotices\";\n\tconst previousEventUnsubscribes = globalStore[eventUnsubscribeStoreKey];\n\tif (Array.isArray(previousEventUnsubscribes)) {\n\t\tfor (const unsubscribe of previousEventUnsubscribes) {\n\t\t\tif (typeof unsubscribe !== \"function\") continue;\n\t\t\ttry {\n\t\t\t\tunsubscribe();\n\t\t\t} catch {\n\t\t\t\t// Best effort cleanup for stale handlers from an older reload.\n\t\t\t}\n\t\t}\n\t}\n\tregisterSubagentNotify(pi, state, { batchConfig: config.completionBatch });\n\n\tconst existingVisibleControlNotices = globalStore[controlNoticeSeenStoreKey];\n\tconst visibleControlNotices = existingVisibleControlNotices instanceof Set ? existingVisibleControlNotices as Set<string> : new Set<string>();\n\tglobalStore[controlNoticeSeenStoreKey] = visibleControlNotices;\n\tconst controlEventHandler = (payload: unknown) => {\n\t\thandleSubagentControlNotice({\n\t\t\tpi,\n\t\t\tstate,\n\t\t\tvisibleControlNotices,\n\t\t\tdetails: payload as SubagentControlMessageDetails,\n\t\t});\n\t};\n\tconst steeringNoticeHandler = (payload: unknown) => {\n\t\thandleSubagentSteeringNotice({ pi, state, details: payload as SubagentSteeringMessageDetails });\n\t};\n\tconst eventUnsubscribes = [\n\t\tpi.events.on(SUBAGENT_ASYNC_STARTED_EVENT, handleStarted),\n\t\tpi.events.on(SUBAGENT_ASYNC_COMPLETE_EVENT, handleComplete),\n\t\tpi.events.on(SUBAGENT_CONTROL_EVENT, controlEventHandler),\n\t\tpi.events.on(SUBAGENT_STEERING_NOTICE_EVENT, steeringNoticeHandler),\n\t\trpcBridge.dispose,\n\t];\n\tglobalStore[eventUnsubscribeStoreKey] = eventUnsubscribes;\n\n\tpi.on(\"tool_result\", (event, ctx) => {\n\t\tif (event.toolName !== \"subagent\") return;\n\t\tif (!ctx.hasUI) return;\n\t\tstate.lastUiContext = ctx;\n\t\tif (state.asyncJobs.size > 0) {\n\t\t\trefreshWidget(ctx);\n\t\t\tensurePoller();\n\t\t}\n\t});\n\n\tconst cleanupSessionArtifacts = (ctx: ExtensionContext) => {\n\t\ttry {\n\t\t\tconst sessionFile = ctx.sessionManager.getSessionFile();\n\t\t\tif (sessionFile) {\n\t\t\t\tcleanupOldArtifacts(getArtifactsDir(sessionFile), DEFAULT_ARTIFACT_CONFIG.cleanupDays);\n\t\t\t}\n\t\t} catch {\n\t\t\t// Cleanup failures should not block session lifecycle events.\n\t\t}\n\t};\n\n\tconst resetSessionState = (ctx: ExtensionContext) => {\n\t\tstate.baseCwd = ctx.cwd;\n\t\tstate.currentSessionId = resolveCurrentSessionId(ctx.sessionManager);\n\t\tstate.subagentSpawns = { sessionId: state.currentSessionId, count: 0 };\n\t\t// Set PI_SUBAGENT_PARENT_SESSION for permission-system forwarding.\n\t\t// Only set in the root session (the interactive UI session), not in\n\t\t// child subagent processes — children inherit the parent's value\n\t\t// through the process environment at spawn time and must not overwrite\n\t\t// it with their own session identity.\n\t\tif (!process.env[SUBAGENT_CHILD_ENV]) {\n\t\t\tconst sessionId = ctx.sessionManager.getSessionId();\n\t\t\tif (sessionId) {\n\t\t\t\tprocess.env[SUBAGENT_PARENT_SESSION_ENV] = sessionId;\n\t\t\t}\n\t\t}\n\t\tstate.lastUiContext = ctx;\n\t\tcleanupSessionArtifacts(ctx);\n\t\tclearPendingForegroundControlNotices(state);\n\t\tresetJobs(ctx);\n\t\trestoreActiveJobs(ctx);\n\t\tscheduledRunManager.bindSession(ctx);\n\t\trestoreSlashFinalSnapshots(ctx.sessionManager.getEntries());\n\t\tprimeExistingResults();\n\t};\n\n\tpi.on(\"session_start\", (_event, ctx) => {\n\t\tresetSessionState(ctx);\n\t\trpcBridge.emitReady(ctx);\n\t\tsupervisorChannel.start();\n\t});\n\n\tpi.on(\"session_shutdown\", () => {\n\t\tdelete process.env[SUBAGENT_PARENT_SESSION_ENV];\n\t\tfor (const unsubscribe of eventUnsubscribes) {\n\t\t\ttry {\n\t\t\t\tunsubscribe();\n\t\t\t} catch {\n\t\t\t\t// Best effort cleanup during shutdown.\n\t\t\t}\n\t\t}\n\t\tif (globalStore[eventUnsubscribeStoreKey] === eventUnsubscribes) {\n\t\t\tdelete globalStore[eventUnsubscribeStoreKey];\n\t\t}\n\t\tstopResultWatcher();\n\t\tscheduledRunManager.stop();\n\t\tif (state.poller) clearInterval(state.poller);\n\t\tstate.poller = null;\n\t\tclearPendingForegroundControlNotices(state);\n\t\tfor (const timer of state.cleanupTimers.values()) {\n\t\t\tclearTimeout(timer);\n\t\t}\n\t\tstate.cleanupTimers.clear();\n\t\tstate.asyncJobs.clear();\n\t\tclearSlashSnapshots();\n\t\tslashBridge.cancelAll();\n\t\tslashBridge.dispose();\n\t\tpromptTemplateBridge.cancelAll();\n\t\tpromptTemplateBridge.dispose();\n\t\tsupervisorChannel.dispose();\n\t\tif (globalStore[runtimeCleanupStoreKey] === runtimeCleanup) {\n\t\t\tdelete globalStore[runtimeCleanupStoreKey];\n\t\t}\n\t\ttry {\n\t\t\tif (state.lastUiContext?.hasUI) {\n\t\t\t\tstate.lastUiContext.ui.setWidget(WIDGET_KEY, undefined);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (!isStaleExtensionContextError(error)) throw error;\n\t\t}\n\t});\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/extension/index.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\n/**\n * Subagent Tool\n *\n * Full-featured subagent with sync and async modes.\n * - Sync (default): Streams output, renders markdown, tracks usage\n * - Async: Background execution, emits events when done\n *\n * Modes: single (agent + task), parallel (tasks[]), chain (chain[] with {previous})\n * Toggle: async parameter (default: false, configurable via config.json)\n *\n * Config file: ~/.pi/agent/extensions/subagent/config.json\n * { \"asyncByDefault\": true, \"forceTopLevelAsync\": true, \"maxSubagentDepth\": 1, \"intercomBridge\": { \"mode\": \"always\", \"instructionFile\": \"./intercom-bridge.md\" }, \"worktreeSetupHook\": \"./scripts/setup-worktree.mjs\" }\n */\n\nimport { randomUUID } from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport type { AgentToolResult } from \"@ashx-j/lunr-agent\";\nimport { keyText, type ExtensionAPI, type ExtensionContext, type ToolDefinition } from \"@ashx-j/lunr\";\nimport { Box, Container, Spacer, Text, truncateToWidth, visibleWidth, wrapTextWithAnsi, type Component } from \"@ashx-j/lunr-tui\";\nimport { discoverAgents } from \"../agents/agents.ts\";\nimport { cleanupAllArtifactDirs, cleanupOldArtifacts, getArtifactsDir } from \"../shared/artifacts.ts\";\nimport { resolveCurrentSessionId } from \"../shared/session-identity.ts\";\nimport { cleanupOldChainDirs } from \"../shared/settings.ts\";\nimport { clearLegacyResultAnimationTimer, renderSubagentResult, subagentAnimSink } from \"../tui/render.ts\";\nimport { SubagentParams } from \"./schemas.ts\";\nimport { validateChainInput } from \"./chain-validation.ts\";\nimport { createSubagentExecutor, type SubagentParamsLike } from \"../runs/foreground/subagent-executor.ts\";\nimport { createAsyncJobTracker } from \"../runs/background/async-job-tracker.ts\";\nimport { createResultWatcher } from \"../runs/background/result-watcher.ts\";\nimport { createScheduledRunManager } from \"../runs/background/scheduled-runs.ts\";\nimport { registerSlashCommands } from \"../slash/slash-commands.ts\";\nimport { registerPromptTemplateDelegationBridge } from \"../slash/prompt-template-bridge.ts\";\nimport { registerMainWatchdog } from \"../watchdog/register-main.ts\";\nimport { registerSlashSubagentBridge } from \"../slash/slash-bridge.ts\";\nimport { createNativeSupervisorChannel } from \"../intercom/native-supervisor-channel.ts\";\nimport { registerSubagentRpcBridge } from \"./rpc.ts\";\nimport { clearSlashSnapshots, getSlashRenderableSnapshot, resolveSlashMessageDetails, restoreSlashFinalSnapshots, type SlashMessageDetails } from \"../slash/slash-live-state.ts\";\nimport { inspectSubagentStatus } from \"../runs/background/run-status.ts\";\nimport { resolveWaitToolConfig } from \"../runs/background/subagent-wait.ts\";\nimport { registerWaitTool } from \"../runs/background/wait-tool.ts\";\nimport { drainOutstandingWork } from \"../runs/background/auto-drain.ts\";\nimport registerSubagentNotify, { parseSubagentNotifyContent, type SubagentNotifyDetails } from \"../runs/background/notify.ts\";\nimport { formatSteeringNotice, handleSubagentSteeringNotice, SUBAGENT_STEERING_MESSAGE_TYPE, type SubagentSteeringMessageDetails } from \"./steering-notices.ts\";\nimport { SUBAGENT_CHILD_ENV, SUBAGENT_PARENT_SESSION_ENV } from \"../runs/shared/pi-args.ts\";\nimport { formatDuration, shortenPath } from \"../shared/formatters.ts\";\nimport { loadConfig } from \"./config.ts\";\nimport { buildSubagentToolDescription } from \"./tool-description.ts\";\nimport {\n\ttype Details,\n\ttype SubagentState,\n\tASYNC_DIR,\n\tDEFAULT_ARTIFACT_CONFIG,\n\tRESULTS_DIR,\n\tSLASH_RESULT_TYPE,\n\tSLASH_TEXT_RESULT_TYPE,\n\tSUBAGENT_ASYNC_COMPLETE_EVENT,\n\tSUBAGENT_ASYNC_STARTED_EVENT,\n\tSUBAGENT_CONTROL_EVENT,\n\tSUBAGENT_STEERING_NOTICE_EVENT,\n\tWIDGET_KEY,\n} from \"../shared/types.ts\";\nimport {\n\tclearPendingForegroundControlNotices,\n\tformatSubagentControlNotice,\n\thandleSubagentControlNotice,\n\tSUBAGENT_CONTROL_MESSAGE_TYPE,\n\ttype SubagentControlMessageDetails,\n} from \"./control-notices.ts\";\n\nexport { loadConfig } from \"./config.ts\";\n\n/**\n * Derive subagent session base directory from parent session file.\n * If parent session is ~/.pi/agent/sessions/abc123.jsonl,\n * returns ~/.pi/agent/sessions/abc123/ as the base.\n * Callers add runId to create the actual session root: abc123/{runId}/\n * Falls back to a unique temp directory if no parent session.\n */\nfunction getSubagentSessionRoot(parentSessionFile: string | null): string {\n\tif (parentSessionFile) {\n\t\tconst baseName = path.basename(parentSessionFile, \".jsonl\");\n\t\tconst sessionsDir = path.dirname(parentSessionFile);\n\t\treturn path.join(sessionsDir, baseName);\n\t}\n\treturn fs.mkdtempSync(path.join(os.tmpdir(), \"pi-subagent-session-\"));\n}\n\nfunction expandTilde(p: string): string {\n\treturn p.startsWith(\"~/\") ? path.join(os.homedir(), p.slice(2)) : p;\n}\n\n/**\n * Create a directory and verify it is actually accessible.\n * On Windows with Azure AD/Entra ID, directories created shortly after\n * wake-from-sleep can end up with broken NTFS ACLs (null DACL) when the\n * cloud SID cannot be resolved without network connectivity. This leaves\n * the directory completely inaccessible to the creating user.\n */\nfunction ensureAccessibleDir(dirPath: string): void {\n\tfs.mkdirSync(dirPath, { recursive: true });\n\ttry {\n\t\tfs.accessSync(dirPath, fs.constants.R_OK | fs.constants.W_OK);\n\t} catch {\n\t\ttry {\n\t\t\tfs.rmSync(dirPath, { recursive: true, force: true });\n\t\t} catch {\n\t\t\t// Best effort: retry mkdir/access even if cleanup fails.\n\t\t}\n\t\tfs.mkdirSync(dirPath, { recursive: true });\n\t\tfs.accessSync(dirPath, fs.constants.R_OK | fs.constants.W_OK);\n\t}\n}\n\nfunction isSlashResultRunning(result: { details?: Details }): boolean {\n\treturn result.details?.progress?.some((entry) => entry.status === \"running\")\n\t\t|| result.details?.results.some((entry) => entry.progress?.status === \"running\")\n\t\t|| false;\n}\n\n// Drives the inline running-indicator braille animation for foreground subagent\n// results. Foreground runs receive progress only on child events, so the glyph\n// (derived from progress fields) would freeze between events. While a result is\n// running we tick a frame counter every 80ms; renderResult registers the\n// running-glyph lines in state.animEntries (via subagentAnimSink) and the timer\n// rewrites just those Text nodes + requests a repaint, instead of invalidate()-ing\n// the whole tool component (a full renderSubagentResult rebuild 12.5x/s made the\n// spinner laggy).\nfunction subagentResultIsRunning(result: { details?: Details }): boolean {\n\treturn result.details?.progress?.some((entry) => entry.status === \"running\")\n\t\t|| result.details?.results.some((entry) => entry.progress?.status === \"running\")\n\t\t|| false;\n}\n\nfunction ensureSubagentResultAnimation(context: { state: Record<string, unknown>; invalidate?: () => void; requestRender?: () => void }): void {\n\tconst state = context.state as {\n\t\tsubagentResultAnimationTimer?: ReturnType<typeof setInterval>;\n\t\tframe?: number;\n\t\tanimEntries?: Array<{ text: Text; line: (frame: number) => string }>;\n\t};\n\tif (state.subagentResultAnimationTimer) return;\n\tif (typeof context.invalidate !== \"function\") return;\n\tif (state.frame === undefined) state.frame = 0;\n\tstate.subagentResultAnimationTimer = setInterval(() => {\n\t\tstate.frame = ((state.frame ?? 0) + 1) % 10;\n\t\ttry {\n\t\t\tconst entries = state.animEntries;\n\t\t\tif (entries?.length && typeof context.requestRender === \"function\") {\n\t\t\t\tfor (const entry of entries) entry.text.setText(entry.line(state.frame ?? 0));\n\t\t\t\tcontext.requestRender();\n\t\t\t} else {\n\t\t\t\tcontext.invalidate();\n\t\t\t}\n\t\t} catch {}\n\t}, 80);\n}\n\nfunction isSlashResultError(result: { details?: Details }): boolean {\n\treturn result.details?.results.some((entry) => entry.exitCode !== 0 && entry.progress?.status !== \"running\") || false;\n}\n\nfunction isStaleExtensionContextError(error: unknown): boolean {\n\treturn error instanceof Error && error.message.includes(\"Extension context no longer active\");\n}\n\nfunction rebuildSlashResultContainer(\n\tcontainer: Container,\n\tresult: AgentToolResult<Details>,\n\toptions: { expanded: boolean },\n\ttheme: ExtensionContext[\"ui\"][\"theme\"],\n): void {\n\tcontainer.clear();\n\tcontainer.addChild(new Spacer(1));\n\tconst boxTheme = isSlashResultRunning(result) ? \"toolPendingBg\" : isSlashResultError(result) ? \"toolErrorBg\" : \"toolSuccessBg\";\n\tconst box = new Box(1, 1, (text: string) => theme.bg(boxTheme, text));\n\tbox.addChild(renderSubagentResult(result, options, theme));\n\tcontainer.addChild(box);\n}\n\nfunction createSlashResultComponent(\n\tdetails: SlashMessageDetails,\n\toptions: { expanded: boolean },\n\ttheme: ExtensionContext[\"ui\"][\"theme\"],\n): Container {\n\tconst container = new Container();\n\tlet lastVersion = -1;\n\tcontainer.render = (width: number): string[] => {\n\t\tconst snapshot = getSlashRenderableSnapshot(details);\n\t\tif (snapshot.version !== lastVersion || isSlashResultRunning(snapshot.result)) {\n\t\t\tlastVersion = snapshot.version;\n\t\t\trebuildSlashResultContainer(container, snapshot.result, options, theme);\n\t\t}\n\t\treturn Container.prototype.render.call(container, width);\n\t};\n\treturn container;\n}\n\nclass SubagentControlNoticeComponent implements Component {\n\tconstructor(\n\t\tprivate readonly details: SubagentControlMessageDetails,\n\t\tprivate readonly theme: ExtensionContext[\"ui\"][\"theme\"],\n\t) {}\n\n\tinvalidate(): void {}\n\n\trender(width: number): string[] {\n\t\tconst eventLabel = this.details.event.type.replaceAll(\"_\", \" \");\n\t\tif (width < 3) return [truncateToWidth(`Subagent ${eventLabel}`, width)];\n\t\tconst bodyWidth = Math.max(1, width - 2);\n\t\tconst borderChar = \"─\";\n\t\tconst header = ` ⚠ Subagent ${eventLabel}: ${this.details.event.agent} `;\n\t\tconst headerText = truncateToWidth(header, bodyWidth, \"\");\n\t\tconst headerPadding = Math.max(0, bodyWidth - visibleWidth(headerText));\n\t\tconst lines = [this.theme.fg(\"accent\", `╭${headerText}${borderChar.repeat(headerPadding)}╮`)];\n\n\t\tfor (const line of wrapTextWithAnsi(formatSubagentControlNotice(this.details), bodyWidth)) {\n\t\t\tconst text = truncateToWidth(line, bodyWidth, \"\");\n\t\t\tconst padding = Math.max(0, bodyWidth - visibleWidth(text));\n\t\t\tlines.push(this.theme.fg(\"accent\", `│${text}${\" \".repeat(padding)}│`));\n\t\t}\n\t\tlines.push(this.theme.fg(\"accent\", `╰${borderChar.repeat(bodyWidth)}╯`));\n\t\treturn lines;\n\t}\n}\n\nexport default function registerSubagentExtension(pi: ExtensionAPI): void {\n\tif (process.env[SUBAGENT_CHILD_ENV] === \"1\") {\n\t\treturn;\n\t}\n\tconst globalStore = globalThis as Record<string, unknown>;\n\tconst runtimeCleanupStoreKey = \"__piSubagentRuntimeCleanup\";\n\tconst previousRuntimeCleanup = globalStore[runtimeCleanupStoreKey];\n\tif (typeof previousRuntimeCleanup === \"function\") {\n\t\ttry {\n\t\t\tpreviousRuntimeCleanup();\n\t\t} catch {\n\t\t\t// Best effort cleanup for stale timers from an older reload.\n\t\t}\n\t}\n\n\tensureAccessibleDir(RESULTS_DIR);\n\tensureAccessibleDir(ASYNC_DIR);\n\tcleanupOldChainDirs();\n\n\tconst config = loadConfig();\n\tconst waitToolConfig = resolveWaitToolConfig(config.waitTool);\n\tconst asyncByDefault = config.asyncByDefault === true;\n\tconst tempArtifactsDir = getArtifactsDir(null);\n\tcleanupAllArtifactDirs(DEFAULT_ARTIFACT_CONFIG.cleanupDays);\n\n\tconst state: SubagentState = {\n\t\tbaseCwd: \"\",\n\t\tcurrentSessionId: null,\n\t\tsubagentInProgress: false,\n\t\tsubagentSpawns: { sessionId: null, count: 0 },\n\t\tasyncJobs: new Map(),\n\t\tfleetJobs: new Map(),\n\t\tforegroundRuns: new Map(),\n\t\tforegroundControls: new Map(),\n\t\tlastForegroundControlId: null,\n\t\tpendingForegroundControlNotices: new Map(),\n\t\tcleanupTimers: new Map(),\n\t\tlastUiContext: null,\n\t\tpoller: null,\n\t\tcompletionSeen: new Map(),\n\t\twatcher: null,\n\t\twatcherRestartTimer: null,\n\t\tresultFileCoalescer: {\n\t\t\tschedule: () => false,\n\t\t\tclear: () => {},\n\t\t},\n\t};\n\n\tconst supervisorChannel = createNativeSupervisorChannel(pi, state);\n\tconst mainWatchdog = registerMainWatchdog(pi);\n\tconst { startResultWatcher, primeExistingResults, stopResultWatcher } = createResultWatcher(\n\t\tpi,\n\t\tstate,\n\t\tRESULTS_DIR,\n\t\t10 * 60 * 1000,\n\t);\n\tstartResultWatcher();\n\tprimeExistingResults();\n\n\tconst runtimeCleanup = () => {\n\t\tmainWatchdog.dispose();\n\t\tstopResultWatcher();\n\t\tscheduledRunManager.stop();\n\t\tsupervisorChannel.dispose();\n\t\tclearPendingForegroundControlNotices(state);\n\t\tif (state.poller) {\n\t\t\tclearInterval(state.poller);\n\t\t\tstate.poller = null;\n\t\t}\n\t};\n\tglobalStore[runtimeCleanupStoreKey] = runtimeCleanup;\n\n\tconst { ensurePoller, refreshWidget, handleStarted, handleComplete, resetJobs, restoreActiveJobs } = createAsyncJobTracker(pi, state, ASYNC_DIR, {\n\t\twidgetEnabled: config.asyncWidget !== false,\n\t});\n\tlet executorExecute: ((id: string, params: SubagentParamsLike, signal: AbortSignal, onUpdate: ((r: AgentToolResult<Details>) => void) | undefined, ctx: ExtensionContext) => Promise<AgentToolResult<Details>>) | undefined;\n\tconst scheduledRunManager = createScheduledRunManager({\n\t\tconfig,\n\t\tlaunch: (params, ctx, signal) => {\n\t\t\tif (!executorExecute) {\n\t\t\t\treturn Promise.resolve({\n\t\t\t\t\tcontent: [{ type: \"text\", text: \"Scheduled subagent launch is unavailable (executor not ready).\" }],\n\t\t\t\t\tisError: true,\n\t\t\t\t\tdetails: { mode: \"management\" as const, results: [] },\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn executorExecute(randomUUID(), params, signal, undefined, ctx);\n\t\t},\n\t});\n\tconst executor = createSubagentExecutor({\n\t\tpi,\n\t\tstate,\n\t\tconfig,\n\t\tasyncByDefault,\n\t\twaitToolEnabled: waitToolConfig.enabled,\n\t\thandleScheduledRunAction: (params, ctx) => scheduledRunManager.handleToolCall(params, ctx),\n\t\twatchdog: mainWatchdog,\n\t\ttempArtifactsDir,\n\t\tgetSubagentSessionRoot,\n\t\texpandTilde,\n\t\tdiscoverAgents,\n\t});\n\texecutorExecute = executor.execute;\n\n\tpi.registerMessageRenderer<SlashMessageDetails>(SLASH_RESULT_TYPE, (message, options, theme) => {\n\t\tconst details = resolveSlashMessageDetails(message.details);\n\t\tif (!details) return undefined;\n\t\treturn createSlashResultComponent(details, options, theme);\n\t});\n\n\tpi.registerMessageRenderer<undefined>(SLASH_TEXT_RESULT_TYPE, (message, _options, _theme) => {\n\t\tconst content = typeof message.content === \"string\"\n\t\t\t? message.content\n\t\t\t: message.content\n\t\t\t\t.filter((entry) => entry.type === \"text\")\n\t\t\t\t.map((entry) => entry.text)\n\t\t\t\t.join(\"\\n\");\n\t\treturn new Text(content, 0, 0);\n\t});\n\n\tpi.registerMessageRenderer<SubagentNotifyDetails>(\"subagent-notify\", (message, options, theme) => {\n\t\tconst content = typeof message.content === \"string\" ? message.content : \"\";\n\t\tconst details = (message.details as SubagentNotifyDetails | undefined) ?? parseSubagentNotifyContent(content);\n\t\tif (!details) return new Text(content, 0, 0);\n\t\tconst icon = details.status === \"completed\"\n\t\t\t? theme.fg(\"success\", \"✓\")\n\t\t\t: details.status === \"paused\"\n\t\t\t\t? theme.fg(\"warning\", \"■\")\n\t\t\t\t: theme.fg(\"error\", \"✗\");\n\t\tconst parts: string[] = [];\n\t\tif (details.taskInfo) parts.push(details.taskInfo);\n\t\tif (details.durationMs !== undefined) parts.push(formatDuration(details.durationMs));\n\t\tlet text = `${icon} ${theme.bold(details.agent)} ${theme.fg(\"dim\", details.status)}`;\n\t\tif (parts.length > 0) text += ` ${theme.fg(\"dim\", \"·\")} ${parts.map((part) => theme.fg(\"dim\", part)).join(` ${theme.fg(\"dim\", \"·\")} `)}`;\n\t\tconst trimmedPreview = details.resultPreview.trim();\n\t\tconst previewLines = options.expanded\n\t\t\t? trimmedPreview.split(\"\\n\").filter((line) => line.trim())\n\t\t\t: [trimmedPreview.split(\"\\n\", 1)[0] ?? \"\"].filter((line) => line.trim());\n\t\tfor (const line of previewLines.length > 0 ? previewLines : [\"(no output)\"]) {\n\t\t\ttext += `\\n ${theme.fg(\"dim\", `⎿ ${line}`)}`;\n\t\t}\n\t\tif (!options.expanded && trimmedPreview.includes(\"\\n\")) {\n\t\t\tconst expandKey = keyText(\"app.tools.expand\");\n\t\t\ttext += `\\n ${theme.fg(\"dim\", `${expandKey} full notification`)}`;\n\t\t}\n\t\tif (details.sessionLabel && details.sessionValue) {\n\t\t\ttext += `\\n ${theme.fg(\"muted\", `${details.sessionLabel}: ${shortenPath(details.sessionValue)}`)}`;\n\t\t}\n\t\treturn new Text(text, 0, 0);\n\t});\n\n\tpi.registerMessageRenderer<SubagentSteeringMessageDetails>(SUBAGENT_STEERING_MESSAGE_TYPE, (message, _options, theme) => {\n\t\tconst details = message.details as SubagentSteeringMessageDetails | undefined;\n\t\tif (!details) return undefined;\n\t\treturn new Text(theme.fg(details.state === \"recovered\" ? \"warning\" : \"error\", formatSteeringNotice(details)), 0, 0);\n\t});\n\n\tpi.registerMessageRenderer<SubagentControlMessageDetails>(SUBAGENT_CONTROL_MESSAGE_TYPE, (message, _options, theme) => {\n\t\tconst details = message.details as SubagentControlMessageDetails | undefined;\n\t\tif (!details?.event) return undefined;\n\t\tconst content = typeof message.content === \"string\" ? message.content : undefined;\n\t\treturn new SubagentControlNoticeComponent({ ...details, noticeText: formatSubagentControlNotice(details, content) }, theme);\n\t});\n\n\tconst executeSubagentCollapsed = (id: string, params: SubagentParamsLike, signal: AbortSignal, onUpdate: ((result: AgentToolResult<Details>) => void) | undefined, ctx: ExtensionContext) => {\n\t\tif (ctx.hasUI) ctx.ui.setToolsExpanded(false);\n\t\treturn executor.execute(id, params, signal, onUpdate, ctx);\n\t};\n\n\tconst slashBridge = registerSlashSubagentBridge({\n\t\tevents: pi.events,\n\t\tgetContext: () => state.lastUiContext,\n\t\texecute: (id, params, signal, onUpdate, ctx) =>\n\t\t\texecuteSubagentCollapsed(id, params, signal, onUpdate, ctx),\n\t});\n\n\tconst promptTemplateBridge = registerPromptTemplateDelegationBridge({\n\t\tevents: pi.events,\n\t\tgetContext: () => state.lastUiContext,\n\t\texecute: (requestId, params, signal, ctx, onUpdate) =>\n\t\t\texecuteSubagentCollapsed(requestId, params, signal, onUpdate, ctx),\n\t});\n\n\tconst rpcBridge = registerSubagentRpcBridge({\n\t\tevents: pi.events,\n\t\tgetContext: () => state.lastUiContext,\n\t\texecute: (id, params, signal, onUpdate, ctx) => executor.execute(id, params, signal, onUpdate, ctx),\n\t});\n\n\tfunction effectiveParallelTaskCount(tasks: Array<{ count?: unknown }> | undefined): number {\n\t\tif (!tasks || tasks.length === 0) return 0;\n\t\treturn tasks.reduce((total, task) => {\n\t\t\tconst count = typeof task.count === \"number\" && Number.isInteger(task.count) && task.count >= 1 ? task.count : 1;\n\t\t\treturn total + count;\n\t\t}, 0);\n\t}\n\n\tconst tool: ToolDefinition<typeof SubagentParams, Details> = {\n\t\tname: \"subagent\",\n\t\tlabel: \"Subagent\",\n\t\tdescription: buildSubagentToolDescription(config),\n\t\tparameters: SubagentParams,\n\t\t// lunr: sequential so multiple subagent calls in one turn run one-at-a-time\n\t\t// instead of tripping the subagentInProgress guard (parallel mode uses the tasks array).\n\t\texecutionMode: \"sequential\",\n\n\t\tprepareArguments(args) {\n\t\t\t// Run friendly chain validation before pi-ai's raw TypeBox schema check\n\t\t\t// so the model sees which property is disallowed, what is allowed, and a\n\t\t\t// valid example instead of `chain.N: must not have additional properties`.\n\t\t\tvalidateChainInput(args);\n\t\t\treturn args as never;\n\t\t},\n\n\t\texecute(id, params, signal, onUpdate, ctx) {\n\t\t\treturn executeSubagentCollapsed(id, params, signal, onUpdate, ctx);\n\t\t},\n\n\t\trenderCall(args, theme) {\n\t\t\tif (args.action) {\n\t\t\t\tconst target = args.agent || args.chainName || \"\";\n\t\t\t\treturn new Text(\n\t\t\t\t\t`${theme.fg(\"toolTitle\", theme.bold(\"subagent \"))}${args.action}${target ? ` ${theme.fg(\"accent\", target)}` : \"\"}`,\n\t\t\t\t\t0, 0,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst isParallel = (args.tasks?.length ?? 0) > 0;\n\t\t\tconst parallelCount = effectiveParallelTaskCount(args.tasks as Array<{ count?: unknown }> | undefined);\n\t\t\tconst asyncLabel = args.async === true && args.clarify !== true ? theme.fg(\"warning\", \" [async]\") : \"\";\n\t\t\tif (args.chain?.length)\n\t\t\t\treturn new Text(\n\t\t\t\t\t`${theme.fg(\"toolTitle\", theme.bold(\"subagent \"))}chain (${args.chain.length})${asyncLabel}`,\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t);\n\t\t\tif (isParallel)\n\t\t\t\treturn new Text(\n\t\t\t\t\t`${theme.fg(\"toolTitle\", theme.bold(\"subagent \"))}parallel (${parallelCount})${asyncLabel}`,\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t);\n\t\t\treturn new Text(\n\t\t\t\t`${theme.fg(\"toolTitle\", theme.bold(\"subagent \"))}${theme.fg(\"accent\", args.agent || \"?\")}${asyncLabel}`,\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t);\n\t\t},\n\n\t\trenderResult(result, options, theme, context) {\n\t\t\t// lunr: hide the `subagent list` result body — the call row already shows\n\t\t\t// the action; the roster stays in the transcript for the model.\n\t\t\tif ((context.args as { action?: string } | undefined)?.action === \"list\") {\n\t\t\t\treturn { render: () => [], invalidate() {} };\n\t\t\t}\n\t\t\tif (subagentResultIsRunning(result)) {\n\t\t\t\tensureSubagentResultAnimation(context);\n\t\t\t} else {\n\t\t\t\tclearLegacyResultAnimationTimer(context);\n\t\t\t}\n\t\t\tconst state = context.state as { frame?: number; animEntries?: Array<{ text: Text; line: (frame: number) => string }> };\n\t\t\t// lunr: collect running-glyph line templates while rendering so the\n\t\t\t// animation timer can rewrite them in place (see ensureSubagentResultAnimation).\n\t\t\tconst entries: Array<{ text: Text; line: (frame: number) => string }> = [];\n\t\t\tstate.animEntries = entries;\n\t\t\tsubagentAnimSink.current = entries;\n\t\t\ttry {\n\t\t\t\treturn renderSubagentResult(result, options, theme, state.frame ?? 0);\n\t\t\t} finally {\n\t\t\t\tsubagentAnimSink.current = null;\n\t\t\t}\n\t\t},\n\n\t};\n\n\tpi.registerTool(tool);\n\n\t// lunr: register a callback so toggling model tiers mid-session rebuilds the subagent\n\t// tool description (adds/removes MODEL TIERS guidance) and refreshes the tool registry.\n\tconst modelTierBridge = (globalThis as Record<symbol, unknown>)[Symbol.for(\"@lunr/model-tiers\")] as\n\t\t| { registerToolDescriptionRefresher?: (refresher: () => void) => void }\n\t\t| undefined;\n\tmodelTierBridge?.registerToolDescriptionRefresher?.(() => {\n\t\ttool.description = buildSubagentToolDescription(config);\n\t\tpi.runtime.refreshTools();\n\t});\n\n\tregisterWaitTool(pi, state, waitToolConfig.enabled);\n\n\tpi.on(\"agent_end\", async (_event, ctx) => {\n\t\tif (ctx.hasUI) return;\n\t\tawait drainOutstandingWork({ state, events: pi.events });\n\t});\n\n\tregisterSlashCommands(pi, state);\n\n\tconst eventUnsubscribeStoreKey = \"__piSubagentEventUnsubscribes\";\n\tconst controlNoticeSeenStoreKey = \"__piSubagentVisibleControlNotices\";\n\tconst previousEventUnsubscribes = globalStore[eventUnsubscribeStoreKey];\n\tif (Array.isArray(previousEventUnsubscribes)) {\n\t\tfor (const unsubscribe of previousEventUnsubscribes) {\n\t\t\tif (typeof unsubscribe !== \"function\") continue;\n\t\t\ttry {\n\t\t\t\tunsubscribe();\n\t\t\t} catch {\n\t\t\t\t// Best effort cleanup for stale handlers from an older reload.\n\t\t\t}\n\t\t}\n\t}\n\tregisterSubagentNotify(pi, state, { batchConfig: config.completionBatch });\n\n\tconst existingVisibleControlNotices = globalStore[controlNoticeSeenStoreKey];\n\tconst visibleControlNotices = existingVisibleControlNotices instanceof Set ? existingVisibleControlNotices as Set<string> : new Set<string>();\n\tglobalStore[controlNoticeSeenStoreKey] = visibleControlNotices;\n\tconst controlEventHandler = (payload: unknown) => {\n\t\thandleSubagentControlNotice({\n\t\t\tpi,\n\t\t\tstate,\n\t\t\tvisibleControlNotices,\n\t\t\tdetails: payload as SubagentControlMessageDetails,\n\t\t});\n\t};\n\tconst steeringNoticeHandler = (payload: unknown) => {\n\t\thandleSubagentSteeringNotice({ pi, state, details: payload as SubagentSteeringMessageDetails });\n\t};\n\tconst eventUnsubscribes = [\n\t\tpi.events.on(SUBAGENT_ASYNC_STARTED_EVENT, handleStarted),\n\t\tpi.events.on(SUBAGENT_ASYNC_COMPLETE_EVENT, handleComplete),\n\t\tpi.events.on(SUBAGENT_CONTROL_EVENT, controlEventHandler),\n\t\tpi.events.on(SUBAGENT_STEERING_NOTICE_EVENT, steeringNoticeHandler),\n\t\trpcBridge.dispose,\n\t];\n\tglobalStore[eventUnsubscribeStoreKey] = eventUnsubscribes;\n\n\tpi.on(\"tool_result\", (event, ctx) => {\n\t\tif (event.toolName !== \"subagent\") return;\n\t\tif (!ctx.hasUI) return;\n\t\tstate.lastUiContext = ctx;\n\t\tif (state.asyncJobs.size > 0) {\n\t\t\trefreshWidget(ctx);\n\t\t\tensurePoller();\n\t\t}\n\t});\n\n\tconst cleanupSessionArtifacts = (ctx: ExtensionContext) => {\n\t\ttry {\n\t\t\tconst sessionFile = ctx.sessionManager.getSessionFile();\n\t\t\tif (sessionFile) {\n\t\t\t\tcleanupOldArtifacts(getArtifactsDir(sessionFile), DEFAULT_ARTIFACT_CONFIG.cleanupDays);\n\t\t\t}\n\t\t} catch {\n\t\t\t// Cleanup failures should not block session lifecycle events.\n\t\t}\n\t};\n\n\tconst resetSessionState = (ctx: ExtensionContext) => {\n\t\tstate.baseCwd = ctx.cwd;\n\t\tstate.currentSessionId = resolveCurrentSessionId(ctx.sessionManager);\n\t\tstate.subagentSpawns = { sessionId: state.currentSessionId, count: 0 };\n\t\t// Set PI_SUBAGENT_PARENT_SESSION for permission-system forwarding.\n\t\t// Only set in the root session (the interactive UI session), not in\n\t\t// child subagent processes — children inherit the parent's value\n\t\t// through the process environment at spawn time and must not overwrite\n\t\t// it with their own session identity.\n\t\tif (!process.env[SUBAGENT_CHILD_ENV]) {\n\t\t\tconst sessionId = ctx.sessionManager.getSessionId();\n\t\t\tif (sessionId) {\n\t\t\t\tprocess.env[SUBAGENT_PARENT_SESSION_ENV] = sessionId;\n\t\t\t}\n\t\t}\n\t\tstate.lastUiContext = ctx;\n\t\tcleanupSessionArtifacts(ctx);\n\t\tclearPendingForegroundControlNotices(state);\n\t\tresetJobs(ctx);\n\t\trestoreActiveJobs(ctx);\n\t\tscheduledRunManager.bindSession(ctx);\n\t\trestoreSlashFinalSnapshots(ctx.sessionManager.getEntries());\n\t\tprimeExistingResults();\n\t};\n\n\tpi.on(\"session_start\", (_event, ctx) => {\n\t\tresetSessionState(ctx);\n\t\trpcBridge.emitReady(ctx);\n\t\tsupervisorChannel.start();\n\t});\n\n\tpi.on(\"session_shutdown\", () => {\n\t\tdelete process.env[SUBAGENT_PARENT_SESSION_ENV];\n\t\tfor (const unsubscribe of eventUnsubscribes) {\n\t\t\ttry {\n\t\t\t\tunsubscribe();\n\t\t\t} catch {\n\t\t\t\t// Best effort cleanup during shutdown.\n\t\t\t}\n\t\t}\n\t\tif (globalStore[eventUnsubscribeStoreKey] === eventUnsubscribes) {\n\t\t\tdelete globalStore[eventUnsubscribeStoreKey];\n\t\t}\n\t\tstopResultWatcher();\n\t\tscheduledRunManager.stop();\n\t\tif (state.poller) clearInterval(state.poller);\n\t\tstate.poller = null;\n\t\tclearPendingForegroundControlNotices(state);\n\t\tfor (const timer of state.cleanupTimers.values()) {\n\t\t\tclearTimeout(timer);\n\t\t}\n\t\tstate.cleanupTimers.clear();\n\t\tstate.asyncJobs.clear();\n\t\tclearSlashSnapshots();\n\t\tslashBridge.cancelAll();\n\t\tslashBridge.dispose();\n\t\tpromptTemplateBridge.cancelAll();\n\t\tpromptTemplateBridge.dispose();\n\t\tsupervisorChannel.dispose();\n\t\tif (globalStore[runtimeCleanupStoreKey] === runtimeCleanup) {\n\t\t\tdelete globalStore[runtimeCleanupStoreKey];\n\t\t}\n\t\ttry {\n\t\t\tif (state.lastUiContext?.hasUI) {\n\t\t\t\tstate.lastUiContext.ui.setWidget(WIDGET_KEY, undefined);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (!isStaleExtensionContextError(error)) throw error;\n\t\t}\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 { SubagentParamsLike } from "../runs/foreground/subagent-executor.ts";
|
|
4
4
|
import { type Details } from "../shared/types.ts";
|
|
5
5
|
export declare const SUBAGENT_RPC_PROTOCOL_VERSION = 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/extension/rpc.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport * as path from \"node:path\";\nimport type { AgentToolResult } from \"@earendil-works/pi-agent-core\";\nimport type { ExtensionContext } from \"@earendil-works/pi-coding-agent\";\nimport { Compile } from \"typebox/compile\";\nimport { resolveAsyncRunLocation } from \"../runs/background/async-resume.ts\";\nimport { deliverStopRequest } from \"../runs/background/control-channel.ts\";\nimport { reconcileAsyncRun } from \"../runs/background/stale-run-reconciler.ts\";\nimport type { SubagentParamsLike } from \"../runs/foreground/subagent-executor.ts\";\nimport { type Details, ASYNC_DIR, RESULTS_DIR } from \"../shared/types.ts\";\nimport { readStatus } from \"../shared/utils.ts\";\nimport { SubagentParams } from \"./schemas.ts\";\nimport { validateChainInput } from \"./chain-validation.ts\";\n\nexport const SUBAGENT_RPC_PROTOCOL_VERSION = 1;\nexport const SUBAGENT_RPC_REQUEST_EVENT = \"subagents:rpc:v1:request\";\nexport const SUBAGENT_RPC_READY_EVENT = \"subagents:rpc:v1:ready\";\nexport const SUBAGENT_RPC_REPLY_EVENT_PREFIX = \"subagents:rpc:v1:reply:\";\n\nexport const SUBAGENT_RPC_METHODS = [\"ping\", \"status\", \"spawn\", \"interrupt\", \"stop\"] as const;\nexport type SubagentRpcMethod = typeof SUBAGENT_RPC_METHODS[number];\n\nexport interface SubagentRpcRequestEnvelope {\n\tversion: typeof SUBAGENT_RPC_PROTOCOL_VERSION;\n\trequestId: string;\n\tmethod: SubagentRpcMethod;\n\tparams?: unknown;\n\tsource?: {\n\t\textension?: string;\n\t\t[key: string]: unknown;\n\t};\n}\n\nexport type SubagentRpcReplyEnvelope<T = unknown> = {\n\tversion: typeof SUBAGENT_RPC_PROTOCOL_VERSION;\n\trequestId: string;\n\tmethod?: SubagentRpcMethod;\n\tsuccess: true;\n\tdata: T;\n} | {\n\tversion: typeof SUBAGENT_RPC_PROTOCOL_VERSION;\n\trequestId: string;\n\tmethod?: SubagentRpcMethod;\n\tsuccess: false;\n\terror: {\n\t\tcode: SubagentRpcErrorCode;\n\t\tmessage: string;\n\t};\n};\n\ntype SubagentRpcErrorCode =\n\t| \"invalid_request\"\n\t| \"invalid_params\"\n\t| \"unsupported_version\"\n\t| \"unsupported_method\"\n\t| \"no_active_session\"\n\t| \"execution_failed\"\n\t| \"not_found\"\n\t| \"invalid_state\";\n\ninterface EventBus {\n\ton(event: string, handler: (data: unknown) => void): (() => void) | void;\n\temit(event: string, data: unknown): void;\n}\n\ninterface RegisterSubagentRpcBridgeOptions {\n\tevents: EventBus;\n\tgetContext: () => ExtensionContext | null;\n\texecute: (\n\t\tid: string,\n\t\tparams: SubagentParamsLike,\n\t\tsignal: AbortSignal,\n\t\tonUpdate: ((result: AgentToolResult<Details>) => void) | undefined,\n\t\tctx: ExtensionContext,\n\t) => Promise<AgentToolResult<Details>>;\n\tasyncDirRoot?: string;\n\tresultsDir?: string;\n\tkill?: (pid: number, signal?: NodeJS.Signals | 0) => boolean;\n\tnow?: () => number;\n}\n\nclass SubagentRpcError extends Error {\n\treadonly code: SubagentRpcErrorCode;\n\n\tconstructor(code: SubagentRpcErrorCode, message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"SubagentRpcError\";\n\t\tthis.code = code;\n\t}\n}\n\nconst subagentParamsValidator = Compile(SubagentParams);\n\nexport function subagentRpcReplyEvent(requestId: string): string {\n\treturn `${SUBAGENT_RPC_REPLY_EVENT_PREFIX}${requestId}`;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction assertRequestId(value: unknown): string {\n\tif (typeof value !== \"string\" || value.trim().length === 0 || /[\\r\\n]/.test(value)) {\n\t\tthrow new SubagentRpcError(\"invalid_request\", \"RPC requestId must be a non-empty string without newlines.\");\n\t}\n\treturn value;\n}\n\nfunction assertRecordParams(params: unknown, method: SubagentRpcMethod): Record<string, unknown> {\n\tif (params === undefined) return {};\n\tif (!isRecord(params)) throw new SubagentRpcError(\"invalid_params\", `RPC ${method} params must be an object.`);\n\treturn params;\n}\n\nfunction assertSubagentParams(params: SubagentParamsLike, label: string): void {\n\t// Friendly chain validation first: name the disallowed property, list allowed\n\t// ones, and show a valid example instead of raw TypeBox diagnostics.\n\ttry {\n\t\tvalidateChainInput(params);\n\t} catch (error) {\n\t\tthrow new SubagentRpcError(\"invalid_params\", `${label}: ${error instanceof Error ? error.message : String(error)}`);\n\t}\n\tif (subagentParamsValidator.Check(params)) return;\n\tconst messages = [...subagentParamsValidator.Errors(params)]\n\t\t.slice(0, 4)\n\t\t.map((error) => error.message);\n\tthrow new SubagentRpcError(\"invalid_params\", `${label}: ${messages.join(\"; \") || \"invalid subagent parameters\"}`);\n}\n\nfunction textFromToolResult(result: AgentToolResult<Details>): string {\n\treturn result.content\n\t\t.filter((part): part is { type: \"text\"; text: string } => part.type === \"text\")\n\t\t.map((part) => part.text)\n\t\t.join(\"\\n\");\n}\n\nfunction dataFromToolResult(result: AgentToolResult<Details>): { text: string; details?: Details; isError?: boolean } {\n\treturn {\n\t\ttext: textFromToolResult(result),\n\t\t...(result.details ? { details: result.details } : {}),\n\t\t...(result.isError ? { isError: true } : {}),\n\t};\n}\n\nfunction failIfToolError(result: AgentToolResult<Details>): void {\n\tif (!result.isError) return;\n\tthrow new SubagentRpcError(\"execution_failed\", textFromToolResult(result) || \"Subagent RPC execution failed.\");\n}\n\nfunction normalizeTargetParams(params: unknown, method: SubagentRpcMethod): Pick<SubagentParamsLike, \"id\" | \"runId\" | \"dir\" | \"index\"> {\n\tconst input = assertRecordParams(params, method);\n\tconst output: Pick<SubagentParamsLike, \"id\" | \"runId\" | \"dir\" | \"index\"> = {};\n\tif (input.id !== undefined) output.id = input.id as string;\n\tif (input.runId !== undefined) output.runId = input.runId as string;\n\tif (input.dir !== undefined) output.dir = input.dir as string;\n\tif (input.index !== undefined) output.index = input.index as number;\n\treturn output;\n}\n\nfunction sessionData(ctx: ExtensionContext | null): { cwd?: string; sessionId?: string; sessionFile?: string | null } {\n\tif (!ctx) return {};\n\treturn {\n\t\tcwd: ctx.cwd,\n\t\tsessionId: ctx.sessionManager.getSessionId() ?? undefined,\n\t\tsessionFile: ctx.sessionManager.getSessionFile() ?? null,\n\t};\n}\n\nfunction pingData(ctx: ExtensionContext | null) {\n\treturn {\n\t\tversion: SUBAGENT_RPC_PROTOCOL_VERSION,\n\t\tmethods: [...SUBAGENT_RPC_METHODS],\n\t\tcapabilities: {\n\t\t\tstatus: true,\n\t\t\tasyncSpawn: true,\n\t\t\tinterrupt: true,\n\t\t\tstop: true,\n\t\t},\n\t\tevents: {\n\t\t\tready: SUBAGENT_RPC_READY_EVENT,\n\t\t\trequest: SUBAGENT_RPC_REQUEST_EVENT,\n\t\t\treplyPrefix: SUBAGENT_RPC_REPLY_EVENT_PREFIX,\n\t\t},\n\t\tsession: sessionData(ctx),\n\t};\n}\n\nasync function executeChecked(\n\toptions: RegisterSubagentRpcBridgeOptions,\n\tctx: ExtensionContext,\n\trequestId: string,\n\tmethod: SubagentRpcMethod,\n\tparams: SubagentParamsLike,\n): Promise<{ text: string; details?: Details; isError?: boolean }> {\n\tassertSubagentParams(params, `RPC ${method} params`);\n\tconst controller = new AbortController();\n\tconst result = await options.execute(`rpc-${method}-${requestId}`, params, controller.signal, undefined, ctx);\n\tfailIfToolError(result);\n\treturn dataFromToolResult(result);\n}\n\nfunction spawnParams(params: unknown): SubagentParamsLike {\n\tconst input = assertRecordParams(params, \"spawn\");\n\tif (input.action !== undefined) {\n\t\tthrow new SubagentRpcError(\"invalid_params\", \"RPC spawn does not accept management/control actions. Use status or interrupt RPC methods instead.\");\n\t}\n\tif (input.async === false) {\n\t\tthrow new SubagentRpcError(\"invalid_params\", \"RPC spawn only supports detached async launches; omit async or set async: true.\");\n\t}\n\tif (input.clarify === true) {\n\t\tthrow new SubagentRpcError(\"invalid_params\", \"RPC spawn cannot open the clarify UI; omit clarify or set clarify: false.\");\n\t}\n\treturn { ...(input as SubagentParamsLike), async: true, clarify: false };\n}\n\nfunction stopAsyncRun(\n\tparams: unknown,\n\toptions: RegisterSubagentRpcBridgeOptions,\n\tctx: ExtensionContext,\n): { runId: string; asyncDir: string; previousState: string; state: \"stopping\"; message: string } {\n\tconst target = normalizeTargetParams(params, \"stop\");\n\tassertSubagentParams({ action: \"status\", ...target }, \"RPC stop target params\");\n\tconst asyncDirRoot = options.asyncDirRoot ?? ASYNC_DIR;\n\tconst resultsDir = options.resultsDir ?? RESULTS_DIR;\n\tlet location;\n\ttry {\n\t\tlocation = resolveAsyncRunLocation(target, asyncDirRoot, resultsDir);\n\t} catch (error) {\n\t\tthrow new SubagentRpcError(\"invalid_params\", error instanceof Error ? error.message : String(error));\n\t}\n\tif (!location.asyncDir) {\n\t\tthrow new SubagentRpcError(\"not_found\", \"Async run not found or already completed; stop requires a live async run directory.\");\n\t}\n\n\tconst currentSessionId = ctx.sessionManager.getSessionId();\n\tconst initialStatus = readStatus(location.asyncDir);\n\tconst initialRunId = initialStatus?.runId ?? location.resolvedId ?? path.basename(location.asyncDir);\n\tif (!initialStatus) throw new SubagentRpcError(\"not_found\", `Status file not found for async run '${initialRunId}'.`);\n\tif (!currentSessionId || initialStatus.sessionId !== currentSessionId) {\n\t\tthrow new SubagentRpcError(\"not_found\", `Async run '${initialRunId}' was not found in the active session.`);\n\t}\n\n\tlet status;\n\ttry {\n\t\tstatus = reconcileAsyncRun(location.asyncDir, { resultsDir, kill: options.kill, now: options.now }).status;\n\t} catch (error) {\n\t\tthrow new SubagentRpcError(\"execution_failed\", error instanceof Error ? error.message : String(error));\n\t}\n\tconst runId = status?.runId ?? initialRunId;\n\tif (!status) throw new SubagentRpcError(\"not_found\", `Status file not found for async run '${runId}'.`);\n\tif (status.sessionId !== currentSessionId) {\n\t\tthrow new SubagentRpcError(\"not_found\", `Async run '${runId}' was not found in the active session.`);\n\t}\n\tif (status.state !== \"running\") {\n\t\tthrow new SubagentRpcError(\"invalid_state\", `Async run ${runId} is ${status.state}; stop only supports running async runs.`);\n\t}\n\n\ttry {\n\t\tdeliverStopRequest({\n\t\t\tasyncDir: location.asyncDir,\n\t\t\tpid: status.pid,\n\t\t\tkill: options.kill,\n\t\t\tnow: options.now,\n\t\t\tsource: \"rpc-stop\",\n\t\t});\n\t} catch (error) {\n\t\tthrow new SubagentRpcError(\"execution_failed\", error instanceof Error ? error.message : String(error));\n\t}\n\n\treturn {\n\t\trunId,\n\t\tasyncDir: location.asyncDir,\n\t\tpreviousState: status.state,\n\t\tstate: \"stopping\",\n\t\tmessage: `Stop requested for async run ${runId}.`,\n\t};\n}\n\nasync function handleRequest(\n\trequest: SubagentRpcRequestEnvelope,\n\toptions: RegisterSubagentRpcBridgeOptions,\n): Promise<unknown> {\n\tconst ctx = options.getContext();\n\tif (request.method === \"ping\") return pingData(ctx);\n\tif (!ctx) throw new SubagentRpcError(\"no_active_session\", \"No active extension context for subagent RPC.\");\n\n\tif (request.method === \"spawn\") {\n\t\treturn executeChecked(options, ctx, request.requestId, request.method, spawnParams(request.params));\n\t}\n\tif (request.method === \"status\") {\n\t\treturn executeChecked(options, ctx, request.requestId, request.method, { action: \"status\", ...normalizeTargetParams(request.params, \"status\") });\n\t}\n\tif (request.method === \"interrupt\") {\n\t\treturn executeChecked(options, ctx, request.requestId, request.method, { action: \"interrupt\", ...normalizeTargetParams(request.params, \"interrupt\") });\n\t}\n\tif (request.method === \"stop\") {\n\t\treturn stopAsyncRun(request.params, options, ctx);\n\t}\n\tthrow new SubagentRpcError(\"unsupported_method\", `Unsupported subagent RPC method: ${String(request.method)}`);\n}\n\nfunction parseRequest(raw: unknown): SubagentRpcRequestEnvelope {\n\tif (!isRecord(raw)) throw new SubagentRpcError(\"invalid_request\", \"Subagent RPC request must be an object.\");\n\tconst requestId = assertRequestId(raw.requestId);\n\tif (raw.version !== SUBAGENT_RPC_PROTOCOL_VERSION) {\n\t\tthrow new SubagentRpcError(\"unsupported_version\", `Unsupported subagent RPC version: ${String(raw.version)}.`);\n\t}\n\tif (typeof raw.method !== \"string\" || !(SUBAGENT_RPC_METHODS as readonly string[]).includes(raw.method)) {\n\t\tthrow new SubagentRpcError(\"unsupported_method\", `Unsupported subagent RPC method: ${String(raw.method)}.`);\n\t}\n\treturn {\n\t\tversion: SUBAGENT_RPC_PROTOCOL_VERSION,\n\t\trequestId,\n\t\tmethod: raw.method as SubagentRpcMethod,\n\t\t...(raw.params !== undefined ? { params: raw.params } : {}),\n\t\t...(isRecord(raw.source) ? { source: raw.source as SubagentRpcRequestEnvelope[\"source\"] } : {}),\n\t};\n}\n\nfunction safeReplyRequestId(raw: unknown): string {\n\tif (!isRecord(raw)) return \"unknown\";\n\tconst requestId = raw.requestId;\n\treturn typeof requestId === \"string\" && requestId.trim().length > 0 && !/[\\r\\n]/.test(requestId)\n\t\t? requestId\n\t\t: \"unknown\";\n}\n\nfunction errorReply(raw: unknown, error: unknown): SubagentRpcReplyEnvelope {\n\tconst requestId = safeReplyRequestId(raw);\n\tconst method = isRecord(raw) && typeof raw.method === \"string\" && (SUBAGENT_RPC_METHODS as readonly string[]).includes(raw.method)\n\t\t? raw.method as SubagentRpcMethod\n\t\t: undefined;\n\tconst rpcError = error instanceof SubagentRpcError\n\t\t? error\n\t\t: new SubagentRpcError(\"execution_failed\", error instanceof Error ? error.message : String(error));\n\treturn {\n\t\tversion: SUBAGENT_RPC_PROTOCOL_VERSION,\n\t\trequestId,\n\t\t...(method ? { method } : {}),\n\t\tsuccess: false,\n\t\terror: {\n\t\t\tcode: rpcError.code,\n\t\t\tmessage: rpcError.message,\n\t\t},\n\t};\n}\n\nexport function registerSubagentRpcBridge(options: RegisterSubagentRpcBridgeOptions): {\n\temitReady: (ctx?: ExtensionContext | null) => void;\n\tdispose: () => void;\n} {\n\tconst unsubscribe = options.events.on(SUBAGENT_RPC_REQUEST_EVENT, async (raw) => {\n\t\tlet request: SubagentRpcRequestEnvelope | undefined;\n\t\ttry {\n\t\t\trequest = parseRequest(raw);\n\t\t\tconst data = await handleRequest(request, options);\n\t\t\toptions.events.emit(subagentRpcReplyEvent(request.requestId), {\n\t\t\t\tversion: SUBAGENT_RPC_PROTOCOL_VERSION,\n\t\t\t\trequestId: request.requestId,\n\t\t\t\tmethod: request.method,\n\t\t\t\tsuccess: true,\n\t\t\t\tdata,\n\t\t\t} satisfies SubagentRpcReplyEnvelope);\n\t\t} catch (error) {\n\t\t\tconst reply = errorReply(request ?? raw, error);\n\t\t\toptions.events.emit(subagentRpcReplyEvent(reply.requestId), reply);\n\t\t}\n\t});\n\n\treturn {\n\t\temitReady: (ctx) => {\n\t\t\toptions.events.emit(SUBAGENT_RPC_READY_EVENT, pingData(ctx ?? options.getContext()));\n\t\t},\n\t\tdispose: () => {\n\t\t\tif (typeof unsubscribe === \"function\") unsubscribe();\n\t\t},\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/extension/rpc.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport * as path from \"node:path\";\nimport type { AgentToolResult } from \"@ashx-j/lunr-agent\";\nimport type { ExtensionContext } from \"@ashx-j/lunr\";\nimport { Compile } from \"typebox/compile\";\nimport { resolveAsyncRunLocation } from \"../runs/background/async-resume.ts\";\nimport { deliverStopRequest } from \"../runs/background/control-channel.ts\";\nimport { reconcileAsyncRun } from \"../runs/background/stale-run-reconciler.ts\";\nimport type { SubagentParamsLike } from \"../runs/foreground/subagent-executor.ts\";\nimport { type Details, ASYNC_DIR, RESULTS_DIR } from \"../shared/types.ts\";\nimport { readStatus } from \"../shared/utils.ts\";\nimport { SubagentParams } from \"./schemas.ts\";\nimport { validateChainInput } from \"./chain-validation.ts\";\n\nexport const SUBAGENT_RPC_PROTOCOL_VERSION = 1;\nexport const SUBAGENT_RPC_REQUEST_EVENT = \"subagents:rpc:v1:request\";\nexport const SUBAGENT_RPC_READY_EVENT = \"subagents:rpc:v1:ready\";\nexport const SUBAGENT_RPC_REPLY_EVENT_PREFIX = \"subagents:rpc:v1:reply:\";\n\nexport const SUBAGENT_RPC_METHODS = [\"ping\", \"status\", \"spawn\", \"interrupt\", \"stop\"] as const;\nexport type SubagentRpcMethod = typeof SUBAGENT_RPC_METHODS[number];\n\nexport interface SubagentRpcRequestEnvelope {\n\tversion: typeof SUBAGENT_RPC_PROTOCOL_VERSION;\n\trequestId: string;\n\tmethod: SubagentRpcMethod;\n\tparams?: unknown;\n\tsource?: {\n\t\textension?: string;\n\t\t[key: string]: unknown;\n\t};\n}\n\nexport type SubagentRpcReplyEnvelope<T = unknown> = {\n\tversion: typeof SUBAGENT_RPC_PROTOCOL_VERSION;\n\trequestId: string;\n\tmethod?: SubagentRpcMethod;\n\tsuccess: true;\n\tdata: T;\n} | {\n\tversion: typeof SUBAGENT_RPC_PROTOCOL_VERSION;\n\trequestId: string;\n\tmethod?: SubagentRpcMethod;\n\tsuccess: false;\n\terror: {\n\t\tcode: SubagentRpcErrorCode;\n\t\tmessage: string;\n\t};\n};\n\ntype SubagentRpcErrorCode =\n\t| \"invalid_request\"\n\t| \"invalid_params\"\n\t| \"unsupported_version\"\n\t| \"unsupported_method\"\n\t| \"no_active_session\"\n\t| \"execution_failed\"\n\t| \"not_found\"\n\t| \"invalid_state\";\n\ninterface EventBus {\n\ton(event: string, handler: (data: unknown) => void): (() => void) | void;\n\temit(event: string, data: unknown): void;\n}\n\ninterface RegisterSubagentRpcBridgeOptions {\n\tevents: EventBus;\n\tgetContext: () => ExtensionContext | null;\n\texecute: (\n\t\tid: string,\n\t\tparams: SubagentParamsLike,\n\t\tsignal: AbortSignal,\n\t\tonUpdate: ((result: AgentToolResult<Details>) => void) | undefined,\n\t\tctx: ExtensionContext,\n\t) => Promise<AgentToolResult<Details>>;\n\tasyncDirRoot?: string;\n\tresultsDir?: string;\n\tkill?: (pid: number, signal?: NodeJS.Signals | 0) => boolean;\n\tnow?: () => number;\n}\n\nclass SubagentRpcError extends Error {\n\treadonly code: SubagentRpcErrorCode;\n\n\tconstructor(code: SubagentRpcErrorCode, message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"SubagentRpcError\";\n\t\tthis.code = code;\n\t}\n}\n\nconst subagentParamsValidator = Compile(SubagentParams);\n\nexport function subagentRpcReplyEvent(requestId: string): string {\n\treturn `${SUBAGENT_RPC_REPLY_EVENT_PREFIX}${requestId}`;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction assertRequestId(value: unknown): string {\n\tif (typeof value !== \"string\" || value.trim().length === 0 || /[\\r\\n]/.test(value)) {\n\t\tthrow new SubagentRpcError(\"invalid_request\", \"RPC requestId must be a non-empty string without newlines.\");\n\t}\n\treturn value;\n}\n\nfunction assertRecordParams(params: unknown, method: SubagentRpcMethod): Record<string, unknown> {\n\tif (params === undefined) return {};\n\tif (!isRecord(params)) throw new SubagentRpcError(\"invalid_params\", `RPC ${method} params must be an object.`);\n\treturn params;\n}\n\nfunction assertSubagentParams(params: SubagentParamsLike, label: string): void {\n\t// Friendly chain validation first: name the disallowed property, list allowed\n\t// ones, and show a valid example instead of raw TypeBox diagnostics.\n\ttry {\n\t\tvalidateChainInput(params);\n\t} catch (error) {\n\t\tthrow new SubagentRpcError(\"invalid_params\", `${label}: ${error instanceof Error ? error.message : String(error)}`);\n\t}\n\tif (subagentParamsValidator.Check(params)) return;\n\tconst messages = [...subagentParamsValidator.Errors(params)]\n\t\t.slice(0, 4)\n\t\t.map((error) => error.message);\n\tthrow new SubagentRpcError(\"invalid_params\", `${label}: ${messages.join(\"; \") || \"invalid subagent parameters\"}`);\n}\n\nfunction textFromToolResult(result: AgentToolResult<Details>): string {\n\treturn result.content\n\t\t.filter((part): part is { type: \"text\"; text: string } => part.type === \"text\")\n\t\t.map((part) => part.text)\n\t\t.join(\"\\n\");\n}\n\nfunction dataFromToolResult(result: AgentToolResult<Details>): { text: string; details?: Details; isError?: boolean } {\n\treturn {\n\t\ttext: textFromToolResult(result),\n\t\t...(result.details ? { details: result.details } : {}),\n\t\t...(result.isError ? { isError: true } : {}),\n\t};\n}\n\nfunction failIfToolError(result: AgentToolResult<Details>): void {\n\tif (!result.isError) return;\n\tthrow new SubagentRpcError(\"execution_failed\", textFromToolResult(result) || \"Subagent RPC execution failed.\");\n}\n\nfunction normalizeTargetParams(params: unknown, method: SubagentRpcMethod): Pick<SubagentParamsLike, \"id\" | \"runId\" | \"dir\" | \"index\"> {\n\tconst input = assertRecordParams(params, method);\n\tconst output: Pick<SubagentParamsLike, \"id\" | \"runId\" | \"dir\" | \"index\"> = {};\n\tif (input.id !== undefined) output.id = input.id as string;\n\tif (input.runId !== undefined) output.runId = input.runId as string;\n\tif (input.dir !== undefined) output.dir = input.dir as string;\n\tif (input.index !== undefined) output.index = input.index as number;\n\treturn output;\n}\n\nfunction sessionData(ctx: ExtensionContext | null): { cwd?: string; sessionId?: string; sessionFile?: string | null } {\n\tif (!ctx) return {};\n\treturn {\n\t\tcwd: ctx.cwd,\n\t\tsessionId: ctx.sessionManager.getSessionId() ?? undefined,\n\t\tsessionFile: ctx.sessionManager.getSessionFile() ?? null,\n\t};\n}\n\nfunction pingData(ctx: ExtensionContext | null) {\n\treturn {\n\t\tversion: SUBAGENT_RPC_PROTOCOL_VERSION,\n\t\tmethods: [...SUBAGENT_RPC_METHODS],\n\t\tcapabilities: {\n\t\t\tstatus: true,\n\t\t\tasyncSpawn: true,\n\t\t\tinterrupt: true,\n\t\t\tstop: true,\n\t\t},\n\t\tevents: {\n\t\t\tready: SUBAGENT_RPC_READY_EVENT,\n\t\t\trequest: SUBAGENT_RPC_REQUEST_EVENT,\n\t\t\treplyPrefix: SUBAGENT_RPC_REPLY_EVENT_PREFIX,\n\t\t},\n\t\tsession: sessionData(ctx),\n\t};\n}\n\nasync function executeChecked(\n\toptions: RegisterSubagentRpcBridgeOptions,\n\tctx: ExtensionContext,\n\trequestId: string,\n\tmethod: SubagentRpcMethod,\n\tparams: SubagentParamsLike,\n): Promise<{ text: string; details?: Details; isError?: boolean }> {\n\tassertSubagentParams(params, `RPC ${method} params`);\n\tconst controller = new AbortController();\n\tconst result = await options.execute(`rpc-${method}-${requestId}`, params, controller.signal, undefined, ctx);\n\tfailIfToolError(result);\n\treturn dataFromToolResult(result);\n}\n\nfunction spawnParams(params: unknown): SubagentParamsLike {\n\tconst input = assertRecordParams(params, \"spawn\");\n\tif (input.action !== undefined) {\n\t\tthrow new SubagentRpcError(\"invalid_params\", \"RPC spawn does not accept management/control actions. Use status or interrupt RPC methods instead.\");\n\t}\n\tif (input.async === false) {\n\t\tthrow new SubagentRpcError(\"invalid_params\", \"RPC spawn only supports detached async launches; omit async or set async: true.\");\n\t}\n\tif (input.clarify === true) {\n\t\tthrow new SubagentRpcError(\"invalid_params\", \"RPC spawn cannot open the clarify UI; omit clarify or set clarify: false.\");\n\t}\n\treturn { ...(input as SubagentParamsLike), async: true, clarify: false };\n}\n\nfunction stopAsyncRun(\n\tparams: unknown,\n\toptions: RegisterSubagentRpcBridgeOptions,\n\tctx: ExtensionContext,\n): { runId: string; asyncDir: string; previousState: string; state: \"stopping\"; message: string } {\n\tconst target = normalizeTargetParams(params, \"stop\");\n\tassertSubagentParams({ action: \"status\", ...target }, \"RPC stop target params\");\n\tconst asyncDirRoot = options.asyncDirRoot ?? ASYNC_DIR;\n\tconst resultsDir = options.resultsDir ?? RESULTS_DIR;\n\tlet location;\n\ttry {\n\t\tlocation = resolveAsyncRunLocation(target, asyncDirRoot, resultsDir);\n\t} catch (error) {\n\t\tthrow new SubagentRpcError(\"invalid_params\", error instanceof Error ? error.message : String(error));\n\t}\n\tif (!location.asyncDir) {\n\t\tthrow new SubagentRpcError(\"not_found\", \"Async run not found or already completed; stop requires a live async run directory.\");\n\t}\n\n\tconst currentSessionId = ctx.sessionManager.getSessionId();\n\tconst initialStatus = readStatus(location.asyncDir);\n\tconst initialRunId = initialStatus?.runId ?? location.resolvedId ?? path.basename(location.asyncDir);\n\tif (!initialStatus) throw new SubagentRpcError(\"not_found\", `Status file not found for async run '${initialRunId}'.`);\n\tif (!currentSessionId || initialStatus.sessionId !== currentSessionId) {\n\t\tthrow new SubagentRpcError(\"not_found\", `Async run '${initialRunId}' was not found in the active session.`);\n\t}\n\n\tlet status;\n\ttry {\n\t\tstatus = reconcileAsyncRun(location.asyncDir, { resultsDir, kill: options.kill, now: options.now }).status;\n\t} catch (error) {\n\t\tthrow new SubagentRpcError(\"execution_failed\", error instanceof Error ? error.message : String(error));\n\t}\n\tconst runId = status?.runId ?? initialRunId;\n\tif (!status) throw new SubagentRpcError(\"not_found\", `Status file not found for async run '${runId}'.`);\n\tif (status.sessionId !== currentSessionId) {\n\t\tthrow new SubagentRpcError(\"not_found\", `Async run '${runId}' was not found in the active session.`);\n\t}\n\tif (status.state !== \"running\") {\n\t\tthrow new SubagentRpcError(\"invalid_state\", `Async run ${runId} is ${status.state}; stop only supports running async runs.`);\n\t}\n\n\ttry {\n\t\tdeliverStopRequest({\n\t\t\tasyncDir: location.asyncDir,\n\t\t\tpid: status.pid,\n\t\t\tkill: options.kill,\n\t\t\tnow: options.now,\n\t\t\tsource: \"rpc-stop\",\n\t\t});\n\t} catch (error) {\n\t\tthrow new SubagentRpcError(\"execution_failed\", error instanceof Error ? error.message : String(error));\n\t}\n\n\treturn {\n\t\trunId,\n\t\tasyncDir: location.asyncDir,\n\t\tpreviousState: status.state,\n\t\tstate: \"stopping\",\n\t\tmessage: `Stop requested for async run ${runId}.`,\n\t};\n}\n\nasync function handleRequest(\n\trequest: SubagentRpcRequestEnvelope,\n\toptions: RegisterSubagentRpcBridgeOptions,\n): Promise<unknown> {\n\tconst ctx = options.getContext();\n\tif (request.method === \"ping\") return pingData(ctx);\n\tif (!ctx) throw new SubagentRpcError(\"no_active_session\", \"No active extension context for subagent RPC.\");\n\n\tif (request.method === \"spawn\") {\n\t\treturn executeChecked(options, ctx, request.requestId, request.method, spawnParams(request.params));\n\t}\n\tif (request.method === \"status\") {\n\t\treturn executeChecked(options, ctx, request.requestId, request.method, { action: \"status\", ...normalizeTargetParams(request.params, \"status\") });\n\t}\n\tif (request.method === \"interrupt\") {\n\t\treturn executeChecked(options, ctx, request.requestId, request.method, { action: \"interrupt\", ...normalizeTargetParams(request.params, \"interrupt\") });\n\t}\n\tif (request.method === \"stop\") {\n\t\treturn stopAsyncRun(request.params, options, ctx);\n\t}\n\tthrow new SubagentRpcError(\"unsupported_method\", `Unsupported subagent RPC method: ${String(request.method)}`);\n}\n\nfunction parseRequest(raw: unknown): SubagentRpcRequestEnvelope {\n\tif (!isRecord(raw)) throw new SubagentRpcError(\"invalid_request\", \"Subagent RPC request must be an object.\");\n\tconst requestId = assertRequestId(raw.requestId);\n\tif (raw.version !== SUBAGENT_RPC_PROTOCOL_VERSION) {\n\t\tthrow new SubagentRpcError(\"unsupported_version\", `Unsupported subagent RPC version: ${String(raw.version)}.`);\n\t}\n\tif (typeof raw.method !== \"string\" || !(SUBAGENT_RPC_METHODS as readonly string[]).includes(raw.method)) {\n\t\tthrow new SubagentRpcError(\"unsupported_method\", `Unsupported subagent RPC method: ${String(raw.method)}.`);\n\t}\n\treturn {\n\t\tversion: SUBAGENT_RPC_PROTOCOL_VERSION,\n\t\trequestId,\n\t\tmethod: raw.method as SubagentRpcMethod,\n\t\t...(raw.params !== undefined ? { params: raw.params } : {}),\n\t\t...(isRecord(raw.source) ? { source: raw.source as SubagentRpcRequestEnvelope[\"source\"] } : {}),\n\t};\n}\n\nfunction safeReplyRequestId(raw: unknown): string {\n\tif (!isRecord(raw)) return \"unknown\";\n\tconst requestId = raw.requestId;\n\treturn typeof requestId === \"string\" && requestId.trim().length > 0 && !/[\\r\\n]/.test(requestId)\n\t\t? requestId\n\t\t: \"unknown\";\n}\n\nfunction errorReply(raw: unknown, error: unknown): SubagentRpcReplyEnvelope {\n\tconst requestId = safeReplyRequestId(raw);\n\tconst method = isRecord(raw) && typeof raw.method === \"string\" && (SUBAGENT_RPC_METHODS as readonly string[]).includes(raw.method)\n\t\t? raw.method as SubagentRpcMethod\n\t\t: undefined;\n\tconst rpcError = error instanceof SubagentRpcError\n\t\t? error\n\t\t: new SubagentRpcError(\"execution_failed\", error instanceof Error ? error.message : String(error));\n\treturn {\n\t\tversion: SUBAGENT_RPC_PROTOCOL_VERSION,\n\t\trequestId,\n\t\t...(method ? { method } : {}),\n\t\tsuccess: false,\n\t\terror: {\n\t\t\tcode: rpcError.code,\n\t\t\tmessage: rpcError.message,\n\t\t},\n\t};\n}\n\nexport function registerSubagentRpcBridge(options: RegisterSubagentRpcBridgeOptions): {\n\temitReady: (ctx?: ExtensionContext | null) => void;\n\tdispose: () => void;\n} {\n\tconst unsubscribe = options.events.on(SUBAGENT_RPC_REQUEST_EVENT, async (raw) => {\n\t\tlet request: SubagentRpcRequestEnvelope | undefined;\n\t\ttry {\n\t\t\trequest = parseRequest(raw);\n\t\t\tconst data = await handleRequest(request, options);\n\t\t\toptions.events.emit(subagentRpcReplyEvent(request.requestId), {\n\t\t\t\tversion: SUBAGENT_RPC_PROTOCOL_VERSION,\n\t\t\t\trequestId: request.requestId,\n\t\t\t\tmethod: request.method,\n\t\t\t\tsuccess: true,\n\t\t\t\tdata,\n\t\t\t} satisfies SubagentRpcReplyEnvelope);\n\t\t} catch (error) {\n\t\t\tconst reply = errorReply(request ?? raw, error);\n\t\t\toptions.events.emit(subagentRpcReplyEvent(reply.requestId), reply);\n\t\t}\n\t});\n\n\treturn {\n\t\temitReady: (ctx) => {\n\t\t\toptions.events.emit(SUBAGENT_RPC_READY_EVENT, pingData(ctx ?? options.getContext()));\n\t\t},\n\t\tdispose: () => {\n\t\t\tif (typeof unsubscribe === \"function\") unsubscribe();\n\t\t},\n\t};\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/extension/rpc.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport * as path from \"node:path\";\nimport type { AgentToolResult } from \"@earendil-works/pi-agent-core\";\nimport type { ExtensionContext } from \"@earendil-works/pi-coding-agent\";\nimport { Compile } from \"typebox/compile\";\nimport { resolveAsyncRunLocation } from \"../runs/background/async-resume.ts\";\nimport { deliverStopRequest } from \"../runs/background/control-channel.ts\";\nimport { reconcileAsyncRun } from \"../runs/background/stale-run-reconciler.ts\";\nimport type { SubagentParamsLike } from \"../runs/foreground/subagent-executor.ts\";\nimport { type Details, ASYNC_DIR, RESULTS_DIR } from \"../shared/types.ts\";\nimport { readStatus } from \"../shared/utils.ts\";\nimport { SubagentParams } from \"./schemas.ts\";\nimport { validateChainInput } from \"./chain-validation.ts\";\n\nexport const SUBAGENT_RPC_PROTOCOL_VERSION = 1;\nexport const SUBAGENT_RPC_REQUEST_EVENT = \"subagents:rpc:v1:request\";\nexport const SUBAGENT_RPC_READY_EVENT = \"subagents:rpc:v1:ready\";\nexport const SUBAGENT_RPC_REPLY_EVENT_PREFIX = \"subagents:rpc:v1:reply:\";\n\nexport const SUBAGENT_RPC_METHODS = [\"ping\", \"status\", \"spawn\", \"interrupt\", \"stop\"] as const;\nexport type SubagentRpcMethod = typeof SUBAGENT_RPC_METHODS[number];\n\nexport interface SubagentRpcRequestEnvelope {\n\tversion: typeof SUBAGENT_RPC_PROTOCOL_VERSION;\n\trequestId: string;\n\tmethod: SubagentRpcMethod;\n\tparams?: unknown;\n\tsource?: {\n\t\textension?: string;\n\t\t[key: string]: unknown;\n\t};\n}\n\nexport type SubagentRpcReplyEnvelope<T = unknown> = {\n\tversion: typeof SUBAGENT_RPC_PROTOCOL_VERSION;\n\trequestId: string;\n\tmethod?: SubagentRpcMethod;\n\tsuccess: true;\n\tdata: T;\n} | {\n\tversion: typeof SUBAGENT_RPC_PROTOCOL_VERSION;\n\trequestId: string;\n\tmethod?: SubagentRpcMethod;\n\tsuccess: false;\n\terror: {\n\t\tcode: SubagentRpcErrorCode;\n\t\tmessage: string;\n\t};\n};\n\ntype SubagentRpcErrorCode =\n\t| \"invalid_request\"\n\t| \"invalid_params\"\n\t| \"unsupported_version\"\n\t| \"unsupported_method\"\n\t| \"no_active_session\"\n\t| \"execution_failed\"\n\t| \"not_found\"\n\t| \"invalid_state\";\n\ninterface EventBus {\n\ton(event: string, handler: (data: unknown) => void): (() => void) | void;\n\temit(event: string, data: unknown): void;\n}\n\ninterface RegisterSubagentRpcBridgeOptions {\n\tevents: EventBus;\n\tgetContext: () => ExtensionContext | null;\n\texecute: (\n\t\tid: string,\n\t\tparams: SubagentParamsLike,\n\t\tsignal: AbortSignal,\n\t\tonUpdate: ((result: AgentToolResult<Details>) => void) | undefined,\n\t\tctx: ExtensionContext,\n\t) => Promise<AgentToolResult<Details>>;\n\tasyncDirRoot?: string;\n\tresultsDir?: string;\n\tkill?: (pid: number, signal?: NodeJS.Signals | 0) => boolean;\n\tnow?: () => number;\n}\n\nclass SubagentRpcError extends Error {\n\treadonly code: SubagentRpcErrorCode;\n\n\tconstructor(code: SubagentRpcErrorCode, message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"SubagentRpcError\";\n\t\tthis.code = code;\n\t}\n}\n\nconst subagentParamsValidator = Compile(SubagentParams);\n\nexport function subagentRpcReplyEvent(requestId: string): string {\n\treturn `${SUBAGENT_RPC_REPLY_EVENT_PREFIX}${requestId}`;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction assertRequestId(value: unknown): string {\n\tif (typeof value !== \"string\" || value.trim().length === 0 || /[\\r\\n]/.test(value)) {\n\t\tthrow new SubagentRpcError(\"invalid_request\", \"RPC requestId must be a non-empty string without newlines.\");\n\t}\n\treturn value;\n}\n\nfunction assertRecordParams(params: unknown, method: SubagentRpcMethod): Record<string, unknown> {\n\tif (params === undefined) return {};\n\tif (!isRecord(params)) throw new SubagentRpcError(\"invalid_params\", `RPC ${method} params must be an object.`);\n\treturn params;\n}\n\nfunction assertSubagentParams(params: SubagentParamsLike, label: string): void {\n\t// Friendly chain validation first: name the disallowed property, list allowed\n\t// ones, and show a valid example instead of raw TypeBox diagnostics.\n\ttry {\n\t\tvalidateChainInput(params);\n\t} catch (error) {\n\t\tthrow new SubagentRpcError(\"invalid_params\", `${label}: ${error instanceof Error ? error.message : String(error)}`);\n\t}\n\tif (subagentParamsValidator.Check(params)) return;\n\tconst messages = [...subagentParamsValidator.Errors(params)]\n\t\t.slice(0, 4)\n\t\t.map((error) => error.message);\n\tthrow new SubagentRpcError(\"invalid_params\", `${label}: ${messages.join(\"; \") || \"invalid subagent parameters\"}`);\n}\n\nfunction textFromToolResult(result: AgentToolResult<Details>): string {\n\treturn result.content\n\t\t.filter((part): part is { type: \"text\"; text: string } => part.type === \"text\")\n\t\t.map((part) => part.text)\n\t\t.join(\"\\n\");\n}\n\nfunction dataFromToolResult(result: AgentToolResult<Details>): { text: string; details?: Details; isError?: boolean } {\n\treturn {\n\t\ttext: textFromToolResult(result),\n\t\t...(result.details ? { details: result.details } : {}),\n\t\t...(result.isError ? { isError: true } : {}),\n\t};\n}\n\nfunction failIfToolError(result: AgentToolResult<Details>): void {\n\tif (!result.isError) return;\n\tthrow new SubagentRpcError(\"execution_failed\", textFromToolResult(result) || \"Subagent RPC execution failed.\");\n}\n\nfunction normalizeTargetParams(params: unknown, method: SubagentRpcMethod): Pick<SubagentParamsLike, \"id\" | \"runId\" | \"dir\" | \"index\"> {\n\tconst input = assertRecordParams(params, method);\n\tconst output: Pick<SubagentParamsLike, \"id\" | \"runId\" | \"dir\" | \"index\"> = {};\n\tif (input.id !== undefined) output.id = input.id as string;\n\tif (input.runId !== undefined) output.runId = input.runId as string;\n\tif (input.dir !== undefined) output.dir = input.dir as string;\n\tif (input.index !== undefined) output.index = input.index as number;\n\treturn output;\n}\n\nfunction sessionData(ctx: ExtensionContext | null): { cwd?: string; sessionId?: string; sessionFile?: string | null } {\n\tif (!ctx) return {};\n\treturn {\n\t\tcwd: ctx.cwd,\n\t\tsessionId: ctx.sessionManager.getSessionId() ?? undefined,\n\t\tsessionFile: ctx.sessionManager.getSessionFile() ?? null,\n\t};\n}\n\nfunction pingData(ctx: ExtensionContext | null) {\n\treturn {\n\t\tversion: SUBAGENT_RPC_PROTOCOL_VERSION,\n\t\tmethods: [...SUBAGENT_RPC_METHODS],\n\t\tcapabilities: {\n\t\t\tstatus: true,\n\t\t\tasyncSpawn: true,\n\t\t\tinterrupt: true,\n\t\t\tstop: true,\n\t\t},\n\t\tevents: {\n\t\t\tready: SUBAGENT_RPC_READY_EVENT,\n\t\t\trequest: SUBAGENT_RPC_REQUEST_EVENT,\n\t\t\treplyPrefix: SUBAGENT_RPC_REPLY_EVENT_PREFIX,\n\t\t},\n\t\tsession: sessionData(ctx),\n\t};\n}\n\nasync function executeChecked(\n\toptions: RegisterSubagentRpcBridgeOptions,\n\tctx: ExtensionContext,\n\trequestId: string,\n\tmethod: SubagentRpcMethod,\n\tparams: SubagentParamsLike,\n): Promise<{ text: string; details?: Details; isError?: boolean }> {\n\tassertSubagentParams(params, `RPC ${method} params`);\n\tconst controller = new AbortController();\n\tconst result = await options.execute(`rpc-${method}-${requestId}`, params, controller.signal, undefined, ctx);\n\tfailIfToolError(result);\n\treturn dataFromToolResult(result);\n}\n\nfunction spawnParams(params: unknown): SubagentParamsLike {\n\tconst input = assertRecordParams(params, \"spawn\");\n\tif (input.action !== undefined) {\n\t\tthrow new SubagentRpcError(\"invalid_params\", \"RPC spawn does not accept management/control actions. Use status or interrupt RPC methods instead.\");\n\t}\n\tif (input.async === false) {\n\t\tthrow new SubagentRpcError(\"invalid_params\", \"RPC spawn only supports detached async launches; omit async or set async: true.\");\n\t}\n\tif (input.clarify === true) {\n\t\tthrow new SubagentRpcError(\"invalid_params\", \"RPC spawn cannot open the clarify UI; omit clarify or set clarify: false.\");\n\t}\n\treturn { ...(input as SubagentParamsLike), async: true, clarify: false };\n}\n\nfunction stopAsyncRun(\n\tparams: unknown,\n\toptions: RegisterSubagentRpcBridgeOptions,\n\tctx: ExtensionContext,\n): { runId: string; asyncDir: string; previousState: string; state: \"stopping\"; message: string } {\n\tconst target = normalizeTargetParams(params, \"stop\");\n\tassertSubagentParams({ action: \"status\", ...target }, \"RPC stop target params\");\n\tconst asyncDirRoot = options.asyncDirRoot ?? ASYNC_DIR;\n\tconst resultsDir = options.resultsDir ?? RESULTS_DIR;\n\tlet location;\n\ttry {\n\t\tlocation = resolveAsyncRunLocation(target, asyncDirRoot, resultsDir);\n\t} catch (error) {\n\t\tthrow new SubagentRpcError(\"invalid_params\", error instanceof Error ? error.message : String(error));\n\t}\n\tif (!location.asyncDir) {\n\t\tthrow new SubagentRpcError(\"not_found\", \"Async run not found or already completed; stop requires a live async run directory.\");\n\t}\n\n\tconst currentSessionId = ctx.sessionManager.getSessionId();\n\tconst initialStatus = readStatus(location.asyncDir);\n\tconst initialRunId = initialStatus?.runId ?? location.resolvedId ?? path.basename(location.asyncDir);\n\tif (!initialStatus) throw new SubagentRpcError(\"not_found\", `Status file not found for async run '${initialRunId}'.`);\n\tif (!currentSessionId || initialStatus.sessionId !== currentSessionId) {\n\t\tthrow new SubagentRpcError(\"not_found\", `Async run '${initialRunId}' was not found in the active session.`);\n\t}\n\n\tlet status;\n\ttry {\n\t\tstatus = reconcileAsyncRun(location.asyncDir, { resultsDir, kill: options.kill, now: options.now }).status;\n\t} catch (error) {\n\t\tthrow new SubagentRpcError(\"execution_failed\", error instanceof Error ? error.message : String(error));\n\t}\n\tconst runId = status?.runId ?? initialRunId;\n\tif (!status) throw new SubagentRpcError(\"not_found\", `Status file not found for async run '${runId}'.`);\n\tif (status.sessionId !== currentSessionId) {\n\t\tthrow new SubagentRpcError(\"not_found\", `Async run '${runId}' was not found in the active session.`);\n\t}\n\tif (status.state !== \"running\") {\n\t\tthrow new SubagentRpcError(\"invalid_state\", `Async run ${runId} is ${status.state}; stop only supports running async runs.`);\n\t}\n\n\ttry {\n\t\tdeliverStopRequest({\n\t\t\tasyncDir: location.asyncDir,\n\t\t\tpid: status.pid,\n\t\t\tkill: options.kill,\n\t\t\tnow: options.now,\n\t\t\tsource: \"rpc-stop\",\n\t\t});\n\t} catch (error) {\n\t\tthrow new SubagentRpcError(\"execution_failed\", error instanceof Error ? error.message : String(error));\n\t}\n\n\treturn {\n\t\trunId,\n\t\tasyncDir: location.asyncDir,\n\t\tpreviousState: status.state,\n\t\tstate: \"stopping\",\n\t\tmessage: `Stop requested for async run ${runId}.`,\n\t};\n}\n\nasync function handleRequest(\n\trequest: SubagentRpcRequestEnvelope,\n\toptions: RegisterSubagentRpcBridgeOptions,\n): Promise<unknown> {\n\tconst ctx = options.getContext();\n\tif (request.method === \"ping\") return pingData(ctx);\n\tif (!ctx) throw new SubagentRpcError(\"no_active_session\", \"No active extension context for subagent RPC.\");\n\n\tif (request.method === \"spawn\") {\n\t\treturn executeChecked(options, ctx, request.requestId, request.method, spawnParams(request.params));\n\t}\n\tif (request.method === \"status\") {\n\t\treturn executeChecked(options, ctx, request.requestId, request.method, { action: \"status\", ...normalizeTargetParams(request.params, \"status\") });\n\t}\n\tif (request.method === \"interrupt\") {\n\t\treturn executeChecked(options, ctx, request.requestId, request.method, { action: \"interrupt\", ...normalizeTargetParams(request.params, \"interrupt\") });\n\t}\n\tif (request.method === \"stop\") {\n\t\treturn stopAsyncRun(request.params, options, ctx);\n\t}\n\tthrow new SubagentRpcError(\"unsupported_method\", `Unsupported subagent RPC method: ${String(request.method)}`);\n}\n\nfunction parseRequest(raw: unknown): SubagentRpcRequestEnvelope {\n\tif (!isRecord(raw)) throw new SubagentRpcError(\"invalid_request\", \"Subagent RPC request must be an object.\");\n\tconst requestId = assertRequestId(raw.requestId);\n\tif (raw.version !== SUBAGENT_RPC_PROTOCOL_VERSION) {\n\t\tthrow new SubagentRpcError(\"unsupported_version\", `Unsupported subagent RPC version: ${String(raw.version)}.`);\n\t}\n\tif (typeof raw.method !== \"string\" || !(SUBAGENT_RPC_METHODS as readonly string[]).includes(raw.method)) {\n\t\tthrow new SubagentRpcError(\"unsupported_method\", `Unsupported subagent RPC method: ${String(raw.method)}.`);\n\t}\n\treturn {\n\t\tversion: SUBAGENT_RPC_PROTOCOL_VERSION,\n\t\trequestId,\n\t\tmethod: raw.method as SubagentRpcMethod,\n\t\t...(raw.params !== undefined ? { params: raw.params } : {}),\n\t\t...(isRecord(raw.source) ? { source: raw.source as SubagentRpcRequestEnvelope[\"source\"] } : {}),\n\t};\n}\n\nfunction safeReplyRequestId(raw: unknown): string {\n\tif (!isRecord(raw)) return \"unknown\";\n\tconst requestId = raw.requestId;\n\treturn typeof requestId === \"string\" && requestId.trim().length > 0 && !/[\\r\\n]/.test(requestId)\n\t\t? requestId\n\t\t: \"unknown\";\n}\n\nfunction errorReply(raw: unknown, error: unknown): SubagentRpcReplyEnvelope {\n\tconst requestId = safeReplyRequestId(raw);\n\tconst method = isRecord(raw) && typeof raw.method === \"string\" && (SUBAGENT_RPC_METHODS as readonly string[]).includes(raw.method)\n\t\t? raw.method as SubagentRpcMethod\n\t\t: undefined;\n\tconst rpcError = error instanceof SubagentRpcError\n\t\t? error\n\t\t: new SubagentRpcError(\"execution_failed\", error instanceof Error ? error.message : String(error));\n\treturn {\n\t\tversion: SUBAGENT_RPC_PROTOCOL_VERSION,\n\t\trequestId,\n\t\t...(method ? { method } : {}),\n\t\tsuccess: false,\n\t\terror: {\n\t\t\tcode: rpcError.code,\n\t\t\tmessage: rpcError.message,\n\t\t},\n\t};\n}\n\nexport function registerSubagentRpcBridge(options: RegisterSubagentRpcBridgeOptions): {\n\temitReady: (ctx?: ExtensionContext | null) => void;\n\tdispose: () => void;\n} {\n\tconst unsubscribe = options.events.on(SUBAGENT_RPC_REQUEST_EVENT, async (raw) => {\n\t\tlet request: SubagentRpcRequestEnvelope | undefined;\n\t\ttry {\n\t\t\trequest = parseRequest(raw);\n\t\t\tconst data = await handleRequest(request, options);\n\t\t\toptions.events.emit(subagentRpcReplyEvent(request.requestId), {\n\t\t\t\tversion: SUBAGENT_RPC_PROTOCOL_VERSION,\n\t\t\t\trequestId: request.requestId,\n\t\t\t\tmethod: request.method,\n\t\t\t\tsuccess: true,\n\t\t\t\tdata,\n\t\t\t} satisfies SubagentRpcReplyEnvelope);\n\t\t} catch (error) {\n\t\t\tconst reply = errorReply(request ?? raw, error);\n\t\t\toptions.events.emit(subagentRpcReplyEvent(reply.requestId), reply);\n\t\t}\n\t});\n\n\treturn {\n\t\temitReady: (ctx) => {\n\t\t\toptions.events.emit(SUBAGENT_RPC_READY_EVENT, pingData(ctx ?? options.getContext()));\n\t\t},\n\t\tdispose: () => {\n\t\t\tif (typeof unsubscribe === \"function\") unsubscribe();\n\t\t},\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/extension/rpc.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAE/E,OAAO,EAAgB,SAAS,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,0BAA0B,GAAG,0BAA0B,CAAC;AACrE,MAAM,CAAC,MAAM,wBAAwB,GAAG,wBAAwB,CAAC;AACjE,MAAM,CAAC,MAAM,+BAA+B,GAAG,yBAAyB,CAAC;AAEzE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAU,CAAC;AA8D9F,MAAM,gBAAiB,SAAQ,KAAK;IAC1B,IAAI,CAAuB;IAEpC,YAAY,IAA0B,EAAE,OAAe,EAAE;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAAA,CACjB;CACD;AAED,MAAM,uBAAuB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAExD,MAAM,UAAU,qBAAqB,CAAC,SAAiB,EAAU;IAChE,OAAO,GAAG,+BAA+B,GAAG,SAAS,EAAE,CAAC;AAAA,CACxD;AAED,SAAS,QAAQ,CAAC,KAAc,EAAoC;IACnE,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAAA,CAC5E;AAED,SAAS,eAAe,CAAC,KAAc,EAAU;IAChD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACpF,MAAM,IAAI,gBAAgB,CAAC,iBAAiB,EAAE,4DAA4D,CAAC,CAAC;IAC7G,CAAC;IACD,OAAO,KAAK,CAAC;AAAA,CACb;AAED,SAAS,kBAAkB,CAAC,MAAe,EAAE,MAAyB,EAA2B;IAChG,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACpC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,OAAO,MAAM,4BAA4B,CAAC,CAAC;IAC/G,OAAO,MAAM,CAAC;AAAA,CACd;AAED,SAAS,oBAAoB,CAAC,MAA0B,EAAE,KAAa,EAAQ;IAC9E,8EAA8E;IAC9E,qEAAqE;IACrE,IAAI,CAAC;QACJ,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,GAAG,KAAK,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrH,CAAC;IACD,IAAI,uBAAuB,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO;IAClD,MAAM,QAAQ,GAAG,CAAC,GAAG,uBAAuB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAC1D,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,GAAG,KAAK,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,6BAA6B,EAAE,CAAC,CAAC;AAAA,CAClH;AAED,SAAS,kBAAkB,CAAC,MAAgC,EAAU;IACrE,OAAO,MAAM,CAAC,OAAO;SACnB,MAAM,CAAC,CAAC,IAAI,EAA0C,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;SAC9E,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;SACxB,IAAI,CAAC,IAAI,CAAC,CAAC;AAAA,CACb;AAED,SAAS,kBAAkB,CAAC,MAAgC,EAA0D;IACrH,OAAO;QACN,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC;QAChC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,CAAC;AAAA,CACF;AAED,SAAS,eAAe,CAAC,MAAgC,EAAQ;IAChE,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO;IAC5B,MAAM,IAAI,gBAAgB,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,MAAM,CAAC,IAAI,gCAAgC,CAAC,CAAC;AAAA,CAC/G;AAED,SAAS,qBAAqB,CAAC,MAAe,EAAE,MAAyB,EAA8D;IACtI,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,MAAM,GAA+D,EAAE,CAAC;IAC9E,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS;QAAE,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,EAAY,CAAC;IAC3D,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAe,CAAC;IACpE,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS;QAAE,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,GAAa,CAAC;IAC9D,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAe,CAAC;IACpE,OAAO,MAAM,CAAC;AAAA,CACd;AAED,SAAS,WAAW,CAAC,GAA4B,EAAqE;IACrH,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,OAAO;QACN,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,SAAS,EAAE,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,SAAS;QACzD,WAAW,EAAE,GAAG,CAAC,cAAc,CAAC,cAAc,EAAE,IAAI,IAAI;KACxD,CAAC;AAAA,CACF;AAED,SAAS,QAAQ,CAAC,GAA4B,EAAE;IAC/C,OAAO;QACN,OAAO,EAAE,6BAA6B;QACtC,OAAO,EAAE,CAAC,GAAG,oBAAoB,CAAC;QAClC,YAAY,EAAE;YACb,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,IAAI;SACV;QACD,MAAM,EAAE;YACP,KAAK,EAAE,wBAAwB;YAC/B,OAAO,EAAE,0BAA0B;YACnC,WAAW,EAAE,+BAA+B;SAC5C;QACD,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC;KACzB,CAAC;AAAA,CACF;AAED,KAAK,UAAU,cAAc,CAC5B,OAAyC,EACzC,GAAqB,EACrB,SAAiB,EACjB,MAAyB,EACzB,MAA0B,EACwC;IAClE,oBAAoB,CAAC,MAAM,EAAE,OAAO,MAAM,SAAS,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,MAAM,IAAI,SAAS,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IAC9G,eAAe,CAAC,MAAM,CAAC,CAAC;IACxB,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAAA,CAClC;AAED,SAAS,WAAW,CAAC,MAAe,EAAsB;IACzD,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,oGAAoG,CAAC,CAAC;IACpJ,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QAC3B,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,iFAAiF,CAAC,CAAC;IACjI,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC5B,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,2EAA2E,CAAC,CAAC;IAC3H,CAAC;IACD,OAAO,EAAE,GAAI,KAA4B,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAAA,CACzE;AAED,SAAS,YAAY,CACpB,MAAe,EACf,OAAyC,EACzC,GAAqB,EAC4E;IACjG,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,oBAAoB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,EAAE,wBAAwB,CAAC,CAAC;IAChF,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,SAAS,CAAC;IACvD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,WAAW,CAAC;IACrD,IAAI,QAAQ,CAAC;IACb,IAAI,CAAC;QACJ,QAAQ,GAAG,uBAAuB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtG,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACxB,MAAM,IAAI,gBAAgB,CAAC,WAAW,EAAE,qFAAqF,CAAC,CAAC;IAChI,CAAC;IAED,MAAM,gBAAgB,GAAG,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;IAC3D,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,aAAa,EAAE,KAAK,IAAI,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrG,IAAI,CAAC,aAAa;QAAE,MAAM,IAAI,gBAAgB,CAAC,WAAW,EAAE,wCAAwC,YAAY,IAAI,CAAC,CAAC;IACtH,IAAI,CAAC,gBAAgB,IAAI,aAAa,CAAC,SAAS,KAAK,gBAAgB,EAAE,CAAC;QACvE,MAAM,IAAI,gBAAgB,CAAC,WAAW,EAAE,cAAc,YAAY,wCAAwC,CAAC,CAAC;IAC7G,CAAC;IAED,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACJ,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;IAC5G,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,gBAAgB,CAAC,kBAAkB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACxG,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,YAAY,CAAC;IAC5C,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,gBAAgB,CAAC,WAAW,EAAE,wCAAwC,KAAK,IAAI,CAAC,CAAC;IACxG,IAAI,MAAM,CAAC,SAAS,KAAK,gBAAgB,EAAE,CAAC;QAC3C,MAAM,IAAI,gBAAgB,CAAC,WAAW,EAAE,cAAc,KAAK,wCAAwC,CAAC,CAAC;IACtG,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,gBAAgB,CAAC,eAAe,EAAE,aAAa,KAAK,OAAO,MAAM,CAAC,KAAK,0CAA0C,CAAC,CAAC;IAC9H,CAAC;IAED,IAAI,CAAC;QACJ,kBAAkB,CAAC;YAClB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,MAAM,EAAE,UAAU;SAClB,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,gBAAgB,CAAC,kBAAkB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACxG,CAAC;IAED,OAAO;QACN,KAAK;QACL,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,aAAa,EAAE,MAAM,CAAC,KAAK;QAC3B,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,gCAAgC,KAAK,GAAG;KACjD,CAAC;AAAA,CACF;AAED,KAAK,UAAU,aAAa,CAC3B,OAAmC,EACnC,OAAyC,EACtB;IACnB,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IACjC,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;IACpD,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,gBAAgB,CAAC,mBAAmB,EAAE,+CAA+C,CAAC,CAAC;IAE3G,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAChC,OAAO,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACrG,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,qBAAqB,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;IAClJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,qBAAqB,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IACxJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC/B,OAAO,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,IAAI,gBAAgB,CAAC,oBAAoB,EAAE,oCAAoC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAAA,CAC/G;AAED,SAAS,YAAY,CAAC,GAAY,EAA8B;IAC/D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,gBAAgB,CAAC,iBAAiB,EAAE,yCAAyC,CAAC,CAAC;IAC7G,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACjD,IAAI,GAAG,CAAC,OAAO,KAAK,6BAA6B,EAAE,CAAC;QACnD,MAAM,IAAI,gBAAgB,CAAC,qBAAqB,EAAE,qCAAqC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChH,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAE,oBAA0C,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACzG,MAAM,IAAI,gBAAgB,CAAC,oBAAoB,EAAE,oCAAoC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7G,CAAC;IACD,OAAO;QACN,OAAO,EAAE,6BAA6B;QACtC,SAAS;QACT,MAAM,EAAE,GAAG,CAAC,MAA2B;QACvC,GAAG,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAA8C,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/F,CAAC;AAAA,CACF;AAED,SAAS,kBAAkB,CAAC,GAAY,EAAU;IACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IACrC,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;IAChC,OAAO,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;QAC/F,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,SAAS,CAAC;AAAA,CACb;AAED,SAAS,UAAU,CAAC,GAAY,EAAE,KAAc,EAA4B;IAC3E,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAK,oBAA0C,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;QACjI,CAAC,CAAC,GAAG,CAAC,MAA2B;QACjC,CAAC,CAAC,SAAS,CAAC;IACb,MAAM,QAAQ,GAAG,KAAK,YAAY,gBAAgB;QACjD,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAI,gBAAgB,CAAC,kBAAkB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACpG,OAAO;QACN,OAAO,EAAE,6BAA6B;QACtC,SAAS;QACT,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,KAAK;QACd,KAAK,EAAE;YACN,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;SACzB;KACD,CAAC;AAAA,CACF;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAyC,EAGjF;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,0BAA0B,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;QAChF,IAAI,OAA+C,CAAC;QACpD,IAAI,CAAC;YACJ,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACnD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBAC7D,OAAO,EAAE,6BAA6B;gBACtC,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,OAAO,EAAE,IAAI;gBACb,IAAI;aAC+B,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;YAChD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC;IAAA,CACD,CAAC,CAAC;IAEH,OAAO;QACN,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAAA,CACrF;QACD,OAAO,EAAE,GAAG,EAAE,CAAC;YACd,IAAI,OAAO,WAAW,KAAK,UAAU;gBAAE,WAAW,EAAE,CAAC;QAAA,CACrD;KACD,CAAC;AAAA,CACF","sourcesContent":["// @ts-nocheck\nimport * as path from \"node:path\";\nimport type { AgentToolResult } from \"@ashx-j/lunr-agent\";\nimport type { ExtensionContext } from \"@ashx-j/lunr\";\nimport { Compile } from \"typebox/compile\";\nimport { resolveAsyncRunLocation } from \"../runs/background/async-resume.ts\";\nimport { deliverStopRequest } from \"../runs/background/control-channel.ts\";\nimport { reconcileAsyncRun } from \"../runs/background/stale-run-reconciler.ts\";\nimport type { SubagentParamsLike } from \"../runs/foreground/subagent-executor.ts\";\nimport { type Details, ASYNC_DIR, RESULTS_DIR } from \"../shared/types.ts\";\nimport { readStatus } from \"../shared/utils.ts\";\nimport { SubagentParams } from \"./schemas.ts\";\nimport { validateChainInput } from \"./chain-validation.ts\";\n\nexport const SUBAGENT_RPC_PROTOCOL_VERSION = 1;\nexport const SUBAGENT_RPC_REQUEST_EVENT = \"subagents:rpc:v1:request\";\nexport const SUBAGENT_RPC_READY_EVENT = \"subagents:rpc:v1:ready\";\nexport const SUBAGENT_RPC_REPLY_EVENT_PREFIX = \"subagents:rpc:v1:reply:\";\n\nexport const SUBAGENT_RPC_METHODS = [\"ping\", \"status\", \"spawn\", \"interrupt\", \"stop\"] as const;\nexport type SubagentRpcMethod = typeof SUBAGENT_RPC_METHODS[number];\n\nexport interface SubagentRpcRequestEnvelope {\n\tversion: typeof SUBAGENT_RPC_PROTOCOL_VERSION;\n\trequestId: string;\n\tmethod: SubagentRpcMethod;\n\tparams?: unknown;\n\tsource?: {\n\t\textension?: string;\n\t\t[key: string]: unknown;\n\t};\n}\n\nexport type SubagentRpcReplyEnvelope<T = unknown> = {\n\tversion: typeof SUBAGENT_RPC_PROTOCOL_VERSION;\n\trequestId: string;\n\tmethod?: SubagentRpcMethod;\n\tsuccess: true;\n\tdata: T;\n} | {\n\tversion: typeof SUBAGENT_RPC_PROTOCOL_VERSION;\n\trequestId: string;\n\tmethod?: SubagentRpcMethod;\n\tsuccess: false;\n\terror: {\n\t\tcode: SubagentRpcErrorCode;\n\t\tmessage: string;\n\t};\n};\n\ntype SubagentRpcErrorCode =\n\t| \"invalid_request\"\n\t| \"invalid_params\"\n\t| \"unsupported_version\"\n\t| \"unsupported_method\"\n\t| \"no_active_session\"\n\t| \"execution_failed\"\n\t| \"not_found\"\n\t| \"invalid_state\";\n\ninterface EventBus {\n\ton(event: string, handler: (data: unknown) => void): (() => void) | void;\n\temit(event: string, data: unknown): void;\n}\n\ninterface RegisterSubagentRpcBridgeOptions {\n\tevents: EventBus;\n\tgetContext: () => ExtensionContext | null;\n\texecute: (\n\t\tid: string,\n\t\tparams: SubagentParamsLike,\n\t\tsignal: AbortSignal,\n\t\tonUpdate: ((result: AgentToolResult<Details>) => void) | undefined,\n\t\tctx: ExtensionContext,\n\t) => Promise<AgentToolResult<Details>>;\n\tasyncDirRoot?: string;\n\tresultsDir?: string;\n\tkill?: (pid: number, signal?: NodeJS.Signals | 0) => boolean;\n\tnow?: () => number;\n}\n\nclass SubagentRpcError extends Error {\n\treadonly code: SubagentRpcErrorCode;\n\n\tconstructor(code: SubagentRpcErrorCode, message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"SubagentRpcError\";\n\t\tthis.code = code;\n\t}\n}\n\nconst subagentParamsValidator = Compile(SubagentParams);\n\nexport function subagentRpcReplyEvent(requestId: string): string {\n\treturn `${SUBAGENT_RPC_REPLY_EVENT_PREFIX}${requestId}`;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction assertRequestId(value: unknown): string {\n\tif (typeof value !== \"string\" || value.trim().length === 0 || /[\\r\\n]/.test(value)) {\n\t\tthrow new SubagentRpcError(\"invalid_request\", \"RPC requestId must be a non-empty string without newlines.\");\n\t}\n\treturn value;\n}\n\nfunction assertRecordParams(params: unknown, method: SubagentRpcMethod): Record<string, unknown> {\n\tif (params === undefined) return {};\n\tif (!isRecord(params)) throw new SubagentRpcError(\"invalid_params\", `RPC ${method} params must be an object.`);\n\treturn params;\n}\n\nfunction assertSubagentParams(params: SubagentParamsLike, label: string): void {\n\t// Friendly chain validation first: name the disallowed property, list allowed\n\t// ones, and show a valid example instead of raw TypeBox diagnostics.\n\ttry {\n\t\tvalidateChainInput(params);\n\t} catch (error) {\n\t\tthrow new SubagentRpcError(\"invalid_params\", `${label}: ${error instanceof Error ? error.message : String(error)}`);\n\t}\n\tif (subagentParamsValidator.Check(params)) return;\n\tconst messages = [...subagentParamsValidator.Errors(params)]\n\t\t.slice(0, 4)\n\t\t.map((error) => error.message);\n\tthrow new SubagentRpcError(\"invalid_params\", `${label}: ${messages.join(\"; \") || \"invalid subagent parameters\"}`);\n}\n\nfunction textFromToolResult(result: AgentToolResult<Details>): string {\n\treturn result.content\n\t\t.filter((part): part is { type: \"text\"; text: string } => part.type === \"text\")\n\t\t.map((part) => part.text)\n\t\t.join(\"\\n\");\n}\n\nfunction dataFromToolResult(result: AgentToolResult<Details>): { text: string; details?: Details; isError?: boolean } {\n\treturn {\n\t\ttext: textFromToolResult(result),\n\t\t...(result.details ? { details: result.details } : {}),\n\t\t...(result.isError ? { isError: true } : {}),\n\t};\n}\n\nfunction failIfToolError(result: AgentToolResult<Details>): void {\n\tif (!result.isError) return;\n\tthrow new SubagentRpcError(\"execution_failed\", textFromToolResult(result) || \"Subagent RPC execution failed.\");\n}\n\nfunction normalizeTargetParams(params: unknown, method: SubagentRpcMethod): Pick<SubagentParamsLike, \"id\" | \"runId\" | \"dir\" | \"index\"> {\n\tconst input = assertRecordParams(params, method);\n\tconst output: Pick<SubagentParamsLike, \"id\" | \"runId\" | \"dir\" | \"index\"> = {};\n\tif (input.id !== undefined) output.id = input.id as string;\n\tif (input.runId !== undefined) output.runId = input.runId as string;\n\tif (input.dir !== undefined) output.dir = input.dir as string;\n\tif (input.index !== undefined) output.index = input.index as number;\n\treturn output;\n}\n\nfunction sessionData(ctx: ExtensionContext | null): { cwd?: string; sessionId?: string; sessionFile?: string | null } {\n\tif (!ctx) return {};\n\treturn {\n\t\tcwd: ctx.cwd,\n\t\tsessionId: ctx.sessionManager.getSessionId() ?? undefined,\n\t\tsessionFile: ctx.sessionManager.getSessionFile() ?? null,\n\t};\n}\n\nfunction pingData(ctx: ExtensionContext | null) {\n\treturn {\n\t\tversion: SUBAGENT_RPC_PROTOCOL_VERSION,\n\t\tmethods: [...SUBAGENT_RPC_METHODS],\n\t\tcapabilities: {\n\t\t\tstatus: true,\n\t\t\tasyncSpawn: true,\n\t\t\tinterrupt: true,\n\t\t\tstop: true,\n\t\t},\n\t\tevents: {\n\t\t\tready: SUBAGENT_RPC_READY_EVENT,\n\t\t\trequest: SUBAGENT_RPC_REQUEST_EVENT,\n\t\t\treplyPrefix: SUBAGENT_RPC_REPLY_EVENT_PREFIX,\n\t\t},\n\t\tsession: sessionData(ctx),\n\t};\n}\n\nasync function executeChecked(\n\toptions: RegisterSubagentRpcBridgeOptions,\n\tctx: ExtensionContext,\n\trequestId: string,\n\tmethod: SubagentRpcMethod,\n\tparams: SubagentParamsLike,\n): Promise<{ text: string; details?: Details; isError?: boolean }> {\n\tassertSubagentParams(params, `RPC ${method} params`);\n\tconst controller = new AbortController();\n\tconst result = await options.execute(`rpc-${method}-${requestId}`, params, controller.signal, undefined, ctx);\n\tfailIfToolError(result);\n\treturn dataFromToolResult(result);\n}\n\nfunction spawnParams(params: unknown): SubagentParamsLike {\n\tconst input = assertRecordParams(params, \"spawn\");\n\tif (input.action !== undefined) {\n\t\tthrow new SubagentRpcError(\"invalid_params\", \"RPC spawn does not accept management/control actions. Use status or interrupt RPC methods instead.\");\n\t}\n\tif (input.async === false) {\n\t\tthrow new SubagentRpcError(\"invalid_params\", \"RPC spawn only supports detached async launches; omit async or set async: true.\");\n\t}\n\tif (input.clarify === true) {\n\t\tthrow new SubagentRpcError(\"invalid_params\", \"RPC spawn cannot open the clarify UI; omit clarify or set clarify: false.\");\n\t}\n\treturn { ...(input as SubagentParamsLike), async: true, clarify: false };\n}\n\nfunction stopAsyncRun(\n\tparams: unknown,\n\toptions: RegisterSubagentRpcBridgeOptions,\n\tctx: ExtensionContext,\n): { runId: string; asyncDir: string; previousState: string; state: \"stopping\"; message: string } {\n\tconst target = normalizeTargetParams(params, \"stop\");\n\tassertSubagentParams({ action: \"status\", ...target }, \"RPC stop target params\");\n\tconst asyncDirRoot = options.asyncDirRoot ?? ASYNC_DIR;\n\tconst resultsDir = options.resultsDir ?? RESULTS_DIR;\n\tlet location;\n\ttry {\n\t\tlocation = resolveAsyncRunLocation(target, asyncDirRoot, resultsDir);\n\t} catch (error) {\n\t\tthrow new SubagentRpcError(\"invalid_params\", error instanceof Error ? error.message : String(error));\n\t}\n\tif (!location.asyncDir) {\n\t\tthrow new SubagentRpcError(\"not_found\", \"Async run not found or already completed; stop requires a live async run directory.\");\n\t}\n\n\tconst currentSessionId = ctx.sessionManager.getSessionId();\n\tconst initialStatus = readStatus(location.asyncDir);\n\tconst initialRunId = initialStatus?.runId ?? location.resolvedId ?? path.basename(location.asyncDir);\n\tif (!initialStatus) throw new SubagentRpcError(\"not_found\", `Status file not found for async run '${initialRunId}'.`);\n\tif (!currentSessionId || initialStatus.sessionId !== currentSessionId) {\n\t\tthrow new SubagentRpcError(\"not_found\", `Async run '${initialRunId}' was not found in the active session.`);\n\t}\n\n\tlet status;\n\ttry {\n\t\tstatus = reconcileAsyncRun(location.asyncDir, { resultsDir, kill: options.kill, now: options.now }).status;\n\t} catch (error) {\n\t\tthrow new SubagentRpcError(\"execution_failed\", error instanceof Error ? error.message : String(error));\n\t}\n\tconst runId = status?.runId ?? initialRunId;\n\tif (!status) throw new SubagentRpcError(\"not_found\", `Status file not found for async run '${runId}'.`);\n\tif (status.sessionId !== currentSessionId) {\n\t\tthrow new SubagentRpcError(\"not_found\", `Async run '${runId}' was not found in the active session.`);\n\t}\n\tif (status.state !== \"running\") {\n\t\tthrow new SubagentRpcError(\"invalid_state\", `Async run ${runId} is ${status.state}; stop only supports running async runs.`);\n\t}\n\n\ttry {\n\t\tdeliverStopRequest({\n\t\t\tasyncDir: location.asyncDir,\n\t\t\tpid: status.pid,\n\t\t\tkill: options.kill,\n\t\t\tnow: options.now,\n\t\t\tsource: \"rpc-stop\",\n\t\t});\n\t} catch (error) {\n\t\tthrow new SubagentRpcError(\"execution_failed\", error instanceof Error ? error.message : String(error));\n\t}\n\n\treturn {\n\t\trunId,\n\t\tasyncDir: location.asyncDir,\n\t\tpreviousState: status.state,\n\t\tstate: \"stopping\",\n\t\tmessage: `Stop requested for async run ${runId}.`,\n\t};\n}\n\nasync function handleRequest(\n\trequest: SubagentRpcRequestEnvelope,\n\toptions: RegisterSubagentRpcBridgeOptions,\n): Promise<unknown> {\n\tconst ctx = options.getContext();\n\tif (request.method === \"ping\") return pingData(ctx);\n\tif (!ctx) throw new SubagentRpcError(\"no_active_session\", \"No active extension context for subagent RPC.\");\n\n\tif (request.method === \"spawn\") {\n\t\treturn executeChecked(options, ctx, request.requestId, request.method, spawnParams(request.params));\n\t}\n\tif (request.method === \"status\") {\n\t\treturn executeChecked(options, ctx, request.requestId, request.method, { action: \"status\", ...normalizeTargetParams(request.params, \"status\") });\n\t}\n\tif (request.method === \"interrupt\") {\n\t\treturn executeChecked(options, ctx, request.requestId, request.method, { action: \"interrupt\", ...normalizeTargetParams(request.params, \"interrupt\") });\n\t}\n\tif (request.method === \"stop\") {\n\t\treturn stopAsyncRun(request.params, options, ctx);\n\t}\n\tthrow new SubagentRpcError(\"unsupported_method\", `Unsupported subagent RPC method: ${String(request.method)}`);\n}\n\nfunction parseRequest(raw: unknown): SubagentRpcRequestEnvelope {\n\tif (!isRecord(raw)) throw new SubagentRpcError(\"invalid_request\", \"Subagent RPC request must be an object.\");\n\tconst requestId = assertRequestId(raw.requestId);\n\tif (raw.version !== SUBAGENT_RPC_PROTOCOL_VERSION) {\n\t\tthrow new SubagentRpcError(\"unsupported_version\", `Unsupported subagent RPC version: ${String(raw.version)}.`);\n\t}\n\tif (typeof raw.method !== \"string\" || !(SUBAGENT_RPC_METHODS as readonly string[]).includes(raw.method)) {\n\t\tthrow new SubagentRpcError(\"unsupported_method\", `Unsupported subagent RPC method: ${String(raw.method)}.`);\n\t}\n\treturn {\n\t\tversion: SUBAGENT_RPC_PROTOCOL_VERSION,\n\t\trequestId,\n\t\tmethod: raw.method as SubagentRpcMethod,\n\t\t...(raw.params !== undefined ? { params: raw.params } : {}),\n\t\t...(isRecord(raw.source) ? { source: raw.source as SubagentRpcRequestEnvelope[\"source\"] } : {}),\n\t};\n}\n\nfunction safeReplyRequestId(raw: unknown): string {\n\tif (!isRecord(raw)) return \"unknown\";\n\tconst requestId = raw.requestId;\n\treturn typeof requestId === \"string\" && requestId.trim().length > 0 && !/[\\r\\n]/.test(requestId)\n\t\t? requestId\n\t\t: \"unknown\";\n}\n\nfunction errorReply(raw: unknown, error: unknown): SubagentRpcReplyEnvelope {\n\tconst requestId = safeReplyRequestId(raw);\n\tconst method = isRecord(raw) && typeof raw.method === \"string\" && (SUBAGENT_RPC_METHODS as readonly string[]).includes(raw.method)\n\t\t? raw.method as SubagentRpcMethod\n\t\t: undefined;\n\tconst rpcError = error instanceof SubagentRpcError\n\t\t? error\n\t\t: new SubagentRpcError(\"execution_failed\", error instanceof Error ? error.message : String(error));\n\treturn {\n\t\tversion: SUBAGENT_RPC_PROTOCOL_VERSION,\n\t\trequestId,\n\t\t...(method ? { method } : {}),\n\t\tsuccess: false,\n\t\terror: {\n\t\t\tcode: rpcError.code,\n\t\t\tmessage: rpcError.message,\n\t\t},\n\t};\n}\n\nexport function registerSubagentRpcBridge(options: RegisterSubagentRpcBridgeOptions): {\n\temitReady: (ctx?: ExtensionContext | null) => void;\n\tdispose: () => void;\n} {\n\tconst unsubscribe = options.events.on(SUBAGENT_RPC_REQUEST_EVENT, async (raw) => {\n\t\tlet request: SubagentRpcRequestEnvelope | undefined;\n\t\ttry {\n\t\t\trequest = parseRequest(raw);\n\t\t\tconst data = await handleRequest(request, options);\n\t\t\toptions.events.emit(subagentRpcReplyEvent(request.requestId), {\n\t\t\t\tversion: SUBAGENT_RPC_PROTOCOL_VERSION,\n\t\t\t\trequestId: request.requestId,\n\t\t\t\tmethod: request.method,\n\t\t\t\tsuccess: true,\n\t\t\t\tdata,\n\t\t\t} satisfies SubagentRpcReplyEnvelope);\n\t\t} catch (error) {\n\t\t\tconst reply = errorReply(request ?? raw, error);\n\t\t\toptions.events.emit(subagentRpcReplyEvent(reply.requestId), reply);\n\t\t}\n\t});\n\n\treturn {\n\t\temitReady: (ctx) => {\n\t\t\toptions.events.emit(SUBAGENT_RPC_READY_EVENT, pingData(ctx ?? options.getContext()));\n\t\t},\n\t\tdispose: () => {\n\t\t\tif (typeof unsubscribe === \"function\") unsubscribe();\n\t\t},\n\t};\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ExtensionAPI } from "@
|
|
1
|
+
import type { ExtensionAPI } from "@ashx-j/lunr";
|
|
2
2
|
import type { SteeringNotice, SubagentState } from "../shared/types.ts";
|
|
3
3
|
export declare const SUBAGENT_STEERING_MESSAGE_TYPE = "subagent_steering_notice";
|
|
4
4
|
export interface SubagentSteeringMessageDetails extends SteeringNotice {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"steering-notices.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/extension/steering-notices.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExE,eAAO,MAAM,8BAA8B,6BAA6B,CAAC;AAEzE,MAAM,WAAW,8BAA+B,SAAQ,cAAc;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,8BAA8B,EAAE,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC,GAAG,MAAM,CAOvI;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IACnD,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IACtC,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,8BAA8B,CAAC;CACxC,GAAG,IAAI,CAUP","sourcesContent":["// @ts-nocheck\nimport type { ExtensionAPI } from \"@
|
|
1
|
+
{"version":3,"file":"steering-notices.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/extension/steering-notices.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExE,eAAO,MAAM,8BAA8B,6BAA6B,CAAC;AAEzE,MAAM,WAAW,8BAA+B,SAAQ,cAAc;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,8BAA8B,EAAE,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC,GAAG,MAAM,CAOvI;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IACnD,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IACtC,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,8BAA8B,CAAC;CACxC,GAAG,IAAI,CAUP","sourcesContent":["// @ts-nocheck\nimport type { ExtensionAPI } from \"@ashx-j/lunr\";\nimport type { SteeringNotice, SubagentState } from \"../shared/types.ts\";\n\nexport const SUBAGENT_STEERING_MESSAGE_TYPE = \"subagent_steering_notice\";\n\nexport interface SubagentSteeringMessageDetails extends SteeringNotice {\n\tsource?: \"async\";\n\tasyncDir?: string;\n\tnoticeText?: string;\n}\n\nexport function formatSteeringNotice(details: Pick<SubagentSteeringMessageDetails, \"runId\" | \"requestId\" | \"state\" | \"message\">): string {\n\treturn [\n\t\t`Subagent steering ${details.state}: ${details.runId}`,\n\t\t`Request: ${details.requestId}`,\n\t\tdetails.message,\n\t\t\"Inspect the run status before sending another correction.\",\n\t].join(\"\\n\");\n}\n\nexport function handleSubagentSteeringNotice(input: {\n\tpi: Pick<ExtensionAPI, \"sendMessage\">;\n\tstate: SubagentState;\n\tdetails: SubagentSteeringMessageDetails;\n}): void {\n\tif (!input.details || (input.details.state !== \"failed\" && input.details.state !== \"partial\" && input.details.state !== \"recovered\")) return;\n\tif (!input.state.currentSessionId || input.details.currentSessionId !== input.state.currentSessionId) return;\n\tconst noticeText = input.details.noticeText ?? formatSteeringNotice(input.details);\n\tinput.pi.sendMessage({\n\t\tcustomType: SUBAGENT_STEERING_MESSAGE_TYPE,\n\t\tcontent: noticeText,\n\t\tdisplay: true,\n\t\tdetails: { ...input.details, noticeText },\n\t}, { triggerTurn: true });\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"steering-notices.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/extension/steering-notices.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,8BAA8B,GAAG,0BAA0B,CAAC;AAQzE,MAAM,UAAU,oBAAoB,CAAC,OAA0F,EAAU;IACxI,OAAO;QACN,qBAAqB,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,EAAE;QACtD,YAAY,OAAO,CAAC,SAAS,EAAE;QAC/B,OAAO,CAAC,OAAO;QACf,2DAA2D;KAC3D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAAA,CACb;AAED,MAAM,UAAU,4BAA4B,CAAC,KAI5C,EAAQ;IACR,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,WAAW,CAAC;QAAE,OAAO;IAC7I,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,KAAK,KAAK,CAAC,KAAK,CAAC,gBAAgB;QAAE,OAAO;IAC7G,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnF,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC;QACpB,UAAU,EAAE,8BAA8B;QAC1C,OAAO,EAAE,UAAU;QACnB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE;KACzC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AAAA,CAC1B","sourcesContent":["// @ts-nocheck\nimport type { ExtensionAPI } from \"@
|
|
1
|
+
{"version":3,"file":"steering-notices.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/extension/steering-notices.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,8BAA8B,GAAG,0BAA0B,CAAC;AAQzE,MAAM,UAAU,oBAAoB,CAAC,OAA0F,EAAU;IACxI,OAAO;QACN,qBAAqB,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,EAAE;QACtD,YAAY,OAAO,CAAC,SAAS,EAAE;QAC/B,OAAO,CAAC,OAAO;QACf,2DAA2D;KAC3D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAAA,CACb;AAED,MAAM,UAAU,4BAA4B,CAAC,KAI5C,EAAQ;IACR,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,WAAW,CAAC;QAAE,OAAO;IAC7I,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,KAAK,KAAK,CAAC,KAAK,CAAC,gBAAgB;QAAE,OAAO;IAC7G,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnF,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC;QACpB,UAAU,EAAE,8BAA8B;QAC1C,OAAO,EAAE,UAAU;QACnB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE;KACzC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AAAA,CAC1B","sourcesContent":["// @ts-nocheck\nimport type { ExtensionAPI } from \"@ashx-j/lunr\";\nimport type { SteeringNotice, SubagentState } from \"../shared/types.ts\";\n\nexport const SUBAGENT_STEERING_MESSAGE_TYPE = \"subagent_steering_notice\";\n\nexport interface SubagentSteeringMessageDetails extends SteeringNotice {\n\tsource?: \"async\";\n\tasyncDir?: string;\n\tnoticeText?: string;\n}\n\nexport function formatSteeringNotice(details: Pick<SubagentSteeringMessageDetails, \"runId\" | \"requestId\" | \"state\" | \"message\">): string {\n\treturn [\n\t\t`Subagent steering ${details.state}: ${details.runId}`,\n\t\t`Request: ${details.requestId}`,\n\t\tdetails.message,\n\t\t\"Inspect the run status before sending another correction.\",\n\t].join(\"\\n\");\n}\n\nexport function handleSubagentSteeringNotice(input: {\n\tpi: Pick<ExtensionAPI, \"sendMessage\">;\n\tstate: SubagentState;\n\tdetails: SubagentSteeringMessageDetails;\n}): void {\n\tif (!input.details || (input.details.state !== \"failed\" && input.details.state !== \"partial\" && input.details.state !== \"recovered\")) return;\n\tif (!input.state.currentSessionId || input.details.currentSessionId !== input.state.currentSessionId) return;\n\tconst noticeText = input.details.noticeText ?? formatSteeringNotice(input.details);\n\tinput.pi.sendMessage({\n\t\tcustomType: SUBAGENT_STEERING_MESSAGE_TYPE,\n\t\tcontent: noticeText,\n\t\tdisplay: true,\n\t\tdetails: { ...input.details, noticeText },\n\t}, { triggerTurn: true });\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ExtensionAPI } from "@
|
|
1
|
+
import type { ExtensionAPI } from "@ashx-j/lunr";
|
|
2
2
|
import { type SubagentState } from "../shared/types.ts";
|
|
3
3
|
export declare const NATIVE_SUPERVISOR_TOOL_NAME = "subagent_supervisor";
|
|
4
4
|
type SupervisorReason = "need_decision" | "interview_request" | "progress_update";
|