@qduc/term2 0.31.0 → 0.32.0
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/README.md +52 -370
- package/dist/acp-v2/serve.d.ts.map +1 -1
- package/dist/acp-v2/serve.js +6 -6
- package/dist/acp-v2/serve.js.map +1 -1
- package/dist/agent.d.ts +2 -1
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +14 -7
- package/dist/agent.js.map +1 -1
- package/dist/app.d.ts +3 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +66 -21
- package/dist/app.js.map +1 -1
- package/dist/build-info.json +2 -2
- package/dist/cli.js +30 -24
- package/dist/cli.js.map +1 -1
- package/dist/commands/goal-command.d.ts.map +1 -1
- package/dist/commands/goal-command.js +9 -8
- package/dist/commands/goal-command.js.map +1 -1
- package/dist/commands/model-command.d.ts.map +1 -1
- package/dist/commands/model-command.js +4 -8
- package/dist/commands/model-command.js.map +1 -1
- package/dist/commands/retry-failed-turn-command.d.ts.map +1 -1
- package/dist/commands/retry-failed-turn-command.js +3 -4
- package/dist/commands/retry-failed-turn-command.js.map +1 -1
- package/dist/components/InputBox.js +4 -6
- package/dist/components/InputBox.js.map +1 -1
- package/dist/components/input/ModelMenuSession.d.ts.map +1 -1
- package/dist/components/input/ModelMenuSession.js +7 -12
- package/dist/components/input/ModelMenuSession.js.map +1 -1
- package/dist/components/input/SettingsMenuSession.d.ts.map +1 -1
- package/dist/components/input/SettingsMenuSession.js +0 -2
- package/dist/components/input/SettingsMenuSession.js.map +1 -1
- package/dist/components/input/SubagentPoolMenuSession.d.ts.map +1 -1
- package/dist/components/input/SubagentPoolMenuSession.js +0 -2
- package/dist/components/input/SubagentPoolMenuSession.js.map +1 -1
- package/dist/components/input/menu-types.d.ts +0 -2
- package/dist/components/input/menu-types.d.ts.map +1 -1
- package/dist/components/input/triggers.d.ts.map +1 -1
- package/dist/components/input/triggers.js +0 -2
- package/dist/components/input/triggers.js.map +1 -1
- package/dist/components/layout/Banner.js +4 -4
- package/dist/components/layout/Banner.js.map +1 -1
- package/dist/components/layout/BottomArea.d.ts.map +1 -1
- package/dist/components/layout/BottomArea.js +13 -11
- package/dist/components/layout/BottomArea.js.map +1 -1
- package/dist/components/layout/StatusBar.js +4 -4
- package/dist/components/layout/StatusBar.js.map +1 -1
- package/dist/components/menu/settings-value-formatter.d.ts.map +1 -1
- package/dist/components/menu/settings-value-formatter.js +2 -12
- package/dist/components/menu/settings-value-formatter.js.map +1 -1
- package/dist/components/message/MessageList.d.ts +3 -1
- package/dist/components/message/MessageList.d.ts.map +1 -1
- package/dist/components/message/MessageList.js +5 -2
- package/dist/components/message/MessageList.js.map +1 -1
- package/dist/components/message/SessionBoundary.d.ts +11 -0
- package/dist/components/message/SessionBoundary.d.ts.map +1 -0
- package/dist/components/message/SessionBoundary.js +22 -0
- package/dist/components/message/SessionBoundary.js.map +1 -0
- package/dist/contracts/provider-input.d.ts +10 -0
- package/dist/contracts/provider-input.d.ts.map +1 -1
- package/dist/contracts/provider-input.js.map +1 -1
- package/dist/contracts/run-termination.d.ts +3 -1
- package/dist/contracts/run-termination.d.ts.map +1 -1
- package/dist/gateway/gateway.d.ts.map +1 -1
- package/dist/gateway/gateway.js +20 -10
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/launcher-seam.js +2 -2
- package/dist/gateway/launcher-seam.js.map +1 -1
- package/dist/gateway/runtime-factory.d.ts.map +1 -1
- package/dist/gateway/runtime-factory.js +2 -3
- package/dist/gateway/runtime-factory.js.map +1 -1
- package/dist/gateway/settings-rpc.d.ts +5 -2
- package/dist/gateway/settings-rpc.d.ts.map +1 -1
- package/dist/gateway/settings-rpc.js +6 -4
- package/dist/gateway/settings-rpc.js.map +1 -1
- package/dist/hooks/settings-completion-config.d.ts +0 -2
- package/dist/hooks/settings-completion-config.d.ts.map +1 -1
- package/dist/hooks/settings-completion-config.js +3 -23
- package/dist/hooks/settings-completion-config.js.map +1 -1
- package/dist/hooks/use-app-commands.d.ts +1 -1
- package/dist/hooks/use-app-commands.d.ts.map +1 -1
- package/dist/hooks/use-conversation-settings.d.ts +3 -2
- package/dist/hooks/use-conversation-settings.d.ts.map +1 -1
- package/dist/hooks/use-conversation-settings.js +4 -4
- package/dist/hooks/use-conversation-settings.js.map +1 -1
- package/dist/hooks/use-conversation.d.ts +1 -1
- package/dist/hooks/use-conversation.js +3 -3
- package/dist/hooks/use-conversation.js.map +1 -1
- package/dist/hooks/use-first-run-setup.d.ts +1 -2
- package/dist/hooks/use-first-run-setup.d.ts.map +1 -1
- package/dist/hooks/use-first-run-setup.js +7 -17
- package/dist/hooks/use-first-run-setup.js.map +1 -1
- package/dist/hooks/use-grok-credit-usage.js +1 -1
- package/dist/hooks/use-grok-credit-usage.js.map +1 -1
- package/dist/hooks/use-handoff-flow.d.ts +1 -1
- package/dist/hooks/use-handoff-flow.d.ts.map +1 -1
- package/dist/hooks/use-handoff-flow.js +3 -3
- package/dist/hooks/use-handoff-flow.js.map +1 -1
- package/dist/hooks/use-model-selection.d.ts.map +1 -1
- package/dist/hooks/use-model-selection.js +6 -8
- package/dist/hooks/use-model-selection.js.map +1 -1
- package/dist/hooks/use-opencode-go-usage.js +1 -1
- package/dist/hooks/use-opencode-go-usage.js.map +1 -1
- package/dist/hooks/use-runtime-settings.d.ts +2 -2
- package/dist/hooks/use-runtime-settings.d.ts.map +1 -1
- package/dist/hooks/use-runtime-settings.js +3 -3
- package/dist/hooks/use-runtime-settings.js.map +1 -1
- package/dist/hooks/use-standalone-model-picker.d.ts.map +1 -1
- package/dist/hooks/use-standalone-model-picker.js +7 -6
- package/dist/hooks/use-standalone-model-picker.js.map +1 -1
- package/dist/hooks/use-subagent-pool-selection.d.ts +9 -16
- package/dist/hooks/use-subagent-pool-selection.d.ts.map +1 -1
- package/dist/hooks/use-subagent-pool-selection.js +15 -33
- package/dist/hooks/use-subagent-pool-selection.js.map +1 -1
- package/dist/lib/agent-chat-service.d.ts +6 -0
- package/dist/lib/agent-chat-service.d.ts.map +1 -1
- package/dist/lib/agent-chat-service.js +27 -3
- package/dist/lib/agent-chat-service.js.map +1 -1
- package/dist/lib/agent-client.d.ts +10 -5
- package/dist/lib/agent-client.d.ts.map +1 -1
- package/dist/lib/agent-client.js +86 -34
- package/dist/lib/agent-client.js.map +1 -1
- package/dist/lib/agent-configuration.d.ts +5 -4
- package/dist/lib/agent-configuration.d.ts.map +1 -1
- package/dist/lib/agent-configuration.js +24 -33
- package/dist/lib/agent-configuration.js.map +1 -1
- package/dist/lib/agent-factory.d.ts +4 -3
- package/dist/lib/agent-factory.d.ts.map +1 -1
- package/dist/lib/agent-factory.js +21 -7
- package/dist/lib/agent-factory.js.map +1 -1
- package/dist/non-interactive.d.ts +5 -0
- package/dist/non-interactive.d.ts.map +1 -1
- package/dist/non-interactive.js +67 -10
- package/dist/non-interactive.js.map +1 -1
- package/dist/prompts/durable-goal-context.d.ts.map +1 -1
- package/dist/prompts/durable-goal-context.js +12 -2
- package/dist/prompts/durable-goal-context.js.map +1 -1
- package/dist/prompts/durable-goal-context.test.ts +11 -0
- package/dist/prompts/durable-goal-context.ts +13 -2
- package/dist/providers/ai-sdk-openrouter.provider.js +3 -2
- package/dist/providers/ai-sdk-openrouter.provider.js.map +1 -1
- package/dist/providers/ai-sdk-streamed-model.d.ts.map +1 -1
- package/dist/providers/ai-sdk-streamed-model.js +12 -2
- package/dist/providers/ai-sdk-streamed-model.js.map +1 -1
- package/dist/providers/codex-responses-model.d.ts.map +1 -1
- package/dist/providers/codex-responses-model.js +35 -16
- package/dist/providers/codex-responses-model.js.map +1 -1
- package/dist/providers/codex.provider.js +1 -1
- package/dist/providers/codex.provider.js.map +1 -1
- package/dist/providers/grok.provider.js +1 -1
- package/dist/providers/grok.provider.js.map +1 -1
- package/dist/providers/openai-chat-completions-model.d.ts.map +1 -1
- package/dist/providers/openai-chat-completions-model.js +11 -3
- package/dist/providers/openai-chat-completions-model.js.map +1 -1
- package/dist/providers/openai-compatible-lazy.js +1 -1
- package/dist/providers/openai-compatible-lazy.js.map +1 -1
- package/dist/providers/openai.provider.js +1 -1
- package/dist/providers/openai.provider.js.map +1 -1
- package/dist/providers/openrouter.provider.js +1 -1
- package/dist/providers/openrouter.provider.js.map +1 -1
- package/dist/providers/provider-service.d.ts.map +1 -1
- package/dist/providers/provider-service.js +6 -7
- package/dist/providers/provider-service.js.map +1 -1
- package/dist/scripts/eval-auto-approval/runner.js +2 -3
- package/dist/scripts/eval-auto-approval/runner.js.map +1 -1
- package/dist/scripts/eval-context-compaction/runner.js +1 -2
- package/dist/scripts/eval-context-compaction/runner.js.map +1 -1
- package/dist/services/agent-runtime/application-run-loop.d.ts +34 -1
- package/dist/services/agent-runtime/application-run-loop.d.ts.map +1 -1
- package/dist/services/agent-runtime/application-run-loop.js +174 -33
- package/dist/services/agent-runtime/application-run-loop.js.map +1 -1
- package/dist/services/agent-runtime/context-compaction/index.d.ts.map +1 -1
- package/dist/services/agent-runtime/context-compaction/index.js +65 -16
- package/dist/services/agent-runtime/context-compaction/index.js.map +1 -1
- package/dist/services/agent-runtime/context-compaction/local-context-compactor.d.ts +7 -1
- package/dist/services/agent-runtime/context-compaction/local-context-compactor.d.ts.map +1 -1
- package/dist/services/agent-runtime/context-compaction/local-context-compactor.js +115 -20
- package/dist/services/agent-runtime/context-compaction/local-context-compactor.js.map +1 -1
- package/dist/services/agent-runtime/model-context-policy.d.ts +21 -0
- package/dist/services/agent-runtime/model-context-policy.d.ts.map +1 -0
- package/dist/services/agent-runtime/model-context-policy.js +46 -0
- package/dist/services/agent-runtime/model-context-policy.js.map +1 -0
- package/dist/services/agent-runtime/model-resolver.d.ts +4 -13
- package/dist/services/agent-runtime/model-resolver.d.ts.map +1 -1
- package/dist/services/agent-runtime/model-resolver.js +9 -39
- package/dist/services/agent-runtime/model-resolver.js.map +1 -1
- package/dist/services/agent-runtime/request-input-limit.d.ts +31 -0
- package/dist/services/agent-runtime/request-input-limit.d.ts.map +1 -0
- package/dist/services/agent-runtime/request-input-limit.js +86 -0
- package/dist/services/agent-runtime/request-input-limit.js.map +1 -0
- package/dist/services/agent-runtime/run-budget.d.ts +3 -5
- package/dist/services/agent-runtime/run-budget.d.ts.map +1 -1
- package/dist/services/agent-runtime/run-budget.js.map +1 -1
- package/dist/services/agent-runtime/tool-call-execution.d.ts +24 -2
- package/dist/services/agent-runtime/tool-call-execution.d.ts.map +1 -1
- package/dist/services/agent-runtime/tool-call-execution.js +36 -6
- package/dist/services/agent-runtime/tool-call-execution.js.map +1 -1
- package/dist/services/agent-runtime/tool-invocation-context.d.ts +24 -12
- package/dist/services/agent-runtime/tool-invocation-context.d.ts.map +1 -1
- package/dist/services/agent-runtime/tool-invocation-context.js +38 -27
- package/dist/services/agent-runtime/tool-invocation-context.js.map +1 -1
- package/dist/services/approval/approval-replay.d.ts +15 -24
- package/dist/services/approval/approval-replay.d.ts.map +1 -1
- package/dist/services/approval/approval-replay.js +12 -30
- package/dist/services/approval/approval-replay.js.map +1 -1
- package/dist/services/approval/non-interactive-approval-policy.d.ts.map +1 -1
- package/dist/services/approval/non-interactive-approval-policy.js +11 -0
- package/dist/services/approval/non-interactive-approval-policy.js.map +1 -1
- package/dist/services/approval/tool-approval-batch-coordinator.d.ts.map +1 -1
- package/dist/services/approval/tool-approval-batch-coordinator.js +0 -5
- package/dist/services/approval/tool-approval-batch-coordinator.js.map +1 -1
- package/dist/services/control-socket/control-session-port.js +6 -6
- package/dist/services/control-socket/control-session-port.js.map +1 -1
- package/dist/services/conversation/conversation-checkpoint-provenance.d.ts.map +1 -1
- package/dist/services/conversation/conversation-checkpoint-provenance.js +10 -2
- package/dist/services/conversation/conversation-checkpoint-provenance.js.map +1 -1
- package/dist/services/conversation/conversation-events.d.ts +2 -0
- package/dist/services/conversation/conversation-events.d.ts.map +1 -1
- package/dist/services/conversation/conversation-events.js.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.d.ts +1 -1
- package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.js +14 -2
- package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
- package/dist/services/conversation/conversation-replay.d.ts.map +1 -1
- package/dist/services/conversation/conversation-replay.js +87 -3
- package/dist/services/conversation/conversation-replay.js.map +1 -1
- package/dist/services/conversation/conversation-service.d.ts +4 -5
- package/dist/services/conversation/conversation-service.d.ts.map +1 -1
- package/dist/services/conversation/conversation-service.js +9 -11
- package/dist/services/conversation/conversation-service.js.map +1 -1
- package/dist/services/conversation/conversation-state-projector.d.ts +1 -0
- package/dist/services/conversation/conversation-state-projector.d.ts.map +1 -1
- package/dist/services/conversation/conversation-state-projector.js +5 -1
- package/dist/services/conversation/conversation-state-projector.js.map +1 -1
- package/dist/services/conversation/durable-goal-stop-check.d.ts +141 -0
- package/dist/services/conversation/durable-goal-stop-check.d.ts.map +1 -0
- package/dist/services/conversation/durable-goal-stop-check.js +351 -0
- package/dist/services/conversation/durable-goal-stop-check.js.map +1 -0
- package/dist/services/conversation/durable-goal.d.ts +16 -1
- package/dist/services/conversation/durable-goal.d.ts.map +1 -1
- package/dist/services/conversation/durable-goal.js +8 -0
- package/dist/services/conversation/durable-goal.js.map +1 -1
- package/dist/services/conversation/local-checkpoint-projection.d.ts.map +1 -1
- package/dist/services/conversation/local-checkpoint-projection.js +12 -1
- package/dist/services/conversation/local-checkpoint-projection.js.map +1 -1
- package/dist/services/conversation/session-browser.d.ts +2 -0
- package/dist/services/conversation/session-browser.d.ts.map +1 -1
- package/dist/services/conversation/session-browser.js +23 -8
- package/dist/services/conversation/session-browser.js.map +1 -1
- package/dist/services/conversation/session-index/session-index-worker-client.d.ts +3 -0
- package/dist/services/conversation/session-index/session-index-worker-client.d.ts.map +1 -1
- package/dist/services/conversation/session-index/session-index-worker-client.js +6 -1
- package/dist/services/conversation/session-index/session-index-worker-client.js.map +1 -1
- package/dist/services/conversation/session-index/session-index-worker.d.ts +16 -1
- package/dist/services/conversation/session-index/session-index-worker.d.ts.map +1 -1
- package/dist/services/conversation/session-index/session-index-worker.js +16 -0
- package/dist/services/conversation/session-index/session-index-worker.js.map +1 -1
- package/dist/services/conversation-agent-client.d.ts +3 -1
- package/dist/services/conversation-agent-client.d.ts.map +1 -1
- package/dist/services/handoff/handoff-session.d.ts +1 -1
- package/dist/services/handoff/handoff-session.d.ts.map +1 -1
- package/dist/services/handoff/handoff-session.js +10 -12
- package/dist/services/handoff/handoff-session.js.map +1 -1
- package/dist/services/logging/conversation-log-events.d.ts +7 -0
- package/dist/services/logging/conversation-log-events.d.ts.map +1 -1
- package/dist/services/logging/conversation-log-events.js +1 -2
- package/dist/services/logging/conversation-log-events.js.map +1 -1
- package/dist/services/model-service.js +1 -1
- package/dist/services/model-service.js.map +1 -1
- package/dist/services/models/model-resolution.d.ts +2 -2
- package/dist/services/models/model-resolution.d.ts.map +1 -1
- package/dist/services/models/model-resolution.js +8 -2
- package/dist/services/models/model-resolution.js.map +1 -1
- package/dist/services/retry/retry-classifier.d.ts.map +1 -1
- package/dist/services/retry/retry-classifier.js +2 -1
- package/dist/services/retry/retry-classifier.js.map +1 -1
- package/dist/services/retry/retry-error-classification.d.ts.map +1 -1
- package/dist/services/retry/retry-error-classification.js +1 -0
- package/dist/services/retry/retry-error-classification.js.map +1 -1
- package/dist/services/runtime-setting-router.d.ts +2 -2
- package/dist/services/runtime-setting-router.d.ts.map +1 -1
- package/dist/services/runtime-setting-router.js +8 -17
- package/dist/services/runtime-setting-router.js.map +1 -1
- package/dist/services/service-interfaces.d.ts +2 -0
- package/dist/services/service-interfaces.d.ts.map +1 -1
- package/dist/services/session/initial-turn-recovery-handler.d.ts.map +1 -1
- package/dist/services/session/initial-turn-recovery-handler.js +6 -0
- package/dist/services/session/initial-turn-recovery-handler.js.map +1 -1
- package/dist/services/session/session-client-factory.js +1 -1
- package/dist/services/session/session-client-factory.js.map +1 -1
- package/dist/services/session/session-composition.d.ts.map +1 -1
- package/dist/services/session/session-composition.js +11 -9
- package/dist/services/session/session-composition.js.map +1 -1
- package/dist/services/session/session-input-planner.js +2 -2
- package/dist/services/session/session-input-planner.js.map +1 -1
- package/dist/services/session/session-manager.d.ts +2 -0
- package/dist/services/session/session-manager.d.ts.map +1 -1
- package/dist/services/session/session-manager.js +14 -2
- package/dist/services/session/session-manager.js.map +1 -1
- package/dist/services/session/session-runtime-controller.d.ts +2 -4
- package/dist/services/session/session-runtime-controller.d.ts.map +1 -1
- package/dist/services/session/session-runtime-controller.js +2 -14
- package/dist/services/session/session-runtime-controller.js.map +1 -1
- package/dist/services/session/session-tool-tracker.d.ts +1 -0
- package/dist/services/session/session-tool-tracker.d.ts.map +1 -1
- package/dist/services/session/session-tool-tracker.js +8 -0
- package/dist/services/session/session-tool-tracker.js.map +1 -1
- package/dist/services/session/terminal-result-collector.d.ts.map +1 -1
- package/dist/services/session/terminal-result-collector.js +3 -0
- package/dist/services/session/terminal-result-collector.js.map +1 -1
- package/dist/services/session/test-helpers/conversation-session-fixtures.d.ts.map +1 -1
- package/dist/services/session/test-helpers/conversation-session-fixtures.js +5 -2
- package/dist/services/session/test-helpers/conversation-session-fixtures.js.map +1 -1
- package/dist/services/session/turn-workflow.d.ts.map +1 -1
- package/dist/services/session/turn-workflow.js +3 -0
- package/dist/services/session/turn-workflow.js.map +1 -1
- package/dist/services/settings/ancillary-settings-migration.d.ts +1 -1
- package/dist/services/settings/ancillary-settings-migration.d.ts.map +1 -1
- package/dist/services/settings/ancillary-settings-migration.js +4 -37
- package/dist/services/settings/ancillary-settings-migration.js.map +1 -1
- package/dist/services/settings/model-selection.d.ts +7 -0
- package/dist/services/settings/model-selection.d.ts.map +1 -0
- package/dist/services/settings/model-selection.js +6 -0
- package/dist/services/settings/model-selection.js.map +1 -0
- package/dist/services/settings/persisted-selection-migration.d.ts +9 -0
- package/dist/services/settings/persisted-selection-migration.d.ts.map +1 -0
- package/dist/services/settings/persisted-selection-migration.js +109 -0
- package/dist/services/settings/persisted-selection-migration.js.map +1 -0
- package/dist/services/settings/setting-schema-utils.d.ts.map +1 -1
- package/dist/services/settings/setting-schema-utils.js +5 -2
- package/dist/services/settings/setting-schema-utils.js.map +1 -1
- package/dist/services/settings/settings-env.d.ts.map +1 -1
- package/dist/services/settings/settings-env.js +6 -2
- package/dist/services/settings/settings-env.js.map +1 -1
- package/dist/services/settings/settings-merger.d.ts.map +1 -1
- package/dist/services/settings/settings-merger.js +12 -5
- package/dist/services/settings/settings-merger.js.map +1 -1
- package/dist/services/settings/settings-persistence.d.ts +3 -1
- package/dist/services/settings/settings-persistence.d.ts.map +1 -1
- package/dist/services/settings/settings-persistence.js +24 -6
- package/dist/services/settings/settings-persistence.js.map +1 -1
- package/dist/services/settings/settings-schema.d.ts +69 -119
- package/dist/services/settings/settings-schema.d.ts.map +1 -1
- package/dist/services/settings/settings-schema.js +71 -183
- package/dist/services/settings/settings-schema.js.map +1 -1
- package/dist/services/settings/settings-service.d.ts +5 -1
- package/dist/services/settings/settings-service.d.ts.map +1 -1
- package/dist/services/settings/settings-service.js +105 -41
- package/dist/services/settings/settings-service.js.map +1 -1
- package/dist/services/settings/settings-service.mock.js +2 -2
- package/dist/services/settings/settings-service.mock.js.map +1 -1
- package/dist/services/settings/settings-sources.d.ts +2 -20
- package/dist/services/settings/settings-sources.d.ts.map +1 -1
- package/dist/services/settings/settings-sources.js +2 -20
- package/dist/services/settings/settings-sources.js.map +1 -1
- package/dist/services/settings/settings-ui-metadata.d.ts.map +1 -1
- package/dist/services/settings/settings-ui-metadata.js +5 -25
- package/dist/services/settings/settings-ui-metadata.js.map +1 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts +6 -6
- package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts.map +1 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.js +4 -28
- package/dist/services/settings/test-helpers/settings-consumer-inventory.js.map +1 -1
- package/dist/services/subagents/execution-runner.d.ts.map +1 -1
- package/dist/services/subagents/execution-runner.js +16 -3
- package/dist/services/subagents/execution-runner.js.map +1 -1
- package/dist/services/subagents/mentor-runner.d.ts.map +1 -1
- package/dist/services/subagents/mentor-runner.js +10 -6
- package/dist/services/subagents/mentor-runner.js.map +1 -1
- package/dist/services/subagents/nested-runner.d.ts.map +1 -1
- package/dist/services/subagents/nested-runner.js +3 -2
- package/dist/services/subagents/nested-runner.js.map +1 -1
- package/dist/services/subagents/role-loader.d.ts.map +1 -1
- package/dist/services/subagents/role-loader.js +9 -17
- package/dist/services/subagents/role-loader.js.map +1 -1
- package/dist/services/subagents/subagent-pool-config.d.ts +0 -6
- package/dist/services/subagents/subagent-pool-config.d.ts.map +1 -1
- package/dist/services/subagents/subagent-pool-config.js +1 -22
- package/dist/services/subagents/subagent-pool-config.js.map +1 -1
- package/dist/services/subagents/subagent-role-pool-selector.d.ts +1 -2
- package/dist/services/subagents/subagent-role-pool-selector.d.ts.map +1 -1
- package/dist/services/subagents/subagent-role-pool-selector.js +4 -10
- package/dist/services/subagents/subagent-role-pool-selector.js.map +1 -1
- package/dist/services/subagents/test-helpers/subagent-manager-fixtures.d.ts.map +1 -1
- package/dist/services/subagents/test-helpers/subagent-manager-fixtures.js +8 -2
- package/dist/services/subagents/test-helpers/subagent-manager-fixtures.js.map +1 -1
- package/dist/services/tool-execution-ledger.d.ts +22 -0
- package/dist/services/tool-execution-ledger.d.ts.map +1 -1
- package/dist/services/tool-execution-ledger.js +40 -3
- package/dist/services/tool-execution-ledger.js.map +1 -1
- package/dist/services/workflow-evolution/cli.d.ts +2 -0
- package/dist/services/workflow-evolution/cli.d.ts.map +1 -0
- package/dist/services/workflow-evolution/cli.js +26 -0
- package/dist/services/workflow-evolution/cli.js.map +1 -0
- package/dist/services/workflow-evolution/demo.d.ts +18 -0
- package/dist/services/workflow-evolution/demo.d.ts.map +1 -0
- package/dist/services/workflow-evolution/demo.js +177 -0
- package/dist/services/workflow-evolution/demo.js.map +1 -0
- package/dist/services/workflow-evolution/experiment.d.ts +304 -0
- package/dist/services/workflow-evolution/experiment.d.ts.map +1 -0
- package/dist/services/workflow-evolution/experiment.js +251 -0
- package/dist/services/workflow-evolution/experiment.js.map +1 -0
- package/dist/services/workflow-evolution/ledger.d.ts +5 -0
- package/dist/services/workflow-evolution/ledger.d.ts.map +1 -0
- package/dist/services/workflow-evolution/ledger.js +57 -0
- package/dist/services/workflow-evolution/ledger.js.map +1 -0
- package/dist/skins/rail/status.d.ts.map +1 -1
- package/dist/skins/rail/status.js +21 -11
- package/dist/skins/rail/status.js.map +1 -1
- package/dist/skins/testing/scenes.d.ts.map +1 -1
- package/dist/skins/testing/scenes.js +1 -2
- package/dist/skins/testing/scenes.js.map +1 -1
- package/dist/tools/agent/goal-check.d.ts +23 -0
- package/dist/tools/agent/goal-check.d.ts.map +1 -0
- package/dist/tools/agent/goal-check.js +79 -0
- package/dist/tools/agent/goal-check.js.map +1 -0
- package/dist/tools/file/edit-healing.js +1 -1
- package/dist/tools/file/edit-healing.js.map +1 -1
- package/dist/tools/file/patch-healing.js +1 -1
- package/dist/tools/file/patch-healing.js.map +1 -1
- package/dist/tools/system/run-code/run-code-execution.d.ts +7 -0
- package/dist/tools/system/run-code/run-code-execution.d.ts.map +1 -1
- package/dist/tools/system/run-code/run-code-execution.js.map +1 -1
- package/dist/tools/system/run-code/run-code-runtime-contract.d.ts +2 -0
- package/dist/tools/system/run-code/run-code-runtime-contract.d.ts.map +1 -1
- package/dist/tools/system/run-code/run-code-runtime.d.ts +2 -1
- package/dist/tools/system/run-code/run-code-runtime.d.ts.map +1 -1
- package/dist/tools/system/run-code/run-code-runtime.js +26 -7
- package/dist/tools/system/run-code/run-code-runtime.js.map +1 -1
- package/dist/tools/system/run-code/run-code.js +15 -8
- package/dist/tools/system/run-code/run-code.js.map +1 -1
- package/dist/tools/tool-names.d.ts +1 -0
- package/dist/tools/tool-names.d.ts.map +1 -1
- package/dist/tools/tool-names.js +1 -0
- package/dist/tools/tool-names.js.map +1 -1
- package/dist/tools/types.d.ts +21 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js +7 -0
- package/dist/tools/types.js.map +1 -1
- package/dist/utils/ai/model-settings.d.ts +0 -2
- package/dist/utils/ai/model-settings.d.ts.map +1 -1
- package/dist/utils/ai/model-settings.js +2 -11
- package/dist/utils/ai/model-settings.js.map +1 -1
- package/dist/utils/conversation/conversation-event-handler.d.ts.map +1 -1
- package/dist/utils/conversation/conversation-event-handler.js +4 -0
- package/dist/utils/conversation/conversation-event-handler.js.map +1 -1
- package/dist/utils/output/text-snippet.js +25 -33
- package/dist/utils/output/text-snippet.js.map +1 -1
- package/dist/utils/settings-command.d.ts.map +1 -1
- package/dist/utils/settings-command.js +25 -24
- package/dist/utils/settings-command.js.map +1 -1
- package/dist/utils/value-suggestions.d.ts +0 -2
- package/dist/utils/value-suggestions.d.ts.map +1 -1
- package/dist/utils/value-suggestions.js +2 -63
- package/dist/utils/value-suggestions.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,92 +1,64 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import envPaths from 'env-paths';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
+
import { ModelSelectionSchema } from './model-selection.js';
|
|
4
5
|
import { THEME_SETTING_VALUES } from '../../theme/resolve-theme.js';
|
|
5
6
|
import { SKIN_NAMES } from '../../skins/names.js';
|
|
6
7
|
import { normalizeProviderIdentifier, resolveProviderId, resolveProviderName, } from './custom-provider-normalization.js';
|
|
7
|
-
//
|
|
8
|
-
|
|
9
|
-
// role's configuration when omitted.
|
|
10
|
-
const SubagentPoolEntrySchema = z.object({
|
|
11
|
-
model: z.string().min(1),
|
|
12
|
-
provider: z.string().min(1).optional(),
|
|
8
|
+
// Saved mentor entries pin the host and model; only reasoning may inherit.
|
|
9
|
+
export const SubagentPoolEntrySchema = ModelSelectionSchema.extend({
|
|
13
10
|
reasoningEffort: z.enum(['default', 'none', 'minimal', 'low', 'medium', 'high', 'xhigh']).optional(),
|
|
14
11
|
});
|
|
12
|
+
function rejectRemovedSelectionKeys(keys) {
|
|
13
|
+
return (value, ctx) => {
|
|
14
|
+
if (value && typeof value === 'object') {
|
|
15
|
+
for (const key of keys) {
|
|
16
|
+
if (Object.hasOwn(value, key)) {
|
|
17
|
+
ctx.addIssue({
|
|
18
|
+
code: 'custom',
|
|
19
|
+
path: [key],
|
|
20
|
+
message: 'Removed model/provider setting; use complete bound selections in modelSelection or tier/mentor pools',
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return value;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
15
28
|
const MAX_SUBAGENT_POOL_ENTRIES = 8;
|
|
16
29
|
const subagentPoolSchema = (description) => z.array(SubagentPoolEntrySchema).max(MAX_SUBAGENT_POOL_ENTRIES).default([]).describe(description);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
// single-entry pool.
|
|
23
|
-
export const TierModelPoolEntrySchema = z.union([
|
|
24
|
-
z.string().min(1),
|
|
25
|
-
z.object({ model: z.string().min(1), provider: z.string().min(1).optional() }),
|
|
26
|
-
]);
|
|
27
|
-
const tierModelPoolSchema = (description) => z
|
|
28
|
-
.preprocess((value) => {
|
|
29
|
-
if (value === undefined || value === null || value === '')
|
|
30
|
-
return undefined;
|
|
31
|
-
return Array.isArray(value) ? value : [value];
|
|
32
|
-
}, z.array(TierModelPoolEntrySchema).max(MAX_SUBAGENT_POOL_ENTRIES).optional())
|
|
33
|
-
.describe(description);
|
|
34
|
-
// Define schemas for validation
|
|
35
|
-
export const AgentSettingsSchema = z.object({
|
|
36
|
-
model: z.string().min(1).default('gpt-5.1'),
|
|
37
|
-
efficientModel: z
|
|
38
|
-
.string()
|
|
39
|
-
.min(1)
|
|
40
|
-
.optional()
|
|
41
|
-
.describe('Model for lower-tier workflow agents. Falls back to agent.model when unset.'),
|
|
42
|
-
capableModel: z
|
|
43
|
-
.string()
|
|
44
|
-
.min(1)
|
|
45
|
-
.optional()
|
|
46
|
-
.describe('Model for higher-tier workflow agents. Falls back to agent.model when unset.'),
|
|
47
|
-
smartModel: tierModelPoolSchema('Models for smart-tier helper agents (the hardest side tasks); subagent spawns round-robin the pool, other consumers use the first entry. Falls back to agent.model when unset.'),
|
|
48
|
-
smartProvider: z
|
|
49
|
-
.string()
|
|
50
|
-
.min(1)
|
|
51
|
-
.optional()
|
|
52
|
-
.describe('Provider for smart-tier helper agents (the hardest side tasks). Falls back to agent.provider when unset.'),
|
|
30
|
+
export const TierModelPoolEntrySchema = ModelSelectionSchema;
|
|
31
|
+
const tierModelPoolSchema = (description) => z.array(TierModelPoolEntrySchema).max(MAX_SUBAGENT_POOL_ENTRIES).optional().describe(description);
|
|
32
|
+
const AgentSettingsObjectSchema = z.object({
|
|
33
|
+
modelSelection: ModelSelectionSchema.default({ model: 'gpt-5.1', provider: 'openai' }).describe('Bound provider and model selection for the main agent'),
|
|
34
|
+
smartModel: tierModelPoolSchema('Models for smart-tier helper agents (the hardest side tasks); subagent spawns round-robin the pool, other consumers use the first entry. Falls back to agent.modelSelection when unset.'),
|
|
53
35
|
smartReasoningEffort: z
|
|
54
36
|
.enum(['default', 'none', 'minimal', 'low', 'medium', 'high', 'xhigh'])
|
|
55
37
|
.optional()
|
|
56
38
|
.describe('Reasoning effort for smart-tier helper agents (the hardest side tasks). Falls back to agent.reasoningEffort when unset.'),
|
|
57
|
-
balancedModel: tierModelPoolSchema('Models for balanced-tier helper agents (everyday side tasks); subagent spawns round-robin the pool, other consumers use the first entry. Falls back to agent.
|
|
58
|
-
balancedProvider: z
|
|
59
|
-
.string()
|
|
60
|
-
.min(1)
|
|
61
|
-
.optional()
|
|
62
|
-
.describe('Provider for balanced-tier helper agents (everyday side tasks). Falls back to agent.provider when unset.'),
|
|
39
|
+
balancedModel: tierModelPoolSchema('Models for balanced-tier helper agents (everyday side tasks); subagent spawns round-robin the pool, other consumers use the first entry. Falls back to agent.modelSelection when unset.'),
|
|
63
40
|
balancedReasoningEffort: z
|
|
64
41
|
.enum(['default', 'none', 'minimal', 'low', 'medium', 'high', 'xhigh'])
|
|
65
42
|
.optional()
|
|
66
43
|
.describe('Reasoning effort for balanced-tier helper agents (everyday side tasks). Falls back to agent.reasoningEffort when unset.'),
|
|
67
|
-
cheapModel: tierModelPoolSchema('Models for cheap-tier helper agents (simple, high-volume side tasks); subagent spawns round-robin the pool, other consumers use the first entry. Falls back to agent.
|
|
68
|
-
cheapProvider: z
|
|
69
|
-
.string()
|
|
70
|
-
.min(1)
|
|
71
|
-
.optional()
|
|
72
|
-
.describe('Provider for cheap-tier helper agents (simple, high-volume side tasks). Falls back to agent.provider when unset.'),
|
|
44
|
+
cheapModel: tierModelPoolSchema('Models for cheap-tier helper agents (simple, high-volume side tasks); subagent spawns round-robin the pool, other consumers use the first entry. Falls back to agent.modelSelection when unset.'),
|
|
73
45
|
cheapReasoningEffort: z
|
|
74
46
|
.enum(['default', 'none', 'minimal', 'low', 'medium', 'high', 'xhigh'])
|
|
75
47
|
.optional()
|
|
76
48
|
.describe('Reasoning effort for cheap-tier helper agents (simple, high-volume side tasks). Falls back to agent.reasoningEffort when unset.'),
|
|
77
|
-
choreModel: tierModelPoolSchema('Models for small background jobs like repairing failed file edits and reviewing shell auto-approvals (auto-approval reviews, edit healing). Falls back to agent.
|
|
78
|
-
choreProvider: z
|
|
79
|
-
.string()
|
|
80
|
-
.min(1)
|
|
81
|
-
.optional()
|
|
82
|
-
.describe('Provider for small background jobs like repairing failed file edits and reviewing shell auto-approvals. Falls back to agent.provider when unset.'),
|
|
83
|
-
// 'default' signals we should *not* explicitly pass a reasoningEffort
|
|
84
|
-
// to the API, allowing it to decide what to use.
|
|
49
|
+
choreModel: tierModelPoolSchema('Models for small background jobs like repairing failed file edits and reviewing shell auto-approvals (auto-approval reviews, edit healing). Falls back to agent.modelSelection when unset.'),
|
|
85
50
|
reasoningEffort: z.enum(['default', 'none', 'minimal', 'low', 'medium', 'high', 'xhigh']).default('default'),
|
|
86
51
|
// Temperature controls randomness. We keep it optional so providers/models
|
|
87
52
|
// can use their own defaults when unset.
|
|
88
53
|
temperature: z.number().min(0).max(2).optional(),
|
|
89
54
|
maxTurns: z.number().int().positive().default(100),
|
|
55
|
+
maxRequestInputTokens: z
|
|
56
|
+
.number()
|
|
57
|
+
.int()
|
|
58
|
+
.min(1_000)
|
|
59
|
+
.nullable()
|
|
60
|
+
.default(null)
|
|
61
|
+
.describe('Per-request estimated or last-observed input cost/latency ceiling; retains work on refusal (null uses known model capacity)'),
|
|
90
62
|
maxOutputTokens: z.number().int().positive().default(32_000),
|
|
91
63
|
maxStreamOutputChars: z.number().int().positive().default(100_000),
|
|
92
64
|
// Total wall-clock ceiling per provider request. 0 means "no ceiling": the
|
|
@@ -122,9 +94,9 @@ export const AgentSettingsSchema = z.object({
|
|
|
122
94
|
maxParentExtensions: z.number().int().nonnegative().finite().default(2),
|
|
123
95
|
identicalToolCallThreshold: z.number().int().positive().finite().default(3),
|
|
124
96
|
escalation: z
|
|
125
|
-
.enum(['warn', 'pause', 'disabled'])
|
|
97
|
+
.enum(['warn', 'contain', 'pause', 'disabled'])
|
|
126
98
|
.default('warn')
|
|
127
|
-
.describe('
|
|
99
|
+
.describe('warn is advisory; contain pauses at exhaustion; pause also stops on warning/stall; disabled emits no evidence'),
|
|
128
100
|
})
|
|
129
101
|
.default({
|
|
130
102
|
maxUsdMicros: 5_000_000,
|
|
@@ -161,7 +133,6 @@ export const AgentSettingsSchema = z.object({
|
|
|
161
133
|
// NOTE: We do NOT validate provider existence here because the provider
|
|
162
134
|
// registry can be extended at runtime from settings.json (custom providers).
|
|
163
135
|
// We validate/fallback after SettingsService loads and registers runtime providers.
|
|
164
|
-
provider: z.string().min(1).default('openai').describe('Provider to use for the agent'),
|
|
165
136
|
favoriteModels: z
|
|
166
137
|
.array(z.string())
|
|
167
138
|
.optional()
|
|
@@ -196,12 +167,6 @@ export const AgentSettingsSchema = z.object({
|
|
|
196
167
|
websocketInterFrameTimeoutMs: z.number().int().positive().finite().default(600_000),
|
|
197
168
|
})
|
|
198
169
|
.default({ websocketFirstFrameTimeoutMs: 90_000, websocketInterFrameTimeoutMs: 600_000 }),
|
|
199
|
-
mentorModel: z.string().optional().describe('Model to use as a mentor'),
|
|
200
|
-
mentorProvider: z
|
|
201
|
-
.string()
|
|
202
|
-
.min(1)
|
|
203
|
-
.optional()
|
|
204
|
-
.describe('Provider to use for the mentor model (defaults to agent.provider when unset)'),
|
|
205
170
|
mentorReasoningEffort: z
|
|
206
171
|
.enum(['default', 'none', 'minimal', 'low', 'medium', 'high', 'xhigh'])
|
|
207
172
|
.default('default')
|
|
@@ -221,23 +186,13 @@ export const AgentSettingsSchema = z.object({
|
|
|
221
186
|
.describe('Use OpenAI Flex Service Tier to reduce costs (OpenAI only)'),
|
|
222
187
|
contextCompaction: z
|
|
223
188
|
.object({
|
|
224
|
-
enabled: z.boolean().default(
|
|
189
|
+
enabled: z.boolean().default(true),
|
|
225
190
|
mode: z.enum(['native', 'auto', 'local']).default('auto'),
|
|
226
191
|
compactThreshold: z.number().finite().min(0).max(1).default(0.8),
|
|
227
192
|
compactThresholdTokens: z.number().int().finite().min(1_000).nullable().default(null),
|
|
228
193
|
})
|
|
229
|
-
.default({ enabled:
|
|
194
|
+
.default({ enabled: true, mode: 'auto', compactThreshold: 0.8, compactThresholdTokens: null })
|
|
230
195
|
.describe('Native and application-owned context compaction settings'),
|
|
231
|
-
autoApproveModel: z
|
|
232
|
-
.string()
|
|
233
|
-
.optional()
|
|
234
|
-
.default('gpt-4o-mini')
|
|
235
|
-
.describe('Faster model to use for auto-approval evaluation'),
|
|
236
|
-
autoApproveProvider: z
|
|
237
|
-
.string()
|
|
238
|
-
.min(1)
|
|
239
|
-
.optional()
|
|
240
|
-
.describe('Provider to use for the auto-approval model (defaults to agent.provider when unset)'),
|
|
241
196
|
autoApproveReasoningEffort: z
|
|
242
197
|
.enum(['none', 'minimal', 'low', 'medium', 'high', 'xhigh'])
|
|
243
198
|
.default('low')
|
|
@@ -247,49 +202,39 @@ export const AgentSettingsSchema = z.object({
|
|
|
247
202
|
.min(1)
|
|
248
203
|
.optional()
|
|
249
204
|
.describe('OpenRouter Decisions model shared by the approval fast path and failure-triage comparisons. For approval, only low/medium-risk, explicit/implied decisions at confidence 0.8 or higher can authorize execution; every other outcome falls back to the chore reviewer. Sends approval context plus failure evidence. Adds API charges'),
|
|
250
|
-
subagentExplorerModel: z
|
|
251
|
-
.string()
|
|
252
|
-
.min(1)
|
|
253
|
-
.optional()
|
|
254
|
-
.describe('Model override for the explorer subagent. Falls back to agent.model when unset.'),
|
|
255
|
-
subagentExplorerProvider: z
|
|
256
|
-
.string()
|
|
257
|
-
.min(1)
|
|
258
|
-
.optional()
|
|
259
|
-
.describe('Provider override for the explorer subagent. Falls back to agent.provider when unset.'),
|
|
260
205
|
subagentExplorerReasoningEffort: z
|
|
261
206
|
.enum(['default', 'none', 'minimal', 'low', 'medium', 'high', 'xhigh'])
|
|
262
207
|
.optional()
|
|
263
208
|
.describe('Reasoning effort override for the explorer subagent. Falls back to agent.reasoningEffort when unset.'),
|
|
264
|
-
subagentWorkerModel: z
|
|
265
|
-
.string()
|
|
266
|
-
.min(1)
|
|
267
|
-
.optional()
|
|
268
|
-
.describe('Model override for the worker subagent. Falls back to agent.model when unset.'),
|
|
269
|
-
subagentWorkerProvider: z
|
|
270
|
-
.string()
|
|
271
|
-
.min(1)
|
|
272
|
-
.optional()
|
|
273
|
-
.describe('Provider override for the worker subagent. Falls back to agent.provider when unset.'),
|
|
274
209
|
subagentWorkerReasoningEffort: z
|
|
275
210
|
.enum(['default', 'none', 'minimal', 'low', 'medium', 'high', 'xhigh'])
|
|
276
211
|
.optional()
|
|
277
212
|
.describe('Reasoning effort override for the worker subagent. Falls back to agent.reasoningEffort when unset.'),
|
|
278
|
-
subagentLibrarianModel: z
|
|
279
|
-
.string()
|
|
280
|
-
.min(1)
|
|
281
|
-
.optional()
|
|
282
|
-
.describe('Model override for the librarian subagent. Falls back to agent.model when unset.'),
|
|
283
|
-
subagentLibrarianProvider: z
|
|
284
|
-
.string()
|
|
285
|
-
.min(1)
|
|
286
|
-
.optional()
|
|
287
|
-
.describe('Provider override for the librarian subagent. Falls back to agent.provider when unset.'),
|
|
288
213
|
subagentLibrarianReasoningEffort: z
|
|
289
214
|
.enum(['default', 'none', 'minimal', 'low', 'medium', 'high', 'xhigh'])
|
|
290
215
|
.optional()
|
|
291
216
|
.describe('Reasoning effort override for the librarian subagent. Falls back to agent.reasoningEffort when unset.'),
|
|
292
217
|
});
|
|
218
|
+
export const AgentSettingsSchema = z.preprocess(rejectRemovedSelectionKeys([
|
|
219
|
+
'model',
|
|
220
|
+
'provider',
|
|
221
|
+
'efficientModel',
|
|
222
|
+
'capableModel',
|
|
223
|
+
'mentorModel',
|
|
224
|
+
'mentorProvider',
|
|
225
|
+
'subagentExplorerModel',
|
|
226
|
+
'subagentExplorerProvider',
|
|
227
|
+
'subagentWorkerModel',
|
|
228
|
+
'subagentWorkerProvider',
|
|
229
|
+
'subagentLibrarianModel',
|
|
230
|
+
'subagentLibrarianProvider',
|
|
231
|
+
'autoApproveModel',
|
|
232
|
+
'autoApproveProvider',
|
|
233
|
+
'smartProvider',
|
|
234
|
+
'balancedProvider',
|
|
235
|
+
'cheapProvider',
|
|
236
|
+
'choreProvider',
|
|
237
|
+
]), AgentSettingsObjectSchema);
|
|
293
238
|
export const ShellSettingsSchema = z.object({
|
|
294
239
|
timeout: z.number().int().positive().default(120000),
|
|
295
240
|
backgroundTimeout: z
|
|
@@ -399,15 +344,9 @@ export const AppSettingsSchema = z.object({
|
|
|
399
344
|
.optional()
|
|
400
345
|
.default('auto'),
|
|
401
346
|
});
|
|
402
|
-
|
|
347
|
+
const ToolsSettingsObjectSchema = z.object({
|
|
403
348
|
logFileOperations: z.boolean().optional().default(true),
|
|
404
349
|
enableEditHealing: z.boolean().optional().default(true),
|
|
405
|
-
editHealingModel: z.string().optional().default('gpt-4o-mini'),
|
|
406
|
-
editHealingProvider: z
|
|
407
|
-
.string()
|
|
408
|
-
.min(1)
|
|
409
|
-
.optional()
|
|
410
|
-
.describe('Provider to use for the edit-healing model (defaults to agent.provider when unset)'),
|
|
411
350
|
// Per-tool-group kill switches for the main agent. Each masks exactly one
|
|
412
351
|
// capability group from the profile's tool capabilities (tool-toggles.ts),
|
|
413
352
|
// removing that group's tools and capability-gated prompt fragments on the
|
|
@@ -476,6 +415,7 @@ export const ToolsSettingsSchema = z.object({
|
|
|
476
415
|
.default({ enabled: true })
|
|
477
416
|
.describe('Enable code-context tools (read_code_outline, code_context_search) for the main agent (true|false). Applies on the next model request.'),
|
|
478
417
|
});
|
|
418
|
+
export const ToolsSettingsSchema = z.preprocess(rejectRemovedSelectionKeys(['editHealingModel', 'editHealingProvider']), ToolsSettingsObjectSchema);
|
|
479
419
|
export const DebugSettingsSchema = z.object({
|
|
480
420
|
debugBashTool: z.boolean().optional().default(false),
|
|
481
421
|
});
|
|
@@ -604,7 +544,7 @@ function getSensitiveSettingKeys() {
|
|
|
604
544
|
]);
|
|
605
545
|
}
|
|
606
546
|
export const SENSITIVE_SETTING_KEYS = getSensitiveSettingKeys();
|
|
607
|
-
|
|
547
|
+
const SettingsObjectSchema = z.object({
|
|
608
548
|
providers: z.array(CustomProviderSchema).optional().default([]),
|
|
609
549
|
enable_agent_workflow: z.boolean().optional().default(false),
|
|
610
550
|
agent: AgentSettingsSchema.optional(),
|
|
@@ -623,33 +563,28 @@ export const SettingsSchema = z.object({
|
|
|
623
563
|
memory: MemorySettingsSchema.optional().default(MemorySettingsSchema.parse({})),
|
|
624
564
|
hooks: HooksSettingsSchema.optional().default(HooksSettingsSchema.parse({})),
|
|
625
565
|
});
|
|
566
|
+
export const SettingsSchema = SettingsObjectSchema;
|
|
626
567
|
/**
|
|
627
568
|
* Centralized list of all setting keys for consistency across the app.
|
|
628
569
|
* Used by settings command UI and other components to avoid duplication.
|
|
629
570
|
*/
|
|
630
571
|
export const SETTING_KEYS = {
|
|
631
572
|
ENABLE_AGENT_WORKFLOW: 'enable_agent_workflow',
|
|
632
|
-
|
|
633
|
-
AGENT_EFFICIENT_MODEL: 'agent.efficientModel',
|
|
634
|
-
AGENT_CAPABLE_MODEL: 'agent.capableModel',
|
|
573
|
+
AGENT_MODEL_SELECTION: 'agent.modelSelection',
|
|
635
574
|
AGENT_SMART_MODEL: 'agent.smartModel',
|
|
636
|
-
AGENT_SMART_PROVIDER: 'agent.smartProvider',
|
|
637
575
|
AGENT_SMART_REASONING_EFFORT: 'agent.smartReasoningEffort',
|
|
638
576
|
AGENT_BALANCED_MODEL: 'agent.balancedModel',
|
|
639
|
-
AGENT_BALANCED_PROVIDER: 'agent.balancedProvider',
|
|
640
577
|
AGENT_BALANCED_REASONING_EFFORT: 'agent.balancedReasoningEffort',
|
|
641
578
|
AGENT_CHEAP_MODEL: 'agent.cheapModel',
|
|
642
|
-
AGENT_CHEAP_PROVIDER: 'agent.cheapProvider',
|
|
643
579
|
AGENT_CHEAP_REASONING_EFFORT: 'agent.cheapReasoningEffort',
|
|
644
580
|
AGENT_CHORE_MODEL: 'agent.choreModel',
|
|
645
|
-
AGENT_CHORE_PROVIDER: 'agent.choreProvider',
|
|
646
581
|
AGENT_REASONING_EFFORT: 'agent.reasoningEffort',
|
|
647
582
|
AGENT_TEMPERATURE: 'agent.temperature',
|
|
648
|
-
AGENT_PROVIDER: 'agent.provider',
|
|
649
583
|
AGENT_FAVORITE_MODELS: 'agent.favoriteModels',
|
|
650
584
|
AGENT_MODEL_NICKNAMES: 'agent.modelNicknames',
|
|
651
585
|
AGENT_DISABLED_PROVIDERS: 'agent.disabledProviders',
|
|
652
586
|
AGENT_MAX_TURNS: 'agent.maxTurns',
|
|
587
|
+
AGENT_MAX_REQUEST_INPUT_TOKENS: 'agent.maxRequestInputTokens',
|
|
653
588
|
AGENT_MAX_OUTPUT_TOKENS: 'agent.maxOutputTokens',
|
|
654
589
|
AGENT_MAX_STREAM_OUTPUT_CHARS: 'agent.maxStreamOutputChars',
|
|
655
590
|
AGENT_MAX_MODEL_REQUEST_DURATION_MS: 'agent.maxModelRequestDurationMs',
|
|
@@ -683,8 +618,6 @@ export const SETTING_KEYS = {
|
|
|
683
618
|
AGENT_OPENROUTER_TITLE: 'agent.openrouter.title', // Sensitive - env only
|
|
684
619
|
AGENT_CODEX_WEBSOCKET_FIRST_FRAME_TIMEOUT_MS: 'agent.codex.websocketFirstFrameTimeoutMs',
|
|
685
620
|
AGENT_CODEX_WEBSOCKET_INTER_FRAME_TIMEOUT_MS: 'agent.codex.websocketInterFrameTimeoutMs',
|
|
686
|
-
AGENT_MENTOR_MODEL: 'agent.mentorModel',
|
|
687
|
-
AGENT_MENTOR_PROVIDER: 'agent.mentorProvider',
|
|
688
621
|
AGENT_MENTOR_REASONING_EFFORT: 'agent.mentorReasoningEffort',
|
|
689
622
|
AGENT_MENTOR_SAMPLES: 'agent.mentorSamples',
|
|
690
623
|
AGENT_MENTOR_POOL: 'agent.mentorPool',
|
|
@@ -703,18 +636,10 @@ export const SETTING_KEYS = {
|
|
|
703
636
|
SANDBOX_ALLOW_READ_EXTRA: 'sandbox.allowReadExtra',
|
|
704
637
|
SANDBOX_DOCKER_HOST_CONTROL_PROJECTS: 'sandbox.dockerHostControlProjects',
|
|
705
638
|
SANDBOX_ALLOW_NETWORKING: 'sandbox.allowNetworking',
|
|
706
|
-
AGENT_AUTO_APPROVE_MODEL: 'agent.autoApproveModel',
|
|
707
|
-
AGENT_AUTO_APPROVE_PROVIDER: 'agent.autoApproveProvider',
|
|
708
639
|
AGENT_AUTO_APPROVE_REASONING_EFFORT: 'agent.autoApproveReasoningEffort',
|
|
709
640
|
AGENT_DECISION_MODEL: 'agent.decisionModel',
|
|
710
|
-
AGENT_SUBAGENT_EXPLORER_MODEL: 'agent.subagentExplorerModel',
|
|
711
|
-
AGENT_SUBAGENT_EXPLORER_PROVIDER: 'agent.subagentExplorerProvider',
|
|
712
641
|
AGENT_SUBAGENT_EXPLORER_REASONING_EFFORT: 'agent.subagentExplorerReasoningEffort',
|
|
713
|
-
AGENT_SUBAGENT_WORKER_MODEL: 'agent.subagentWorkerModel',
|
|
714
|
-
AGENT_SUBAGENT_WORKER_PROVIDER: 'agent.subagentWorkerProvider',
|
|
715
642
|
AGENT_SUBAGENT_WORKER_REASONING_EFFORT: 'agent.subagentWorkerReasoningEffort',
|
|
716
|
-
AGENT_SUBAGENT_LIBRARIAN_MODEL: 'agent.subagentLibrarianModel',
|
|
717
|
-
AGENT_SUBAGENT_LIBRARIAN_PROVIDER: 'agent.subagentLibrarianProvider',
|
|
718
643
|
AGENT_SUBAGENT_LIBRARIAN_REASONING_EFFORT: 'agent.subagentLibrarianReasoningEffort',
|
|
719
644
|
SUBAGENT_ASYNC_SESSION_TTL_MS: 'subagent.asyncSessionTtlMs',
|
|
720
645
|
SUBAGENT_ASYNC_MESSAGE_CAP: 'subagent.asyncMessageCap',
|
|
@@ -740,8 +665,6 @@ export const SETTING_KEYS = {
|
|
|
740
665
|
APP_SEARCH_VIA_SHELL: 'app.searchViaShell',
|
|
741
666
|
TOOLS_LOG_FILE_OPS: 'tools.logFileOperations',
|
|
742
667
|
TOOLS_ENABLE_EDIT_HEALING: 'tools.enableEditHealing',
|
|
743
|
-
TOOLS_EDIT_HEALING_MODEL: 'tools.editHealingModel',
|
|
744
|
-
TOOLS_EDIT_HEALING_PROVIDER: 'tools.editHealingProvider',
|
|
745
668
|
TOOLS_SHELL_ENABLED: 'tools.shell.enabled',
|
|
746
669
|
TOOLS_WEB_ENABLED: 'tools.web.enabled',
|
|
747
670
|
TOOLS_FILE_READ_ENABLED: 'tools.fileRead.enabled',
|
|
@@ -781,31 +704,25 @@ export const SETTING_KEYS = {
|
|
|
781
704
|
};
|
|
782
705
|
// Define which settings are modifiable at runtime
|
|
783
706
|
export const RUNTIME_MODIFIABLE_SETTINGS = new Set([
|
|
707
|
+
'agent.modelSelection',
|
|
784
708
|
SETTING_KEYS.AGENT_OPENROUTER_API_KEY,
|
|
785
709
|
SETTING_KEYS.AGENT_OPENAI_API_KEY,
|
|
786
|
-
SETTING_KEYS.AGENT_MODEL,
|
|
787
|
-
SETTING_KEYS.AGENT_EFFICIENT_MODEL,
|
|
788
|
-
SETTING_KEYS.AGENT_CAPABLE_MODEL,
|
|
789
710
|
SETTING_KEYS.AGENT_SMART_MODEL,
|
|
790
|
-
SETTING_KEYS.AGENT_SMART_PROVIDER,
|
|
791
711
|
SETTING_KEYS.AGENT_SMART_REASONING_EFFORT,
|
|
792
712
|
SETTING_KEYS.AGENT_BALANCED_MODEL,
|
|
793
|
-
SETTING_KEYS.AGENT_BALANCED_PROVIDER,
|
|
794
713
|
SETTING_KEYS.AGENT_BALANCED_REASONING_EFFORT,
|
|
795
714
|
SETTING_KEYS.AGENT_CHEAP_MODEL,
|
|
796
|
-
SETTING_KEYS.AGENT_CHEAP_PROVIDER,
|
|
797
715
|
SETTING_KEYS.AGENT_CHEAP_REASONING_EFFORT,
|
|
798
716
|
SETTING_KEYS.AGENT_CHORE_MODEL,
|
|
799
|
-
SETTING_KEYS.AGENT_CHORE_PROVIDER,
|
|
800
717
|
SETTING_KEYS.AGENT_AUTO_APPROVE_REASONING_EFFORT,
|
|
801
718
|
SETTING_KEYS.AGENT_DECISION_MODEL,
|
|
802
719
|
SETTING_KEYS.AGENT_REASONING_EFFORT,
|
|
803
720
|
SETTING_KEYS.AGENT_TEMPERATURE,
|
|
804
|
-
SETTING_KEYS.AGENT_PROVIDER,
|
|
805
721
|
SETTING_KEYS.AGENT_FAVORITE_MODELS,
|
|
806
722
|
SETTING_KEYS.AGENT_MODEL_NICKNAMES,
|
|
807
723
|
SETTING_KEYS.AGENT_DISABLED_PROVIDERS,
|
|
808
724
|
SETTING_KEYS.AGENT_RETRY_ATTEMPTS,
|
|
725
|
+
SETTING_KEYS.AGENT_MAX_REQUEST_INPUT_TOKENS,
|
|
809
726
|
SETTING_KEYS.AGENT_MAX_OUTPUT_TOKENS,
|
|
810
727
|
SETTING_KEYS.AGENT_MAX_STREAM_OUTPUT_CHARS,
|
|
811
728
|
SETTING_KEYS.AGENT_MAX_MODEL_REQUEST_DURATION_MS,
|
|
@@ -830,8 +747,6 @@ export const RUNTIME_MODIFIABLE_SETTINGS = new Set([
|
|
|
830
747
|
SETTING_KEYS.AGENT_SESSION_ROLLOVER_ENABLED,
|
|
831
748
|
SETTING_KEYS.AGENT_SESSION_ROLLOVER_MILESTONES,
|
|
832
749
|
SETTING_KEYS.AGENT_SESSION_ROLLOVER_AUTO_BRIEF,
|
|
833
|
-
SETTING_KEYS.AGENT_MENTOR_MODEL,
|
|
834
|
-
SETTING_KEYS.AGENT_MENTOR_PROVIDER,
|
|
835
750
|
SETTING_KEYS.AGENT_MENTOR_REASONING_EFFORT,
|
|
836
751
|
SETTING_KEYS.AGENT_MENTOR_POOL,
|
|
837
752
|
SETTING_KEYS.AGENT_USE_FLEX_SERVICE_TIER,
|
|
@@ -864,21 +779,11 @@ export const RUNTIME_MODIFIABLE_SETTINGS = new Set([
|
|
|
864
779
|
SETTING_KEYS.UI_DISPLAY_MODE,
|
|
865
780
|
SETTING_KEYS.UI_THEME,
|
|
866
781
|
SETTING_KEYS.UI_SKIN,
|
|
867
|
-
SETTING_KEYS.AGENT_AUTO_APPROVE_MODEL,
|
|
868
|
-
SETTING_KEYS.AGENT_AUTO_APPROVE_PROVIDER,
|
|
869
|
-
SETTING_KEYS.AGENT_SUBAGENT_EXPLORER_MODEL,
|
|
870
|
-
SETTING_KEYS.AGENT_SUBAGENT_EXPLORER_PROVIDER,
|
|
871
782
|
SETTING_KEYS.AGENT_SUBAGENT_EXPLORER_REASONING_EFFORT,
|
|
872
|
-
SETTING_KEYS.AGENT_SUBAGENT_WORKER_MODEL,
|
|
873
|
-
SETTING_KEYS.AGENT_SUBAGENT_WORKER_PROVIDER,
|
|
874
783
|
SETTING_KEYS.AGENT_SUBAGENT_WORKER_REASONING_EFFORT,
|
|
875
|
-
SETTING_KEYS.AGENT_SUBAGENT_LIBRARIAN_MODEL,
|
|
876
|
-
SETTING_KEYS.AGENT_SUBAGENT_LIBRARIAN_PROVIDER,
|
|
877
784
|
SETTING_KEYS.AGENT_SUBAGENT_LIBRARIAN_REASONING_EFFORT,
|
|
878
785
|
SETTING_KEYS.SUBAGENT_ASYNC_SESSION_TTL_MS,
|
|
879
786
|
SETTING_KEYS.SUBAGENT_ASYNC_MESSAGE_CAP,
|
|
880
|
-
SETTING_KEYS.TOOLS_EDIT_HEALING_MODEL,
|
|
881
|
-
SETTING_KEYS.TOOLS_EDIT_HEALING_PROVIDER,
|
|
882
787
|
SETTING_KEYS.TOOLS_SHELL_ENABLED,
|
|
883
788
|
SETTING_KEYS.TOOLS_WEB_ENABLED,
|
|
884
789
|
SETTING_KEYS.TOOLS_FILE_READ_ENABLED,
|
|
@@ -906,28 +811,24 @@ export const RUNTIME_MODIFIABLE_SETTINGS = new Set([
|
|
|
906
811
|
SETTING_KEYS.HOOKS_TIMEOUT_MS,
|
|
907
812
|
]);
|
|
908
813
|
// Some settings with default values are optional to persist
|
|
909
|
-
|
|
814
|
+
// Absence preserves inherited output-allocation provenance on disk.
|
|
815
|
+
export const OPTIONAL_DEFAULT_KEYS = new Set(['agent.maxOutputTokens']);
|
|
910
816
|
// Default settings
|
|
911
817
|
export const DEFAULT_SETTINGS = {
|
|
912
818
|
providers: [],
|
|
913
819
|
enable_agent_workflow: false,
|
|
914
820
|
agent: {
|
|
915
|
-
model: 'gpt-5.1',
|
|
916
|
-
efficientModel: undefined,
|
|
917
|
-
capableModel: undefined,
|
|
821
|
+
modelSelection: { model: 'gpt-5.1', provider: 'openai' },
|
|
918
822
|
smartModel: undefined,
|
|
919
|
-
smartProvider: undefined,
|
|
920
823
|
smartReasoningEffort: undefined,
|
|
921
824
|
balancedModel: undefined,
|
|
922
|
-
balancedProvider: undefined,
|
|
923
825
|
balancedReasoningEffort: undefined,
|
|
924
826
|
cheapModel: undefined,
|
|
925
|
-
cheapProvider: undefined,
|
|
926
827
|
cheapReasoningEffort: undefined,
|
|
927
828
|
choreModel: undefined,
|
|
928
|
-
choreProvider: undefined,
|
|
929
829
|
reasoningEffort: 'default',
|
|
930
830
|
maxTurns: 100,
|
|
831
|
+
maxRequestInputTokens: null,
|
|
931
832
|
maxOutputTokens: 32_000,
|
|
932
833
|
maxStreamOutputChars: 100_000,
|
|
933
834
|
maxModelRequestDurationMs: 0,
|
|
@@ -960,7 +861,6 @@ export const DEFAULT_SETTINGS = {
|
|
|
960
861
|
milestones: [200_000, 300_000, 400_000],
|
|
961
862
|
autoBrief: true,
|
|
962
863
|
},
|
|
963
|
-
provider: 'openai',
|
|
964
864
|
favoriteModels: [],
|
|
965
865
|
modelNicknames: {},
|
|
966
866
|
disabledProviders: [],
|
|
@@ -975,30 +875,20 @@ export const DEFAULT_SETTINGS = {
|
|
|
975
875
|
websocketFirstFrameTimeoutMs: 90_000,
|
|
976
876
|
websocketInterFrameTimeoutMs: 600_000,
|
|
977
877
|
},
|
|
978
|
-
mentorModel: undefined,
|
|
979
|
-
mentorProvider: undefined,
|
|
980
878
|
mentorReasoningEffort: 'default',
|
|
981
879
|
mentorSamples: 1,
|
|
982
880
|
mentorPool: [],
|
|
983
881
|
useFlexServiceTier: false,
|
|
984
882
|
contextCompaction: {
|
|
985
|
-
enabled:
|
|
883
|
+
enabled: true,
|
|
986
884
|
mode: 'auto',
|
|
987
885
|
compactThreshold: 0.8,
|
|
988
886
|
compactThresholdTokens: null,
|
|
989
887
|
},
|
|
990
|
-
autoApproveModel: 'gpt-4o-mini',
|
|
991
|
-
autoApproveProvider: undefined,
|
|
992
888
|
autoApproveReasoningEffort: 'low',
|
|
993
889
|
decisionModel: undefined,
|
|
994
|
-
subagentExplorerModel: undefined,
|
|
995
|
-
subagentExplorerProvider: undefined,
|
|
996
890
|
subagentExplorerReasoningEffort: undefined,
|
|
997
|
-
subagentWorkerModel: undefined,
|
|
998
|
-
subagentWorkerProvider: undefined,
|
|
999
891
|
subagentWorkerReasoningEffort: undefined,
|
|
1000
|
-
subagentLibrarianModel: undefined,
|
|
1001
|
-
subagentLibrarianProvider: undefined,
|
|
1002
892
|
subagentLibrarianReasoningEffort: undefined,
|
|
1003
893
|
},
|
|
1004
894
|
shell: {
|
|
@@ -1058,8 +948,6 @@ export const DEFAULT_SETTINGS = {
|
|
|
1058
948
|
tools: {
|
|
1059
949
|
logFileOperations: true,
|
|
1060
950
|
enableEditHealing: true,
|
|
1061
|
-
editHealingModel: 'gpt-4o-mini',
|
|
1062
|
-
editHealingProvider: undefined,
|
|
1063
951
|
shell: { enabled: true },
|
|
1064
952
|
web: { enabled: true },
|
|
1065
953
|
fileRead: { enabled: true },
|