@eddyskywalker/dsh-chatgpt-subscription 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -2
- package/README.md +21 -8
- package/lib/client.js +28 -10
- package/lib/client.js.map +1 -1
- package/lib/index.js +408 -148
- package/lib/types/client/CodexSubscriptionSection.d.ts +1 -1
- package/lib/types/client/CodexSubscriptionSection.d.ts.map +1 -1
- package/lib/types/client/locales.d.ts +6 -6
- package/lib/types/host/antigravity/adapter.d.ts.map +1 -1
- package/lib/types/host/antigravity/mapper.d.ts +9 -4
- package/lib/types/host/antigravity/mapper.d.ts.map +1 -1
- package/lib/types/host/antigravity/token-store.d.ts +8 -1
- package/lib/types/host/antigravity/token-store.d.ts.map +1 -1
- package/lib/types/host/credential-store-secret-service.d.ts +13 -0
- package/lib/types/host/credential-store-secret-service.d.ts.map +1 -0
- package/lib/types/host/preferences.d.ts.map +1 -1
- package/lib/types/host/responses-mapper.d.ts.map +1 -1
- package/lib/types/host/token-store-macos.d.ts +9 -5
- package/lib/types/host/token-store-macos.d.ts.map +1 -1
- package/lib/types/host/token-store-windows.d.ts +9 -5
- package/lib/types/host/token-store-windows.d.ts.map +1 -1
- package/lib/types/host/token-store.d.ts +6 -4
- package/lib/types/host/token-store.d.ts.map +1 -1
- package/lib/types/shared/contracts.d.ts +1 -0
- package/lib/types/shared/contracts.d.ts.map +1 -1
- package/lib/types/shared/model-catalog.d.ts +14 -3
- package/lib/types/shared/model-catalog.d.ts.map +1 -1
- package/lib/types/shared/preferences.d.ts.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
- Codex 订阅供应商新增 `gpt-6-astra`(6 Astra),支持文本、图片、工具调用和 `low` 至 `max` 思考档位,默认 `medium`;旧会话的 `none` / `minimal` 转为 `low`。
|
|
6
|
+
- 新增 Astra 上下文设置:默认 272K,订阅侧最高 872K,界面与服务端统一校验;保留已有模型选择与上下文配置。
|
|
7
|
+
|
|
3
8
|
## 0.1.28 - 2026-08-28
|
|
4
9
|
|
|
5
10
|
- 新增支持 1.5x 倍速快速模式(Fast Mode / Priority Service Tier):在设置页「增强功能」中提供开关,开启后向 Codex 后端请求自动注入 `service_tier: 'priority'`,以约 2x–2.5x 额度消耗换取约 1.5 倍的 Token 生成速度。
|
package/README.md
CHANGED
|
@@ -41,14 +41,15 @@
|
|
|
41
41
|
- 展示账号(脱敏 email、套餐、账号 ID 后四位)、连接状态、额度与订阅增强功能开关;
|
|
42
42
|
- 独立的“子代理”设置页可全局选择 DSH 当前接入的任意 Provider/模型(如 DeepSeek V4 Flash);思考深度来自所选模型公开能力,上下文在选定模型后展开配置,并适用于所有 DSH 内置子代理,不受父 Agent 当前 Provider/模型影响;
|
|
43
43
|
- 可全局设置 0–3 的最大嵌套深度与每个父 Agent 子树的活动子代理数量上限;限制即时作用于新委派,不中断已运行的子代理;
|
|
44
|
-
- 5.6 Sol / Terra / Luna 默认使用 272K
|
|
44
|
+
- 6 Astra 与 5.6 Sol / Terra / Luna 默认使用 272K 有效上下文;订阅侧 6 Astra 可配置最高 872K,5.6 系列最高 1M,用于 DSH 压缩与溢出判断;其他模型保持目录声明值;
|
|
45
45
|
- 可访问的进度条、窄窗口/200% 缩放布局、深浅主题与 reduced-motion。
|
|
46
46
|
|
|
47
47
|
## 模型目录
|
|
48
48
|
|
|
49
49
|
| 显示名 | 模型 slug |
|
|
50
50
|
| --- | --- |
|
|
51
|
-
| 5.6 Sol | `gpt-5.6-sol` |
|
|
51
|
+
| 5.6 Sol | `gpt-5.6-sol` |
|
|
52
|
+
| 6 Astra | `gpt-6-astra` |
|
|
52
53
|
| 5.6 Terra | `gpt-5.6-terra` |
|
|
53
54
|
| 5.6 Luna | `gpt-5.6-luna` |
|
|
54
55
|
| 5.5 | `gpt-5.5` |
|
|
@@ -56,8 +57,12 @@
|
|
|
56
57
|
| 5.4 Mini | `gpt-5.4-mini` |
|
|
57
58
|
| 5.3 Codex Spark | `gpt-5.3-codex-spark` |
|
|
58
59
|
|
|
59
|
-
> 目录只用于展示;账号实际可用的模型由 ChatGPT 套餐、workspace 策略与上游兼容状态决定。
|
|
60
|
-
|
|
60
|
+
> 目录只用于展示;账号实际可用的模型由 ChatGPT 套餐、workspace 策略与上游兼容状态决定。
|
|
61
|
+
|
|
62
|
+
6 Astra 支持文本、图片输入和工具调用,默认思考档位为 `medium`,可选 `low`、`medium`、`high`、`xhigh`、`max`。从旧会话带入的 `none` / `minimal` 会按 [OpenAI 官方迁移说明](https://developers.openai.com/api/docs/guides/latest-model) 转为 `low`。订阅侧 872K 上下文上限依据 2026-09-05 的 Codex 模型目录;[Codex Ultra](https://learn.chatgpt.com/zh-Hans/docs/models) 涉及客户端的子代理编排,本插件不将它作为 Responses 思考参数暴露。
|
|
63
|
+
|
|
64
|
+
新配置默认显示 6 Astra;已有配置保留原来的模型勾选,可在 **设置 → Codex 订阅 → 可用模型** 中勾选 **6 Astra**。
|
|
65
|
+
|
|
61
66
|
## 环境要求
|
|
62
67
|
|
|
63
68
|
- Windows 或 Linux;
|
|
@@ -111,7 +116,7 @@ npx @deepseek-ai/dsh plugin --profile web add "link:C:\absolute\path\to\dsh-chat
|
|
|
111
116
|
3. 完成 ChatGPT 登录;
|
|
112
117
|
4. 执行 **测试连接**。
|
|
113
118
|
|
|
114
|
-
DSH 模型选择器应显示 **“Codex(ChatGPT 订阅)”**。GPT-5.6 系列的有效上下文窗口仍在“Codex 订阅 → 增强功能”中配置;子代理模型、思考深度、子代理上下文、最大嵌套深度和数量上限则统一位于独立的 **“子代理”** 设置页。模型路由适用于会话标记为 `origin: subagent` 的 DSH 内置子代理;运行限制在内置 spawn/fork 及已启用的原生子代理委派工具入口统一执行。
|
|
119
|
+
DSH 模型选择器应显示 **“Codex(ChatGPT 订阅)”**。6 Astra 与 GPT-5.6 系列的有效上下文窗口仍在“Codex 订阅 → 增强功能”中配置;子代理模型、思考深度、子代理上下文、最大嵌套深度和数量上限则统一位于独立的 **“子代理”** 设置页。模型路由适用于会话标记为 `origin: subagent` 的 DSH 内置子代理;运行限制在内置 spawn/fork 及已启用的原生子代理委派工具入口统一执行。
|
|
115
120
|
|
|
116
121
|
卸载前建议先在设置页点击 **“注销”**,它会删除当前平台的凭据和 Host 内存中的额度缓存。
|
|
117
122
|
|
|
@@ -123,8 +128,16 @@ DSH 模型选择器应显示 **“Codex(ChatGPT 订阅)”**。GPT-5.6 系
|
|
|
123
128
|
|
|
124
129
|
> Windows 文件只能由创建它的用户通过 DPAPI 解密。macOS 凭据由登录钥匙串在本机加密保存。Linux 文件是未额外加密的 JSON,依赖目录 `0700` 和文件 `0600` 隔离;不要复制、打印或提交该文件。跨平台迁移需要重新登录。
|
|
125
130
|
|
|
126
|
-
## 安全边界
|
|
127
|
-
|
|
131
|
+
## 安全边界
|
|
132
|
+
|
|
133
|
+
Antigravity 的 access token / refresh token 使用独立的系统凭据存储:Windows 使用 CurrentUser DPAPI(`$DSH_HOME/storages/antigravity-oauth.json.dpapi`),macOS 使用登录钥匙串,Linux 使用 Secret Service。macOS / Linux 的服务名为 `dsh-antigravity`,账号键按旧凭据文件的绝对路径生成,隔离不同的 `DSH_HOME`。
|
|
134
|
+
|
|
135
|
+
升级后首次访问 Antigravity 凭据时,会读取旧 `storages/antigravity-oauth.json`,加密保存并读回校验;成功后删除旧 JSON,通常无需重新登录。失败会保留旧文件并报告错误,不会回退到明文存储。注销同时清理旧文件和新凭据。Linux 需要 `secret-tool`(libsecret 工具包)及可用、已解锁的 Secret Service 钥匙环;无桌面服务的主机也需要配置该服务。系统凭据存储保护落盘数据,不防御当前用户下已获权限的进程。
|
|
136
|
+
|
|
137
|
+
Antigravity 的 Gemini 用量以流结束时的上游累计计数为准,缓存输入单列、思考 token 计入输出并另行提供明细;DSH 使用该输出计数计算 tok/s。Gemini 工具往返会保留原始思考签名,并在支持的运行时请求思考摘要;若上游没有返回摘要文本,插件不会生成替代内容。
|
|
138
|
+
|
|
139
|
+
以下为 Codex(ChatGPT 订阅)Provider 的存储与网络边界:
|
|
140
|
+
|
|
128
141
|
- OAuth 回调固定为 `http://localhost:1455/auth/callback`,登录任务五分钟超时,同一时刻只允许一个;
|
|
129
142
|
- OAuth token 只发送到 `https://auth.openai.com/oauth/token`;
|
|
130
143
|
- 模型、图片、搜索与额度地址分别固定为 `https://chatgpt.com/backend-api/codex/responses`、`https://chatgpt.com/backend-api/codex/images/generations`、`https://chatgpt.com/backend-api/codex/alpha/search` 和 `https://chatgpt.com/backend-api/wham/usage`,没有 endpoint override;
|
|
@@ -175,4 +188,4 @@ npm pack --dry-run
|
|
|
175
188
|
| 模型不可用 | 检查 ChatGPT 套餐、workspace 权限与当前模型可用性 |
|
|
176
189
|
| DPAPI 读取失败 | 确认 DSH 以创建凭据时的同一 Windows 用户运行;必要时清理凭据后重新登录 |
|
|
177
190
|
| Linux 凭据存储不可用 | 确认凭据属于当前用户且权限为 `0600`,父目录权限为 `0700`;修复权限或注销后重新登录 |
|
|
178
|
-
| Linux 上工具调用语法错误 | 确认 DSH 暴露的是 `bash`、`sh` 或 `shell`,并使用相应的 Bash/POSIX 语法与 `/` 路径 |
|
|
191
|
+
| Linux 上工具调用语法错误 | 确认 DSH 暴露的是 `bash`、`sh` 或 `shell`,并使用相应的 Bash/POSIX 语法与 `/` 路径 |
|
package/lib/client.js
CHANGED
|
@@ -200,6 +200,10 @@ window.__ModuleLoader__.load({
|
|
|
200
200
|
const text = blocks.map((block) => block.type === "text" || block.type === "reasoning" ? block.text : "").filter(Boolean).join(" ").trim();
|
|
201
201
|
return text === "" ? null : text;
|
|
202
202
|
}
|
|
203
|
+
//#endregion
|
|
204
|
+
//#region src/shared/model-catalog.ts
|
|
205
|
+
const GPT_56_MAX_CONTEXT_WINDOW = 1e6;
|
|
206
|
+
const GPT_6_ASTRA_MAX_CONTEXT_WINDOW = 872e3;
|
|
203
207
|
const CODEX_MODEL_CATALOG = [
|
|
204
208
|
{
|
|
205
209
|
id: "gpt-5.6-sol",
|
|
@@ -211,6 +215,15 @@ window.__ModuleLoader__.load({
|
|
|
211
215
|
supportsReasoningSummary: true,
|
|
212
216
|
fallbackModelId: "gpt-5.6-terra"
|
|
213
217
|
},
|
|
218
|
+
{
|
|
219
|
+
id: "gpt-6-astra",
|
|
220
|
+
name: "6 Astra",
|
|
221
|
+
contextWindow: 272e3,
|
|
222
|
+
inputModalities: ["text", "image"],
|
|
223
|
+
defaultReasoningEffort: "medium",
|
|
224
|
+
reasoningProfile: "gpt-6-astra",
|
|
225
|
+
supportsReasoningSummary: true
|
|
226
|
+
},
|
|
214
227
|
{
|
|
215
228
|
id: "gpt-5.6-terra",
|
|
216
229
|
name: "5.6 Terra",
|
|
@@ -271,15 +284,20 @@ window.__ModuleLoader__.load({
|
|
|
271
284
|
];
|
|
272
285
|
const DEFAULT_VISIBLE_CODEX_MODEL_IDS = [
|
|
273
286
|
"gpt-5.6-sol",
|
|
287
|
+
"gpt-6-astra",
|
|
274
288
|
"gpt-5.6-terra",
|
|
275
289
|
"gpt-5.6-luna"
|
|
276
290
|
];
|
|
277
291
|
const DEFAULT_CODEX_MODEL = CODEX_MODEL_CATALOG[0];
|
|
278
292
|
const CONFIGURABLE_CONTEXT_MODEL_IDS = [
|
|
293
|
+
"gpt-6-astra",
|
|
279
294
|
"gpt-5.6-sol",
|
|
280
295
|
"gpt-5.6-terra",
|
|
281
296
|
"gpt-5.6-luna"
|
|
282
297
|
];
|
|
298
|
+
function contextWindowLimitForModel(model) {
|
|
299
|
+
return model === "gpt-6-astra" ? GPT_6_ASTRA_MAX_CONTEXT_WINDOW : GPT_56_MAX_CONTEXT_WINDOW;
|
|
300
|
+
}
|
|
283
301
|
function resolveCodexCatalogEntry(model) {
|
|
284
302
|
return CODEX_MODEL_CATALOG.find((entry) => entry.id === model) ?? DEFAULT_CODEX_MODEL;
|
|
285
303
|
}
|
|
@@ -495,7 +513,7 @@ window.__ModuleLoader__.load({
|
|
|
495
513
|
};
|
|
496
514
|
const updateContextWindow = async (model) => {
|
|
497
515
|
const current = status?.preferences.contextWindowOverrides[model] ?? resolveCodexCatalogEntry(model).contextWindow;
|
|
498
|
-
const parsed = parseCapacity(contextDrafts[model] ?? String(current));
|
|
516
|
+
const parsed = parseCapacity(contextDrafts[model] ?? String(current), contextWindowLimitForModel(model));
|
|
499
517
|
if (parsed === null) {
|
|
500
518
|
setError(t("contextWindowInvalid"));
|
|
501
519
|
return;
|
|
@@ -982,7 +1000,7 @@ window.__ModuleLoader__.load({
|
|
|
982
1000
|
const entry = resolveCodexCatalogEntry(model);
|
|
983
1001
|
const fallback = preferences?.contextWindowOverrides?.[model] ?? entry.contextWindow;
|
|
984
1002
|
const draft = contextDrafts[model];
|
|
985
|
-
const parsedDraft = draft === void 0 ? fallback : parseCapacity(draft);
|
|
1003
|
+
const parsedDraft = draft === void 0 ? fallback : parseCapacity(draft, contextWindowLimitForModel(model));
|
|
986
1004
|
const dirty = draft !== void 0 && parsedDraft !== fallback;
|
|
987
1005
|
const inputId = `dsh-codex-context-${model}`;
|
|
988
1006
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
@@ -1269,9 +1287,9 @@ window.__ModuleLoader__.load({
|
|
|
1269
1287
|
const parsed = Number(matched[1]) * multiplier;
|
|
1270
1288
|
return Number.isSafeInteger(parsed) && parsed >= 1 ? parsed : null;
|
|
1271
1289
|
}
|
|
1272
|
-
function parseCapacity(value) {
|
|
1290
|
+
function parseCapacity(value, maxContextWindow = GPT_56_MAX_CONTEXT_WINDOW) {
|
|
1273
1291
|
const parsed = parsePositiveCapacity$1(value);
|
|
1274
|
-
return parsed !== null && parsed <=
|
|
1292
|
+
return parsed !== null && parsed <= maxContextWindow ? parsed : null;
|
|
1275
1293
|
}
|
|
1276
1294
|
function formatCapacity$1(value) {
|
|
1277
1295
|
if (value % 1e3 === 0) return `${value / 1e3}K`;
|
|
@@ -1405,10 +1423,10 @@ window.__ModuleLoader__.load({
|
|
|
1405
1423
|
subagentMaxDepthHint: "限制子代理的递归层级(0–3);0 禁止创建子代理。",
|
|
1406
1424
|
subagentDisabled: "已禁用",
|
|
1407
1425
|
levels: "层",
|
|
1408
|
-
contextWindows: "
|
|
1409
|
-
contextWindowsHint: "默认 272K
|
|
1426
|
+
contextWindows: "模型上下文窗口",
|
|
1427
|
+
contextWindowsHint: "默认 272K;6 Astra 最高 872K,GPT-5.6 最高 1M。该值用于 DSH 的压缩与溢出判断,可输入 872K、512K 等容量。",
|
|
1410
1428
|
contextWindow: "上下文窗口",
|
|
1411
|
-
contextWindowInvalid: "
|
|
1429
|
+
contextWindowInvalid: "上下文窗口必须是正整数,且不能超过模型上限(6 Astra 为 872K,GPT-5.6 为 1M);可使用 K 或 M 后缀。",
|
|
1412
1430
|
saveContextWindow: "保存上下文窗口",
|
|
1413
1431
|
save: "保存",
|
|
1414
1432
|
tokens: "tokens",
|
|
@@ -1536,10 +1554,10 @@ window.__ModuleLoader__.load({
|
|
|
1536
1554
|
subagentMaxDepthHint: "Limits child levels for subagents (0–3); 0 disables subagents.",
|
|
1537
1555
|
subagentDisabled: "Disabled",
|
|
1538
1556
|
levels: "levels",
|
|
1539
|
-
contextWindows: "
|
|
1540
|
-
contextWindowsHint: "Defaults to 272K, with
|
|
1557
|
+
contextWindows: "Model context windows",
|
|
1558
|
+
contextWindowsHint: "Defaults to 272K, with up to 872K for 6 Astra and 1M for GPT-5.6. DSH uses it for compaction and overflow detection; values such as 872K and 512K are accepted.",
|
|
1541
1559
|
contextWindow: "Context window",
|
|
1542
|
-
contextWindowInvalid: "The context window must be
|
|
1560
|
+
contextWindowInvalid: "The context window must be a positive integer within the model limit (872K for 6 Astra, 1M for GPT-5.6). K and M suffixes are accepted.",
|
|
1543
1561
|
saveContextWindow: "Save context window",
|
|
1544
1562
|
save: "Save",
|
|
1545
1563
|
tokens: "tokens",
|