@diffexai/diffex 0.2.5 → 0.2.7
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/CHANGELOG.md +12 -0
- package/dist/AGENTS.md +0 -7
- package/dist/core/agent-session.js +31 -11
- package/dist/core/model-runtime.js +3 -3
- package/dist/core/provider-composer.js +1 -1
- package/dist/core/system-prompt-production.js +3 -9
- package/dist/core/system-prompt.js +2 -9
- package/dist/node_modules/@diffexai/diffex-agent-core/distribution-components.json +4 -4
- package/dist/node_modules/@diffexai/diffex-agent-core/distribution-files.json +1 -1
- package/dist/node_modules/@diffexai/diffex-agent-core/package.json +1 -1
- package/dist/node_modules/@diffexai/diffex-ai/dist/api/lazy.d.ts +1 -1
- package/dist/node_modules/@diffexai/diffex-ai/dist/api/lazy.js +8 -8
- package/dist/node_modules/@diffexai/diffex-ai/dist/models.js +4 -4
- package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/.manifest.json +1 -1
- package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/mistral.json +1 -1
- package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/opencode-go.json +1 -1
- package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/opencode.json +1 -1
- package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/openrouter.json +1 -1
- package/dist/node_modules/@diffexai/diffex-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
- package/dist/node_modules/@diffexai/diffex-ai/distribution-components.json +3 -3
- package/dist/node_modules/@diffexai/diffex-ai/distribution-files.json +10 -10
- package/dist/node_modules/@diffexai/diffex-ai/package.json +1 -1
- package/dist/node_modules/@diffexai/diffex-client/distribution-components.json +3 -3
- package/dist/node_modules/@diffexai/diffex-client/distribution-files.json +1 -1
- package/dist/node_modules/@diffexai/diffex-client/package.json +1 -1
- package/dist/node_modules/@diffexai/diffex-harness-state/distribution-components.json +2 -2
- package/dist/node_modules/@diffexai/diffex-harness-state/distribution-files.json +1 -1
- package/dist/node_modules/@diffexai/diffex-harness-state/package.json +1 -1
- package/dist/node_modules/@diffexai/diffex-protocol/distribution-components.json +2 -2
- package/dist/node_modules/@diffexai/diffex-protocol/distribution-files.json +1 -1
- package/dist/node_modules/@diffexai/diffex-protocol/package.json +1 -1
- package/dist/node_modules/@diffexai/diffex-telemetry/distribution-components.json +2 -2
- package/dist/node_modules/@diffexai/diffex-telemetry/distribution-files.json +1 -1
- package/dist/node_modules/@diffexai/diffex-telemetry/package.json +1 -1
- package/dist/node_modules/@diffexai/diffex-tui/distribution-components.json +2 -2
- package/dist/node_modules/@diffexai/diffex-tui/distribution-files.json +1 -1
- package/dist/node_modules/@diffexai/diffex-tui/package.json +1 -1
- package/distribution-components.json +11 -11
- package/distribution-files.json +37 -37
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/release/distribution-manifest.json +4 -4
- package/release/install-package-lock.json +5 -5
- package/release/install-package.json +2 -2
package/CHANGELOG.md
CHANGED
package/dist/AGENTS.md
CHANGED
|
@@ -1,16 +1,9 @@
|
|
|
1
1
|
# Development Rules
|
|
2
2
|
|
|
3
|
-
## Conversational Style
|
|
4
|
-
|
|
5
|
-
- When the user asks a question, answer it first before making edits or running implementation commands.
|
|
6
|
-
- Address the user's feedback directly before describing changes.
|
|
7
|
-
|
|
8
3
|
## Code Quality
|
|
9
4
|
|
|
10
5
|
- Before editing or drawing conclusions, read enough surrounding code to understand the relevant behavior and dependencies.
|
|
11
6
|
- Read affected files in full for broad changes; do not rely on search snippets alone for investigations or audits.
|
|
12
|
-
- Ask before removing intentional functionality or code when the removal falls outside the requested scope or its purpose is unclear.
|
|
13
|
-
- Preserve unrelated local changes and keep modifications focused on the requested task.
|
|
14
7
|
|
|
15
8
|
## Commands
|
|
16
9
|
|
|
@@ -1429,7 +1429,10 @@ export class AgentSession {
|
|
|
1429
1429
|
else
|
|
1430
1430
|
await this.agent.continue();
|
|
1431
1431
|
firstRun = false;
|
|
1432
|
-
|
|
1432
|
+
const next = await this._handlePostAgentRun();
|
|
1433
|
+
if (next === "failed")
|
|
1434
|
+
break;
|
|
1435
|
+
if (next === "continue") {
|
|
1433
1436
|
if (this._agentRunAborted) {
|
|
1434
1437
|
const coordination = this._subagentCoordination;
|
|
1435
1438
|
if (coordination) {
|
|
@@ -1605,10 +1608,10 @@ export class AgentSession {
|
|
|
1605
1608
|
const msg = this._lastAssistantMessage;
|
|
1606
1609
|
this._lastAssistantMessage = undefined;
|
|
1607
1610
|
if (!msg) {
|
|
1608
|
-
return
|
|
1611
|
+
return "settled";
|
|
1609
1612
|
}
|
|
1610
1613
|
if (this._isRetryableError(msg) && (await this._prepareRetry(msg))) {
|
|
1611
|
-
return
|
|
1614
|
+
return "continue";
|
|
1612
1615
|
}
|
|
1613
1616
|
if (msg.stopReason === "error" && this._retryAttempt > 0) {
|
|
1614
1617
|
this._emit({
|
|
@@ -1620,12 +1623,27 @@ export class AgentSession {
|
|
|
1620
1623
|
this._retryAttempt = 0;
|
|
1621
1624
|
}
|
|
1622
1625
|
if (await this._checkCompaction(msg)) {
|
|
1623
|
-
return
|
|
1626
|
+
return "continue";
|
|
1627
|
+
}
|
|
1628
|
+
if (msg.stopReason === "error") {
|
|
1629
|
+
// Recovery may have removed the failed response before giving up.
|
|
1630
|
+
if (!this.agent.state.messages.includes(msg))
|
|
1631
|
+
this.agent.state.messages.push(msg);
|
|
1632
|
+
while (true) {
|
|
1633
|
+
const coordination = this._getOrCreateSubagentCoordination();
|
|
1634
|
+
if (!coordination)
|
|
1635
|
+
break;
|
|
1636
|
+
this._exitSubagentCoordination("cancellation");
|
|
1637
|
+
await this._waitForSubagentCoordination(coordination);
|
|
1638
|
+
}
|
|
1639
|
+
// Queued reports and input must not bypass an exhausted recovery budget.
|
|
1640
|
+
// Leave them available for an explicit prompt or queue recovery by the caller.
|
|
1641
|
+
return "failed";
|
|
1624
1642
|
}
|
|
1625
1643
|
// Reports already queued by this run must enter context before a new batch is frozen
|
|
1626
1644
|
// or an escalation-suspended coordination resumes waiting.
|
|
1627
1645
|
if (this.agent.hasQueuedMessages())
|
|
1628
|
-
return
|
|
1646
|
+
return "continue";
|
|
1629
1647
|
while (true) {
|
|
1630
1648
|
const coordination = this._getOrCreateSubagentCoordination();
|
|
1631
1649
|
if (!coordination)
|
|
@@ -1635,26 +1653,26 @@ export class AgentSession {
|
|
|
1635
1653
|
}
|
|
1636
1654
|
const delivery = await this._waitForSubagentCoordination(coordination);
|
|
1637
1655
|
if (delivery.reason === "cancellation")
|
|
1638
|
-
return
|
|
1656
|
+
return "settled";
|
|
1639
1657
|
if (delivery.reason === "escalation") {
|
|
1640
1658
|
if (coordination.exitReason === "cancellation" || this._agentRunAborted) {
|
|
1641
1659
|
this._exitSubagentCoordination("cancellation");
|
|
1642
1660
|
await this._waitForSubagentCoordination(coordination);
|
|
1643
|
-
return
|
|
1661
|
+
return "settled";
|
|
1644
1662
|
}
|
|
1645
|
-
return
|
|
1663
|
+
return "continue";
|
|
1646
1664
|
}
|
|
1647
1665
|
if (delivery.results.length > 0) {
|
|
1648
1666
|
const message = this._createSubagentResultMessage(delivery.results);
|
|
1649
1667
|
await this.sendCustomMessage(message, { deliverAs: "steer" });
|
|
1650
|
-
return
|
|
1668
|
+
return "continue";
|
|
1651
1669
|
}
|
|
1652
1670
|
// Explicit agents consumption can empty this batch while the same continuation
|
|
1653
1671
|
// starts another coordinated child. Freeze that pending run before settling.
|
|
1654
1672
|
}
|
|
1655
1673
|
// The agent loop drains both queues before emitting agent_end. Any messages
|
|
1656
1674
|
// here were queued by agent_end extension handlers and need a continuation.
|
|
1657
|
-
return this.agent.hasQueuedMessages();
|
|
1675
|
+
return this.agent.hasQueuedMessages() ? "continue" : "settled";
|
|
1658
1676
|
}
|
|
1659
1677
|
/**
|
|
1660
1678
|
* Send a prompt to the agent.
|
|
@@ -2798,7 +2816,9 @@ export class AgentSession {
|
|
|
2798
2816
|
contextTokens = directContextTokens;
|
|
2799
2817
|
}
|
|
2800
2818
|
if (shouldCompact(contextTokens, contextWindow, settings)) {
|
|
2801
|
-
|
|
2819
|
+
const queuedContinuation = await this._runAutoCompaction("threshold", false, signal, deferCommit);
|
|
2820
|
+
// Threshold compaction does not recover a provider failure.
|
|
2821
|
+
return assistantMessage.stopReason !== "error" && queuedContinuation;
|
|
2802
2822
|
}
|
|
2803
2823
|
return false;
|
|
2804
2824
|
}
|
|
@@ -453,7 +453,7 @@ export class ModelRuntime {
|
|
|
453
453
|
return lazyStream(model, async () => {
|
|
454
454
|
const prepared = await this.prepareRequest(model, options);
|
|
455
455
|
return prepared.provider.stream(prepared.model, context, prepared.options);
|
|
456
|
-
});
|
|
456
|
+
}, options?.signal);
|
|
457
457
|
}
|
|
458
458
|
complete(model, context, options) {
|
|
459
459
|
return this.stream(model, context, options).result();
|
|
@@ -462,7 +462,7 @@ export class ModelRuntime {
|
|
|
462
462
|
return lazyStream(model, async () => {
|
|
463
463
|
const prepared = await this.prepareRequest(model, options);
|
|
464
464
|
return prepared.provider.streamSimple(prepared.model, context, prepared.options);
|
|
465
|
-
});
|
|
465
|
+
}, options?.signal);
|
|
466
466
|
}
|
|
467
467
|
completeSimple(model, context, options) {
|
|
468
468
|
return this.streamSimple(model, context, options).result();
|
|
@@ -474,7 +474,7 @@ export class ModelRuntime {
|
|
|
474
474
|
throw new ModelsError("provider", `Provider ${model.provider} does not support deferred responses`);
|
|
475
475
|
}
|
|
476
476
|
return prepared.provider.fetchDeferred(prepared.model, handle, prepared.options);
|
|
477
|
-
}).result();
|
|
477
|
+
}, options?.signal).result();
|
|
478
478
|
}
|
|
479
479
|
async cancelDeferred(model, handle, options) {
|
|
480
480
|
const prepared = await this.prepareRequest(model, options);
|
|
@@ -321,7 +321,7 @@ export function composeModelProvider(providerId, base, modelConfig, extension) {
|
|
|
321
321
|
return simple
|
|
322
322
|
? api.streamSimple(model, context, options)
|
|
323
323
|
: api.stream(model, context, options);
|
|
324
|
-
});
|
|
324
|
+
}, options?.signal);
|
|
325
325
|
const provider = {
|
|
326
326
|
id: providerId,
|
|
327
327
|
name: extension?.name ?? config?.name ?? base?.name ?? extension?.oauth?.name ?? providerId,
|
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
import { formatSkillsForPrompt } from "./skills.js";
|
|
6
6
|
/** Build the system prompt with tools, guidelines, and context */
|
|
7
7
|
export function buildProductionSystemPrompt(options) {
|
|
8
|
-
const { customPrompt, selectedTools, toolSnippets, promptGuidelines, appendSystemPrompt, evolutionMemory,
|
|
9
|
-
const promptCwd = cwd.replace(/\\/g, "/");
|
|
8
|
+
const { customPrompt, selectedTools, toolSnippets, promptGuidelines, appendSystemPrompt, evolutionMemory, contextFiles: providedContextFiles, skills: providedSkills, } = options;
|
|
10
9
|
const appendSection = appendSystemPrompt ? `\n\n${appendSystemPrompt}` : "";
|
|
11
10
|
const evolutionSection = evolutionMemory?.memory
|
|
12
11
|
? `\n\n<evolution_memory version="${evolutionMemory.version}">\n${evolutionMemory.memory}\n</evolution_memory>`
|
|
@@ -33,7 +32,6 @@ export function buildProductionSystemPrompt(options) {
|
|
|
33
32
|
if (customPromptHasRead && skills.length > 0) {
|
|
34
33
|
prompt += formatSkillsForPrompt(skills);
|
|
35
34
|
}
|
|
36
|
-
prompt += `\nCurrent working directory: ${promptCwd}`;
|
|
37
35
|
return prompt;
|
|
38
36
|
}
|
|
39
37
|
// Build tools list based on selected tools.
|
|
@@ -64,17 +62,14 @@ export function buildProductionSystemPrompt(options) {
|
|
|
64
62
|
}
|
|
65
63
|
}
|
|
66
64
|
const guidelines = guidelineGroups.length > 0 ? guidelineGroups.join("\n") : "(none)";
|
|
67
|
-
let prompt = `
|
|
68
|
-
|
|
69
|
-
Available tools:
|
|
65
|
+
let prompt = `Available tools:
|
|
70
66
|
${toolsList}
|
|
71
67
|
|
|
72
|
-
In addition to the tools above, you may have access to other custom project-related tools.
|
|
73
|
-
|
|
74
68
|
Tool usage guidelines:
|
|
75
69
|
${guidelines}
|
|
76
70
|
|
|
77
71
|
Conversational Style:
|
|
72
|
+
- When the user asks a question, answer it first before making edits or running implementation commands.
|
|
78
73
|
- Keep responses concise and direct, adapting detail and terminology to the user.
|
|
79
74
|
- No emojis in commits, issues, PR comments, or code.
|
|
80
75
|
- No fluff or cheerful filler text (e.g., "Thanks @user" not "Thanks so much @user!").
|
|
@@ -103,6 +98,5 @@ Diffex documentation (read the documentation website only when the user asks abo
|
|
|
103
98
|
if (hasRead && skills.length > 0) {
|
|
104
99
|
prompt += formatSkillsForPrompt(skills);
|
|
105
100
|
}
|
|
106
|
-
prompt += `\nCurrent working directory: ${promptCwd}`;
|
|
107
101
|
return prompt;
|
|
108
102
|
}
|
|
@@ -9,8 +9,7 @@ import { buildProductionSystemPrompt } from "./system-prompt-production.js";
|
|
|
9
9
|
export function buildSystemPrompt(options) {
|
|
10
10
|
if (IS_PRODUCTION_DISTRIBUTION)
|
|
11
11
|
return buildProductionSystemPrompt(options);
|
|
12
|
-
const { customPrompt, selectedTools, toolSnippets, promptGuidelines, appendSystemPrompt, evolutionMemory,
|
|
13
|
-
const promptCwd = cwd.replace(/\\/g, "/");
|
|
12
|
+
const { customPrompt, selectedTools, toolSnippets, promptGuidelines, appendSystemPrompt, evolutionMemory, contextFiles: providedContextFiles, skills: providedSkills, } = options;
|
|
14
13
|
const appendSection = appendSystemPrompt ? `\n\n${appendSystemPrompt}` : "";
|
|
15
14
|
const evolutionSection = evolutionMemory?.memory
|
|
16
15
|
? `\n\n<evolution_memory version="${evolutionMemory.version}">\n${evolutionMemory.memory}\n</evolution_memory>`
|
|
@@ -37,7 +36,6 @@ export function buildSystemPrompt(options) {
|
|
|
37
36
|
if (customPromptHasRead && skills.length > 0) {
|
|
38
37
|
prompt += formatSkillsForPrompt(skills);
|
|
39
38
|
}
|
|
40
|
-
prompt += `\nCurrent working directory: ${promptCwd}`;
|
|
41
39
|
return prompt;
|
|
42
40
|
}
|
|
43
41
|
// Get absolute paths to documentation and examples
|
|
@@ -71,13 +69,9 @@ export function buildSystemPrompt(options) {
|
|
|
71
69
|
}
|
|
72
70
|
}
|
|
73
71
|
const guidelines = guidelineGroups.length > 0 ? guidelineGroups.join("\n") : "(none)";
|
|
74
|
-
let prompt = `
|
|
75
|
-
|
|
76
|
-
Available tools:
|
|
72
|
+
let prompt = `Available tools:
|
|
77
73
|
${toolsList}
|
|
78
74
|
|
|
79
|
-
In addition to the tools above, you may have access to other custom project-related tools.
|
|
80
|
-
|
|
81
75
|
Tool usage guidelines:
|
|
82
76
|
${guidelines}
|
|
83
77
|
|
|
@@ -116,6 +110,5 @@ ${existsSync(examplesPath) ? `- Examples: ${examplesPath} (extensions, custom to
|
|
|
116
110
|
if (hasRead && skills.length > 0) {
|
|
117
111
|
prompt += formatSkillsForPrompt(skills);
|
|
118
112
|
}
|
|
119
|
-
prompt += `\nCurrent working directory: ${promptCwd}`;
|
|
120
113
|
return prompt;
|
|
121
114
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
[
|
|
2
2
|
{
|
|
3
3
|
"name": "@diffexai/diffex-agent-core",
|
|
4
|
-
"version": "0.2.
|
|
5
|
-
"sourceCommit": "
|
|
4
|
+
"version": "0.2.7",
|
|
5
|
+
"sourceCommit": "598159fca2acfacdf5374205b5a5e46afe0af58a",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"portions": "Diffex contributions; Pi-derived portions retain MIT terms in LICENSE",
|
|
8
8
|
"notice": "LICENSE",
|
|
@@ -10,12 +10,12 @@
|
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
"name": "@diffexai/diffex-ai",
|
|
13
|
-
"version": "^0.2.
|
|
13
|
+
"version": "^0.2.7",
|
|
14
14
|
"distribution": "resolved separately by package manager; not bundled in this npm tarball"
|
|
15
15
|
},
|
|
16
16
|
{
|
|
17
17
|
"name": "@diffexai/diffex-telemetry",
|
|
18
|
-
"version": "^0.2.
|
|
18
|
+
"version": "^0.2.7",
|
|
19
19
|
"distribution": "resolved separately by package manager; not bundled in this npm tarball"
|
|
20
20
|
},
|
|
21
21
|
{
|
|
@@ -5,7 +5,7 @@ import { AssistantMessageEventStream } from "../utils/event-stream.ts";
|
|
|
5
5
|
* lazy module loading) behind it. Setup failures terminate the stream with an
|
|
6
6
|
* error event.
|
|
7
7
|
*/
|
|
8
|
-
export declare function lazyStream(model: Model<Api>, setup: () => Promise<AsyncIterable<AssistantMessageEvent
|
|
8
|
+
export declare function lazyStream(model: Model<Api>, setup: () => Promise<AsyncIterable<AssistantMessageEvent>>, signal?: AbortSignal): AssistantMessageEventStream;
|
|
9
9
|
/**
|
|
10
10
|
* Wraps a dynamically imported API implementation module as `ProviderStreams`.
|
|
11
11
|
* The module loads on first stream call; the host's import cache deduplicates
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AssistantMessageEventStream } from "../utils/event-stream.js";
|
|
2
|
-
function createSetupErrorMessage(model, error) {
|
|
2
|
+
function createSetupErrorMessage(model, error, signal) {
|
|
3
3
|
return {
|
|
4
4
|
role: "assistant",
|
|
5
5
|
content: [],
|
|
@@ -14,7 +14,7 @@ function createSetupErrorMessage(model, error) {
|
|
|
14
14
|
totalTokens: 0,
|
|
15
15
|
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
|
|
16
16
|
},
|
|
17
|
-
stopReason: "error",
|
|
17
|
+
stopReason: signal?.aborted ? "aborted" : "error",
|
|
18
18
|
errorMessage: error instanceof Error ? error.message : String(error),
|
|
19
19
|
timestamp: Date.now(),
|
|
20
20
|
};
|
|
@@ -33,21 +33,21 @@ async function forwardStream(target, source) {
|
|
|
33
33
|
* lazy module loading) behind it. Setup failures terminate the stream with an
|
|
34
34
|
* error event.
|
|
35
35
|
*/
|
|
36
|
-
export function lazyStream(model, setup) {
|
|
36
|
+
export function lazyStream(model, setup, signal) {
|
|
37
37
|
const outer = new AssistantMessageEventStream();
|
|
38
38
|
setup()
|
|
39
39
|
.then((inner) => forwardStream(outer, inner))
|
|
40
40
|
.catch((error) => {
|
|
41
|
-
const message = createSetupErrorMessage(model, error);
|
|
42
|
-
outer.push({ type: "error", reason: "error", error: message });
|
|
41
|
+
const message = createSetupErrorMessage(model, error, signal);
|
|
42
|
+
outer.push({ type: "error", reason: signal?.aborted ? "aborted" : "error", error: message });
|
|
43
43
|
outer.end(message);
|
|
44
44
|
});
|
|
45
45
|
return outer;
|
|
46
46
|
}
|
|
47
47
|
export function lazyApi(load, capabilities) {
|
|
48
48
|
const api = {
|
|
49
|
-
stream: (model, context, options) => lazyStream(model, async () => (await load()).stream(model, context, options)),
|
|
50
|
-
streamSimple: (model, context, options) => lazyStream(model, async () => (await load()).streamSimple(model, context, options)),
|
|
49
|
+
stream: (model, context, options) => lazyStream(model, async () => (await load()).stream(model, context, options), options?.signal),
|
|
50
|
+
streamSimple: (model, context, options) => lazyStream(model, async () => (await load()).streamSimple(model, context, options), options?.signal),
|
|
51
51
|
};
|
|
52
52
|
if (capabilities?.fetchDeferred) {
|
|
53
53
|
api.fetchDeferred = (model, handle, options) => lazyStream(model, async () => {
|
|
@@ -55,7 +55,7 @@ export function lazyApi(load, capabilities) {
|
|
|
55
55
|
if (!implementation.fetchDeferred)
|
|
56
56
|
throw new Error("API does not support deferred responses");
|
|
57
57
|
return implementation.fetchDeferred(model, handle, options);
|
|
58
|
-
});
|
|
58
|
+
}, options?.signal);
|
|
59
59
|
}
|
|
60
60
|
if (capabilities?.cancelDeferred) {
|
|
61
61
|
api.cancelDeferred = async (model, handle, options) => {
|
|
@@ -382,7 +382,7 @@ class ModelsImpl {
|
|
|
382
382
|
const provider = this.requireProvider(model);
|
|
383
383
|
const { requestModel, requestOptions } = await this.applyAuth(model, options);
|
|
384
384
|
return provider.stream(requestModel, context, requestOptions);
|
|
385
|
-
});
|
|
385
|
+
}, options?.signal);
|
|
386
386
|
}
|
|
387
387
|
async complete(model, context, options) {
|
|
388
388
|
return this.stream(model, context, options).result();
|
|
@@ -392,7 +392,7 @@ class ModelsImpl {
|
|
|
392
392
|
const provider = this.requireProvider(model);
|
|
393
393
|
const { requestModel, requestOptions } = await this.applyAuth(model, options);
|
|
394
394
|
return provider.streamSimple(requestModel, context, requestOptions);
|
|
395
|
-
});
|
|
395
|
+
}, options?.signal);
|
|
396
396
|
}
|
|
397
397
|
async completeSimple(model, context, options) {
|
|
398
398
|
return this.streamSimple(model, context, options).result();
|
|
@@ -405,7 +405,7 @@ class ModelsImpl {
|
|
|
405
405
|
}
|
|
406
406
|
const { requestModel, requestOptions } = await this.applyAuth(model, options);
|
|
407
407
|
return provider.fetchDeferred(requestModel, handle, requestOptions);
|
|
408
|
-
}).result();
|
|
408
|
+
}, options?.signal).result();
|
|
409
409
|
}
|
|
410
410
|
async cancelDeferred(model, handle, options) {
|
|
411
411
|
const provider = this.requireProvider(model);
|
|
@@ -498,7 +498,7 @@ export function createProvider(input) {
|
|
|
498
498
|
throw new ModelsError("provider", `Provider ${input.id} does not support deferred responses for "${model.api}"`);
|
|
499
499
|
}
|
|
500
500
|
return implementation.fetchDeferred(model, handle, options);
|
|
501
|
-
});
|
|
501
|
+
}, options?.signal);
|
|
502
502
|
}
|
|
503
503
|
if (streams.some((entry) => entry.cancelDeferred !== undefined)) {
|
|
504
504
|
provider.cancelDeferred = async (model, handle, options) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"schemaVersion":3,"generatedAt":"2026-09-
|
|
1
|
+
{"schemaVersion":3,"generatedAt":"2026-09-18T20:09:43.444Z","structureHash":"6f62a1356961b2b72622d38d651d51ae89723f14fdb7281ebaf332d8e913920e","files":{"amazon-bedrock.json":"9d3eed9613b9b56f0c5f202a61b279a7168edf01bae6c3218a7ab28664ff80ea","ant-ling.json":"4979fe79d99ed97382d7ce40170c6132e932e77906de1eb54464c042e7d63633","anthropic.json":"6937a397c6c7cf654990d072734efad023b652b294b04961d43a5835d7d08156","azure-openai-responses.json":"787ba62322c46fbc69bc1fcb7c7cfc100b8f74211c72adf9766b6dbf5eae0c41","baseten.json":"c7cf9a7e7e6bee9c53005acf4706c25f954adaa64a9058535fb7e5b1d6920852","cerebras.json":"9eaa554e1b02f3665f8f63e6432d253bf81351af7c72001054dd8108aa528a52","cloudflare-ai-gateway.json":"356a2892803067a5d042c5abb87051edba46f7209589c625f8bcea8c7c5ce5c9","cloudflare-workers-ai.json":"07ef63208ff7517fd1a80962f18143e21de399640423329490b157f459ccf995","deepseek.json":"0dcc807a4e5827b488c6ceac87884ff6e735e01cf4f2ddfec9dd812e6fde041b","fireworks.json":"4c9055f7a2c5345b808bb561b07b227fc29148e0fb774c0ac50db2b34ab89aaf","github-copilot.json":"37cfc1da3a6814e37e14c565ed0a1e41f2eb513b10aa8f11ac18f27fa392308c","google-vertex.json":"e1631109172dc1f7d7977570420a5bb86258bdd1088427e244a2c51545c4f24d","google.json":"7619bf03edd2a7acb06a2274a14b13c3a61354288abe029a758401d4de36a8fd","groq.json":"e4728fd72e358cd8f25e9a518e9b49a521ef44523d3debe38a7db9e0663c4077","huggingface.json":"a488b6f175b382277ccf7d487f877ef0c698994576bb55d2410838bf9c8c7c41","kimi-coding.json":"9da7ea8e9eb8df5d8f73acc25d3da5b41164f522c0f09b45265b4bf104743ac1","minimax-cn.json":"65d37e55a6d9585855f94b3fb7739308d107fe248ebd9e1001d1c5d4606ad2c4","minimax.json":"c7dc5765995ae77242916430929c7cc9a782589f7e483e13f7e01663190d028e","mistral.json":"be522597b22bceeb0bb9a0ba1781647649ffd19637d0c8e67b056d7b0ec33d52","moonshotai-cn.json":"63f77de8782dce6a8d4649b6075ee04c9732863ae85561e0867871220c558bde","moonshotai.json":"2a8dfb97eb905e991c22081dc09bd4a61c05b7fa9ac0d5c72d6930f601f490f1","nvidia.json":"2ff6862206269af88a694e627c4b54753055357710adaf49ac8518d102c17407","openai-codex.json":"4a73818291987693fcb53e9e61b4be3429ffd78b3f64ea877a34c5f9928c89e1","openai.json":"6fa1954abd6c5b301620a02a57412bd60bbfdf20465b9a3eb4d113f88dfb8f7b","opencode-go.json":"31c4434316c8a1b7fcc637b25f1147dd44da946a0b932ca10fb5ac594261dad7","opencode.json":"ce7fcaa9e6da77b00d875b42db03d39332c259338e8e1632e74126d663c8405b","openrouter.json":"828095707e092be2e68b8c6a052588188ef651f68d4097d3d72ab183fb5c7b81","qwen-token-plan-cn.json":"a50420854a624ea82155d9621cd88d6cbd7802498d28fb1fd317eb7a1bc26cc7","qwen-token-plan-individual.json":"0e1578a5c0e11d65644bb42d1d6efee5af97a55a4881d0421ab68bd970d4d4ef","qwen-token-plan.json":"24285f68b2350aa1d98ecaeafe0914bce97940fe8798eff20f2a5c6d8c26bd6f","together.json":"927c707d06f2236cdab13f14c870fb58bce0614ba7287bbcd57cc9fd66d191ed","vercel-ai-gateway.json":"e61d139444d16c7900a141d0bc9af874761794e80fb7d3ff4a08a21c3e93231f","xai.json":"282838b0546d63106c81f1703cdf5ed31ebfe0c5f13a4bec0d590472cbbe03f2","xiaomi-token-plan-ams.json":"7ce8ed244672c45737d286ff3ca9c3a2686a5d4b2f0c5f71ab9348c14b14daf3","xiaomi-token-plan-cn.json":"684892b5fe6fa371d6040d2011c0fa33facd650d2eaf19f5dbee8efb33016200","xiaomi-token-plan-sgp.json":"b19e79b82ac4fdcb080e6d220106797504c885ed70b27fc2b3c1aa4810f32963","xiaomi.json":"810368d3828c8bb9498012a0d48639030c0c216b8c13e79da02daa515aa23448","zai-coding-cn.json":"abf4cbc22507b9d545842072b5e34bce230025fc20f7b1cc67db3782c1dc4b56","zai.json":"089af736a622b0a25e417493819f4e174884afba43235c5a1f17814057875627"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mistral-conversations":{"codestral-latest":{"id":"codestral-latest","name":"Codestral (latest)","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.3,"output":0.9,"cacheRead":0.03,"cacheWrite":0},"contextWindow":256000,"maxTokens":4096},"devstral-2512":{"id":"devstral-2512","name":"Devstral 2","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.4,"output":2,"cacheRead":0.04,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"devstral-latest":{"id":"devstral-latest","name":"Devstral 2","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.4,"output":2,"cacheRead":0.04,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"devstral-medium-2507":{"id":"devstral-medium-2507","name":"Devstral Medium","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.4,"output":2,"cacheRead":0.04,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"devstral-medium-latest":{"id":"devstral-medium-latest","name":"Devstral 2 (latest)","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.4,"output":2,"cacheRead":0.04,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"devstral-small-2505":{"id":"devstral-small-2505","name":"Devstral Small 2505","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.1,"output":0.3,"cacheRead":0.01,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"devstral-small-2507":{"id":"devstral-small-2507","name":"Devstral Small","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.1,"output":0.3,"cacheRead":0.01,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"labs-devstral-small-2512":{"id":"labs-devstral-small-2512","name":"Devstral Small 2","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000},"magistral-medium-latest":{"id":"magistral-medium-latest","name":"Magistral Medium (latest)","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":true,"input":["text"],"cost":{"input":2,"output":5,"cacheRead":0.2,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"magistral-small":{"id":"magistral-small","name":"Magistral Small","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":true,"input":["text"],"cost":{"input":0.5,"output":1.5,"cacheRead":0.05,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"ministral-3b-latest":{"id":"ministral-3b-latest","name":"Ministral 3B (latest)","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.04,"output":0.04,"cacheRead":0.004,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"ministral-8b-latest":{"id":"ministral-8b-latest","name":"Ministral 8B (latest)","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.1,"output":0.1,"cacheRead":0.01,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"mistral-large-2411":{"id":"mistral-large-2411","name":"Mistral Large 2.1","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":2,"output":6,"cacheRead":0.2,"cacheWrite":0},"contextWindow":131072,"maxTokens":16384},"mistral-large-2512":{"id":"mistral-large-2512","name":"Mistral Large 3","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text","image"],"cost":{"input":0.5,"output":1.5,"cacheRead":0.05,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"mistral-large-latest":{"id":"mistral-large-latest","name":"Mistral Large (latest)","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text","image"],"cost":{"input":0.5,"output":1.5,"cacheRead":0.05,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"mistral-medium-2505":{"id":"mistral-medium-2505","name":"Mistral Medium 3","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text","image"],"cost":{"input":0.4,"output":2,"cacheRead":0.04,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072},"mistral-medium-2508":{"id":"mistral-medium-2508","name":"Mistral Medium 3.1","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text","image"],"cost":{"input":0.4,"output":2,"cacheRead":0.04,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"mistral-medium-2604":{"id":"mistral-medium-2604","name":"Mistral Medium 3.5","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":7.5,"cacheRead":0.15,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"mistral-medium-3.5":{"id":"mistral-medium-3.5","name":"Mistral Medium 3.5","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":7.5,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"mistral-medium-latest":{"id":"mistral-medium-latest","name":"Mistral Medium (latest)","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":7.5,"cacheRead":0.15,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"mistral-nemo":{"id":"mistral-nemo","name":"Mistral Nemo","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.15,"output":0.15,"cacheRead":0.015,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"mistral-small-2506":{"id":"mistral-small-2506","name":"Mistral Small 3.2","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text","image"],"cost":{"input":0.1,"output":0.3,"cacheRead":0.01,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"mistral-small-2603":{"id":"mistral-small-2603","name":"Mistral Small 4","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.015,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000},"mistral-small-latest":{"id":"mistral-small-latest","name":"Mistral Small (latest)","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.015,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000},"open-mistral-7b":{"id":"open-mistral-7b","name":"Mistral 7B","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.25,"output":0.25,"cacheRead":0.025,"cacheWrite":0},"contextWindow":8000,"maxTokens":8000},"open-mistral-nemo":{"id":"open-mistral-nemo","name":"Open Mistral Nemo","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.15,"output":0.15,"cacheRead":0.015,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"open-mixtral-8x22b":{"id":"open-mixtral-8x22b","name":"Mixtral 8x22B","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":2,"output":6,"cacheRead":0.2,"cacheWrite":0},"contextWindow":64000,"maxTokens":64000},"open-mixtral-8x7b":{"id":"open-mixtral-8x7b","name":"Mixtral 8x7B","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.7,"output":0.7,"cacheRead":0.07,"cacheWrite":0},"contextWindow":32000,"maxTokens":32000},"pixtral-12b":{"id":"pixtral-12b","name":"Pixtral 12B","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text","image"],"cost":{"input":0.15,"output":0.15,"cacheRead":0.015,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"pixtral-large-latest":{"id":"pixtral-large-latest","name":"Pixtral Large (latest)","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.2,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"voxtral-small-latest":{"id":"voxtral-small-latest","name":"Voxtral Small (latest)","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.1,"output":0.3,"cacheRead":0.01,"cacheWrite":0},"contextWindow":32000,"maxTokens":32000},"zai-glm-5-2":{"id":"zai-glm-5-2","name":"GLM-5.2","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":true,"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.14,"cacheWrite":0},"contextWindow":1000000,"maxTokens":131072}}}
|
|
1
|
+
{"mistral-conversations":{"codestral-latest":{"id":"codestral-latest","name":"Codestral (latest)","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.3,"output":0.9,"cacheRead":0.03,"cacheWrite":0},"contextWindow":256000,"maxTokens":4096},"devstral-2512":{"id":"devstral-2512","name":"Devstral 2","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.4,"output":2,"cacheRead":0.04,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"devstral-latest":{"id":"devstral-latest","name":"Devstral 2","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.4,"output":2,"cacheRead":0.04,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"devstral-medium-2507":{"id":"devstral-medium-2507","name":"Devstral Medium","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.4,"output":2,"cacheRead":0.04,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"devstral-medium-latest":{"id":"devstral-medium-latest","name":"Devstral 2 (latest)","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.4,"output":2,"cacheRead":0.04,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"devstral-small-2505":{"id":"devstral-small-2505","name":"Devstral Small 2505","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.1,"output":0.3,"cacheRead":0.01,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"devstral-small-2507":{"id":"devstral-small-2507","name":"Devstral Small","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.1,"output":0.3,"cacheRead":0.01,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"labs-devstral-small-2512":{"id":"labs-devstral-small-2512","name":"Devstral Small 2","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000},"magistral-medium-latest":{"id":"magistral-medium-latest","name":"Magistral Medium (latest)","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":true,"input":["text"],"cost":{"input":2,"output":5,"cacheRead":0.2,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"magistral-small":{"id":"magistral-small","name":"Magistral Small","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":true,"input":["text"],"cost":{"input":0.5,"output":1.5,"cacheRead":0.05,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"ministral-3b-latest":{"id":"ministral-3b-latest","name":"Ministral 3B (latest)","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.04,"output":0.04,"cacheRead":0.004,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"ministral-8b-latest":{"id":"ministral-8b-latest","name":"Ministral 8B (latest)","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.1,"output":0.1,"cacheRead":0.01,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"mistral-large-2411":{"id":"mistral-large-2411","name":"Mistral Large 2.1","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":2,"output":6,"cacheRead":0.2,"cacheWrite":0},"contextWindow":131072,"maxTokens":16384},"mistral-large-2512":{"id":"mistral-large-2512","name":"Mistral Large 3","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text","image"],"cost":{"input":0.5,"output":1.5,"cacheRead":0.05,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"mistral-large-latest":{"id":"mistral-large-latest","name":"Mistral Large (latest)","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text","image"],"cost":{"input":0.5,"output":1.5,"cacheRead":0.05,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"mistral-medium-2505":{"id":"mistral-medium-2505","name":"Mistral Medium 3","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text","image"],"cost":{"input":0.4,"output":2,"cacheRead":0.04,"cacheWrite":0},"contextWindow":131072,"maxTokens":131072},"mistral-medium-2508":{"id":"mistral-medium-2508","name":"Mistral Medium 3.1","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text","image"],"cost":{"input":0.4,"output":2,"cacheRead":0.04,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"mistral-medium-2604":{"id":"mistral-medium-2604","name":"Mistral Medium 3.5","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":7.5,"cacheRead":0.15,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"mistral-medium-3.5":{"id":"mistral-medium-3.5","name":"Mistral Medium 3.5","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":7.5,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"mistral-medium-latest":{"id":"mistral-medium-latest","name":"Mistral Medium (latest)","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":true,"input":["text","image"],"cost":{"input":1.5,"output":7.5,"cacheRead":0.15,"cacheWrite":0},"contextWindow":262144,"maxTokens":262144},"mistral-nemo":{"id":"mistral-nemo","name":"Mistral Nemo","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.15,"output":0.15,"cacheRead":0.015,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"mistral-small-2506":{"id":"mistral-small-2506","name":"Mistral Small 3.2","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text","image"],"cost":{"input":0.1,"output":0.3,"cacheRead":0.01,"cacheWrite":0},"contextWindow":128000,"maxTokens":16384},"mistral-small-2603":{"id":"mistral-small-2603","name":"Mistral Small 4","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.015,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000},"mistral-small-latest":{"id":"mistral-small-latest","name":"Mistral Small (latest)","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.015,"cacheWrite":0},"contextWindow":256000,"maxTokens":256000},"open-mistral-7b":{"id":"open-mistral-7b","name":"Mistral 7B","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.25,"output":0.25,"cacheRead":0.025,"cacheWrite":0},"contextWindow":8000,"maxTokens":8000},"open-mistral-nemo":{"id":"open-mistral-nemo","name":"Open Mistral Nemo","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.15,"output":0.15,"cacheRead":0.015,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"open-mixtral-8x22b":{"id":"open-mixtral-8x22b","name":"Mixtral 8x22B","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":2,"output":6,"cacheRead":0.2,"cacheWrite":0},"contextWindow":64000,"maxTokens":64000},"open-mixtral-8x7b":{"id":"open-mixtral-8x7b","name":"Mixtral 8x7B","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.7,"output":0.7,"cacheRead":0.07,"cacheWrite":0},"contextWindow":32000,"maxTokens":32000},"pixtral-12b":{"id":"pixtral-12b","name":"Pixtral 12B","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text","image"],"cost":{"input":0.15,"output":0.15,"cacheRead":0.015,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"pixtral-large-latest":{"id":"pixtral-large-latest","name":"Pixtral Large (latest)","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.2,"cacheWrite":0},"contextWindow":128000,"maxTokens":128000},"voxtral-small-latest":{"id":"voxtral-small-latest","name":"Voxtral Small (latest)","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":false,"input":["text"],"cost":{"input":0.1,"output":0.3,"cacheRead":0.01,"cacheWrite":0},"contextWindow":32000,"maxTokens":32000},"zai-glm-5-2":{"id":"zai-glm-5-2","name":"GLM-5.2","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":true,"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.14,"cacheWrite":0},"contextWindow":1000000,"maxTokens":131072},"zai-glm-5-3":{"id":"zai-glm-5-3","name":"GLM-5.3","api":"mistral-conversations","provider":"mistral","baseUrl":"https://api.mistral.ai","reasoning":true,"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.14,"cacheWrite":0},"contextWindow":1000000,"maxTokens":131072}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"anthropic-messages":{"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","api":"anthropic-messages","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"contextWindow":1000000,"maxTokens":131072},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","api":"anthropic-messages","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.47,"cacheRead":0.016,"cacheWrite":0.2},"contextWindow":1000000,"maxTokens":131072},"union-alpha":{"id":"union-alpha","name":"Union Alpha Free","api":"anthropic-messages","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":262144,"maxTokens":131072}},"openai-completions":{"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.003,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens","requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"contextWindow":1000000,"maxTokens":384000,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null,"high":"high","max":"max"}},"deepseek-v4-flash-vision-exp":{"id":"deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.003,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens","requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"contextWindow":1000000,"maxTokens":384000,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null,"high":"high","max":"max"}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro (New)","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":0.66,"output":1.98,"cacheRead":0.022,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens","requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"contextWindow":1000000,"maxTokens":384000,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null,"high":"high","max":"max"}},"deepseek-v4.1-flash":{"id":"deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.003,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens","requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"contextWindow":1000000,"maxTokens":384000,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null,"high":"high","max":"max"}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.26,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":202752,"maxTokens":32768},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.26,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":null,"high":"high","xhigh":null,"max":"max"}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.26,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":null,"high":"high","xhigh":null,"max":"max"}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.5,"cacheRead":0.03,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":null,"high":"high","xhigh":null,"max":"max"}},"hy3":{"id":"hy3","name":"Hy3","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":0.14,"output":0.58,"cacheRead":0.035,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":256000,"maxTokens":128000,"thinkingLevelMap":{"off":"none","minimal":null,"low":"low","medium":null,"high":"high","xhigh":null,"max":null}},"hy4-preview":{"id":"hy4-preview","name":"Hy4 preview","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":0.834,"output":2.501,"cacheRead":0.042,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1024000,"maxTokens":64000,"thinkingLevelMap":{"off":"none","minimal":null,"low":null,"medium":null,"high":"high","xhigh":null,"max":null}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.95,"output":4,"cacheRead":0.16,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"thinkingFormat":"deepseek","supportsReasoningEffort":false,"maxTokensField":"max_tokens","supportsLongCacheRetention":false},"contextWindow":262144,"maxTokens":65536,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.95,"output":4,"cacheRead":0.19,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":262144,"maxTokens":262144},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1048576,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":null,"high":null,"xhigh":null,"max":"max"}},"longcat-2.0":{"id":"longcat-2.0","name":"LongCat-2.0","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.006,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":131072},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo V2.5","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":128000},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo V2.5 Pro","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":0.435,"output":0.87,"cacheRead":0.003625,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1048576,"maxTokens":128000},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax-M2.7","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":204800,"maxTokens":131072},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.5,"output":3,"cacheRead":0.05,"cacheWrite":0.625},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"thinkingFormat":"qwen","maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":65536},"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":2.5,"output":7.5,"cacheRead":0.5,"cacheWrite":3.125},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":65536},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.4,"output":1.6,"cacheRead":0.04,"cacheWrite":0.5},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":65536},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.25,"cacheWrite":2.5},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":null,"xhigh":"xhigh","max":null}}},"openai-responses":{"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","api":"openai-responses","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.2,"output":1.2,"cacheRead":0.02,"cacheWrite":0.25},"compat":{"sessionAffinityFormat":"openai-nosession"},"contextWindow":1050000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":"max"}},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","api":"openai-responses","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.5,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession"},"contextWindow":500000,"maxTokens":500000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"muse-spark-1.2-contributor":{"id":"muse-spark-1.2-contributor","name":"Muse Spark 1.2 Contributor","api":"openai-responses","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.1,"output":0.2,"cacheRead":0.002,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession"},"contextWindow":1048576,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":"minimal","low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"muse-spark-1.3-contributor":{"id":"muse-spark-1.3-contributor","name":"Muse Spark 1.3 Contributor","api":"openai-responses","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.1,"output":0.2,"cacheRead":0.002,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession"},"contextWindow":1048576,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":"minimal","low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}}}}
|
|
1
|
+
{"anthropic-messages":{"minimax-m3":{"id":"minimax-m3","name":"MiniMax-M3","api":"anthropic-messages","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go","reasoning":true,"input":["text","image"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"contextWindow":1000000,"maxTokens":131072},"qwen3.8-flash":{"id":"qwen3.8-flash","name":"Qwen3.8 Flash","api":"anthropic-messages","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.47,"cacheRead":0.016,"cacheWrite":0.2},"contextWindow":1000000,"maxTokens":131072}},"openai-completions":{"deepseek-v4-flash":{"id":"deepseek-v4-flash","name":"DeepSeek V4 Flash","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.003,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens","requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"contextWindow":1000000,"maxTokens":384000,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null,"high":"high","max":"max"}},"deepseek-v4-flash-vision-exp":{"id":"deepseek-v4-flash-vision-exp","name":"DeepSeek V4 Flash Vision Exp","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.003,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens","requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"contextWindow":1000000,"maxTokens":384000,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null,"high":"high","max":"max"}},"deepseek-v4-pro":{"id":"deepseek-v4-pro","name":"DeepSeek V4 Pro (New)","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":0.66,"output":1.98,"cacheRead":0.022,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens","requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"contextWindow":1000000,"maxTokens":384000,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null,"high":"high","max":"max"}},"deepseek-v4.1-flash":{"id":"deepseek-v4.1-flash","name":"DeepSeek V4.1 Flash","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.6,"cacheRead":0.003,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens","requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},"contextWindow":1000000,"maxTokens":384000,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null,"high":"high","max":"max"}},"glm-5.1":{"id":"glm-5.1","name":"GLM-5.1","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.26,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":202752,"maxTokens":32768},"glm-5.2":{"id":"glm-5.2","name":"GLM-5.2","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.26,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":null,"high":"high","xhigh":null,"max":"max"}},"glm-5.3":{"id":"glm-5.3","name":"GLM-5.3","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":1.4,"output":4.4,"cacheRead":0.26,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":null,"high":"high","xhigh":null,"max":"max"}},"glm-5.3-flash":{"id":"glm-5.3-flash","name":"GLM-5.3-Flash","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.15,"output":0.5,"cacheRead":0.03,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":null,"high":"high","xhigh":null,"max":"max"}},"hy3":{"id":"hy3","name":"Hy3","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":0.14,"output":0.58,"cacheRead":0.035,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":256000,"maxTokens":128000,"thinkingLevelMap":{"off":"none","minimal":null,"low":"low","medium":null,"high":"high","xhigh":null,"max":null}},"hy4-preview":{"id":"hy4-preview","name":"Hy4 preview","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":0.834,"output":2.501,"cacheRead":0.042,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1024000,"maxTokens":64000,"thinkingLevelMap":{"off":"none","minimal":null,"low":null,"medium":null,"high":"high","xhigh":null,"max":null}},"kimi-k2.6":{"id":"kimi-k2.6","name":"Kimi K2.6","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.95,"output":4,"cacheRead":0.16,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"thinkingFormat":"deepseek","supportsReasoningEffort":false,"maxTokensField":"max_tokens","supportsLongCacheRetention":false},"contextWindow":262144,"maxTokens":65536,"thinkingLevelMap":{"minimal":null,"low":null,"medium":null}},"kimi-k2.7-code":{"id":"kimi-k2.7-code","name":"Kimi K2.7 Code","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.95,"output":4,"cacheRead":0.19,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":262144,"maxTokens":262144},"kimi-k3":{"id":"kimi-k3","name":"Kimi K3","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":3,"output":15,"cacheRead":0.3,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1048576,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":null,"low":null,"medium":null,"high":null,"xhigh":null,"max":"max"}},"longcat-2.0":{"id":"longcat-2.0","name":"LongCat-2.0","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.006,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":131072},"mimo-v2.5":{"id":"mimo-v2.5","name":"MiMo V2.5","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.14,"output":0.28,"cacheRead":0.0028,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":128000},"mimo-v2.5-pro":{"id":"mimo-v2.5-pro","name":"MiMo V2.5 Pro","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":0.435,"output":0.87,"cacheRead":0.003625,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1048576,"maxTokens":128000},"minimax-m2.7":{"id":"minimax-m2.7","name":"MiniMax-M2.7","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":0.3,"output":1.2,"cacheRead":0.06,"cacheWrite":0},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":204800,"maxTokens":131072},"qwen3.6-plus":{"id":"qwen3.6-plus","name":"Qwen3.6 Plus","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.5,"output":3,"cacheRead":0.05,"cacheWrite":0.625},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"thinkingFormat":"qwen","maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":65536},"qwen3.7-max":{"id":"qwen3.7-max","name":"Qwen3.7 Max","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text"],"cost":{"input":2.5,"output":7.5,"cacheRead":0.5,"cacheWrite":3.125},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":65536},"qwen3.7-plus":{"id":"qwen3.7-plus","name":"Qwen3.7 Plus","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.4,"output":1.6,"cacheRead":0.04,"cacheWrite":0.5},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":65536},"qwen3.8-max":{"id":"qwen3.8-max","name":"Qwen3.8 Max","api":"openai-completions","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.25,"cacheWrite":2.5},"compat":{"supportsStore":false,"supportsDeveloperRole":false,"maxTokensField":"max_tokens"},"contextWindow":1000000,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":null,"xhigh":"xhigh","max":null}}},"openai-responses":{"gpt-5.6-luna":{"id":"gpt-5.6-luna","name":"GPT-5.6 Luna","api":"openai-responses","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.2,"output":1.2,"cacheRead":0.02,"cacheWrite":0.25},"compat":{"sessionAffinityFormat":"openai-nosession"},"contextWindow":1050000,"maxTokens":128000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":"max"}},"grok-4.6":{"id":"grok-4.6","name":"Grok 4.6","api":"openai-responses","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":2,"output":6,"cacheRead":0.5,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession"},"contextWindow":500000,"maxTokens":500000,"thinkingLevelMap":{"off":null,"minimal":null,"low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"muse-spark-1.2-contributor":{"id":"muse-spark-1.2-contributor","name":"Muse Spark 1.2 Contributor","api":"openai-responses","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.1,"output":0.2,"cacheRead":0.002,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession"},"contextWindow":1048576,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":"minimal","low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}},"muse-spark-1.3-contributor":{"id":"muse-spark-1.3-contributor","name":"Muse Spark 1.3 Contributor","api":"openai-responses","provider":"opencode-go","baseUrl":"https://opencode.ai/zen/go/v1","reasoning":true,"input":["text","image"],"cost":{"input":0.1,"output":0.2,"cacheRead":0.002,"cacheWrite":0},"compat":{"sessionAffinityFormat":"openai-nosession"},"contextWindow":1048576,"maxTokens":131072,"thinkingLevelMap":{"off":null,"minimal":"minimal","low":"low","medium":"medium","high":"high","xhigh":"xhigh","max":null}}}}
|