@desplega.ai/agent-swarm 1.156.0 → 1.158.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{acp-adapter-c1msptrw.js → acp-adapter-xaq4n6pc.js} +1 -1
- package/dist/{actions-wd41qtdc.js → actions-p9hz5yat.js} +15 -15
- package/dist/{app-tz2qrnah.js → app-g26wdcz6.js} +4 -4
- package/dist/{artifact-td4q4dch.js → artifact-3v5t9jtg.js} +1 -1
- package/dist/{assistant-c3q1zj2t.js → assistant-wydfqkb3.js} +16 -16
- package/dist/{boot-reembed-0be1krkm.js → boot-reembed-g5ckg9yb.js} +6 -6
- package/dist/{boot-reembed-r00j03f3.js → boot-reembed-se8zmdcp.js} +5 -5
- package/dist/{boot-scrub-logs-9j4hd0vw.js → boot-scrub-logs-wfxqan61.js} +3 -3
- package/dist/{seed-pricing-ncgxz1r2.js → boot-seeds-s3q01xj3.js} +10 -10
- package/dist/{claude-adapter-112w28qc.js → claude-adapter-tv2x4f36.js} +7 -7
- package/dist/{claude-managed-adapter-ea2aga6w.js → claude-managed-adapter-41b2s7fd.js} +2 -2
- package/dist/{claude-sdk-session-k7pb5kfz.js → claude-sdk-session-t442qz6f.js} +8 -8
- package/dist/{cli-e781c6f9.js → cli-0xjkj1j7.js} +1 -0
- package/dist/{cli-58rgvkt4.js → cli-1hkrch3k.js} +2 -2
- package/dist/{cli-mx3bzbv8.js → cli-20cj37vt.js} +1968 -44
- package/dist/{cli-h0wdadsx.js → cli-4198qc9v.js} +7 -3
- package/dist/{cli-24w39x6n.js → cli-47m6dkd3.js} +362 -126
- package/dist/{cli-90x9ewbz.js → cli-53sz8gkz.js} +1 -1
- package/dist/{cli-005pze6s.js → cli-5d10vd2m.js} +1 -1
- package/dist/{cli-08n8jxcw.js → cli-65hjmev5.js} +57 -17
- package/dist/{cli-scwq51gn.js → cli-68w09sjw.js} +7 -1
- package/dist/{cli-7j2098n5.js → cli-7gtvvpbh.js} +4 -4
- package/dist/{cli-b05d7szr.js → cli-7s3syk22.js} +18 -11
- package/dist/{cli-9w4ex8vh.js → cli-8qmme6vd.js} +2 -2
- package/dist/{cli-28wkjpdp.js → cli-987hg0aa.js} +2 -2
- package/dist/{cli-7pgcpcrg.js → cli-9httdpyq.js} +1 -1
- package/dist/{cli-jk26c1sz.js → cli-aky8tctm.js} +26 -93
- package/dist/{cli-865swy5p.js → cli-c07r9a2m.js} +3 -2
- package/dist/{cli-nyqza443.js → cli-fgqxwrpv.js} +291 -12
- package/dist/{cli-9pyah9c4.js → cli-ftfvggzx.js} +633 -166
- package/dist/{cli-ytxs7mn1.js → cli-g8djp6qe.js} +17 -0
- package/dist/{cli-avkd6mqv.js → cli-h967nb6r.js} +551 -0
- package/dist/{cli-y8bfxjtw.js → cli-j55n64b6.js} +23 -22
- package/dist/{cli-7vj52450.js → cli-j57qkrpq.js} +86 -28
- package/dist/{cli-tjmghmm5.js → cli-q67y4wzm.js} +6 -3
- package/dist/{cli-n6zq3kbd.js → cli-rj19hc34.js} +1 -1
- package/dist/{cli-tp0d7vzb.js → cli-rjehvrts.js} +4 -4
- package/dist/{cli-s8hpxeg4.js → cli-rqz8qbw7.js} +245 -75
- package/dist/{cli-p37sg0a9.js → cli-s8eet254.js} +1 -1
- package/dist/cli-t1ze64h3.js +811 -0
- package/dist/{cli-hc2fkhdv.js → cli-ws6rqycm.js} +3 -2
- package/dist/{cli-t1cd3mhp.js → cli-wscdvcqz.js} +13 -5
- package/dist/{cli-xa4j64zh.js → cli-x24pshtq.js} +5 -5
- package/dist/{cli-nbp6m6gp.js → cli-xberxa1r.js} +51 -26
- package/dist/{cli-szcyv1mm.js → cli-xhaeg2nc.js} +1 -1
- package/dist/cli.js +30 -16
- package/dist/{codex-adapter-g4tj1f2g.js → codex-adapter-cnm8wk11.js} +5 -5
- package/dist/{codex-session-runner-ad8ha7zt.js → codex-session-runner-gfg547zj.js} +5 -5
- package/dist/{commands-z3gd8ppc.js → commands-e3bn0p75.js} +3 -3
- package/dist/{db-bezm97r9.js → db-03v9kzr2.js} +17 -3
- package/dist/{dispatcher-a97hc33y.js → dispatcher-nrmg8yht.js} +14 -14
- package/dist/{dsh-adapter-1dwg97zv.js → dsh-adapter-k03nfqa6.js} +2 -2
- package/dist/{handlers-wtdy1x02.js → handlers-aqcedbyb.js} +17 -17
- package/dist/{hook-7edgmzng.js → hook-7vkskkre.js} +19 -11
- package/dist/{hook-fvs58a5b.js → hook-ybvmrmhq.js} +4 -4
- package/dist/{http-phnf93hp.js → http-2eqa8t24.js} +432 -195
- package/dist/{index-7x131mmf.js → index-1yks3qcr.js} +14 -14
- package/dist/{index-1fktvwxc.js → index-a3vn96n8.js} +31 -28
- package/dist/{index-yp8rasxk.js → index-c6zsv1bd.js} +5 -5
- package/dist/{index-50jxgw0d.js → index-chgdkq36.js} +14 -14
- package/dist/{index-7jwk7nsm.js → index-x71bvq0p.js} +15 -15
- package/dist/{keepalive-nnz07ebd.js → keepalive-vtkf5n99.js} +5 -5
- package/dist/{lead-mg7qcgww.js → lead-h3sp357x.js} +26 -26
- package/dist/{maintenance-ywmnqrpx.js → maintenance-jzeqtk3q.js} +6 -6
- package/dist/{oauth-refresh-sweep-c63sqfs1.js → oauth-refresh-sweep-qp3dzmdp.js} +4 -4
- package/dist/{onboard-2zj8sqkq.js → onboard-tmsp0qbz.js} +278 -81
- package/dist/{opencode-adapter-z64xjzec.js → opencode-adapter-x6x2da1z.js} +3 -3
- package/dist/{otel-impl-jgdfm26f.js → otel-impl-9mz73q65.js} +416 -301
- package/dist/{pi-mono-adapter-2b7mw16r.js → pi-mono-adapter-m6dvv0dz.js} +2 -2
- package/dist/{pricing-refresh-3whntb69.js → pricing-refresh-v1cbr9te.js} +5 -5
- package/dist/{rbac-roles-3zptcc3p.js → rbac-roles-c9wqz83x.js} +4 -4
- package/dist/{render-v2-dbvpyysc.js → render-v2-gryrh9h8.js} +4 -4
- package/dist/{setup-qwx0j8z9.js → setup-q9720bt6.js} +2 -2
- package/dist/{virtual-modules-8qheft18.js → virtual-modules-3htpgn8x.js} +1 -1
- package/dist/{work-objects-sjbcmvep.js → work-objects-b76x7deb.js} +17 -17
- package/dist/{worker-xezqdkb7.js → worker-6vrxbv41.js} +26 -26
- package/openapi.json +1626 -629
- package/package.json +3 -2
- package/src/apps/catalog.generated.json +229 -0
- package/src/apps/page-validator.ts +71 -16
- package/src/apps/row-store.ts +66 -11
- package/src/apps/sync.ts +59 -17
- package/src/artifact-sdk/browser-sdk.ts +436 -2
- package/src/be/approval-sweeps.ts +109 -0
- package/src/be/boot-seeds.ts +40 -0
- package/src/be/chunking.ts +1 -1
- package/src/be/db/agents.ts +20 -0
- package/src/be/db/approvals.ts +78 -0
- package/src/be/db/tasks/read.ts +197 -39
- package/src/be/db/tasks/write.ts +41 -9
- package/src/be/db-client.ts +107 -48
- package/src/be/db.ts +219 -76
- package/src/be/events.ts +33 -1
- package/src/be/memory/graph-expansion.ts +10 -3
- package/src/be/memory/providers/sqlite-store.ts +55 -13
- package/src/be/memory/raters/retrieval.ts +5 -2
- package/src/be/memory/reranker.ts +26 -2
- package/src/be/memory/types.ts +2 -0
- package/src/be/migrations/166_approval_request_auto_cancellation.sql +9 -0
- package/src/be/migrations/171_memory_retrieval_relevance.sql +8 -0
- package/src/be/migrations/175_workflow_runs_list_index.sql +11 -0
- package/src/be/migrations/177_events_event_agent_created_index.sql +11 -0
- package/src/be/models-catalog.ts +2 -0
- package/src/be/modelsdev-cache.json +1857 -0
- package/src/be/modelsdev-cache.ts +14 -1
- package/src/be/pricing-normalize.ts +2 -0
- package/src/be/scripts/typecheck.ts +1 -0
- package/src/be/seed-pricing.ts +3 -1
- package/src/be/seed-skills/bundled-files.generated.json +1 -1
- package/src/be/steering.ts +53 -3
- package/src/be/swarm-config-guard.ts +3 -0
- package/src/be/task-citations.ts +29 -0
- package/src/cli.tsx +14 -1
- package/src/commands/onboard/compose-generator.ts +8 -3
- package/src/commands/onboard/container-engine.ts +220 -0
- package/src/commands/onboard/manifest.ts +1 -0
- package/src/commands/onboard/steps/health-check.tsx +4 -1
- package/src/commands/onboard/steps/prereq-check.tsx +50 -54
- package/src/commands/onboard/steps/start.tsx +31 -16
- package/src/commands/onboard/types.ts +7 -2
- package/src/commands/onboard.tsx +39 -4
- package/src/commands/profile-sync.ts +79 -26
- package/src/commands/runner.ts +8 -1
- package/src/extensions/catalog.generated.json +17 -0
- package/src/extensions/contract-types.generated.ts +1 -1
- package/src/heartbeat/heartbeat.ts +263 -103
- package/src/hooks/hook.ts +21 -12
- package/src/http/agents.ts +35 -0
- package/src/http/approval-requests.ts +136 -64
- package/src/http/apps.ts +14 -3
- package/src/http/config.ts +15 -1
- package/src/http/events.ts +62 -2
- package/src/http/index.ts +6 -4
- package/src/http/memory.ts +21 -7
- package/src/http/schedules.ts +1 -1
- package/src/http/session-data.ts +9 -4
- package/src/http/sessions.ts +25 -18
- package/src/http/stats.ts +19 -7
- package/src/http/status.ts +11 -1
- package/src/http/tasks.ts +40 -8
- package/src/http/webhooks.ts +67 -46
- package/src/http/workflows.ts +15 -20
- package/src/linear/outbound.ts +37 -15
- package/src/otel-impl.ts +151 -1
- package/src/otel.ts +14 -3
- package/src/prompts/memories.ts +19 -2
- package/src/providers/claude-managed-models.ts +8 -0
- package/src/providers/codex-agents-md.ts +140 -17
- package/src/providers/modelsdev-reasoning.json +551 -0
- package/src/rbac/legacy-policy.ts +16 -0
- package/src/rbac/permissions.ts +4 -0
- package/src/scheduler/deferred-task-waits.ts +28 -0
- package/src/scheduler/schedule-task.ts +3 -0
- package/src/scheduler/scheduler.ts +14 -0
- package/src/scripts-runtime/sdk-allowlist.ts +1 -0
- package/src/scripts-runtime/swarm-sdk.ts +9 -0
- package/src/scripts-runtime/types/stdlib.d.ts +1 -0
- package/src/scripts-runtime/types/swarm-extension.d.ts +1 -0
- package/src/scripts-runtime/types/swarm-sdk.d.ts +1 -0
- package/src/server.ts +12 -7
- package/src/slack/app.ts +35 -4
- package/src/slack/connection-state.ts +17 -0
- package/src/tasks/context-key.ts +1 -0
- package/src/tasks/worker-follow-up.ts +6 -2
- package/src/tests/agent-task-activity.test.ts +74 -0
- package/src/tests/agents-list-model-display.test.ts +6 -1
- package/src/tests/approval-auto-cancellation-migration.test.ts +104 -0
- package/src/tests/approval-requests.test.ts +395 -0
- package/src/tests/approval-sweeps-config.test.ts +47 -0
- package/src/tests/approval-sweeps.test.ts +508 -0
- package/src/tests/apps-kibo-blocks.test.ts +77 -0
- package/src/tests/apps-spike.test.ts +56 -1
- package/src/tests/apps-sync-engine.test.ts +20 -9
- package/src/tests/boot-seeds.test.ts +170 -0
- package/src/tests/cancel-approval-request-tool.test.ts +115 -0
- package/src/tests/claude-managed-adapter.test.ts +6 -0
- package/src/tests/codex-adapter.test.ts +126 -1
- package/src/tests/config-key-filter.test.ts +80 -0
- package/src/tests/context-window.test.ts +1 -0
- package/src/tests/db-client-busy-retry.test.ts +96 -0
- package/src/tests/db-client.test.ts +60 -1
- package/src/tests/db-task-read-contract.test.ts +10 -0
- package/src/tests/db-task-write-contract.test.ts +9 -0
- package/src/tests/deferred-schedule-reaper.test.ts +193 -0
- package/src/tests/docs-index-footprint.test.js +3 -3
- package/src/tests/events-http.test.ts +103 -0
- package/src/tests/extensions-catalog.test.ts +22 -17
- package/src/tests/extensions-pre-task.test.ts +107 -0
- package/src/tests/fixtures/kibo-blocks-definition.json.txt +105 -0
- package/src/tests/follow-up-config-inheritance.test.ts +260 -0
- package/src/tests/heartbeat-orphan-resume.test.ts +84 -0
- package/src/tests/heartbeat-reboot-live.test.ts +95 -0
- package/src/tests/heartbeat-stall-cas.test.ts +80 -0
- package/src/tests/heartbeat.test.ts +99 -3
- package/src/tests/hook-mcp-config.test.ts +29 -0
- package/src/tests/http-api-integration.test.ts +16 -2
- package/src/tests/kv-storage.test.ts +62 -0
- package/src/tests/linear-outbound-sync.test.ts +120 -5
- package/src/tests/list-endpoint-slimming.test.ts +91 -0
- package/src/tests/memory-graph-organic-route.test.ts +155 -0
- package/src/tests/memory-http-recall-gating.test.ts +14 -4
- package/src/tests/memory-hybrid.test.ts +161 -1
- package/src/tests/memory-prompt-recall-crowdout.test.ts +297 -0
- package/src/tests/memory.test.ts +22 -0
- package/src/tests/onboard-container-engine.test.ts +240 -0
- package/src/tests/otel-event-loop-and-logs.test.ts +99 -0
- package/src/tests/pricing-routes.test.ts +14 -0
- package/src/tests/profile-sync-warning.test.ts +8 -4
- package/src/tests/promote-draft-task-route.test.ts +19 -0
- package/src/tests/provider-registration.test.ts +296 -42
- package/src/tests/rbac-engine.test.ts +30 -0
- package/src/tests/reasoning-effort.test.ts +8 -0
- package/src/tests/script-connections.test.ts +7 -0
- package/src/tests/sdk-allowlist.test.ts +39 -0
- package/src/tests/session-costs-model-key-normalize.test.ts +1 -0
- package/src/tests/sessions-detail-batch.test.ts +250 -0
- package/src/tests/sessions.test.ts +118 -0
- package/src/tests/slack-config.test.ts +22 -0
- package/src/tests/sonnet-5-5-registry.test.ts +44 -0
- package/src/tests/status.test.ts +36 -1
- package/src/tests/swarm-diff.test.ts +316 -10
- package/src/tests/task-completion-idempotency.test.ts +2 -1
- package/src/tests/tasks-requested-by-filter.test.ts +3 -1
- package/src/tests/tool-annotations.test.ts +1 -1
- package/src/tests/ui-list-slim-projections.test.ts +158 -0
- package/src/tests/webhooks-task-blocked.test.ts +127 -0
- package/src/tests/workflow-approval-recovery.test.ts +203 -0
- package/src/tests/workflow-hitl-routing.test.ts +22 -1
- package/src/tests/workflow-hitl-slack-card.test.ts +52 -0
- package/src/tests/workflow-http-v2.test.ts +99 -8
- package/src/tests/workflow-retry-validation.test.ts +56 -0
- package/src/tests/workflow-tla-races.test.ts +389 -0
- package/src/tests/workflow-validation-port-routing.test.ts +113 -1
- package/src/tools/cancel-approval-request.ts +57 -0
- package/src/tools/memory-search.ts +1 -0
- package/src/tools/request-human-input.ts +4 -2
- package/src/tools/schedules/list-schedules.ts +4 -2
- package/src/tools/send-task.ts +4 -0
- package/src/tools/templates.ts +19 -0
- package/src/tools/tool-config.ts +2 -1
- package/src/tools/workflows/list-workflow-runs.ts +1 -0
- package/src/types.ts +38 -0
- package/src/utils/context-window.ts +1 -0
- package/src/workflows/approval-cancel.ts +152 -0
- package/src/workflows/approval-notifications.ts +84 -0
- package/src/workflows/checkpoint.ts +10 -5
- package/src/workflows/definition.ts +21 -0
- package/src/workflows/engine.ts +152 -21
- package/src/workflows/executors/human-in-the-loop.ts +1 -1
- package/src/workflows/recovery.ts +100 -45
- package/src/workflows/resume.ts +49 -18
- package/src/workflows/retry-poller.ts +71 -21
- package/templates/extensions/README.md +1 -0
- package/templates/extensions/github-sender-allowlist/README.md +18 -0
- package/templates/extensions/github-sender-allowlist/hooks.ts +55 -0
- package/templates/extensions/github-sender-allowlist/manifest.json +8 -0
- package/templates/skills/apps/content.md +20 -1
- package/templates/skills/code-quality/content.md +26 -1
- package/templates/skills/pages/content.md +16 -4
- package/templates/skills/pages/files/examples/multiplayer-board.html +3 -12
- package/templates/skills/scheduling/content.md +1 -1
- package/dist/cli-2daksqps.js +0 -378
- package/dist/rbac-roles-3zw68x72.js +0 -37
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
createSwarmEventHandler
|
|
3
|
-
} from "./cli-hsxj0yar.js";
|
|
4
1
|
import {
|
|
5
2
|
resolveCodexPrompt
|
|
6
3
|
} from "./cli-r94z9p1z.js";
|
|
4
|
+
import {
|
|
5
|
+
createSwarmEventHandler
|
|
6
|
+
} from "./cli-hsxj0yar.js";
|
|
7
7
|
import {
|
|
8
8
|
readPkgVersion
|
|
9
9
|
} from "./cli-2djtr51b.js";
|
|
@@ -13,20 +13,20 @@ import {
|
|
|
13
13
|
import {
|
|
14
14
|
CTX_MODE_NUDGE_EVERY
|
|
15
15
|
} from "./cli-zm7njwzd.js";
|
|
16
|
+
import {
|
|
17
|
+
summarizeSession
|
|
18
|
+
} from "./cli-cw9zck8j.js";
|
|
16
19
|
import {
|
|
17
20
|
CONTEXT_FORMULA,
|
|
18
21
|
clampContextPercent,
|
|
19
22
|
computeContextUsedUnified
|
|
20
|
-
} from "./cli-
|
|
21
|
-
import {
|
|
22
|
-
summarizeSession
|
|
23
|
-
} from "./cli-cw9zck8j.js";
|
|
23
|
+
} from "./cli-0xjkj1j7.js";
|
|
24
24
|
import {
|
|
25
25
|
SessionErrorTracker
|
|
26
26
|
} from "./cli-npssxgaz.js";
|
|
27
27
|
import {
|
|
28
28
|
applyReasoningEffort
|
|
29
|
-
} from "./cli-
|
|
29
|
+
} from "./cli-h967nb6r.js";
|
|
30
30
|
import {
|
|
31
31
|
buildRatingsFromLlm,
|
|
32
32
|
fetchRetrievalsForTask,
|
|
@@ -52,7 +52,7 @@ import {
|
|
|
52
52
|
import {
|
|
53
53
|
init_package,
|
|
54
54
|
package_default
|
|
55
|
-
} from "./cli-
|
|
55
|
+
} from "./cli-c07r9a2m.js";
|
|
56
56
|
import {
|
|
57
57
|
init_secret_scrubber,
|
|
58
58
|
scrubSecrets
|
|
@@ -67,47 +67,114 @@ import { join as join2 } from "node:path";
|
|
|
67
67
|
init_secret_scrubber();
|
|
68
68
|
|
|
69
69
|
// src/providers/codex-agents-md.ts
|
|
70
|
-
import {
|
|
70
|
+
import { lstat, mkdir, readlink, realpath, symlink, unlink } from "node:fs/promises";
|
|
71
|
+
import { homedir } from "node:os";
|
|
72
|
+
import { dirname, join, resolve, sep } from "node:path";
|
|
71
73
|
var BLOCK_OPEN = "<swarm_system_prompt>";
|
|
72
74
|
var BLOCK_CLOSE = "</swarm_system_prompt>";
|
|
73
75
|
var BLOCK_REGEX = /<swarm_system_prompt>[\s\S]*?<\/swarm_system_prompt>\n?/;
|
|
76
|
+
var DEFAULT_STATE_DIR = join(homedir(), ".cache", "agent-swarm", "codex-agents-md");
|
|
74
77
|
var NOOP_HANDLE = {
|
|
75
78
|
cleanup: async () => {}
|
|
76
79
|
};
|
|
77
|
-
async function
|
|
80
|
+
async function readIfExists(path) {
|
|
81
|
+
const file = Bun.file(path);
|
|
82
|
+
return await file.exists() ? await file.text() : null;
|
|
83
|
+
}
|
|
84
|
+
function recordPathFor(stateDir, realCwd) {
|
|
85
|
+
const key = new Bun.CryptoHasher("sha256").update(realCwd).digest("hex");
|
|
86
|
+
return join(stateDir, `${key}.json`);
|
|
87
|
+
}
|
|
88
|
+
async function readRecord(recordPath, realCwd) {
|
|
89
|
+
try {
|
|
90
|
+
const record = JSON.parse(await Bun.file(recordPath).text());
|
|
91
|
+
if (record.cwd === realCwd && typeof record.linkTarget === "string") {
|
|
92
|
+
return { cwd: record.cwd, linkTarget: record.linkTarget };
|
|
93
|
+
}
|
|
94
|
+
} catch {}
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
async function inTreeTarget(realCwd, agentsMdPath, linkTarget) {
|
|
98
|
+
const target = await realpath(resolve(dirname(agentsMdPath), linkTarget)).catch(() => null);
|
|
99
|
+
const prefix = realCwd.endsWith(sep) ? realCwd : `${realCwd}${sep}`;
|
|
100
|
+
if (target === null || !target.startsWith(prefix)) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
const stat = await lstat(target).catch(() => null);
|
|
104
|
+
return stat?.isFile() ? target : null;
|
|
105
|
+
}
|
|
106
|
+
async function restoreSymlink(agentsMdPath, realCwd, linkTarget) {
|
|
107
|
+
const stat = await lstat(agentsMdPath).catch(() => null);
|
|
108
|
+
const current = stat?.isFile() ? await Bun.file(agentsMdPath).text() : null;
|
|
109
|
+
await unlink(agentsMdPath).catch(() => {});
|
|
110
|
+
await symlink(linkTarget, agentsMdPath);
|
|
111
|
+
if (current === null) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const target = await inTreeTarget(realCwd, agentsMdPath, linkTarget);
|
|
115
|
+
if (target === null) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
const stripped = current.replace(BLOCK_REGEX, "");
|
|
119
|
+
if (stripped !== await Bun.file(target).text()) {
|
|
120
|
+
await Bun.write(target, stripped);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
async function writeCodexAgentsMd(cwd, systemPrompt, options = {}) {
|
|
78
124
|
if (!cwd || !systemPrompt) {
|
|
79
125
|
return NOOP_HANDLE;
|
|
80
126
|
}
|
|
81
127
|
const agentsMdPath = join(cwd, "AGENTS.md");
|
|
82
128
|
const claudeMdPath = join(cwd, "CLAUDE.md");
|
|
129
|
+
const stateDir = options.stateDir ?? DEFAULT_STATE_DIR;
|
|
130
|
+
const realCwd = await realpath(cwd).catch(() => resolve(cwd));
|
|
131
|
+
const recordPath = recordPathFor(stateDir, realCwd);
|
|
83
132
|
const block = `${BLOCK_OPEN}
|
|
84
133
|
${systemPrompt}
|
|
85
134
|
${BLOCK_CLOSE}`;
|
|
86
|
-
|
|
87
|
-
const
|
|
135
|
+
let stat = await lstat(agentsMdPath).catch(() => null);
|
|
136
|
+
const record = await readRecord(recordPath, realCwd);
|
|
137
|
+
if (record) {
|
|
138
|
+
if (stat?.isFile() && BLOCK_REGEX.test(await Bun.file(agentsMdPath).text())) {
|
|
139
|
+
await restoreSymlink(agentsMdPath, realCwd, record.linkTarget);
|
|
140
|
+
stat = await lstat(agentsMdPath);
|
|
141
|
+
}
|
|
142
|
+
await unlink(recordPath).catch(() => {});
|
|
143
|
+
}
|
|
144
|
+
if (stat?.isSymbolicLink()) {
|
|
145
|
+
const linkTarget = await readlink(agentsMdPath);
|
|
146
|
+
const target = await inTreeTarget(realCwd, agentsMdPath, linkTarget);
|
|
147
|
+
const targetContent = target !== null ? await Bun.file(target).text() : "";
|
|
148
|
+
await mkdir(stateDir, { recursive: true });
|
|
149
|
+
await Bun.write(recordPath, JSON.stringify({ cwd: realCwd, linkTarget }));
|
|
150
|
+
await unlink(agentsMdPath);
|
|
151
|
+
await Bun.write(agentsMdPath, `${block}
|
|
152
|
+
${targetContent.replace(BLOCK_REGEX, "")}`);
|
|
153
|
+
return {
|
|
154
|
+
async cleanup() {
|
|
155
|
+
try {
|
|
156
|
+
await restoreSymlink(agentsMdPath, realCwd, linkTarget);
|
|
157
|
+
await unlink(recordPath).catch(() => {});
|
|
158
|
+
} catch {}
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
}
|
|
88
162
|
let createdFresh = false;
|
|
89
163
|
let newContent;
|
|
90
|
-
if (!
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
if (claudeMdExists) {
|
|
94
|
-
const claudeContent = await claudeMdFile.text();
|
|
95
|
-
newContent = `${block}
|
|
164
|
+
if (!stat) {
|
|
165
|
+
const claudeContent = await readIfExists(claudeMdPath);
|
|
166
|
+
newContent = claudeContent !== null ? `${block}
|
|
96
167
|
|
|
97
|
-
${claudeContent}
|
|
98
|
-
} else {
|
|
99
|
-
newContent = `${block}
|
|
168
|
+
${claudeContent}` : `${block}
|
|
100
169
|
`;
|
|
101
|
-
}
|
|
102
170
|
createdFresh = true;
|
|
103
171
|
} else {
|
|
104
|
-
const existingContent = await
|
|
172
|
+
const existingContent = await Bun.file(agentsMdPath).text();
|
|
105
173
|
if (BLOCK_REGEX.test(existingContent)) {
|
|
106
174
|
newContent = existingContent.replace(BLOCK_REGEX, `${block}
|
|
107
175
|
`);
|
|
108
176
|
} else {
|
|
109
177
|
newContent = `${block}
|
|
110
|
-
|
|
111
178
|
${existingContent}`;
|
|
112
179
|
}
|
|
113
180
|
}
|
|
@@ -244,14 +311,14 @@ class CodexAppServer {
|
|
|
244
311
|
if (this.closePromise)
|
|
245
312
|
return Promise.reject(new Error("Codex app-server closed"));
|
|
246
313
|
const id = this.nextId++;
|
|
247
|
-
return new Promise((
|
|
314
|
+
return new Promise((resolve2, reject) => {
|
|
248
315
|
const timer = setTimeout(() => {
|
|
249
316
|
this.pending.delete(id);
|
|
250
317
|
reject(new Error(`Codex app-server ${method} timed out after ${this.requestTimeoutMs}ms`));
|
|
251
318
|
}, this.requestTimeoutMs);
|
|
252
319
|
this.pending.set(id, {
|
|
253
320
|
method,
|
|
254
|
-
resolve,
|
|
321
|
+
resolve: resolve2,
|
|
255
322
|
reject,
|
|
256
323
|
timer
|
|
257
324
|
});
|
|
@@ -147639,6 +147706,36 @@ var modelsdev_cache_default = {
|
|
|
147639
147706
|
name: "Anthropic",
|
|
147640
147707
|
doc: "https://docs.anthropic.com/en/docs/about-claude/models",
|
|
147641
147708
|
models: {
|
|
147709
|
+
"claude-sonnet-5-5": {
|
|
147710
|
+
id: "claude-sonnet-5-5",
|
|
147711
|
+
name: "Claude Sonnet 5.5",
|
|
147712
|
+
reasoning: true,
|
|
147713
|
+
reasoning_options: [
|
|
147714
|
+
{
|
|
147715
|
+
type: "effort",
|
|
147716
|
+
values: [
|
|
147717
|
+
"low",
|
|
147718
|
+
"medium",
|
|
147719
|
+
"high",
|
|
147720
|
+
"xhigh",
|
|
147721
|
+
"max"
|
|
147722
|
+
]
|
|
147723
|
+
}
|
|
147724
|
+
],
|
|
147725
|
+
knowledge: "2026-06",
|
|
147726
|
+
release_date: "2026-09-28",
|
|
147727
|
+
last_updated: "2026-09-28",
|
|
147728
|
+
cost: {
|
|
147729
|
+
input: 2,
|
|
147730
|
+
output: 10,
|
|
147731
|
+
cache_read: 0.2,
|
|
147732
|
+
cache_write: 2.5
|
|
147733
|
+
},
|
|
147734
|
+
limit: {
|
|
147735
|
+
context: 1e6,
|
|
147736
|
+
output: 128000
|
|
147737
|
+
}
|
|
147738
|
+
},
|
|
147642
147739
|
"claude-opus-5-5": {
|
|
147643
147740
|
id: "claude-opus-5-5",
|
|
147644
147741
|
name: "Claude Opus 5.5",
|
|
@@ -272277,6 +272374,1718 @@ var modelsdev_cache_default = {
|
|
|
272277
272374
|
input: 0,
|
|
272278
272375
|
output: 0
|
|
272279
272376
|
}
|
|
272377
|
+
},
|
|
272378
|
+
"stealth/space-bunny-alpha": {
|
|
272379
|
+
id: "stealth/space-bunny-alpha",
|
|
272380
|
+
name: "Space Bunny Alpha",
|
|
272381
|
+
description: "Multimodal reasoning model for visual analysis, planning, and tool use",
|
|
272382
|
+
family: "alpha",
|
|
272383
|
+
attachment: true,
|
|
272384
|
+
reasoning: true,
|
|
272385
|
+
reasoning_options: [
|
|
272386
|
+
{
|
|
272387
|
+
type: "effort",
|
|
272388
|
+
values: [
|
|
272389
|
+
"low",
|
|
272390
|
+
"medium",
|
|
272391
|
+
"high",
|
|
272392
|
+
"xhigh",
|
|
272393
|
+
"max"
|
|
272394
|
+
]
|
|
272395
|
+
}
|
|
272396
|
+
],
|
|
272397
|
+
tool_call: true,
|
|
272398
|
+
structured_output: false,
|
|
272399
|
+
temperature: true,
|
|
272400
|
+
release_date: "2026-09-23",
|
|
272401
|
+
last_updated: "2026-09-23",
|
|
272402
|
+
modalities: {
|
|
272403
|
+
input: [
|
|
272404
|
+
"text",
|
|
272405
|
+
"image",
|
|
272406
|
+
"video"
|
|
272407
|
+
],
|
|
272408
|
+
output: [
|
|
272409
|
+
"text"
|
|
272410
|
+
]
|
|
272411
|
+
},
|
|
272412
|
+
open_weights: false,
|
|
272413
|
+
limit: {
|
|
272414
|
+
context: 1e6,
|
|
272415
|
+
output: 524288
|
|
272416
|
+
},
|
|
272417
|
+
cost: {
|
|
272418
|
+
input: 0,
|
|
272419
|
+
output: 0
|
|
272420
|
+
}
|
|
272421
|
+
},
|
|
272422
|
+
"prism-ml/ternary-bonsai-2-27b": {
|
|
272423
|
+
id: "prism-ml/ternary-bonsai-2-27b",
|
|
272424
|
+
name: "Ternary Bonsai 2 27B",
|
|
272425
|
+
description: "Multimodal reasoning model for visual analysis, planning, and tool use",
|
|
272426
|
+
attachment: true,
|
|
272427
|
+
reasoning: true,
|
|
272428
|
+
reasoning_options: [
|
|
272429
|
+
{
|
|
272430
|
+
type: "toggle"
|
|
272431
|
+
},
|
|
272432
|
+
{
|
|
272433
|
+
type: "effort",
|
|
272434
|
+
values: [
|
|
272435
|
+
"medium",
|
|
272436
|
+
"xhigh"
|
|
272437
|
+
]
|
|
272438
|
+
}
|
|
272439
|
+
],
|
|
272440
|
+
tool_call: true,
|
|
272441
|
+
structured_output: true,
|
|
272442
|
+
temperature: true,
|
|
272443
|
+
release_date: "2026-09-18",
|
|
272444
|
+
last_updated: "2026-09-18",
|
|
272445
|
+
modalities: {
|
|
272446
|
+
input: [
|
|
272447
|
+
"text",
|
|
272448
|
+
"image"
|
|
272449
|
+
],
|
|
272450
|
+
output: [
|
|
272451
|
+
"text"
|
|
272452
|
+
]
|
|
272453
|
+
},
|
|
272454
|
+
open_weights: true,
|
|
272455
|
+
limit: {
|
|
272456
|
+
context: 262144,
|
|
272457
|
+
output: 32768
|
|
272458
|
+
},
|
|
272459
|
+
cost: {
|
|
272460
|
+
input: 0.075,
|
|
272461
|
+
output: 0.5
|
|
272462
|
+
}
|
|
272463
|
+
},
|
|
272464
|
+
"anthropic/claude-opus-5.5": {
|
|
272465
|
+
id: "anthropic/claude-opus-5.5",
|
|
272466
|
+
name: "Claude Opus 5.5",
|
|
272467
|
+
description: "Flagship Claude model for deep reasoning, coding, and long-horizon agents",
|
|
272468
|
+
family: "claude-opus",
|
|
272469
|
+
attachment: true,
|
|
272470
|
+
reasoning: true,
|
|
272471
|
+
reasoning_options: [
|
|
272472
|
+
{
|
|
272473
|
+
type: "effort",
|
|
272474
|
+
values: [
|
|
272475
|
+
"low",
|
|
272476
|
+
"medium",
|
|
272477
|
+
"high",
|
|
272478
|
+
"xhigh",
|
|
272479
|
+
"max"
|
|
272480
|
+
]
|
|
272481
|
+
}
|
|
272482
|
+
],
|
|
272483
|
+
tool_call: true,
|
|
272484
|
+
structured_output: true,
|
|
272485
|
+
temperature: true,
|
|
272486
|
+
knowledge: "2026-06",
|
|
272487
|
+
release_date: "2026-09-22",
|
|
272488
|
+
last_updated: "2026-09-22",
|
|
272489
|
+
modalities: {
|
|
272490
|
+
input: [
|
|
272491
|
+
"text",
|
|
272492
|
+
"image",
|
|
272493
|
+
"pdf"
|
|
272494
|
+
],
|
|
272495
|
+
output: [
|
|
272496
|
+
"text"
|
|
272497
|
+
]
|
|
272498
|
+
},
|
|
272499
|
+
open_weights: false,
|
|
272500
|
+
limit: {
|
|
272501
|
+
context: 1e6,
|
|
272502
|
+
output: 128000
|
|
272503
|
+
},
|
|
272504
|
+
cost: {
|
|
272505
|
+
input: 4,
|
|
272506
|
+
output: 20,
|
|
272507
|
+
cache_read: 0.2,
|
|
272508
|
+
cache_write: 5
|
|
272509
|
+
}
|
|
272510
|
+
},
|
|
272511
|
+
"cohere/command-a-plus": {
|
|
272512
|
+
id: "cohere/command-a-plus",
|
|
272513
|
+
name: "Command A+",
|
|
272514
|
+
description: "Cohere command model for multilingual enterprise agents, tools, and chat",
|
|
272515
|
+
family: "command-a",
|
|
272516
|
+
attachment: true,
|
|
272517
|
+
reasoning: true,
|
|
272518
|
+
reasoning_options: [
|
|
272519
|
+
{
|
|
272520
|
+
type: "toggle"
|
|
272521
|
+
}
|
|
272522
|
+
],
|
|
272523
|
+
tool_call: true,
|
|
272524
|
+
structured_output: true,
|
|
272525
|
+
temperature: true,
|
|
272526
|
+
release_date: "2026-09-22",
|
|
272527
|
+
last_updated: "2026-09-22",
|
|
272528
|
+
modalities: {
|
|
272529
|
+
input: [
|
|
272530
|
+
"text",
|
|
272531
|
+
"image"
|
|
272532
|
+
],
|
|
272533
|
+
output: [
|
|
272534
|
+
"text"
|
|
272535
|
+
]
|
|
272536
|
+
},
|
|
272537
|
+
open_weights: false,
|
|
272538
|
+
limit: {
|
|
272539
|
+
context: 192000,
|
|
272540
|
+
output: 64000
|
|
272541
|
+
},
|
|
272542
|
+
cost: {
|
|
272543
|
+
input: 0.3,
|
|
272544
|
+
output: 1.5,
|
|
272545
|
+
cache_read: 0.15
|
|
272546
|
+
}
|
|
272547
|
+
},
|
|
272548
|
+
"deepseek/deepseek-v4.1-flash": {
|
|
272549
|
+
id: "deepseek/deepseek-v4.1-flash",
|
|
272550
|
+
name: "DeepSeek V4.1 Flash",
|
|
272551
|
+
description: "Fast DeepSeek model for efficient chat, coding help, and agent loops",
|
|
272552
|
+
family: "deepseek-flash",
|
|
272553
|
+
attachment: true,
|
|
272554
|
+
reasoning: true,
|
|
272555
|
+
reasoning_options: [
|
|
272556
|
+
{
|
|
272557
|
+
type: "toggle"
|
|
272558
|
+
},
|
|
272559
|
+
{
|
|
272560
|
+
type: "effort",
|
|
272561
|
+
values: [
|
|
272562
|
+
"low",
|
|
272563
|
+
"high",
|
|
272564
|
+
"max"
|
|
272565
|
+
]
|
|
272566
|
+
}
|
|
272567
|
+
],
|
|
272568
|
+
tool_call: true,
|
|
272569
|
+
structured_output: true,
|
|
272570
|
+
temperature: true,
|
|
272571
|
+
knowledge: "2025-05",
|
|
272572
|
+
release_date: "2026-09-10",
|
|
272573
|
+
last_updated: "2026-09-10",
|
|
272574
|
+
modalities: {
|
|
272575
|
+
input: [
|
|
272576
|
+
"text",
|
|
272577
|
+
"image"
|
|
272578
|
+
],
|
|
272579
|
+
output: [
|
|
272580
|
+
"text"
|
|
272581
|
+
]
|
|
272582
|
+
},
|
|
272583
|
+
open_weights: true,
|
|
272584
|
+
limit: {
|
|
272585
|
+
context: 1048576,
|
|
272586
|
+
output: 384000
|
|
272587
|
+
},
|
|
272588
|
+
cost: {
|
|
272589
|
+
input: 0.035,
|
|
272590
|
+
output: 0.29,
|
|
272591
|
+
cache_read: 0.001
|
|
272592
|
+
}
|
|
272593
|
+
},
|
|
272594
|
+
"unbiased/pareto": {
|
|
272595
|
+
id: "unbiased/pareto",
|
|
272596
|
+
name: "Pareto",
|
|
272597
|
+
description: "Blended multimodal model that runs multiple language models in parallel and returns a synthesized answer",
|
|
272598
|
+
attachment: true,
|
|
272599
|
+
reasoning: false,
|
|
272600
|
+
tool_call: true,
|
|
272601
|
+
structured_output: false,
|
|
272602
|
+
temperature: true,
|
|
272603
|
+
release_date: "2026-09-17",
|
|
272604
|
+
last_updated: "2026-09-17",
|
|
272605
|
+
modalities: {
|
|
272606
|
+
input: [
|
|
272607
|
+
"text",
|
|
272608
|
+
"image"
|
|
272609
|
+
],
|
|
272610
|
+
output: [
|
|
272611
|
+
"text"
|
|
272612
|
+
]
|
|
272613
|
+
},
|
|
272614
|
+
open_weights: false,
|
|
272615
|
+
limit: {
|
|
272616
|
+
context: 262144,
|
|
272617
|
+
output: 131072
|
|
272618
|
+
},
|
|
272619
|
+
cost: {
|
|
272620
|
+
input: 2.5,
|
|
272621
|
+
output: 7.5,
|
|
272622
|
+
cache_read: 0.25
|
|
272623
|
+
}
|
|
272624
|
+
},
|
|
272625
|
+
"perceptron/perceptron-mk1.5": {
|
|
272626
|
+
id: "perceptron/perceptron-mk1.5",
|
|
272627
|
+
name: "Perceptron Mk1.5",
|
|
272628
|
+
description: "Multimodal reasoning model for visual analysis, planning, and tool use",
|
|
272629
|
+
attachment: true,
|
|
272630
|
+
reasoning: true,
|
|
272631
|
+
reasoning_options: [
|
|
272632
|
+
{
|
|
272633
|
+
type: "effort",
|
|
272634
|
+
values: [
|
|
272635
|
+
"none",
|
|
272636
|
+
"minimal",
|
|
272637
|
+
"low",
|
|
272638
|
+
"medium",
|
|
272639
|
+
"high"
|
|
272640
|
+
]
|
|
272641
|
+
}
|
|
272642
|
+
],
|
|
272643
|
+
tool_call: true,
|
|
272644
|
+
structured_output: true,
|
|
272645
|
+
temperature: true,
|
|
272646
|
+
release_date: "2026-09-25",
|
|
272647
|
+
last_updated: "2026-09-25",
|
|
272648
|
+
modalities: {
|
|
272649
|
+
input: [
|
|
272650
|
+
"text",
|
|
272651
|
+
"image",
|
|
272652
|
+
"video",
|
|
272653
|
+
"audio"
|
|
272654
|
+
],
|
|
272655
|
+
output: [
|
|
272656
|
+
"text"
|
|
272657
|
+
]
|
|
272658
|
+
},
|
|
272659
|
+
open_weights: false,
|
|
272660
|
+
limit: {
|
|
272661
|
+
context: 36864,
|
|
272662
|
+
output: 8192
|
|
272663
|
+
},
|
|
272664
|
+
cost: {
|
|
272665
|
+
input: 0.15,
|
|
272666
|
+
output: 1.5
|
|
272667
|
+
}
|
|
272668
|
+
},
|
|
272669
|
+
"z-ai/glm-5.3-prime": {
|
|
272670
|
+
id: "z-ai/glm-5.3-prime",
|
|
272671
|
+
name: "GLM 5.3 Prime",
|
|
272672
|
+
description: "Flagship GLM model for hybrid reasoning, coding, and agentic engineering",
|
|
272673
|
+
family: "glm",
|
|
272674
|
+
attachment: false,
|
|
272675
|
+
reasoning: true,
|
|
272676
|
+
reasoning_options: [
|
|
272677
|
+
{
|
|
272678
|
+
type: "effort",
|
|
272679
|
+
values: [
|
|
272680
|
+
"low",
|
|
272681
|
+
"high",
|
|
272682
|
+
"max"
|
|
272683
|
+
]
|
|
272684
|
+
}
|
|
272685
|
+
],
|
|
272686
|
+
tool_call: true,
|
|
272687
|
+
structured_output: false,
|
|
272688
|
+
temperature: true,
|
|
272689
|
+
release_date: "2026-09-23",
|
|
272690
|
+
last_updated: "2026-09-23",
|
|
272691
|
+
modalities: {
|
|
272692
|
+
input: [
|
|
272693
|
+
"text"
|
|
272694
|
+
],
|
|
272695
|
+
output: [
|
|
272696
|
+
"text"
|
|
272697
|
+
]
|
|
272698
|
+
},
|
|
272699
|
+
open_weights: false,
|
|
272700
|
+
limit: {
|
|
272701
|
+
context: 1e6,
|
|
272702
|
+
output: 131072
|
|
272703
|
+
},
|
|
272704
|
+
cost: {
|
|
272705
|
+
input: 2.8,
|
|
272706
|
+
output: 8.8,
|
|
272707
|
+
cache_read: 0.56
|
|
272708
|
+
}
|
|
272709
|
+
},
|
|
272710
|
+
"z-ai/glm-5.3-flashx": {
|
|
272711
|
+
id: "z-ai/glm-5.3-flashx",
|
|
272712
|
+
name: "GLM 5.3 FlashX",
|
|
272713
|
+
description: "GLM vision model for visual reasoning, documents, and multimodal agents",
|
|
272714
|
+
family: "glm",
|
|
272715
|
+
attachment: true,
|
|
272716
|
+
reasoning: true,
|
|
272717
|
+
reasoning_options: [
|
|
272718
|
+
{
|
|
272719
|
+
type: "effort",
|
|
272720
|
+
values: [
|
|
272721
|
+
"low",
|
|
272722
|
+
"high",
|
|
272723
|
+
"max"
|
|
272724
|
+
]
|
|
272725
|
+
}
|
|
272726
|
+
],
|
|
272727
|
+
tool_call: true,
|
|
272728
|
+
structured_output: false,
|
|
272729
|
+
temperature: true,
|
|
272730
|
+
release_date: "2026-09-18",
|
|
272731
|
+
last_updated: "2026-09-18",
|
|
272732
|
+
modalities: {
|
|
272733
|
+
input: [
|
|
272734
|
+
"text",
|
|
272735
|
+
"image",
|
|
272736
|
+
"video"
|
|
272737
|
+
],
|
|
272738
|
+
output: [
|
|
272739
|
+
"text"
|
|
272740
|
+
]
|
|
272741
|
+
},
|
|
272742
|
+
open_weights: false,
|
|
272743
|
+
limit: {
|
|
272744
|
+
context: 1048576,
|
|
272745
|
+
output: 131072
|
|
272746
|
+
},
|
|
272747
|
+
cost: {
|
|
272748
|
+
input: 0.37,
|
|
272749
|
+
output: 1.25,
|
|
272750
|
+
cache_read: 0.09
|
|
272751
|
+
}
|
|
272752
|
+
},
|
|
272753
|
+
"inference-net/schematron-v2-small": {
|
|
272754
|
+
id: "inference-net/schematron-v2-small",
|
|
272755
|
+
name: "Schematron V2 Small",
|
|
272756
|
+
description: "Efficient model for low-latency assistance, extraction, and routine automation",
|
|
272757
|
+
attachment: false,
|
|
272758
|
+
reasoning: false,
|
|
272759
|
+
tool_call: false,
|
|
272760
|
+
structured_output: true,
|
|
272761
|
+
temperature: true,
|
|
272762
|
+
release_date: "2026-09-12",
|
|
272763
|
+
last_updated: "2026-09-12",
|
|
272764
|
+
modalities: {
|
|
272765
|
+
input: [
|
|
272766
|
+
"text"
|
|
272767
|
+
],
|
|
272768
|
+
output: [
|
|
272769
|
+
"text"
|
|
272770
|
+
]
|
|
272771
|
+
},
|
|
272772
|
+
open_weights: true,
|
|
272773
|
+
limit: {
|
|
272774
|
+
context: 128000,
|
|
272775
|
+
output: 4096
|
|
272776
|
+
},
|
|
272777
|
+
cost: {
|
|
272778
|
+
input: 0.05,
|
|
272779
|
+
output: 0.23,
|
|
272780
|
+
cache_read: 0.05
|
|
272781
|
+
}
|
|
272782
|
+
},
|
|
272783
|
+
"inference-net/schematron-v2-turbo": {
|
|
272784
|
+
id: "inference-net/schematron-v2-turbo",
|
|
272785
|
+
name: "Schematron V2 Turbo",
|
|
272786
|
+
description: "Efficient model for low-latency assistance, extraction, and routine automation",
|
|
272787
|
+
attachment: false,
|
|
272788
|
+
reasoning: false,
|
|
272789
|
+
tool_call: false,
|
|
272790
|
+
structured_output: true,
|
|
272791
|
+
temperature: true,
|
|
272792
|
+
release_date: "2026-09-12",
|
|
272793
|
+
last_updated: "2026-09-12",
|
|
272794
|
+
modalities: {
|
|
272795
|
+
input: [
|
|
272796
|
+
"text"
|
|
272797
|
+
],
|
|
272798
|
+
output: [
|
|
272799
|
+
"text"
|
|
272800
|
+
]
|
|
272801
|
+
},
|
|
272802
|
+
open_weights: true,
|
|
272803
|
+
limit: {
|
|
272804
|
+
context: 128000,
|
|
272805
|
+
output: 8192
|
|
272806
|
+
},
|
|
272807
|
+
cost: {
|
|
272808
|
+
input: 0.03,
|
|
272809
|
+
output: 0.15,
|
|
272810
|
+
cache_read: 0.03
|
|
272811
|
+
}
|
|
272812
|
+
},
|
|
272813
|
+
"~openai/gpt-terra-latest": {
|
|
272814
|
+
id: "~openai/gpt-terra-latest",
|
|
272815
|
+
name: "GPT Terra Latest",
|
|
272816
|
+
description: "GPT model for general reasoning, writing, coding, and tool-assisted tasks",
|
|
272817
|
+
family: "gpt-terra",
|
|
272818
|
+
attachment: true,
|
|
272819
|
+
reasoning: true,
|
|
272820
|
+
reasoning_options: [
|
|
272821
|
+
{
|
|
272822
|
+
type: "effort",
|
|
272823
|
+
values: [
|
|
272824
|
+
"none",
|
|
272825
|
+
"low",
|
|
272826
|
+
"medium",
|
|
272827
|
+
"high",
|
|
272828
|
+
"xhigh",
|
|
272829
|
+
"max"
|
|
272830
|
+
]
|
|
272831
|
+
}
|
|
272832
|
+
],
|
|
272833
|
+
tool_call: true,
|
|
272834
|
+
structured_output: true,
|
|
272835
|
+
temperature: false,
|
|
272836
|
+
knowledge: "2026-02-16",
|
|
272837
|
+
release_date: "2026-09-11",
|
|
272838
|
+
last_updated: "2026-09-11",
|
|
272839
|
+
modalities: {
|
|
272840
|
+
input: [
|
|
272841
|
+
"pdf",
|
|
272842
|
+
"image",
|
|
272843
|
+
"text"
|
|
272844
|
+
],
|
|
272845
|
+
output: [
|
|
272846
|
+
"text"
|
|
272847
|
+
]
|
|
272848
|
+
},
|
|
272849
|
+
open_weights: false,
|
|
272850
|
+
limit: {
|
|
272851
|
+
context: 1050000,
|
|
272852
|
+
output: 128000
|
|
272853
|
+
},
|
|
272854
|
+
cost: {
|
|
272855
|
+
input: 2,
|
|
272856
|
+
output: 12,
|
|
272857
|
+
cache_read: 0.2,
|
|
272858
|
+
cache_write: 2.5,
|
|
272859
|
+
tiers: [
|
|
272860
|
+
{
|
|
272861
|
+
input: 4,
|
|
272862
|
+
output: 18,
|
|
272863
|
+
cache_read: 0.4,
|
|
272864
|
+
cache_write: 5,
|
|
272865
|
+
tier: {
|
|
272866
|
+
type: "context",
|
|
272867
|
+
size: 272000
|
|
272868
|
+
}
|
|
272869
|
+
}
|
|
272870
|
+
],
|
|
272871
|
+
context_over_200k: {
|
|
272872
|
+
input: 4,
|
|
272873
|
+
output: 18,
|
|
272874
|
+
cache_read: 0.4,
|
|
272875
|
+
cache_write: 5
|
|
272876
|
+
}
|
|
272877
|
+
}
|
|
272878
|
+
},
|
|
272879
|
+
"~openai/gpt-luna-latest": {
|
|
272880
|
+
id: "~openai/gpt-luna-latest",
|
|
272881
|
+
name: "GPT Luna Latest",
|
|
272882
|
+
description: "GPT model for general reasoning, writing, coding, and tool-assisted tasks",
|
|
272883
|
+
family: "gpt-luna",
|
|
272884
|
+
attachment: true,
|
|
272885
|
+
reasoning: true,
|
|
272886
|
+
reasoning_options: [
|
|
272887
|
+
{
|
|
272888
|
+
type: "effort",
|
|
272889
|
+
values: [
|
|
272890
|
+
"none",
|
|
272891
|
+
"low",
|
|
272892
|
+
"medium",
|
|
272893
|
+
"high",
|
|
272894
|
+
"xhigh",
|
|
272895
|
+
"max"
|
|
272896
|
+
]
|
|
272897
|
+
}
|
|
272898
|
+
],
|
|
272899
|
+
tool_call: true,
|
|
272900
|
+
structured_output: true,
|
|
272901
|
+
temperature: false,
|
|
272902
|
+
knowledge: "2026-02-16",
|
|
272903
|
+
release_date: "2026-09-11",
|
|
272904
|
+
last_updated: "2026-09-11",
|
|
272905
|
+
modalities: {
|
|
272906
|
+
input: [
|
|
272907
|
+
"pdf",
|
|
272908
|
+
"image",
|
|
272909
|
+
"text"
|
|
272910
|
+
],
|
|
272911
|
+
output: [
|
|
272912
|
+
"text"
|
|
272913
|
+
]
|
|
272914
|
+
},
|
|
272915
|
+
open_weights: false,
|
|
272916
|
+
limit: {
|
|
272917
|
+
context: 1050000,
|
|
272918
|
+
output: 128000
|
|
272919
|
+
},
|
|
272920
|
+
cost: {
|
|
272921
|
+
input: 0.1,
|
|
272922
|
+
output: 0.5,
|
|
272923
|
+
cache_read: 0.01,
|
|
272924
|
+
cache_write: 0.125,
|
|
272925
|
+
tiers: [
|
|
272926
|
+
{
|
|
272927
|
+
input: 0.2,
|
|
272928
|
+
output: 0.75,
|
|
272929
|
+
cache_read: 0.02,
|
|
272930
|
+
cache_write: 0.25,
|
|
272931
|
+
tier: {
|
|
272932
|
+
type: "context",
|
|
272933
|
+
size: 272000
|
|
272934
|
+
}
|
|
272935
|
+
}
|
|
272936
|
+
],
|
|
272937
|
+
context_over_200k: {
|
|
272938
|
+
input: 0.2,
|
|
272939
|
+
output: 0.75,
|
|
272940
|
+
cache_read: 0.02,
|
|
272941
|
+
cache_write: 0.25
|
|
272942
|
+
}
|
|
272943
|
+
}
|
|
272944
|
+
},
|
|
272945
|
+
"~openai/gpt-sol-latest": {
|
|
272946
|
+
id: "~openai/gpt-sol-latest",
|
|
272947
|
+
name: "GPT Sol Latest",
|
|
272948
|
+
description: "GPT model for general reasoning, writing, coding, and tool-assisted tasks",
|
|
272949
|
+
family: "gpt-sol",
|
|
272950
|
+
attachment: true,
|
|
272951
|
+
reasoning: true,
|
|
272952
|
+
reasoning_options: [
|
|
272953
|
+
{
|
|
272954
|
+
type: "effort",
|
|
272955
|
+
values: [
|
|
272956
|
+
"none",
|
|
272957
|
+
"low",
|
|
272958
|
+
"medium",
|
|
272959
|
+
"high",
|
|
272960
|
+
"xhigh",
|
|
272961
|
+
"max"
|
|
272962
|
+
]
|
|
272963
|
+
}
|
|
272964
|
+
],
|
|
272965
|
+
tool_call: true,
|
|
272966
|
+
structured_output: true,
|
|
272967
|
+
temperature: false,
|
|
272968
|
+
knowledge: "2026-02-16",
|
|
272969
|
+
release_date: "2026-09-11",
|
|
272970
|
+
last_updated: "2026-09-11",
|
|
272971
|
+
modalities: {
|
|
272972
|
+
input: [
|
|
272973
|
+
"pdf",
|
|
272974
|
+
"image",
|
|
272975
|
+
"text"
|
|
272976
|
+
],
|
|
272977
|
+
output: [
|
|
272978
|
+
"text"
|
|
272979
|
+
]
|
|
272980
|
+
},
|
|
272981
|
+
open_weights: false,
|
|
272982
|
+
limit: {
|
|
272983
|
+
context: 1050000,
|
|
272984
|
+
output: 128000
|
|
272985
|
+
},
|
|
272986
|
+
cost: {
|
|
272987
|
+
input: 2,
|
|
272988
|
+
output: 10,
|
|
272989
|
+
cache_read: 0.2,
|
|
272990
|
+
cache_write: 2.5,
|
|
272991
|
+
tiers: [
|
|
272992
|
+
{
|
|
272993
|
+
input: 4,
|
|
272994
|
+
output: 15,
|
|
272995
|
+
cache_read: 0.4,
|
|
272996
|
+
cache_write: 5,
|
|
272997
|
+
tier: {
|
|
272998
|
+
type: "context",
|
|
272999
|
+
size: 272000
|
|
273000
|
+
}
|
|
273001
|
+
}
|
|
273002
|
+
],
|
|
273003
|
+
context_over_200k: {
|
|
273004
|
+
input: 4,
|
|
273005
|
+
output: 15,
|
|
273006
|
+
cache_read: 0.4,
|
|
273007
|
+
cache_write: 5
|
|
273008
|
+
}
|
|
273009
|
+
}
|
|
273010
|
+
},
|
|
273011
|
+
"~openai/gpt-astra-latest": {
|
|
273012
|
+
id: "~openai/gpt-astra-latest",
|
|
273013
|
+
name: "GPT Astra Latest",
|
|
273014
|
+
description: "GPT model for general reasoning, writing, coding, and tool-assisted tasks",
|
|
273015
|
+
family: "gpt-astra",
|
|
273016
|
+
attachment: true,
|
|
273017
|
+
reasoning: true,
|
|
273018
|
+
reasoning_options: [
|
|
273019
|
+
{
|
|
273020
|
+
type: "effort",
|
|
273021
|
+
values: [
|
|
273022
|
+
"low",
|
|
273023
|
+
"medium",
|
|
273024
|
+
"high",
|
|
273025
|
+
"xhigh",
|
|
273026
|
+
"max"
|
|
273027
|
+
]
|
|
273028
|
+
}
|
|
273029
|
+
],
|
|
273030
|
+
tool_call: true,
|
|
273031
|
+
structured_output: true,
|
|
273032
|
+
temperature: false,
|
|
273033
|
+
release_date: "2026-09-11",
|
|
273034
|
+
last_updated: "2026-09-11",
|
|
273035
|
+
modalities: {
|
|
273036
|
+
input: [
|
|
273037
|
+
"pdf",
|
|
273038
|
+
"image",
|
|
273039
|
+
"text"
|
|
273040
|
+
],
|
|
273041
|
+
output: [
|
|
273042
|
+
"text"
|
|
273043
|
+
]
|
|
273044
|
+
},
|
|
273045
|
+
open_weights: false,
|
|
273046
|
+
limit: {
|
|
273047
|
+
context: 1050000,
|
|
273048
|
+
output: 128000
|
|
273049
|
+
},
|
|
273050
|
+
cost: {
|
|
273051
|
+
input: 10,
|
|
273052
|
+
output: 50,
|
|
273053
|
+
cache_read: 1,
|
|
273054
|
+
cache_write: 12.5,
|
|
273055
|
+
tiers: [
|
|
273056
|
+
{
|
|
273057
|
+
input: 20,
|
|
273058
|
+
output: 75,
|
|
273059
|
+
cache_read: 2,
|
|
273060
|
+
cache_write: 25,
|
|
273061
|
+
tier: {
|
|
273062
|
+
type: "context",
|
|
273063
|
+
size: 272000
|
|
273064
|
+
}
|
|
273065
|
+
}
|
|
273066
|
+
],
|
|
273067
|
+
context_over_200k: {
|
|
273068
|
+
input: 20,
|
|
273069
|
+
output: 75,
|
|
273070
|
+
cache_read: 2,
|
|
273071
|
+
cache_write: 25
|
|
273072
|
+
}
|
|
273073
|
+
}
|
|
273074
|
+
},
|
|
273075
|
+
"x-ai/grok-4.7": {
|
|
273076
|
+
id: "x-ai/grok-4.7",
|
|
273077
|
+
name: "Grok 4.7",
|
|
273078
|
+
description: "Grok model for agentic tool use, reasoning, coding, and live assistance",
|
|
273079
|
+
family: "grok",
|
|
273080
|
+
attachment: true,
|
|
273081
|
+
reasoning: true,
|
|
273082
|
+
reasoning_options: [
|
|
273083
|
+
{
|
|
273084
|
+
type: "effort",
|
|
273085
|
+
values: [
|
|
273086
|
+
"low",
|
|
273087
|
+
"medium",
|
|
273088
|
+
"high",
|
|
273089
|
+
"xhigh"
|
|
273090
|
+
]
|
|
273091
|
+
}
|
|
273092
|
+
],
|
|
273093
|
+
tool_call: true,
|
|
273094
|
+
structured_output: true,
|
|
273095
|
+
temperature: true,
|
|
273096
|
+
knowledge: "2026-05",
|
|
273097
|
+
release_date: "2026-09-21",
|
|
273098
|
+
last_updated: "2026-09-21",
|
|
273099
|
+
modalities: {
|
|
273100
|
+
input: [
|
|
273101
|
+
"text",
|
|
273102
|
+
"image",
|
|
273103
|
+
"pdf"
|
|
273104
|
+
],
|
|
273105
|
+
output: [
|
|
273106
|
+
"text"
|
|
273107
|
+
]
|
|
273108
|
+
},
|
|
273109
|
+
open_weights: false,
|
|
273110
|
+
limit: {
|
|
273111
|
+
context: 500000,
|
|
273112
|
+
output: 450000
|
|
273113
|
+
},
|
|
273114
|
+
cost: {
|
|
273115
|
+
input: 1.6,
|
|
273116
|
+
output: 4.8,
|
|
273117
|
+
cache_read: 0.4,
|
|
273118
|
+
tiers: [
|
|
273119
|
+
{
|
|
273120
|
+
input: 3.2,
|
|
273121
|
+
output: 9.6,
|
|
273122
|
+
cache_read: 0.8,
|
|
273123
|
+
tier: {
|
|
273124
|
+
type: "context",
|
|
273125
|
+
size: 200000
|
|
273126
|
+
}
|
|
273127
|
+
}
|
|
273128
|
+
],
|
|
273129
|
+
context_over_200k: {
|
|
273130
|
+
input: 3.2,
|
|
273131
|
+
output: 9.6,
|
|
273132
|
+
cache_read: 0.8
|
|
273133
|
+
}
|
|
273134
|
+
}
|
|
273135
|
+
},
|
|
273136
|
+
"upstage/solar-mini4": {
|
|
273137
|
+
id: "upstage/solar-mini4",
|
|
273138
|
+
name: "Solar Mini 4",
|
|
273139
|
+
description: "Efficient model for low-latency assistance, extraction, and routine automation",
|
|
273140
|
+
family: "solar",
|
|
273141
|
+
attachment: false,
|
|
273142
|
+
reasoning: true,
|
|
273143
|
+
reasoning_options: [
|
|
273144
|
+
{
|
|
273145
|
+
type: "effort",
|
|
273146
|
+
values: [
|
|
273147
|
+
"none",
|
|
273148
|
+
"minimal",
|
|
273149
|
+
"low",
|
|
273150
|
+
"medium",
|
|
273151
|
+
"high",
|
|
273152
|
+
"xhigh",
|
|
273153
|
+
"max"
|
|
273154
|
+
]
|
|
273155
|
+
}
|
|
273156
|
+
],
|
|
273157
|
+
tool_call: true,
|
|
273158
|
+
structured_output: true,
|
|
273159
|
+
temperature: true,
|
|
273160
|
+
release_date: "2026-09-23",
|
|
273161
|
+
last_updated: "2026-09-23",
|
|
273162
|
+
modalities: {
|
|
273163
|
+
input: [
|
|
273164
|
+
"text"
|
|
273165
|
+
],
|
|
273166
|
+
output: [
|
|
273167
|
+
"text"
|
|
273168
|
+
]
|
|
273169
|
+
},
|
|
273170
|
+
open_weights: false,
|
|
273171
|
+
limit: {
|
|
273172
|
+
context: 524288,
|
|
273173
|
+
output: 131072
|
|
273174
|
+
},
|
|
273175
|
+
cost: {
|
|
273176
|
+
input: 0.05,
|
|
273177
|
+
output: 0.2,
|
|
273178
|
+
cache_read: 0.005
|
|
273179
|
+
}
|
|
273180
|
+
},
|
|
273181
|
+
"~deepseek/deepseek-flash-latest": {
|
|
273182
|
+
id: "~deepseek/deepseek-flash-latest",
|
|
273183
|
+
name: "DeepSeek Flash Latest",
|
|
273184
|
+
description: "Fast DeepSeek model for efficient chat, coding help, and agent loops",
|
|
273185
|
+
family: "deepseek-flash",
|
|
273186
|
+
attachment: true,
|
|
273187
|
+
reasoning: true,
|
|
273188
|
+
reasoning_options: [
|
|
273189
|
+
{
|
|
273190
|
+
type: "toggle"
|
|
273191
|
+
},
|
|
273192
|
+
{
|
|
273193
|
+
type: "effort",
|
|
273194
|
+
values: [
|
|
273195
|
+
"low",
|
|
273196
|
+
"high",
|
|
273197
|
+
"max"
|
|
273198
|
+
]
|
|
273199
|
+
}
|
|
273200
|
+
],
|
|
273201
|
+
tool_call: true,
|
|
273202
|
+
structured_output: true,
|
|
273203
|
+
temperature: true,
|
|
273204
|
+
release_date: "2026-09-14",
|
|
273205
|
+
last_updated: "2026-09-14",
|
|
273206
|
+
modalities: {
|
|
273207
|
+
input: [
|
|
273208
|
+
"text",
|
|
273209
|
+
"image"
|
|
273210
|
+
],
|
|
273211
|
+
output: [
|
|
273212
|
+
"text"
|
|
273213
|
+
]
|
|
273214
|
+
},
|
|
273215
|
+
open_weights: false,
|
|
273216
|
+
limit: {
|
|
273217
|
+
context: 1048576,
|
|
273218
|
+
output: 384000
|
|
273219
|
+
},
|
|
273220
|
+
cost: {
|
|
273221
|
+
input: 0.035,
|
|
273222
|
+
output: 0.29,
|
|
273223
|
+
cache_read: 0.001
|
|
273224
|
+
}
|
|
273225
|
+
},
|
|
273226
|
+
"~deepseek/deepseek-pro-latest": {
|
|
273227
|
+
id: "~deepseek/deepseek-pro-latest",
|
|
273228
|
+
name: "DeepSeek Pro Latest",
|
|
273229
|
+
description: "Flagship DeepSeek model for coding, reasoning, and agentic work",
|
|
273230
|
+
family: "deepseek",
|
|
273231
|
+
attachment: false,
|
|
273232
|
+
reasoning: true,
|
|
273233
|
+
reasoning_options: [
|
|
273234
|
+
{
|
|
273235
|
+
type: "toggle"
|
|
273236
|
+
},
|
|
273237
|
+
{
|
|
273238
|
+
type: "effort",
|
|
273239
|
+
values: [
|
|
273240
|
+
"low",
|
|
273241
|
+
"high",
|
|
273242
|
+
"max"
|
|
273243
|
+
]
|
|
273244
|
+
}
|
|
273245
|
+
],
|
|
273246
|
+
tool_call: true,
|
|
273247
|
+
structured_output: true,
|
|
273248
|
+
temperature: true,
|
|
273249
|
+
release_date: "2026-09-14",
|
|
273250
|
+
last_updated: "2026-09-14",
|
|
273251
|
+
modalities: {
|
|
273252
|
+
input: [
|
|
273253
|
+
"text"
|
|
273254
|
+
],
|
|
273255
|
+
output: [
|
|
273256
|
+
"text"
|
|
273257
|
+
]
|
|
273258
|
+
},
|
|
273259
|
+
open_weights: false,
|
|
273260
|
+
limit: {
|
|
273261
|
+
context: 1048576,
|
|
273262
|
+
output: 943718
|
|
273263
|
+
},
|
|
273264
|
+
cost: {
|
|
273265
|
+
input: 0.128,
|
|
273266
|
+
output: 1.9584,
|
|
273267
|
+
cache_read: 0.08832
|
|
273268
|
+
}
|
|
273269
|
+
},
|
|
273270
|
+
"fireworks/ember-1": {
|
|
273271
|
+
id: "fireworks/ember-1",
|
|
273272
|
+
name: "Ember-1",
|
|
273273
|
+
description: "Multimodal reasoning model for visual analysis, planning, and tool use",
|
|
273274
|
+
attachment: true,
|
|
273275
|
+
reasoning: true,
|
|
273276
|
+
reasoning_options: [
|
|
273277
|
+
{
|
|
273278
|
+
type: "toggle"
|
|
273279
|
+
},
|
|
273280
|
+
{
|
|
273281
|
+
type: "effort",
|
|
273282
|
+
values: [
|
|
273283
|
+
"low",
|
|
273284
|
+
"high",
|
|
273285
|
+
"max"
|
|
273286
|
+
]
|
|
273287
|
+
}
|
|
273288
|
+
],
|
|
273289
|
+
tool_call: true,
|
|
273290
|
+
structured_output: true,
|
|
273291
|
+
temperature: true,
|
|
273292
|
+
release_date: "2026-09-24",
|
|
273293
|
+
last_updated: "2026-09-24",
|
|
273294
|
+
modalities: {
|
|
273295
|
+
input: [
|
|
273296
|
+
"text",
|
|
273297
|
+
"image"
|
|
273298
|
+
],
|
|
273299
|
+
output: [
|
|
273300
|
+
"text"
|
|
273301
|
+
]
|
|
273302
|
+
},
|
|
273303
|
+
open_weights: false,
|
|
273304
|
+
limit: {
|
|
273305
|
+
context: 1048576,
|
|
273306
|
+
output: 943718
|
|
273307
|
+
},
|
|
273308
|
+
cost: {
|
|
273309
|
+
input: 3,
|
|
273310
|
+
output: 15,
|
|
273311
|
+
cache_read: 0.3
|
|
273312
|
+
}
|
|
273313
|
+
},
|
|
273314
|
+
"sakana/fugu-max": {
|
|
273315
|
+
id: "sakana/fugu-max",
|
|
273316
|
+
name: "Fugu Max",
|
|
273317
|
+
description: "Multi-agent model for routing expert agents across complex analytical tasks",
|
|
273318
|
+
family: "fugu",
|
|
273319
|
+
attachment: true,
|
|
273320
|
+
reasoning: true,
|
|
273321
|
+
reasoning_options: [
|
|
273322
|
+
{
|
|
273323
|
+
type: "effort",
|
|
273324
|
+
values: [
|
|
273325
|
+
"high",
|
|
273326
|
+
"xhigh",
|
|
273327
|
+
"max"
|
|
273328
|
+
]
|
|
273329
|
+
}
|
|
273330
|
+
],
|
|
273331
|
+
tool_call: true,
|
|
273332
|
+
structured_output: true,
|
|
273333
|
+
temperature: false,
|
|
273334
|
+
release_date: "2026-09-11",
|
|
273335
|
+
last_updated: "2026-09-11",
|
|
273336
|
+
modalities: {
|
|
273337
|
+
input: [
|
|
273338
|
+
"text",
|
|
273339
|
+
"image",
|
|
273340
|
+
"pdf"
|
|
273341
|
+
],
|
|
273342
|
+
output: [
|
|
273343
|
+
"text"
|
|
273344
|
+
]
|
|
273345
|
+
},
|
|
273346
|
+
open_weights: false,
|
|
273347
|
+
limit: {
|
|
273348
|
+
context: 1e6,
|
|
273349
|
+
output: 128000
|
|
273350
|
+
},
|
|
273351
|
+
cost: {
|
|
273352
|
+
input: 2,
|
|
273353
|
+
output: 6,
|
|
273354
|
+
cache_read: 0.25
|
|
273355
|
+
}
|
|
273356
|
+
},
|
|
273357
|
+
"sakana/fugu-ultra-v2": {
|
|
273358
|
+
id: "sakana/fugu-ultra-v2",
|
|
273359
|
+
name: "Fugu Ultra v2",
|
|
273360
|
+
description: "Quality-first multi-agent model for hard research, analysis, and competitions",
|
|
273361
|
+
family: "fugu",
|
|
273362
|
+
attachment: true,
|
|
273363
|
+
reasoning: true,
|
|
273364
|
+
reasoning_options: [
|
|
273365
|
+
{
|
|
273366
|
+
type: "effort",
|
|
273367
|
+
values: [
|
|
273368
|
+
"high",
|
|
273369
|
+
"xhigh",
|
|
273370
|
+
"max"
|
|
273371
|
+
]
|
|
273372
|
+
}
|
|
273373
|
+
],
|
|
273374
|
+
tool_call: true,
|
|
273375
|
+
structured_output: true,
|
|
273376
|
+
temperature: false,
|
|
273377
|
+
knowledge: "2026-08-28",
|
|
273378
|
+
release_date: "2026-09-11",
|
|
273379
|
+
last_updated: "2026-09-11",
|
|
273380
|
+
modalities: {
|
|
273381
|
+
input: [
|
|
273382
|
+
"text",
|
|
273383
|
+
"image",
|
|
273384
|
+
"pdf"
|
|
273385
|
+
],
|
|
273386
|
+
output: [
|
|
273387
|
+
"text"
|
|
273388
|
+
]
|
|
273389
|
+
},
|
|
273390
|
+
open_weights: false,
|
|
273391
|
+
limit: {
|
|
273392
|
+
context: 1e6,
|
|
273393
|
+
output: 128000
|
|
273394
|
+
},
|
|
273395
|
+
cost: {
|
|
273396
|
+
input: 5,
|
|
273397
|
+
output: 30,
|
|
273398
|
+
cache_read: 0.5,
|
|
273399
|
+
tiers: [
|
|
273400
|
+
{
|
|
273401
|
+
input: 10,
|
|
273402
|
+
output: 45,
|
|
273403
|
+
cache_read: 1,
|
|
273404
|
+
tier: {
|
|
273405
|
+
type: "context",
|
|
273406
|
+
size: 272000
|
|
273407
|
+
}
|
|
273408
|
+
}
|
|
273409
|
+
],
|
|
273410
|
+
context_over_200k: {
|
|
273411
|
+
input: 10,
|
|
273412
|
+
output: 45,
|
|
273413
|
+
cache_read: 1
|
|
273414
|
+
}
|
|
273415
|
+
}
|
|
273416
|
+
},
|
|
273417
|
+
"inclusionai/ling-3.0-flash-vl": {
|
|
273418
|
+
id: "inclusionai/ling-3.0-flash-vl",
|
|
273419
|
+
name: "Ling 3.0 Flash VL",
|
|
273420
|
+
description: "Multimodal reasoning model for visual analysis, planning, and tool use",
|
|
273421
|
+
family: "ling",
|
|
273422
|
+
attachment: true,
|
|
273423
|
+
reasoning: true,
|
|
273424
|
+
reasoning_options: [
|
|
273425
|
+
{
|
|
273426
|
+
type: "toggle"
|
|
273427
|
+
}
|
|
273428
|
+
],
|
|
273429
|
+
tool_call: true,
|
|
273430
|
+
structured_output: true,
|
|
273431
|
+
temperature: true,
|
|
273432
|
+
release_date: "2026-09-10",
|
|
273433
|
+
last_updated: "2026-09-10",
|
|
273434
|
+
modalities: {
|
|
273435
|
+
input: [
|
|
273436
|
+
"text",
|
|
273437
|
+
"image",
|
|
273438
|
+
"video"
|
|
273439
|
+
],
|
|
273440
|
+
output: [
|
|
273441
|
+
"text"
|
|
273442
|
+
]
|
|
273443
|
+
},
|
|
273444
|
+
open_weights: true,
|
|
273445
|
+
limit: {
|
|
273446
|
+
context: 262144,
|
|
273447
|
+
output: 32768
|
|
273448
|
+
},
|
|
273449
|
+
cost: {
|
|
273450
|
+
input: 0.021,
|
|
273451
|
+
output: 0.0616,
|
|
273452
|
+
cache_read: 0.0042
|
|
273453
|
+
}
|
|
273454
|
+
},
|
|
273455
|
+
"xiaomi/mimo-v2.6-pro": {
|
|
273456
|
+
id: "xiaomi/mimo-v2.6-pro",
|
|
273457
|
+
name: "MiMo-V2.6-Pro",
|
|
273458
|
+
description: "MiMo pro model for strong multimodal reasoning and agent execution",
|
|
273459
|
+
family: "mimo",
|
|
273460
|
+
attachment: true,
|
|
273461
|
+
reasoning: true,
|
|
273462
|
+
reasoning_options: [
|
|
273463
|
+
{
|
|
273464
|
+
type: "toggle"
|
|
273465
|
+
}
|
|
273466
|
+
],
|
|
273467
|
+
tool_call: true,
|
|
273468
|
+
structured_output: true,
|
|
273469
|
+
temperature: true,
|
|
273470
|
+
release_date: "2026-09-22",
|
|
273471
|
+
last_updated: "2026-09-22",
|
|
273472
|
+
modalities: {
|
|
273473
|
+
input: [
|
|
273474
|
+
"text",
|
|
273475
|
+
"image",
|
|
273476
|
+
"audio",
|
|
273477
|
+
"video"
|
|
273478
|
+
],
|
|
273479
|
+
output: [
|
|
273480
|
+
"text"
|
|
273481
|
+
]
|
|
273482
|
+
},
|
|
273483
|
+
open_weights: true,
|
|
273484
|
+
limit: {
|
|
273485
|
+
context: 1050000,
|
|
273486
|
+
output: 131072
|
|
273487
|
+
},
|
|
273488
|
+
cost: {
|
|
273489
|
+
input: 0.435,
|
|
273490
|
+
output: 0.87,
|
|
273491
|
+
cache_read: 0.0036
|
|
273492
|
+
}
|
|
273493
|
+
},
|
|
273494
|
+
"xiaomi/mimo-v2.6-pro-ultraspeed": {
|
|
273495
|
+
id: "xiaomi/mimo-v2.6-pro-ultraspeed",
|
|
273496
|
+
name: "MiMo-V2.6-Pro-UltraSpeed",
|
|
273497
|
+
description: "MiMo pro model for strong multimodal reasoning and agent execution",
|
|
273498
|
+
family: "mimo",
|
|
273499
|
+
attachment: true,
|
|
273500
|
+
reasoning: true,
|
|
273501
|
+
reasoning_options: [
|
|
273502
|
+
{
|
|
273503
|
+
type: "toggle"
|
|
273504
|
+
}
|
|
273505
|
+
],
|
|
273506
|
+
tool_call: true,
|
|
273507
|
+
structured_output: true,
|
|
273508
|
+
temperature: true,
|
|
273509
|
+
release_date: "2026-09-21",
|
|
273510
|
+
last_updated: "2026-09-21",
|
|
273511
|
+
modalities: {
|
|
273512
|
+
input: [
|
|
273513
|
+
"text",
|
|
273514
|
+
"image",
|
|
273515
|
+
"audio",
|
|
273516
|
+
"video"
|
|
273517
|
+
],
|
|
273518
|
+
output: [
|
|
273519
|
+
"text"
|
|
273520
|
+
]
|
|
273521
|
+
},
|
|
273522
|
+
open_weights: true,
|
|
273523
|
+
limit: {
|
|
273524
|
+
context: 1048576,
|
|
273525
|
+
output: 131072
|
|
273526
|
+
},
|
|
273527
|
+
cost: {
|
|
273528
|
+
input: 4.35,
|
|
273529
|
+
output: 8.7,
|
|
273530
|
+
cache_read: 0.036
|
|
273531
|
+
}
|
|
273532
|
+
},
|
|
273533
|
+
"xiaomi/mimo-v2.6-flash": {
|
|
273534
|
+
id: "xiaomi/mimo-v2.6-flash",
|
|
273535
|
+
name: "MiMo-V2.6-Flash",
|
|
273536
|
+
description: "MiMo flash model for fast multimodal assistance and agent workflows",
|
|
273537
|
+
family: "mimo",
|
|
273538
|
+
attachment: true,
|
|
273539
|
+
reasoning: true,
|
|
273540
|
+
reasoning_options: [
|
|
273541
|
+
{
|
|
273542
|
+
type: "toggle"
|
|
273543
|
+
}
|
|
273544
|
+
],
|
|
273545
|
+
tool_call: true,
|
|
273546
|
+
structured_output: true,
|
|
273547
|
+
temperature: true,
|
|
273548
|
+
release_date: "2026-09-22",
|
|
273549
|
+
last_updated: "2026-09-22",
|
|
273550
|
+
modalities: {
|
|
273551
|
+
input: [
|
|
273552
|
+
"text",
|
|
273553
|
+
"image",
|
|
273554
|
+
"audio",
|
|
273555
|
+
"video"
|
|
273556
|
+
],
|
|
273557
|
+
output: [
|
|
273558
|
+
"text"
|
|
273559
|
+
]
|
|
273560
|
+
},
|
|
273561
|
+
open_weights: true,
|
|
273562
|
+
limit: {
|
|
273563
|
+
context: 1048576,
|
|
273564
|
+
output: 131072
|
|
273565
|
+
},
|
|
273566
|
+
cost: {
|
|
273567
|
+
input: 0.14,
|
|
273568
|
+
output: 0.28,
|
|
273569
|
+
cache_read: 0.0028
|
|
273570
|
+
}
|
|
273571
|
+
},
|
|
273572
|
+
"inception/mercury-2.5": {
|
|
273573
|
+
id: "inception/mercury-2.5",
|
|
273574
|
+
name: "Mercury 2.5",
|
|
273575
|
+
description: "Reasoning model for deliberate analysis, multi-step problem solving, and tool use",
|
|
273576
|
+
family: "mercury",
|
|
273577
|
+
attachment: false,
|
|
273578
|
+
reasoning: true,
|
|
273579
|
+
reasoning_options: [
|
|
273580
|
+
{
|
|
273581
|
+
type: "effort",
|
|
273582
|
+
values: [
|
|
273583
|
+
"none",
|
|
273584
|
+
"low",
|
|
273585
|
+
"medium",
|
|
273586
|
+
"high"
|
|
273587
|
+
]
|
|
273588
|
+
}
|
|
273589
|
+
],
|
|
273590
|
+
tool_call: true,
|
|
273591
|
+
structured_output: true,
|
|
273592
|
+
temperature: true,
|
|
273593
|
+
release_date: "2026-09-08",
|
|
273594
|
+
last_updated: "2026-09-08",
|
|
273595
|
+
modalities: {
|
|
273596
|
+
input: [
|
|
273597
|
+
"text"
|
|
273598
|
+
],
|
|
273599
|
+
output: [
|
|
273600
|
+
"text"
|
|
273601
|
+
]
|
|
273602
|
+
},
|
|
273603
|
+
open_weights: false,
|
|
273604
|
+
limit: {
|
|
273605
|
+
context: 260000,
|
|
273606
|
+
output: 65536
|
|
273607
|
+
},
|
|
273608
|
+
cost: {
|
|
273609
|
+
input: 0.04,
|
|
273610
|
+
output: 0.15,
|
|
273611
|
+
cache_read: 0.004
|
|
273612
|
+
}
|
|
273613
|
+
},
|
|
273614
|
+
"aion-labs/aion-3.5": {
|
|
273615
|
+
id: "aion-labs/aion-3.5",
|
|
273616
|
+
name: "Aion 3.5",
|
|
273617
|
+
description: "Reasoning model for deliberate analysis, multi-step problem solving, and tool use",
|
|
273618
|
+
attachment: false,
|
|
273619
|
+
reasoning: true,
|
|
273620
|
+
reasoning_options: [
|
|
273621
|
+
{
|
|
273622
|
+
type: "effort",
|
|
273623
|
+
values: [
|
|
273624
|
+
"low",
|
|
273625
|
+
"high",
|
|
273626
|
+
"max"
|
|
273627
|
+
]
|
|
273628
|
+
}
|
|
273629
|
+
],
|
|
273630
|
+
tool_call: true,
|
|
273631
|
+
structured_output: false,
|
|
273632
|
+
temperature: true,
|
|
273633
|
+
release_date: "2026-09-23",
|
|
273634
|
+
last_updated: "2026-09-23",
|
|
273635
|
+
modalities: {
|
|
273636
|
+
input: [
|
|
273637
|
+
"text"
|
|
273638
|
+
],
|
|
273639
|
+
output: [
|
|
273640
|
+
"text"
|
|
273641
|
+
]
|
|
273642
|
+
},
|
|
273643
|
+
open_weights: false,
|
|
273644
|
+
limit: {
|
|
273645
|
+
context: 262144,
|
|
273646
|
+
output: 32768
|
|
273647
|
+
},
|
|
273648
|
+
cost: {
|
|
273649
|
+
input: 3,
|
|
273650
|
+
output: 6,
|
|
273651
|
+
cache_read: 0.75
|
|
273652
|
+
}
|
|
273653
|
+
},
|
|
273654
|
+
"aion-labs/aion-3.5-mini": {
|
|
273655
|
+
id: "aion-labs/aion-3.5-mini",
|
|
273656
|
+
name: "Aion 3.5 Mini",
|
|
273657
|
+
description: "Efficient model for low-latency assistance, extraction, and routine automation",
|
|
273658
|
+
attachment: false,
|
|
273659
|
+
reasoning: true,
|
|
273660
|
+
reasoning_options: [
|
|
273661
|
+
{
|
|
273662
|
+
type: "effort",
|
|
273663
|
+
values: [
|
|
273664
|
+
"low",
|
|
273665
|
+
"high",
|
|
273666
|
+
"max"
|
|
273667
|
+
]
|
|
273668
|
+
}
|
|
273669
|
+
],
|
|
273670
|
+
tool_call: true,
|
|
273671
|
+
structured_output: false,
|
|
273672
|
+
temperature: true,
|
|
273673
|
+
release_date: "2026-09-23",
|
|
273674
|
+
last_updated: "2026-09-23",
|
|
273675
|
+
modalities: {
|
|
273676
|
+
input: [
|
|
273677
|
+
"text"
|
|
273678
|
+
],
|
|
273679
|
+
output: [
|
|
273680
|
+
"text"
|
|
273681
|
+
]
|
|
273682
|
+
},
|
|
273683
|
+
open_weights: false,
|
|
273684
|
+
limit: {
|
|
273685
|
+
context: 262144,
|
|
273686
|
+
output: 32768
|
|
273687
|
+
},
|
|
273688
|
+
cost: {
|
|
273689
|
+
input: 0.7,
|
|
273690
|
+
output: 1.4,
|
|
273691
|
+
cache_read: 0.18
|
|
273692
|
+
}
|
|
273693
|
+
},
|
|
273694
|
+
"qwen/qwen3.8-omni-flash": {
|
|
273695
|
+
id: "qwen/qwen3.8-omni-flash",
|
|
273696
|
+
name: "Qwen3.8 Omni Flash",
|
|
273697
|
+
description: "Qwen omni model for text, vision, audio, and multimodal agent tasks",
|
|
273698
|
+
family: "qwen",
|
|
273699
|
+
attachment: true,
|
|
273700
|
+
reasoning: true,
|
|
273701
|
+
reasoning_options: [
|
|
273702
|
+
{
|
|
273703
|
+
type: "toggle"
|
|
273704
|
+
},
|
|
273705
|
+
{
|
|
273706
|
+
type: "budget_tokens"
|
|
273707
|
+
}
|
|
273708
|
+
],
|
|
273709
|
+
tool_call: true,
|
|
273710
|
+
structured_output: true,
|
|
273711
|
+
temperature: true,
|
|
273712
|
+
release_date: "2026-09-17",
|
|
273713
|
+
last_updated: "2026-09-17",
|
|
273714
|
+
modalities: {
|
|
273715
|
+
input: [
|
|
273716
|
+
"text",
|
|
273717
|
+
"image",
|
|
273718
|
+
"audio",
|
|
273719
|
+
"video"
|
|
273720
|
+
],
|
|
273721
|
+
output: [
|
|
273722
|
+
"text"
|
|
273723
|
+
]
|
|
273724
|
+
},
|
|
273725
|
+
open_weights: false,
|
|
273726
|
+
limit: {
|
|
273727
|
+
context: 1e6,
|
|
273728
|
+
output: 131072
|
|
273729
|
+
},
|
|
273730
|
+
cost: {
|
|
273731
|
+
input: 0.15,
|
|
273732
|
+
output: 0.47,
|
|
273733
|
+
cache_read: 0.016
|
|
273734
|
+
}
|
|
273735
|
+
},
|
|
273736
|
+
"qwen/qwen3.8-max-prime": {
|
|
273737
|
+
id: "qwen/qwen3.8-max-prime",
|
|
273738
|
+
name: "Qwen 3.8 Max Prime",
|
|
273739
|
+
description: "Qwen vision-language model for visual reasoning, documents, and agent tasks",
|
|
273740
|
+
family: "qwen3.8-max",
|
|
273741
|
+
attachment: true,
|
|
273742
|
+
reasoning: true,
|
|
273743
|
+
reasoning_options: [
|
|
273744
|
+
{
|
|
273745
|
+
type: "effort",
|
|
273746
|
+
values: [
|
|
273747
|
+
"minimal",
|
|
273748
|
+
"low",
|
|
273749
|
+
"medium",
|
|
273750
|
+
"high",
|
|
273751
|
+
"xhigh"
|
|
273752
|
+
]
|
|
273753
|
+
}
|
|
273754
|
+
],
|
|
273755
|
+
tool_call: true,
|
|
273756
|
+
structured_output: true,
|
|
273757
|
+
temperature: true,
|
|
273758
|
+
release_date: "2026-09-23",
|
|
273759
|
+
last_updated: "2026-09-23",
|
|
273760
|
+
modalities: {
|
|
273761
|
+
input: [
|
|
273762
|
+
"text",
|
|
273763
|
+
"image",
|
|
273764
|
+
"video"
|
|
273765
|
+
],
|
|
273766
|
+
output: [
|
|
273767
|
+
"text"
|
|
273768
|
+
]
|
|
273769
|
+
},
|
|
273770
|
+
open_weights: false,
|
|
273771
|
+
limit: {
|
|
273772
|
+
context: 1e6,
|
|
273773
|
+
output: 131072
|
|
273774
|
+
},
|
|
273775
|
+
cost: {
|
|
273776
|
+
input: 4,
|
|
273777
|
+
output: 12,
|
|
273778
|
+
cache_read: 0.5
|
|
273779
|
+
}
|
|
273780
|
+
},
|
|
273781
|
+
"qwen/qwen3.8-27b:free": {
|
|
273782
|
+
id: "qwen/qwen3.8-27b:free",
|
|
273783
|
+
name: "Qwen3.8 27B (free)",
|
|
273784
|
+
description: "Qwen vision-language model for visual reasoning, documents, and agent tasks",
|
|
273785
|
+
family: "qwen",
|
|
273786
|
+
attachment: true,
|
|
273787
|
+
reasoning: true,
|
|
273788
|
+
reasoning_options: [
|
|
273789
|
+
{
|
|
273790
|
+
type: "toggle"
|
|
273791
|
+
},
|
|
273792
|
+
{
|
|
273793
|
+
type: "effort",
|
|
273794
|
+
values: [
|
|
273795
|
+
"low",
|
|
273796
|
+
"medium",
|
|
273797
|
+
"xhigh"
|
|
273798
|
+
]
|
|
273799
|
+
}
|
|
273800
|
+
],
|
|
273801
|
+
tool_call: true,
|
|
273802
|
+
structured_output: true,
|
|
273803
|
+
temperature: true,
|
|
273804
|
+
release_date: "2026-08-14",
|
|
273805
|
+
last_updated: "2026-08-14",
|
|
273806
|
+
modalities: {
|
|
273807
|
+
input: [
|
|
273808
|
+
"text",
|
|
273809
|
+
"image",
|
|
273810
|
+
"video"
|
|
273811
|
+
],
|
|
273812
|
+
output: [
|
|
273813
|
+
"text"
|
|
273814
|
+
]
|
|
273815
|
+
},
|
|
273816
|
+
open_weights: true,
|
|
273817
|
+
limit: {
|
|
273818
|
+
context: 262144,
|
|
273819
|
+
output: 235929
|
|
273820
|
+
},
|
|
273821
|
+
cost: {
|
|
273822
|
+
input: 0,
|
|
273823
|
+
output: 0
|
|
273824
|
+
}
|
|
273825
|
+
},
|
|
273826
|
+
"openai/gpt-6-sol-pro": {
|
|
273827
|
+
id: "openai/gpt-6-sol-pro",
|
|
273828
|
+
name: "GPT-6 Sol Pro",
|
|
273829
|
+
description: "Frontier GPT model for professional reasoning, coding, and multimodal work",
|
|
273830
|
+
family: "gpt",
|
|
273831
|
+
attachment: true,
|
|
273832
|
+
reasoning: true,
|
|
273833
|
+
reasoning_options: [
|
|
273834
|
+
{
|
|
273835
|
+
type: "effort",
|
|
273836
|
+
values: [
|
|
273837
|
+
"none",
|
|
273838
|
+
"low",
|
|
273839
|
+
"medium",
|
|
273840
|
+
"high",
|
|
273841
|
+
"xhigh",
|
|
273842
|
+
"max"
|
|
273843
|
+
]
|
|
273844
|
+
}
|
|
273845
|
+
],
|
|
273846
|
+
tool_call: true,
|
|
273847
|
+
structured_output: true,
|
|
273848
|
+
temperature: false,
|
|
273849
|
+
release_date: "2026-09-22",
|
|
273850
|
+
last_updated: "2026-09-22",
|
|
273851
|
+
modalities: {
|
|
273852
|
+
input: [
|
|
273853
|
+
"pdf",
|
|
273854
|
+
"image",
|
|
273855
|
+
"text"
|
|
273856
|
+
],
|
|
273857
|
+
output: [
|
|
273858
|
+
"text"
|
|
273859
|
+
]
|
|
273860
|
+
},
|
|
273861
|
+
open_weights: false,
|
|
273862
|
+
limit: {
|
|
273863
|
+
context: 1050000,
|
|
273864
|
+
output: 128000
|
|
273865
|
+
},
|
|
273866
|
+
cost: {
|
|
273867
|
+
input: 2,
|
|
273868
|
+
output: 10,
|
|
273869
|
+
cache_read: 0.2,
|
|
273870
|
+
cache_write: 2.5,
|
|
273871
|
+
tiers: [
|
|
273872
|
+
{
|
|
273873
|
+
input: 4,
|
|
273874
|
+
output: 15,
|
|
273875
|
+
cache_read: 0.4,
|
|
273876
|
+
cache_write: 5,
|
|
273877
|
+
tier: {
|
|
273878
|
+
type: "context",
|
|
273879
|
+
size: 272000
|
|
273880
|
+
}
|
|
273881
|
+
}
|
|
273882
|
+
],
|
|
273883
|
+
context_over_200k: {
|
|
273884
|
+
input: 4,
|
|
273885
|
+
output: 15,
|
|
273886
|
+
cache_read: 0.4,
|
|
273887
|
+
cache_write: 5
|
|
273888
|
+
}
|
|
273889
|
+
}
|
|
273890
|
+
},
|
|
273891
|
+
"openai/gpt-6-luna": {
|
|
273892
|
+
id: "openai/gpt-6-luna",
|
|
273893
|
+
name: "GPT-6 Luna",
|
|
273894
|
+
description: "GPT model for general reasoning, writing, coding, and tool-assisted tasks",
|
|
273895
|
+
family: "gpt-luna",
|
|
273896
|
+
attachment: true,
|
|
273897
|
+
reasoning: true,
|
|
273898
|
+
reasoning_options: [
|
|
273899
|
+
{
|
|
273900
|
+
type: "effort",
|
|
273901
|
+
values: [
|
|
273902
|
+
"none",
|
|
273903
|
+
"low",
|
|
273904
|
+
"medium",
|
|
273905
|
+
"high",
|
|
273906
|
+
"xhigh",
|
|
273907
|
+
"max"
|
|
273908
|
+
]
|
|
273909
|
+
}
|
|
273910
|
+
],
|
|
273911
|
+
tool_call: true,
|
|
273912
|
+
structured_output: true,
|
|
273913
|
+
temperature: false,
|
|
273914
|
+
knowledge: "2026-05-18",
|
|
273915
|
+
release_date: "2026-09-22",
|
|
273916
|
+
last_updated: "2026-09-22",
|
|
273917
|
+
modalities: {
|
|
273918
|
+
input: [
|
|
273919
|
+
"text",
|
|
273920
|
+
"image",
|
|
273921
|
+
"pdf"
|
|
273922
|
+
],
|
|
273923
|
+
output: [
|
|
273924
|
+
"text"
|
|
273925
|
+
]
|
|
273926
|
+
},
|
|
273927
|
+
open_weights: false,
|
|
273928
|
+
limit: {
|
|
273929
|
+
context: 1050000,
|
|
273930
|
+
input: 922000,
|
|
273931
|
+
output: 128000
|
|
273932
|
+
},
|
|
273933
|
+
cost: {
|
|
273934
|
+
input: 0.1,
|
|
273935
|
+
output: 0.5,
|
|
273936
|
+
cache_read: 0.01,
|
|
273937
|
+
cache_write: 0.125,
|
|
273938
|
+
tiers: [
|
|
273939
|
+
{
|
|
273940
|
+
input: 0.2,
|
|
273941
|
+
output: 0.75,
|
|
273942
|
+
cache_read: 0.02,
|
|
273943
|
+
cache_write: 0.25,
|
|
273944
|
+
tier: {
|
|
273945
|
+
type: "context",
|
|
273946
|
+
size: 272000
|
|
273947
|
+
}
|
|
273948
|
+
}
|
|
273949
|
+
],
|
|
273950
|
+
context_over_200k: {
|
|
273951
|
+
input: 0.2,
|
|
273952
|
+
output: 0.75,
|
|
273953
|
+
cache_read: 0.02,
|
|
273954
|
+
cache_write: 0.25
|
|
273955
|
+
}
|
|
273956
|
+
}
|
|
273957
|
+
},
|
|
273958
|
+
"openai/gpt-6-luna-pro": {
|
|
273959
|
+
id: "openai/gpt-6-luna-pro",
|
|
273960
|
+
name: "GPT-6 Luna Pro",
|
|
273961
|
+
description: "Frontier GPT model for professional reasoning, coding, and multimodal work",
|
|
273962
|
+
family: "gpt",
|
|
273963
|
+
attachment: true,
|
|
273964
|
+
reasoning: true,
|
|
273965
|
+
reasoning_options: [
|
|
273966
|
+
{
|
|
273967
|
+
type: "effort",
|
|
273968
|
+
values: [
|
|
273969
|
+
"none",
|
|
273970
|
+
"low",
|
|
273971
|
+
"medium",
|
|
273972
|
+
"high",
|
|
273973
|
+
"xhigh",
|
|
273974
|
+
"max"
|
|
273975
|
+
]
|
|
273976
|
+
}
|
|
273977
|
+
],
|
|
273978
|
+
tool_call: true,
|
|
273979
|
+
structured_output: true,
|
|
273980
|
+
temperature: false,
|
|
273981
|
+
release_date: "2026-09-22",
|
|
273982
|
+
last_updated: "2026-09-22",
|
|
273983
|
+
modalities: {
|
|
273984
|
+
input: [
|
|
273985
|
+
"pdf",
|
|
273986
|
+
"image",
|
|
273987
|
+
"text"
|
|
273988
|
+
],
|
|
273989
|
+
output: [
|
|
273990
|
+
"text"
|
|
273991
|
+
]
|
|
273992
|
+
},
|
|
273993
|
+
open_weights: false,
|
|
273994
|
+
limit: {
|
|
273995
|
+
context: 1050000,
|
|
273996
|
+
output: 128000
|
|
273997
|
+
},
|
|
273998
|
+
cost: {
|
|
273999
|
+
input: 0.1,
|
|
274000
|
+
output: 0.5,
|
|
274001
|
+
cache_read: 0.01,
|
|
274002
|
+
cache_write: 0.125,
|
|
274003
|
+
tiers: [
|
|
274004
|
+
{
|
|
274005
|
+
input: 0.2,
|
|
274006
|
+
output: 0.75,
|
|
274007
|
+
cache_read: 0.02,
|
|
274008
|
+
cache_write: 0.25,
|
|
274009
|
+
tier: {
|
|
274010
|
+
type: "context",
|
|
274011
|
+
size: 272000
|
|
274012
|
+
}
|
|
274013
|
+
}
|
|
274014
|
+
],
|
|
274015
|
+
context_over_200k: {
|
|
274016
|
+
input: 0.2,
|
|
274017
|
+
output: 0.75,
|
|
274018
|
+
cache_read: 0.02,
|
|
274019
|
+
cache_write: 0.25
|
|
274020
|
+
}
|
|
274021
|
+
}
|
|
274022
|
+
},
|
|
274023
|
+
"openai/gpt-6-sol": {
|
|
274024
|
+
id: "openai/gpt-6-sol",
|
|
274025
|
+
name: "GPT-6 Sol",
|
|
274026
|
+
description: "GPT model for general reasoning, writing, coding, and tool-assisted tasks",
|
|
274027
|
+
family: "gpt-sol",
|
|
274028
|
+
attachment: true,
|
|
274029
|
+
reasoning: true,
|
|
274030
|
+
reasoning_options: [
|
|
274031
|
+
{
|
|
274032
|
+
type: "effort",
|
|
274033
|
+
values: [
|
|
274034
|
+
"none",
|
|
274035
|
+
"low",
|
|
274036
|
+
"medium",
|
|
274037
|
+
"high",
|
|
274038
|
+
"xhigh",
|
|
274039
|
+
"max"
|
|
274040
|
+
]
|
|
274041
|
+
}
|
|
274042
|
+
],
|
|
274043
|
+
tool_call: true,
|
|
274044
|
+
structured_output: true,
|
|
274045
|
+
temperature: false,
|
|
274046
|
+
knowledge: "2026-04-20",
|
|
274047
|
+
release_date: "2026-09-22",
|
|
274048
|
+
last_updated: "2026-09-22",
|
|
274049
|
+
modalities: {
|
|
274050
|
+
input: [
|
|
274051
|
+
"text",
|
|
274052
|
+
"image",
|
|
274053
|
+
"pdf"
|
|
274054
|
+
],
|
|
274055
|
+
output: [
|
|
274056
|
+
"text"
|
|
274057
|
+
]
|
|
274058
|
+
},
|
|
274059
|
+
open_weights: false,
|
|
274060
|
+
limit: {
|
|
274061
|
+
context: 1050000,
|
|
274062
|
+
input: 922000,
|
|
274063
|
+
output: 128000
|
|
274064
|
+
},
|
|
274065
|
+
cost: {
|
|
274066
|
+
input: 2,
|
|
274067
|
+
output: 10,
|
|
274068
|
+
cache_read: 0.2,
|
|
274069
|
+
cache_write: 2.5,
|
|
274070
|
+
tiers: [
|
|
274071
|
+
{
|
|
274072
|
+
input: 4,
|
|
274073
|
+
output: 15,
|
|
274074
|
+
cache_read: 0.4,
|
|
274075
|
+
cache_write: 5,
|
|
274076
|
+
tier: {
|
|
274077
|
+
type: "context",
|
|
274078
|
+
size: 272000
|
|
274079
|
+
}
|
|
274080
|
+
}
|
|
274081
|
+
],
|
|
274082
|
+
context_over_200k: {
|
|
274083
|
+
input: 4,
|
|
274084
|
+
output: 15,
|
|
274085
|
+
cache_read: 0.4,
|
|
274086
|
+
cache_write: 5
|
|
274087
|
+
}
|
|
274088
|
+
}
|
|
272280
274089
|
}
|
|
272281
274090
|
}
|
|
272282
274091
|
},
|
|
@@ -286011,6 +287820,121 @@ var modelsdev_cache_default = {
|
|
|
286011
287820
|
cache_write: 0.25
|
|
286012
287821
|
}
|
|
286013
287822
|
}
|
|
287823
|
+
},
|
|
287824
|
+
"gpt-daybreak-blue-latest": {
|
|
287825
|
+
id: "gpt-daybreak-blue-latest",
|
|
287826
|
+
name: "Daybreak Blue",
|
|
287827
|
+
description: "Alias for flagship general-purpose models with safeguards for defensive cybersecurity work",
|
|
287828
|
+
family: "gpt-sol",
|
|
287829
|
+
attachment: true,
|
|
287830
|
+
reasoning: true,
|
|
287831
|
+
reasoning_options: [
|
|
287832
|
+
{
|
|
287833
|
+
type: "effort",
|
|
287834
|
+
values: [
|
|
287835
|
+
"none",
|
|
287836
|
+
"low",
|
|
287837
|
+
"medium",
|
|
287838
|
+
"high",
|
|
287839
|
+
"xhigh",
|
|
287840
|
+
"max"
|
|
287841
|
+
]
|
|
287842
|
+
}
|
|
287843
|
+
],
|
|
287844
|
+
tool_call: true,
|
|
287845
|
+
structured_output: true,
|
|
287846
|
+
temperature: false,
|
|
287847
|
+
knowledge: "2026-02-16",
|
|
287848
|
+
release_date: "2026-08-07",
|
|
287849
|
+
last_updated: "2026-08-07",
|
|
287850
|
+
modalities: {
|
|
287851
|
+
input: [
|
|
287852
|
+
"text",
|
|
287853
|
+
"image",
|
|
287854
|
+
"pdf"
|
|
287855
|
+
],
|
|
287856
|
+
output: [
|
|
287857
|
+
"text"
|
|
287858
|
+
]
|
|
287859
|
+
},
|
|
287860
|
+
open_weights: false,
|
|
287861
|
+
limit: {
|
|
287862
|
+
context: 1050000,
|
|
287863
|
+
input: 922000,
|
|
287864
|
+
output: 128000
|
|
287865
|
+
},
|
|
287866
|
+
cost: {
|
|
287867
|
+
input: 4,
|
|
287868
|
+
output: 20,
|
|
287869
|
+
cache_read: 0.4,
|
|
287870
|
+
cache_write: 5,
|
|
287871
|
+
tiers: [
|
|
287872
|
+
{
|
|
287873
|
+
input: 8,
|
|
287874
|
+
output: 30,
|
|
287875
|
+
cache_read: 0.8,
|
|
287876
|
+
cache_write: 10,
|
|
287877
|
+
tier: {
|
|
287878
|
+
type: "context",
|
|
287879
|
+
size: 272000
|
|
287880
|
+
}
|
|
287881
|
+
}
|
|
287882
|
+
],
|
|
287883
|
+
context_over_200k: {
|
|
287884
|
+
input: 8,
|
|
287885
|
+
output: 30,
|
|
287886
|
+
cache_read: 0.8,
|
|
287887
|
+
cache_write: 10
|
|
287888
|
+
}
|
|
287889
|
+
}
|
|
287890
|
+
},
|
|
287891
|
+
"gpt-daybreak-red-latest": {
|
|
287892
|
+
id: "gpt-daybreak-red-latest",
|
|
287893
|
+
name: "Daybreak Red",
|
|
287894
|
+
description: "Alias for advanced cybersecurity models for authorized vulnerability research and security testing",
|
|
287895
|
+
family: "gpt",
|
|
287896
|
+
attachment: true,
|
|
287897
|
+
reasoning: true,
|
|
287898
|
+
reasoning_options: [
|
|
287899
|
+
{
|
|
287900
|
+
type: "effort",
|
|
287901
|
+
values: [
|
|
287902
|
+
"none",
|
|
287903
|
+
"low",
|
|
287904
|
+
"medium",
|
|
287905
|
+
"high",
|
|
287906
|
+
"xhigh",
|
|
287907
|
+
"max"
|
|
287908
|
+
]
|
|
287909
|
+
}
|
|
287910
|
+
],
|
|
287911
|
+
tool_call: true,
|
|
287912
|
+
structured_output: true,
|
|
287913
|
+
temperature: false,
|
|
287914
|
+
knowledge: "2026-02-16",
|
|
287915
|
+
release_date: "2026-08-07",
|
|
287916
|
+
last_updated: "2026-08-07",
|
|
287917
|
+
modalities: {
|
|
287918
|
+
input: [
|
|
287919
|
+
"text",
|
|
287920
|
+
"image"
|
|
287921
|
+
],
|
|
287922
|
+
output: [
|
|
287923
|
+
"text"
|
|
287924
|
+
]
|
|
287925
|
+
},
|
|
287926
|
+
open_weights: false,
|
|
287927
|
+
limit: {
|
|
287928
|
+
context: 400000,
|
|
287929
|
+
input: 272000,
|
|
287930
|
+
output: 128000
|
|
287931
|
+
},
|
|
287932
|
+
cost: {
|
|
287933
|
+
input: 12.5,
|
|
287934
|
+
output: 75,
|
|
287935
|
+
cache_read: 1.25,
|
|
287936
|
+
cache_write: 15.625
|
|
287937
|
+
}
|
|
286014
287938
|
}
|
|
286015
287939
|
}
|
|
286016
287940
|
},
|
|
@@ -332122,13 +334046,13 @@ function checkCodexCredentials(env, opts = {}) {
|
|
|
332122
334046
|
}
|
|
332123
334047
|
async function resolveCodexAuthMode(config, emit, deps = {}) {
|
|
332124
334048
|
const fsModule = await import("node:fs/promises");
|
|
332125
|
-
const
|
|
334049
|
+
const homedir2 = deps.homedir ?? codexUserHome;
|
|
332126
334050
|
const fs = deps.fs ?? {
|
|
332127
334051
|
readFile: (path, encoding) => fsModule.readFile(path, encoding),
|
|
332128
334052
|
mkdir: (path, opts) => fsModule.mkdir(path, opts),
|
|
332129
334053
|
writeFile: (path, data, opts) => fsModule.writeFile(path, data, opts)
|
|
332130
334054
|
};
|
|
332131
|
-
const authJsonPath = join2(
|
|
334055
|
+
const authJsonPath = join2(homedir2(), ".codex", "auth.json");
|
|
332132
334056
|
const readAuthMode = async () => {
|
|
332133
334057
|
try {
|
|
332134
334058
|
const raw = await fs.readFile(authJsonPath, "utf-8");
|
|
@@ -332164,7 +334088,7 @@ async function resolveCodexAuthMode(config, emit, deps = {}) {
|
|
|
332164
334088
|
const authJson = credentialsToAuthJson(oauthCreds, {
|
|
332165
334089
|
includeRefreshToken: !isPoolSlot
|
|
332166
334090
|
});
|
|
332167
|
-
await fs.mkdir(join2(
|
|
334091
|
+
await fs.mkdir(join2(homedir2(), ".codex"), { recursive: true, mode: 448 });
|
|
332168
334092
|
await fs.writeFile(authJsonPath, JSON.stringify(authJson, null, 2), { mode: 384 });
|
|
332169
334093
|
const verb = currentMode === null ? "Restored" : currentMode === "chatgpt" ? "Revalidated" : "Upgraded api-key auth.json to";
|
|
332170
334094
|
emit({
|
|
@@ -332458,8 +334382,8 @@ class AppServerCodexThread {
|
|
|
332458
334382
|
const events = async function* () {
|
|
332459
334383
|
while (!finished || pending.length > 0) {
|
|
332460
334384
|
if (pending.length === 0) {
|
|
332461
|
-
await new Promise((
|
|
332462
|
-
wake =
|
|
334385
|
+
await new Promise((resolve2) => {
|
|
334386
|
+
wake = resolve2;
|
|
332463
334387
|
});
|
|
332464
334388
|
continue;
|
|
332465
334389
|
}
|
|
@@ -332471,7 +334395,7 @@ class AppServerCodexThread {
|
|
|
332471
334395
|
return { events: events() };
|
|
332472
334396
|
}
|
|
332473
334397
|
async steer(input) {
|
|
332474
|
-
const turnId = this.activeTurnId ?? await new Promise((
|
|
334398
|
+
const turnId = this.activeTurnId ?? await new Promise((resolve2, reject) => this.turnWaiters.push({ resolve: resolve2, reject }));
|
|
332475
334399
|
await this.client.request("turn/steer", {
|
|
332476
334400
|
threadId: this.id,
|
|
332477
334401
|
expectedTurnId: turnId,
|
|
@@ -332620,8 +334544,8 @@ class CodexSession {
|
|
|
332620
334544
|
this.logFileHandle = Bun.file(config.logFile).writer();
|
|
332621
334545
|
const reasoningApplication = applyReasoningEffort("codex", resolvedModel, config.reasoningEffort);
|
|
332622
334546
|
this.appliedReasoningEffort = reasoningApplication.kind === "codex-config" ? config.reasoningEffort ?? null : null;
|
|
332623
|
-
this.completionPromise = new Promise((
|
|
332624
|
-
this.resolveCompletion =
|
|
334547
|
+
this.completionPromise = new Promise((resolve2) => {
|
|
334548
|
+
this.resolveCompletion = resolve2;
|
|
332625
334549
|
});
|
|
332626
334550
|
if (config.taskId && config.apiUrl && config.apiKey) {
|
|
332627
334551
|
this.listeners.push(createCodexSwarmEventHandler({
|
|
@@ -332678,7 +334602,7 @@ class CodexSession {
|
|
|
332678
334602
|
return { delivered: false, reason: "Codex session has completed" };
|
|
332679
334603
|
}
|
|
332680
334604
|
if (mode === "queue") {
|
|
332681
|
-
return new Promise((
|
|
334605
|
+
return new Promise((resolve2) => this.queuedPrompts.push({ text, resolve: resolve2 }));
|
|
332682
334606
|
}
|
|
332683
334607
|
try {
|
|
332684
334608
|
await this.thread.steer(text);
|
|
@@ -333425,8 +335349,8 @@ class CodexSubprocessSession {
|
|
|
333425
335349
|
try {
|
|
333426
335350
|
await Promise.race([
|
|
333427
335351
|
this.completionPromise,
|
|
333428
|
-
new Promise((
|
|
333429
|
-
timer = setTimeout(
|
|
335352
|
+
new Promise((resolve2) => {
|
|
335353
|
+
timer = setTimeout(resolve2, 2000);
|
|
333430
335354
|
})
|
|
333431
335355
|
]);
|
|
333432
335356
|
} finally {
|
|
@@ -333441,18 +335365,18 @@ class CodexSubprocessSession {
|
|
|
333441
335365
|
if (this.finished)
|
|
333442
335366
|
return { delivered: false, reason: "Codex session has completed" };
|
|
333443
335367
|
const id = ++this.nextControlId;
|
|
333444
|
-
return new Promise((
|
|
335368
|
+
return new Promise((resolve2) => {
|
|
333445
335369
|
const timer = delivery.mode === "queue" ? undefined : setTimeout(() => {
|
|
333446
335370
|
this.pendingSteering.delete(id);
|
|
333447
|
-
|
|
335371
|
+
resolve2({ delivered: false, reason: "Codex steering request timed out" });
|
|
333448
335372
|
}, 35000);
|
|
333449
|
-
this.pendingSteering.set(id, { resolve, timer });
|
|
335373
|
+
this.pendingSteering.set(id, { resolve: resolve2, timer });
|
|
333450
335374
|
try {
|
|
333451
335375
|
this.writeControl({ kind: "steer", id, delivery });
|
|
333452
335376
|
} catch (error) {
|
|
333453
335377
|
clearTimeout(timer);
|
|
333454
335378
|
this.pendingSteering.delete(id);
|
|
333455
|
-
|
|
335379
|
+
resolve2({ delivered: false, reason: scrubSecrets(String(error)) });
|
|
333456
335380
|
}
|
|
333457
335381
|
});
|
|
333458
335382
|
}
|
|
@@ -333462,9 +335386,9 @@ class CodexSubprocessSession {
|
|
|
333462
335386
|
}
|
|
333463
335387
|
finishSteering() {
|
|
333464
335388
|
this.finished = true;
|
|
333465
|
-
for (const { resolve, timer } of this.pendingSteering.values()) {
|
|
335389
|
+
for (const { resolve: resolve2, timer } of this.pendingSteering.values()) {
|
|
333466
335390
|
clearTimeout(timer);
|
|
333467
|
-
|
|
335391
|
+
resolve2({ delivered: false, reason: "Codex session has completed" });
|
|
333468
335392
|
}
|
|
333469
335393
|
this.pendingSteering.clear();
|
|
333470
335394
|
}
|