takomi 2.1.42 → 2.1.43
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.
|
@@ -41,12 +41,12 @@ The extension ships with two default upstream profiles:
|
|
|
41
41
|
- auth mode: OAuth
|
|
42
42
|
- oauth provider: `openai-codex`
|
|
43
43
|
- api: `openai-codex-responses`
|
|
44
|
-
- default models: `gpt-5.
|
|
44
|
+
- default models: `gpt-5.4-mini`, `gpt-5.4`, `gpt-5.5`, `gpt-5.6-luna`, `gpt-5.6-sol`, `gpt-5.6-terra`
|
|
45
45
|
|
|
46
46
|
2. `openai-compatible`
|
|
47
47
|
- auth mode: API key fallback
|
|
48
48
|
- api: `openai-responses`
|
|
49
|
-
- default models: `gpt-
|
|
49
|
+
- default models: `gpt-5.4-mini`, `gpt-5.4`, `gpt-5.5`, `gpt-5.6-luna`, `gpt-5.6-sol`, `gpt-5.6-terra`
|
|
50
50
|
|
|
51
51
|
Edit `~/.pi/agent/oauth-router/config.json` to add more upstreams, swap endpoints, change model catalogs, or tune retry behavior. By default client-side transport failures such as `Codex SSE response headers timed out after 10000ms` retry the same account 5 times with exponential backoff (`5s`, `10s`, `20s`, `40s`, then capped at `60s`) before router failover. While this is happening, Pi's footer shows the active retry/failover/error state so the UI no longer looks frozen. These failures are recorded but do not cool down an account unless `clientNetworkPenaltyMs` is set above `0`.
|
|
52
52
|
|
|
@@ -62,8 +62,7 @@ Edit `~/.pi/agent/oauth-router/config.json` to add more upstreams, swap endpoint
|
|
|
62
62
|
- `/router-status`
|
|
63
63
|
- `/router-usage`
|
|
64
64
|
5. Select a model:
|
|
65
|
-
- `oauth-router/gpt-5.
|
|
66
|
-
- `oauth-router/gpt-4o`
|
|
65
|
+
- `oauth-router/gpt-5.6-sol`
|
|
67
66
|
|
|
68
67
|
## Account storage format
|
|
69
68
|
|
|
@@ -11,69 +11,60 @@ export const STATE_PATH = join(DATA_ROOT, "state.json");
|
|
|
11
11
|
|
|
12
12
|
const LEGACY_CODEX_CONTEXT_WINDOW = 272000;
|
|
13
13
|
const SAFE_CODEX_CONTEXT_WINDOW = 240000;
|
|
14
|
-
const CODEX_MODEL_IDS = new Set(["gpt-5.
|
|
14
|
+
const CODEX_MODEL_IDS = new Set(["gpt-5.4", "gpt-5.4-mini", "gpt-5.5", "gpt-5.6-luna", "gpt-5.6-sol", "gpt-5.6-terra"]);
|
|
15
15
|
|
|
16
16
|
const DEFAULT_MODELS: RouterModelConfig[] = [
|
|
17
17
|
{
|
|
18
|
-
id: "gpt-
|
|
19
|
-
name: "GPT-
|
|
20
|
-
reasoning:
|
|
21
|
-
input: ["text", "image"],
|
|
22
|
-
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
23
|
-
contextWindow: 128000,
|
|
24
|
-
maxTokens: 16384,
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
id: "gpt-4.1",
|
|
28
|
-
name: "GPT-4.1",
|
|
29
|
-
reasoning: false,
|
|
18
|
+
id: "gpt-5.4-mini",
|
|
19
|
+
name: "GPT-5.4 Mini",
|
|
20
|
+
reasoning: true,
|
|
30
21
|
input: ["text", "image"],
|
|
31
|
-
cost: { input: 0, output:
|
|
32
|
-
contextWindow:
|
|
33
|
-
maxTokens:
|
|
22
|
+
cost: { input: 0.75, output: 4.50, cacheRead: 0.075, cacheWrite: 0.9375 },
|
|
23
|
+
contextWindow: SAFE_CODEX_CONTEXT_WINDOW,
|
|
24
|
+
maxTokens: 128000,
|
|
34
25
|
},
|
|
35
26
|
{
|
|
36
|
-
id: "
|
|
37
|
-
name: "
|
|
27
|
+
id: "gpt-5.4",
|
|
28
|
+
name: "GPT-5.4",
|
|
38
29
|
reasoning: true,
|
|
39
30
|
input: ["text", "image"],
|
|
40
|
-
cost: { input:
|
|
41
|
-
contextWindow:
|
|
42
|
-
maxTokens:
|
|
31
|
+
cost: { input: 2.50, output: 15.00, cacheRead: 0.25, cacheWrite: 3.125 },
|
|
32
|
+
contextWindow: SAFE_CODEX_CONTEXT_WINDOW,
|
|
33
|
+
maxTokens: 128000,
|
|
43
34
|
},
|
|
44
35
|
{
|
|
45
|
-
id: "gpt-5.
|
|
46
|
-
name: "GPT-5.
|
|
36
|
+
id: "gpt-5.5",
|
|
37
|
+
name: "GPT-5.5",
|
|
47
38
|
reasoning: true,
|
|
48
39
|
input: ["text", "image"],
|
|
49
|
-
cost: { input:
|
|
40
|
+
cost: { input: 5.00, output: 30.00, cacheRead: 0.50, cacheWrite: 6.25 },
|
|
50
41
|
contextWindow: SAFE_CODEX_CONTEXT_WINDOW,
|
|
51
42
|
maxTokens: 128000,
|
|
52
43
|
},
|
|
53
44
|
{
|
|
54
|
-
id: "gpt-5.
|
|
55
|
-
name: "GPT-5.
|
|
45
|
+
id: "gpt-5.6-luna",
|
|
46
|
+
name: "GPT-5.6 Luna",
|
|
56
47
|
reasoning: true,
|
|
57
48
|
input: ["text", "image"],
|
|
58
|
-
cost: { input:
|
|
49
|
+
cost: { input: 1.00, output: 6.00, cacheRead: 0.10, cacheWrite: 1.25 },
|
|
59
50
|
contextWindow: SAFE_CODEX_CONTEXT_WINDOW,
|
|
60
51
|
maxTokens: 128000,
|
|
61
52
|
},
|
|
62
53
|
{
|
|
63
|
-
id: "gpt-5.
|
|
64
|
-
name: "GPT-5.
|
|
54
|
+
id: "gpt-5.6-sol",
|
|
55
|
+
name: "GPT-5.6 Sol",
|
|
65
56
|
reasoning: true,
|
|
66
57
|
input: ["text", "image"],
|
|
67
|
-
cost: { input:
|
|
58
|
+
cost: { input: 5.00, output: 30.00, cacheRead: 0.50, cacheWrite: 6.25 },
|
|
68
59
|
contextWindow: SAFE_CODEX_CONTEXT_WINDOW,
|
|
69
60
|
maxTokens: 128000,
|
|
70
61
|
},
|
|
71
62
|
{
|
|
72
|
-
id: "gpt-5.
|
|
73
|
-
name: "GPT-5.
|
|
63
|
+
id: "gpt-5.6-terra",
|
|
64
|
+
name: "GPT-5.6 Terra",
|
|
74
65
|
reasoning: true,
|
|
75
66
|
input: ["text", "image"],
|
|
76
|
-
cost: { input:
|
|
67
|
+
cost: { input: 2.50, output: 15.00, cacheRead: 0.25, cacheWrite: 3.125 },
|
|
77
68
|
contextWindow: SAFE_CODEX_CONTEXT_WINDOW,
|
|
78
69
|
maxTokens: 128000,
|
|
79
70
|
},
|
|
@@ -88,7 +79,7 @@ const DEFAULT_UPSTREAMS: RouterUpstreamConfig[] = [
|
|
|
88
79
|
api: "openai-responses",
|
|
89
80
|
authMode: "api-key",
|
|
90
81
|
enabled: true,
|
|
91
|
-
modelIds: ["gpt-
|
|
82
|
+
modelIds: ["gpt-5.4-mini", "gpt-5.4", "gpt-5.5", "gpt-5.6-luna", "gpt-5.6-sol", "gpt-5.6-terra"],
|
|
92
83
|
},
|
|
93
84
|
{
|
|
94
85
|
id: "chatgpt-codex",
|
|
@@ -99,7 +90,7 @@ const DEFAULT_UPSTREAMS: RouterUpstreamConfig[] = [
|
|
|
99
90
|
authMode: "oauth",
|
|
100
91
|
oauthProviderId: "openai-codex",
|
|
101
92
|
enabled: true,
|
|
102
|
-
modelIds: ["gpt-5.
|
|
93
|
+
modelIds: ["gpt-5.4-mini", "gpt-5.4", "gpt-5.5", "gpt-5.6-luna", "gpt-5.6-sol", "gpt-5.6-terra"],
|
|
103
94
|
usageProbe: {
|
|
104
95
|
enabled: true,
|
|
105
96
|
timeoutMs: 8_000,
|
|
@@ -209,8 +200,12 @@ function mergeModelConfigs(candidateModels: RouterModelConfig[] | undefined): Ro
|
|
|
209
200
|
return deepClone(DEFAULT_CONFIG.models);
|
|
210
201
|
}
|
|
211
202
|
|
|
203
|
+
const defaultIds = new Set(DEFAULT_CONFIG.models.map((m) => m.id));
|
|
212
204
|
const merged = new Map(DEFAULT_CONFIG.models.map((model) => [model.id, deepClone(model)]));
|
|
213
205
|
for (const model of candidateModels) {
|
|
206
|
+
if (!defaultIds.has(model.id)) {
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
214
209
|
const previous = merged.get(model.id) ?? ({} as RouterModelConfig);
|
|
215
210
|
merged.set(model.id, { ...previous, ...deepClone(model), id: model.id });
|
|
216
211
|
}
|
|
@@ -227,6 +222,7 @@ function mergeUpstreamConfigs(candidateUpstreams: RouterUpstreamConfig[] | undef
|
|
|
227
222
|
return deepClone(DEFAULT_CONFIG.upstreams);
|
|
228
223
|
}
|
|
229
224
|
|
|
225
|
+
const defaultModelIds = new Set(DEFAULT_CONFIG.models.map((m) => m.id));
|
|
230
226
|
const merged = new Map(DEFAULT_CONFIG.upstreams.map((upstream) => [upstream.id, deepClone(upstream)]));
|
|
231
227
|
for (const upstream of candidateUpstreams) {
|
|
232
228
|
const previous = merged.get(upstream.id);
|
|
@@ -235,7 +231,8 @@ function mergeUpstreamConfigs(candidateUpstreams: RouterUpstreamConfig[] | undef
|
|
|
235
231
|
continue;
|
|
236
232
|
}
|
|
237
233
|
|
|
238
|
-
const modelIds = Array.from(new Set([...(previous.modelIds ?? []), ...(upstream.modelIds ?? [])]))
|
|
234
|
+
const modelIds = Array.from(new Set([...(previous.modelIds ?? []), ...(upstream.modelIds ?? [])]))
|
|
235
|
+
.filter((id) => defaultModelIds.has(id));
|
|
239
236
|
const usageProbe = {
|
|
240
237
|
...(previous.usageProbe ?? {}),
|
|
241
238
|
...(upstream.usageProbe ?? {}),
|
|
@@ -21,7 +21,7 @@ REQUIRED = [
|
|
|
21
21
|
ROOT / "types.ts",
|
|
22
22
|
ROOT / "README.md",
|
|
23
23
|
]
|
|
24
|
-
EXPECTED_MODELS = ["oauth-router", "gpt-
|
|
24
|
+
EXPECTED_MODELS = ["oauth-router", "gpt-5.4-mini", "gpt-5.4", "gpt-5.5", "gpt-5.6-luna", "gpt-5.6-sol", "gpt-5.6-terra"]
|
|
25
25
|
PI_CANDIDATES = [
|
|
26
26
|
os.environ.get("PI_BIN"),
|
|
27
27
|
shutil.which("pi"),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "takomi",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.43",
|
|
4
4
|
"description": "🎯 Stop wrestling with AI. Start building with purpose. The artisan's toolkit for agent workflows, Codex skills, and original Takomi capabilities like 21st.dev integration.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
package/src/takomi-stats.js
CHANGED
|
@@ -17,6 +17,9 @@ const pc = {
|
|
|
17
17
|
};
|
|
18
18
|
|
|
19
19
|
const PRICES = {
|
|
20
|
+
'gpt-5.6-luna': [1.00, 0.10, 6.00],
|
|
21
|
+
'gpt-5.6-sol': [5.00, 0.50, 30.00],
|
|
22
|
+
'gpt-5.6-terra': [2.50, 0.25, 15.00],
|
|
20
23
|
'gpt-5.5': [5.00, 0.50, 30.00],
|
|
21
24
|
'gpt-5.4': [2.50, 0.25, 15.00],
|
|
22
25
|
'gpt-5.4-mini': [0.75, 0.075, 4.50],
|