dsh-codex-connect 0.1.0-alpha.4.45 → 0.1.0-alpha.4.46

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/INSTALL.md CHANGED
@@ -4,7 +4,7 @@ Published Alpha 4.43 is verified with the exact DSH `0.1.7-rc.1` model-runtime p
4
4
 
5
5
  Install `dsh-codex-connect` into one requested DeepSeek Harness profile without changing its current default model, search route, global configuration, or OAuth state.
6
6
 
7
- Channel snapshot on 2026-09-24: npm `alpha` points to `0.1.0-alpha.4.43`; `latest` remains on `0.1.0-alpha.4.41`. Use the exact-version command for the installed DSH version. Publishing an Alpha and promoting the default installation channel are separate actions.
7
+ Channel snapshot on 2026-09-24: npm `alpha` and `latest` both point to `0.1.0-alpha.4.45`. Use the exact-version command for the installed DSH version. Publishing an Alpha and promoting the default installation channel are separate actions.
8
8
 
9
9
  ## Safety requirements
10
10
 
@@ -30,7 +30,7 @@ Check `dsh --version` before changing the requested profile. Use `dsh --help` to
30
30
  | `0.1.5-alpha.1` | `0.1.0-alpha.4.41` |
31
31
  | `0.1.5-rc.1` | `0.1.0-alpha.4.41` |
32
32
  | `0.1.5-rc.2` | `0.1.0-alpha.4.41` |
33
- | `0.1.7-rc.1` | `0.1.0-alpha.4.43` |
33
+ | `0.1.7-rc.1` | `0.1.0-alpha.4.45` |
34
34
 
35
35
  If your exact DSH version is unknown or not listed, preserve the installed host, report that the combination is unverified, and verify it before making installation changes. A missing record does not prove incompatibility, and the catalog's latest verified DSH version is not the latest upstream release. Do not recommend upgrading or downgrading DSH merely to match a row. Investigate any specific failure and seek verification of the installed combination. Do not blindly install `dsh-codex-connect@alpha`: `alpha` is a moving tag, not a compatibility guarantee. Do not infer support for newer DSH versions from these rows.
36
36
 
@@ -76,7 +76,7 @@ Alpha 4.33 omits the `modelErrors` profile field required by RC model packages,
76
76
  For the exact DSH `0.1.7-rc.1` pairing, use Alpha 4.43:
77
77
 
78
78
  ```sh
79
- dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.43
79
+ dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.45
80
80
  ```
81
81
 
82
82
  For DSH `0.1.2-alpha.5`, use Alpha 4.25:
@@ -85,7 +85,7 @@ Alpha 4.33 omits the `modelErrors` profile field required by RC model packages,
85
85
  dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.25
86
86
  ```
87
87
 
88
- If npm is unavailable after the matching GitHub prerelease is created, use `dsh plugin --profile web add 'github:franksong2702/dsh-codex-connect#v0.1.0-alpha.4.21'` only for the DSH `0.1.1-rc.2` combination, `dsh plugin --profile web add 'github:franksong2702/dsh-codex-connect#v0.1.0-alpha.4.23'` only for the DSH `0.1.2-alpha.2` combination, `dsh plugin --profile web add 'github:franksong2702/dsh-codex-connect#v0.1.0-alpha.4.25'` only for the DSH `0.1.2-alpha.5` combination, `dsh plugin --profile web add 'github:franksong2702/dsh-codex-connect#v0.1.0-alpha.4.41'` only for the DSH `0.1.2-rc.1`, `0.1.5-alpha.1`, `0.1.5-rc.1`, and `0.1.5-rc.2` combinations, or `dsh plugin --profile web add 'github:franksong2702/dsh-codex-connect#v0.1.0-alpha.4.43'` only for DSH `0.1.7-rc.1`.
88
+ If npm is unavailable after the matching GitHub prerelease is created, use `dsh plugin --profile web add 'github:franksong2702/dsh-codex-connect#v0.1.0-alpha.4.21'` only for the DSH `0.1.1-rc.2` combination, `dsh plugin --profile web add 'github:franksong2702/dsh-codex-connect#v0.1.0-alpha.4.23'` only for the DSH `0.1.2-alpha.2` combination, `dsh plugin --profile web add 'github:franksong2702/dsh-codex-connect#v0.1.0-alpha.4.25'` only for the DSH `0.1.2-alpha.5` combination, `dsh plugin --profile web add 'github:franksong2702/dsh-codex-connect#v0.1.0-alpha.4.41'` only for the DSH `0.1.2-rc.1`, `0.1.5-alpha.1`, `0.1.5-rc.1`, and `0.1.5-rc.2` combinations, or `dsh plugin --profile web add 'github:franksong2702/dsh-codex-connect#v0.1.0-alpha.4.45'` only for DSH `0.1.7-rc.1`.
89
89
 
90
90
  3. Run `dsh web --help` once to compose the installed profile without starting the server. DSH `0.1.2-rc.1` prepares profile plugin dependency fallback during this step.
91
91
  4. Run `dsh --profile web --dump-config` and require exactly one `llm-openai-codex` row loading `dsh-codex-connect`.
package/README.i18n.yaml CHANGED
@@ -2,5 +2,5 @@
2
2
  # side as of the last confirmed-consistent state. Both languages carry equal authority;
3
3
  # after editing either side, bring the other along and re-record with:
4
4
  # git hash-object README.md docs/README.zh.md
5
- README.md: 1944b620eca818c50a7fa94e694706f0cd43f654
6
- docs/README.zh.md: dec04b07db9a90fd2babd153073716d9d9b69409
5
+ README.md: 3dd09c3af313022796d95809cad3b53130eb6a1a
6
+ docs/README.zh.md: 3c5b9bf71227a795131522821424574b72d24088
package/README.md CHANGED
@@ -16,7 +16,7 @@ This guide describes the published pairing below. Check `dsh --version` first an
16
16
 
17
17
  | Requirement | Verified pairing |
18
18
  |---|---|
19
- | Codex Connect | `0.1.0-alpha.4.43` |
19
+ | Codex Connect | `0.1.0-alpha.4.45` |
20
20
  | DeepSeek Harness | `0.1.7-rc.1` |
21
21
  | Node.js | `^22.19.0 \|\| >=24.0.0` |
22
22
  | Account | ChatGPT OAuth with access to the requested Codex model; availability is decided by OpenAI |
@@ -28,7 +28,7 @@ On stock DSH `0.1.7-rc.1`, ordinary Composer works, but Task controls remain pau
28
28
  ### 1. Install
29
29
 
30
30
  ```sh
31
- dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.43
31
+ dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.45
32
32
  dsh web
33
33
  ```
34
34
 
@@ -75,7 +75,7 @@ All options below are off on a fresh installation. Edit them in **Settings → P
75
75
 
76
76
  | Capability | Enable with | Important behavior |
77
77
  |---|---|---|
78
- | Proxy | `enableProxy` | Credential-free HTTP(S), scoped to this plugin's traffic. A failed proxy request does not silently retry directly. |
78
+ | Proxy | `enableProxy` | Credential-free HTTP(S), scoped to this plugin's traffic, including compressed OAuth and quota responses. Unrelated Fetch calls retain the host's original transport. A failed proxy request does not silently retry directly. |
79
79
  | Codex Search | `enableSearch` | Selects Codex for the entire profile's search route; disabling restores the previously active route. |
80
80
  | Luna Reserve | `enableReserveFallback` | Uses the hidden Reserve route only when the backend explicitly authorizes it for the captured account; never changes global defaults or retries a generic `429`. |
81
81
  | Image viewing | `enableImageTool` | Adds `view_image` to vision-capable models for local files and validated public HTTP(S) images. |
package/docs/README.zh.md CHANGED
@@ -16,7 +16,7 @@ Codex Connect 为标准 Harness agent loop 添加 `openai-codex` 模型提供方
16
16
 
17
17
  | 要求 | 已验证组合 |
18
18
  |---|---|
19
- | Codex Connect | `0.1.0-alpha.4.43` |
19
+ | Codex Connect | `0.1.0-alpha.4.45` |
20
20
  | DeepSeek Harness | `0.1.7-rc.1` |
21
21
  | Node.js | `^22.19.0 \|\| >=24.0.0` |
22
22
  | 账户 | 通过 ChatGPT OAuth 使用所请求的 Codex 模型;可用性由 OpenAI 决定 |
@@ -28,7 +28,7 @@ Codex Connect 为标准 Harness agent loop 添加 `openai-codex` 模型提供方
28
28
  ### 1. 安装
29
29
 
30
30
  ```sh
31
- dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.43
31
+ dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.45
32
32
  dsh web
33
33
  ```
34
34
 
@@ -75,7 +75,7 @@ Alpha 4.40 还会在旧提供方目录缺失时补充 `gpt-6-sol` 和 `gpt-6-lun
75
75
 
76
76
  | 能力 | 启用字段 | 重要行为 |
77
77
  |---|---|---|
78
- | 代理 | `enableProxy` | 不带凭据的 HTTP(S),只作用于本插件流量。代理请求失败不会静默改走直连。 |
78
+ | 代理 | `enableProxy` | 不带凭据的 HTTP(S),只作用于本插件流量,包括压缩的 OAuth 和额度响应;无关的 Fetch 请求仍使用宿主原来的传输方式。代理请求失败不会静默改走直连。 |
79
79
  | Codex 搜索 | `enableSearch` | 将整个 profile 的搜索路由切换为 Codex;关闭后恢复之前的路由。 |
80
80
  | Luna Reserve | `enableReserveFallback` | 只在服务端为当前已固定账户明确授权时使用隐藏的 Reserve 路由;不修改全局默认模型,也不因普通 `429` 重试。 |
81
81
  | 图片查看 | `enableImageTool` | 为视觉模型添加 `view_image`,读取本地文件和经过校验的公网 HTTP(S) 图片。 |
@@ -0,0 +1,7 @@
1
+ # Keep compressed Fetch responses decodable through the Codex proxy
2
+
3
+ On Windows with Node 24, the plugin's npm Undici 8 `ProxyAgent` can serve Node's built-in Fetch through its legacy v1 dispatcher bridge, but the returned response may lose `content-encoding` while retaining gzip bytes. The resulting HTTP 200 fails JSON parsing during OAuth exchange or quota refresh. A credential-free Windows probe reproduced `content-encoding: null` and the gzip magic bytes with the published Alpha 4.45 package. The equivalent macOS probe succeeded; local macOS tests alone do not prove the Windows path.
4
+
5
+ The proxy manager now routes Fetch calls made inside its `AsyncLocalStorage` scope through the same npm Undici runtime that owns its proxy agent. Outside that scope, the original host Fetch remains the fallback. The wrapper is installed only while a proxy manager owns it, follows a third-party Fetch replacement on the next acquisition, and restores the previous function on final disposal if still owned. Native `Request` instances are converted into their URL and request options because npm Undici's separate `Request` class does not accept them directly. The existing legacy dispatcher bridge remains for other Node HTTP clients; this fix does not alter direct requests or retry a failed proxy request without the proxy.
6
+
7
+ The keyless test serves gzip JSON through a local CONNECT proxy, checks both URL and native `Request` inputs, confirms the proxy was used, and checks Fetch restoration. PR CI runs that test on Windows Node 24.15.0 in addition to Ubuntu. It does not use real OAuth credentials or prove a browser login until the patched plugin is installed and exercised there.
@@ -0,0 +1,21 @@
1
+ # Codex Connect Alpha 4.46 — Windows proxy response decoding
2
+
3
+ ## English
4
+
5
+ When the optional Codex proxy is enabled on Windows, Alpha 4.45 can receive a successful compressed response but expose its gzip bytes without the encoding header. OAuth token exchange or quota refresh can then fail while parsing JSON. Alpha 4.46 routes Fetch calls inside the plugin's proxy scope through the same Undici runtime as its proxy agent; unrelated Fetch calls keep the host's original transport. A failed proxy request still does not retry directly.
6
+
7
+ This release targets DeepSeek Harness `0.1.7-rc.1`. The published 4.45 failure was reproduced without credentials on a Windows PC. The fix passed keyless Windows CI, including compressed JSON and proxy ownership checks. Real Chrome OAuth and quota refresh with the patched package on that PC remain unverified. This release does not address the separate, still-unconfirmed message-source report in Issue #261. Publishing to `alpha` does not promote npm `latest` or install the plugin in an existing profile.
8
+
9
+ After npm publication is independently confirmed, install this exact version with:
10
+
11
+ ```sh
12
+ dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.46
13
+ ```
14
+
15
+ ## 中文
16
+
17
+ 在 Windows 上启用可选的 Codex 代理时,Alpha 4.45 可能收到成功的压缩响应,却丢失编码标头、把 gzip 原始字节交给调用方,导致 OAuth 换取凭据或额度刷新在解析 JSON 时失败。Alpha 4.46 让插件代理作用域内的 Fetch 使用与代理组件相同的 Undici 运行时;无关的 Fetch 仍使用宿主原有传输方式。代理请求失败时仍不会静默改走直连。
18
+
19
+ 本版针对 DeepSeek Harness `0.1.7-rc.1`。已在 Windows PC 上不使用凭据复现发布版 4.45 的故障;修复通过了无凭据的 Windows CI,包括压缩 JSON 和代理所有权测试。该 PC 上安装修复包后的真实 Chrome OAuth 与额度刷新仍未验收。本版不处理 Issue #261 尚未确认的消息来源报告。发布到 `alpha` 不会同步提升 npm `latest`,也不会自动安装到现有 profile。
20
+
21
+ 独立确认 npm 发布后,可使用上面的精确版本命令安装。
package/lib/bin.js CHANGED
@@ -765,7 +765,7 @@ async function detectCompatibility(options = {}) {
765
765
  }
766
766
  //#endregion
767
767
  //#region src/version.ts
768
- const CODEX_CONNECT_VERSION = "0.1.0-alpha.4.45";
768
+ const CODEX_CONNECT_VERSION = "0.1.0-alpha.4.46";
769
769
  //#endregion
770
770
  //#region src/doctor.ts
771
771
  /** Secret-free diagnostics and duplicate-provider guidance. */
package/lib/client.js CHANGED
@@ -6526,7 +6526,7 @@ window.__ModuleLoader__.load({
6526
6526
  }
6527
6527
  //#endregion
6528
6528
  //#region src/version.ts
6529
- const CODEX_CONNECT_VERSION = "0.1.0-alpha.4.45";
6529
+ const CODEX_CONNECT_VERSION = "0.1.0-alpha.4.46";
6530
6530
  //#endregion
6531
6531
  //#region src/client/OpenAICodexModelsCard.tsx
6532
6532
  /** Compact Models account entry with quota disclosure and shared configuration. */
package/lib/index.js CHANGED
@@ -4184,6 +4184,37 @@ let previousDispatcher;
4184
4184
  const legacySymbol = Symbol.for("undici.globalDispatcher.1");
4185
4185
  let installedLegacy;
4186
4186
  let previousLegacy;
4187
+ let installedFetch;
4188
+ let previousFetch;
4189
+ const scopedUndiciFetch = fetch$1;
4190
+ function installScopedFetch(fallback) {
4191
+ previousFetch = fallback;
4192
+ installedFetch = (input, init) => {
4193
+ if (proxyScope.getStore() === void 0) return fallback(input, init);
4194
+ if (input instanceof Request) {
4195
+ const request = new Request(input, init);
4196
+ return scopedUndiciFetch(request.url, {
4197
+ method: request.method,
4198
+ headers: request.headers,
4199
+ signal: request.signal,
4200
+ redirect: request.redirect,
4201
+ cache: request.cache,
4202
+ credentials: request.credentials,
4203
+ integrity: request.integrity,
4204
+ keepalive: request.keepalive,
4205
+ mode: request.mode,
4206
+ referrer: request.referrer,
4207
+ referrerPolicy: request.referrerPolicy,
4208
+ ...request.body === null ? {} : {
4209
+ body: request.body,
4210
+ duplex: "half"
4211
+ }
4212
+ });
4213
+ }
4214
+ return scopedUndiciFetch(input, init);
4215
+ };
4216
+ globalThis.fetch = installedFetch;
4217
+ }
4187
4218
  function installLegacy(fallback, bridge) {
4188
4219
  previousLegacy = fallback;
4189
4220
  installedLegacy = { dispatch: (...args) => {
@@ -4199,6 +4230,7 @@ function ensureInstalled(owner) {
4199
4230
  installedDispatcher = new ScopedProxyDispatcher(current);
4200
4231
  setGlobalDispatcher(installedDispatcher);
4201
4232
  installLegacy(legacy, Reflect.get(globalThis, legacySymbol));
4233
+ installScopedFetch(globalThis.fetch);
4202
4234
  } else if (current !== installedDispatcher) {
4203
4235
  installedDispatcher = new ScopedProxyDispatcher(current);
4204
4236
  previousDispatcher = current;
@@ -4208,6 +4240,7 @@ function ensureInstalled(owner) {
4208
4240
  setGlobalDispatcher(installedDispatcher);
4209
4241
  installLegacy(legacy, Reflect.get(globalThis, legacySymbol));
4210
4242
  }
4243
+ if (globalThis.fetch !== installedFetch) installScopedFetch(globalThis.fetch);
4211
4244
  activeOwners.add(owner);
4212
4245
  }
4213
4246
  function removeOwner(owner) {
@@ -4221,8 +4254,11 @@ function removeOwner(owner) {
4221
4254
  previousDispatcher = void 0;
4222
4255
  if (getGlobalDispatcher() === installed && previous !== void 0) setGlobalDispatcher(previous);
4223
4256
  if (restoreLegacy !== void 0) Reflect.set(globalThis, legacySymbol, restoreLegacy);
4257
+ if (globalThis.fetch === installedFetch && previousFetch !== void 0) globalThis.fetch = previousFetch;
4224
4258
  installedLegacy = void 0;
4225
4259
  previousLegacy = void 0;
4260
+ installedFetch = void 0;
4261
+ previousFetch = void 0;
4226
4262
  }
4227
4263
  function isPromiseLike(value) {
4228
4264
  return typeof value === "object" && value !== null && "then" in value && typeof value.then === "function";
@@ -5294,7 +5330,7 @@ function registerOpenAICodexOriginalImageRoute(ctx, trustedOrigins, assets) {
5294
5330
  }
5295
5331
  //#endregion
5296
5332
  //#region src/version.ts
5297
- const CODEX_CONNECT_VERSION = "0.1.0-alpha.4.45";
5333
+ const CODEX_CONNECT_VERSION = "0.1.0-alpha.4.46";
5298
5334
  //#endregion
5299
5335
  //#region src/doctor.ts
5300
5336
  /** Secret-free diagnostics and duplicate-provider guidance. */
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "dsh-codex-connect",
3
3
  "displayName": "Codex Connect",
4
4
  "description": "ChatGPT OAuth and Codex models for DeepSeek Harness.",
5
- "version": "0.1.0-alpha.4.45",
5
+ "version": "0.1.0-alpha.4.46",
6
6
  "author": "Frank Song",
7
7
  "contributors": [
8
8
  "Yan-Zero (original dsh-codex author)"