@gatherthread/dsh-host 0.1.0-alpha.4 → 0.1.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -19,7 +19,7 @@ The package does not install a DSH runtime dependency.
19
19
  After `@gatherthread/dsh-host` is published, the ordinary three-step path is:
20
20
 
21
21
  ```text
22
- npx @deepseek-ai/dsh@0.1.2-rc.1 plugin --profile web add @gatherthread/dsh-host@0.1.0-alpha.4
22
+ npx @deepseek-ai/dsh@0.1.2-rc.1 plugin --profile web add @gatherthread/dsh-host@0.1.0-alpha.6
23
23
  npx @deepseek-ai/dsh@0.1.2-rc.1 web
24
24
  # In DSH: Settings -> GatherThread / 共序 -> Sign in and pair
25
25
  ```
@@ -98,13 +98,20 @@ bounded exponential delay.
98
98
 
99
99
  Every eligible Session has its own DSH Session id, HTTP abort scope, connector
100
100
  state file, runtime identity, heartbeat, canonical cursor and durable outbox.
101
- The project gate bounds the whole claim-to-settlement operation. This is
102
- required because the current GatherThread alpha has no claim-abandon or claim
103
- lease-expiry API. Removing or downgrading a Session cancels its queued permit
104
- before it can claim a request. Existing single-Session configuration remains
101
+ The project gate bounds the whole claim-to-settlement operation. Claims are
102
+ leased and renewed by accepted progress, so a Session that stops producing work
103
+ releases its request for the exact recorded runtime to reclaim; the gate still bounds this
104
+ connector's own concurrency while it holds one. Removing or downgrading a Session
105
+ cancels its queued permit before it can claim a request. Existing single-Session configuration remains
105
106
  valid when `bindingMode` is omitted; both modes resolve the real current actor
106
107
  before applying Solo permissions.
107
108
 
109
+ During an active prompt, newly durable DSH Host events queue a rate-limited,
110
+ generic progress marker; event bursts coalesce. The marker carries no event text,
111
+ reasoning, headers, or private stream data, but renews the exact claim attempt. Progress, completion,
112
+ and request-linked tool outbox entries are rebound to the renewed attempt after a
113
+ crash recovery, while stale attempts remain fenced by the server.
114
+
108
115
  The installed native plugin stores one account-level model route and reconciles
109
116
  every active Project visible to the paired GatherThread identity. Adding a
110
117
  Project starts its isolated manager without another pairing step. Archiving a
@@ -112,6 +119,14 @@ Project or revoking access stops only that Project manager; its local workspace
112
119
  and DSH Session history are retained. A failure in one Project does not stop
113
120
  healthy peers, and discovery retries periodically.
114
121
 
122
+ For a `deepseek-official` route, the plugin also advertises the exact models and
123
+ reasoning efforts returned by DSH's public LLM catalog. The GatherThread work
124
+ page may select one advertised combination for an individual Agent request.
125
+ That selection is installed only on the borrowed Agent while the request runs
126
+ and is removed in `finally`; it does not rewrite DSH Web's saved model choice.
127
+ Unsupported combinations fail closed. Older plugins and non-DeepSeek routes
128
+ retain the account route's fixed provider and model.
129
+
115
130
  An existing schema-v1 single-Project pairing keeps its device credential when
116
131
  the plugin is upgraded, but deliberately drops the old model binding. The user
117
132
  must choose the DSH model and explicitly select **Connect all accessible
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "name": "@gatherthread/dsh-host",
4
- "version": "0.1.0-alpha.4",
4
+ "version": "0.1.0-alpha.6",
5
5
  "license": "Apache-2.0",
6
6
  "defaultEnabled": false,
7
7
  "hostEntry": "@gatherthread/dsh-host",
package/client/client.js CHANGED
@@ -302,6 +302,13 @@ function renderNativeControls(input) {
302
302
  const models = selectedProvider?.models ?? [];
303
303
  controls.push(
304
304
  connectionSummary(state),
305
+ // Reaching this branch means authorization is already "paired": the
306
+ // "unpaired" and "pairing" states are handled by earlier branches. The
307
+ // browser approval succeeded, but without a provider and model no runtime
308
+ // is registered, so a bare stopped connection is indistinguishable from a
309
+ // fresh install. State the remaining step explicitly.
310
+ React.createElement("p", { key: "select-model-notice", style: styles.notice },
311
+ "配对完成后,尚未选择 DSH Provider 与 Model。完成选择并点击下方按钮后,本机 DSH 运行时才会注册到 GatherThread;在此之前,GatherThread 网页无法发现这台 DSH。"),
305
312
  input.catalog === undefined
306
313
  ? React.createElement("button", {
307
314
  key: "load-catalog",
package/cordis.patch.yml CHANGED
@@ -12,3 +12,21 @@
12
12
  inject: [agents, sessions, sessionPersistence, sessionQuery, sessionTitle, workspaceRegistry, llm, credentials, connection]
13
13
  config:
14
14
  enabled: true
15
+
16
+ # DSH 0.1.5-rc.x dropped `webServer` from the Connection plugin's own inject list
17
+ # (`["webServer", "credentials"]` became `["credentials"]`), moving it into a
18
+ # nested scope that covers only DSH's new index-injection feature. Connection
19
+ # still reads `owner.webServer` from its *providing* context -- cordis starts
20
+ # every service lookup at the shadow origin, `(ctx[symbols.shadow] ?? ctx).fiber`
21
+ # -- so `connection.rpc.handle()` raises "cannot get property \"webServer\"
22
+ # without inject" for every caller, and the whole plugin tree fails to load.
23
+ # 0.1.2-rc.1 kept the dependency at the top level, so restoring it here is what
24
+ # makes the Host plugin load on both versions.
25
+ #
26
+ # A row patch replaces `inject` wholesale rather than merging, so each entry the
27
+ # 0.1.5 row already declares is repeated: `webRuntime` still feeds this row's
28
+ # `trustedHosts: !!js ctx.webRuntime.trustedHosts` expression, and `credentials`
29
+ # is repeated so the row stays self-sufficient no matter how the Loader folds a
30
+ # row's list together with the module's own `inject` export.
31
+ - id: connection
32
+ inject: [webRuntime, credentials, webServer]