dsh-codex-connect 0.1.0-alpha.4.26 → 0.1.0-alpha.4.27
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 +9 -13
- package/README.i18n.yaml +2 -2
- package/README.md +98 -238
- package/docs/README.zh.md +100 -242
- package/docs/agent-notes/env-proxy-dispatcher-preservation.md +7 -0
- package/docs/agent-notes/search-route-runtime-override.md +7 -0
- package/docs/design.i18n.yaml +2 -2
- package/docs/design.md +4 -4
- package/docs/design.zh.md +4 -4
- package/lib/bin.js +1 -3
- package/lib/client.js +580 -84
- package/lib/index.d.ts +9 -2
- package/lib/index.js +1 -1
- package/lib/{src-FSN1b9Tk.js → src-BcyhDCEJ.js} +205 -30
- package/package.json +3 -2
package/INSTALL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Installation Runbook for CLI Agents
|
|
2
2
|
|
|
3
|
-
Alpha 4.
|
|
3
|
+
Alpha 4.27 is verified with DSH `0.1.2-rc.1` and its declared pi-ai range `^0.84.2`.
|
|
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
|
|
|
@@ -23,14 +23,14 @@ Check `dsh --version` before changing the requested profile. Use `dsh --help` to
|
|
|
23
23
|
| `0.1.0-rc.7` | `0.1.0-alpha.4.14` |
|
|
24
24
|
| `0.1.1-rc.2` | `0.1.0-alpha.4.21` |
|
|
25
25
|
| `0.1.2-alpha.2` | `0.1.0-alpha.4.23` |
|
|
26
|
-
| `0.1.2-rc.1` | `0.1.0-alpha.4.
|
|
26
|
+
| `0.1.2-rc.1` | `0.1.0-alpha.4.27` |
|
|
27
27
|
| `0.1.2-alpha.5` | `0.1.0-alpha.4.25` |
|
|
28
28
|
|
|
29
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
30
|
|
|
31
|
-
Alpha 4.
|
|
31
|
+
Alpha 4.27'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
32
|
|
|
33
|
-
The Alpha 4.
|
|
33
|
+
The Alpha 4.27 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
34
|
|
|
35
35
|
### Install the selected version and validate
|
|
36
36
|
|
|
@@ -53,10 +53,10 @@ The Alpha 4.26 row reflects a fresh isolated installation and runtime probe. His
|
|
|
53
53
|
dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.23
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
-
For DSH `0.1.2-rc.1`, use Alpha 4.
|
|
56
|
+
For DSH `0.1.2-rc.1`, use Alpha 4.27:
|
|
57
57
|
|
|
58
58
|
```sh
|
|
59
|
-
dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.
|
|
59
|
+
dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.27
|
|
60
60
|
```
|
|
61
61
|
|
|
62
62
|
For DSH `0.1.2-alpha.5`, use Alpha 4.25:
|
|
@@ -65,7 +65,7 @@ The Alpha 4.26 row reflects a fresh isolated installation and runtime probe. His
|
|
|
65
65
|
dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.25
|
|
66
66
|
```
|
|
67
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.
|
|
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.27'` only for the DSH `0.1.2-rc.1` combination.
|
|
69
69
|
|
|
70
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
71
|
4. Run `dsh --profile web --dump-config` and require exactly one `llm-openai-codex` row loading `dsh-codex-connect`.
|
|
@@ -95,7 +95,7 @@ The value is a full `http://` or `https://` origin including its port, not a bar
|
|
|
95
95
|
|
|
96
96
|
## Optional configuration
|
|
97
97
|
|
|
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
|
|
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.
|
|
99
99
|
|
|
100
100
|
Apply only requested choices and preserve unrelated keys:
|
|
101
101
|
|
|
@@ -108,17 +108,13 @@ Apply only requested choices and preserve unrelated keys:
|
|
|
108
108
|
enableAutoReview: false
|
|
109
109
|
searchMode: live
|
|
110
110
|
|
|
111
|
-
- id: web
|
|
112
|
-
config:
|
|
113
|
-
searchProvider: openai-codex
|
|
114
|
-
|
|
115
111
|
- id: agent-default-model
|
|
116
112
|
config:
|
|
117
113
|
provider: openai-codex
|
|
118
114
|
model: gpt-5.6-sol
|
|
119
115
|
```
|
|
120
116
|
|
|
121
|
-
Do not add the
|
|
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.
|
|
122
118
|
|
|
123
119
|
## Conflict handling
|
|
124
120
|
|
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:
|
|
6
|
-
docs/README.zh.md:
|
|
5
|
+
README.md: c135f207b65d25355ffa0dadf44a18732cad765f
|
|
6
|
+
docs/README.zh.md: c95461b5c330da72852c0161ee1b05625b7f914b
|
package/README.md
CHANGED
|
@@ -10,146 +10,83 @@ Connect your ChatGPT subscription to DeepSeek Harness with OAuth, optional GPT I
|
|
|
10
10
|
<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%">
|
|
11
11
|
</p>
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Codex Connect adds ChatGPT OAuth and the `openai-codex` model provider to DeepSeek Harness. The selected model still runs inside the normal Harness agent loop, so Harness continues to own tools, permissions, approval prompts, attachments, session persistence, compaction, and recovery.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
The plugin is additive: installing it does not replace the default model or global search provider. Search, `view_image`, GPT Image generation, and Auto-review are all opt-in. It does not turn a ChatGPT subscription into an OpenAI Platform API key.
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
## Highlights
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
- Sign in with ChatGPT from **Settings → Models**, manage up to 16 locally stored accounts, and choose the account used by subsequent requests.
|
|
20
|
+
- Discover the installed upstream Codex catalog. If that catalog does not yet include `gpt-6-astra`, Codex Connect supplies compatible metadata; the upstream definition wins as soon as it exists.
|
|
21
|
+
- Show conversation-scoped Fast Mode and server-reported `5h` and `7d` quota windows for GPT Codex conversations.
|
|
22
|
+
- Compare the installed DSH/plugin pair with the public compatibility record and show update guidance without running an upgrade.
|
|
23
|
+
- Optionally add Codex search, secure local or public-image viewing, GPT Image generation, and Codex Auto-review.
|
|
24
|
+
- Diagnose the installation without printing credentials or starting OAuth.
|
|
20
25
|
|
|
21
|
-
|
|
26
|
+
Model discovery is not an entitlement check. OpenAI evaluates the selected account on every request; an unavailable model fails explicitly and Codex Connect does not silently switch models or accounts.
|
|
22
27
|
|
|
23
|
-
|
|
28
|
+
## Quick start
|
|
24
29
|
|
|
25
|
-
|
|
26
|
-
dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.26
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
Expected result: the package is added to that profile. This does not change the profile's default model or global search route.
|
|
30
|
-
|
|
31
|
-
Use the exact version above to keep the verified DSH and plugin pair reproducible. `alpha` is a moving npm tag, not a compatibility guarantee.
|
|
32
|
-
|
|
33
|
-
### What's new in Alpha 4.26
|
|
34
|
-
|
|
35
|
-
- Add verified compatibility with DSH `0.1.2-rc.1`, including an isolated install, profile composition, diagnostics, model-catalog, and disposal canary.
|
|
36
|
-
|
|
37
|
-
### Previously in Alpha 4.25
|
|
38
|
-
|
|
39
|
-
- Show the exact 5-hour and weekly quota windows returned by ChatGPT for the selected Codex model. Missing windows stay hidden, Spark remains separate, and plan names do not suppress server data.
|
|
40
|
-
- Separate verified compatibility from maintainer follow-up. The settings card no longer treats missing verification as a known runtime failure or recommends a plugin downgrade.
|
|
41
|
-
- Link users to the canonical tracker for their DSH version when one exists, with a prefilled compatibility-gap report as the safe fallback.
|
|
42
|
-
- Track every newer DSH candidate through one Canary issue with explicit preliminary, compatibility-failure, or infrastructure-blocked state. Canary success does not declare support or publish anything.
|
|
43
|
-
|
|
44
|
-
### Version updates
|
|
45
|
-
|
|
46
|
-
Codex Connect checks public package metadata and this repository's `verified-compatibility.json` periodically through the DSH Web server. The same card reads the locally loaded DSH package version, shows it beside the latest DSH version recorded by this project, and evaluates the exact installed plugin and DSH version pair. Local version detection uses package metadata already available to the plugin and does not require a DSH Core change. The card's optional tracker lookup sends only that public DSH version to GitHub's public search API.
|
|
47
|
-
|
|
48
|
-
The compatibility record lists exact plugin and DSH versions rather than assuming every later release remains compatible. Maintainers can add a newly verified DSH version to the repository file without publishing another plugin release. The card keeps two decisions separate: its status describes only whether the installed pair or a specific upgrade path has been verified, while its GitHub action appears only when the installed latest-or-newer DSH has no verified published plugin. Missing verification never claims that a pair is known to fail. A green result means the installed pair was verified. Yellow recommends updating the plugin when the latest plugin matches the installed DSH, or updating DSH when the latest plugin matches the latest verified DSH. Red means Codex Connect has not caught up with the installed latest-or-newer DSH; it links to the canonical compatibility tracker when one exists, or offers a prefilled compatibility-gap report when the tracker lookup is unavailable or has no match. Gray means an older DSH version is not recorded or the public record could not be checked.
|
|
30
|
+
The command below is the verified public pairing for DSH `0.1.2-rc.1`. Check `dsh --version` and use [INSTALL.md](INSTALL.md) if you run another DSH version. `alpha` is a moving npm tag, not a compatibility guarantee. This README describes current `main`; changes merged after the displayed package version remain source-only until the next Alpha release.
|
|
49
31
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
After the Agent reports completion, return to the notice or settings card and select **Done — check again**. If the running process still reports the old version, restart that profile's DSH Web process and check again.
|
|
53
|
-
|
|
54
|
-
For a manual terminal update, use the command documented for the profile you are running:
|
|
32
|
+
### 1. Install one exact version
|
|
55
33
|
|
|
56
34
|
```sh
|
|
57
|
-
dsh plugin --profile web
|
|
35
|
+
dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.27
|
|
58
36
|
```
|
|
59
37
|
|
|
60
|
-
Replace `web` with your
|
|
38
|
+
Replace `web` with your existing profile name. From a DeepSeek Harness source checkout, prefix commands with `pnpm`. Installation must leave the profile's default model and search route unchanged.
|
|
61
39
|
|
|
62
|
-
### 2. Start Harness
|
|
40
|
+
### 2. Start Harness and authorize
|
|
63
41
|
|
|
64
42
|
```sh
|
|
65
43
|
dsh web
|
|
66
44
|
```
|
|
67
45
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
### 3. Find the Openai-Codex account card
|
|
71
|
-
|
|
72
|
-
Open **Settings → Models** and find **Openai-Codex**. This is the primary Alpha 4.25 account entry. If the profile does not expose the Models settings section, open **Settings → Plugins → Plugin configuration → Codex Connect** instead.
|
|
73
|
-
|
|
74
|
-
The Models card carries the attribution “Powered by the Codex Connect plugin.” and provides ChatGPT authorization, reauthorization, sign-out and quota. Both settings pages share one in-memory account state and polling owner. **More settings** opens the proxy, model visibility, search, image and context-budget configuration form in a dialog; the original Plugin settings entry remains available. Both entries save to the same settings scope. Close or Escape discards unsaved dialog edits. The Models footer is optional: profiles without that settings section retain the existing Plugin entry.
|
|
75
|
-
|
|
76
|
-
The compact Models row shows **Authorize** when signed out, or **Sign out** and **View quota** when signed in. Expanding quota shows only the server-reported usage rows, without repeating account controls. If browser authorization is interrupted, use **Continue authorization** in Models (**Reopen authorization** in Plugins) to resume the pending login, or **Cancel sign-in** and retry from either settings page or another trusted browser. Cancellation preserves an existing signed-in account. An abandoned authorization expires after 10 minutes by default; the plugin's `oauthTimeoutMs` configuration accepts 1,000–1,800,000 milliseconds and applies when the plugin loads. The separate 30-second wait for the initial authorization URL remains bounded. Neither cancellation nor expiry restarts DSH.
|
|
77
|
-
|
|
78
|
-
Expected result: a fresh installation shows **Authorize** in Models. The Plugin configuration fallback shows **Not signed in** and **Sign in with ChatGPT**.
|
|
79
|
-
|
|
80
|
-
The screenshot below shows the retained Plugin configuration fallback.
|
|
81
|
-
|
|
82
|
-
<p align="center">
|
|
83
|
-
<img src="https://raw.githubusercontent.com/franksong2702/dsh-codex-connect/main/docs/assets/en/plugin-entry.jpg" alt="Collapsed English-localized Codex Connect entry under Harness plugin configuration" width="586">
|
|
84
|
-
</p>
|
|
46
|
+
Open **Settings → Models → Openai-Codex** and select **Authorize**. Complete the approval yourself in the browser. If an embedded window is blocked, use **Open ChatGPT sign-in page** to continue in the system browser.
|
|
85
47
|
|
|
86
|
-
|
|
48
|
+
Never paste an authorization URL, code, token, or account identifier into an issue, log, chat, or configuration file.
|
|
87
49
|
|
|
88
|
-
|
|
50
|
+
### 3. Select a model
|
|
89
51
|
|
|
90
|
-
|
|
52
|
+
Choose an `openai-codex` model in the normal Harness model picker. Model names remain canonical in every UI language. To shorten the catalog, use **More settings → Models**; hiding a model affects discovery only and does not disable exact-id routing.
|
|
91
53
|
|
|
92
54
|
<p align="center">
|
|
93
|
-
<img src="https://raw.githubusercontent.com/franksong2702/dsh-codex-connect/main/docs/assets/en/
|
|
55
|
+
<img src="https://raw.githubusercontent.com/franksong2702/dsh-codex-connect/main/docs/assets/en/model-selector.jpg" alt="OpenAI Codex models in the DeepSeek Harness model picker" width="360">
|
|
94
56
|
</p>
|
|
95
57
|
|
|
96
|
-
###
|
|
97
|
-
|
|
98
|
-
Open Harness's normal model picker and select an `openai-codex` model for the agent or session you are using. This selection is separate from writing the profile's default model or global search route.
|
|
99
|
-
|
|
100
|
-
The picker groups the available entries under **OpenAI Codex**. Model identifiers such as `GPT-5.6 Luna` are canonical names, so they intentionally remain un-translated.
|
|
101
|
-
|
|
102
|
-
To shorten that list, open **Settings → Plugins → Plugin configuration → Codex Connect**, uncheck the models you do not want to see, and select **Save changes**. This controls discovery only: a hidden model already stored in an existing conversation or supplied by its exact id remains usable. A fresh installation shows the complete catalog.
|
|
103
|
-
|
|
104
|
-
Profiles may also seed the visible subset with `models`; provider order is preserved regardless of the order written here:
|
|
105
|
-
|
|
106
|
-
```yaml
|
|
107
|
-
- id: llm-openai-codex
|
|
108
|
-
config:
|
|
109
|
-
models:
|
|
110
|
-
- gpt-5.6-luna
|
|
111
|
-
- gpt-5.6-sol
|
|
112
|
-
- gpt-5.6-terra
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
Omit `models` to show the full catalog. An empty list hides every Codex model from selectors without disabling exact-id routing.
|
|
116
|
-
|
|
117
|
-
<p align="center">
|
|
118
|
-
<img src="https://raw.githubusercontent.com/franksong2702/dsh-codex-connect/main/docs/assets/en/model-selector.jpg" alt="OpenAI Codex model group in the English-localized DeepSeek Harness model picker" width="360">
|
|
119
|
-
</p>
|
|
120
|
-
|
|
121
|
-
To confirm the configured plugin row locally, run:
|
|
58
|
+
### 4. Verify the installation
|
|
122
59
|
|
|
123
60
|
```sh
|
|
124
61
|
dsh --profile web --dump-config
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
Expected result: the configuration has exactly one `llm-openai-codex` row. Keep this configuration dump local; it may include unrelated profile settings.
|
|
128
|
-
|
|
129
|
-
For secret-free status and diagnostics that do not start OAuth, run:
|
|
130
|
-
|
|
131
|
-
```sh
|
|
132
62
|
dsh plugin --profile web exec dsh-codex-connect status --json
|
|
133
63
|
dsh plugin --profile web exec dsh-codex-connect doctor --json
|
|
134
64
|
```
|
|
135
65
|
|
|
136
|
-
|
|
66
|
+
The effective configuration should contain exactly one `llm-openai-codex` row. A signed-in `status --json` exits `0`; a signed-out status exits `1` without starting OAuth. `doctor --json` prints one secret-free diagnostic document.
|
|
67
|
+
|
|
68
|
+
## Accounts, models, and quota
|
|
69
|
+
|
|
70
|
+
The Models card and the Plugin configuration page share the same account state. **Manage accounts** can add, select, or remove accounts. Browser responses expose only plugin-generated account keys and masked labels, never OAuth tokens or raw OpenAI account ids.
|
|
137
71
|
|
|
138
|
-
|
|
72
|
+
- Adding an account leaves the current account usable while authorization is pending.
|
|
73
|
+
- Cancelling or timing out a new authorization preserves every existing account. Pending authorization expires after 10 minutes by default; `oauthTimeoutMs` accepts 1,000–1,800,000 milliseconds and is applied when the plugin loads.
|
|
74
|
+
- Switching accounts affects subsequent requests. A request captures its account before resolving authentication, so a concurrent switch cannot mix credentials.
|
|
75
|
+
- Removing the active account requires selecting a replacement when another account remains. Removing the last account signs out; **Sign out all accounts** deletes all locally stored Codex credentials.
|
|
76
|
+
- Codex Connect does not rotate accounts automatically or fail over when a request is rejected.
|
|
139
77
|
|
|
140
|
-
|
|
78
|
+
For GPT Codex conversations, the Composer shows two session controls:
|
|
141
79
|
|
|
142
|
-
- **Fast Mode
|
|
143
|
-
- **Quota bars**
|
|
144
|
-
- For the exact `gpt-5.3-codex-spark` model, the Composer reads the separate Spark bucket. Other GPT Codex models read the standard Codex bucket. The plugin does not infer quota windows from the ChatGPT plan name.
|
|
80
|
+
- **Fast Mode** requests the faster `1.5×` mode for that conversation only. It is off by default and does not change the model.
|
|
81
|
+
- **Quota bars** show only the `5h` and `7d` windows returned by the server, with the exact remaining percentage and reset time. `gpt-5.3-codex-spark` uses its separate Spark bucket. Codex Connect never invents missing windows or suppresses returned windows based on a plan name.
|
|
145
82
|
|
|
146
83
|
<p align="center">
|
|
147
|
-
<img src="https://raw.githubusercontent.com/franksong2702/dsh-codex-connect/main/docs/assets/composer-capabilities.jpg" alt="
|
|
84
|
+
<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">
|
|
148
85
|
</p>
|
|
149
86
|
|
|
150
|
-
## Optional capabilities
|
|
87
|
+
## Optional capabilities
|
|
151
88
|
|
|
152
|
-
|
|
89
|
+
Fresh installations register the model provider and leave every additional capability disabled:
|
|
153
90
|
|
|
154
91
|
```yaml
|
|
155
92
|
- id: llm-openai-codex
|
|
@@ -161,182 +98,113 @@ The installed bundle is intentionally inert beyond model-provider registration:
|
|
|
161
98
|
enableAutoReview: false
|
|
162
99
|
```
|
|
163
100
|
|
|
164
|
-
|
|
101
|
+
Edit these options under **Settings → Plugins → Plugin configuration → Codex Connect** or **Settings → Models → Openai-Codex → More settings**. Changes are staged until **Save changes**. Most settings affect only this plugin; enabling Codex Search also selects it as the active profile-wide search route.
|
|
165
102
|
|
|
166
|
-
###
|
|
103
|
+
### Proxy
|
|
167
104
|
|
|
168
|
-
|
|
105
|
+
Direct connection is the default. An enabled credential-free HTTP(S) proxy applies only to this plugin's model, OAuth, refresh, quota, search, image, and Auto-review traffic. Detection checks standard proxy environment variables and documented loopback candidates without making a model call, consuming quota, or saving settings. A failed proxy request never silently retries through a direct connection. Loading Codex Connect does not replace Node's environment-proxy dispatcher, so unrelated Harness requests continue using the process's existing proxy policy.
|
|
169
106
|
|
|
170
|
-
|
|
107
|
+
### Search and image tools
|
|
171
108
|
|
|
172
|
-
|
|
109
|
+
- `enableSearch: true` registers Codex as an available search provider and selects it for profile-wide searches. Disabling it unregisters the provider and restores the route that was active before Codex Search was enabled.
|
|
110
|
+
- `enableImageTool: true` registers `view_image` on vision-capable models. Remote reads accept credential-free public HTTP(S) only and revalidate DNS and redirects.
|
|
111
|
+
- `enableImageGeneration: true` registers prompt-only GPT Image generation. Use the image generation capability included with your current GPT subscription. Availability, dimensions, and quota remain account- and service-controlled.
|
|
173
112
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
- `enableSearch: true` registers Codex as an available search provider. It does not select the profile's global search route.
|
|
177
|
-
- `enableImageTool: true` enables `view_image` for approved local reads and public-network image fetches on vision-capable models.
|
|
178
|
-
- `enableImageGeneration: true` enables the prompt-only image generation tool. Use the image generation capability included with your current GPT subscription. Codex Connect preserves the exact generated file in plugin-owned storage and saves a DSH attachment as the conversation preview.
|
|
179
|
-
|
|
180
|
-
The screenshot below is an example after someone has explicitly enabled capabilities. It does not show the fresh-install default. This English guide uses the English-localized capture; the Chinese guide shows the matching Chinese-localized state.
|
|
113
|
+
Generated originals are stored under `$DSH_HOME/dsh-codex-connect/images/v1`; the conversation receives a separate DSH attachment preview. The result card reports dimensions and file sizes and can download either representation. Originals are owner-only, integrity-checked, and available only to the creating session and forks that inherited the result. Disabling or uninstalling the plugin does not delete those files automatically.
|
|
181
114
|
|
|
182
115
|
<p align="center">
|
|
183
|
-
<img src="https://raw.githubusercontent.com/franksong2702/dsh-codex-connect/main/docs/assets/en/
|
|
116
|
+
<img src="https://raw.githubusercontent.com/franksong2702/dsh-codex-connect/main/docs/assets/en/image-generation.png" alt="GPT Image result with prompt, download actions, and image details" width="780">
|
|
184
117
|
</p>
|
|
185
118
|
|
|
186
|
-
###
|
|
187
|
-
|
|
188
|
-
1. Turn on **Enable GPT Image generation** in the Codex Connect card and select **Save changes**.
|
|
189
|
-
2. Choose an `openai-codex` GPT model for the conversation.
|
|
190
|
-
3. Describe the image you want in ordinary language. The agent can expand that request into the prompt sent to GPT Image.
|
|
191
|
-
4. The exact generated file is preserved separately from the DSH attachment used to render the conversation preview. The result card lets you review and copy the full prompt, download the exact original or the preview, and compare their dimensions and file sizes.
|
|
192
|
-
|
|
193
|
-
This capability uses the image generation access included with your current GPT subscription; it does not require an OpenAI Platform API key. Availability remains subject to the GPT plan and model selected for the conversation.
|
|
194
|
-
|
|
195
|
-
Output dimensions are selected by the subscription service. The tool accepts a prompt only and does not offer a size setting or guarantee 4K output. Asking for "4K detail" does not establish the file's pixel dimensions; use the dimensions shown on the result card. Downloading the original preserves what the service returned, without upscaling it.
|
|
196
|
-
|
|
197
|
-
<p align="center">
|
|
198
|
-
<img src="https://raw.githubusercontent.com/franksong2702/dsh-codex-connect/main/docs/assets/en/image-generation.png" alt="English-localized Codex Connect GPT Image result with preview, copyable prompt, download action, and image details" width="780">
|
|
199
|
-
</p>
|
|
200
|
-
|
|
201
|
-
The detailed image prompt is authored by the selected GPT model. Codex Connect does not silently add image parameters: it validates the prompt-only request and forwards it through the ChatGPT subscription capability. The exact returned bytes are stored below `$DSH_HOME/dsh-codex-connect/images/v1`; an additional DSH attachment is the preview used by the conversation and may be resized or re-encoded by the active DSH attachment policy. The **Download original** action always uses the plugin-owned exact file, while **Download preview** returns that DSH representation. Originals are owner-only, integrity-checked before download, and available to the creating session and forks that inherited the image result, including after session restoration. Forks made before that result and unrelated sessions cannot download it. Disabling image generation or uninstalling the plugin does not automatically delete the files; downloading through the result card requires the plugin to remain installed. On the result card you can scroll through and copy the complete prompt. **Try again** and **Generate another** send that card's own prompt again, so an older card is not accidentally regenerated from a newer conversation message. **Modify this image** first asks what you want to change, then continues from that card's prompt.
|
|
202
|
-
|
|
203
|
-
### Usage limits in Plugin configuration
|
|
204
|
-
|
|
205
|
-
After sign-in, the Codex Connect settings card can show several server-reported windows. They are separate buckets, not three views of one number:
|
|
119
|
+
### Auto-review
|
|
206
120
|
|
|
207
|
-
|
|
208
|
-
- The exact Spark model uses the separate **GPT-5.3-Codex-Spark** bucket and displays whichever windows that bucket returns.
|
|
121
|
+
`enableAutoReview: true` lets the Codex reviewer assess eligible Harness approval requests after DSH policy has determined that approval is required. First enablement requires confirmation because bounded recent approval context, tool arguments, working directory, and the planned action are sent to `chatgpt.com`. Hidden reasoning and stored credentials are excluded. Only a complete structured allow result authorizes one execution; ambiguity, malformed output, transport failure, and timeout return to human approval. See [Auto-review](docs/auto-review.md) for the full decision and retry rules.
|
|
209
122
|
|
|
210
|
-
|
|
123
|
+
## Routing and configuration
|
|
211
124
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
To make a Codex model the default for new agents, add or update the separate Harness row yourself:
|
|
125
|
+
Installing Codex Connect does not select a default model or search provider. Enabling Codex Search selects it while the capability remains enabled; select a default model separately only when intended. The equivalent configuration is:
|
|
215
126
|
|
|
216
127
|
```yaml
|
|
217
128
|
- id: agent-default-model
|
|
218
129
|
config:
|
|
219
130
|
provider: openai-codex
|
|
220
131
|
model: gpt-5.6-sol
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
Selecting Codex as the profile's global search route is another explicit change:
|
|
224
132
|
|
|
225
|
-
```yaml
|
|
226
133
|
- id: llm-openai-codex
|
|
227
134
|
config:
|
|
228
135
|
enableSearch: true
|
|
229
136
|
searchMode: live
|
|
230
137
|
searchContextSize: medium
|
|
231
138
|
|
|
232
|
-
- id: web
|
|
233
|
-
config:
|
|
234
|
-
searchProvider: openai-codex
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
| Field | Default | Values |
|
|
238
|
-
|---|---:|---|
|
|
239
|
-
| `models` | full catalog | Codex model id array; empty hides all entries |
|
|
240
|
-
| `enableProxy` | `false` | boolean; direct connection unless explicitly enabled |
|
|
241
|
-
| `proxyUrl` | `http://127.0.0.1:7890` (inactive placeholder) | Credential-free HTTP(S) proxy origin |
|
|
242
|
-
| `contextWindowOverrides` | none | Per-model context-window override map; see below |
|
|
243
|
-
| `enableSearch` | `false` | boolean |
|
|
244
|
-
| `enableImageTool` | `false` | boolean |
|
|
245
|
-
| `enableImageGeneration` | `false` | boolean |
|
|
246
|
-
| `searchModel` | `gpt-5.6-sol` | Codex model id |
|
|
247
|
-
| `searchMode` | `cached` | `cached`, `indexed`, `live` |
|
|
248
|
-
| `searchContextSize` | `medium` | `low`, `medium`, `high` |
|
|
249
|
-
| `searchMaxOutputTokens` | `10000` | positive integer |
|
|
250
|
-
|
|
251
|
-
### Context-window overrides
|
|
252
|
-
|
|
253
|
-
Use `contextWindowOverrides` to opt into a per-model client context budget when you have evidence that the bundled catalog does not fit your deployment. It cannot enlarge the OpenAI backend's context capacity. Overrides default off; this feature does not verify the community-reported larger windows.
|
|
254
|
-
|
|
255
|
-
In Plugin configuration and **Models → More settings**, each model row shows its numeric context budget and keeps its visibility checkbox. **Context → Adjust** opens a synchronized slider and integer input, with the installed catalog default and a configuration ceiling. **Restore default** uses the catalog value even if composition supplies an override. Hiding a model preserves its budget. **Save** applies staged edits; **Discard** abandons them. An empty input is invalid, not a reset.
|
|
256
|
-
|
|
257
|
-
Configuration ceilings follow the [official Codex catalog snapshot](https://github.com/openai/codex/blob/7625343977154efed8c0dadba956374992a1580b/codex-rs/models-manager/models.json), checked on 2026-08-28: GPT-5.6 Sol/Terra/Luna allow up to 872,000 tokens, GPT-5.4 up to 1,000,000, and GPT-5.5/GPT-5.4 mini up to 272,000. Models without a recorded ceiling, including Spark, are capped at their installed provider default. A provider default newer than and larger than the recorded ceiling also becomes the cap. The UI identifies the source; these values are not fetched from the user's account and are not measured server capacities. Defaults remain unchanged. Going above the default displays a quota and request-failure warning; account and route limits may differ.
|
|
258
|
-
|
|
259
|
-
```yaml
|
|
260
|
-
- id: llm-openai-codex
|
|
261
|
-
config:
|
|
262
|
-
contextWindowOverrides:
|
|
263
|
-
# Illustration only: 350000 is not a verified or recommended server limit.
|
|
264
|
-
gpt-5.6-sol: 350000
|
|
265
139
|
```
|
|
266
140
|
|
|
267
|
-
|
|
141
|
+
The main plugin options are:
|
|
268
142
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
- `status --json` emits only signed-in or signed-out state with package metadata. `status --json` reads the credential only to determine sign-in state, but never prints credential contents or starts OAuth.
|
|
284
|
-
- Alpha 4.10 users whose search histories fail with an unknown `web/openai-codex-search-llm-request` event can run `dsh-codex-connect migrate-history --json`, stop DSH, then apply the reported repair with `migrate-history --apply --confirm-stopped --json`. The command is dry-run by default, backs up every changed compressed JSONL artifact, and is dry-run only on Windows; see [MIGRATION.md](MIGRATION.md).
|
|
285
|
-
- OAuth is stored separately at `$DSH_HOME/.openai-codex-auth.json` (`~/.dsh` by default). `~/.codex/auth.json` is never copied or modified. The parent directory and file use owner-only permissions where supported, writes are atomic, and refresh writes use a cross-process file lock.
|
|
286
|
-
- By default, the OAuth routes accept loopback browser requests only. When DSH runs on one device and you open it from another device on a trusted network, approve the browser address-bar origin explicitly on the device that runs DSH:
|
|
143
|
+
| Field | Default | Meaning |
|
|
144
|
+
|---|---:|---|
|
|
145
|
+
| `models` | full catalog | Visible Codex model ids; an empty array hides all entries |
|
|
146
|
+
| `enableProxy` | `false` | Use `proxyUrl` for Codex Connect traffic |
|
|
147
|
+
| `proxyUrl` | `http://127.0.0.1:7890` | Credential-free HTTP(S) proxy origin; inactive until enabled |
|
|
148
|
+
| `contextWindowOverrides` | none | Per-model client context-budget overrides |
|
|
149
|
+
| `enableSearch` | `false` | Register Codex search and select it when the setting is saved |
|
|
150
|
+
| `enableImageTool` | `false` | Register `view_image` |
|
|
151
|
+
| `enableImageGeneration` | `false` | Register GPT Image generation |
|
|
152
|
+
| `enableAutoReview` | `false` | Review eligible approval requests with Codex |
|
|
153
|
+
| `searchModel` | `gpt-5.6-sol` | Model used by standalone search |
|
|
154
|
+
| `searchMode` | `cached` | `cached`, `indexed`, or `live` |
|
|
155
|
+
| `searchContextSize` | `medium` | `low`, `medium`, or `high` |
|
|
156
|
+
| `searchMaxOutputTokens` | `10000` | Positive integer output budget for search |
|
|
287
157
|
|
|
288
|
-
|
|
289
|
-
dsh plugin --profile web exec dsh-codex-connect trust-origin http://192.168.1.20:3080
|
|
290
|
-
dsh plugin --profile web exec dsh-codex-connect trusted-origins
|
|
291
|
-
dsh plugin --profile web exec dsh-codex-connect untrust-origin http://192.168.1.20:3080
|
|
292
|
-
```
|
|
158
|
+
`contextWindowOverrides` changes the client budget, not OpenAI's server capacity. Unknown model ids and values above the plugin's documented configuration ceiling fail explicitly. Use `null` for the whole field to mask inherited overrides, or `null` for one model to restore its catalog default while preserving other entries. Leave room for output and protocol overhead, and treat larger values as deployment-specific experiments rather than entitlement evidence. [Alpha design](docs/design.md) documents the ownership and persistence rules.
|
|
293
159
|
|
|
294
|
-
|
|
295
|
-
- If startup reports an `openai-codex` collision, an old `dsh-codex` bundle or manual provider row may already own the adapter. Inspect the effective configuration and remove only the confirmed conflicting owner. Do not delete auth files or unrelated providers.
|
|
296
|
-
- Removing the package does not delete OAuth state. Run `logout` only when credential removal is intended.
|
|
160
|
+
## Diagnostics and recovery
|
|
297
161
|
|
|
298
|
-
###
|
|
162
|
+
### Capability probes
|
|
299
163
|
|
|
300
|
-
|
|
164
|
+
The local report performs no network request. Adding `--probe` sends one fixed short request and may consume quota:
|
|
301
165
|
|
|
302
166
|
```sh
|
|
303
167
|
dsh plugin --profile web exec dsh-codex-connect capabilities --model gpt-5.6-sol --json
|
|
304
168
|
dsh plugin --profile web exec dsh-codex-connect capabilities --model gpt-5.6-sol --probe --json
|
|
169
|
+
dsh plugin --profile web exec dsh-codex-connect auto-review-probe --json
|
|
305
170
|
```
|
|
306
171
|
|
|
307
|
-
|
|
172
|
+
Probes use a direct connection unless `--proxy <http(s)-origin>` is supplied. `--timeout-ms <1..60000>` overrides the 30-second deadline. They do not follow redirects or retry, cap responses at 64 KiB, and do not refresh credentials. Results label each check `supported`, `rejected`, or `unknown`; a catalog entry alone never proves entitlement. Exit `0` means the command's required checks were supported, `1` means at least one was rejected, and `2` means evidence was unknown or the invocation was invalid. Reports omit credentials, account ids, paths, proxy origins, response ids, headers, and generated text.
|
|
308
173
|
|
|
309
|
-
|
|
174
|
+
### Remote browser authorization
|
|
310
175
|
|
|
311
|
-
|
|
176
|
+
OAuth routes accept loopback browsers by default. If DSH runs on another device in a trusted network, add the exact origin from the browser address bar on the DSH host:
|
|
312
177
|
|
|
313
|
-
|
|
178
|
+
```sh
|
|
179
|
+
dsh plugin --profile web exec dsh-codex-connect trust-origin http://192.168.1.20:3080
|
|
180
|
+
dsh plugin --profile web exec dsh-codex-connect trusted-origins
|
|
181
|
+
dsh plugin --profile web exec dsh-codex-connect untrust-origin http://192.168.1.20:3080
|
|
182
|
+
```
|
|
314
183
|
|
|
315
|
-
|
|
184
|
+
Include the scheme and port, never a path, query, or fragment. Do not expose the OAuth route to the public Internet; use an SSH tunnel when the network is not trusted. The Web client displays these commands but never edits the allowlist.
|
|
316
185
|
|
|
317
|
-
|
|
186
|
+
### Migration and conflicts
|
|
318
187
|
|
|
319
|
-
|
|
320
|
-
dsh plugin --profile web exec dsh-codex-connect auto-review-probe --json
|
|
321
|
-
```
|
|
188
|
+
If startup reports an `openai-codex` collision, inspect the effective configuration and remove only the confirmed legacy `dsh-codex` bundle or manual provider row. Do not delete credentials or unrelated providers. See [MIGRATION.md](MIGRATION.md) for package migration and repair of Alpha 4.10 search histories.
|
|
322
189
|
|
|
323
|
-
|
|
190
|
+
OAuth is stored separately at `$DSH_HOME/.openai-codex-auth.json` (`~/.dsh` by default); `~/.codex/auth.json` is never copied or modified. Removing the package does not remove OAuth state. Run `logout` only when deleting credentials is intentional.
|
|
324
191
|
|
|
325
|
-
|
|
192
|
+
## Compatibility and security
|
|
326
193
|
|
|
327
|
-
|
|
194
|
+
- [verified-compatibility.json](verified-compatibility.json) is the authority for exact DSH/plugin pairs. Follow [INSTALL.md](INSTALL.md); do not infer future compatibility from a current row.
|
|
195
|
+
- A missing compatibility record means the pair is unverified, not known to be broken. Update notices explain the recorded path but never install anything automatically.
|
|
196
|
+
- ChatGPT plan eligibility, model access, quotas, backend context capacity, and service behavior are controlled by OpenAI and may change.
|
|
197
|
+
- Harness remains responsible for shell, filesystem, skills, MCP, subagents, approvals, permissions, attachments, session persistence, compaction, and recovery.
|
|
198
|
+
- Install, build, tests, `doctor`, and package validation require no real OAuth operation.
|
|
199
|
+
- This is a community Alpha. It is not affiliated with or endorsed by OpenAI, ChatGPT, Codex, DeepSeek, or DeepSeek Harness.
|
|
328
200
|
|
|
329
|
-
|
|
330
|
-
- The new DSH client splits its former runtime into Session Controller, Settings, Store, and Renderer packages. Codex Connect uses those public interfaces for settings and image actions. DSH owns normalized preview encoding and dimensions; Codex Connect retains the exact original image separately.
|
|
331
|
-
- Upgrade the DSH plugin API packages and `@earendil-works/pi-ai` as one group, then run `dsh-codex-connect doctor --json` and the compatibility check again. This contract does not make claims about future versions.
|
|
332
|
-
- When the daily upstream check finds a new `latest` or `next` DSH candidate, it installs Codex Connect into an isolated profile, boots the installed model runtime without OAuth credentials, verifies model and reasoning-effort discovery, and confirms provider disposal. Live sign-in, quota, and model requests still require manual validation in the test profile.
|
|
333
|
-
- ChatGPT plan eligibility, model access, quotas, and backend behavior are controlled by OpenAI and may change.
|
|
334
|
-
- 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.
|
|
335
|
-
- Shell, filesystem, skills, MCP, subagents, approvals, permissions, attachments, session persistence, compaction, and recovery continue to come from the active Harness profile.
|
|
336
|
-
- 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.
|
|
337
|
-
- No real OAuth operation is required for installation, build, tests, doctor, or package validation.
|
|
201
|
+
## Project documentation
|
|
338
202
|
|
|
339
|
-
|
|
203
|
+
- [Installation and upgrades](INSTALL.md)
|
|
204
|
+
- [Migration from `dsh-codex`](MIGRATION.md)
|
|
205
|
+
- [Architecture and security details](docs/design.md)
|
|
206
|
+
- [Auto-review behavior](docs/auto-review.md)
|
|
207
|
+
- [Alpha release runbook](RELEASING.md)
|
|
340
208
|
|
|
341
209
|
## Development
|
|
342
210
|
|
|
@@ -345,14 +213,6 @@ pnpm install --frozen-lockfile
|
|
|
345
213
|
pnpm run check
|
|
346
214
|
```
|
|
347
215
|
|
|
348
|
-
##
|
|
349
|
-
|
|
350
|
-
Maintainers publish alpha versions through the [manual OIDC release workflow](.github/workflows/release.yml); see the [alpha release runbook](RELEASING.md) for the separate, short-lived `latest` promotion step.
|
|
351
|
-
|
|
352
|
-
## Legal / Acknowledgements
|
|
353
|
-
|
|
354
|
-
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.
|
|
355
|
-
|
|
356
|
-
## License
|
|
216
|
+
## License and acknowledgements
|
|
357
217
|
|
|
358
|
-
Apache-2.0
|
|
218
|
+
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).
|