@diegopetrucci/pi-extensions 0.1.55 → 0.1.57
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/.pi-fleet-tested-version +1 -1
- package/README.md +2 -2
- package/extensions/agent-workflow-audit/.pi-fleet-tested-version +1 -1
- package/extensions/agent-workflow-audit/package.json +1 -1
- package/extensions/annotate-git-diff/.pi-fleet-tested-version +1 -1
- package/extensions/annotate-git-diff/package.json +2 -2
- package/extensions/annotate-last-message/.pi-fleet-tested-version +1 -1
- package/extensions/annotate-last-message/package.json +1 -1
- package/extensions/brrr/.pi-fleet-tested-version +1 -1
- package/extensions/brrr/README.md +3 -3
- package/extensions/brrr/index.ts +26 -6
- package/extensions/brrr/package.json +1 -1
- package/extensions/claude-fast/.pi-fleet-tested-version +1 -1
- package/extensions/claude-fast/README.md +3 -3
- package/extensions/claude-fast/index.ts +1 -2
- package/extensions/claude-fast/package.json +1 -1
- package/extensions/code-reviewer/.pi-fleet-tested-version +1 -1
- package/extensions/code-reviewer/index.ts +27 -19
- package/extensions/code-reviewer/package.json +1 -1
- package/extensions/confirm-destructive/.pi-fleet-tested-version +1 -1
- package/extensions/confirm-destructive/package.json +1 -1
- package/extensions/context-cap/.pi-fleet-tested-version +1 -1
- package/extensions/context-cap/package.json +1 -1
- package/extensions/context-inspector/.pi-fleet-tested-version +1 -1
- package/extensions/context-inspector/README.md +4 -2
- package/extensions/context-inspector/index.ts +10 -4
- package/extensions/context-inspector/package.json +1 -1
- package/extensions/contrarian/.pi-fleet-tested-version +1 -1
- package/extensions/contrarian/index.ts +96 -92
- package/extensions/contrarian/package.json +1 -1
- package/extensions/dirty-repo-guard/.pi-fleet-tested-version +1 -1
- package/extensions/dirty-repo-guard/package.json +1 -1
- package/extensions/dynamic-context-pruning/.pi-fleet-tested-version +1 -1
- package/extensions/dynamic-context-pruning/package.json +1 -1
- package/extensions/git-footer/.pi-fleet-tested-version +1 -1
- package/extensions/git-footer/package.json +1 -1
- package/extensions/gnosis/.pi-fleet-tested-version +1 -1
- package/extensions/gnosis/package.json +1 -1
- package/extensions/illustrations-to-explain-things/.pi-fleet-tested-version +1 -1
- package/extensions/illustrations-to-explain-things/package.json +1 -1
- package/extensions/inline-bash/.pi-fleet-tested-version +1 -1
- package/extensions/inline-bash/package.json +1 -1
- package/extensions/librarian/.pi-fleet-tested-version +1 -1
- package/extensions/librarian/README.md +1 -1
- package/extensions/librarian/index.ts +39 -8
- package/extensions/librarian/package.json +1 -1
- package/extensions/minimal-footer/.pi-fleet-tested-version +1 -1
- package/extensions/minimal-footer/README.md +3 -3
- package/extensions/minimal-footer/index.ts +1 -1
- package/extensions/minimal-footer/package.json +1 -1
- package/extensions/notify/.pi-fleet-tested-version +1 -1
- package/extensions/notify/README.md +3 -3
- package/extensions/notify/index.ts +4 -6
- package/extensions/notify/package.json +1 -1
- package/extensions/openai-fast/.pi-fleet-tested-version +1 -1
- package/extensions/openai-fast/README.md +5 -5
- package/extensions/openai-fast/index.ts +11 -5
- package/extensions/openai-fast/package.json +2 -2
- package/extensions/oracle/.pi-fleet-tested-version +1 -1
- package/extensions/oracle/index.ts +97 -90
- package/extensions/oracle/package.json +1 -1
- package/extensions/permission-gate/.pi-fleet-tested-version +1 -1
- package/extensions/permission-gate/README.md +11 -4
- package/extensions/permission-gate/index.ts +156 -17
- package/extensions/permission-gate/package.json +5 -3
- package/extensions/quiet-tools/.pi-fleet-tested-version +1 -1
- package/extensions/quiet-tools/package.json +1 -1
- package/extensions/review/.pi-fleet-tested-version +1 -1
- package/extensions/review/README.md +1 -1
- package/extensions/review/index.ts +4 -4
- package/extensions/review/package.json +1 -1
- package/extensions/todo/.pi-fleet-tested-version +1 -1
- package/extensions/todo/package.json +1 -1
- package/extensions/triage-comments/.pi-fleet-tested-version +1 -1
- package/extensions/triage-comments/package.json +1 -1
- package/package.json +9 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
0.80.
|
|
1
|
+
0.80.6
|
|
@@ -89,10 +89,10 @@ Then reload pi:
|
|
|
89
89
|
|
|
90
90
|
Config files are merged, with project config overriding global config:
|
|
91
91
|
|
|
92
|
-
-
|
|
93
|
-
- `<project
|
|
92
|
+
- `~/<pi-config-dir>/agent/extensions/minimal-footer.json`
|
|
93
|
+
- `<project>/<pi-config-dir>/minimal-footer.json`
|
|
94
94
|
|
|
95
|
-
Project config is only read after Pi reports that the project is trusted.
|
|
95
|
+
Here `<pi-config-dir>` is Pi's runtime config directory name (`CONFIG_DIR_NAME`; `.pi` by default). Project config is only read after Pi reports that the project is trusted.
|
|
96
96
|
|
|
97
97
|
A ready-to-copy sample file is included at [`minimal-footer.example.json`](./minimal-footer.example.json).
|
|
98
98
|
|
|
@@ -3,6 +3,7 @@ import { spawn } from "node:child_process";
|
|
|
3
3
|
import { basename, dirname, join } from "node:path";
|
|
4
4
|
import {
|
|
5
5
|
AuthStorage,
|
|
6
|
+
CONFIG_DIR_NAME,
|
|
6
7
|
getAgentDir,
|
|
7
8
|
type ExtensionAPI,
|
|
8
9
|
type ExtensionContext,
|
|
@@ -15,7 +16,6 @@ import {
|
|
|
15
16
|
type UsageSnapshot,
|
|
16
17
|
} from "./openai-usage";
|
|
17
18
|
|
|
18
|
-
const CONFIG_DIR_NAME = ".pi";
|
|
19
19
|
|
|
20
20
|
const DEFAULT_CONFIG: MinimalFooterConfig = {
|
|
21
21
|
context: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
0.80.
|
|
1
|
+
0.80.6
|
|
@@ -64,10 +64,10 @@ Then reload pi:
|
|
|
64
64
|
|
|
65
65
|
Config files are merged, with project config overriding global config:
|
|
66
66
|
|
|
67
|
-
-
|
|
68
|
-
- `<project
|
|
67
|
+
- `~/<pi-config-dir>/agent/extensions/notify.json`
|
|
68
|
+
- `<project>/<pi-config-dir>/notify.json`
|
|
69
69
|
|
|
70
|
-
Project config is only read after Pi reports that the project is trusted.
|
|
70
|
+
Here `<pi-config-dir>` is Pi's runtime config directory name (`CONFIG_DIR_NAME`; `.pi` by default). Project config is only read after Pi reports that the project is trusted.
|
|
71
71
|
|
|
72
72
|
A ready-to-copy sample file is included at [`notify.example.json`](./notify.example.json).
|
|
73
73
|
|
|
@@ -9,17 +9,15 @@
|
|
|
9
9
|
* - sound playback
|
|
10
10
|
*
|
|
11
11
|
* Config files (project overrides global):
|
|
12
|
-
* -
|
|
13
|
-
* - <cwd
|
|
12
|
+
* - ~/<pi-config-dir>/agent/extensions/notify.json
|
|
13
|
+
* - <cwd>/<pi-config-dir>/notify.json, when the project is trusted
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
16
|
import { execFile } from "node:child_process";
|
|
17
17
|
import { existsSync, readFileSync } from "node:fs";
|
|
18
18
|
import { join } from "node:path";
|
|
19
19
|
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
20
|
-
import { getAgentDir } from "@earendil-works/pi-coding-agent";
|
|
21
|
-
|
|
22
|
-
const CONFIG_DIR_NAME = ".pi";
|
|
20
|
+
import { CONFIG_DIR_NAME, getAgentDir } from "@earendil-works/pi-coding-agent";
|
|
23
21
|
|
|
24
22
|
type TerminalBackend = "auto" | "osc777" | "osc99" | "none";
|
|
25
23
|
type DesktopBackend = "auto" | "macos" | "linux" | "windows-toast" | "none";
|
|
@@ -257,7 +255,7 @@ async function playSound(config: NotifyConfig, backend: Exclude<SoundBackend, "a
|
|
|
257
255
|
}
|
|
258
256
|
|
|
259
257
|
export default function notifyExtension(pi: ExtensionAPI) {
|
|
260
|
-
pi.on("
|
|
258
|
+
pi.on("agent_settled", async (_event, ctx) => {
|
|
261
259
|
const config = loadConfig(ctx);
|
|
262
260
|
if (!config.enabled) return;
|
|
263
261
|
if (config.onlyWhenInteractive && !ctx.hasUI) return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
0.80.
|
|
1
|
+
0.80.6
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# openai-fast
|
|
2
2
|
|
|
3
|
-
A pi extension that enables OpenAI Codex Fast mode for ChatGPT-auth GPT-5.4 and GPT-5.5.
|
|
3
|
+
A pi extension that enables OpenAI Codex Fast mode for ChatGPT-auth GPT-5.4, GPT-5.5, and GPT-5.6 Codex variants (`gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-5.6-luna`).
|
|
4
4
|
|
|
5
5
|
When active, the extension injects this into eligible OpenAI Codex request payloads:
|
|
6
6
|
|
|
@@ -18,7 +18,7 @@ Fast mode is only injected when all of these are true:
|
|
|
18
18
|
|
|
19
19
|
- The current provider is `openai-codex`.
|
|
20
20
|
- The current API is `openai-codex-responses`.
|
|
21
|
-
- The current model is `gpt-5.4` or `gpt-5.
|
|
21
|
+
- The current model is `gpt-5.4`, `gpt-5.5`, `gpt-5.6-sol`, `gpt-5.6-terra`, or `gpt-5.6-luna`.
|
|
22
22
|
- The provider is using ChatGPT OAuth/subscription auth, not API-key auth.
|
|
23
23
|
- The request payload does not already include `service_tier`.
|
|
24
24
|
|
|
@@ -37,16 +37,16 @@ The extension defaults to off so installing the full collection does not acciden
|
|
|
37
37
|
Optional global config:
|
|
38
38
|
|
|
39
39
|
```text
|
|
40
|
-
|
|
40
|
+
~/<pi-config-dir>/agent/extensions/openai-fast.json
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
Optional project config:
|
|
44
44
|
|
|
45
45
|
```text
|
|
46
|
-
|
|
46
|
+
<project>/<pi-config-dir>/openai-fast.json
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
-
Project config overrides global config after Pi reports that the project is trusted.
|
|
49
|
+
Here `<pi-config-dir>` is Pi's runtime config directory name (`CONFIG_DIR_NAME`; `.pi` by default). Project config overrides global config after Pi reports that the project is trusted.
|
|
50
50
|
|
|
51
51
|
```json
|
|
52
52
|
{
|
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
import { existsSync, readFileSync } from "node:fs";
|
|
2
2
|
import { dirname, join } from "node:path";
|
|
3
3
|
import {
|
|
4
|
+
CONFIG_DIR_NAME,
|
|
4
5
|
getAgentDir,
|
|
5
6
|
type ExtensionAPI,
|
|
6
7
|
type ExtensionContext,
|
|
7
8
|
} from "@earendil-works/pi-coding-agent";
|
|
8
9
|
|
|
9
|
-
const CONFIG_DIR_NAME = ".pi";
|
|
10
|
-
|
|
11
10
|
const EXTENSION_ID = "openai-fast";
|
|
12
11
|
const PROVIDER_ID = "openai-codex";
|
|
13
12
|
const API_ID = "openai-codex-responses";
|
|
14
13
|
const FAST_SERVICE_TIER = "priority";
|
|
15
|
-
const SUPPORTED_MODELS = new Set([
|
|
14
|
+
const SUPPORTED_MODELS = new Set([
|
|
15
|
+
"gpt-5.4",
|
|
16
|
+
"gpt-5.5",
|
|
17
|
+
"gpt-5.6-sol",
|
|
18
|
+
"gpt-5.6-terra",
|
|
19
|
+
"gpt-5.6-luna",
|
|
20
|
+
]);
|
|
21
|
+
const SUPPORTED_MODELS_LABEL = "gpt-5.4, gpt-5.5, gpt-5.6-sol, gpt-5.6-terra, or gpt-5.6-luna";
|
|
16
22
|
|
|
17
23
|
const DEFAULT_CONFIG: OpenAIFastConfig = {
|
|
18
24
|
enabled: false,
|
|
@@ -148,7 +154,7 @@ function getEligibility(ctx: ExtensionContext): Eligibility {
|
|
|
148
154
|
return {
|
|
149
155
|
eligible: false,
|
|
150
156
|
modelKey: key,
|
|
151
|
-
reason:
|
|
157
|
+
reason: `Fast mode is only enabled for ${SUPPORTED_MODELS_LABEL}`,
|
|
152
158
|
};
|
|
153
159
|
}
|
|
154
160
|
|
|
@@ -251,7 +257,7 @@ export default function openAIFastExtension(pi: ExtensionAPI) {
|
|
|
251
257
|
});
|
|
252
258
|
|
|
253
259
|
pi.registerCommand("fast", {
|
|
254
|
-
description: "Toggle OpenAI Codex Fast mode for ChatGPT-auth GPT-5.4
|
|
260
|
+
description: "Toggle OpenAI Codex Fast mode for ChatGPT-auth GPT-5.4, GPT-5.5, and GPT-5.6 Codex variants",
|
|
255
261
|
getArgumentCompletions: () => null,
|
|
256
262
|
handler: async (args, ctx) => {
|
|
257
263
|
const state = getState(ctx);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@diegopetrucci/pi-openai-fast",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "A pi extension that enables OpenAI Codex Fast mode for ChatGPT-auth GPT-5.4 and GPT-5.
|
|
3
|
+
"version": "0.1.9",
|
|
4
|
+
"description": "A pi extension that enables OpenAI Codex Fast mode for ChatGPT-auth GPT-5.4, GPT-5.5, and GPT-5.6 Codex variants by injecting the priority service tier.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pi-package",
|
|
7
7
|
"pi",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
0.80.
|
|
1
|
+
0.80.6
|
|
@@ -7,7 +7,7 @@ import { getAgentDir, getMarkdownTheme, type ExtensionAPI, type ExtensionContext
|
|
|
7
7
|
import { Container, Markdown, Spacer, Text } from "@earendil-works/pi-tui";
|
|
8
8
|
import { Type } from "typebox";
|
|
9
9
|
|
|
10
|
-
type ThinkingLevel = "off" | "minimal" | "low" | "medium" | "high" | "xhigh";
|
|
10
|
+
type ThinkingLevel = "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max";
|
|
11
11
|
type ThinkingLevelMap = Partial<Record<ThinkingLevel, unknown | null>>;
|
|
12
12
|
|
|
13
13
|
type PiModel = {
|
|
@@ -67,7 +67,7 @@ interface OraclePreferences {
|
|
|
67
67
|
const READ_ONLY_TOOLS = ["read", "grep", "find", "ls"];
|
|
68
68
|
const READ_ONLY_PLUS_BASH_TOOLS = [...READ_ONLY_TOOLS, "bash"];
|
|
69
69
|
const DEFAULT_THINKING_LEVEL: ThinkingLevel = "xhigh";
|
|
70
|
-
const THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh"] as const;
|
|
70
|
+
const THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh", "max"] as const;
|
|
71
71
|
const COLLAPSED_LINE_LIMIT = 8;
|
|
72
72
|
const ORACLE_STATUS_ID = "oracle";
|
|
73
73
|
const ORACLE_WIDGET_ID = "oracle";
|
|
@@ -96,40 +96,32 @@ const PROVIDER_MODEL_PREFERENCES: Record<string, string[]> = {
|
|
|
96
96
|
anthropic: [
|
|
97
97
|
"claude-fable-5",
|
|
98
98
|
"claude-opus-4-8",
|
|
99
|
-
"claude-opus-4.8",
|
|
100
99
|
"claude-opus-4-7",
|
|
101
|
-
"claude-opus-4.7",
|
|
102
100
|
"claude-opus-4-6",
|
|
103
|
-
"claude-opus-4.6",
|
|
104
101
|
"claude-opus-4-5",
|
|
105
|
-
"claude-opus-4.5",
|
|
106
102
|
"claude-opus-4-1",
|
|
107
|
-
"claude-opus-4.1",
|
|
108
|
-
"claude-opus-4-0",
|
|
109
|
-
"claude-opus-4",
|
|
110
|
-
"claude-sonnet-5-0",
|
|
111
|
-
"claude-sonnet-5.0",
|
|
112
103
|
"claude-sonnet-5",
|
|
113
104
|
"claude-sonnet-4-6",
|
|
114
|
-
"claude-sonnet-4.6",
|
|
115
105
|
"claude-sonnet-4-5",
|
|
116
|
-
"claude-sonnet-4.5",
|
|
117
|
-
"claude-sonnet-4-0",
|
|
118
|
-
"claude-sonnet-4",
|
|
119
|
-
"claude-3-7-sonnet",
|
|
120
106
|
],
|
|
121
107
|
"ant-ling": ["Ling-2.6-1T", "Ling-2.6-flash"],
|
|
122
108
|
"azure-openai-responses": [
|
|
109
|
+
"gpt-5.6-sol",
|
|
110
|
+
"gpt-5.6-terra",
|
|
111
|
+
"gpt-5.6-luna",
|
|
123
112
|
"gpt-5.5-pro",
|
|
124
113
|
"gpt-5.5",
|
|
125
114
|
"gpt-5.4-pro",
|
|
126
115
|
"gpt-5.4",
|
|
127
116
|
"gpt-5.3-codex",
|
|
128
117
|
"gpt-5-pro",
|
|
118
|
+
"gpt-5-chat-latest",
|
|
129
119
|
"gpt-5.2-pro",
|
|
130
120
|
"gpt-5.2",
|
|
131
121
|
"gpt-5.2-codex",
|
|
132
122
|
"gpt-5.1-codex-max",
|
|
123
|
+
"gpt-5.1-codex",
|
|
124
|
+
"gpt-5.1",
|
|
133
125
|
"gpt-5.1-chat-latest",
|
|
134
126
|
"o3-pro",
|
|
135
127
|
"o3-deep-research",
|
|
@@ -137,7 +129,7 @@ const PROVIDER_MODEL_PREFERENCES: Record<string, string[]> = {
|
|
|
137
129
|
"gpt-5.4-mini",
|
|
138
130
|
"gpt-5-mini",
|
|
139
131
|
],
|
|
140
|
-
cerebras: ["gpt-oss-120b", "zai-glm-4.7", "
|
|
132
|
+
cerebras: ["gpt-oss-120b", "zai-glm-4.7", "gemma-4-31b"],
|
|
141
133
|
"cloudflare-ai-gateway": [
|
|
142
134
|
"claude-fable-5",
|
|
143
135
|
"claude-opus-4-7",
|
|
@@ -155,8 +147,8 @@ const PROVIDER_MODEL_PREFERENCES: Record<string, string[]> = {
|
|
|
155
147
|
"@cf/zai-org/glm-5.2",
|
|
156
148
|
"@cf/moonshotai/kimi-k2.6",
|
|
157
149
|
"@cf/nvidia/nemotron-3-120b-a12b",
|
|
158
|
-
"@cf/moonshotai/kimi-k2.5",
|
|
159
150
|
"@cf/openai/gpt-oss-120b",
|
|
151
|
+
"@cf/qwen/qwen3-30b-a3b-fp8",
|
|
160
152
|
"@cf/zai-org/glm-4.7-flash",
|
|
161
153
|
],
|
|
162
154
|
deepseek: ["deepseek-v4-pro", "deepseek-v4-flash"],
|
|
@@ -165,13 +157,17 @@ const PROVIDER_MODEL_PREFERENCES: Record<string, string[]> = {
|
|
|
165
157
|
"accounts/fireworks/models/kimi-k2p7-code",
|
|
166
158
|
"accounts/fireworks/routers/kimi-k2p7-code-fast",
|
|
167
159
|
"accounts/fireworks/models/glm-5p2",
|
|
160
|
+
"accounts/fireworks/routers/glm-5p2-fast",
|
|
168
161
|
"accounts/fireworks/models/minimax-m3",
|
|
169
162
|
"accounts/fireworks/models/glm-5p1",
|
|
163
|
+
"accounts/fireworks/routers/glm-5p1-fast",
|
|
170
164
|
"accounts/fireworks/models/kimi-k2p6",
|
|
165
|
+
"accounts/fireworks/routers/kimi-k2p6-turbo",
|
|
166
|
+
"accounts/fireworks/routers/kimi-k2p6-fast",
|
|
171
167
|
"accounts/fireworks/models/minimax-m2p7",
|
|
172
168
|
"accounts/fireworks/models/qwen3p7-plus",
|
|
173
|
-
"accounts/fireworks/models/qwen3p6-plus",
|
|
174
169
|
"accounts/fireworks/models/gpt-oss-120b",
|
|
170
|
+
"accounts/fireworks/models/gpt-oss-20b",
|
|
175
171
|
],
|
|
176
172
|
"github-copilot": [
|
|
177
173
|
"claude-fable-5",
|
|
@@ -182,42 +178,46 @@ const PROVIDER_MODEL_PREFERENCES: Record<string, string[]> = {
|
|
|
182
178
|
"gpt-5.5",
|
|
183
179
|
"gpt-5.4",
|
|
184
180
|
"gpt-5.3-codex",
|
|
181
|
+
"gpt-5.2-codex",
|
|
185
182
|
"gpt-5.2",
|
|
186
|
-
"gpt-5.1-codex-max",
|
|
187
|
-
"gpt-5.1",
|
|
188
|
-
"gpt-5",
|
|
189
183
|
"gemini-3.1-pro-preview",
|
|
190
|
-
"gemini-3-
|
|
191
|
-
"
|
|
184
|
+
"gemini-3.5-flash",
|
|
185
|
+
"gemini-3-flash-preview",
|
|
192
186
|
"claude-sonnet-5",
|
|
193
187
|
"claude-sonnet-4.6",
|
|
194
188
|
"claude-sonnet-4.5",
|
|
195
189
|
"gemini-2.5-pro",
|
|
190
|
+
"gpt-5-mini",
|
|
191
|
+
"kimi-k2.7-code",
|
|
196
192
|
],
|
|
197
193
|
google: [
|
|
198
194
|
"gemini-3.1-pro-preview-customtools",
|
|
199
195
|
"gemini-3.1-pro-preview",
|
|
200
196
|
"gemini-3-pro-preview",
|
|
201
|
-
"gemini-
|
|
197
|
+
"gemini-3.5-flash",
|
|
202
198
|
"gemini-2.5-pro",
|
|
203
|
-
"gemini-2.5-flash
|
|
204
|
-
"gemini-
|
|
199
|
+
"gemini-2.5-flash",
|
|
200
|
+
"gemini-3.1-flash-lite-preview",
|
|
201
|
+
"gemini-3.1-flash-lite",
|
|
205
202
|
"gemini-2.5-flash-lite",
|
|
203
|
+
"gemini-2.0-flash",
|
|
206
204
|
],
|
|
207
205
|
"google-vertex": [
|
|
208
206
|
"gemini-3.1-pro-preview-customtools",
|
|
209
207
|
"gemini-3.1-pro-preview",
|
|
210
|
-
"gemini-3-
|
|
208
|
+
"gemini-3.5-flash",
|
|
209
|
+
"gemini-3-flash-preview",
|
|
211
210
|
"gemini-2.5-pro",
|
|
211
|
+
"gemini-2.5-flash",
|
|
212
|
+
"gemini-3.1-flash-lite",
|
|
212
213
|
"gemini-2.5-flash-lite",
|
|
213
|
-
"gemini-2.0-flash-lite",
|
|
214
214
|
],
|
|
215
215
|
groq: [
|
|
216
216
|
"openai/gpt-oss-120b",
|
|
217
|
-
"groq/compound-mini",
|
|
218
217
|
"qwen/qwen3-32b",
|
|
219
|
-
"
|
|
220
|
-
"
|
|
218
|
+
"meta-llama/llama-4-scout-17b-16e-instruct",
|
|
219
|
+
"llama-3.3-70b-versatile",
|
|
220
|
+
"openai/gpt-oss-20b",
|
|
221
221
|
],
|
|
222
222
|
huggingface: [
|
|
223
223
|
"zai-org/GLM-5.1",
|
|
@@ -247,16 +247,22 @@ const PROVIDER_MODEL_PREFERENCES: Record<string, string[]> = {
|
|
|
247
247
|
"devstral-2512",
|
|
248
248
|
],
|
|
249
249
|
openai: [
|
|
250
|
+
"gpt-5.6-sol",
|
|
251
|
+
"gpt-5.6-terra",
|
|
252
|
+
"gpt-5.6-luna",
|
|
250
253
|
"gpt-5.5-pro",
|
|
251
254
|
"gpt-5.5",
|
|
252
255
|
"gpt-5.4-pro",
|
|
253
256
|
"gpt-5.4",
|
|
254
257
|
"gpt-5.3-codex",
|
|
255
258
|
"gpt-5-pro",
|
|
259
|
+
"gpt-5-chat-latest",
|
|
256
260
|
"gpt-5.2-pro",
|
|
257
261
|
"gpt-5.2",
|
|
258
262
|
"gpt-5.2-codex",
|
|
259
263
|
"gpt-5.1-codex-max",
|
|
264
|
+
"gpt-5.1-codex",
|
|
265
|
+
"gpt-5.1",
|
|
260
266
|
"gpt-5.1-chat-latest",
|
|
261
267
|
"o3-pro",
|
|
262
268
|
"o3-deep-research",
|
|
@@ -265,14 +271,13 @@ const PROVIDER_MODEL_PREFERENCES: Record<string, string[]> = {
|
|
|
265
271
|
"gpt-5-mini",
|
|
266
272
|
],
|
|
267
273
|
"openai-codex": [
|
|
274
|
+
"gpt-5.6-sol",
|
|
275
|
+
"gpt-5.6-terra",
|
|
276
|
+
"gpt-5.6-luna",
|
|
268
277
|
"gpt-5.5",
|
|
269
278
|
"gpt-5.4",
|
|
270
|
-
"gpt-5.3-codex",
|
|
271
|
-
"gpt-5.2",
|
|
272
|
-
"gpt-5.1-codex-max",
|
|
273
279
|
"gpt-5.4-mini",
|
|
274
|
-
"gpt-5.
|
|
275
|
-
"big-pickle",
|
|
280
|
+
"gpt-5.3-codex-spark",
|
|
276
281
|
],
|
|
277
282
|
opencode: [
|
|
278
283
|
"claude-fable-5",
|
|
@@ -287,15 +292,19 @@ const PROVIDER_MODEL_PREFERENCES: Record<string, string[]> = {
|
|
|
287
292
|
"gpt-5.3-codex",
|
|
288
293
|
"gpt-5.2-codex",
|
|
289
294
|
"gpt-5.1-codex",
|
|
295
|
+
"grok-4.5",
|
|
296
|
+
"gemini-3.5-flash",
|
|
290
297
|
"gemini-3.1-pro",
|
|
298
|
+
"glm-5.2",
|
|
291
299
|
"glm-5.1",
|
|
292
300
|
"glm-5",
|
|
301
|
+
"kimi-k2.7-code",
|
|
293
302
|
"kimi-k2.6",
|
|
294
303
|
"kimi-k2.5",
|
|
295
304
|
"qwen3.6-plus",
|
|
296
305
|
"qwen3.5-plus",
|
|
306
|
+
"minimax-m3",
|
|
297
307
|
"minimax-m2.7",
|
|
298
|
-
"minimax-m2.5-free",
|
|
299
308
|
],
|
|
300
309
|
"opencode-go": [
|
|
301
310
|
"deepseek-v4-pro",
|
|
@@ -305,12 +314,11 @@ const PROVIDER_MODEL_PREFERENCES: Record<string, string[]> = {
|
|
|
305
314
|
"qwen3.7-plus",
|
|
306
315
|
"qwen3.6-plus",
|
|
307
316
|
"mimo-v2.5-pro",
|
|
308
|
-
"mimo-v2
|
|
317
|
+
"mimo-v2.5",
|
|
309
318
|
"minimax-m3",
|
|
310
319
|
"minimax-m2.7",
|
|
311
320
|
"kimi-k2.7-code",
|
|
312
321
|
"kimi-k2.6",
|
|
313
|
-
"kimi-k2.5",
|
|
314
322
|
],
|
|
315
323
|
openrouter: [
|
|
316
324
|
"anthropic/claude-fable-5",
|
|
@@ -318,20 +326,30 @@ const PROVIDER_MODEL_PREFERENCES: Record<string, string[]> = {
|
|
|
318
326
|
"anthropic/claude-opus-4.8",
|
|
319
327
|
"anthropic/claude-opus-4.8-fast",
|
|
320
328
|
"anthropic/claude-opus-4.7",
|
|
321
|
-
"anthropic/claude-opus-4.
|
|
329
|
+
"anthropic/claude-opus-4.7-fast",
|
|
322
330
|
"anthropic/claude-opus-4.6",
|
|
323
331
|
"anthropic/claude-opus-4.5",
|
|
324
|
-
"anthropic/claude-opus-4",
|
|
332
|
+
"anthropic/claude-opus-4.1",
|
|
333
|
+
"openai/gpt-5.6-sol-pro",
|
|
334
|
+
"openai/gpt-5.6-sol",
|
|
335
|
+
"openai/gpt-5.6-terra-pro",
|
|
336
|
+
"openai/gpt-5.6-terra",
|
|
337
|
+
"openai/gpt-5.6-luna-pro",
|
|
338
|
+
"openai/gpt-5.6-luna",
|
|
325
339
|
"openai/gpt-5.5-pro",
|
|
326
340
|
"openai/gpt-5.5",
|
|
327
|
-
"openai/gpt-
|
|
328
|
-
"openai/gpt-5.4",
|
|
341
|
+
"~openai/gpt-latest",
|
|
329
342
|
"google/gemini-3.1-pro-preview-customtools",
|
|
330
343
|
"google/gemini-3.1-pro-preview",
|
|
344
|
+
"~google/gemini-pro-latest",
|
|
345
|
+
"google/gemini-3.5-flash",
|
|
331
346
|
"google/gemini-2.5-pro",
|
|
332
347
|
"moonshotai/kimi-k2.7-code",
|
|
348
|
+
"~moonshotai/kimi-latest",
|
|
333
349
|
"moonshotai/kimi-k2.6",
|
|
334
350
|
"moonshotai/kimi-k2-thinking",
|
|
351
|
+
"x-ai/grok-4.5",
|
|
352
|
+
"~x-ai/grok-latest",
|
|
335
353
|
"deepseek/deepseek-v4-pro",
|
|
336
354
|
"deepseek/deepseek-r1",
|
|
337
355
|
"deepseek/deepseek-v3.2",
|
|
@@ -343,6 +361,7 @@ const PROVIDER_MODEL_PREFERENCES: Record<string, string[]> = {
|
|
|
343
361
|
],
|
|
344
362
|
together: [
|
|
345
363
|
"deepseek-ai/DeepSeek-V4-Pro",
|
|
364
|
+
"zai-org/GLM-5.2",
|
|
346
365
|
"zai-org/GLM-5.1",
|
|
347
366
|
"moonshotai/Kimi-K2.7-Code",
|
|
348
367
|
"moonshotai/Kimi-K2.6",
|
|
@@ -351,12 +370,10 @@ const PROVIDER_MODEL_PREFERENCES: Record<string, string[]> = {
|
|
|
351
370
|
"MiniMaxAI/MiniMax-M3",
|
|
352
371
|
"MiniMaxAI/MiniMax-M2.7",
|
|
353
372
|
"Qwen/Qwen3.5-397B-A17B",
|
|
354
|
-
"Qwen/Qwen3-Coder-Next-FP8",
|
|
355
|
-
"Qwen/Qwen3-235B-A22B-Instruct-2507-tput",
|
|
356
373
|
"openai/gpt-oss-120b",
|
|
357
|
-
"
|
|
358
|
-
"
|
|
359
|
-
"
|
|
374
|
+
"openai/gpt-oss-20b",
|
|
375
|
+
"nvidia/nemotron-3-ultra-550b-a55b",
|
|
376
|
+
"google/gemma-4-31B-it",
|
|
360
377
|
],
|
|
361
378
|
"vercel-ai-gateway": [
|
|
362
379
|
"anthropic/claude-fable-5",
|
|
@@ -365,13 +382,17 @@ const PROVIDER_MODEL_PREFERENCES: Record<string, string[]> = {
|
|
|
365
382
|
"anthropic/claude-opus-4.6",
|
|
366
383
|
"anthropic/claude-opus-4.5",
|
|
367
384
|
"anthropic/claude-opus-4.1",
|
|
368
|
-
"anthropic/claude-sonnet-5.0",
|
|
369
385
|
"anthropic/claude-sonnet-5",
|
|
370
386
|
"anthropic/claude-sonnet-4.6",
|
|
387
|
+
"openai/gpt-5.6-sol",
|
|
388
|
+
"openai/gpt-5.6-terra",
|
|
389
|
+
"openai/gpt-5.6-luna",
|
|
371
390
|
"openai/gpt-5.5-pro",
|
|
372
391
|
"openai/gpt-5.5",
|
|
373
392
|
"openai/gpt-5.4-pro",
|
|
374
393
|
"openai/gpt-5.4",
|
|
394
|
+
"openai/gpt-5.3-codex",
|
|
395
|
+
"openai/gpt-5.2-codex",
|
|
375
396
|
"openai/gpt-5.1-codex",
|
|
376
397
|
"openai/gpt-5-codex",
|
|
377
398
|
"moonshotai/kimi-k2.7-code",
|
|
@@ -382,52 +403,37 @@ const PROVIDER_MODEL_PREFERENCES: Record<string, string[]> = {
|
|
|
382
403
|
"deepseek/deepseek-v3.2-thinking",
|
|
383
404
|
"alibaba/qwen3.7-max",
|
|
384
405
|
"alibaba/qwen3.7-plus",
|
|
406
|
+
"alibaba/qwen3.6-plus",
|
|
385
407
|
"alibaba/qwen3.5-plus",
|
|
386
408
|
"alibaba/qwen3-max-thinking",
|
|
387
409
|
"google/gemini-3.1-pro-preview",
|
|
410
|
+
"google/gemini-3.5-flash",
|
|
388
411
|
"google/gemini-3-flash",
|
|
389
|
-
"xai/grok-4.
|
|
412
|
+
"xai/grok-4.5",
|
|
413
|
+
"xai/grok-4.20-reasoning",
|
|
390
414
|
"minimax/minimax-m3",
|
|
391
415
|
"zai/glm-5.2",
|
|
392
416
|
"zai/glm-5.1",
|
|
393
417
|
],
|
|
394
418
|
xai: [
|
|
395
|
-
"grok-4.
|
|
419
|
+
"grok-4.5",
|
|
396
420
|
"grok-4.20-0309-reasoning",
|
|
397
|
-
"grok-4-
|
|
398
|
-
"grok-4
|
|
399
|
-
"grok-
|
|
400
|
-
"grok-
|
|
401
|
-
"grok-3-
|
|
402
|
-
"grok-3
|
|
421
|
+
"grok-4.20-0309-non-reasoning",
|
|
422
|
+
"grok-4.3",
|
|
423
|
+
"grok-build-0.1",
|
|
424
|
+
"grok-code-fast-1",
|
|
425
|
+
"grok-3-fast",
|
|
426
|
+
"grok-3",
|
|
403
427
|
],
|
|
404
428
|
xiaomi: ["mimo-v2.5-pro", "mimo-v2.5", "mimo-v2-pro", "mimo-v2-omni", "mimo-v2-flash"],
|
|
405
|
-
"xiaomi-token-plan-ams": [
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
"mimo-v2-pro",
|
|
409
|
-
"mimo-v2-omni",
|
|
410
|
-
"mimo-v2-flash",
|
|
411
|
-
],
|
|
412
|
-
"xiaomi-token-plan-cn": [
|
|
413
|
-
"mimo-v2.5-pro",
|
|
414
|
-
"mimo-v2.5",
|
|
415
|
-
"mimo-v2-pro",
|
|
416
|
-
"mimo-v2-omni",
|
|
417
|
-
"mimo-v2-flash",
|
|
418
|
-
],
|
|
419
|
-
"xiaomi-token-plan-sgp": [
|
|
420
|
-
"mimo-v2.5-pro",
|
|
421
|
-
"mimo-v2.5",
|
|
422
|
-
"mimo-v2-pro",
|
|
423
|
-
"mimo-v2-omni",
|
|
424
|
-
"mimo-v2-flash",
|
|
425
|
-
],
|
|
429
|
+
"xiaomi-token-plan-ams": ["mimo-v2.5-pro", "mimo-v2.5", "mimo-v2-pro"],
|
|
430
|
+
"xiaomi-token-plan-cn": ["mimo-v2.5-pro", "mimo-v2.5", "mimo-v2-pro"],
|
|
431
|
+
"xiaomi-token-plan-sgp": ["mimo-v2.5-pro", "mimo-v2.5", "mimo-v2-pro"],
|
|
426
432
|
nvidia: [
|
|
427
433
|
"nvidia/nemotron-3-ultra-550b-a55b",
|
|
428
434
|
"nvidia/nemotron-3-super-120b-a12b",
|
|
429
435
|
"moonshotai/kimi-k2.6",
|
|
430
|
-
"z-ai/glm-5.
|
|
436
|
+
"z-ai/glm-5.2",
|
|
431
437
|
"qwen/qwen3.5-122b-a10b",
|
|
432
438
|
"openai/gpt-oss-120b",
|
|
433
439
|
"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning",
|
|
@@ -438,11 +444,7 @@ const PROVIDER_MODEL_PREFERENCES: Record<string, string[]> = {
|
|
|
438
444
|
"glm-5.1",
|
|
439
445
|
"glm-5-turbo",
|
|
440
446
|
"glm-5v-turbo",
|
|
441
|
-
"glm-5",
|
|
442
447
|
"glm-4.7",
|
|
443
|
-
"glm-4.7-flash",
|
|
444
|
-
"glm-4.6v",
|
|
445
|
-
"glm-4.5v",
|
|
446
448
|
"glm-4.5-air",
|
|
447
449
|
],
|
|
448
450
|
"zai-coding-cn": [
|
|
@@ -524,7 +526,7 @@ function normalizeModelPreference(value: unknown): string | undefined {
|
|
|
524
526
|
function parseModelPreference(value: unknown): { model?: string; thinkingLevel?: ThinkingLevel } {
|
|
525
527
|
const model = normalizeModelPreference(value);
|
|
526
528
|
if (!model) return {};
|
|
527
|
-
const match = model.match(/^(.*):(off|minimal|low|medium|high|xhigh)$/i);
|
|
529
|
+
const match = model.match(/^(.*):(off|minimal|low|medium|high|xhigh|max)$/i);
|
|
528
530
|
if (!match?.[1]) return { model };
|
|
529
531
|
return { model: match[1], thinkingLevel: parseThinkingLevel(match[2]) };
|
|
530
532
|
}
|
|
@@ -721,7 +723,7 @@ function getPiInvocation(args: string[]): { command: string; args: string[] } {
|
|
|
721
723
|
}
|
|
722
724
|
|
|
723
725
|
function withThinking(modelRef: string, thinkingLevel: ThinkingLevel): string {
|
|
724
|
-
if (/(?:^|\/)[^:]+:(off|minimal|low|medium|high|xhigh)$/i.test(modelRef)) return modelRef;
|
|
726
|
+
if (/(?:^|\/)[^:]+:(off|minimal|low|medium|high|xhigh|max)$/i.test(modelRef)) return modelRef;
|
|
725
727
|
return `${modelRef}:${thinkingLevel}`;
|
|
726
728
|
}
|
|
727
729
|
|
|
@@ -730,8 +732,8 @@ function isThinkingLevelSupported(model: PiModel, level: ThinkingLevel): boolean
|
|
|
730
732
|
if (!model.reasoning) return level === "off";
|
|
731
733
|
|
|
732
734
|
const map = model.thinkingLevelMap;
|
|
733
|
-
if (level === "xhigh") {
|
|
734
|
-
return !!map && Object.prototype.hasOwnProperty.call(map,
|
|
735
|
+
if (level === "xhigh" || level === "max") {
|
|
736
|
+
return !!map && Object.prototype.hasOwnProperty.call(map, level) && map[level] != null;
|
|
735
737
|
}
|
|
736
738
|
return map?.[level] !== null;
|
|
737
739
|
}
|
|
@@ -752,11 +754,16 @@ function clampThinkingLevel(model: PiModel, requested: ThinkingLevel): ThinkingL
|
|
|
752
754
|
return "off";
|
|
753
755
|
}
|
|
754
756
|
|
|
757
|
+
function isGpt56SolModel(model: PiModel | undefined): boolean {
|
|
758
|
+
if (!model) return false;
|
|
759
|
+
return /\bgpt-5\.6-sol\b/i.test(`${model.id} ${model.name ?? ""}`);
|
|
760
|
+
}
|
|
761
|
+
|
|
755
762
|
function resolveThinkingLevel(
|
|
756
763
|
model: PiModel | undefined,
|
|
757
764
|
override: ThinkingLevel | undefined,
|
|
758
765
|
): { requested: ThinkingLevel; effective: ThinkingLevel; clamped: boolean } {
|
|
759
|
-
const requested = override ?? (model?.reasoning ? DEFAULT_THINKING_LEVEL : "off");
|
|
766
|
+
const requested = override ?? (model?.reasoning ? (isGpt56SolModel(model) ? "high" : DEFAULT_THINKING_LEVEL) : "off");
|
|
760
767
|
const effective = model ? clampThinkingLevel(model, requested) : requested;
|
|
761
768
|
return { requested, effective, clamped: effective !== requested };
|
|
762
769
|
}
|
|
@@ -1239,7 +1246,7 @@ export default function oracleExtension(pi: ExtensionAPI) {
|
|
|
1239
1246
|
return;
|
|
1240
1247
|
}
|
|
1241
1248
|
|
|
1242
|
-
notifyCommand(ctx, "Usage: /oracle status | model <provider/model|auto> | thinking <off|minimal|low|medium|high|xhigh|auto> | clear [all|model|thinking]", "warning");
|
|
1249
|
+
notifyCommand(ctx, "Usage: /oracle status | model <provider/model|auto> | thinking <off|minimal|low|medium|high|xhigh|max|auto> | clear [all|model|thinking]", "warning");
|
|
1243
1250
|
},
|
|
1244
1251
|
});
|
|
1245
1252
|
|