@providerkit/core 0.5.1 → 0.7.0
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/README.md +15 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/presets.d.ts +249 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/presets.js +199 -0
- package/dist/presets.js.map +1 -0
- package/dist/providers/anthropic.d.ts +9 -0
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +19 -3
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/factory.d.ts +19 -0
- package/dist/providers/factory.d.ts.map +1 -0
- package/dist/providers/factory.js +82 -0
- package/dist/providers/factory.js.map +1 -0
- package/dist/providers/openai.d.ts +4 -0
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +1 -1
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/zai.d.ts +18 -0
- package/dist/providers/zai.d.ts.map +1 -0
- package/dist/providers/zai.js +27 -0
- package/dist/providers/zai.js.map +1 -0
- package/package.json +1 -1
- package/src/index.ts +3 -0
- package/src/presets.ts +265 -0
- package/src/providers/anthropic.ts +36 -10
- package/src/providers/factory.ts +102 -0
- package/src/providers/openai.ts +5 -1
- package/src/providers/zai.ts +31 -0
package/README.md
CHANGED
|
@@ -60,6 +60,21 @@ try {
|
|
|
60
60
|
}
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
+
### Z.ai Coding Plan
|
|
64
|
+
|
|
65
|
+
`createZaiCodingProvider` uses the Coding Plan endpoint with Bearer authentication.
|
|
66
|
+
Pass your plan's key and a model it supports:
|
|
67
|
+
|
|
68
|
+
```ts
|
|
69
|
+
import { createZaiCodingProvider } from "@providerkit/core";
|
|
70
|
+
|
|
71
|
+
const provider = createZaiCodingProvider({ apiKey, model: "glm-5.2" });
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
It returns the same provider interface as the adapters above. The API root is
|
|
75
|
+
`https://api.z.ai/api/anthropic`; the adapter adds `/v1/messages`.
|
|
76
|
+
Usage reports tokens consumed, not the price of your subscription.
|
|
77
|
+
|
|
63
78
|
**Full documentation lives at [providerkit.dev](https://providerkit.dev)** — it is the single
|
|
64
79
|
source of truth for usage, and this README deliberately stays a front door so the two cannot
|
|
65
80
|
drift.
|
package/dist/index.d.ts
CHANGED
|
@@ -11,8 +11,11 @@ export * from "./tools.ts";
|
|
|
11
11
|
export * from "./schema.ts";
|
|
12
12
|
export * from "./context.ts";
|
|
13
13
|
export * from "./capability.ts";
|
|
14
|
+
export * from "./presets.ts";
|
|
14
15
|
export * from "./providers/anthropic.ts";
|
|
15
16
|
export * from "./providers/openai.ts";
|
|
16
17
|
export * from "./providers/responses.ts";
|
|
17
18
|
export * from "./providers/gemini.ts";
|
|
19
|
+
export * from "./providers/zai.ts";
|
|
20
|
+
export * from "./providers/factory.ts";
|
|
18
21
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -11,8 +11,11 @@ export * from "./tools.js";
|
|
|
11
11
|
export * from "./schema.js";
|
|
12
12
|
export * from "./context.js";
|
|
13
13
|
export * from "./capability.js";
|
|
14
|
+
export * from "./presets.js";
|
|
14
15
|
export * from "./providers/anthropic.js";
|
|
15
16
|
export * from "./providers/openai.js";
|
|
16
17
|
export * from "./providers/responses.js";
|
|
17
18
|
export * from "./providers/gemini.js";
|
|
19
|
+
export * from "./providers/zai.js";
|
|
20
|
+
export * from "./providers/factory.js";
|
|
18
21
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider presets — hand-curated, wire-level facts only.
|
|
3
|
+
*
|
|
4
|
+
* A preset is everything `createPresetProvider` needs to speak to one
|
|
5
|
+
* endpoint: which adapter shape it speaks, its API root, how the credential
|
|
6
|
+
* rides, and what it is called. Deliberately absent: prices (invariant 9 —
|
|
7
|
+
* they drift on a vendor's schedule and a wrong number in a library is a
|
|
8
|
+
* wrong number in everyone's ledger), icons, colors, marketing names, and
|
|
9
|
+
* sign-in flows (an `oauth` preset expects the CALLER to hand over an access
|
|
10
|
+
* token; acquiring one stays app-side).
|
|
11
|
+
*
|
|
12
|
+
* Sources: the coding-plan endpoints and auth quirks are measured
|
|
13
|
+
* (tabrunner's extension + this repo's adopters, 2026-09); the model lists
|
|
14
|
+
* are representative, not exhaustive — every adapter takes a per-call model,
|
|
15
|
+
* so a missing id costs nothing.
|
|
16
|
+
*
|
|
17
|
+
* Azure is deliberately ABSENT: its base URL is per-deployment
|
|
18
|
+
* (`https://<resource>.openai.azure.com`), so no static preset can carry it —
|
|
19
|
+
* point createOpenAIProvider's baseUrl at your resource instead.
|
|
20
|
+
*/
|
|
21
|
+
export type PresetShape = "anthropic" | "openai" | "responses" | "gemini";
|
|
22
|
+
/**
|
|
23
|
+
* How the credential reaches the endpoint.
|
|
24
|
+
* - `key`: the vendor's native key header (Anthropic reads `x-api-key`,
|
|
25
|
+
* Gemini `x-goog-api-key`); the OpenAI shapes have only Bearer, so they
|
|
26
|
+
* never use this.
|
|
27
|
+
* - `bearer`: `Authorization: Bearer` — the OpenAI shapes' only mode, and the
|
|
28
|
+
* coding-plan gateways' mode on the Anthropic wire (measured: Z.ai's coding
|
|
29
|
+
* endpoint ignores `x-api-key` and reads Bearer).
|
|
30
|
+
* - `oauth`: same wire as `bearer`, but the token is a short-lived access
|
|
31
|
+
* token from a sign-in flow the caller owns. The preset may carry the beta
|
|
32
|
+
* headers that switch the endpoint into OAuth mode.
|
|
33
|
+
*/
|
|
34
|
+
export type PresetAuth = "key" | "bearer" | "oauth";
|
|
35
|
+
export interface ProviderPreset {
|
|
36
|
+
/** Adapter wire format. */
|
|
37
|
+
shape: PresetShape;
|
|
38
|
+
/** API root — the adapter appends its own path (/v1/chat/completions,
|
|
39
|
+
* /v1/messages, …), so this must NOT carry the version. */
|
|
40
|
+
baseUrl: string;
|
|
41
|
+
auth: PresetAuth;
|
|
42
|
+
/** Fallback when the caller passes no model. */
|
|
43
|
+
defaultModel?: string;
|
|
44
|
+
/** Representative model ids. */
|
|
45
|
+
models?: string[];
|
|
46
|
+
/** Static protocol headers the endpoint requires (e.g. OAuth beta flags).
|
|
47
|
+
* Per-request headers (request ids, account ids) are the caller's. */
|
|
48
|
+
headers?: Record<string, string>;
|
|
49
|
+
/** True when the endpoint hard-400s image parts (measured on DeepSeek). */
|
|
50
|
+
textOnly?: boolean;
|
|
51
|
+
/** Anthropic-shape dialect: say "no thinking" with an explicit
|
|
52
|
+
* `thinking: { type: "disabled" }` marker when effort is none. For
|
|
53
|
+
* endpoints where an ABSENT field means the model's default — thinking ON
|
|
54
|
+
* for reasoning-mandatory models (measured on Z.ai's coding endpoint:
|
|
55
|
+
* omit → thinking block; disabled → none). Native Anthropic defaults to
|
|
56
|
+
* off when the field is absent and must stay unset. */
|
|
57
|
+
explicitNone?: boolean;
|
|
58
|
+
}
|
|
59
|
+
export declare const PROVIDER_PRESETS: {
|
|
60
|
+
readonly anthropic: {
|
|
61
|
+
readonly shape: "anthropic";
|
|
62
|
+
readonly baseUrl: "https://api.anthropic.com";
|
|
63
|
+
readonly auth: "key";
|
|
64
|
+
readonly defaultModel: "claude-sonnet-4-6";
|
|
65
|
+
readonly models: ["claude-sonnet-4-6", "claude-opus-5", "claude-fable-5-1"];
|
|
66
|
+
};
|
|
67
|
+
readonly openai: {
|
|
68
|
+
readonly shape: "openai";
|
|
69
|
+
readonly baseUrl: "https://api.openai.com";
|
|
70
|
+
readonly auth: "key";
|
|
71
|
+
readonly defaultModel: "gpt-5.6-sol";
|
|
72
|
+
readonly models: ["gpt-5.6-sol", "gpt-5-pro", "gpt-5-nano"];
|
|
73
|
+
};
|
|
74
|
+
readonly google: {
|
|
75
|
+
readonly shape: "gemini";
|
|
76
|
+
readonly baseUrl: "https://generativelanguage.googleapis.com";
|
|
77
|
+
readonly auth: "key";
|
|
78
|
+
readonly defaultModel: "gemini-3.1-pro";
|
|
79
|
+
readonly models: ["gemini-3.1-pro", "gemini-2.5-flash"];
|
|
80
|
+
};
|
|
81
|
+
/** Gemini behind its OpenAI-compatible route — the drop-in for codebases
|
|
82
|
+
* that only speak the openai shape. */
|
|
83
|
+
readonly "google-openai": {
|
|
84
|
+
readonly shape: "openai";
|
|
85
|
+
readonly baseUrl: "https://generativelanguage.googleapis.com/v1beta/openai";
|
|
86
|
+
readonly auth: "key";
|
|
87
|
+
readonly defaultModel: "gemini-3.1-pro";
|
|
88
|
+
readonly models: ["gemini-3.1-pro", "gemini-2.5-flash"];
|
|
89
|
+
};
|
|
90
|
+
readonly deepseek: {
|
|
91
|
+
readonly shape: "openai";
|
|
92
|
+
readonly baseUrl: "https://api.deepseek.com";
|
|
93
|
+
readonly auth: "key";
|
|
94
|
+
readonly defaultModel: "deepseek-v4-flash";
|
|
95
|
+
readonly models: ["deepseek-v4-flash", "deepseek-v4-pro", "deepseek-flash"];
|
|
96
|
+
readonly textOnly: true;
|
|
97
|
+
};
|
|
98
|
+
readonly openrouter: {
|
|
99
|
+
readonly shape: "openai";
|
|
100
|
+
readonly baseUrl: "https://openrouter.ai/api";
|
|
101
|
+
readonly auth: "key";
|
|
102
|
+
readonly defaultModel: "deepseek/deepseek-v4.1-flash";
|
|
103
|
+
readonly models: ["deepseek/deepseek-v4.1-flash", "z-ai/glm-5.3-flash", "qwen/qwen3.7-max"];
|
|
104
|
+
};
|
|
105
|
+
readonly groq: {
|
|
106
|
+
readonly shape: "openai";
|
|
107
|
+
readonly baseUrl: "https://api.groq.com/openai/v1";
|
|
108
|
+
readonly auth: "key";
|
|
109
|
+
readonly defaultModel: "llama-3.3-70b-versatile";
|
|
110
|
+
readonly models: ["llama-3.3-70b-versatile", "qwen/qwen3.8-27b"];
|
|
111
|
+
};
|
|
112
|
+
readonly mistral: {
|
|
113
|
+
readonly shape: "openai";
|
|
114
|
+
readonly baseUrl: "https://api.mistral.ai/v1";
|
|
115
|
+
readonly auth: "key";
|
|
116
|
+
readonly defaultModel: "devstral-2512";
|
|
117
|
+
readonly models: ["devstral-2512", "magistral-small", "mistral-small-2506"];
|
|
118
|
+
};
|
|
119
|
+
readonly xai: {
|
|
120
|
+
readonly shape: "openai";
|
|
121
|
+
readonly baseUrl: "https://api.x.ai/v1";
|
|
122
|
+
readonly auth: "key";
|
|
123
|
+
readonly defaultModel: "grok-4.5";
|
|
124
|
+
readonly models: ["grok-4.5", "grok-4.3", "grok-4.20-0309-reasoning"];
|
|
125
|
+
};
|
|
126
|
+
readonly together: {
|
|
127
|
+
readonly shape: "openai";
|
|
128
|
+
readonly baseUrl: "https://api.together.xyz/v1";
|
|
129
|
+
readonly auth: "key";
|
|
130
|
+
readonly defaultModel: "deepseek-ai/DeepSeek-V3";
|
|
131
|
+
};
|
|
132
|
+
readonly fireworks: {
|
|
133
|
+
readonly shape: "openai";
|
|
134
|
+
readonly baseUrl: "https://api.fireworks.ai/inference/v1";
|
|
135
|
+
readonly auth: "key";
|
|
136
|
+
};
|
|
137
|
+
readonly cerebras: {
|
|
138
|
+
readonly shape: "openai";
|
|
139
|
+
readonly baseUrl: "https://api.cerebras.ai/v1";
|
|
140
|
+
readonly auth: "key";
|
|
141
|
+
readonly defaultModel: "gpt-oss-120b";
|
|
142
|
+
readonly models: ["gpt-oss-120b", "qwen-3.8-27b"];
|
|
143
|
+
};
|
|
144
|
+
readonly moonshot: {
|
|
145
|
+
readonly shape: "openai";
|
|
146
|
+
readonly baseUrl: "https://api.moonshot.ai/v1";
|
|
147
|
+
readonly auth: "key";
|
|
148
|
+
readonly defaultModel: "kimi-k2.7-code";
|
|
149
|
+
readonly models: ["kimi-k2.7-code", "kimi-k2.7-code-highspeed", "kimi-k3"];
|
|
150
|
+
};
|
|
151
|
+
readonly zhipu: {
|
|
152
|
+
readonly shape: "openai";
|
|
153
|
+
readonly baseUrl: "https://api.z.ai/api/paas/v4";
|
|
154
|
+
readonly auth: "key";
|
|
155
|
+
readonly defaultModel: "glm-5.3-flash";
|
|
156
|
+
readonly models: ["glm-5.3-flash", "glm-5.2", "glm-4.7"];
|
|
157
|
+
};
|
|
158
|
+
readonly minimax: {
|
|
159
|
+
readonly shape: "anthropic";
|
|
160
|
+
readonly baseUrl: "https://api.minimax.io/anthropic";
|
|
161
|
+
readonly auth: "key";
|
|
162
|
+
readonly defaultModel: "MiniMax-M2.5";
|
|
163
|
+
readonly models: ["MiniMax-M3", "MiniMax-M2.5", "MiniMax-M2.1"];
|
|
164
|
+
};
|
|
165
|
+
readonly zai: {
|
|
166
|
+
readonly shape: "anthropic";
|
|
167
|
+
readonly baseUrl: "https://api.z.ai/api/anthropic";
|
|
168
|
+
readonly auth: "bearer";
|
|
169
|
+
readonly defaultModel: "glm-5.3-flash";
|
|
170
|
+
readonly models: ["glm-5.3-flash", "glm-5.3-highspeed", "glm-5.2", "glm-5-turbo"];
|
|
171
|
+
readonly explicitNone: true;
|
|
172
|
+
};
|
|
173
|
+
readonly kimi: {
|
|
174
|
+
readonly shape: "anthropic";
|
|
175
|
+
readonly baseUrl: "https://api.kimi.ai/coding";
|
|
176
|
+
readonly auth: "bearer";
|
|
177
|
+
readonly defaultModel: "kimi-for-coding";
|
|
178
|
+
readonly models: ["kimi-for-coding", "kimi-for-coding-highspeed", "k3"];
|
|
179
|
+
};
|
|
180
|
+
/** Alibaba's dashscope coding plan — OpenAI-compatible per its registry. */
|
|
181
|
+
readonly "alibaba-coding-plan": {
|
|
182
|
+
readonly shape: "openai";
|
|
183
|
+
readonly baseUrl: "https://coding-intl.dashscope.aliyuncs.com/v1";
|
|
184
|
+
readonly auth: "bearer";
|
|
185
|
+
readonly defaultModel: "qwen3.7-max";
|
|
186
|
+
readonly models: ["qwen3.7-max", "qwen3-coder-next", "glm-4.7"];
|
|
187
|
+
};
|
|
188
|
+
/** QwenCloud's token plan — Anthropic wire (measured by tabrunner). */
|
|
189
|
+
readonly qwen: {
|
|
190
|
+
readonly shape: "anthropic";
|
|
191
|
+
readonly baseUrl: "https://token-plan.ap-southeast-1.maas.aliyuncs.com/apps/anthropic";
|
|
192
|
+
readonly auth: "bearer";
|
|
193
|
+
readonly defaultModel: "qwen3.8-max";
|
|
194
|
+
readonly models: ["qwen3.8-max", "qwen3.6-flash"];
|
|
195
|
+
};
|
|
196
|
+
readonly ollama: {
|
|
197
|
+
readonly shape: "openai";
|
|
198
|
+
readonly baseUrl: "http://localhost:11434/v1";
|
|
199
|
+
readonly auth: "bearer";
|
|
200
|
+
};
|
|
201
|
+
readonly lmstudio: {
|
|
202
|
+
readonly shape: "openai";
|
|
203
|
+
readonly baseUrl: "http://127.0.0.1:1234/v1";
|
|
204
|
+
readonly auth: "bearer";
|
|
205
|
+
};
|
|
206
|
+
readonly vllm: {
|
|
207
|
+
readonly shape: "openai";
|
|
208
|
+
readonly baseUrl: "http://localhost:8000/v1";
|
|
209
|
+
readonly auth: "bearer";
|
|
210
|
+
};
|
|
211
|
+
readonly claude: {
|
|
212
|
+
readonly shape: "anthropic";
|
|
213
|
+
readonly baseUrl: "https://api.anthropic.com";
|
|
214
|
+
readonly auth: "oauth";
|
|
215
|
+
readonly defaultModel: "claude-sonnet-4-6";
|
|
216
|
+
readonly models: ["claude-sonnet-4-6", "claude-opus-5"];
|
|
217
|
+
readonly headers: {
|
|
218
|
+
readonly "anthropic-beta": "claude-code-20250219,oauth-2025-04-20";
|
|
219
|
+
};
|
|
220
|
+
};
|
|
221
|
+
/** The Codex backend behind a ChatGPT sign-in — Responses wire, no public
|
|
222
|
+
* model list, so these ids are the list. */
|
|
223
|
+
readonly chatgpt: {
|
|
224
|
+
readonly shape: "responses";
|
|
225
|
+
readonly baseUrl: "https://chatgpt.com/backend-api/codex";
|
|
226
|
+
readonly auth: "oauth";
|
|
227
|
+
readonly defaultModel: "gpt-5.3-codex";
|
|
228
|
+
readonly models: ["gpt-5.3-codex", "gpt-5.5", "gpt-5.4-mini"];
|
|
229
|
+
};
|
|
230
|
+
/** Kimi's coding endpoint reached with a subscription token instead of a
|
|
231
|
+
* key — Kimi bills the two separately. */
|
|
232
|
+
readonly "kimi-plan": {
|
|
233
|
+
readonly shape: "anthropic";
|
|
234
|
+
readonly baseUrl: "https://api.kimi.ai/coding";
|
|
235
|
+
readonly auth: "oauth";
|
|
236
|
+
readonly defaultModel: "kimi-for-coding";
|
|
237
|
+
};
|
|
238
|
+
readonly "github-copilot": {
|
|
239
|
+
readonly shape: "openai";
|
|
240
|
+
readonly baseUrl: "https://api.githubcopilot.com";
|
|
241
|
+
readonly auth: "oauth";
|
|
242
|
+
readonly defaultModel: "gpt-5.6-sol";
|
|
243
|
+
readonly models: ["gpt-5.6-sol", "claude-opus-5", "claude-opus-4.8", "kimi-k2.7-code"];
|
|
244
|
+
};
|
|
245
|
+
};
|
|
246
|
+
export type ProviderPresetId = keyof typeof PROVIDER_PRESETS;
|
|
247
|
+
/** Every valid preset id — the factory's unknown-id error lists these. */
|
|
248
|
+
export declare const PRESET_IDS: ProviderPresetId[];
|
|
249
|
+
//# sourceMappingURL=presets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE1E;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEpD,MAAM,WAAW,cAAc;IAC7B,2BAA2B;IAC3B,KAAK,EAAE,WAAW,CAAC;IACnB;gEAC4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,UAAU,CAAC;IACjB,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;2EACuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;4DAKwD;IACxD,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;IAyB3B;4CACwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAuGxC,4EAA4E;;;;;;;;IAQ5E,uEAAuE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqCvE;iDAC6C;;;;;;;;IAQ7C;+CAC2C;;;;;;;;;;;;;;CAcM,CAAC;AAEpD,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,gBAAgB,CAAC;AAE7D,0EAA0E;AAC1E,eAAO,MAAM,UAAU,EAAoC,gBAAgB,EAAE,CAAC"}
|
package/dist/presets.js
ADDED
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
export const PROVIDER_PRESETS = {
|
|
2
|
+
// ── Keyed, native shapes ────────────────────────────────────────────────
|
|
3
|
+
anthropic: {
|
|
4
|
+
shape: "anthropic",
|
|
5
|
+
baseUrl: "https://api.anthropic.com",
|
|
6
|
+
auth: "key",
|
|
7
|
+
defaultModel: "claude-sonnet-4-6",
|
|
8
|
+
models: ["claude-sonnet-4-6", "claude-opus-5", "claude-fable-5-1"],
|
|
9
|
+
},
|
|
10
|
+
openai: {
|
|
11
|
+
shape: "openai",
|
|
12
|
+
baseUrl: "https://api.openai.com",
|
|
13
|
+
auth: "key",
|
|
14
|
+
defaultModel: "gpt-5.6-sol",
|
|
15
|
+
models: ["gpt-5.6-sol", "gpt-5-pro", "gpt-5-nano"],
|
|
16
|
+
},
|
|
17
|
+
google: {
|
|
18
|
+
// Native Generative Language REST — the adapter authenticates with
|
|
19
|
+
// `x-goog-api-key` (NOT Bearer) and fixes its own /v1… paths.
|
|
20
|
+
shape: "gemini",
|
|
21
|
+
baseUrl: "https://generativelanguage.googleapis.com",
|
|
22
|
+
auth: "key",
|
|
23
|
+
defaultModel: "gemini-3.1-pro",
|
|
24
|
+
models: ["gemini-3.1-pro", "gemini-2.5-flash"],
|
|
25
|
+
},
|
|
26
|
+
/** Gemini behind its OpenAI-compatible route — the drop-in for codebases
|
|
27
|
+
* that only speak the openai shape. */
|
|
28
|
+
"google-openai": {
|
|
29
|
+
shape: "openai",
|
|
30
|
+
baseUrl: "https://generativelanguage.googleapis.com/v1beta/openai",
|
|
31
|
+
auth: "key",
|
|
32
|
+
defaultModel: "gemini-3.1-pro",
|
|
33
|
+
models: ["gemini-3.1-pro", "gemini-2.5-flash"],
|
|
34
|
+
},
|
|
35
|
+
deepseek: {
|
|
36
|
+
shape: "openai",
|
|
37
|
+
baseUrl: "https://api.deepseek.com",
|
|
38
|
+
auth: "key",
|
|
39
|
+
defaultModel: "deepseek-v4-flash",
|
|
40
|
+
models: ["deepseek-v4-flash", "deepseek-v4-pro", "deepseek-flash"],
|
|
41
|
+
// Text-only API — an image part in the body is a hard 400 (measured).
|
|
42
|
+
textOnly: true,
|
|
43
|
+
},
|
|
44
|
+
openrouter: {
|
|
45
|
+
shape: "openai",
|
|
46
|
+
baseUrl: "https://openrouter.ai/api",
|
|
47
|
+
auth: "key",
|
|
48
|
+
defaultModel: "deepseek/deepseek-v4.1-flash",
|
|
49
|
+
models: ["deepseek/deepseek-v4.1-flash", "z-ai/glm-5.3-flash", "qwen/qwen3.7-max"],
|
|
50
|
+
},
|
|
51
|
+
groq: {
|
|
52
|
+
shape: "openai",
|
|
53
|
+
baseUrl: "https://api.groq.com/openai/v1",
|
|
54
|
+
auth: "key",
|
|
55
|
+
defaultModel: "llama-3.3-70b-versatile",
|
|
56
|
+
models: ["llama-3.3-70b-versatile", "qwen/qwen3.8-27b"],
|
|
57
|
+
},
|
|
58
|
+
mistral: {
|
|
59
|
+
shape: "openai",
|
|
60
|
+
baseUrl: "https://api.mistral.ai/v1",
|
|
61
|
+
auth: "key",
|
|
62
|
+
defaultModel: "devstral-2512",
|
|
63
|
+
models: ["devstral-2512", "magistral-small", "mistral-small-2506"],
|
|
64
|
+
},
|
|
65
|
+
xai: {
|
|
66
|
+
shape: "openai",
|
|
67
|
+
baseUrl: "https://api.x.ai/v1",
|
|
68
|
+
auth: "key",
|
|
69
|
+
defaultModel: "grok-4.5",
|
|
70
|
+
models: ["grok-4.5", "grok-4.3", "grok-4.20-0309-reasoning"],
|
|
71
|
+
},
|
|
72
|
+
together: {
|
|
73
|
+
shape: "openai",
|
|
74
|
+
baseUrl: "https://api.together.xyz/v1",
|
|
75
|
+
auth: "key",
|
|
76
|
+
defaultModel: "deepseek-ai/DeepSeek-V3",
|
|
77
|
+
},
|
|
78
|
+
fireworks: {
|
|
79
|
+
shape: "openai",
|
|
80
|
+
baseUrl: "https://api.fireworks.ai/inference/v1",
|
|
81
|
+
auth: "key",
|
|
82
|
+
},
|
|
83
|
+
cerebras: {
|
|
84
|
+
shape: "openai",
|
|
85
|
+
baseUrl: "https://api.cerebras.ai/v1",
|
|
86
|
+
auth: "key",
|
|
87
|
+
defaultModel: "gpt-oss-120b",
|
|
88
|
+
models: ["gpt-oss-120b", "qwen-3.8-27b"],
|
|
89
|
+
},
|
|
90
|
+
moonshot: {
|
|
91
|
+
shape: "openai",
|
|
92
|
+
baseUrl: "https://api.moonshot.ai/v1",
|
|
93
|
+
auth: "key",
|
|
94
|
+
defaultModel: "kimi-k2.7-code",
|
|
95
|
+
models: ["kimi-k2.7-code", "kimi-k2.7-code-highspeed", "kimi-k3"],
|
|
96
|
+
},
|
|
97
|
+
zhipu: {
|
|
98
|
+
shape: "openai",
|
|
99
|
+
baseUrl: "https://api.z.ai/api/paas/v4",
|
|
100
|
+
auth: "key",
|
|
101
|
+
defaultModel: "glm-5.3-flash",
|
|
102
|
+
models: ["glm-5.3-flash", "glm-5.2", "glm-4.7"],
|
|
103
|
+
},
|
|
104
|
+
minimax: {
|
|
105
|
+
shape: "anthropic",
|
|
106
|
+
baseUrl: "https://api.minimax.io/anthropic",
|
|
107
|
+
auth: "key",
|
|
108
|
+
defaultModel: "MiniMax-M2.5",
|
|
109
|
+
models: ["MiniMax-M3", "MiniMax-M2.5", "MiniMax-M2.1"],
|
|
110
|
+
},
|
|
111
|
+
// ── Coding plans — Anthropic wire + Bearer (measured family trait) ─────
|
|
112
|
+
zai: {
|
|
113
|
+
shape: "anthropic",
|
|
114
|
+
baseUrl: "https://api.z.ai/api/anthropic",
|
|
115
|
+
auth: "bearer",
|
|
116
|
+
defaultModel: "glm-5.3-flash",
|
|
117
|
+
models: ["glm-5.3-flash", "glm-5.3-highspeed", "glm-5.2", "glm-5-turbo"],
|
|
118
|
+
// Model ids are BARE here — the gateway-prefixed spelling
|
|
119
|
+
// (`z-ai/glm-5.3-flash`) answers 400 [1211] Unknown Model.
|
|
120
|
+
explicitNone: true,
|
|
121
|
+
},
|
|
122
|
+
kimi: {
|
|
123
|
+
shape: "anthropic",
|
|
124
|
+
baseUrl: "https://api.kimi.ai/coding",
|
|
125
|
+
auth: "bearer",
|
|
126
|
+
defaultModel: "kimi-for-coding",
|
|
127
|
+
models: ["kimi-for-coding", "kimi-for-coding-highspeed", "k3"],
|
|
128
|
+
},
|
|
129
|
+
/** Alibaba's dashscope coding plan — OpenAI-compatible per its registry. */
|
|
130
|
+
"alibaba-coding-plan": {
|
|
131
|
+
shape: "openai",
|
|
132
|
+
baseUrl: "https://coding-intl.dashscope.aliyuncs.com/v1",
|
|
133
|
+
auth: "bearer",
|
|
134
|
+
defaultModel: "qwen3.7-max",
|
|
135
|
+
models: ["qwen3.7-max", "qwen3-coder-next", "glm-4.7"],
|
|
136
|
+
},
|
|
137
|
+
/** QwenCloud's token plan — Anthropic wire (measured by tabrunner). */
|
|
138
|
+
qwen: {
|
|
139
|
+
shape: "anthropic",
|
|
140
|
+
baseUrl: "https://token-plan.ap-southeast-1.maas.aliyuncs.com/apps/anthropic",
|
|
141
|
+
auth: "bearer",
|
|
142
|
+
defaultModel: "qwen3.8-max",
|
|
143
|
+
models: ["qwen3.8-max", "qwen3.6-flash"],
|
|
144
|
+
},
|
|
145
|
+
// ── Local runtimes ──────────────────────────────────────────────────────
|
|
146
|
+
ollama: {
|
|
147
|
+
shape: "openai",
|
|
148
|
+
baseUrl: "http://localhost:11434/v1",
|
|
149
|
+
auth: "bearer",
|
|
150
|
+
},
|
|
151
|
+
lmstudio: {
|
|
152
|
+
shape: "openai",
|
|
153
|
+
baseUrl: "http://127.0.0.1:1234/v1",
|
|
154
|
+
auth: "bearer",
|
|
155
|
+
},
|
|
156
|
+
vllm: {
|
|
157
|
+
shape: "openai",
|
|
158
|
+
baseUrl: "http://localhost:8000/v1",
|
|
159
|
+
auth: "bearer",
|
|
160
|
+
},
|
|
161
|
+
// ── OAuth — the caller owns the sign-in flow and hands over the token ───
|
|
162
|
+
claude: {
|
|
163
|
+
shape: "anthropic",
|
|
164
|
+
baseUrl: "https://api.anthropic.com",
|
|
165
|
+
auth: "oauth",
|
|
166
|
+
defaultModel: "claude-sonnet-4-6",
|
|
167
|
+
models: ["claude-sonnet-4-6", "claude-opus-5"],
|
|
168
|
+
// The beta flag is what switches the API into OAuth-token mode (measured
|
|
169
|
+
// by tabrunner's Claude plan sign-in).
|
|
170
|
+
headers: { "anthropic-beta": "claude-code-20250219,oauth-2025-04-20" },
|
|
171
|
+
},
|
|
172
|
+
/** The Codex backend behind a ChatGPT sign-in — Responses wire, no public
|
|
173
|
+
* model list, so these ids are the list. */
|
|
174
|
+
chatgpt: {
|
|
175
|
+
shape: "responses",
|
|
176
|
+
baseUrl: "https://chatgpt.com/backend-api/codex",
|
|
177
|
+
auth: "oauth",
|
|
178
|
+
defaultModel: "gpt-5.3-codex",
|
|
179
|
+
models: ["gpt-5.3-codex", "gpt-5.5", "gpt-5.4-mini"],
|
|
180
|
+
},
|
|
181
|
+
/** Kimi's coding endpoint reached with a subscription token instead of a
|
|
182
|
+
* key — Kimi bills the two separately. */
|
|
183
|
+
"kimi-plan": {
|
|
184
|
+
shape: "anthropic",
|
|
185
|
+
baseUrl: "https://api.kimi.ai/coding",
|
|
186
|
+
auth: "oauth",
|
|
187
|
+
defaultModel: "kimi-for-coding",
|
|
188
|
+
},
|
|
189
|
+
"github-copilot": {
|
|
190
|
+
shape: "openai",
|
|
191
|
+
baseUrl: "https://api.githubcopilot.com",
|
|
192
|
+
auth: "oauth",
|
|
193
|
+
defaultModel: "gpt-5.6-sol",
|
|
194
|
+
models: ["gpt-5.6-sol", "claude-opus-5", "claude-opus-4.8", "kimi-k2.7-code"],
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
/** Every valid preset id — the factory's unknown-id error lists these. */
|
|
198
|
+
export const PRESET_IDS = Object.keys(PROVIDER_PRESETS);
|
|
199
|
+
//# sourceMappingURL=presets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,15 @@ export interface AnthropicConfig {
|
|
|
21
21
|
/** Send the key as a Bearer instead of `x-api-key` — what a subscription
|
|
22
22
|
* access token needs. */
|
|
23
23
|
bearer?: boolean;
|
|
24
|
+
/** Say "no thinking" with an explicit `thinking: { type: "disabled" }` when
|
|
25
|
+
* effort resolves to none, instead of omitting the field. For endpoints
|
|
26
|
+
* where an absent field means the MODEL's default, not off — Z.ai's coding
|
|
27
|
+
* endpoint reads silence as thinking ON for reasoning-mandatory models like
|
|
28
|
+
* GLM 5.3 Flash (measured 2026-09-13: omit → thinking block; disabled →
|
|
29
|
+
* none), and it accepts the marker natively. Native Anthropic has no such
|
|
30
|
+
* marker and defaults to off when the field is absent, so leave this unset
|
|
31
|
+
* there. */
|
|
32
|
+
explicitNone?: boolean;
|
|
24
33
|
}
|
|
25
34
|
export declare function toAnthropicMessages(messages: readonly ChatMessage[]): {
|
|
26
35
|
system?: unknown[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAEV,WAAW,EAEX,MAAM,EAEN,QAAQ,EAIT,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd;wCACoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;uEAEmE;IACnE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB;wEACoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;8BAC0B;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAEV,WAAW,EAEX,MAAM,EAEN,QAAQ,EAIT,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd;wCACoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;uEAEmE;IACnE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB;wEACoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;8BAC0B;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;;iBAOa;IACb,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAsFD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,GAAG;IACrE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB,CAqDA;AA2BD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,QAAQ,CAuKzE"}
|
|
@@ -184,11 +184,16 @@ export function createAnthropicProvider(config) {
|
|
|
184
184
|
delete request.temperature;
|
|
185
185
|
delete request.top_p;
|
|
186
186
|
}
|
|
187
|
+
else if (config.explicitNone) {
|
|
188
|
+
// The one dialect where silence means the model default — which is ON
|
|
189
|
+
// for a reasoning-mandatory model — so "none" has to be said out loud.
|
|
190
|
+
request.thinking = { type: "disabled" };
|
|
191
|
+
}
|
|
187
192
|
// Anthropic reports cache reads and writes as fields of their OWN,
|
|
188
193
|
// EXCLUDED from `input_tokens` — where the OpenAI shapes report a cached
|
|
189
194
|
// subset already inside the prompt count. Reconciling here is what keeps
|
|
190
195
|
// one usage record meaningful across both, and a cost figure honest.
|
|
191
|
-
let
|
|
196
|
+
let freshInputTokens = 0;
|
|
192
197
|
let cachedInputTokens = 0;
|
|
193
198
|
let cacheWriteTokens = 0;
|
|
194
199
|
let outputTokens = 0;
|
|
@@ -226,7 +231,7 @@ export function createAnthropicProvider(config) {
|
|
|
226
231
|
const usage = event.message?.usage;
|
|
227
232
|
cachedInputTokens = usage?.cache_read_input_tokens ?? 0;
|
|
228
233
|
cacheWriteTokens = usage?.cache_creation_input_tokens ?? 0;
|
|
229
|
-
|
|
234
|
+
freshInputTokens = usage?.input_tokens ?? 0;
|
|
230
235
|
break;
|
|
231
236
|
}
|
|
232
237
|
case "content_block_start": {
|
|
@@ -264,6 +269,12 @@ export function createAnthropicProvider(config) {
|
|
|
264
269
|
toolCall = null;
|
|
265
270
|
break;
|
|
266
271
|
case "message_delta": {
|
|
272
|
+
// Z.ai starts with zero input usage and reports the real totals here.
|
|
273
|
+
// These are cumulative counters, not increments. Native Anthropic
|
|
274
|
+
// usually sends only output_tokens here, so absent fields retain theirs.
|
|
275
|
+
freshInputTokens = event.usage?.input_tokens ?? freshInputTokens;
|
|
276
|
+
cachedInputTokens = event.usage?.cache_read_input_tokens ?? cachedInputTokens;
|
|
277
|
+
cacheWriteTokens = event.usage?.cache_creation_input_tokens ?? cacheWriteTokens;
|
|
267
278
|
outputTokens = event.usage?.output_tokens ?? outputTokens;
|
|
268
279
|
const finishReason = mapStopReason(event.delta?.stop_reason);
|
|
269
280
|
if (finishReason)
|
|
@@ -273,7 +284,12 @@ export function createAnthropicProvider(config) {
|
|
|
273
284
|
case "message_stop":
|
|
274
285
|
yield {
|
|
275
286
|
type: "usage",
|
|
276
|
-
usage: {
|
|
287
|
+
usage: {
|
|
288
|
+
inputTokens: freshInputTokens + cachedInputTokens + cacheWriteTokens,
|
|
289
|
+
cachedInputTokens,
|
|
290
|
+
cacheWriteTokens,
|
|
291
|
+
outputTokens,
|
|
292
|
+
},
|
|
277
293
|
};
|
|
278
294
|
break;
|
|
279
295
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"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"}
|