dsh-codex-connect 0.1.0-alpha.4.29 → 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.
- package/README.i18n.yaml +3 -3
- package/README.md +57 -157
- package/VERSIONING.md +65 -0
- package/docs/README.zh.md +57 -157
- package/docs/VERSIONING.zh.md +65 -0
- package/docs/agent-notes/compatibility-refresh.md +17 -0
- package/docs/reference.i18n.yaml +4 -0
- package/docs/reference.md +143 -0
- package/docs/reference.zh.md +143 -0
- package/docs/versioning.i18n.yaml +4 -0
- package/lib/bin.js +1 -1
- package/lib/client.js +51 -18
- package/lib/index.js +1 -1
- package/lib/{src-BNfobpwF.js → src-D2Ig4NNT.js} +1 -1
- package/package.json +2 -1
package/README.i18n.yaml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Bilingual-pair consistency record
|
|
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
4
|
# git hash-object README.md docs/README.zh.md
|
|
5
|
-
README.md:
|
|
6
|
-
docs/README.zh.md:
|
|
5
|
+
README.md: a46589829b432cfcb97af069f7d7a7b3080e42af
|
|
6
|
+
docs/README.zh.md: c42807c90ad4fcc4a4850d1228cfd6330b2bc184
|
package/README.md
CHANGED
|
@@ -6,223 +6,123 @@ English | [中文](docs/README.zh.md)
|
|
|
6
6
|
|
|
7
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
|
-
|
|
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
|
-
</p>
|
|
12
|
-
|
|
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
|
-
|
|
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
|
-
|
|
17
|
-
## Highlights
|
|
18
|
-
|
|
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.
|
|
9
|
+
Community Alpha — not affiliated with or endorsed by OpenAI, ChatGPT, Codex, DeepSeek, or DeepSeek Harness.
|
|
25
10
|
|
|
26
|
-
|
|
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.
|
|
27
12
|
|
|
28
13
|
## Quick start
|
|
29
14
|
|
|
30
|
-
|
|
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.
|
|
31
16
|
|
|
32
|
-
|
|
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 |
|
|
33
23
|
|
|
34
|
-
|
|
35
|
-
dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.29
|
|
36
|
-
```
|
|
37
|
-
|
|
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.
|
|
39
|
-
|
|
40
|
-
### 2. Start Harness and authorize
|
|
24
|
+
### 1. Install
|
|
41
25
|
|
|
42
26
|
```sh
|
|
27
|
+
dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.29
|
|
43
28
|
dsh web
|
|
44
29
|
```
|
|
45
30
|
|
|
46
|
-
|
|
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.
|
|
47
32
|
|
|
48
|
-
|
|
33
|
+
### 2. Authorize and select a model
|
|
49
34
|
|
|
50
|
-
|
|
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.
|
|
51
36
|
|
|
52
|
-
|
|
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).
|
|
53
38
|
|
|
54
|
-
|
|
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">
|
|
56
|
-
</p>
|
|
57
|
-
|
|
58
|
-
### 4. Verify the installation
|
|
39
|
+
### 3. Check the installation
|
|
59
40
|
|
|
60
41
|
```sh
|
|
61
|
-
dsh --profile web --dump-config
|
|
62
42
|
dsh plugin --profile web exec dsh-codex-connect status --json
|
|
63
43
|
dsh plugin --profile web exec dsh-codex-connect doctor --json
|
|
64
44
|
```
|
|
65
45
|
|
|
66
|
-
|
|
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.
|
|
71
|
-
|
|
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 and closes accepted callback connections, including incomplete HTTP requests. After cancellation, the browser reads account labels and quota together before updating the view. 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. If that account becomes unavailable during authentication, the request fails and requires an explicit retry with the selected account.
|
|
75
|
-
- Quota, search, image generation and Auto-review keep that same account through token refresh. Each quota response pairs its usage and account labels from one snapshot; a concurrent switch may leave an older snapshot visible until the next refresh, but does not relabel its quota as another account's.
|
|
76
|
-
- 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.
|
|
77
|
-
- Codex Connect does not rotate accounts automatically or fail over when a request is rejected.
|
|
78
|
-
|
|
79
|
-
Credential changes wait up to 20 seconds for the writer lock, allowing an in-progress token refresh to finish. A lock timeout fails the operation without deleting another writer's lock or changing stored accounts. A lock left behind by a crashed process requires operator recovery after confirming that no writer is running.
|
|
80
|
-
|
|
81
|
-
Request authentication failures use fixed messages without upstream response bodies or nested provider errors. A failed refresh preserves the stored credentials.
|
|
82
|
-
|
|
83
|
-
An explicit OAuth `invalid_grant` rejection during refresh shows the reauthorization prompt. Network failures, timeouts and server errors keep the account selected and show a quota error so you can retry; they do not delete credentials or start a new login.
|
|
84
|
-
|
|
85
|
-
For GPT Codex conversations, the Composer shows two session controls:
|
|
86
|
-
|
|
87
|
-
- **Fast Mode** requests the faster `1.5×` mode for that conversation only. It is off by default and does not change the model.
|
|
88
|
-
- **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.
|
|
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.
|
|
89
47
|
|
|
90
48
|
<p align="center">
|
|
91
|
-
<img src="https://raw.githubusercontent.com/franksong2702/dsh-codex-connect/main/docs/assets/
|
|
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%">
|
|
92
50
|
</p>
|
|
93
51
|
|
|
94
|
-
##
|
|
95
|
-
|
|
96
|
-
Fresh installations register the model provider and leave every additional capability disabled:
|
|
97
|
-
|
|
98
|
-
```yaml
|
|
99
|
-
- id: llm-openai-codex
|
|
100
|
-
config:
|
|
101
|
-
enableProxy: false
|
|
102
|
-
enableSearch: false
|
|
103
|
-
enableImageTool: false
|
|
104
|
-
enableImageGeneration: false
|
|
105
|
-
enableAutoReview: false
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
Edit these options under **Settings → Plugins → Plugin configuration → Codex Connect** or **Settings → Models → Openai-Codex → More settings**. Changes are staged until **Save changes**. Saving commits edited fields together and preserves concurrent changes to untouched fields. A conflicting edit or failed save keeps your draft; discard it to reload the latest settings. Most settings affect only this plugin; enabling Codex Search also selects it as the active profile-wide search route.
|
|
109
|
-
|
|
110
|
-
### Proxy
|
|
52
|
+
## Core capabilities
|
|
111
53
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
- `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.
|
|
119
|
-
- Search has a 30-second total deadline covering authentication, response headers and body reading. Responses larger than 1 MiB are rejected, and unfinished response bodies are cancelled on failure. Caller cancellation can end a search sooner.
|
|
120
|
-
- `enableImageTool: true` registers `view_image` on vision-capable models. Remote reads accept credential-free public HTTP(S) only and revalidate DNS and redirects.
|
|
121
|
-
- `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.
|
|
122
|
-
|
|
123
|
-
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.
|
|
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.
|
|
124
59
|
|
|
125
60
|
<p align="center">
|
|
126
|
-
<img src="https://raw.githubusercontent.com/franksong2702/dsh-codex-connect/main/docs/assets/
|
|
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">
|
|
127
62
|
</p>
|
|
128
63
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
`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.
|
|
132
|
-
|
|
133
|
-
## Routing and configuration
|
|
134
|
-
|
|
135
|
-
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:
|
|
136
|
-
|
|
137
|
-
```yaml
|
|
138
|
-
- id: agent-default-model
|
|
139
|
-
config:
|
|
140
|
-
provider: openai-codex
|
|
141
|
-
model: gpt-5.6-sol
|
|
142
|
-
|
|
143
|
-
- id: llm-openai-codex
|
|
144
|
-
config:
|
|
145
|
-
enableSearch: true
|
|
146
|
-
searchMode: live
|
|
147
|
-
searchContextSize: medium
|
|
64
|
+
## Optional capabilities
|
|
148
65
|
|
|
149
|
-
|
|
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.
|
|
150
67
|
|
|
151
|
-
|
|
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. |
|
|
152
75
|
|
|
153
|
-
|
|
154
|
-
|---|---:|---|
|
|
155
|
-
| `models` | full catalog | Visible Codex model ids; an empty array hides all entries |
|
|
156
|
-
| `enableProxy` | `false` | Use `proxyUrl` for Codex Connect traffic |
|
|
157
|
-
| `proxyUrl` | `http://127.0.0.1:7890` | Credential-free HTTP(S) proxy origin; inactive until enabled |
|
|
158
|
-
| `contextWindowOverrides` | none | Per-model client context-budget overrides |
|
|
159
|
-
| `enableSearch` | `false` | Register Codex search and select it when the setting is saved |
|
|
160
|
-
| `enableImageTool` | `false` | Register `view_image` |
|
|
161
|
-
| `enableImageGeneration` | `false` | Register GPT Image generation |
|
|
162
|
-
| `enableAutoReview` | `false` | Review eligible approval requests with Codex |
|
|
163
|
-
| `searchModel` | `gpt-5.6-sol` | Model used by standalone search |
|
|
164
|
-
| `searchMode` | `cached` | `cached`, `indexed`, or `live` |
|
|
165
|
-
| `searchContextSize` | `medium` | `low`, `medium`, or `high` |
|
|
166
|
-
| `searchMaxOutputTokens` | `10000` | Positive integer output budget for search |
|
|
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.
|
|
167
77
|
|
|
168
|
-
|
|
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.
|
|
169
79
|
|
|
170
|
-
##
|
|
80
|
+
## FAQ and important limits
|
|
171
81
|
|
|
172
|
-
###
|
|
82
|
+
### Where are my credentials stored?
|
|
173
83
|
|
|
174
|
-
|
|
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.
|
|
175
85
|
|
|
176
|
-
|
|
177
|
-
dsh plugin --profile web exec dsh-codex-connect capabilities --model gpt-5.6-sol --json
|
|
178
|
-
dsh plugin --profile web exec dsh-codex-connect capabilities --model gpt-5.6-sol --probe --json
|
|
179
|
-
dsh plugin --profile web exec dsh-codex-connect auto-review-probe --json
|
|
180
|
-
```
|
|
86
|
+
### Does uninstalling sign me out?
|
|
181
87
|
|
|
182
|
-
|
|
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.
|
|
183
89
|
|
|
184
|
-
###
|
|
90
|
+
### Can I switch accounts for different conversations?
|
|
185
91
|
|
|
186
|
-
|
|
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).
|
|
187
93
|
|
|
188
|
-
|
|
189
|
-
dsh plugin --profile web exec dsh-codex-connect trust-origin http://192.168.1.20:3080
|
|
190
|
-
dsh plugin --profile web exec dsh-codex-connect trusted-origins
|
|
191
|
-
dsh plugin --profile web exec dsh-codex-connect untrust-origin http://192.168.1.20:3080
|
|
192
|
-
```
|
|
94
|
+
### Why does a listed model fail?
|
|
193
95
|
|
|
194
|
-
|
|
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.
|
|
195
97
|
|
|
196
|
-
###
|
|
98
|
+
### Can I keep the original `dsh-codex` plugin installed?
|
|
197
99
|
|
|
198
|
-
|
|
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.
|
|
199
101
|
|
|
200
|
-
|
|
102
|
+
### What do diagnostics prove?
|
|
201
103
|
|
|
202
|
-
|
|
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).
|
|
203
105
|
|
|
204
|
-
|
|
205
|
-
- 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.
|
|
206
|
-
- ChatGPT plan eligibility, model access, quotas, backend context capacity, and service behavior are controlled by OpenAI and may change.
|
|
207
|
-
- Harness remains responsible for shell, filesystem, skills, MCP, subagents, approvals, permissions, attachments, session persistence, compaction, and recovery.
|
|
208
|
-
- Install, build, tests, `doctor`, and package validation require no real OAuth operation.
|
|
209
|
-
- This is a community Alpha. It is not affiliated with or endorsed by OpenAI, ChatGPT, Codex, DeepSeek, or DeepSeek Harness.
|
|
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.
|
|
210
107
|
|
|
211
|
-
##
|
|
108
|
+
## Documentation and development
|
|
212
109
|
|
|
213
110
|
- [Installation and upgrades](INSTALL.md)
|
|
111
|
+
- [Configuration, diagnostics, and recovery](docs/reference.md)
|
|
214
112
|
- [Migration from `dsh-codex`](MIGRATION.md)
|
|
215
113
|
- [Architecture and security details](docs/design.md)
|
|
216
114
|
- [Auto-review behavior](docs/auto-review.md)
|
|
217
|
-
- [
|
|
218
|
-
|
|
219
|
-
## Development
|
|
115
|
+
- [Release runbook](RELEASING.md), [Contributing](CONTRIBUTING.md), and [Security policy](SECURITY.md)
|
|
220
116
|
|
|
221
117
|
```sh
|
|
222
118
|
pnpm install --frozen-lockfile
|
|
223
119
|
pnpm run check
|
|
120
|
+
pnpm run test:browser
|
|
121
|
+
pnpm run check:dsh-install
|
|
224
122
|
```
|
|
225
123
|
|
|
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.
|
|
125
|
+
|
|
226
126
|
## License and acknowledgements
|
|
227
127
|
|
|
228
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).
|