@mars-sea/dsh-commandcode-provider 0.13.4 → 0.14.1

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/lib/index.d.ts CHANGED
@@ -61,35 +61,13 @@ type CommandCodeProtocol = 'cli' | 'openai' | 'messages';
61
61
  declare const DEFAULT_MAX_OUTPUT_TOKENS = 131072;
62
62
  //#endregion
63
63
  //#region src/adapter.d.ts
64
- declare const COMMAND_CODE_CLI_VERSION = "1.82.5";
64
+ declare const COMMAND_CODE_CLI_VERSION = "1.84.0";
65
65
  declare const DEFAULT_API_BASE = "https://api.commandcode.ai";
66
66
  /**
67
67
  * The output budget this bundle asks for, and the ceiling it will never exceed.
68
- *
69
- * 131 072, chosen against a measured provider limit rather than a round guess.
70
- * Probing `/alpha/generate` directly on 2026-09-28: 64 000 → 200, 131 072 → 200,
71
- * 196 608 → 200, **200 000 → 200, 200 704 → 400**, 1 000 000 → 400. The server
72
- * therefore caps `max_tokens` at 200 000, and it does so identically for a
73
- * 262 144-window model (`stealth/pixel-canary`, retired by Command Code on
74
- * 2026-10-01 and named here only as the probe's subject) and a 1 000 000-window
75
- * one (`stealth/space-bunny-alpha`) — the cap is global, not per model. 131 072
76
- * keeps a 35 % margin under it while covering the real output ceiling of the
77
- * models that have one (Claude 64 K, Gemini 64 K, several at 128 K).
78
- *
79
- * The old 64 000 was never a provider requirement: it cost nothing in latency
80
- * (a 64 000 request answered headers in 1.28 s against 1.57 s for 131 072) but
81
- * it did cap what a model could ever say in one turn.
82
- *
83
- * No client-side clamp is applied on top of this: an earlier version pre-shrank
84
- * `max_tokens` from an estimate of the prompt already sent (`requestContextBudget()`,
85
- * issue #67), but that estimate over-corrected on ordinary long conversations —
86
- * exactly the "output gets cut short as the conversation grows" symptom issue #74
87
- * reported — while a live A/B probe (2026-09-30, `stealth/space-bunny-alpha`,
88
- * ~19.6% over its 1,000,000-token window with no client-side shrink) showed the
89
- * endpoint answers a genuine overflow with an unambiguous `400 … exceeds the
90
- * model's context window`, which `isContextOverflowDetail()` below already
91
- * classifies as `CONTEXT_WINDOW_EXCEEDED` independently of this constant. See
92
- * [决策记录](../docs/决策记录.md).
68
+ * The figure and its probe evidence live in `./output-budget.ts` — the module
69
+ * the browser settings page also bounds its input by — and are re-exported here
70
+ * under the historical name so existing importers are unaffected.
93
71
  */
94
72
  declare const DEFAULT_GENERATE_MAX_TOKENS = 131072;
95
73
  /** How long the picker's plan-filter billing facts stay cached before refetching. */
@@ -196,6 +174,14 @@ interface CommandCodeConnectionOptions {
196
174
  * 非法条目在 `resolveAdapterOptions` 已被清洗,这里只读已判定的值。
197
175
  */
198
176
  contextWindowOverrides?: Readonly<Record<string, number>> | undefined;
177
+ /**
178
+ * 输出预算上限(issue #74)。未设置=沿用既有推导(模型公布/学习上限、
179
+ * 网关总上限)。正整数=用户上限,与推导值取较小者,永远不会超过网关总上限。
180
+ * `0`=不发送 `max_tokens`,把单轮输出规模交回平台——仅 CLI 与 OpenAI 传输
181
+ * 支持;Messages 端点必填该字段,因此那条链路仍按推导值发送(见
182
+ * `omitOutputTokens()`)。
183
+ */
184
+ maxOutputTokens?: number | undefined;
199
185
  /**
200
186
  * Optional protocol hint. `'auto'` (default) uses billing/cache plus
201
187
  * Provider API fallback; `'cli'` forces `/alpha/generate`; `'openai'`
@@ -967,11 +953,28 @@ interface EnrollmentInput {
967
953
  key?: string;
968
954
  }
969
955
  type EnrollmentPhase = 'creating' | 'waiting' | 'writing' | 'naming' | 'finished' | 'cancelling' | 'cancelled' | 'failed' | 'cleanup-needed';
956
+ /**
957
+ * 账号开通状态的语义消息键。
958
+ *
959
+ * 状态消息传键而不是成品文案:界面语言由浏览器侧持有,宿主没有立场去猜;同一条状态
960
+ * 要在中文与英文界面下各自显示,而 `phase` 不足以唯一确定它——`naming` 既有「正在
961
+ * 保存名称」也有「名称保存失败」,`cleanup-needed` 既有「收尾未完成」也有「清理未
962
+ * 完成」,`cancelled` 既有「已取消」也有「已取消并清理」。客户端拿这些键走 `t()`
963
+ * 渲染,不必再匹配自由文本;`SettingsCommandCodeKey` 收录本类型,因此新增键漏写
964
+ * 中文或英文字典都会被类型检查拦下。
965
+ *
966
+ * 其中十五条由宿主产出(`src/enrollment.ts`),`enrollmentCleanupPending` 也在此列——
967
+ * 它在「收尾未完成」时由宿主与页面两侧共用同一个键;另外七条是浏览器侧控制器的专属键
968
+ * (`src/client/enrollment.ts`),只在传输失败或连接断开时由该侧自己产出。宿主抛出的
969
+ * 异常消息不在此列:它们不上屏,客户端在所有失败路径都用自己这一侧的文案覆盖。
970
+ */
971
+ type EnrollmentMessageKey = 'enrollmentCreating' | 'enrollmentWaiting' | 'enrollmentWriting' | 'enrollmentNaming' | 'enrollmentNameFailed' | 'enrollmentFinished' | 'enrollmentCancelling' | 'enrollmentCancelled' | 'enrollmentCancelledCleaned' | 'enrollmentFailed' | 'enrollmentFailedCleaned' | 'enrollmentCleanupPending' | 'enrollmentCleanupFailed' | 'enrollmentRecordNaming' | 'enrollmentRecordCleanup' | 'enrollmentBeginFailed' | 'enrollmentCancelUnconfirmed' | 'enrollmentNameRequestFailed' | 'enrollmentCleanupRequestFailed' | 'enrollmentDisconnected' | 'enrollmentHostUnavailable' | 'enrollmentStatusUnavailable';
970
972
  interface EnrollmentState {
971
973
  id: string;
972
974
  ref: string;
973
975
  phase: EnrollmentPhase;
974
- message: string;
976
+ /** 要显示的语义键;文案由浏览器侧按界面语言渲染,见 {@link EnrollmentMessageKey}。 */
977
+ messageKey: EnrollmentMessageKey;
975
978
  authUrl?: string;
976
979
  suggestedName?: string;
977
980
  }
@@ -1070,9 +1073,13 @@ declare const KNOWN_IMAGE_MODELS: ReadonlySet<string>;
1070
1073
  * what the current CLI says.
1071
1074
  *
1072
1075
  * 1.82.4 then reversed 1.74.1's removal of `meituan/LongCat-2.0:free` and added
1073
- * the `stealth/cat-jam:free` preview, taking this set to 24 members — the size
1074
- * of the live catalog's `zdr:false` list. The canonical helper set still carries
1075
- * 23 because `cat-jam:free` postdates the artifact's embedded snapshot.
1076
+ * the `stealth/cat-jam:free` preview, taking this set to 24 members. The 1.84.0
1077
+ * sync (2026-10-16) moves it to 25 with no verdict flip: LongCat's exclusion
1078
+ * followed its rename to the paid id, and the free `reflection/beam:free`
1079
+ * preview joined on catalog evidence alone. The authoritative membership is the
1080
+ * UNION of the artifact's exclusion set and the catalog's `zdr:false` list —
1081
+ * neither source alone is complete, which is why this set is not simply "what
1082
+ * the CLI says".
1076
1083
  */
1077
1084
  declare const KNOWN_NON_ZDR_MODELS: ReadonlySet<string>;
1078
1085
  /**
@@ -1937,47 +1944,132 @@ declare const COMMANDCODE_SEARCH_PROVIDER_ID = "commandcode";
1937
1944
  */
1938
1945
  declare const DEFAULT_WEB_SEARCH_PROVIDER_ID = "deepseek-official";
1939
1946
  /**
1940
- * Tracked web-search selection state for one mounted `WebRuntime`.
1947
+ * Profile entry id whose volatile `searchProvider` selects the search backend.
1948
+ *
1949
+ * The hosting profile declares it in `dsh-base`'s cordis patch as
1950
+ * `- id: web` / `name: '@deepseek-ai/dsh-web'`, and the shipped web-search
1951
+ * settings page addresses the very same namespace — that page and this plugin
1952
+ * are therefore two writers of ONE field (see
1953
+ * {@link createCommandCodeSearchSelection} for how they avoid fighting).
1954
+ */
1955
+ declare const WEB_SELECTION_NAMESPACE = "web";
1956
+ /**
1957
+ * Structural view of the host settings service.
1958
+ *
1959
+ * Spelled structurally rather than imported: only these three members are used,
1960
+ * and a narrower contract keeps the tests' double honest. Every member is
1961
+ * called inside a `try`, because a host mounted without `configEditor` /
1962
+ * `profileContext` throws from `describe()` rather than answering empty.
1963
+ */
1964
+ interface WebSelectionSettings {
1965
+ /** Every configurable entry's form view; the `web` row is absent when it has no volatile field. */
1966
+ describe(): unknown;
1967
+ /** Merge fields into that entry's live config (the official volatile write). */
1968
+ update(ns: string, patch: object): Promise<void>;
1969
+ /** Reset the entry's live fields, then set the supplied ones. */
1970
+ replace(ns: string, section: object): Promise<void>;
1971
+ }
1972
+ /** Failure and visibility sink; implementations must never throw. */
1973
+ interface WebSelectionLogger {
1974
+ warn(message: string): void;
1975
+ info(message: string): void;
1976
+ }
1977
+ /**
1978
+ * Tracked web-search selection state.
1979
+ *
1980
+ * `owner` is true while this plugin is the one asserting the selection: it
1981
+ * wrote the value, or found it already equal to ours AND attributed it to a
1982
+ * user-layer pin. Disabling only ever gives back what `owner` covers.
1983
+ *
1984
+ * `preexisting` marks the one case where the value is NOT ours to give back:
1985
+ * the field already read `commandcode` while the USER LAYER held nothing, so
1986
+ * the value came from the deployment's composed config or
1987
+ * `$DSH_WEB_SEARCH_PROVIDER`. Restoring there would write over a pin this
1988
+ * plugin never took.
1941
1989
  *
1942
- * `owner` marks whether this plugin currently owns the selection. `displaced`
1943
- * is the backend it took over — restored on disable or unload — and
1944
- * `undefined` means "nothing was configured, leave auto-select" and must
1945
- * round-trip untouched.
1990
+ * `foreign` is a non-`commandcode` pin found in the user layer — the shipped
1991
+ * web-search settings page writes `deepseek-search-api`, and any sibling plugin
1992
+ * may pin its own id. A foreign pin is never displaced; `foreign` keeps the
1993
+ * value so the state (and the log line) can name who owns the backend.
1946
1994
  *
1947
- * `preexisting` is the one fact `displaced` cannot carry: an `undefined`
1948
- * `displaced` means EITHER "the field was unset when we took over" (give
1949
- * `undefined` back) OR "the field already read `commandcode`" (touch
1950
- * nothing). Collapsing the two is what turned a user's own
1951
- * `searchProvider: commandcode` pin into an auto-select, and then into
1952
- * `WEB_PROVIDER_AMBIGUOUS` on every search.
1995
+ * `displaced` is the config value at takeover time. It is what the DEGRADED
1996
+ * (memory-only) restore writes back; the persisted path restores the composed
1997
+ * base instead, because a copy of it in the user layer would outlive a later
1998
+ * deployment change.
1953
1999
  */
1954
2000
  interface CommandCodeSearchSelection {
1955
2001
  owner: boolean;
1956
- displaced: string | undefined;
1957
- /** Whether the field already read `commandcode` when this plugin first took it over. */
1958
2002
  preexisting: boolean;
2003
+ foreign: string | undefined;
2004
+ displaced: string | undefined;
1959
2005
  }
1960
2006
  /** Fresh selection state: the plugin starts out not owning the selection. */
1961
2007
  declare function commandCodeSearchSelection(): CommandCodeSearchSelection;
2008
+ /** Dependencies {@link createCommandCodeSearchSelection} resolves per call. */
2009
+ interface WebSearchSelectionDeps {
2010
+ /** The running `web` service whose selection field backs the degraded write. */
2011
+ web: WebRuntime;
2012
+ /** Host settings service, resolved per use because it may activate after `web`. */
2013
+ settings: () => WebSelectionSettings | undefined;
2014
+ /** Failure and visibility sink. */
2015
+ logger: WebSelectionLogger;
2016
+ }
2017
+ /** The handle `src/index.ts` drives; every member is synchronous and non-throwing. */
2018
+ interface WebSearchSelectionHandle {
2019
+ /** Live state, for callers that surface who currently owns the backend. */
2020
+ readonly state: CommandCodeSearchSelection;
2021
+ /** Align the selection with one end of the `webSearch` toggle. Never throws. */
2022
+ apply(enable: boolean): void;
2023
+ /** Resolve once every queued write has settled. */
2024
+ settled(): Promise<void>;
2025
+ /** Fiber release: drop queued writes and restore in memory ONLY — never on disk. */
2026
+ release(): void;
2027
+ }
1962
2028
  /**
1963
- * Reach one end of the `webSearch` toggle without trampling sibling search
1964
- * providers (issue #26).
2029
+ * The selection seam over `ctx.web`.
1965
2030
  *
1966
- * - Enabling writes `commandcode` and remembers whatever it displaced. When
1967
- * the plugin already owns the selection, the original `displaced` is kept —
1968
- * the field currently holds our own id, which must never be mistaken for the
1969
- * user's backend.
1970
- * - Disabling hands the selection back to the remembered backend only when
1971
- * this plugin actually took it over. A fresh boot straight into
1972
- * `webSearch: false`, or a `preexisting` field, leaves it ALONE: writing the
1973
- * empty memory back would clear the user's own `searchProvider: commandcode`
1974
- * pin and hand the selection to dsh-web's auto-select, where a second usable
1975
- * provider makes every later search throw `WEB_PROVIDER_AMBIGUOUS`.
2031
+ * ## Why settings rather than the runtime instance
1976
2032
  *
1977
- * Never throws: like the low-level rewrite, a hardened runtime shape degrades
1978
- * to registered-but-unselected.
2033
+ * 0.2.1-rc.2's `WebRuntime` reads `this.config.searchProvider.get()` on EVERY
2034
+ * search and fetch, and the loader commits a settings write into that same
2035
+ * reference in place (`Entry._commitVolatile`) without remounting the entry.
2036
+ * Writing the reference directly therefore works, but leaves the value out of
2037
+ * the profile: the next commit for that entry — including one caused by an
2038
+ * unrelated field such as `fetchProvider` — re-resolves the raw config and
2039
+ * overwrites it. `ctx.settings.update()` / `replace()` is the documented path
2040
+ * and the one the shipped web-search settings page uses, so this plugin takes
2041
+ * it first and falls back to the reference only when settings is unavailable or
2042
+ * refuses (see `volatileWrite`).
2043
+ *
2044
+ * ## Two engine shapes
2045
+ *
2046
+ * Everything above describes an rc.2+ runtime, where the selection is a
2047
+ * reference. PRE-rc.2 engines (0.2.0-rc.2 and the 0.2.1 alphas) have neither
2048
+ * that reference nor a settings row for `web`: there the selection is the
2049
+ * private instance field `searchProviderId`, memory-only by nature. Those
2050
+ * engines therefore run the degraded path BY CONSTRUCTION — no profile write
2051
+ * exists for it and the user layer is unreadable, so a foreign pin cannot be
2052
+ * seen and the takeover/restore semantics are the ones this plugin shipped
2053
+ * before rc.2: remember the displaced backend, hand back only what we took. The
2054
+ * shape is resolved per observation, so one build serves both.
2055
+ *
2056
+ * ## Two writers, one field
2057
+ *
2058
+ * The shipped web-search settings page writes `web.searchProvider` too
2059
+ * (`deepseek-search-api` / `deepseek-official`). This seam never displaces a
2060
+ * pin it did not write: a non-`commandcode` value in the USER LAYER stops the
2061
+ * takeover, the value is recorded on {@link CommandCodeSearchSelection.foreign}
2062
+ * and named in one `info` line, and the provider stays registered but
2063
+ * unselected. A value the user layer does not carry is the deployment's own
2064
+ * default, and taking it over is the toggle's whole purpose. A user-layer
2065
+ * `commandcode` is treated as ours: nothing else writes that id, so it can only
2066
+ * be a previous run of this plugin or a deliberate manual pin, and turning the
2067
+ * toggle off restores the composed default in both cases.
2068
+ *
2069
+ * @param deps - the running `web` service, a settings resolver, and a log sink.
2070
+ * @returns a synchronous handle; failures are logged, never thrown.
1979
2071
  */
1980
- declare function applyCommandCodeSearchSelection(web: WebRuntime, state: CommandCodeSearchSelection, enable: boolean): void;
2072
+ declare function createCommandCodeSearchSelection(deps: WebSearchSelectionDeps): WebSearchSelectionHandle;
1981
2073
  /** Per-request facts the provider needs, all injected so the class stays cordis-free and testable. */
1982
2074
  interface CommandCodeSearchProviderDeps {
1983
2075
  /** 使用搜索已捕获的网关解析账号,探测不能在等待后转到另一个网关。 */
@@ -2185,7 +2277,7 @@ interface Config {
2185
2277
  workingDir?: string;
2186
2278
  /** Model catalog cache path; defaults to `~/.commandcode/models-cache.json`. */
2187
2279
  modelsCachePath?: string;
2188
- /** Milliseconds to wait for the generate response's first byte; defaults to 60s. */
2280
+ /** Milliseconds to wait for the generate response's first byte; defaults to 300s. */
2189
2281
  requestTimeoutMs?: number;
2190
2282
  /** Milliseconds a stream may stall before being treated as a dead connection; defaults to 300s. */
2191
2283
  streamIdleTimeoutMs?: number;
@@ -2239,6 +2331,17 @@ interface Config {
2239
2331
  * 调用还会丢弃无效条目,按全局值、目录值的顺序回落。
2240
2332
  */
2241
2333
  contextWindowOverrides?: Record<string, number>;
2334
+ /**
2335
+ * 单轮输出预算上限(issue #74)。不填(默认)=沿用既有推导:模型公布或
2336
+ * 运行时学到的输出上限、以及网关总上限(131 072)三者取最小。填正整数=
2337
+ * 再与推导值取最小,永远不会突破三者;越界值由配置校验拒绝。
2338
+ * 填 `0`=**不发送** `max_tokens` 字段,把单轮输出规模交回平台自行限制——
2339
+ * 这是报告者要的「不再被硬切」,但仅 CLI(`/alpha/generate`)与 OpenAI
2340
+ * (`/provider/v1/chat/completions`)两条传输支持:Anthropic Messages 端点
2341
+ * 必填该字段,缺失会被上游拒绝,因此 Claude 链路仍按推导值发送。
2342
+ * 宿主显式传入的每次调用预算(如会话标题的 64)优先于此设置。
2343
+ */
2344
+ maxOutputTokens?: number;
2242
2345
  /**
2243
2346
  * Extra accounts for multi-account rotation. The top-level
2244
2347
  * `apiKey`/`apiKeyEnv` (plus the CLI auth file) always form the first
@@ -2266,12 +2369,16 @@ interface Config {
2266
2369
  /**
2267
2370
  * Whether to use Command Code as the backend for dsh's model-facing
2268
2371
  * `web_search` tool. Enabled registers a `commandcode` search provider on
2269
- * `ctx.web` AND selects it over the shipped `deepseek-official` (or a
2270
- * sibling plugin's pin), reusing the SAME key and apiBase as chat. Disabling
2271
- * hands the selection back to whichever backend was there before, so a
2272
- * sibling search plugin (e.g. modsearch) keeps working (issue #26). The
2273
- * write rides dsh's internal `searchProviderId`, read per search call, so a
2274
- * setting change lands on the next search without a restart. Defaults true.
2372
+ * `ctx.web` AND selects it over the shipped `deepseek-official` (or a sibling
2373
+ * plugin's pin), reusing the SAME key and apiBase as chat. Selection is the
2374
+ * `web` profile entry's volatile `searchProvider`, written through the host
2375
+ * settings service and read by `WebRuntime.search()` on the next call, so a
2376
+ * toggle change lands without a restart or a remount. Disabling gives the
2377
+ * field back to the deployment's composed value, so a sibling search plugin
2378
+ * (e.g. modsearch) keeps working (issue #26) — EXCEPT when the user layer
2379
+ * already carries someone else's explicit pin (the shipped web-search
2380
+ * settings page writes `deepseek-search-api`): that choice is never
2381
+ * displaced, and the provider stays registered but unselected. Defaults true.
2275
2382
  */
2276
2383
  webSearch?: boolean;
2277
2384
  /**
@@ -2331,5 +2438,5 @@ interface ResolvedCommandCodeOptions extends CommandCodeConnectionOptions {
2331
2438
  declare function resolveAdapterOptions(config: Config): ResolvedCommandCodeOptions;
2332
2439
  declare function apply(ctx: Context, config: Config): void;
2333
2440
  //#endregion
2334
- export { ACTIVE_ACCOUNT_AUTO, type ApiKeyValidation, BILLING_ACCESS_TTL_MS, COMMANDCODE_SEARCH_PROVIDER_ID, COMMAND_CODE_CLI_VERSION, type CommandCodeAccountConfig, CommandCodeAccountPool, type CommandCodeAccountSlot, type CommandCodeAccountState, type CommandCodeAccountUsage, type CommandCodeAccountsReport, CommandCodeAdapter, type CommandCodeAdapterDeps, type CommandCodeBillingAccess, type CommandCodeCommandDeps, type CommandCodeConnectionOptions, type CommandCodeLoginCredentials, type CommandCodeLoginFailureReason, CommandCodeLoginFlow, type CommandCodeLoginFlowDeps, type CommandCodeLoginStatus, type CommandCodeModelAccountRule, CommandCodeSearchProvider, type CommandCodeSearchProviderDeps, type CommandCodeSearchSelection, type CommandCodeTuiSettingsDeps, type CommandCodeUsageDeps, type CommandCodeUsageReport, CommandCodeUsageService, Config, DEFAULT_API_BASE, DEFAULT_GENERATE_MAX_TOKENS, DEFAULT_MAX_OUTPUT_TOKENS, DEFAULT_MODELS_CACHE_PATH, DEFAULT_REQUEST_TIMEOUT_MS, DEFAULT_STREAM_IDLE_TIMEOUT_MS, DEFAULT_WEB_SEARCH_PROVIDER_ID, KNOWN_DEALS, KNOWN_EFFORTS, KNOWN_IMAGE_MODELS, KNOWN_NON_ZDR_MODELS, KNOWN_PEAK_PRICING, KNOWN_PLANS, KNOWN_SUBSCRIPTION_PLANS, KNOWN_THINKING_MODELS, LANG_AUTO, LOGIN_ALLOWED_ORIGINS, LOGIN_BEGIN_ENDPOINT, LOGIN_BODY_LIMIT_BYTES, LOGIN_CANCEL_ENDPOINT, LOGIN_MAX_PORT_ATTEMPTS, LOGIN_START_PORT, LOGIN_STATUS_ENDPOINT, LOGIN_TIMEOUT_MS, type LoginFlowFacade, PLAN_LABELS, PLAN_ORDER, PROVIDER, type ResolveAttachments, ResolvedCommandCodeOptions, type TuiSettingsField, type TuiSettingsFieldOption, type TuiSettingsFieldWrite, type TuiSettingsGroup, type TuiSettingsSection, type TuiSettingsSectionsService, USAGE_REPORT_ENDPOINT, accountUsable, apply, applyCommandCodeSearchSelection, applyCommandCodeTuiSettings, applyCommands, applyUsageRemote, buildCommandAuthUrl, buildCommandCodeTuiSection, capabilityDescription, commandCodeSearchSelection, commandDefinition, compareByPlan, dealLabel, formatContext, inject, loginStatusSchema, matchModelRule, modelVisibleInPlan, name, parseLoginStatus, peakPricingLabel, peakPricingState, planLabel, projectSlugFromPath, resolveAdapterOptions, resolveAuthFileApiKey, selectAccountForModel, selectActiveAccount, studioBaseForApiBase, subscriptionPlanInfo, supportsZeroDataRetention, usageReportSchema, validateCommandApiKey };
2441
+ export { ACTIVE_ACCOUNT_AUTO, type ApiKeyValidation, BILLING_ACCESS_TTL_MS, COMMANDCODE_SEARCH_PROVIDER_ID, COMMAND_CODE_CLI_VERSION, type CommandCodeAccountConfig, CommandCodeAccountPool, type CommandCodeAccountSlot, type CommandCodeAccountState, type CommandCodeAccountUsage, type CommandCodeAccountsReport, CommandCodeAdapter, type CommandCodeAdapterDeps, type CommandCodeBillingAccess, type CommandCodeCommandDeps, type CommandCodeConnectionOptions, type CommandCodeLoginCredentials, type CommandCodeLoginFailureReason, CommandCodeLoginFlow, type CommandCodeLoginFlowDeps, type CommandCodeLoginStatus, type CommandCodeModelAccountRule, CommandCodeSearchProvider, type CommandCodeSearchProviderDeps, type CommandCodeSearchSelection, type CommandCodeTuiSettingsDeps, type CommandCodeUsageDeps, type CommandCodeUsageReport, CommandCodeUsageService, Config, DEFAULT_API_BASE, DEFAULT_GENERATE_MAX_TOKENS, DEFAULT_MAX_OUTPUT_TOKENS, DEFAULT_MODELS_CACHE_PATH, DEFAULT_REQUEST_TIMEOUT_MS, DEFAULT_STREAM_IDLE_TIMEOUT_MS, DEFAULT_WEB_SEARCH_PROVIDER_ID, KNOWN_DEALS, KNOWN_EFFORTS, KNOWN_IMAGE_MODELS, KNOWN_NON_ZDR_MODELS, KNOWN_PEAK_PRICING, KNOWN_PLANS, KNOWN_SUBSCRIPTION_PLANS, KNOWN_THINKING_MODELS, LANG_AUTO, LOGIN_ALLOWED_ORIGINS, LOGIN_BEGIN_ENDPOINT, LOGIN_BODY_LIMIT_BYTES, LOGIN_CANCEL_ENDPOINT, LOGIN_MAX_PORT_ATTEMPTS, LOGIN_START_PORT, LOGIN_STATUS_ENDPOINT, LOGIN_TIMEOUT_MS, type LoginFlowFacade, PLAN_LABELS, PLAN_ORDER, PROVIDER, type ResolveAttachments, ResolvedCommandCodeOptions, type TuiSettingsField, type TuiSettingsFieldOption, type TuiSettingsFieldWrite, type TuiSettingsGroup, type TuiSettingsSection, type TuiSettingsSectionsService, USAGE_REPORT_ENDPOINT, WEB_SELECTION_NAMESPACE, type WebSearchSelectionHandle, type WebSelectionLogger, type WebSelectionSettings, accountUsable, apply, applyCommandCodeTuiSettings, applyCommands, applyUsageRemote, buildCommandAuthUrl, buildCommandCodeTuiSection, capabilityDescription, commandCodeSearchSelection, commandDefinition, compareByPlan, createCommandCodeSearchSelection, dealLabel, formatContext, inject, loginStatusSchema, matchModelRule, modelVisibleInPlan, name, parseLoginStatus, peakPricingLabel, peakPricingState, planLabel, projectSlugFromPath, resolveAdapterOptions, resolveAuthFileApiKey, selectAccountForModel, selectActiveAccount, studioBaseForApiBase, subscriptionPlanInfo, supportsZeroDataRetention, usageReportSchema, validateCommandApiKey };
2335
2442
  //# sourceMappingURL=index.d.ts.map