@serviceme/devtools-shared 0.4.7 → 0.4.9

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/dist/index.d.ts CHANGED
@@ -40,7 +40,7 @@
40
40
  * pre-fill baseUrl / displayName / default model list without
41
41
  * requiring the user to look up endpoint docs.
42
42
  */
43
- type ProviderType = "openai-compatible" | "anthropic-compatible" | "minimax" | "deepseek" | "kimi" | "zhipu" | "stepfun" | "siliconflow" | "openrouter" | "novita" | "agnes" | "vscode-builtin";
43
+ type ProviderType = "openai-compatible" | "anthropic-compatible" | "minimax" | "deepseek" | "kimi" | "zhipu" | "stepfun" | "siliconflow" | "openrouter" | "novita" | "agnes" | "medalsoft" | "vscode-builtin";
44
44
  /**
45
45
  * Curated metadata for named, well-known models. Used as a
46
46
  * **fallback** when a `ProviderModel` entry omits one of the
@@ -87,6 +87,17 @@ interface CuratedModelMetadata {
87
87
  priceCategory: ModelPriceCategory;
88
88
  /** Thinking-dropdown schema (omit = no thinking dropdown). */
89
89
  thinkingSchema?: Exclude<ModelThinkingSchema, "none">;
90
+ /**
91
+ * Whether the endpoint additionally accepts the `reasoning_effort`
92
+ * field (Zhipu official OpenAPI: "仅 GLM-5.2 及其以上模型支持",
93
+ * fetched 2026-08-19). Distinct from {@link thinkingSchema}: the
94
+ * 3-level dropdown rides every GLM-4.5+ model (thinking switch
95
+ * on/off), while the effort field is a 5.2+ extra that older
96
+ * endpoints may reject. Consumed by the OpenAI adapter to gate the
97
+ * `reasoning_effort` wire field (mirrors `supportsReasoningEffort`
98
+ * in `docs/references/GLM-for-copilot-main/src/consts.ts`).
99
+ */
100
+ supportsReasoningEffort?: boolean;
90
101
  /**
91
102
  * Context-window token caps. Centralized here (rather than as
92
103
  * magic numbers scattered across `BUILTIN_PROVIDER_PRESETS` call
@@ -330,6 +341,12 @@ interface ProviderMutationPayload {
330
341
  enabled?: boolean;
331
342
  /** See {@link ProviderConfig.minimaxBillingType}. */
332
343
  minimaxBillingType?: "token_plan" | "pay_as_you_go";
344
+ /**
345
+ * See {@link ProviderConfig.visionMode} (2026-08-20 — surfaced in
346
+ * the ProvidersTab form). Omit to leave unchanged on update /
347
+ * default to `"native"` on add.
348
+ */
349
+ visionMode?: ProviderVisionMode;
333
350
  }
334
351
  /** Which vendor API to call for usage data. */
335
352
  type ProviderUsageKind = "minimax" | "deepseek" | "kimi" | "zhipu" | "stepfun" | "siliconflow" | "openrouter" | "novita";
@@ -527,6 +544,20 @@ declare const PROVIDER_CACHE_CONTROL_METADATA: Readonly<Record<ProviderType, Pro
527
544
  */
528
545
  declare function isProviderCacheControlAware(type: ProviderType): boolean;
529
546
 
547
+ /**
548
+ * Map of namespaced model ids (used by aggregator platforms like
549
+ * SiliconFlow and Novita) to their primary entry. **Exported** so
550
+ * downstream code (e.g. the "Pick from preset" dropdown in
551
+ * ProvidersTab) can identify which entries in `MODEL_METADATA` are
552
+ * aliases vs primary curated ids — listing aliases would
553
+ * duplicate primaries in the UI.
554
+ *
555
+ * **Read-only by design.** Don't mutate; if you need to add a new
556
+ * aggregator alias, do it here so the merged `MODEL_METADATA`
557
+ * auto-tracks the primary.
558
+ */
559
+ declare const NAMESPACE_ALIASES: Readonly<Record<string, string>>;
560
+ declare const NAMESPACE_ALIAS_FAMILY: Readonly<Record<string, string>>;
530
561
  declare const MODEL_METADATA: Readonly<Record<string, CuratedModelMetadata>>;
531
562
  /**
532
563
  * Look up curated metadata for a model by its un-qualified id
@@ -541,19 +572,249 @@ declare function lookupModelMetadata(modelId: string): CuratedModelMetadata | un
541
572
  * Resolve the currency for a baseUrl. Strict hostname match —
542
573
  * `api.minimaxi.com` and `api.minimaxi.cn` map to CNY (the China
543
574
  * platform), `api.minimax.io` maps to USD (the global platform),
544
- * `api.deepseek.com` maps to CNY (DeepSeek's regional pricing is
545
- * published in CNY on the public docs even though the API is
546
- * global), everything else falls back to USD. The match is
547
- * exact-host so a typo in the hostname never silently flips
548
- * currency.
575
+ * everything else falls back to USD (the global default). The
576
+ * match is exact-host so a typo in the hostname never silently
577
+ * flips currency.
578
+ *
579
+ * `api.deepseek.com` maps to CNY (2026-08-20 product decision —
580
+ * user request). History: the 8/18 draft put it in CNY by mistake
581
+ * (per the $ block on the English pricing page), 8/19 moved it to
582
+ * the USD catch-all, and 8/20 moved it BACK to CNY deliberately —
583
+ * our user base bills in ¥ on this endpoint (the official zh-cn
584
+ * page publishes the ¥ table for it), and the picker should show
585
+ * the price those users actually pay. The DeepSeek entries pin the
586
+ * PEAK tier (conservative worst-case; off-peak is exactly half).
549
587
  */
550
588
  declare function currencyForBaseUrl(baseUrl: string): "USD" | "CNY";
551
589
 
552
- declare const BUILTIN_PROVIDER_PRESETS: Readonly<Record<"minimax" | "deepseek" | "kimi" | "zhipu" | "stepfun" | "siliconflow" | "openrouter" | "novita" | "agnes", {
590
+ /**
591
+ * Default configuration snippets shipped with named vendor types.
592
+ *
593
+ * When the user picks `minimax` / `deepseek` / `agnes` in the
594
+ * ProvidersTab, the form pre-fills `displayName` + `baseUrl` + a
595
+ * starter `models` list from this table. The user still has to
596
+ * paste their own `apiKey` (always empty by default — secrets
597
+ * never ship with the extension).
598
+ *
599
+ * Keep `baseUrl` here in sync with the upstream vendor docs.
600
+ *
601
+ * Adapter routing (see `apps/extension/src/services/providers/adapters/index.ts`):
602
+ * - minimax: Anthropic-compatible at `https://api.minimaxi.com/anthropic`
603
+ * → routed to AnthropicAdapter
604
+ * - deepseek: OpenAI-compatible at `https://api.deepseek.com/v1`
605
+ * → routed to OpenAIAdapter (the /anthropic surface v3 exposed
606
+ * is no longer documented for v4)
607
+ * - agnes: OpenAI-compatible at `https://apihub.agnes-ai.com/v1`
608
+ * → routed to OpenAIAdapter
609
+ * - medalsoft: OpenAI-compatible internal gateway at
610
+ * `https://llm.proxy.alio.wang/v1` → routed to OpenAIAdapter
611
+ * (empty starter model list — populate via "Fetch from API")
612
+ *
613
+ * Earlier iterations of the minimax default 401'd on the team; do
614
+ * NOT swap minimax back to one of these without checking with the
615
+ * user first:
616
+ * - `https://agent.minimaxi.com/mavis/api/v1/llm/v1` (opencode.json
617
+ * proxy URL — AnthropicAdapter would double-prefix /v1 to it)
618
+ * - `https://agent.minimaxi.com/v1` (OpenAI-compat
619
+ * variant — user tried this in commit 8bd867c then asked to
620
+ * revert in 71faf6e-era because it 401'd as well)
621
+ */
622
+ /**
623
+ * Build a `ProviderModel` preset entry by joining the static
624
+ * context-window numbers (token caps are user-visible and depend
625
+ * on the wire-protocol spec, not the curated metadata) with the
626
+ * curated metadata in `MODEL_METADATA` (detail / capabilities /
627
+ * pricing / thinking). The user can override any field in the
628
+ * ProvidersTab form; the curated values are just the starter
629
+ * defaults so the picker shows the cost column + thinking
630
+ * dropdown out of the box for the named vendors.
631
+ *
632
+ * Pricing block is selected to match `baseUrl`'s currency (via
633
+ * `currencyForBaseUrl`): CNY for `open.bigmodel.cn` /
634
+ * `api.moonshot.cn` / etc., USD for `api.z.ai` / `openrouter.ai` /
635
+ * etc. Falls back to USD for unrecognised hosts. The caller is
636
+ * expected to pass a real `baseUrl` — when adding a brand-new
637
+ * provider the host is already known (came from the
638
+ * `PROVIDER_BASE_URL_PRESETS` dropdown or user-typed); the empty
639
+ * `""` default picks USD as a safe fallback.
640
+ */
641
+ declare function buildPresetModel(id: string, displayName: string, baseUrl?: string): ProviderModel;
642
+ /**
643
+ * Union a model row returned by the "Fetch from API" flow with its
644
+ * curated preset metadata, when the id matches an entry in
645
+ * `MODEL_METADATA`. The API typically returns just `id` (sometimes
646
+ * `displayName`); the user expects the picker's `detail` / `pricing`
647
+ * / `capabilities` / `maxInputTokens` columns to be filled in for
648
+ * any model we curate, not blank.
649
+ *
650
+ * Precedence (TDD-pinned 2026-08-19, see
651
+ * `test/unionProviderModelWithPreset.test.mjs`):
652
+ *
653
+ * • **Preset wins** for the curated fields: `detail`,
654
+ * `capabilities`, `pricing`, `priceCategory`, `thinkingSchema`,
655
+ * `maxInputTokens`, `maxOutputTokens`. These are the values we
656
+ * maintain by hand and trust more than what the API publishes,
657
+ * which is often missing or stale (e.g. the OpenAI `/v1/models`
658
+ * endpoint does not return pricing or token caps; DeepSeek's
659
+ * `GET /models` likewise returns id + owned_by only).
660
+ * • **Fetched wins** for `id` (the API is the source of truth for
661
+ * what the endpoint actually exposes — a stale preset could list
662
+ * a model the user no longer has access to).
663
+ * • **`displayName`** — the 2026-08-19 follow-up: fetched wins
664
+ * when set, the preset's curated `displayName` (from
665
+ * `BUILTIN_PROVIDER_PRESETS`, see
666
+ * `getPresetModelDisplayName`) fills in when fetched omits it
667
+ * or sends an empty string. Without this fallback, the picker
668
+ * would render the bare id (`deepseek-v4-flash`) as the model
669
+ * name right after the fetch result lands — the user picked
670
+ * "Fetch from API" because they wanted the live catalog, but
671
+ * the friendly label they would have seen if they'd picked
672
+ * the vendor from the named-vendor `<select>` should also
673
+ * surface here. Empty string is treated the same as missing
674
+ * (a blank label in the picker is strictly worse than the
675
+ * curated friendly name).
676
+ * • **No preset match** → returns the fetched model unchanged
677
+ * (custom / aggregator-only models stay bare; the user fills
678
+ * in detail / pricing by hand).
679
+ *
680
+ * `baseUrl` is consulted to pick the right currency for `pricing`
681
+ * (CNY for `open.bigmodel.cn` / `api.moonshot.cn` / etc., USD
682
+ * otherwise — see `currencyForBaseUrl`). Pass the form's current
683
+ * `editing.baseUrl`; that is the same baseUrl the row was just
684
+ * fetched from, so the resolved currency matches what the user
685
+ * will see in the picker. Empty / unset baseUrl → USD fallback.
686
+ *
687
+ * Namespaced ids (e.g. `deepseek-ai/DeepSeek-V4-Pro` on
688
+ * SiliconFlow) resolve transparently — `MODEL_METADATA` aliases
689
+ * the primary entry's metadata reference under every namespace key,
690
+ * so `lookupModelMetadata("deepseek-ai/DeepSeek-V4-Pro")` returns
691
+ * the same object as `lookupModelMetadata("deepseek-v4-pro")`.
692
+ */
693
+ declare function unionProviderModelWithPreset(fetched: ProviderModel, baseUrl: string): ProviderModel;
694
+ /**
695
+ * One entry in the "Pick from preset" dropdown shown next to the
696
+ * "+ Add model" button in ProvidersTab.
697
+ */
698
+ interface PresetModelListing {
699
+ /** Canonical (primary, non-alias) model id; safe to feed to {@link buildPresetModel}. */
700
+ id: string;
701
+ /** Short human label; the dropdown option text. */
702
+ displayName: string;
703
+ /** Vendor family bucket — drives the `<optgroup>` grouping. */
704
+ vendorFamily: string;
705
+ }
706
+ /**
707
+ * The list of vendor family groups shown in the preset dropdown.
708
+ * Order is intentional (most common presets first):
709
+ * 1. GLM (Zhipu / 智谱) — the user explicitly asked us to
710
+ * support 4-channel endpoints; GLM has the richest preset
711
+ * list (15+ models) so it gets the top slot.
712
+ * 2. DeepSeek / Kimi / StepFun / MiniMax — the other named
713
+ * vendors with curated presets.
714
+ * 3. Agnes / Qwen — the smaller curated lists.
715
+ * 4. Aggregators (SiliconFlow / Novita / OpenRouter) — listed
716
+ * last because users on aggregators usually type the namespaced
717
+ * id by hand rather than reach for a curated dropdown.
718
+ */
719
+ declare const PRESET_MODEL_FAMILIES: readonly string[];
720
+ /**
721
+ * The "Pick from preset" dropdown options — every curated primary
722
+ * entry in `MODEL_METADATA` PLUS every alias tagged with an
723
+ * aggregator family in `NAMESPACE_ALIAS_FAMILY`. Grouped by
724
+ * vendor family. Sorted alphabetically within each family so the
725
+ * dropdown order is stable across runs.
726
+ *
727
+ * Two alias flavours exist in `NAMESPACE_ALIASES`:
728
+ * - **Aggregator aliases** (SiliconFlow `deepseek-ai/…`,
729
+ * Novita `zai/…` / `deepseek/…`, etc.) — KEPT in the list so
730
+ * the dropdown surfaces the namespaced ids aggregator users
731
+ * actually need to type. They are routed to the matching
732
+ * aggregator <optgroup> via `NAMESPACE_ALIAS_FAMILY`.
733
+ * - **Historical / naming aliases** (e.g. the Zhipu
734
+ * `glm-4-flashx-250414` rebrand of `glm-4-flashx`) — DROPPED
735
+ * because they're duplicates of an existing primary entry
736
+ * that already appears in the dropdown. Users with the
737
+ * historical id already in their settings.json keep
738
+ * working at the chat-registration layer
739
+ * (see `MODEL_METADATA`'s alias merge) — the dropdown just
740
+ * doesn't surface a redundant second option.
741
+ *
742
+ * The filter rule is the inverse of the aggregator tag presence:
743
+ * any alias with a `NAMESPACE_ALIAS_FAMILY` entry is kept, every
744
+ * other alias is filtered. The pinning test
745
+ * `test/listPresetModelGroups.test.mjs` asserts this 1:1 mapping
746
+ * between the two structures.
747
+ *
748
+ * Used by `ProvidersTab.tsx` to render the `<select>` next to the
749
+ * "+ Add model" button. Selecting an option calls
750
+ * `buildPresetModel(id, displayName, baseUrl)` and appends the
751
+ * resulting `ProviderModel` to the editing list. The `displayName`
752
+ * mirrors the model id verbatim (the canonical form is what users
753
+ * see in /v1/models, what VSCode's chat picker surfaces, and what
754
+ * the existing `BUILTIN_PROVIDER_PRESETS` pre-fills); the user can
755
+ * still rename the field after picking — this is just a starter
756
+ * label.
757
+ */
758
+ declare const LISTABLE_PRESET_MODELS: readonly PresetModelListing[];
759
+ /**
760
+ * Group {@link LISTABLE_PRESET_MODELS} by `vendorFamily`, preserving
761
+ * the order declared in {@link PRESET_MODEL_FAMILIES} (most-common
762
+ * first). Empty families are dropped so the dropdown only shows
763
+ * groups that actually have entries.
764
+ *
765
+ * Returns: array of `{ family, entries }` — the shape a UI
766
+ * `<select>` renderer expects when building `<optgroup>`s.
767
+ */
768
+ interface PresetModelFamilyGroup {
769
+ family: string;
770
+ entries: readonly PresetModelListing[];
771
+ }
772
+ declare function listPresetModelGroups(): readonly PresetModelFamilyGroup[];
773
+ declare const BUILTIN_PROVIDER_PRESETS: Readonly<Record<"minimax" | "deepseek" | "kimi" | "zhipu" | "stepfun" | "siliconflow" | "openrouter" | "novita" | "agnes" | "medalsoft", {
553
774
  displayName: string;
554
775
  baseUrl: string;
555
776
  models: ProviderModel[];
556
777
  }>>;
778
+ /**
779
+ * Look up the curated friendly displayName for a model id. Two
780
+ * sources, in priority order:
781
+ *
782
+ * 1. **Explicit map** (`PRESET_MODEL_DISPLAY_NAMES`, derived from
783
+ * `BUILTIN_PROVIDER_PRESETS` at module load). Curated by hand;
784
+ * wins when present so a curated prettier name
785
+ * (e.g. "DeepSeek V4 Flash" for `deepseek-v4-flash`) is
786
+ * always preferred over whatever the detail's prefix would
787
+ * produce.
788
+ * 2. **`MODEL_METADATA.detail` fallback** (2026-08-19 follow-up).
789
+ * For ids that are in `MODEL_METADATA` (have curated pricing
790
+ * / capabilities) but NOT in any vendor preset — e.g.
791
+ * `glm-4.7-flash`, `glm-4.5v`, `glm-5v-turbo`, `glm-4.6v` —
792
+ * derive the display name from the `detail` field by
793
+ * splitting on the first ` — ` and keeping the left half.
794
+ * This restores friendly labels for models the v1 lookup
795
+ * missed (the user-reported case: `glm-4.7-flash` came
796
+ * back from "Fetch from API" without a display name
797
+ * because it was excluded from the Zhipu preset on
798
+ * 2026-08-18, but its detail field already said
799
+ * "GLM-4.7 Flash — 完全免费(200K 上下文)").
800
+ *
801
+ * Returns `undefined` for:
802
+ * • ids that aren't in `BUILTIN_PROVIDER_PRESETS` AND aren't in
803
+ * `MODEL_METADATA` (genuinely custom / aggregator-only
804
+ * models the user added by hand — the consumer falls back
805
+ * to the literal fetched id)
806
+ * • ids in `MODEL_METADATA` whose `detail` is empty /
807
+ * whitespace, or whose detail has no ` — ` boundary and the
808
+ * whole string is the qualifier (defensive — every entry
809
+ * today has a usable detail).
810
+ *
811
+ * Used by `unionProviderModelWithPreset` to fill in the
812
+ * `displayName` field when the API payload omits it — the
813
+ * picker's model name column then renders "DeepSeek V4 Flash"
814
+ * or "GLM-4.7 Flash" instead of the bare id right after the
815
+ * fetch result lands.
816
+ */
817
+ declare function getPresetModelDisplayName(id: string): string | undefined;
557
818
  /**
558
819
  * Look up the default config (displayName / baseUrl / models) for a
559
820
  * named vendor type. Returns `null` for the `-compatible` family —
@@ -1107,6 +1368,8 @@ declare enum WebviewMessageType {
1107
1368
  SetProviderOrder = "setProviderOrder",
1108
1369
  TestProvider = "testProvider",
1109
1370
  ProviderTestResultMessage = "providerTestResult",
1371
+ TestProviderModel = "testProviderModel",
1372
+ ProviderTestModelResultMessage = "providerTestModelResult",
1110
1373
  DefaultProviderChanged = "defaultProviderChanged",
1111
1374
  FetchProviderModels = "fetchProviderModels",
1112
1375
  FetchProviderModelsResult = "fetchProviderModelsResult",
@@ -1481,4 +1744,4 @@ declare function asAbortSignal(input: unknown): AbortSignal | undefined;
1481
1744
  */
1482
1745
  declare function safeJson<T>(text: string, fallback: T): T;
1483
1746
 
1484
- export { type AIModelConfig, type AIModelInfo, type AgentPermissionSummary, type AgentToolPermission, type AgentToolRiskLevel, BUILTIN_PROVIDER_PRESETS, type BalanceEntry, type BridgeLinkMode, type BridgeLinkedSkill, type BridgeRepoEntry, type BridgeRepoSyncPull, type BridgeSkillKind, type BridgeSkillRepoEntry, type BridgeSkillRepoFile, type ByomProviderToggles, ByomSettingsResponse, type ByomSettingsSnapshot, type ByomTogglePayload, CERTIFICATE_BUNDLE_FORMATS, CachedServerUrlResponse, type CachedServerUrlSnapshot, type CertificateBundleEnvironmentSupport, type CertificateBundleFormat, type CertificateBundleFormatDescriptor, type CodingPlanUsage, type CommandPayload, type CuratedModelMetadata, type DeepseekBalanceEntry, type DeepseekUsage, type DownloadCertificateBundleRequest, type DownloadCertificateBundleResponse, GIT_REMOTE_HOST_ALIASES, type GenericBalanceUsage, GetByomSettings, GetCachedServerUrl, GetServerProxyState, GetUtilityModels, type GitHubOrgMembershipCheckResult, type GitHubOrgMembershipStatus, type GitHubUser, type GithubCopilotCliPayload, type HttpRequestPayload, type ILogger, type LinkedSkillPayloadEntry, LogLevel, MODEL_METADATA, type MinimaxUsage, type ModelDetail, type ModelPriceCategory, type ModelPricing, type ModelThinkingSchema, PROVIDER_BASE_URL_PRESETS, PROVIDER_CACHE_CONTROL_METADATA, type ProviderBaseUrlPreset, type ProviderCacheControlMetadata, type ProviderConfig, type ProviderModel, type ProviderMutationPayload, type ProviderTestResult, type ProviderType, type ProviderUsageData, type ProviderUsageKind, type ProviderUsageResult, type ProviderVisionMode, type ProviderWireProtocol, type ProvidersResponsePayload, type PublicProvider, type ScheduledTask, type ScheduledTaskType, type ScheduledTaskV1, type ScheduledTasksConfig, type ScheduledTasksLogFile, type ServerProxyAllowOverridePayload, type ServerProxySnapshot, ServerProxyStateResponse, type ServerProxySupportMode, type ServerProxyTogglePayload, SetCacheControlEnabled, SetServerProxyAllowOverride, SetServerProxyEnabled, type ShellPayload, type TaskExecutionLog, type TaskExecutionState, type TaskExecutionStatus, type TaskPayload, type TaskRunStatus, type TaskWorkspaceRef, UpdateUtilityModels, type UpdateUtilityModelsPayload, type UsageWindow, type UtilityModelScope, type UtilityModelsEffective, UtilityModelsResponse, type UtilityModelsSnapshot, type UtilityModelsSource, type WebviewInboundMessage, WebviewMessageType, __internal, asAbortSignal, buildGitHubLocalEmail, checkGitHubOrgMembership, createConsoleLogger, currencyForBaseUrl, effectiveAdapterType, fetchGitHubUser, getBuiltinProviderPreset, getGitHubOrgMembership, getProviderBaseUrlPresets, isGitHubLocalEmail, isProviderCacheControlAware, isValidCanonicalSlug, lookupModelMetadata, normalizeCanonicalSlug, normalizeErrorForLog, normalizeGitUrl, parsePayload, protocolForBaseUrl, resolvePrimaryEmail, safeJson };
1747
+ export { type AIModelConfig, type AIModelInfo, type AgentPermissionSummary, type AgentToolPermission, type AgentToolRiskLevel, BUILTIN_PROVIDER_PRESETS, type BalanceEntry, type BridgeLinkMode, type BridgeLinkedSkill, type BridgeRepoEntry, type BridgeRepoSyncPull, type BridgeSkillKind, type BridgeSkillRepoEntry, type BridgeSkillRepoFile, type ByomProviderToggles, ByomSettingsResponse, type ByomSettingsSnapshot, type ByomTogglePayload, CERTIFICATE_BUNDLE_FORMATS, CachedServerUrlResponse, type CachedServerUrlSnapshot, type CertificateBundleEnvironmentSupport, type CertificateBundleFormat, type CertificateBundleFormatDescriptor, type CodingPlanUsage, type CommandPayload, type CuratedModelMetadata, type DeepseekBalanceEntry, type DeepseekUsage, type DownloadCertificateBundleRequest, type DownloadCertificateBundleResponse, GIT_REMOTE_HOST_ALIASES, type GenericBalanceUsage, GetByomSettings, GetCachedServerUrl, GetServerProxyState, GetUtilityModels, type GitHubOrgMembershipCheckResult, type GitHubOrgMembershipStatus, type GitHubUser, type GithubCopilotCliPayload, type HttpRequestPayload, type ILogger, LISTABLE_PRESET_MODELS, type LinkedSkillPayloadEntry, LogLevel, MODEL_METADATA, type MinimaxUsage, type ModelDetail, type ModelPriceCategory, type ModelPricing, type ModelThinkingSchema, NAMESPACE_ALIASES, NAMESPACE_ALIAS_FAMILY, PRESET_MODEL_FAMILIES, PROVIDER_BASE_URL_PRESETS, PROVIDER_CACHE_CONTROL_METADATA, type PresetModelFamilyGroup, type PresetModelListing, type ProviderBaseUrlPreset, type ProviderCacheControlMetadata, type ProviderConfig, type ProviderModel, type ProviderMutationPayload, type ProviderTestResult, type ProviderType, type ProviderUsageData, type ProviderUsageKind, type ProviderUsageResult, type ProviderVisionMode, type ProviderWireProtocol, type ProvidersResponsePayload, type PublicProvider, type ScheduledTask, type ScheduledTaskType, type ScheduledTaskV1, type ScheduledTasksConfig, type ScheduledTasksLogFile, type ServerProxyAllowOverridePayload, type ServerProxySnapshot, ServerProxyStateResponse, type ServerProxySupportMode, type ServerProxyTogglePayload, SetCacheControlEnabled, SetServerProxyAllowOverride, SetServerProxyEnabled, type ShellPayload, type TaskExecutionLog, type TaskExecutionState, type TaskExecutionStatus, type TaskPayload, type TaskRunStatus, type TaskWorkspaceRef, UpdateUtilityModels, type UpdateUtilityModelsPayload, type UsageWindow, type UtilityModelScope, type UtilityModelsEffective, UtilityModelsResponse, type UtilityModelsSnapshot, type UtilityModelsSource, type WebviewInboundMessage, WebviewMessageType, __internal, asAbortSignal, buildGitHubLocalEmail, buildPresetModel, checkGitHubOrgMembership, createConsoleLogger, currencyForBaseUrl, effectiveAdapterType, fetchGitHubUser, getBuiltinProviderPreset, getGitHubOrgMembership, getPresetModelDisplayName, getProviderBaseUrlPresets, isGitHubLocalEmail, isProviderCacheControlAware, isValidCanonicalSlug, listPresetModelGroups, lookupModelMetadata, normalizeCanonicalSlug, normalizeErrorForLog, normalizeGitUrl, parsePayload, protocolForBaseUrl, resolvePrimaryEmail, safeJson, unionProviderModelWithPreset };