dsh-packycode-api 1.1.6 → 1.1.7

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,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.1.7
4
+
5
+ - Fixed HTTP 405 from the settings RPC after a first hot install. The shipped Connection getter retains its own row's context, which need not inject `webServer`; the browser channel now registers with this plugin's `connection` / `webServer` injection scope as its explicit owner. Native Connection admission, authentication and RPC envelopes remain in use. The explicit-owner entry is internal to the shipped service, so other Connection implementations retain the public `rpc.handle` contract.
6
+ - Removed the bundle override of the protected `connection` row. First installation now mounts the plugin's own channel without rebuilding that row or restarting DSH; unloading or losing the optional webserver scope removes the channel. Installation instructions now describe the restart-free first install.
7
+ - Added real Connection / Cordis HTTP regressions for the 0.1.5 and 0.2.0-rc.2 hosts, covering first install, authenticated settings access, uninstall/reinstall and optional webserver availability. The 0.2 test host uses a separate development fixture with matching host dependencies.
8
+ - Validation: 284 tests passed, both bundles rebuilt and the tarball generated. The six HTTP lifecycle/authentication checks also passed against the built host bundle, without restarting the fixture's existing server or Connection service.
9
+
3
10
  ## 1.1.6
4
11
 
5
12
  - Fixed the missing `image` input capability on `deepseek-flash`, following [DeepSeek's official vision guide](https://api-docs.deepseek.com/guides/vision/). DSH can now send image attachments through the existing Chat Completions route. Audited the two GPT models, Grok 4.7 and three Claude models against their vendor documentation; all six already declare image input.
package/README.en.md CHANGED
@@ -45,9 +45,9 @@ Open the desktop application's **Plugins** page, click **Add plugin**, and enter
45
45
  dsh-packycode-api
46
46
  ```
47
47
 
48
- Choose the **official** install source, then click **Install**. To pin a version, enter `dsh-packycode-api@1.1.6`.
48
+ Choose the **official** install source, then click **Install**. To pin a version, enter `dsh-packycode-api@1.1.7`.
49
49
 
50
- Then **manually restart the desktop application**. Refreshing the page does not reload the plugin inside the Host process.
50
+ A **first install requires no DSH restart**: open **Settings → PackyCode** and add a key immediately. When updating an already loaded older version, follow the restart guidance in the **Plugin version** card.
51
51
 
52
52
  ### 2. Add a key
53
53
 
@@ -64,7 +64,7 @@ Choose a model from the `PackyCode` group. `deepseek-flash`, `gpt-6.1-sol`, `gpt
64
64
 
65
65
  The **Plugins** page shows the installed state and version, and is also where you enable, disable, or uninstall.
66
66
 
67
- **For non-desktop profiles only:** `dsh plugin --profile <name> add dsh-packycode-api@1.1.6`. Do not use it for `desktop` — the CLI refuses it (`profile "desktop" is managed exclusively by the Electron application`).
67
+ **For non-desktop profiles only:** `dsh plugin --profile <name> add dsh-packycode-api@1.1.7`. Do not use it for `desktop` — the CLI refuses it (`profile "desktop" is managed exclusively by the Electron application`).
68
68
 
69
69
  A local checkout can be linked with `dsh plugin --profile <name> add link:/path/to/dsh-packycode-api`.
70
70
 
package/README.md CHANGED
@@ -49,9 +49,9 @@
49
49
  dsh-packycode-api
50
50
  ```
51
51
 
52
- 在**安装源**中选择**官方源**,然后点击**安装**。需要固定版本时填入 `dsh-packycode-api@1.1.6`。
52
+ 在**安装源**中选择**官方源**,然后点击**安装**。需要固定版本时填入 `dsh-packycode-api@1.1.7`。
53
53
 
54
- 完成后**手动重启桌面应用**。仅刷新页面不会重新加载 Host 里的插件。
54
+ 首次安装后**无需重启 DSH**,可直接打开**设置 → PackyCode** 添加 Key。更新已加载的旧版时,按「插件版本」卡片的重启提示操作。
55
55
 
56
56
  ### 2. 添加 Key
57
57
 
@@ -68,7 +68,7 @@ dsh-packycode-api
68
68
 
69
69
  桌面应用的**插件**页可以看到已安装状态与版本,也可以在那里启用、停用或卸载。
70
70
 
71
- **仅用于非 desktop profile:** `dsh plugin --profile <name> add dsh-packycode-api@1.1.6`。不要对 `desktop` 使用它 —— CLI 会直接拒绝(`profile "desktop" is managed exclusively by the Electron application`)。
71
+ **仅用于非 desktop profile:** `dsh plugin --profile <name> add dsh-packycode-api@1.1.7`。不要对 `desktop` 使用它 —— CLI 会直接拒绝(`profile "desktop" is managed exclusively by the Electron application`)。
72
72
 
73
73
  本地开发可以用绝对路径:`dsh plugin --profile <name> add link:/path/to/dsh-packycode-api`。
74
74
 
package/cordis.patch.yml CHANGED
@@ -5,19 +5,3 @@
5
5
  - insert:
6
6
  - id: packycode-api
7
7
  name: 'dsh-packycode-api'
8
-
9
- # Connection registers a plugin's RPC channel through `owner.webServer`, where
10
- # the owner is the Connection row's own fiber — not the caller's. The shipped
11
- # dsh-web-app row injects `webRuntime` alone, so that read is refused with
12
- # `cannot get property "webServer" without inject`, the channel never reaches
13
- # the web server, and the browser's calls answer HTTP 405 while the boot log
14
- # stays clean.
15
- #
16
- # An entry patch replaces the whole inject list, so name every service that
17
- # fiber actually touches: `credentials` is the module's own inject, `webRuntime`
18
- # carries the row's `trustedHosts: !!js ctx.webRuntime.trustedHosts`, and
19
- # `webServer` is what channel registration reads. The name guard leaves a
20
- # replacement Connection implementation untouched.
21
- - id: connection
22
- name: '@deepseek-ai/dsh-client-connection'
23
- inject: [credentials, webRuntime, webServer]
package/lib/index.js CHANGED
@@ -6915,15 +6915,16 @@ function apply(ctx, config) {
6915
6915
  modelSelection
6916
6916
  });
6917
6917
  /**
6918
- * Connection registers a channel through `owner.webServer`, read on its own
6919
- * row's fiber — which is why this plugin ships the `connection` inject patch
6920
- * in `cordis.patch.yml`. Without that service the read is refused, the
6921
- * channel never reaches the web server, and the browser answers HTTP 405
6922
- * while the boot log stays clean. A profile with neither service (a headless
6923
- * run) simply never runs this callback.
6918
+ * The shipped Connection getter retains its own service context, whose row
6919
+ * need not inject webServer. Register with our injected context explicitly:
6920
+ * a first hot install then mounts the channel without rebuilding Connection.
6921
+ * The native registry still owns admission and the wire protocol. Its
6922
+ * explicit-owner entry is internal, so retain the public RPC contract for
6923
+ * other Connection implementations. A headless profile can omit this scope.
6924
6924
  */
6925
6925
  ctx.inject(["connection", "webServer"], (connectionCtx) => {
6926
- ctx.effect(() => connectionCtx.connection.rpc.handle(CHANNEL, handler), "packycode-api: loopback account RPC");
6926
+ const service = connectionCtx.connection;
6927
+ connectionCtx.effect(() => typeof service.register === "function" ? service.register(connectionCtx, CHANNEL, handler) : service.rpc.handle(CHANNEL, handler), "packycode-api: loopback account RPC");
6927
6928
  });
6928
6929
  ctx.inject(["tools"], (toolsCtx) => {
6929
6930
  ctx.effect(() => toolsCtx.tools.register(createClaudeCodeTool({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-packycode-api",
3
- "version": "1.1.6",
3
+ "version": "1.1.7",
4
4
  "description": "Use a PackyCode (PackyAPI) API key in DeepSeek Harness through a built-in multi-protocol model route with key rotation and balance display",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -82,13 +82,18 @@
82
82
  },
83
83
  "devDependencies": {
84
84
  "@deepseek-ai/cordis": "4.0.2",
85
+ "@deepseek-ai/dsh-brand": "0.1.5-rc.3",
86
+ "@deepseek-ai/dsh-client-connection": "0.1.5-rc.3",
85
87
  "@deepseek-ai/dsh-credentials": "0.1.5-rc.2",
88
+ "@deepseek-ai/dsh-invariants": "0.1.5-rc.3",
86
89
  "@deepseek-ai/dsh-llm": "0.1.5-rc.2",
87
90
  "@deepseek-ai/dsh-llm-pi-ai": "0.1.5-rc.2",
91
+ "@deepseek-ai/dsh-scope": "0.1.5-rc.3",
88
92
  "@deepseek-ai/dsh-settings": "0.1.5-rc.2",
89
93
  "@deepseek-ai/dsh-tools": "0.1.5-rc.2",
90
94
  "@deepseek-ai/schemastery": "3.18.4",
91
95
  "@earendil-works/pi-ai": "0.85.1",
96
+ "packycode-host-v020-fixture": "file:tests/fixtures/host-v020",
92
97
  "react": "18.3.1",
93
98
  "tsdown": "0.22.2",
94
99
  "yaml": "2.9.1"