dsh-codex-connect 0.1.0-alpha.4.4 → 0.1.0-alpha.4.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/INSTALL.md +90 -14
  2. package/MIGRATION.md +31 -0
  3. package/NOTICE +5 -0
  4. package/README.i18n.yaml +3 -3
  5. package/README.md +102 -69
  6. package/VERSIONING.md +65 -0
  7. package/compatibility.json +30 -0
  8. package/cordis.patch.yml +5 -0
  9. package/docs/README.zh.md +108 -58
  10. package/docs/VERSIONING.zh.md +65 -0
  11. package/docs/agent-notes/account-recovery-state.md +9 -0
  12. package/docs/agent-notes/adaptive-runtime-status.md +131 -0
  13. package/docs/agent-notes/adaptive-runtime-validation-2026-09-18.md +45 -0
  14. package/docs/agent-notes/astra-context-audit.md +27 -0
  15. package/docs/agent-notes/auth-diagnostics-safety.md +5 -0
  16. package/docs/agent-notes/canary-unverified-doctor.md +9 -0
  17. package/docs/agent-notes/compatibility-refresh.md +17 -0
  18. package/docs/agent-notes/dispatcher-ownership.md +7 -0
  19. package/docs/agent-notes/dsh-016-candidate-validation.md +27 -0
  20. package/docs/agent-notes/dual-dsh-release.md +9 -0
  21. package/docs/agent-notes/env-proxy-dispatcher-preservation.md +7 -0
  22. package/docs/agent-notes/issue-211-root-cause.md +70 -0
  23. package/docs/agent-notes/issue-215-install-triage-2026-09-19.md +43 -0
  24. package/docs/agent-notes/oauth-cancel-commit.md +9 -0
  25. package/docs/agent-notes/oauth-jwt-decoding.md +7 -0
  26. package/docs/agent-notes/oauth-manual-callback-validation.md +44 -0
  27. package/docs/agent-notes/original-image-fork-access.md +7 -0
  28. package/docs/agent-notes/plugin-update-scope.md +9 -0
  29. package/docs/agent-notes/ptc-image-presentation.md +18 -0
  30. package/docs/agent-notes/remember-controlled-probes-delivery.md +41 -0
  31. package/docs/agent-notes/remember-delivery-preparation-2026-09-19.md +49 -0
  32. package/docs/agent-notes/remember-recall-investigation-2026-09-18.md +48 -0
  33. package/docs/agent-notes/request-response-lifecycle.md +7 -0
  34. package/docs/agent-notes/search-route-runtime-override.md +7 -0
  35. package/docs/agent-notes/shared-reserve-quota.md +9 -0
  36. package/docs/assets/composer-capabilities.jpg +0 -0
  37. package/docs/assets/en/hero.jpg +0 -0
  38. package/docs/assets/en/image-generation.png +0 -0
  39. package/docs/assets/en/model-selector.jpg +0 -0
  40. package/docs/assets/en/oauth-status.jpg +0 -0
  41. package/docs/assets/en/plugin-configuration.jpg +0 -0
  42. package/docs/assets/en/plugin-entry.jpg +0 -0
  43. package/docs/assets/hero.jpg +0 -0
  44. package/docs/assets/model-selector.jpg +0 -0
  45. package/docs/assets/oauth-status.jpg +0 -0
  46. package/docs/assets/plugin-configuration.jpg +0 -0
  47. package/docs/assets/zh/hero.jpg +0 -0
  48. package/docs/assets/zh/image-generation.png +0 -0
  49. package/docs/assets/zh/model-selector.jpg +0 -0
  50. package/docs/assets/zh/oauth-status.jpg +0 -0
  51. package/docs/assets/zh/plugin-configuration.jpg +0 -0
  52. package/docs/assets/zh/plugin-entry.jpg +0 -0
  53. package/docs/auto-review.md +26 -0
  54. package/docs/auto-review.zh.md +26 -0
  55. package/docs/design.i18n.yaml +2 -2
  56. package/docs/design.md +25 -5
  57. package/docs/design.zh.md +11 -5
  58. package/docs/experiments/adaptive-task-evaluation.md +34 -0
  59. package/docs/experiments/adaptive-task-phase1-acceptance.md +106 -0
  60. package/docs/experiments/adaptive-task-phase1.md +52 -0
  61. package/docs/experiments/adaptive-task-phase2-acceptance.md +68 -0
  62. package/docs/experiments/adaptive-task-phase2-consent.md +54 -0
  63. package/docs/experiments/adaptive-task-phase2-design.md +155 -0
  64. package/docs/experiments/adaptive-task-phase2-execution.md +49 -0
  65. package/docs/experiments/adaptive-task-phase2-ledger.md +40 -0
  66. package/docs/experiments/adaptive-task-phase2-recovery.md +48 -0
  67. package/docs/experiments/gpt6-sol-luna-compatibility.md +24 -0
  68. package/docs/experiments/issue-211-doctor-diagnostic-2026-09-18.json +153 -0
  69. package/docs/experiments/issue-211-peer-resolution-2026-09-18.json +837 -0
  70. package/docs/experiments/issue-219-diagnostics.md +49 -0
  71. package/docs/experiments/native-compaction-durable-m15-2026-09-18-1317.json +129 -0
  72. package/docs/experiments/native-compaction-durable-m15-2026-09-18-1317.md +37 -0
  73. package/docs/experiments/native-compaction-lifecycle.md +85 -0
  74. package/docs/experiments/native-compaction-luna-smoke-m15-2026-09-12.json +89 -0
  75. package/docs/experiments/native-context-switch-acceptance.md +65 -0
  76. package/docs/experiments/phase2-matrix-node22.json +2411 -0
  77. package/docs/experiments/phase2-matrix-node24.json +2411 -0
  78. package/docs/experiments/remember-acceptance.md +60 -0
  79. package/docs/experiments/remember-controlled-acceptance-plan.md +95 -0
  80. package/docs/experiments/remember-controlled-live-m15-2026-09-18-9n7e.json +548 -0
  81. package/docs/experiments/remember-controlled-live-m15-2026-09-18-9n7e.md +33 -0
  82. package/docs/experiments/remember-controlled-offline-evidence.json +1408 -0
  83. package/docs/experiments/remember-recall-offline-diagnostics-2026-09-18.json +553 -0
  84. package/docs/experiments/remember-user-acceptance-plan.md +33 -0
  85. package/docs/licenses/pi-ai-oauth.txt +21 -0
  86. package/docs/reference.i18n.yaml +4 -0
  87. package/docs/reference.md +184 -0
  88. package/docs/reference.zh.md +184 -0
  89. package/docs/release-notes/alpha-4.37.md +29 -0
  90. package/docs/release-notes/alpha-4.38.md +34 -0
  91. package/docs/release-notes/alpha-4.39.md +36 -0
  92. package/docs/versioning.i18n.yaml +4 -0
  93. package/lib/bin.d.ts +2 -3
  94. package/lib/bin.js +625 -15
  95. package/lib/client.js +6904 -422
  96. package/lib/index.d.ts +604 -90
  97. package/lib/index.js +2 -2
  98. package/lib/invariant.d.ts +4 -5
  99. package/lib/src-BWvQQwSp.js +11272 -0
  100. package/lib/undici-runtime-H2uktiw6.js +22 -0
  101. package/package.json +123 -49
  102. 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.40 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-23: npm `alpha` points to `0.1.0-alpha.4.40`; `latest` intentionally remains on `0.1.0-alpha.4.34`. Use the exact-version commands below for 4.40. 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
- 1. Check `dsh --version` or `dsh --help`. From a Harness checkout use `pnpm dsh`.
16
- 2. Install the package:
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.40` |
29
+ | `0.1.2-alpha.5` | `0.1.0-alpha.4.25` |
30
+ | `0.1.5-alpha.1` | `0.1.0-alpha.4.40` |
31
+ | `0.1.5-rc.1` | `0.1.0-alpha.4.40` |
32
+ | `0.1.5-rc.2` | `0.1.0-alpha.4.40` |
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.40 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.40 recommendation follows successful exact-release main CI on Node 22 and 24 (1,282 unit tests each), 52 Chromium tests, and a four-host same-artifact installation matrix. After npm processing completed, the [recovery verification](https://github.com/franksong2702/dsh-codex-connect/actions/runs/35809194145) matched the public npm archive byte-for-byte to the original verified release artifact, then created the matching Git tag and GitHub prerelease. The [original release run](https://github.com/franksong2702/dsh-codex-connect/actions/runs/35808472911) remains failed because npm's public readback was not available within its bounded retry period; do not rerun publication. These are synthetic-provider installation/lifecycle checks, not new real-account acceptance or a newly exercised published-package upgrade. Native context management and task-level model control remain 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
- To pin this release exactly, use `dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.4`. If npm is unavailable, use `dsh plugin --profile web add 'github:franksong2702/dsh-codex-connect#v0.1.0-alpha.4.4'`.
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.40:
23
68
 
24
- 3. Run `dsh --profile web --dump-config` and require exactly one `llm-openai-codex` row loading `dsh-codex-connect`.
25
- 4. Confirm the effective `agent-default-model` and `web.searchProvider` values are unchanged from before installation.
26
- 5. Run secret-free diagnostics:
69
+ ```sh
70
+ dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.40
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.40'` 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
- 6. If the user explicitly requests login, open **Settings → Plugins → Plugin configuration → Codex Connect**, or check `status` and then use `login` or `login --device-code`. OAuth approval belongs to the user.
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. The package row accepts the same `enableSearch` and `enableImageTool` fields as its composition base, both defaulting to `false`. Enabling search registers a provider but does not select it; selecting `web.searchProvider: openai-codex` is a second explicit profile change. Setting `agent-default-model` to `openai-codex` is also a separate explicit change.
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 last two rows unless the user separately requested those routing changes.
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 (docs/i18n/README.md): the git blob hash of each
1
+ # Bilingual-pair consistency record: the git blob hash of each
2
2
  # side as of the last confirmed-consistent state. Both languages carry equal authority;
3
3
  # after editing either side, bring the other along and re-record with:
4
4
  # git hash-object README.md docs/README.zh.md
5
- README.md: 16d921296b08e7b01cb9cf3cf5ade516544acba5
6
- docs/README.zh.md: 3de5c7920bf27ec7e72cc8d67941578a31b5a00b
5
+ README.md: de5caa049cdea46800dca79f9c18c00983d1e4c6
6
+ docs/README.zh.md: 4e6ee736540e88f22939a08287df88706c5bb18f
package/README.md CHANGED
@@ -1,112 +1,145 @@
1
1
  # Codex Connect
2
2
 
3
- [![npm version](https://img.shields.io/npm/v/dsh-codex-connect?label=npm&color=cb3837)](https://www.npmjs.com/package/dsh-codex-connect)
3
+ [![npm version](https://img.shields.io/npm/v/dsh-codex-connect/alpha?label=npm%20alpha&color=cb3837)](https://www.npmjs.com/package/dsh-codex-connect)
4
4
 
5
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
- `dsh-codex-connect` adds the `openai-codex` model catalog and a separate ChatGPT OAuth login. Models run through Harness's normal LLM service, so streaming, tool calls, reasoning replay, compaction, filesystem controls, permission gates, and approval prompts remain Harness-owned. It does not turn a ChatGPT subscription into an OpenAI Platform API credential.
9
+ Community Alpha — not affiliated with or endorsed by OpenAI, ChatGPT, Codex, DeepSeek, or DeepSeek Harness.
10
10
 
11
- Installation is additive. The bundle does not replace the current default model or search route, and its standalone search provider and `view_image` tool are disabled until explicitly enabled.
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
- ## Install
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.40` |
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-23, npm `alpha` points to 4.40 while `latest` intentionally remains on 4.34. Use the exact version below for 4.40; 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.40
17
30
  dsh web
18
31
  ```
19
32
 
20
- To pin this release exactly, use `dsh plugin --profile web add dsh-codex-connect@0.1.0-alpha.4.4`. If npm is unavailable, use the GitHub tag fallback: `dsh plugin --profile web add 'github:franksong2702/dsh-codex-connect#v0.1.0-alpha.4.4'`. From a DeepSeek Harness source checkout, prefix commands with `pnpm`. For a local checkout, install `link:/absolute/path/to/dsh-codex-connect`.
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
- Sign in from **Settings → Plugins → Plugin configuration → Codex Connect → Sign in with ChatGPT**, or use the CLI:
41
+ ### 3. Check the installation
23
42
 
24
43
  ```sh
25
- dsh plugin --profile web exec dsh-codex-connect login
26
- dsh plugin --profile web exec dsh-codex-connect status
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
- The doctor command reads process and filesystem metadata only. It never opens the OAuth document or prints a token, authorization URL, authorization code, account id, or auth-file content.
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
- ## Explicit configuration
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
- Open **Settings → Plugins → Plugin configuration → Codex Connect** to manage the ChatGPT account and optional capabilities in one card. Changes use Harness's revision-fenced settings store and apply live. **Save changes** affects only this plugin's capability section; it never selects a default model or global search route.
54
+ ## Core capabilities
35
55
 
36
- The installed bundle row remains the composition base and is intentionally inert beyond model-provider registration:
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
- ```yaml
39
- - id: llm-openai-codex
40
- config:
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
- To make a Codex model the default for new agents, add or update the separate Harness row yourself:
66
+ ## Optional capabilities
46
67
 
47
- ```yaml
48
- - id: agent-default-model
49
- config:
50
- provider: openai-codex
51
- model: gpt-5.6-sol
52
- ```
68
+ **New in Alpha 4.40:** task-level model control is off by default. After explicit task authorization, GPT-5.6 Sol/Medium starts the task, and the active model may continue, change effort, or hand off the main task within the granted scope. The task shares one request ledger and budget; stopping, manual takeover, and restart recovery retain the grant boundary. Phase 2 read-only delegation requires separate consent and does not grant workers write access. These are opt-in task capabilities, not parallel Think/Split/Remember switches. See [Phase 1](docs/experiments/adaptive-task-phase1.md) and [Phase 2 consent](docs/experiments/adaptive-task-phase2-consent.md).
53
69
 
54
- The card can enable Codex standalone search. Selecting it as the profile's global search provider remains a separate explicit choice:
70
+ Alpha 4.40 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. A catalog entry is not proof of account access. See [compatibility scope and validation](docs/experiments/gpt6-sol-luna-compatibility.md).
55
71
 
56
- ```yaml
57
- - id: llm-openai-codex
58
- config:
59
- enableSearch: true
60
- searchMode: live
61
- searchContextSize: medium
72
+ 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.
62
73
 
63
- - id: web
64
- config:
65
- searchProvider: openai-codex
66
- ```
74
+ | Capability | Enable with | Important behavior |
75
+ |---|---|---|
76
+ | Proxy | `enableProxy` | Credential-free HTTP(S), scoped to this plugin's traffic. A failed proxy request does not silently retry directly. |
77
+ | Codex Search | `enableSearch` | Selects Codex for the entire profile's search route; disabling restores the previously active route. |
78
+ | 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`. |
79
+ | Image viewing | `enableImageTool` | Adds `view_image` to vision-capable models for local files and validated public HTTP(S) images. |
80
+ | GPT Image generation | `enableImageGeneration` | Prompt-only generation; availability, dimensions, and quota remain account- and service-controlled. |
81
+ | 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. |
82
+
83
+ **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.
84
+
85
+ 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.
86
+
87
+ 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.
67
88
 
68
- To add the image-loading tool, set `enableImageTool: true` on `llm-openai-codex`. Browser paste/drop remains a Harness attachment feature and does not depend on this tool.
89
+ 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.
69
90
 
70
- | Field | Default | Values |
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
+ ## FAQ and important limits
78
92
 
79
- ## Credentials, diagnostics, and conflicts
93
+ ### Where are my credentials stored?
80
94
 
81
- - OAuth is stored separately at `$DSH_HOME/.openai-codex-auth.json` (`~/.dsh` by default); `~/.codex/auth.json` is never copied or modified.
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
+ 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.
87
96
 
88
- ## Compatibility and security boundary
97
+ ### Does uninstalling sign me out?
89
98
 
90
- - Alpha compatibility targets the current Harness `0.1.0-rc.5` main-line composition and compatible `0.1.0-rc.6` plugin APIs, Node.js `^22.19.0 || >=24.0.0`, and the pinned `@earendil-works/pi-ai` Codex provider.
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
+ 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.
96
100
 
97
- See [INSTALL.md](INSTALL.md) for the idempotent agent runbook, [RELEASING.md](RELEASING.md) for the Alpha release checklist, [MIGRATION.md](MIGRATION.md) for migration from `dsh-codex`, and [docs/design.md](docs/design.md) for architecture details.
101
+ ### Can I switch accounts for different conversations?
98
102
 
99
- ## Development
103
+ 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).
104
+
105
+ ### Why does a listed model fail?
106
+
107
+ 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.
108
+
109
+ 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.
110
+
111
+ ### Does changing client headers prevent persistent authorization failures?
112
+
113
+ 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.
114
+
115
+ ### Can I keep the original `dsh-codex` plugin installed?
116
+
117
+ 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.
118
+
119
+ ### What do diagnostics prove?
120
+
121
+ `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).
122
+
123
+ 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.
124
+
125
+ ## Documentation and development
126
+
127
+ - [Installation and upgrades](INSTALL.md)
128
+ - [Configuration, diagnostics, and recovery](docs/reference.md)
129
+ - [Migration from `dsh-codex`](MIGRATION.md)
130
+ - [Architecture and security details](docs/design.md)
131
+ - [Auto-review behavior](docs/auto-review.md)
132
+ - [Release runbook](RELEASING.md), [Contributing](CONTRIBUTING.md), and [Security policy](SECURITY.md)
100
133
 
101
134
  ```sh
102
135
  pnpm install --frozen-lockfile
103
136
  pnpm run check
137
+ pnpm run test:browser
138
+ pnpm run check:dsh-install
104
139
  ```
105
140
 
106
- ## Legal / Acknowledgements
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.
141
+ `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
142
 
110
- ## License
143
+ ## License and acknowledgements
111
144
 
112
- Apache-2.0
145
+ 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
@@ -4,5 +4,10 @@
4
4
  - id: llm-openai-codex
5
5
  name: dsh-codex-connect
6
6
  config:
7
+ enableProxy: false
7
8
  enableSearch: false
9
+ enableReserveFallback: false
10
+ enableNativeCompaction: false
8
11
  enableImageTool: false
12
+ enableImageGeneration: false
13
+ enableAutoReview: false