dsh-grok-provider 1.0.3 → 1.0.5

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/CHANGELOG.md CHANGED
@@ -1,12 +1,27 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.0.5 - 2026-09-13
4
+
5
+ - Restore Grok account RPC after the DSH 0.1.5-rc.2 upgrade. Custom-channel registration failed with `cannot get property "webServer" without inject`, leaving the visible settings page unable to read account state or CLI versions.
6
+ - Register six exact POST routes on the host-authenticated shared `/api` carrier and use namespaced Connection RPC methods from the browser. Retain host trust/authentication, request-schema validation, cancellation, and fiber-owned disposal.
7
+ - Align Harness peers and locked development dependencies with 0.1.5-rc.2. Add real Connection registry and malformed-envelope regressions.
8
+ - macOS isolated-Harness checks recover status, official CLI 1.0.5, grok-4.6/grok-4.5 and quota. Unauthenticated requests return 401 and foreign Origins return 403. Physical Windows sign-in and live generation were not repeated.
9
+
10
+ ## 1.0.4 - 2026-09-04
11
+
12
+ - Stop named-importing the deleted `@deepseek-ai/dsh-settings` helpers `installSettingsSection` and `settingsNamespace`. Register the legal string constant `llm-grok` through `ctx.settings.installSection(...)` so the Host can load on DeepSeek Harness `0.1.2-rc.1`.
13
+ - Keep composition-config fallback when the settings service is missing or reloaded. Enable, disable, and failed-enable rollback still preserve receipts, generations, and account state.
14
+ - Raise required Harness peers to the `0.1.2-rc.1` boundary (`dsh-settings`, `dsh-llm`, `dsh-commands`, `dsh-subprocess`, matching client packages, Cordis `4.0.2`, Schemastery `3.18.2`) and replace the removed Web inject `@deepseek-ai/dsh-client-runtime` with `@deepseek-ai/dsh-client-ui-renderer`. Pass Harness `offloadedImageText` as the required image-offload placeholder.
15
+ - Add a Host import regression against the published `dsh-settings@0.1.2-rc.1` module graph and scan every `dist/**` file so packed artifacts cannot reintroduce the deleted helpers. Authentication recovery, Search protocol, images, fixed endpoints, and the Windows browser-login boundary are unchanged.
16
+ - Code PR #41 merged as `61c80fff0841e44c16dabb2cc803a80c1bdf5456`; release-evidence PR #43 produced final release commit `62df21df08053d293ebb59c6e67597402c2305af`, whose main CI run `33873037630` passed on macOS 14 and Windows 2022. Trusted Publisher run `33873873314` published the explicitly authorized 78-file artifact: 274,332 bytes packed, 850,183 bytes unpacked, SHA-256 `464045290b06ce71b78285571c6968e6268fa403fa2350834d2dc479e88fd001`, and SRI `sha512-axCBVXQ9BI9boYrlIsa+TWURMo8tQ5GdHpcQVfXUz2OLg+5rbg3XUZSv3ZRQVYQNmyXSQ+frIBDMsbZUGaXJ6w==`. Candidate, Release, and Registry bytes match; npm reports `latest=1.0.4`, signatures and attestations verify, and SLSA provenance binds the tag, workflow, final commit, and publish run.
17
+
3
18
  ## 1.0.3 - 2026-08-31
4
19
 
5
20
  - Recover one pre-stream 401/403 by asking the official Grok CLI to refresh its shared session, reloading the validated credential, and retrying the request exactly once. Concurrent rejections from the same credential revision share one bounded refresh; a persistent rejection remains `AUTH`.
6
21
  - Never replay a request after a successful response begins. Abort a response after two continuous minutes without any wire bytes; each received byte chunk refreshes this idle deadline. If the source disconnects, idles out, or reaches clean EOF after only bounded text/reasoning chunks, preserve that partial output, close its visible blocks, and append a bilingual interruption notice asking the user to send “continue.” Any observed tool call, unknown chunk, malformed protocol, user abort, or empty partial response keeps the established fail-closed behavior.
7
22
  - Distinguish a clean premature SSE EOF from malformed events so only the former is eligible for partial-output preservation. Focused regressions cover one-shot recovery, persistent auth failure, concurrent single-flight refresh, post-start no-retry, idle timeout, transport interruption, clean EOF, status-bearing stream rejection, and partial tool-call rejection. The exact Node `24.19.0` suite passes with 274 tests, 272 pass, 0 fail, and 2 platform skips.
8
23
  - Complete one redacted real-account success-path request with exact `grok-4.6` at Low Effort through the production adapter. It produced 2 block starts, 14 reasoning deltas, 2 block ends, 1 text delta, 1 usage chunk, and 1 finish. No response text, prompt output, URL, identity, credential, or raw event was retained; this does not simulate a future 401 or network stall.
9
- - Code PR #37 merged as `9958f487abf8ebd062eecb4368689e4d049b1d35`; main CI run `33377849906` passed on macOS 14 and Windows 2022. Artifact digests and publication evidence remain pending until the release-evidence commit is merged and one tarball is frozen from that exact commit.
24
+ - Code PR #37 merged as `9958f487abf8ebd062eecb4368689e4d049b1d35`; main CI run `33377849906` passed on macOS 14 and Windows 2022. Release-evidence PR #38 produced final release commit `07ebd35c56348a1b3296bd46d1a69f5b0f430241`, whose final CI run `33378215345` also passed on both platforms. Annotated tag object `7ec8a8a1086749e7ac1dfb0ef2bd50c821838363` peels to that commit. Trusted Publisher run `33379149158` attempt 1 published the explicitly authorized unique 77-file artifact: 267,403 bytes packed, 829,862 bytes unpacked, SHA-1 `6197c3d30ec1ef5f559371911d612f6236eee2f9`, SHA-256 `7f740c7258ab7eee0c96e1ddae3398b41a25e718cf267e244f8693c3c99aeb0d`, and SRI `sha512-kJgN0NKKV7Te3oAgbPnEua/EQCLnj5S0KWAWrhP0ixudJBepplRFARYHCxwxOwbG87bnX07Mz/dxCoBiphWhqQ==`. The frozen artifact, GitHub Release asset, and npm Registry tarball are byte-identical; npm reports `latest=1.0.3`. A locked Node `24.19.0` / npm `11.5.1` Registry install passed Host/client smoke and zero-vulnerability production audit. Package metadata exposes 1 Registry signature and 2 attestations, `npm audit signatures` verified 11 signed packages and 2 attested packages, and SLSA provenance exactly binds `release.yml`, `refs/tags/v1.0.3`, the release commit, and publish run. Real-device Windows external-browser launch remains unverified.
10
25
 
11
26
  ## 1.0.2 - 2026-08-30
12
27
 
package/README.en.md CHANGED
@@ -4,11 +4,11 @@
4
4
 
5
5
  Use an already authenticated official Grok Build account from DeepSeek Harness, with dynamic model discovery, streaming reasoning, image input, optional Web/X Search, tool calls, and an account quota/model capability dashboard.
6
6
 
7
- > Unofficial community project; not affiliated with xAI or DeepSeek Harness. This README describes the `dsh-grok-provider@1.0.3` artifact; version `0.1.8` was published and then withdrawn and cannot be reused.
7
+ > Unofficial community project; not affiliated with xAI or DeepSeek Harness. This README describes the `dsh-grok-provider@1.0.5` artifact; version `0.1.8` was published and then withdrawn and cannot be reused.
8
8
 
9
- `1.0.3` addresses two real-session interruption paths. A 401/403 received before streaming begins triggers one bounded refresh through the official Grok CLI and at most one retry. Once streaming starts, the request is never replayed. If a connection then ends after only safe text/reasoning output, the Provider preserves those chunks and asks the user to send “continue”; tool calls, unknown events, and malformed protocol still fail closed.
9
+ `1.0.5` repairs unavailable account services and unknown CLI versions after upgrading to DeepSeek Harness `0.1.5-rc.2`. Six account operations now use the host-authenticated shared `/api/grok-auth/*` routes, restoring status, CLI diagnostics, model discovery, and quota reads.
10
10
 
11
- This README is included in the `1.0.3` npm tarball, and the exact installation command below is pinned to `1.0.3`. The previous version with completed supply-chain readback is `1.0.2`.
11
+ This README is included in the `1.0.5` npm tarball, and the exact installation command below is pinned to `1.0.5`. The previous version with completed supply-chain readback is `1.0.4`.
12
12
 
13
13
  ## What it provides
14
14
 
@@ -19,7 +19,7 @@ This README is included in the `1.0.3` npm tarball, and the exact installation c
19
19
  | Models | Discovers every model visible to the account at runtime; no static model allowlist |
20
20
  | Conversations | Streaming Responses text, reasoning, encrypted reasoning replay, usage, and finish reasons |
21
21
  | Images | Only exact `grok-4.6` accepts bounded JPEG/PNG images from Harness attachments; `grok-4.5` and all other models remain text-only |
22
- | Search | Exact `grok-4.6` provides default-off Web/X Search; `1.0.3` adds pre-stream authentication recovery and safe partial-output preservation without replaying a started stream |
22
+ | Search | Exact `grok-4.6` provides default-off Web/X Search; switches are saved through the live settings service |
23
23
  | Tools | Returns function calls to the Harness permission layer; the provider never executes tools, and local `web_search` / `x_search` remain when the corresponding Search setting is off |
24
24
  | Account dashboard | Login status, weekly/monthly quota, reset time, dynamic model capabilities and reasoning efforts |
25
25
  | Surfaces | Bilingual Web settings and a closed `/grok` TUI command set |
@@ -28,7 +28,7 @@ This README is included in the `1.0.3` npm tarball, and the exact installation c
28
28
 
29
29
  ### 1. Prerequisites
30
30
 
31
- - DeepSeek Harness `0.1.1-rc.2`
31
+ - DeepSeek Harness `0.1.5-rc.2`
32
32
  - Node.js `24.19.0` or newer
33
33
  - macOS arm64 or Windows x64
34
34
  - Official Grok Build CLI with `login --oauth` support and the default Grok home
@@ -47,7 +47,7 @@ When the network is reachable and OIDC discovery succeeds, the official CLI open
47
47
  Install the exact version:
48
48
 
49
49
  ```sh
50
- dsh plugin --profile web add dsh-grok-provider@1.0.3
50
+ dsh plugin --profile web add dsh-grok-provider@1.0.5
51
51
  dsh web
52
52
  ```
53
53
 
@@ -74,7 +74,7 @@ The Web settings page shows:
74
74
 
75
75
  When protobuf-backed billing includes a complete weekly/monthly period but omits a zero-valued percentage, the page restores “0% used / 100% remaining.” Other incomplete responses remain unknown.
76
76
 
77
- Harness `0.1.1-rc.2` does not expose an icon field on `settings.section`. The Provider embeds the MIT-licensed `IconThinkOutline16` path geometry from `@deepseek-ai/dsh-client-ui-primitives@0.1.0-rc.7` and displays it only when the `Grok Build` label and settings-dialog DOM structure produce one exact match; otherwise it safely keeps the Host gear. The compatibility observer, marker, and style are all removed when the plugin unloads.
77
+ Harness `0.1.5-rc.2` does not expose an icon field on `settings.section`. The Provider embeds the MIT-licensed `IconThinkOutline16` path geometry from `@deepseek-ai/dsh-client-ui-primitives@0.1.0-rc.7` and displays it only when the `Grok Build` label and settings-dialog DOM structure produce one exact match; otherwise it safely keeps the Host gear. The compatibility observer, marker, and style are all removed when the plugin unloads.
78
78
 
79
79
  ## Plugin preview
80
80
 
@@ -134,9 +134,9 @@ Uninstalling the provider does not remove the official Grok CLI or directly modi
134
134
 
135
135
  ## Sources and discovery
136
136
 
137
- - Exact npm version described by this README: [dsh-grok-provider@1.0.2](https://www.npmjs.com/package/dsh-grok-provider/v/1.0.2)
138
- - Current GitHub release with completed readback: [v1.0.2](https://github.com/yoshino-xiao7/dsh-grok-provider/releases/tag/v1.0.2)
139
- - Release evidence: release commit `be200f9352afe93b27dd2856d89c01674f0cd637`, annotated tag object `b7efd3aabb99c73e1747d2d87890cdf9b284c438` peeling to that commit, final CI run [`33318426571`](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33318426571), and Trusted Publisher run [`33319150964` attempt 1](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33319150964/attempts/1). The repository owner explicitly authorized the unique 74-file artifact, which is 255,282 bytes packed and 789,962 bytes unpacked; SHA-1 is `3feddb7048fe4c796037804518999b12ae491802`, SHA-256 is `010a21770cb3e4e42b7195984df1f5bf8dc5027066198cf99b7d713ac045f605`, and SRI is `sha512-TcvvPUXBJZEA728pVnUrXSZebGfIoB5ATG5041wA1OFzOE+hFTO98C5Fxl99WuFW2y7V89gkusYIKCpGlLNQIg==`. The frozen candidate, GitHub Release asset, and npm Registry tarball are byte-identical, and npm confirms that `dsh-grok-provider@1.0.2` is installable and `latest=1.0.2`. A locked Registry install under Node `24.19.0` / npm `11.5.1` passed Host registration/`apply`/injection and client registration/factory/`apply`/injection smoke checks with zero production vulnerabilities. `npm audit signatures` confirmed verified Registry signatures for 11 packages and verified attestations for 2 packages; this package's public metadata exposes 1 Registry signature and 2 attestations, while SLSA provenance exactly binds `release.yml`, `refs/tags/v1.0.2`, the release commit, and publish run.
137
+ - Exact npm version described by this README: [dsh-grok-provider@1.0.3](https://www.npmjs.com/package/dsh-grok-provider/v/1.0.3)
138
+ - Current GitHub release with completed readback: [v1.0.3](https://github.com/yoshino-xiao7/dsh-grok-provider/releases/tag/v1.0.3)
139
+ - Release evidence: release commit `07ebd35c56348a1b3296bd46d1a69f5b0f430241`, annotated tag object `7ec8a8a1086749e7ac1dfb0ef2bd50c821838363` peeling to that commit, final CI run [`33378215345`](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33378215345), and Trusted Publisher run [`33379149158` attempt 1](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33379149158/attempts/1). The explicitly authorized unique 77-file artifact is 267,403 bytes packed and 829,862 bytes unpacked; SHA-1 is `6197c3d30ec1ef5f559371911d612f6236eee2f9`, SHA-256 is `7f740c7258ab7eee0c96e1ddae3398b41a25e718cf267e244f8693c3c99aeb0d`, and SRI is `sha512-kJgN0NKKV7Te3oAgbPnEua/EQCLnj5S0KWAWrhP0ixudJBepplRFARYHCxwxOwbG87bnX07Mz/dxCoBiphWhqQ==`. The frozen artifact, GitHub Release asset, and Registry tarball are byte-identical. A locked Registry install passed Host/client loading with zero production vulnerabilities; package metadata exposes 1 Registry signature and 2 attestations, while the installed graph has 11 verified signed packages and 2 attested packages. SLSA provenance exactly binds `release.yml`, `refs/tags/v1.0.3`, the release commit, and publish run.
140
140
  - npm page documentation correction: the `1.0.1` tarball retained an older installation example; the README in the published `1.0.2` tarball uses the exact `@1.0.2` command. Published `1.0.1` bytes are not replaced.
141
141
  - GitHub community discovery: the repository carries the DeepSeek Harness-recommended `dsh-plugin` and `dsh` topics
142
142
  - YukiRyou managed source: [deepseek-yukiryou-plugin-catalog](https://github.com/yoshino-xiao7/deepseek-yukiryou-plugin-catalog), still pinned to the real-device-accepted `dsh-grok-provider@0.1.0` and marking only `darwin-arm64`
@@ -145,6 +145,26 @@ Directory inclusion is not an endorsement by xAI or DeepSeek Harness. [Listing P
145
145
 
146
146
  ## Compatibility and scope
147
147
 
148
+ ### `1.0.5` fix boundary
149
+
150
+ - Move six account operations to exact POST routes on shared `/api`; the host retains browser-session authentication, Host/Origin checks, and body limits.
151
+ - Validate requests with the host schema, reject malformed or mismatched methods, and remove routes with the plugin.
152
+ - Align dependencies with DSH `0.1.5-rc.2`. An isolated macOS instance verifies status, CLI `1.0.5`, both models, and quota; unauthenticated requests return 401 and foreign Origins return 403.
153
+ - Physical Windows browser sign-in and live generation were not repeated. See [release notes](docs/releases/v1.0.5.md).
154
+
155
+ ### `1.0.4` repair boundary
156
+
157
+ - The Host no longer named-imports `installSettingsSection` or `settingsNamespace` from `@deepseek-ai/dsh-settings`; it registers the legal string constant `llm-grok` through the settings service `installSection` API.
158
+ - Composition config remains the fallback when the settings service is missing or reloaded. Enable, disable, and failed-enable rollback still keep receipts, generations, and account state.
159
+ - Required peers now match Harness `0.1.2-rc.1` (`dsh-settings` / `dsh-llm`, Cordis `4.0.2`, Schemastery `3.18.2`). The Web client inject list uses `@deepseek-ai/dsh-client-ui-renderer` in place of the removed `dsh-client-runtime`.
160
+ - Authentication recovery, partial-output preservation, Search protocol, images, fixed endpoints, and the Windows browser-login boundary are unchanged. See [`docs/releases/v1.0.4.md`](docs/releases/v1.0.4.md).
161
+
162
+ ### `1.0.3` repair boundary
163
+
164
+ - Only a 401/403 received before 200/SSE begins can trigger one bounded shared-session refresh through the official Grok CLI, credential reload, and at most one retry. A persistent rejection remains `AUTH`; no API-key mode is added.
165
+ - A started stream is never replayed. On transport interruption, clean premature EOF, or two continuous minutes without any wire bytes, only bounded text/reasoning with no tool side effects may be preserved with a “send continue” notice. Tool calls, unknown events, malformed protocol, user abort, and empty partial responses remain fail closed.
166
+ - The exact Node `24.19.0` gate reports 274 tests, 272 pass, 0 fail, and 2 platform skips. Final release commit, dual-platform CI, explicit authorization, isolated installation, Registry, signature, attestations, and provenance readback are complete for the unique 77-file artifact. The real-account success-path check does not simulate a future 401 or disconnect, and this release is not real-device Windows browser-login acceptance. See [`docs/releases/v1.0.3.md`](docs/releases/v1.0.3.md).
167
+
148
168
  ### `1.0.2` repair boundary
149
169
 
150
170
  - An ordinary strictly empty reasoning item retains the existing ID/type, sequence, output-index, status, empty summary/content, size, optional encrypted-content, and closure checks. A same-ID Search-backed reuse additionally retains exact own-data key and accessor rejection. This release does not expand the accepted protocol domain.
@@ -171,11 +191,11 @@ Directory inclusion is not an endorsement by xAI or DeepSeek Harness. [Listing P
171
191
  - Two-layer redacted real-account verification passed against the final source: raw Web/X probes each completed one 64-event response, observed the requested Search kind, and reached `completed`; the production adapter completed 5 Responses calls, with direct Web/X both ending in `stop` and a Harness-shaped local `x_search` call/result continuation ending `tool-calls`, `tool-calls`, then `stop`, with one local call in each of the first two turns. That continuation did not place a Harness `x_search` function definition beside an xAI `{ type: "x_search" }` server descriptor in the same wire request; `1.0.1` later isolated that combination as an HTTP 400 conflict. No results, URLs, prompts, identity, or credentials were retained; this is not publication, OAuth, or real-device Windows evidence.
172
192
  - The manifest and lockfile are synchronized at `1.0.0`; the Node 24 suite reports 245 tests, 243 pass, 0 fail, and 2 platform skips. Production audit reports zero vulnerabilities, and the deterministic build/bundle comparison, 72-entry dry-run pack, secret scan, and diff check pass. Code PR #28, main CI run [`33308371009`](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33308371009), the final release commit, dual-platform final CI, unique artifact, exact authorization, and Registry/signature/attestation/provenance readback are complete.
173
193
 
174
- | Item | Published `1.0.2` compatibility boundary |
194
+ | Item | `1.0.5` compatibility boundary |
175
195
  | --- | --- |
176
- | DeepSeek Harness | Exact support for `0.1.1-rc.2` |
196
+ | DeepSeek Harness | Exact support for `0.1.5-rc.2` |
177
197
  | Node.js | `>=24.19.0` |
178
- | macOS arm64 | Image sending has real-Harness confirmation; `1.0.2` only changes the visible projection of strictly empty reasoning |
198
+ | macOS arm64 | Image sending has real-Harness confirmation; `1.0.5` validates account RPC on `0.1.5-rc.2` |
179
199
  | Windows x64 | The code path and existing slow fakes are unchanged. On a reachable network the official CLI generates the URL and opens the browser, and that path still lacks real-device Windows acceptance |
180
200
  | macOS x64 / Linux | Unsupported |
181
201
  | Grok CLI | No full-version lock; official path, `login --oauth` capability, and production OIDC credential contract are enforced |
package/README.md CHANGED
@@ -4,11 +4,11 @@
4
4
 
5
5
  让 DeepSeek Harness 使用你已登录的官方 Grok Build 账号:动态模型发现、流式推理、图片输入、可选 Web/X Search、工具调用,以及账号额度与模型能力面板。
6
6
 
7
- > 非官方社区项目,与 xAI 或 DeepSeek Harness 官方无隶属关系。本说明对应 `dsh-grok-provider@1.0.3` 制品;`0.1.8` 曾发布后撤回且版本号不可复用。
7
+ > 非官方社区项目,与 xAI 或 DeepSeek Harness 官方无隶属关系。本说明对应 `dsh-grok-provider@1.0.5` 制品;`0.1.8` 曾发布后撤回且版本号不可复用。
8
8
 
9
- `1.0.3` 修复两类真实运行中断:流开始前遇到 401/403 时,通过官方 Grok CLI 进行一次有界会话刷新并仅重试一次;流已开始后绝不重放。若连接中断前只收到安全的文本/reasoning,Provider 会保留已收到内容并提示用户发送“继续”;一旦出现工具调用、未知事件或协议异常,仍严格失败关闭。
9
+ `1.0.5` 修复更新到 DeepSeek Harness `0.1.5-rc.2` 后账户页面显示“服务不可用”、CLI 版本未知的问题。六个账户操作改用主机认证的共享 `/api/grok-auth/*` 路由,恢复登录状态、CLI 检测、模型目录与额度读取。
10
10
 
11
- 本 README 随 `1.0.3` 一起进入 npm tarball,下面的精确安装命令也固定为 `1.0.3`。上一份已完成供应链回读的版本为 `1.0.2`。
11
+ 本 README 随 `1.0.5` 一起进入 npm tarball,下面的精确安装命令也固定为 `1.0.5`。上一份已完成供应链回读的版本为 `1.0.4`。
12
12
 
13
13
  ## 它解决什么问题
14
14
 
@@ -19,7 +19,7 @@
19
19
  | 模型 | 运行时读取账号可见的全部 Grok Build 模型,不维护静态模型白名单 |
20
20
  | 对话 | Responses 流式文本、reasoning、加密 reasoning replay、usage 与 finish reason |
21
21
  | 图片 | 仅精确 `grok-4.6` 接收 Harness attachment 中有界的 JPEG/PNG 图片;`grok-4.5` 与其他模型保持 text-only |
22
- | 搜索 | 精确 `grok-4.6` 提供默认关闭的 Web/X Search;`1.0.3` 增加流前认证恢复与安全的部分输出保留,不自动重放已开始的流 |
22
+ | 搜索 | 精确 `grok-4.6` 提供默认关闭的 Web/X Search;使用实时 settings service 保存开关 |
23
23
  | 工具 | 将 function call 交回 Harness 权限层;Provider 本身不执行工具,关闭对应 Search 开关时保留本地 `web_search` / `x_search` |
24
24
  | 账户面板 | 登录状态、每周/月额度、重置时间、动态模型能力与 reasoning 档位 |
25
25
  | 界面 | Web 设置页中英文切换;TUI 提供闭合的 `/grok` 命令 |
@@ -28,7 +28,7 @@
28
28
 
29
29
  ### 1. 准备环境
30
30
 
31
- - DeepSeek Harness `0.1.1-rc.2`
31
+ - DeepSeek Harness `0.1.5-rc.2`
32
32
  - Node.js `24.19.0` 或更高版本
33
33
  - macOS arm64 或 Windows x64
34
34
  - 官方 Grok Build CLI(支持 `login --oauth`,并使用官方默认 Grok home)
@@ -47,7 +47,7 @@ grok models
47
47
  安装精确版本:
48
48
 
49
49
  ```sh
50
- dsh plugin --profile web add dsh-grok-provider@1.0.3
50
+ dsh plugin --profile web add dsh-grok-provider@1.0.5
51
51
  dsh web
52
52
  ```
53
53
 
@@ -74,7 +74,7 @@ Web 设置页展示:
74
74
 
75
75
  当 protobuf-backed billing 返回完整的 weekly/monthly 周期但省略零值百分比时,页面会恢复为“已使用 0% / 剩余 100%”;其他不完整响应保持未知,不伪造额度。
76
76
 
77
- 当前 Harness `0.1.1-rc.2` 的 `settings.section` 没有插件图标字段。Provider 内嵌来自 `@deepseek-ai/dsh-client-ui-primitives@0.1.0-rc.7`、采用 MIT 许可的 `IconThinkOutline16` 路径几何;仅当设置对话框中的标签与 DOM 结构都精确且唯一匹配时,才用它显示 `Grok Build` 导航项,否则安全保留宿主齿轮。兼容层的观察器、标记和样式均随插件卸载清理。
77
+ Harness `0.1.5-rc.2` 的 `settings.section` 没有插件图标字段。Provider 内嵌来自 `@deepseek-ai/dsh-client-ui-primitives@0.1.0-rc.7`、采用 MIT 许可的 `IconThinkOutline16` 路径几何;仅当设置对话框中的标签与 DOM 结构都精确且唯一匹配时,才用它显示 `Grok Build` 导航项,否则安全保留宿主齿轮。兼容层的观察器、标记和样式均随插件卸载清理。
78
78
 
79
79
  ## 插件预览
80
80
 
@@ -134,9 +134,9 @@ dsh web
134
134
 
135
135
  ## 项目来源与发现
136
136
 
137
- - 本说明对应的 npm 精确版本:[dsh-grok-provider@1.0.2](https://www.npmjs.com/package/dsh-grok-provider/v/1.0.2)
138
- - 当前已完成回读的 GitHub Release:[v1.0.2](https://github.com/yoshino-xiao7/dsh-grok-provider/releases/tag/v1.0.2)
139
- - 发布证据:release commit `be200f9352afe93b27dd2856d89c01674f0cd637`,annotated tag object `b7efd3aabb99c73e1747d2d87890cdf9b284c438` peel 至该提交,final CI run [`33318426571`](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33318426571),Trusted Publisher run [`33319150964` attempt 1](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33319150964/attempts/1)。仓库所有者明确授权的唯一 tarball 含 74 个文件、255,282 bytes,unpacked size 789,962 bytes;SHA-1 为 `3feddb7048fe4c796037804518999b12ae491802`,SHA-256 为 `010a21770cb3e4e42b7195984df1f5bf8dc5027066198cf99b7d713ac045f605`,SRI 为 `sha512-TcvvPUXBJZEA728pVnUrXSZebGfIoB5ATG5041wA1OFzOE+hFTO98C5Fxl99WuFW2y7V89gkusYIKCpGlLNQIg==`。冻结候选、GitHub Release asset 与 npm Registry tarball 逐字节一致,npm 确认 `dsh-grok-provider@1.0.2` 可安装且 `latest=1.0.2`;Node `24.19.0` / npm `11.5.1` 的 Registry 锁定隔离安装通过 Host 注册/`apply`/注入与 client 注册/factory/`apply`/注入 smoke,生产依赖审计为 0 漏洞。`npm audit signatures` 确认安装图中 11 个包具有已验证 Registry 签名、2 个包具有已验证 attestations;本包公开 metadata 包含 1 个 Registry signature、2 个 attestations,SLSA provenance 精确绑定 `release.yml`、`refs/tags/v1.0.2`、release commit 与 publish run。
137
+ - 本说明对应的 npm 精确版本:[dsh-grok-provider@1.0.3](https://www.npmjs.com/package/dsh-grok-provider/v/1.0.3)
138
+ - 当前已完成回读的 GitHub Release:[v1.0.3](https://github.com/yoshino-xiao7/dsh-grok-provider/releases/tag/v1.0.3)
139
+ - 发布证据:release commit `07ebd35c56348a1b3296bd46d1a69f5b0f430241`,annotated tag object `7ec8a8a1086749e7ac1dfb0ef2bd50c821838363` peel 至该提交,final CI run [`33378215345`](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33378215345),Trusted Publisher run [`33379149158` attempt 1](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33379149158/attempts/1)。仓库所有者明确授权的唯一 tarball 含 77 个文件、267,403 bytes,unpacked size 829,862 bytes;SHA-1 为 `6197c3d30ec1ef5f559371911d612f6236eee2f9`,SHA-256 为 `7f740c7258ab7eee0c96e1ddae3398b41a25e718cf267e244f8693c3c99aeb0d`,SRI 为 `sha512-kJgN0NKKV7Te3oAgbPnEua/EQCLnj5S0KWAWrhP0ixudJBepplRFARYHCxwxOwbG87bnX07Mz/dxCoBiphWhqQ==`。冻结制品、GitHub Release asset 与 npm Registry tarball 逐字节一致,Registry 锁定安装通过 Host/client 加载且生产审计为 0 漏洞;本包公开 metadata 含 1 个 Registry signature、2 个 attestations,安装图为 11 个已验证签名包与 2 个 attested 包。SLSA provenance 精确绑定 `release.yml`、`refs/tags/v1.0.3`、release commit 与 publish run。
140
140
  - npm 页面文档修正:`1.0.1` tarball 内曾保留旧安装示例;已发布的 `1.0.2` tarball 内,本 README 使用精确 `@1.0.2` 命令。已发布的 `1.0.1` 字节不会被覆盖。
141
141
  - GitHub 社区发现:仓库已添加 DeepSeek Harness 官方推荐的 `dsh-plugin` 与 `dsh` Topics
142
142
  - YukiRyou 受管来源:[deepseek-yukiryou-plugin-catalog](https://github.com/yoshino-xiao7/deepseek-yukiryou-plugin-catalog),当前仍锁定已完成真机验收的 `dsh-grok-provider@0.1.0`,且只标记 `darwin-arm64`
@@ -145,6 +145,26 @@ dsh web
145
145
 
146
146
  ## 兼容性与范围
147
147
 
148
+ ### `1.0.5` 修复边界
149
+
150
+ - 六个账户操作迁移到共享 `/api` 精确 POST 路由;主机保留浏览器会话认证、Host/Origin 检查和请求体限制。
151
+ - 使用主机请求 schema,拒绝错误方法、畸形请求和路径不匹配;随插件卸载清理路由。
152
+ - 依赖对齐 DSH `0.1.5-rc.2`。macOS 隔离实例验证状态、CLI `1.0.5`、两个模型和额度;未认证返回 401,跨来源返回 403。
153
+ - Windows 真机浏览器登录和本版真实生成未重测。见 [版本说明](docs/releases/v1.0.5.md)。
154
+
155
+ ### `1.0.4` 修复边界
156
+
157
+ - Host 不再从 `@deepseek-ai/dsh-settings` named import `installSettingsSection` 或 `settingsNamespace`;改用 settings service 的 `installSection`,namespace 为合法字符串常量 `llm-grok`。
158
+ - settings service 缺失或重载时仍回退组合配置;启用、停用和失败回滚不删除 receipt、generation 或账号状态。
159
+ - required peer 提升到 Harness `0.1.2-rc.1` 实际提供的 `dsh-settings` / `dsh-llm` 与 Cordis `4.0.2`、Schemastery `3.18.2`;Web client inject 用 `@deepseek-ai/dsh-client-ui-renderer` 取代已删除的 `dsh-client-runtime`。
160
+ - 本版不改变认证恢复、部分输出保留、Search 协议、图片、固定 endpoint 或 Windows 浏览器登录边界。详情见 [`docs/releases/v1.0.4.md`](docs/releases/v1.0.4.md)。
161
+
162
+ ### `1.0.3` 修复边界
163
+
164
+ - 仅在 200/SSE 开始前的 401/403 上,通过官方 Grok CLI 做一次有界共享会话刷新、重新读取凭据并最多重试一次;持续拒绝仍返回 `AUTH`,不新增 API Key 模式。
165
+ - 流开始后绝不自动重放。transport interruption、干净过早 EOF 或连续两分钟没有任何 wire bytes 时,只有无工具副作用且有界的 text/reasoning 可以被保留并附加“发送继续”提示;工具调用、未知事件、畸形协议、用户 abort 或空部分响应继续失败关闭。
166
+ - 精确 Node `24.19.0` 门禁为 274 tests、272 pass、0 fail、2 platform skips;唯一 77 文件制品的 final release commit、双平台 CI、明确授权、隔离安装、Registry、签名、attestations 与 provenance 回读均已完成。真实账号成功路径只验证当前连接,不模拟未来 401 或断流;本版也不构成 Windows 真机浏览器登录验收。详情见 [`docs/releases/v1.0.3.md`](docs/releases/v1.0.3.md)。
167
+
148
168
  ### `1.0.2` 修复边界
149
169
 
150
170
  - 普通严格空 reasoning item 继续执行既有 ID/type、sequence、output index、状态、summary/content 空性、大小、可选 encrypted content 与闭合校验;Search-backed 同 ID 复用项继续额外执行精确 own-data 键集与 accessor 拒绝。本版没有扩大协议接受域。
@@ -171,11 +191,11 @@ dsh web
171
191
  - 最终源码完成两层脱敏真实账号复验:原始 Web/X 协议探针各 1 次请求、各 64 events,分别观察到对应 Search 且终态 `completed`;生产 adapter 共完成 5 次 Responses,direct Web/X 均为 `stop`,Harness 形状的本地 `x_search` call/result 续跑三轮依次为 `tool-calls`、`tool-calls`、`stop`,前两轮各 1 次本地调用。该续跑没有在同一 wire request 中同时放入 Harness `x_search` function definition 与 xAI `{ type: "x_search" }` server descriptor;`1.0.1` 后续才隔离出这一 HTTP 400 冲突。未保存结果、URL、prompt、身份或凭据;这些不是发布、OAuth 或 Windows 真机证据。
172
192
  - manifest/lock 已同步为 `1.0.0`;Node 24 全量测试为 245 项、243 pass、0 fail、2 项平台跳过,生产依赖审计为 0 漏洞,确定性 build/bundle、72 项 dry-run pack、秘密模式扫描与 diff 检查均通过。代码 PR #28、main CI run [`33308371009`](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33308371009)、最终 release commit、双平台 final CI、唯一制品、精确授权及 Registry/signature/attestation/provenance 回读均已完成。
173
193
 
174
- | 项目 | `1.0.2` 已发布兼容边界 |
194
+ | 项目 | `1.0.5` 兼容边界 |
175
195
  | --- | --- |
176
- | DeepSeek Harness | 精确支持 `0.1.1-rc.2` |
196
+ | DeepSeek Harness | 精确支持 `0.1.5-rc.2` |
177
197
  | Node.js | `>=24.19.0` |
178
- | macOS arm64 | 图片发送已完成真实 Harness 验证;`1.0.2` 只调整严格空 reasoning 的可见投影 |
198
+ | macOS arm64 | 图片发送已完成真实 Harness 验证;`1.0.5` 验证 `0.1.5-rc.2` 账户 RPC |
179
199
  | Windows x64 | 代码路径与现有 slow-fake 保持不变;网络可达时由官方 CLI 生成 URL 并打开浏览器,该路径仍未完成 Windows 真机验收 |
180
200
  | macOS x64 / Linux | 不支持 |
181
201
  | Grok CLI | 不锁完整版本;严格校验官方路径、`login --oauth` 能力与生产 OIDC 凭据契约 |
package/SECURITY.md CHANGED
@@ -4,10 +4,12 @@
4
4
 
5
5
  ## 支持范围
6
6
 
7
- 本安全策略对应 `dsh-grok-provider@1.0.3` 制品。它只在 200/SSE 开始前为 401/403 增加一次官方 CLI 会话刷新与同请求重试;同一凭据版本的并发拒绝共享一次刷新。流开始后绝不自动重放。只有已投影且有界的 text/reasoning 可在无工具调用、未知 chunk、协议异常或用户取消时被保留并附加中断提示;其他情况继续失败关闭。协议接受域、固定 origin、refresh-token 隔离、Search、模型、图片、工具和 URL 边界均不放宽。`0.1.8` 曾发布后撤回且版本号不可复用;网络可达 Windows 真机外部浏览器弹出仍未验收。
7
+ 本安全策略对应 `dsh-grok-provider@1.0.5` 制品。账户操作使用 DSH `0.1.5-rc.2` 的共享 `/api` 精确 POST 路由;浏览器会话认证、Host/Origin 检查和请求体限制由主机保留。请求使用主机 schema 校验并拒绝路径/方法不匹配。官方 CLI 凭据、固定 xAI origin、Search、工具权限和流后不重放规则保持不变。Windows 真机外部浏览器弹出仍未验收。
8
8
 
9
9
  `1.0.3` 不把 HTTP 401/403 解释为 API Key 模式,也不自行刷新 OAuth grant:固定且有界的官方 `grok models` 子进程拥有刷新行为,插件随后重新读取并严格校验共享凭据。第二次拒绝仍为 `AUTH`。SSE source 的无状态 transport failure 和干净过早 EOF 与畸形事件分开;只有前两者能进入安全部分输出保留,status-bearing transport error、工具调用和所有 `INVALID_RESPONSE` 均不得被吞掉。部分内容不生成 replay metadata,提示不包含上游错误正文。
10
10
 
11
+ `1.0.3` 的发布回读已关闭:最终 release commit `07ebd35c56348a1b3296bd46d1a69f5b0f430241`,annotated tag object `7ec8a8a1086749e7ac1dfb0ef2bd50c821838363`,macOS 14 / Windows 2022 final CI run `33378215345`,Trusted Publisher run `33379149158` attempt 1。仓库所有者明确授权的唯一 77 文件制品为 267,403 bytes packed / 829,862 bytes unpacked,SHA-1 `6197c3d30ec1ef5f559371911d612f6236eee2f9`、SHA-256 `7f740c7258ab7eee0c96e1ddae3398b41a25e718cf267e244f8693c3c99aeb0d`、SRI `sha512-kJgN0NKKV7Te3oAgbPnEua/EQCLnj5S0KWAWrhP0ixudJBepplRFARYHCxwxOwbG87bnX07Mz/dxCoBiphWhqQ==`;冻结制品、GitHub Release asset 与 npm Registry tarball 逐字节一致,npm `latest=1.0.3`。锁定 Registry 安装、本包 1 个 Registry signature / 2 个 package attestations、安装图 11 个 signed / 2 个 attested packages,以及精确绑定 `release.yml` / `refs/tags/v1.0.3` / release commit / publish run 的 SLSA provenance 均已验证。这些供应链证据不构成未来 401/断流、OAuth 完整流程或网络可达 Windows 真机浏览器弹出的验收。
12
+
11
13
  `1.0.0` 把 reasoning ID 复用收窄为 Search-backed 且严格空的完整生命周期:可见 summary/content 及 summary/raw lifecycle 必须为空,允许有界 opaque `encrypted_content`;每次复用都必须到达自己的 `response.output_item.done`,仅当 `response.incomplete` 到来时仍有复用段未闭合才失败关闭,所有复用段闭合后的 `max_output_tokens` 终态仍有效。非空、跨类型、未知 terminal 字段或 accessor 字段继续拒绝。完成态 Web Search `open_page` 只允许精确且有界的 `type + url`,streamed/final action 的类型与 URL 必须一致,校验后 URL 被丢弃且不会被访问、预览、下载或回放。脱敏真实账号复验未保存结果、URL、prompt、身份或凭据;供应链回读也不构成 OAuth、完整桌面会话或 Windows 真机浏览器验收。
12
14
 
13
15
  `1.0.1` 已完成同名 function/server-tool 冲突、receipt 和 transport 错误归因修复及其独立供应链回读。`1.0.2` 不改变这些 request 或错误规则:普通空 reasoning 在决定“不可见”前继续执行既有 ID/type、sequence、output-index、状态、summary/content 空性、大小、可选 encrypted-content 与 terminal 闭合校验;Search-backed 同 ID 复用继续额外执行精确 own-data 键集与 accessor 拒绝。非空复用、乱序和未闭合复用项继续归类为 `INVALID_RESPONSE`。隐藏的普通空项不占 replay 对齐槽,其有界 encrypted content 校验后不持久化;server Search 仍不投影为本地工具。
@@ -94,7 +94,7 @@ window.__ModuleLoader__.load({
94
94
  const settingsNavSelector = `${settingsDialogSelector} > nav`
95
95
  const settingsNavButtonSelector = `${settingsNavSelector} button`
96
96
  // IconThinkOutline16 geometry from @deepseek-ai/dsh-client-ui-primitives@0.1.0-rc.7 (MIT); see THIRD_PARTY_NOTICES.md.
97
- // settings.section has no icon slot in Harness 0.1.1-rc.2, so the glyph is applied as a scoped mask.
97
+ // settings.section has no icon slot in Harness 0.1.2-rc.1, so the glyph is applied as a scoped mask.
98
98
  const thinkIconSvg = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
99
99
  <path d="M8.00192 6.64454C8.75026 6.64454 9.35732 7.25169 9.35739 8.00001C9.35739 8.74838 8.7503 9.35548 8.00192 9.35548C7.25367 9.35533 6.64743 8.74829 6.64743 8.00001C6.6475 7.25178 7.25371 6.64468 8.00192 6.64454Z"/>
100
100
  <path fill-rule="evenodd" clip-rule="evenodd" d="M9.97165 1.29981C11.5853 0.718916 13.271 0.642197 14.3144 1.68555C15.3577 2.72902 15.2811 4.41466 14.7002 6.02833C14.4707 6.66561 14.1504 7.32937 13.75 8.00001C14.1504 8.67062 14.4707 9.33444 14.7002 9.97169C15.2811 11.5854 15.3578 13.271 14.3144 14.3145C13.271 15.3579 11.5854 15.2811 9.97165 14.7002C9.3344 14.4708 8.67059 14.1505 7.99997 13.75C7.32933 14.1505 6.66558 14.4708 6.02829 14.7002C4.41461 15.2811 2.72899 15.3578 1.68552 14.3145C0.642155 13.271 0.71887 11.5854 1.29977 9.97169C1.52915 9.33454 1.84865 8.67049 2.24899 8.00001C1.84866 7.32953 1.52915 6.66544 1.29977 6.02833C0.718852 4.41459 0.64207 2.729 1.68552 1.68555C2.72897 0.642112 4.41456 0.718887 6.02829 1.29981C6.66541 1.52918 7.32949 1.8487 7.99997 2.24903C8.67045 1.84869 9.33451 1.52919 9.97165 1.29981ZM12.9404 9.2129C12.4391 9.893 11.8616 10.5681 11.2148 11.2149C10.568 11.8616 9.89296 12.4391 9.21286 12.9404C9.62532 13.1579 10.0271 13.338 10.4121 13.4766C11.9146 14.0174 12.9172 13.8738 13.3955 13.3955C13.8737 12.9173 14.0174 11.9146 13.4765 10.4121C13.3379 10.0271 13.1578 9.62535 12.9404 9.2129ZM3.05856 9.2129C2.84121 9.62523 2.66197 10.0272 2.52341 10.4121C1.98252 11.9146 2.12627 12.9172 2.60446 13.3955C3.08278 13.8737 4.08544 14.0174 5.58786 13.4766C5.97264 13.338 6.37389 13.1577 6.7861 12.9404C6.10624 12.4393 5.43168 11.8614 4.78513 11.2149C4.13823 10.5679 3.55992 9.89313 3.05856 9.2129ZM7.99899 3.792C7.23179 4.31419 6.45306 4.95512 5.70407 5.70411C4.95509 6.45309 4.31415 7.23184 3.79196 7.99903C4.3143 8.76666 4.95471 9.54653 5.70407 10.2959C6.45309 11.0449 7.23271 11.6848 7.99997 12.207C8.76725 11.6848 9.54683 11.0449 10.2959 10.2959C11.0449 9.54686 11.6848 8.76729 12.207 8.00001C11.6848 7.23275 11.0449 6.45312 10.2959 5.70411C9.5465 4.95475 8.76662 4.31434 7.99899 3.792ZM5.58786 2.52344C4.08533 1.98255 3.08272 2.12625 2.60446 2.6045C2.12621 3.08275 1.98252 4.08536 2.52341 5.5879C2.66189 5.97253 2.8414 6.37409 3.05856 6.78614C3.55983 6.10611 4.1384 5.43189 4.78513 4.78516C5.43186 4.13843 6.10606 3.55987 6.7861 3.0586C6.37405 2.84144 5.97249 2.66192 5.58786 2.52344ZM13.3955 2.6045C12.9172 2.12631 11.9146 1.98257 10.4121 2.52344C10.0272 2.66201 9.62519 2.84125 9.21286 3.0586C9.8931 3.55996 10.5679 4.13827 11.2148 4.78516C11.8614 5.43172 12.4392 6.10627 12.9404 6.78614C13.1577 6.37393 13.338 5.97267 13.4765 5.5879C14.0174 4.08549 13.8736 3.08281 13.3955 2.6045Z"/>
@@ -243,7 +243,7 @@ window.__ModuleLoader__.load({
243
243
  }
244
244
  }, [searchSettings])
245
245
  const call = React.useCallback(async (endpoint, payload = {}) => {
246
- const result = await connection.rpc.call("/grok-auth", endpoint, payload)
246
+ const result = await connection.rpc.call("/api", `grok-auth/${endpoint}`, payload)
247
247
  if (!result || result.ok !== true) throw new Error("Grok account RPC failed")
248
248
  return result.value
249
249
  }, [connection])
@@ -4,11 +4,8 @@ import { randomUUID } from "node:crypto"
4
4
  import packageJson from "../../package.json" with { type: "json" }
5
5
 
6
6
  import { attributionHeaders } from "@deepseek-ai/dsh-llm"
7
- import {
8
- installSettingsSection,
9
- settingsNamespace,
10
- } from "@deepseek-ai/dsh-settings"
11
7
  import Schema from "@deepseek-ai/schemastery"
8
+ import { clientRequestSchema } from "@deepseek-ai/dsh-client-connection"
12
9
 
13
10
  import {
14
11
  GROK_PRODUCTION_OIDC_AUTH_CONTRACT,
@@ -18,6 +15,7 @@ import {
18
15
  import { createAccountDashboard } from "../internal/account-dashboard.mjs"
19
16
  import { createAuthController } from "../internal/auth-controller.mjs"
20
17
  import { createAuthRpcHandler } from "../internal/auth-rpc.mjs"
18
+ import { createAuthFetchRoutes } from "../internal/auth-fetch.mjs"
21
19
  import { createGrokAdapter } from "../internal/grok-adapter.mjs"
22
20
  import { createGrokCommandHandler } from "../internal/grok-command-handler.mjs"
23
21
  import { createGrokTransport } from "../internal/grok-transport.mjs"
@@ -31,7 +29,7 @@ import { createRuntimeDiagnostics } from "../internal/runtime-diagnostics.mjs"
31
29
 
32
30
  export const name = "llm-grok"
33
31
  export const inject = ["llm"]
34
- const SETTINGS_NAMESPACE = settingsNamespace(name)
32
+ const SETTINGS_NAMESPACE = "llm-grok"
35
33
 
36
34
  export const Config = Schema.object({
37
35
  webSearch: Schema.boolean().default(false).description("Allow xAI Web Search for regular Grok requests"),
@@ -84,11 +82,13 @@ export function apply(ctx, config) {
84
82
  mapError: mapLlmError,
85
83
  }),
86
84
  })
87
- installSettingsSection(ctx, SETTINGS_NAMESPACE, Config, config, {
88
- setSource(source) {
89
- currentConfig = source
90
- },
91
- onChange() {},
85
+ ctx.inject(["settings"], (settingsCtx) => {
86
+ settingsCtx.settings.installSection(ctx, SETTINGS_NAMESPACE, Config, config, {
87
+ setSource(source) {
88
+ currentConfig = source
89
+ },
90
+ onChange() {},
91
+ })
92
92
  })
93
93
  const authController = createAuthController({
94
94
  registry: runtime.auth,
@@ -159,11 +159,11 @@ export function apply(ctx, config) {
159
159
  recordInput: false,
160
160
  handler: commandHandler,
161
161
  }))
162
- ctx.inject(["connection"], (connectionCtx) => connectionCtx.connection.rpc.handle(
163
- "/grok-auth",
164
- authRpcHandler,
165
- { authority: "loopback" },
166
- ))
162
+ ctx.inject(["connection"], (connectionCtx) => {
163
+ for (const route of createAuthFetchRoutes(authRpcHandler, clientRequestSchema)) {
164
+ connectionCtx.connection.fetch.register(route)
165
+ }
166
+ })
167
167
 
168
168
  ctx.effect(() => () => runtime.dispose(), "llm-grok runtime")
169
169
  }
@@ -0,0 +1,27 @@
1
+ // Exact routes participate in Connection's authenticated /api carrier, including
2
+ // shell-owned transports. Never register an independent, unguarded HTTP handler.
3
+ export function createAuthFetchRoutes(handler, requestSchema) {
4
+ return ["status", "dashboard", "diagnostics", "login", "cancel", "logout"].map((endpoint) => ({
5
+ path: `/api/grok-auth/${endpoint}`,
6
+ methods: ["POST"],
7
+ requestBody: "buffered",
8
+ async fetch(request) {
9
+ if (request.headers.get("content-type")?.split(";", 1)[0]?.trim().toLowerCase() !== "application/json") {
10
+ return new Response("content type must be application/json", { status: 415 })
11
+ }
12
+ let body
13
+ try {
14
+ body = await request.json()
15
+ } catch {
16
+ return new Response("invalid request", { status: 400 })
17
+ }
18
+ const parsed = requestSchema.safeParse(body)
19
+ if (!parsed.success || parsed.data.method !== `grok-auth/${endpoint}`) {
20
+ return new Response("invalid request", { status: 400 })
21
+ }
22
+ const message = parsed.data
23
+ const result = await handler(endpoint, message.payload, request.signal)
24
+ return Response.json({ type: "server-response", rpcId: message.rpcId, result })
25
+ },
26
+ }))
27
+ }
@@ -1,4 +1,4 @@
1
- import { offloadRequestImagesWithPolicy } from "@deepseek-ai/dsh-llm"
1
+ import { offloadRequestImagesWithPolicy, offloadedImageText } from "@deepseek-ai/dsh-llm"
2
2
 
3
3
  import {
4
4
  ResponsesRequestTooLargeError,
@@ -144,6 +144,7 @@ async function compileImageRequest({
144
144
  let messages = offloadRequestImagesWithPolicy(capturedMessages, {
145
145
  representation: "raw",
146
146
  maxImages: policy.maxImages,
147
+ placeholder: offloadedImageText,
147
148
  })
148
149
  const blocks = collectImageBlocks(messages)
149
150
  const refs = indexUniqueImageRefs(blocks, policy)
@@ -169,6 +170,7 @@ async function compileImageRequest({
169
170
  representation: "raw",
170
171
  maxBytes: policy.maxTotalBytes,
171
172
  byteLength: (ref) => versionsById.get(String(ref.attachmentId)).bytes,
173
+ placeholder: offloadedImageText,
172
174
  })
173
175
 
174
176
  while (true) {
@@ -181,6 +183,7 @@ async function compileImageRequest({
181
183
  messages = offloadRequestImagesWithPolicy(messages, {
182
184
  representation: "raw",
183
185
  maxImages: imageCount - 1,
186
+ placeholder: offloadedImageText,
184
187
  })
185
188
  }
186
189
  }
@@ -15,7 +15,7 @@
15
15
 
16
16
  ## 2. P0 用户目标
17
17
 
18
- - 在 Harness `0.1.1-rc.2` 中安装精确 npm 版本后出现 Grok Provider,并动态列出当前账号通过 Grok Build 可用的全部模型。
18
+ - 在 Harness `0.1.2-rc.1` 中安装精确 npm 版本后出现 Grok Provider,并动态列出当前账号通过 Grok Build 可用的全部模型。
19
19
  - macOS 和 Windows 用户使用相同的插件包,不需要平台专属脚本。
20
20
  - 用户可从 Harness 发起官方 CLI 浏览器登录;插件能识别登录中、成功、取消、失败、凭据过期和未登录状态。
21
21
  - Web 设置页能区分官方 CLI 缺失、无效、检测不可用、OIDC discovery 网络超时与真人授权超时,并显示 Provider/已验证 CLI 版本;这些诊断不得暴露路径、stderr、代理配置或 OAuth URL。
@@ -157,6 +157,8 @@ Web 的“退出”或 TUI `/grok logout` 先中止本插件所有在途 Grok
157
157
  - `1.0.0` 已发布:接受 fixed Proxy 已实测的 completed `open_page` 精确动作,并把 Search-backed reasoning ID 从“一次复用”收窄调整为“可多段复用、每段必须严格空且闭合”;不执行 URL、不新增本地工具、不扩大模型、认证、图片或 origin 边界。
158
158
  - `1.0.1` 已发布:消除已启用 server Search 与 Harness 同名 function definition 的冲突,并保留真实 transport error 分类;不删除历史 calls/results,不改变本地工具权限边界。
159
159
  - `1.0.2` 已发布:隐藏完整闭合但始终严格空的 reasoning 可见投影,同时保留协议校验、output-index 顺序与 replay 边界。
160
+ - `1.0.3` 已发布:流前 401/403 由官方 CLI single-flight 刷新共享会话并最多重试一次;流开始后不重放,无工具副作用的有界部分输出可在 transport interruption、干净过早 EOF 或连续两分钟无 wire bytes 时保留并提示“继续”。
161
+ - `1.0.4` 修复:Host settings 注册改用 `ctx.settings.installSection`,peer 对齐 Harness `0.1.2-rc.1`,使 Runtime 能到达 ready。
160
162
  - 再后续独立切片:默认关闭的图片生成(内联结果 → Harness attachment)。
161
163
 
162
164
  `prompt_cache_key` 不与图片输入捆绑;若以后排期,需独立分析会话标识隐私和 POST 不自动重放边界。任意 URL 下载、API Key、企业 OIDC、ACP、Headless 和 Linux 仍不在路线内。公开协议可驱动隔离原型,但每个切片在声明能力、合并发布基线前必须有独立 ADR 与固定 CLI Chat Proxy spike;`0.1.4` 的 `grok-4.6` user/tool-result 红蓝语义门禁已于 2026-08-28 通过,`grok-4.5` 因语义不可靠失败关闭,最终 Harness attachment 复验见[上游证据页](./12-upstream-image-input-evidence.md)。
@@ -1,4 +1,4 @@
1
- # DeepSeek Harness `0.1.1-rc.2` 接口契约
1
+ # DeepSeek Harness `0.1.2-rc.1` 接口契约
2
2
 
3
3
  ## 1. 目标
4
4
 
@@ -6,37 +6,37 @@
6
6
 
7
7
  兼容基线:
8
8
 
9
- - DeepSeek Harness:`0.1.1-rc.2`
9
+ - DeepSeek Harness:`0.1.2-rc.1`
10
10
  - Harness 内置 Node:`24.19.0`
11
11
  - 首版发布平台:`darwin-arm64`、`win32-x64`
12
12
 
13
13
  ## 2. Host peer packages
14
14
 
15
- 首版预计需要以下版本。脚手架前必须按真实静态 import 图分为 required 与 optional peer:
15
+ `1.0.4` 需要以下精确版本。脚手架前必须按真实静态 import 图分为 required 与 optional peer:
16
16
 
17
17
  ```json
18
18
  {
19
- "@deepseek-ai/cordis": "4.0.1",
20
- "@deepseek-ai/dsh-llm": "0.1.1-rc.2",
21
- "@deepseek-ai/dsh-subprocess": "0.1.1-rc.2",
22
- "@deepseek-ai/dsh-settings": "0.1.1-rc.2",
23
- "@deepseek-ai/dsh-commands": "0.1.1-rc.2",
24
- "@deepseek-ai/dsh-client-connection": "0.1.1-rc.2",
25
- "@deepseek-ai/dsh-client-runtime": "0.1.1-rc.2",
26
- "@deepseek-ai/dsh-client-locale": "0.1.1-rc.2",
27
- "@deepseek-ai/dsh-client-ui-settings": "0.1.1-rc.2",
28
- "@deepseek-ai/schemastery": "3.18.1"
19
+ "@deepseek-ai/cordis": "4.0.2",
20
+ "@deepseek-ai/dsh-llm": "0.1.2-rc.1",
21
+ "@deepseek-ai/dsh-subprocess": "0.1.2-rc.1",
22
+ "@deepseek-ai/dsh-settings": "0.1.2-rc.1",
23
+ "@deepseek-ai/dsh-commands": "0.1.2-rc.1",
24
+ "@deepseek-ai/dsh-client-connection": "0.1.2-rc.1",
25
+ "@deepseek-ai/dsh-client-ui-renderer": "0.1.2-rc.1",
26
+ "@deepseek-ai/dsh-client-locale": "0.1.2-rc.1",
27
+ "@deepseek-ai/dsh-client-ui-settings": "0.1.2-rc.1",
28
+ "@deepseek-ai/schemastery": "3.18.2"
29
29
  }
30
30
  ```
31
31
 
32
32
  初步分组:
33
33
 
34
- - required:`@deepseek-ai/cordis`、`@deepseek-ai/dsh-llm`、`@deepseek-ai/dsh-settings`、`@deepseek-ai/schemastery`。Host 通过 settings 包的 canonical helper 静态注册可选 settings service;包本身必须由 Runtime 提供。
34
+ - required:`@deepseek-ai/cordis`、`@deepseek-ai/dsh-llm`、`@deepseek-ai/dsh-settings`、`@deepseek-ai/schemastery`。Host 通过 settings service 的 `installSection` 注册可选 settings namespace;包本身必须由 Runtime 提供。
35
35
  - profile-specific optional:subprocess、commands、connection 和 client UI packages。目标桌面 Runtime 必须实际挂载 subprocess service 才能提供官方 CLI 登录;缺失时模型 Provider 仍可读取已有有效官方凭据,但登录/注销动作不可用。
36
36
 
37
- 全部放入 `peerDependencies`,optional 项同时声明 `peerDependenciesMeta.<name>.optional: true`。可选 peer 不得被 Host 入口无条件静态 import;需要通过独立 export、条件加载或已证明的 Runtime external 方式隔离。`@deepseek-ai/dsh-settings` 不是 optional peer,但 `ctx.settings` service 仍是可选能力;canonical helper 在 service 缺失或卸载时回退组合配置。Web、TUI、headless 三种缺失可选 service/peer 的测试必须通过。
37
+ 全部放入 `peerDependencies`,optional 项同时声明 `peerDependenciesMeta.<name>.optional: true`。可选 peer 不得被 Host 入口无条件静态 import;需要通过独立 export、条件加载或已证明的 Runtime external 方式隔离。`@deepseek-ai/dsh-settings` 不是 optional peer,但 `ctx.settings` service 仍是可选能力;`ctx.inject(["settings"], ...)` 在 service 缺失或卸载时回退组合配置。Web、TUI、headless 三种缺失可选 service/peer 的测试必须通过。
38
38
 
39
- 这些包由 Harness Runtime 满足,不进入插件普通 dependency 图。版本在脚手架阶段以实际 rc.2 manifest 再核对;不自动放宽到未经测试的 Harness 版本。
39
+ 这些包由 Harness Runtime 满足,不进入插件普通 dependency 图。`1.0.4` 起精确钉在 `0.1.2-rc.1`;不自动放宽到未经测试的 Harness 版本。
40
40
 
41
41
  目标是零普通 runtime dependencies。登录进程只经过 Runtime 提供的 `ctx.subprocess`;HTTP、流解析、crypto、path 和用户 home 凭据读取使用 Node 24 内建能力。插件不依赖或打包 `@deepseek-ai/dsh-subprocess-local`。
42
42
 
@@ -56,7 +56,7 @@ export function apply(ctx, config) {
56
56
 
57
57
  可选服务不能加入强制 `inject`:
58
58
 
59
- - settings 使用可选安装 helper。
59
+ - settings 使用 `ctx.inject(["settings"], ...)` 与 `settings.installSection`。
60
60
  - commands 使用 `ctx.inject(["commands"], ...)`。
61
61
  - Web RPC 使用 `ctx.inject(["connection"], ...)`。
62
62
  - CLI login/logout 使用 `ctx.inject(["subprocess"], (subprocessCtx) => ...)`;内部只能调用该 child context 的 `subprocessCtx.subprocess`。
@@ -237,7 +237,7 @@ bundle ID 必须由最终 `package.json.name` 在构建时注入,不能在包
237
237
 
238
238
  客户端依赖图至少包含:
239
239
 
240
- - `@deepseek-ai/dsh-client-runtime`
240
+ - `@deepseek-ai/dsh-client-ui-renderer`
241
241
  - `@deepseek-ai/dsh-client-ui-settings`
242
242
  - `@deepseek-ai/dsh-client-locale`
243
243
  - `@deepseek-ai/dsh-client-connection`
@@ -264,7 +264,7 @@ bundle ID 必须由最终 `package.json.name` 在构建时注入,不能在包
264
264
  "client": {
265
265
  "platform": "web",
266
266
  "inject": [
267
- "@deepseek-ai/dsh-client-runtime",
267
+ "@deepseek-ai/dsh-client-ui-renderer",
268
268
  "@deepseek-ai/dsh-client-ui-settings",
269
269
  "@deepseek-ai/dsh-client-locale",
270
270
  "@deepseek-ai/dsh-client-connection"
@@ -278,7 +278,7 @@ rc.2 的 Host 端 client-module scanner 会执行 `require.resolve("<package>/pa
278
278
 
279
279
  client bundle 导出 Cordis `inject` 与 `apply`,所需 services 至少为 `slots`、`locale`、`connection`。设置页通过 `ctx.slots.inject("settings.section", () => ctx.slots.register(...))` 注册。
280
280
 
281
- Harness `0.1.1-rc.2` 的 `settings.section` options 只有 `id`、`order` 与 `label`,没有图标字段;未知 section id 会由设置 shell 显示 `IconSettingsOutline16`。Provider 可用独立、effect-owned 的视觉兼容层,将结构和规范化标签均唯一精确匹配的 `Grok Build` 导航按钮标记为内嵌的 `IconThinkOutline16` 路径几何。该层不是 Host DOM API:只能在本地读取设置导航标签用于匹配,不得读取设置页正文或用户内容、不得模糊匹配其他按钮,也不得外传或发起网络请求;歧义或结构不符时保留宿主齿轮。独立 style 必须显式带本插件的 `data-plugin` ownership,避免被其他 bundle 的 materialize/HMR 认领和删除。唯一 MutationObserver 必须过滤无关页面变化、合并同轮更新,并在最后一个 effect disposer 中停用待执行任务、断开 observer、移除 marker/style。
281
+ Harness `0.1.2-rc.1` 的 `settings.section` options 只有 `id`、`order` 与 `label`,没有图标字段;未知 section id 会由设置 shell 显示 `IconSettingsOutline16`。Provider 可用独立、effect-owned 的视觉兼容层,将结构和规范化标签均唯一精确匹配的 `Grok Build` 导航按钮标记为内嵌的 `IconThinkOutline16` 路径几何。该层不是 Host DOM API:只能在本地读取设置导航标签用于匹配,不得读取设置页正文或用户内容、不得模糊匹配其他按钮,也不得外传或发起网络请求;歧义或结构不符时保留宿主齿轮。独立 style 必须显式带本插件的 `data-plugin` ownership,避免被其他 bundle 的 materialize/HMR 认领和删除。唯一 MutationObserver 必须过滤无关页面变化、合并同轮更新,并在最后一个 effect disposer 中停用待执行任务、断开 observer、移除 marker/style。
282
282
 
283
283
  三类依赖必须分开:`dsh.client.inject` 只列提供所需 Cordis service 的 client plugin;bundle 动态 `require()` 且不是平台 seed 的 package 列入 `dsh.client.external`;React、UI primitives 等 Runtime 平台 seed 不进入 inject。Host/client 的真实静态和动态 import 图决定 peer 与 external,不能把所有 bundle require 一律塞进 inject。
284
284
 
@@ -1,8 +1,22 @@
1
1
  # npm 发布计划与维护流程
2
2
 
3
+ ## 1.0.5 / DSH 0.1.5-rc.2
4
+
5
+ 当前制品:`dsh-grok-provider@1.0.5`。账户 RPC 使用主机认证的共享 `/api/grok-auth/*` 路由,修复升级宿主后的状态、CLI 检测、模型目录和额度不可用。依赖对齐 DSH `0.1.5-rc.2`;旧版宿主需先升级。
6
+
7
+ macOS 隔离宿主已验证状态、CLI `1.0.5`、两个模型和额度读取,以及 401/403 认证边界。真实生成和 Windows 真机浏览器登录未重测。版本说明见 [v1.0.5](releases/v1.0.5.md),设计见 [ADR-0012](adr/0012-shared-api-auth-routes.md)。发布制品摘要和 Registry 回读记录由发布检查表保存。
8
+
9
+ ## 历史记录
10
+
3
11
  ## 0. 当前状态
4
12
 
5
- `dsh-grok-provider@1.0.2` 已正式发布并完成供应链回读:最终 release commit `be200f9352afe93b27dd2856d89c01674f0cd637` 的 macOS 14 / Windows 2022 final CI run [`33318426571`](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33318426571) 全绿,annotated tag object `b7efd3aabb99c73e1747d2d87890cdf9b284c438` peel 到该提交。仓库所有者明确授权的唯一 74 文件制品为 255,282 bytes packed、789,962 bytes unpacked;SHA-1 `3feddb7048fe4c796037804518999b12ae491802`、SHA-256 `010a21770cb3e4e42b7195984df1f5bf8dc5027066198cf99b7d713ac045f605`、SRI `sha512-TcvvPUXBJZEA728pVnUrXSZebGfIoB5ATG5041wA1OFzOE+hFTO98C5Fxl99WuFW2y7V89gkusYIKCpGlLNQIg==`。Trusted Publisher run [`33319150964` attempt 1](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33319150964/attempts/1) 已完成;npm `latest=1.0.2`,冻结候选、唯一 GitHub Release asset 与 Registry tarball 逐字节一致。Node `24.19.0` / npm `11.5.1` 锁定 Registry 安装通过 Host 注册/`apply`/注入与 client 注册/factory/`apply`/注入 smoke,生产依赖审计为 0 漏洞;1 个 Registry signature、2 个 attestations、安装图 11 个 signed packages / 2 个 attested packages,以及精确绑定 `release.yml` / `refs/tags/v1.0.2` / release commit / publish run 的 SLSA provenance 均已验证。
13
+ `dsh-grok-provider@1.0.4` 已修复 `1.0.3` 在 DeepSeek Harness `0.1.2-rc.1` 中因 named import 已删除的 `installSettingsSection` 而无法到达 ready 的问题。该版已完成供应链回读,见 [v1.0.4](releases/v1.0.4.md)。
14
+
15
+ `dsh-grok-provider@1.0.3` 已正式发布并完成供应链回读:最终 release commit `07ebd35c56348a1b3296bd46d1a69f5b0f430241` 的 macOS 14 / Windows 2022 final CI run [`33378215345`](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33378215345) 全绿,annotated tag object `7ec8a8a1086749e7ac1dfb0ef2bd50c821838363` peel 到该提交。仓库所有者明确授权的唯一 77 文件制品为 267,403 bytes packed、829,862 bytes unpacked;SHA-1 `6197c3d30ec1ef5f559371911d612f6236eee2f9`、SHA-256 `7f740c7258ab7eee0c96e1ddae3398b41a25e718cf267e244f8693c3c99aeb0d`、SRI `sha512-kJgN0NKKV7Te3oAgbPnEua/EQCLnj5S0KWAWrhP0ixudJBepplRFARYHCxwxOwbG87bnX07Mz/dxCoBiphWhqQ==`。Trusted Publisher run [`33379149158` attempt 1](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33379149158/attempts/1) 已完成;npm `latest=1.0.3`,冻结制品、唯一 GitHub Release asset 与 Registry tarball 逐字节一致。Node `24.19.0` / npm `11.5.1` 锁定 Registry 安装通过 Host/client smoke,生产依赖审计为 0 漏洞;1 个 Registry signature、2 个 attestations、安装图 11 个 signed packages / 2 个 attested packages,以及精确绑定 `release.yml` / `refs/tags/v1.0.3` / release commit / publish run 的 SLSA provenance 均已验证。
16
+
17
+ `1.0.3` 修复流前 401/403 的一次官方 CLI 会话刷新与同请求重试,并在流开始后坚持不重放;无工具副作用的有界 text/reasoning 可在 transport interruption、干净过早 EOF 或连续两分钟无 wire bytes 时保留并提示用户发送“继续”。持续认证拒绝、工具调用、未知或畸形协议继续失败关闭。该发布不改变 Windows 浏览器登录边界。
18
+
19
+ 上一稳定版 `1.0.2` 已正式发布并完成供应链回读:最终 release commit `be200f9352afe93b27dd2856d89c01674f0cd637` 的 macOS 14 / Windows 2022 final CI run [`33318426571`](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33318426571) 全绿,annotated tag object `b7efd3aabb99c73e1747d2d87890cdf9b284c438` peel 到该提交。仓库所有者明确授权的唯一 74 文件制品为 255,282 bytes packed、789,962 bytes unpacked;SHA-1 `3feddb7048fe4c796037804518999b12ae491802`、SHA-256 `010a21770cb3e4e42b7195984df1f5bf8dc5027066198cf99b7d713ac045f605`、SRI `sha512-TcvvPUXBJZEA728pVnUrXSZebGfIoB5ATG5041wA1OFzOE+hFTO98C5Fxl99WuFW2y7V89gkusYIKCpGlLNQIg==`。Trusted Publisher run [`33319150964` attempt 1](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33319150964/attempts/1) 已完成;冻结候选、唯一 GitHub Release asset 与 Registry tarball 逐字节一致。Node `24.19.0` / npm `11.5.1` 锁定 Registry 安装通过 Host 注册/`apply`/注入与 client 注册/factory/`apply`/注入 smoke,生产依赖审计为 0 漏洞;1 个 Registry signature、2 个 attestations、安装图 11 个 signed packages / 2 个 attested packages,以及精确绑定 `release.yml` / `refs/tags/v1.0.2` / release commit / publish run 的 SLSA provenance 均已验证。
6
20
 
7
21
  `1.0.2` 只修复严格空 reasoning 被投影为空 `Think` 的显示问题:空 reasoning 仍完整进入 decoder FSM,但仅在首个非空 summary/raw delta 到来时创建 Harness block;严格空生命周期产生零可见 chunk。request、Search、认证、图片、模型、endpoint、工具权限与 Windows 浏览器边界不变。
8
22
 
@@ -41,7 +55,7 @@ dsh-grok-provider@0.1.0
41
55
  ## 2. 为什么是 `0.1.0`
42
56
 
43
57
  - 这是原创实现的首版,不继承第三方版本历史。
44
- - Harness 基线仍是 `0.1.1-rc.2`,上游接口和 Grok Proxy 契约都可能变化。
58
+ - Harness 基线是 `0.1.2-rc.1`,上游接口和 Grok Proxy 契约都可能变化。
45
59
  - YukiRyou 受管市场要求根包为纯 `x.y.z`;`0.1.0` 合法,prerelease 不合法。
46
60
  - npm 的同一 name/version 一旦发布不可覆盖;所有门禁必须在发布前完成。
47
61
 
@@ -74,7 +88,7 @@ CHANGELOG.md
74
88
 
75
89
  `docs/` 与根目录中相互链接的中文默认页 `README.md`、英文版 `README.en.md`、`CONTRIBUTING.md`、`SECURITY.md` 和 `THIRD_PARTY_NOTICES.md` 一起进入 tarball,使安装后的架构、安全边界、第三方许可、社区维护方式和发布门禁链接保持可读。发布前的证据文档只记录脱敏事实、hash 与固定公开地址,不得包含 token、真实 prompt/响应或用户身份数据。
76
90
 
77
- 目标为零普通 runtime dependencies。DSH peer 精确使用 `0.1.1-rc.2`;Cordis `4.0.1`、Schemastery `3.18.1` 由目标桌面 Runtime snapshot 满足。`@deepseek-ai/dsh-settings` 是 Host Search 设置链路的直接、非 optional peer;`@deepseek-ai/dsh-subprocess`、commands、connection 和 client UI/locale 等 profile-specific peer 保持 optional,并有 Web/TUI/headless 缺失-peer测试。插件不打包 settings provider 或本地 subprocess 实现。
91
+ 目标为零普通 runtime dependencies。DSH peer 精确使用 `0.1.2-rc.1`;Cordis `4.0.2`、Schemastery `3.18.2` 由目标桌面 Runtime snapshot 满足。`@deepseek-ai/dsh-settings` 是 Host Search 设置链路的直接、非 optional peer;`@deepseek-ai/dsh-subprocess`、commands、connection 和 client UI/locale/renderer 等 profile-specific peer 保持 optional,并有 Web/TUI/headless 缺失-peer测试。插件不打包 settings provider 或本地 subprocess 实现。
78
92
 
79
93
  `package.json` 同时固定公开 Registry:
80
94
 
@@ -204,9 +218,9 @@ scoped 包首次公开发布必须保留 `--access public`。
204
218
  npm 发布不会自动成为受管可安装项。当前发现状态:
205
219
 
206
220
  - GitHub 仓库已添加 DeepSeek Harness 官方推荐的 `dsh-plugin` 与 `dsh` Topics,可被 Topic 驱动来源发现。
207
- - YukiRyou curated catalog 当前仍是精确 `dsh-grok-provider@0.1.0`、verification `installed`、仅 `darwin-arm64`。`1.0.2` 已发布及其完整性/provenance 回读不等于从 catalog 安装该精确版本,因此不得据此升级条目或增加平台。
221
+ - YukiRyou curated catalog 当前仍是精确 `dsh-grok-provider@0.1.0`、verification `installed`、仅 `darwin-arm64`。`1.0.3` 已发布及其完整性/provenance 回读不等于从 catalog 安装该精确版本,因此不得据此升级条目或增加平台。
208
222
  - 公共 `awesome-dsh-plugin` 的收录 PR #3415 已合并,项目已进入 `model` 分类。该列表不记录精确 npm 版本或平台验证字段,因此收录只代表发现入口,不证明任一后续制品的受管安装或平台验收。
209
- - Windows x64 仍未完成一条闭合的 Registry 精确版本 production inspector、安装、重启、浏览器登录、聊天、工具调用和重新认证链路。`0.1.6` 发布后已确认图片可用,并确认官方 CLI 可在生成登录 URL 前因 OIDC discovery timeout 退出;`0.1.7` 只增加闭合诊断,不是浏览器弹出已修复或已验证的证据。`1.0.2` 的 Registry/制品回读也未覆盖上述真实链路、OAuth、完整真实账号会话或 Windows 浏览器弹出。
223
+ - Windows x64 仍未完成一条闭合的 Registry 精确版本 production inspector、安装、重启、浏览器登录、聊天、工具调用和重新认证链路。`0.1.6` 发布后已确认图片可用,并确认官方 CLI 可在生成登录 URL 前因 OIDC discovery timeout 退出;`0.1.7` 只增加闭合诊断,不是浏览器弹出已修复或已验证的证据。`1.0.3` 的 Registry/制品回读也未覆盖上述真实链路、OAuth、完整真实账号会话或 Windows 浏览器弹出。
210
224
 
211
225
  catalog 条目只能记录实际验证完成的精确版本和平台。当前条目记录:
212
226
 
@@ -1,5 +1,7 @@
1
1
  # Grok CLI 1.0.5 上游契约证据
2
2
 
3
+ 2026-09-13 兼容性复核:DSH `0.1.5-rc.2` 中通过插件检测到官方 CLI `1.0.5`,账户 RPC、动态 `grok-4.6` / `grok-4.5` 模型目录和额度已验证。没有修改固定 xAI 协议或重新执行浏览器登录;以下为历史协议证据。
4
+
3
5
  状态:**已作为 `0.1.0` 发布绑定证据;残余风险由仓库所有者明确接受**
4
6
  核验日期:2026-08-25(Asia/Shanghai)
5
7
 
@@ -1,5 +1,13 @@
1
1
  # 当前实现与发布状态
2
2
 
3
+ ## 1.0.5 / DSH 0.1.5-rc.2
4
+
5
+ 当前制品:`dsh-grok-provider@1.0.5`。账户 RPC 使用主机认证的共享 `/api/grok-auth/*` 路由,修复升级宿主后的状态、CLI 检测、模型目录和额度不可用。依赖对齐 DSH `0.1.5-rc.2`;旧版宿主需先升级。
6
+
7
+ macOS 隔离宿主已验证状态、CLI `1.0.5`、两个模型和额度读取,以及 401/403 认证边界。真实生成和 Windows 真机浏览器登录未重测。版本说明见 [v1.0.5](releases/v1.0.5.md),设计见 [ADR-0012](adr/0012-shared-api-auth-routes.md)。发布制品摘要和 Registry 回读记录由发布检查表保存。
8
+
9
+ ## 历史记录
10
+
3
11
  `1.0.2` 已正式发布并完成供应链回读。该制品修复严格空 reasoning lifecycle 被投影成多行无内容 `Think` 的显示问题,同时保留普通项既有校验与 Search-backed 复用项的精确 own-data/accessor 校验。
4
12
 
5
13
  状态日期:2026-08-30
@@ -24,6 +32,8 @@
24
32
  - 已发布 `1.0.0`:首次复用前仍要求一个完成的 Web/X server Search;一旦该 ID 已被 Search-backed,允许后续多个严格空占位 lifecycle,每个都必须独立 `output_item.done`。完成态 Web Search `open_page` 只接受精确有界 type/URL,并要求 streamed/final action 一致;URL 校验后丢弃,不产生本地工具调用或网络访问。
25
33
  - 已发布 `1.0.1`:全部 Harness functions 先完整验证,再从 wire definitions 精确过滤与本次已启用 server `web_search` / `x_search` 同名的定义;对应开关关闭时本地 function 保留,历史 function calls/results 原样保留。最终 receipt 拒绝 function/server-tool 交集。SSE source transport error 原样上抛,HTTP 400 进入 `PROVIDER_ERROR`,parser/协议错误仍为 `INVALID_RESPONSE`。
26
34
  - 已发布 `1.0.2`:reasoning item added 只建立内部 FSM,首个非空 summary/raw delta 才开始 Harness block;始终严格空且完整闭合的 item 产生零可见 chunk。不同非空 item 仍分别闭合,旧会话不回写。
35
+ - 已发布 `1.0.3`:流前 401/403 允许一次官方 CLI single-flight 恢复与最多一次重试;流后不重放,无工具副作用的有界 text/reasoning 可在 transport interruption、干净过早 EOF 或连续两分钟无 wire bytes 时保留并提示“继续”。
36
+ - `1.0.4` 正在修复 Harness `0.1.2-rc.1` 启动失败:Host 改用 `ctx.settings.installSection` 注册 `llm-grok`,并提升 settings/llm/client peer 到实际支持该 Runtime 的版本边界。
27
37
 
28
38
  ## 已验证
29
39
 
@@ -159,7 +169,7 @@ Windows x64 真机不再是 `0.1.0` 预发布阻断项。首次发布后必须
159
169
 
160
170
  ## `0.1.10` 发布状态
161
171
 
162
- - 通过 `@deepseek-ai/dsh-settings@0.1.1-rc.2` 的 canonical `installSettingsSection` 注册 `llm-grok`,解析 schema 默认值、组合配置和持久化用户层;settings service 缺失或重载时回退组合配置。
172
+ - 通过 `@deepseek-ai/dsh-settings@0.1.2-rc.1` 的 `ctx.settings.installSection` 注册 `llm-grok`,解析 schema 默认值、组合配置和持久化用户层;settings service 缺失或重载时回退组合配置。`1.0.3` 及更早版本使用的 `installSettingsSection` named import 已在该 Harness 版本删除。
163
173
  - Adapter 在每次调用开始且首次模型目录 await 前捕获一次 Search policy;后续设置提交影响下一调用,已准备或在途调用保持原策略。request compiler 与 receipt 继续只处理冻结调用,不承担动态状态。
164
174
  - 真实 SettingsProvider + LLM Runtime 回归覆盖唯一 namespace、安全默认值、`applies:"live"`、持久化更新、组合回退和插件生命周期清理;延迟目录回归证明快照早于首个 await。
165
175
  - 聚焦 Host/Adapter/client 38 项回归通过;精确 Node `24.19.0` 全量为 224 项、222 pass、0 fail、2 项 Windows-only skip,生产依赖审计为 0 漏洞。
@@ -223,6 +233,17 @@ Windows x64 真机不再是 `0.1.0` 预发布阻断项。首次发布后必须
223
233
  - 流前 401/403 通过官方 CLI single-flight refresh、凭据重读与一次重试恢复;持续拒绝保持 `AUTH`。插件不读取 refresh token,也不新增 API Key 模式。
224
234
  - 流开始后不重放。仅在已经产生有界 text/reasoning 且没有工具调用、unknown chunk、协议错误或 abort 时保留部分输出并提示“发送继续”;其他路径继续失败关闭。
225
235
  - 连续两分钟无任何响应字节会中止当前连接,每个 wire chunk 刷新 idle deadline;持续有输出的长任务不受总时长限制。
226
- - 源码版本、双语文档、ADR 与 274 项 Node 24 回归已完成;双平台 CI 与供应链发布证据仍按独立边界推进。
236
+ - 源码版本、双语文档、ADR 与 274 项 Node 24 回归已完成;final CI run `33378215345` 的 macOS 14 / Windows 2022 均通过。
227
237
  - 当前已登录账号的一次脱敏 `grok-4.6` Low Effort 生产 Adapter 请求已完成,只保留 `2/14/2/1/1/1` 的 block-start/reasoning-delta/block-end/text-delta/usage/finish 计数。生产审计为 0 漏洞,dry-run pack 为 77 文件;这些成功证据不能模拟未来的 401 或断流。
228
- - 代码 PR #37 已合并为 `9958f487abf8ebd062eecb4368689e4d049b1d35`,main CI run `33377849906` 的 macOS 14 / Windows 2022 全绿。发布证据提交、唯一制品、授权与供应链回读仍未完成。
238
+ - 代码 PR #37 已合并为 `9958f487abf8ebd062eecb4368689e4d049b1d35`,main CI run `33377849906` 的 macOS 14 / Windows 2022 全绿;发布证据 PR #38 形成最终 release commit `07ebd35c56348a1b3296bd46d1a69f5b0f430241`。
239
+ - 仓库所有者明确授权的唯一 77 文件制品为 267,403 bytes packed、829,862 bytes unpacked;SHA-1 `6197c3d30ec1ef5f559371911d612f6236eee2f9`、SHA-256 `7f740c7258ab7eee0c96e1ddae3398b41a25e718cf267e244f8693c3c99aeb0d`、SRI `sha512-kJgN0NKKV7Te3oAgbPnEua/EQCLnj5S0KWAWrhP0ixudJBepplRFARYHCxwxOwbG87bnX07Mz/dxCoBiphWhqQ==`。annotated tag object `7ec8a8a1086749e7ac1dfb0ef2bd50c821838363` peel 到最终提交;Trusted Publisher run [`33379149158` attempt 1](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33379149158/attempts/1) 已完成。
240
+ - npm `latest=1.0.3`;冻结制品、唯一 GitHub Release asset 与 Registry tarball 逐字节一致。锁定 Registry 安装的 Host/client smoke 与 0 漏洞生产审计通过;本包 1 个 Registry signature、2 个 attestations,安装图 11 个 signed packages / 2 个 attested packages,以及精确绑定 tag、workflow、commit 与 publish run 的 SLSA provenance 均已回读。网络可达 Windows 真机浏览器弹出仍未验收。
241
+
242
+ ## `1.0.4` Harness `0.1.2-rc.1` settings 注册修复
243
+
244
+ - 发布 `1.0.3` 后,在 DeepSeek YukiRyou Desktop `1.0.8` / dsh `0.1.2-rc.1` 中启用插件会导致 Runtime 在 ready 前以 code 1 退出。失败日志为 `@deepseek-ai/dsh-settings` 不再提供 named export `installSettingsSection`。
245
+ - Host 改为 `ctx.inject(["settings"], ...)` 后调用 `settings.installSection`,namespace 使用字符串常量 `llm-grok`;打包 `dist/**` 不得再出现 `installSettingsSection` 或 `settingsNamespace`。
246
+ - required peer 对齐 `0.1.2-rc.1`;Web inject 用 `dsh-client-ui-renderer` 取代已删除的 `dsh-client-runtime`。认证、Search 协议、图片与固定 endpoint 不变。
247
+ - 代码 PR #41 已合并为 `61c80fff0841e44c16dabb2cc803a80c1bdf5456`;分支规范修正后的发布证据 PR #43 形成最终 release commit `62df21df08053d293ebb59c6e67597402c2305af`,main CI run `33873037630` 的 macOS 14 / Windows 2022 全绿。
248
+ - 仓库所有者明确授权的唯一 78 文件制品为 274,332 bytes packed、850,183 bytes unpacked;SHA-1 `000380a4699d4e61d96942bcae5f6a0ce7c76477`、SHA-256 `464045290b06ce71b78285571c6968e6268fa403fa2350834d2dc479e88fd001`、SRI `sha512-axCBVXQ9BI9boYrlIsa+TWURMo8tQ5GdHpcQVfXUz2OLg+5rbg3XUZSv3ZRQVYQNmyXSQ+frIBDMsbZUGaXJ6w==`。
249
+ - Annotated tag object `dfb269fa9ebb3df3282a151d163043f983bc0619` peel 到最终提交;Trusted Publisher run [`33873873314` attempt 1](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33873873314/attempts/1) 成功。npm `latest=1.0.4`,候选、唯一 Release asset 与 Registry tarball 逐字节一致;Node `24.19.0` / npm `11.5.1` Registry 锁定安装和 Host export smoke 通过。本包 1 个 Registry signature、2 个 attestations,安装图 15 个 signed packages / 2 个 attested packages,SLSA provenance 精确绑定 `release.yml`、`refs/tags/v1.0.4`、最终提交与发布 run。网络可达 Windows 真机外部浏览器弹出仍未验收。
@@ -216,9 +216,24 @@ English summary: every release must close documentation, security, tests, determ
216
216
  - [x] 当前已登录账号的脱敏 `grok-4.6` Low Effort 生产 Adapter 最小请求完成:2 block-start、14 reasoning-delta、2 block-end、1 text-delta、1 usage、1 finish;未保留正文、URL、身份、凭据或原始事件。
217
217
  - [x] 生产依赖审计为 0 漏洞;当前 dry-run pack 为 77 文件。`git diff --check` 通过,秘密模式扫描只命中显式 fixture token 与记录这些 canary 的历史检查表文本;全量测试内含确定性 build。
218
218
  - [x] 代码 PR #37 合并为 `9958f487abf8ebd062eecb4368689e4d049b1d35`;main CI run `33377849906` 的 macOS 14 / Windows 2022 均通过。
219
- - [ ] 发布证据 PR、最终 release commit 与唯一 tarball 尚未冻结;冻结前不得给出制品摘要或触发发布。
220
- - [ ] 仓库所有者需在最终提交、文件数、字节数和摘要明确后授权唯一 `dsh-grok-provider@1.0.3` 制品。
221
- - [ ] Annotated tag、唯一 GitHub Release asset、Trusted Publisher、Registry 字节、签名、attestations、隔离安装与 provenance 尚待完成。
219
+ - [x] 发布证据 PR #38 形成最终 release commit `07ebd35c56348a1b3296bd46d1a69f5b0f430241`;final CI run [`33378215345`](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33378215345) 的 macOS 14 / Windows 2022 均通过。从该提交冻结的唯一 tarball 含 77 个文件,为 267,403 bytes packed、829,862 bytes unpacked;SHA-1 `6197c3d30ec1ef5f559371911d612f6236eee2f9`、SHA-256 `7f740c7258ab7eee0c96e1ddae3398b41a25e718cf267e244f8693c3c99aeb0d`、SRI `sha512-kJgN0NKKV7Te3oAgbPnEua/EQCLnj5S0KWAWrhP0ixudJBepplRFARYHCxwxOwbG87bnX07Mz/dxCoBiphWhqQ==`。
220
+ - [x] 仓库所有者在看到完整精确 commit、制品、摘要与验证证据后明确授权发布 `dsh-grok-provider@1.0.3`;授权后没有重建或替换制品。
221
+ - [x] Annotated tag object `7ec8a8a1086749e7ac1dfb0ef2bd50c821838363` peel 到 release commit;不可变 `v1.0.3`、唯一 GitHub Release asset 与 Trusted Publisher run [`33379149158` attempt 1](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33379149158/attempts/1) 已完成。npm `latest=1.0.3`,冻结制品、Release 与 Registry tarball 逐字节一致;Node `24.19.0` / npm `11.5.1` 锁定 Registry 安装及 0 漏洞生产审计通过,本包 1 个 Registry signature、2 个 attestations,安装图 11 个 signed packages / 2 个 attested packages,以及精确绑定 `release.yml` / `refs/tags/v1.0.3` / release commit / publish run 的 SLSA provenance 均已回读。
222
+
223
+ ## `1.0.4` Harness `0.1.2-rc.1` settings 注册修复门禁
224
+
225
+ - [x] 从 `origin/yukiryou/main` 创建隔离分支 `cursor/fix-settings-install-section-afa4`;范围限制为 settings 注册 API、Harness `0.1.2-rc.1` peer 与 Web inject 替换。
226
+ - [x] 移除 `installSettingsSection` / `settingsNamespace` named import;改用 `ctx.settings.installSection(...)` 与字符串常量 `llm-grok`。
227
+ - [x] required/optional peer 对齐 `0.1.2-rc.1`(Cordis `4.0.2`、Schemastery `3.18.2`);Web inject 用 `@deepseek-ai/dsh-client-ui-renderer` 取代已删除的 `dsh-client-runtime`。
228
+ - [x] 新增 Host import 回归:真实 `@deepseek-ai/dsh-settings@0.1.2-rc.1` 不再导出已删除 helper,且 `llm-grok` 仍可注册/卸载。
229
+ - [x] 发行契约扫描全部 `dist/**`,禁止打包产物再引用已删除 helper。
230
+ - [x] 精确 Node `24.19.0` 全量测试、生产依赖审计与 `pack:check`。
231
+ - [x] 代码 PR #41 合并为 `61c80fff0841e44c16dabb2cc803a80c1bdf5456`;main CI run [`33870741679`](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33870741679) 的 macOS 14 / Windows 2022 均通过。
232
+ - [x] 原发布证据 PR #42 的源分支按全局规范从 `cursor/v1.0.4-release-evidence-afa4` 重命名为 `yukiryou/v1.0.4-release-evidence`;GitHub 自动关闭原 PR 后,同一 head `26cc9a17ace288736ae5ab65386358376bef6b1c` 由替代 PR #43 合入,形成最终 release commit `62df21df08053d293ebb59c6e67597402c2305af`。main CI run [`33873037630`](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33873037630) 的 macOS 14 / Windows 2022 均通过。
233
+ - [x] 从最终提交冻结唯一 `dsh-grok-provider-1.0.4.tgz`:78 files、274,332 bytes packed、850,183 bytes unpacked;SHA-1 `000380a4699d4e61d96942bcae5f6a0ce7c76477`、SHA-256 `464045290b06ce71b78285571c6968e6268fa403fa2350834d2dc479e88fd001`、SRI `sha512-axCBVXQ9BI9boYrlIsa+TWURMo8tQ5GdHpcQVfXUz2OLg+5rbg3XUZSv3ZRQVYQNmyXSQ+frIBDMsbZUGaXJ6w==`。Node `24.19.0` / npm `11.5.1` 测试为 275 tests、273 pass、0 fail、2 platform skips,生产审计 0 漏洞,隔离安装及 Host export smoke 通过。
234
+ - [x] 仓库所有者看到最终提交、文件数、字节数与摘要后明确授权唯一 `dsh-grok-provider@1.0.4` 制品。授权后发现 Cursor Agent 曾在 npm 发布前预建指向代码提交的同名 tag/Release;Registry 仍为 `notarget` 且没有发布 run。经所有者批准,旧 asset 备份并核对后替换;授权制品未重建。
235
+ - [x] Annotated tag object `dfb269fa9ebb3df3282a151d163043f983bc0619` peel 到最终 release commit;唯一 GitHub Release asset 与 Trusted Publisher run [`33873873314` attempt 1](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33873873314/attempts/1) 已完成。npm `latest=1.0.4`,冻结制品、Release 与 Registry tarball 逐字节一致;本包 1 个 Registry signature、2 个 attestations,`npm audit signatures` 验证安装图 15 个 signed packages / 2 个 attested packages,SLSA provenance 精确绑定 `release.yml` / `refs/tags/v1.0.4` / final release commit / publish run。
236
+ - [ ] 网络可达 Windows 真机的官方 CLI 外部浏览器弹出仍未完成验收;该独立边界不是本 settings 注册修复的发布门禁,完成前不得声称已验证。
222
237
 
223
238
  ## `1.0.0` Search 响应协议修复发布门禁
224
239
 
@@ -271,3 +286,15 @@ English summary: every release must close documentation, security, tests, determ
271
286
  - [x] 仓库所有者看到完整精确 commit、制品、摘要与验证证据后明确授权发布 `dsh-grok-provider@1.0.2`;授权后没有重建或替换制品。
272
287
  - [x] Annotated tag object `b7efd3aabb99c73e1747d2d87890cdf9b284c438` peel 到 release commit;不可变 `v1.0.2`、唯一 GitHub Release asset 与 Trusted Publisher run [`33319150964` attempt 1](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33319150964/attempts/1) 已完成。npm `latest=1.0.2`,冻结候选、Release 与 Registry tarball 逐字节一致;Node `24.19.0` / npm `11.5.1` 锁定 Registry 安装及 0 漏洞生产审计通过,本包 1 个 Registry signature、2 个 attestations,安装图 11 个 signed packages / 2 个 attested packages,以及精确绑定 `release.yml` / `refs/tags/v1.0.2` / release commit / publish run 的 SLSA provenance 均已回读。
273
288
  - [ ] 网络可达 Windows 真机浏览器弹出仍是独立未验收边界,不阻断本显示修复,但不得写成已验证。
289
+
290
+ ## 1.0.5 发布准备(2026-09-13)
291
+
292
+ - [x] 仓库所有者明确要求发布本次 DSH 0.1.5-rc.2 兼容修复;版本冻结为稳定 1.0.5。
293
+ - [x] 从已验证修复 09fc317 建立 `yukiryou/v1.0.5`,保留原工作区及未跟踪文件。
294
+ - [x] manifest、lock、双语 README、CHANGELOG、SECURITY、文档首页/状态/上游证据和双语 release notes 同步。
295
+ - [x] 账户操作使用主机认证的共享 API 精确路由;测试覆盖 schema、路径/方法一致性、取消、路由清理和真实 Connection 注册。
296
+ - [x] macOS 隔离 DSH 0.1.5-rc.2 只读检查恢复登录状态、CLI 1.0.5、grok-4.6/grok-4.5 与额度;无认证为 401、跨来源为 403。
297
+ - [x] GitHub PR/双平台 CI、防强推/删除保护和私密漏洞报告已核对;npm environment 的 Secret 名称列表为空。
298
+ - [ ] 最终双平台 CI、唯一 tarball 摘要、隔离制品安装、GitHub Release、Trusted Publisher、Registry 字节与 provenance 回读在发布完成后登记。
299
+
300
+ 本次未重测真实模型生成或 Windows 真机浏览器登录,也未替换用户桌面的受管插件。
@@ -1,10 +1,10 @@
1
1
  # 能力路线图
2
2
 
3
- - 状态:**`1.0.2` 已正式发布并完成供应链回读**
4
- - 当前稳定版与本文对应制品:`1.0.2`
3
+ - 状态:**`1.0.4` 正在修复 Harness `0.1.2-rc.1` settings 注册;上一份已完成供应链回读的版本为 `1.0.3`**
4
+ - 当前稳定版与本文对应制品:`1.0.4`
5
5
  - 最近撤回:`0.1.8`(npm 版本号不可复用)
6
- - 当前已发布基线:`yukiryou/main@be200f9352afe93b27dd2856d89c01674f0cd637`
7
- - 发布后证据分支:`yukiryou/v1.0.2-post-release-evidence`
6
+ - 当前已发布基线:`yukiryou/main@07ebd35c56348a1b3296bd46d1a69f5b0f430241`
7
+ - 发布后证据分支:`yukiryou/v1.0.3-post-release-evidence`
8
8
 
9
9
  本文是 `0.1.3` 之后内容类型迭代的单一事实来源。`0.1.0`–`0.1.3` 的历史范围仍以 [ADR-0002](./adr/0002-v0.1-scope.md) 和[产品需求](./01-product-requirements.md)为准。
10
10
 
@@ -187,6 +187,13 @@ const request = await requestCompiler.compile(options, preparedRoute)
187
187
  - 流前 401/403 允许一次由官方 CLI 拥有的会话刷新与同请求重试;同凭据 revision 并发 single-flight,持续拒绝保持 `AUTH`。
188
188
  - 200/SSE 开始后永不自动重放。无工具副作用的有界 text/reasoning 可以保留并明确提示用户发送“继续”;工具调用、unknown、畸形协议与 abort 保持失败关闭。
189
189
  - 该切片改善偶发认证与长连接故障的恢复体验,不承诺网络永不中断,也不改变 Windows 浏览器登录、API Key、多账号、自定义 endpoint 或生成能力范围。
190
+ - final release commit `07ebd35c56348a1b3296bd46d1a69f5b0f430241` 与双平台 CI run `33378215345` 全绿;唯一 77 文件、267,403-byte 授权制品的 SHA-256 为 `7f740c7258ab7eee0c96e1ddae3398b41a25e718cf267e244f8693c3c99aeb0d`。`v1.0.3`、GitHub Release、Trusted Publisher run `33379149158` attempt 1、npm `latest=1.0.3`、三方字节一致、签名、attestations、隔离安装与 SLSA provenance 回读均已完成。
191
+
192
+ ### `1.0.4` Harness settings 注册修复
193
+
194
+ - `1.0.3` 在 dsh `0.1.2-rc.1` 中因 named import 已删除的 `installSettingsSection` 无法到达 ready。
195
+ - Host 改用 `ctx.settings.installSection` 与字符串常量 `llm-grok`;peer 对齐 `0.1.2-rc.1`,Web inject 用 `dsh-client-ui-renderer` 取代 `dsh-client-runtime`。
196
+ - 该切片不改变认证、Search 协议、图片、固定 endpoint 或 Windows 浏览器登录边界。
190
197
 
191
198
  ## 8. 后续:默认关闭的图片生成
192
199
 
@@ -202,4 +209,4 @@ const request = await requestCompiler.compile(options, preparedRoute)
202
209
  - ACP、`grok -p` Headless、Linux / macOS x64 发布承诺。
203
210
  - 厂商 `code_execution`;Harness 已有本地工具权限层。
204
211
 
205
- English summary: `1.0.2` is the current stable release from commit `be200f9352afe93b27dd2856d89c01674f0cd637`. It keeps ordinary empty-reasoning validation and Search-backed exact own-data/accessor checks while suppressing contentless Harness blocks; visible blocks retain output-index order, visible non-empty replay and Search replay suppression remain unchanged, and old conversations are not rewritten. Final CI run `33318426571` passed on macOS 14 and Windows 2022. Annotated tag object `b7efd3aabb99c73e1747d2d87890cdf9b284c438` peels to the release commit. Trusted Publisher run `33319150964` attempt 1 published the explicitly authorized unique 74-file artifact: 255,282 bytes packed, 789,962 bytes unpacked, SHA-1 `3feddb7048fe4c796037804518999b12ae491802`, SHA-256 `010a21770cb3e4e42b7195984df1f5bf8dc5027066198cf99b7d713ac045f605`, and SRI `sha512-TcvvPUXBJZEA728pVnUrXSZebGfIoB5ATG5041wA1OFzOE+hFTO98C5Fxl99WuFW2y7V89gkusYIKCpGlLNQIg==`. npm reports `latest=1.0.2`; frozen-candidate, GitHub Release, and Registry bytes are identical. The locked Registry install, one package signature, two attestations, installed-graph signature audit, and SLSA provenance all verified. Authentication, model, image, endpoint, URL, permission, and platform boundaries are unchanged; network-reachable browser launch on a physical Windows device remains unverified.
212
+ English summary: `1.0.4` repairs Host settings registration for DeepSeek Harness `0.1.2-rc.1` by calling `ctx.settings.installSection` instead of the removed `installSettingsSection` named export. The previous published baseline remains `1.0.3` from commit `07ebd35c56348a1b3296bd46d1a69f5b0f430241`. API-key, model, image, endpoint, URL, permission, and platform boundaries are unchanged; network-reachable browser launch on a physical Windows device remains unverified.
package/docs/README.md CHANGED
@@ -1,13 +1,21 @@
1
1
  # Grok Build Provider 文档索引
2
2
 
3
- - 状态:**`dsh-grok-provider@1.0.2` 已正式发布,制品与供应链回读已关闭**
4
- - 制品范围:完整校验严格空 reasoning lifecycle,但不再投影无内容 `Think`;首个非空 delta 才开始可见 block
5
- - 当前已完成发布回读版本:`1.0.2`
6
- - `1.0.2` 已发布基线:`yukiryou/main@be200f9352afe93b27dd2856d89c01674f0cd637`
7
- - `1.0.2` 发布路径:annotated tag object `b7efd3aabb99c73e1747d2d87890cdf9b284c438` peel 到最终 release commit;final CI run [`33318426571`](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33318426571) 双平台全绿,Trusted Publisher run [`33319150964` attempt 1](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33319150964/attempts/1) 已完成
8
- - `1.0.2` 发布状态:仓库所有者明确授权的唯一 74 文件 tarball 为 255,282 bytes,unpacked size 789,962 bytes;SHA-1 `3feddb7048fe4c796037804518999b12ae491802`、SHA-256 `010a21770cb3e4e42b7195984df1f5bf8dc5027066198cf99b7d713ac045f605`、npm SRI `sha512-TcvvPUXBJZEA728pVnUrXSZebGfIoB5ATG5041wA1OFzOE+hFTO98C5Fxl99WuFW2y7V89gkusYIKCpGlLNQIg==`。冻结候选、GitHub Release asset 与 npm Registry tarball 逐字节一致,npm `latest=1.0.2`;Node `24.19.0` / npm `11.5.1` 锁定隔离安装和生产依赖审计通过,本包 1 个 Registry signature / 2 个 package attestations、安装图 11 个 signed packages / 2 个 attested packages,以及精确绑定 `release.yml` / `refs/tags/v1.0.2` / release commit / publish run 的 SLSA provenance 均已验证
3
+ ## 1.0.5 / DSH 0.1.5-rc.2
4
+
5
+ 当前制品:`dsh-grok-provider@1.0.5`。账户 RPC 使用主机认证的共享 `/api/grok-auth/*` 路由,修复升级宿主后的状态、CLI 检测、模型目录和额度不可用。依赖对齐 DSH `0.1.5-rc.2`;旧版宿主需先升级。
6
+
7
+ macOS 隔离宿主已验证状态、CLI `1.0.5`、两个模型和额度读取,以及 401/403 认证边界。真实生成和 Windows 真机浏览器登录未重测。版本说明见 [v1.0.5](releases/v1.0.5.md),设计见 [ADR-0012](adr/0012-shared-api-auth-routes.md)。发布制品摘要和 Registry 回读记录由发布检查表保存。
8
+
9
+ ## 历史记录
10
+
11
+ - `1.0.4` 修复 `0.1.2-rc.1` settings 注册;该版已发布并完成供应链回读。
12
+ - 制品范围:Host 改用 `ctx.settings.installSection` 注册 `llm-grok`,peer 对齐 Harness `0.1.2-rc.1`
13
+ - 当前已完成发布回读版本:`1.0.3`
14
+ - `1.0.3` 已发布基线:`yukiryou/main@07ebd35c56348a1b3296bd46d1a69f5b0f430241`
15
+ - `1.0.3` 发布路径:annotated tag object `7ec8a8a1086749e7ac1dfb0ef2bd50c821838363` peel 到最终 release commit;final CI run [`33378215345`](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33378215345) 双平台全绿,Trusted Publisher run [`33379149158` attempt 1](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33379149158/attempts/1) 已完成
16
+ - `1.0.3` 发布状态:仓库所有者明确授权的唯一 77 文件 tarball 为 267,403 bytes,unpacked size 829,862 bytes;SHA-1 `6197c3d30ec1ef5f559371911d612f6236eee2f9`、SHA-256 `7f740c7258ab7eee0c96e1ddae3398b41a25e718cf267e244f8693c3c99aeb0d`、npm SRI `sha512-kJgN0NKKV7Te3oAgbPnEua/EQCLnj5S0KWAWrhP0ixudJBepplRFARYHCxwxOwbG87bnX07Mz/dxCoBiphWhqQ==`。冻结制品、GitHub Release asset 与 npm Registry tarball 逐字节一致,npm `latest=1.0.3`;Node `24.19.0` / npm `11.5.1` 锁定隔离安装和生产依赖审计通过,本包 1 个 Registry signature / 2 个 package attestations、安装图 11 个 signed packages / 2 个 attested packages,以及精确绑定 `release.yml` / `refs/tags/v1.0.3` / release commit / publish run 的 SLSA provenance 均已验证
9
17
  - 撤回状态:`0.1.8` 只对应 sidebar quota 维护发布,不包含 Search;撤回不会释放 npm semver,任何 Search 制品都不得复用 `0.1.8`
10
- - 兼容基线:DeepSeek Harness `0.1.1-rc.2`
18
+ - 兼容基线:DeepSeek Harness `0.1.2-rc.1`
11
19
  - 目标平台:macOS arm64、Windows x64
12
20
 
13
21
  本仓库是一次 clean-room 重写。设计只依据 DeepSeek Harness 的公开接口、xAI 官方 Grok Build 文档和通用协议标准;不会复制、移植或修改 `dsh-llm-grok` 的源码、目录结构或实现细节。
@@ -58,6 +66,7 @@
58
66
  - [v1.0.0 中英双语发行说明](./releases/v1.0.0.md)
59
67
  - [v1.0.1 中英双语发行说明](./releases/v1.0.1.md)
60
68
  - [v1.0.2 中英双语发行说明](./releases/v1.0.2.md)
69
+ - [v1.0.4 中英双语发行说明](./releases/v1.0.4.md)
61
70
  - [v1.0.3 中英双语发行说明](./releases/v1.0.3.md)
62
71
  - [v0.1.2-rc.1 中英双语预发行说明](./releases/v0.1.2-rc.1.md)
63
72
  - [ADR-0001:认证与传输路线](./adr/0001-auth-and-transport-route.md)
@@ -84,6 +93,8 @@
84
93
 
85
94
  `1.0.2` 已发布,只修复可见 reasoning 投影及其对齐槽:普通空 item 保留既有校验,Search-backed 同 ID 复用保留精确 own-data/accessor 校验;空项产生零个 Harness block chunk,非空 summary/raw reasoning 在首个 delta 才按 output index 开始 block。可见非空 replay 与 Search 后整响应 replay 抑制不变;隐藏普通空项不占 replay 槽,其 encrypted content 校验后不持久化。候选源码真实账号验收中,Web 为 `5 Search / 1 非空 reasoning / 0 空 reasoning / 1 非空 text / 1 finish`,X 为 `3 custom-tool Search / 1 非空 reasoning / 0 空 reasoning / 1 非空 text / 1 finish`;只保留计数。旧会话不回写,认证、模型、图片、endpoint、URL、工具权限和 Windows 登录边界不变;发布、CI、制品与供应链回读也不构成网络可达 Windows 真机外部浏览器弹出验收。
86
95
 
96
+ `1.0.4` 修复 `1.0.3` 在 Harness `0.1.2-rc.1` 中因 named import 已删除的 `installSettingsSection` 而无法到达 ready 的问题。Host 改用 `ctx.settings.installSection`,peer 对齐 `0.1.2-rc.1`。`1.0.3` 已发布认证恢复与长流中断修复:流前 401/403 由官方 CLI single-flight 刷新共享会话并最多重试一次;流开始后绝不重放。
97
+
87
98
  ## 官方依据
88
99
 
89
100
  - [xAI Grok Build 官方仓库](https://github.com/xai-org/grok-build)
@@ -26,7 +26,7 @@ Provider Host Config 增加两个独立 boolean:
26
26
 
27
27
  两项默认关闭。现有 Grok Build 设置页通过 Harness `settingsScope` 写入同一个 `llm-grok` 配置 namespace;不新增 Search RPC,不使用 `localStorage`,不维护第二份 renderer 状态。
28
28
 
29
- Host 必须通过 `@deepseek-ai/dsh-settings` 的 canonical `installSettingsSection` 注册同名 namespace。解析顺序为 schema 默认值、组合 entry config、持久化用户层;settings service 缺失或重载时回退组合配置。动态设置停留在 Adapter seam:Adapter 在每次调用开始、首次模型目录异步等待前读取一次,底层 request compiler 继续只接收该调用的冻结策略。
29
+ Host 必须通过 `@deepseek-ai/dsh-settings` 的 `ctx.settings.installSection` 注册同名 namespace。解析顺序为 schema 默认值、组合 entry config、持久化用户层;settings service 缺失或重载时回退组合配置。动态设置停留在 Adapter seam:Adapter 在每次调用开始、首次模型目录异步等待前读取一次,底层 request compiler 继续只接收该调用的冻结策略。`1.0.4` 起不再 named import 已删除的 `installSettingsSection` / `settingsNamespace`。
30
30
 
31
31
  设置页必须就近说明远端检索、额外用量、citation 与 prompt injection 风险。插件不会打开、下载或预览 citation,也不会把 Search 结果直接执行为命令或文件操作。
32
32
 
@@ -0,0 +1,36 @@
1
+ # ADR-0012: Account routes on the shared Connection API
2
+
3
+ - Status: Accepted for dsh-grok-provider 1.0.5
4
+ - Baseline: dsh-grok-provider 1.0.4, commit 693b564
5
+
6
+ The desktop upgrade to Harness 0.1.5-rc.2 leaves the Grok settings page visible,
7
+ but POST /grok-auth/status returns HTTP 405 and diagnostics cannot return the
8
+ plugin version. The actual HostConnectionService custom-channel registration
9
+ throws `cannot get property "webServer" without inject`. Adding webServer to the
10
+ plugin's injection does not repair the service-owned context access.
11
+
12
+ Register six exact POST routes below /api/grok-auth through the public
13
+ connection.fetch registry. The browser uses the existing Connection RPC caller
14
+ with channel /api and namespaced methods. The host-owned carrier retains browser
15
+ session authentication, Host/Origin checks and buffered-body limits. The plugin
16
+ uses the host's clientRequestSchema and rejects a method/path mismatch before
17
+ calling any account operation. Credential, login, logout, model and billing
18
+ contracts are unchanged. Routes are removed with the plugin's fiber.
19
+
20
+ This release targets Harness 0.1.5-rc.2 and replaces the 1.0.4 integration.
21
+ Validation includes the real Connection registry, request correlation,
22
+ malformed input, cancellation, route disposal and the host/client/protocol suite.
23
+
24
+ ## Local verification, 2026-09-13
25
+
26
+ - Node 24.19.0; fresh locked npm install: 26 audited packages, zero vulnerabilities.
27
+ - `npm test`: 278 tests, 276 passed, 2 skipped, 0 failed. The skips are pre-existing platform-specific checks; this run is macOS only.
28
+ - Real desktop-bundled DSH 0.1.5-rc.2, separate temporary DSH_HOME: status,
29
+ diagnostics and dashboard all return HTTP 200. Official CLI 1.0.5 is ready;
30
+ models grok-4.6 and grok-4.5 and quota are available. The first model request
31
+ failed transiently; a direct catalog read and a repeated dashboard read passed.
32
+ - The shared carrier rejects an unauthenticated request with 401 and a foreign
33
+ Origin with 403. No login, logout or credential replacement was performed.
34
+ - The installed desktop remains on the original managed plugin generation.
35
+ Neither npm publication nor current-profile installation was performed.
36
+ - Live model generation and Windows UI/login were not exercised in this fix.
@@ -26,7 +26,7 @@ dsh web
26
26
  - 聚焦回归覆盖一次性 401/403 恢复、持续拒绝、并发 single-flight、流开始后禁止重试、安全部分输出保留、干净 EOF 与部分工具调用失败关闭。
27
27
  - 当前已登录账号完成一次脱敏 `grok-4.6` Low Effort 生产 Adapter 请求:2 block-start、14 reasoning-delta、2 block-end、1 text-delta、1 usage、1 finish。未保留回复正文、URL、身份、凭据或原始事件;该成功路径不能模拟未来的 401 或断流。
28
28
  - 代码 PR [#37](https://github.com/yoshino-xiao7/dsh-grok-provider/pull/37) 已合并为 `9958f487abf8ebd062eecb4368689e4d049b1d35`;main CI run [`33377849906`](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33377849906) 的 macOS 14 / Windows 2022 均通过。
29
- - 发布制品、双平台 CI、Registry、签名、attestation 与 provenance 证据在发布回读完成后补记;这些证据不替代真实网络故障或 Windows 外部浏览器验收。
29
+ - 精确 `dsh-grok-provider@1.0.3` 已发布并完成回读:final release commit `07ebd35c56348a1b3296bd46d1a69f5b0f430241`、annotated tag object `7ec8a8a1086749e7ac1dfb0ef2bd50c821838363`、final CI run `33378215345` 与 Trusted Publisher run `33379149158` attempt 1。唯一 77 文件制品为 267,403 bytes packed / 829,862 bytes unpacked,SHA-1 `6197c3d30ec1ef5f559371911d612f6236eee2f9`、SHA-256 `7f740c7258ab7eee0c96e1ddae3398b41a25e718cf267e244f8693c3c99aeb0d`、SRI `sha512-kJgN0NKKV7Te3oAgbPnEua/EQCLnj5S0KWAWrhP0ixudJBepplRFARYHCxwxOwbG87bnX07Mz/dxCoBiphWhqQ==`;本地、Release、Registry 三方字节一致,npm `latest=1.0.3`。锁定安装、0 漏洞审计、1 个 Registry signature、2 个 attestations、安装图 11 个 signed / 2 个 attested packages 和精确 provenance 均已验证;这些证据不替代真实网络故障或 Windows 外部浏览器验收。
30
30
 
31
31
  <details>
32
32
  <summary>English</summary>
@@ -57,6 +57,6 @@ Restart any running DeepSeek Harness / DeepSeek YukiRyou process, then complete
57
57
  - Focused regressions cover one-shot 401/403 recovery, persistent rejection, concurrent single-flight refresh, no retry after streaming starts, safe partial preservation, clean EOF, and partial tool-call rejection.
58
58
  - One redacted real-account `grok-4.6` Low Effort request completed through the production adapter with 2 block starts, 14 reasoning deltas, 2 block ends, 1 text delta, 1 usage chunk, and 1 finish. No response text, URL, identity, credential, or raw event was retained; this success path does not simulate a future 401 or disconnect.
59
59
  - Code PR [#37](https://github.com/yoshino-xiao7/dsh-grok-provider/pull/37) merged as `9958f487abf8ebd062eecb4368689e4d049b1d35`; main CI run [`33377849906`](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33377849906) passed on macOS 14 and Windows 2022.
60
- - Artifact, dual-platform CI, Registry, signature, attestation, and provenance evidence will be appended after publication readback. Those checks do not substitute for a real network fault or physical Windows browser-launch acceptance.
60
+ - Exact `dsh-grok-provider@1.0.3` is published with completed readback. Release commit `07ebd35c56348a1b3296bd46d1a69f5b0f430241`, annotated tag object `7ec8a8a1086749e7ac1dfb0ef2bd50c821838363`, final CI run `33378215345`, and Trusted Publisher run `33379149158` attempt 1 are verified. The unique 77-file artifact is 267,403 bytes packed and 829,862 bytes unpacked, with SHA-1 `6197c3d30ec1ef5f559371911d612f6236eee2f9`, SHA-256 `7f740c7258ab7eee0c96e1ddae3398b41a25e718cf267e244f8693c3c99aeb0d`, and the SRI listed above. Local, Release, and Registry bytes match and npm reports `latest=1.0.3`. Locked installation, zero-vulnerability audit, 1 Registry signature, 2 attestations, an installed graph of 11 signed / 2 attested packages, and exact provenance all verify. These checks do not substitute for a real network fault or physical Windows browser-launch acceptance.
61
61
 
62
62
  </details>
@@ -0,0 +1,64 @@
1
+ # dsh-grok-provider v1.0.4
2
+
3
+ `1.0.4` 修复 `1.0.3` 在 DeepSeek Harness `0.1.2-rc.1` 中启用后 Runtime 无法到达 ready 的问题。根因是发布产物仍 named import 已删除的 `installSettingsSection`。
4
+
5
+ ## 主要变化
6
+
7
+ - Host 不再从 `@deepseek-ai/dsh-settings` named import `installSettingsSection` 或 `settingsNamespace`。
8
+ - 改用 settings service 的 `installSection`,namespace 为合法字符串常量 `llm-grok`。
9
+ - settings service 缺失或重载时继续回退组合配置;Provider 与 Search 开关注册保持 `applies:"live"`。
10
+ - required peer 提升到实际支持 `0.1.2-rc.1` 的版本边界;Web client inject 用 `@deepseek-ai/dsh-client-ui-renderer` 取代已删除的 `dsh-client-runtime`。
11
+ - 认证恢复、部分输出保留、Search 协议、图片、固定 endpoint 和 Windows 浏览器登录边界不变。启用、停用和失败回滚不删除 receipt、generation 或账号状态。
12
+
13
+ ## 安装
14
+
15
+ ```sh
16
+ dsh plugin --profile web add dsh-grok-provider@1.0.4
17
+ dsh web
18
+ ```
19
+
20
+ 安装后重启正在运行的 DeepSeek Harness / DeepSeek YukiRyou。Runtime 应到达 ready,设置页出现 `llm-grok` namespace 与 Grok Provider。
21
+
22
+ ## 验证
23
+
24
+ - 聚焦回归证明 `@deepseek-ai/dsh-settings@0.1.2-rc.1` 不再导出 `installSettingsSection` / `settingsNamespace`,而 Host 仍可注册并清理 `llm-grok`。
25
+ - 打包后的全部 `dist/**` 不得引用已删除的 settings helper。
26
+ - 精确 Node `24.19.0` 全量测试、生产依赖审计与 `pack:check` 在合并前完成。
27
+ - 代码 PR [#41](https://github.com/yoshino-xiao7/dsh-grok-provider/pull/41) 已合并为 `61c80fff0841e44c16dabb2cc803a80c1bdf5456`;main CI run [`33870741679`](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33870741679) 的 macOS 14 / Windows 2022 均通过。
28
+ - 发布证据 PR [#43](https://github.com/yoshino-xiao7/dsh-grok-provider/pull/43) 形成最终 release commit `62df21df08053d293ebb59c6e67597402c2305af`;main CI run [`33873037630`](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33873037630) 的 macOS 14 / Windows 2022 均通过。
29
+ - 仓库所有者授权的唯一制品含 78 个文件,为 274,332 bytes packed、850,183 bytes unpacked;SHA-256 `464045290b06ce71b78285571c6968e6268fa403fa2350834d2dc479e88fd001`,SRI `sha512-axCBVXQ9BI9boYrlIsa+TWURMo8tQ5GdHpcQVfXUz2OLg+5rbg3XUZSv3ZRQVYQNmyXSQ+frIBDMsbZUGaXJ6w==`。
30
+ - Annotated tag `v1.0.4` peel 到最终提交;Trusted Publisher run [`33873873314` attempt 1](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33873873314/attempts/1) 成功。npm `latest=1.0.4`,候选、Release 与 Registry tarball 逐字节一致;Registry 签名、attestations、锁定安装及精确绑定 tag/workflow/commit/run 的 SLSA provenance 均已回读。这些证据不替代真实 Web profile 手工对话或 Windows 外部浏览器验收。
31
+
32
+ <details>
33
+ <summary>English</summary>
34
+
35
+ Version `1.0.4` repairs the `1.0.3` startup failure on DeepSeek Harness `0.1.2-rc.1`. The published Host still named-imported the removed `installSettingsSection` helper.
36
+
37
+ ## Highlights
38
+
39
+ - The Host no longer named-imports `installSettingsSection` or `settingsNamespace` from `@deepseek-ai/dsh-settings`.
40
+ - Registration uses the settings service `installSection` API with the legal string constant `llm-grok`.
41
+ - Composition config remains the fallback when the settings service is missing or reloaded. Search controls stay `applies:"live"`.
42
+ - Required peers move to the Harness `0.1.2-rc.1` boundary. The Web client inject list uses `@deepseek-ai/dsh-client-ui-renderer` instead of the removed `dsh-client-runtime`.
43
+ - Authentication recovery, partial-output preservation, Search protocol, images, fixed endpoints, and the Windows browser-login boundary are unchanged. Enable, disable, and failed-enable rollback keep receipts, generations, and account state.
44
+
45
+ ## Install
46
+
47
+ ```sh
48
+ dsh plugin --profile web add dsh-grok-provider@1.0.4
49
+ dsh web
50
+ ```
51
+
52
+ Restart any running DeepSeek Harness / DeepSeek YukiRyou process. Runtime should reach ready, and the settings page should expose the `llm-grok` namespace and Grok provider.
53
+
54
+ ## Verification
55
+
56
+ - A focused regression proves `@deepseek-ai/dsh-settings@0.1.2-rc.1` no longer exports `installSettingsSection` / `settingsNamespace`, while the Host still registers and removes `llm-grok`.
57
+ - Packed `dist/**` must not mention the deleted settings helpers.
58
+ - The exact Node `24.19.0` suite, production audit, and `pack:check` complete before merge.
59
+ - Code PR [#41](https://github.com/yoshino-xiao7/dsh-grok-provider/pull/41) merged as `61c80fff0841e44c16dabb2cc803a80c1bdf5456`; main CI run [`33870741679`](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33870741679) passed on macOS 14 and Windows 2022.
60
+ - Release-evidence PR [#43](https://github.com/yoshino-xiao7/dsh-grok-provider/pull/43) produced final release commit `62df21df08053d293ebb59c6e67597402c2305af`; main CI run [`33873037630`](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33873037630) passed on macOS 14 and Windows 2022.
61
+ - The explicitly authorized unique artifact contains 78 files and is 274,332 bytes packed / 850,183 bytes unpacked; SHA-256 is `464045290b06ce71b78285571c6968e6268fa403fa2350834d2dc479e88fd001`, and SRI is `sha512-axCBVXQ9BI9boYrlIsa+TWURMo8tQ5GdHpcQVfXUz2OLg+5rbg3XUZSv3ZRQVYQNmyXSQ+frIBDMsbZUGaXJ6w==`.
62
+ - Annotated tag `v1.0.4` peels to the final commit; Trusted Publisher run [`33873873314` attempt 1](https://github.com/yoshino-xiao7/dsh-grok-provider/actions/runs/33873873314/attempts/1) succeeded. npm reports `latest=1.0.4`; candidate, Release, and Registry tarballs are byte-identical; Registry signature, attestations, locked installation, and SLSA provenance bindings to the tag, workflow, commit, and run all verify. These checks do not substitute for a real Web-profile conversation or physical Windows browser-launch acceptance.
63
+
64
+ </details>
@@ -0,0 +1,27 @@
1
+ ## 中文
2
+
3
+ 修复升级到 DeepSeek Harness `0.1.5-rc.2` 后,Grok Build 设置页显示“账户服务暂时不可用”、插件和 CLI 版本未知的问题。
4
+
5
+ - 六个账户操作迁移到主机认证的共享 `/api/grok-auth/*` 精确 POST 路由,恢复登录状态、CLI 检测、模型目录和额度读取。
6
+ - 使用主机请求 schema,拒绝畸形请求与路径/方法不匹配,保留取消和插件卸载清理行为。
7
+ - Harness peer 与开发依赖对齐 `0.1.5-rc.2`。旧版 Harness 用户需要先升级宿主。
8
+ - 本地 Node `24.19.0` 测试通过;macOS 隔离实例检测到官方 Grok CLI `1.0.5`,读到 `grok-4.6`、`grok-4.5` 和额度。未认证请求返回 401,跨来源请求返回 403。
9
+ - 本版未重测真实模型生成或 Windows 真机浏览器登录。更新后需要重启正在运行的 DSH。
10
+
11
+ ```sh
12
+ dsh plugin --profile web add dsh-grok-provider@1.0.5
13
+ ```
14
+
15
+ ## English
16
+
17
+ Fix unavailable Grok Build account services and unknown plugin/CLI versions after upgrading to DeepSeek Harness `0.1.5-rc.2`.
18
+
19
+ - Move six account operations to exact POST routes on the host-authenticated shared `/api/grok-auth/*` carrier, restoring status, CLI diagnostics, model discovery, and quota reads.
20
+ - Validate requests with the host schema, reject malformed or mismatched methods, and preserve cancellation and plugin-owned cleanup.
21
+ - Align Harness peers and development dependencies with `0.1.5-rc.2`. Upgrade older Harness hosts before installing this version.
22
+ - Local Node `24.19.0` tests pass. An isolated macOS Harness detects official Grok CLI `1.0.5`, both `grok-4.6` and `grok-4.5`, and quota. Unauthenticated requests return 401; foreign Origins return 403.
23
+ - Live model generation and physical Windows browser sign-in were not repeated. Restart any running DSH process after updating.
24
+
25
+ ```sh
26
+ dsh plugin --profile web add dsh-grok-provider@1.0.5
27
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-grok-provider",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "Clean-room Grok Build provider for DeepSeek Harness with official CLI browser authentication",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -34,7 +34,7 @@
34
34
  "inject": [
35
35
  "@deepseek-ai/dsh-client-connection",
36
36
  "@deepseek-ai/dsh-client-locale",
37
- "@deepseek-ai/dsh-client-runtime",
37
+ "@deepseek-ai/dsh-client-ui-renderer",
38
38
  "@deepseek-ai/dsh-client-ui-settings"
39
39
  ],
40
40
  "platform": "web"
@@ -61,32 +61,32 @@
61
61
  "pack:check": "npm pack --dry-run --json"
62
62
  },
63
63
  "peerDependencies": {
64
- "@deepseek-ai/cordis": "4.0.1",
65
- "@deepseek-ai/dsh-client-connection": "0.1.1-rc.2",
66
- "@deepseek-ai/dsh-client-locale": "0.1.1-rc.2",
67
- "@deepseek-ai/dsh-client-runtime": "0.1.1-rc.2",
68
- "@deepseek-ai/dsh-client-ui-settings": "0.1.1-rc.2",
69
- "@deepseek-ai/dsh-commands": "0.1.1-rc.2",
70
- "@deepseek-ai/dsh-llm": "0.1.1-rc.2",
71
- "@deepseek-ai/dsh-settings": "0.1.1-rc.2",
72
- "@deepseek-ai/dsh-subprocess": "0.1.1-rc.2",
73
- "@deepseek-ai/schemastery": "3.18.1"
64
+ "@deepseek-ai/cordis": "4.0.2",
65
+ "@deepseek-ai/dsh-client-connection": "0.1.5-rc.2",
66
+ "@deepseek-ai/dsh-client-locale": "0.1.5-rc.2",
67
+ "@deepseek-ai/dsh-client-ui-renderer": "0.1.5-rc.2",
68
+ "@deepseek-ai/dsh-client-ui-settings": "0.1.5-rc.2",
69
+ "@deepseek-ai/dsh-commands": "0.1.5-rc.2",
70
+ "@deepseek-ai/dsh-llm": "0.1.5-rc.2",
71
+ "@deepseek-ai/dsh-settings": "0.1.5-rc.2",
72
+ "@deepseek-ai/dsh-subprocess": "0.1.5-rc.2",
73
+ "@deepseek-ai/schemastery": "3.18.2"
74
74
  },
75
75
  "peerDependenciesMeta": {
76
- "@deepseek-ai/dsh-client-connection": { "optional": true },
77
76
  "@deepseek-ai/dsh-client-locale": { "optional": true },
78
- "@deepseek-ai/dsh-client-runtime": { "optional": true },
77
+ "@deepseek-ai/dsh-client-ui-renderer": { "optional": true },
79
78
  "@deepseek-ai/dsh-client-ui-settings": { "optional": true },
80
79
  "@deepseek-ai/dsh-commands": { "optional": true },
81
80
  "@deepseek-ai/dsh-subprocess": { "optional": true }
82
81
  },
83
82
  "devDependencies": {
84
- "@deepseek-ai/cordis": "4.0.1",
85
- "@deepseek-ai/dsh-commands": "0.1.1-rc.2",
86
- "@deepseek-ai/dsh-llm": "0.1.1-rc.2",
87
- "@deepseek-ai/dsh-settings": "0.1.1-rc.2",
88
- "@deepseek-ai/dsh-subprocess": "0.1.1-rc.2",
89
- "@deepseek-ai/schemastery": "3.18.1"
83
+ "@deepseek-ai/cordis": "4.0.2",
84
+ "@deepseek-ai/dsh-commands": "0.1.5-rc.2",
85
+ "@deepseek-ai/dsh-llm": "0.1.5-rc.2",
86
+ "@deepseek-ai/dsh-settings": "0.1.5-rc.2",
87
+ "@deepseek-ai/dsh-subprocess": "0.1.5-rc.2",
88
+ "@deepseek-ai/schemastery": "3.18.2",
89
+ "@deepseek-ai/dsh-client-connection": "0.1.5-rc.2"
90
90
  },
91
91
  "publishConfig": {
92
92
  "access": "public",