@gajae-code/coding-agent 0.18.11 → 0.19.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/CHANGELOG.md +760 -0
- package/dist/types/async/job-manager.d.ts +7 -3
- package/dist/types/async/result-formatting.d.ts +2 -0
- package/dist/types/autoresearch/git.d.ts +1 -1
- package/dist/types/capability/fs.d.ts +2 -2
- package/dist/types/capability/rule.d.ts +7 -2
- package/dist/types/cli/accounts-cli.d.ts +2 -2
- package/dist/types/cli/append-system-prompt.d.ts +6 -0
- package/dist/types/cli/args.d.ts +7 -2
- package/dist/types/cli/customize-doctor-precedence.d.ts +16 -0
- package/dist/types/cli/customize-doctor.d.ts +4 -3
- package/dist/types/cli/doctor/install-repairs.d.ts +4 -1
- package/dist/types/cli/install-activation.d.ts +10 -4
- package/dist/types/cli/public-command-errors.d.ts +2 -0
- package/dist/types/cli/root-flags.d.ts +0 -12
- package/dist/types/cli/update-cli.d.ts +21 -3
- package/dist/types/cli-main.d.ts +0 -6
- package/dist/types/cli-ordinary.d.ts +2 -2
- package/dist/types/commands/accounts.d.ts +2 -1
- package/dist/types/commands/launch.d.ts +0 -6
- package/dist/types/commands/migrate.d.ts +1 -1
- package/dist/types/commands/sdk.d.ts +13 -0
- package/dist/types/commit/changelog/index.d.ts +1 -0
- package/dist/types/commit/map-reduce/index.d.ts +4 -4
- package/dist/types/config/autorouting-tier-map.d.ts +53 -1
- package/dist/types/config/config-hot-reload-trust.d.ts +12 -0
- package/dist/types/config/config-hot-reload.d.ts +44 -0
- package/dist/types/config/file-lock.d.ts +52 -3
- package/dist/types/config/model-discovery-manager.d.ts +2 -0
- package/dist/types/config/model-profile-activation.d.ts +79 -9
- package/dist/types/config/model-registry.d.ts +72 -8
- package/dist/types/config/model-resolver.d.ts +7 -4
- package/dist/types/config/models-config-schema.d.ts +10 -0
- package/dist/types/config/settings-schema.d.ts +57 -4
- package/dist/types/config/settings.d.ts +33 -1
- package/dist/types/coordinator-mcp/server.d.ts +4 -0
- package/dist/types/customization/import.d.ts +2 -0
- package/dist/types/customization/types.d.ts +1 -1
- package/dist/types/dap/config.d.ts +8 -4
- package/dist/types/dap/session.d.ts +11 -2
- package/dist/types/debug/system-info.d.ts +6 -1
- package/dist/types/discovery/helpers.d.ts +7 -2
- package/dist/types/discovery/mcp-compat.d.ts +3 -1
- package/dist/types/edit/index.d.ts +5 -0
- package/dist/types/edit/modes/patch.d.ts +14 -0
- package/dist/types/edit/modes/replace.d.ts +3 -0
- package/dist/types/eval/py/runtime.d.ts +9 -0
- package/dist/types/exec/bash-executor.d.ts +12 -0
- package/dist/types/export/ttsr.d.ts +19 -0
- package/dist/types/extensibility/extensions/types.d.ts +5 -1
- package/dist/types/extensibility/slash-commands.d.ts +1 -0
- package/dist/types/gjc-runtime/managed-owner-admission.d.ts +3 -0
- package/dist/types/gjc-runtime/ralplan-current-final.d.ts +54 -0
- package/dist/types/gjc-runtime/ralplan-runtime.d.ts +5 -0
- package/dist/types/gjc-runtime/session-state-lock.d.ts +2 -0
- package/dist/types/gjc-runtime/state-runtime.d.ts +0 -2
- package/dist/types/gjc-runtime/tmux-sessions.d.ts +24 -0
- package/dist/types/gjc-runtime/ultragoal-change-set.d.ts +6 -0
- package/dist/types/gjc-runtime/ultragoal-runtime.d.ts +1 -0
- package/dist/types/harness-control-plane/receipt-spool.d.ts +4 -0
- package/dist/types/hindsight/content.d.ts +5 -6
- package/dist/types/internal-urls/types.d.ts +2 -0
- package/dist/types/lsp/clients/swiftlint-client.d.ts +0 -4
- package/dist/types/main.d.ts +23 -18
- package/dist/types/migrate/action-planner.d.ts +10 -1
- package/dist/types/migrate/adapters/codex.d.ts +2 -1
- package/dist/types/migrate/adapters/index.d.ts +42 -1
- package/dist/types/migrate/executor.d.ts +3 -1
- package/dist/types/migrate/hook-module.d.ts +23 -0
- package/dist/types/migrate/report.d.ts +2 -1
- package/dist/types/migrate/types.d.ts +82 -3
- package/dist/types/modes/components/agent-dashboard.d.ts +1 -1
- package/dist/types/modes/components/model-selector.d.ts +43 -0
- package/dist/types/modes/components/settings-selector.d.ts +6 -0
- package/dist/types/modes/controllers/selector-controller.d.ts +2 -0
- package/dist/types/modes/prompt-suggestion-controller.d.ts +1 -1
- package/dist/types/modes/theme/theme.d.ts +1 -0
- package/dist/types/modes/utils/host-status.d.ts +15 -11
- package/dist/types/runtime-mcp/content-limits.d.ts +4 -0
- package/dist/types/runtime-mcp/manager.d.ts +7 -0
- package/dist/types/runtime-mcp/plugin-mcp-name-filter.d.ts +22 -0
- package/dist/types/runtime-mcp/project-host-values.d.ts +11 -5
- package/dist/types/runtime-mcp/tool-bridge.d.ts +4 -0
- package/dist/types/sdk/broker/broker-exit.d.ts +3 -3
- package/dist/types/sdk/broker/broker.d.ts +29 -2
- package/dist/types/sdk/broker/daemon-entry.d.ts +11 -1
- package/dist/types/sdk/broker/doctor-restart.d.ts +1 -1
- package/dist/types/sdk/broker/ensure.d.ts +141 -9
- package/dist/types/sdk/broker/hop.d.ts +45 -0
- package/dist/types/sdk/broker/lifecycle-ledger.d.ts +18 -10
- package/dist/types/sdk/broker/lifecycle.d.ts +22 -0
- package/dist/types/sdk/broker/lock-host-identity.d.ts +5 -0
- package/dist/types/sdk/broker/session-index.d.ts +6 -1
- package/dist/types/sdk/broker/transport.d.ts +2 -0
- package/dist/types/sdk/bus/chat-command-policy.d.ts +2 -1
- package/dist/types/sdk/bus/index.d.ts +44 -0
- package/dist/types/sdk/bus/reconciliation-store.d.ts +10 -0
- package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +9 -1
- package/dist/types/sdk/bus/telegram-daemon.d.ts +2 -0
- package/dist/types/sdk/bus/threaded-render.d.ts +2 -1
- package/dist/types/sdk/cli/session-cli.d.ts +0 -1
- package/dist/types/sdk/host/control/operations.d.ts +5 -1
- package/dist/types/sdk/host/events.d.ts +4 -0
- package/dist/types/sdk/host/host.d.ts +2 -1
- package/dist/types/sdk/host/prompt-image-upload.d.ts +43 -0
- package/dist/types/sdk/host/session-runtime.d.ts +40 -8
- package/dist/types/sdk/host/surface-policy.d.ts +2 -1
- package/dist/types/sdk/lifecycle/service.d.ts +12 -0
- package/dist/types/sdk/prompt-deadline-flush.d.ts +42 -4
- package/dist/types/sdk/prompt-deadline-manager.d.ts +2 -0
- package/dist/types/sdk/prompt-status.d.ts +11 -4
- package/dist/types/sdk/protocol/adapter-validation.d.ts +10 -4
- package/dist/types/sdk/reconciliation-extensions.d.ts +1 -1
- package/dist/types/sdk/session-list.d.ts +1 -1
- package/dist/types/session/agent-session.d.ts +107 -9
- package/dist/types/session/internal/managed-session-scope.d.ts +2 -2
- package/dist/types/session/internal/managed-session-storage.d.ts +1 -1
- package/dist/types/session/internal/native-publish-outcome.d.ts +1 -1
- package/dist/types/session/messages.d.ts +5 -1
- package/dist/types/session/session-manager.d.ts +29 -3
- package/dist/types/session/startup-auth-config.d.ts +24 -2
- package/dist/types/session/streaming-output.d.ts +11 -0
- package/dist/types/session/terminal-abort.d.ts +3 -1
- package/dist/types/session-import/service.d.ts +1 -1
- package/dist/types/skill-state/workflow-mutation-guard.d.ts +20 -4
- package/dist/types/slash-commands/helpers/mcp.d.ts +5 -0
- package/dist/types/slash-commands/helpers/provider-auth-status.d.ts +8 -0
- package/dist/types/ssh/ssh-executor.d.ts +8 -1
- package/dist/types/system-prompt.d.ts +3 -2
- package/dist/types/task/executor.d.ts +19 -2
- package/dist/types/task/role-body.d.ts +11 -0
- package/dist/types/tools/ast-edit-write-path.d.ts +10 -0
- package/dist/types/tools/atomic-file-write.d.ts +9 -7
- package/dist/types/tools/awaiting-input.d.ts +28 -0
- package/dist/types/tools/bash-allowed-prefixes.d.ts +17 -0
- package/dist/types/tools/bash-skill-urls.d.ts +4 -0
- package/dist/types/tools/bash.d.ts +7 -0
- package/dist/types/tools/descriptors.d.ts +15 -2
- package/dist/types/tools/fetch.d.ts +7 -1
- package/dist/types/tools/index.d.ts +2 -0
- package/dist/types/tools/irc.d.ts +5 -3
- package/dist/types/tools/python.d.ts +1 -1
- package/dist/types/tools/report-issue.d.ts +41 -0
- package/dist/types/tools/subagent.d.ts +23 -0
- package/dist/types/tools/tmux-self-injection-guard.d.ts +2 -0
- package/dist/types/tools/ultragoal-ask-guard.d.ts +1 -1
- package/dist/types/tools/write.d.ts +2 -0
- package/dist/types/utils/file-mentions.d.ts +5 -0
- package/dist/types/utils/image-limits.d.ts +7 -0
- package/dist/types/utils/image-loading.d.ts +0 -1
- package/dist/types/utils/open.d.ts +0 -1
- package/dist/types/utils/pasted-image-loading.d.ts +1 -5
- package/dist/types/utils/prompt-suggestion.d.ts +2 -2
- package/dist/types/utils/shell-snapshot.d.ts +2 -0
- package/dist/types/utils/title-generator.d.ts +13 -3
- package/dist/types/web/scrapers/types.d.ts +8 -1
- package/dist/types/web/search/providers/codex.d.ts +6 -7
- package/dist/types/web/search/providers/insane.d.ts +7 -1
- package/dist/types/web/search/providers/searxng.d.ts +5 -0
- package/package.json +10 -9
- package/scripts/acp-conformance-agent.ts +12 -2
- package/scripts/build-binary.ts +2 -1
- package/scripts/capture-subagent-compact-panel-showcase.ts +105 -0
- package/scripts/generate-docs-index.ts +8 -1
- package/scripts/generate-sdk-operation-inventory.ts +38 -4
- package/src/async/job-manager.ts +356 -56
- package/src/async/result-formatting.ts +40 -0
- package/src/autoresearch/git.ts +9 -2
- package/src/autoresearch/prompts/prompt-setup.md +1 -1
- package/src/capability/fs.ts +58 -22
- package/src/capability/index.ts +2 -2
- package/src/capability/rule.ts +11 -2
- package/src/cli/accounts-cli.ts +176 -8
- package/src/cli/append-system-prompt.ts +12 -0
- package/src/cli/args.ts +11 -7
- package/src/cli/auth-broker-cli.ts +21 -11
- package/src/cli/customize-doctor-precedence.ts +31 -0
- package/src/cli/customize-doctor.ts +49 -39
- package/src/cli/doctor/install-repairs.ts +35 -5
- package/src/cli/fast-help.ts +1 -3
- package/src/cli/install-activation.ts +47 -4
- package/src/cli/migrate-cli.ts +19 -6
- package/src/cli/public-command-errors.ts +6 -0
- package/src/cli/root-flags.ts +2 -4
- package/src/cli/stats-cli.ts +9 -5
- package/src/cli/update-cli.ts +471 -13
- package/src/cli-ordinary.ts +7 -2
- package/src/commands/accounts.ts +10 -5
- package/src/commands/harness.ts +25 -15
- package/src/commands/migrate.ts +3 -3
- package/src/commands/sdk.ts +277 -50
- package/src/commands/ultragoal.ts +16 -8
- package/src/commit/agentic/agent.ts +6 -6
- package/src/commit/analysis/conventional.ts +14 -5
- package/src/commit/changelog/index.ts +39 -1
- package/src/commit/map-reduce/index.ts +7 -7
- package/src/commit/message.ts +10 -3
- package/src/commit/pipeline.ts +12 -12
- package/src/config/autorouting-tier-map.ts +50 -1
- package/src/config/config-file.ts +106 -3
- package/src/config/config-hot-reload-trust.ts +148 -0
- package/src/config/config-hot-reload.ts +742 -0
- package/src/config/file-lock.ts +1615 -328
- package/src/config/keybindings.ts +154 -7
- package/src/config/model-bindings-applier.ts +85 -47
- package/src/config/model-discovery-manager.ts +10 -0
- package/src/config/model-profile-activation.ts +889 -148
- package/src/config/model-registry.ts +1706 -205
- package/src/config/model-resolver.ts +52 -22
- package/src/config/models-config-schema.ts +6 -0
- package/src/config/settings-schema.ts +73 -4
- package/src/config/settings.ts +460 -24
- package/src/coordinator-mcp/policy.ts +26 -1
- package/src/coordinator-mcp/server.ts +37 -2
- package/src/crash/sanitize.ts +7 -1
- package/src/customization/import.ts +279 -8
- package/src/customization/inventory.ts +24 -8
- package/src/customization/types.ts +1 -0
- package/src/dap/client.ts +3 -2
- package/src/dap/config.ts +31 -11
- package/src/dap/defaults.json +1 -1
- package/src/dap/session.ts +161 -36
- package/src/debug/crash-diagnostics.ts +89 -6
- package/src/debug/report-bundle.ts +90 -2
- package/src/debug/system-info.ts +8 -3
- package/src/defaults/gjc/extensions/grok-cli-vendor/src/shared/base-url.ts +21 -7
- package/src/discovery/agents-md.ts +1 -1
- package/src/discovery/builtin.ts +4 -3
- package/src/discovery/helpers.ts +25 -16
- package/src/discovery/mcp-compat.ts +120 -17
- package/src/edit/apply-patch/index.ts +12 -1
- package/src/edit/index.ts +204 -22
- package/src/edit/modes/patch.ts +214 -8
- package/src/edit/modes/replace.ts +136 -0
- package/src/eval/js/context-manager.ts +29 -3
- package/src/eval/js/worker-entry.ts +51 -18
- package/src/eval/py/executor.ts +14 -4
- package/src/eval/py/runner.py +144 -5
- package/src/eval/py/runtime.ts +44 -4
- package/src/exec/bash-executor.ts +81 -4
- package/src/exec/bash-shell-guardian.ts +4 -1
- package/src/exec/bash-shell-supervisor.ts +8 -4
- package/src/exec/isolated-shell.ts +5 -1
- package/src/exec/non-interactive-env.ts +0 -1
- package/src/export/html/index.ts +86 -6
- package/src/export/ttsr.ts +176 -1
- package/src/extensibility/custom-tools/wrapper.ts +3 -1
- package/src/extensibility/extensions/loader.ts +10 -1
- package/src/extensibility/extensions/ouroboros-ooo-bridge.ts +63 -1
- package/src/extensibility/extensions/types.ts +5 -1
- package/src/extensibility/hooks/loader.ts +10 -2
- package/src/extensibility/plugins/marketplace/fetcher.ts +2 -2
- package/src/extensibility/plugins/marketplace/manager.ts +36 -10
- package/src/extensibility/slash-commands.ts +5 -0
- package/src/gjc-runtime/gc-runtime.ts +37 -7
- package/src/gjc-runtime/launch-tmux.ts +30 -15
- package/src/gjc-runtime/launch-worktree.test.ts +148 -0
- package/src/gjc-runtime/launch-worktree.ts +101 -14
- package/src/gjc-runtime/managed-owner-admission.ts +46 -2
- package/src/gjc-runtime/ralplan-current-final.ts +294 -0
- package/src/gjc-runtime/ralplan-runtime.ts +95 -1
- package/src/gjc-runtime/session-resolution.ts +38 -6
- package/src/gjc-runtime/session-state-lock.ts +59 -14
- package/src/gjc-runtime/state-runtime.ts +23 -19
- package/src/gjc-runtime/state-writer.ts +109 -5
- package/src/gjc-runtime/tmux-sessions.ts +93 -13
- package/src/gjc-runtime/ultragoal-change-set.ts +90 -11
- package/src/gjc-runtime/ultragoal-guard.ts +9 -1
- package/src/gjc-runtime/ultragoal-runtime.ts +15 -5
- package/src/harness-control-plane/finalize.ts +11 -0
- package/src/harness-control-plane/receipt-spool.ts +105 -28
- package/src/harness-control-plane/storage.ts +124 -6
- package/src/hindsight/content.ts +116 -16
- package/src/hindsight/mental-models.ts +22 -10
- package/src/hindsight/state.ts +7 -4
- package/src/hooks/native-skill-hook.ts +17 -12
- package/src/internal-urls/artifact-protocol.ts +3 -1
- package/src/internal-urls/docs-index.generated.ts +23 -22
- package/src/internal-urls/local-protocol.ts +167 -8
- package/src/internal-urls/types.ts +2 -0
- package/src/lsp/client.ts +2 -1
- package/src/lsp/clients/biome-client.ts +2 -0
- package/src/lsp/clients/swiftlint-client.ts +2 -0
- package/src/lsp/index.ts +29 -0
- package/src/lsp/workspace-path.ts +23 -0
- package/src/main.ts +330 -92
- package/src/memories/index.ts +25 -2
- package/src/migrate/action-planner.ts +574 -2
- package/src/migrate/adapters/claude-code.ts +162 -5
- package/src/migrate/adapters/codex.ts +77 -7
- package/src/migrate/adapters/index.ts +258 -5
- package/src/migrate/adapters/opencode.ts +10 -1
- package/src/migrate/executor.ts +222 -7
- package/src/migrate/hook-module.ts +193 -0
- package/src/migrate/report.ts +63 -2
- package/src/migrate/types.ts +84 -4
- package/src/modes/DESIGN.md +51 -0
- package/src/modes/acp/acp-agent.ts +10 -1
- package/src/modes/acp/permission-mode.ts +18 -1
- package/src/modes/components/agent-dashboard.ts +20 -4
- package/src/modes/components/assistant-message.ts +55 -1
- package/src/modes/components/customization/customization-dashboard.ts +7 -0
- package/src/modes/components/customization/import-wizard.ts +29 -3
- package/src/modes/components/model-selector.ts +157 -103
- package/src/modes/components/settings-selector.ts +103 -37
- package/src/modes/components/welcome.ts +3 -1
- package/src/modes/controllers/command-controller.ts +300 -9
- package/src/modes/controllers/event-controller.ts +1 -1
- package/src/modes/controllers/extension-ui-controller.ts +31 -1
- package/src/modes/controllers/goal-mode-controller.ts +79 -10
- package/src/modes/controllers/input-controller.ts +2 -0
- package/src/modes/controllers/plan-mode-controller.ts +66 -11
- package/src/modes/controllers/runtime-mcp-command-controller.ts +7 -6
- package/src/modes/controllers/selector-controller.ts +76 -7
- package/src/modes/interactive-mode.ts +123 -4
- package/src/modes/prompt-suggestion-controller.ts +1 -1
- package/src/modes/runtime-init.ts +5 -1
- package/src/modes/theme/theme.ts +15 -0
- package/src/modes/utils/host-status.ts +21 -10
- package/src/prompts/agent-fragments/browser-aside.md +2 -2
- package/src/prompts/system/irc-incoming.md +3 -1
- package/src/prompts/tools/debug.md +1 -1
- package/src/prompts/tools/irc.md +1 -1
- package/src/prompts/tools/read.md +1 -1
- package/src/prompts/tools/report-issue.md +13 -0
- package/src/prompts/tools/task.md +1 -1
- package/src/runtime-credential-selector.ts +2 -2
- package/src/runtime-mcp/content-limits.ts +7 -0
- package/src/runtime-mcp/manager-pool.test.ts +5 -4
- package/src/runtime-mcp/manager.ts +40 -3
- package/src/runtime-mcp/oauth-flow.ts +32 -6
- package/src/runtime-mcp/plugin-mcp-name-filter.ts +62 -0
- package/src/runtime-mcp/project-host-values.ts +12 -8
- package/src/runtime-mcp/render.ts +16 -1
- package/src/runtime-mcp/tool-bridge.ts +194 -21
- package/src/runtime-mcp/transports/stdio.ts +2 -1
- package/src/sdk/broker/broker-exit.ts +10 -5
- package/src/sdk/broker/broker.ts +484 -85
- package/src/sdk/broker/daemon-entry.ts +338 -116
- package/src/sdk/broker/doctor-restart.ts +2 -1
- package/src/sdk/broker/ensure.ts +1214 -268
- package/src/sdk/broker/hop.ts +286 -0
- package/src/sdk/broker/lifecycle-ledger.ts +38 -11
- package/src/sdk/broker/lifecycle.ts +102 -6
- package/src/sdk/broker/lock-host-identity.ts +29 -0
- package/src/sdk/broker/session-index.ts +91 -16
- package/src/sdk/broker/transport.ts +17 -1
- package/src/sdk/bus/chat-command-policy.ts +16 -3
- package/src/sdk/bus/chat-daemon-control.ts +2 -2
- package/src/sdk/bus/index.ts +460 -35
- package/src/sdk/bus/reconciliation-store.ts +201 -8
- package/src/sdk/bus/session-control.ts +2 -0
- package/src/sdk/bus/slack-daemon.ts +105 -9
- package/src/sdk/bus/telegram-daemon-contract.ts +9 -1
- package/src/sdk/bus/telegram-daemon.ts +10 -2
- package/src/sdk/bus/threaded-render.ts +20 -1
- package/src/sdk/cli/session-cli.ts +23 -6
- package/src/sdk/host/control/dispatch.ts +13 -1
- package/src/sdk/host/control/operations.ts +10 -1
- package/src/sdk/host/events.ts +67 -4
- package/src/sdk/host/host.ts +8 -2
- package/src/sdk/host/prompt-image-upload.ts +438 -0
- package/src/sdk/host/sdk-surface-parity.test.ts +15 -0
- package/src/sdk/host/session-runtime.test.ts +1737 -129
- package/src/sdk/host/session-runtime.ts +684 -83
- package/src/sdk/host/surface-policy.ts +4 -0
- package/src/sdk/host/websocket-transport.lifecycle.test.ts +90 -2
- package/src/sdk/host/websocket-transport.ts +19 -7
- package/src/sdk/lifecycle/service.ts +15 -1
- package/src/sdk/prompt-deadline-flush.ts +78 -5
- package/src/sdk/prompt-deadline-manager.ts +68 -14
- package/src/sdk/prompt-status.ts +6 -4
- package/src/sdk/protocol/adapter-validation.ts +81 -12
- package/src/sdk/protocol/operation-inventory.generated.json +261 -2
- package/src/sdk/protocol/operation-registry.ts +33 -3
- package/src/sdk/reconciliation-extensions.ts +1 -0
- package/src/sdk/session-list.ts +1 -0
- package/src/sdk/session.ts +237 -97
- package/src/session/agent-session.ts +2726 -479
- package/src/session/history-storage.ts +182 -12
- package/src/session/internal/managed-session-scope.ts +173 -57
- package/src/session/internal/managed-session-storage.ts +85 -12
- package/src/session/internal/native-publish-outcome.ts +5 -1
- package/src/session/messages.ts +47 -6
- package/src/session/session-manager.ts +326 -19
- package/src/session/startup-auth-config.ts +116 -8
- package/src/session/streaming-output.ts +262 -4
- package/src/session/terminal-abort.ts +14 -2
- package/src/session-import/redact.ts +53 -2
- package/src/session-import/service.ts +1 -0
- package/src/skill-state/workflow-mutation-guard.ts +2145 -206
- package/src/slash-commands/builtin-registry.ts +21 -6
- package/src/slash-commands/helpers/credential-switch.ts +10 -5
- package/src/slash-commands/helpers/mcp.ts +11 -3
- package/src/slash-commands/helpers/provider-auth-status.ts +456 -0
- package/src/ssh/ssh-executor.ts +9 -2
- package/src/stt/recorder.ts +26 -9
- package/src/system-prompt.ts +61 -16
- package/src/task/executor.ts +115 -20
- package/src/task/index.ts +389 -175
- package/src/task/role-body.ts +84 -0
- package/src/task/token-log-mode.test.ts +162 -0
- package/src/task/token-log.ts +91 -2
- package/src/tools/archive-reader.ts +650 -37
- package/src/tools/ask.ts +1 -0
- package/src/tools/ast-edit-write-path.ts +64 -0
- package/src/tools/ast-edit.ts +18 -1
- package/src/tools/ast-grep.ts +7 -2
- package/src/tools/atomic-file-write.ts +46 -15
- package/src/tools/auto-generated-guard.ts +15 -3
- package/src/tools/awaiting-input.ts +114 -0
- package/src/tools/bash-allowed-prefixes.ts +214 -6
- package/src/tools/bash-interactive.ts +14 -2
- package/src/tools/bash-skill-urls.ts +58 -5
- package/src/tools/bash.ts +113 -26
- package/src/tools/browser/tab-worker.ts +39 -13
- package/src/tools/browser.ts +17 -7
- package/src/tools/cron.ts +10 -1
- package/src/tools/debug.ts +16 -8
- package/src/tools/descriptors.test.ts +44 -0
- package/src/tools/descriptors.ts +50 -6
- package/src/tools/eval.ts +15 -0
- package/src/tools/fetch.ts +93 -4
- package/src/tools/gh.ts +27 -12
- package/src/tools/image-gen.ts +20 -6
- package/src/tools/index.ts +2 -0
- package/src/tools/irc.ts +5 -3
- package/src/tools/monitor.ts +9 -1
- package/src/tools/output-meta.ts +74 -5
- package/src/tools/python.ts +1 -1
- package/src/tools/read.ts +26 -37
- package/src/tools/recipe/runner.ts +23 -12
- package/src/tools/render-utils.ts +2 -2
- package/src/tools/report-issue.ts +184 -0
- package/src/tools/search.ts +3 -2
- package/src/tools/ssh.ts +274 -8
- package/src/tools/subagent-render.ts +114 -12
- package/src/tools/subagent.ts +118 -5
- package/src/tools/tmux-self-injection-guard.ts +3301 -122
- package/src/tools/todo-write.ts +41 -3
- package/src/tools/tool-catalog.generated.ts +32 -4
- package/src/tools/ultragoal-ask-guard.ts +13 -1
- package/src/tools/write.ts +42 -3
- package/src/tui/tree-list.ts +15 -1
- package/src/utils/commit-message-generator.ts +12 -4
- package/src/utils/external-editor.ts +21 -7
- package/src/utils/file-mentions.ts +75 -7
- package/src/utils/git.ts +38 -7
- package/src/utils/image-limits.ts +8 -0
- package/src/utils/image-loading.ts +1 -1
- package/src/utils/open.ts +73 -4
- package/src/utils/pasted-image-loading.ts +9 -8
- package/src/utils/prompt-suggestion.ts +5 -4
- package/src/utils/shell-snapshot.ts +9 -1
- package/src/utils/title-generator.ts +72 -22
- package/src/web/scrapers/index.ts +3 -1
- package/src/web/scrapers/types.ts +8 -0
- package/src/web/scrapers/youtube.ts +3 -2
- package/src/web/search/index.ts +2 -1
- package/src/web/search/providers/codex.ts +29 -32
- package/src/web/search/providers/insane.ts +91 -28
- package/src/web/search/providers/searxng.ts +62 -10
|
@@ -97,7 +97,7 @@ export async function refreshMissingQualifiedModelProviders(
|
|
|
97
97
|
.getRefreshableProviders()
|
|
98
98
|
.find(candidate => candidate.toLowerCase() === parsedSelector.provider.toLowerCase());
|
|
99
99
|
if (!provider || refreshedProviders.has(provider)) continue;
|
|
100
|
-
const availableModels = modelRegistry.getAvailable();
|
|
100
|
+
const availableModels = modelRegistry.getAvailable(credentialSessionId);
|
|
101
101
|
const rawModelId = selector.slice(selector.indexOf("/") + 1);
|
|
102
102
|
if (
|
|
103
103
|
resolveProviderModelReference(provider, rawModelId, availableModels) ||
|
|
@@ -1047,9 +1047,10 @@ export function resolveModelOverride(
|
|
|
1047
1047
|
settings?: Settings,
|
|
1048
1048
|
sessionId?: string,
|
|
1049
1049
|
aliasIntent?: "preset-equivalent" | "reject",
|
|
1050
|
+
credentialSessionId?: string,
|
|
1050
1051
|
): { model?: Model<Api>; thinkingLevel?: ThinkingLevel; explicitThinkingLevel: boolean } {
|
|
1051
1052
|
if (modelPatterns.length === 0) return { explicitThinkingLevel: false };
|
|
1052
|
-
const availableModels = modelRegistry.getAvailable();
|
|
1053
|
+
const availableModels = modelRegistry.getAvailable(credentialSessionId);
|
|
1053
1054
|
const matchPreferences = { usageOrder: settings?.getStorage()?.getModelUsageOrder() };
|
|
1054
1055
|
for (const pattern of modelPatterns) {
|
|
1055
1056
|
const { model, thinkingLevel, explicitThinkingLevel } = resolveModelRoleValue(pattern, availableModels, {
|
|
@@ -1081,6 +1082,8 @@ export interface ModelChainResolutionOptions {
|
|
|
1081
1082
|
canonicalSessionId?: string | null;
|
|
1082
1083
|
credentialSessionId?: string;
|
|
1083
1084
|
isCredentialUnavailable?: (provider: string) => boolean;
|
|
1085
|
+
/** Read-only auth eligibility for staged profile preflight when no access token can be exposed. */
|
|
1086
|
+
isProviderAuthAvailable?: (provider: string) => boolean;
|
|
1084
1087
|
signal?: AbortSignal;
|
|
1085
1088
|
}
|
|
1086
1089
|
|
|
@@ -1139,13 +1142,13 @@ async function resolveModelChainEntries(
|
|
|
1139
1142
|
startIndex: number,
|
|
1140
1143
|
circuitPolicy: { skipOpenCircuits: boolean },
|
|
1141
1144
|
): Promise<ModelChainResolution & { firstOpenCircuit?: { index: number; skipCount: number } }> {
|
|
1142
|
-
const availableModels = modelRegistry.getAvailable();
|
|
1143
|
-
const matchPreferences = { usageOrder: settings?.getStorage()?.getModelUsageOrder() };
|
|
1144
|
-
const skips: Array<{ selector: string; reason: string }> = [];
|
|
1145
|
-
const authFailedModels = new Set<string>();
|
|
1146
1145
|
const canonicalSessionId =
|
|
1147
1146
|
options?.canonicalSessionId === null ? undefined : (options?.canonicalSessionId ?? sessionId);
|
|
1148
1147
|
const credentialSessionId = options?.credentialSessionId ?? sessionId;
|
|
1148
|
+
const availableModels = modelRegistry.getAvailable(credentialSessionId);
|
|
1149
|
+
const matchPreferences = { usageOrder: settings?.getStorage()?.getModelUsageOrder() };
|
|
1150
|
+
const skips: Array<{ selector: string; reason: string }> = [];
|
|
1151
|
+
const authFailedModels = new Set<string>();
|
|
1149
1152
|
let firstOpenCircuit: { index: number; skipCount: number } | undefined;
|
|
1150
1153
|
for (let activeIndex = startIndex; activeIndex < modelPatterns.length; activeIndex += 1) {
|
|
1151
1154
|
const selector = modelPatterns[activeIndex];
|
|
@@ -1198,7 +1201,7 @@ async function resolveModelChainEntries(
|
|
|
1198
1201
|
skips.push({ selector, reason: "credential_unavailable" });
|
|
1199
1202
|
break;
|
|
1200
1203
|
}
|
|
1201
|
-
if (isAuthenticatedOrKeyless(key)) {
|
|
1204
|
+
if (isAuthenticatedOrKeyless(key) || options?.isProviderAuthAvailable?.(candidate.model.provider)) {
|
|
1202
1205
|
return { ...candidate, activeIndex, skips };
|
|
1203
1206
|
}
|
|
1204
1207
|
skips.push({ selector, reason: "unauthenticated" });
|
|
@@ -1277,7 +1280,8 @@ export async function resolveModelOverrideWithAuthFallback(
|
|
|
1277
1280
|
parentFallbackSelector?: string;
|
|
1278
1281
|
skips: Array<{ selector: string; reason: string }>;
|
|
1279
1282
|
}> {
|
|
1280
|
-
const
|
|
1283
|
+
const credentialSessionId = options?.credentialSessionId ?? authSessionId;
|
|
1284
|
+
const availableModels = modelRegistry.getAvailable(credentialSessionId);
|
|
1281
1285
|
const matchPreferences = { usageOrder: settings?.getStorage()?.getModelUsageOrder() };
|
|
1282
1286
|
let requestedModel: Model<Api> | undefined;
|
|
1283
1287
|
let requestedResolution: ResolvedModelRoleValue | undefined;
|
|
@@ -1292,6 +1296,7 @@ export async function resolveModelOverrideWithAuthFallback(
|
|
|
1292
1296
|
settings,
|
|
1293
1297
|
undefined,
|
|
1294
1298
|
options?.aliasIntent,
|
|
1299
|
+
credentialSessionId,
|
|
1295
1300
|
).model;
|
|
1296
1301
|
if (parentActiveModel) {
|
|
1297
1302
|
modelRegistry.seedCanonicalVariant?.(canonicalScope, parentActiveModel);
|
|
@@ -1313,7 +1318,7 @@ export async function resolveModelOverrideWithAuthFallback(
|
|
|
1313
1318
|
matchPreferences,
|
|
1314
1319
|
modelRegistry,
|
|
1315
1320
|
sessionId: canonicalScope,
|
|
1316
|
-
credentialSessionId
|
|
1321
|
+
credentialSessionId,
|
|
1317
1322
|
aliasIntent: options?.aliasIntent,
|
|
1318
1323
|
});
|
|
1319
1324
|
if (!requestedModel && candidate.model) {
|
|
@@ -1333,7 +1338,7 @@ export async function resolveModelOverrideWithAuthFallback(
|
|
|
1333
1338
|
continue;
|
|
1334
1339
|
}
|
|
1335
1340
|
}
|
|
1336
|
-
const key = await modelRegistry.getApiKey(candidate.model,
|
|
1341
|
+
const key = await modelRegistry.getApiKey(candidate.model, credentialSessionId);
|
|
1337
1342
|
if (isAuthenticatedOrKeyless(key)) {
|
|
1338
1343
|
return { ...candidate, requestedModel: candidate.model, authFallbackUsed: false, activeIndex, skips };
|
|
1339
1344
|
}
|
|
@@ -1343,8 +1348,9 @@ export async function resolveModelOverrideWithAuthFallback(
|
|
|
1343
1348
|
) {
|
|
1344
1349
|
const equivalentRetry = await resolveModelChainWithAuth([pattern], modelRegistry, settings, authSessionId, {
|
|
1345
1350
|
managedFallback: options.managedFallback,
|
|
1346
|
-
aliasIntent: options
|
|
1351
|
+
aliasIntent: options?.aliasIntent,
|
|
1347
1352
|
canonicalSessionId: canonicalScope,
|
|
1353
|
+
credentialSessionId,
|
|
1348
1354
|
});
|
|
1349
1355
|
if (equivalentRetry.model) {
|
|
1350
1356
|
return {
|
|
@@ -1365,10 +1371,17 @@ export async function resolveModelOverrideWithAuthFallback(
|
|
|
1365
1371
|
return { explicitThinkingLevel: false, requestedModel, authFallbackUsed: false, activeIndex, skips };
|
|
1366
1372
|
}
|
|
1367
1373
|
const fallback = parentActiveModelPattern
|
|
1368
|
-
? resolveModelOverride(
|
|
1374
|
+
? resolveModelOverride(
|
|
1375
|
+
[parentActiveModelPattern],
|
|
1376
|
+
modelRegistry,
|
|
1377
|
+
settings,
|
|
1378
|
+
credentialSessionId,
|
|
1379
|
+
options?.aliasIntent,
|
|
1380
|
+
credentialSessionId,
|
|
1381
|
+
)
|
|
1369
1382
|
: { explicitThinkingLevel: false };
|
|
1370
1383
|
if (fallback.model) {
|
|
1371
|
-
const fallbackKey = await modelRegistry.getApiKey(fallback.model,
|
|
1384
|
+
const fallbackKey = await modelRegistry.getApiKey(fallback.model, credentialSessionId);
|
|
1372
1385
|
if (isAuthenticatedOrKeyless(fallbackKey)) {
|
|
1373
1386
|
const isParentSubstitution = requestedModel === undefined || !modelsAreEqual(fallback.model, requestedModel);
|
|
1374
1387
|
return {
|
|
@@ -1450,8 +1463,9 @@ export async function resolveModelScope(
|
|
|
1450
1463
|
patterns: string[],
|
|
1451
1464
|
modelRegistry: Pick<ModelRegistry, "getAvailable" | "getCanonicalVariants">,
|
|
1452
1465
|
preferences?: ModelMatchPreferences,
|
|
1466
|
+
credentialSessionId?: string,
|
|
1453
1467
|
): Promise<ScopedModel[]> {
|
|
1454
|
-
const availableModels = modelRegistry.getAvailable();
|
|
1468
|
+
const availableModels = modelRegistry.getAvailable(credentialSessionId);
|
|
1455
1469
|
|
|
1456
1470
|
const scopedModels: ScopedModel[] = [];
|
|
1457
1471
|
const addScopedModel = (selection: ScopedModel): void => {
|
|
@@ -1556,13 +1570,14 @@ export async function resolveAllowedModels(
|
|
|
1556
1570
|
modelRegistry: Pick<ModelRegistry, "getAvailable" | "getCanonicalVariants">,
|
|
1557
1571
|
settings: Settings | undefined,
|
|
1558
1572
|
preferences?: ModelMatchPreferences,
|
|
1573
|
+
credentialSessionId?: string,
|
|
1559
1574
|
): Promise<Model<Api>[]> {
|
|
1560
|
-
const available = modelRegistry.getAvailable();
|
|
1575
|
+
const available = modelRegistry.getAvailable(credentialSessionId);
|
|
1561
1576
|
const patterns = settings?.get("enabledModels");
|
|
1562
1577
|
if (!patterns || patterns.length === 0) {
|
|
1563
1578
|
return available;
|
|
1564
1579
|
}
|
|
1565
|
-
const scoped = await resolveModelScope(patterns, modelRegistry, preferences);
|
|
1580
|
+
const scoped = await resolveModelScope(patterns, modelRegistry, preferences, credentialSessionId);
|
|
1566
1581
|
if (scoped.length === 0) {
|
|
1567
1582
|
return [];
|
|
1568
1583
|
}
|
|
@@ -1686,6 +1701,7 @@ export async function findInitialModel(options: {
|
|
|
1686
1701
|
defaultModelId?: string;
|
|
1687
1702
|
defaultThinkingSelector?: ThinkingLevel;
|
|
1688
1703
|
modelRegistry: InitialModelRegistry;
|
|
1704
|
+
credentialSessionId?: string;
|
|
1689
1705
|
}): Promise<InitialModelResult> {
|
|
1690
1706
|
const {
|
|
1691
1707
|
cliProvider,
|
|
@@ -1696,6 +1712,7 @@ export async function findInitialModel(options: {
|
|
|
1696
1712
|
defaultModelId,
|
|
1697
1713
|
defaultThinkingSelector,
|
|
1698
1714
|
modelRegistry,
|
|
1715
|
+
credentialSessionId,
|
|
1699
1716
|
} = options;
|
|
1700
1717
|
|
|
1701
1718
|
let model: Model<Api> | undefined;
|
|
@@ -1703,7 +1720,11 @@ export async function findInitialModel(options: {
|
|
|
1703
1720
|
|
|
1704
1721
|
// 1. CLI args take priority
|
|
1705
1722
|
if (cliProvider && cliModel) {
|
|
1706
|
-
const found = resolveProviderModelReference(
|
|
1723
|
+
const found = resolveProviderModelReference(
|
|
1724
|
+
cliProvider,
|
|
1725
|
+
cliModel,
|
|
1726
|
+
modelRegistry.getAvailable(credentialSessionId),
|
|
1727
|
+
);
|
|
1707
1728
|
|
|
1708
1729
|
if (!found) {
|
|
1709
1730
|
console.error(chalk.red(`Model ${cliProvider}/${cliModel} not found`));
|
|
@@ -1728,7 +1749,11 @@ export async function findInitialModel(options: {
|
|
|
1728
1749
|
|
|
1729
1750
|
// 3. Try saved default from settings
|
|
1730
1751
|
if (defaultProvider && defaultModelId) {
|
|
1731
|
-
const found = resolveProviderModelReference(
|
|
1752
|
+
const found = resolveProviderModelReference(
|
|
1753
|
+
defaultProvider,
|
|
1754
|
+
defaultModelId,
|
|
1755
|
+
modelRegistry.getAvailable(credentialSessionId),
|
|
1756
|
+
);
|
|
1732
1757
|
|
|
1733
1758
|
if (found) {
|
|
1734
1759
|
model = found;
|
|
@@ -1743,7 +1768,7 @@ export async function findInitialModel(options: {
|
|
|
1743
1768
|
}
|
|
1744
1769
|
|
|
1745
1770
|
// 4. Try first available model with valid API key
|
|
1746
|
-
const availableModels = modelRegistry.getAvailable();
|
|
1771
|
+
const availableModels = modelRegistry.getAvailable(credentialSessionId);
|
|
1747
1772
|
|
|
1748
1773
|
if (availableModels.length > 0) {
|
|
1749
1774
|
// Try to find a default model from known providers
|
|
@@ -1772,11 +1797,16 @@ export async function restoreModelFromSession(
|
|
|
1772
1797
|
currentModel: Model<Api> | undefined,
|
|
1773
1798
|
shouldPrintMessages: boolean,
|
|
1774
1799
|
modelRegistry: RestorableModelRegistry,
|
|
1800
|
+
credentialSessionId?: string,
|
|
1775
1801
|
): Promise<{ model: Model<Api> | undefined; fallbackMessage: string | undefined }> {
|
|
1776
|
-
const restoredModel = resolveProviderModelReference(
|
|
1802
|
+
const restoredModel = resolveProviderModelReference(
|
|
1803
|
+
savedProvider,
|
|
1804
|
+
savedModelId,
|
|
1805
|
+
modelRegistry.getAvailable(credentialSessionId),
|
|
1806
|
+
);
|
|
1777
1807
|
|
|
1778
1808
|
// Check if restored model exists and has a valid API key
|
|
1779
|
-
const hasApiKey = restoredModel ? !!(await modelRegistry.getApiKey(restoredModel)) : false;
|
|
1809
|
+
const hasApiKey = restoredModel ? !!(await modelRegistry.getApiKey(restoredModel, credentialSessionId)) : false;
|
|
1780
1810
|
|
|
1781
1811
|
if (restoredModel && hasApiKey) {
|
|
1782
1812
|
if (shouldPrintMessages) {
|
|
@@ -1804,7 +1834,7 @@ export async function restoreModelFromSession(
|
|
|
1804
1834
|
}
|
|
1805
1835
|
|
|
1806
1836
|
// Try to find any available model
|
|
1807
|
-
const availableModels = modelRegistry.getAvailable();
|
|
1837
|
+
const availableModels = modelRegistry.getAvailable(credentialSessionId);
|
|
1808
1838
|
|
|
1809
1839
|
if (availableModels.length > 0) {
|
|
1810
1840
|
// Try to find a default model from known providers
|
|
@@ -26,6 +26,7 @@ export const ModelCompatSchema = z.object({
|
|
|
26
26
|
sendSessionHeaders: z.boolean().optional(),
|
|
27
27
|
supportsResponsesSessionAffinity: z.boolean().optional(),
|
|
28
28
|
supportsServiceTier: z.boolean().optional(),
|
|
29
|
+
supportsUltrafastTier: z.boolean().optional(),
|
|
29
30
|
supportsMultipleSystemMessages: z.boolean().optional(),
|
|
30
31
|
supportsReasoningEffort: z.boolean().optional(),
|
|
31
32
|
reasoningEffortMap: ReasoningEffortMapSchema.optional(),
|
|
@@ -68,6 +69,8 @@ export const GJC_MODEL_ASSIGNMENT_TARGET_IDS = [
|
|
|
68
69
|
] as const;
|
|
69
70
|
export const EffortSchema = z.enum(GJC_MODEL_EFFORT_IDS);
|
|
70
71
|
const CacheRetentionSchema = z.enum(["none", "short", "long"]);
|
|
72
|
+
const MAX_STREAM_IDLE_TIMEOUT_MS = 2 ** 31 - 1;
|
|
73
|
+
const StreamIdleTimeoutMsSchema = z.number().int().finite().nonnegative().max(MAX_STREAM_IDLE_TIMEOUT_MS);
|
|
71
74
|
|
|
72
75
|
const ThinkingControlModeSchema = z.enum([
|
|
73
76
|
"effort",
|
|
@@ -166,6 +169,7 @@ const ModelDefinitionSchema = z
|
|
|
166
169
|
wireModelId: z.string().min(1).optional(),
|
|
167
170
|
requestTransform: RequestTransformSchema.optional(),
|
|
168
171
|
cacheRetention: CacheRetentionSchema.optional(),
|
|
172
|
+
streamIdleTimeoutMs: StreamIdleTimeoutMsSchema.optional(),
|
|
169
173
|
})
|
|
170
174
|
.strict();
|
|
171
175
|
|
|
@@ -193,6 +197,7 @@ export const ModelOverrideSchema = z
|
|
|
193
197
|
wireModelId: z.string().min(1).optional(),
|
|
194
198
|
requestTransform: RequestTransformSchema.optional(),
|
|
195
199
|
cacheRetention: CacheRetentionSchema.optional(),
|
|
200
|
+
streamIdleTimeoutMs: StreamIdleTimeoutMsSchema.optional(),
|
|
196
201
|
})
|
|
197
202
|
.strict();
|
|
198
203
|
|
|
@@ -257,6 +262,7 @@ const ProviderConfigSchema = z
|
|
|
257
262
|
*/
|
|
258
263
|
transport: z.literal("pi-native").optional(),
|
|
259
264
|
cacheRetention: CacheRetentionSchema.optional(),
|
|
265
|
+
streamIdleTimeoutMs: StreamIdleTimeoutMsSchema.optional(),
|
|
260
266
|
openaiCompat: LocalOpenAICompatSchema.optional(),
|
|
261
267
|
})
|
|
262
268
|
.strict();
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Effort } from "@gajae-code/ai/model-thinking";
|
|
2
2
|
import { PET_MODE_IDS, PET_SKIN_IDS, PET_SKINS } from "@gajae-code/tui/components/gajae-pet";
|
|
3
|
+
import { type CredentialPreferenceEntryValue, parseCredentialPreferenceList } from "../session/startup-auth-config";
|
|
3
4
|
import { TASK_SIMPLE_MODES } from "../task/simple-mode";
|
|
4
5
|
import { getThinkingLevelMetadata } from "../thinking-metadata";
|
|
5
6
|
import { DEFAULT_EDIT_MODE_SETTING, EDIT_MODE_SETTINGS, EDIT_MODES, type EditMode } from "../utils/edit-mode";
|
|
@@ -214,7 +215,11 @@ interface ArrayDef<T> {
|
|
|
214
215
|
type RecordValueDef =
|
|
215
216
|
| { type: "model-selector-value" }
|
|
216
217
|
| { type: "string-enum"; values: readonly string[] }
|
|
217
|
-
| { type: "credential-selector" }
|
|
218
|
+
| { type: "credential-selector" }
|
|
219
|
+
| { type: "credential-preference-list" };
|
|
220
|
+
|
|
221
|
+
/** A provider's `auth.credentialPreferences` value: one account or a non-empty ordered list of entries. */
|
|
222
|
+
export type CredentialPreferenceSettingValue = string | CredentialPreferenceEntryValue[];
|
|
218
223
|
|
|
219
224
|
interface ConstrainedRecordValueDef {
|
|
220
225
|
type: "autorouting-selector-value";
|
|
@@ -452,6 +457,13 @@ export const SETTINGS_SCHEMA = {
|
|
|
452
457
|
valueSchema: { type: "credential-selector" } as const,
|
|
453
458
|
},
|
|
454
459
|
"auth.credentialPinStoreIdentity": { type: "string", default: undefined },
|
|
460
|
+
// Ordered soft per-provider OAuth account preferences with optional per-entry usage caps. Global-only, like pins;
|
|
461
|
+
// read at startup.
|
|
462
|
+
"auth.credentialPreferences": {
|
|
463
|
+
type: "record",
|
|
464
|
+
default: {} as Record<string, CredentialPreferenceSettingValue>,
|
|
465
|
+
valueSchema: { type: "credential-preference-list" } as const,
|
|
466
|
+
},
|
|
455
467
|
"session.directoryMigration": {
|
|
456
468
|
type: "enum",
|
|
457
469
|
values: ["copy-retain", "disabled"] as const,
|
|
@@ -493,6 +505,13 @@ export const SETTINGS_SCHEMA = {
|
|
|
493
505
|
description: "Grace period before a master-spawned child orphaned by confirmed master loss is closed.",
|
|
494
506
|
validate: (value: number) => Number.isSafeInteger(value) && value >= 60_000 && value <= 3_600_000,
|
|
495
507
|
},
|
|
508
|
+
"sdk.brokerAbandonedGraceMs": {
|
|
509
|
+
type: "number",
|
|
510
|
+
default: 120_000,
|
|
511
|
+
description:
|
|
512
|
+
"Grace before a detached broker with no client connection, no live session host, and no open spawn authority exits on its own. A supervised `gjc sdk broker run` service never reaps itself.",
|
|
513
|
+
validate: (value: number) => Number.isSafeInteger(value) && value >= 60_000 && value <= 3_600_000,
|
|
514
|
+
},
|
|
496
515
|
|
|
497
516
|
// Notifications (shared daemon with Telegram/Discord/Slack presentation adapters)
|
|
498
517
|
"notifications.enabled": { type: "boolean", default: false },
|
|
@@ -1470,19 +1489,30 @@ export const SETTINGS_SCHEMA = {
|
|
|
1470
1489
|
|
|
1471
1490
|
serviceTier: {
|
|
1472
1491
|
type: "enum",
|
|
1473
|
-
values: [
|
|
1492
|
+
values: [
|
|
1493
|
+
"none",
|
|
1494
|
+
"auto",
|
|
1495
|
+
"default",
|
|
1496
|
+
"flex",
|
|
1497
|
+
"scale",
|
|
1498
|
+
"priority",
|
|
1499
|
+
"ultrafast",
|
|
1500
|
+
"openai-only",
|
|
1501
|
+
"claude-only",
|
|
1502
|
+
] as const,
|
|
1474
1503
|
default: "none",
|
|
1475
1504
|
ui: {
|
|
1476
1505
|
tab: "model",
|
|
1477
1506
|
label: "Service Tier",
|
|
1478
1507
|
description:
|
|
1479
|
-
'Processing priority hint (none = omit). OpenAI accepts the tier values directly; Anthropic realizes `priority` as `speed: "fast"` on supported Opus models. Scoped values target one family.',
|
|
1508
|
+
'Processing priority hint (none = omit). OpenAI accepts the tier values directly; ultrafast is a 6x premium tier. Anthropic realizes `priority` as `speed: "fast"` on supported Opus models. Scoped values target one family.',
|
|
1480
1509
|
options: [
|
|
1481
1510
|
{ value: "none", label: "None", description: "Omit service_tier parameter" },
|
|
1482
1511
|
{ value: "auto", label: "Auto", description: "Use provider default tier selection (OpenAI)" },
|
|
1483
1512
|
{ value: "default", label: "Default", description: "Standard priority processing (OpenAI)" },
|
|
1484
1513
|
{ value: "flex", label: "Flex", description: "Flexible capacity tier when available (OpenAI)" },
|
|
1485
1514
|
{ value: "scale", label: "Scale", description: "Scale Tier credits when available (OpenAI)" },
|
|
1515
|
+
{ value: "ultrafast", label: "Ultrafast", description: "Ultrafast processing at a 6x premium (OpenAI)" },
|
|
1486
1516
|
{
|
|
1487
1517
|
value: "priority",
|
|
1488
1518
|
label: "Priority",
|
|
@@ -1512,6 +1542,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1512
1542
|
"flex",
|
|
1513
1543
|
"scale",
|
|
1514
1544
|
"priority",
|
|
1545
|
+
"ultrafast",
|
|
1515
1546
|
"openai-only",
|
|
1516
1547
|
"claude-only",
|
|
1517
1548
|
] as const,
|
|
@@ -1532,6 +1563,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1532
1563
|
{ value: "default", label: "Default", description: "Standard priority processing (OpenAI)" },
|
|
1533
1564
|
{ value: "flex", label: "Flex", description: "Flexible capacity tier when available (OpenAI)" },
|
|
1534
1565
|
{ value: "scale", label: "Scale", description: "Scale Tier credits when available (OpenAI)" },
|
|
1566
|
+
{ value: "ultrafast", label: "Ultrafast", description: "Ultrafast processing at a 6x premium (OpenAI)" },
|
|
1535
1567
|
{
|
|
1536
1568
|
value: "priority",
|
|
1537
1569
|
label: "Priority",
|
|
@@ -1778,7 +1810,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1778
1810
|
tab: "interaction",
|
|
1779
1811
|
label: "Prompt Suggestions",
|
|
1780
1812
|
description:
|
|
1781
|
-
"Predict your likely next prompt after each turn (
|
|
1813
|
+
"Predict your likely next prompt after each turn (one extra default-role model call) and show it as ghost text; Tab accepts",
|
|
1782
1814
|
},
|
|
1783
1815
|
},
|
|
1784
1816
|
|
|
@@ -2821,6 +2853,12 @@ export const SETTINGS_SCHEMA = {
|
|
|
2821
2853
|
type: "string",
|
|
2822
2854
|
default: undefined,
|
|
2823
2855
|
},
|
|
2856
|
+
// xxHash64 hex pin for settingsPath. Only the user/global value is a pin;
|
|
2857
|
+
// a project file cannot authorize the TOML path it names.
|
|
2858
|
+
"shellMinimizer.settingsHash": {
|
|
2859
|
+
type: "string",
|
|
2860
|
+
default: undefined,
|
|
2861
|
+
},
|
|
2824
2862
|
"shellMinimizer.only": { type: "array", default: EMPTY_STRING_ARRAY },
|
|
2825
2863
|
"shellMinimizer.except": { type: "array", default: EMPTY_STRING_ARRAY },
|
|
2826
2864
|
"shellMinimizer.maxCaptureBytes": {
|
|
@@ -3004,6 +3042,17 @@ export const SETTINGS_SCHEMA = {
|
|
|
3004
3042
|
},
|
|
3005
3043
|
},
|
|
3006
3044
|
|
|
3045
|
+
"reportIssue.enabled": {
|
|
3046
|
+
type: "boolean",
|
|
3047
|
+
default: false,
|
|
3048
|
+
ui: {
|
|
3049
|
+
tab: "tools",
|
|
3050
|
+
label: "Tool issue reporting",
|
|
3051
|
+
description:
|
|
3052
|
+
"Enable the report_issue tool: the model records tool behavior that contradicts the tool's description into the local ~/.gjc/tool-issues.db. Nothing is sent anywhere.",
|
|
3053
|
+
},
|
|
3054
|
+
},
|
|
3055
|
+
|
|
3007
3056
|
"debug.enabled": {
|
|
3008
3057
|
type: "boolean",
|
|
3009
3058
|
default: true,
|
|
@@ -3554,6 +3603,11 @@ export const SETTINGS_SCHEMA = {
|
|
|
3554
3603
|
default: [] as string[],
|
|
3555
3604
|
},
|
|
3556
3605
|
|
|
3606
|
+
"mcp.discoveryDeferAutoload": {
|
|
3607
|
+
type: "boolean",
|
|
3608
|
+
default: false,
|
|
3609
|
+
},
|
|
3610
|
+
|
|
3557
3611
|
"mcp.notifications": {
|
|
3558
3612
|
type: "boolean",
|
|
3559
3613
|
default: false,
|
|
@@ -3780,6 +3834,17 @@ export const SETTINGS_SCHEMA = {
|
|
|
3780
3834
|
},
|
|
3781
3835
|
},
|
|
3782
3836
|
|
|
3837
|
+
"task.compactSubagentPanel": {
|
|
3838
|
+
type: "boolean",
|
|
3839
|
+
default: false,
|
|
3840
|
+
ui: {
|
|
3841
|
+
tab: "tasks",
|
|
3842
|
+
label: "Compact Subagent Panel",
|
|
3843
|
+
description:
|
|
3844
|
+
"Collapse awaited subagents into one summary line (expand tool output to see each one) and refresh only when the summary changes",
|
|
3845
|
+
},
|
|
3846
|
+
},
|
|
3847
|
+
|
|
3783
3848
|
"task.enableLsp": {
|
|
3784
3849
|
type: "boolean",
|
|
3785
3850
|
default: false,
|
|
@@ -4358,6 +4423,9 @@ function validRecordValue(valueSchema: RecordValueDef, value: unknown): boolean
|
|
|
4358
4423
|
/^account:\S+$/.test(value))
|
|
4359
4424
|
);
|
|
4360
4425
|
}
|
|
4426
|
+
if (valueSchema.type === "credential-preference-list") {
|
|
4427
|
+
return parseCredentialPreferenceList(value) !== undefined;
|
|
4428
|
+
}
|
|
4361
4429
|
return typeof value === "string" && valueSchema.values.includes(value);
|
|
4362
4430
|
}
|
|
4363
4431
|
|
|
@@ -4700,6 +4768,7 @@ export interface BashInterceptorRule {
|
|
|
4700
4768
|
export interface ShellMinimizerSettings {
|
|
4701
4769
|
enabled: boolean;
|
|
4702
4770
|
settingsPath: string | undefined;
|
|
4771
|
+
settingsHash: string | undefined;
|
|
4703
4772
|
only: string[];
|
|
4704
4773
|
except: string[];
|
|
4705
4774
|
maxCaptureBytes: number;
|