@mars-sea/dsh-commandcode-provider 0.10.1 → 0.10.3

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
@@ -7,7 +7,7 @@ import { Context } from "@deepseek-ai/cordis";
7
7
  import { AttachmentStore } from "@deepseek-ai/dsh-attachment";
8
8
  import { CommandDefinition } from "@deepseek-ai/dsh-commands";
9
9
  //#region src/adapter.d.ts
10
- declare const COMMAND_CODE_CLI_VERSION = "1.50.0";
10
+ declare const COMMAND_CODE_CLI_VERSION = "1.53.0";
11
11
  declare const DEFAULT_API_BASE = "https://api.commandcode.ai";
12
12
  declare const DEFAULT_GENERATE_MAX_TOKENS = 64000;
13
13
  declare const DEFAULT_MAX_OUTPUT_TOKENS = 65536;
@@ -24,7 +24,7 @@ declare function projectSlugFromPath(pathName: string): string;
24
24
  declare function resolveAuthFileApiKey(): string | undefined;
25
25
  /** Connection facts resolved fresh per request by the plugin entry. */
26
26
  interface CommandCodeConnectionOptions {
27
- /** API base; the Provider API lives under it (`/alpha/generate`, `/provider/v1/models`). */
27
+ /** API base; the Provider API lives under it (`/alpha/generate`, `/provider/v1/chat/completions`, `/provider/v1/models`). */
28
28
  apiBase: string;
29
29
  /** Working directory reported to the API (project slug, config block). */
30
30
  workingDir: string;
@@ -46,10 +46,20 @@ interface CommandCodeConnectionOptions {
46
46
  */
47
47
  filterModelsByPlan?: boolean;
48
48
  /**
49
- * Optional protocol override. `'auto'` (default) uses billing/cache plus
50
- * Provider API fallback; `'cli'` forces `/alpha/generate`; `'openai'` forces
51
- * `/provider/v1/chat/completions`. This is a connection-level test/operator
52
- * seam and is intentionally not part of the plugin's user settings schema.
49
+ * Visible-model allowlist: catalog model ids shown in pickers. Empty or
50
+ * unset means "show everything"; applies after the subscription-tier filter.
51
+ * The settings page persists it; the catalog endpoint serves the full
52
+ * catalog regardless so the page can always offer every model.
53
+ */
54
+ visibleModels?: string[] | undefined;
55
+ /**
56
+ * Optional protocol hint. `'auto'` (default) uses billing/cache plus
57
+ * Provider API fallback; `'cli'` forces `/alpha/generate`; `'openai'`
58
+ * prefers `/provider/v1/chat/completions` but still falls back to the CLI
59
+ * transport on `upgrade_required` (Go-plan keys have no Provider API
60
+ * access — failing outright would strand them). This is a
61
+ * connection-level test/operator seam and is intentionally not part of
62
+ * the plugin's user settings schema.
53
63
  */
54
64
  protocol?: 'auto' | CommandCodeProtocol;
55
65
  }
@@ -193,10 +203,20 @@ declare class CommandCodeAdapter<C extends CommandCodeConnectionOptions = Comman
193
203
  providerRetryPolicy(_provider: string): ResolvedRetryPolicy;
194
204
  /** Refresh the catalog (live fetch, cache fallback) and return it. */
195
205
  private loadCatalog;
196
- listModels(provider: string): Promise<readonly LlmModelInfo[]>;
206
+ listModels(provider: string, opts?: {
207
+ unfiltered?: boolean;
208
+ }): Promise<readonly LlmModelInfo[]>;
197
209
  resolveModel(provider: string, model: string, signal?: AbortSignal): Promise<LlmResolvedModelInfo>;
198
210
  /** The headers every authenticated account endpoint shares. */
199
211
  private accountHeaders;
212
+ /**
213
+ * Fetch one account endpoint and parse its JSON body. Returns the HTTP
214
+ * status alongside the parsed record so each caller applies its own
215
+ * failure accounting: the billing probe fails open silently, the usage
216
+ * report books failures per endpoint. Non-2xx and non-record bodies come
217
+ * back without a record; only a transport throw propagates to the caller.
218
+ */
219
+ private fetchEndpointJson;
200
220
  /**
201
221
  * The billing facts behind the picker's plan filter, cached for
202
222
  * {@link BILLING_ACCESS_TTL_MS} and shared across concurrent callers.
@@ -467,7 +487,7 @@ declare const KNOWN_EFFORTS: Readonly<Record<string, readonly string[]>>;
467
487
  */
468
488
  declare const KNOWN_IMAGE_MODELS: ReadonlySet<string>;
469
489
  /**
470
- * Models the official CLI's model table (command-code@1.50.0) marks
490
+ * Models the official CLI's model table (command-code@1.53.0) marks
471
491
  * `reasoning:!0` but defines no selectable `reasoning_effort` levels — they
472
492
  * think automatically, with Command Code driving the depth. This is the
473
493
  * authoritative "thinks, effort not adjustable" set: `KNOWN_EFFORTS` (which
@@ -475,7 +495,7 @@ declare const KNOWN_IMAGE_MODELS: ReadonlySet<string>;
475
495
  * effort levels, and this snapshot is not surfaced in the picker's compact
476
496
  * description — it exists for programmatic consumers.
477
497
  *
478
- * Source: the command-code@1.50.0 bundled model table (dist/cli.mjs),
498
+ * Source: the command-code@1.53.0 bundled model table (dist/cli.mjs),
479
499
  * cross-checked with https://commandcode.ai/docs/reference/cli/models.
480
500
  * (`stealth/ox-alpha` left this set in command-code@1.32.1, which gave it
481
501
  * selectable `['low', 'high', 'max']` efforts; the preview then ended in
@@ -488,7 +508,13 @@ declare const KNOWN_IMAGE_MODELS: ReadonlySet<string>;
488
508
  * to `KNOWN_EFFORTS`. command-code@1.42.0 added `meituan/LongCat-2.0:free`
489
509
  * (reasoning:!0, no efforts). command-code@1.45.0 gave the Muse Spark family
490
510
  * (1.1, 1.2, 1.2-contributor, 1.3, 1.3-contributor) selectable
491
- * `['low', 'medium', 'high', 'xhigh']` efforts — they moved to `KNOWN_EFFORTS`.)
511
+ * `['low', 'medium', 'high', 'xhigh']` efforts — they moved to `KNOWN_EFFORTS`.
512
+ * command-code@1.51.3 gave `MiniMaxAI/MiniMax-M3` selectable
513
+ * `['low', 'medium', 'high']` efforts — it moved to `KNOWN_EFFORTS` too.
514
+ * command-code@1.52.0 added `inclusionai/ling-3.0-flash-sante:free`
515
+ * (reasoning:!0, no efforts).)
516
+ * command-code@1.53.0 added `deepseek/deepseek-v4.1-flash` with selectable
517
+ * ['low', 'high', 'max'] efforts, so it lives in `KNOWN_EFFORTS`, not here.)
492
518
  * Keep in sync via the dsh-commandcode-upstream skill.
493
519
  */
494
520
  declare const KNOWN_THINKING_MODELS: ReadonlySet<string>;
@@ -505,7 +531,9 @@ declare const KNOWN_THINKING_MODELS: ReadonlySet<string>;
505
531
  * command-code@1.41.0 added `Qwen/Qwen3.8-Max-0902` (Go) and 1.42.0 added
506
532
  * `meituan/LongCat-2.0:free` (Go, free promo); command-code@1.43.0 added
507
533
  * `google/gemini-3.8-flash` (GOAT) and 1.44.0 added `meta/muse-spark-1.3`
508
- * (GOAT) plus its Contributor sibling (Go).
534
+ * (GOAT) plus its Contributor sibling (Go); command-code@1.52.0 added the
535
+ * free `inclusionai/ling-3.0-flash-sante:free` (Go); command-code@1.53.0
536
+ * added `deepseek/deepseek-v4.1-flash` (Go).
509
537
  *
510
538
  * The Provider API exposes no plan metadata, so this snapshot is the source of
511
539
  * truth for the picker's plan annotation — it answers "which plan do I need to
@@ -537,8 +565,8 @@ declare function compareByPlan(a: {
537
565
  }): number;
538
566
  /**
539
567
  * Subscription plan table, synced from the official CLI bundle's plan maps
540
- * (located by the `"individual-go"` key in command-code@1.50.0 `dist/cli.mjs`,
541
- * re-verified unchanged through 1.50.0): subscription `planId`
568
+ * (located by the `"individual-go"` key in command-code@1.53.0 `dist/cli.mjs`,
569
+ * re-verified unchanged through 1.53.0): subscription `planId`
542
570
  * prefix → display name and the plan's monthly credit total. This is the
543
571
  * account's own subscription (from `/alpha/billing/subscriptions`) — distinct
544
572
  * from {@link KNOWN_PLANS}, which maps catalog models to their minimum tier.
@@ -582,8 +610,9 @@ interface CommandCodeBillingAccess {
582
610
  /**
583
611
  * Whether the picker lists `modelId` for an account with the given billing
584
612
  * access. Fails open at every uncertainty: no billing data, an unknown plan,
585
- * or a model outside {@link KNOWN_PLANS} all keep the model visible — the
586
- * server remains the final gate (`403 MODEL_NOT_IN_PLAN`).
613
+ * a non-finite weight (corrupt billing fact), or a model outside
614
+ * {@link KNOWN_PLANS} all keep the model visible — the server remains the
615
+ * final gate (`403 MODEL_NOT_IN_PLAN`).
587
616
  */
588
617
  declare function modelVisibleInPlan(modelId: string, access: CommandCodeBillingAccess | undefined): boolean;
589
618
  /**
@@ -614,29 +643,43 @@ declare const KNOWN_DEALS: Readonly<Record<string, KnownDeal>>;
614
643
  /**
615
644
  * Models with time-of-day (peak/off-peak) pricing, per the official pricing
616
645
  * page (`/docs/resources/pricing-limits`). Since 2026-08-16 16:00 UTC, DeepSeek
617
- * charges by the hour: peak hours are 01:00–04:00 and 06:00–10:00 UTC (7h/day,
618
- * full price); the other 17 hours are off-peak at half price. The V4 Flash
619
- * Vision (exp) variant (command-code@1.32.0) shares the V4 Flash windows and
620
- * peak prices ($0.44/$1.32) — each row's hover annotation states exactly 2×
621
- * that row's displayed off-peak prices. The picker shows the
646
+ * charges by the hour: peak hours are 01:00–04:00 and 06:00–10:00 UTC (7h per
647
+ * weekday, full price) **Monday to Friday only**; the other 17 hours of a
648
+ * weekday and every hour of Saturday/Sunday (UTC) are off-peak at half price.
649
+ * The V4 Flash Vision (exp) variant (command-code@1.32.0) shares the V4 Flash
650
+ * windows and peak prices ($0.44/$1.32) — each row's hover annotation states
651
+ * exactly 2× that row's displayed off-peak prices. The picker shows the
622
652
  * *current* state as a compact
623
653
  * label (`Peak`/`Half`) matching the English noun style of the other markers
624
654
  * (`Image`, `FREE`), so a developer can tell at a glance whether calling the
625
655
  * model right now is cheap or expensive.
626
656
  *
627
- * Extraction caution: in the page's HTML each annotation div sits inside its
628
- * OWN row's container, immediately before the NEXT row starts — flattening
629
- * the page to text makes every annotation look like it belongs to the model
630
- * printed after it. Verify membership against the enclosing row and the 2×
631
- * price relation, not the flat-text neighbor.
657
+ * Authoritative extraction: the pricing page embeds a model JSON array whose
658
+ * hourly-priced entries carry a `timeOfDay` block
659
+ * (`{ windows: "01–04 & 06–10 UTC, Mon–Fri", peakHoursPerDay: 7,
660
+ * offPeakHoursPerDay: 17, peak: {...}, offPeak: {...} }`). Exactly four models
661
+ * carry it: V4 Pro, V4 Flash, V4 Flash Vision (exp), and V4.1 Flash (added in
662
+ * command-code@1.53.0 at $0.15/$0.60 off-peak, $0.30/$1.20 peak — the same
663
+ * schedule as the other three).
664
+ *
665
+ * Extraction caution: the rendered HTML rows are a trap. Each annotation div
666
+ * sits inside its OWN row's container, immediately before the NEXT row starts,
667
+ * so flattening the page to text makes every annotation look like it belongs
668
+ * to the model printed after it — that is how `deepseek/deepseek-v4-flash-fast`
669
+ * was wrongly added here (its row is flat-priced at $0.28/$0.56/$0.07 and has
670
+ * no `timeOfDay` block). Trust the embedded JSON's `timeOfDay` membership and
671
+ * the 2× price relation, never the flat-text neighbor.
632
672
  *
633
- * Keep in sync with the official pricing page when the model set or the peak
634
- * windows change (see the dsh-commandcode-upstream skill).
673
+ * Keep in sync with the official pricing page when the model set, the peak
674
+ * windows, or the weekday rule change (see the dsh-commandcode-upstream skill).
635
675
  */
636
676
  declare const KNOWN_PEAK_PRICING: ReadonlySet<string>;
637
677
  /**
638
- * Whether `now` (defaults to `Date.now()`) falls in a peak-pricing hour for
639
- * time-of-day-priced models. `undefined` for models outside the snapshot.
678
+ * Whether `now` (defaults to `Date.now()`) falls in a peak-pricing window for
679
+ * time-of-day-priced models. Peak rates apply Monday–Friday (UTC) only: the
680
+ * official rule charges Saturday and Sunday completely off-peak for all 24
681
+ * hours, so a weekend timestamp is off-peak even inside `PEAK_HOUR_RANGES`.
682
+ * `undefined` for models outside the snapshot.
640
683
  */
641
684
  declare function peakPricingState(modelId: string, now?: number): 'peak' | 'off-peak' | undefined;
642
685
  /**
@@ -662,8 +705,8 @@ declare function planLabel(modelId: string): string | undefined;
662
705
  declare function dealLabel(modelId: string, now?: number): string | undefined;
663
706
  /**
664
707
  * Compact human-readable context window, e.g. `1_000_000 -> "1M"`,
665
- * `256_000 -> "256K"`, `262_144 -> "256K"` (floor to the nearest K).
666
- * Returns undefined for unknown/absent sizes.
708
+ * `256_000 -> "256K"`, `262_144 -> "262K"` (floor to the nearest K).
709
+ * Returns undefined for unknown/absent sizes; values under 1K render raw.
667
710
  */
668
711
  declare function formatContext(contextWindow: number | undefined): string | undefined;
669
712
  /**
@@ -705,12 +748,20 @@ declare const USAGE_REPORT_ENDPOINT = "commandcode/report";
705
748
  * deliberately minimal so one `parse` function satisfies it.
706
749
  */
707
750
  declare const usageReportSchema: TypertSchema<CommandCodeAccountsReport>;
708
- /** One catalog entry the settings page's routing-rule editor offers. */
751
+ /** One catalog entry the settings page's model editors offer. */
709
752
  interface CommandCodeCatalogModel {
710
753
  /** Catalog model id (e.g. `deepseek/deepseek-v4-pro`). */
711
754
  id: string;
712
755
  /** Display name from the catalog. */
713
756
  name: string;
757
+ /**
758
+ * Minimum plan-tier key for this model (a `KNOWN_PLANS` value: `go`,
759
+ * `goat`, `pro`, `provider`, `max`), or undefined for models outside the
760
+ * snapshot. The settings page groups the model-editor dropdowns under
761
+ * tier headings from this — the browser cannot import the Host's
762
+ * capability snapshot, so the Host stamps it per entry.
763
+ */
764
+ tier?: string;
714
765
  }
715
766
  /** The model-catalog Remote result: the full catalog, sorted for picking. */
716
767
  interface CommandCodeCatalog {
@@ -812,8 +863,9 @@ declare const loginStatusSchema: TypertSchema<CommandCodeLoginStatus>;
812
863
  /**
813
864
  * The browser-login face the usage service exposes (`commandcode/login*`).
814
865
  * Backed by the Host-half {@link !CommandCodeLoginFlow} when the plugin entry
815
- * wired one; absent, the methods degrade to a no-op status so an old client
816
- * against a fresh page still answers instead of hanging.
866
+ * wired one; absent, `status`/`cancel` degrade to the idle status while
867
+ * `begin` rejects with a plain message (so the page's manual paste path
868
+ * stays the fallback instead of hanging).
817
869
  */
818
870
  interface LoginFlowFacade {
819
871
  /** Start (or rejoin) an attempt; rejects when it cannot start at all. */
@@ -834,9 +886,10 @@ interface CommandCodeUsageDeps<C extends CommandCodeConnectionOptions = CommandC
834
886
  */
835
887
  reports?: () => Promise<CommandCodeAccountsReport>;
836
888
  /**
837
- * Model-catalog source for the routing-rule editor (wired by the plugin
889
+ * Model-catalog source for the settings page's model editors (the
890
+ * routing-rule editor and the visible-models filter; wired by the plugin
838
891
  * entry). Absent, the `models` endpoint answers an empty list — the page's
839
- * rule editor degrades to the empty state.
892
+ * editors degrade to the empty state.
840
893
  */
841
894
  listModels?: () => Promise<CommandCodeCatalog>;
842
895
  /**
@@ -866,10 +919,11 @@ declare class CommandCodeUsageService<C extends CommandCodeConnectionOptions = C
866
919
  */
867
920
  report(): Promise<CommandCodeAccountsReport>;
868
921
  /**
869
- * The model catalog for the settings page's routing-rule editor. The
870
- * browser never calls the Command Code API directly — the Host serves the
871
- * catalog (already fetched/cached by the adapter) so rules can be picked
872
- * from the live model list instead of typed by hand.
922
+ * The full model catalog for the settings page's model editors (the
923
+ * routing-rule editor and the visible-models filter). The browser never
924
+ * calls the Command Code API directly — the Host serves the catalog
925
+ * (already fetched/cached by the adapter) so models can be picked from
926
+ * the live list instead of typed by hand.
873
927
  */
874
928
  models(): Promise<CommandCodeCatalog>;
875
929
  /**
@@ -1012,17 +1066,68 @@ declare class CommandCodeLoginFlow {
1012
1066
  declare const COMMANDCODE_SEARCH_PROVIDER_ID = "commandcode";
1013
1067
  /**
1014
1068
  * The factory-declared search provider id dsh ships by default (from
1015
- * `dsh-base`'s cordis patch `web.config.searchProvider`). A plugin that wants
1016
- * its own backend to win rewrites `WebRuntime.searchProviderId` to its own id;
1017
- * disabling that plugin restores this value.
1069
+ * `dsh-base`'s cordis patch `web.config.searchProvider`). Kept as a
1070
+ * documented reference only: disabling this plugin's `webSearch` toggle
1071
+ * restores the previously selected backend (see
1072
+ * {@link applyCommandCodeSearchSelection}) — it never forces this default,
1073
+ * because forcing it is what used to silence sibling search plugins such as
1074
+ * modsearch even with Command Code search turned off (issue #26).
1018
1075
  */
1019
1076
  declare const DEFAULT_WEB_SEARCH_PROVIDER_ID = "deepseek-official";
1020
1077
  /**
1021
1078
  * Point the web seam's search selection at this plugin's provider (`commandcode`).
1022
1079
  * Sets the runtime field; the next search call honours it because `search()`
1023
1080
  * re-reads `searchProviderId` each time. Returns the prior id (or undefined).
1081
+ * Never throws: a hardened/frozen runtime shape must not break the
1082
+ * settings-save path that calls this — the provider simply stays
1083
+ * registered-but-unselected (the boot-time `searchProvider: commandcode`
1084
+ * cordis patch is the durable alternative).
1085
+ *
1086
+ * @deprecated Prefer {@link applyCommandCodeSearchSelection}: this overload
1087
+ * always overwrites the displaced backend with the factory default on
1088
+ * disable, so turning Command Code search off silences whichever provider
1089
+ * was selected before (e.g. modsearch) instead of restoring it (issue #26).
1024
1090
  */
1025
1091
  declare function selectCommandCodeSearchProvider(web: WebRuntime, enable: boolean): string | undefined;
1092
+ /**
1093
+ * Tracked web-search selection state for one mounted `WebRuntime`.
1094
+ *
1095
+ * `owner` marks whether this plugin currently owns the selection (i.e. it
1096
+ * wrote `commandcode` and has not given it back yet). `displaced` is the
1097
+ * backend id the plugin displaced when it took over — restored when the
1098
+ * toggle turns off or the plugin unloads. `undefined` means "nothing was
1099
+ * configured, leave auto-select" and must round-trip untouched: writing the
1100
+ * factory default instead would still override a sibling plugin's own
1101
+ * constructor-time pin.
1102
+ */
1103
+ interface CommandCodeSearchSelection {
1104
+ owner: boolean;
1105
+ displaced: string | undefined;
1106
+ }
1107
+ /** Fresh selection state: the plugin starts out not owning the selection. */
1108
+ declare function commandCodeSearchSelection(): CommandCodeSearchSelection;
1109
+ /**
1110
+ * Reach one end of the `webSearch` toggle without trampling sibling search
1111
+ * providers (issue #26).
1112
+ *
1113
+ * - Enabling writes `commandcode` and remembers whatever it displaced. When
1114
+ * the plugin already owns the selection (e.g. a settings save while still
1115
+ * on), the original `displaced` value is kept — the field currently holds
1116
+ * our own id, which must never be mistaken for the user's backend.
1117
+ * - Disabling hands the selection back to the remembered backend. When the
1118
+ * state holds no memory (a fresh boot straight into `webSearch: false`),
1119
+ * the field is left alone: the runtime's current value — a sibling's
1120
+ * cordis pin such as `searchProvider: modsearch`, or unset for
1121
+ * auto-select — already says what the user wants.
1122
+ * - When the field already reads `commandcode` at first touch (e.g. a
1123
+ * surviving runtime the plugin did not set, or a manual
1124
+ * `searchProvider: commandcode` pin), `displaced` stays undefined so the
1125
+ * later disable is a no-op rather than a guess at the factory default.
1126
+ *
1127
+ * Never throws: like the low-level rewrite, a hardened runtime shape degrades
1128
+ * to registered-but-unselected.
1129
+ */
1130
+ declare function applyCommandCodeSearchSelection(web: WebRuntime, state: CommandCodeSearchSelection, enable: boolean): void;
1026
1131
  /** Per-request facts the provider needs, all injected so the class stays cordis-free and testable. */
1027
1132
  interface CommandCodeSearchProviderDeps {
1028
1133
  /** Resolve one usable Command Code key (credential seam → env → auth file), or undefined when none. */
@@ -1043,7 +1148,7 @@ declare class CommandCodeSearchProvider implements WebSearchProvider {
1043
1148
  private readonly deps;
1044
1149
  readonly id = "commandcode";
1045
1150
  constructor(deps: CommandCodeSearchProviderDeps);
1046
- /** Cheap local check; must not make network calls. Presence of a key path + a parseable base is enough. */
1151
+ /** Cheap local check; must not make network calls. Presence of a parseable base is enough. */
1047
1152
  available(): boolean;
1048
1153
  search(request: WebSearchRequest, signal?: AbortSignal): Promise<WebSearchResult>;
1049
1154
  private resolveKey;
@@ -1085,6 +1190,12 @@ interface Config {
1085
1190
  * full catalog visible). Set false to always list every model.
1086
1191
  */
1087
1192
  filterModelsByPlan?: boolean;
1193
+ /**
1194
+ * Visible-model allowlist: catalog model ids shown in pickers. Empty or
1195
+ * unset means "show everything". Persisted by the settings page's model
1196
+ * filter card; applies after the subscription-tier filter.
1197
+ */
1198
+ visibleModels?: string[];
1088
1199
  /**
1089
1200
  * Extra accounts for multi-account rotation. The top-level
1090
1201
  * `apiKey`/`apiKeyEnv` (plus the CLI auth file) always form the first
@@ -1116,12 +1227,15 @@ interface Config {
1116
1227
  /**
1117
1228
  * Whether to use Command Code as the backend for dsh's model-facing
1118
1229
  * `web_search` tool. When enabled, the plugin registers a `commandcode`
1119
- * search provider on `ctx.web` AND rewrites the web seam's selected
1120
- * `searchProviderId` to `commandcode` (so it wins over the shipped
1121
- * `deepseek-official`), using the SAME Command Code API key/base as chat.
1122
- * The rewrite rides dsh's internal `searchProviderId`, which is read per
1123
- * search call, so a setting change lands on the next search without a
1124
- * restart. Defaults to true.
1230
+ * search provider on `ctx.web` AND selects `commandcode` in the web seam
1231
+ * (so it wins over the shipped `deepseek-official` or a sibling search
1232
+ * plugin's pin), using the SAME Command Code API key/base as chat. When
1233
+ * disabled, the selection is handed back to whichever backend was there
1234
+ * before — turning it off never forces the factory default, so a sibling
1235
+ * search plugin (e.g. modsearch) keeps working (issue #26). The rewrite
1236
+ * rides dsh's internal `searchProviderId`, which is read per search call,
1237
+ * so a setting change lands on the next search without a restart.
1238
+ * Defaults to true.
1125
1239
  */
1126
1240
  webSearch?: boolean;
1127
1241
  /**
@@ -1151,5 +1265,5 @@ interface ResolvedCommandCodeOptions extends CommandCodeConnectionOptions {
1151
1265
  declare function resolveAdapterOptions(config: Config): ResolvedCommandCodeOptions;
1152
1266
  declare function apply(ctx: Context, config: Config): void;
1153
1267
  //#endregion
1154
- export { 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 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_PEAK_PRICING, KNOWN_PLANS, KNOWN_SUBSCRIPTION_PLANS, KNOWN_THINKING_MODELS, 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, USAGE_REPORT_ENDPOINT, accountUsable, apply, applyCommands, applyUsageRemote, buildCommandAuthUrl, capabilityDescription, commandDefinition, compareByPlan, dealLabel, formatContext, inject, loginStatusSchema, matchModelRule, modelVisibleInPlan, name, parseLoginStatus, peakPricingLabel, peakPricingState, planLabel, projectSlugFromPath, resolveAdapterOptions, resolveAuthFileApiKey, selectAccountForModel, selectActiveAccount, selectCommandCodeSearchProvider, studioBaseForApiBase, subscriptionPlanInfo, usageReportSchema, validateCommandApiKey };
1268
+ export { 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 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_PEAK_PRICING, KNOWN_PLANS, KNOWN_SUBSCRIPTION_PLANS, KNOWN_THINKING_MODELS, 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, USAGE_REPORT_ENDPOINT, accountUsable, apply, applyCommandCodeSearchSelection, applyCommands, applyUsageRemote, buildCommandAuthUrl, capabilityDescription, commandCodeSearchSelection, commandDefinition, compareByPlan, dealLabel, formatContext, inject, loginStatusSchema, matchModelRule, modelVisibleInPlan, name, parseLoginStatus, peakPricingLabel, peakPricingState, planLabel, projectSlugFromPath, resolveAdapterOptions, resolveAuthFileApiKey, selectAccountForModel, selectActiveAccount, selectCommandCodeSearchProvider, studioBaseForApiBase, subscriptionPlanInfo, usageReportSchema, validateCommandApiKey };
1155
1269
  //# sourceMappingURL=index.d.ts.map