pantheon-opencode 1.4.1 → 1.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +166 -50
- package/bin/pantheon-init.mjs +7 -0
- package/commands/pantheon-model.md +34 -0
- package/package.json +2 -2
- package/scripts/generate-preset-docs.mjs +239 -0
- package/scripts/install/model-picker.mjs +367 -2
- package/scripts/install/opencode.mjs +150 -137
- package/src/pantheon/delegation.ts +36 -26
- package/src/pantheon/model-command.ts +858 -0
- package/src/pantheon/presets.mjs +30 -33
- package/src/pantheon/zeus-delegate-with-retry.ts +9 -4
- package/src/plugin.ts +4 -0
- package/src/plugins/tui/dist/tui.d.ts.map +1 -1
- package/src/plugins/tui/dist/tui.js +1 -1
- package/src/plugins/tui/dist/tui.tsx +13 -2
- package/src/plugins/tui/package.json +1 -1
- package/src/plugins/tui/src/index.tsx +13 -2
- package/src/plugins/tui/tsdown.config.ts +11 -0
- package/src/routing.yml +71 -123
package/src/pantheon/presets.mjs
CHANGED
|
@@ -33,12 +33,13 @@ export const EFFORT_RANK = { low: 0, medium: 1, high: 2 }
|
|
|
33
33
|
/**
|
|
34
34
|
* Capability table: reasoning-effort ceiling + image-input (vision) support.
|
|
35
35
|
*
|
|
36
|
-
* `vision` flags mark models that accept image input. Verified
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
36
|
+
* `vision` flags mark models that accept image input. Verified 2026-08-27:
|
|
37
|
+
* deepseek-v4-pro high, deepseek-v4-flash medium text-only; mimo-v2.5 /
|
|
38
|
+
* mimo-v2.5-free multimodal low; qwen3.6-plus-free / qwen3.8-max text-only;
|
|
39
|
+
* glm-5.3-flash high text-only; kimi-k2.7-code high, kimi-k3 medium text-only;
|
|
40
|
+
* nemotron-3-super-free high text-only; big-pickle medium text-only;
|
|
41
|
+
* minimax-m3 multimodal high; gpt-5.6 family native image support.
|
|
42
|
+
* Removed: minimax-m2.5, kimi-k2.5, glm-5.1/5.2, ox-alpha (deprecated 2026).
|
|
42
43
|
*/
|
|
43
44
|
export const CAPABILITY_TABLE = [
|
|
44
45
|
{ prefix: 'deepseek/deepseek-v4-pro', maxEffort: 'high', stripEffort: false, vision: false },
|
|
@@ -60,31 +61,18 @@ export const CAPABILITY_TABLE = [
|
|
|
60
61
|
// entry above matches 'mimo/v2.5' (full-string) but NOT 'mimo-v2.5'
|
|
61
62
|
// (segment 'mimo-v2.5' has no slash, so 'mimo/' prefix cannot match).
|
|
62
63
|
{ prefix: 'mimo-v2.5', maxEffort: 'low', stripEffort: false, vision: true },
|
|
63
|
-
// mimo-v2.5-pro is text-only per models.dev api.json (2026-08-
|
|
64
|
-
// Explicit entry needed: the 'mimo-v2.5' prefix substring-matches
|
|
65
|
-
// 'mimo-v2.5-pro' (longest-prefix wins), which would wrongly report
|
|
66
|
-
// vision: true for a text-only model.
|
|
64
|
+
// mimo-v2.5-pro is text-only per models.dev api.json (2026-08-27).
|
|
67
65
|
{ prefix: 'mimo-v2.5-pro', maxEffort: 'low', stripEffort: false, vision: false },
|
|
68
|
-
//
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
{ prefix: '
|
|
73
|
-
{ prefix: '
|
|
74
|
-
|
|
75
|
-
// qwen3.7-max is text-only per models.dev api.json (2026-08-02); the
|
|
76
|
-
// multimodal variant is qwen3.7-plus.
|
|
66
|
+
// Go subscription specific — bare segment prefixes so opencode-go/<model> IDs match
|
|
67
|
+
{ prefix: 'glm-5.3-flash', maxEffort: 'high', stripEffort: false, vision: false },
|
|
68
|
+
{ prefix: 'kimi-k2.7-code', maxEffort: 'high', stripEffort: false, vision: false },
|
|
69
|
+
{ prefix: 'kimi-k3', maxEffort: 'medium', stripEffort: false, vision: false },
|
|
70
|
+
{ prefix: 'qwen3.8-max', maxEffort: 'high', stripEffort: false, vision: false },
|
|
71
|
+
{ prefix: 'qwen3.6-plus-free', maxEffort: 'medium', stripEffort: false, vision: false },
|
|
72
|
+
// Legacy qwen3.7 retained for capability checks (not used in new presets)
|
|
77
73
|
{ prefix: 'qwen3.7-max', maxEffort: 'high', stripEffort: false, vision: false },
|
|
78
|
-
// qwen3.7-plus IS multimodal (models.dev input: text+image) but image
|
|
79
|
-
// turns through the OpenCode Go gateway return HTTP 500 (opencode#33942
|
|
80
|
-
// + #29956). Flag stays true per models.dev; presets must NOT use it as a
|
|
81
|
-
// vision fallback — minimax-m3 is the confirmed opencode-go fallback.
|
|
82
74
|
{ prefix: 'qwen3.7-plus', maxEffort: 'medium', stripEffort: false, vision: true },
|
|
83
|
-
// minimax-m2.7 / minimax-m2.5 are text-only per models.dev api.json
|
|
84
|
-
// (2026-08-02). minimax-m3 is the vision-capable MiniMax on opencode-go
|
|
85
|
-
// (confirmed multimodal via the Go gateway, opencode#29956).
|
|
86
75
|
{ prefix: 'minimax-m2.7', maxEffort: 'medium', stripEffort: false, vision: false },
|
|
87
|
-
{ prefix: 'minimax-m2.5', maxEffort: 'medium', stripEffort: false, vision: false },
|
|
88
76
|
{ prefix: 'minimax-m3', maxEffort: 'high', stripEffort: false, vision: true },
|
|
89
77
|
// BARE prefix — needed for opencode-go/deepseek-v4-flash (segment match);
|
|
90
78
|
// provider-scoped deepseek/deepseek-v4-flash entry still wins by length
|
|
@@ -94,9 +82,10 @@ export const CAPABILITY_TABLE = [
|
|
|
94
82
|
// provider-scoped deepseek/deepseek-v4-pro entry still wins by length.
|
|
95
83
|
{ prefix: 'deepseek-v4-pro', maxEffort: 'high', stripEffort: false, vision: false },
|
|
96
84
|
// opencode (Zen free tier) — bare segment prefixes for opencode/<model>.
|
|
97
|
-
// big-pickle / nemotron-3-
|
|
98
|
-
// text-only via models.dev (2026-08-
|
|
85
|
+
// big-pickle / nemotron-3-super-free / north-mini-code-free verified
|
|
86
|
+
// text-only via models.dev (2026-08-27).
|
|
99
87
|
{ prefix: 'big-pickle', maxEffort: 'medium', stripEffort: false, vision: false },
|
|
88
|
+
{ prefix: 'nemotron-3-super-free', maxEffort: 'high', stripEffort: false, vision: false },
|
|
100
89
|
{ prefix: 'nemotron-3-ultra-free', maxEffort: 'high', stripEffort: false, vision: false },
|
|
101
90
|
{ prefix: 'north-mini-code-free', maxEffort: 'high', stripEffort: false, vision: false },
|
|
102
91
|
]
|
|
@@ -513,8 +502,13 @@ function providerDefKeyConfigured(provider, env) {
|
|
|
513
502
|
if (!provider || typeof provider !== 'object') return true
|
|
514
503
|
const envVar = provider.apiKeyEnv
|
|
515
504
|
if (typeof envVar !== 'string' || envVar === '') return true
|
|
516
|
-
const
|
|
517
|
-
|
|
505
|
+
const candidates =
|
|
506
|
+
envVar === 'PANTHEON_OPENCODE_API_KEY' ? [envVar, 'OPENCODE_GO_API_KEY'] : [envVar]
|
|
507
|
+
for (const candidate of candidates) {
|
|
508
|
+
const key = env[candidate]
|
|
509
|
+
if (typeof key === 'string' && key.trim() !== '') return true
|
|
510
|
+
}
|
|
511
|
+
return false
|
|
518
512
|
}
|
|
519
513
|
|
|
520
514
|
/**
|
|
@@ -532,7 +526,6 @@ function providerDefKeyConfigured(provider, env) {
|
|
|
532
526
|
* @returns {string|undefined} missing env var name, or undefined when usable
|
|
533
527
|
*/
|
|
534
528
|
export function missingProviderKeyEnv(providerID, { env = process.env, routingPath } = {}) {
|
|
535
|
-
if (providerID === 'opencode-go') return undefined
|
|
536
529
|
const defs = loadPresetDefs(routingPath)
|
|
537
530
|
for (const def of Object.values(defs)) {
|
|
538
531
|
const provider = def?.providers?.[providerID]
|
|
@@ -583,7 +576,11 @@ export function applyPreset(config, resolved, { env = process.env } = {}) {
|
|
|
583
576
|
config.provider[id] ??= {}
|
|
584
577
|
config.provider[id].options ??= {}
|
|
585
578
|
config.provider[id].options.baseURL = provider.baseURL
|
|
586
|
-
|
|
579
|
+
const apiKey =
|
|
580
|
+
provider.apiKeyEnv === 'PANTHEON_OPENCODE_API_KEY'
|
|
581
|
+
? (env[provider.apiKeyEnv] ?? env.OPENCODE_GO_API_KEY)
|
|
582
|
+
: env[provider.apiKeyEnv]
|
|
583
|
+
config.provider[id].options.apiKey = apiKey
|
|
587
584
|
}
|
|
588
585
|
|
|
589
586
|
for (const [agent, spec] of Object.entries(resolved.agents ?? {})) {
|
|
@@ -272,9 +272,9 @@ export async function zeusDelegateWithRetry(
|
|
|
272
272
|
report: string
|
|
273
273
|
dispatchResult: DispatchResultLike
|
|
274
274
|
}> {
|
|
275
|
-
// 1. Create child session (parentID = caller).
|
|
276
|
-
//
|
|
277
|
-
//
|
|
275
|
+
// 1. Create child session (parentID = caller). When a model is resolved,
|
|
276
|
+
// the same model is forwarded to session.create and promptAsync; otherwise
|
|
277
|
+
// both requests omit it so the host keeps native model inheritance.
|
|
278
278
|
let childID: string
|
|
279
279
|
try {
|
|
280
280
|
const created = await client.session.create({
|
|
@@ -310,10 +310,15 @@ export async function zeusDelegateWithRetry(
|
|
|
310
310
|
// board.waitForTerminal, not via noReply — the spike refuted noReply.
|
|
311
311
|
// A promptAsync failure is logged but does not abort the wait — the board
|
|
312
312
|
// timeout will finalize the job.
|
|
313
|
+
const promptBody = {
|
|
314
|
+
agent: opts.agent,
|
|
315
|
+
...(opts.model !== undefined ? { model: opts.model } : {}),
|
|
316
|
+
parts: [{ type: 'text' as const, text: opts.prompt }],
|
|
317
|
+
}
|
|
313
318
|
void client.session
|
|
314
319
|
.promptAsync({
|
|
315
320
|
path: childPath.path,
|
|
316
|
-
body:
|
|
321
|
+
body: promptBody,
|
|
317
322
|
})
|
|
318
323
|
.catch((err: unknown) => {
|
|
319
324
|
const reason = err instanceof Error ? err.message : String(err)
|
package/src/plugin.ts
CHANGED
|
@@ -35,6 +35,7 @@ import { createReadEnhancer } from './pantheon/hashline/read-enhancer.ts'
|
|
|
35
35
|
import { createHashlineEditTool } from './pantheon/hashline/tool.ts'
|
|
36
36
|
import { createIdleDispatcher } from './pantheon/idle-continuation.ts'
|
|
37
37
|
import { createPantheonLogger } from './pantheon/logger.ts'
|
|
38
|
+
import { createModelCommand } from './pantheon/model-command.ts'
|
|
38
39
|
import { pantheonPluginOnce } from './pantheon/plugin-once.ts'
|
|
39
40
|
import {
|
|
40
41
|
applyActivePresetToConfig,
|
|
@@ -471,6 +472,7 @@ const plugin: Plugin = async (input: PluginInput) => {
|
|
|
471
472
|
// Fully wired (unlike dispatch-guard, which is manual-orchestration-only
|
|
472
473
|
// because opencode 1.18.x cannot intercept task completion via hooks).
|
|
473
474
|
const costCommand = createCostCommand()
|
|
475
|
+
const modelCommand = createModelCommand()
|
|
474
476
|
|
|
475
477
|
return {
|
|
476
478
|
config: async (config: PluginConfig) => {
|
|
@@ -539,6 +541,8 @@ const plugin: Plugin = async (input: PluginInput) => {
|
|
|
539
541
|
pantheon_goal_get: goalTools.pantheon_goal_get,
|
|
540
542
|
// Wave 4 (PR #46): /cost — delegation cost report from opencode.db.
|
|
541
543
|
pantheon_cost: costCommand.pantheon_cost,
|
|
544
|
+
// Deterministic /pantheon-model management of top-level model fields.
|
|
545
|
+
pantheon_model: modelCommand.pantheon_model,
|
|
542
546
|
},
|
|
543
547
|
'chat.message': async (hookInput, output) => {
|
|
544
548
|
await vision.chatMessage(hookInput, output)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.d.ts","names":[],"sources":["../src/index.tsx"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"tui.d.ts","names":[],"sources":["../src/index.tsx"],"mappings":";;KAo7BY;;EAEV;;EAEA;;;;EAIA;;EAEA;EACA;;EASA;;EAEA;EACA;EACA;;EAEA;;;;EAIA;;;;;;;;;;;iBAsBc,wBACd,aACA,oBACA,qBACC;;;;;;iBAkHmB,sBAAsB,cAAc,QAAQ;;;;;;;;iBAwC5C,yBAAyB,eAAe,QAAQ;;;;;;;;iBAWtD,sBACd;EAAS;EAAoB;eAC7B;;;;;;iBAYc,YAAY;;;iBAMZ,WAAW;;;;iBAOX,yBAAyB,GAAG,iBAAiB,GAAG;;;;;iBAWhD,sBACd,cAAc,mBACd,sBACA,cACA,4BACC;;cASU;;;;cAKA;;;;;;;;;iBAUG,mBACd,OAAO,iBACP,aACA,uBACC;;;iBAWa,WAAW;;;iBAcX,kBAAkB,OAAO,iBAAiB;;;KAQ9C;iBAQI,mBAAmB,OAAO,kBAAkB;iBAc5C,wBAAwB,OAAO;;iBAoB/B,uBAAuB;;;;;;;iBAWvB,4BACd,mBAAmB,mBACnB,eAAe,wBACd;;KAmFS;EACV;EACA;EACA;EACA;EACA;EACA;IACE;IACA,QAAQ;IACR;IACA;IACA;MAAS;MAAgB;;;;;KAKjB;;EAEV;;EAEA;;EAEA;EACA;;EAEA;EACA;;EAEA;;EAEA;EACA;EACA;EACA;;EAEA;;;KAIU;EACV;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;;;;;iBAac,wBACd,MAAM,oBACN,eACC;;;iBA+Ea,yBACd,KAAK,YAAY,sBACjB,MAAM,oBACN;;;iBA+Fc,sBACd,KAAK,YAAY,sBACjB;;;;;;iBAiBc,2BACd;EAAqB;EAAa;iBAClC,YAAY,uDACX;;;;;iBA2Ba,sBACd,KAAK,YAAY,sBACjB,gBAAgB,sBAChB;;;iBAWc,kBAAkB,MAAM,sBAAsB;;;;;;iBAqB9C,uBACd,eAAe,uBACf,aAAa,oBACZ;;;;;;;;;iBA8Da,iBAAiB,cAAc;;;;KAOnC;;EAEV;EACA;;IAEE;MAAU;;;IAEV;MAAU;QAAY;QAAe,SAAS;;;;;;;;;;iBASlC,wBAAwB,SAAS;;;;;;;;iBAmBjC,gBAAgB;EAAgB;IAAQ;;;;;;;iBASxC,kBAAkB;EAAkC;IAAQ;;;;KAKhE;;EAEV;;EAEA;;;EAGA;;;EAGA;EACA;IACE;IACA;;;;;;;iBAQY,mBAAmB;;;;;iBASnB,cAAc,OAAO;;;;;;;;;;;;;;iBAiBrB,4BACd,mBAAmB,mCACnB,aAAa,mBACb,eACC;;;;;;iBA0Ca,4BACd;EAAS,YAAY,cAAc,SAAS;eAC5C;;;;;KAiLU;EACV,KAAK,YAAY;;EAEjB;;EAEA;;cAucI,QAAQ;EAAoB"}
|
|
@@ -150,7 +150,7 @@ async function resolvePresetForTui(
|
|
|
150
150
|
}
|
|
151
151
|
|
|
152
152
|
/* ─── Version Detection ────────────────────────────────────
|
|
153
|
-
* 100% dinâmico —
|
|
153
|
+
* 100% dinâmico — fallback embutido em build (__PANTHEON_VERSION__).
|
|
154
154
|
* Se falhar, retorna null e a View omite a versão.
|
|
155
155
|
*
|
|
156
156
|
* Try order:
|
|
@@ -159,7 +159,12 @@ async function resolvePresetForTui(
|
|
|
159
159
|
* 1. api.client.file.read package.json
|
|
160
160
|
* 2. git describe --tags
|
|
161
161
|
* 3. opencode --version
|
|
162
|
-
* 4.
|
|
162
|
+
* 4. __PANTHEON_VERSION__ (tsdown define — build-time embed)
|
|
163
|
+
* 5. null */
|
|
164
|
+
|
|
165
|
+
// Build-time embedded version (tsdown `define` in tsdown.config.ts). Injected
|
|
166
|
+
// only into the bundled dist/tui.js; the raw dist/tui.tsx copy falls through.
|
|
167
|
+
declare const __PANTHEON_VERSION__: string | undefined
|
|
163
168
|
|
|
164
169
|
async function detectVersion(api: TuiPluginApi): Promise<string | null> {
|
|
165
170
|
// Try 0a: installed location (2 levels: dist/tui.js → pantheon-tui/package.json)
|
|
@@ -223,6 +228,12 @@ async function detectVersion(api: TuiPluginApi): Promise<string | null> {
|
|
|
223
228
|
/* fall through */
|
|
224
229
|
}
|
|
225
230
|
|
|
231
|
+
// Try 4: build-time embedded version (tsdown define) — last-resort fallback
|
|
232
|
+
// so the sidebar ALWAYS shows a version even when every probe above fails.
|
|
233
|
+
if (typeof __PANTHEON_VERSION__ !== 'undefined' && __PANTHEON_VERSION__) {
|
|
234
|
+
return __PANTHEON_VERSION__
|
|
235
|
+
}
|
|
236
|
+
|
|
226
237
|
return null // sem fallback — versão não aparece
|
|
227
238
|
}
|
|
228
239
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pantheon-tui",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.4.
|
|
4
|
+
"version": "1.4.2",
|
|
5
5
|
"description": "Pantheon TUI plugin — sidebar (version, preset, sessions, real-time delegations) + AI subscription usage gauges incl. OpenCode Go/Zen dollar limits (vendored, MIT)",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"exports": {
|
|
@@ -150,7 +150,7 @@ async function resolvePresetForTui(
|
|
|
150
150
|
}
|
|
151
151
|
|
|
152
152
|
/* ─── Version Detection ────────────────────────────────────
|
|
153
|
-
* 100% dinâmico —
|
|
153
|
+
* 100% dinâmico — fallback embutido em build (__PANTHEON_VERSION__).
|
|
154
154
|
* Se falhar, retorna null e a View omite a versão.
|
|
155
155
|
*
|
|
156
156
|
* Try order:
|
|
@@ -159,7 +159,12 @@ async function resolvePresetForTui(
|
|
|
159
159
|
* 1. api.client.file.read package.json
|
|
160
160
|
* 2. git describe --tags
|
|
161
161
|
* 3. opencode --version
|
|
162
|
-
* 4.
|
|
162
|
+
* 4. __PANTHEON_VERSION__ (tsdown define — build-time embed)
|
|
163
|
+
* 5. null */
|
|
164
|
+
|
|
165
|
+
// Build-time embedded version (tsdown `define` in tsdown.config.ts). Injected
|
|
166
|
+
// only into the bundled dist/tui.js; the raw dist/tui.tsx copy falls through.
|
|
167
|
+
declare const __PANTHEON_VERSION__: string | undefined
|
|
163
168
|
|
|
164
169
|
async function detectVersion(api: TuiPluginApi): Promise<string | null> {
|
|
165
170
|
// Try 0a: installed location (2 levels: dist/tui.js → pantheon-tui/package.json)
|
|
@@ -223,6 +228,12 @@ async function detectVersion(api: TuiPluginApi): Promise<string | null> {
|
|
|
223
228
|
/* fall through */
|
|
224
229
|
}
|
|
225
230
|
|
|
231
|
+
// Try 4: build-time embedded version (tsdown define) — last-resort fallback
|
|
232
|
+
// so the sidebar ALWAYS shows a version even when every probe above fails.
|
|
233
|
+
if (typeof __PANTHEON_VERSION__ !== 'undefined' && __PANTHEON_VERSION__) {
|
|
234
|
+
return __PANTHEON_VERSION__
|
|
235
|
+
}
|
|
236
|
+
|
|
226
237
|
return null // sem fallback — versão não aparece
|
|
227
238
|
}
|
|
228
239
|
|
|
@@ -1,6 +1,14 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs'
|
|
2
|
+
import { join } from 'node:path'
|
|
3
|
+
import { fileURLToPath } from 'node:url'
|
|
1
4
|
import solid from 'rolldown-plugin-solid'
|
|
2
5
|
import { defineConfig } from 'tsdown'
|
|
3
6
|
|
|
7
|
+
const __dirname = fileURLToPath(new URL('.', import.meta.url))
|
|
8
|
+
const pkg = JSON.parse(readFileSync(join(__dirname, 'package.json'), 'utf8')) as {
|
|
9
|
+
version: string
|
|
10
|
+
}
|
|
11
|
+
|
|
4
12
|
export default defineConfig({
|
|
5
13
|
entry: { tui: 'src/index.tsx', server: 'src/server.ts' },
|
|
6
14
|
format: ['esm'],
|
|
@@ -8,6 +16,9 @@ export default defineConfig({
|
|
|
8
16
|
outDir: 'dist',
|
|
9
17
|
clean: true,
|
|
10
18
|
outExtensions: () => ({ js: '.js' }),
|
|
19
|
+
define: {
|
|
20
|
+
__PANTHEON_VERSION__: JSON.stringify(pkg.version),
|
|
21
|
+
},
|
|
11
22
|
plugins: [
|
|
12
23
|
solid({
|
|
13
24
|
solid: {
|
package/src/routing.yml
CHANGED
|
@@ -1,35 +1,31 @@
|
|
|
1
1
|
version: 1.0
|
|
2
2
|
presets:
|
|
3
|
-
go-
|
|
4
|
-
description: "
|
|
3
|
+
go-free:
|
|
4
|
+
description: "Free-tier lineup via OpenCode Zen 2026: big-pickle orchestrator, nemotron-3-super-free planner, qwen3.6-plus-free reviewer, deepseek-v4-flash-free implementers, mimo-v2.5-free scouts. Only -free suffix models; quota, availability and pricing depend on Zen account. 2026 pricing verified."
|
|
5
5
|
vision:
|
|
6
|
-
model: opencode
|
|
7
|
-
reasoning_effort:
|
|
6
|
+
model: opencode/mimo-v2.5-free
|
|
7
|
+
reasoning_effort: low
|
|
8
8
|
providers:
|
|
9
9
|
opencode:
|
|
10
10
|
baseURL: https://opencode.ai/zen/v1
|
|
11
11
|
apiKeyEnv: PANTHEON_OPENCODE_API_KEY
|
|
12
|
-
opencode-go:
|
|
13
|
-
baseURL: https://opencode.ai/zen/go/v1
|
|
14
|
-
apiKeyEnv: PANTHEON_OPENCODE_API_KEY
|
|
15
12
|
agents:
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
themis: { model: opencode/
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
talos: { model: opencode/deepseek-v4-flash-free, reasoning_effort: low, fallback_models: [opencode/mimo-v2.5] }
|
|
13
|
+
zeus: { model: opencode/big-pickle, reasoning_effort: medium }
|
|
14
|
+
athena: { model: opencode/nemotron-3-super-free, reasoning_effort: high }
|
|
15
|
+
themis: { model: opencode/qwen3.6-plus-free, reasoning_effort: high }
|
|
16
|
+
hermes: { model: opencode/deepseek-v4-flash-free, reasoning_effort: medium }
|
|
17
|
+
aphrodite: { model: opencode/deepseek-v4-flash-free, reasoning_effort: medium }
|
|
18
|
+
demeter: { model: opencode/deepseek-v4-flash-free, reasoning_effort: medium }
|
|
19
|
+
prometheus: { model: opencode/deepseek-v4-flash-free, reasoning_effort: medium }
|
|
20
|
+
hephaestus: { model: opencode/deepseek-v4-flash-free, reasoning_effort: medium }
|
|
21
|
+
apollo: { model: opencode/mimo-v2.5-free, reasoning_effort: low }
|
|
22
|
+
nyx: { model: opencode/mimo-v2.5-free, reasoning_effort: low }
|
|
23
|
+
gaia: { model: opencode/mimo-v2.5-free, reasoning_effort: low }
|
|
24
|
+
iris: { model: opencode/mimo-v2.5-free, reasoning_effort: low }
|
|
25
|
+
mnemosyne: { model: opencode/mimo-v2.5-free, reasoning_effort: low }
|
|
26
|
+
talos: { model: opencode/mimo-v2.5-free, reasoning_effort: low }
|
|
31
27
|
go-fast:
|
|
32
|
-
description: "
|
|
28
|
+
description: "Low-latency OpenCode Go profile 2026: kimi-k2.7-code and glm-5.3-flash planners, gpt-5.6-luna / mimo-v2.5 / deepseek-v4-flash implementers, gpt-5.6-luna-fast scouts. All via Go gateway https://opencode.ai/zen/go/v1. Pricing 2026."
|
|
33
29
|
vision:
|
|
34
30
|
model: opencode-go/mimo-v2.5
|
|
35
31
|
reasoning_effort: low
|
|
@@ -38,116 +34,68 @@ presets:
|
|
|
38
34
|
baseURL: https://opencode.ai/zen/go/v1
|
|
39
35
|
apiKeyEnv: PANTHEON_OPENCODE_API_KEY
|
|
40
36
|
agents:
|
|
41
|
-
athena: { model: opencode-go/
|
|
42
|
-
themis: { model: opencode-go/
|
|
43
|
-
zeus: { model: opencode-go/
|
|
44
|
-
hermes: { model: opencode-go/deepseek-v4-flash,
|
|
45
|
-
aphrodite: { model: opencode-go/
|
|
46
|
-
demeter: { model: opencode-go/
|
|
47
|
-
prometheus: { model: opencode-go/deepseek-v4-flash,
|
|
48
|
-
hephaestus: { model: opencode-go/
|
|
49
|
-
apollo: { model: opencode-go/
|
|
50
|
-
nyx: { model: opencode-go/
|
|
51
|
-
gaia: { model: opencode-go/
|
|
52
|
-
iris: { model: opencode-go/
|
|
53
|
-
mnemosyne: { model: opencode-go/
|
|
54
|
-
talos: { model: opencode-go/
|
|
55
|
-
go-claude:
|
|
56
|
-
description: "Anthropic Claude tiering: Opus 4.8 for planners/reviewers, Sonnet 5 for implementers, Haiku 4.5 for scouts. Vision turns route to Sonnet 5 (native image support). Prices verified 2026-07."
|
|
57
|
-
vision:
|
|
58
|
-
model: anthropic/claude-sonnet-5
|
|
59
|
-
reasoning_effort: medium
|
|
60
|
-
providers:
|
|
61
|
-
anthropic:
|
|
62
|
-
baseURL: https://api.anthropic.com
|
|
63
|
-
apiKeyEnv: PANTHEON_ANTHROPIC_API_KEY
|
|
64
|
-
agents:
|
|
65
|
-
athena: { model: anthropic/claude-opus-4-8, reasoning_effort: high }
|
|
66
|
-
themis: { model: anthropic/claude-opus-4-8, reasoning_effort: high }
|
|
67
|
-
zeus: { model: anthropic/claude-sonnet-5, reasoning_effort: medium }
|
|
68
|
-
hermes: { model: anthropic/claude-sonnet-5, reasoning_effort: medium }
|
|
69
|
-
aphrodite: { model: anthropic/claude-sonnet-5, reasoning_effort: medium }
|
|
70
|
-
demeter: { model: anthropic/claude-sonnet-5, reasoning_effort: medium }
|
|
71
|
-
prometheus: { model: anthropic/claude-sonnet-5, reasoning_effort: medium }
|
|
72
|
-
hephaestus: { model: anthropic/claude-sonnet-5, reasoning_effort: medium }
|
|
73
|
-
apollo: { model: anthropic/claude-haiku-4-5, reasoning_effort: low }
|
|
74
|
-
nyx: { model: anthropic/claude-haiku-4-5, reasoning_effort: low }
|
|
75
|
-
gaia: { model: anthropic/claude-haiku-4-5, reasoning_effort: low }
|
|
76
|
-
iris: { model: anthropic/claude-haiku-4-5, reasoning_effort: low }
|
|
77
|
-
mnemosyne: { model: anthropic/claude-haiku-4-5, reasoning_effort: low }
|
|
78
|
-
talos: { model: anthropic/claude-haiku-4-5, reasoning_effort: low }
|
|
79
|
-
go-openai:
|
|
80
|
-
description: "OpenAI GPT-5.6 family tiering: Sol for planners/reviewers, Terra for implementers, Luna Fast for scouts. Vision turns route to GPT-5.6 Sol. Prices verified 2026-07."
|
|
81
|
-
vision:
|
|
82
|
-
model: openai/gpt-5.6-sol
|
|
83
|
-
reasoning_effort: high
|
|
84
|
-
providers:
|
|
85
|
-
openai:
|
|
86
|
-
baseURL: https://api.openai.com/v1
|
|
87
|
-
apiKeyEnv: PANTHEON_OPENAI_API_KEY
|
|
88
|
-
agents:
|
|
89
|
-
athena: { model: openai/gpt-5.6-sol, reasoning_effort: high }
|
|
90
|
-
themis: { model: openai/gpt-5.6-sol, reasoning_effort: high }
|
|
91
|
-
zeus: { model: openai/gpt-5.6-terra, reasoning_effort: medium }
|
|
92
|
-
hermes: { model: openai/gpt-5.6-terra, reasoning_effort: medium }
|
|
93
|
-
aphrodite: { model: openai/gpt-5.6-terra, reasoning_effort: medium }
|
|
94
|
-
demeter: { model: openai/gpt-5.6-terra, reasoning_effort: medium }
|
|
95
|
-
prometheus: { model: openai/gpt-5.6-terra, reasoning_effort: medium }
|
|
96
|
-
hephaestus: { model: openai/gpt-5.6-terra, reasoning_effort: medium }
|
|
97
|
-
apollo: { model: openai/gpt-5.6-luna-fast, reasoning_effort: low }
|
|
98
|
-
nyx: { model: openai/gpt-5.6-luna-fast, reasoning_effort: low }
|
|
99
|
-
gaia: { model: openai/gpt-5.6-luna-fast, reasoning_effort: low }
|
|
100
|
-
iris: { model: openai/gpt-5.6-luna-fast, reasoning_effort: low }
|
|
101
|
-
mnemosyne: { model: openai/gpt-5.6-luna-fast, reasoning_effort: low }
|
|
102
|
-
talos: { model: openai/gpt-5.6-luna-fast, reasoning_effort: low }
|
|
37
|
+
athena: { model: opencode-go/kimi-k2.7-code, reasoning_effort: high }
|
|
38
|
+
themis: { model: opencode-go/glm-5.3-flash, reasoning_effort: high }
|
|
39
|
+
zeus: { model: opencode-go/kimi-k2.7-code, reasoning_effort: medium }
|
|
40
|
+
hermes: { model: opencode-go/deepseek-v4-flash, reasoning_effort: medium }
|
|
41
|
+
aphrodite: { model: opencode-go/mimo-v2.5, reasoning_effort: low }
|
|
42
|
+
demeter: { model: opencode-go/gpt-5.6-luna, reasoning_effort: low }
|
|
43
|
+
prometheus: { model: opencode-go/deepseek-v4-flash, reasoning_effort: medium }
|
|
44
|
+
hephaestus: { model: opencode-go/mimo-v2.5, reasoning_effort: low }
|
|
45
|
+
apollo: { model: opencode-go/gpt-5.6-luna-fast, reasoning_effort: low }
|
|
46
|
+
nyx: { model: opencode-go/gpt-5.6-luna-fast, reasoning_effort: low }
|
|
47
|
+
gaia: { model: opencode-go/gpt-5.6-luna-fast, reasoning_effort: low }
|
|
48
|
+
iris: { model: opencode-go/gpt-5.6-luna-fast, reasoning_effort: low }
|
|
49
|
+
mnemosyne: { model: opencode-go/gpt-5.6-luna-fast, reasoning_effort: low }
|
|
50
|
+
talos: { model: opencode-go/gpt-5.6-luna-fast, reasoning_effort: low }
|
|
103
51
|
go-premium:
|
|
104
|
-
description: "
|
|
52
|
+
description: "Premium lineup on OpenCode Go 2026: gpt-5.6-sol / qwen3.8-max / deepseek-v4-pro planners, gpt-5.6-terra / kimi-k3 implementers, gpt-5.6-luna scouts. Vision via gpt-5.6-sol. Pricing 2026."
|
|
105
53
|
vision:
|
|
106
|
-
model: opencode-go/
|
|
107
|
-
reasoning_effort:
|
|
54
|
+
model: opencode-go/gpt-5.6-sol
|
|
55
|
+
reasoning_effort: high
|
|
108
56
|
providers:
|
|
109
57
|
opencode-go:
|
|
110
58
|
baseURL: https://opencode.ai/zen/go/v1
|
|
111
59
|
apiKeyEnv: PANTHEON_OPENCODE_API_KEY
|
|
112
60
|
agents:
|
|
113
|
-
zeus: { model: opencode-go/
|
|
114
|
-
athena: { model: opencode-go/deepseek-v4-pro,
|
|
115
|
-
themis: { model: opencode-go/qwen3.
|
|
116
|
-
hermes: { model: opencode-go/
|
|
117
|
-
aphrodite: { model: opencode-go/kimi-
|
|
118
|
-
demeter: { model: opencode-go/
|
|
119
|
-
prometheus: { model: opencode-go/
|
|
120
|
-
hephaestus: { model: opencode-go/
|
|
121
|
-
apollo: { model: opencode-go/
|
|
122
|
-
nyx: { model: opencode-go/
|
|
123
|
-
gaia: { model: opencode-go/
|
|
124
|
-
iris: { model: opencode-go/
|
|
125
|
-
mnemosyne: { model: opencode-go/
|
|
126
|
-
talos: { model: opencode-go/
|
|
127
|
-
|
|
128
|
-
description: "
|
|
61
|
+
zeus: { model: opencode-go/gpt-5.6-sol, reasoning_effort: medium }
|
|
62
|
+
athena: { model: opencode-go/deepseek-v4-pro, reasoning_effort: high }
|
|
63
|
+
themis: { model: opencode-go/qwen3.8-max, reasoning_effort: high }
|
|
64
|
+
hermes: { model: opencode-go/gpt-5.6-terra, reasoning_effort: medium }
|
|
65
|
+
aphrodite: { model: opencode-go/kimi-k3, reasoning_effort: medium }
|
|
66
|
+
demeter: { model: opencode-go/gpt-5.6-terra, reasoning_effort: medium }
|
|
67
|
+
prometheus: { model: opencode-go/kimi-k3, reasoning_effort: medium }
|
|
68
|
+
hephaestus: { model: opencode-go/gpt-5.6-terra, reasoning_effort: medium }
|
|
69
|
+
apollo: { model: opencode-go/gpt-5.6-luna, reasoning_effort: low }
|
|
70
|
+
nyx: { model: opencode-go/gpt-5.6-luna, reasoning_effort: low }
|
|
71
|
+
gaia: { model: opencode-go/gpt-5.6-luna, reasoning_effort: low }
|
|
72
|
+
iris: { model: opencode-go/gpt-5.6-luna, reasoning_effort: low }
|
|
73
|
+
mnemosyne: { model: opencode-go/gpt-5.6-luna, reasoning_effort: low }
|
|
74
|
+
talos: { model: opencode-go/gpt-5.6-luna, reasoning_effort: low }
|
|
75
|
+
openai:
|
|
76
|
+
description: "Pure OpenAI provider 2026: gpt-5.6-sol planners high, gpt-5.6-luna implementers high, gpt-5.6-luna-fast scouts low (fallback to luna low). Provider openai https://api.openai.com/v1 OPENAI_API_KEY. Pricing 2026."
|
|
129
77
|
vision:
|
|
130
|
-
model:
|
|
131
|
-
reasoning_effort:
|
|
78
|
+
model: openai/gpt-5.6-sol
|
|
79
|
+
reasoning_effort: high
|
|
132
80
|
providers:
|
|
133
|
-
|
|
134
|
-
baseURL: https://
|
|
135
|
-
apiKeyEnv:
|
|
81
|
+
openai:
|
|
82
|
+
baseURL: https://api.openai.com/v1
|
|
83
|
+
apiKeyEnv: OPENAI_API_KEY
|
|
136
84
|
agents:
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
hermes: { model:
|
|
141
|
-
aphrodite: { model:
|
|
142
|
-
demeter: { model:
|
|
143
|
-
prometheus: { model:
|
|
144
|
-
hephaestus: { model:
|
|
145
|
-
apollo: { model:
|
|
146
|
-
nyx: { model:
|
|
147
|
-
gaia: { model:
|
|
148
|
-
iris: { model:
|
|
149
|
-
mnemosyne: { model:
|
|
150
|
-
talos: { model:
|
|
85
|
+
athena: { model: openai/gpt-5.6-sol, reasoning_effort: high }
|
|
86
|
+
themis: { model: openai/gpt-5.6-sol, reasoning_effort: high }
|
|
87
|
+
zeus: { model: openai/gpt-5.6-sol, reasoning_effort: high }
|
|
88
|
+
hermes: { model: openai/gpt-5.6-luna, reasoning_effort: high }
|
|
89
|
+
aphrodite: { model: openai/gpt-5.6-luna, reasoning_effort: high }
|
|
90
|
+
demeter: { model: openai/gpt-5.6-luna, reasoning_effort: high }
|
|
91
|
+
prometheus: { model: openai/gpt-5.6-luna, reasoning_effort: high }
|
|
92
|
+
hephaestus: { model: openai/gpt-5.6-luna, reasoning_effort: high }
|
|
93
|
+
apollo: { model: openai/gpt-5.6-luna-fast, reasoning_effort: low }
|
|
94
|
+
nyx: { model: openai/gpt-5.6-luna-fast, reasoning_effort: low }
|
|
95
|
+
gaia: { model: openai/gpt-5.6-luna-fast, reasoning_effort: low }
|
|
96
|
+
iris: { model: openai/gpt-5.6-luna-fast, reasoning_effort: low }
|
|
97
|
+
mnemosyne: { model: openai/gpt-5.6-luna-fast, reasoning_effort: low }
|
|
98
|
+
talos: { model: openai/gpt-5.6-luna-fast, reasoning_effort: low }
|
|
151
99
|
agents:
|
|
152
100
|
zeus:
|
|
153
101
|
role: Central orchestrator
|