dsh-codex-connect 0.1.0-alpha.4.3 → 0.1.0-alpha.4.30

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.
Files changed (56) hide show
  1. package/INSTALL.md +80 -14
  2. package/MIGRATION.md +18 -0
  3. package/NOTICE +5 -0
  4. package/README.i18n.yaml +4 -4
  5. package/README.md +87 -69
  6. package/VERSIONING.md +65 -0
  7. package/compatibility.json +29 -0
  8. package/cordis.patch.yml +3 -0
  9. package/docs/README.zh.md +128 -0
  10. package/docs/VERSIONING.zh.md +65 -0
  11. package/docs/agent-notes/account-recovery-state.md +9 -0
  12. package/docs/agent-notes/auth-diagnostics-safety.md +5 -0
  13. package/docs/agent-notes/compatibility-refresh.md +17 -0
  14. package/docs/agent-notes/dispatcher-ownership.md +7 -0
  15. package/docs/agent-notes/env-proxy-dispatcher-preservation.md +7 -0
  16. package/docs/agent-notes/oauth-cancel-commit.md +9 -0
  17. package/docs/agent-notes/oauth-jwt-decoding.md +7 -0
  18. package/docs/agent-notes/original-image-fork-access.md +7 -0
  19. package/docs/agent-notes/request-response-lifecycle.md +7 -0
  20. package/docs/agent-notes/search-route-runtime-override.md +7 -0
  21. package/docs/assets/composer-capabilities.jpg +0 -0
  22. package/docs/assets/en/hero.jpg +0 -0
  23. package/docs/assets/en/image-generation.png +0 -0
  24. package/docs/assets/en/model-selector.jpg +0 -0
  25. package/docs/assets/en/oauth-status.jpg +0 -0
  26. package/docs/assets/en/plugin-configuration.jpg +0 -0
  27. package/docs/assets/en/plugin-entry.jpg +0 -0
  28. package/docs/assets/hero.jpg +0 -0
  29. package/docs/assets/model-selector.jpg +0 -0
  30. package/docs/assets/oauth-status.jpg +0 -0
  31. package/docs/assets/plugin-configuration.jpg +0 -0
  32. package/docs/assets/zh/hero.jpg +0 -0
  33. package/docs/assets/zh/image-generation.png +0 -0
  34. package/docs/assets/zh/model-selector.jpg +0 -0
  35. package/docs/assets/zh/oauth-status.jpg +0 -0
  36. package/docs/assets/zh/plugin-configuration.jpg +0 -0
  37. package/docs/assets/zh/plugin-entry.jpg +0 -0
  38. package/docs/auto-review.md +26 -0
  39. package/docs/auto-review.zh.md +26 -0
  40. package/docs/design.i18n.yaml +2 -2
  41. package/docs/design.md +7 -5
  42. package/docs/design.zh.md +7 -5
  43. package/docs/licenses/pi-ai-oauth.txt +21 -0
  44. package/docs/reference.i18n.yaml +4 -0
  45. package/docs/reference.md +143 -0
  46. package/docs/reference.zh.md +143 -0
  47. package/docs/versioning.i18n.yaml +4 -0
  48. package/lib/bin.js +620 -15
  49. package/lib/client.js +5956 -442
  50. package/lib/index.d.ts +509 -65
  51. package/lib/index.js +2 -2
  52. package/lib/src-D2Ig4NNT.js +6557 -0
  53. package/lib/undici-runtime-H2uktiw6.js +22 -0
  54. package/package.json +112 -48
  55. package/README.zh.md +0 -93
  56. package/lib/src-ILOioCkA.js +0 -1484
package/INSTALL.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Installation Runbook for CLI Agents
2
2
 
3
+ Alpha 4.29 is verified with DSH `0.1.2-rc.1` and its declared pi-ai range `^0.84.2`.
4
+
3
5
  Install `dsh-codex-connect` into one requested DeepSeek Harness profile without changing its current default model, search route, global configuration, or OAuth state.
4
6
 
5
7
  ## Safety requirements
@@ -12,26 +14,88 @@ Install `dsh-codex-connect` into one requested DeepSeek Harness profile without
12
14
 
13
15
  ## Install and validate
14
16
 
15
- 1. Check `dsh --version` or `dsh --help`. From a Harness checkout use `pnpm dsh`.
16
- 2. Install the package:
17
+ ### Select an exact version before installation
18
+
19
+ Check `dsh --version` before changing the requested profile. Use `dsh --help` to locate the CLI if needed; from a Harness checkout use `pnpm dsh --version`. Select an exact pair from [verified-compatibility.json](verified-compatibility.json):
20
+
21
+ | Installed DSH version | Codex Connect version to pin |
22
+ | --- | --- |
23
+ | `0.1.0-rc.7` | `0.1.0-alpha.4.14` |
24
+ | `0.1.1-rc.2` | `0.1.0-alpha.4.21` |
25
+ | `0.1.2-alpha.2` | `0.1.0-alpha.4.23` |
26
+ | `0.1.2-rc.1` | `0.1.0-alpha.4.29` |
27
+ | `0.1.2-alpha.5` | `0.1.0-alpha.4.25` |
28
+
29
+ If your exact DSH version is unknown or not listed, stop and verify the combination before installing. 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.
30
+
31
+ Alpha 4.29's verified contract is DSH plugin API packages `0.1.2-rc.1`, `@earendil-works/pi-ai` `^0.84.2`, and Node.js `^22.19.0 || >=24.0.0`. Alpha 4.25 remains the verified choice for DSH `0.1.2-alpha.5`, Alpha 4.23 remains the verified choice for DSH `0.1.2-alpha.2`, Alpha 4.21 remains the verified choice for DSH `0.1.1-rc.2`, and staying on DSH `0.1.0-rc.7` means selecting Alpha 4.14. Upgrading DSH is a separate decision: upgrade the DSH API packages and pi-ai together, then rerun `dsh-codex-connect doctor --json` and `pnpm --silent run check:compatibility` for the selected combination.
32
+
33
+ The Alpha 4.29 row reflects a fresh isolated installation and runtime probe. Historical rows remain the repository's existing verification record. This guidance does not change upstream DSH behavior or resolve [Issue #64](https://github.com/franksong2702/dsh-codex-connect/issues/64).
34
+
35
+ ### Install the selected version and validate
36
+
37
+ 1. Complete the version selection above. The commands below use `web`; substitute only the requested profile.
38
+ 2. Install the selected exact version. For DSH `0.1.0-rc.7`:
17
39
 
18
40
  ```sh
19
- dsh plugin --profile web add 'github:franksong2702/dsh-codex-connect#v0.1.0-alpha.4.3'
41
+ dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.14
20
42
  ```
21
43
 
22
- 3. Run `dsh --profile web --dump-config` and require exactly one `llm-openai-codex` row loading `dsh-codex-connect`.
23
- 4. Confirm the effective `agent-default-model` and `web.searchProvider` values are unchanged from before installation.
24
- 5. Run secret-free diagnostics:
44
+ For DSH `0.1.1-rc.2`, use Alpha 4.21:
45
+
46
+ ```sh
47
+ dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.21
48
+ ```
49
+
50
+ For DSH `0.1.2-alpha.2`, use Alpha 4.23:
51
+
52
+ ```sh
53
+ dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.23
54
+ ```
55
+
56
+ For DSH `0.1.2-rc.1`, use Alpha 4.29:
57
+
58
+ ```sh
59
+ dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.29
60
+ ```
61
+
62
+ For DSH `0.1.2-alpha.5`, use Alpha 4.25:
63
+
64
+ ```sh
65
+ dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.25
66
+ ```
67
+
68
+ 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, or `dsh plugin --profile web add 'github:franksong2702/dsh-codex-connect#v0.1.0-alpha.4.29'` only for the DSH `0.1.2-rc.1` combination.
69
+
70
+ 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.
71
+ 4. Run `dsh --profile web --dump-config` and require exactly one `llm-openai-codex` row loading `dsh-codex-connect`.
72
+ 5. Confirm the effective `agent-default-model` and `web.searchProvider` values are unchanged from before installation.
73
+ 6. Run secret-free diagnostics:
25
74
 
26
75
  ```sh
27
76
  dsh plugin --profile web exec dsh-codex-connect doctor
28
77
  ```
29
78
 
30
- 6. If the user explicitly requests login, open **Settings → Plugins → Plugin configuration → Codex Connect**, or check `status` and then use `login` or `login --device-code`. OAuth approval belongs to the user.
79
+ 7. If the user explicitly requests login, open **Settings → Plugins → Plugin configuration → Codex Connect**, or check `status` and then use `login` or `login --device-code`. OAuth approval belongs to the user.
80
+
81
+ Alpha 4.25 offers the same account actions in **Settings → Models → Openai-Codex**, plus a shared **More settings** dialog for model visibility, proxy, search, image, context-budget, and Auto-review controls. The original Plugin settings entry remains available; neither entry automatically starts login or changes model/search defaults.
82
+
83
+ When signed out, select **Authorize**. When signed in, use **Sign out** or **View quota**; use **More settings** for plugin options. If authorization is abandoned, use **Reopen authorization** or **Cancel sign-in** and retry; cancellation does not delete an existing account. Pending authorization expires after 10 minutes by default (`oauthTimeoutMs` in plugin configuration, applied on load).
84
+
85
+ ### Remote browser access
86
+
87
+ The default Web OAuth boundary is loopback-only. When DSH runs on one device and you open it from another device on a trusted network through an IP address or domain, run the following on the device that runs DSH with the exact origin from the browser address bar:
88
+
89
+ ```sh
90
+ dsh plugin --profile web exec dsh-codex-connect trust-origin http://192.168.1.20:3080
91
+ dsh plugin --profile web exec dsh-codex-connect trusted-origins
92
+ ```
93
+
94
+ The value is a full `http://` or `https://` origin including its port, not a bare device IP and not a path/query/fragment. Use `untrust-origin <origin>` to remove it. Restrict this to a trusted network and never expose the route publicly; use an SSH tunnel when that is safer. The Web client does not edit this list.
31
95
 
32
96
  ## Optional configuration
33
97
 
34
- Use **Settings → Plugins → Plugin configuration → Codex Connect** for live, staged Save/Discard edits. The package row accepts the same `enableSearch` and `enableImageTool` fields as its composition base, both defaulting to `false`. Enabling search registers a provider but does not select it; selecting `web.searchProvider: openai-codex` is a second explicit profile change. Setting `agent-default-model` to `openai-codex` is also a separate explicit change.
98
+ Use **Settings → Plugins → Plugin configuration → Codex Connect** for live, staged Save/Discard edits organized under Account & quota, Models, Network, and Capabilities. Switching modules preserves the draft. The same settings control `enableSearch`, `enableImageTool`, `enableImageGeneration`, and `enableAutoReview`; all four default to `false`. Enabling Auto-review permits bounded approval context, tool arguments, working directory, and the planned action to be sent to `chatgpt.com`; failures return to human approval. Enabling image generation uses the image generation capability included with the current GPT subscription and saves results as DSH attachments. Enabling search registers the provider and selects it while the capability remains enabled; disabling restores the previous provider before unregistering Codex Search. Setting `agent-default-model` to `openai-codex` remains a separate explicit change.
35
99
 
36
100
  Apply only requested choices and preserve unrelated keys:
37
101
 
@@ -40,19 +104,17 @@ Apply only requested choices and preserve unrelated keys:
40
104
  config:
41
105
  enableSearch: true
42
106
  enableImageTool: false
107
+ enableImageGeneration: false
108
+ enableAutoReview: false
43
109
  searchMode: live
44
110
 
45
- - id: web
46
- config:
47
- searchProvider: openai-codex
48
-
49
111
  - id: agent-default-model
50
112
  config:
51
113
  provider: openai-codex
52
114
  model: gpt-5.6-sol
53
115
  ```
54
116
 
55
- Do not add the last two rows unless the user separately requested those routing changes.
117
+ Do not add a separate `web` row for this UI action. Do not add the `agent-default-model` row unless the user separately requested that default.
56
118
 
57
119
  ## Conflict handling
58
120
 
@@ -60,11 +122,15 @@ Do not add the last two rows unless the user separately requested those routing
60
122
 
61
123
  ## Update and removal
62
124
 
125
+ Before updating, repeat the exact-version selection above. Use `@alpha` only after verifying that the version it currently resolves to is compatible with the installed DSH; otherwise pin the selected version in the update command.
126
+
63
127
  ```sh
64
- dsh plugin --profile web add 'github:franksong2702/dsh-codex-connect#<new-release-tag>'
128
+ dsh plugin --profile web update dsh-codex-connect@alpha
65
129
  dsh plugin --profile web remove dsh-codex-connect
66
130
  ```
67
131
 
132
+ Use an exact npm version when a reproducible update is required; use a GitHub tag only as the npm-unavailable fallback.
133
+
68
134
  Removal of the package and removal of its separate OAuth file are different actions. Run `dsh plugin --profile web exec dsh-codex-connect logout` only with explicit credential-deletion authorization.
69
135
 
70
136
  ## Completion report
package/MIGRATION.md CHANGED
@@ -10,3 +10,21 @@
10
10
  6. Run `--dump-config`, then `dsh-codex-connect doctor`. Do not run OAuth again when `status` already reports signed in.
11
11
 
12
12
  Rollback is the inverse package swap. Do not delete or copy the separate OAuth file during either direction. If Harness reports a duplicate `openai-codex` adapter, the old bundle or a manual provider row is still active; resolve that one row instead of changing credentials.
13
+
14
+ ## Repairing search history written by Alpha 4.10
15
+
16
+ Alpha 4.10 briefly wrote `web/openai-codex-search-llm-request` as a required private Session event. Because an external plugin cannot extend the Host persistence vocabulary across independent module instances, a newer Harness can refuse to read those histories after the event writer is removed.
17
+
18
+ Upgrade Codex Connect, then inspect the default `$DSH_HOME/sessions` root without changing it:
19
+
20
+ ```sh
21
+ dsh plugin --profile web exec dsh-codex-connect migrate-history --json
22
+ ```
23
+
24
+ If the dry run reports affected events, stop every DSH process that can write this Session root and apply the migration. `--confirm-stopped` is required together with `--apply`:
25
+
26
+ ```sh
27
+ dsh plugin --profile web exec dsh-codex-connect migrate-history --apply --confirm-stopped --json
28
+ ```
29
+
30
+ The migration changes only that retired event's envelope by adding `"ignorable": true`. It preserves event data, sequence, time, and the concatenated Zstandard frame layout, and creates `session.jsonl.zstd.pre-codex-search-history-migration` beside every changed artifact before replacing it. Keep that backup until you have reopened and verified the repaired Session. Re-running the command is safe. For a non-default JSONL persistence root, pass `--root /absolute/path/to/sessions`. SQLite and uncompressed JSONL stores are not modified by this command. Applying fails closed when the filesystem cannot create the required same-directory hard-link backup. Applying is also fail-closed on Windows; Windows users can run the dry-run only.
package/NOTICE CHANGED
@@ -13,3 +13,8 @@ release validation.
13
13
 
14
14
  The upstream material and the Codex Connect modifications are distributed
15
15
  under the Apache License, Version 2.0 included in LICENSE.
16
+
17
+ This product also includes OAuth login and refresh code from earendil-works/pi
18
+ (@earendil-works/pi-ai 0.84.4), under the MIT license reproduced in
19
+ docs/licenses/pi-ai-oauth.txt. JWT payload decoding, callback connection cleanup
20
+ and structured refresh rejection handling are modified.
package/README.i18n.yaml CHANGED
@@ -1,6 +1,6 @@
1
- # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
1
+ # Bilingual-pair consistency record: the git blob hash of each
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
- # git hash-object README.md README.zh.md
5
- README.md: e7a63add3ad36f0291b42190cdbf16e2c655a3b8
6
- README.zh.md: bae8717ef5c8c8221d7576ec5b889b9a206991f3
4
+ # git hash-object README.md docs/README.zh.md
5
+ README.md: a46589829b432cfcb97af069f7d7a7b3080e42af
6
+ docs/README.zh.md: c42807c90ad4fcc4a4850d1228cfd6330b2bc184
package/README.md CHANGED
@@ -1,110 +1,128 @@
1
1
  # Codex Connect
2
2
 
3
- English | [中文](README.zh.md)
3
+ [![npm version](https://img.shields.io/npm/v/dsh-codex-connect/alpha?label=npm%20alpha&color=cb3837)](https://www.npmjs.com/package/dsh-codex-connect)
4
4
 
5
- Connect your ChatGPT subscription to DeepSeek Harness with OAuth, user-controlled defaults, Harness-native approvals, diagnostics, and reliable session recovery.
5
+ English | [中文](docs/README.zh.md)
6
6
 
7
- `dsh-codex-connect` adds the `openai-codex` model catalog and a separate ChatGPT OAuth login. Models run through Harness's normal LLM service, so streaming, tool calls, reasoning replay, compaction, filesystem controls, permission gates, and approval prompts remain Harness-owned. It does not turn a ChatGPT subscription into an OpenAI Platform API credential.
7
+ Connect your ChatGPT subscription to DeepSeek Harness with OAuth, optional GPT Image generation, user-controlled defaults, Harness-native approvals, diagnostics, and reliable session recovery.
8
8
 
9
- Installation is additive. The bundle does not replace the current default model or search route, and its standalone search provider and `view_image` tool are disabled until explicitly enabled.
9
+ Community Alpha — not affiliated with or endorsed by OpenAI, ChatGPT, Codex, DeepSeek, or DeepSeek Harness.
10
10
 
11
- ## Install
11
+ Codex Connect adds the `openai-codex` model provider to the normal Harness agent loop. Harness continues to manage tools, permissions, approvals, attachments, session persistence, compaction, and recovery. Installing the plugin does not change your default model or search route, and it does not turn a ChatGPT subscription into an OpenAI Platform API key.
12
+
13
+ ## Quick start
14
+
15
+ This guide describes the published pairing below. Check `dsh --version` first; for another DSH version, use [Installation and upgrades](INSTALL.md). A moving npm tag such as `alpha` is not a compatibility guarantee.
16
+
17
+ | Requirement | Verified pairing |
18
+ |---|---|
19
+ | Codex Connect | `0.1.0-alpha.4.29` |
20
+ | DeepSeek Harness | `0.1.2-rc.1` |
21
+ | Node.js | `^22.19.0 \|\| >=24.0.0` |
22
+ | Account | ChatGPT OAuth with access to the requested Codex model; availability is decided by OpenAI |
23
+
24
+ ### 1. Install
12
25
 
13
26
  ```sh
14
- dsh plugin --profile web add 'github:franksong2702/dsh-codex-connect#v0.1.0-alpha.4.3'
27
+ dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.29
15
28
  dsh web
16
29
  ```
17
30
 
18
- This installs the current alpha directly from its tagged GitHub release using Harness's supported Git package path. From a DeepSeek Harness source checkout, prefix commands with `pnpm`. For a local checkout, install `link:/absolute/path/to/dsh-codex-connect`.
31
+ Replace `web` with your existing profile name; use that same profile when starting Harness. From a DSH source checkout, prefix commands with `pnpm`. See [INSTALL.md](INSTALL.md) for other profiles and installation checks.
32
+
33
+ ### 2. Authorize and select a model
19
34
 
20
- Sign in from **Settings → Plugins → Plugin configuration → Codex Connect → Sign in with ChatGPT**, or use the CLI:
35
+ Open **Settings → Models → Openai-Codex → Authorize**, then complete approval yourself in the browser. If an embedded window is blocked, select **Open ChatGPT sign-in page**. Choose an `openai-codex` model in the normal Harness model picker.
36
+
37
+ Never paste an authorization URL, code, token, or account identifier into an issue, log, chat, or configuration file. For a browser on another device, follow [Remote browser authorization](docs/reference.md#remote-browser-authorization).
38
+
39
+ ### 3. Check the installation
21
40
 
22
41
  ```sh
23
- dsh plugin --profile web exec dsh-codex-connect login
24
- dsh plugin --profile web exec dsh-codex-connect status
25
- dsh plugin --profile web exec dsh-codex-connect doctor
42
+ dsh plugin --profile web exec dsh-codex-connect status --json
43
+ dsh plugin --profile web exec dsh-codex-connect doctor --json
26
44
  ```
27
45
 
28
- The doctor command reads process and filesystem metadata only. It never opens the OAuth document or prints a token, authorization URL, authorization code, account id, or auth-file content.
46
+ `status --json` exits `0` when signed in and `1` when signed out, without starting OAuth. `doctor --json` reports local installation diagnostics without a network request or raw credentials. A passing diagnostic is not proof of model access; verify that with an actual request.
29
47
 
30
- ## Explicit configuration
48
+ <p align="center">
49
+ <img src="https://raw.githubusercontent.com/franksong2702/dsh-codex-connect/main/docs/assets/en/hero.jpg" alt="Codex Connect — ChatGPT OAuth for DeepSeek Harness" width="100%">
50
+ </p>
31
51
 
32
- Open **Settings → Plugins → Plugin configuration → Codex Connect** to manage the ChatGPT account and optional capabilities in one card. Changes use Harness's revision-fenced settings store and apply live. **Save changes** affects only this plugin's capability section; it never selects a default model or global search route.
52
+ ## Core capabilities
33
53
 
34
- The installed bundle row remains the composition base and is intentionally inert beyond model-provider registration:
54
+ - **Accounts:** save up to 16 accounts on the DSH host and manually select the active account for subsequent requests. Account selection is not a per-session binding. Requests keep their captured account; the plugin does not rotate accounts or silently fail over.
55
+ - **Models and Astra support:** the currently verified DSH and plugin combination supports `gpt-6-astra`. The plugin supplies the Astra model definition missing from the current dependency catalog, so users can select it without separately upgrading the underlying library. When the installed dependency catalog includes Astra, the plugin prefers its native definition. A model appearing in the list does not mean the current account has permission to use it; overall compatibility with new dependency versions still requires separate verification.
56
+ - **Fast Mode:** request priority service for one conversation, off by default. Actual speed and quota consumption depend on the service; no fixed speed multiplier is guaranteed.
57
+ - **Quota:** show the server-returned `5h` and `7d` windows and reset times, normally refreshed every 60 seconds while signed in. Missing windows are not invented; Spark uses its separate quota bucket.
58
+ - **Update guidance:** compare the installed DSH/plugin pair with the public verification record without installing an upgrade.
35
59
 
36
- ```yaml
37
- - id: llm-openai-codex
38
- config:
39
- enableSearch: false
40
- enableImageTool: false
41
- ```
60
+ <p align="center">
61
+ <img src="https://raw.githubusercontent.com/franksong2702/dsh-codex-connect/main/docs/assets/composer-capabilities.jpg" alt="Fast Mode and quota controls in the DeepSeek Harness Composer" width="820">
62
+ </p>
42
63
 
43
- To make a Codex model the default for new agents, add or update the separate Harness row yourself:
64
+ ## Optional capabilities
44
65
 
45
- ```yaml
46
- - id: agent-default-model
47
- config:
48
- provider: openai-codex
49
- model: gpt-5.6-sol
50
- ```
66
+ All options below are off on a fresh installation. Edit them in **Settings → Plugins → Plugin configuration → Codex Connect** or **Settings → Models → Openai-Codex → More settings**, then select **Save changes**. A conflict or failed save preserves your draft.
51
67
 
52
- The card can enable Codex standalone search. Selecting it as the profile's global search provider remains a separate explicit choice:
68
+ | Capability | Enable with | Important behavior |
69
+ |---|---|---|
70
+ | Proxy | `enableProxy` | Credential-free HTTP(S), scoped to this plugin's traffic. A failed proxy request does not silently retry directly. |
71
+ | Codex Search | `enableSearch` | Selects Codex for the entire profile's search route; disabling restores the previously active route. |
72
+ | Image viewing | `enableImageTool` | Adds `view_image` to vision-capable models for local files and validated public HTTP(S) images. |
73
+ | GPT Image generation | `enableImageGeneration` | Prompt-only generation; availability, dimensions, and quota remain account- and service-controlled. |
74
+ | Auto-review | `enableAutoReview` | Sends bounded approval context, tool arguments, working directory, and the planned action to `chatgpt.com`, with confirmation on first enablement. Failures return to human approval. |
53
75
 
54
- ```yaml
55
- - id: llm-openai-codex
56
- config:
57
- enableSearch: true
58
- searchMode: live
59
- searchContextSize: medium
76
+ Use the image generation capability included with your current GPT subscription. Generated originals are stored separately from attachment previews; disabling the capability or uninstalling the plugin does not delete them. See [Configuration and recovery](docs/reference.md#search-and-image-tools) for storage and access rules.
60
77
 
61
- - id: web
62
- config:
63
- searchProvider: openai-codex
64
- ```
78
+ Auto-review operates after Harness policy requires approval; it does not bypass that policy. See [Auto-review behavior](docs/auto-review.md) before enabling it.
65
79
 
66
- To add the image-loading tool, set `enableImageTool: true` on `llm-openai-codex`. Browser paste/drop remains a Harness attachment feature and does not depend on this tool.
80
+ ## FAQ and important limits
67
81
 
68
- | Field | Default | Values |
69
- |---|---:|---|
70
- | `enableSearch` | `false` | boolean |
71
- | `enableImageTool` | `false` | boolean |
72
- | `searchModel` | `gpt-5.6-sol` | Codex model id |
73
- | `searchMode` | `cached` | `cached`, `indexed`, `live` |
74
- | `searchContextSize` | `medium` | `low`, `medium`, `high` |
75
- | `searchMaxOutputTokens` | `10000` | positive integer |
82
+ ### Where are my credentials stored?
76
83
 
77
- ## Credentials, diagnostics, and conflicts
84
+ OAuth credentials are stored on the host running DSH and used there to authenticate and send requests to OpenAI. Normal browser account responses return account summaries, not raw tokens. A remote browser device is not necessarily the DSH host.
78
85
 
79
- - OAuth is stored separately at `$DSH_HOME/.openai-codex-auth.json` (`~/.dsh` by default); `~/.codex/auth.json` is never copied or modified.
80
- - The parent directory and file are created with owner-only permissions where supported. Writes are atomic, and refresh writes use a cross-process file lock.
81
- - Status and diagnostics return only non-sensitive state. OAuth flow output is confined to an explicit `login` operation.
82
- - Browser OAuth routes accept only loopback clients and loopback Host/Origin values; sign-in fails closed when no valid HTTPS authorization URL arrives within 30 seconds.
83
- - A second adapter cannot own `openai-codex`. Startup fails with a focused hint when the legacy `dsh-codex` bundle or a manual provider row conflicts.
84
- - Removing the package does not delete OAuth state. Run `logout` only when credential removal is intended.
86
+ ### Does uninstalling sign me out?
85
87
 
86
- ## Compatibility and security boundary
88
+ No. OAuth state is stored separately at `$DSH_HOME/.openai-codex-auth.json` (`~/.dsh` by default). The plugin does not copy or modify `~/.codex/auth.json`. Use **Sign out all accounts**, or `logout` before uninstalling, only when deleting credentials is intentional.
87
89
 
88
- - Alpha compatibility targets the current Harness `0.1.0-rc.5` main-line composition and compatible `0.1.0-rc.6` plugin APIs, Node.js `^22.19.0 || >=24.0.0`, and the pinned `@earendil-works/pi-ai` Codex provider.
89
- - ChatGPT plan eligibility, model access, quotas, and backend behavior are controlled by OpenAI and may change.
90
- - The Codex endpoint does not enforce the ordinary Responses `max_output_tokens` field. Harness compaction still works, but that summary cap cannot be imposed server-side on this route.
91
- - Shell, filesystem, skills, MCP, subagents, approvals, permissions, attachments, session persistence, compaction, and recovery continue to come from the active Harness profile.
92
- - Remote `view_image` URLs are limited to public HTTP(S) destinations. Every DNS result and redirect is checked, and the connection is pinned to the validated address so localhost, private networks, link-local services, and cloud metadata endpoints remain unreachable.
93
- - No real OAuth operation is required for installation, build, tests, doctor, or package validation.
90
+ ### Can I switch accounts for different conversations?
94
91
 
95
- See [INSTALL.md](INSTALL.md) for the idempotent agent runbook, [MIGRATION.md](MIGRATION.md) for migration from `dsh-codex`, and [docs/design.md](docs/design.md) for architecture details.
92
+ Subsequent Codex requests use the selected active account; conversations do not bind their own accounts. Fast Mode is conversation-scoped. Cancelling a new authorization preserves existing accounts; an explicit revoked-refresh response asks for reauthorization, while temporary failures preserve the account for retry. See [Account behavior](docs/reference.md#accounts-models-and-quota).
96
93
 
97
- ## Development
94
+ ### Why does a listed model fail?
95
+
96
+ Account permissions, plugin/host compatibility, and network conditions all affect availability. Access on another client does not guarantee this integration will work. OpenAI controls model access, quota, context capacity, and service behavior; catalog entries are not proof of entitlement.
97
+
98
+ ### Can I keep the original `dsh-codex` plugin installed?
99
+
100
+ Not in the same effective configuration: both register `openai-codex`. Follow [MIGRATION.md](MIGRATION.md); remove only the confirmed conflicting entry, not credentials or unrelated providers.
101
+
102
+ ### What do diagnostics prove?
103
+
104
+ `doctor` is local. Capability and reviewer probes may make network requests and consume quota when their preconditions are met. `auto-review-probe` checks only the reviewer route and structured response, not the full Harness approval integration or execution of the reviewed action. Commands, limits, and exit codes are in the [diagnostics reference](docs/reference.md#capability-probes).
105
+
106
+ A missing entry in [verified-compatibility.json](verified-compatibility.json) means a DSH/plugin combination is unverified, not known to be broken. Do not infer support for newer hosts from an older pairing.
107
+
108
+ ## Documentation and development
109
+
110
+ - [Installation and upgrades](INSTALL.md)
111
+ - [Configuration, diagnostics, and recovery](docs/reference.md)
112
+ - [Migration from `dsh-codex`](MIGRATION.md)
113
+ - [Architecture and security details](docs/design.md)
114
+ - [Auto-review behavior](docs/auto-review.md)
115
+ - [Release runbook](RELEASING.md), [Contributing](CONTRIBUTING.md), and [Security policy](SECURITY.md)
98
116
 
99
117
  ```sh
100
118
  pnpm install --frozen-lockfile
101
119
  pnpm run check
120
+ pnpm run test:browser
121
+ pnpm run check:dsh-install
102
122
  ```
103
123
 
104
- ## Legal / Acknowledgements
105
-
106
- Copyright 2026 Frank Song for the modifications and additional work in Codex Connect. This project includes software derived from [Yan-Zero/dsh-codex](https://github.com/Yan-Zero/dsh-codex); Copyright 2026 Yan-Zero is retained for the upstream material. Both are distributed under Apache-2.0, with details in [NOTICE](NOTICE). This project is not affiliated with or endorsed by OpenAI, ChatGPT, Codex, DeepSeek, or DeepSeek Harness.
124
+ `check` covers static checks, unit tests, build, compatibility, and packaging. Browser regression and isolated DSH installation are separate commands. These checks use no real OAuth authorization and do not replace real-account acceptance.
107
125
 
108
- ## License
126
+ ## License and acknowledgements
109
127
 
110
- Apache-2.0
128
+ Copyright 2026 Frank Song for Codex Connect modifications and additional work. This project contains software derived from [Yan-Zero/dsh-codex](https://github.com/Yan-Zero/dsh-codex); Copyright 2026 Yan-Zero is retained for upstream material. Both are distributed under Apache-2.0; see [NOTICE](NOTICE).
package/VERSIONING.md ADDED
@@ -0,0 +1,65 @@
1
+ # Versioning policy
2
+
3
+ English | [中文](docs/VERSIONING.zh.md)
4
+
5
+ Codex Connect versions identify plugin releases independently of DeepSeek Harness. Show the plugin version and its verified DSH pairing together; do not infer one from the other.
6
+
7
+ ## Release identity and phase
8
+
9
+ The current release series is `0.1.0-alpha.4.x`. Increment the final counter for another release in this series; a DSH update does not reset it. This policy does not rename any existing release or select a new version.
10
+
11
+ The publishing workflow accepts `MAJOR.MINOR.PATCH-alpha.NUMBER[.NUMBER…]`, with nonnegative integer components and no leading zeroes. Build metadata is not a release counter: SemVer ignores `+build.n` when comparing versions, and the pinned npm publishing implementation removes it. Use a distinct, higher-precedence version for every new package. Never overwrite a published package or move its release tag to different content.
12
+
13
+ The plugin's public behavior includes configuration, tools, commands, and stored data. In the `0.y.z` development period, incompatible changes require explicit release notes and migration guidance; intentionally starting a new incompatible release line increments the plugin minor version. Routine iterations within the current Alpha line increment its prerelease counter. Copying a host's version is not a substitute for deciding the plugin's change scope.
14
+
15
+ Alpha, Beta, RC, and a non-prerelease version describe the plugin's readiness, not DSH's. Phase promotion is a separate maintainer decision backed by recorded verification, including real-account and upgrade acceptance where relevant. A stable DSH release does not make the plugin stable. The current workflow remains Alpha-only; Beta, RC, and stable publishing need a separately reviewed workflow/channel change.
16
+
17
+ ## Compatibility evidence
18
+
19
+ | Information | Maintained in | Meaning |
20
+ |---|---|---|
21
+ | Plugin build version | `package.json.version` | Identity embedded in the build and CLI |
22
+ | Host dependency requirements | `compatibility.json` and dependency declarations | Intended supported runtime constraints, checked for consistency |
23
+ | Verified exact combinations | `verified-compatibility.json` | Evidence from checks of each explicit DSH/plugin pair |
24
+ | User-visible changes | GitHub Release notes and `update-highlights.json` | What changed between plugin releases |
25
+
26
+ Keep the compatibility catalog's `schemaVersion: 1`, `checkedAt`, `latestDshVersion`, and `pluginVersions[].{version,verifiedDshVersions}` fields at the existing URL. Preserve historical entries. An unlisted pair is unverified, not necessarily incompatible. Neither a target dependency nor a green test on a different pairing proves compatibility.
27
+
28
+ Record a new exact pair only after verification. A candidate's verification record does not prove npm publication. Before recommending it publicly, confirm both that the version exists on npm with its matching release tag and that the pair is recorded. The offline lint check verifies the recorded pair and bilingual agreement; it does not contact npm or certify publication.
29
+
30
+ Do not replace V1 in place with a version-keyed object or infer a range from a single successful version. Any future incompatible format needs a versioned endpoint and continued output for installed V1 clients.
31
+
32
+ ## Channels and recommendations
33
+
34
+ - `alpha` is the moving channel written by the current release workflow.
35
+ - `latest` is promoted separately and intentionally. Before the first stable release it may point to a verified Alpha; afterward it must point only to stable releases. Publishing an Alpha does not authorize or perform this promotion.
36
+ - Exact installation commands identify a plugin release; dist-tags do not guarantee compatibility.
37
+ - Keep the public README recommendation on a confirmed published pair while preparing a newer candidate. The recommendation may therefore differ from `package.json.version`.
38
+
39
+ The project newest version and the newest verified plugin for a user's existing DSH are different questions. More precise host-specific recommendations and generated installation sections are follow-up work; this policy does not claim the current update UI computes that choice from every historical record.
40
+
41
+ ## Update highlights
42
+
43
+ Keep V1 highlight entries in increasing SemVer order, with unique versions and known capability kinds. Preserve the existing history. New documentation-only or maintenance releases may be omitted; existing empty `highlights` arrays remain valid. Release notes still describe fixes. Do not invent capabilities or require a contiguous counter sequence just to validate the catalog.
44
+
45
+ ## A future numbering cleanup
46
+
47
+ A shorter independent series, such as `0.2.0-alpha.1`, is a possible later migration, not the next version selected by this change. Do not reset to `0.1.0-alpha.1`: it sorts below the current `0.1.0-alpha.4.x` releases.
48
+
49
+ Before a migration, verify that installed clients recognize the new version as an update, preserve compatibility and highlight history, and check package, workflow, tag, and channel agreement. For a phase change, also update the Alpha-only gates and publication/readback path. Keep host upgrades, schema changes, and numbering migration separately reviewable.
50
+
51
+ ## Release checks
52
+
53
+ Follow [RELEASING.md](RELEASING.md) for the complete procedure. Run the frozen install and existing checks separately:
54
+
55
+ ```sh
56
+ pnpm install --frozen-lockfile
57
+ pnpm run check
58
+ pnpm run test:browser
59
+ pnpm run check:dsh-install
60
+ npm pack --dry-run
61
+ ```
62
+
63
+ `check` does not include the browser suite or isolated DSH installation. Regenerate the lockfile only when dependency changes require it; do not refresh the dependency tree for a documentation or localization release. Automated checks do not replace real OAuth acceptance. Merge, publish, and `latest` promotion remain distinct operations.
64
+
65
+ Normative references: [SemVer 2.0.0](https://semver.org/spec/v2.0.0.html) and the pinned [npm 11.6.4 publishing implementation](https://github.com/npm/cli/blob/v11.6.4/workspaces/libnpmpublish/lib/publish.js).
@@ -0,0 +1,29 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "engines": {
4
+ "node": "^22.19.0 || >=24.0.0"
5
+ },
6
+ "dshPluginApi": {
7
+ "version": "0.1.2-rc.1",
8
+ "packages": [
9
+ "@deepseek-ai/dsh-agent",
10
+ "@deepseek-ai/dsh-atomic-write",
11
+ "@deepseek-ai/dsh-attachment",
12
+ "@deepseek-ai/dsh-home-paths",
13
+ "@deepseek-ai/dsh-host-webserver",
14
+ "@deepseek-ai/dsh-invariants",
15
+ "@deepseek-ai/dsh-llm",
16
+ "@deepseek-ai/dsh-llm-pi-ai",
17
+ "@deepseek-ai/dsh-fs",
18
+ "@deepseek-ai/dsh-session",
19
+ "@deepseek-ai/dsh-settings",
20
+ "@deepseek-ai/dsh-tools",
21
+ "@deepseek-ai/dsh-util-values",
22
+ "@deepseek-ai/dsh-web"
23
+ ]
24
+ },
25
+ "piAi": {
26
+ "package": "@earendil-works/pi-ai",
27
+ "version": "^0.84.2"
28
+ }
29
+ }
package/cordis.patch.yml CHANGED
@@ -4,5 +4,8 @@
4
4
  - id: llm-openai-codex
5
5
  name: dsh-codex-connect
6
6
  config:
7
+ enableProxy: false
7
8
  enableSearch: false
8
9
  enableImageTool: false
10
+ enableImageGeneration: false
11
+ enableAutoReview: false