maka-agent 0.2.0-dev.48.20260923 → 0.2.0-dev.49.20260924
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/acp/session-event-mapper.js +1 -4
- package/dist/onboarding-catalog.js +20 -4
- package/dist/pi-transcript.js +0 -8
- package/dist/pi-tui-pickers.js +1 -1
- package/dist/pi-tui-runner.js +6 -4
- package/dist/runtime-host-onboarding.js +5 -3
- package/dist/runtime-host-session-channel.js +9 -3
- package/native/runtime-host-windows-task-launcher/prebuilds/win32-x64/maka-runtime-host-task-launcher.exe +0 -0
- package/node_modules/@maka/core/dist/events.js +13 -0
- package/node_modules/@maka/core/dist/llm-connections.js +2 -5
- package/node_modules/@maka/core/dist/model-facts.js +2 -4
- package/node_modules/@maka/core/dist/model-metadata.generated.js +345 -248
- package/node_modules/@maka/core/dist/model-thinking.js +17 -17
- package/node_modules/@maka/core/dist/model-web-search.js +7 -9
- package/node_modules/@maka/core/dist/models-dev-projection.js +1 -1
- package/node_modules/@maka/core/dist/onboarding.js +1 -4
- package/node_modules/@maka/core/dist/provider-registry.js +60 -86
- package/node_modules/@maka/core/dist/runtime-event.js +2 -2
- package/node_modules/@maka/core/dist/runtime-policy/connection-catalog-codec.js +28 -16
- package/node_modules/@maka/core/dist/runtime-policy.js +1 -1
- package/node_modules/@maka/core/dist/session.js +23 -9
- package/node_modules/@maka/core/dist/transcript-search.js +1 -0
- package/node_modules/@maka/core/dist/usage-stats/types.js +1 -0
- package/node_modules/@maka/eval/dist/harbor-maka-subject.js +3 -0
- package/node_modules/@maka/eval/dist/maka-subject.js +8 -1
- package/node_modules/@maka/runtime/dist/ai-sdk-backend.js +1 -11
- package/node_modules/@maka/runtime/dist/ai-sdk-compaction.js +2 -12
- package/node_modules/@maka/runtime/dist/ai-sdk-turn.js +3 -71
- package/node_modules/@maka/runtime/dist/conversation-copy.js +2 -2
- package/node_modules/@maka/runtime/dist/local-web-fetch.js +23 -11
- package/node_modules/@maka/runtime/dist/model-adapter.js +10 -5
- package/node_modules/@maka/runtime/dist/model-factory.js +33 -30
- package/node_modules/@maka/runtime/dist/model-fetcher.js +4 -1
- package/node_modules/@maka/runtime/dist/model-runtime.js +3 -9
- package/node_modules/@maka/runtime/dist/read-page.js +11 -8
- package/node_modules/@maka/runtime/dist/recovery-resolver.js +47 -20
- package/node_modules/@maka/runtime/dist/runtime-event-backfill.js +1 -0
- package/node_modules/@maka/runtime/dist/scheduled-task-tools.js +39 -8
- package/node_modules/@maka/runtime/dist/session-manager.js +12 -2
- package/node_modules/@maka/runtime/dist/telemetry/model-pricing.generated.js +141 -134
- package/node_modules/@maka/runtime/dist/tool-result-archive-transition.js +3 -3
- package/node_modules/@maka/runtime/dist/workers/filesystem-worker.js +7 -6
- package/node_modules/@maka/runtime-host/dist/adapter/session-projector.js +28 -62
- package/node_modules/@maka/runtime-host/dist/client/hosted-execution-target.js +7 -1
- package/node_modules/@maka/runtime-host/dist/client/session-subscription.js +3 -0
- package/node_modules/@maka/runtime-host/dist/protocol/connection-effects.js +6 -3
- package/node_modules/@maka/runtime-host/dist/protocol/index.js +5 -1
- package/node_modules/@maka/runtime-host/dist/protocol/operations.js +4 -1
- package/node_modules/@maka/runtime-host/dist/protocol/prompt-suggestions.js +61 -0
- package/node_modules/@maka/runtime-host/dist/protocol/runtime-policy.js +4 -1
- package/node_modules/@maka/runtime-host/dist/protocol/session-continuity.js +2 -1
- package/node_modules/@maka/runtime-host/dist/server/connection-effect-coordinator.js +3 -0
- package/node_modules/@maka/runtime-host/dist/server/execution-composition.js +54 -6
- package/node_modules/@maka/runtime-host/dist/server/execution-model-authority.js +38 -2
- package/node_modules/@maka/runtime-host/dist/server/generated-text.js +39 -0
- package/node_modules/@maka/runtime-host/dist/server/hosted-execution-tool-profile.js +8 -0
- package/node_modules/@maka/runtime-host/dist/server/prompt-suggestion.js +179 -0
- package/node_modules/@maka/runtime-host/dist/server/root-turn-coordinator.js +2 -2
- package/node_modules/@maka/runtime-host/dist/server/session-continuity-coordinator.js +48 -16
- package/node_modules/@maka/runtime-host/dist/server/session-title.js +3 -16
- package/node_modules/@maka/runtime-host/dist/server/session-transcript-reader.js +38 -3
- package/node_modules/@maka/runtime-host/dist/server/shared-session-transcript.js +3 -0
- package/node_modules/@maka/runtime-host/dist/server/workhub-coordination-action-gate.js +6 -13
- package/node_modules/@maka/runtime-host/dist/server/workhub-coordination-coordinator.js +35 -11
- package/node_modules/@maka/storage/dist/config-transfer.js +14 -8
- package/node_modules/@maka/storage/dist/execution-stores.js +4 -3
- package/node_modules/@maka/storage/dist/interaction-store.js +13 -0
- package/node_modules/@maka/storage/dist/runtime-policy/connection-catalog-document.js +28 -17
- package/node_modules/@maka/storage/dist/runtime-policy/coordinator.js +9 -3
- package/node_modules/@maka/storage/dist/runtime-policy/legacy-custom-connection.js +65 -0
- package/node_modules/@maka/storage/dist/runtime-policy/onboarding-transaction.js +10 -5
- package/node_modules/@maka/storage/dist/session-bundle-policy.js +11 -0
- package/node_modules/@maka/storage/dist/session-store.js +29 -6
- package/node_modules/@maka/storage/dist/sqlite-core-execution-schema.js +3 -0
- package/node_modules/@maka/storage/dist/sqlite-runtime-store.js +125 -7
- package/node_modules/@maka/storage/dist/sqlite-session-metadata-store.js +5 -3
- package/node_modules/@maka/storage/dist/usage-screen.js +138 -108
- package/package.json +1 -1
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
* under the License.
|
|
18
18
|
*/
|
|
19
19
|
import { lookupModelMetadata } from './model-metadata.js';
|
|
20
|
+
import { isModelApiProtocol } from './provider-registry.js';
|
|
20
21
|
export const THINKING_LEVELS = [
|
|
21
22
|
'off',
|
|
22
23
|
'minimal',
|
|
@@ -86,6 +87,7 @@ const APPLY_PATCH_MODELS = new Set([
|
|
|
86
87
|
'gpt-5.6-terra',
|
|
87
88
|
'gpt-5.6-luna',
|
|
88
89
|
'gpt-6-astra',
|
|
90
|
+
'deepseek-flash',
|
|
89
91
|
'deepseek-v4-flash',
|
|
90
92
|
'deepseek-v4-flash-vision-exp',
|
|
91
93
|
'deepseek-v4-pro',
|
|
@@ -143,9 +145,7 @@ function normalizeModelOverride(entry) {
|
|
|
143
145
|
declared.capabilities = entry.capabilities;
|
|
144
146
|
if (isRecord(entry.modalities))
|
|
145
147
|
declared.modalities = entry.modalities;
|
|
146
|
-
if (entry.apiProtocol
|
|
147
|
-
entry.apiProtocol === 'openai-responses' ||
|
|
148
|
-
entry.apiProtocol === 'anthropic-messages')
|
|
148
|
+
if (isModelApiProtocol(entry.apiProtocol))
|
|
149
149
|
declared.apiProtocol = entry.apiProtocol;
|
|
150
150
|
if (entry.serviceTier === 'fast')
|
|
151
151
|
declared.serviceTier = 'fast';
|
|
@@ -174,13 +174,6 @@ export function normalizeModelOverrides(table) {
|
|
|
174
174
|
}
|
|
175
175
|
return parsed.length > 0 ? Object.fromEntries(parsed) : undefined;
|
|
176
176
|
}
|
|
177
|
-
/** Remove profiles for models explicitly retired from a provider. */
|
|
178
|
-
export function pruneModelOverrides(table, retainedModelIds) {
|
|
179
|
-
if (table === undefined)
|
|
180
|
-
return undefined;
|
|
181
|
-
const kept = Object.fromEntries(Object.entries(table).filter(([modelId]) => retainedModelIds.includes(modelId)));
|
|
182
|
-
return Object.keys(kept).length > 0 ? kept : undefined;
|
|
183
|
-
}
|
|
184
177
|
/**
|
|
185
178
|
* The one read seam for user declarations: thinking, vision, and context
|
|
186
179
|
* window reads all enter through here, so the precedence of a declaration over
|
|
@@ -195,12 +188,19 @@ export function modelOverride(connection, modelId) {
|
|
|
195
188
|
export function declaredContextWindow(connection, modelId) {
|
|
196
189
|
return modelOverride(connection, modelId)?.compactionThreshold;
|
|
197
190
|
}
|
|
191
|
+
/** The model's own wire declaration, then the discovered one, then the connection default. */
|
|
192
|
+
export function declaredModelApiProtocol(connection, modelId) {
|
|
193
|
+
return (modelOverride(connection, modelId)?.apiProtocol ??
|
|
194
|
+
connection.models?.find((model) => model.id === modelId)?.apiProtocol ??
|
|
195
|
+
connection.defaultApiProtocol);
|
|
196
|
+
}
|
|
198
197
|
/**
|
|
199
198
|
* Mirrors @ai-sdk/openai@4.0.42 priority-processing detection. The UI and
|
|
200
199
|
* runtime share this gate so a saved Fast declaration always reaches the wire.
|
|
201
200
|
*/
|
|
202
|
-
export function
|
|
203
|
-
if (providerType !== '
|
|
201
|
+
export function supportsCustomFastServiceTier(connection, modelId) {
|
|
202
|
+
if (connection.providerType !== 'custom' ||
|
|
203
|
+
declaredModelApiProtocol(connection, modelId) !== 'openai-responses')
|
|
204
204
|
return false;
|
|
205
205
|
const oSeriesVersion = /^o(\d+)(?:-|$)/.exec(modelId)?.[1];
|
|
206
206
|
const gptMatch = /^gpt-(\d+)(?:\.(\d+))?(?:-(.+))?$/.exec(modelId);
|
|
@@ -213,12 +213,12 @@ export function supportsRelayFastServiceTier(providerType, modelId) {
|
|
|
213
213
|
(oSeriesVersion !== undefined && Number(oSeriesVersion) >= 3));
|
|
214
214
|
}
|
|
215
215
|
/**
|
|
216
|
-
*
|
|
217
|
-
* `modelOverrides[modelId].thinkingLevels` —
|
|
216
|
+
* Custom connections declare thinking support **per model** via
|
|
217
|
+
* `modelOverrides[modelId].thinkingLevels` — one endpoint may front a
|
|
218
218
|
* DeepSeek-family reasoner and a plain instruct model side by side, so the
|
|
219
219
|
* declaration granularity is the model, not the connection. Without a usable
|
|
220
|
-
* declaration for that model every provider
|
|
221
|
-
*
|
|
220
|
+
* declaration for that model every provider falls through to the
|
|
221
|
+
* metadata-derived variants.
|
|
222
222
|
*/
|
|
223
223
|
export function thinkingVariantsForConnection(connection, modelId) {
|
|
224
224
|
const declared = modelOverride(connection, modelId)?.thinkingLevels;
|
|
@@ -262,7 +262,7 @@ export function thinkingOptionsForModel(providerType, modelId) {
|
|
|
262
262
|
* Levels a model supports, in display order. Returns an empty list for
|
|
263
263
|
* non-reasoning models and for provider/model combinations whose reasoning
|
|
264
264
|
* support is not declarable from `providerType` + `modelId` alone (e.g.
|
|
265
|
-
* `
|
|
265
|
+
* `custom`, where the backing model is user-configured and
|
|
266
266
|
* unknown). The UI hides the thinking switcher when this returns `[]`.
|
|
267
267
|
*
|
|
268
268
|
* Heuristics are intentionally conservative: only patterns known to accept the
|
|
@@ -36,10 +36,10 @@ export function resolveHostedWebSearchCapability(providerType, models, modelId,
|
|
|
36
36
|
const stored = models?.find((model) => model.id === id);
|
|
37
37
|
if (stored?.capabilities?.webSearch === false)
|
|
38
38
|
return null;
|
|
39
|
-
const
|
|
39
|
+
const wire = effectiveWire ?? stored?.apiProtocol;
|
|
40
|
+
const adapter = providerHostedWebSearchAdapter(providerType, wire);
|
|
40
41
|
if (!adapter)
|
|
41
42
|
return null;
|
|
42
|
-
const wire = effectiveWire ?? stored?.apiProtocol;
|
|
43
43
|
if (wire !== undefined &&
|
|
44
44
|
((adapter.adapter === 'openai-responses' && wire !== 'openai-responses') ||
|
|
45
45
|
(adapter.adapter === 'anthropic-messages' && wire !== 'anthropic-messages'))) {
|
|
@@ -50,15 +50,18 @@ export function resolveHostedWebSearchCapability(providerType, models, modelId,
|
|
|
50
50
|
}
|
|
51
51
|
return providerDefaultHostedWebSearchCapability(providerType, id, adapter);
|
|
52
52
|
}
|
|
53
|
-
function providerHostedWebSearchAdapter(providerType) {
|
|
53
|
+
function providerHostedWebSearchAdapter(providerType, wire) {
|
|
54
54
|
switch (providerType) {
|
|
55
|
+
case 'custom':
|
|
56
|
+
return wire === 'openai-responses' || wire === 'anthropic-messages'
|
|
57
|
+
? { adapter: wire, implemented: true }
|
|
58
|
+
: null;
|
|
55
59
|
case 'deepseek':
|
|
56
60
|
// @ai-sdk/open-responses currently serializes function tools only.
|
|
57
61
|
// Mark native search unavailable so routing never hands it a provider
|
|
58
62
|
// tool that would be silently filtered from the request.
|
|
59
63
|
return { adapter: 'openai-responses', implemented: false };
|
|
60
64
|
case 'openai':
|
|
61
|
-
case 'openai-responses-compatible':
|
|
62
65
|
case 'xai':
|
|
63
66
|
case 'xai-oauth':
|
|
64
67
|
return { adapter: 'openai-responses', implemented: true };
|
|
@@ -69,7 +72,6 @@ function providerHostedWebSearchAdapter(providerType) {
|
|
|
69
72
|
case 'MiniMax':
|
|
70
73
|
case 'MiniMax-cn':
|
|
71
74
|
case 'minimax-coding-plan':
|
|
72
|
-
case 'anthropic-compatible':
|
|
73
75
|
return { adapter: 'anthropic-messages', implemented: true };
|
|
74
76
|
case 'google':
|
|
75
77
|
return { adapter: 'google-grounding', implemented: false };
|
|
@@ -104,10 +106,6 @@ function providerDefaultHostedWebSearchCapability(providerType, modelId, capabil
|
|
|
104
106
|
case 'MiniMax-cn':
|
|
105
107
|
case 'minimax-coding-plan':
|
|
106
108
|
return /^MiniMax-M(?:2\.7|3)(?:[.-]|$)/i.test(modelId) ? capability : null;
|
|
107
|
-
case 'anthropic-compatible':
|
|
108
|
-
return modelId === 'deepseek-v4-flash' ? capability : null;
|
|
109
|
-
case 'openai-responses-compatible':
|
|
110
|
-
return null;
|
|
111
109
|
case 'google':
|
|
112
110
|
return /^gemini-(?:2\.0|2\.5|3|3\.1|3\.5)(?:[.-]|$)/i.test(modelId) ? capability : null;
|
|
113
111
|
case 'zai':
|
|
@@ -36,7 +36,7 @@ export const MODELS_DEV_PROVIDERS = {
|
|
|
36
36
|
google: 'google',
|
|
37
37
|
groq: 'groq',
|
|
38
38
|
huggingface: 'huggingface',
|
|
39
|
-
'kimi-coding-plan': 'kimi-
|
|
39
|
+
'kimi-coding-plan': 'kimi-code-plan-cn',
|
|
40
40
|
MiniMax: 'minimax',
|
|
41
41
|
'MiniMax-cn': 'minimax-cn',
|
|
42
42
|
'minimax-coding-plan': 'minimax-coding-plan',
|
|
@@ -43,7 +43,7 @@ export function deriveOnboardingState(input) {
|
|
|
43
43
|
requestedModel: model,
|
|
44
44
|
});
|
|
45
45
|
if (verdict.ready) {
|
|
46
|
-
return
|
|
46
|
+
return input.hasHistory
|
|
47
47
|
? { kind: 'ready_with_history', connectionSlug: connection.slug, model: verdict.model }
|
|
48
48
|
: { kind: 'ready_empty', connectionSlug: connection.slug, model: verdict.model };
|
|
49
49
|
}
|
|
@@ -87,9 +87,6 @@ export function deriveOnboardingState(input) {
|
|
|
87
87
|
? { kind: 'blocked', reason: 'all_connections_retired' }
|
|
88
88
|
: { kind: 'blocked', reason: 'all_connections_unhealthy' };
|
|
89
89
|
}
|
|
90
|
-
function hasHistory(sessions) {
|
|
91
|
-
return sessions.length > 0;
|
|
92
|
-
}
|
|
93
90
|
/** Closed milestone ids persisted in settings. */
|
|
94
91
|
export const ONBOARDING_MILESTONE_IDS = [
|
|
95
92
|
'initial_onboarding',
|
|
@@ -17,6 +17,15 @@
|
|
|
17
17
|
* under the License.
|
|
18
18
|
*/
|
|
19
19
|
import { GENERATED_MODELS_DEV_METADATA, GENERATED_MODELS_DEV_MODEL_PROVIDER_OVERRIDES, GENERATED_MODELS_DEV_PROVIDER_FACTS, } from './model-metadata.generated.js';
|
|
20
|
+
export const MODEL_API_PROTOCOL_LABELS = {
|
|
21
|
+
'openai-chat': 'OpenAI Chat Completions',
|
|
22
|
+
'openai-responses': 'OpenAI Responses',
|
|
23
|
+
'anthropic-messages': 'Anthropic Messages',
|
|
24
|
+
};
|
|
25
|
+
export const MODEL_API_PROTOCOLS = Object.keys(MODEL_API_PROTOCOL_LABELS);
|
|
26
|
+
export function isModelApiProtocol(value) {
|
|
27
|
+
return MODEL_API_PROTOCOLS.includes(value);
|
|
28
|
+
}
|
|
20
29
|
const siliconflow = GENERATED_MODELS_DEV_PROVIDER_FACTS.siliconflow;
|
|
21
30
|
if (!siliconflow.api)
|
|
22
31
|
throw new Error('models.dev SiliconFlow provider facts are missing api');
|
|
@@ -133,7 +142,7 @@ if (fireworks.id !== 'fireworks-ai') {
|
|
|
133
142
|
}
|
|
134
143
|
if (!fireworks.api)
|
|
135
144
|
throw new Error('models.dev Fireworks AI provider facts are missing api');
|
|
136
|
-
const fireworksModelIds = toolCallingModelIds('Fireworks AI', GENERATED_MODELS_DEV_METADATA['fireworks-ai'], ['accounts/fireworks/models/kimi-
|
|
145
|
+
const fireworksModelIds = toolCallingModelIds('Fireworks AI', GENERATED_MODELS_DEV_METADATA['fireworks-ai'], ['accounts/fireworks/models/kimi-k3']).filter((id) => GENERATED_MODELS_DEV_METADATA['fireworks-ai'][id]?.lifecycle !== 'deprecated');
|
|
137
146
|
const tencentTokenHub = GENERATED_MODELS_DEV_PROVIDER_FACTS['tencent-tokenhub'];
|
|
138
147
|
if (tencentTokenHub.id !== 'tencent-tokenhub') {
|
|
139
148
|
throw new Error('models.dev Tencent TokenHub provider facts are missing stable id tencent-tokenhub');
|
|
@@ -480,7 +489,6 @@ const providerRegistry = {
|
|
|
480
489
|
protocolAdapters: {
|
|
481
490
|
'openai-chat': {
|
|
482
491
|
kind: 'openai-compatible',
|
|
483
|
-
name: 'provider',
|
|
484
492
|
normalizeUsage: true,
|
|
485
493
|
normalizeBaseUrl: true,
|
|
486
494
|
},
|
|
@@ -510,7 +518,7 @@ const providerRegistry = {
|
|
|
510
518
|
authKind: 'api_key',
|
|
511
519
|
fallbackModels: [...tencentCodingPlanModelIds],
|
|
512
520
|
status: 'ready',
|
|
513
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
521
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
514
522
|
modelDiscovery: { kind: 'protocol' },
|
|
515
523
|
category: 'domestic',
|
|
516
524
|
catalogGroup: 'plans',
|
|
@@ -523,7 +531,7 @@ const providerRegistry = {
|
|
|
523
531
|
authKind: 'api_key',
|
|
524
532
|
fallbackModels: [...volcengineCodingPlanModelIds],
|
|
525
533
|
status: 'ready',
|
|
526
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
534
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
527
535
|
modelDiscovery: { kind: 'protocol' },
|
|
528
536
|
category: 'domestic',
|
|
529
537
|
catalogGroup: 'plans',
|
|
@@ -556,7 +564,7 @@ const providerRegistry = {
|
|
|
556
564
|
authKind: 'api_key',
|
|
557
565
|
fallbackModels: [...tencentTokenPlanModelIds],
|
|
558
566
|
status: 'ready',
|
|
559
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
567
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
560
568
|
modelDiscovery: { kind: 'protocol' },
|
|
561
569
|
category: 'domestic',
|
|
562
570
|
catalogGroup: 'plans',
|
|
@@ -603,17 +611,10 @@ const providerRegistry = {
|
|
|
603
611
|
label: 'DeepSeek',
|
|
604
612
|
baseUrl: 'https://api.deepseek.com',
|
|
605
613
|
authKind: 'api_key',
|
|
606
|
-
fallbackModels: [
|
|
607
|
-
'deepseek-v4-flash',
|
|
608
|
-
'deepseek-v4-flash-vision-exp',
|
|
609
|
-
'deepseek-v4-pro',
|
|
610
|
-
'deepseek-reasoner',
|
|
611
|
-
'deepseek-chat',
|
|
612
|
-
],
|
|
614
|
+
fallbackModels: ['deepseek-flash', 'deepseek-v4-pro'],
|
|
613
615
|
status: 'ready',
|
|
614
616
|
runtimeAdapter: {
|
|
615
617
|
kind: 'openai-compatible',
|
|
616
|
-
name: 'provider',
|
|
617
618
|
responses: { adapter: 'open-responses', reasoningReplay: 'plaintext-content' },
|
|
618
619
|
},
|
|
619
620
|
modelDiscovery: { kind: 'protocol' },
|
|
@@ -628,7 +629,7 @@ const providerRegistry = {
|
|
|
628
629
|
authKind: 'api_key',
|
|
629
630
|
fallbackModels: moonshotModelIds,
|
|
630
631
|
status: 'ready',
|
|
631
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
632
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
632
633
|
modelDiscovery: { kind: 'protocol' },
|
|
633
634
|
category: 'domestic',
|
|
634
635
|
catalogGroup: 'api',
|
|
@@ -659,7 +660,7 @@ const providerRegistry = {
|
|
|
659
660
|
authKind: 'api_key',
|
|
660
661
|
fallbackModels: ['glm-5.2', 'glm-5.1', 'glm-5-turbo', 'glm-4.7', 'glm-4.5-air'],
|
|
661
662
|
status: 'ready',
|
|
662
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
663
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
663
664
|
modelDiscovery: { kind: 'protocol' },
|
|
664
665
|
category: 'domestic',
|
|
665
666
|
catalogGroup: 'plans',
|
|
@@ -698,7 +699,7 @@ const providerRegistry = {
|
|
|
698
699
|
authKind: 'api_key',
|
|
699
700
|
fallbackModels: siliconflowModelIds,
|
|
700
701
|
status: 'ready',
|
|
701
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
702
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
702
703
|
modelDiscovery: { kind: 'protocol', query: { sub_type: 'chat' } },
|
|
703
704
|
category: 'domestic',
|
|
704
705
|
catalogGroup: 'aggregators',
|
|
@@ -711,7 +712,7 @@ const providerRegistry = {
|
|
|
711
712
|
authKind: 'api_key',
|
|
712
713
|
fallbackModels: vercelModelIds,
|
|
713
714
|
status: 'ready',
|
|
714
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
715
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
715
716
|
modelDiscovery: { kind: 'protocol', auth: 'none', filter: 'language-models' },
|
|
716
717
|
category: 'overseas',
|
|
717
718
|
catalogGroup: 'aggregators',
|
|
@@ -726,7 +727,6 @@ const providerRegistry = {
|
|
|
726
727
|
status: 'ready',
|
|
727
728
|
runtimeAdapter: {
|
|
728
729
|
kind: 'openai-compatible',
|
|
729
|
-
name: 'provider',
|
|
730
730
|
responses: { adapter: 'openai', reasoningReplay: 'encrypted-content' },
|
|
731
731
|
},
|
|
732
732
|
modelDiscovery: { kind: 'protocol' },
|
|
@@ -743,7 +743,6 @@ const providerRegistry = {
|
|
|
743
743
|
status: 'ready',
|
|
744
744
|
runtimeAdapter: {
|
|
745
745
|
kind: 'openai-compatible',
|
|
746
|
-
name: 'provider',
|
|
747
746
|
responses: { adapter: 'openai', reasoningReplay: 'encrypted-content' },
|
|
748
747
|
},
|
|
749
748
|
modelDiscovery: {
|
|
@@ -759,7 +758,7 @@ const providerRegistry = {
|
|
|
759
758
|
authKind: 'api_key',
|
|
760
759
|
fallbackModels: zaiModelIds,
|
|
761
760
|
status: 'ready',
|
|
762
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
761
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
763
762
|
modelDiscovery: { kind: 'protocol' },
|
|
764
763
|
category: 'domestic',
|
|
765
764
|
catalogGroup: 'api',
|
|
@@ -772,7 +771,7 @@ const providerRegistry = {
|
|
|
772
771
|
authKind: 'api_key',
|
|
773
772
|
fallbackModels: xiaomiModelIds,
|
|
774
773
|
status: 'ready',
|
|
775
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
774
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
776
775
|
modelDiscovery: { kind: 'protocol' },
|
|
777
776
|
category: 'domestic',
|
|
778
777
|
catalogGroup: 'api',
|
|
@@ -785,7 +784,7 @@ const providerRegistry = {
|
|
|
785
784
|
authKind: 'api_key',
|
|
786
785
|
fallbackModels: [...xiaomiTokenPlanModelIds],
|
|
787
786
|
status: 'ready',
|
|
788
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
787
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
789
788
|
modelDiscovery: { kind: 'protocol' },
|
|
790
789
|
category: 'domestic',
|
|
791
790
|
catalogGroup: 'plans',
|
|
@@ -798,7 +797,7 @@ const providerRegistry = {
|
|
|
798
797
|
authKind: 'api_key',
|
|
799
798
|
fallbackModels: [...xiaomiTokenPlanModelIds],
|
|
800
799
|
status: 'ready',
|
|
801
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
800
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
802
801
|
modelDiscovery: { kind: 'protocol' },
|
|
803
802
|
category: 'overseas',
|
|
804
803
|
catalogGroup: 'plans',
|
|
@@ -811,7 +810,7 @@ const providerRegistry = {
|
|
|
811
810
|
authKind: 'api_key',
|
|
812
811
|
fallbackModels: [...xiaomiTokenPlanModelIds],
|
|
813
812
|
status: 'ready',
|
|
814
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
813
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
815
814
|
modelDiscovery: { kind: 'protocol' },
|
|
816
815
|
category: 'overseas',
|
|
817
816
|
catalogGroup: 'plans',
|
|
@@ -824,7 +823,7 @@ const providerRegistry = {
|
|
|
824
823
|
authKind: 'api_key',
|
|
825
824
|
fallbackModels: cerebrasModelIds,
|
|
826
825
|
status: 'ready',
|
|
827
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
826
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
828
827
|
modelDiscovery: { kind: 'protocol' },
|
|
829
828
|
category: 'overseas',
|
|
830
829
|
catalogGroup: 'api',
|
|
@@ -837,7 +836,7 @@ const providerRegistry = {
|
|
|
837
836
|
authKind: 'api_key',
|
|
838
837
|
fallbackModels: mistralModelIds,
|
|
839
838
|
status: 'ready',
|
|
840
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
839
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
841
840
|
modelDiscovery: { kind: 'protocol', responseShape: 'array-or-data' },
|
|
842
841
|
category: 'overseas',
|
|
843
842
|
catalogGroup: 'api',
|
|
@@ -863,7 +862,7 @@ const providerRegistry = {
|
|
|
863
862
|
authKind: 'api_key',
|
|
864
863
|
fallbackModels: huggingfaceModelIds,
|
|
865
864
|
status: 'ready',
|
|
866
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
865
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
867
866
|
modelDiscovery: { kind: 'protocol', filter: 'tool-capable' },
|
|
868
867
|
category: 'overseas',
|
|
869
868
|
catalogGroup: 'aggregators',
|
|
@@ -878,7 +877,6 @@ const providerRegistry = {
|
|
|
878
877
|
status: 'ready',
|
|
879
878
|
runtimeAdapter: {
|
|
880
879
|
kind: 'openai-compatible',
|
|
881
|
-
name: 'provider',
|
|
882
880
|
replayAssistantReasoningAs: 'reasoning',
|
|
883
881
|
replayAssistantReasoningDetails: true,
|
|
884
882
|
},
|
|
@@ -894,7 +892,7 @@ const providerRegistry = {
|
|
|
894
892
|
authKind: 'api_key',
|
|
895
893
|
fallbackModels: opencodeModelIds,
|
|
896
894
|
status: 'ready',
|
|
897
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
895
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
898
896
|
protocolAdapters: {
|
|
899
897
|
'anthropic-messages': { kind: 'anthropic', auth: 'api-key', normalizeBaseUrl: true },
|
|
900
898
|
'openai-responses': {
|
|
@@ -915,7 +913,7 @@ const providerRegistry = {
|
|
|
915
913
|
authKind: 'api_key',
|
|
916
914
|
fallbackModels: opencodeGoModelIds,
|
|
917
915
|
status: 'ready',
|
|
918
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
916
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
919
917
|
protocolAdapters: {
|
|
920
918
|
'anthropic-messages': { kind: 'anthropic', auth: 'api-key', normalizeBaseUrl: true },
|
|
921
919
|
'openai-responses': {
|
|
@@ -951,7 +949,7 @@ const providerRegistry = {
|
|
|
951
949
|
authKind: 'api_key',
|
|
952
950
|
fallbackModels: togetherModelIds,
|
|
953
951
|
status: 'ready',
|
|
954
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
952
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
955
953
|
modelDiscovery: { kind: 'protocol' },
|
|
956
954
|
category: 'overseas',
|
|
957
955
|
catalogGroup: 'api',
|
|
@@ -964,7 +962,7 @@ const providerRegistry = {
|
|
|
964
962
|
authKind: 'api_key',
|
|
965
963
|
fallbackModels: fireworksModelIds,
|
|
966
964
|
status: 'ready',
|
|
967
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
965
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
968
966
|
modelDiscovery: {
|
|
969
967
|
kind: 'fireworks',
|
|
970
968
|
accountsPath: '/v1/accounts',
|
|
@@ -982,7 +980,7 @@ const providerRegistry = {
|
|
|
982
980
|
authKind: 'api_key',
|
|
983
981
|
fallbackModels: nvidiaModelIds,
|
|
984
982
|
status: 'ready',
|
|
985
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
983
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
986
984
|
modelDiscovery: { kind: 'protocol' },
|
|
987
985
|
category: 'overseas',
|
|
988
986
|
catalogGroup: 'api',
|
|
@@ -995,7 +993,7 @@ const providerRegistry = {
|
|
|
995
993
|
authKind: 'api_key',
|
|
996
994
|
fallbackModels: tencentTokenHubModelIds,
|
|
997
995
|
status: 'ready',
|
|
998
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
996
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
999
997
|
modelDiscovery: { kind: 'protocol' },
|
|
1000
998
|
category: 'domestic',
|
|
1001
999
|
catalogGroup: 'api',
|
|
@@ -1008,7 +1006,7 @@ const providerRegistry = {
|
|
|
1008
1006
|
authKind: 'api_key',
|
|
1009
1007
|
fallbackModels: stepfunModelIds,
|
|
1010
1008
|
status: 'ready',
|
|
1011
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
1009
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
1012
1010
|
modelDiscovery: { kind: 'protocol' },
|
|
1013
1011
|
category: 'domestic',
|
|
1014
1012
|
catalogGroup: 'api',
|
|
@@ -1021,7 +1019,7 @@ const providerRegistry = {
|
|
|
1021
1019
|
authKind: 'api_key',
|
|
1022
1020
|
fallbackModels: [...stepfunStepPlanModelIds],
|
|
1023
1021
|
status: 'ready',
|
|
1024
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
1022
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
1025
1023
|
modelDiscovery: { kind: 'protocol' },
|
|
1026
1024
|
category: 'domestic',
|
|
1027
1025
|
catalogGroup: 'plans',
|
|
@@ -1034,7 +1032,7 @@ const providerRegistry = {
|
|
|
1034
1032
|
authKind: 'api_key',
|
|
1035
1033
|
fallbackModels: [...stepfunGlobalStepPlanModelIds],
|
|
1036
1034
|
status: 'ready',
|
|
1037
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
1035
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
1038
1036
|
modelDiscovery: { kind: 'protocol' },
|
|
1039
1037
|
category: 'overseas',
|
|
1040
1038
|
catalogGroup: 'plans',
|
|
@@ -1047,7 +1045,7 @@ const providerRegistry = {
|
|
|
1047
1045
|
authKind: 'api_key',
|
|
1048
1046
|
fallbackModels: stepfunGlobalModelIds,
|
|
1049
1047
|
status: 'ready',
|
|
1050
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
1048
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
1051
1049
|
modelDiscovery: { kind: 'protocol' },
|
|
1052
1050
|
category: 'overseas',
|
|
1053
1051
|
catalogGroup: 'api',
|
|
@@ -1060,7 +1058,7 @@ const providerRegistry = {
|
|
|
1060
1058
|
authKind: 'api_key',
|
|
1061
1059
|
fallbackModels: ['doubao-seed-2-0-pro-260215'],
|
|
1062
1060
|
status: 'ready',
|
|
1063
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
1061
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
1064
1062
|
modelDiscovery: {
|
|
1065
1063
|
kind: 'fallback',
|
|
1066
1064
|
reason: 'Ark model discovery is a control-plane API that requires AK/SK signing; inference API keys cannot call it',
|
|
@@ -1076,7 +1074,7 @@ const providerRegistry = {
|
|
|
1076
1074
|
authKind: 'api_key',
|
|
1077
1075
|
fallbackModels: deepinfraModelIds,
|
|
1078
1076
|
status: 'ready',
|
|
1079
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
1077
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
1080
1078
|
modelDiscovery: { kind: 'protocol', path: '/v1/models' },
|
|
1081
1079
|
category: 'overseas',
|
|
1082
1080
|
catalogGroup: 'api',
|
|
@@ -1089,7 +1087,7 @@ const providerRegistry = {
|
|
|
1089
1087
|
authKind: 'api_key',
|
|
1090
1088
|
fallbackModels: groqModelIds,
|
|
1091
1089
|
status: 'ready',
|
|
1092
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
1090
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
1093
1091
|
modelDiscovery: { kind: 'protocol' },
|
|
1094
1092
|
category: 'overseas',
|
|
1095
1093
|
catalogGroup: 'api',
|
|
@@ -1102,7 +1100,7 @@ const providerRegistry = {
|
|
|
1102
1100
|
authKind: 'api_key',
|
|
1103
1101
|
fallbackModels: openrouterModelIds,
|
|
1104
1102
|
status: 'ready',
|
|
1105
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
1103
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
1106
1104
|
modelDiscovery: { kind: 'protocol' },
|
|
1107
1105
|
category: 'overseas',
|
|
1108
1106
|
catalogGroup: 'aggregators',
|
|
@@ -1115,7 +1113,7 @@ const providerRegistry = {
|
|
|
1115
1113
|
authKind: 'api_key',
|
|
1116
1114
|
fallbackModels: alibabaModelIds,
|
|
1117
1115
|
status: 'ready',
|
|
1118
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
1116
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
1119
1117
|
modelDiscovery: { kind: 'protocol' },
|
|
1120
1118
|
category: 'overseas',
|
|
1121
1119
|
catalogGroup: 'api',
|
|
@@ -1128,7 +1126,7 @@ const providerRegistry = {
|
|
|
1128
1126
|
authKind: 'api_key',
|
|
1129
1127
|
fallbackModels: alibabaCnModelIds,
|
|
1130
1128
|
status: 'ready',
|
|
1131
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
1129
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
1132
1130
|
modelDiscovery: { kind: 'protocol' },
|
|
1133
1131
|
category: 'domestic',
|
|
1134
1132
|
catalogGroup: 'api',
|
|
@@ -1141,7 +1139,7 @@ const providerRegistry = {
|
|
|
1141
1139
|
authKind: 'api_key',
|
|
1142
1140
|
fallbackModels: [...alibabaCodingPlanModelIds],
|
|
1143
1141
|
status: 'ready',
|
|
1144
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
1142
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
1145
1143
|
modelDiscovery: { kind: 'protocol' },
|
|
1146
1144
|
category: 'domestic',
|
|
1147
1145
|
catalogGroup: 'plans',
|
|
@@ -1154,7 +1152,7 @@ const providerRegistry = {
|
|
|
1154
1152
|
authKind: 'api_key',
|
|
1155
1153
|
fallbackModels: [...alibabaCodingPlanModelIds],
|
|
1156
1154
|
status: 'ready',
|
|
1157
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
1155
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
1158
1156
|
modelDiscovery: { kind: 'protocol' },
|
|
1159
1157
|
category: 'overseas',
|
|
1160
1158
|
catalogGroup: 'plans',
|
|
@@ -1169,7 +1167,6 @@ const providerRegistry = {
|
|
|
1169
1167
|
status: 'ready',
|
|
1170
1168
|
runtimeAdapter: {
|
|
1171
1169
|
kind: 'openai-compatible',
|
|
1172
|
-
name: 'provider',
|
|
1173
1170
|
responses: {
|
|
1174
1171
|
adapter: 'open-responses',
|
|
1175
1172
|
reasoningReplay: 'plaintext-summary',
|
|
@@ -1190,7 +1187,6 @@ const providerRegistry = {
|
|
|
1190
1187
|
status: 'ready',
|
|
1191
1188
|
runtimeAdapter: {
|
|
1192
1189
|
kind: 'openai-compatible',
|
|
1193
|
-
name: 'provider',
|
|
1194
1190
|
responses: {
|
|
1195
1191
|
adapter: 'open-responses',
|
|
1196
1192
|
reasoningReplay: 'plaintext-summary',
|
|
@@ -1209,7 +1205,7 @@ const providerRegistry = {
|
|
|
1209
1205
|
authKind: 'api_key',
|
|
1210
1206
|
fallbackModels: [],
|
|
1211
1207
|
status: 'ready',
|
|
1212
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
1208
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
1213
1209
|
protocolAdapters: {
|
|
1214
1210
|
'anthropic-messages': { kind: 'anthropic', auth: 'bearer', normalizeBaseUrl: true },
|
|
1215
1211
|
},
|
|
@@ -1249,7 +1245,6 @@ const providerRegistry = {
|
|
|
1249
1245
|
status: 'ready',
|
|
1250
1246
|
runtimeAdapter: {
|
|
1251
1247
|
kind: 'openai-compatible',
|
|
1252
|
-
name: 'provider',
|
|
1253
1248
|
requireBaseUrl: true,
|
|
1254
1249
|
replayAssistantReasoningAs: 'reasoning',
|
|
1255
1250
|
},
|
|
@@ -1267,7 +1262,6 @@ const providerRegistry = {
|
|
|
1267
1262
|
status: 'ready',
|
|
1268
1263
|
runtimeAdapter: {
|
|
1269
1264
|
kind: 'openai-compatible',
|
|
1270
|
-
name: 'provider',
|
|
1271
1265
|
includeUsage: true,
|
|
1272
1266
|
replayAssistantReasoningAs: 'reasoning',
|
|
1273
1267
|
},
|
|
@@ -1283,7 +1277,7 @@ const providerRegistry = {
|
|
|
1283
1277
|
authKind: 'none',
|
|
1284
1278
|
fallbackModels: ['llama3.2', 'qwen2.5-coder', 'gemma3'],
|
|
1285
1279
|
status: 'ready',
|
|
1286
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
1280
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
1287
1281
|
modelDiscovery: { kind: 'ollama' },
|
|
1288
1282
|
category: 'local',
|
|
1289
1283
|
catalogGroup: 'local',
|
|
@@ -1295,7 +1289,7 @@ const providerRegistry = {
|
|
|
1295
1289
|
authKind: 'none',
|
|
1296
1290
|
fallbackModels: [],
|
|
1297
1291
|
status: 'ready',
|
|
1298
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
1292
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
1299
1293
|
modelDiscovery: { kind: 'protocol' },
|
|
1300
1294
|
category: 'local',
|
|
1301
1295
|
catalogGroup: 'local',
|
|
@@ -1307,51 +1301,31 @@ const providerRegistry = {
|
|
|
1307
1301
|
authKind: 'optional_api_key',
|
|
1308
1302
|
fallbackModels: ['qwen3-8b'],
|
|
1309
1303
|
status: 'ready',
|
|
1310
|
-
runtimeAdapter: { kind: 'openai-compatible'
|
|
1304
|
+
runtimeAdapter: { kind: 'openai-compatible' },
|
|
1311
1305
|
modelDiscovery: { kind: 'protocol' },
|
|
1312
1306
|
category: 'local',
|
|
1313
1307
|
catalogGroup: 'local',
|
|
1314
1308
|
catalogOrder: 17.5,
|
|
1315
1309
|
},
|
|
1316
|
-
|
|
1317
|
-
label: 'Custom
|
|
1310
|
+
custom: {
|
|
1311
|
+
label: 'Custom connection',
|
|
1318
1312
|
baseUrl: '',
|
|
1319
1313
|
authKind: 'api_key',
|
|
1320
1314
|
fallbackModels: [],
|
|
1321
1315
|
status: 'ready',
|
|
1322
|
-
runtimeAdapter: { kind: 'openai-compatible',
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
baseUrl: '',
|
|
1331
|
-
authKind: 'api_key',
|
|
1332
|
-
fallbackModels: [],
|
|
1333
|
-
status: 'ready',
|
|
1334
|
-
runtimeAdapter: {
|
|
1335
|
-
kind: 'openai',
|
|
1336
|
-
apiProtocol: 'openai-responses',
|
|
1337
|
-
responses: { adapter: 'openai', reasoningReplay: 'encrypted-content' },
|
|
1316
|
+
runtimeAdapter: { kind: 'openai-compatible', requireBaseUrl: true },
|
|
1317
|
+
protocolAdapters: {
|
|
1318
|
+
'openai-responses': {
|
|
1319
|
+
kind: 'openai',
|
|
1320
|
+
apiProtocol: 'openai-responses',
|
|
1321
|
+
responses: { adapter: 'openai', reasoningReplay: 'encrypted-content' },
|
|
1322
|
+
},
|
|
1323
|
+
'anthropic-messages': { kind: 'anthropic', auth: 'api-key', normalizeBaseUrl: true },
|
|
1338
1324
|
},
|
|
1339
1325
|
modelDiscovery: { kind: 'protocol' },
|
|
1340
1326
|
category: 'custom',
|
|
1341
1327
|
catalogGroup: 'aggregators',
|
|
1342
|
-
catalogOrder: 18
|
|
1343
|
-
},
|
|
1344
|
-
'anthropic-compatible': {
|
|
1345
|
-
label: 'Custom relay (Anthropic)',
|
|
1346
|
-
baseUrl: '',
|
|
1347
|
-
authKind: 'api_key',
|
|
1348
|
-
fallbackModels: [],
|
|
1349
|
-
status: 'ready',
|
|
1350
|
-
runtimeAdapter: { kind: 'anthropic', auth: 'api-key', normalizeBaseUrl: true },
|
|
1351
|
-
modelDiscovery: { kind: 'protocol' },
|
|
1352
|
-
category: 'custom',
|
|
1353
|
-
catalogGroup: 'aggregators',
|
|
1354
|
-
catalogOrder: 18.2,
|
|
1328
|
+
catalogOrder: 18,
|
|
1355
1329
|
},
|
|
1356
1330
|
'github-copilot': {
|
|
1357
1331
|
label: githubCopilot.name,
|
|
@@ -1359,7 +1333,7 @@ const providerRegistry = {
|
|
|
1359
1333
|
authKind: 'oauth_token',
|
|
1360
1334
|
fallbackModels: githubCopilotModelIds,
|
|
1361
1335
|
status: 'ready',
|
|
1362
|
-
runtimeAdapter: { kind: 'openai-compatible',
|
|
1336
|
+
runtimeAdapter: { kind: 'openai-compatible', includeUsage: false },
|
|
1363
1337
|
protocolAdapters: {
|
|
1364
1338
|
'anthropic-messages': {
|
|
1365
1339
|
kind: 'anthropic',
|