@linxiraos/pi-catalog 1.1.23 → 1.1.25

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.
Files changed (95) hide show
  1. package/CHANGELOG.md +7 -1
  2. package/THIRD-PARTY-NOTICES.txt +3 -3
  3. package/dist/types/compat/anthropic.d.ts +6 -0
  4. package/dist/types/compat/auth-ids.d.ts +2 -2
  5. package/dist/types/compat/axes.d.ts +3 -1
  6. package/dist/types/compat/factory-droid.d.ts +65 -0
  7. package/dist/types/compat/provider-ids.d.ts +1 -1
  8. package/dist/types/compat/resolve.d.ts +9 -3
  9. package/dist/types/compat/types.d.ts +26 -1
  10. package/dist/types/discovery/cursor-proto.d.ts +285 -1
  11. package/dist/types/discovery/cursor.d.ts +12 -6
  12. package/dist/types/discovery/factory-droid.d.ts +28 -0
  13. package/dist/types/discovery/index.d.ts +1 -0
  14. package/dist/types/discovery/protobuf.d.ts +3 -3
  15. package/dist/types/hosts.d.ts +13 -0
  16. package/dist/types/model-cache.d.ts +25 -0
  17. package/dist/types/model-manager.d.ts +10 -0
  18. package/dist/types/models.d.ts +5 -1
  19. package/dist/types/provider-models/cache-provider-id.d.ts +2 -1
  20. package/dist/types/provider-models/descriptor-types.d.ts +2 -1
  21. package/dist/types/provider-models/openai-compat.d.ts +23 -8
  22. package/dist/types/provider-models/special.d.ts +2 -0
  23. package/dist/types/types.d.ts +132 -7
  24. package/dist/types/wire/codex.d.ts +6 -4
  25. package/dist/types/wire/cursor.d.ts +20 -0
  26. package/dist/types/wire/factory-droid.d.ts +45 -0
  27. package/package.json +4 -4
  28. package/src/build.ts +21 -0
  29. package/src/compat/anthropic.d.ts +6 -0
  30. package/src/compat/anthropic.ts +11 -1
  31. package/src/compat/auth-ids.ts +4 -0
  32. package/src/compat/axes.d.ts +3 -1
  33. package/src/compat/axes.ts +115 -2
  34. package/src/compat/cascade.ts +8 -1
  35. package/src/compat/collapse.ts +3 -0
  36. package/src/compat/factory-droid.d.ts +65 -0
  37. package/src/compat/factory-droid.ts +170 -0
  38. package/src/compat/provider-ids.d.ts +1 -1
  39. package/src/compat/provider-ids.ts +2 -0
  40. package/src/compat/resolve.d.ts +9 -3
  41. package/src/compat/resolve.ts +61 -9
  42. package/src/compat/rules/README.md +18 -8
  43. package/src/compat/rules/auth/_order.kdl +2 -2
  44. package/src/compat/rules/auth/factory-droid.kdl +28 -0
  45. package/src/compat/rules/auth/helmcode.kdl +9 -0
  46. package/src/compat/rules/classes/anthropic.kdl +225 -90
  47. package/src/compat/rules/providers/commandcode.kdl +21 -5
  48. package/src/compat/rules/providers/cursor.kdl +29 -17
  49. package/src/compat/rules/providers/factory-droid.kdl +1166 -0
  50. package/src/compat/rules/providers/fireworks.kdl +1 -1
  51. package/src/compat/rules/providers/helmcode.kdl +120 -0
  52. package/src/compat/rules/providers/openai-codex.kdl +17 -0
  53. package/src/compat/rules/runtime/behavior.kdl +78 -7
  54. package/src/compat/rules/taxonomy/_collapse.kdl +36 -14
  55. package/src/compat/rules.json +1 -1
  56. package/src/compat/types.d.ts +26 -1
  57. package/src/compat/types.ts +27 -1
  58. package/src/discovery/codex.ts +16 -0
  59. package/src/discovery/cursor-models.proto +261 -0
  60. package/src/discovery/cursor-proto.d.ts +285 -1
  61. package/src/discovery/cursor-proto.ts +472 -1
  62. package/src/discovery/cursor.d.ts +12 -6
  63. package/src/discovery/cursor.ts +817 -88
  64. package/src/discovery/devin.ts +3 -5
  65. package/src/discovery/factory-droid.d.ts +28 -0
  66. package/src/discovery/factory-droid.ts +296 -0
  67. package/src/discovery/index.ts +1 -0
  68. package/src/discovery/protobuf.d.ts +3 -3
  69. package/src/discovery/protobuf.ts +16 -7
  70. package/src/hosts.d.ts +13 -0
  71. package/src/hosts.ts +47 -0
  72. package/src/model-cache.d.ts +25 -0
  73. package/src/model-cache.ts +228 -40
  74. package/src/model-manager.d.ts +10 -0
  75. package/src/model-manager.ts +13 -0
  76. package/src/models.d.ts +5 -1
  77. package/src/models.json +1 -1
  78. package/src/models.ts +13 -0
  79. package/src/provider-models/cache-provider-id.d.ts +2 -1
  80. package/src/provider-models/cache-provider-id.ts +40 -9
  81. package/src/provider-models/descriptor-types.d.ts +2 -1
  82. package/src/provider-models/descriptor-types.ts +2 -1
  83. package/src/provider-models/descriptors.ts +4 -0
  84. package/src/provider-models/openai-compat.d.ts +23 -8
  85. package/src/provider-models/openai-compat.ts +130 -86
  86. package/src/provider-models/special.d.ts +2 -0
  87. package/src/provider-models/special.ts +26 -2
  88. package/src/types.d.ts +132 -7
  89. package/src/types.ts +146 -5
  90. package/src/wire/codex.d.ts +6 -4
  91. package/src/wire/codex.ts +6 -4
  92. package/src/wire/cursor.d.ts +20 -0
  93. package/src/wire/cursor.ts +32 -0
  94. package/src/wire/factory-droid.d.ts +45 -0
  95. package/src/wire/factory-droid.ts +130 -0
package/CHANGELOG.md CHANGED
@@ -2,7 +2,13 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
- ## [1.1.23] - 2026-10-01
5
+ ## [1.1.25] - 2026-10-03
6
+
7
+ - 版本线推进至 1.1.25;本版无独立用户可见变化。
8
+
9
+ ## [1.1.24] - 2026-10-03
10
+
11
+ - xai-oauth 模型目录对账(移除 v18.4.11 regen 未入种条目);bundled==seeded 一致性测试加固。
6
12
 
7
13
  ## [1.1.22] - 2026-09-30
8
14
 
@@ -1,7 +1,7 @@
1
- OMP THIRD-PARTY NOTICES
1
+ ZETA THIRD-PARTY NOTICES
2
2
  =======================
3
3
 
4
- This generated, self-contained aggregate accompanies OMP release artifacts.
4
+ This generated, self-contained aggregate accompanies Zeta release artifacts.
5
5
  It does not replace package-level license files. First-party licensing grants
6
6
  no rights in third-party code, fonts, data, or marks identified below.
7
7
 
@@ -1046,7 +1046,7 @@ These packages participate only in generation/web build tooling and are not ship
1046
1046
 
1047
1047
  SCOPED NON-PERMISSIVE PACKAGES
1048
1048
  ------------------------------
1049
- The exact @img/sharp-libvips-* 1.2.4 all-target family is LGPL-3.0-or-later. It is not distributed in OMP npm bundles or standalone assets: @huggingface/transformers is always external, installed into a user-side versioned runtime on demand, and sharp is stubbed for speech/text. The dynamically loaded native library remains replaceable. Corresponding source is available from https://github.com/lovell/sharp-libvips.git and upstream libvips sources.
1049
+ The exact @img/sharp-libvips-* 1.2.4 all-target family is LGPL-3.0-or-later. It is not distributed in Zeta npm bundles or standalone assets: @huggingface/transformers is always external, installed into a user-side versioned runtime on demand, and sharp is stubbed for speech/text. The dynamically loaded native library remains replaceable. Corresponding source is available from https://github.com/lovell/sharp-libvips.git and upstream libvips sources.
1050
1050
 
1051
1051
  lightningcss 1.32.0 and its exact target leaves are MPL-2.0 build-only dependencies. MPL is not globally allowed and these packages are absent from runtime artifacts.
1052
1052
 
@@ -6,6 +6,12 @@
6
6
  * prefix check would accept lookalikes like `https://api.anthropic.com.evil.com`.
7
7
  */
8
8
  export declare function isOfficialAnthropicApiUrl(baseUrl?: string): boolean;
9
+ /**
10
+ * Amazon Bedrock's Anthropic Messages API: the `/anthropic` path on the
11
+ * bedrock-runtime or bedrock-mantle endpoint. It rejects the tool `strict`
12
+ * field and enforces Anthropic signatures on replay.
13
+ */
14
+ export declare function isBedrockAnthropicRoute(baseUrl?: string): boolean;
9
15
  /**
10
16
  * Azure AI Inference / Foundry Anthropic route
11
17
  * (`<resource>.inference.ai.azure.com`, `<resource>.services.ai.azure.com`).
@@ -1,4 +1,4 @@
1
1
  /** Every provider with an `auth/<id>.kdl` policy. */
2
- export type AuthProviderId = "abliteration" | "aiand" | "aimlapi" | "alibaba-coding-plan" | "alibaba-token-plan" | "amazon-bedrock" | "anthropic" | "apple" | "azure" | "baseten" | "bedrock-mantle" | "cerebras" | "charm-hyper" | "cline-pass" | "cloudflare-ai-gateway" | "commandcode" | "coreweave" | "cursor" | "deepinfra" | "deepseek" | "devin" | "exa" | "firepass" | "fireworks" | "github-copilot" | "gitlab-duo" | "gitlab-duo-agent" | "gmi-cloud" | "google" | "google-antigravity" | "google-gemini-cli" | "google-vertex" | "groq" | "huggingface" | "kagi" | "kilo" | "kimi-code" | "litellm" | "llama.cpp" | "lm-studio" | "local" | "meta" | "minimax" | "minimax-code" | "minimax-code-cn" | "mistral" | "moonshot" | "muse-code" | "nanogpt" | "novita" | "nvidia" | "ollama" | "ollama-cloud" | "openai" | "openai-codex" | "openai-codex-device" | "opencode-go" | "opencode-zen" | "openrouter" | "parallel" | "perplexity" | "qianfan" | "qwen-portal" | "sakana" | "siliconflow" | "siliconflow-cn" | "singularityapi-dev" | "singularityapi-tech" | "stencil" | "stepfun" | "synthetic" | "tavily" | "together" | "typesafe" | "umans" | "venice" | "vercel-ai-gateway" | "vllm" | "wafer-serverless" | "web" | "xai" | "xai-oauth" | "xiaomi" | "xiaomi-token-plan-ams" | "xiaomi-token-plan-cn" | "xiaomi-token-plan-sgp" | "yolo-auto" | "zai" | "zai-coding-plan" | "zenmux" | "zhipu-coding-plan";
2
+ export type AuthProviderId = "abliteration" | "aiand" | "aimlapi" | "alibaba-coding-plan" | "alibaba-token-plan" | "amazon-bedrock" | "anthropic" | "apple" | "azure" | "baseten" | "bedrock-mantle" | "cerebras" | "charm-hyper" | "cline-pass" | "cloudflare-ai-gateway" | "commandcode" | "coreweave" | "cursor" | "deepinfra" | "deepseek" | "devin" | "exa" | "factory-droid" | "firepass" | "fireworks" | "github-copilot" | "gitlab-duo" | "gitlab-duo-agent" | "gmi-cloud" | "google" | "google-antigravity" | "google-gemini-cli" | "google-vertex" | "groq" | "helmcode" | "huggingface" | "kagi" | "kilo" | "kimi-code" | "litellm" | "llama.cpp" | "lm-studio" | "local" | "meta" | "minimax" | "minimax-code" | "minimax-code-cn" | "mistral" | "moonshot" | "muse-code" | "nanogpt" | "novita" | "nvidia" | "ollama" | "ollama-cloud" | "openai" | "openai-codex" | "openai-codex-device" | "opencode-go" | "opencode-zen" | "openrouter" | "parallel" | "perplexity" | "qianfan" | "qwen-portal" | "sakana" | "siliconflow" | "siliconflow-cn" | "singularityapi-dev" | "singularityapi-tech" | "stencil" | "stepfun" | "synthetic" | "tavily" | "together" | "typesafe" | "umans" | "venice" | "vercel-ai-gateway" | "vllm" | "wafer-serverless" | "web" | "xai" | "xai-oauth" | "xiaomi" | "xiaomi-token-plan-ams" | "xiaomi-token-plan-cn" | "xiaomi-token-plan-sgp" | "yolo-auto" | "zai" | "zai-coding-plan" | "zenmux" | "zhipu-coding-plan";
3
3
  /** Providers whose policy declares a `login` flow (the `/login` roster). */
4
- export type LoginProviderId = "abliteration" | "aiand" | "alibaba-coding-plan" | "alibaba-token-plan" | "anthropic" | "baseten" | "cerebras" | "charm-hyper" | "cline-pass" | "cloudflare-ai-gateway" | "commandcode" | "coreweave" | "cursor" | "deepinfra" | "deepseek" | "devin" | "exa" | "firepass" | "fireworks" | "github-copilot" | "gitlab-duo" | "gitlab-duo-agent" | "gmi-cloud" | "google-antigravity" | "google-gemini-cli" | "huggingface" | "kagi" | "kilo" | "kimi-code" | "litellm" | "llama.cpp" | "lm-studio" | "meta" | "minimax-code" | "minimax-code-cn" | "moonshot" | "muse-code" | "nanogpt" | "novita" | "nvidia" | "ollama" | "ollama-cloud" | "openai-codex" | "openai-codex-device" | "opencode-go" | "opencode-zen" | "openrouter" | "parallel" | "perplexity" | "qianfan" | "qwen-portal" | "sakana" | "siliconflow" | "siliconflow-cn" | "singularityapi-dev" | "singularityapi-tech" | "stencil" | "stepfun" | "synthetic" | "tavily" | "together" | "typesafe" | "umans" | "venice" | "vercel-ai-gateway" | "vllm" | "wafer-serverless" | "xai" | "xai-oauth" | "xiaomi" | "xiaomi-token-plan-ams" | "xiaomi-token-plan-cn" | "xiaomi-token-plan-sgp" | "yolo-auto" | "zai" | "zai-coding-plan" | "zenmux" | "zhipu-coding-plan";
4
+ export type LoginProviderId = "abliteration" | "aiand" | "alibaba-coding-plan" | "alibaba-token-plan" | "anthropic" | "baseten" | "cerebras" | "charm-hyper" | "cline-pass" | "cloudflare-ai-gateway" | "commandcode" | "coreweave" | "cursor" | "deepinfra" | "deepseek" | "devin" | "exa" | "factory-droid" | "firepass" | "fireworks" | "github-copilot" | "gitlab-duo" | "gitlab-duo-agent" | "gmi-cloud" | "google-antigravity" | "google-gemini-cli" | "helmcode" | "huggingface" | "kagi" | "kilo" | "kimi-code" | "litellm" | "llama.cpp" | "lm-studio" | "meta" | "minimax-code" | "minimax-code-cn" | "moonshot" | "muse-code" | "nanogpt" | "novita" | "nvidia" | "ollama" | "ollama-cloud" | "openai-codex" | "openai-codex-device" | "opencode-go" | "opencode-zen" | "openrouter" | "parallel" | "perplexity" | "qianfan" | "qwen-portal" | "sakana" | "siliconflow" | "siliconflow-cn" | "singularityapi-dev" | "singularityapi-tech" | "stencil" | "stepfun" | "synthetic" | "tavily" | "together" | "typesafe" | "umans" | "venice" | "vercel-ai-gateway" | "vllm" | "wafer-serverless" | "xai" | "xai-oauth" | "xiaomi" | "xiaomi-token-plan-ams" | "xiaomi-token-plan-cn" | "xiaomi-token-plan-sgp" | "yolo-auto" | "zai" | "zai-coding-plan" | "zenmux" | "zhipu-coding-plan";
@@ -16,7 +16,7 @@ export type AxisShape = "scalar" | "array" | "object";
16
16
  /** Axis namespace: request-wire compat, thinking control surface, or catalog metadata. */
17
17
  export type AxisSet = "wire" | "thinking" | "catalog";
18
18
  /** Resolved compat record families a wire axis may be assigned onto. */
19
- export type CompatRecordName = "openai" | "openai-responses" | "anthropic" | "bedrock" | "devin" | "google";
19
+ export type CompatRecordName = "openai" | "openai-responses" | "anthropic" | "bedrock" | "devin" | "google" | "request";
20
20
  /** One axis definition: resolved key, namespace, shape, and applicability. */
21
21
  export interface AxisDef {
22
22
  /** Resolved camelCase field the directive assigns. */
@@ -33,6 +33,8 @@ export interface AxisDef {
33
33
  * that compile to camelCase resolved keys.
34
34
  */
35
35
  verbatimKeys?: true;
36
+ /** Array axes only: a bare directive assigns an empty list (an explicit "none"). */
37
+ emptyArray?: true;
36
38
  }
37
39
  /** Effort tiers accepted by taxonomy collapse/override vocabulary (`Effort` ∪ `"off"`). */
38
40
  export declare const EFFORT_TIERS: readonly string[];
@@ -0,0 +1,65 @@
1
+ import type { Api, ModelSpec } from "../types.js";
2
+ import { type FactoryDroidRegion, type FactoryDroidWire } from "../wire/factory-droid.js";
3
+ /** Native token limits for one inference region. */
4
+ export interface FactoryDroidLimits {
5
+ contextWindow: number | null;
6
+ maxTokens: number | null;
7
+ }
8
+ /** Standard Credits rates: `input` is the per-token weight; `output` and `cacheRead` multiply it. */
9
+ export interface FactoryDroidCreditRates {
10
+ input: number;
11
+ output?: number;
12
+ cacheRead?: number;
13
+ }
14
+ /** Account gates on one registry model (the `entitlement` axis). */
15
+ export interface FactoryDroidEntitlement {
16
+ /** Feature flag that must be on for the account to see the model. */
17
+ featureFlag?: string;
18
+ /** Hard deprecation flag; when on, first-party clients hide the model. */
19
+ deprecationFlag?: string;
20
+ /** Hidden unless an org policy is known and does not require consent. */
21
+ requiresExplicitOptIn: boolean;
22
+ /** Base model this entry is the fast tier of; org policy can withdraw fast tiers as a class. */
23
+ baseVariant?: string;
24
+ }
25
+ /** Registry facts for one Factory model. */
26
+ export interface FactoryDroidModelPolicy {
27
+ wire: FactoryDroidWire;
28
+ /** Registry upstream order; the first entry is the default `x-api-provider`. */
29
+ rotation: readonly string[];
30
+ /** Upstreams eligible per inference region; empty means the region does not serve the model. */
31
+ regionUpstreams: Readonly<Record<FactoryDroidRegion, readonly string[]>>;
32
+ /** Registry limits; EU entries override them where the region narrows the model. */
33
+ limits: FactoryDroidLimits;
34
+ euLimits: Partial<FactoryDroidLimits>;
35
+ creditRates?: FactoryDroidCreditRates;
36
+ /** Bundled catalog row whose list price the model shows. */
37
+ listPriceFrom?: {
38
+ provider: string;
39
+ modelId: string;
40
+ };
41
+ /** Provider family whose live routing defaults apply. */
42
+ routingFamily?: string;
43
+ /** Other ids organization policy may use for the model. */
44
+ policyAliases: readonly string[];
45
+ entitlement: FactoryDroidEntitlement;
46
+ /** Native default with no caller effort is thinking off. */
47
+ defaultReasoningOff: boolean;
48
+ }
49
+ /** One registry model: its roster row and resolved policy. */
50
+ export interface FactoryDroidRegistryModel {
51
+ spec: ModelSpec<"factory-droid-agent">;
52
+ policy: FactoryDroidModelPolicy;
53
+ }
54
+ /** The registry roster in declaration order, each row with its resolved policy. */
55
+ export declare const factoryDroidRegistry: () => readonly FactoryDroidRegistryModel[];
56
+ /** Registry policy for a model (by its request id); undefined for ids outside the registry. */
57
+ export declare function resolveFactoryDroidPolicy(model: Pick<ModelSpec<Api>, "id" | "requestModelId">): FactoryDroidModelPolicy | undefined;
58
+ /**
59
+ * Effective upstream rotation for an inference region: the registry order,
60
+ * narrowed to the upstreams that region serves (or the model's own region
61
+ * override). An empty result means the region cannot serve the model.
62
+ */
63
+ export declare function resolveFactoryDroidRotation(policy: FactoryDroidModelPolicy, region: string | undefined): readonly string[];
64
+ /** Native limits for an inference region; EU overrides fall back to the registry defaults. */
65
+ export declare function factoryDroidRegionalLimits(policy: FactoryDroidModelPolicy, region: string | undefined): FactoryDroidLimits;
@@ -1,2 +1,2 @@
1
1
  /** Every chat-model provider with a catalog entry (`default-model` in its provider rules). */
2
- export type KnownProvider = "abliteration" | "aiand" | "aimlapi" | "alibaba-coding-plan" | "alibaba-token-plan" | "amazon-bedrock" | "anthropic" | "apple" | "azure" | "baseten" | "bedrock-mantle" | "cerebras" | "charm-hyper" | "cline-pass" | "cloudflare-ai-gateway" | "commandcode" | "coreweave" | "cursor" | "deepinfra" | "deepseek" | "devin" | "firepass" | "fireworks" | "github-copilot" | "gitlab-duo" | "gitlab-duo-agent" | "gmi-cloud" | "google" | "google-antigravity" | "google-gemini-cli" | "google-vertex" | "groq" | "huggingface" | "kilo" | "kimi-code" | "litellm" | "lm-studio" | "local" | "meta" | "minimax" | "minimax-code" | "minimax-code-cn" | "mistral" | "moonshot" | "muse-code" | "nanogpt" | "novita" | "nvidia" | "ollama" | "ollama-cloud" | "openai" | "openai-codex" | "opencode-go" | "opencode-zen" | "openrouter" | "qianfan" | "qwen-portal" | "sakana" | "siliconflow" | "siliconflow-cn" | "singularityapi-dev" | "singularityapi-tech" | "stepfun" | "synthetic" | "together" | "typesafe" | "umans" | "venice" | "vercel-ai-gateway" | "vllm" | "wafer-serverless" | "web" | "xai" | "xai-oauth" | "xiaomi" | "xiaomi-token-plan-ams" | "xiaomi-token-plan-cn" | "xiaomi-token-plan-sgp" | "yolo-auto" | "zai" | "zenmux" | "zhipu-coding-plan";
2
+ export type KnownProvider = "abliteration" | "aiand" | "aimlapi" | "alibaba-coding-plan" | "alibaba-token-plan" | "amazon-bedrock" | "anthropic" | "apple" | "azure" | "baseten" | "bedrock-mantle" | "cerebras" | "charm-hyper" | "cline-pass" | "cloudflare-ai-gateway" | "commandcode" | "coreweave" | "cursor" | "deepinfra" | "deepseek" | "devin" | "factory-droid" | "firepass" | "fireworks" | "github-copilot" | "gitlab-duo" | "gitlab-duo-agent" | "gmi-cloud" | "google" | "google-antigravity" | "google-gemini-cli" | "google-vertex" | "groq" | "helmcode" | "huggingface" | "kilo" | "kimi-code" | "litellm" | "lm-studio" | "local" | "meta" | "minimax" | "minimax-code" | "minimax-code-cn" | "mistral" | "moonshot" | "muse-code" | "nanogpt" | "novita" | "nvidia" | "ollama" | "ollama-cloud" | "openai" | "openai-codex" | "opencode-go" | "opencode-zen" | "openrouter" | "qianfan" | "qwen-portal" | "sakana" | "siliconflow" | "siliconflow-cn" | "singularityapi-dev" | "singularityapi-tech" | "stepfun" | "synthetic" | "together" | "typesafe" | "umans" | "venice" | "vercel-ai-gateway" | "vllm" | "wafer-serverless" | "web" | "xai" | "xai-oauth" | "xiaomi" | "xiaomi-token-plan-ams" | "xiaomi-token-plan-cn" | "xiaomi-token-plan-sgp" | "yolo-auto" | "zai" | "zenmux" | "zhipu-coding-plan";
@@ -1,5 +1,5 @@
1
1
  import type { Api, CompatOf, ModelSpec, ThinkingConfig } from "../types.js";
2
- import type { ModelIdentity } from "./types.js";
2
+ import type { ModelIdentity, RequestPolicy } from "./types.js";
3
3
  /** Result of resolving one model spec through the compat engine. */
4
4
  export interface ResolvedModelPolicy<TApi extends Api = Api> {
5
5
  identity: ModelIdentity;
@@ -7,6 +7,12 @@ export interface ResolvedModelPolicy<TApi extends Api = Api> {
7
7
  thinking: ThinkingConfig | undefined;
8
8
  /** Catalog-data axis assignments (longContext, priority, …) for generation. */
9
9
  catalog: Record<string, unknown>;
10
+ /** Request-shaping directives for the selected upstream. */
11
+ request: RequestPolicy;
12
+ }
13
+ /** Request routing context is separate from model identity and deployment. */
14
+ export interface ResolveRoute {
15
+ upstream?: string;
10
16
  }
11
17
  /** Resolve the request adapter assigned to a discovery backend before materialization. */
12
18
  export declare function resolveDiscoveryApi(spec: ModelSpec<Api>, providerType: string): Api;
@@ -20,13 +26,13 @@ export declare function resolveCatalogAxes(spec: ModelSpec<Api>): Record<string,
20
26
  * Resolves the full policy surface for one model spec: structured identity,
21
27
  * complete compat record, thinking metadata, and catalog-data corrections.
22
28
  */
23
- export declare function resolveModelPolicy<TApi extends Api>(spec: ModelSpec<TApi>): ResolvedModelPolicy<TApi>;
29
+ export declare function resolveModelPolicy<TApi extends Api>(spec: ModelSpec<TApi>, route?: ResolveRoute): ResolvedModelPolicy<TApi>;
24
30
  /**
25
31
  * Whether reviewed rules know THIS model's effort ladder, as opposed to it
26
32
  * inheriting a provider-wide default or {@link resolveThinkingPolicy} falling
27
33
  * through to the neutral wire ladder.
28
34
  *
29
- * Discovery uses this to tell "omp knows this model's tiers" apart from "omp
35
+ * Discovery uses this to tell "zeta knows this model's tiers" apart from "zeta
30
36
  * is guessing them", so catalog-published tiers can correct the guess without
31
37
  * ever overriding reviewed knowledge.
32
38
  */
@@ -190,6 +190,8 @@ export interface CompiledRule {
190
190
  providers?: string[];
191
191
  /** Request adapter identifiers matched by an `on-api` selector. */
192
192
  apis?: string[];
193
+ /** Selected upstream behind a deployment, matched by `on-upstream`. */
194
+ upstreams?: string[];
193
195
  family?: string;
194
196
  revision?: CompiledRevisionTerm[];
195
197
  models?: CompiledSelector[];
@@ -563,8 +565,9 @@ export interface CompiledAuth {
563
565
  * - `always`: every regeneration; same-id upstream/discovery rows win dedup.
564
566
  * - `fallback`: only when authoritative catalog discovery did not succeed.
565
567
  * - `empty`: only when no other source produced a row for the provider.
568
+ * - `never`: runtime-only; the provider's model manager is the sole consumer.
566
569
  */
567
- export type SeedBundlePolicy = "always" | "fallback" | "empty";
570
+ export type SeedBundlePolicy = "always" | "fallback" | "empty" | "never";
568
571
  /** Catalog-generation discovery settings (`discovery` node in `providers/<id>.kdl`). */
569
572
  export interface CompiledProviderDiscovery {
570
573
  /** Human-readable name for generator log messages. */
@@ -668,6 +671,8 @@ export interface ResolveTarget {
668
671
  provider: string;
669
672
  /** Request adapter used to serialize the model. */
670
673
  api: string;
674
+ /** Actual upstream chosen for this request, not the deployment provider. */
675
+ upstream?: string;
671
676
  /** Centrally classified vendor lineage. */
672
677
  class: string;
673
678
  /** Classified product family within the class, when known. */
@@ -693,4 +698,24 @@ export interface ResolvedAxes {
693
698
  */
694
699
  reasoning: boolean;
695
700
  }
701
+ /** Selected-route request dialect. Absent fields impose no deployment override. */
702
+ export interface RequestPolicy {
703
+ completionsReasoningMode?: "none" | "effort" | "opt-in" | "forced-on";
704
+ completionsReasoningHistory?: "omit" | "preserved" | "interleaved";
705
+ anthropicThinking?: "adaptive" | "adaptive-summarized" | "budget-interleaved" | "budget-effort";
706
+ /** Advertise `fine-grained-tool-streaming-2025-05-14` on requests that carry tools. */
707
+ anthropicToolStreamingBeta?: boolean;
708
+ /** `OpenAI-Platform` header value the route sends on OpenAI-family wires. */
709
+ openaiPlatformHeader?: string;
710
+ responsesCacheRetention?: boolean;
711
+ responsesVerbosity?: "low";
712
+ responsesServiceTier?: "priority";
713
+ responsesParallelToolCalls?: boolean;
714
+ responsesSafetyIdentifier?: boolean;
715
+ /** Default `tool_choice` to `auto` when the request carries tools and the caller picks none. */
716
+ responsesToolChoiceAuto?: boolean;
717
+ googleThinking?: "level" | "level-medium";
718
+ /** The route locks its upstream for the session (`x-provider-routing-source: session_lock`). */
719
+ routingSessionLock?: boolean;
720
+ }
696
721
  export {};
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Cursor agent protocol declarations used by omp.
2
+ * Cursor agent protocol declarations used by zeta.
3
3
  *
4
4
  * Each declaration retains only fields consumed by the client or its protocol tests.
5
5
  */
@@ -17,12 +17,79 @@ export declare enum ConversationSearchSource {
17
17
  LOCAL = 1,
18
18
  CLOUD_CACHE = 2
19
19
  }
20
+ /** Cursor agent enum CursorError. */
21
+ export declare enum CursorError {
22
+ ERROR_UNSPECIFIED = 0,
23
+ ERROR_BAD_API_KEY = 1,
24
+ ERROR_NOT_LOGGED_IN = 2,
25
+ ERROR_INVALID_AUTH_ID = 3,
26
+ ERROR_NOT_HIGH_ENOUGH_PERMISSIONS = 4,
27
+ ERROR_BAD_MODEL_NAME = 5,
28
+ ERROR_USER_NOT_FOUND = 6,
29
+ ERROR_FREE_USER_RATE_LIMIT_EXCEEDED = 7,
30
+ ERROR_PRO_USER_RATE_LIMIT_EXCEEDED = 8,
31
+ ERROR_FREE_USER_USAGE_LIMIT = 9,
32
+ ERROR_PRO_USER_USAGE_LIMIT = 10,
33
+ ERROR_AUTH_TOKEN_NOT_FOUND = 11,
34
+ ERROR_AUTH_TOKEN_EXPIRED = 12,
35
+ ERROR_OPENAI = 13,
36
+ ERROR_OPENAI_RATE_LIMIT_EXCEEDED = 14,
37
+ ERROR_AGENT_REQUIRES_LOGIN = 18,
38
+ ERROR_MAX_TOKENS = 20,
39
+ ERROR_USER_ABORTED_REQUEST = 21,
40
+ ERROR_GENERIC_RATE_LIMIT_EXCEEDED = 22,
41
+ ERROR_PRO_USER_ONLY = 23,
42
+ ERROR_TIMEOUT = 25,
43
+ ERROR_GPT_4_VISION_PREVIEW_RATE_LIMIT = 28,
44
+ ERROR_CUSTOM_MESSAGE = 29,
45
+ ERROR_OUTDATED_CLIENT = 30,
46
+ ERROR_CLAUDE_IMAGE_TOO_LARGE = 31,
47
+ ERROR_FILE_NOT_FOUND = 33,
48
+ ERROR_API_KEY_RATE_LIMIT = 34,
49
+ ERROR_DEBOUNCED = 35,
50
+ ERROR_BAD_REQUEST = 36,
51
+ ERROR_REPOSITORY_SERVICE_REPOSITORY_IS_NOT_INITIALIZED = 37,
52
+ ERROR_UNAUTHORIZED = 38,
53
+ ERROR_NOT_FOUND = 39,
54
+ ERROR_DEPRECATED = 40,
55
+ ERROR_RESOURCE_EXHAUSTED = 41,
56
+ ERROR_BAD_USER_API_KEY = 42,
57
+ ERROR_CONVERSATION_TOO_LONG = 43,
58
+ ERROR_USAGE_PRICING_REQUIRED = 44,
59
+ ERROR_USAGE_PRICING_REQUIRED_CHANGEABLE = 45,
60
+ ERROR_GITHUB_NO_USER_CREDENTIALS = 46,
61
+ ERROR_GITHUB_USER_NO_ACCESS = 47,
62
+ ERROR_GITHUB_APP_NO_ACCESS = 48,
63
+ ERROR_GITHUB_MULTIPLE_OWNERS = 49,
64
+ ERROR_RATE_LIMITED = 50,
65
+ ERROR_RATE_LIMITED_CHANGEABLE = 51,
66
+ ERROR_CUSTOM = 52,
67
+ ERROR_HOOKS_BLOCKED = 53,
68
+ ERROR_SUSPICIOUS_USAGE_BLOCKED = 54,
69
+ ERROR_EXTENSION_HOST_TIMEOUT = 55,
70
+ ERROR_NETWORK_ERROR = 56,
71
+ ERROR_PROVIDER_ERROR = 57,
72
+ ERROR_MODEL_BLOCKED = 58,
73
+ ERROR_INTERNAL = 59,
74
+ ERROR_MAX_MODE_REQUIRED = 60,
75
+ ERROR_MODEL_NO_LONGER_SUPPORTED = 61,
76
+ ERROR_PRICING_WARNING = 62,
77
+ ERROR_SLOW_POOL = 63,
78
+ ERROR_UNSUPPORTED_REGION = 64,
79
+ ERROR_ACCOUNT_CLOSED = 65
80
+ }
20
81
  /** Cursor agent enum CursorRuleSource. */
21
82
  export declare enum CursorRuleSource {
22
83
  UNSPECIFIED = 0,
23
84
  TEAM = 1,
24
85
  USER = 2
25
86
  }
87
+ /** Cursor agent enum DegradationStatus. */
88
+ export declare enum DegradationStatus {
89
+ UNSPECIFIED = 0,
90
+ DEGRADED = 1,
91
+ DISABLED = 2
92
+ }
26
93
  /** Cursor agent enum DiagnosticSeverity. */
27
94
  export declare enum DiagnosticSeverity {
28
95
  UNSPECIFIED = 0,
@@ -57,6 +124,19 @@ export declare enum GitDiff_DiffType {
57
124
  DIFF_TO_HEAD = 1,
58
125
  DIFF_FROM_BRANCH_TO_MAIN = 2
59
126
  }
127
+ /** Cursor agent enum ModelVendorId. */
128
+ export declare enum ModelVendorId {
129
+ UNSPECIFIED = 0,
130
+ ANTHROPIC = 1,
131
+ OPENAI = 2,
132
+ GOOGLE = 3,
133
+ XAI = 4,
134
+ MOONSHOT = 5,
135
+ CURSOR = 6,
136
+ NVIDIA = 7,
137
+ ZAI = 8,
138
+ META = 9
139
+ }
60
140
  /** Cursor agent enum ShellBackgroundReason. */
61
141
  export declare enum ShellBackgroundReason {
62
142
  UNSPECIFIED = 0,
@@ -378,6 +458,121 @@ export interface AsyncAskQuestionCompletionAction extends ProtoMessage {
378
458
  result?: AskQuestionResult;
379
459
  }
380
460
  export declare const AsyncAskQuestionCompletionActionSchema: MessageCodec<AsyncAskQuestionCompletionAction>;
461
+ /** Cursor agent message aiserver.v1.AvailableModelsRequest. */
462
+ export interface AvailableModelsRequest extends ProtoMessage {
463
+ isNightly: boolean;
464
+ includeLongContextModels: boolean;
465
+ excludeMaxNamedModels: boolean;
466
+ additionalModelNames: string[];
467
+ useModelParameters?: boolean;
468
+ includeHiddenModels?: boolean;
469
+ doNotUseMarkdown?: boolean;
470
+ variantsWillBeShownInExplodedList?: boolean;
471
+ forAutomations?: boolean;
472
+ scope?: number;
473
+ useReactModelPicker?: boolean;
474
+ useCloudAgentEffortModes?: boolean;
475
+ adminSettingsGroupPublicId?: string;
476
+ byokEnabled?: boolean;
477
+ }
478
+ export declare const AvailableModelsRequestSchema: MessageCodec<AvailableModelsRequest>;
479
+ /** Cursor agent message aiserver.v1.AvailableModelsResponse. */
480
+ export interface AvailableModelsResponse extends ProtoMessage {
481
+ modelNames: string[];
482
+ models: AvailableModelsResponse_ModelDetails[];
483
+ useModelParameters: boolean;
484
+ }
485
+ export declare const AvailableModelsResponseSchema: MessageCodec<AvailableModelsResponse>;
486
+ /** Cursor agent message aiserver.v1.AvailableModelsResponse_ConfirmationDialogue. */
487
+ export interface AvailableModelsResponse_ConfirmationDialogue extends ProtoMessage {
488
+ title: string;
489
+ body: string;
490
+ key: string;
491
+ blocksSubmission: boolean;
492
+ }
493
+ export declare const AvailableModelsResponse_ConfirmationDialogueSchema: MessageCodec<AvailableModelsResponse_ConfirmationDialogue>;
494
+ /** Cursor agent message aiserver.v1.AvailableModelsResponse_ModelDetails. */
495
+ export interface AvailableModelsResponse_ModelDetails extends ProtoMessage {
496
+ name: string;
497
+ defaultOn: boolean;
498
+ isLongContextOnly?: boolean;
499
+ isChatOnly?: boolean;
500
+ supportsAgent?: boolean;
501
+ degradationStatus?: DegradationStatus;
502
+ price?: number;
503
+ tooltipData?: AvailableModelsResponse_TooltipData;
504
+ supportsThinking?: boolean;
505
+ supportsImages?: boolean;
506
+ supportsAutoContext?: boolean;
507
+ autoContextMaxTokens?: number;
508
+ autoContextExtendedMaxTokens?: number;
509
+ supportsMaxMode?: boolean;
510
+ contextTokenLimit?: number;
511
+ contextTokenLimitForMaxMode?: number;
512
+ clientDisplayName?: string;
513
+ serverModelName?: string;
514
+ supportsNonMaxMode?: boolean;
515
+ tooltipDataForMaxMode?: AvailableModelsResponse_TooltipData;
516
+ isRecommendedForBackgroundComposer?: boolean;
517
+ supportsPlanMode?: boolean;
518
+ isUserAdded?: boolean;
519
+ inputboxShortModelName?: string;
520
+ supportsSandboxing?: boolean;
521
+ supportsCmdK?: boolean;
522
+ onlySupportsCmdK?: boolean;
523
+ backgroundComposerSortOrder?: number;
524
+ parameterDefinitions: ModelParameterDefinition[];
525
+ variants: AvailableModelsResponse_ModelVariantConfig[];
526
+ cloudAgentEffortMode?: number;
527
+ cloudMigrateToModel?: string;
528
+ upgradeModelId?: string;
529
+ isHidden?: boolean;
530
+ legacySlugs: string[];
531
+ idAliases: string[];
532
+ namedModelSectionIndex?: number;
533
+ tagline?: string;
534
+ visibleInRoutedModelView?: boolean;
535
+ vendorName?: string;
536
+ vendor?: AvailableModelsResponse_ModelVendor;
537
+ defaultDisabledInAdminAllowlist?: boolean;
538
+ cloudAgentEffortModes: number[];
539
+ supportsSmartModeClassifier?: boolean;
540
+ requiresDataRetention?: boolean;
541
+ reasonForZdrConsentBlock?: string;
542
+ }
543
+ export declare const AvailableModelsResponse_ModelDetailsSchema: MessageCodec<AvailableModelsResponse_ModelDetails>;
544
+ /** Cursor agent message aiserver.v1.AvailableModelsResponse_ModelVariantConfig. */
545
+ export interface AvailableModelsResponse_ModelVariantConfig extends ProtoMessage {
546
+ parameterValues: ModelParameterValue[];
547
+ displayName?: string;
548
+ isMaxMode?: boolean;
549
+ isDefaultMaxConfig?: boolean;
550
+ isDefaultNonMaxConfig?: boolean;
551
+ tooltipData?: AvailableModelsResponse_TooltipData;
552
+ tagline?: string;
553
+ displayNameOutsidePicker?: string;
554
+ variantStringRepresentation?: string;
555
+ confirmationDialogue?: AvailableModelsResponse_ConfirmationDialogue;
556
+ legacySlug?: string;
557
+ }
558
+ export declare const AvailableModelsResponse_ModelVariantConfigSchema: MessageCodec<AvailableModelsResponse_ModelVariantConfig>;
559
+ /** Cursor agent message aiserver.v1.AvailableModelsResponse_ModelVendor. */
560
+ export interface AvailableModelsResponse_ModelVendor extends ProtoMessage {
561
+ id: ModelVendorId;
562
+ displayName: string;
563
+ }
564
+ export declare const AvailableModelsResponse_ModelVendorSchema: MessageCodec<AvailableModelsResponse_ModelVendor>;
565
+ /** Cursor agent message aiserver.v1.AvailableModelsResponse_TooltipData. */
566
+ export interface AvailableModelsResponse_TooltipData extends ProtoMessage {
567
+ primaryText: string;
568
+ secondaryText: string;
569
+ secondaryWarningText: string;
570
+ icon: string;
571
+ tertiaryText: string;
572
+ tertiaryTextUrl?: string;
573
+ markdownContent?: string;
574
+ }
575
+ export declare const AvailableModelsResponse_TooltipDataSchema: MessageCodec<AvailableModelsResponse_TooltipData>;
381
576
  /** Cursor agent message agent.v1.AzureCredentials. */
382
577
  export interface AzureCredentials extends ProtoMessage {
383
578
  apiKey: string;
@@ -456,6 +651,19 @@ export interface BeforeSubmitPromptRequestResponse extends ProtoMessage {
456
651
  additionalContext?: string;
457
652
  }
458
653
  export declare const BeforeSubmitPromptRequestResponseSchema: MessageCodec<BeforeSubmitPromptRequestResponse>;
654
+ /** Cursor agent message aiserver.v1.BidiAppendRequest. */
655
+ export interface BidiAppendRequest extends ProtoMessage {
656
+ data: string;
657
+ requestId?: BidiRequestId;
658
+ appendSeqno: bigint;
659
+ dataBinary: Uint8Array;
660
+ }
661
+ export declare const BidiAppendRequestSchema: MessageCodec<BidiAppendRequest>;
662
+ /** Cursor agent message agent.v1.BidiRequestId. */
663
+ export interface BidiRequestId extends ProtoMessage {
664
+ requestId: string;
665
+ }
666
+ export declare const BidiRequestIdSchema: MessageCodec<BidiRequestId>;
459
667
  /** Cursor agent message agent.v1.CallFrame. */
460
668
  export interface CallFrame extends ProtoMessage {
461
669
  functionName?: string;
@@ -923,6 +1131,16 @@ export declare const CursorRuleTypeGlobalSchema: MessageCodec<CursorRuleTypeGlob
923
1131
  export interface CursorRuleTypeManuallyAttached extends ProtoMessage {
924
1132
  }
925
1133
  export declare const CursorRuleTypeManuallyAttachedSchema: MessageCodec<CursorRuleTypeManuallyAttached>;
1134
+ /** Cursor agent message aiserver.v1.CustomErrorDetails. */
1135
+ export interface CustomErrorDetails extends ProtoMessage {
1136
+ title: string;
1137
+ detail: string;
1138
+ allowCommandLinksPotentiallyUnsafePleaseOnlyUseForHandwrittenTrustedMarkdown?: boolean;
1139
+ isRetryable?: boolean;
1140
+ showRequestId?: boolean;
1141
+ shouldShowImmediateError?: boolean;
1142
+ }
1143
+ export declare const CustomErrorDetailsSchema: MessageCodec<CustomErrorDetails>;
926
1144
  /** Cursor agent message agent.v1.CustomSubagent. */
927
1145
  export interface CustomSubagent extends ProtoMessage {
928
1146
  fullPath: string;
@@ -1203,6 +1421,13 @@ export interface Error extends ProtoMessage {
1203
1421
  message: string;
1204
1422
  }
1205
1423
  export declare const ErrorSchema: MessageCodec<Error>;
1424
+ /** Cursor agent message aiserver.v1.ErrorDetails. */
1425
+ export interface ErrorDetails extends ProtoMessage {
1426
+ error: CursorError;
1427
+ details?: CustomErrorDetails;
1428
+ isExpected?: boolean;
1429
+ }
1430
+ export declare const ErrorDetailsSchema: MessageCodec<ErrorDetails>;
1206
1431
  /** Cursor agent message agent.v1.ExaFetchArgs. */
1207
1432
  export interface ExaFetchArgs extends ProtoMessage {
1208
1433
  ids: string[];
@@ -1932,6 +2157,15 @@ export interface GetBlobResult extends ProtoMessage {
1932
2157
  blobData?: Uint8Array;
1933
2158
  }
1934
2159
  export declare const GetBlobResultSchema: MessageCodec<GetBlobResult>;
2160
+ /** Cursor agent message agent.v1.GetDefaultModelForCliRequest. */
2161
+ export interface GetDefaultModelForCliRequest extends ProtoMessage {
2162
+ }
2163
+ export declare const GetDefaultModelForCliRequestSchema: MessageCodec<GetDefaultModelForCliRequest>;
2164
+ /** Cursor agent message agent.v1.GetDefaultModelForCliResponse. */
2165
+ export interface GetDefaultModelForCliResponse extends ProtoMessage {
2166
+ model?: ModelDetails;
2167
+ }
2168
+ export declare const GetDefaultModelForCliResponseSchema: MessageCodec<GetDefaultModelForCliResponse>;
1935
2169
  /** Cursor agent message agent.v1.GetDiffRequest. */
1936
2170
  export interface GetDiffRequest extends ProtoMessage {
1937
2171
  cwd: string;
@@ -2789,6 +3023,56 @@ export interface ModelDetails extends ProtoMessage {
2789
3023
  };
2790
3024
  }
2791
3025
  export declare const ModelDetailsSchema: MessageCodec<ModelDetails>;
3026
+ /** Cursor agent message aiserver.v1.ModelParameterDefinition. */
3027
+ export interface ModelParameterDefinition extends ProtoMessage {
3028
+ id: string;
3029
+ name: string;
3030
+ markdownTooltip?: string;
3031
+ parameterType?: ModelParameterDefinition_ModelParameterType;
3032
+ isCycleableByHotkey?: boolean;
3033
+ }
3034
+ export declare const ModelParameterDefinitionSchema: MessageCodec<ModelParameterDefinition>;
3035
+ /** Cursor agent message aiserver.v1.ModelParameterDefinition_BooleanParameterDefinition. */
3036
+ export interface ModelParameterDefinition_BooleanParameterDefinition extends ProtoMessage {
3037
+ values: ModelParameterDefinition_BooleanParameterDefinition_BooleanParameterValue[];
3038
+ }
3039
+ export declare const ModelParameterDefinition_BooleanParameterDefinitionSchema: MessageCodec<ModelParameterDefinition_BooleanParameterDefinition>;
3040
+ /** Cursor agent message aiserver.v1.ModelParameterDefinition_BooleanParameterDefinition_BooleanParameterValue. */
3041
+ export interface ModelParameterDefinition_BooleanParameterDefinition_BooleanParameterValue extends ProtoMessage {
3042
+ value: string;
3043
+ displayName?: string;
3044
+ increasesModelCost?: boolean;
3045
+ defaultBlockedInAdminAllowlist?: boolean;
3046
+ hideFromUserPickerWhenAdminBlocked?: boolean;
3047
+ blockedByAdminAllowlist?: boolean;
3048
+ }
3049
+ export declare const ModelParameterDefinition_BooleanParameterDefinition_BooleanParameterValueSchema: MessageCodec<ModelParameterDefinition_BooleanParameterDefinition_BooleanParameterValue>;
3050
+ /** Cursor agent message aiserver.v1.ModelParameterDefinition_EnumParameterDefinition. */
3051
+ export interface ModelParameterDefinition_EnumParameterDefinition extends ProtoMessage {
3052
+ values: ModelParameterDefinition_EnumParameterDefinition_EnumParameterValue[];
3053
+ }
3054
+ export declare const ModelParameterDefinition_EnumParameterDefinitionSchema: MessageCodec<ModelParameterDefinition_EnumParameterDefinition>;
3055
+ /** Cursor agent message aiserver.v1.ModelParameterDefinition_EnumParameterDefinition_EnumParameterValue. */
3056
+ export interface ModelParameterDefinition_EnumParameterDefinition_EnumParameterValue extends ProtoMessage {
3057
+ value: string;
3058
+ displayName?: string;
3059
+ increasesModelCost?: boolean;
3060
+ blockedByAdminAllowlist?: boolean;
3061
+ markdownTooltip?: string;
3062
+ }
3063
+ export declare const ModelParameterDefinition_EnumParameterDefinition_EnumParameterValueSchema: MessageCodec<ModelParameterDefinition_EnumParameterDefinition_EnumParameterValue>;
3064
+ /** Cursor agent message aiserver.v1.ModelParameterDefinition_ModelParameterType. */
3065
+ export interface ModelParameterDefinition_ModelParameterType extends ProtoMessage {
3066
+ booleanParameter?: ModelParameterDefinition_BooleanParameterDefinition;
3067
+ enumParameter?: ModelParameterDefinition_EnumParameterDefinition;
3068
+ }
3069
+ export declare const ModelParameterDefinition_ModelParameterTypeSchema: MessageCodec<ModelParameterDefinition_ModelParameterType>;
3070
+ /** Cursor agent message aiserver.v1.ModelParameterValue. */
3071
+ export interface ModelParameterValue extends ProtoMessage {
3072
+ id: string;
3073
+ value: string;
3074
+ }
3075
+ export declare const ModelParameterValueSchema: MessageCodec<ModelParameterValue>;
2792
3076
  /** Cursor agent message agent.v1.MouseDownAction. */
2793
3077
  export interface MouseDownAction extends ProtoMessage {
2794
3078
  button: number;
@@ -1,7 +1,5 @@
1
1
  import type { ModelSpec } from "../types.js";
2
- /**
3
- * Options for fetching dynamic Cursor models from `GetUsableModels`.
4
- */
2
+ /** Options for authenticated Cursor model discovery. */
5
3
  export interface CursorModelDiscoveryOptions {
6
4
  /** Cursor access token used for bearer authentication. */
7
5
  apiKey: string;
@@ -15,10 +13,18 @@ export interface CursorModelDiscoveryOptions {
15
13
  customModelIds?: string[];
16
14
  }
17
15
  /**
18
- * Fetches Cursor models through `GetUsableModels` and normalizes them into canonical model entries.
16
+ * Joins Cursor's account-scoped model RPCs:
17
+ * - `AvailableModels` supplies rich base models, parameter axes, variants,
18
+ * capabilities, aliases, and cost-multiplier metadata.
19
+ * - `GetUsableModels` supplies the exact legacy wire slugs the account can run.
20
+ * - `GetDefaultModelForCli` identifies the account's current default.
21
+ *
22
+ * Per-token rates come from the reviewed `providers/cursor.kdl` rate card and
23
+ * the bundled rows; discovery only scales them by a variant's declared multiplier.
19
24
  *
20
- * Returns `null` on request/decode failures.
21
- * Returns `[]` only when the endpoint responds successfully with no usable models.
25
+ * Returns `null` unless at least one model-list RPC (`GetUsableModels` or
26
+ * `AvailableModels`) decoded. A successful empty catalog returns `[]`,
27
+ * preserving model-manager retry and fallback semantics.
22
28
  */
23
29
  export declare function fetchCursorUsableModels(options: CursorModelDiscoveryOptions): Promise<ModelSpec<"cursor-agent">[] | null>;
24
30
  /**