@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,4 +1,4 @@
|
|
|
1
|
-
import type { ExtensionContext } from "@
|
|
1
|
+
import type { ExtensionContext } from "@ashx-j/lunr";
|
|
2
2
|
import { type ThinkingLevel } from "../shared/model-info.ts";
|
|
3
3
|
export declare const STRONG_WATCHDOG_THINKING: ThinkingLevel;
|
|
4
4
|
type RegistryModel = ReturnType<ExtensionContext["modelRegistry"]["find"]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-selection.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/watchdog/model-selection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAExE,OAAO,EAMN,KAAK,aAAa,EAClB,MAAM,yBAAyB,CAAC;AAEjC,eAAO,MAAM,wBAAwB,EAAE,aAAsB,CAAC;AAyB9D,KAAK,aAAa,GAAG,UAAU,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE3E,MAAM,WAAW,0BAA0B;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,aAAa,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,2BAA2B;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;CAC1C;AAqBD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,EAAE,MAAM,SAAmB,GAAG,aAAa,GAAG,KAAK,GAAG,SAAS,CAK1I;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,GAAG,0BAA0B,CAmB7G;AA8DD,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,gBAAgB,GAAG,2BAA2B,CAO/F","sourcesContent":["// @ts-nocheck\nimport type { ExtensionContext } from \"@
|
|
1
|
+
{"version":3,"file":"model-selection.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/watchdog/model-selection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAExE,OAAO,EAMN,KAAK,aAAa,EAClB,MAAM,yBAAyB,CAAC;AAEjC,eAAO,MAAM,wBAAwB,EAAE,aAAsB,CAAC;AAyB9D,KAAK,aAAa,GAAG,UAAU,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE3E,MAAM,WAAW,0BAA0B;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,aAAa,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,2BAA2B;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;CAC1C;AAqBD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,EAAE,MAAM,SAAmB,GAAG,aAAa,GAAG,KAAK,GAAG,SAAS,CAK1I;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,GAAG,0BAA0B,CAmB7G;AA8DD,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,gBAAgB,GAAG,2BAA2B,CAO/F","sourcesContent":["// @ts-nocheck\nimport type { ExtensionContext } from \"@ashx-j/lunr\";\nimport { normalizeModelSegment, resolveModelCandidate } from \"../runs/shared/model-fallback.ts\";\nimport {\n\tgetSupportedThinkingLevels,\n\tsplitKnownThinkingSuffix,\n\tTHINKING_LEVELS,\n\ttoModelInfo,\n\ttype ModelInfo,\n\ttype ThinkingLevel,\n} from \"../shared/model-info.ts\";\n\nexport const STRONG_WATCHDOG_THINKING: ThinkingLevel = \"high\";\n\nconst STRONG_WATCHDOG_MODELS = {\n\topus48: {\n\t\tlabel: \"Opus 4.8\",\n\t\tqueries: [\n\t\t\t\"anthropic/claude-opus-4-8\",\n\t\t\t\"anthropic/claude-opus-4.8\",\n\t\t\t\"anthropic/opus-4-8\",\n\t\t\t\"anthropic/opus-4.8\",\n\t\t],\n\t},\n\tgpt55: {\n\t\tlabel: \"GPT 5.5\",\n\t\tqueries: [\n\t\t\t\"openai-codex/gpt-5.5\",\n\t\t\t\"openai-codex/gpt-5-5\",\n\t\t\t\"openai/gpt-5.5\",\n\t\t\t\"openai/gpt-5-5\",\n\t\t],\n\t},\n} as const;\n\ntype StrongWatchdogFamily = keyof typeof STRONG_WATCHDOG_MODELS;\n\ntype RegistryModel = ReturnType<ExtensionContext[\"modelRegistry\"][\"find\"]>;\n\nexport interface ResolvedWatchdogModelInput {\n\tmodel: string;\n\tthinking?: ThinkingLevel;\n\tregistryModel: NonNullable<RegistryModel>;\n}\n\nexport interface WatchdogModelRecommendation {\n\tmodel: string;\n\tthinking: ThinkingLevel;\n\tlabel: string;\n\treason: string;\n\tregistryModel: NonNullable<RegistryModel>;\n}\n\nfunction fullModelId(model: Pick<ModelInfo, \"provider\" | \"id\">): string {\n\treturn `${model.provider}/${model.id}`;\n}\n\nfunction modelRegistryEntries(ctx: ExtensionContext): ModelInfo[] {\n\treturn ctx.modelRegistry.getAvailable().map(toModelInfo);\n}\n\nfunction splitProviderModel(value: string): { provider: string; id: string } | undefined {\n\tconst slashIndex = value.indexOf(\"/\");\n\tif (slashIndex <= 0 || slashIndex === value.length - 1) return undefined;\n\treturn { provider: value.slice(0, slashIndex), id: value.slice(slashIndex + 1) };\n}\n\nfunction assertSupportedThinking(value: string, source: string): ThinkingLevel {\n\tif ((THINKING_LEVELS as readonly string[]).includes(value)) return value as ThinkingLevel;\n\tthrow new Error(`Unsupported watchdog thinking '${value}' from ${source}; expected ${THINKING_LEVELS.join(\", \")}, false, or inherit.`);\n}\n\nexport function parseWatchdogThinkingInput(value: string | false | undefined, source = \"watchdog input\"): ThinkingLevel | false | undefined {\n\tif (value === undefined || value === \"\") return undefined;\n\tif (value === false) return false;\n\tif (value === \"false\") return false;\n\treturn assertSupportedThinking(value, source);\n}\n\nexport function resolveWatchdogModelInput(ctx: ExtensionContext, rawModel: string): ResolvedWatchdogModelInput {\n\tconst trimmed = rawModel.trim();\n\tif (!trimmed) throw new Error(\"Watchdog model must be a non-empty provider/model value.\");\n\tconst availableModels = modelRegistryEntries(ctx);\n\tconst preferredProvider = typeof ctx.model?.provider === \"string\" ? ctx.model.provider : undefined;\n\tconst resolved = resolveModelCandidate(trimmed, availableModels, preferredProvider) ?? trimmed;\n\tconst { baseModel, thinkingSuffix } = splitKnownThinkingSuffix(resolved);\n\tconst named = splitProviderModel(baseModel);\n\tif (!named) throw new Error(`Watchdog model '${rawModel}' did not resolve to provider/model. Use a provider-qualified model such as openai-codex/gpt-5.5:high or anthropic/claude-opus-4-8:high.`);\n\tconst registryModel = ctx.modelRegistry.find(named.provider, named.id);\n\tif (!registryModel) throw new Error(`Watchdog model '${rawModel}' was not found as '${baseModel}'.`);\n\tif (!ctx.modelRegistry.hasConfiguredAuth(registryModel)) {\n\t\tthrow new Error(`Watchdog model '${baseModel}' is not authenticated. Configure credentials for provider '${named.provider}' or choose an authenticated model.`);\n\t}\n\treturn {\n\t\tmodel: `${named.provider}/${named.id}`,\n\t\t...(thinkingSuffix ? { thinking: assertSupportedThinking(thinkingSuffix.slice(1), \"watchdog model suffix\") } : {}),\n\t\tregistryModel,\n\t};\n}\n\nfunction familyForModel(model: Pick<ModelInfo, \"provider\" | \"id\"> | undefined): StrongWatchdogFamily | undefined {\n\tif (!model) return undefined;\n\tconst provider = normalizeModelSegment(model.provider);\n\tconst id = normalizeModelSegment(model.id);\n\tif (provider.includes(\"openai\") && /^gpt-5-5(-\\d{8}|-\\d{4}-\\d{2}-\\d{2})?$/.test(id)) return \"gpt55\";\n\tif (provider.includes(\"anthropic\") && /^(claude-opus-4-8|opus-4-8)(-\\d{8}|-\\d{4}-\\d{2}-\\d{2})?$/.test(id)) return \"opus48\";\n\treturn undefined;\n}\n\nfunction currentProviderFamily(ctx: ExtensionContext): \"openai\" | \"anthropic\" | undefined {\n\tconst provider = typeof ctx.model?.provider === \"string\" ? normalizeModelSegment(ctx.model.provider) : \"\";\n\tif (provider.includes(\"openai\")) return \"openai\";\n\tif (provider.includes(\"anthropic\")) return \"anthropic\";\n\treturn undefined;\n}\n\nfunction strongFamilyOrder(ctx: ExtensionContext): StrongWatchdogFamily[] {\n\tconst current = ctx.model ? familyForModel(toModelInfo(ctx.model)) : undefined;\n\tif (current === \"gpt55\") return [\"opus48\"];\n\tif (current === \"opus48\") return [\"gpt55\"];\n\tconst providerFamily = currentProviderFamily(ctx);\n\tif (providerFamily === \"openai\") return [\"opus48\", \"gpt55\"];\n\tif (providerFamily === \"anthropic\") return [\"gpt55\", \"opus48\"];\n\treturn [\"gpt55\", \"opus48\"];\n}\n\nfunction findFamilyMatch(family: StrongWatchdogFamily, availableModels: ModelInfo[]): string | undefined {\n\tconst matches = availableModels.filter((entry) => familyForModel(entry) === family);\n\tif (matches.length === 1) return matches[0]!.fullId;\n\treturn undefined;\n}\n\nfunction resolveStrongCandidate(ctx: ExtensionContext, family: StrongWatchdogFamily): WatchdogModelRecommendation | undefined {\n\tconst availableModels = modelRegistryEntries(ctx);\n\tconst preference = STRONG_WATCHDOG_MODELS[family];\n\tconst queries = [...preference.queries];\n\tconst familyMatch = findFamilyMatch(family, availableModels);\n\tif (familyMatch) queries.push(familyMatch);\n\tfor (const query of queries) {\n\t\tlet resolved: ResolvedWatchdogModelInput;\n\t\ttry {\n\t\t\tresolved = resolveWatchdogModelInput(ctx, query);\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\t\tconst modelInfo = toModelInfo(resolved.registryModel);\n\t\tif (familyForModel(modelInfo) !== family) continue;\n\t\tif (!getSupportedThinkingLevels(modelInfo).includes(STRONG_WATCHDOG_THINKING)) continue;\n\t\tconst current = ctx.model ? fullModelId(toModelInfo(ctx.model)) : \"no current session model\";\n\t\treturn {\n\t\t\tmodel: resolved.model,\n\t\t\tthinking: STRONG_WATCHDOG_THINKING,\n\t\t\tlabel: preference.label,\n\t\t\treason: `Use ${preference.label} with thinking high as a strong independent watchdog for ${current}.`,\n\t\t\tregistryModel: resolved.registryModel,\n\t\t};\n\t}\n\treturn undefined;\n}\n\nexport function recommendStrongWatchdogModel(ctx: ExtensionContext): WatchdogModelRecommendation {\n\tfor (const family of strongFamilyOrder(ctx)) {\n\t\tconst recommendation = resolveStrongCandidate(ctx, family);\n\t\tif (recommendation) return recommendation;\n\t}\n\tconst current = ctx.model ? fullModelId(toModelInfo(ctx.model)) : \"the current session\";\n\tthrow new Error(`No authenticated strong complementary watchdog model was found for ${current}. Configure access to Opus 4.8 or GPT 5.5, then run the recommendation again.`);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-selection.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/watchdog/model-selection.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport type { ExtensionContext } from \"@earendil-works/pi-coding-agent\";\nimport { normalizeModelSegment, resolveModelCandidate } from \"../runs/shared/model-fallback.ts\";\nimport {\n\tgetSupportedThinkingLevels,\n\tsplitKnownThinkingSuffix,\n\tTHINKING_LEVELS,\n\ttoModelInfo,\n\ttype ModelInfo,\n\ttype ThinkingLevel,\n} from \"../shared/model-info.ts\";\n\nexport const STRONG_WATCHDOG_THINKING: ThinkingLevel = \"high\";\n\nconst STRONG_WATCHDOG_MODELS = {\n\topus48: {\n\t\tlabel: \"Opus 4.8\",\n\t\tqueries: [\n\t\t\t\"anthropic/claude-opus-4-8\",\n\t\t\t\"anthropic/claude-opus-4.8\",\n\t\t\t\"anthropic/opus-4-8\",\n\t\t\t\"anthropic/opus-4.8\",\n\t\t],\n\t},\n\tgpt55: {\n\t\tlabel: \"GPT 5.5\",\n\t\tqueries: [\n\t\t\t\"openai-codex/gpt-5.5\",\n\t\t\t\"openai-codex/gpt-5-5\",\n\t\t\t\"openai/gpt-5.5\",\n\t\t\t\"openai/gpt-5-5\",\n\t\t],\n\t},\n} as const;\n\ntype StrongWatchdogFamily = keyof typeof STRONG_WATCHDOG_MODELS;\n\ntype RegistryModel = ReturnType<ExtensionContext[\"modelRegistry\"][\"find\"]>;\n\nexport interface ResolvedWatchdogModelInput {\n\tmodel: string;\n\tthinking?: ThinkingLevel;\n\tregistryModel: NonNullable<RegistryModel>;\n}\n\nexport interface WatchdogModelRecommendation {\n\tmodel: string;\n\tthinking: ThinkingLevel;\n\tlabel: string;\n\treason: string;\n\tregistryModel: NonNullable<RegistryModel>;\n}\n\nfunction fullModelId(model: Pick<ModelInfo, \"provider\" | \"id\">): string {\n\treturn `${model.provider}/${model.id}`;\n}\n\nfunction modelRegistryEntries(ctx: ExtensionContext): ModelInfo[] {\n\treturn ctx.modelRegistry.getAvailable().map(toModelInfo);\n}\n\nfunction splitProviderModel(value: string): { provider: string; id: string } | undefined {\n\tconst slashIndex = value.indexOf(\"/\");\n\tif (slashIndex <= 0 || slashIndex === value.length - 1) return undefined;\n\treturn { provider: value.slice(0, slashIndex), id: value.slice(slashIndex + 1) };\n}\n\nfunction assertSupportedThinking(value: string, source: string): ThinkingLevel {\n\tif ((THINKING_LEVELS as readonly string[]).includes(value)) return value as ThinkingLevel;\n\tthrow new Error(`Unsupported watchdog thinking '${value}' from ${source}; expected ${THINKING_LEVELS.join(\", \")}, false, or inherit.`);\n}\n\nexport function parseWatchdogThinkingInput(value: string | false | undefined, source = \"watchdog input\"): ThinkingLevel | false | undefined {\n\tif (value === undefined || value === \"\") return undefined;\n\tif (value === false) return false;\n\tif (value === \"false\") return false;\n\treturn assertSupportedThinking(value, source);\n}\n\nexport function resolveWatchdogModelInput(ctx: ExtensionContext, rawModel: string): ResolvedWatchdogModelInput {\n\tconst trimmed = rawModel.trim();\n\tif (!trimmed) throw new Error(\"Watchdog model must be a non-empty provider/model value.\");\n\tconst availableModels = modelRegistryEntries(ctx);\n\tconst preferredProvider = typeof ctx.model?.provider === \"string\" ? ctx.model.provider : undefined;\n\tconst resolved = resolveModelCandidate(trimmed, availableModels, preferredProvider) ?? trimmed;\n\tconst { baseModel, thinkingSuffix } = splitKnownThinkingSuffix(resolved);\n\tconst named = splitProviderModel(baseModel);\n\tif (!named) throw new Error(`Watchdog model '${rawModel}' did not resolve to provider/model. Use a provider-qualified model such as openai-codex/gpt-5.5:high or anthropic/claude-opus-4-8:high.`);\n\tconst registryModel = ctx.modelRegistry.find(named.provider, named.id);\n\tif (!registryModel) throw new Error(`Watchdog model '${rawModel}' was not found as '${baseModel}'.`);\n\tif (!ctx.modelRegistry.hasConfiguredAuth(registryModel)) {\n\t\tthrow new Error(`Watchdog model '${baseModel}' is not authenticated. Configure credentials for provider '${named.provider}' or choose an authenticated model.`);\n\t}\n\treturn {\n\t\tmodel: `${named.provider}/${named.id}`,\n\t\t...(thinkingSuffix ? { thinking: assertSupportedThinking(thinkingSuffix.slice(1), \"watchdog model suffix\") } : {}),\n\t\tregistryModel,\n\t};\n}\n\nfunction familyForModel(model: Pick<ModelInfo, \"provider\" | \"id\"> | undefined): StrongWatchdogFamily | undefined {\n\tif (!model) return undefined;\n\tconst provider = normalizeModelSegment(model.provider);\n\tconst id = normalizeModelSegment(model.id);\n\tif (provider.includes(\"openai\") && /^gpt-5-5(-\\d{8}|-\\d{4}-\\d{2}-\\d{2})?$/.test(id)) return \"gpt55\";\n\tif (provider.includes(\"anthropic\") && /^(claude-opus-4-8|opus-4-8)(-\\d{8}|-\\d{4}-\\d{2}-\\d{2})?$/.test(id)) return \"opus48\";\n\treturn undefined;\n}\n\nfunction currentProviderFamily(ctx: ExtensionContext): \"openai\" | \"anthropic\" | undefined {\n\tconst provider = typeof ctx.model?.provider === \"string\" ? normalizeModelSegment(ctx.model.provider) : \"\";\n\tif (provider.includes(\"openai\")) return \"openai\";\n\tif (provider.includes(\"anthropic\")) return \"anthropic\";\n\treturn undefined;\n}\n\nfunction strongFamilyOrder(ctx: ExtensionContext): StrongWatchdogFamily[] {\n\tconst current = ctx.model ? familyForModel(toModelInfo(ctx.model)) : undefined;\n\tif (current === \"gpt55\") return [\"opus48\"];\n\tif (current === \"opus48\") return [\"gpt55\"];\n\tconst providerFamily = currentProviderFamily(ctx);\n\tif (providerFamily === \"openai\") return [\"opus48\", \"gpt55\"];\n\tif (providerFamily === \"anthropic\") return [\"gpt55\", \"opus48\"];\n\treturn [\"gpt55\", \"opus48\"];\n}\n\nfunction findFamilyMatch(family: StrongWatchdogFamily, availableModels: ModelInfo[]): string | undefined {\n\tconst matches = availableModels.filter((entry) => familyForModel(entry) === family);\n\tif (matches.length === 1) return matches[0]!.fullId;\n\treturn undefined;\n}\n\nfunction resolveStrongCandidate(ctx: ExtensionContext, family: StrongWatchdogFamily): WatchdogModelRecommendation | undefined {\n\tconst availableModels = modelRegistryEntries(ctx);\n\tconst preference = STRONG_WATCHDOG_MODELS[family];\n\tconst queries = [...preference.queries];\n\tconst familyMatch = findFamilyMatch(family, availableModels);\n\tif (familyMatch) queries.push(familyMatch);\n\tfor (const query of queries) {\n\t\tlet resolved: ResolvedWatchdogModelInput;\n\t\ttry {\n\t\t\tresolved = resolveWatchdogModelInput(ctx, query);\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\t\tconst modelInfo = toModelInfo(resolved.registryModel);\n\t\tif (familyForModel(modelInfo) !== family) continue;\n\t\tif (!getSupportedThinkingLevels(modelInfo).includes(STRONG_WATCHDOG_THINKING)) continue;\n\t\tconst current = ctx.model ? fullModelId(toModelInfo(ctx.model)) : \"no current session model\";\n\t\treturn {\n\t\t\tmodel: resolved.model,\n\t\t\tthinking: STRONG_WATCHDOG_THINKING,\n\t\t\tlabel: preference.label,\n\t\t\treason: `Use ${preference.label} with thinking high as a strong independent watchdog for ${current}.`,\n\t\t\tregistryModel: resolved.registryModel,\n\t\t};\n\t}\n\treturn undefined;\n}\n\nexport function recommendStrongWatchdogModel(ctx: ExtensionContext): WatchdogModelRecommendation {\n\tfor (const family of strongFamilyOrder(ctx)) {\n\t\tconst recommendation = resolveStrongCandidate(ctx, family);\n\t\tif (recommendation) return recommendation;\n\t}\n\tconst current = ctx.model ? fullModelId(toModelInfo(ctx.model)) : \"the current session\";\n\tthrow new Error(`No authenticated strong complementary watchdog model was found for ${current}. Configure access to Opus 4.8 or GPT 5.5, then run the recommendation again.`);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"model-selection.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/watchdog/model-selection.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport type { ExtensionContext } from \"@ashx-j/lunr\";\nimport { normalizeModelSegment, resolveModelCandidate } from \"../runs/shared/model-fallback.ts\";\nimport {\n\tgetSupportedThinkingLevels,\n\tsplitKnownThinkingSuffix,\n\tTHINKING_LEVELS,\n\ttoModelInfo,\n\ttype ModelInfo,\n\ttype ThinkingLevel,\n} from \"../shared/model-info.ts\";\n\nexport const STRONG_WATCHDOG_THINKING: ThinkingLevel = \"high\";\n\nconst STRONG_WATCHDOG_MODELS = {\n\topus48: {\n\t\tlabel: \"Opus 4.8\",\n\t\tqueries: [\n\t\t\t\"anthropic/claude-opus-4-8\",\n\t\t\t\"anthropic/claude-opus-4.8\",\n\t\t\t\"anthropic/opus-4-8\",\n\t\t\t\"anthropic/opus-4.8\",\n\t\t],\n\t},\n\tgpt55: {\n\t\tlabel: \"GPT 5.5\",\n\t\tqueries: [\n\t\t\t\"openai-codex/gpt-5.5\",\n\t\t\t\"openai-codex/gpt-5-5\",\n\t\t\t\"openai/gpt-5.5\",\n\t\t\t\"openai/gpt-5-5\",\n\t\t],\n\t},\n} as const;\n\ntype StrongWatchdogFamily = keyof typeof STRONG_WATCHDOG_MODELS;\n\ntype RegistryModel = ReturnType<ExtensionContext[\"modelRegistry\"][\"find\"]>;\n\nexport interface ResolvedWatchdogModelInput {\n\tmodel: string;\n\tthinking?: ThinkingLevel;\n\tregistryModel: NonNullable<RegistryModel>;\n}\n\nexport interface WatchdogModelRecommendation {\n\tmodel: string;\n\tthinking: ThinkingLevel;\n\tlabel: string;\n\treason: string;\n\tregistryModel: NonNullable<RegistryModel>;\n}\n\nfunction fullModelId(model: Pick<ModelInfo, \"provider\" | \"id\">): string {\n\treturn `${model.provider}/${model.id}`;\n}\n\nfunction modelRegistryEntries(ctx: ExtensionContext): ModelInfo[] {\n\treturn ctx.modelRegistry.getAvailable().map(toModelInfo);\n}\n\nfunction splitProviderModel(value: string): { provider: string; id: string } | undefined {\n\tconst slashIndex = value.indexOf(\"/\");\n\tif (slashIndex <= 0 || slashIndex === value.length - 1) return undefined;\n\treturn { provider: value.slice(0, slashIndex), id: value.slice(slashIndex + 1) };\n}\n\nfunction assertSupportedThinking(value: string, source: string): ThinkingLevel {\n\tif ((THINKING_LEVELS as readonly string[]).includes(value)) return value as ThinkingLevel;\n\tthrow new Error(`Unsupported watchdog thinking '${value}' from ${source}; expected ${THINKING_LEVELS.join(\", \")}, false, or inherit.`);\n}\n\nexport function parseWatchdogThinkingInput(value: string | false | undefined, source = \"watchdog input\"): ThinkingLevel | false | undefined {\n\tif (value === undefined || value === \"\") return undefined;\n\tif (value === false) return false;\n\tif (value === \"false\") return false;\n\treturn assertSupportedThinking(value, source);\n}\n\nexport function resolveWatchdogModelInput(ctx: ExtensionContext, rawModel: string): ResolvedWatchdogModelInput {\n\tconst trimmed = rawModel.trim();\n\tif (!trimmed) throw new Error(\"Watchdog model must be a non-empty provider/model value.\");\n\tconst availableModels = modelRegistryEntries(ctx);\n\tconst preferredProvider = typeof ctx.model?.provider === \"string\" ? ctx.model.provider : undefined;\n\tconst resolved = resolveModelCandidate(trimmed, availableModels, preferredProvider) ?? trimmed;\n\tconst { baseModel, thinkingSuffix } = splitKnownThinkingSuffix(resolved);\n\tconst named = splitProviderModel(baseModel);\n\tif (!named) throw new Error(`Watchdog model '${rawModel}' did not resolve to provider/model. Use a provider-qualified model such as openai-codex/gpt-5.5:high or anthropic/claude-opus-4-8:high.`);\n\tconst registryModel = ctx.modelRegistry.find(named.provider, named.id);\n\tif (!registryModel) throw new Error(`Watchdog model '${rawModel}' was not found as '${baseModel}'.`);\n\tif (!ctx.modelRegistry.hasConfiguredAuth(registryModel)) {\n\t\tthrow new Error(`Watchdog model '${baseModel}' is not authenticated. Configure credentials for provider '${named.provider}' or choose an authenticated model.`);\n\t}\n\treturn {\n\t\tmodel: `${named.provider}/${named.id}`,\n\t\t...(thinkingSuffix ? { thinking: assertSupportedThinking(thinkingSuffix.slice(1), \"watchdog model suffix\") } : {}),\n\t\tregistryModel,\n\t};\n}\n\nfunction familyForModel(model: Pick<ModelInfo, \"provider\" | \"id\"> | undefined): StrongWatchdogFamily | undefined {\n\tif (!model) return undefined;\n\tconst provider = normalizeModelSegment(model.provider);\n\tconst id = normalizeModelSegment(model.id);\n\tif (provider.includes(\"openai\") && /^gpt-5-5(-\\d{8}|-\\d{4}-\\d{2}-\\d{2})?$/.test(id)) return \"gpt55\";\n\tif (provider.includes(\"anthropic\") && /^(claude-opus-4-8|opus-4-8)(-\\d{8}|-\\d{4}-\\d{2}-\\d{2})?$/.test(id)) return \"opus48\";\n\treturn undefined;\n}\n\nfunction currentProviderFamily(ctx: ExtensionContext): \"openai\" | \"anthropic\" | undefined {\n\tconst provider = typeof ctx.model?.provider === \"string\" ? normalizeModelSegment(ctx.model.provider) : \"\";\n\tif (provider.includes(\"openai\")) return \"openai\";\n\tif (provider.includes(\"anthropic\")) return \"anthropic\";\n\treturn undefined;\n}\n\nfunction strongFamilyOrder(ctx: ExtensionContext): StrongWatchdogFamily[] {\n\tconst current = ctx.model ? familyForModel(toModelInfo(ctx.model)) : undefined;\n\tif (current === \"gpt55\") return [\"opus48\"];\n\tif (current === \"opus48\") return [\"gpt55\"];\n\tconst providerFamily = currentProviderFamily(ctx);\n\tif (providerFamily === \"openai\") return [\"opus48\", \"gpt55\"];\n\tif (providerFamily === \"anthropic\") return [\"gpt55\", \"opus48\"];\n\treturn [\"gpt55\", \"opus48\"];\n}\n\nfunction findFamilyMatch(family: StrongWatchdogFamily, availableModels: ModelInfo[]): string | undefined {\n\tconst matches = availableModels.filter((entry) => familyForModel(entry) === family);\n\tif (matches.length === 1) return matches[0]!.fullId;\n\treturn undefined;\n}\n\nfunction resolveStrongCandidate(ctx: ExtensionContext, family: StrongWatchdogFamily): WatchdogModelRecommendation | undefined {\n\tconst availableModels = modelRegistryEntries(ctx);\n\tconst preference = STRONG_WATCHDOG_MODELS[family];\n\tconst queries = [...preference.queries];\n\tconst familyMatch = findFamilyMatch(family, availableModels);\n\tif (familyMatch) queries.push(familyMatch);\n\tfor (const query of queries) {\n\t\tlet resolved: ResolvedWatchdogModelInput;\n\t\ttry {\n\t\t\tresolved = resolveWatchdogModelInput(ctx, query);\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\t\tconst modelInfo = toModelInfo(resolved.registryModel);\n\t\tif (familyForModel(modelInfo) !== family) continue;\n\t\tif (!getSupportedThinkingLevels(modelInfo).includes(STRONG_WATCHDOG_THINKING)) continue;\n\t\tconst current = ctx.model ? fullModelId(toModelInfo(ctx.model)) : \"no current session model\";\n\t\treturn {\n\t\t\tmodel: resolved.model,\n\t\t\tthinking: STRONG_WATCHDOG_THINKING,\n\t\t\tlabel: preference.label,\n\t\t\treason: `Use ${preference.label} with thinking high as a strong independent watchdog for ${current}.`,\n\t\t\tregistryModel: resolved.registryModel,\n\t\t};\n\t}\n\treturn undefined;\n}\n\nexport function recommendStrongWatchdogModel(ctx: ExtensionContext): WatchdogModelRecommendation {\n\tfor (const family of strongFamilyOrder(ctx)) {\n\t\tconst recommendation = resolveStrongCandidate(ctx, family);\n\t\tif (recommendation) return recommendation;\n\t}\n\tconst current = ctx.model ? fullModelId(toModelInfo(ctx.model)) : \"the current session\";\n\tthrow new Error(`No authenticated strong complementary watchdog model was found for ${current}. Configure access to Opus 4.8 or GPT 5.5, then run the recommendation again.`);\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ExtensionAPI } from "@
|
|
1
|
+
import type { ExtensionAPI } from "@ashx-j/lunr";
|
|
2
2
|
import { MainWatchdogRuntime } from "./runtime.ts";
|
|
3
3
|
export declare function registerChildWatchdog(pi: ExtensionAPI, rawConfig?: string | undefined): MainWatchdogRuntime | undefined;
|
|
4
4
|
//# sourceMappingURL=register-child.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-child.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/watchdog/register-child.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAsDnD,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,YAAY,EAAE,SAAS,qBAAyC,GAAG,mBAAmB,GAAG,SAAS,CA6D3I","sourcesContent":["// @ts-nocheck\nimport type { ExtensionAPI, ExtensionContext } from \"@
|
|
1
|
+
{"version":3,"file":"register-child.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/watchdog/register-child.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAsDnD,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,YAAY,EAAE,SAAS,qBAAyC,GAAG,mBAAmB,GAAG,SAAS,CA6D3I","sourcesContent":["// @ts-nocheck\nimport type { ExtensionAPI, ExtensionContext } from \"@ashx-j/lunr\";\nimport { MainWatchdogRuntime } from \"./runtime.ts\";\nimport { createMainWatchdogReview } from \"./review.ts\";\nimport { DEFAULT_WATCHDOG_CONFIG } from \"./settings.ts\";\nimport { createWatchdogWarningMessage } from \"./warning-format.ts\";\nimport {\n\tCHILD_WATCHDOG_CONFIG_ENV,\n\tCHILD_WATCHDOG_STATUS_EVENT,\n\tdecodeChildWatchdogConfig,\n\ttype ChildWatchdogConfig,\n\ttype ChildWatchdogPhase,\n} from \"./child-status.ts\";\nimport type { ResolvedWatchdogConfig, WatchdogWarningDetails } from \"./types.ts\";\n\nfunction childResolvedConfig(config: ChildWatchdogConfig): ResolvedWatchdogConfig {\n\treturn {\n\t\t...DEFAULT_WATCHDOG_CONFIG,\n\t\tenabled: true,\n\t\tagentEndTimeoutMs: config.agentEndTimeoutMs,\n\t\tmaxWarnings: config.maxWarnings,\n\t\tmain: {\n\t\t\tenabled: true,\n\t\t\t...(config.model ? { model: config.model } : {}),\n\t\t\t...(config.thinking !== undefined ? { thinking: config.thinking } : {}),\n\t\t},\n\t\tautoFollow: {\n\t\t\tblockers: config.autoFollowBlockers,\n\t\t\tmaxAttempts: config.autoFollowMaxAttempts,\n\t\t\tstalemateRepeats: config.stalemateRepeats,\n\t\t},\n\t\tchildren: {\n\t\t\t...DEFAULT_WATCHDOG_CONFIG.children,\n\t\t\twatchdogTailTimeoutMs: config.watchdogTailTimeoutMs,\n\t\t},\n\t\tlsp: { ...config.lsp },\n\t};\n}\n\nfunction childWarningDetails(details: WatchdogWarningDetails, config: ChildWatchdogConfig): WatchdogWarningDetails {\n\treturn {\n\t\t...details,\n\t\tsource: details.source === \"lsp\" ? \"lsp\" : \"child\",\n\t\t...(config.agent ? { agent: config.agent } : {}),\n\t\t...(config.runId ? { runId: config.runId } : {}),\n\t};\n}\n\nfunction writeStatus(event: unknown): void {\n\ttry {\n\t\tprocess.stdout.write(`${JSON.stringify(event)}\\n`);\n\t} catch {\n\t\t// Child watchdog status is advisory; stdout failures are handled by the child process itself.\n\t}\n}\n\nexport function registerChildWatchdog(pi: ExtensionAPI, rawConfig = process.env[CHILD_WATCHDOG_CONFIG_ENV]): MainWatchdogRuntime | undefined {\n\tconst childConfig = decodeChildWatchdogConfig(rawConfig);\n\tif (!childConfig?.enabled) return undefined;\n\tlet currentContext: ExtensionContext | undefined;\n\tlet seq = 0;\n\tconst emitStatus = (phase: ChildWatchdogPhase, followUpPending = false, reason?: string): void => {\n\t\twriteStatus({\n\t\t\ttype: CHILD_WATCHDOG_STATUS_EVENT,\n\t\t\t...(childConfig.runId ? { runId: childConfig.runId } : {}),\n\t\t\t...(childConfig.agent ? { agent: childConfig.agent } : {}),\n\t\t\t...(childConfig.childIndex !== undefined ? { childIndex: childConfig.childIndex, stepIndex: childConfig.childIndex } : {}),\n\t\t\tseq: ++seq,\n\t\t\tphase,\n\t\t\tts: Date.now(),\n\t\t\tfollowUpPending,\n\t\t\t...(reason ? { reason } : {}),\n\t\t});\n\t};\n\tconst resolved = childResolvedConfig(childConfig);\n\tconst runtime = new MainWatchdogRuntime({\n\t\tresolveConfig: () => ({ ok: true, config: resolved, errors: [], sources: [{ scope: \"session\", exists: true }] }),\n\t\treview: createMainWatchdogReview(() => currentContext, { getThinkingLevel: () => pi.getThinkingLevel() }),\n\t\treviewDescription: \"child model review\",\n\t\treviewChangesOnly: true,\n\t\tdisplayWarning: (details) => {\n\t\t\tconst childDetails = childWarningDetails(details, childConfig);\n\t\t\tpi.sendMessage(createWatchdogWarningMessage(childDetails, { display: true, details: childDetails }));\n\t\t},\n\t});\n\tconst rememberContext = (ctx: ExtensionContext) => {\n\t\tcurrentContext = ctx;\n\t};\n\tconst onRuntimeEvent = pi.on as unknown as (event: string, handler: (event: unknown, ctx: ExtensionContext) => unknown) => void;\n\tonRuntimeEvent(\"session_start\", (_event, ctx) => {\n\t\trememberContext(ctx);\n\t\truntime.bindSession(ctx);\n\t\temitStatus(\"idle\");\n\t});\n\tonRuntimeEvent(\"before_agent_start\", (event, ctx) => {\n\t\trememberContext(ctx);\n\t\truntime.handleBeforeAgentStart(event, ctx);\n\t});\n\tonRuntimeEvent(\"turn_end\", (event, ctx) => {\n\t\trememberContext(ctx);\n\t\truntime.handleTurnEnd(event, ctx);\n\t});\n\tonRuntimeEvent(\"agent_end\", async (event, ctx) => {\n\t\trememberContext(ctx);\n\t\temitStatus(\"reviewing\");\n\t\tawait runtime.handleAgentEnd(event, ctx);\n\t\tconst snapshot = runtime.getSnapshot(ctx.cwd);\n\t\tif (snapshot.status === \"failed\") emitStatus(\"failed\", false, snapshot.lastError);\n\t\telse if (snapshot.status === \"stale\") emitStatus(\"stale\", false, \"review stale\");\n\t\telse emitStatus(\"idle\");\n\t});\n\tonRuntimeEvent(\"session_shutdown\", () => {\n\t\tcurrentContext = undefined;\n\t\truntime.dispose();\n\t\temitStatus(\"idle\");\n\t});\n\treturn runtime;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-child.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/watchdog/register-child.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport type { ExtensionAPI, ExtensionContext } from \"@
|
|
1
|
+
{"version":3,"file":"register-child.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/watchdog/register-child.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport type { ExtensionAPI, ExtensionContext } from \"@ashx-j/lunr\";\nimport { MainWatchdogRuntime } from \"./runtime.ts\";\nimport { createMainWatchdogReview } from \"./review.ts\";\nimport { DEFAULT_WATCHDOG_CONFIG } from \"./settings.ts\";\nimport { createWatchdogWarningMessage } from \"./warning-format.ts\";\nimport {\n\tCHILD_WATCHDOG_CONFIG_ENV,\n\tCHILD_WATCHDOG_STATUS_EVENT,\n\tdecodeChildWatchdogConfig,\n\ttype ChildWatchdogConfig,\n\ttype ChildWatchdogPhase,\n} from \"./child-status.ts\";\nimport type { ResolvedWatchdogConfig, WatchdogWarningDetails } from \"./types.ts\";\n\nfunction childResolvedConfig(config: ChildWatchdogConfig): ResolvedWatchdogConfig {\n\treturn {\n\t\t...DEFAULT_WATCHDOG_CONFIG,\n\t\tenabled: true,\n\t\tagentEndTimeoutMs: config.agentEndTimeoutMs,\n\t\tmaxWarnings: config.maxWarnings,\n\t\tmain: {\n\t\t\tenabled: true,\n\t\t\t...(config.model ? { model: config.model } : {}),\n\t\t\t...(config.thinking !== undefined ? { thinking: config.thinking } : {}),\n\t\t},\n\t\tautoFollow: {\n\t\t\tblockers: config.autoFollowBlockers,\n\t\t\tmaxAttempts: config.autoFollowMaxAttempts,\n\t\t\tstalemateRepeats: config.stalemateRepeats,\n\t\t},\n\t\tchildren: {\n\t\t\t...DEFAULT_WATCHDOG_CONFIG.children,\n\t\t\twatchdogTailTimeoutMs: config.watchdogTailTimeoutMs,\n\t\t},\n\t\tlsp: { ...config.lsp },\n\t};\n}\n\nfunction childWarningDetails(details: WatchdogWarningDetails, config: ChildWatchdogConfig): WatchdogWarningDetails {\n\treturn {\n\t\t...details,\n\t\tsource: details.source === \"lsp\" ? \"lsp\" : \"child\",\n\t\t...(config.agent ? { agent: config.agent } : {}),\n\t\t...(config.runId ? { runId: config.runId } : {}),\n\t};\n}\n\nfunction writeStatus(event: unknown): void {\n\ttry {\n\t\tprocess.stdout.write(`${JSON.stringify(event)}\\n`);\n\t} catch {\n\t\t// Child watchdog status is advisory; stdout failures are handled by the child process itself.\n\t}\n}\n\nexport function registerChildWatchdog(pi: ExtensionAPI, rawConfig = process.env[CHILD_WATCHDOG_CONFIG_ENV]): MainWatchdogRuntime | undefined {\n\tconst childConfig = decodeChildWatchdogConfig(rawConfig);\n\tif (!childConfig?.enabled) return undefined;\n\tlet currentContext: ExtensionContext | undefined;\n\tlet seq = 0;\n\tconst emitStatus = (phase: ChildWatchdogPhase, followUpPending = false, reason?: string): void => {\n\t\twriteStatus({\n\t\t\ttype: CHILD_WATCHDOG_STATUS_EVENT,\n\t\t\t...(childConfig.runId ? { runId: childConfig.runId } : {}),\n\t\t\t...(childConfig.agent ? { agent: childConfig.agent } : {}),\n\t\t\t...(childConfig.childIndex !== undefined ? { childIndex: childConfig.childIndex, stepIndex: childConfig.childIndex } : {}),\n\t\t\tseq: ++seq,\n\t\t\tphase,\n\t\t\tts: Date.now(),\n\t\t\tfollowUpPending,\n\t\t\t...(reason ? { reason } : {}),\n\t\t});\n\t};\n\tconst resolved = childResolvedConfig(childConfig);\n\tconst runtime = new MainWatchdogRuntime({\n\t\tresolveConfig: () => ({ ok: true, config: resolved, errors: [], sources: [{ scope: \"session\", exists: true }] }),\n\t\treview: createMainWatchdogReview(() => currentContext, { getThinkingLevel: () => pi.getThinkingLevel() }),\n\t\treviewDescription: \"child model review\",\n\t\treviewChangesOnly: true,\n\t\tdisplayWarning: (details) => {\n\t\t\tconst childDetails = childWarningDetails(details, childConfig);\n\t\t\tpi.sendMessage(createWatchdogWarningMessage(childDetails, { display: true, details: childDetails }));\n\t\t},\n\t});\n\tconst rememberContext = (ctx: ExtensionContext) => {\n\t\tcurrentContext = ctx;\n\t};\n\tconst onRuntimeEvent = pi.on as unknown as (event: string, handler: (event: unknown, ctx: ExtensionContext) => unknown) => void;\n\tonRuntimeEvent(\"session_start\", (_event, ctx) => {\n\t\trememberContext(ctx);\n\t\truntime.bindSession(ctx);\n\t\temitStatus(\"idle\");\n\t});\n\tonRuntimeEvent(\"before_agent_start\", (event, ctx) => {\n\t\trememberContext(ctx);\n\t\truntime.handleBeforeAgentStart(event, ctx);\n\t});\n\tonRuntimeEvent(\"turn_end\", (event, ctx) => {\n\t\trememberContext(ctx);\n\t\truntime.handleTurnEnd(event, ctx);\n\t});\n\tonRuntimeEvent(\"agent_end\", async (event, ctx) => {\n\t\trememberContext(ctx);\n\t\temitStatus(\"reviewing\");\n\t\tawait runtime.handleAgentEnd(event, ctx);\n\t\tconst snapshot = runtime.getSnapshot(ctx.cwd);\n\t\tif (snapshot.status === \"failed\") emitStatus(\"failed\", false, snapshot.lastError);\n\t\telse if (snapshot.status === \"stale\") emitStatus(\"stale\", false, \"review stale\");\n\t\telse emitStatus(\"idle\");\n\t});\n\tonRuntimeEvent(\"session_shutdown\", () => {\n\t\tcurrentContext = undefined;\n\t\truntime.dispose();\n\t\temitStatus(\"idle\");\n\t});\n\treturn runtime;\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ExtensionAPI, ExtensionContext } from "@
|
|
1
|
+
import type { ExtensionAPI, ExtensionContext } from "@ashx-j/lunr";
|
|
2
2
|
import { MainWatchdogRuntime, type WatchdogReviewFunction } from "./runtime.ts";
|
|
3
3
|
interface RegisterMainWatchdogOptions {
|
|
4
4
|
runtime?: MainWatchdogRuntime;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-main.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/watchdog/register-main.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAA2B,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAO/G,OAAO,EAAE,mBAAmB,EAAE,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAUhF,UAAU,2BAA2B;IACpC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,MAAM,CAAC,EAAE,sBAAsB,CAAC;CAChC;AAuFD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,gBAAgB,GAAG,MAAM,CA2C3H;AAgOD,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,GAAE,2BAAgC,GAAG,mBAAmB,CA0DrH","sourcesContent":["// @ts-nocheck\nimport type { ExtensionAPI, ExtensionCommandContext, ExtensionContext } from \"@earendil-works/pi-coding-agent\";\nimport { Text } from \"@earendil-works/pi-tui\";\nimport { resolveEffectiveThinking, splitKnownThinkingSuffix, THINKING_LEVELS, type ThinkingLevel } from \"../shared/model-info.ts\";\nimport { SLASH_TEXT_RESULT_TYPE } from \"../shared/types.ts\";\nimport { recommendStrongWatchdogModel, resolveWatchdogModelInput, parseWatchdogThinkingInput } from \"./model-selection.ts\";\nimport { renderWatchdogWarning } from \"./render.ts\";\nimport { createMainWatchdogReview } from \"./review.ts\";\nimport { MainWatchdogRuntime, type WatchdogReviewFunction } from \"./runtime.ts\";\nimport { getWatchdogUserSettingsPath, writeUserWatchdogEnabled, writeWatchdogModelSettings } from \"./settings.ts\";\nimport {\n\tSUBAGENT_WATCHDOG_WARNING_TYPE,\n\ttype WatchdogRuntimeStatus,\n\ttype WatchdogWarning,\n\ttype WatchdogWarningDetails,\n} from \"./types.ts\";\nimport { createWatchdogWarningMessage } from \"./warning-format.ts\";\n\ninterface RegisterMainWatchdogOptions {\n\truntime?: MainWatchdogRuntime;\n\treview?: WatchdogReviewFunction;\n}\n\nfunction sendSlashText(pi: ExtensionAPI, text: string): void {\n\tpi.sendMessage({ customType: SLASH_TEXT_RESULT_TYPE, content: text, display: true });\n}\n\nfunction messageFromError(error: unknown): string {\n\treturn error instanceof Error ? error.message : String(error);\n}\n\nfunction boolLabel(value: boolean): string {\n\treturn value ? \"on\" : \"off\";\n}\n\nfunction statusLabel(status: WatchdogRuntimeStatus): string {\n\treturn status.replaceAll(\"-\", \" \");\n}\n\nfunction sourceLine(source: { scope: string; path?: string; exists: boolean }): string {\n\tconst location = source.path ? ` ${source.path}` : \"\";\n\treturn `- ${source.scope}${location}: ${source.exists ? \"found\" : \"not found\"}`;\n}\n\nfunction currentSessionModelLine(ctx: ExtensionContext): string {\n\tconst model = ctx.model as { provider?: unknown; id?: unknown } | undefined;\n\tif (model && typeof model.provider === \"string\" && typeof model.id === \"string\") return `current session (${model.provider}/${model.id})`;\n\treturn \"current session (not configured)\";\n}\n\nfunction mainThinkingLine(snapshot: ReturnType<MainWatchdogRuntime[\"getSnapshot\"]>, ctx: ExtensionContext): string {\n\tconst configuredModel = snapshot.config.main.model;\n\tconst configuredThinking = snapshot.config.main.thinking;\n\tif (configuredModel) {\n\t\tconst effective = resolveEffectiveThinking(configuredModel, configuredThinking);\n\t\tif (effective) return effective;\n\t\treturn \"off (default for explicit watchdog model)\";\n\t}\n\tif (configuredThinking === false) return \"off\";\n\tif (configuredThinking !== undefined) return configuredThinking;\n\tconst currentThinking = (ctx as { thinkingLevel?: unknown }).thinkingLevel;\n\treturn typeof currentThinking === \"string\" ? `current session (${currentThinking})` : \"current session\";\n}\n\nfunction mainModelLine(snapshot: ReturnType<MainWatchdogRuntime[\"getSnapshot\"]>, ctx: ExtensionContext): string {\n\tif (snapshot.config.main.model) {\n\t\tconst source = snapshot.sessionModelOverride?.model ? \"session override\" : \"configured\";\n\t\treturn `Main model: ${splitKnownThinkingSuffix(snapshot.config.main.model).baseModel} (${source})`;\n\t}\n\treturn `Main model: ${currentSessionModelLine(ctx)}`;\n}\n\nfunction childrenLine(snapshot: ReturnType<MainWatchdogRuntime[\"getSnapshot\"]>): string {\n\tconst children = snapshot.config.children;\n\tconst model = children.model ? splitKnownThinkingSuffix(children.model).baseModel : \"current child session\";\n\tconst thinking = children.thinking === undefined ? \"current child session\" : children.thinking === false ? \"off\" : children.thinking;\n\tconst overrides = Object.entries(children.overrides);\n\tconst overrideText = overrides.length\n\t\t? ` · overrides ${overrides.map(([agent, override]) => {\n\t\t\tconst bits = [agent];\n\t\t\tif (override.enabled !== undefined) bits.push(boolLabel(override.enabled));\n\t\t\tif (override.model) bits.push(splitKnownThinkingSuffix(override.model).baseModel);\n\t\t\tif (override.thinking !== undefined) bits.push(`thinking ${override.thinking === false ? \"off\" : override.thinking}`);\n\t\t\treturn bits.join(\" \");\n\t\t}).join(\"; \")}`\n\t\t: \"\";\n\treturn `Children: ${boolLabel(snapshot.config.enabled && children.enabled)} · model ${model} · thinking ${thinking}${overrideText}`;\n}\n\nfunction recommendationLine(ctx: ExtensionContext): string {\n\ttry {\n\t\tconst recommendation = recommendStrongWatchdogModel(ctx);\n\t\treturn `Recommended strong watchdog: ${recommendation.model}:${recommendation.thinking} (${recommendation.label}, complementary reviewer)`;\n\t} catch (error) {\n\t\treturn `Recommended strong watchdog: unavailable (${messageFromError(error)})`;\n\t}\n}\n\nfunction lspLine(snapshot: ReturnType<MainWatchdogRuntime[\"getSnapshot\"]>): string {\n\tconst lsp = snapshot.lsp;\n\tconst provider = lsp.provider ? ` · ${lsp.provider}` : \"\";\n\tconst counts = lsp.diagnosticCount > 0 || lsp.freshDiagnosticCount > 0\n\t\t? ` · ${lsp.freshDiagnosticCount} new/${lsp.diagnosticCount} total`\n\t\t: \"\";\n\tconst message = lsp.message ? ` · ${lsp.message}` : \"\";\n\treturn `LSP diagnostics: ${lsp.enabled ? \"on\" : \"off\"} · ${lsp.status}${provider}${counts}${message}`;\n}\n\nexport function buildWatchdogStatus(snapshot: ReturnType<MainWatchdogRuntime[\"getSnapshot\"]>, ctx: ExtensionContext): string {\n\tconst lines = [\n\t\t\"Subagent watchdog\",\n\t\t`Main: ${boolLabel(snapshot.enabled)}${!snapshot.config.enabled && snapshot.sessionOverride === undefined ? \" (default off)\" : \"\"}`,\n\t\t`Runtime: ${statusLabel(snapshot.status)}${snapshot.bufferedDeltas > 0 ? ` · buffered deltas ${snapshot.bufferedDeltas}` : \"\"}`,\n\t\t`Review trigger: ${snapshot.reviewTrigger === \"repo-edits\" ? \"repo edits only\" : \"every non-empty turn delta\"}`,\n\t\tlspLine(snapshot),\n\t\t`Session override: ${snapshot.sessionOverride === undefined ? \"none\" : boolLabel(snapshot.sessionOverride)}`,\n\t\tmainModelLine(snapshot, ctx),\n\t\t`Main thinking: ${mainThinkingLine(snapshot, ctx)}`,\n\t\tchildrenLine(snapshot),\n\t\trecommendationLine(ctx),\n\t\t`Agent-end timeout: ${snapshot.config.agentEndTimeoutMs}ms`,\n\t\t`Auto-follow: not implemented${snapshot.autoFollowQueued ? \" (queued)\" : \"\"}`,\n\t\t`Review model call: ${snapshot.reviewDescription}`,\n\t];\n\tif (snapshot.failedReviews > 0) lines.push(`Failed reviews: ${snapshot.failedReviews}`);\n\tif (snapshot.staleReviews > 0) lines.push(`Stale reviews: ${snapshot.staleReviews}`);\n\tif (snapshot.changedPaths?.length) {\n\t\tlines.push(`Changed paths: ${snapshot.changedPaths.slice(0, 8).join(\", \")}${snapshot.changedPaths.length > 8 ? `, +${snapshot.changedPaths.length - 8} more` : \"\"}`);\n\t}\n\tif (snapshot.lastWarning) {\n\t\tlines.push(`Last warning: ${snapshot.lastWarning.severity} · ${snapshot.lastWarning.state ?? \"candidate\"} · ${snapshot.lastWarning.summary}`);\n\t}\n\tif (snapshot.lastError) lines.push(`Last error: ${snapshot.lastError}`);\n\tif (!snapshot.configOk) {\n\t\tlines.push(\"\", \"Config errors:\", ...snapshot.errors.map((error) => `- ${error.message}`), \"Watchdog is disabled until the config is fixed.\");\n\t} else {\n\t\tlines.push(\"\", \"Config: ok\");\n\t}\n\tlines.push(\n\t\t\"Sources:\",\n\t\t...snapshot.sources.map(sourceLine),\n\t\t\"\",\n\t\t\"Model commands:\",\n\t\t\"- /subagents-watchdog recommend-model\",\n\t\t\"- /subagents-watchdog model recommended\",\n\t\t\"- /subagents-watchdog model <provider/model[:thinking]>\",\n\t\t\"- /subagents-watchdog model inherit\",\n\t\t\"- /subagents-watchdog session model recommended\",\n\t\t\"Agent action: subagent({ action: \\\"watchdog.configure\\\", model: \\\"recommended\\\", scope: \\\"session\\\" })\",\n\t);\n\treturn lines.join(\"\\n\");\n}\n\nfunction parseTestCommand(input: string): { severity: \"concern\" | \"blocker\"; text: string } | undefined {\n\tconst match = input.match(/^test\\s+(concern|blocker)\\s+([\\s\\S]+)$/);\n\tif (!match) return undefined;\n\treturn { severity: match[1] as \"concern\" | \"blocker\", text: match[2]!.trim() };\n}\n\nfunction formatThinking(value: ThinkingLevel | false | undefined): string {\n\tif (value === undefined) return \"inherit\";\n\treturn value === false ? \"off\" : value;\n}\n\nfunction parseThinkingCommand(raw: string): ThinkingLevel | false | null {\n\tconst value = raw.trim();\n\tif (value === \"inherit\") return null;\n\treturn parseWatchdogThinkingInput(value, \"/subagents-watchdog thinking\") ?? null;\n}\n\nfunction resolveModelCommandValue(ctx: ExtensionCommandContext, raw: string): { model: string | null; thinking: ThinkingLevel | false | null; description: string } {\n\tconst value = raw.trim();\n\tif (!value) throw new Error(\"Expected a model, 'recommended', or 'inherit'.\");\n\tif (value === \"inherit\") return { model: null, thinking: null, description: \"current session model and thinking\" };\n\tif (value === \"recommended\") {\n\t\tconst recommendation = recommendStrongWatchdogModel(ctx as ExtensionContext);\n\t\treturn {\n\t\t\tmodel: recommendation.model,\n\t\t\tthinking: recommendation.thinking,\n\t\t\tdescription: `${recommendation.model}:${recommendation.thinking} (${recommendation.label})`,\n\t\t};\n\t}\n\tconst resolved = resolveWatchdogModelInput(ctx as ExtensionContext, value);\n\treturn {\n\t\tmodel: resolved.model,\n\t\tthinking: resolved.thinking,\n\t\tdescription: `${resolved.model}${resolved.thinking ? `:${resolved.thinking}` : \"\"}`,\n\t};\n}\n\nfunction buildRecommendationText(ctx: ExtensionCommandContext): string {\n\tconst recommendation = recommendStrongWatchdogModel(ctx as ExtensionContext);\n\treturn [\n\t\t\"Subagent watchdog recommended model\",\n\t\t`Current session: ${currentSessionModelLine(ctx as ExtensionContext)}`,\n\t\t`Recommended: ${recommendation.model}:${recommendation.thinking}`,\n\t\t`Reason: ${recommendation.reason}`,\n\t\t\"\",\n\t\t\"Apply for this session:\",\n\t\t\"/subagents-watchdog session model recommended\",\n\t\t\"\",\n\t\t\"Save as your user default:\",\n\t\t\"/subagents-watchdog model recommended\",\n\t].join(\"\\n\");\n}\n\nfunction buildCheckText(runtime: MainWatchdogRuntime, ctx: ExtensionCommandContext): string {\n\tconst snapshot = runtime.getSnapshot(ctx.cwd);\n\tif (!snapshot.configOk) {\n\t\treturn [\"Subagent watchdog config check\", \"\", \"Config errors:\", ...snapshot.errors.map((error) => `- ${error.message}`)].join(\"\\n\");\n\t}\n\tconst lines = [\"Subagent watchdog config check\", \"\", \"Config: ok\"];\n\tif (snapshot.config.main.model) {\n\t\tconst resolved = resolveWatchdogModelInput(ctx as ExtensionContext, snapshot.config.main.model);\n\t\tlines.push(`Main model: ${resolved.model} auth ok`);\n\t} else {\n\t\tlines.push(`Main model: ${currentSessionModelLine(ctx as ExtensionContext)}`);\n\t}\n\tlines.push(`Main thinking: ${mainThinkingLine(snapshot, ctx as ExtensionContext)}`);\n\tlines.push(lspLine(snapshot));\n\ttry {\n\t\tconst recommendation = recommendStrongWatchdogModel(ctx as ExtensionContext);\n\t\tlines.push(`Recommended strong watchdog: ${recommendation.model}:${recommendation.thinking}`);\n\t} catch (error) {\n\t\tlines.push(`Recommended strong watchdog: unavailable (${messageFromError(error)})`);\n\t}\n\treturn lines.join(\"\\n\");\n}\n\nfunction createTestWarning(severity: \"concern\" | \"blocker\", text: string): WatchdogWarning {\n\treturn {\n\t\tseverity,\n\t\tcategory: \"other\",\n\t\tconfidence: \"high\",\n\t\tsource: \"main\",\n\t\tstate: \"displayed\",\n\t\tsummary: text,\n\t\tevidence: `Manual /subagents-watchdog test ${severity} message from the main session.`,\n\t\trecommendedAction: severity === \"blocker\"\n\t\t\t? \"Verify the renderer and transcript delivery; no automatic follow-up is queued in Gate 1B.\"\n\t\t\t: \"Verify the renderer and transcript delivery; decide manually whether any action is needed.\",\n\t};\n}\n\nasync function handleWatchdogCommand(\n\tpi: ExtensionAPI,\n\truntime: MainWatchdogRuntime,\n\targs: string,\n\tctx: ExtensionCommandContext,\n): Promise<void> {\n\tconst input = args.trim();\n\tif (!input || input === \"status\") {\n\t\tsendSlashText(pi, buildWatchdogStatus(runtime.getSnapshot(ctx.cwd), ctx));\n\t\treturn;\n\t}\n\tif (input === \"recommend-model\") {\n\t\ttry {\n\t\t\tsendSlashText(pi, buildRecommendationText(ctx));\n\t\t} catch (error) {\n\t\t\tsendSlashText(pi, `Subagent watchdog recommended model\\n\\n${messageFromError(error)}`);\n\t\t}\n\t\treturn;\n\t}\n\tif (input === \"check\") {\n\t\ttry {\n\t\t\tsendSlashText(pi, buildCheckText(runtime, ctx));\n\t\t} catch (error) {\n\t\t\tsendSlashText(pi, `Subagent watchdog config check\\n\\n${messageFromError(error)}`);\n\t\t}\n\t\treturn;\n\t}\n\tif (input === \"on\" || input === \"off\") {\n\t\tconst enabled = input === \"on\";\n\t\ttry {\n\t\t\tconst settingsPath = writeUserWatchdogEnabled(enabled);\n\t\t\tconst snapshot = runtime.getSnapshot(ctx.cwd);\n\t\t\tsendSlashText(pi, [\n\t\t\t\t`Subagent watchdog ${boolLabel(enabled)} saved to user settings.`,\n\t\t\t\t`Updated: ${settingsPath}`,\n\t\t\t\t`Main now: ${boolLabel(snapshot.enabled)}${snapshot.sessionOverride !== undefined ? ` (session override ${boolLabel(snapshot.sessionOverride)})` : \"\"}`,\n\t\t\t].join(\"\\n\"));\n\t\t} catch (error) {\n\t\t\tsendSlashText(pi, `Subagent watchdog\\n\\nCould not update ${getWatchdogUserSettingsPath()}: ${messageFromError(error)}`);\n\t\t}\n\t\treturn;\n\t}\n\tif (input === \"session on\" || input === \"session off\") {\n\t\tconst enabled = input.endsWith(\"on\");\n\t\tconst snapshot = runtime.setSessionEnabled(enabled, ctx.cwd);\n\t\tsendSlashText(pi, [\n\t\t\t`Subagent watchdog session override: ${boolLabel(enabled)}.`,\n\t\t\t\"No settings files were changed.\",\n\t\t\t\"\",\n\t\t\tbuildWatchdogStatus(snapshot, ctx),\n\t\t].join(\"\\n\"));\n\t\treturn;\n\t}\n\tif (input.startsWith(\"session model \")) {\n\t\tconst rawModel = input.slice(\"session model \".length);\n\t\ttry {\n\t\t\tconst value = resolveModelCommandValue(ctx, rawModel);\n\t\t\tconst snapshot = value.model === null\n\t\t\t\t? runtime.clearSessionModel(ctx.cwd)\n\t\t\t\t: runtime.setSessionModel({ model: value.model, thinking: value.thinking ?? null }, ctx.cwd);\n\t\t\tsendSlashText(pi, [\n\t\t\t\t`Subagent watchdog session model: ${value.description}.`,\n\t\t\t\t\"No settings files were changed.\",\n\t\t\t\t\"\",\n\t\t\t\tbuildWatchdogStatus(snapshot, ctx),\n\t\t\t].join(\"\\n\"));\n\t\t} catch (error) {\n\t\t\tsendSlashText(pi, `Subagent watchdog session model\\n\\n${messageFromError(error)}`);\n\t\t}\n\t\treturn;\n\t}\n\tif (input.startsWith(\"model \")) {\n\t\tconst rawModel = input.slice(\"model \".length);\n\t\ttry {\n\t\t\tconst value = resolveModelCommandValue(ctx, rawModel);\n\t\t\tconst settingsPath = writeWatchdogModelSettings({\n\t\t\t\tscope: \"user\",\n\t\t\t\ttarget: { kind: \"main\" },\n\t\t\t\tmodel: value.model,\n\t\t\t\tthinking: value.thinking,\n\t\t\t});\n\t\t\truntime.refreshConfig(ctx.cwd);\n\t\t\tconst snapshot = runtime.getSnapshot(ctx.cwd);\n\t\t\tsendSlashText(pi, [\n\t\t\t\t`Subagent watchdog model saved: ${value.description}.`,\n\t\t\t\t`Updated: ${settingsPath}`,\n\t\t\t\t`Main now: ${boolLabel(snapshot.enabled)}`,\n\t\t\t\tvalue.model === null ? \"The watchdog now inherits the current session model and thinking.\" : \"Run /subagents-watchdog on if the watchdog is still off.\",\n\t\t\t\t\"\",\n\t\t\t\tbuildWatchdogStatus(snapshot, ctx),\n\t\t\t].join(\"\\n\"));\n\t\t} catch (error) {\n\t\t\tsendSlashText(pi, `Subagent watchdog model\\n\\n${messageFromError(error)}\\nNo settings files were changed.`);\n\t\t}\n\t\treturn;\n\t}\n\tif (input.startsWith(\"thinking \")) {\n\t\tconst rawThinking = input.slice(\"thinking \".length);\n\t\ttry {\n\t\t\tconst thinking = parseThinkingCommand(rawThinking);\n\t\t\tconst settingsPath = writeWatchdogModelSettings({\n\t\t\t\tscope: \"user\",\n\t\t\t\ttarget: { kind: \"main\" },\n\t\t\t\tthinking,\n\t\t\t});\n\t\t\truntime.refreshConfig(ctx.cwd);\n\t\t\tsendSlashText(pi, [\n\t\t\t\t`Subagent watchdog thinking saved: ${formatThinking(thinking ?? undefined)}.`,\n\t\t\t\t`Updated: ${settingsPath}`,\n\t\t\t\t\"\",\n\t\t\t\tbuildWatchdogStatus(runtime.getSnapshot(ctx.cwd), ctx),\n\t\t\t].join(\"\\n\"));\n\t\t} catch (error) {\n\t\t\tsendSlashText(pi, `Subagent watchdog thinking\\n\\n${messageFromError(error)}\\nNo settings files were changed.`);\n\t\t}\n\t\treturn;\n\t}\n\tconst test = parseTestCommand(input);\n\tif (test) {\n\t\tif (!test.text) {\n\t\t\tctx.ui.notify(\"Usage: /subagents-watchdog test concern|blocker <text>\", \"error\");\n\t\t\treturn;\n\t\t}\n\t\tconst warning = createTestWarning(test.severity, test.text);\n\t\tconst details = runtime.recordDisplayedWarning(warning);\n\t\tpi.sendMessage(createWatchdogWarningMessage(details, { display: true, details }));\n\t\treturn;\n\t}\n\tctx.ui.notify(`Usage: /subagents-watchdog [status|on|off|session on|session off|recommend-model|model recommended|model <provider/model[:thinking]>|model inherit|thinking ${THINKING_LEVELS.join(\"|\")}|thinking inherit|session model recommended|check|test concern <text>|test blocker <text>]`, \"error\");\n}\n\nexport function registerMainWatchdog(pi: ExtensionAPI, options: RegisterMainWatchdogOptions = {}): MainWatchdogRuntime {\n\tlet currentContext: ExtensionContext | undefined;\n\tconst rememberContext = (ctx: ExtensionContext) => {\n\t\tcurrentContext = ctx;\n\t};\n\tconst runtime = options.runtime ?? new MainWatchdogRuntime({\n\t\treview: options.review ?? createMainWatchdogReview(() => currentContext, { getThinkingLevel: () => pi.getThinkingLevel() }),\n\t\treviewDescription: options.review ? \"injected seam\" : \"real model review\",\n\t\treviewChangesOnly: true,\n\t\tdisplayWarning: (details) => {\n\t\t\tpi.sendMessage(createWatchdogWarningMessage(details, { display: true, details }));\n\t\t},\n\t});\n\n\tpi.registerMessageRenderer<WatchdogWarningDetails>(SUBAGENT_WATCHDOG_WARNING_TYPE, (message, renderOptions, theme) => {\n\t\tconst details = message.details as WatchdogWarningDetails | undefined;\n\t\tif (!details?.summary || !details.evidence || !details.recommendedAction) {\n\t\t\tconst content = typeof message.content === \"string\"\n\t\t\t\t? message.content\n\t\t\t\t: message.content.filter((entry) => entry.type === \"text\").map((entry) => entry.text).join(\"\\n\");\n\t\t\treturn new Text(content, 0, 0);\n\t\t}\n\t\treturn renderWatchdogWarning(details, renderOptions, theme);\n\t});\n\n\tpi.registerCommand(\"subagents-watchdog\", {\n\t\tdescription: \"Show or toggle the default-off subagent watchdog\",\n\t\thandler: (args, ctx) => {\n\t\t\trememberContext(ctx);\n\t\t\treturn handleWatchdogCommand(pi, runtime, args, ctx);\n\t\t},\n\t});\n\n\tpi.on(\"session_start\", (_event, ctx) => {\n\t\trememberContext(ctx);\n\t\truntime.bindSession(ctx);\n\t});\n\tpi.on(\"before_agent_start\", (event, ctx) => {\n\t\trememberContext(ctx);\n\t\truntime.handleBeforeAgentStart(event, ctx);\n\t});\n\tpi.on(\"turn_end\", (event, ctx) => {\n\t\trememberContext(ctx);\n\t\truntime.handleTurnEnd(event, ctx);\n\t});\n\tpi.on(\"agent_end\", (event, ctx) => {\n\t\trememberContext(ctx);\n\t\treturn runtime.handleAgentEnd(event, ctx);\n\t});\n\tpi.on(\"session_before_switch\", () => runtime.reset(\"session switch\", { clearReviewInputSignature: true, clearLspLedger: true }));\n\tpi.on(\"session_before_fork\", () => runtime.reset(\"session fork\", { clearReviewInputSignature: true, clearLspLedger: true }));\n\tpi.on(\"session_compact\", () => runtime.reset(\"session compact\"));\n\tpi.on(\"session_shutdown\", () => {\n\t\tcurrentContext = undefined;\n\t\truntime.dispose();\n\t});\n\n\treturn runtime;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"register-main.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/watchdog/register-main.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAA2B,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAO/G,OAAO,EAAE,mBAAmB,EAAE,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAUhF,UAAU,2BAA2B;IACpC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,MAAM,CAAC,EAAE,sBAAsB,CAAC;CAChC;AAuFD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,gBAAgB,GAAG,MAAM,CA2C3H;AAgOD,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,GAAE,2BAAgC,GAAG,mBAAmB,CA0DrH","sourcesContent":["// @ts-nocheck\nimport type { ExtensionAPI, ExtensionCommandContext, ExtensionContext } from \"@ashx-j/lunr\";\nimport { Text } from \"@ashx-j/lunr-tui\";\nimport { resolveEffectiveThinking, splitKnownThinkingSuffix, THINKING_LEVELS, type ThinkingLevel } from \"../shared/model-info.ts\";\nimport { SLASH_TEXT_RESULT_TYPE } from \"../shared/types.ts\";\nimport { recommendStrongWatchdogModel, resolveWatchdogModelInput, parseWatchdogThinkingInput } from \"./model-selection.ts\";\nimport { renderWatchdogWarning } from \"./render.ts\";\nimport { createMainWatchdogReview } from \"./review.ts\";\nimport { MainWatchdogRuntime, type WatchdogReviewFunction } from \"./runtime.ts\";\nimport { getWatchdogUserSettingsPath, writeUserWatchdogEnabled, writeWatchdogModelSettings } from \"./settings.ts\";\nimport {\n\tSUBAGENT_WATCHDOG_WARNING_TYPE,\n\ttype WatchdogRuntimeStatus,\n\ttype WatchdogWarning,\n\ttype WatchdogWarningDetails,\n} from \"./types.ts\";\nimport { createWatchdogWarningMessage } from \"./warning-format.ts\";\n\ninterface RegisterMainWatchdogOptions {\n\truntime?: MainWatchdogRuntime;\n\treview?: WatchdogReviewFunction;\n}\n\nfunction sendSlashText(pi: ExtensionAPI, text: string): void {\n\tpi.sendMessage({ customType: SLASH_TEXT_RESULT_TYPE, content: text, display: true });\n}\n\nfunction messageFromError(error: unknown): string {\n\treturn error instanceof Error ? error.message : String(error);\n}\n\nfunction boolLabel(value: boolean): string {\n\treturn value ? \"on\" : \"off\";\n}\n\nfunction statusLabel(status: WatchdogRuntimeStatus): string {\n\treturn status.replaceAll(\"-\", \" \");\n}\n\nfunction sourceLine(source: { scope: string; path?: string; exists: boolean }): string {\n\tconst location = source.path ? ` ${source.path}` : \"\";\n\treturn `- ${source.scope}${location}: ${source.exists ? \"found\" : \"not found\"}`;\n}\n\nfunction currentSessionModelLine(ctx: ExtensionContext): string {\n\tconst model = ctx.model as { provider?: unknown; id?: unknown } | undefined;\n\tif (model && typeof model.provider === \"string\" && typeof model.id === \"string\") return `current session (${model.provider}/${model.id})`;\n\treturn \"current session (not configured)\";\n}\n\nfunction mainThinkingLine(snapshot: ReturnType<MainWatchdogRuntime[\"getSnapshot\"]>, ctx: ExtensionContext): string {\n\tconst configuredModel = snapshot.config.main.model;\n\tconst configuredThinking = snapshot.config.main.thinking;\n\tif (configuredModel) {\n\t\tconst effective = resolveEffectiveThinking(configuredModel, configuredThinking);\n\t\tif (effective) return effective;\n\t\treturn \"off (default for explicit watchdog model)\";\n\t}\n\tif (configuredThinking === false) return \"off\";\n\tif (configuredThinking !== undefined) return configuredThinking;\n\tconst currentThinking = (ctx as { thinkingLevel?: unknown }).thinkingLevel;\n\treturn typeof currentThinking === \"string\" ? `current session (${currentThinking})` : \"current session\";\n}\n\nfunction mainModelLine(snapshot: ReturnType<MainWatchdogRuntime[\"getSnapshot\"]>, ctx: ExtensionContext): string {\n\tif (snapshot.config.main.model) {\n\t\tconst source = snapshot.sessionModelOverride?.model ? \"session override\" : \"configured\";\n\t\treturn `Main model: ${splitKnownThinkingSuffix(snapshot.config.main.model).baseModel} (${source})`;\n\t}\n\treturn `Main model: ${currentSessionModelLine(ctx)}`;\n}\n\nfunction childrenLine(snapshot: ReturnType<MainWatchdogRuntime[\"getSnapshot\"]>): string {\n\tconst children = snapshot.config.children;\n\tconst model = children.model ? splitKnownThinkingSuffix(children.model).baseModel : \"current child session\";\n\tconst thinking = children.thinking === undefined ? \"current child session\" : children.thinking === false ? \"off\" : children.thinking;\n\tconst overrides = Object.entries(children.overrides);\n\tconst overrideText = overrides.length\n\t\t? ` · overrides ${overrides.map(([agent, override]) => {\n\t\t\tconst bits = [agent];\n\t\t\tif (override.enabled !== undefined) bits.push(boolLabel(override.enabled));\n\t\t\tif (override.model) bits.push(splitKnownThinkingSuffix(override.model).baseModel);\n\t\t\tif (override.thinking !== undefined) bits.push(`thinking ${override.thinking === false ? \"off\" : override.thinking}`);\n\t\t\treturn bits.join(\" \");\n\t\t}).join(\"; \")}`\n\t\t: \"\";\n\treturn `Children: ${boolLabel(snapshot.config.enabled && children.enabled)} · model ${model} · thinking ${thinking}${overrideText}`;\n}\n\nfunction recommendationLine(ctx: ExtensionContext): string {\n\ttry {\n\t\tconst recommendation = recommendStrongWatchdogModel(ctx);\n\t\treturn `Recommended strong watchdog: ${recommendation.model}:${recommendation.thinking} (${recommendation.label}, complementary reviewer)`;\n\t} catch (error) {\n\t\treturn `Recommended strong watchdog: unavailable (${messageFromError(error)})`;\n\t}\n}\n\nfunction lspLine(snapshot: ReturnType<MainWatchdogRuntime[\"getSnapshot\"]>): string {\n\tconst lsp = snapshot.lsp;\n\tconst provider = lsp.provider ? ` · ${lsp.provider}` : \"\";\n\tconst counts = lsp.diagnosticCount > 0 || lsp.freshDiagnosticCount > 0\n\t\t? ` · ${lsp.freshDiagnosticCount} new/${lsp.diagnosticCount} total`\n\t\t: \"\";\n\tconst message = lsp.message ? ` · ${lsp.message}` : \"\";\n\treturn `LSP diagnostics: ${lsp.enabled ? \"on\" : \"off\"} · ${lsp.status}${provider}${counts}${message}`;\n}\n\nexport function buildWatchdogStatus(snapshot: ReturnType<MainWatchdogRuntime[\"getSnapshot\"]>, ctx: ExtensionContext): string {\n\tconst lines = [\n\t\t\"Subagent watchdog\",\n\t\t`Main: ${boolLabel(snapshot.enabled)}${!snapshot.config.enabled && snapshot.sessionOverride === undefined ? \" (default off)\" : \"\"}`,\n\t\t`Runtime: ${statusLabel(snapshot.status)}${snapshot.bufferedDeltas > 0 ? ` · buffered deltas ${snapshot.bufferedDeltas}` : \"\"}`,\n\t\t`Review trigger: ${snapshot.reviewTrigger === \"repo-edits\" ? \"repo edits only\" : \"every non-empty turn delta\"}`,\n\t\tlspLine(snapshot),\n\t\t`Session override: ${snapshot.sessionOverride === undefined ? \"none\" : boolLabel(snapshot.sessionOverride)}`,\n\t\tmainModelLine(snapshot, ctx),\n\t\t`Main thinking: ${mainThinkingLine(snapshot, ctx)}`,\n\t\tchildrenLine(snapshot),\n\t\trecommendationLine(ctx),\n\t\t`Agent-end timeout: ${snapshot.config.agentEndTimeoutMs}ms`,\n\t\t`Auto-follow: not implemented${snapshot.autoFollowQueued ? \" (queued)\" : \"\"}`,\n\t\t`Review model call: ${snapshot.reviewDescription}`,\n\t];\n\tif (snapshot.failedReviews > 0) lines.push(`Failed reviews: ${snapshot.failedReviews}`);\n\tif (snapshot.staleReviews > 0) lines.push(`Stale reviews: ${snapshot.staleReviews}`);\n\tif (snapshot.changedPaths?.length) {\n\t\tlines.push(`Changed paths: ${snapshot.changedPaths.slice(0, 8).join(\", \")}${snapshot.changedPaths.length > 8 ? `, +${snapshot.changedPaths.length - 8} more` : \"\"}`);\n\t}\n\tif (snapshot.lastWarning) {\n\t\tlines.push(`Last warning: ${snapshot.lastWarning.severity} · ${snapshot.lastWarning.state ?? \"candidate\"} · ${snapshot.lastWarning.summary}`);\n\t}\n\tif (snapshot.lastError) lines.push(`Last error: ${snapshot.lastError}`);\n\tif (!snapshot.configOk) {\n\t\tlines.push(\"\", \"Config errors:\", ...snapshot.errors.map((error) => `- ${error.message}`), \"Watchdog is disabled until the config is fixed.\");\n\t} else {\n\t\tlines.push(\"\", \"Config: ok\");\n\t}\n\tlines.push(\n\t\t\"Sources:\",\n\t\t...snapshot.sources.map(sourceLine),\n\t\t\"\",\n\t\t\"Model commands:\",\n\t\t\"- /subagents-watchdog recommend-model\",\n\t\t\"- /subagents-watchdog model recommended\",\n\t\t\"- /subagents-watchdog model <provider/model[:thinking]>\",\n\t\t\"- /subagents-watchdog model inherit\",\n\t\t\"- /subagents-watchdog session model recommended\",\n\t\t\"Agent action: subagent({ action: \\\"watchdog.configure\\\", model: \\\"recommended\\\", scope: \\\"session\\\" })\",\n\t);\n\treturn lines.join(\"\\n\");\n}\n\nfunction parseTestCommand(input: string): { severity: \"concern\" | \"blocker\"; text: string } | undefined {\n\tconst match = input.match(/^test\\s+(concern|blocker)\\s+([\\s\\S]+)$/);\n\tif (!match) return undefined;\n\treturn { severity: match[1] as \"concern\" | \"blocker\", text: match[2]!.trim() };\n}\n\nfunction formatThinking(value: ThinkingLevel | false | undefined): string {\n\tif (value === undefined) return \"inherit\";\n\treturn value === false ? \"off\" : value;\n}\n\nfunction parseThinkingCommand(raw: string): ThinkingLevel | false | null {\n\tconst value = raw.trim();\n\tif (value === \"inherit\") return null;\n\treturn parseWatchdogThinkingInput(value, \"/subagents-watchdog thinking\") ?? null;\n}\n\nfunction resolveModelCommandValue(ctx: ExtensionCommandContext, raw: string): { model: string | null; thinking: ThinkingLevel | false | null; description: string } {\n\tconst value = raw.trim();\n\tif (!value) throw new Error(\"Expected a model, 'recommended', or 'inherit'.\");\n\tif (value === \"inherit\") return { model: null, thinking: null, description: \"current session model and thinking\" };\n\tif (value === \"recommended\") {\n\t\tconst recommendation = recommendStrongWatchdogModel(ctx as ExtensionContext);\n\t\treturn {\n\t\t\tmodel: recommendation.model,\n\t\t\tthinking: recommendation.thinking,\n\t\t\tdescription: `${recommendation.model}:${recommendation.thinking} (${recommendation.label})`,\n\t\t};\n\t}\n\tconst resolved = resolveWatchdogModelInput(ctx as ExtensionContext, value);\n\treturn {\n\t\tmodel: resolved.model,\n\t\tthinking: resolved.thinking,\n\t\tdescription: `${resolved.model}${resolved.thinking ? `:${resolved.thinking}` : \"\"}`,\n\t};\n}\n\nfunction buildRecommendationText(ctx: ExtensionCommandContext): string {\n\tconst recommendation = recommendStrongWatchdogModel(ctx as ExtensionContext);\n\treturn [\n\t\t\"Subagent watchdog recommended model\",\n\t\t`Current session: ${currentSessionModelLine(ctx as ExtensionContext)}`,\n\t\t`Recommended: ${recommendation.model}:${recommendation.thinking}`,\n\t\t`Reason: ${recommendation.reason}`,\n\t\t\"\",\n\t\t\"Apply for this session:\",\n\t\t\"/subagents-watchdog session model recommended\",\n\t\t\"\",\n\t\t\"Save as your user default:\",\n\t\t\"/subagents-watchdog model recommended\",\n\t].join(\"\\n\");\n}\n\nfunction buildCheckText(runtime: MainWatchdogRuntime, ctx: ExtensionCommandContext): string {\n\tconst snapshot = runtime.getSnapshot(ctx.cwd);\n\tif (!snapshot.configOk) {\n\t\treturn [\"Subagent watchdog config check\", \"\", \"Config errors:\", ...snapshot.errors.map((error) => `- ${error.message}`)].join(\"\\n\");\n\t}\n\tconst lines = [\"Subagent watchdog config check\", \"\", \"Config: ok\"];\n\tif (snapshot.config.main.model) {\n\t\tconst resolved = resolveWatchdogModelInput(ctx as ExtensionContext, snapshot.config.main.model);\n\t\tlines.push(`Main model: ${resolved.model} auth ok`);\n\t} else {\n\t\tlines.push(`Main model: ${currentSessionModelLine(ctx as ExtensionContext)}`);\n\t}\n\tlines.push(`Main thinking: ${mainThinkingLine(snapshot, ctx as ExtensionContext)}`);\n\tlines.push(lspLine(snapshot));\n\ttry {\n\t\tconst recommendation = recommendStrongWatchdogModel(ctx as ExtensionContext);\n\t\tlines.push(`Recommended strong watchdog: ${recommendation.model}:${recommendation.thinking}`);\n\t} catch (error) {\n\t\tlines.push(`Recommended strong watchdog: unavailable (${messageFromError(error)})`);\n\t}\n\treturn lines.join(\"\\n\");\n}\n\nfunction createTestWarning(severity: \"concern\" | \"blocker\", text: string): WatchdogWarning {\n\treturn {\n\t\tseverity,\n\t\tcategory: \"other\",\n\t\tconfidence: \"high\",\n\t\tsource: \"main\",\n\t\tstate: \"displayed\",\n\t\tsummary: text,\n\t\tevidence: `Manual /subagents-watchdog test ${severity} message from the main session.`,\n\t\trecommendedAction: severity === \"blocker\"\n\t\t\t? \"Verify the renderer and transcript delivery; no automatic follow-up is queued in Gate 1B.\"\n\t\t\t: \"Verify the renderer and transcript delivery; decide manually whether any action is needed.\",\n\t};\n}\n\nasync function handleWatchdogCommand(\n\tpi: ExtensionAPI,\n\truntime: MainWatchdogRuntime,\n\targs: string,\n\tctx: ExtensionCommandContext,\n): Promise<void> {\n\tconst input = args.trim();\n\tif (!input || input === \"status\") {\n\t\tsendSlashText(pi, buildWatchdogStatus(runtime.getSnapshot(ctx.cwd), ctx));\n\t\treturn;\n\t}\n\tif (input === \"recommend-model\") {\n\t\ttry {\n\t\t\tsendSlashText(pi, buildRecommendationText(ctx));\n\t\t} catch (error) {\n\t\t\tsendSlashText(pi, `Subagent watchdog recommended model\\n\\n${messageFromError(error)}`);\n\t\t}\n\t\treturn;\n\t}\n\tif (input === \"check\") {\n\t\ttry {\n\t\t\tsendSlashText(pi, buildCheckText(runtime, ctx));\n\t\t} catch (error) {\n\t\t\tsendSlashText(pi, `Subagent watchdog config check\\n\\n${messageFromError(error)}`);\n\t\t}\n\t\treturn;\n\t}\n\tif (input === \"on\" || input === \"off\") {\n\t\tconst enabled = input === \"on\";\n\t\ttry {\n\t\t\tconst settingsPath = writeUserWatchdogEnabled(enabled);\n\t\t\tconst snapshot = runtime.getSnapshot(ctx.cwd);\n\t\t\tsendSlashText(pi, [\n\t\t\t\t`Subagent watchdog ${boolLabel(enabled)} saved to user settings.`,\n\t\t\t\t`Updated: ${settingsPath}`,\n\t\t\t\t`Main now: ${boolLabel(snapshot.enabled)}${snapshot.sessionOverride !== undefined ? ` (session override ${boolLabel(snapshot.sessionOverride)})` : \"\"}`,\n\t\t\t].join(\"\\n\"));\n\t\t} catch (error) {\n\t\t\tsendSlashText(pi, `Subagent watchdog\\n\\nCould not update ${getWatchdogUserSettingsPath()}: ${messageFromError(error)}`);\n\t\t}\n\t\treturn;\n\t}\n\tif (input === \"session on\" || input === \"session off\") {\n\t\tconst enabled = input.endsWith(\"on\");\n\t\tconst snapshot = runtime.setSessionEnabled(enabled, ctx.cwd);\n\t\tsendSlashText(pi, [\n\t\t\t`Subagent watchdog session override: ${boolLabel(enabled)}.`,\n\t\t\t\"No settings files were changed.\",\n\t\t\t\"\",\n\t\t\tbuildWatchdogStatus(snapshot, ctx),\n\t\t].join(\"\\n\"));\n\t\treturn;\n\t}\n\tif (input.startsWith(\"session model \")) {\n\t\tconst rawModel = input.slice(\"session model \".length);\n\t\ttry {\n\t\t\tconst value = resolveModelCommandValue(ctx, rawModel);\n\t\t\tconst snapshot = value.model === null\n\t\t\t\t? runtime.clearSessionModel(ctx.cwd)\n\t\t\t\t: runtime.setSessionModel({ model: value.model, thinking: value.thinking ?? null }, ctx.cwd);\n\t\t\tsendSlashText(pi, [\n\t\t\t\t`Subagent watchdog session model: ${value.description}.`,\n\t\t\t\t\"No settings files were changed.\",\n\t\t\t\t\"\",\n\t\t\t\tbuildWatchdogStatus(snapshot, ctx),\n\t\t\t].join(\"\\n\"));\n\t\t} catch (error) {\n\t\t\tsendSlashText(pi, `Subagent watchdog session model\\n\\n${messageFromError(error)}`);\n\t\t}\n\t\treturn;\n\t}\n\tif (input.startsWith(\"model \")) {\n\t\tconst rawModel = input.slice(\"model \".length);\n\t\ttry {\n\t\t\tconst value = resolveModelCommandValue(ctx, rawModel);\n\t\t\tconst settingsPath = writeWatchdogModelSettings({\n\t\t\t\tscope: \"user\",\n\t\t\t\ttarget: { kind: \"main\" },\n\t\t\t\tmodel: value.model,\n\t\t\t\tthinking: value.thinking,\n\t\t\t});\n\t\t\truntime.refreshConfig(ctx.cwd);\n\t\t\tconst snapshot = runtime.getSnapshot(ctx.cwd);\n\t\t\tsendSlashText(pi, [\n\t\t\t\t`Subagent watchdog model saved: ${value.description}.`,\n\t\t\t\t`Updated: ${settingsPath}`,\n\t\t\t\t`Main now: ${boolLabel(snapshot.enabled)}`,\n\t\t\t\tvalue.model === null ? \"The watchdog now inherits the current session model and thinking.\" : \"Run /subagents-watchdog on if the watchdog is still off.\",\n\t\t\t\t\"\",\n\t\t\t\tbuildWatchdogStatus(snapshot, ctx),\n\t\t\t].join(\"\\n\"));\n\t\t} catch (error) {\n\t\t\tsendSlashText(pi, `Subagent watchdog model\\n\\n${messageFromError(error)}\\nNo settings files were changed.`);\n\t\t}\n\t\treturn;\n\t}\n\tif (input.startsWith(\"thinking \")) {\n\t\tconst rawThinking = input.slice(\"thinking \".length);\n\t\ttry {\n\t\t\tconst thinking = parseThinkingCommand(rawThinking);\n\t\t\tconst settingsPath = writeWatchdogModelSettings({\n\t\t\t\tscope: \"user\",\n\t\t\t\ttarget: { kind: \"main\" },\n\t\t\t\tthinking,\n\t\t\t});\n\t\t\truntime.refreshConfig(ctx.cwd);\n\t\t\tsendSlashText(pi, [\n\t\t\t\t`Subagent watchdog thinking saved: ${formatThinking(thinking ?? undefined)}.`,\n\t\t\t\t`Updated: ${settingsPath}`,\n\t\t\t\t\"\",\n\t\t\t\tbuildWatchdogStatus(runtime.getSnapshot(ctx.cwd), ctx),\n\t\t\t].join(\"\\n\"));\n\t\t} catch (error) {\n\t\t\tsendSlashText(pi, `Subagent watchdog thinking\\n\\n${messageFromError(error)}\\nNo settings files were changed.`);\n\t\t}\n\t\treturn;\n\t}\n\tconst test = parseTestCommand(input);\n\tif (test) {\n\t\tif (!test.text) {\n\t\t\tctx.ui.notify(\"Usage: /subagents-watchdog test concern|blocker <text>\", \"error\");\n\t\t\treturn;\n\t\t}\n\t\tconst warning = createTestWarning(test.severity, test.text);\n\t\tconst details = runtime.recordDisplayedWarning(warning);\n\t\tpi.sendMessage(createWatchdogWarningMessage(details, { display: true, details }));\n\t\treturn;\n\t}\n\tctx.ui.notify(`Usage: /subagents-watchdog [status|on|off|session on|session off|recommend-model|model recommended|model <provider/model[:thinking]>|model inherit|thinking ${THINKING_LEVELS.join(\"|\")}|thinking inherit|session model recommended|check|test concern <text>|test blocker <text>]`, \"error\");\n}\n\nexport function registerMainWatchdog(pi: ExtensionAPI, options: RegisterMainWatchdogOptions = {}): MainWatchdogRuntime {\n\tlet currentContext: ExtensionContext | undefined;\n\tconst rememberContext = (ctx: ExtensionContext) => {\n\t\tcurrentContext = ctx;\n\t};\n\tconst runtime = options.runtime ?? new MainWatchdogRuntime({\n\t\treview: options.review ?? createMainWatchdogReview(() => currentContext, { getThinkingLevel: () => pi.getThinkingLevel() }),\n\t\treviewDescription: options.review ? \"injected seam\" : \"real model review\",\n\t\treviewChangesOnly: true,\n\t\tdisplayWarning: (details) => {\n\t\t\tpi.sendMessage(createWatchdogWarningMessage(details, { display: true, details }));\n\t\t},\n\t});\n\n\tpi.registerMessageRenderer<WatchdogWarningDetails>(SUBAGENT_WATCHDOG_WARNING_TYPE, (message, renderOptions, theme) => {\n\t\tconst details = message.details as WatchdogWarningDetails | undefined;\n\t\tif (!details?.summary || !details.evidence || !details.recommendedAction) {\n\t\t\tconst content = typeof message.content === \"string\"\n\t\t\t\t? message.content\n\t\t\t\t: message.content.filter((entry) => entry.type === \"text\").map((entry) => entry.text).join(\"\\n\");\n\t\t\treturn new Text(content, 0, 0);\n\t\t}\n\t\treturn renderWatchdogWarning(details, renderOptions, theme);\n\t});\n\n\tpi.registerCommand(\"subagents-watchdog\", {\n\t\tdescription: \"Show or toggle the default-off subagent watchdog\",\n\t\thandler: (args, ctx) => {\n\t\t\trememberContext(ctx);\n\t\t\treturn handleWatchdogCommand(pi, runtime, args, ctx);\n\t\t},\n\t});\n\n\tpi.on(\"session_start\", (_event, ctx) => {\n\t\trememberContext(ctx);\n\t\truntime.bindSession(ctx);\n\t});\n\tpi.on(\"before_agent_start\", (event, ctx) => {\n\t\trememberContext(ctx);\n\t\truntime.handleBeforeAgentStart(event, ctx);\n\t});\n\tpi.on(\"turn_end\", (event, ctx) => {\n\t\trememberContext(ctx);\n\t\truntime.handleTurnEnd(event, ctx);\n\t});\n\tpi.on(\"agent_end\", (event, ctx) => {\n\t\trememberContext(ctx);\n\t\treturn runtime.handleAgentEnd(event, ctx);\n\t});\n\tpi.on(\"session_before_switch\", () => runtime.reset(\"session switch\", { clearReviewInputSignature: true, clearLspLedger: true }));\n\tpi.on(\"session_before_fork\", () => runtime.reset(\"session fork\", { clearReviewInputSignature: true, clearLspLedger: true }));\n\tpi.on(\"session_compact\", () => runtime.reset(\"session compact\"));\n\tpi.on(\"session_shutdown\", () => {\n\t\tcurrentContext = undefined;\n\t\truntime.dispose();\n\t});\n\n\treturn runtime;\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Text } from "@
|
|
1
|
+
import { Text } from "@ashx-j/lunr-tui";
|
|
2
2
|
import { resolveEffectiveThinking, splitKnownThinkingSuffix, THINKING_LEVELS } from "../shared/model-info.js";
|
|
3
3
|
import { SLASH_TEXT_RESULT_TYPE } from "../shared/types.js";
|
|
4
4
|
import { recommendStrongWatchdogModel, resolveWatchdogModelInput, parseWatchdogThinkingInput } from "./model-selection.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-main.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/watchdog/register-main.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport type { ExtensionAPI, ExtensionCommandContext, ExtensionContext } from \"@earendil-works/pi-coding-agent\";\nimport { Text } from \"@earendil-works/pi-tui\";\nimport { resolveEffectiveThinking, splitKnownThinkingSuffix, THINKING_LEVELS, type ThinkingLevel } from \"../shared/model-info.ts\";\nimport { SLASH_TEXT_RESULT_TYPE } from \"../shared/types.ts\";\nimport { recommendStrongWatchdogModel, resolveWatchdogModelInput, parseWatchdogThinkingInput } from \"./model-selection.ts\";\nimport { renderWatchdogWarning } from \"./render.ts\";\nimport { createMainWatchdogReview } from \"./review.ts\";\nimport { MainWatchdogRuntime, type WatchdogReviewFunction } from \"./runtime.ts\";\nimport { getWatchdogUserSettingsPath, writeUserWatchdogEnabled, writeWatchdogModelSettings } from \"./settings.ts\";\nimport {\n\tSUBAGENT_WATCHDOG_WARNING_TYPE,\n\ttype WatchdogRuntimeStatus,\n\ttype WatchdogWarning,\n\ttype WatchdogWarningDetails,\n} from \"./types.ts\";\nimport { createWatchdogWarningMessage } from \"./warning-format.ts\";\n\ninterface RegisterMainWatchdogOptions {\n\truntime?: MainWatchdogRuntime;\n\treview?: WatchdogReviewFunction;\n}\n\nfunction sendSlashText(pi: ExtensionAPI, text: string): void {\n\tpi.sendMessage({ customType: SLASH_TEXT_RESULT_TYPE, content: text, display: true });\n}\n\nfunction messageFromError(error: unknown): string {\n\treturn error instanceof Error ? error.message : String(error);\n}\n\nfunction boolLabel(value: boolean): string {\n\treturn value ? \"on\" : \"off\";\n}\n\nfunction statusLabel(status: WatchdogRuntimeStatus): string {\n\treturn status.replaceAll(\"-\", \" \");\n}\n\nfunction sourceLine(source: { scope: string; path?: string; exists: boolean }): string {\n\tconst location = source.path ? ` ${source.path}` : \"\";\n\treturn `- ${source.scope}${location}: ${source.exists ? \"found\" : \"not found\"}`;\n}\n\nfunction currentSessionModelLine(ctx: ExtensionContext): string {\n\tconst model = ctx.model as { provider?: unknown; id?: unknown } | undefined;\n\tif (model && typeof model.provider === \"string\" && typeof model.id === \"string\") return `current session (${model.provider}/${model.id})`;\n\treturn \"current session (not configured)\";\n}\n\nfunction mainThinkingLine(snapshot: ReturnType<MainWatchdogRuntime[\"getSnapshot\"]>, ctx: ExtensionContext): string {\n\tconst configuredModel = snapshot.config.main.model;\n\tconst configuredThinking = snapshot.config.main.thinking;\n\tif (configuredModel) {\n\t\tconst effective = resolveEffectiveThinking(configuredModel, configuredThinking);\n\t\tif (effective) return effective;\n\t\treturn \"off (default for explicit watchdog model)\";\n\t}\n\tif (configuredThinking === false) return \"off\";\n\tif (configuredThinking !== undefined) return configuredThinking;\n\tconst currentThinking = (ctx as { thinkingLevel?: unknown }).thinkingLevel;\n\treturn typeof currentThinking === \"string\" ? `current session (${currentThinking})` : \"current session\";\n}\n\nfunction mainModelLine(snapshot: ReturnType<MainWatchdogRuntime[\"getSnapshot\"]>, ctx: ExtensionContext): string {\n\tif (snapshot.config.main.model) {\n\t\tconst source = snapshot.sessionModelOverride?.model ? \"session override\" : \"configured\";\n\t\treturn `Main model: ${splitKnownThinkingSuffix(snapshot.config.main.model).baseModel} (${source})`;\n\t}\n\treturn `Main model: ${currentSessionModelLine(ctx)}`;\n}\n\nfunction childrenLine(snapshot: ReturnType<MainWatchdogRuntime[\"getSnapshot\"]>): string {\n\tconst children = snapshot.config.children;\n\tconst model = children.model ? splitKnownThinkingSuffix(children.model).baseModel : \"current child session\";\n\tconst thinking = children.thinking === undefined ? \"current child session\" : children.thinking === false ? \"off\" : children.thinking;\n\tconst overrides = Object.entries(children.overrides);\n\tconst overrideText = overrides.length\n\t\t? ` · overrides ${overrides.map(([agent, override]) => {\n\t\t\tconst bits = [agent];\n\t\t\tif (override.enabled !== undefined) bits.push(boolLabel(override.enabled));\n\t\t\tif (override.model) bits.push(splitKnownThinkingSuffix(override.model).baseModel);\n\t\t\tif (override.thinking !== undefined) bits.push(`thinking ${override.thinking === false ? \"off\" : override.thinking}`);\n\t\t\treturn bits.join(\" \");\n\t\t}).join(\"; \")}`\n\t\t: \"\";\n\treturn `Children: ${boolLabel(snapshot.config.enabled && children.enabled)} · model ${model} · thinking ${thinking}${overrideText}`;\n}\n\nfunction recommendationLine(ctx: ExtensionContext): string {\n\ttry {\n\t\tconst recommendation = recommendStrongWatchdogModel(ctx);\n\t\treturn `Recommended strong watchdog: ${recommendation.model}:${recommendation.thinking} (${recommendation.label}, complementary reviewer)`;\n\t} catch (error) {\n\t\treturn `Recommended strong watchdog: unavailable (${messageFromError(error)})`;\n\t}\n}\n\nfunction lspLine(snapshot: ReturnType<MainWatchdogRuntime[\"getSnapshot\"]>): string {\n\tconst lsp = snapshot.lsp;\n\tconst provider = lsp.provider ? ` · ${lsp.provider}` : \"\";\n\tconst counts = lsp.diagnosticCount > 0 || lsp.freshDiagnosticCount > 0\n\t\t? ` · ${lsp.freshDiagnosticCount} new/${lsp.diagnosticCount} total`\n\t\t: \"\";\n\tconst message = lsp.message ? ` · ${lsp.message}` : \"\";\n\treturn `LSP diagnostics: ${lsp.enabled ? \"on\" : \"off\"} · ${lsp.status}${provider}${counts}${message}`;\n}\n\nexport function buildWatchdogStatus(snapshot: ReturnType<MainWatchdogRuntime[\"getSnapshot\"]>, ctx: ExtensionContext): string {\n\tconst lines = [\n\t\t\"Subagent watchdog\",\n\t\t`Main: ${boolLabel(snapshot.enabled)}${!snapshot.config.enabled && snapshot.sessionOverride === undefined ? \" (default off)\" : \"\"}`,\n\t\t`Runtime: ${statusLabel(snapshot.status)}${snapshot.bufferedDeltas > 0 ? ` · buffered deltas ${snapshot.bufferedDeltas}` : \"\"}`,\n\t\t`Review trigger: ${snapshot.reviewTrigger === \"repo-edits\" ? \"repo edits only\" : \"every non-empty turn delta\"}`,\n\t\tlspLine(snapshot),\n\t\t`Session override: ${snapshot.sessionOverride === undefined ? \"none\" : boolLabel(snapshot.sessionOverride)}`,\n\t\tmainModelLine(snapshot, ctx),\n\t\t`Main thinking: ${mainThinkingLine(snapshot, ctx)}`,\n\t\tchildrenLine(snapshot),\n\t\trecommendationLine(ctx),\n\t\t`Agent-end timeout: ${snapshot.config.agentEndTimeoutMs}ms`,\n\t\t`Auto-follow: not implemented${snapshot.autoFollowQueued ? \" (queued)\" : \"\"}`,\n\t\t`Review model call: ${snapshot.reviewDescription}`,\n\t];\n\tif (snapshot.failedReviews > 0) lines.push(`Failed reviews: ${snapshot.failedReviews}`);\n\tif (snapshot.staleReviews > 0) lines.push(`Stale reviews: ${snapshot.staleReviews}`);\n\tif (snapshot.changedPaths?.length) {\n\t\tlines.push(`Changed paths: ${snapshot.changedPaths.slice(0, 8).join(\", \")}${snapshot.changedPaths.length > 8 ? `, +${snapshot.changedPaths.length - 8} more` : \"\"}`);\n\t}\n\tif (snapshot.lastWarning) {\n\t\tlines.push(`Last warning: ${snapshot.lastWarning.severity} · ${snapshot.lastWarning.state ?? \"candidate\"} · ${snapshot.lastWarning.summary}`);\n\t}\n\tif (snapshot.lastError) lines.push(`Last error: ${snapshot.lastError}`);\n\tif (!snapshot.configOk) {\n\t\tlines.push(\"\", \"Config errors:\", ...snapshot.errors.map((error) => `- ${error.message}`), \"Watchdog is disabled until the config is fixed.\");\n\t} else {\n\t\tlines.push(\"\", \"Config: ok\");\n\t}\n\tlines.push(\n\t\t\"Sources:\",\n\t\t...snapshot.sources.map(sourceLine),\n\t\t\"\",\n\t\t\"Model commands:\",\n\t\t\"- /subagents-watchdog recommend-model\",\n\t\t\"- /subagents-watchdog model recommended\",\n\t\t\"- /subagents-watchdog model <provider/model[:thinking]>\",\n\t\t\"- /subagents-watchdog model inherit\",\n\t\t\"- /subagents-watchdog session model recommended\",\n\t\t\"Agent action: subagent({ action: \\\"watchdog.configure\\\", model: \\\"recommended\\\", scope: \\\"session\\\" })\",\n\t);\n\treturn lines.join(\"\\n\");\n}\n\nfunction parseTestCommand(input: string): { severity: \"concern\" | \"blocker\"; text: string } | undefined {\n\tconst match = input.match(/^test\\s+(concern|blocker)\\s+([\\s\\S]+)$/);\n\tif (!match) return undefined;\n\treturn { severity: match[1] as \"concern\" | \"blocker\", text: match[2]!.trim() };\n}\n\nfunction formatThinking(value: ThinkingLevel | false | undefined): string {\n\tif (value === undefined) return \"inherit\";\n\treturn value === false ? \"off\" : value;\n}\n\nfunction parseThinkingCommand(raw: string): ThinkingLevel | false | null {\n\tconst value = raw.trim();\n\tif (value === \"inherit\") return null;\n\treturn parseWatchdogThinkingInput(value, \"/subagents-watchdog thinking\") ?? null;\n}\n\nfunction resolveModelCommandValue(ctx: ExtensionCommandContext, raw: string): { model: string | null; thinking: ThinkingLevel | false | null; description: string } {\n\tconst value = raw.trim();\n\tif (!value) throw new Error(\"Expected a model, 'recommended', or 'inherit'.\");\n\tif (value === \"inherit\") return { model: null, thinking: null, description: \"current session model and thinking\" };\n\tif (value === \"recommended\") {\n\t\tconst recommendation = recommendStrongWatchdogModel(ctx as ExtensionContext);\n\t\treturn {\n\t\t\tmodel: recommendation.model,\n\t\t\tthinking: recommendation.thinking,\n\t\t\tdescription: `${recommendation.model}:${recommendation.thinking} (${recommendation.label})`,\n\t\t};\n\t}\n\tconst resolved = resolveWatchdogModelInput(ctx as ExtensionContext, value);\n\treturn {\n\t\tmodel: resolved.model,\n\t\tthinking: resolved.thinking,\n\t\tdescription: `${resolved.model}${resolved.thinking ? `:${resolved.thinking}` : \"\"}`,\n\t};\n}\n\nfunction buildRecommendationText(ctx: ExtensionCommandContext): string {\n\tconst recommendation = recommendStrongWatchdogModel(ctx as ExtensionContext);\n\treturn [\n\t\t\"Subagent watchdog recommended model\",\n\t\t`Current session: ${currentSessionModelLine(ctx as ExtensionContext)}`,\n\t\t`Recommended: ${recommendation.model}:${recommendation.thinking}`,\n\t\t`Reason: ${recommendation.reason}`,\n\t\t\"\",\n\t\t\"Apply for this session:\",\n\t\t\"/subagents-watchdog session model recommended\",\n\t\t\"\",\n\t\t\"Save as your user default:\",\n\t\t\"/subagents-watchdog model recommended\",\n\t].join(\"\\n\");\n}\n\nfunction buildCheckText(runtime: MainWatchdogRuntime, ctx: ExtensionCommandContext): string {\n\tconst snapshot = runtime.getSnapshot(ctx.cwd);\n\tif (!snapshot.configOk) {\n\t\treturn [\"Subagent watchdog config check\", \"\", \"Config errors:\", ...snapshot.errors.map((error) => `- ${error.message}`)].join(\"\\n\");\n\t}\n\tconst lines = [\"Subagent watchdog config check\", \"\", \"Config: ok\"];\n\tif (snapshot.config.main.model) {\n\t\tconst resolved = resolveWatchdogModelInput(ctx as ExtensionContext, snapshot.config.main.model);\n\t\tlines.push(`Main model: ${resolved.model} auth ok`);\n\t} else {\n\t\tlines.push(`Main model: ${currentSessionModelLine(ctx as ExtensionContext)}`);\n\t}\n\tlines.push(`Main thinking: ${mainThinkingLine(snapshot, ctx as ExtensionContext)}`);\n\tlines.push(lspLine(snapshot));\n\ttry {\n\t\tconst recommendation = recommendStrongWatchdogModel(ctx as ExtensionContext);\n\t\tlines.push(`Recommended strong watchdog: ${recommendation.model}:${recommendation.thinking}`);\n\t} catch (error) {\n\t\tlines.push(`Recommended strong watchdog: unavailable (${messageFromError(error)})`);\n\t}\n\treturn lines.join(\"\\n\");\n}\n\nfunction createTestWarning(severity: \"concern\" | \"blocker\", text: string): WatchdogWarning {\n\treturn {\n\t\tseverity,\n\t\tcategory: \"other\",\n\t\tconfidence: \"high\",\n\t\tsource: \"main\",\n\t\tstate: \"displayed\",\n\t\tsummary: text,\n\t\tevidence: `Manual /subagents-watchdog test ${severity} message from the main session.`,\n\t\trecommendedAction: severity === \"blocker\"\n\t\t\t? \"Verify the renderer and transcript delivery; no automatic follow-up is queued in Gate 1B.\"\n\t\t\t: \"Verify the renderer and transcript delivery; decide manually whether any action is needed.\",\n\t};\n}\n\nasync function handleWatchdogCommand(\n\tpi: ExtensionAPI,\n\truntime: MainWatchdogRuntime,\n\targs: string,\n\tctx: ExtensionCommandContext,\n): Promise<void> {\n\tconst input = args.trim();\n\tif (!input || input === \"status\") {\n\t\tsendSlashText(pi, buildWatchdogStatus(runtime.getSnapshot(ctx.cwd), ctx));\n\t\treturn;\n\t}\n\tif (input === \"recommend-model\") {\n\t\ttry {\n\t\t\tsendSlashText(pi, buildRecommendationText(ctx));\n\t\t} catch (error) {\n\t\t\tsendSlashText(pi, `Subagent watchdog recommended model\\n\\n${messageFromError(error)}`);\n\t\t}\n\t\treturn;\n\t}\n\tif (input === \"check\") {\n\t\ttry {\n\t\t\tsendSlashText(pi, buildCheckText(runtime, ctx));\n\t\t} catch (error) {\n\t\t\tsendSlashText(pi, `Subagent watchdog config check\\n\\n${messageFromError(error)}`);\n\t\t}\n\t\treturn;\n\t}\n\tif (input === \"on\" || input === \"off\") {\n\t\tconst enabled = input === \"on\";\n\t\ttry {\n\t\t\tconst settingsPath = writeUserWatchdogEnabled(enabled);\n\t\t\tconst snapshot = runtime.getSnapshot(ctx.cwd);\n\t\t\tsendSlashText(pi, [\n\t\t\t\t`Subagent watchdog ${boolLabel(enabled)} saved to user settings.`,\n\t\t\t\t`Updated: ${settingsPath}`,\n\t\t\t\t`Main now: ${boolLabel(snapshot.enabled)}${snapshot.sessionOverride !== undefined ? ` (session override ${boolLabel(snapshot.sessionOverride)})` : \"\"}`,\n\t\t\t].join(\"\\n\"));\n\t\t} catch (error) {\n\t\t\tsendSlashText(pi, `Subagent watchdog\\n\\nCould not update ${getWatchdogUserSettingsPath()}: ${messageFromError(error)}`);\n\t\t}\n\t\treturn;\n\t}\n\tif (input === \"session on\" || input === \"session off\") {\n\t\tconst enabled = input.endsWith(\"on\");\n\t\tconst snapshot = runtime.setSessionEnabled(enabled, ctx.cwd);\n\t\tsendSlashText(pi, [\n\t\t\t`Subagent watchdog session override: ${boolLabel(enabled)}.`,\n\t\t\t\"No settings files were changed.\",\n\t\t\t\"\",\n\t\t\tbuildWatchdogStatus(snapshot, ctx),\n\t\t].join(\"\\n\"));\n\t\treturn;\n\t}\n\tif (input.startsWith(\"session model \")) {\n\t\tconst rawModel = input.slice(\"session model \".length);\n\t\ttry {\n\t\t\tconst value = resolveModelCommandValue(ctx, rawModel);\n\t\t\tconst snapshot = value.model === null\n\t\t\t\t? runtime.clearSessionModel(ctx.cwd)\n\t\t\t\t: runtime.setSessionModel({ model: value.model, thinking: value.thinking ?? null }, ctx.cwd);\n\t\t\tsendSlashText(pi, [\n\t\t\t\t`Subagent watchdog session model: ${value.description}.`,\n\t\t\t\t\"No settings files were changed.\",\n\t\t\t\t\"\",\n\t\t\t\tbuildWatchdogStatus(snapshot, ctx),\n\t\t\t].join(\"\\n\"));\n\t\t} catch (error) {\n\t\t\tsendSlashText(pi, `Subagent watchdog session model\\n\\n${messageFromError(error)}`);\n\t\t}\n\t\treturn;\n\t}\n\tif (input.startsWith(\"model \")) {\n\t\tconst rawModel = input.slice(\"model \".length);\n\t\ttry {\n\t\t\tconst value = resolveModelCommandValue(ctx, rawModel);\n\t\t\tconst settingsPath = writeWatchdogModelSettings({\n\t\t\t\tscope: \"user\",\n\t\t\t\ttarget: { kind: \"main\" },\n\t\t\t\tmodel: value.model,\n\t\t\t\tthinking: value.thinking,\n\t\t\t});\n\t\t\truntime.refreshConfig(ctx.cwd);\n\t\t\tconst snapshot = runtime.getSnapshot(ctx.cwd);\n\t\t\tsendSlashText(pi, [\n\t\t\t\t`Subagent watchdog model saved: ${value.description}.`,\n\t\t\t\t`Updated: ${settingsPath}`,\n\t\t\t\t`Main now: ${boolLabel(snapshot.enabled)}`,\n\t\t\t\tvalue.model === null ? \"The watchdog now inherits the current session model and thinking.\" : \"Run /subagents-watchdog on if the watchdog is still off.\",\n\t\t\t\t\"\",\n\t\t\t\tbuildWatchdogStatus(snapshot, ctx),\n\t\t\t].join(\"\\n\"));\n\t\t} catch (error) {\n\t\t\tsendSlashText(pi, `Subagent watchdog model\\n\\n${messageFromError(error)}\\nNo settings files were changed.`);\n\t\t}\n\t\treturn;\n\t}\n\tif (input.startsWith(\"thinking \")) {\n\t\tconst rawThinking = input.slice(\"thinking \".length);\n\t\ttry {\n\t\t\tconst thinking = parseThinkingCommand(rawThinking);\n\t\t\tconst settingsPath = writeWatchdogModelSettings({\n\t\t\t\tscope: \"user\",\n\t\t\t\ttarget: { kind: \"main\" },\n\t\t\t\tthinking,\n\t\t\t});\n\t\t\truntime.refreshConfig(ctx.cwd);\n\t\t\tsendSlashText(pi, [\n\t\t\t\t`Subagent watchdog thinking saved: ${formatThinking(thinking ?? undefined)}.`,\n\t\t\t\t`Updated: ${settingsPath}`,\n\t\t\t\t\"\",\n\t\t\t\tbuildWatchdogStatus(runtime.getSnapshot(ctx.cwd), ctx),\n\t\t\t].join(\"\\n\"));\n\t\t} catch (error) {\n\t\t\tsendSlashText(pi, `Subagent watchdog thinking\\n\\n${messageFromError(error)}\\nNo settings files were changed.`);\n\t\t}\n\t\treturn;\n\t}\n\tconst test = parseTestCommand(input);\n\tif (test) {\n\t\tif (!test.text) {\n\t\t\tctx.ui.notify(\"Usage: /subagents-watchdog test concern|blocker <text>\", \"error\");\n\t\t\treturn;\n\t\t}\n\t\tconst warning = createTestWarning(test.severity, test.text);\n\t\tconst details = runtime.recordDisplayedWarning(warning);\n\t\tpi.sendMessage(createWatchdogWarningMessage(details, { display: true, details }));\n\t\treturn;\n\t}\n\tctx.ui.notify(`Usage: /subagents-watchdog [status|on|off|session on|session off|recommend-model|model recommended|model <provider/model[:thinking]>|model inherit|thinking ${THINKING_LEVELS.join(\"|\")}|thinking inherit|session model recommended|check|test concern <text>|test blocker <text>]`, \"error\");\n}\n\nexport function registerMainWatchdog(pi: ExtensionAPI, options: RegisterMainWatchdogOptions = {}): MainWatchdogRuntime {\n\tlet currentContext: ExtensionContext | undefined;\n\tconst rememberContext = (ctx: ExtensionContext) => {\n\t\tcurrentContext = ctx;\n\t};\n\tconst runtime = options.runtime ?? new MainWatchdogRuntime({\n\t\treview: options.review ?? createMainWatchdogReview(() => currentContext, { getThinkingLevel: () => pi.getThinkingLevel() }),\n\t\treviewDescription: options.review ? \"injected seam\" : \"real model review\",\n\t\treviewChangesOnly: true,\n\t\tdisplayWarning: (details) => {\n\t\t\tpi.sendMessage(createWatchdogWarningMessage(details, { display: true, details }));\n\t\t},\n\t});\n\n\tpi.registerMessageRenderer<WatchdogWarningDetails>(SUBAGENT_WATCHDOG_WARNING_TYPE, (message, renderOptions, theme) => {\n\t\tconst details = message.details as WatchdogWarningDetails | undefined;\n\t\tif (!details?.summary || !details.evidence || !details.recommendedAction) {\n\t\t\tconst content = typeof message.content === \"string\"\n\t\t\t\t? message.content\n\t\t\t\t: message.content.filter((entry) => entry.type === \"text\").map((entry) => entry.text).join(\"\\n\");\n\t\t\treturn new Text(content, 0, 0);\n\t\t}\n\t\treturn renderWatchdogWarning(details, renderOptions, theme);\n\t});\n\n\tpi.registerCommand(\"subagents-watchdog\", {\n\t\tdescription: \"Show or toggle the default-off subagent watchdog\",\n\t\thandler: (args, ctx) => {\n\t\t\trememberContext(ctx);\n\t\t\treturn handleWatchdogCommand(pi, runtime, args, ctx);\n\t\t},\n\t});\n\n\tpi.on(\"session_start\", (_event, ctx) => {\n\t\trememberContext(ctx);\n\t\truntime.bindSession(ctx);\n\t});\n\tpi.on(\"before_agent_start\", (event, ctx) => {\n\t\trememberContext(ctx);\n\t\truntime.handleBeforeAgentStart(event, ctx);\n\t});\n\tpi.on(\"turn_end\", (event, ctx) => {\n\t\trememberContext(ctx);\n\t\truntime.handleTurnEnd(event, ctx);\n\t});\n\tpi.on(\"agent_end\", (event, ctx) => {\n\t\trememberContext(ctx);\n\t\treturn runtime.handleAgentEnd(event, ctx);\n\t});\n\tpi.on(\"session_before_switch\", () => runtime.reset(\"session switch\", { clearReviewInputSignature: true, clearLspLedger: true }));\n\tpi.on(\"session_before_fork\", () => runtime.reset(\"session fork\", { clearReviewInputSignature: true, clearLspLedger: true }));\n\tpi.on(\"session_compact\", () => runtime.reset(\"session compact\"));\n\tpi.on(\"session_shutdown\", () => {\n\t\tcurrentContext = undefined;\n\t\truntime.dispose();\n\t});\n\n\treturn runtime;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"register-main.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/watchdog/register-main.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAClI,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,4BAA4B,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAC3H,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAA+B,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAClH,OAAO,EACN,8BAA8B,GAI9B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAOnE,SAAS,aAAa,CAAC,EAAgB,EAAE,IAAY,EAAQ;IAC5D,EAAE,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAAA,CACrF;AAED,SAAS,gBAAgB,CAAC,KAAc,EAAU;IACjD,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAAA,CAC9D;AAED,SAAS,SAAS,CAAC,KAAc,EAAU;IAC1C,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAAA,CAC5B;AAED,SAAS,WAAW,CAAC,MAA6B,EAAU;IAC3D,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAAA,CACnC;AAED,SAAS,UAAU,CAAC,MAAyD,EAAU;IACtF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,OAAO,KAAK,MAAM,CAAC,KAAK,GAAG,QAAQ,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAAA,CAChF;AAED,SAAS,uBAAuB,CAAC,GAAqB,EAAU;IAC/D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAyD,CAAC;IAC5E,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;QAAE,OAAO,oBAAoB,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,EAAE,GAAG,CAAC;IAC1I,OAAO,kCAAkC,CAAC;AAAA,CAC1C;AAED,SAAS,gBAAgB,CAAC,QAAwD,EAAE,GAAqB,EAAU;IAClH,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IACnD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;IACzD,IAAI,eAAe,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,wBAAwB,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;QAChF,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC;QAChC,OAAO,2CAA2C,CAAC;IACpD,CAAC;IACD,IAAI,kBAAkB,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAC/C,IAAI,kBAAkB,KAAK,SAAS;QAAE,OAAO,kBAAkB,CAAC;IAChE,MAAM,eAAe,GAAI,GAAmC,CAAC,aAAa,CAAC;IAC3E,OAAO,OAAO,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,oBAAoB,eAAe,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC;AAAA,CACxG;AAED,SAAS,aAAa,CAAC,QAAwD,EAAE,GAAqB,EAAU;IAC/G,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC;QACxF,OAAO,eAAe,wBAAwB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,MAAM,GAAG,CAAC;IACpG,CAAC;IACD,OAAO,eAAe,uBAAuB,CAAC,GAAG,CAAC,EAAE,CAAC;AAAA,CACrD;AAED,SAAS,YAAY,CAAC,QAAwD,EAAU;IACvF,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC;IAC5G,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACrI,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM;QACpC,CAAC,CAAC,iBAAgB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;YACtD,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;YACrB,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS;gBAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3E,IAAI,QAAQ,CAAC,KAAK;gBAAE,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC;YAClF,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS;gBAAE,IAAI,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;YACtH,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAA,CACtB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACf,CAAC,CAAC,EAAE,CAAC;IACN,OAAO,aAAa,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,aAAY,KAAK,gBAAe,QAAQ,GAAG,YAAY,EAAE,CAAC;AAAA,CACpI;AAED,SAAS,kBAAkB,CAAC,GAAqB,EAAU;IAC1D,IAAI,CAAC;QACJ,MAAM,cAAc,GAAG,4BAA4B,CAAC,GAAG,CAAC,CAAC;QACzD,OAAO,gCAAgC,cAAc,CAAC,KAAK,IAAI,cAAc,CAAC,QAAQ,KAAK,cAAc,CAAC,KAAK,2BAA2B,CAAC;IAC5I,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,6CAA6C,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC;IAChF,CAAC;AAAA,CACD;AAED,SAAS,OAAO,CAAC,QAAwD,EAAU;IAClF,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;IACzB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,MAAM,MAAM,GAAG,GAAG,CAAC,eAAe,GAAG,CAAC,IAAI,GAAG,CAAC,oBAAoB,GAAG,CAAC;QACrE,CAAC,CAAC,OAAM,GAAG,CAAC,oBAAoB,QAAQ,GAAG,CAAC,eAAe,QAAQ;QACnE,CAAC,CAAC,EAAE,CAAC;IACN,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAM,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,OAAO,oBAAoB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAM,GAAG,CAAC,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,EAAE,CAAC;AAAA,CACtG;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAwD,EAAE,GAAqB,EAAU;IAC5H,MAAM,KAAK,GAAG;QACb,mBAAmB;QACnB,SAAS,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE;QACnI,YAAY,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAsB,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/H,mBAAmB,QAAQ,CAAC,aAAa,KAAK,YAAY,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,4BAA4B,EAAE;QAC/G,OAAO,CAAC,QAAQ,CAAC;QACjB,qBAAqB,QAAQ,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;QAC5G,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC;QAC5B,kBAAkB,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE;QACnD,YAAY,CAAC,QAAQ,CAAC;QACtB,kBAAkB,CAAC,GAAG,CAAC;QACvB,sBAAsB,QAAQ,CAAC,MAAM,CAAC,iBAAiB,IAAI;QAC3D,+BAA+B,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7E,sBAAsB,QAAQ,CAAC,iBAAiB,EAAE;KAClD,CAAC;IACF,IAAI,QAAQ,CAAC,aAAa,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IACxF,IAAI,QAAQ,CAAC,YAAY,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;IACrF,IAAI,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,kBAAkB,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtK,CAAC;IACD,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,iBAAiB,QAAQ,CAAC,WAAW,CAAC,QAAQ,OAAM,QAAQ,CAAC,WAAW,CAAC,KAAK,IAAI,WAAW,OAAM,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/I,CAAC;IACD,IAAI,QAAQ,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IACxE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,gBAAgB,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,iDAAiD,CAAC,CAAC;IAC9I,CAAC;SAAM,CAAC;QACP,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;IAC9B,CAAC;IACD,KAAK,CAAC,IAAI,CACT,UAAU,EACV,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EACnC,EAAE,EACF,iBAAiB,EACjB,uCAAuC,EACvC,yCAAyC,EACzC,yDAAyD,EACzD,qCAAqC,EACrC,iDAAiD,EACjD,wGAAwG,CACxG,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAAA,CACxB;AAED,SAAS,gBAAgB,CAAC,KAAa,EAAiE;IACvG,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACpE,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAA0B,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,EAAE,CAAC;AAAA,CAC/E;AAED,SAAS,cAAc,CAAC,KAAwC,EAAU;IACzE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,OAAO,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAAA,CACvC;AAED,SAAS,oBAAoB,CAAC,GAAW,EAAgC;IACxE,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,0BAA0B,CAAC,KAAK,EAAE,8BAA8B,CAAC,IAAI,IAAI,CAAC;AAAA,CACjF;AAED,SAAS,wBAAwB,CAAC,GAA4B,EAAE,GAAW,EAAyF;IACnK,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAC9E,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,oCAAoC,EAAE,CAAC;IACnH,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;QAC7B,MAAM,cAAc,GAAG,4BAA4B,CAAC,GAAuB,CAAC,CAAC;QAC7E,OAAO;YACN,KAAK,EAAE,cAAc,CAAC,KAAK;YAC3B,QAAQ,EAAE,cAAc,CAAC,QAAQ;YACjC,WAAW,EAAE,GAAG,cAAc,CAAC,KAAK,IAAI,cAAc,CAAC,QAAQ,KAAK,cAAc,CAAC,KAAK,GAAG;SAC3F,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,yBAAyB,CAAC,GAAuB,EAAE,KAAK,CAAC,CAAC;IAC3E,OAAO;QACN,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;KACnF,CAAC;AAAA,CACF;AAED,SAAS,uBAAuB,CAAC,GAA4B,EAAU;IACtE,MAAM,cAAc,GAAG,4BAA4B,CAAC,GAAuB,CAAC,CAAC;IAC7E,OAAO;QACN,qCAAqC;QACrC,oBAAoB,uBAAuB,CAAC,GAAuB,CAAC,EAAE;QACtE,gBAAgB,cAAc,CAAC,KAAK,IAAI,cAAc,CAAC,QAAQ,EAAE;QACjE,WAAW,cAAc,CAAC,MAAM,EAAE;QAClC,EAAE;QACF,yBAAyB;QACzB,+CAA+C;QAC/C,EAAE;QACF,4BAA4B;QAC5B,uCAAuC;KACvC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAAA,CACb;AAED,SAAS,cAAc,CAAC,OAA4B,EAAE,GAA4B,EAAU;IAC3F,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO,CAAC,gCAAgC,EAAE,EAAE,EAAE,gBAAgB,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrI,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,gCAAgC,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;IACnE,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,yBAAyB,CAAC,GAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChG,KAAK,CAAC,IAAI,CAAC,eAAe,QAAQ,CAAC,KAAK,UAAU,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACP,KAAK,CAAC,IAAI,CAAC,eAAe,uBAAuB,CAAC,GAAuB,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,kBAAkB,gBAAgB,CAAC,QAAQ,EAAE,GAAuB,CAAC,EAAE,CAAC,CAAC;IACpF,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC;QACJ,MAAM,cAAc,GAAG,4BAA4B,CAAC,GAAuB,CAAC,CAAC;QAC7E,KAAK,CAAC,IAAI,CAAC,gCAAgC,cAAc,CAAC,KAAK,IAAI,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,6CAA6C,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAAA,CACxB;AAED,SAAS,iBAAiB,CAAC,QAA+B,EAAE,IAAY,EAAmB;IAC1F,OAAO;QACN,QAAQ;QACR,QAAQ,EAAE,OAAO;QACjB,UAAU,EAAE,MAAM;QAClB,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,mCAAmC,QAAQ,iCAAiC;QACtF,iBAAiB,EAAE,QAAQ,KAAK,SAAS;YACxC,CAAC,CAAC,2FAA2F;YAC7F,CAAC,CAAC,4FAA4F;KAC/F,CAAC;AAAA,CACF;AAED,KAAK,UAAU,qBAAqB,CACnC,EAAgB,EAChB,OAA4B,EAC5B,IAAY,EACZ,GAA4B,EACZ;IAChB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1B,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QAClC,aAAa,CAAC,EAAE,EAAE,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC1E,OAAO;IACR,CAAC;IACD,IAAI,KAAK,KAAK,iBAAiB,EAAE,CAAC;QACjC,IAAI,CAAC;YACJ,aAAa,CAAC,EAAE,EAAE,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,aAAa,CAAC,EAAE,EAAE,0CAA0C,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,OAAO;IACR,CAAC;IACD,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACvB,IAAI,CAAC;YACJ,aAAa,CAAC,EAAE,EAAE,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,aAAa,CAAC,EAAE,EAAE,qCAAqC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,OAAO;IACR,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,KAAK,KAAK,IAAI,CAAC;QAC/B,IAAI,CAAC;YACJ,MAAM,YAAY,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9C,aAAa,CAAC,EAAE,EAAE;gBACjB,qBAAqB,SAAS,CAAC,OAAO,CAAC,0BAA0B;gBACjE,YAAY,YAAY,EAAE;gBAC1B,aAAa,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,sBAAsB,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;aACvJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,aAAa,CAAC,EAAE,EAAE,yCAAyC,2BAA2B,EAAE,KAAK,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzH,CAAC;QACD,OAAO;IACR,CAAC;IACD,IAAI,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;QACvD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7D,aAAa,CAAC,EAAE,EAAE;YACjB,uCAAuC,SAAS,CAAC,OAAO,CAAC,GAAG;YAC5D,iCAAiC;YACjC,EAAE;YACF,mBAAmB,CAAC,QAAQ,EAAE,GAAG,CAAC;SAClC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACd,OAAO;IACR,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,wBAAwB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,KAAK,IAAI;gBACpC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC;gBACpC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9F,aAAa,CAAC,EAAE,EAAE;gBACjB,oCAAoC,KAAK,CAAC,WAAW,GAAG;gBACxD,iCAAiC;gBACjC,EAAE;gBACF,mBAAmB,CAAC,QAAQ,EAAE,GAAG,CAAC;aAClC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,aAAa,CAAC,EAAE,EAAE,sCAAsC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,OAAO;IACR,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,wBAAwB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACtD,MAAM,YAAY,GAAG,0BAA0B,CAAC;gBAC/C,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;gBACxB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACxB,CAAC,CAAC;YACH,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9C,aAAa,CAAC,EAAE,EAAE;gBACjB,kCAAkC,KAAK,CAAC,WAAW,GAAG;gBACtD,YAAY,YAAY,EAAE;gBAC1B,aAAa,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;gBAC1C,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,mEAAmE,CAAC,CAAC,CAAC,0DAA0D;gBACvJ,EAAE;gBACF,mBAAmB,CAAC,QAAQ,EAAE,GAAG,CAAC;aAClC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,aAAa,CAAC,EAAE,EAAE,8BAA8B,gBAAgB,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAC7G,CAAC;QACD,OAAO;IACR,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,YAAY,GAAG,0BAA0B,CAAC;gBAC/C,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;gBACxB,QAAQ;aACR,CAAC,CAAC;YACH,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,aAAa,CAAC,EAAE,EAAE;gBACjB,qCAAqC,cAAc,CAAC,QAAQ,IAAI,SAAS,CAAC,GAAG;gBAC7E,YAAY,YAAY,EAAE;gBAC1B,EAAE;gBACF,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;aACtD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,aAAa,CAAC,EAAE,EAAE,iCAAiC,gBAAgB,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAChH,CAAC;QACD,OAAO;IACR,CAAC;IACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,IAAI,EAAE,CAAC;QACV,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAChB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,wDAAwD,EAAE,OAAO,CAAC,CAAC;YACjF,OAAO;QACR,CAAC;QACD,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACxD,EAAE,CAAC,WAAW,CAAC,4BAA4B,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAClF,OAAO;IACR,CAAC;IACD,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,+JAA+J,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,4FAA4F,EAAE,OAAO,CAAC,CAAC;AAAA,CAC7S;AAED,MAAM,UAAU,oBAAoB,CAAC,EAAgB,EAAE,OAAO,GAAgC,EAAE,EAAuB;IACtH,IAAI,cAA4C,CAAC;IACjD,MAAM,eAAe,GAAG,CAAC,GAAqB,EAAE,EAAE,CAAC;QAClD,cAAc,GAAG,GAAG,CAAC;IAAA,CACrB,CAAC;IACF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,mBAAmB,CAAC;QAC1D,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,wBAAwB,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,gBAAgB,EAAE,EAAE,CAAC;QAC3H,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,mBAAmB;QACzE,iBAAiB,EAAE,IAAI;QACvB,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5B,EAAE,CAAC,WAAW,CAAC,4BAA4B,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAAA,CAClF;KACD,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,CAAyB,8BAA8B,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,CAAC;QACrH,MAAM,OAAO,GAAG,OAAO,CAAC,OAA6C,CAAC;QACtE,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC1E,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;gBAClD,CAAC,CAAC,OAAO,CAAC,OAAO;gBACjB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClG,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,qBAAqB,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IAAA,CAC5D,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,CAAC,oBAAoB,EAAE;QACxC,WAAW,EAAE,kDAAkD;QAC/D,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;YACvB,eAAe,CAAC,GAAG,CAAC,CAAC;YACrB,OAAO,qBAAqB,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAAA,CACrD;KACD,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;QACvC,eAAe,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAAA,CACzB,CAAC,CAAC;IACH,EAAE,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;QAC3C,eAAe,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,CAAC,sBAAsB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAAA,CAC3C,CAAC,CAAC;IACH,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;QACjC,eAAe,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAAA,CAClC,CAAC,CAAC;IACH,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;QAClC,eAAe,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAAA,CAC1C,CAAC,CAAC;IACH,EAAE,CAAC,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,yBAAyB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACjI,EAAE,CAAC,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,yBAAyB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7H,EAAE,CAAC,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACjE,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC;QAC/B,cAAc,GAAG,SAAS,CAAC;QAC3B,OAAO,CAAC,OAAO,EAAE,CAAC;IAAA,CAClB,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AAAA,CACf","sourcesContent":["// @ts-nocheck\nimport type { ExtensionAPI, ExtensionCommandContext, ExtensionContext } from \"@ashx-j/lunr\";\nimport { Text } from \"@ashx-j/lunr-tui\";\nimport { resolveEffectiveThinking, splitKnownThinkingSuffix, THINKING_LEVELS, type ThinkingLevel } from \"../shared/model-info.ts\";\nimport { SLASH_TEXT_RESULT_TYPE } from \"../shared/types.ts\";\nimport { recommendStrongWatchdogModel, resolveWatchdogModelInput, parseWatchdogThinkingInput } from \"./model-selection.ts\";\nimport { renderWatchdogWarning } from \"./render.ts\";\nimport { createMainWatchdogReview } from \"./review.ts\";\nimport { MainWatchdogRuntime, type WatchdogReviewFunction } from \"./runtime.ts\";\nimport { getWatchdogUserSettingsPath, writeUserWatchdogEnabled, writeWatchdogModelSettings } from \"./settings.ts\";\nimport {\n\tSUBAGENT_WATCHDOG_WARNING_TYPE,\n\ttype WatchdogRuntimeStatus,\n\ttype WatchdogWarning,\n\ttype WatchdogWarningDetails,\n} from \"./types.ts\";\nimport { createWatchdogWarningMessage } from \"./warning-format.ts\";\n\ninterface RegisterMainWatchdogOptions {\n\truntime?: MainWatchdogRuntime;\n\treview?: WatchdogReviewFunction;\n}\n\nfunction sendSlashText(pi: ExtensionAPI, text: string): void {\n\tpi.sendMessage({ customType: SLASH_TEXT_RESULT_TYPE, content: text, display: true });\n}\n\nfunction messageFromError(error: unknown): string {\n\treturn error instanceof Error ? error.message : String(error);\n}\n\nfunction boolLabel(value: boolean): string {\n\treturn value ? \"on\" : \"off\";\n}\n\nfunction statusLabel(status: WatchdogRuntimeStatus): string {\n\treturn status.replaceAll(\"-\", \" \");\n}\n\nfunction sourceLine(source: { scope: string; path?: string; exists: boolean }): string {\n\tconst location = source.path ? ` ${source.path}` : \"\";\n\treturn `- ${source.scope}${location}: ${source.exists ? \"found\" : \"not found\"}`;\n}\n\nfunction currentSessionModelLine(ctx: ExtensionContext): string {\n\tconst model = ctx.model as { provider?: unknown; id?: unknown } | undefined;\n\tif (model && typeof model.provider === \"string\" && typeof model.id === \"string\") return `current session (${model.provider}/${model.id})`;\n\treturn \"current session (not configured)\";\n}\n\nfunction mainThinkingLine(snapshot: ReturnType<MainWatchdogRuntime[\"getSnapshot\"]>, ctx: ExtensionContext): string {\n\tconst configuredModel = snapshot.config.main.model;\n\tconst configuredThinking = snapshot.config.main.thinking;\n\tif (configuredModel) {\n\t\tconst effective = resolveEffectiveThinking(configuredModel, configuredThinking);\n\t\tif (effective) return effective;\n\t\treturn \"off (default for explicit watchdog model)\";\n\t}\n\tif (configuredThinking === false) return \"off\";\n\tif (configuredThinking !== undefined) return configuredThinking;\n\tconst currentThinking = (ctx as { thinkingLevel?: unknown }).thinkingLevel;\n\treturn typeof currentThinking === \"string\" ? `current session (${currentThinking})` : \"current session\";\n}\n\nfunction mainModelLine(snapshot: ReturnType<MainWatchdogRuntime[\"getSnapshot\"]>, ctx: ExtensionContext): string {\n\tif (snapshot.config.main.model) {\n\t\tconst source = snapshot.sessionModelOverride?.model ? \"session override\" : \"configured\";\n\t\treturn `Main model: ${splitKnownThinkingSuffix(snapshot.config.main.model).baseModel} (${source})`;\n\t}\n\treturn `Main model: ${currentSessionModelLine(ctx)}`;\n}\n\nfunction childrenLine(snapshot: ReturnType<MainWatchdogRuntime[\"getSnapshot\"]>): string {\n\tconst children = snapshot.config.children;\n\tconst model = children.model ? splitKnownThinkingSuffix(children.model).baseModel : \"current child session\";\n\tconst thinking = children.thinking === undefined ? \"current child session\" : children.thinking === false ? \"off\" : children.thinking;\n\tconst overrides = Object.entries(children.overrides);\n\tconst overrideText = overrides.length\n\t\t? ` · overrides ${overrides.map(([agent, override]) => {\n\t\t\tconst bits = [agent];\n\t\t\tif (override.enabled !== undefined) bits.push(boolLabel(override.enabled));\n\t\t\tif (override.model) bits.push(splitKnownThinkingSuffix(override.model).baseModel);\n\t\t\tif (override.thinking !== undefined) bits.push(`thinking ${override.thinking === false ? \"off\" : override.thinking}`);\n\t\t\treturn bits.join(\" \");\n\t\t}).join(\"; \")}`\n\t\t: \"\";\n\treturn `Children: ${boolLabel(snapshot.config.enabled && children.enabled)} · model ${model} · thinking ${thinking}${overrideText}`;\n}\n\nfunction recommendationLine(ctx: ExtensionContext): string {\n\ttry {\n\t\tconst recommendation = recommendStrongWatchdogModel(ctx);\n\t\treturn `Recommended strong watchdog: ${recommendation.model}:${recommendation.thinking} (${recommendation.label}, complementary reviewer)`;\n\t} catch (error) {\n\t\treturn `Recommended strong watchdog: unavailable (${messageFromError(error)})`;\n\t}\n}\n\nfunction lspLine(snapshot: ReturnType<MainWatchdogRuntime[\"getSnapshot\"]>): string {\n\tconst lsp = snapshot.lsp;\n\tconst provider = lsp.provider ? ` · ${lsp.provider}` : \"\";\n\tconst counts = lsp.diagnosticCount > 0 || lsp.freshDiagnosticCount > 0\n\t\t? ` · ${lsp.freshDiagnosticCount} new/${lsp.diagnosticCount} total`\n\t\t: \"\";\n\tconst message = lsp.message ? ` · ${lsp.message}` : \"\";\n\treturn `LSP diagnostics: ${lsp.enabled ? \"on\" : \"off\"} · ${lsp.status}${provider}${counts}${message}`;\n}\n\nexport function buildWatchdogStatus(snapshot: ReturnType<MainWatchdogRuntime[\"getSnapshot\"]>, ctx: ExtensionContext): string {\n\tconst lines = [\n\t\t\"Subagent watchdog\",\n\t\t`Main: ${boolLabel(snapshot.enabled)}${!snapshot.config.enabled && snapshot.sessionOverride === undefined ? \" (default off)\" : \"\"}`,\n\t\t`Runtime: ${statusLabel(snapshot.status)}${snapshot.bufferedDeltas > 0 ? ` · buffered deltas ${snapshot.bufferedDeltas}` : \"\"}`,\n\t\t`Review trigger: ${snapshot.reviewTrigger === \"repo-edits\" ? \"repo edits only\" : \"every non-empty turn delta\"}`,\n\t\tlspLine(snapshot),\n\t\t`Session override: ${snapshot.sessionOverride === undefined ? \"none\" : boolLabel(snapshot.sessionOverride)}`,\n\t\tmainModelLine(snapshot, ctx),\n\t\t`Main thinking: ${mainThinkingLine(snapshot, ctx)}`,\n\t\tchildrenLine(snapshot),\n\t\trecommendationLine(ctx),\n\t\t`Agent-end timeout: ${snapshot.config.agentEndTimeoutMs}ms`,\n\t\t`Auto-follow: not implemented${snapshot.autoFollowQueued ? \" (queued)\" : \"\"}`,\n\t\t`Review model call: ${snapshot.reviewDescription}`,\n\t];\n\tif (snapshot.failedReviews > 0) lines.push(`Failed reviews: ${snapshot.failedReviews}`);\n\tif (snapshot.staleReviews > 0) lines.push(`Stale reviews: ${snapshot.staleReviews}`);\n\tif (snapshot.changedPaths?.length) {\n\t\tlines.push(`Changed paths: ${snapshot.changedPaths.slice(0, 8).join(\", \")}${snapshot.changedPaths.length > 8 ? `, +${snapshot.changedPaths.length - 8} more` : \"\"}`);\n\t}\n\tif (snapshot.lastWarning) {\n\t\tlines.push(`Last warning: ${snapshot.lastWarning.severity} · ${snapshot.lastWarning.state ?? \"candidate\"} · ${snapshot.lastWarning.summary}`);\n\t}\n\tif (snapshot.lastError) lines.push(`Last error: ${snapshot.lastError}`);\n\tif (!snapshot.configOk) {\n\t\tlines.push(\"\", \"Config errors:\", ...snapshot.errors.map((error) => `- ${error.message}`), \"Watchdog is disabled until the config is fixed.\");\n\t} else {\n\t\tlines.push(\"\", \"Config: ok\");\n\t}\n\tlines.push(\n\t\t\"Sources:\",\n\t\t...snapshot.sources.map(sourceLine),\n\t\t\"\",\n\t\t\"Model commands:\",\n\t\t\"- /subagents-watchdog recommend-model\",\n\t\t\"- /subagents-watchdog model recommended\",\n\t\t\"- /subagents-watchdog model <provider/model[:thinking]>\",\n\t\t\"- /subagents-watchdog model inherit\",\n\t\t\"- /subagents-watchdog session model recommended\",\n\t\t\"Agent action: subagent({ action: \\\"watchdog.configure\\\", model: \\\"recommended\\\", scope: \\\"session\\\" })\",\n\t);\n\treturn lines.join(\"\\n\");\n}\n\nfunction parseTestCommand(input: string): { severity: \"concern\" | \"blocker\"; text: string } | undefined {\n\tconst match = input.match(/^test\\s+(concern|blocker)\\s+([\\s\\S]+)$/);\n\tif (!match) return undefined;\n\treturn { severity: match[1] as \"concern\" | \"blocker\", text: match[2]!.trim() };\n}\n\nfunction formatThinking(value: ThinkingLevel | false | undefined): string {\n\tif (value === undefined) return \"inherit\";\n\treturn value === false ? \"off\" : value;\n}\n\nfunction parseThinkingCommand(raw: string): ThinkingLevel | false | null {\n\tconst value = raw.trim();\n\tif (value === \"inherit\") return null;\n\treturn parseWatchdogThinkingInput(value, \"/subagents-watchdog thinking\") ?? null;\n}\n\nfunction resolveModelCommandValue(ctx: ExtensionCommandContext, raw: string): { model: string | null; thinking: ThinkingLevel | false | null; description: string } {\n\tconst value = raw.trim();\n\tif (!value) throw new Error(\"Expected a model, 'recommended', or 'inherit'.\");\n\tif (value === \"inherit\") return { model: null, thinking: null, description: \"current session model and thinking\" };\n\tif (value === \"recommended\") {\n\t\tconst recommendation = recommendStrongWatchdogModel(ctx as ExtensionContext);\n\t\treturn {\n\t\t\tmodel: recommendation.model,\n\t\t\tthinking: recommendation.thinking,\n\t\t\tdescription: `${recommendation.model}:${recommendation.thinking} (${recommendation.label})`,\n\t\t};\n\t}\n\tconst resolved = resolveWatchdogModelInput(ctx as ExtensionContext, value);\n\treturn {\n\t\tmodel: resolved.model,\n\t\tthinking: resolved.thinking,\n\t\tdescription: `${resolved.model}${resolved.thinking ? `:${resolved.thinking}` : \"\"}`,\n\t};\n}\n\nfunction buildRecommendationText(ctx: ExtensionCommandContext): string {\n\tconst recommendation = recommendStrongWatchdogModel(ctx as ExtensionContext);\n\treturn [\n\t\t\"Subagent watchdog recommended model\",\n\t\t`Current session: ${currentSessionModelLine(ctx as ExtensionContext)}`,\n\t\t`Recommended: ${recommendation.model}:${recommendation.thinking}`,\n\t\t`Reason: ${recommendation.reason}`,\n\t\t\"\",\n\t\t\"Apply for this session:\",\n\t\t\"/subagents-watchdog session model recommended\",\n\t\t\"\",\n\t\t\"Save as your user default:\",\n\t\t\"/subagents-watchdog model recommended\",\n\t].join(\"\\n\");\n}\n\nfunction buildCheckText(runtime: MainWatchdogRuntime, ctx: ExtensionCommandContext): string {\n\tconst snapshot = runtime.getSnapshot(ctx.cwd);\n\tif (!snapshot.configOk) {\n\t\treturn [\"Subagent watchdog config check\", \"\", \"Config errors:\", ...snapshot.errors.map((error) => `- ${error.message}`)].join(\"\\n\");\n\t}\n\tconst lines = [\"Subagent watchdog config check\", \"\", \"Config: ok\"];\n\tif (snapshot.config.main.model) {\n\t\tconst resolved = resolveWatchdogModelInput(ctx as ExtensionContext, snapshot.config.main.model);\n\t\tlines.push(`Main model: ${resolved.model} auth ok`);\n\t} else {\n\t\tlines.push(`Main model: ${currentSessionModelLine(ctx as ExtensionContext)}`);\n\t}\n\tlines.push(`Main thinking: ${mainThinkingLine(snapshot, ctx as ExtensionContext)}`);\n\tlines.push(lspLine(snapshot));\n\ttry {\n\t\tconst recommendation = recommendStrongWatchdogModel(ctx as ExtensionContext);\n\t\tlines.push(`Recommended strong watchdog: ${recommendation.model}:${recommendation.thinking}`);\n\t} catch (error) {\n\t\tlines.push(`Recommended strong watchdog: unavailable (${messageFromError(error)})`);\n\t}\n\treturn lines.join(\"\\n\");\n}\n\nfunction createTestWarning(severity: \"concern\" | \"blocker\", text: string): WatchdogWarning {\n\treturn {\n\t\tseverity,\n\t\tcategory: \"other\",\n\t\tconfidence: \"high\",\n\t\tsource: \"main\",\n\t\tstate: \"displayed\",\n\t\tsummary: text,\n\t\tevidence: `Manual /subagents-watchdog test ${severity} message from the main session.`,\n\t\trecommendedAction: severity === \"blocker\"\n\t\t\t? \"Verify the renderer and transcript delivery; no automatic follow-up is queued in Gate 1B.\"\n\t\t\t: \"Verify the renderer and transcript delivery; decide manually whether any action is needed.\",\n\t};\n}\n\nasync function handleWatchdogCommand(\n\tpi: ExtensionAPI,\n\truntime: MainWatchdogRuntime,\n\targs: string,\n\tctx: ExtensionCommandContext,\n): Promise<void> {\n\tconst input = args.trim();\n\tif (!input || input === \"status\") {\n\t\tsendSlashText(pi, buildWatchdogStatus(runtime.getSnapshot(ctx.cwd), ctx));\n\t\treturn;\n\t}\n\tif (input === \"recommend-model\") {\n\t\ttry {\n\t\t\tsendSlashText(pi, buildRecommendationText(ctx));\n\t\t} catch (error) {\n\t\t\tsendSlashText(pi, `Subagent watchdog recommended model\\n\\n${messageFromError(error)}`);\n\t\t}\n\t\treturn;\n\t}\n\tif (input === \"check\") {\n\t\ttry {\n\t\t\tsendSlashText(pi, buildCheckText(runtime, ctx));\n\t\t} catch (error) {\n\t\t\tsendSlashText(pi, `Subagent watchdog config check\\n\\n${messageFromError(error)}`);\n\t\t}\n\t\treturn;\n\t}\n\tif (input === \"on\" || input === \"off\") {\n\t\tconst enabled = input === \"on\";\n\t\ttry {\n\t\t\tconst settingsPath = writeUserWatchdogEnabled(enabled);\n\t\t\tconst snapshot = runtime.getSnapshot(ctx.cwd);\n\t\t\tsendSlashText(pi, [\n\t\t\t\t`Subagent watchdog ${boolLabel(enabled)} saved to user settings.`,\n\t\t\t\t`Updated: ${settingsPath}`,\n\t\t\t\t`Main now: ${boolLabel(snapshot.enabled)}${snapshot.sessionOverride !== undefined ? ` (session override ${boolLabel(snapshot.sessionOverride)})` : \"\"}`,\n\t\t\t].join(\"\\n\"));\n\t\t} catch (error) {\n\t\t\tsendSlashText(pi, `Subagent watchdog\\n\\nCould not update ${getWatchdogUserSettingsPath()}: ${messageFromError(error)}`);\n\t\t}\n\t\treturn;\n\t}\n\tif (input === \"session on\" || input === \"session off\") {\n\t\tconst enabled = input.endsWith(\"on\");\n\t\tconst snapshot = runtime.setSessionEnabled(enabled, ctx.cwd);\n\t\tsendSlashText(pi, [\n\t\t\t`Subagent watchdog session override: ${boolLabel(enabled)}.`,\n\t\t\t\"No settings files were changed.\",\n\t\t\t\"\",\n\t\t\tbuildWatchdogStatus(snapshot, ctx),\n\t\t].join(\"\\n\"));\n\t\treturn;\n\t}\n\tif (input.startsWith(\"session model \")) {\n\t\tconst rawModel = input.slice(\"session model \".length);\n\t\ttry {\n\t\t\tconst value = resolveModelCommandValue(ctx, rawModel);\n\t\t\tconst snapshot = value.model === null\n\t\t\t\t? runtime.clearSessionModel(ctx.cwd)\n\t\t\t\t: runtime.setSessionModel({ model: value.model, thinking: value.thinking ?? null }, ctx.cwd);\n\t\t\tsendSlashText(pi, [\n\t\t\t\t`Subagent watchdog session model: ${value.description}.`,\n\t\t\t\t\"No settings files were changed.\",\n\t\t\t\t\"\",\n\t\t\t\tbuildWatchdogStatus(snapshot, ctx),\n\t\t\t].join(\"\\n\"));\n\t\t} catch (error) {\n\t\t\tsendSlashText(pi, `Subagent watchdog session model\\n\\n${messageFromError(error)}`);\n\t\t}\n\t\treturn;\n\t}\n\tif (input.startsWith(\"model \")) {\n\t\tconst rawModel = input.slice(\"model \".length);\n\t\ttry {\n\t\t\tconst value = resolveModelCommandValue(ctx, rawModel);\n\t\t\tconst settingsPath = writeWatchdogModelSettings({\n\t\t\t\tscope: \"user\",\n\t\t\t\ttarget: { kind: \"main\" },\n\t\t\t\tmodel: value.model,\n\t\t\t\tthinking: value.thinking,\n\t\t\t});\n\t\t\truntime.refreshConfig(ctx.cwd);\n\t\t\tconst snapshot = runtime.getSnapshot(ctx.cwd);\n\t\t\tsendSlashText(pi, [\n\t\t\t\t`Subagent watchdog model saved: ${value.description}.`,\n\t\t\t\t`Updated: ${settingsPath}`,\n\t\t\t\t`Main now: ${boolLabel(snapshot.enabled)}`,\n\t\t\t\tvalue.model === null ? \"The watchdog now inherits the current session model and thinking.\" : \"Run /subagents-watchdog on if the watchdog is still off.\",\n\t\t\t\t\"\",\n\t\t\t\tbuildWatchdogStatus(snapshot, ctx),\n\t\t\t].join(\"\\n\"));\n\t\t} catch (error) {\n\t\t\tsendSlashText(pi, `Subagent watchdog model\\n\\n${messageFromError(error)}\\nNo settings files were changed.`);\n\t\t}\n\t\treturn;\n\t}\n\tif (input.startsWith(\"thinking \")) {\n\t\tconst rawThinking = input.slice(\"thinking \".length);\n\t\ttry {\n\t\t\tconst thinking = parseThinkingCommand(rawThinking);\n\t\t\tconst settingsPath = writeWatchdogModelSettings({\n\t\t\t\tscope: \"user\",\n\t\t\t\ttarget: { kind: \"main\" },\n\t\t\t\tthinking,\n\t\t\t});\n\t\t\truntime.refreshConfig(ctx.cwd);\n\t\t\tsendSlashText(pi, [\n\t\t\t\t`Subagent watchdog thinking saved: ${formatThinking(thinking ?? undefined)}.`,\n\t\t\t\t`Updated: ${settingsPath}`,\n\t\t\t\t\"\",\n\t\t\t\tbuildWatchdogStatus(runtime.getSnapshot(ctx.cwd), ctx),\n\t\t\t].join(\"\\n\"));\n\t\t} catch (error) {\n\t\t\tsendSlashText(pi, `Subagent watchdog thinking\\n\\n${messageFromError(error)}\\nNo settings files were changed.`);\n\t\t}\n\t\treturn;\n\t}\n\tconst test = parseTestCommand(input);\n\tif (test) {\n\t\tif (!test.text) {\n\t\t\tctx.ui.notify(\"Usage: /subagents-watchdog test concern|blocker <text>\", \"error\");\n\t\t\treturn;\n\t\t}\n\t\tconst warning = createTestWarning(test.severity, test.text);\n\t\tconst details = runtime.recordDisplayedWarning(warning);\n\t\tpi.sendMessage(createWatchdogWarningMessage(details, { display: true, details }));\n\t\treturn;\n\t}\n\tctx.ui.notify(`Usage: /subagents-watchdog [status|on|off|session on|session off|recommend-model|model recommended|model <provider/model[:thinking]>|model inherit|thinking ${THINKING_LEVELS.join(\"|\")}|thinking inherit|session model recommended|check|test concern <text>|test blocker <text>]`, \"error\");\n}\n\nexport function registerMainWatchdog(pi: ExtensionAPI, options: RegisterMainWatchdogOptions = {}): MainWatchdogRuntime {\n\tlet currentContext: ExtensionContext | undefined;\n\tconst rememberContext = (ctx: ExtensionContext) => {\n\t\tcurrentContext = ctx;\n\t};\n\tconst runtime = options.runtime ?? new MainWatchdogRuntime({\n\t\treview: options.review ?? createMainWatchdogReview(() => currentContext, { getThinkingLevel: () => pi.getThinkingLevel() }),\n\t\treviewDescription: options.review ? \"injected seam\" : \"real model review\",\n\t\treviewChangesOnly: true,\n\t\tdisplayWarning: (details) => {\n\t\t\tpi.sendMessage(createWatchdogWarningMessage(details, { display: true, details }));\n\t\t},\n\t});\n\n\tpi.registerMessageRenderer<WatchdogWarningDetails>(SUBAGENT_WATCHDOG_WARNING_TYPE, (message, renderOptions, theme) => {\n\t\tconst details = message.details as WatchdogWarningDetails | undefined;\n\t\tif (!details?.summary || !details.evidence || !details.recommendedAction) {\n\t\t\tconst content = typeof message.content === \"string\"\n\t\t\t\t? message.content\n\t\t\t\t: message.content.filter((entry) => entry.type === \"text\").map((entry) => entry.text).join(\"\\n\");\n\t\t\treturn new Text(content, 0, 0);\n\t\t}\n\t\treturn renderWatchdogWarning(details, renderOptions, theme);\n\t});\n\n\tpi.registerCommand(\"subagents-watchdog\", {\n\t\tdescription: \"Show or toggle the default-off subagent watchdog\",\n\t\thandler: (args, ctx) => {\n\t\t\trememberContext(ctx);\n\t\t\treturn handleWatchdogCommand(pi, runtime, args, ctx);\n\t\t},\n\t});\n\n\tpi.on(\"session_start\", (_event, ctx) => {\n\t\trememberContext(ctx);\n\t\truntime.bindSession(ctx);\n\t});\n\tpi.on(\"before_agent_start\", (event, ctx) => {\n\t\trememberContext(ctx);\n\t\truntime.handleBeforeAgentStart(event, ctx);\n\t});\n\tpi.on(\"turn_end\", (event, ctx) => {\n\t\trememberContext(ctx);\n\t\truntime.handleTurnEnd(event, ctx);\n\t});\n\tpi.on(\"agent_end\", (event, ctx) => {\n\t\trememberContext(ctx);\n\t\treturn runtime.handleAgentEnd(event, ctx);\n\t});\n\tpi.on(\"session_before_switch\", () => runtime.reset(\"session switch\", { clearReviewInputSignature: true, clearLspLedger: true }));\n\tpi.on(\"session_before_fork\", () => runtime.reset(\"session fork\", { clearReviewInputSignature: true, clearLspLedger: true }));\n\tpi.on(\"session_compact\", () => runtime.reset(\"session compact\"));\n\tpi.on(\"session_shutdown\", () => {\n\t\tcurrentContext = undefined;\n\t\truntime.dispose();\n\t});\n\n\treturn runtime;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/watchdog/render.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,KAAK,aAAa,GAAG;IACpB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACxC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B,CAAC;AAgBF,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,CAevF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,EAAE,KAAK,EAAE,aAAa,GAAG,SAAS,CActI","sourcesContent":["// @ts-nocheck\nimport { Container, Spacer, Text, type Component } from \"@
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/watchdog/render.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,KAAK,aAAa,GAAG;IACpB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACxC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B,CAAC;AAgBF,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,CAevF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,EAAE,KAAK,EAAE,aAAa,GAAG,SAAS,CActI","sourcesContent":["// @ts-nocheck\nimport { Container, Spacer, Text, type Component } from \"@ashx-j/lunr-tui\";\nimport type { WatchdogWarningDetails } from \"./types.ts\";\n\ntype WatchdogTheme = {\n\tfg(name: string, value: string): string;\n\tbold?(value: string): string;\n};\n\nfunction titleCase(value: string): string {\n\treturn value.split(\"-\").map((part) => part ? `${part[0]?.toUpperCase()}${part.slice(1)}` : part).join(\" \");\n}\n\nfunction stateLabels(warning: WatchdogWarningDetails): string[] {\n\tconst labels: string[] = [];\n\tif (warning.state === \"displayed\") labels.push(\"displayed\");\n\tif (warning.stale || warning.state === \"stale\") labels.push(\"stale · no auto-follow\");\n\tif (warning.state === \"failed\") labels.push(\"failed review\");\n\tif (warning.state === \"stalemate\") labels.push(\"stalemate · auto-follow stopped\");\n\tif (warning.autoFollowAttempt !== undefined) labels.push(`auto-follow attempt ${warning.autoFollowAttempt}`);\n\treturn labels;\n}\n\nexport function formatWatchdogWarningRenderText(warning: WatchdogWarningDetails): string {\n\tconst labels = stateLabels(warning);\n\tconst subject = warning.severity === \"blocker\" ? \"Blocker\" : \"Concern\";\n\tconst lines = [\n\t\t`Subagent watchdog ${subject}${labels.length ? ` (${labels.join(\", \")})` : \"\"}: ${warning.summary}`,\n\t\t`Evidence: ${warning.evidence}`,\n\t\t`Recommended action: ${warning.recommendedAction}`,\n\t\t`Category: ${titleCase(warning.category)} · Source: ${warning.source}${warning.agent ? ` · Agent: ${warning.agent}` : \"\"}${warning.runId ? ` · Run: ${warning.runId}` : \"\"}`,\n\t];\n\tif (warning.state === \"failed\" && warning.error) lines.push(`Failure: ${warning.error}`);\n\tif (warning.state === \"stalemate\" && warning.stalemateRepeats !== undefined) {\n\t\tlines.push(`Auto-follow stopped after ${warning.stalemateRepeats} repeated blocker warning${warning.stalemateRepeats === 1 ? \"\" : \"s\"}.`);\n\t}\n\tif (warning.stale || warning.state === \"stale\") lines.push(\"This warning arrived after the watchdog catch-up timeout and must not auto-follow.\");\n\treturn lines.join(\"\\n\");\n}\n\nexport function renderWatchdogWarning(warning: WatchdogWarningDetails, options: { expanded: boolean }, theme: WatchdogTheme): Component {\n\tconst text = formatWatchdogWarningRenderText(warning);\n\tconst lines = text.split(\"\\n\");\n\tconst container = new Container();\n\tconst color = warning.severity === \"blocker\" ? \"error\" : \"warning\";\n\tconst bold = theme.bold ?? ((value: string) => value);\n\tcontainer.addChild(new Text(theme.fg(color, bold(lines[0] ?? \"Subagent watchdog warning\")), 0, 0));\n\tif (options.expanded) {\n\t\tcontainer.addChild(new Spacer(1));\n\t\tfor (const line of lines.slice(1)) container.addChild(new Text(theme.fg(\"dim\", line), 0, 0));\n\t} else if (lines[1]) {\n\t\tcontainer.addChild(new Text(theme.fg(\"dim\", ` ⎿ ${lines[1]}`), 0, 0));\n\t}\n\treturn container;\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
|
-
import { Container, Spacer, Text } from "@
|
|
2
|
+
import { Container, Spacer, Text } from "@ashx-j/lunr-tui";
|
|
3
3
|
function titleCase(value) {
|
|
4
4
|
return value.split("-").map((part) => part ? `${part[0]?.toUpperCase()}${part.slice(1)}` : part).join(" ");
|
|
5
5
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/watchdog/render.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport { Container, Spacer, Text, type Component } from \"@
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/watchdog/render.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport { Container, Spacer, Text, type Component } from \"@ashx-j/lunr-tui\";\nimport type { WatchdogWarningDetails } from \"./types.ts\";\n\ntype WatchdogTheme = {\n\tfg(name: string, value: string): string;\n\tbold?(value: string): string;\n};\n\nfunction titleCase(value: string): string {\n\treturn value.split(\"-\").map((part) => part ? `${part[0]?.toUpperCase()}${part.slice(1)}` : part).join(\" \");\n}\n\nfunction stateLabels(warning: WatchdogWarningDetails): string[] {\n\tconst labels: string[] = [];\n\tif (warning.state === \"displayed\") labels.push(\"displayed\");\n\tif (warning.stale || warning.state === \"stale\") labels.push(\"stale · no auto-follow\");\n\tif (warning.state === \"failed\") labels.push(\"failed review\");\n\tif (warning.state === \"stalemate\") labels.push(\"stalemate · auto-follow stopped\");\n\tif (warning.autoFollowAttempt !== undefined) labels.push(`auto-follow attempt ${warning.autoFollowAttempt}`);\n\treturn labels;\n}\n\nexport function formatWatchdogWarningRenderText(warning: WatchdogWarningDetails): string {\n\tconst labels = stateLabels(warning);\n\tconst subject = warning.severity === \"blocker\" ? \"Blocker\" : \"Concern\";\n\tconst lines = [\n\t\t`Subagent watchdog ${subject}${labels.length ? ` (${labels.join(\", \")})` : \"\"}: ${warning.summary}`,\n\t\t`Evidence: ${warning.evidence}`,\n\t\t`Recommended action: ${warning.recommendedAction}`,\n\t\t`Category: ${titleCase(warning.category)} · Source: ${warning.source}${warning.agent ? ` · Agent: ${warning.agent}` : \"\"}${warning.runId ? ` · Run: ${warning.runId}` : \"\"}`,\n\t];\n\tif (warning.state === \"failed\" && warning.error) lines.push(`Failure: ${warning.error}`);\n\tif (warning.state === \"stalemate\" && warning.stalemateRepeats !== undefined) {\n\t\tlines.push(`Auto-follow stopped after ${warning.stalemateRepeats} repeated blocker warning${warning.stalemateRepeats === 1 ? \"\" : \"s\"}.`);\n\t}\n\tif (warning.stale || warning.state === \"stale\") lines.push(\"This warning arrived after the watchdog catch-up timeout and must not auto-follow.\");\n\treturn lines.join(\"\\n\");\n}\n\nexport function renderWatchdogWarning(warning: WatchdogWarningDetails, options: { expanded: boolean }, theme: WatchdogTheme): Component {\n\tconst text = formatWatchdogWarningRenderText(warning);\n\tconst lines = text.split(\"\\n\");\n\tconst container = new Container();\n\tconst color = warning.severity === \"blocker\" ? \"error\" : \"warning\";\n\tconst bold = theme.bold ?? ((value: string) => value);\n\tcontainer.addChild(new Text(theme.fg(color, bold(lines[0] ?? \"Subagent watchdog warning\")), 0, 0));\n\tif (options.expanded) {\n\t\tcontainer.addChild(new Spacer(1));\n\t\tfor (const line of lines.slice(1)) container.addChild(new Text(theme.fg(\"dim\", line), 0, 0));\n\t} else if (lines[1]) {\n\t\tcontainer.addChild(new Text(theme.fg(\"dim\", ` ⎿ ${lines[1]}`), 0, 0));\n\t}\n\treturn container;\n}\n"]}
|