@ashx-j/lunr 0.2.13 → 0.2.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -1
- package/README.md +10 -7
- package/dist/builtin-extensions/ashxj-tui.d.ts +16 -1
- package/dist/builtin-extensions/ashxj-tui.d.ts.map +1 -1
- package/dist/builtin-extensions/ashxj-tui.js +48 -24
- package/dist/builtin-extensions/ashxj-tui.js.map +1 -1
- package/dist/builtin-extensions/index.d.ts.map +1 -1
- package/dist/builtin-extensions/index.js +2 -0
- package/dist/builtin-extensions/index.js.map +1 -1
- package/dist/builtin-extensions/lunr-settings-tools.d.ts +4 -0
- package/dist/builtin-extensions/lunr-settings-tools.d.ts.map +1 -0
- package/dist/builtin-extensions/lunr-settings-tools.js +120 -0
- package/dist/builtin-extensions/lunr-settings-tools.js.map +1 -0
- package/dist/builtin-extensions/pi-prompt-template-model/subagent-runtime.d.ts +2 -2
- package/dist/builtin-extensions/pi-prompt-template-model/subagent-runtime.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-prompt-template-model/subagent-runtime.js.map +1 -1
- 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 +3 -3
- package/dist/builtin-extensions/pi-prompt-template-model/subagent-step.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/api/delegation.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/api/delegation.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/api/delegation.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/api/delegation.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts +2 -0
- package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.js +29 -23
- package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts +5 -11
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js +12 -15
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts +3 -3
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js +14 -27
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js.map +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 +9 -4
- 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.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.js +2 -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/async-resume.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js +16 -3
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-status.d.ts +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-status.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-status.js +7 -4
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-status.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-append.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-append.js +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-append.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-root-attachment.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-root-attachment.js +3 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-root-attachment.js.map +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 +3 -3
- package/dist/builtin-extensions/pi-subagents/src/runs/background/fleet-view.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.js +2 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.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 +3 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.js +3 -35
- 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.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js +7 -8
- 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 +2 -0
- 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 +1 -0
- 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 +20 -21
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.d.ts +12 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.js +42 -17
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts +2 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts +2 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js +23 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/formatters.d.ts +3 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/formatters.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/formatters.js +15 -4
- package/dist/builtin-extensions/pi-subagents/src/shared/formatters.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts +14 -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 +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/types.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/delegation-adapters.d.ts +3 -3
- package/dist/builtin-extensions/pi-subagents/src/slash/delegation-adapters.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/delegation-adapters.js +7 -6
- package/dist/builtin-extensions/pi-subagents/src/slash/delegation-adapters.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/delegation-request.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/delegation-request.js +3 -3
- package/dist/builtin-extensions/pi-subagents/src/slash/delegation-request.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 +6 -4
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts +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 +15 -10
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/fleet.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/fleet.js +5 -4
- package/dist/builtin-extensions/pi-subagents/src/tui/fleet.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js +86 -52
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
- package/dist/catalog/models.json +1 -1
- package/dist/catalog/providers/amazon-bedrock.json +1 -1
- package/dist/catalog/providers/anthropic.json +1 -1
- package/dist/catalog/providers/azure-openai-responses.json +1 -1
- package/dist/catalog/providers/cloudflare-ai-gateway.json +1 -1
- package/dist/catalog/providers/fireworks.json +1 -1
- package/dist/catalog/providers/github-copilot.json +1 -1
- package/dist/catalog/providers/google-vertex.json +1 -1
- package/dist/catalog/providers/google.json +1 -1
- package/dist/catalog/providers/groq.json +1 -1
- package/dist/catalog/providers/huggingface.json +1 -1
- package/dist/catalog/providers/nvidia.json +1 -1
- package/dist/catalog/providers/openai-codex.json +1 -1
- package/dist/catalog/providers/openai.json +1 -1
- package/dist/catalog/providers/opencode-go.json +1 -1
- package/dist/catalog/providers/opencode.json +1 -1
- package/dist/catalog/providers/openrouter.json +1 -1
- package/dist/catalog/providers/vercel-ai-gateway.json +1 -1
- package/dist/catalog/publication.json +131 -3
- package/dist/cli/list-models.d.ts.map +1 -1
- package/dist/cli/list-models.js +1 -0
- package/dist/cli/list-models.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +52 -27
- package/dist/cli.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts +5 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +7 -2
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session.d.ts +2 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +18 -6
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/catalog-cache-scope.d.ts +3 -0
- package/dist/core/catalog-cache-scope.d.ts.map +1 -0
- package/dist/core/catalog-cache-scope.js +12 -0
- package/dist/core/catalog-cache-scope.js.map +1 -0
- package/dist/core/catalog-merge.d.ts +2 -0
- package/dist/core/catalog-merge.d.ts.map +1 -1
- package/dist/core/catalog-merge.js +29 -2
- package/dist/core/catalog-merge.js.map +1 -1
- package/dist/core/catalog-refresh-polling.d.ts +8 -0
- package/dist/core/catalog-refresh-polling.d.ts.map +1 -0
- package/dist/core/catalog-refresh-polling.js +30 -0
- package/dist/core/catalog-refresh-polling.js.map +1 -0
- package/dist/core/codex-catalog.d.ts +3 -0
- package/dist/core/codex-catalog.d.ts.map +1 -0
- package/dist/core/codex-catalog.js +15 -0
- package/dist/core/codex-catalog.js.map +1 -0
- package/dist/core/context-breakdown.d.ts +2 -0
- package/dist/core/context-breakdown.d.ts.map +1 -1
- package/dist/core/context-breakdown.js +6 -2
- package/dist/core/context-breakdown.js.map +1 -1
- package/dist/core/customize.d.ts +2 -4
- package/dist/core/customize.d.ts.map +1 -1
- package/dist/core/customize.js +2 -8
- package/dist/core/customize.js.map +1 -1
- package/dist/core/footer-data-provider.d.ts +3 -4
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js +54 -82
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/injected-prompt.d.ts +3 -3
- package/dist/core/injected-prompt.d.ts.map +1 -1
- package/dist/core/injected-prompt.js +2 -7
- package/dist/core/injected-prompt.js.map +1 -1
- package/dist/core/large-subagent-launch.d.ts +13 -0
- package/dist/core/large-subagent-launch.d.ts.map +1 -0
- package/dist/core/large-subagent-launch.js +54 -0
- package/dist/core/large-subagent-launch.js.map +1 -0
- package/dist/core/live-catalog.d.ts +5 -2
- package/dist/core/live-catalog.d.ts.map +1 -1
- package/dist/core/live-catalog.js +108 -27
- package/dist/core/live-catalog.js.map +1 -1
- package/dist/core/model-instructions.d.ts +24 -0
- package/dist/core/model-instructions.d.ts.map +1 -0
- package/dist/core/model-instructions.js +123 -0
- package/dist/core/model-instructions.js.map +1 -0
- package/dist/core/model-runtime.d.ts +8 -0
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +64 -12
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/official-catalog.d.ts +4 -0
- package/dist/core/official-catalog.d.ts.map +1 -1
- package/dist/core/official-catalog.js +86 -21
- package/dist/core/official-catalog.js.map +1 -1
- package/dist/core/permissions.d.ts +10 -11
- package/dist/core/permissions.d.ts.map +1 -1
- package/dist/core/permissions.js +107 -40
- package/dist/core/permissions.js.map +1 -1
- package/dist/core/plan-mode.d.ts.map +1 -1
- package/dist/core/plan-mode.js +10 -1
- package/dist/core/plan-mode.js.map +1 -1
- package/dist/core/resource-loader.d.ts +3 -0
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +13 -4
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/runtime-bridges.d.ts +4 -0
- package/dist/core/runtime-bridges.d.ts.map +1 -0
- package/dist/core/runtime-bridges.js +16 -0
- package/dist/core/runtime-bridges.js.map +1 -0
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +1 -0
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/settings-manager.d.ts +13 -6
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +32 -17
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/settings-tools-bridge.d.ts +35 -0
- package/dist/core/settings-tools-bridge.d.ts.map +1 -0
- package/dist/core/settings-tools-bridge.js +56 -0
- package/dist/core/settings-tools-bridge.js.map +1 -0
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +1 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +1 -1
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/gateway/agent-bridge.d.ts.map +1 -1
- package/dist/gateway/agent-bridge.js +3 -2
- package/dist/gateway/agent-bridge.js.map +1 -1
- package/dist/gateway/approval.d.ts.map +1 -1
- package/dist/gateway/approval.js +4 -3
- package/dist/gateway/approval.js.map +1 -1
- package/dist/gateway/commands.d.ts +1 -1
- package/dist/gateway/commands.d.ts.map +1 -1
- package/dist/gateway/commands.js +1 -18
- package/dist/gateway/commands.js.map +1 -1
- package/dist/gateway/cron.d.ts.map +1 -1
- package/dist/gateway/cron.js +3 -2
- package/dist/gateway/cron.js.map +1 -1
- package/dist/gateway/router.d.ts +1 -1
- package/dist/gateway/router.d.ts.map +1 -1
- package/dist/gateway/router.js +1 -1
- package/dist/gateway/router.js.map +1 -1
- package/dist/main.d.ts +2 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +108 -58
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts +2 -0
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +18 -4
- package/dist/migrations.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts +1 -3
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +4 -32
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-editor.js +2 -1
- package/dist/modes/interactive/components/custom-editor.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/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +4 -1
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/plan-message.d.ts +1 -3
- package/dist/modes/interactive/components/plan-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/plan-message.js +1 -16
- package/dist/modes/interactive/components/plan-message.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +8 -5
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +71 -31
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message.d.ts +1 -3
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.js +2 -19
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +13 -4
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +163 -177
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/moon.json +0 -1
- package/dist/modes/interactive/theme/theme-schema.json +3 -3
- package/dist/modes/interactive/theme/theme.d.ts +1 -1
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +95 -90
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/startup/interactive-view.d.ts +55 -0
- package/dist/startup/interactive-view.d.ts.map +1 -0
- package/dist/startup/interactive-view.js +332 -0
- package/dist/startup/interactive-view.js.map +1 -0
- package/dist/startup/launch-routing.d.ts +8 -0
- package/dist/startup/launch-routing.d.ts.map +1 -0
- package/dist/startup/launch-routing.js +29 -0
- package/dist/startup/launch-routing.js.map +1 -0
- package/dist/startup/startup-milestones.d.ts +4 -0
- package/dist/startup/startup-milestones.d.ts.map +1 -0
- package/dist/startup/startup-milestones.js +14 -0
- package/dist/startup/startup-milestones.js.map +1 -0
- package/dist/utils/syntax-highlight.d.ts.map +1 -1
- package/dist/utils/syntax-highlight.js +10 -4
- package/dist/utils/syntax-highlight.js.map +1 -1
- package/docs/features.md +9 -9
- package/docs/interactive-startup.md +58 -0
- package/docs/keybindings.md +1 -1
- package/docs/model-catalog.md +29 -0
- package/docs/quickstart.md +3 -2
- package/docs/settings.md +4 -4
- package/docs/terminal-setup.md +2 -2
- package/docs/termux.md +1 -1
- package/docs/usage.md +4 -3
- package/docs/windows.md +1 -1
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/subagent/README.md +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/package.json +16 -16
- package/dist/core/swarm.d.ts +0 -54
- package/dist/core/swarm.d.ts.map +0 -1
- package/dist/core/swarm.js +0 -119
- package/dist/core/swarm.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"child-spec.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/shared/child-spec.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\n/**\n * Normalize model-authored delegated tasks into ChildSpec before validation,\n * rendering, persistence, or process spawning.\n */\n\nimport {\n\tPLAN_MODE_WRITE_SPAWN_ERROR,\n\tresolveChildPermissions,\n\ttype ChildPermission,\n} from \"../../../../core/subagent-permission-inherit.ts\";\nimport { resolveChildExcludeTools } from \"../runs/shared/child-tools.ts\";\nimport type { AcceptanceInput, ChildSpec, ChildTier, JsonSchemaObject, ToolBudgetConfig } from \"./types.ts\";\n\nexport type { ChildSpec, ChildTier } from \"./types.ts\";\n\nexport const CHILD_DESCRIPTION_MAX_LENGTH = 80;\n\nexport interface DelegatedTaskInput {\n\ttask?: unknown;\n\tdescription?: unknown;\n\tpermissions?: unknown;\n\tmodel?: unknown;\n\ttier?: unknown;\n\tskill?: unknown;\n\tcwd?: unknown;\n\toutput?: unknown;\n\toutputMode?: unknown;\n\tacceptance?: unknown;\n\ttoolBudget?: unknown;\n\tcount?: unknown;\n\treads?: unknown;\n\tprogress?: unknown;\n\tlabel?: unknown;\n\tphase?: unknown;\n\tas?: unknown;\n\toutputSchema?: unknown;\n}\n\nexport interface NormalizeChildSpecOptions {\n\tparentMode?: string;\n\trunId: string;\n\tindex: number;\n\tchildId?: string;\n\tdefaultTask?: string;\n\tfanoutAuthorized?: boolean;\n\tpathLabel?: string;\n}\n\nexport function allocateChildId(runId: string, index: number): string {\n\treturn `${runId}-${index}`;\n}\n\nexport function sanitizeChildDescription(value: string, max = CHILD_DESCRIPTION_MAX_LENGTH): string {\n\tconst collapsed = value.replace(/\\s+/g, \" \").trim();\n\tif (collapsed.length <= max) return collapsed;\n\treturn `${collapsed.slice(0, Math.max(1, max - 1))}…`;\n}\n\nexport function validateChildDescription(value: unknown, pathLabel = \"description\"): string {\n\tif (typeof value !== \"string\") {\n\t\tthrow new Error(`${pathLabel} is required and must be a concise single-line label (max ${CHILD_DESCRIPTION_MAX_LENGTH} characters).`);\n\t}\n\tif (/[\\r\\n]/.test(value)) {\n\t\tthrow new Error(`${pathLabel} must be a single line with no newlines.`);\n\t}\n\tconst trimmed = value.trim();\n\tif (!trimmed) {\n\t\tthrow new Error(`${pathLabel} is required and must be a concise single-line label (max ${CHILD_DESCRIPTION_MAX_LENGTH} characters).`);\n\t}\n\tif (trimmed.length > CHILD_DESCRIPTION_MAX_LENGTH) {\n\t\tthrow new Error(`${pathLabel} must be at most ${CHILD_DESCRIPTION_MAX_LENGTH} characters.`);\n\t}\n\treturn trimmed;\n}\n\nexport function parseChildPermissionsInput(value: unknown, pathLabel = \"permissions\"): ChildPermission | undefined {\n\tif (value === undefined) return undefined;\n\tif (value === \"full\" || value === \"read-only\") return value;\n\tthrow new Error(`${pathLabel} must be \"full\" or \"read-only\".`);\n}\n\nfunction optionalString(value: unknown): string | undefined {\n\treturn typeof value === \"string\" && value.trim() ? value : undefined;\n}\n\nfunction optionalSkill(value: unknown): string | string[] | false | undefined {\n\tif (value === false) return false;\n\tif (typeof value === \"string\") return value;\n\tif (Array.isArray(value) && value.every((entry) => typeof entry === \"string\")) return value as string[];\n\treturn undefined;\n}\n\nfunction optionalOutput(value: unknown): string | false | undefined {\n\tif (value === false) return false;\n\tif (typeof value === \"string\") return value;\n\treturn undefined;\n}\n\nfunction optionalReads(value: unknown): string[] | false | undefined {\n\tif (value === false) return false;\n\tif (Array.isArray(value) && value.every((entry) => typeof entry === \"string\")) return value as string[];\n\treturn undefined;\n}\n\nfunction optionalCount(value: unknown): number | undefined {\n\tif (typeof value === \"number\" && Number.isInteger(value) && value >= 1) return value;\n\treturn undefined;\n}\n\nexport function normalizeChildSpec(input: DelegatedTaskInput, options: NormalizeChildSpecOptions): ChildSpec {\n\tconst pathLabel = options.pathLabel ?? \"task\";\n\tconst description = validateChildDescription(input.description, `${pathLabel}.description`);\n\tconst task = typeof input.task === \"string\" && input.task.trim()\n\t\t? input.task\n\t\t: options.defaultTask;\n\tif (typeof task !== \"string\" || !task.trim()) {\n\t\tthrow new Error(`${pathLabel}.task is required.`);\n\t}\n\tconst requested = parseChildPermissionsInput(input.permissions, `${pathLabel}.permissions`);\n\tconst resolved = resolveChildPermissions(options.parentMode, requested);\n\tif (!resolved.ok) {\n\t\tthrow new Error(resolved.error || PLAN_MODE_WRITE_SPAWN_ERROR);\n\t}\n\tconst tier = input.tier === \"light\" || input.tier === \"standard\" || input.tier === \"heavy\" ? input.tier : undefined;\n\tconst outputMode = input.outputMode === \"inline\" || input.outputMode === \"file-only\" ? input.outputMode : undefined;\n\treturn {\n\t\tchildId: options.childId ?? allocateChildId(options.runId, options.index),\n\t\ttask,\n\t\tdescription,\n\t\trequestedPermissions: resolved.requested,\n\t\teffectivePermissions: resolved.effective,\n\t\tmodel: optionalString(input.model),\n\t\ttier,\n\t\tskill: optionalSkill(input.skill),\n\t\tcwd: optionalString(input.cwd),\n\t\toutput: optionalOutput(input.output),\n\t\toutputMode,\n\t\tacceptance: input.acceptance as AcceptanceInput | undefined,\n\t\ttoolBudget: input.toolBudget as ToolBudgetConfig | undefined,\n\t\tcount: optionalCount(input.count),\n\t\treads: optionalReads(input.reads),\n\t\tprogress: typeof input.progress === \"boolean\" ? input.progress : undefined,\n\t\tlabel: optionalString(input.label),\n\t\tphase: optionalString(input.phase),\n\t\tas: optionalString(input.as),\n\t\toutputSchema: input.outputSchema && typeof input.outputSchema === \"object\"\n\t\t\t? input.outputSchema as JsonSchemaObject\n\t\t\t: undefined,\n\t\tfanoutAuthorized: options.fanoutAuthorized === true,\n\t};\n}\n\nexport function childDisplayLabel(spec: Pick<ChildSpec, \"description\" | \"label\">): string {\n\treturn spec.label?.trim() || spec.description;\n}\n\nexport function tryNormalizeChildSpec(\n\tinput: DelegatedTaskInput,\n\toptions: NormalizeChildSpecOptions,\n): { ok: true; spec: ChildSpec } | { ok: false; error: string } {\n\ttry {\n\t\treturn { ok: true, spec: normalizeChildSpec(input, options) };\n\t} catch (error) {\n\t\treturn { ok: false, error: error instanceof Error ? error.message : String(error) };\n\t}\n}\n\nexport function childIdentityFields(spec: ChildSpec): {\n\tchildId: string;\n\tdescription: string;\n\tpermissions: ChildPermission;\n\tagent: string;\n} {\n\treturn {\n\t\tchildId: spec.childId,\n\t\tdescription: spec.description,\n\t\tpermissions: spec.effectivePermissions,\n\t\tagent: spec.description,\n\t};\n}\n\nexport function childOutputCapabilities(permissions: ChildPermission): { tools: string[] } {\n\treturn permissions === \"read-only\"\n\t\t? { tools: [\"read\"] }\n\t\t: { tools: [\"read\", \"edit\", \"write\", \"bash\"] };\n}\n\nexport function childSpawnPiArgDefaults(spec: ChildSpec): {\n\tinheritProjectContext: true;\n\tinheritSkills: false;\n\tsystemPromptMode: \"append\";\n\texcludeTools: string[];\n\tchildPermission: ChildPermission;\n\tchildId: string;\n\tchildDescription: string;\n\tchildAgentName: string;\n} {\n\treturn {\n\t\tinheritProjectContext: true,\n\t\tinheritSkills: false,\n\t\tsystemPromptMode: \"append\",\n\t\texcludeTools: resolveChildExcludeTools({\n\t\t\tpermissions: spec.effectivePermissions,\n\t\t\tfanoutAuthorized: spec.fanoutAuthorized,\n\t\t}),\n\t\tchildPermission: spec.effectivePermissions,\n\t\tchildId: spec.childId,\n\t\tchildDescription: spec.description,\n\t\tchildAgentName: spec.childId,\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"child-spec.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/shared/child-spec.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\n/**\n * Normalize model-authored delegated tasks into ChildSpec before validation,\n * rendering, persistence, or process spawning.\n */\n\nimport {\n\tPLAN_MODE_WRITE_SPAWN_ERROR,\n\tresolveChildPermissions,\n\ttype ChildPermission,\n} from \"../../../../core/subagent-permission-inherit.ts\";\nimport { resolveChildExcludeTools } from \"../runs/shared/child-tools.ts\";\nimport { captureModelSelection } from \"../runs/shared/model-fallback.ts\";\nimport type { AcceptanceInput, ChildSpec, ChildTier, JsonSchemaObject, ModelSelection, ToolBudgetConfig } from \"./types.ts\";\n\nexport type { ChildSpec, ChildTier, ModelSelection } from \"./types.ts\";\n\nexport const CHILD_DESCRIPTION_MAX_LENGTH = 80;\n\nexport interface DelegatedTaskInput {\n\ttask?: unknown;\n\tdescription?: unknown;\n\tpermissions?: unknown;\n\tmodel?: unknown;\n\ttier?: unknown;\n\tmodelSelection?: unknown;\n\tskill?: unknown;\n\tcwd?: unknown;\n\toutput?: unknown;\n\toutputMode?: unknown;\n\tacceptance?: unknown;\n\ttoolBudget?: unknown;\n\tcount?: unknown;\n\treads?: unknown;\n\tprogress?: unknown;\n\tlabel?: unknown;\n\tphase?: unknown;\n\tas?: unknown;\n\toutputSchema?: unknown;\n}\n\nexport interface NormalizeChildSpecOptions {\n\tparentMode?: string;\n\trunId: string;\n\tindex: number;\n\tchildId?: string;\n\tdefaultTask?: string;\n\tfanoutAuthorized?: boolean;\n\tpathLabel?: string;\n}\n\nexport function allocateChildId(runId: string, index: number): string {\n\treturn `${runId}-${index}`;\n}\n\nexport function sanitizeChildDescription(value: string, max = CHILD_DESCRIPTION_MAX_LENGTH): string {\n\tconst collapsed = value.replace(/\\s+/g, \" \").trim();\n\tif (collapsed.length <= max) return collapsed;\n\treturn `${collapsed.slice(0, Math.max(1, max - 1))}…`;\n}\n\nexport function validateChildDescription(value: unknown, pathLabel = \"description\"): string {\n\tif (typeof value !== \"string\") {\n\t\tthrow new Error(`${pathLabel} is required and must be a concise single-line label (max ${CHILD_DESCRIPTION_MAX_LENGTH} characters).`);\n\t}\n\tif (/[\\r\\n]/.test(value)) {\n\t\tthrow new Error(`${pathLabel} must be a single line with no newlines.`);\n\t}\n\tconst trimmed = value.trim();\n\tif (!trimmed) {\n\t\tthrow new Error(`${pathLabel} is required and must be a concise single-line label (max ${CHILD_DESCRIPTION_MAX_LENGTH} characters).`);\n\t}\n\tif (trimmed.length > CHILD_DESCRIPTION_MAX_LENGTH) {\n\t\tthrow new Error(`${pathLabel} must be at most ${CHILD_DESCRIPTION_MAX_LENGTH} characters.`);\n\t}\n\treturn trimmed;\n}\n\nexport function parseChildPermissionsInput(value: unknown, pathLabel = \"permissions\"): ChildPermission | undefined {\n\tif (value === undefined) return undefined;\n\tif (value === \"full\" || value === \"read-only\") return value;\n\tthrow new Error(`${pathLabel} must be \"full\" or \"read-only\".`);\n}\n\nfunction optionalString(value: unknown): string | undefined {\n\treturn typeof value === \"string\" && value.trim() ? value : undefined;\n}\n\nfunction optionalSkill(value: unknown): string | string[] | false | undefined {\n\tif (value === false) return false;\n\tif (typeof value === \"string\") return value;\n\tif (Array.isArray(value) && value.every((entry) => typeof entry === \"string\")) return value as string[];\n\treturn undefined;\n}\n\nfunction optionalOutput(value: unknown): string | false | undefined {\n\tif (value === false) return false;\n\tif (typeof value === \"string\") return value;\n\treturn undefined;\n}\n\nfunction optionalReads(value: unknown): string[] | false | undefined {\n\tif (value === false) return false;\n\tif (Array.isArray(value) && value.every((entry) => typeof entry === \"string\")) return value as string[];\n\treturn undefined;\n}\n\nfunction optionalCount(value: unknown): number | undefined {\n\tif (typeof value === \"number\" && Number.isInteger(value) && value >= 1) return value;\n\treturn undefined;\n}\n\nfunction isModelSelection(value: unknown): value is ModelSelection {\n\tif (!value || typeof value !== \"object\") return false;\n\tconst kind = (value as { kind?: unknown }).kind;\n\tif (kind === \"tier\") {\n\t\tconst tier = (value as { tier?: unknown }).tier;\n\t\treturn tier === \"light\" || tier === \"standard\" || tier === \"heavy\";\n\t}\n\treturn false;\n}\n\nexport function normalizeChildSpec(input: DelegatedTaskInput, options: NormalizeChildSpecOptions): ChildSpec {\n\tconst pathLabel = options.pathLabel ?? \"task\";\n\tconst description = validateChildDescription(input.description, `${pathLabel}.description`);\n\tconst task = typeof input.task === \"string\" && input.task.trim()\n\t\t? input.task\n\t\t: options.defaultTask;\n\tif (typeof task !== \"string\" || !task.trim()) {\n\t\tthrow new Error(`${pathLabel}.task is required.`);\n\t}\n\tconst requested = parseChildPermissionsInput(input.permissions, `${pathLabel}.permissions`);\n\tconst resolved = resolveChildPermissions(options.parentMode, requested);\n\tif (!resolved.ok) {\n\t\tthrow new Error(resolved.error || PLAN_MODE_WRITE_SPAWN_ERROR);\n\t}\n\tif (input.model !== undefined && !isModelSelection(input.modelSelection)) {\n\t\tthrow new Error(`${pathLabel}.model is not supported for executable children; choose tier: \"light\", \"standard\", or \"heavy\".`);\n\t}\n\tconst selectedTier = isModelSelection(input.modelSelection) ? input.modelSelection.tier : input.tier;\n\tif (selectedTier !== \"light\" && selectedTier !== \"standard\" && selectedTier !== \"heavy\") {\n\t\tthrow new Error(`${pathLabel}.tier is required and must be \"light\", \"standard\", or \"heavy\".`);\n\t}\n\tconst tier = selectedTier;\n\tconst outputMode = input.outputMode === \"inline\" || input.outputMode === \"file-only\" ? input.outputMode : undefined;\n\tconst modelSelection = isModelSelection(input.modelSelection)\n\t\t? input.modelSelection\n\t\t: captureModelSelection({ tier });\n\treturn {\n\t\tchildId: options.childId ?? allocateChildId(options.runId, options.index),\n\t\ttask,\n\t\tdescription,\n\t\trequestedPermissions: resolved.requested,\n\t\teffectivePermissions: resolved.effective,\n\t\tmodel: optionalString(input.model),\n\t\ttier,\n\t\tmodelSelection,\n\t\tskill: optionalSkill(input.skill),\n\t\tcwd: optionalString(input.cwd),\n\t\toutput: optionalOutput(input.output),\n\t\toutputMode,\n\t\tacceptance: input.acceptance as AcceptanceInput | undefined,\n\t\ttoolBudget: input.toolBudget as ToolBudgetConfig | undefined,\n\t\tcount: optionalCount(input.count),\n\t\treads: optionalReads(input.reads),\n\t\tprogress: typeof input.progress === \"boolean\" ? input.progress : undefined,\n\t\tlabel: optionalString(input.label),\n\t\tphase: optionalString(input.phase),\n\t\tas: optionalString(input.as),\n\t\toutputSchema: input.outputSchema && typeof input.outputSchema === \"object\"\n\t\t\t? input.outputSchema as JsonSchemaObject\n\t\t\t: undefined,\n\t\tfanoutAuthorized: options.fanoutAuthorized === true,\n\t};\n}\n\nexport function childDisplayLabel(spec: Pick<ChildSpec, \"description\" | \"label\">): string {\n\treturn spec.label?.trim() || spec.description;\n}\n\nexport function tryNormalizeChildSpec(\n\tinput: DelegatedTaskInput,\n\toptions: NormalizeChildSpecOptions,\n): { ok: true; spec: ChildSpec } | { ok: false; error: string } {\n\ttry {\n\t\treturn { ok: true, spec: normalizeChildSpec(input, options) };\n\t} catch (error) {\n\t\treturn { ok: false, error: error instanceof Error ? error.message : String(error) };\n\t}\n}\n\nexport function childIdentityFields(spec: ChildSpec): {\n\tchildId: string;\n\tdescription: string;\n\tpermissions: ChildPermission;\n\tagent: string;\n} {\n\treturn {\n\t\tchildId: spec.childId,\n\t\tdescription: spec.description,\n\t\tpermissions: spec.effectivePermissions,\n\t\tagent: spec.description,\n\t};\n}\n\nexport function childOutputCapabilities(permissions: ChildPermission): { tools: string[] } {\n\treturn permissions === \"read-only\"\n\t\t? { tools: [\"read\"] }\n\t\t: { tools: [\"read\", \"edit\", \"write\", \"bash\"] };\n}\n\nexport function childSpawnPiArgDefaults(spec: ChildSpec): {\n\tinheritProjectContext: true;\n\tinheritSkills: false;\n\tsystemPromptMode: \"append\";\n\texcludeTools: string[];\n\tchildPermission: ChildPermission;\n\tchildId: string;\n\tchildDescription: string;\n\tchildAgentName: string;\n} {\n\treturn {\n\t\tinheritProjectContext: true,\n\t\tinheritSkills: false,\n\t\tsystemPromptMode: \"append\",\n\t\texcludeTools: resolveChildExcludeTools({\n\t\t\tpermissions: spec.effectivePermissions,\n\t\t\tfanoutAuthorized: spec.fanoutAuthorized,\n\t\t}),\n\t\tchildPermission: spec.effectivePermissions,\n\t\tchildId: spec.childId,\n\t\tchildDescription: spec.description,\n\t\tchildAgentName: spec.childId,\n\t};\n}\n"]}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Formatting utilities for display output
|
|
3
3
|
*/
|
|
4
|
-
import type { Usage, SingleResult } from "./types.ts";
|
|
4
|
+
import type { ModelSelection, Usage, SingleResult } from "./types.ts";
|
|
5
5
|
import type { ChainStep } from "./settings.ts";
|
|
6
6
|
/**
|
|
7
7
|
* Format token count with k suffix for large numbers
|
|
8
8
|
*/
|
|
9
9
|
export declare function formatTokens(n: number): string;
|
|
10
10
|
export declare function formatModelThinking(model?: string, thinking?: string): string;
|
|
11
|
+
/** Compact/header badge: selected tier name plus its effective thinking level. */
|
|
12
|
+
export declare function formatModelSelection(selection?: ModelSelection, resolvedModel?: string, thinking?: string): string;
|
|
11
13
|
/**
|
|
12
14
|
* Format usage statistics into a compact string
|
|
13
15
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/shared/formatters.ts"],"names":[],"mappings":"AACA;;GAEG;AAIH,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/shared/formatters.ts"],"names":[],"mappings":"AACA;;GAEG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAI/C;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9C;AASD,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ7E;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAKlH;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAU5D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,SAAS,EAAE,EAClB,OAAO,EAAE,YAAY,EAAE,EACvB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,GAAG,QAAQ,EAC9B,UAAU,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC3C,MAAM,CA8BR;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,UAAQ,GAAG,MAAM,CAuBpG;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAM7C","sourcesContent":["// @ts-nocheck\n/**\n * Formatting utilities for display output\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { ModelSelection, Usage, SingleResult } from \"./types.ts\";\nimport type { ChainStep } from \"./settings.ts\";\nimport { isDynamicParallelStep, isParallelStep } from \"./settings.ts\";\nimport { splitKnownThinkingSuffix, THINKING_LEVELS } from \"./model-info.ts\";\n\n/**\n * Format token count with k suffix for large numbers\n */\nexport function formatTokens(n: number): string {\n\treturn n < 1000 ? String(n) : n < 10000 ? `${(n / 1000).toFixed(1)}k` : `${Math.round(n / 1000)}k`;\n}\n\nfunction formatThinkingLabel(model?: string, thinking?: string): string | undefined {\n\tconst parsed = model ? splitKnownThinkingSuffix(model) : undefined;\n\tconst explicitThinking = THINKING_LEVELS.find((level) => level === thinking?.trim());\n\tconst displayThinking = parsed?.thinkingSuffix ? parsed.thinkingSuffix.slice(1) : explicitThinking;\n\treturn displayThinking ? `thinking ${displayThinking}` : undefined;\n}\n\nexport function formatModelThinking(model?: string, thinking?: string): string {\n\tconst parsed = model ? splitKnownThinkingSuffix(model) : undefined;\n\tlet displayModel = parsed?.baseModel ?? model;\n\tif (displayModel) {\n\t\tconst slashIdx = displayModel.lastIndexOf(\"/\");\n\t\tif (slashIdx !== -1) displayModel = displayModel.slice(slashIdx + 1);\n\t}\n\treturn [displayModel, formatThinkingLabel(model, thinking)].filter(Boolean).join(\" · \");\n}\n\n/** Compact/header badge: selected tier name plus its effective thinking level. */\nexport function formatModelSelection(selection?: ModelSelection, resolvedModel?: string, thinking?: string): string {\n\tif (selection?.kind === \"tier\" && selection.tier) {\n\t\treturn [selection.tier, formatThinkingLabel(resolvedModel, thinking)].filter(Boolean).join(\" · \");\n\t}\n\treturn formatModelThinking(resolvedModel, thinking);\n}\n\n/**\n * Format usage statistics into a compact string\n */\nexport function formatUsage(u: Usage, model?: string): string {\n\tconst parts: string[] = [];\n\tif (u.turns) parts.push(`${u.turns} turn${u.turns > 1 ? \"s\" : \"\"}`);\n\tif (u.input) parts.push(`in:${formatTokens(u.input)}`);\n\tif (u.output) parts.push(`out:${formatTokens(u.output)}`);\n\tif (u.cacheRead) parts.push(`R${formatTokens(u.cacheRead)}`);\n\tif (u.cacheWrite) parts.push(`W${formatTokens(u.cacheWrite)}`);\n\tif (u.cost) parts.push(`$${u.cost.toFixed(4)}`);\n\tif (model) parts.push(model);\n\treturn parts.join(\" \");\n}\n\n/**\n * Format duration in human-readable form\n */\nexport function formatDuration(ms: number): string {\n\tif (ms < 1000) return `${ms}ms`;\n\tif (ms < 60000) return `${Math.floor(ms / 1000)}s`;\n\treturn `${Math.floor(ms / 60000)}m${Math.floor((ms % 60000) / 1000)}s`;\n}\n\n/**\n * Build a summary string for a completed/failed chain\n */\nexport function buildChainSummary(\n\tsteps: ChainStep[],\n\tresults: SingleResult[],\n\tchainDir: string,\n\tstatus: \"completed\" | \"failed\",\n\tfailedStep?: { index: number; error: string },\n): string {\n\tconst stepNames = steps\n\t\t.map((step) => (isParallelStep(step) ? `parallel[${step.parallel.length}]` : isDynamicParallelStep(step) ? `expand:${step.parallel.agent}` : step.agent))\n\t\t.join(\" → \");\n\n\tconst totalDuration = results.reduce((sum, r) => sum + (r.progress?.durationMs || 0), 0);\n\tconst durationStr = formatDuration(totalDuration);\n\n\tconst progressPath = path.join(chainDir, \"progress.md\");\n\tconst hasProgress = fs.existsSync(progressPath);\n\tconst allSkills = new Set<string>();\n\tfor (const r of results) {\n\t\tif (r.skills) r.skills.forEach((s) => allSkills.add(s));\n\t}\n\tconst skillsLine = allSkills.size > 0 ? `🔧 Skills: ${[...allSkills].join(\", \")}` : \"\";\n\n\tif (status === \"completed\") {\n\t\tconst stepWord = results.length === 1 ? \"step\" : \"steps\";\n\t\treturn `✅ Chain completed: ${stepNames} (${results.length} ${stepWord}, ${durationStr})${skillsLine ? `\\n${skillsLine}` : \"\"}\n\n📋 Progress: ${hasProgress ? progressPath : \"(none)\"}\n📁 Artifacts: ${chainDir}`;\n\t} else {\n\t\tconst stepInfo = failedStep ? ` at step ${failedStep.index + 1}` : \"\";\n\t\tconst errorInfo = failedStep?.error ? `: ${failedStep.error}` : \"\";\n\t\treturn `❌ Chain failed${stepInfo}${errorInfo}${skillsLine ? `\\n${skillsLine}` : \"\"}\n\n📋 Progress: ${hasProgress ? progressPath : \"(none)\"}\n📁 Artifacts: ${chainDir}`;\n\t}\n}\n\n/**\n * Format a tool call for display\n */\nexport function formatToolCall(name: string, args: Record<string, unknown>, expanded = false): string {\n\tswitch (name) {\n\t\tcase \"bash\": {\n\t\t\tconst command = typeof args.command === \"string\" ? args.command : \"\";\n\t\t\tconst maxLength = expanded ? 240 : 60;\n\t\t\treturn `$ ${command.slice(0, maxLength)}${command.length > maxLength ? \"...\" : \"\"}`;\n\t\t}\n\t\tcase \"read\":\n\t\tcase \"write\":\n\t\tcase \"edit\": {\n\t\t\tconst target = typeof args.path === \"string\"\n\t\t\t\t? args.path\n\t\t\t\t: typeof args.file_path === \"string\"\n\t\t\t\t\t? args.file_path\n\t\t\t\t\t: \"\";\n\t\t\treturn `${name} ${shortenPath(target)}`;\n\t\t}\n\t\tdefault: {\n\t\t\tconst s = JSON.stringify(args);\n\t\t\tconst maxLength = expanded ? 160 : 40;\n\t\t\treturn `${name} ${s.slice(0, maxLength)}${s.length > maxLength ? \"...\" : \"\"}`;\n\t\t}\n\t}\n}\n\n/**\n * Shorten a path by replacing home directory with ~\n */\nexport function shortenPath(p: string): string {\n\tconst home = process.env.HOME;\n\tif (home && p.startsWith(home)) {\n\t\treturn `~${p.slice(home.length)}`;\n\t}\n\treturn p;\n}\n"]}
|
|
@@ -12,17 +12,28 @@ import { splitKnownThinkingSuffix, THINKING_LEVELS } from "./model-info.js";
|
|
|
12
12
|
export function formatTokens(n) {
|
|
13
13
|
return n < 1000 ? String(n) : n < 10000 ? `${(n / 1000).toFixed(1)}k` : `${Math.round(n / 1000)}k`;
|
|
14
14
|
}
|
|
15
|
-
|
|
15
|
+
function formatThinkingLabel(model, thinking) {
|
|
16
16
|
const parsed = model ? splitKnownThinkingSuffix(model) : undefined;
|
|
17
|
-
let displayModel = parsed?.baseModel ?? model;
|
|
18
17
|
const explicitThinking = THINKING_LEVELS.find((level) => level === thinking?.trim());
|
|
19
18
|
const displayThinking = parsed?.thinkingSuffix ? parsed.thinkingSuffix.slice(1) : explicitThinking;
|
|
19
|
+
return displayThinking ? `thinking ${displayThinking}` : undefined;
|
|
20
|
+
}
|
|
21
|
+
export function formatModelThinking(model, thinking) {
|
|
22
|
+
const parsed = model ? splitKnownThinkingSuffix(model) : undefined;
|
|
23
|
+
let displayModel = parsed?.baseModel ?? model;
|
|
20
24
|
if (displayModel) {
|
|
21
25
|
const slashIdx = displayModel.lastIndexOf("/");
|
|
22
26
|
if (slashIdx !== -1)
|
|
23
27
|
displayModel = displayModel.slice(slashIdx + 1);
|
|
24
28
|
}
|
|
25
|
-
return [displayModel,
|
|
29
|
+
return [displayModel, formatThinkingLabel(model, thinking)].filter(Boolean).join(" · ");
|
|
30
|
+
}
|
|
31
|
+
/** Compact/header badge: selected tier name plus its effective thinking level. */
|
|
32
|
+
export function formatModelSelection(selection, resolvedModel, thinking) {
|
|
33
|
+
if (selection?.kind === "tier" && selection.tier) {
|
|
34
|
+
return [selection.tier, formatThinkingLabel(resolvedModel, thinking)].filter(Boolean).join(" · ");
|
|
35
|
+
}
|
|
36
|
+
return formatModelThinking(resolvedModel, thinking);
|
|
26
37
|
}
|
|
27
38
|
/**
|
|
28
39
|
* Format usage statistics into a compact string
|
|
@@ -52,7 +63,7 @@ export function formatDuration(ms) {
|
|
|
52
63
|
if (ms < 1000)
|
|
53
64
|
return `${ms}ms`;
|
|
54
65
|
if (ms < 60000)
|
|
55
|
-
return `${(ms / 1000)
|
|
66
|
+
return `${Math.floor(ms / 1000)}s`;
|
|
56
67
|
return `${Math.floor(ms / 60000)}m${Math.floor((ms % 60000) / 1000)}s`;
|
|
57
68
|
}
|
|
58
69
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/shared/formatters.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\n/**\n * Formatting utilities for display output\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { Usage, SingleResult } from \"./types.ts\";\nimport type { ChainStep } from \"./settings.ts\";\nimport { isDynamicParallelStep, isParallelStep } from \"./settings.ts\";\nimport { splitKnownThinkingSuffix, THINKING_LEVELS } from \"./model-info.ts\";\n\n/**\n * Format token count with k suffix for large numbers\n */\nexport function formatTokens(n: number): string {\n\treturn n < 1000 ? String(n) : n < 10000 ? `${(n / 1000).toFixed(1)}k` : `${Math.round(n / 1000)}k`;\n}\n\nexport function formatModelThinking(model?: string, thinking?: string): string {\n\tconst parsed = model ? splitKnownThinkingSuffix(model) : undefined;\n\tlet displayModel = parsed?.baseModel ?? model;\n\tconst explicitThinking = THINKING_LEVELS.find((level) => level === thinking?.trim());\n\tconst displayThinking = parsed?.thinkingSuffix ? parsed.thinkingSuffix.slice(1) : explicitThinking;\n\tif (displayModel) {\n\t\tconst slashIdx = displayModel.lastIndexOf(\"/\");\n\t\tif (slashIdx !== -1) displayModel = displayModel.slice(slashIdx + 1);\n\t}\n\treturn [displayModel, displayThinking ? `thinking ${displayThinking}` : undefined].filter(Boolean).join(\" · \");\n}\n\n/**\n * Format usage statistics into a compact string\n */\nexport function formatUsage(u: Usage, model?: string): string {\n\tconst parts: string[] = [];\n\tif (u.turns) parts.push(`${u.turns} turn${u.turns > 1 ? \"s\" : \"\"}`);\n\tif (u.input) parts.push(`in:${formatTokens(u.input)}`);\n\tif (u.output) parts.push(`out:${formatTokens(u.output)}`);\n\tif (u.cacheRead) parts.push(`R${formatTokens(u.cacheRead)}`);\n\tif (u.cacheWrite) parts.push(`W${formatTokens(u.cacheWrite)}`);\n\tif (u.cost) parts.push(`$${u.cost.toFixed(4)}`);\n\tif (model) parts.push(model);\n\treturn parts.join(\" \");\n}\n\n/**\n * Format duration in human-readable form\n */\nexport function formatDuration(ms: number): string {\n\tif (ms < 1000) return `${ms}ms`;\n\tif (ms < 60000) return `${(ms / 1000).toFixed(1)}s`;\n\treturn `${Math.floor(ms / 60000)}m${Math.floor((ms % 60000) / 1000)}s`;\n}\n\n/**\n * Build a summary string for a completed/failed chain\n */\nexport function buildChainSummary(\n\tsteps: ChainStep[],\n\tresults: SingleResult[],\n\tchainDir: string,\n\tstatus: \"completed\" | \"failed\",\n\tfailedStep?: { index: number; error: string },\n): string {\n\tconst stepNames = steps\n\t\t.map((step) => (isParallelStep(step) ? `parallel[${step.parallel.length}]` : isDynamicParallelStep(step) ? `expand:${step.parallel.agent}` : step.agent))\n\t\t.join(\" → \");\n\n\tconst totalDuration = results.reduce((sum, r) => sum + (r.progress?.durationMs || 0), 0);\n\tconst durationStr = formatDuration(totalDuration);\n\n\tconst progressPath = path.join(chainDir, \"progress.md\");\n\tconst hasProgress = fs.existsSync(progressPath);\n\tconst allSkills = new Set<string>();\n\tfor (const r of results) {\n\t\tif (r.skills) r.skills.forEach((s) => allSkills.add(s));\n\t}\n\tconst skillsLine = allSkills.size > 0 ? `🔧 Skills: ${[...allSkills].join(\", \")}` : \"\";\n\n\tif (status === \"completed\") {\n\t\tconst stepWord = results.length === 1 ? \"step\" : \"steps\";\n\t\treturn `✅ Chain completed: ${stepNames} (${results.length} ${stepWord}, ${durationStr})${skillsLine ? `\\n${skillsLine}` : \"\"}\n\n📋 Progress: ${hasProgress ? progressPath : \"(none)\"}\n📁 Artifacts: ${chainDir}`;\n\t} else {\n\t\tconst stepInfo = failedStep ? ` at step ${failedStep.index + 1}` : \"\";\n\t\tconst errorInfo = failedStep?.error ? `: ${failedStep.error}` : \"\";\n\t\treturn `❌ Chain failed${stepInfo}${errorInfo}${skillsLine ? `\\n${skillsLine}` : \"\"}\n\n📋 Progress: ${hasProgress ? progressPath : \"(none)\"}\n📁 Artifacts: ${chainDir}`;\n\t}\n}\n\n/**\n * Format a tool call for display\n */\nexport function formatToolCall(name: string, args: Record<string, unknown>, expanded = false): string {\n\tswitch (name) {\n\t\tcase \"bash\": {\n\t\t\tconst command = typeof args.command === \"string\" ? args.command : \"\";\n\t\t\tconst maxLength = expanded ? 240 : 60;\n\t\t\treturn `$ ${command.slice(0, maxLength)}${command.length > maxLength ? \"...\" : \"\"}`;\n\t\t}\n\t\tcase \"read\":\n\t\tcase \"write\":\n\t\tcase \"edit\": {\n\t\t\tconst target = typeof args.path === \"string\"\n\t\t\t\t? args.path\n\t\t\t\t: typeof args.file_path === \"string\"\n\t\t\t\t\t? args.file_path\n\t\t\t\t\t: \"\";\n\t\t\treturn `${name} ${shortenPath(target)}`;\n\t\t}\n\t\tdefault: {\n\t\t\tconst s = JSON.stringify(args);\n\t\t\tconst maxLength = expanded ? 160 : 40;\n\t\t\treturn `${name} ${s.slice(0, maxLength)}${s.length > maxLength ? \"...\" : \"\"}`;\n\t\t}\n\t}\n}\n\n/**\n * Shorten a path by replacing home directory with ~\n */\nexport function shortenPath(p: string): string {\n\tconst home = process.env.HOME;\n\tif (home && p.startsWith(home)) {\n\t\treturn `~${p.slice(home.length)}`;\n\t}\n\treturn p;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/shared/formatters.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\n/**\n * Formatting utilities for display output\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { ModelSelection, Usage, SingleResult } from \"./types.ts\";\nimport type { ChainStep } from \"./settings.ts\";\nimport { isDynamicParallelStep, isParallelStep } from \"./settings.ts\";\nimport { splitKnownThinkingSuffix, THINKING_LEVELS } from \"./model-info.ts\";\n\n/**\n * Format token count with k suffix for large numbers\n */\nexport function formatTokens(n: number): string {\n\treturn n < 1000 ? String(n) : n < 10000 ? `${(n / 1000).toFixed(1)}k` : `${Math.round(n / 1000)}k`;\n}\n\nfunction formatThinkingLabel(model?: string, thinking?: string): string | undefined {\n\tconst parsed = model ? splitKnownThinkingSuffix(model) : undefined;\n\tconst explicitThinking = THINKING_LEVELS.find((level) => level === thinking?.trim());\n\tconst displayThinking = parsed?.thinkingSuffix ? parsed.thinkingSuffix.slice(1) : explicitThinking;\n\treturn displayThinking ? `thinking ${displayThinking}` : undefined;\n}\n\nexport function formatModelThinking(model?: string, thinking?: string): string {\n\tconst parsed = model ? splitKnownThinkingSuffix(model) : undefined;\n\tlet displayModel = parsed?.baseModel ?? model;\n\tif (displayModel) {\n\t\tconst slashIdx = displayModel.lastIndexOf(\"/\");\n\t\tif (slashIdx !== -1) displayModel = displayModel.slice(slashIdx + 1);\n\t}\n\treturn [displayModel, formatThinkingLabel(model, thinking)].filter(Boolean).join(\" · \");\n}\n\n/** Compact/header badge: selected tier name plus its effective thinking level. */\nexport function formatModelSelection(selection?: ModelSelection, resolvedModel?: string, thinking?: string): string {\n\tif (selection?.kind === \"tier\" && selection.tier) {\n\t\treturn [selection.tier, formatThinkingLabel(resolvedModel, thinking)].filter(Boolean).join(\" · \");\n\t}\n\treturn formatModelThinking(resolvedModel, thinking);\n}\n\n/**\n * Format usage statistics into a compact string\n */\nexport function formatUsage(u: Usage, model?: string): string {\n\tconst parts: string[] = [];\n\tif (u.turns) parts.push(`${u.turns} turn${u.turns > 1 ? \"s\" : \"\"}`);\n\tif (u.input) parts.push(`in:${formatTokens(u.input)}`);\n\tif (u.output) parts.push(`out:${formatTokens(u.output)}`);\n\tif (u.cacheRead) parts.push(`R${formatTokens(u.cacheRead)}`);\n\tif (u.cacheWrite) parts.push(`W${formatTokens(u.cacheWrite)}`);\n\tif (u.cost) parts.push(`$${u.cost.toFixed(4)}`);\n\tif (model) parts.push(model);\n\treturn parts.join(\" \");\n}\n\n/**\n * Format duration in human-readable form\n */\nexport function formatDuration(ms: number): string {\n\tif (ms < 1000) return `${ms}ms`;\n\tif (ms < 60000) return `${Math.floor(ms / 1000)}s`;\n\treturn `${Math.floor(ms / 60000)}m${Math.floor((ms % 60000) / 1000)}s`;\n}\n\n/**\n * Build a summary string for a completed/failed chain\n */\nexport function buildChainSummary(\n\tsteps: ChainStep[],\n\tresults: SingleResult[],\n\tchainDir: string,\n\tstatus: \"completed\" | \"failed\",\n\tfailedStep?: { index: number; error: string },\n): string {\n\tconst stepNames = steps\n\t\t.map((step) => (isParallelStep(step) ? `parallel[${step.parallel.length}]` : isDynamicParallelStep(step) ? `expand:${step.parallel.agent}` : step.agent))\n\t\t.join(\" → \");\n\n\tconst totalDuration = results.reduce((sum, r) => sum + (r.progress?.durationMs || 0), 0);\n\tconst durationStr = formatDuration(totalDuration);\n\n\tconst progressPath = path.join(chainDir, \"progress.md\");\n\tconst hasProgress = fs.existsSync(progressPath);\n\tconst allSkills = new Set<string>();\n\tfor (const r of results) {\n\t\tif (r.skills) r.skills.forEach((s) => allSkills.add(s));\n\t}\n\tconst skillsLine = allSkills.size > 0 ? `🔧 Skills: ${[...allSkills].join(\", \")}` : \"\";\n\n\tif (status === \"completed\") {\n\t\tconst stepWord = results.length === 1 ? \"step\" : \"steps\";\n\t\treturn `✅ Chain completed: ${stepNames} (${results.length} ${stepWord}, ${durationStr})${skillsLine ? `\\n${skillsLine}` : \"\"}\n\n📋 Progress: ${hasProgress ? progressPath : \"(none)\"}\n📁 Artifacts: ${chainDir}`;\n\t} else {\n\t\tconst stepInfo = failedStep ? ` at step ${failedStep.index + 1}` : \"\";\n\t\tconst errorInfo = failedStep?.error ? `: ${failedStep.error}` : \"\";\n\t\treturn `❌ Chain failed${stepInfo}${errorInfo}${skillsLine ? `\\n${skillsLine}` : \"\"}\n\n📋 Progress: ${hasProgress ? progressPath : \"(none)\"}\n📁 Artifacts: ${chainDir}`;\n\t}\n}\n\n/**\n * Format a tool call for display\n */\nexport function formatToolCall(name: string, args: Record<string, unknown>, expanded = false): string {\n\tswitch (name) {\n\t\tcase \"bash\": {\n\t\t\tconst command = typeof args.command === \"string\" ? args.command : \"\";\n\t\t\tconst maxLength = expanded ? 240 : 60;\n\t\t\treturn `$ ${command.slice(0, maxLength)}${command.length > maxLength ? \"...\" : \"\"}`;\n\t\t}\n\t\tcase \"read\":\n\t\tcase \"write\":\n\t\tcase \"edit\": {\n\t\t\tconst target = typeof args.path === \"string\"\n\t\t\t\t? args.path\n\t\t\t\t: typeof args.file_path === \"string\"\n\t\t\t\t\t? args.file_path\n\t\t\t\t\t: \"\";\n\t\t\treturn `${name} ${shortenPath(target)}`;\n\t\t}\n\t\tdefault: {\n\t\t\tconst s = JSON.stringify(args);\n\t\t\tconst maxLength = expanded ? 160 : 40;\n\t\t\treturn `${name} ${s.slice(0, maxLength)}${s.length > maxLength ? \"...\" : \"\"}`;\n\t\t}\n\t}\n}\n\n/**\n * Shorten a path by replacing home directory with ~\n */\nexport function shortenPath(p: string): string {\n\tconst home = process.env.HOME;\n\tif (home && p.startsWith(home)) {\n\t\treturn `~${p.slice(home.length)}`;\n\t}\n\treturn p;\n}\n"]}
|
|
@@ -12,6 +12,11 @@ export interface MaxOutputConfig {
|
|
|
12
12
|
export type OutputMode = "inline" | "file-only";
|
|
13
13
|
export type ChildPermission = "full" | "read-only";
|
|
14
14
|
export type ChildTier = "light" | "standard" | "heavy";
|
|
15
|
+
/** How the child model was chosen. Captured from requested params before resolution. */
|
|
16
|
+
export type ModelSelection = {
|
|
17
|
+
kind: "tier";
|
|
18
|
+
tier: ChildTier;
|
|
19
|
+
};
|
|
15
20
|
export interface ChildSpec {
|
|
16
21
|
childId: string;
|
|
17
22
|
task: string;
|
|
@@ -19,7 +24,8 @@ export interface ChildSpec {
|
|
|
19
24
|
requestedPermissions: ChildPermission;
|
|
20
25
|
effectivePermissions: ChildPermission;
|
|
21
26
|
model?: string;
|
|
22
|
-
tier
|
|
27
|
+
tier: ChildTier;
|
|
28
|
+
modelSelection?: ModelSelection;
|
|
23
29
|
skill?: string | string[] | false;
|
|
24
30
|
cwd?: string;
|
|
25
31
|
output?: string | false;
|
|
@@ -234,7 +240,7 @@ export interface ControlEvent {
|
|
|
234
240
|
}
|
|
235
241
|
export type SubagentResultStatus = "completed" | "failed" | "paused" | "stopped" | "detached";
|
|
236
242
|
export type SubagentRunMode = "single" | "parallel" | "chain";
|
|
237
|
-
export declare const SUBAGENT_LIFECYCLE_ARTIFACT_VERSION =
|
|
243
|
+
export declare const SUBAGENT_LIFECYCLE_ARTIFACT_VERSION = 4;
|
|
238
244
|
export type SubagentLifecycleArtifactVersion = typeof SUBAGENT_LIFECYCLE_ARTIFACT_VERSION;
|
|
239
245
|
export declare const UNSUPPORTED_SUBAGENT_LIFECYCLE_MESSAGE = "This subagent run uses an unsupported lifecycle format. Named agent types cannot be resumed. Launch a new prompt-driven child instead.";
|
|
240
246
|
export declare function isSupportedSubagentLifecycleVersion(version: unknown): boolean;
|
|
@@ -294,7 +300,7 @@ export interface SteeringNotice {
|
|
|
294
300
|
currentSessionId?: string;
|
|
295
301
|
}
|
|
296
302
|
export interface SteeringRecoveryDescriptor {
|
|
297
|
-
version:
|
|
303
|
+
version: 4;
|
|
298
304
|
lifecycleArtifactVersion?: SubagentLifecycleArtifactVersion;
|
|
299
305
|
sourceRunId: string;
|
|
300
306
|
childId: string;
|
|
@@ -304,7 +310,9 @@ export interface SteeringRecoveryDescriptor {
|
|
|
304
310
|
sessionFile?: string;
|
|
305
311
|
cwd: string;
|
|
306
312
|
model?: string;
|
|
313
|
+
tier: ChildTier;
|
|
307
314
|
thinking?: string;
|
|
315
|
+
modelSelection?: ModelSelection;
|
|
308
316
|
skills?: string[];
|
|
309
317
|
outputPath?: string;
|
|
310
318
|
outputMode: "inline" | "file-only";
|
|
@@ -385,6 +393,7 @@ export interface AgentProgress {
|
|
|
385
393
|
currentPath?: string;
|
|
386
394
|
model?: string;
|
|
387
395
|
thinking?: string;
|
|
396
|
+
modelSelection?: ModelSelection;
|
|
388
397
|
thinkingText?: string;
|
|
389
398
|
recentTools: Array<{
|
|
390
399
|
tool: string;
|
|
@@ -558,6 +567,7 @@ export interface SingleResult {
|
|
|
558
567
|
usage: Usage;
|
|
559
568
|
model?: string;
|
|
560
569
|
thinking?: string;
|
|
570
|
+
modelSelection?: ModelSelection;
|
|
561
571
|
attemptedModels?: string[];
|
|
562
572
|
modelAttempts?: ModelAttempt[];
|
|
563
573
|
controlEvents?: ControlEvent[];
|
|
@@ -835,6 +845,7 @@ export interface AsyncStatus {
|
|
|
835
845
|
skills?: string[];
|
|
836
846
|
model?: string;
|
|
837
847
|
thinking?: string;
|
|
848
|
+
modelSelection?: ModelSelection;
|
|
838
849
|
attemptedModels?: string[];
|
|
839
850
|
modelAttempts?: ModelAttempt[];
|
|
840
851
|
totalCost?: CostSummary;
|