@gajae-code/coding-agent 0.18.11 → 0.18.12
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 +293 -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/cli/accounts-cli.d.ts +2 -2
- 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 +1 -0
- package/dist/types/cli/update-cli.d.ts +14 -1
- package/dist/types/cli-ordinary.d.ts +2 -2
- package/dist/types/commands/accounts.d.ts +2 -1
- package/dist/types/commands/migrate.d.ts +1 -1
- package/dist/types/commands/sdk.d.ts +5 -0
- package/dist/types/commit/changelog/index.d.ts +1 -0
- package/dist/types/config/autorouting-tier-map.d.ts +30 -0
- package/dist/types/config/config-hot-reload-trust.d.ts +12 -0
- package/dist/types/config/config-hot-reload.d.ts +39 -0
- package/dist/types/config/file-lock.d.ts +8 -1
- package/dist/types/config/model-discovery-manager.d.ts +2 -0
- package/dist/types/config/model-profile-activation.d.ts +62 -6
- package/dist/types/config/model-registry.d.ts +56 -5
- package/dist/types/config/model-resolver.d.ts +2 -0
- package/dist/types/config/models-config-schema.d.ts +10 -0
- package/dist/types/config/settings-schema.d.ts +46 -3
- package/dist/types/config/settings.d.ts +33 -1
- package/dist/types/dap/config.d.ts +8 -4
- package/dist/types/debug/system-info.d.ts +6 -1
- package/dist/types/discovery/mcp-compat.d.ts +3 -1
- package/dist/types/edit/modes/patch.d.ts +5 -0
- package/dist/types/edit/modes/replace.d.ts +3 -0
- package/dist/types/exec/bash-executor.d.ts +12 -0
- package/dist/types/gjc-runtime/managed-owner-admission.d.ts +3 -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/migrate/adapters/codex.d.ts +2 -1
- package/dist/types/migrate/adapters/index.d.ts +10 -1
- package/dist/types/migrate/executor.d.ts +3 -1
- package/dist/types/migrate/types.d.ts +15 -3
- 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/theme/theme.d.ts +1 -0
- 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/tool-bridge.d.ts +4 -0
- package/dist/types/sdk/broker/broker-exit.d.ts +2 -2
- package/dist/types/sdk/broker/broker.d.ts +7 -1
- 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 +136 -7
- package/dist/types/sdk/broker/hop.d.ts +36 -0
- package/dist/types/sdk/broker/lifecycle-ledger.d.ts +18 -10
- package/dist/types/sdk/broker/lock-host-identity.d.ts +5 -0
- package/dist/types/sdk/broker/session-index.d.ts +4 -1
- package/dist/types/sdk/bus/chat-command-policy.d.ts +2 -1
- package/dist/types/sdk/bus/index.d.ts +23 -0
- package/dist/types/sdk/bus/reconciliation-store.d.ts +10 -0
- package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +3 -1
- package/dist/types/sdk/cli/session-cli.d.ts +0 -1
- package/dist/types/sdk/host/session-runtime.d.ts +32 -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/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 +58 -2
- 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 +13 -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 +7 -3
- package/dist/types/slash-commands/helpers/provider-auth-status.d.ts +8 -0
- package/dist/types/task/executor.d.ts +19 -2
- 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/bash-allowed-prefixes.d.ts +11 -0
- package/dist/types/tools/descriptors.d.ts +2 -0
- package/dist/types/tools/fetch.d.ts +1 -1
- package/dist/types/tools/index.d.ts +2 -0
- 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/web/scrapers/types.d.ts +8 -1
- 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 +8 -8
- 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 +22 -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 +27 -19
- package/src/capability/index.ts +2 -2
- package/src/cli/accounts-cli.ts +176 -8
- package/src/cli/auth-broker-cli.ts +21 -11
- package/src/cli/doctor/install-repairs.ts +35 -5
- package/src/cli/fast-help.ts +1 -1
- package/src/cli/install-activation.ts +47 -4
- package/src/cli/migrate-cli.ts +7 -5
- package/src/cli/public-command-errors.ts +4 -0
- package/src/cli/root-flags.ts +2 -2
- package/src/cli/stats-cli.ts +9 -5
- package/src/cli/update-cli.ts +224 -7
- package/src/cli-ordinary.ts +7 -2
- package/src/commands/accounts.ts +10 -5
- package/src/commands/migrate.ts +3 -3
- package/src/commands/sdk.ts +199 -42
- package/src/commands/ultragoal.ts +16 -8
- package/src/commit/changelog/index.ts +39 -1
- package/src/commit/message.ts +10 -3
- package/src/config/autorouting-tier-map.ts +30 -0
- package/src/config/config-hot-reload-trust.ts +148 -0
- package/src/config/config-hot-reload.ts +734 -0
- package/src/config/file-lock.ts +216 -56
- 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 +716 -113
- package/src/config/model-registry.ts +1334 -158
- package/src/config/model-resolver.ts +3 -1
- package/src/config/models-config-schema.ts +6 -0
- package/src/config/settings-schema.ts +60 -3
- package/src/config/settings.ts +458 -24
- package/src/coordinator-mcp/policy.ts +26 -1
- package/src/crash/sanitize.ts +4 -0
- package/src/customization/import.ts +3 -1
- package/src/dap/config.ts +31 -11
- package/src/dap/defaults.json +1 -1
- package/src/debug/crash-diagnostics.ts +2 -1
- package/src/debug/report-bundle.ts +19 -0
- 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/helpers.ts +1 -2
- package/src/discovery/mcp-compat.ts +120 -17
- package/src/edit/apply-patch/index.ts +12 -1
- package/src/edit/index.ts +13 -17
- package/src/edit/modes/patch.ts +187 -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/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/export/html/index.ts +46 -6
- package/src/extensibility/custom-tools/wrapper.ts +3 -1
- package/src/extensibility/extensions/loader.ts +8 -1
- package/src/extensibility/plugins/marketplace/fetcher.ts +2 -2
- package/src/gjc-runtime/gc-runtime.ts +33 -6
- package/src/gjc-runtime/launch-tmux.ts +7 -2
- 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/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/hooks/native-skill-hook.ts +14 -11
- package/src/internal-urls/docs-index.generated.ts +14 -13
- package/src/internal-urls/local-protocol.ts +142 -8
- package/src/lsp/index.ts +29 -0
- package/src/lsp/workspace-path.ts +23 -0
- package/src/migrate/action-planner.ts +57 -0
- package/src/migrate/adapters/claude-code.ts +23 -4
- package/src/migrate/adapters/codex.ts +22 -4
- package/src/migrate/adapters/index.ts +22 -4
- package/src/migrate/adapters/opencode.ts +6 -1
- package/src/migrate/executor.ts +84 -7
- package/src/migrate/report.ts +19 -2
- package/src/migrate/types.ts +14 -4
- package/src/modes/DESIGN.md +51 -0
- package/src/modes/acp/permission-mode.ts +18 -1
- package/src/modes/components/assistant-message.ts +55 -1
- package/src/modes/components/settings-selector.ts +103 -37
- package/src/modes/controllers/command-controller.ts +38 -2
- package/src/modes/controllers/plan-mode-controller.ts +17 -7
- package/src/modes/controllers/selector-controller.ts +62 -6
- package/src/modes/interactive-mode.ts +68 -0
- package/src/modes/theme/theme.ts +15 -0
- package/src/prompts/tools/debug.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 +32 -0
- package/src/runtime-mcp/oauth-flow.ts +32 -6
- package/src/runtime-mcp/plugin-mcp-name-filter.ts +62 -0
- package/src/runtime-mcp/render.ts +16 -1
- package/src/runtime-mcp/tool-bridge.ts +126 -17
- package/src/sdk/broker/broker-exit.ts +8 -5
- package/src/sdk/broker/broker.ts +342 -82
- package/src/sdk/broker/daemon-entry.ts +338 -116
- package/src/sdk/broker/doctor-restart.ts +2 -1
- package/src/sdk/broker/ensure.ts +1143 -265
- package/src/sdk/broker/hop.ts +274 -0
- package/src/sdk/broker/lifecycle-ledger.ts +35 -11
- package/src/sdk/broker/lock-host-identity.ts +29 -0
- package/src/sdk/broker/session-index.ts +62 -12
- package/src/sdk/bus/chat-command-policy.ts +16 -3
- package/src/sdk/bus/index.ts +52 -21
- package/src/sdk/bus/reconciliation-store.ts +201 -8
- package/src/sdk/bus/telegram-daemon-contract.ts +3 -1
- package/src/sdk/cli/session-cli.ts +21 -6
- package/src/sdk/host/session-runtime.test.ts +118 -23
- package/src/sdk/host/session-runtime.ts +352 -47
- package/src/sdk/lifecycle/service.ts +1 -0
- package/src/sdk/prompt-deadline-flush.ts +78 -5
- package/src/sdk/prompt-deadline-manager.ts +68 -14
- package/src/sdk/protocol/adapter-validation.ts +53 -11
- package/src/sdk/protocol/operation-inventory.generated.json +101 -2
- package/src/sdk/reconciliation-extensions.ts +1 -0
- package/src/sdk/session-list.ts +1 -0
- package/src/sdk/session.ts +114 -61
- package/src/session/agent-session.ts +1043 -81
- package/src/session/internal/managed-session-scope.ts +126 -39
- package/src/session/internal/managed-session-storage.ts +14 -11
- package/src/session/internal/native-publish-outcome.ts +5 -1
- package/src/session/messages.ts +47 -6
- package/src/session/session-manager.ts +236 -14
- 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/service.ts +1 -0
- package/src/skill-state/workflow-mutation-guard.ts +491 -32
- package/src/slash-commands/builtin-registry.ts +15 -3
- package/src/slash-commands/helpers/credential-switch.ts +10 -5
- package/src/slash-commands/helpers/provider-auth-status.ts +456 -0
- package/src/task/executor.ts +103 -12
- package/src/task/index.ts +389 -175
- package/src/tools/ast-edit-write-path.ts +64 -0
- package/src/tools/ast-edit.ts +18 -1
- package/src/tools/atomic-file-write.ts +46 -15
- package/src/tools/auto-generated-guard.ts +3 -0
- package/src/tools/bash-allowed-prefixes.ts +153 -5
- package/src/tools/bash-interactive.ts +14 -2
- package/src/tools/bash.ts +14 -0
- package/src/tools/debug.ts +7 -6
- package/src/tools/descriptors.test.ts +44 -0
- package/src/tools/descriptors.ts +34 -2
- package/src/tools/fetch.ts +3 -2
- package/src/tools/index.ts +2 -0
- package/src/tools/output-meta.ts +23 -2
- package/src/tools/python.ts +1 -1
- package/src/tools/read.ts +17 -35
- package/src/tools/report-issue.ts +184 -0
- package/src/tools/subagent-render.ts +114 -12
- package/src/tools/subagent.ts +108 -1
- package/src/tools/todo-write.ts +41 -3
- package/src/tools/tool-catalog.generated.ts +31 -3
- package/src/tools/write.ts +35 -3
- package/src/utils/commit-message-generator.ts +9 -2
- package/src/utils/file-mentions.ts +29 -1
- package/src/utils/title-generator.ts +7 -2
- 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/providers/insane.ts +91 -28
- package/src/web/search/providers/searxng.ts +62 -10
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export interface ConfigHotReloadPaths {
|
|
2
|
+
readonly configPath: string;
|
|
3
|
+
readonly modelsPath: string;
|
|
4
|
+
}
|
|
5
|
+
export interface ConfigHotReloadFileSnapshot {
|
|
6
|
+
readonly path: string;
|
|
7
|
+
readonly text: string | null;
|
|
8
|
+
readonly identity: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ConfigHotReloadCandidate {
|
|
11
|
+
readonly revision: number;
|
|
12
|
+
readonly config: ConfigHotReloadFileSnapshot;
|
|
13
|
+
readonly models: ConfigHotReloadFileSnapshot;
|
|
14
|
+
}
|
|
15
|
+
export type ConfigHotReloadErrorOperation = "watch" | "read" | "validate" | "apply";
|
|
16
|
+
/** A path-free diagnostic for watcher, snapshot, and callback failures. */
|
|
17
|
+
export declare class ConfigHotReloadError extends Error {
|
|
18
|
+
readonly operation: ConfigHotReloadErrorOperation;
|
|
19
|
+
readonly code: string | undefined;
|
|
20
|
+
constructor(operation: ConfigHotReloadErrorOperation, code?: string);
|
|
21
|
+
}
|
|
22
|
+
export interface ConfigHotReloadWatcherOptions {
|
|
23
|
+
/** Validate the snapshots without mutating live state before a candidate may supersede queued work. */
|
|
24
|
+
readonly onValidate: (candidate: ConfigHotReloadCandidate) => void | Promise<void>;
|
|
25
|
+
/** Apply these text snapshots, not a second read of their paths, and honor abort before commit. */
|
|
26
|
+
readonly onCandidate: (candidate: ConfigHotReloadCandidate, signal: AbortSignal) => void | Promise<void>;
|
|
27
|
+
readonly onError: (error: ConfigHotReloadError) => void;
|
|
28
|
+
}
|
|
29
|
+
/** Watches resolved config and models files and delivers immutable source snapshots. */
|
|
30
|
+
export declare class ConfigHotReloadWatcher {
|
|
31
|
+
#private;
|
|
32
|
+
constructor(options: ConfigHotReloadWatcherOptions);
|
|
33
|
+
/** Establishes the initial fingerprint baseline without emitting a candidate. */
|
|
34
|
+
start(paths: ConfigHotReloadPaths): Promise<void>;
|
|
35
|
+
/** Rebinds after session or configuration-root changes, fencing old work. */
|
|
36
|
+
rebind(paths: ConfigHotReloadPaths): Promise<void>;
|
|
37
|
+
/** Closes all watches and cancels or fences pending and in-flight callbacks. */
|
|
38
|
+
dispose(): void;
|
|
39
|
+
}
|
|
@@ -2,6 +2,8 @@ import type { NativeDirectoryTreeResult, NativeExactUnlinkResult } from "@gajae-
|
|
|
2
2
|
import { renameDirectoryNoReplacePathAsync, renameNoReplacePathAsync } from "@gajae-code/natives";
|
|
3
3
|
export interface FileLockOptions {
|
|
4
4
|
staleMs?: number;
|
|
5
|
+
/** Age after which an ownerless removal transition may be adopted; defaults to `staleMs`. */
|
|
6
|
+
orphanTransitionAgeMs?: number;
|
|
5
7
|
retries?: number;
|
|
6
8
|
retryDelayMs?: number;
|
|
7
9
|
signal?: AbortSignal;
|
|
@@ -42,6 +44,7 @@ export declare class FileLockAcquireError extends Error {
|
|
|
42
44
|
constructor(filePath: string, lockPath: string, attempts: number, holder: string, reason?: FileLockAcquireReason, orphanPath?: string | undefined, removalFailure?: FileLockStaleRemovalFailure | undefined);
|
|
43
45
|
}
|
|
44
46
|
export declare function isFileLockAcquireTimeout(error: unknown): error is FileLockAcquireError;
|
|
47
|
+
export declare const FILE_LOCK_ORPHAN_TRANSITION_ADOPTION_AGE_MS: number;
|
|
45
48
|
/** Release retries cover transient handle denial and a competing exact-removal quarantine cleanup. */
|
|
46
49
|
export declare const FILE_LOCK_RELEASE_RETRY_ATTEMPTS = 20;
|
|
47
50
|
export declare const FILE_LOCK_RELEASE_RETRY_DELAY_MS = 25;
|
|
@@ -52,6 +55,10 @@ export declare const FileLockTestHooks: {
|
|
|
52
55
|
renameNoReplacePathAsync: typeof renameNoReplacePathAsync;
|
|
53
56
|
renameDirectoryNoReplacePathAsync: typeof renameDirectoryNoReplacePathAsync;
|
|
54
57
|
};
|
|
58
|
+
stagingIdentityEvidence?: () => {
|
|
59
|
+
processIncarnation: string | null;
|
|
60
|
+
startTime: string | null;
|
|
61
|
+
};
|
|
55
62
|
nativeQuarantineBindings?: () => NativeFileLockBindings;
|
|
56
63
|
nativeExactRemovalProbe?: () => boolean | Promise<boolean>;
|
|
57
64
|
};
|
|
@@ -177,7 +184,7 @@ export declare function acquireFileLock(filePath: string, options?: FileLockOpti
|
|
|
177
184
|
* that fact through its own `lockHeld` path instead of acquiring it again.
|
|
178
185
|
*/
|
|
179
186
|
export declare function withFileLock<T>(filePath: string, fn: () => Promise<T>, options?: FileLockOptions): Promise<T>;
|
|
180
|
-
/**
|
|
187
|
+
/** Return a name-encoded staging PID for GC discovery. */
|
|
181
188
|
export declare function fileLockStagingOwnerPid(name: string): number | null;
|
|
182
189
|
export interface FileLockStagingResult {
|
|
183
190
|
path: string;
|
|
@@ -53,6 +53,8 @@ export declare class ModelDiscoveryManager<TProvider extends DiscoveryProvider>
|
|
|
53
53
|
get providers(): readonly TProvider[];
|
|
54
54
|
providerIds(): Set<string>;
|
|
55
55
|
getState(provider: string): ProviderDiscoveryState | undefined;
|
|
56
|
+
/** Retain accepted discovery evidence for unchanged providers during a local reload. */
|
|
57
|
+
retainStatesFrom(source: ModelDiscoveryManager<TProvider>, providers: ReadonlySet<string>): void;
|
|
56
58
|
invalidate(provider: string): void;
|
|
57
59
|
loadCached(provider: TProvider, cacheDbPath?: string, expectedProvenance?: string): readonly Model<Api>[];
|
|
58
60
|
beginRefresh(provider: string): DiscoveryRefreshToken;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ThinkingLevel } from "@gajae-code/agent-core";
|
|
2
2
|
import { type Api, type Model } from "@gajae-code/ai/core";
|
|
3
|
-
import type { AgentSession, DefaultFallbackRuntimeState } from "../session/agent-session";
|
|
3
|
+
import type { AgentSession, AgentSessionProfileInstalledOverrideState, DefaultFallbackRuntimeState } from "../session/agent-session";
|
|
4
4
|
import { type ModelProfileDefinition } from "./model-profiles";
|
|
5
5
|
export { resolveModelProfileName } from "./model-profile-contract";
|
|
6
6
|
import { type GjcModelAssignmentTargetId, type ModelRegistry } from "./model-registry";
|
|
@@ -16,7 +16,16 @@ type ModelProfileActivationSession = Pick<AgentSession, "model" | "thinkingLevel
|
|
|
16
16
|
setActiveModelProfile?: (name: string | undefined) => void;
|
|
17
17
|
getActiveModelProfile?: () => string | undefined;
|
|
18
18
|
/** Record which runtime override keys this activation installed (session-scoped). */
|
|
19
|
-
noteProfileInstalledOverrides?: (modelRoles: readonly string[], agentModelOverrides: readonly string[], preProfileModel: Model<Api> | undefined
|
|
19
|
+
noteProfileInstalledOverrides?: (modelRoles: readonly string[], agentModelOverrides: readonly string[], preProfileModel: Model<Api> | undefined, baseline?: {
|
|
20
|
+
modelRoles: Readonly<Record<string, ModelSelectorValue>>;
|
|
21
|
+
agentModelOverrides: Readonly<Record<string, ModelSelectorValue>>;
|
|
22
|
+
}, installed?: {
|
|
23
|
+
modelRoles: Readonly<Record<string, ModelSelectorValue>>;
|
|
24
|
+
agentModelOverrides: Readonly<Record<string, ModelSelectorValue>>;
|
|
25
|
+
}, manual?: {
|
|
26
|
+
modelRoles: readonly string[];
|
|
27
|
+
agentModelOverrides: readonly string[];
|
|
28
|
+
}) => void;
|
|
20
29
|
/** Drop the recorded profile-installed override keys (e.g. after materialization). */
|
|
21
30
|
clearProfileInstalledOverrides?: () => void;
|
|
22
31
|
/** Current profile-installed override keys, for deriving the activation base. */
|
|
@@ -24,11 +33,15 @@ type ModelProfileActivationSession = Pick<AgentSession, "model" | "thinkingLevel
|
|
|
24
33
|
modelRoles: readonly string[];
|
|
25
34
|
agentModelOverrides: readonly string[];
|
|
26
35
|
};
|
|
36
|
+
/** Profile-installed baselines, preserved when a refreshed profile drops an assignment. */
|
|
37
|
+
getProfileInstalledOverrideState?: () => AgentSessionProfileInstalledOverrideState;
|
|
38
|
+
restoreProfileInstalledOverrideState?: (state: AgentSessionProfileInstalledOverrideState) => void;
|
|
27
39
|
/** Re-apply vendor-separated delegation (task tool + prompt) after the role layer changed. */
|
|
28
40
|
syncEagerDelegation?: () => Promise<void>;
|
|
29
41
|
getSessionDefaultModelSelector?: () => string | undefined;
|
|
30
42
|
recordResumeDefaultModel?: (selector: string | undefined) => void;
|
|
31
43
|
getUserCanonicalVariantSelection?: () => UserCanonicalVariantSelection;
|
|
44
|
+
getUserModelSelectionRevision?: () => number;
|
|
32
45
|
seedDefaultFallbackResolution?: (activeIndex: number, skips: Array<{
|
|
33
46
|
selector: string;
|
|
34
47
|
reason: string;
|
|
@@ -36,7 +49,10 @@ type ModelProfileActivationSession = Pick<AgentSession, "model" | "thinkingLevel
|
|
|
36
49
|
getDefaultFallbackRuntimeState?: () => DefaultFallbackRuntimeState;
|
|
37
50
|
restoreDefaultFallbackRuntimeState?: (state: DefaultFallbackRuntimeState) => void;
|
|
38
51
|
restoreModelSelectionForRollback?: AgentSession["restoreModelSelectionForRollback"];
|
|
39
|
-
|
|
52
|
+
prepareModelSelectionForProfileActivation?: AgentSession["prepareModelSelectionForProfileActivation"];
|
|
53
|
+
commitPreparedProfileModelSelection?: AgentSession["commitPreparedProfileModelSelection"];
|
|
54
|
+
finishPreparedProfileModelSelection?: AgentSession["finishPreparedProfileModelSelection"];
|
|
55
|
+
modelRegistry?: Pick<ModelRegistry, "getSessionCanonicalVariant" | "restoreSessionCanonicalVariant" | "clearCanonicalVariant" | "getAvailable" | "lookupAliasExists" | "resolveModelByLookupAlias" | "authStorage" | "isCredentiallessProvider"> & Partial<Pick<ModelRegistry, "seedCanonicalVariant">>;
|
|
40
56
|
getConfiguredModelChainState?: (role: string) => ConfiguredModelChainState | undefined;
|
|
41
57
|
};
|
|
42
58
|
type ConfiguredModelChainState = {
|
|
@@ -45,18 +61,45 @@ type ConfiguredModelChainState = {
|
|
|
45
61
|
identity?: string;
|
|
46
62
|
explicitHead: boolean;
|
|
47
63
|
};
|
|
64
|
+
type PublishedModelProfileActivationState = {
|
|
65
|
+
model: Model<Api> | undefined;
|
|
66
|
+
thinkingLevel: ThinkingLevel | undefined;
|
|
67
|
+
modelRolesOverride: Readonly<Record<string, ModelSelectorValue>> | undefined;
|
|
68
|
+
agentModelOverridesOverride: Readonly<Record<string, ModelSelectorValue>> | undefined;
|
|
69
|
+
defaultChainState: ConfiguredModelChainState | undefined;
|
|
70
|
+
defaultFallbackRuntimeState: DefaultFallbackRuntimeState | undefined;
|
|
71
|
+
activeModelProfile: string | undefined;
|
|
72
|
+
profileInstalledOverrideState: AgentSessionProfileInstalledOverrideState | undefined;
|
|
73
|
+
sessionDefaultModel: string | undefined;
|
|
74
|
+
persistedModelRoles: Readonly<Record<string, ModelSelectorValue>> | undefined;
|
|
75
|
+
persistedAgentModelOverrides: Readonly<Record<string, ModelSelectorValue>> | undefined;
|
|
76
|
+
persistedDefaultProfile: string | undefined;
|
|
77
|
+
persistedDefaultThinkingLevel: Exclude<ThinkingLevel, "inherit"> | undefined;
|
|
78
|
+
defaultThinkingLevelOverride: Exclude<ThinkingLevel, "inherit"> | undefined;
|
|
79
|
+
defaultProfileOverride: string | undefined;
|
|
80
|
+
};
|
|
48
81
|
export interface PrepareModelProfileActivationOptions {
|
|
49
82
|
session: ModelProfileActivationSession;
|
|
50
|
-
modelRegistry: Pick<ModelRegistry, "getModelProfile" | "getModelProfiles" | "getAvailableModelProfileNames" | "getApiKeyForProvider" | "getAll" | "resolveCanonicalModel" | "getCanonicalVariants" | "getCanonicalId" | "isSelectorCircuitOpen"> & Partial<Pick<ModelRegistry, "getAvailable" | "resolveModelByLookupAlias" | "lookupAliasExists" | "clearCanonicalVariant" | "seedCanonicalVariant" | "getSessionCanonicalVariant" | "restoreSessionCanonicalVariant" | "getConfiguredProviderIds" | "isKnownProvider">> & {
|
|
83
|
+
modelRegistry: Pick<ModelRegistry, "getModelProfile" | "getModelProfiles" | "getAvailableModelProfileNames" | "getApiKeyForProvider" | "getAll" | "resolveCanonicalModel" | "getCanonicalVariants" | "getCanonicalId" | "isSelectorCircuitOpen"> & Partial<Pick<ModelRegistry, "getAvailable" | "hasUsableAuthForProvider" | "isStagedReloadCandidate" | "resolveModelByLookupAlias" | "lookupAliasExists" | "clearCanonicalVariant" | "seedCanonicalVariant" | "getSessionCanonicalVariant" | "restoreSessionCanonicalVariant" | "getConfiguredProviderIds" | "getConfiguredModelBindings" | "isKnownProvider">> & {
|
|
51
84
|
getError?: ModelRegistry["getError"];
|
|
52
85
|
authStorage?: ModelRegistry["authStorage"];
|
|
53
86
|
};
|
|
54
87
|
settings: Pick<Settings, "get" | "getGlobal" | "getOverride">;
|
|
88
|
+
/** Live mutation target when `settings` is a validated staged view. */
|
|
89
|
+
settingsForApply?: Settings;
|
|
90
|
+
prepareSessionModelSelection?: boolean;
|
|
91
|
+
preserveManualOverrides?: boolean;
|
|
92
|
+
preserveCanonicalVariant?: boolean;
|
|
93
|
+
signal?: AbortSignal;
|
|
55
94
|
profileName: string;
|
|
56
95
|
}
|
|
57
96
|
export interface ApplyModelProfileActivationOptions {
|
|
58
97
|
persistDefault?: boolean;
|
|
59
98
|
thinkingLevelOverride?: ThinkingLevel;
|
|
99
|
+
preserveDefaultModelSelection?: boolean;
|
|
100
|
+
preserveLiveModelSelection?: boolean;
|
|
101
|
+
deferRuntimePublication?: boolean;
|
|
102
|
+
signal?: AbortSignal;
|
|
60
103
|
/** Cancels deferred activation if a newer user model selection exists. */
|
|
61
104
|
isCurrent?: () => boolean;
|
|
62
105
|
}
|
|
@@ -77,11 +120,16 @@ export interface PreparedModelProfileActivation {
|
|
|
77
120
|
previousDefaultProfileOverride: string | undefined;
|
|
78
121
|
previousPersistedDefaultProfile: string | undefined;
|
|
79
122
|
previousPersistedDefaultThinkingLevel: Exclude<ThinkingLevel, "inherit"> | undefined;
|
|
80
|
-
previousDefaultThinkingLevelOverride: ThinkingLevel | undefined;
|
|
123
|
+
previousDefaultThinkingLevelOverride: Exclude<ThinkingLevel, "inherit"> | undefined;
|
|
81
124
|
baseAgentModelOverrides: Record<string, ModelSelectorValue>;
|
|
82
125
|
baseModelRoles: Record<string, ModelSelectorValue>;
|
|
83
126
|
previousDefaultChain: readonly string[] | undefined;
|
|
84
127
|
previousDefaultChainState: ConfiguredModelChainState | undefined;
|
|
128
|
+
previousProfileInstalledOverrideState: AgentSessionProfileInstalledOverrideState | undefined;
|
|
129
|
+
preparedDefaultModelSelection: Awaited<ReturnType<NonNullable<ModelProfileActivationSession["prepareModelSelectionForProfileActivation"]>>> | undefined;
|
|
130
|
+
defaultChainPublished: boolean;
|
|
131
|
+
defaultModelPublished: boolean;
|
|
132
|
+
publishedState: PublishedModelProfileActivationState | undefined;
|
|
85
133
|
previousDefaultFallbackRuntimeState: DefaultFallbackRuntimeState | undefined;
|
|
86
134
|
defaultModel: Model<Api> | undefined;
|
|
87
135
|
defaultThinkingLevel: ThinkingLevel | undefined;
|
|
@@ -96,6 +144,8 @@ export interface PreparedModelProfileActivation {
|
|
|
96
144
|
}>;
|
|
97
145
|
modelRoles: Record<string, ModelSelectorValue>;
|
|
98
146
|
agentModelOverrides: Record<string, ModelSelectorValue>;
|
|
147
|
+
manualModelRoleOverrides: ReadonlySet<string>;
|
|
148
|
+
manualAgentModelOverrides: ReadonlySet<string>;
|
|
99
149
|
previousActiveModelProfile: string | undefined;
|
|
100
150
|
/**
|
|
101
151
|
* The session resume default ("provider/id") captured BEFORE activation —
|
|
@@ -253,7 +303,12 @@ export declare function resolveModelProfileDefaultChain(options: {
|
|
|
253
303
|
}>;
|
|
254
304
|
export declare function rewriteSelectorForProxy(selector: string, proxyProvider: string, proxyMode: ModelProfileProxyMode, allModels: Model<Api>[], directlyAuthenticated: ReadonlySet<string>, routableProviders: ReadonlySet<string>): string;
|
|
255
305
|
export declare function prepareModelProfileActivation(options: PrepareModelProfileActivationOptions): Promise<PreparedModelProfileActivation>;
|
|
306
|
+
/** Publish the prepared model selection and role layer without awaiting. */
|
|
307
|
+
export declare function publishPreparedModelProfileActivation(prepared: PreparedModelProfileActivation, options?: Pick<ApplyModelProfileActivationOptions, "preserveDefaultModelSelection" | "preserveLiveModelSelection">): void;
|
|
308
|
+
export declare function finishPreparedModelProfileActivation(prepared: PreparedModelProfileActivation): Promise<void>;
|
|
256
309
|
export declare function applyPreparedModelProfileActivation(prepared: PreparedModelProfileActivation, options?: ApplyModelProfileActivationOptions): Promise<void>;
|
|
310
|
+
/** Restore an applied activation when its enclosing settings/registry commit fails. */
|
|
311
|
+
export declare function rollbackPreparedModelProfileActivation(prepared: PreparedModelProfileActivation, options?: ApplyModelProfileActivationOptions): Promise<void>;
|
|
257
312
|
export interface MaterializeModelProfileForDeletionResult {
|
|
258
313
|
modelRoles: Record<string, ModelSelectorValue>;
|
|
259
314
|
agentModelOverrides: Record<string, ModelSelectorValue>;
|
|
@@ -269,6 +324,7 @@ export interface MaterializeModelProfileForDeletionResult {
|
|
|
269
324
|
previousActiveModelProfile: string | undefined;
|
|
270
325
|
previousDefaultChainState: ConfiguredModelChainState | undefined;
|
|
271
326
|
previousDefaultFallbackRuntimeState: DefaultFallbackRuntimeState | undefined;
|
|
327
|
+
previousProfileInstalledOverrideState: AgentSessionProfileInstalledOverrideState | undefined;
|
|
272
328
|
/**
|
|
273
329
|
* Restores the session sticky canonical variant that was snapshotted before
|
|
274
330
|
* materialization cleared it. Internal closure capturing the registry,
|
|
@@ -283,7 +339,7 @@ export declare function materializeModelProfileForDeletion(options: PrepareModel
|
|
|
283
339
|
}): Promise<MaterializeModelProfileForDeletionResult>;
|
|
284
340
|
export declare function restoreMaterializedModelProfileForDeletion(options: {
|
|
285
341
|
settings: Pick<Settings, "clearOverride" | "flushOrThrow" | "override" | "set" | "unset">;
|
|
286
|
-
session: Pick<ModelProfileActivationSession, "setActiveModelProfile" | "setConfiguredModelChain" | "restoreDefaultFallbackRuntimeState">;
|
|
342
|
+
session: Pick<ModelProfileActivationSession, "setActiveModelProfile" | "setConfiguredModelChain" | "restoreDefaultFallbackRuntimeState" | "restoreProfileInstalledOverrideState">;
|
|
287
343
|
snapshot: MaterializeModelProfileForDeletionResult;
|
|
288
344
|
}): Promise<void>;
|
|
289
345
|
export declare function activateModelProfile(options: PrepareModelProfileActivationOptions, applyOptions?: ApplyModelProfileActivationOptions): Promise<void>;
|
|
@@ -5,15 +5,15 @@ import { type ActiveProviderDescriptor } from "../sdk/providers";
|
|
|
5
5
|
import type { AuthStorage } from "../session/auth-storage";
|
|
6
6
|
import type { ActiveSearchModelContext, WebSearchMode } from "../web/search/types";
|
|
7
7
|
import { type BillingPath } from "./billing-path";
|
|
8
|
-
import { ConfigError, ConfigFile } from "./config-file";
|
|
8
|
+
import { ConfigError, ConfigFile, type LoadResult } from "./config-file";
|
|
9
9
|
import { isAuthenticated, kNoAuth } from "./model-auth";
|
|
10
10
|
import { type ConfiguredModelBindings } from "./model-bindings-applier";
|
|
11
11
|
import { type ProviderDiscoveryState } from "./model-discovery-manager";
|
|
12
|
-
import { type ModelPresetRegistryDependencies, type ModelPresetRegistryRefreshResult } from "./model-preset-registry";
|
|
12
|
+
import { type AcceptedModelPresetRegistry, type ModelPresetRegistryDependencies, type ModelPresetRegistryRefreshResult } from "./model-preset-registry";
|
|
13
13
|
export type { ProviderDiscoveryState, ProviderDiscoveryStatus } from "./model-discovery-manager";
|
|
14
14
|
import { type CanonicalModelIndex, type CanonicalModelRecord, type CanonicalModelVariant, type ModelEquivalenceConfig } from "./model-equivalence";
|
|
15
15
|
import { type ModelProfileDefinition } from "./model-profiles";
|
|
16
|
-
import { GJC_MODEL_ASSIGNMENT_TARGET_IDS, type ModelProfileConfig } from "./models-config-schema";
|
|
16
|
+
import { GJC_MODEL_ASSIGNMENT_TARGET_IDS, type ModelProfileConfig, type ModelsConfig } from "./models-config-schema";
|
|
17
17
|
import { type EffectiveProviderAuth } from "./provider-selection-policy";
|
|
18
18
|
import { type Settings } from "./settings";
|
|
19
19
|
export type { BillingPath, BillingPathKind } from "./billing-path";
|
|
@@ -78,6 +78,7 @@ export declare const ModelsConfigFile: ConfigFile<{
|
|
|
78
78
|
sendSessionHeaders?: boolean | undefined;
|
|
79
79
|
supportsResponsesSessionAffinity?: boolean | undefined;
|
|
80
80
|
supportsServiceTier?: boolean | undefined;
|
|
81
|
+
supportsUltrafastTier?: boolean | undefined;
|
|
81
82
|
supportsMultipleSystemMessages?: boolean | undefined;
|
|
82
83
|
supportsReasoningEffort?: boolean | undefined;
|
|
83
84
|
reasoningEffortMap?: {
|
|
@@ -163,6 +164,7 @@ export declare const ModelsConfigFile: ConfigFile<{
|
|
|
163
164
|
sendSessionHeaders?: boolean | undefined;
|
|
164
165
|
supportsResponsesSessionAffinity?: boolean | undefined;
|
|
165
166
|
supportsServiceTier?: boolean | undefined;
|
|
167
|
+
supportsUltrafastTier?: boolean | undefined;
|
|
166
168
|
supportsMultipleSystemMessages?: boolean | undefined;
|
|
167
169
|
supportsReasoningEffort?: boolean | undefined;
|
|
168
170
|
reasoningEffortMap?: {
|
|
@@ -212,6 +214,7 @@ export declare const ModelsConfigFile: ConfigFile<{
|
|
|
212
214
|
extraBody?: Record<string, unknown> | undefined;
|
|
213
215
|
} | undefined;
|
|
214
216
|
cacheRetention?: "long" | "none" | "short" | undefined;
|
|
217
|
+
streamIdleTimeoutMs?: number | undefined;
|
|
215
218
|
}[] | undefined;
|
|
216
219
|
modelOverrides?: Record<string, {
|
|
217
220
|
name?: string | undefined;
|
|
@@ -241,6 +244,7 @@ export declare const ModelsConfigFile: ConfigFile<{
|
|
|
241
244
|
sendSessionHeaders?: boolean | undefined;
|
|
242
245
|
supportsResponsesSessionAffinity?: boolean | undefined;
|
|
243
246
|
supportsServiceTier?: boolean | undefined;
|
|
247
|
+
supportsUltrafastTier?: boolean | undefined;
|
|
244
248
|
supportsMultipleSystemMessages?: boolean | undefined;
|
|
245
249
|
supportsReasoningEffort?: boolean | undefined;
|
|
246
250
|
reasoningEffortMap?: {
|
|
@@ -290,10 +294,12 @@ export declare const ModelsConfigFile: ConfigFile<{
|
|
|
290
294
|
extraBody?: Record<string, unknown> | undefined;
|
|
291
295
|
} | undefined;
|
|
292
296
|
cacheRetention?: "long" | "none" | "short" | undefined;
|
|
297
|
+
streamIdleTimeoutMs?: number | undefined;
|
|
293
298
|
}> | undefined;
|
|
294
299
|
disableStrictTools?: boolean | undefined;
|
|
295
300
|
transport?: "pi-native" | undefined;
|
|
296
301
|
cacheRetention?: "long" | "none" | "short" | undefined;
|
|
302
|
+
streamIdleTimeoutMs?: number | undefined;
|
|
297
303
|
openaiCompat?: {
|
|
298
304
|
baseUrl: string;
|
|
299
305
|
apiKey?: string | undefined;
|
|
@@ -325,6 +331,7 @@ interface ProviderOverride {
|
|
|
325
331
|
transport?: Model<Api>["transport"];
|
|
326
332
|
requestTransform?: ModelRequestTransform;
|
|
327
333
|
cacheRetention?: CacheRetention;
|
|
334
|
+
streamIdleTimeoutMs?: number;
|
|
328
335
|
isOAuth?: boolean;
|
|
329
336
|
}
|
|
330
337
|
/**
|
|
@@ -359,7 +366,7 @@ export declare function registrySelectorResolvesToModel(selector: string, index:
|
|
|
359
366
|
* See `xiaomi-tp-discovery-merge.test.ts` and the `refresh()` baseUrl-override
|
|
360
367
|
* regression in `model-registry.test.ts`.
|
|
361
368
|
*/
|
|
362
|
-
export declare function mergeDiscoveredModel<TApi extends Api>(model: Model<TApi>, existing: Model<Api> | undefined, providerOverride?: Pick<ProviderOverride, "baseUrl" | "headers" | "transport" | "requestTransform" | "cacheRetention">): Model<TApi>;
|
|
369
|
+
export declare function mergeDiscoveredModel<TApi extends Api>(model: Model<TApi>, existing: Model<Api> | undefined, providerOverride?: Pick<ProviderOverride, "baseUrl" | "headers" | "transport" | "requestTransform" | "cacheRetention" | "streamIdleTimeoutMs">): Model<TApi>;
|
|
363
370
|
export interface CanonicalModelQueryOptions {
|
|
364
371
|
availableOnly?: boolean;
|
|
365
372
|
candidates?: readonly Model<Api>[];
|
|
@@ -373,6 +380,25 @@ export interface CanonicalModelSelection {
|
|
|
373
380
|
record: CanonicalModelRecord;
|
|
374
381
|
model: Model<Api> | undefined;
|
|
375
382
|
}
|
|
383
|
+
export interface ModelsConfigReloadCandidate {
|
|
384
|
+
readonly valid: boolean;
|
|
385
|
+
readonly changed: boolean;
|
|
386
|
+
readonly diagnostics: {
|
|
387
|
+
readonly valid: boolean;
|
|
388
|
+
readonly errors: readonly unknown[];
|
|
389
|
+
};
|
|
390
|
+
readonly registry: ModelRegistry;
|
|
391
|
+
isCurrent(): boolean;
|
|
392
|
+
commit(): void;
|
|
393
|
+
rollback(): void;
|
|
394
|
+
finalize(): void;
|
|
395
|
+
}
|
|
396
|
+
interface ModelRegistryInternalOptions {
|
|
397
|
+
readonly configFile: ConfigFile<ModelsConfig>;
|
|
398
|
+
readonly configSource: LoadResult<ModelsConfig>;
|
|
399
|
+
readonly runtimeSource: ModelRegistry;
|
|
400
|
+
readonly acceptedPresets: AcceptedModelPresetRegistry;
|
|
401
|
+
}
|
|
376
402
|
/**
|
|
377
403
|
* Model registry - loads and manages models, resolves API keys via AuthStorage.
|
|
378
404
|
*/
|
|
@@ -382,7 +408,15 @@ export declare class ModelRegistry {
|
|
|
382
408
|
/**
|
|
383
409
|
* @param authStorage - Auth storage for API key resolution
|
|
384
410
|
*/
|
|
385
|
-
constructor(authStorage: AuthStorage, modelsPath?: string, registrySettings?: Pick<Settings, "get" | "getGlobal"> & Partial<Pick<Settings, "commitAtomicBatchWithCurrent">>, modelPresetRegistryDependencies?: ModelPresetRegistryDependencies);
|
|
411
|
+
constructor(authStorage: AuthStorage, modelsPath?: string, registrySettings?: Pick<Settings, "get" | "getGlobal"> & Partial<Pick<Settings, "commitAtomicBatchWithCurrent">>, modelPresetRegistryDependencies?: ModelPresetRegistryDependencies, internalOptions?: ModelRegistryInternalOptions);
|
|
412
|
+
getModelsConfigPath(): string | undefined;
|
|
413
|
+
stageModelsConfigReload(snapshot: {
|
|
414
|
+
path: string;
|
|
415
|
+
text: string | null;
|
|
416
|
+
identity: string;
|
|
417
|
+
}, registrySettings?: Pick<Settings, "get" | "getGlobal">): Promise<ModelsConfigReloadCandidate>;
|
|
418
|
+
withConsumerLease<T>(body: () => T | Promise<T>, signal?: AbortSignal): Promise<T>;
|
|
419
|
+
acquirePublicationFence(signal?: AbortSignal): Promise<() => void>;
|
|
386
420
|
dispose(): Promise<void>;
|
|
387
421
|
onCatalogChanged(listener: () => void): () => void;
|
|
388
422
|
/** Replace the read-only settings snapshot used by profile-scoped resolution. */
|
|
@@ -431,6 +465,19 @@ export declare class ModelRegistry {
|
|
|
431
465
|
getAll(): Model<Api>[];
|
|
432
466
|
/** Provider ids declared in models.yml, including override-only providers. */
|
|
433
467
|
getConfiguredProviderIds(): readonly string[];
|
|
468
|
+
/** Configured API-key sources in models.yml precedence order, excluding absent environment values. */
|
|
469
|
+
getProviderConfigApiKeySources(provider: string): Array<{
|
|
470
|
+
kind: "environment";
|
|
471
|
+
name: string;
|
|
472
|
+
provider: string;
|
|
473
|
+
} | {
|
|
474
|
+
kind: "models-yml";
|
|
475
|
+
provider: string;
|
|
476
|
+
}>;
|
|
477
|
+
/** Environment variable name for a provider API key supplied by runtime setup. */
|
|
478
|
+
getProviderRuntimeApiKeyEnvName(provider: string): string | undefined;
|
|
479
|
+
/** Whether a runtime extension's provider API key is currently installed in AuthStorage. */
|
|
480
|
+
hasRuntimeProviderApiKey(provider: string): boolean;
|
|
434
481
|
/**
|
|
435
482
|
* Whether this registry can serve a provider id from any active source.
|
|
436
483
|
*
|
|
@@ -608,6 +655,10 @@ export declare class ModelRegistry {
|
|
|
608
655
|
preferredCredentialSelector?: AuthCredentialSelector;
|
|
609
656
|
signal?: AbortSignal;
|
|
610
657
|
}): Promise<string | undefined>;
|
|
658
|
+
/** Check credential availability without resolving keys or refreshing OAuth tokens. */
|
|
659
|
+
hasUsableAuthForProvider(provider: string, sessionId?: string): boolean;
|
|
660
|
+
/** @internal Whether this registry is an unpublished staged reload candidate. */
|
|
661
|
+
isStagedReloadCandidate(): boolean;
|
|
611
662
|
/**
|
|
612
663
|
* Check if a model is using OAuth credentials (subscription).
|
|
613
664
|
*/
|
|
@@ -164,6 +164,8 @@ export interface ModelChainResolutionOptions {
|
|
|
164
164
|
canonicalSessionId?: string | null;
|
|
165
165
|
credentialSessionId?: string;
|
|
166
166
|
isCredentialUnavailable?: (provider: string) => boolean;
|
|
167
|
+
/** Read-only auth eligibility for staged profile preflight when no access token can be exposed. */
|
|
168
|
+
isProviderAuthAvailable?: (provider: string) => boolean;
|
|
167
169
|
signal?: AbortSignal;
|
|
168
170
|
}
|
|
169
171
|
/**
|
|
@@ -5,6 +5,7 @@ export declare const ModelCompatSchema: z.ZodObject<{
|
|
|
5
5
|
sendSessionHeaders: z.ZodOptional<z.ZodBoolean>;
|
|
6
6
|
supportsResponsesSessionAffinity: z.ZodOptional<z.ZodBoolean>;
|
|
7
7
|
supportsServiceTier: z.ZodOptional<z.ZodBoolean>;
|
|
8
|
+
supportsUltrafastTier: z.ZodOptional<z.ZodBoolean>;
|
|
8
9
|
supportsMultipleSystemMessages: z.ZodOptional<z.ZodBoolean>;
|
|
9
10
|
supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
|
|
10
11
|
reasoningEffortMap: z.ZodOptional<z.ZodObject<{
|
|
@@ -76,6 +77,7 @@ export declare const OpenAICompatSchema: z.ZodObject<{
|
|
|
76
77
|
sendSessionHeaders: z.ZodOptional<z.ZodBoolean>;
|
|
77
78
|
supportsResponsesSessionAffinity: z.ZodOptional<z.ZodBoolean>;
|
|
78
79
|
supportsServiceTier: z.ZodOptional<z.ZodBoolean>;
|
|
80
|
+
supportsUltrafastTier: z.ZodOptional<z.ZodBoolean>;
|
|
79
81
|
supportsMultipleSystemMessages: z.ZodOptional<z.ZodBoolean>;
|
|
80
82
|
supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
|
|
81
83
|
reasoningEffortMap: z.ZodOptional<z.ZodObject<{
|
|
@@ -265,6 +267,7 @@ export declare const ModelOverrideSchema: z.ZodObject<{
|
|
|
265
267
|
sendSessionHeaders: z.ZodOptional<z.ZodBoolean>;
|
|
266
268
|
supportsResponsesSessionAffinity: z.ZodOptional<z.ZodBoolean>;
|
|
267
269
|
supportsServiceTier: z.ZodOptional<z.ZodBoolean>;
|
|
270
|
+
supportsUltrafastTier: z.ZodOptional<z.ZodBoolean>;
|
|
268
271
|
supportsMultipleSystemMessages: z.ZodOptional<z.ZodBoolean>;
|
|
269
272
|
supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
|
|
270
273
|
reasoningEffortMap: z.ZodOptional<z.ZodObject<{
|
|
@@ -345,6 +348,7 @@ export declare const ModelOverrideSchema: z.ZodObject<{
|
|
|
345
348
|
none: "none";
|
|
346
349
|
short: "short";
|
|
347
350
|
}>>;
|
|
351
|
+
streamIdleTimeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
348
352
|
}, z.core.$strict>;
|
|
349
353
|
export type ModelOverride = z.infer<typeof ModelOverrideSchema>;
|
|
350
354
|
export declare const ProviderDiscoverySchema: z.ZodObject<{
|
|
@@ -397,6 +401,7 @@ export declare const ModelsConfigSchema: z.ZodObject<{
|
|
|
397
401
|
sendSessionHeaders: z.ZodOptional<z.ZodBoolean>;
|
|
398
402
|
supportsResponsesSessionAffinity: z.ZodOptional<z.ZodBoolean>;
|
|
399
403
|
supportsServiceTier: z.ZodOptional<z.ZodBoolean>;
|
|
404
|
+
supportsUltrafastTier: z.ZodOptional<z.ZodBoolean>;
|
|
400
405
|
supportsMultipleSystemMessages: z.ZodOptional<z.ZodBoolean>;
|
|
401
406
|
supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
|
|
402
407
|
reasoningEffortMap: z.ZodOptional<z.ZodObject<{
|
|
@@ -582,6 +587,7 @@ export declare const ModelsConfigSchema: z.ZodObject<{
|
|
|
582
587
|
sendSessionHeaders: z.ZodOptional<z.ZodBoolean>;
|
|
583
588
|
supportsResponsesSessionAffinity: z.ZodOptional<z.ZodBoolean>;
|
|
584
589
|
supportsServiceTier: z.ZodOptional<z.ZodBoolean>;
|
|
590
|
+
supportsUltrafastTier: z.ZodOptional<z.ZodBoolean>;
|
|
585
591
|
supportsMultipleSystemMessages: z.ZodOptional<z.ZodBoolean>;
|
|
586
592
|
supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
|
|
587
593
|
reasoningEffortMap: z.ZodOptional<z.ZodObject<{
|
|
@@ -662,6 +668,7 @@ export declare const ModelsConfigSchema: z.ZodObject<{
|
|
|
662
668
|
none: "none";
|
|
663
669
|
short: "short";
|
|
664
670
|
}>>;
|
|
671
|
+
streamIdleTimeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
665
672
|
}, z.core.$strict>>>;
|
|
666
673
|
modelOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
667
674
|
name: z.ZodOptional<z.ZodString>;
|
|
@@ -731,6 +738,7 @@ export declare const ModelsConfigSchema: z.ZodObject<{
|
|
|
731
738
|
sendSessionHeaders: z.ZodOptional<z.ZodBoolean>;
|
|
732
739
|
supportsResponsesSessionAffinity: z.ZodOptional<z.ZodBoolean>;
|
|
733
740
|
supportsServiceTier: z.ZodOptional<z.ZodBoolean>;
|
|
741
|
+
supportsUltrafastTier: z.ZodOptional<z.ZodBoolean>;
|
|
734
742
|
supportsMultipleSystemMessages: z.ZodOptional<z.ZodBoolean>;
|
|
735
743
|
supportsReasoningEffort: z.ZodOptional<z.ZodBoolean>;
|
|
736
744
|
reasoningEffortMap: z.ZodOptional<z.ZodObject<{
|
|
@@ -811,6 +819,7 @@ export declare const ModelsConfigSchema: z.ZodObject<{
|
|
|
811
819
|
none: "none";
|
|
812
820
|
short: "short";
|
|
813
821
|
}>>;
|
|
822
|
+
streamIdleTimeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
814
823
|
}, z.core.$strict>>>;
|
|
815
824
|
disableStrictTools: z.ZodOptional<z.ZodBoolean>;
|
|
816
825
|
transport: z.ZodOptional<z.ZodLiteral<"pi-native">>;
|
|
@@ -819,6 +828,7 @@ export declare const ModelsConfigSchema: z.ZodObject<{
|
|
|
819
828
|
none: "none";
|
|
820
829
|
short: "short";
|
|
821
830
|
}>>;
|
|
831
|
+
streamIdleTimeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
822
832
|
openaiCompat: z.ZodOptional<z.ZodObject<{
|
|
823
833
|
baseUrl: z.ZodString;
|
|
824
834
|
apiKey: z.ZodOptional<z.ZodString>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Effort } from "@gajae-code/ai/model-thinking";
|
|
2
|
+
import { type CredentialPreferenceEntryValue } from "../session/startup-auth-config";
|
|
2
3
|
import { type EditMode } from "../utils/edit-mode";
|
|
3
4
|
import { type AutoroutingLocalIssue, type AutoroutingProvenance, type AutoroutingSetup, type AutoroutingTierMapInput } from "./autorouting-contract";
|
|
4
5
|
import { type DurableModelProfileOwnership } from "./model-profile-ownership";
|
|
@@ -122,7 +123,11 @@ type RecordValueDef = {
|
|
|
122
123
|
values: readonly string[];
|
|
123
124
|
} | {
|
|
124
125
|
type: "credential-selector";
|
|
126
|
+
} | {
|
|
127
|
+
type: "credential-preference-list";
|
|
125
128
|
};
|
|
129
|
+
/** A provider's `auth.credentialPreferences` value: one account or a non-empty ordered list of entries. */
|
|
130
|
+
export type CredentialPreferenceSettingValue = string | CredentialPreferenceEntryValue[];
|
|
126
131
|
interface ConstrainedRecordValueDef {
|
|
127
132
|
type: "autorouting-selector-value";
|
|
128
133
|
pattern: string;
|
|
@@ -198,6 +203,13 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
198
203
|
readonly type: "string";
|
|
199
204
|
readonly default: undefined;
|
|
200
205
|
};
|
|
206
|
+
readonly "auth.credentialPreferences": {
|
|
207
|
+
readonly type: "record";
|
|
208
|
+
readonly default: Record<string, CredentialPreferenceSettingValue>;
|
|
209
|
+
readonly valueSchema: {
|
|
210
|
+
readonly type: "credential-preference-list";
|
|
211
|
+
};
|
|
212
|
+
};
|
|
201
213
|
readonly "session.directoryMigration": {
|
|
202
214
|
readonly type: "enum";
|
|
203
215
|
readonly values: readonly ["copy-retain", "disabled"];
|
|
@@ -1565,12 +1577,12 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
1565
1577
|
};
|
|
1566
1578
|
readonly serviceTier: {
|
|
1567
1579
|
readonly type: "enum";
|
|
1568
|
-
readonly values: readonly ["none", "auto", "default", "flex", "scale", "priority", "openai-only", "claude-only"];
|
|
1580
|
+
readonly values: readonly ["none", "auto", "default", "flex", "scale", "priority", "ultrafast", "openai-only", "claude-only"];
|
|
1569
1581
|
readonly default: "none";
|
|
1570
1582
|
readonly ui: {
|
|
1571
1583
|
readonly tab: "model";
|
|
1572
1584
|
readonly label: "Service Tier";
|
|
1573
|
-
readonly description: '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.';
|
|
1585
|
+
readonly description: '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.';
|
|
1574
1586
|
readonly options: readonly [{
|
|
1575
1587
|
readonly value: "none";
|
|
1576
1588
|
readonly label: "None";
|
|
@@ -1591,6 +1603,10 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
1591
1603
|
readonly value: "scale";
|
|
1592
1604
|
readonly label: "Scale";
|
|
1593
1605
|
readonly description: "Scale Tier credits when available (OpenAI)";
|
|
1606
|
+
}, {
|
|
1607
|
+
readonly value: "ultrafast";
|
|
1608
|
+
readonly label: "Ultrafast";
|
|
1609
|
+
readonly description: "Ultrafast processing at a 6x premium (OpenAI)";
|
|
1594
1610
|
}, {
|
|
1595
1611
|
readonly value: "priority";
|
|
1596
1612
|
readonly label: "Priority";
|
|
@@ -1608,7 +1624,7 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
1608
1624
|
};
|
|
1609
1625
|
readonly "task.serviceTier": {
|
|
1610
1626
|
readonly type: "enum";
|
|
1611
|
-
readonly values: readonly ["inherit", "none", "auto", "default", "flex", "scale", "priority", "openai-only", "claude-only"];
|
|
1627
|
+
readonly values: readonly ["inherit", "none", "auto", "default", "flex", "scale", "priority", "ultrafast", "openai-only", "claude-only"];
|
|
1612
1628
|
readonly default: "inherit";
|
|
1613
1629
|
readonly ui: {
|
|
1614
1630
|
readonly tab: "tasks";
|
|
@@ -1638,6 +1654,10 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
1638
1654
|
readonly value: "scale";
|
|
1639
1655
|
readonly label: "Scale";
|
|
1640
1656
|
readonly description: "Scale Tier credits when available (OpenAI)";
|
|
1657
|
+
}, {
|
|
1658
|
+
readonly value: "ultrafast";
|
|
1659
|
+
readonly label: "Ultrafast";
|
|
1660
|
+
readonly description: "Ultrafast processing at a 6x premium (OpenAI)";
|
|
1641
1661
|
}, {
|
|
1642
1662
|
readonly value: "priority";
|
|
1643
1663
|
readonly label: "Priority";
|
|
@@ -3143,6 +3163,10 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
3143
3163
|
readonly type: "string";
|
|
3144
3164
|
readonly default: undefined;
|
|
3145
3165
|
};
|
|
3166
|
+
readonly "shellMinimizer.settingsHash": {
|
|
3167
|
+
readonly type: "string";
|
|
3168
|
+
readonly default: undefined;
|
|
3169
|
+
};
|
|
3146
3170
|
readonly "shellMinimizer.only": {
|
|
3147
3171
|
readonly type: "array";
|
|
3148
3172
|
readonly default: string[];
|
|
@@ -3348,6 +3372,15 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
3348
3372
|
readonly description: "Enable the render_mermaid tool for Mermaid-to-ASCII rendering";
|
|
3349
3373
|
};
|
|
3350
3374
|
};
|
|
3375
|
+
readonly "reportIssue.enabled": {
|
|
3376
|
+
readonly type: "boolean";
|
|
3377
|
+
readonly default: false;
|
|
3378
|
+
readonly ui: {
|
|
3379
|
+
readonly tab: "tools";
|
|
3380
|
+
readonly label: "Tool issue reporting";
|
|
3381
|
+
readonly description: "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.";
|
|
3382
|
+
};
|
|
3383
|
+
};
|
|
3351
3384
|
readonly "debug.enabled": {
|
|
3352
3385
|
readonly type: "boolean";
|
|
3353
3386
|
readonly default: true;
|
|
@@ -4101,6 +4134,15 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
4101
4134
|
}];
|
|
4102
4135
|
};
|
|
4103
4136
|
};
|
|
4137
|
+
readonly "task.compactSubagentPanel": {
|
|
4138
|
+
readonly type: "boolean";
|
|
4139
|
+
readonly default: false;
|
|
4140
|
+
readonly ui: {
|
|
4141
|
+
readonly tab: "tasks";
|
|
4142
|
+
readonly label: "Compact Subagent Panel";
|
|
4143
|
+
readonly description: "Collapse awaited subagents into one summary line (expand tool output to see each one) and refresh only when the summary changes";
|
|
4144
|
+
};
|
|
4145
|
+
};
|
|
4104
4146
|
readonly "task.enableLsp": {
|
|
4105
4147
|
readonly type: "boolean";
|
|
4106
4148
|
readonly default: false;
|
|
@@ -4800,6 +4842,7 @@ export interface BashInterceptorRule {
|
|
|
4800
4842
|
export interface ShellMinimizerSettings {
|
|
4801
4843
|
enabled: boolean;
|
|
4802
4844
|
settingsPath: string | undefined;
|
|
4845
|
+
settingsHash: string | undefined;
|
|
4803
4846
|
only: string[];
|
|
4804
4847
|
except: string[];
|
|
4805
4848
|
maxCaptureBytes: number;
|