dsh-codex-connect 0.1.0-alpha.4.4 → 0.1.0-alpha.4.40
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 +90 -14
- package/MIGRATION.md +31 -0
- package/NOTICE +5 -0
- package/README.i18n.yaml +3 -3
- package/README.md +100 -69
- package/VERSIONING.md +65 -0
- package/compatibility.json +30 -0
- package/cordis.patch.yml +5 -0
- package/docs/README.zh.md +106 -58
- package/docs/VERSIONING.zh.md +65 -0
- package/docs/agent-notes/account-recovery-state.md +9 -0
- package/docs/agent-notes/adaptive-runtime-status.md +131 -0
- package/docs/agent-notes/adaptive-runtime-validation-2026-09-18.md +45 -0
- package/docs/agent-notes/astra-context-audit.md +27 -0
- package/docs/agent-notes/auth-diagnostics-safety.md +5 -0
- package/docs/agent-notes/canary-unverified-doctor.md +9 -0
- package/docs/agent-notes/compatibility-refresh.md +17 -0
- package/docs/agent-notes/dispatcher-ownership.md +7 -0
- package/docs/agent-notes/dsh-016-candidate-validation.md +27 -0
- package/docs/agent-notes/dual-dsh-release.md +9 -0
- package/docs/agent-notes/env-proxy-dispatcher-preservation.md +7 -0
- package/docs/agent-notes/issue-211-root-cause.md +70 -0
- package/docs/agent-notes/issue-215-install-triage-2026-09-19.md +43 -0
- package/docs/agent-notes/oauth-cancel-commit.md +9 -0
- package/docs/agent-notes/oauth-jwt-decoding.md +7 -0
- package/docs/agent-notes/oauth-manual-callback-validation.md +44 -0
- package/docs/agent-notes/original-image-fork-access.md +7 -0
- package/docs/agent-notes/plugin-update-scope.md +9 -0
- package/docs/agent-notes/ptc-image-presentation.md +18 -0
- package/docs/agent-notes/remember-controlled-probes-delivery.md +41 -0
- package/docs/agent-notes/remember-delivery-preparation-2026-09-19.md +49 -0
- package/docs/agent-notes/remember-recall-investigation-2026-09-18.md +48 -0
- package/docs/agent-notes/request-response-lifecycle.md +7 -0
- package/docs/agent-notes/search-route-runtime-override.md +7 -0
- package/docs/agent-notes/shared-reserve-quota.md +9 -0
- package/docs/assets/composer-capabilities.jpg +0 -0
- package/docs/assets/en/hero.jpg +0 -0
- package/docs/assets/en/image-generation.png +0 -0
- package/docs/assets/en/model-selector.jpg +0 -0
- package/docs/assets/en/oauth-status.jpg +0 -0
- package/docs/assets/en/plugin-configuration.jpg +0 -0
- package/docs/assets/en/plugin-entry.jpg +0 -0
- package/docs/assets/hero.jpg +0 -0
- package/docs/assets/model-selector.jpg +0 -0
- package/docs/assets/oauth-status.jpg +0 -0
- package/docs/assets/plugin-configuration.jpg +0 -0
- package/docs/assets/zh/hero.jpg +0 -0
- package/docs/assets/zh/image-generation.png +0 -0
- package/docs/assets/zh/model-selector.jpg +0 -0
- package/docs/assets/zh/oauth-status.jpg +0 -0
- package/docs/assets/zh/plugin-configuration.jpg +0 -0
- package/docs/assets/zh/plugin-entry.jpg +0 -0
- package/docs/auto-review.md +26 -0
- package/docs/auto-review.zh.md +26 -0
- package/docs/design.i18n.yaml +2 -2
- package/docs/design.md +25 -5
- package/docs/design.zh.md +11 -5
- package/docs/experiments/adaptive-task-evaluation.md +34 -0
- package/docs/experiments/adaptive-task-phase1-acceptance.md +106 -0
- package/docs/experiments/adaptive-task-phase1.md +52 -0
- package/docs/experiments/adaptive-task-phase2-acceptance.md +68 -0
- package/docs/experiments/adaptive-task-phase2-consent.md +54 -0
- package/docs/experiments/adaptive-task-phase2-design.md +155 -0
- package/docs/experiments/adaptive-task-phase2-execution.md +49 -0
- package/docs/experiments/adaptive-task-phase2-ledger.md +40 -0
- package/docs/experiments/adaptive-task-phase2-recovery.md +48 -0
- package/docs/experiments/gpt6-sol-luna-compatibility.md +24 -0
- package/docs/experiments/issue-211-doctor-diagnostic-2026-09-18.json +153 -0
- package/docs/experiments/issue-211-peer-resolution-2026-09-18.json +837 -0
- package/docs/experiments/issue-219-diagnostics.md +49 -0
- package/docs/experiments/native-compaction-durable-m15-2026-09-18-1317.json +129 -0
- package/docs/experiments/native-compaction-durable-m15-2026-09-18-1317.md +37 -0
- package/docs/experiments/native-compaction-lifecycle.md +85 -0
- package/docs/experiments/native-compaction-luna-smoke-m15-2026-09-12.json +89 -0
- package/docs/experiments/native-context-switch-acceptance.md +65 -0
- package/docs/experiments/phase2-matrix-node22.json +2411 -0
- package/docs/experiments/phase2-matrix-node24.json +2411 -0
- package/docs/experiments/remember-acceptance.md +60 -0
- package/docs/experiments/remember-controlled-acceptance-plan.md +95 -0
- package/docs/experiments/remember-controlled-live-m15-2026-09-18-9n7e.json +548 -0
- package/docs/experiments/remember-controlled-live-m15-2026-09-18-9n7e.md +33 -0
- package/docs/experiments/remember-controlled-offline-evidence.json +1408 -0
- package/docs/experiments/remember-recall-offline-diagnostics-2026-09-18.json +553 -0
- package/docs/experiments/remember-user-acceptance-plan.md +33 -0
- package/docs/licenses/pi-ai-oauth.txt +21 -0
- package/docs/reference.i18n.yaml +4 -0
- package/docs/reference.md +184 -0
- package/docs/reference.zh.md +184 -0
- package/docs/release-notes/alpha-4.37.md +29 -0
- package/docs/release-notes/alpha-4.38.md +34 -0
- package/docs/release-notes/alpha-4.39.md +36 -0
- package/docs/versioning.i18n.yaml +4 -0
- package/lib/bin.d.ts +2 -3
- package/lib/bin.js +625 -15
- package/lib/client.js +6899 -424
- package/lib/index.d.ts +604 -90
- package/lib/index.js +2 -2
- package/lib/invariant.d.ts +4 -5
- package/lib/src-DI6F_yQY.js +11272 -0
- package/lib/undici-runtime-H2uktiw6.js +22 -0
- package/package.json +123 -49
- package/lib/src-BY1nv_E6.js +0 -1484
package/INSTALL.md
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
# Installation Runbook for CLI Agents
|
|
2
2
|
|
|
3
|
+
Published Alpha 4.39 is verified with DSH `0.1.2-rc.1` and pi-ai `0.84.4` within `^0.84.2`, and with each exact DSH `0.1.5-alpha.1`, `0.1.5-rc.1`, and `0.1.5-rc.2` model-runtime pairing using pi-ai `0.85.1`.
|
|
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
|
|
|
7
|
+
Channel snapshot on 2026-09-21: npm `alpha` points to `0.1.0-alpha.4.39`; `latest` intentionally remains on `0.1.0-alpha.4.34`. Use the exact-version commands below for 4.39. Publishing an Alpha and promoting the default installation channel are separate actions.
|
|
8
|
+
|
|
5
9
|
## Safety requirements
|
|
6
10
|
|
|
7
11
|
- Never read, print, copy, move, or modify `~/.codex/auth.json`.
|
|
@@ -12,28 +16,97 @@ Install `dsh-codex-connect` into one requested DeepSeek Harness profile without
|
|
|
12
16
|
|
|
13
17
|
## Install and validate
|
|
14
18
|
|
|
15
|
-
|
|
16
|
-
|
|
19
|
+
### Select an exact version before installation
|
|
20
|
+
|
|
21
|
+
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`. The CLI string alone does not identify every installed model-runtime package: a CLI reporting `0.1.5-rc.1` can resolve `0.1.5-rc.2` packages. When the plugin is already installed, also run `dsh plugin --profile web exec dsh-codex-connect doctor --json` and inspect the installed `@deepseek-ai/dsh-llm`, `@deepseek-ai/dsh-llm-pi-ai`, and pi-ai versions. Substitute the requested profile. Select an exact pair from [verified-compatibility.json](verified-compatibility.json):
|
|
22
|
+
|
|
23
|
+
| Installed DSH version | Codex Connect version to pin |
|
|
24
|
+
| --- | --- |
|
|
25
|
+
| `0.1.0-rc.7` | `0.1.0-alpha.4.14` |
|
|
26
|
+
| `0.1.1-rc.2` | `0.1.0-alpha.4.21` |
|
|
27
|
+
| `0.1.2-alpha.2` | `0.1.0-alpha.4.23` |
|
|
28
|
+
| `0.1.2-rc.1` | `0.1.0-alpha.4.39` |
|
|
29
|
+
| `0.1.2-alpha.5` | `0.1.0-alpha.4.25` |
|
|
30
|
+
| `0.1.5-alpha.1` | `0.1.0-alpha.4.39` |
|
|
31
|
+
| `0.1.5-rc.1` | `0.1.0-alpha.4.39` |
|
|
32
|
+
| `0.1.5-rc.2` | `0.1.0-alpha.4.39` |
|
|
33
|
+
|
|
34
|
+
If your exact DSH version is unknown or not listed, preserve the installed host, report that the combination is unverified, and verify it before making installation changes. A missing record does not prove incompatibility, and the catalog's latest verified DSH version is not the latest upstream release. Do not recommend upgrading or downgrading DSH merely to match a row. Investigate any specific failure and seek verification of the installed combination. Do not blindly install `dsh-codex-connect@alpha`: `alpha` is a moving tag, not a compatibility guarantee. Do not infer support for newer DSH versions from these rows.
|
|
35
|
+
|
|
36
|
+
Alpha 4.39 requires one consistent DSH plugin API version: `0.1.2-rc.1` with `@earendil-works/pi-ai` `^0.84.2`, or one of `0.1.5-alpha.1`, `0.1.5-rc.1`, and `0.1.5-rc.2` with pi-ai `0.85.1`; Node.js remains `^22.19.0 || >=24.0.0`. Mixed host versions and other DSH/pi-ai combinations remain unverified. 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. Changing DSH is a separate operation requiring the user's explicit request; a plugin update request does not authorize it. The repository's `pnpm --silent run check:compatibility` remains a strict development/release dependency gate, not a recommendation to change a user's host.
|
|
37
|
+
|
|
38
|
+
The Alpha 4.39 recommendation follows successful exact-release main CI, 1,037 local tests, 32 Chromium tests, and a four-host same-artifact installation matrix with 40 fresh native-compaction lifecycle processes. Independent post-publication download verified that npm's archive is byte-identical to the tested artifact; the Git tag and GitHub prerelease resolve to the exact release commit. These are synthetic-provider installation/lifecycle checks, not new real-account acceptance or a newly exercised published-package upgrade. See [.github/ALPHA_439_PUBLICATION.md](.github/ALPHA_439_PUBLICATION.md). Native context management remains opt-in. Stock DSH 0.1.6-alpha.1 and alpha.2 remain undeclared; their separate compatibility trackers are not broadened by this release.
|
|
39
|
+
|
|
40
|
+
Historical Alpha 4.35 evidence (not relabeled as 4.37):
|
|
41
|
+
|
|
42
|
+
The Alpha 4.35 rows reflect successful release-commit CI on Node 22.19.0 and 24.20.0 (840 tests each), 28 Chromium tests, Windows canary contracts, and the four-host installation/Reserve matrix. Independent post-publication checks installed the exact npm version on all four hosts, matched all 63 installed plugin files to the verified published archive, and exercised a 4.34-to-4.35 upgrade on rc.2. All eight advertised models resolved and prepared, defaults were unchanged, all optional capabilities remained disabled, and provider disposal and synthetic Reserve transitions passed. These checks are not fresh real OAuth, live Reserve/model/tool/image, or full Windows application acceptance. See [.github/ALPHA_435_RELEASE_READINESS.md](.github/ALPHA_435_RELEASE_READINESS.md) for publication, installation evidence, and limitations. 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).
|
|
43
|
+
|
|
44
|
+
Alpha 4.33 omits the `modelErrors` profile field required by RC model packages, producing `Cannot read properties of undefined (reading 'get')`. Alpha 4.34 contains the fix, retained in 4.35. Reauthorization or repeated model-list retries do not add a missing profile field. Pin the corrected plugin version for a verified host combination; do not delete credentials or change DSH merely to work around this failure. DSH `0.1.5-alpha.2` remains unverified.
|
|
45
|
+
|
|
46
|
+
### Install the selected version and validate
|
|
47
|
+
|
|
48
|
+
1. Complete the version selection above. The commands below use `web`; substitute only the requested profile.
|
|
49
|
+
2. Install the selected exact version. For DSH `0.1.0-rc.7`:
|
|
50
|
+
|
|
51
|
+
```sh
|
|
52
|
+
dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.14
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
For DSH `0.1.1-rc.2`, use Alpha 4.21:
|
|
56
|
+
|
|
57
|
+
```sh
|
|
58
|
+
dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.21
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
For DSH `0.1.2-alpha.2`, use Alpha 4.23:
|
|
17
62
|
|
|
18
63
|
```sh
|
|
19
|
-
dsh plugin --profile web add dsh-codex-connect@alpha
|
|
64
|
+
dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.23
|
|
20
65
|
```
|
|
21
66
|
|
|
22
|
-
|
|
67
|
+
For DSH `0.1.2-rc.1`, `0.1.5-alpha.1`, `0.1.5-rc.1`, or `0.1.5-rc.2`, use Alpha 4.39:
|
|
23
68
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
69
|
+
```sh
|
|
70
|
+
dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.39
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
For DSH `0.1.2-alpha.5`, use Alpha 4.25:
|
|
74
|
+
|
|
75
|
+
```sh
|
|
76
|
+
dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.25
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
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.39'` only for the DSH `0.1.2-rc.1`, `0.1.5-alpha.1`, `0.1.5-rc.1`, or `0.1.5-rc.2` combinations.
|
|
80
|
+
|
|
81
|
+
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.
|
|
82
|
+
4. Run `dsh --profile web --dump-config` and require exactly one `llm-openai-codex` row loading `dsh-codex-connect`.
|
|
83
|
+
5. Confirm the effective `agent-default-model` and `web.searchProvider` values are unchanged from before installation.
|
|
84
|
+
6. Run secret-free diagnostics:
|
|
27
85
|
|
|
28
86
|
```sh
|
|
29
87
|
dsh plugin --profile web exec dsh-codex-connect doctor
|
|
30
88
|
```
|
|
31
89
|
|
|
32
|
-
|
|
90
|
+
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.
|
|
91
|
+
|
|
92
|
+
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.
|
|
93
|
+
|
|
94
|
+
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).
|
|
95
|
+
|
|
96
|
+
### Remote browser access
|
|
97
|
+
|
|
98
|
+
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:
|
|
99
|
+
|
|
100
|
+
```sh
|
|
101
|
+
dsh plugin --profile web exec dsh-codex-connect trust-origin http://192.168.1.20:3080
|
|
102
|
+
dsh plugin --profile web exec dsh-codex-connect trusted-origins
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
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.
|
|
33
106
|
|
|
34
107
|
## Optional configuration
|
|
35
108
|
|
|
36
|
-
Use **Settings → Plugins → Plugin configuration → Codex Connect** for live, staged Save/Discard edits.
|
|
109
|
+
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`, `enableReserveFallback`, `enableImageTool`, `enableImageGeneration`, and `enableAutoReview`; all five default to `false`. Luna Reserve is a published experiment in Alpha 4.35: enable it only when explicitly requested, never as an automatic installation step. Real-account Reserve entry and recovery remain unverified; authorization must come from the identity-matched backend response, not a generic `429` or quota percentage. 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.
|
|
37
110
|
|
|
38
111
|
Apply only requested choices and preserve unrelated keys:
|
|
39
112
|
|
|
@@ -41,20 +114,19 @@ Apply only requested choices and preserve unrelated keys:
|
|
|
41
114
|
- id: llm-openai-codex
|
|
42
115
|
config:
|
|
43
116
|
enableSearch: true
|
|
117
|
+
enableReserveFallback: false
|
|
44
118
|
enableImageTool: false
|
|
119
|
+
enableImageGeneration: false
|
|
120
|
+
enableAutoReview: false
|
|
45
121
|
searchMode: live
|
|
46
122
|
|
|
47
|
-
- id: web
|
|
48
|
-
config:
|
|
49
|
-
searchProvider: openai-codex
|
|
50
|
-
|
|
51
123
|
- id: agent-default-model
|
|
52
124
|
config:
|
|
53
125
|
provider: openai-codex
|
|
54
126
|
model: gpt-5.6-sol
|
|
55
127
|
```
|
|
56
128
|
|
|
57
|
-
Do not add the
|
|
129
|
+
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.
|
|
58
130
|
|
|
59
131
|
## Conflict handling
|
|
60
132
|
|
|
@@ -62,6 +134,10 @@ Do not add the last two rows unless the user separately requested those routing
|
|
|
62
134
|
|
|
63
135
|
## Update and removal
|
|
64
136
|
|
|
137
|
+
The update card checks Codex Connect releases only. It does not assess the installed host or recommend a DSH upgrade or downgrade. Run `doctor --json` explicitly for local dependency diagnostics; an `unverified` result (and its nonzero exit code) means the installed combination is outside the declared support set, not that it is known to fail. See the [diagnostic statuses](docs/reference.md#local-installation-diagnostics).
|
|
138
|
+
|
|
139
|
+
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.
|
|
140
|
+
|
|
65
141
|
```sh
|
|
66
142
|
dsh plugin --profile web update dsh-codex-connect@alpha
|
|
67
143
|
dsh plugin --profile web remove dsh-codex-connect
|
package/MIGRATION.md
CHANGED
|
@@ -10,3 +10,34 @@
|
|
|
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
|
+
## Astra reasoning selections
|
|
15
|
+
|
|
16
|
+
The plugin's Astra fallback definition offers `low`, `medium`, `high`, `xhigh`, and `max`. An omitted `reasoningEffort` preserves the provider default; it does not select Low or disable reasoning. The native dependency definition still takes precedence when present.
|
|
17
|
+
|
|
18
|
+
Before using Astra with a saved `minimal` or `off` selection, update the selected conversation and, if applicable, the default model setting:
|
|
19
|
+
|
|
20
|
+
| Saved value | Selection preserving its effective request behavior |
|
|
21
|
+
| --- | --- |
|
|
22
|
+
| `minimal` | Select `Low` (`reasoningEffort: low`); both send `low`. |
|
|
23
|
+
| `off` | Select `Default` (provider default), omitting `reasoningEffort`; both omit wire `reasoning`. This never guaranteed disabled reasoning. |
|
|
24
|
+
|
|
25
|
+
Other valid explicit efforts remain unchanged. A saved `minimal`, `off`, or unsupported `none` request is rejected with `UNSUPPORTED_REASONING_EFFORT` before authentication or model traffic; the plugin does not silently change it. `none` has no supported prior behavior to preserve: choose a valid effort or `Default` explicitly. The plugin does not rewrite settings or historical Session events. Use the conversation model selector for an existing Session; changing only the default model does not replace that Session's explicit selection. OAuth credentials do not need migration.
|
|
26
|
+
|
|
27
|
+
## Repairing search history written by Alpha 4.10
|
|
28
|
+
|
|
29
|
+
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.
|
|
30
|
+
|
|
31
|
+
Upgrade Codex Connect, then inspect the default `$DSH_HOME/sessions` root without changing it:
|
|
32
|
+
|
|
33
|
+
```sh
|
|
34
|
+
dsh plugin --profile web exec dsh-codex-connect migrate-history --json
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
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`:
|
|
38
|
+
|
|
39
|
+
```sh
|
|
40
|
+
dsh plugin --profile web exec dsh-codex-connect migrate-history --apply --confirm-stopped --json
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
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
|
|
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: dd62e2e61bb8541efc785538d1510afb37c4e221
|
|
6
|
+
docs/README.zh.md: 4bf1f92786f86c484343b57a8259dd5a769a2a26
|
package/README.md
CHANGED
|
@@ -1,112 +1,143 @@
|
|
|
1
1
|
# Codex Connect
|
|
2
2
|
|
|
3
|
-
[](https://www.npmjs.com/package/dsh-codex-connect)
|
|
3
|
+
[](https://www.npmjs.com/package/dsh-codex-connect)
|
|
4
4
|
|
|
5
5
|
English | [中文](docs/README.zh.md)
|
|
6
6
|
|
|
7
|
-
Connect your ChatGPT subscription to DeepSeek Harness with OAuth, user-controlled defaults, Harness-native approvals, diagnostics, and reliable session recovery.
|
|
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
|
-
|
|
9
|
+
Community Alpha — not affiliated with or endorsed by OpenAI, ChatGPT, Codex, DeepSeek, or DeepSeek Harness.
|
|
10
10
|
|
|
11
|
-
|
|
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
12
|
|
|
13
|
-
##
|
|
13
|
+
## Quick start
|
|
14
|
+
|
|
15
|
+
This guide describes the published pairings below. Check `dsh --version` first and use `doctor --json` to inspect the installed model-runtime packages: an rc.1 CLI can resolve rc.2 packages. For other versions, 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.39` |
|
|
20
|
+
| DeepSeek Harness | `0.1.2-rc.1`, `0.1.5-alpha.1`, `0.1.5-rc.1`, or `0.1.5-rc.2` |
|
|
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
|
+
As of 2026-09-21, npm `alpha` points to 4.39 while `latest` intentionally remains on 4.34. Use the exact version below for 4.39; this recommendation does not promote the default installation channel.
|
|
25
|
+
|
|
26
|
+
### 1. Install
|
|
14
27
|
|
|
15
28
|
```sh
|
|
16
|
-
dsh plugin --profile web add dsh-codex-connect@alpha
|
|
29
|
+
dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.39
|
|
17
30
|
dsh web
|
|
18
31
|
```
|
|
19
32
|
|
|
20
|
-
|
|
33
|
+
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.
|
|
34
|
+
|
|
35
|
+
### 2. Authorize and select a model
|
|
36
|
+
|
|
37
|
+
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.
|
|
38
|
+
|
|
39
|
+
Never paste an authorization URL, code, token, or account identifier into an issue, log, chat, or configuration file. For a browser on another device, the optional manual callback form can complete the pending login without forwarding the localhost callback port; follow [Remote browser authorization](docs/reference.md#remote-browser-authorization).
|
|
21
40
|
|
|
22
|
-
|
|
41
|
+
### 3. Check the installation
|
|
23
42
|
|
|
24
43
|
```sh
|
|
25
|
-
dsh plugin --profile web exec dsh-codex-connect
|
|
26
|
-
dsh plugin --profile web exec dsh-codex-connect
|
|
27
|
-
dsh plugin --profile web exec dsh-codex-connect doctor
|
|
44
|
+
dsh plugin --profile web exec dsh-codex-connect status --json
|
|
45
|
+
dsh plugin --profile web exec dsh-codex-connect doctor --json
|
|
28
46
|
```
|
|
29
47
|
|
|
30
|
-
|
|
48
|
+
`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.
|
|
31
49
|
|
|
32
|
-
|
|
50
|
+
<p align="center">
|
|
51
|
+
<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%">
|
|
52
|
+
</p>
|
|
33
53
|
|
|
34
|
-
|
|
54
|
+
## Core capabilities
|
|
35
55
|
|
|
36
|
-
|
|
56
|
+
- **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.
|
|
57
|
+
- **Models and Astra support:** the currently verified DSH and plugin combination supports `gpt-6-astra`. The plugin supplies its missing model definition with Low, Medium, High, Xhigh, and Max reasoning levels; Default preserves the provider default. Saved Off/Minimal selections require an [explicit update](MIGRATION.md#astra-reasoning-selections). When the installed dependency catalog includes Astra, the plugin preserves its native metadata while retaining these five calibrated reasoning choices. 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.
|
|
58
|
+
- **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.
|
|
59
|
+
- **Quota:** show the server-returned `5h` and `7d` windows and reset times, normally refreshed every 60 seconds while signed in and the tab is visible; failures back off. Missing windows are not invented; Spark uses its separate quota bucket.
|
|
60
|
+
- **Plugin updates:** check for newer Codex Connect releases without installing anything or recommending changes to DSH. Host compatibility is available through explicit local diagnostics.
|
|
37
61
|
|
|
38
|
-
|
|
39
|
-
-
|
|
40
|
-
|
|
41
|
-
enableSearch: false
|
|
42
|
-
enableImageTool: false
|
|
43
|
-
```
|
|
62
|
+
<p align="center">
|
|
63
|
+
<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">
|
|
64
|
+
</p>
|
|
44
65
|
|
|
45
|
-
|
|
66
|
+
## Optional capabilities
|
|
46
67
|
|
|
47
|
-
|
|
48
|
-
- id: agent-default-model
|
|
49
|
-
config:
|
|
50
|
-
provider: openai-codex
|
|
51
|
-
model: gpt-5.6-sol
|
|
52
|
-
```
|
|
68
|
+
**Unreleased model compatibility:** the development branch also supplies `gpt-6-sol` and `gpt-6-luna` when older provider catalogs omit them, retaining native metadata when present. Both expose Low through Max (including Xhigh); Default omits an explicit effort. Codex Sol's Ultra orchestration mode is not implemented. New task grants can explicitly include these models, but existing grants, GPT-5.6 Sol/Medium startup and Luna Reserve remain unchanged. This is not included in the published 4.39 package or proof of account access. See [compatibility scope and validation](docs/experiments/gpt6-sol-luna-compatibility.md).
|
|
53
69
|
|
|
54
|
-
|
|
70
|
+
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.
|
|
55
71
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
72
|
+
| Capability | Enable with | Important behavior |
|
|
73
|
+
|---|---|---|
|
|
74
|
+
| Proxy | `enableProxy` | Credential-free HTTP(S), scoped to this plugin's traffic. A failed proxy request does not silently retry directly. |
|
|
75
|
+
| Codex Search | `enableSearch` | Selects Codex for the entire profile's search route; disabling restores the previously active route. |
|
|
76
|
+
| Luna Reserve | `enableReserveFallback` | Uses the hidden Reserve route only when the backend explicitly authorizes it for the captured account; never changes global defaults or retries a generic `429`. |
|
|
77
|
+
| Image viewing | `enableImageTool` | Adds `view_image` to vision-capable models for local files and validated public HTTP(S) images. |
|
|
78
|
+
| GPT Image generation | `enableImageGeneration` | Prompt-only generation; availability, dimensions, and quota remain account- and service-controlled. |
|
|
79
|
+
| 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. |
|
|
62
80
|
|
|
63
|
-
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
81
|
+
**Published experiment:** Alpha 4.35 includes Luna Reserve fallback, disabled by default. Real-account Reserve entry and recovery remain unverified; Alpha 4.34 does not include this feature.
|
|
82
|
+
|
|
83
|
+
With `enableReserveFallback: true`, the account UI and agent routing share one identity-bound quota state. Background refresh follows the returned quota windows while recently in use; fresh state is reused across agent steps. Ordinary quota reads also share the cache, even with Reserve disabled. The plugin enters `gpt-reserve` only with complete, non-FedRAMP account/user identity and backend Luna Reserve authorization, then restores the session's previous model and reasoning effort after confirmed ordinary-usage recovery. Reserve has its own allowance, is hidden from the model picker, and is not unlimited. The backend decides eligibility; reset times alone do not authorize a switch. This version supports known `gpt-5.6-luna` metadata only. See [Luna Reserve fallback](docs/reference.md#luna-reserve-fallback) for refresh, identity, and verification limits.
|
|
84
|
+
|
|
85
|
+
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.
|
|
86
|
+
|
|
87
|
+
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.
|
|
67
88
|
|
|
68
|
-
|
|
89
|
+
## FAQ and important limits
|
|
69
90
|
|
|
70
|
-
|
|
71
|
-
|---|---:|---|
|
|
72
|
-
| `enableSearch` | `false` | boolean |
|
|
73
|
-
| `enableImageTool` | `false` | boolean |
|
|
74
|
-
| `searchModel` | `gpt-5.6-sol` | Codex model id |
|
|
75
|
-
| `searchMode` | `cached` | `cached`, `indexed`, `live` |
|
|
76
|
-
| `searchContextSize` | `medium` | `low`, `medium`, `high` |
|
|
77
|
-
| `searchMaxOutputTokens` | `10000` | positive integer |
|
|
91
|
+
### Where are my credentials stored?
|
|
78
92
|
|
|
79
|
-
|
|
93
|
+
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.
|
|
80
94
|
|
|
81
|
-
|
|
82
|
-
- 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.
|
|
83
|
-
- Status and diagnostics return only non-sensitive state. OAuth flow output is confined to an explicit `login` operation.
|
|
84
|
-
- 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.
|
|
85
|
-
- 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.
|
|
86
|
-
- Removing the package does not delete OAuth state. Run `logout` only when credential removal is intended.
|
|
95
|
+
### Does uninstalling sign me out?
|
|
87
96
|
|
|
88
|
-
|
|
97
|
+
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.
|
|
89
98
|
|
|
90
|
-
|
|
91
|
-
- ChatGPT plan eligibility, model access, quotas, and backend behavior are controlled by OpenAI and may change.
|
|
92
|
-
- 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.
|
|
93
|
-
- Shell, filesystem, skills, MCP, subagents, approvals, permissions, attachments, session persistence, compaction, and recovery continue to come from the active Harness profile.
|
|
94
|
-
- 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.
|
|
95
|
-
- No real OAuth operation is required for installation, build, tests, doctor, or package validation.
|
|
99
|
+
### Can I switch accounts for different conversations?
|
|
96
100
|
|
|
97
|
-
|
|
101
|
+
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).
|
|
98
102
|
|
|
99
|
-
|
|
103
|
+
### Why does a listed model fail?
|
|
104
|
+
|
|
105
|
+
Model HTTP/SSE failures include bounded, request-local diagnostic metadata after the existing error message. An `overloaded` message alone does not establish an account block. See [persistent-error diagnostics](docs/experiments/issue-219-diagnostics.md) for scope and reproduction.
|
|
106
|
+
|
|
107
|
+
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.
|
|
108
|
+
|
|
109
|
+
### Does changing client headers prevent persistent authorization failures?
|
|
110
|
+
|
|
111
|
+
No such guarantee is established. Codex Connect is a third-party integration; it does not impersonate Codex Desktop or fabricate installation/attestation headers. The pi-ai model/OAuth route and auxiliary routes currently identify themselves differently. OpenAI's [App Server documentation](https://developers.openai.com/codex/app-server/) asks integrations to identify their own client with `clientInfo`; it does not establish acceptance rules for this plugin's direct backend calls. An `overloaded` message is not proof of a block. Capture the bounded error metadata and compare successful and failed windows before attributing the cause; share request IDs privately, never tokens or full session archives.
|
|
112
|
+
|
|
113
|
+
### Can I keep the original `dsh-codex` plugin installed?
|
|
114
|
+
|
|
115
|
+
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.
|
|
116
|
+
|
|
117
|
+
### What do diagnostics prove?
|
|
118
|
+
|
|
119
|
+
`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).
|
|
120
|
+
|
|
121
|
+
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.
|
|
122
|
+
|
|
123
|
+
## Documentation and development
|
|
124
|
+
|
|
125
|
+
- [Installation and upgrades](INSTALL.md)
|
|
126
|
+
- [Configuration, diagnostics, and recovery](docs/reference.md)
|
|
127
|
+
- [Migration from `dsh-codex`](MIGRATION.md)
|
|
128
|
+
- [Architecture and security details](docs/design.md)
|
|
129
|
+
- [Auto-review behavior](docs/auto-review.md)
|
|
130
|
+
- [Release runbook](RELEASING.md), [Contributing](CONTRIBUTING.md), and [Security policy](SECURITY.md)
|
|
100
131
|
|
|
101
132
|
```sh
|
|
102
133
|
pnpm install --frozen-lockfile
|
|
103
134
|
pnpm run check
|
|
135
|
+
pnpm run test:browser
|
|
136
|
+
pnpm run check:dsh-install
|
|
104
137
|
```
|
|
105
138
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
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.
|
|
139
|
+
`check` covers static checks, unit tests, build, compatibility, and packaging. `lint:metadata` checks package and release rules; `lint:source` checks host and browser TypeScript for unhandled or misused promises, invalid awaits, duplicate cases, and unreachable code. Browser regression and isolated DSH installation are separate commands. These checks use no real OAuth authorization and do not replace real-account acceptance.
|
|
109
140
|
|
|
110
|
-
## License
|
|
141
|
+
## License and acknowledgements
|
|
111
142
|
|
|
112
|
-
Apache-2.0
|
|
143
|
+
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-matrix
|
|
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,30 @@
|
|
|
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
|
+
"versions": ["0.1.2-rc.1", "0.1.5-alpha.1", "0.1.5-rc.1", "0.1.5-rc.2"],
|
|
9
|
+
"packages": [
|
|
10
|
+
"@deepseek-ai/dsh-agent",
|
|
11
|
+
"@deepseek-ai/dsh-atomic-write",
|
|
12
|
+
"@deepseek-ai/dsh-attachment",
|
|
13
|
+
"@deepseek-ai/dsh-home-paths",
|
|
14
|
+
"@deepseek-ai/dsh-host-webserver",
|
|
15
|
+
"@deepseek-ai/dsh-invariants",
|
|
16
|
+
"@deepseek-ai/dsh-llm",
|
|
17
|
+
"@deepseek-ai/dsh-llm-pi-ai",
|
|
18
|
+
"@deepseek-ai/dsh-fs",
|
|
19
|
+
"@deepseek-ai/dsh-session",
|
|
20
|
+
"@deepseek-ai/dsh-settings",
|
|
21
|
+
"@deepseek-ai/dsh-tools",
|
|
22
|
+
"@deepseek-ai/dsh-util-values",
|
|
23
|
+
"@deepseek-ai/dsh-web"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
"piAi": {
|
|
27
|
+
"package": "@earendil-works/pi-ai",
|
|
28
|
+
"version": "^0.84.2 || 0.85.1"
|
|
29
|
+
}
|
|
30
|
+
}
|
package/cordis.patch.yml
CHANGED