@cecwxf/dsh-room 0.3.1 → 0.3.3

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
@@ -2,6 +2,27 @@
2
2
 
3
3
  DeepSeek Harness plugin **dsh room** (sidebar label **DSH Room**) for Collab rooms: accountless, end-to-end encrypted, one-to-many agent collaboration over the default VPS Node relay (optional Cloudflare).
4
4
 
5
+
6
+ ## Confirm / upgrade to 0.3.3
7
+
8
+ User hangs on **Creating…** for Local-only were caused by older builds (≤0.3.1) awaiting joins with no timeout, and by `bridge.start()` blocking every API call while rejoining rooms. **0.3.3** returns create immediately.
9
+
10
+ ```bash
11
+ # in the dsh profile that has dsh-room (e.g. ~/.dsh/profiles/web)
12
+ pnpm add @cecwxf/dsh-room@0.3.3
13
+ # or: dsh plugin add @cecwxf/dsh-room@0.3.3
14
+ ```
15
+
16
+ Then **fully restart dsh** (not only live-reload), hard-refresh the web UI (Ctrl+Shift+R), and confirm:
17
+
18
+ ```bash
19
+ # dump-config / logs should show dsh-room 0.3.3
20
+ curl -s http://127.0.0.1:<dsh-port>/api/collab/version
21
+ # → {"name":"@cecwxf/dsh-room","version":"0.3.3"}
22
+ ```
23
+
24
+ The Create dialog subtitle also shows `dsh-room 0.3.3`. If it still says `?` or an older version, the UI is serving a cached client — hard refresh again after restart.
25
+
5
26
  ## Install (one-liner)
6
27
 
7
28
  ```sh
package/dist/client.js CHANGED
@@ -42,14 +42,30 @@ var rooms_default = '/* Collab Rooms UI \u2014 original surface inside the dsh s
42
42
  // src/client/store.js
43
43
  var API = "/api/collab";
44
44
  async function call(path, init) {
45
- const res = await fetch(API + path, { credentials: "same-origin", ...init, headers: { ...init && init.body ? { "content-type": "application/json" } : {}, ...init && init.headers || {} } });
46
- const body = await res.json().catch(() => ({}));
47
- if (!res.ok) throw new Error(body.error || `${res.status} ${res.statusText}`);
45
+ let res;
46
+ try {
47
+ res = await fetch(API + path, { credentials: "same-origin", ...init, headers: { ...init && init.body ? { "content-type": "application/json" } : {}, ...init && init.headers || {} } });
48
+ } catch (e) {
49
+ const msg = e && e.name === "AbortError" ? "Request timed out or was cancelled" : e && e.message || "network error";
50
+ throw new Error(msg);
51
+ }
52
+ const text = await res.text();
53
+ let body = {};
54
+ try {
55
+ body = text ? JSON.parse(text) : {};
56
+ } catch {
57
+ body = { error: text.slice(0, 300) || res.statusText };
58
+ }
59
+ if (!res.ok) {
60
+ const detail = body.error || body.message || (typeof body.raw === "string" ? body.raw : "") || `${res.status} ${res.statusText}`;
61
+ throw new Error(detail);
62
+ }
48
63
  return body;
49
64
  }
50
- var post = (path, body) => call(path, { method: "POST", body: JSON.stringify(body || {}) });
65
+ var post = (path, body, init) => call(path, { method: "POST", body: JSON.stringify(body || {}), ...init || {} });
51
66
  function createRoomsStore() {
52
67
  let snap = {
68
+ version: null,
53
69
  self: null,
54
70
  relayUrl: "",
55
71
  lanRelayPort: null,
@@ -152,15 +168,22 @@ function createRoomsStore() {
152
168
  clearTimeout(searchTimer);
153
169
  searchTimer = setTimeout(() => void runSearch(query), 300);
154
170
  },
155
- async create(form) {
156
- const r = await post("/rooms", { ...form, workspaceId: form.workspacePath ? void 0 : form.workspaceId || snap.activeWorkspaceId });
171
+ async create(form, opts) {
172
+ const ac = opts && opts.signal ? null : new AbortController();
173
+ const signal = opts && opts.signal || ac.signal;
174
+ const timer = ac ? setTimeout(() => ac.abort(), opts && opts.timeoutMs || 12e3) : null;
157
175
  try {
158
- api.onRoomOpened && api.onRoomOpened();
159
- } catch {
176
+ const r = await post("/rooms", { ...form, workspaceId: form.workspacePath ? void 0 : form.workspaceId || snap.activeWorkspaceId }, { signal });
177
+ try {
178
+ api.onRoomOpened && api.onRoomOpened();
179
+ } catch {
180
+ }
181
+ set({ selected: r.roomId, dialog: { kind: "invite", roomId: r.roomId, name: r.name, invite: r.invite, public: r.public, listed: r.listed } });
182
+ void loadMessages(r.roomId);
183
+ return r;
184
+ } finally {
185
+ if (timer) clearTimeout(timer);
160
186
  }
161
- set({ selected: r.roomId, dialog: { kind: "invite", roomId: r.roomId, name: r.name, invite: r.invite, public: r.public, listed: r.listed } });
162
- void loadMessages(r.roomId);
163
- return r;
164
187
  },
165
188
  async join(invite, info) {
166
189
  const r = await post("/join", { invite, ...info && info.workspacePath ? {} : { workspaceId: snap.activeWorkspaceId }, ...info || {} });
@@ -1117,11 +1140,12 @@ function AgentDialog({ store, d }) {
1117
1140
  if (existing) await a.updateAgent(d.roomId, existing.agentId, body);
1118
1141
  else {
1119
1142
  const r = await a.addAgent(d.roomId, f.preset ? { ...body, preset: f.preset } : body);
1120
- a.toast(`${r.name} joined as @${r.agentId}`);
1143
+ a.toast(`${r.name} added as @${r.agentId} (joining in background)`);
1121
1144
  }
1122
1145
  a.closeDialog();
1123
1146
  } catch (e) {
1124
1147
  setErr(e.message);
1148
+ } finally {
1125
1149
  setBusy(false);
1126
1150
  }
1127
1151
  };
@@ -1521,9 +1545,11 @@ function CreateDialog({ store, d }) {
1521
1545
  concurrency: f.concurrency,
1522
1546
  isolation: f.isolation,
1523
1547
  agents: f.agents.map((ag) => ag.key ? ag.key : { name: ag.name, persona: ag.persona, systemPrompt: ag.systemPrompt, scope: ag.scope, moderator: ag.moderator, reasoningEffort: ag.reasoningEffort, approvalRequired: ag.approvalRequired, model: ag.model || void 0 })
1524
- });
1548
+ }, { timeoutMs: 12e3 });
1525
1549
  } catch (e) {
1526
- setErr(e.message);
1550
+ const msg = e && e.message || "Create failed";
1551
+ setErr(/timed out|timeout|abort/i.test(msg) ? `${msg}. Check transport (try Local only), relay host, and network \u2014 agent joins continue in the background after a successful create.` : msg);
1552
+ } finally {
1527
1553
  setBusy(false);
1528
1554
  }
1529
1555
  };
@@ -1549,7 +1575,7 @@ function CreateDialog({ store, d }) {
1549
1575
  closeLabel: "Close",
1550
1576
  className: "rm-modal-wide rm-modal-create rm-modal-scrollable",
1551
1577
  contentClassName: "rm-modal-scroll",
1552
- description: ws ? `Workspace \u201C${ws.title}\u201D \xB7 default VPS relay 62.234.113.56:80 \xB7 E2EE. Every option below is editable.` : "Pick a dsh workspace. Every create option is on these tabs \u2014 nothing is hidden off-screen.",
1578
+ description: (ws ? `Workspace \u201C${ws.title}\u201D \xB7 ` : "") + `dsh-room ${s.version || "?"} \xB7 default VPS 62.234.113.56:80 \xB7 E2EE. Create returns immediately; agents join in the background.`,
1553
1579
  footer: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
1554
1580
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dsh_client_ui_primitives.Button, { variant: "outline", onClick: a.closeDialog, children: "Cancel" }),
1555
1581
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dsh_client_ui_primitives.Button, { variant: "primary", disabled: !ok, onClick: submit, children: busy ? "Creating\u2026" : "Create" })
@@ -2197,14 +2223,30 @@ var rooms_default = '/* Collab Rooms UI \u2014 original surface inside the dsh s
2197
2223
  // src/client/store.js
2198
2224
  var API = "/api/collab";
2199
2225
  async function call(path, init) {
2200
- const res = await fetch(API + path, { credentials: "same-origin", ...init, headers: { ...init && init.body ? { "content-type": "application/json" } : {}, ...init && init.headers || {} } });
2201
- const body = await res.json().catch(() => ({}));
2202
- if (!res.ok) throw new Error(body.error || `${res.status} ${res.statusText}`);
2226
+ let res;
2227
+ try {
2228
+ res = await fetch(API + path, { credentials: "same-origin", ...init, headers: { ...init && init.body ? { "content-type": "application/json" } : {}, ...init && init.headers || {} } });
2229
+ } catch (e) {
2230
+ const msg = e && e.name === "AbortError" ? "Request timed out or was cancelled" : e && e.message || "network error";
2231
+ throw new Error(msg);
2232
+ }
2233
+ const text = await res.text();
2234
+ let body = {};
2235
+ try {
2236
+ body = text ? JSON.parse(text) : {};
2237
+ } catch {
2238
+ body = { error: text.slice(0, 300) || res.statusText };
2239
+ }
2240
+ if (!res.ok) {
2241
+ const detail = body.error || body.message || (typeof body.raw === "string" ? body.raw : "") || `${res.status} ${res.statusText}`;
2242
+ throw new Error(detail);
2243
+ }
2203
2244
  return body;
2204
2245
  }
2205
- var post = (path, body) => call(path, { method: "POST", body: JSON.stringify(body || {}) });
2246
+ var post = (path, body, init) => call(path, { method: "POST", body: JSON.stringify(body || {}), ...init || {} });
2206
2247
  function createRoomsStore() {
2207
2248
  let snap = {
2249
+ version: null,
2208
2250
  self: null,
2209
2251
  relayUrl: "",
2210
2252
  lanRelayPort: null,
@@ -2307,15 +2349,22 @@ function createRoomsStore() {
2307
2349
  clearTimeout(searchTimer);
2308
2350
  searchTimer = setTimeout(() => void runSearch(query), 300);
2309
2351
  },
2310
- async create(form) {
2311
- const r = await post("/rooms", { ...form, workspaceId: form.workspacePath ? void 0 : form.workspaceId || snap.activeWorkspaceId });
2352
+ async create(form, opts) {
2353
+ const ac = opts && opts.signal ? null : new AbortController();
2354
+ const signal = opts && opts.signal || ac.signal;
2355
+ const timer = ac ? setTimeout(() => ac.abort(), opts && opts.timeoutMs || 12e3) : null;
2312
2356
  try {
2313
- api.onRoomOpened && api.onRoomOpened();
2314
- } catch {
2357
+ const r = await post("/rooms", { ...form, workspaceId: form.workspacePath ? void 0 : form.workspaceId || snap.activeWorkspaceId }, { signal });
2358
+ try {
2359
+ api.onRoomOpened && api.onRoomOpened();
2360
+ } catch {
2361
+ }
2362
+ set({ selected: r.roomId, dialog: { kind: "invite", roomId: r.roomId, name: r.name, invite: r.invite, public: r.public, listed: r.listed } });
2363
+ void loadMessages(r.roomId);
2364
+ return r;
2365
+ } finally {
2366
+ if (timer) clearTimeout(timer);
2315
2367
  }
2316
- set({ selected: r.roomId, dialog: { kind: "invite", roomId: r.roomId, name: r.name, invite: r.invite, public: r.public, listed: r.listed } });
2317
- void loadMessages(r.roomId);
2318
- return r;
2319
2368
  },
2320
2369
  async join(invite, info) {
2321
2370
  const r = await post("/join", { invite, ...info && info.workspacePath ? {} : { workspaceId: snap.activeWorkspaceId }, ...info || {} });
@@ -3272,11 +3321,12 @@ function AgentDialog({ store, d }) {
3272
3321
  if (existing) await a.updateAgent(d.roomId, existing.agentId, body);
3273
3322
  else {
3274
3323
  const r = await a.addAgent(d.roomId, f.preset ? { ...body, preset: f.preset } : body);
3275
- a.toast(`${r.name} joined as @${r.agentId}`);
3324
+ a.toast(`${r.name} added as @${r.agentId} (joining in background)`);
3276
3325
  }
3277
3326
  a.closeDialog();
3278
3327
  } catch (e) {
3279
3328
  setErr(e.message);
3329
+ } finally {
3280
3330
  setBusy(false);
3281
3331
  }
3282
3332
  };
@@ -3676,9 +3726,11 @@ function CreateDialog({ store, d }) {
3676
3726
  concurrency: f.concurrency,
3677
3727
  isolation: f.isolation,
3678
3728
  agents: f.agents.map((ag) => ag.key ? ag.key : { name: ag.name, persona: ag.persona, systemPrompt: ag.systemPrompt, scope: ag.scope, moderator: ag.moderator, reasoningEffort: ag.reasoningEffort, approvalRequired: ag.approvalRequired, model: ag.model || void 0 })
3679
- });
3729
+ }, { timeoutMs: 12e3 });
3680
3730
  } catch (e) {
3681
- setErr(e.message);
3731
+ const msg = e && e.message || "Create failed";
3732
+ setErr(/timed out|timeout|abort/i.test(msg) ? `${msg}. Check transport (try Local only), relay host, and network \u2014 agent joins continue in the background after a successful create.` : msg);
3733
+ } finally {
3682
3734
  setBusy(false);
3683
3735
  }
3684
3736
  };
@@ -3704,7 +3756,7 @@ function CreateDialog({ store, d }) {
3704
3756
  closeLabel: "Close",
3705
3757
  className: "rm-modal-wide rm-modal-create rm-modal-scrollable",
3706
3758
  contentClassName: "rm-modal-scroll",
3707
- description: ws ? `Workspace \u201C${ws.title}\u201D \xB7 default VPS relay 62.234.113.56:80 \xB7 E2EE. Every option below is editable.` : "Pick a dsh workspace. Every create option is on these tabs \u2014 nothing is hidden off-screen.",
3759
+ description: (ws ? `Workspace \u201C${ws.title}\u201D \xB7 ` : "") + `dsh-room ${s.version || "?"} \xB7 default VPS 62.234.113.56:80 \xB7 E2EE. Create returns immediately; agents join in the background.`,
3708
3760
  footer: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
3709
3761
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dsh_client_ui_primitives.Button, { variant: "outline", onClick: a.closeDialog, children: "Cancel" }),
3710
3762
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dsh_client_ui_primitives.Button, { variant: "primary", disabled: !ok, onClick: submit, children: busy ? "Creating\u2026" : "Create" })
package/dist/index.js CHANGED
@@ -1224,7 +1224,7 @@ var WsTransport = class {
1224
1224
  get connected() {
1225
1225
  return this._connected;
1226
1226
  }
1227
- async connect() {
1227
+ async connect(timeoutMs = 8e3) {
1228
1228
  if (this._connected && this.ws?.readyState === WebSocket.OPEN)
1229
1229
  return;
1230
1230
  this.teardownSocket();
@@ -1232,6 +1232,28 @@ var WsTransport = class {
1232
1232
  await new Promise((resolve3, reject) => {
1233
1233
  const ws = new WebSocket(this.url);
1234
1234
  this.ws = ws;
1235
+ let settled = false;
1236
+ const finish = (err) => {
1237
+ if (settled || gen !== this.generation)
1238
+ return;
1239
+ settled = true;
1240
+ clearTimeout(timer);
1241
+ if (err) {
1242
+ try {
1243
+ ws.close(1e3, "connect-failed");
1244
+ } catch {
1245
+ }
1246
+ if (this.ws === ws) {
1247
+ this.ws = null;
1248
+ this._connected = false;
1249
+ }
1250
+ reject(err);
1251
+ } else {
1252
+ this._connected = true;
1253
+ resolve3();
1254
+ }
1255
+ };
1256
+ const timer = setTimeout(() => finish(new Error(`WebSocket connect timeout (${timeoutMs}ms) to ${this.url}`)), timeoutMs);
1235
1257
  ws.addEventListener("open", () => {
1236
1258
  if (gen !== this.generation) {
1237
1259
  try {
@@ -1240,14 +1262,13 @@ var WsTransport = class {
1240
1262
  }
1241
1263
  return;
1242
1264
  }
1243
- this._connected = true;
1244
- resolve3();
1265
+ finish();
1245
1266
  });
1246
1267
  ws.addEventListener("error", () => {
1247
1268
  if (gen !== this.generation)
1248
1269
  return;
1249
1270
  if (!this._connected)
1250
- reject(new Error(`WebSocket error connecting to ${this.url}`));
1271
+ finish(new Error(`WebSocket error connecting to ${this.url}`));
1251
1272
  });
1252
1273
  ws.addEventListener("message", (ev) => {
1253
1274
  if (gen !== this.generation)
@@ -2747,11 +2768,30 @@ ${HELP}` };
2747
2768
  }
2748
2769
 
2749
2770
  // src/plugin.ts
2771
+ import { createRequire } from "node:module";
2772
+ var requirePkg = createRequire(import.meta.url);
2773
+ var PLUGIN_VERSION = (() => {
2774
+ try {
2775
+ return requirePkg("../package.json").version;
2776
+ } catch {
2777
+ return "0.3.3";
2778
+ }
2779
+ })();
2750
2780
  var SUMMARY_MAX = 120;
2751
2781
  var MESSAGES_MAX = 300;
2752
2782
  var AGENT_SERVICES = ["agents", "agentDefaultModel", "agentPresets", "permissionPresets", "sessionTitle", "workspaceRegistry"];
2753
2783
  var text = (s) => [{ type: "text", text: s }];
2754
2784
  var jsonRender = (_args, value) => text(JSON.stringify(value));
2785
+ function withTimeout(p, ms, label) {
2786
+ let t;
2787
+ const timeout = new Promise((_, rej) => {
2788
+ t = setTimeout(() => rej(new Error(`${label} timed out after ${ms}ms`)), ms);
2789
+ t.unref?.();
2790
+ });
2791
+ return Promise.race([p, timeout]).finally(() => {
2792
+ if (t) clearTimeout(t);
2793
+ });
2794
+ }
2755
2795
  async function loadIdentity(path, agentName) {
2756
2796
  try {
2757
2797
  const id2 = JSON.parse(await readFile5(path, "utf8"));
@@ -2924,8 +2964,15 @@ var CollabBridge = class {
2924
2964
  metas.push({ roomId, invite: this.config.invite, name: roomId, description: "", tags: [], public: false, owner: false, joinedAt: Date.now(), workspaceId: wsId });
2925
2965
  }
2926
2966
  this.activeRoomId = st?.activeRoomId ?? metas[0]?.roomId ?? null;
2927
- await Promise.all(metas.map((m) => this.open(m).catch((e) => this.log("error", `rejoin ${m.roomId} failed: ${e.message}`))));
2928
2967
  await this.persist();
2968
+ this.emit({ type: "rooms" });
2969
+ void Promise.all(
2970
+ metas.map(
2971
+ (m) => withTimeout(this.open(m), 2e4, `rejoin ${m.roomId}`).catch(
2972
+ (e) => this.log("error", `rejoin ${m.roomId} failed: ${e.message}`)
2973
+ )
2974
+ )
2975
+ ).then(() => this.emit({ type: "rooms" }));
2929
2976
  })();
2930
2977
  return this.ready;
2931
2978
  }
@@ -2935,11 +2982,13 @@ var CollabBridge = class {
2935
2982
  // ── room lifecycle ───────────────────────────────────────────────────────
2936
2983
  async open(meta) {
2937
2984
  const existing = this.rooms.get(meta.roomId);
2938
- if (existing) return existing;
2939
- const conn = new RoomConn(meta);
2940
- conn.onAdd = () => this.scheduleHistorySave(conn);
2941
- this.rooms.set(meta.roomId, conn);
2942
- this.emit({ type: "rooms" });
2985
+ if (existing?.client?.isJoined()) return existing;
2986
+ const conn = existing ?? new RoomConn(meta);
2987
+ if (!existing) {
2988
+ conn.onAdd = () => this.scheduleHistorySave(conn);
2989
+ this.rooms.set(meta.roomId, conn);
2990
+ this.emit({ type: "rooms" });
2991
+ }
2943
2992
  try {
2944
2993
  await this.connect(conn);
2945
2994
  } catch (e) {
@@ -3007,7 +3056,7 @@ var CollabBridge = class {
3007
3056
  this.log("info", `room ${roomId} connection ${status}${detail ? ` (${detail})` : ""}`);
3008
3057
  });
3009
3058
  if (this.disposed) return;
3010
- await client.join();
3059
+ await client.join(loopback ? 5e3 : 15e3);
3011
3060
  if (this.disposed) {
3012
3061
  await client.dispose().catch(() => {
3013
3062
  });
@@ -3024,18 +3073,25 @@ var CollabBridge = class {
3024
3073
  conn.presenceTimer.unref?.();
3025
3074
  }
3026
3075
  this.log("info", `joined room ${roomId} as ${identity.agentId} via ${loopback ? "in-process loopback" : wsUrl} (${loopback ? "local" : parsed.mode})`);
3027
- if (loopback || conn.local.agents.length) await this.loadLocalHistory(conn);
3076
+ if (loopback || conn.local.agents.length) {
3077
+ await withTimeout(this.loadLocalHistory(conn), 3e3, `local-history ${roomId}`).catch(
3078
+ (e) => this.log("warn", `local history ${roomId}: ${e.message}`)
3079
+ );
3080
+ }
3028
3081
  try {
3029
- for (const p of await client.history(0)) {
3082
+ const hist = await withTimeout(client.history(0), 5e3, `history ${roomId}`);
3083
+ for (const p of hist) {
3030
3084
  const m = toMessage(p, identity.agentId);
3031
3085
  if (m) conn.add(m);
3032
3086
  }
3033
3087
  } catch (e) {
3034
3088
  this.log("warn", `history for ${roomId} failed: ${e.message}`);
3035
3089
  }
3036
- await this.connectAgents(conn).catch((e) => this.log("warn", `local agents for ${roomId} failed: ${e.message}`));
3090
+ await withTimeout(this.connectAgents(conn), loopback ? 8e3 : 2e4, `connectAgents ${roomId}`).catch(
3091
+ (e) => this.log("warn", `local agents for ${roomId} failed: ${e.message}`)
3092
+ );
3037
3093
  try {
3038
- await this.announceMemberConfig(conn);
3094
+ await withTimeout(this.announceMemberConfig(conn), 5e3, `announce ${roomId}`);
3039
3095
  } catch (e) {
3040
3096
  this.log("warn", `announce member.config failed: ${e.message}`);
3041
3097
  }
@@ -3173,23 +3229,49 @@ var CollabBridge = class {
3173
3229
  }
3174
3230
  };
3175
3231
  meta.local = normalizeLocalSettings(meta.local);
3176
- const conn = await this.open(meta);
3232
+ this.log("info", `createRoom begin name=${meta.name} localOnly=${!!opts.localOnly} agents=${(opts.agents ?? []).length}`);
3233
+ const conn = new RoomConn(meta);
3234
+ conn.onAdd = () => this.scheduleHistorySave(conn);
3235
+ this.rooms.set(meta.roomId, conn);
3236
+ conn.status = "connecting";
3237
+ this.activeRoomId = meta.roomId;
3238
+ this.emit({ type: "rooms" });
3177
3239
  for (const entry of opts.agents ?? []) {
3178
3240
  if (typeof entry === "string") {
3179
- if (AGENT_PRESETS.some((p) => p.key === entry)) await this.addLocalAgent(meta.roomId, { preset: entry });
3241
+ if (AGENT_PRESETS.some((p) => p.key === entry)) await this.addLocalAgent(meta.roomId, { preset: entry }, { connect: false });
3180
3242
  } else if (entry && typeof entry === "object") {
3181
- await this.addLocalAgent(meta.roomId, entry);
3243
+ await this.addLocalAgent(meta.roomId, entry, { connect: false });
3182
3244
  }
3183
3245
  }
3184
- this.activeRoomId = meta.roomId;
3185
3246
  if (bindTo) this.bind(conn, bindTo);
3186
3247
  await this.persist();
3187
- let listing;
3188
- if (meta.public) listing = await this.publish(conn).catch((e) => {
3189
- this.log("warn", `directory publish failed: ${e.message}`);
3190
- return void 0;
3191
- });
3192
- return { ...this.view(conn), invite: meta.invite, listed: !!listing };
3248
+ this.log("info", `createRoom persisted ${meta.roomId} with ${conn.local.agents.length} agent(s); connecting in background`);
3249
+ void this.finishCreateConnect(conn, meta.public).catch(
3250
+ (e) => this.log("error", `createRoom background connect ${meta.roomId}: ${e.message}`)
3251
+ );
3252
+ return { ...this.view(conn), invite: meta.invite, listed: false };
3253
+ }
3254
+ /** Background: host join + local agent joins + optional directory publish. Never awaited by HTTP create. */
3255
+ async finishCreateConnect(conn, isPublic) {
3256
+ try {
3257
+ await withTimeout(this.connect(conn), conn.local.loopback ? 8e3 : 2e4, `connect ${conn.meta.roomId}`);
3258
+ if (conn.local.agents.length) {
3259
+ await withTimeout(this.connectAgents(conn), conn.local.loopback ? 8e3 : 25e3, `agents ${conn.meta.roomId}`).catch(
3260
+ (e) => this.log("warn", `local agents for ${conn.meta.roomId}: ${e.message}`)
3261
+ );
3262
+ }
3263
+ if (isPublic && conn.meta.owner) {
3264
+ this.startHeartbeat(conn);
3265
+ await this.publish(conn).catch((e) => this.log("warn", `directory publish failed: ${e.message}`));
3266
+ }
3267
+ this.log("info", `createRoom connected ${conn.meta.roomId} status=${conn.status}`);
3268
+ } catch (e) {
3269
+ conn.status = "offline";
3270
+ conn.error = e.message;
3271
+ this.emit({ type: "rooms" });
3272
+ throw e;
3273
+ }
3274
+ this.emit({ type: "rooms" });
3193
3275
  }
3194
3276
  /** Join by invite. `info` carries directory metadata when joining from search results. */
3195
3277
  async joinInvite(invite, info = {}, bindTo) {
@@ -3342,7 +3424,7 @@ var CollabBridge = class {
3342
3424
  error: conn.error,
3343
3425
  members: (() => {
3344
3426
  const localAgents = conn.local.agents;
3345
- for (const a of localAgents) if (conn.agents.get(a.agentId)?.isJoined()) live.add(a.agentId);
3427
+ for (const a of localAgents) live.add(a.agentId);
3346
3428
  const ids = [...live];
3347
3429
  const cfgs = this.peerConfigs.get(conn.meta.roomId);
3348
3430
  return ids.map((agentId) => {
@@ -3373,6 +3455,7 @@ var CollabBridge = class {
3373
3455
  }
3374
3456
  state() {
3375
3457
  return {
3458
+ version: PLUGIN_VERSION,
3376
3459
  self: this.identity?.agentId ?? null,
3377
3460
  relayUrl: this.config.relayUrl,
3378
3461
  lanRelayPort: this.lanRelay?.port ?? null,
@@ -3680,13 +3763,18 @@ Do what is asked using your tools. Answer in the room by calling collab_send wit
3680
3763
  }
3681
3764
  /** Join every configured local agent as its own room member (own keypair, same transport as the host). */
3682
3765
  async connectAgents(conn) {
3683
- for (const a of conn.local.agents) {
3684
- if (conn.agents.get(a.agentId)?.isJoined()) continue;
3685
- await this.connectAgent(conn, a).catch((e) => this.log("warn", `local agent ${a.agentId} join failed: ${e.message}`));
3686
- }
3766
+ const pending = conn.local.agents.filter((a) => !conn.agents.get(a.agentId)?.isJoined());
3767
+ await Promise.all(
3768
+ pending.map(
3769
+ (a) => this.connectAgent(conn, a).catch((e) => this.log("warn", `local agent ${a.agentId} join failed: ${e.message}`))
3770
+ )
3771
+ );
3687
3772
  this.emit({ type: "rooms" });
3688
3773
  }
3689
3774
  async connectAgent(conn, a) {
3775
+ await withTimeout(this.connectAgentInner(conn, a), conn.local.loopback ? 8e3 : 2e4, `agent ${a.agentId} join`);
3776
+ }
3777
+ async connectAgentInner(conn, a) {
3690
3778
  const parsed = parseInviteUri(conn.meta.invite);
3691
3779
  const identity = await loadIdentity(this.agentIdentityPath(a.agentId), a.agentId);
3692
3780
  const client = new CollabClient({
@@ -3703,7 +3791,7 @@ Do what is asked using your tools. Answer in the room by calling collab_send wit
3703
3791
  });
3704
3792
  client.onPeers(() => this.emit({ type: "rooms" }));
3705
3793
  if (this.disposed) return;
3706
- await client.join();
3794
+ await client.join(conn.local.loopback ? 5e3 : 12e3);
3707
3795
  if (this.disposed) {
3708
3796
  await client.dispose().catch(() => {
3709
3797
  });
@@ -3751,7 +3839,7 @@ Do what is asked using your tools. Answer in the room by calling collab_send wit
3751
3839
  presets() {
3752
3840
  return AGENT_PRESETS;
3753
3841
  }
3754
- async addLocalAgent(roomId, input) {
3842
+ async addLocalAgent(roomId, input, opts = {}) {
3755
3843
  const conn = this.room(roomId);
3756
3844
  const self = await this.self();
3757
3845
  const preset = AGENT_PRESETS.find((p) => p.key === input.preset);
@@ -3776,8 +3864,14 @@ Do what is asked using your tools. Answer in the room by calling collab_send wit
3776
3864
  if (cfg.moderator) for (const a of conn.local.agents) a.moderator = false;
3777
3865
  conn.local.agents.push(cfg);
3778
3866
  await this.persist();
3779
- if (conn.client?.isJoined()) await this.connectAgent(conn, cfg);
3780
3867
  this.emit({ type: "rooms" });
3868
+ const shouldConnect = opts.connect !== false && !!conn.client?.isJoined();
3869
+ if (shouldConnect) {
3870
+ void this.connectAgent(conn, cfg).then(
3871
+ () => this.emit({ type: "rooms" }),
3872
+ (e) => this.log("warn", `local agent ${cfg.agentId} join failed: ${e.message}`)
3873
+ );
3874
+ }
3781
3875
  return cfg;
3782
3876
  }
3783
3877
  async updateLocalAgent(roomId, id, input) {
@@ -4759,6 +4853,7 @@ function createApiHandler(bridge, connection) {
4759
4853
  await bridge.start();
4760
4854
  if (method === "GET" && path === "/stream") return stream(bridge, req, res);
4761
4855
  if (method === "GET" && path === "/state") return sendJson2(res, 200, bridge.state());
4856
+ if (method === "GET" && path === "/version") return sendJson2(res, 200, { name: "@cecwxf/dsh-room", version: bridge.state().version ?? "unknown" });
4762
4857
  if (method === "GET" && path === "/directory") return sendJson2(res, 200, { rooms: await bridge.search(str(url.searchParams.get("q")), str(url.searchParams.get("tag"))) });
4763
4858
  if (method === "POST" && path === "/rooms") {
4764
4859
  const b = await readJson2(req);
@@ -4938,6 +5033,7 @@ export {
4938
5033
  AGENT_PRESETS,
4939
5034
  CollabBridge,
4940
5035
  Config,
5036
+ PLUGIN_VERSION,
4941
5037
  apply,
4942
5038
  inject,
4943
5039
  mockLocalRunner,
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,GAAG,gBAAgB,CAAC;AAGjC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,GAAG,MAAM,IAAI,CAAC;CACvJ;AACD,MAAM,WAAW,cAAc;IAC7B,gBAAgB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAAC;CAC5D;AAkCD,kEAAkE;AAClE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,GAAG,SAAS,IACnF,KAAK,eAAe,EAAE,KAAK,cAAc,mBA8IxD;AAyBD,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,GAAG,SAAS,GAAG,MAAM,IAAI,CAEvI"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,GAAG,gBAAgB,CAAC;AAGjC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,GAAG,MAAM,IAAI,CAAC;CACvJ;AACD,MAAM,WAAW,cAAc;IAC7B,gBAAgB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAAC;CAC5D;AAkCD,kEAAkE;AAClE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,GAAG,SAAS,IACnF,KAAK,eAAe,EAAE,KAAK,cAAc,mBA+IxD;AAyBD,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,GAAG,SAAS,GAAG,MAAM,IAAI,CAEvI"}
@@ -1,17 +1,10 @@
1
- /**
2
- * dsh room — DeepSeek Harness plugin for Collab rooms (sidebar: DSH Room).
3
- * Host half: tools, the `/collab` command, the /api/collab routes the Rooms UI uses,
4
- * and the room bridge. Browser half: ./client (Rooms panel, see src/client/).
5
- */
6
- import { CollabBridge } from "./plugin.js";
7
1
  import { Config, normalizeConfig } from "./config.js";
8
2
  import type { DshCollabConfig, HostContext } from "./adapter.js";
9
3
  export declare const name = "dsh-room";
10
4
  /** Only the tool registry is required; commands/webServer/agent services are optional. */
11
5
  export declare const inject: string[];
12
- export { Config, normalizeConfig, CollabBridge };
13
- export { mockLocalRunner } from "./plugin.js";
6
+ export { PLUGIN_VERSION, CollabBridge, mockLocalRunner } from "./plugin.js";
7
+ export { Config, normalizeConfig };
14
8
  export { AGENT_PRESETS } from "./local-agents.js";
15
- export type * from "./adapter.js";
16
9
  export declare function apply(ctx: HostContext, config: DshCollabConfig): void;
17
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGtD,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEjE,eAAO,MAAM,IAAI,aAAa,CAAC;AAC/B,0FAA0F;AAC1F,eAAO,MAAM,MAAM,UAAY,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,mBAAmB,cAAc,CAAC;AAElC,wBAAgB,KAAK,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,QAmB9D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGtD,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEjE,eAAO,MAAM,IAAI,aAAa,CAAC;AAC/B,0FAA0F;AAC1F,eAAO,MAAM,MAAM,UAAY,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,wBAAgB,KAAK,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,QAmB9D"}
@@ -7,6 +7,7 @@ import { ApprovalQueue } from "./approval-queue.js";
7
7
  import { publicMemberConfig, type RoomMemberConfig } from "./member-config.js";
8
8
  import type { AgentLike, DshCollabConfig, HostContext, ToolDefinition } from "./adapter.js";
9
9
  import { type RoomMeta, type WorkspaceMeta } from "./state.js";
10
+ export declare const PLUGIN_VERSION: string;
10
11
  export declare function describePayload(p: CollabPayload): string;
11
12
  /** UI/transcript view of one decrypted room payload. */
12
13
  export interface RoomMessage {
@@ -295,6 +296,8 @@ export declare class CollabBridge {
295
296
  agentSessions?: Record<string, string> | undefined;
296
297
  agentNoEffort?: string[] | undefined;
297
298
  }>;
299
+ /** Background: host join + local agent joins + optional directory publish. Never awaited by HTTP create. */
300
+ private finishCreateConnect;
298
301
  /** Join by invite. `info` carries directory metadata when joining from search results. */
299
302
  joinInvite(invite: string, info?: Partial<Pick<RoomMeta, "name" | "description" | "tags" | "public" | "workspaceId">> & {
300
303
  workspacePath?: string;
@@ -399,6 +402,7 @@ export declare class CollabBridge {
399
402
  }[]>;
400
403
  view(conn: RoomConn): RoomView;
401
404
  state(): {
405
+ version: string;
402
406
  self: string | null;
403
407
  relayUrl: string;
404
408
  lanRelayPort: number | null;
@@ -475,12 +479,15 @@ export declare class CollabBridge {
475
479
  /** Join every configured local agent as its own room member (own keypair, same transport as the host). */
476
480
  private connectAgents;
477
481
  private connectAgent;
482
+ private connectAgentInner;
478
483
  private announceAgentConfig;
479
484
  private disconnectAgents;
480
485
  private localAgent;
481
486
  presets(): import("./local-agents.js").AgentPreset[];
482
487
  addLocalAgent(roomId: string, input: Record<string, unknown> & {
483
488
  preset?: string;
489
+ }, opts?: {
490
+ connect?: boolean;
484
491
  }): Promise<LocalAgentConfig>;
485
492
  updateLocalAgent(roomId: string, id: string, input: Record<string, unknown>): Promise<LocalAgentConfig>;
486
493
  removeLocalAgent(roomId: string, id: string): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cecwxf/dsh-room",
3
- "version": "0.3.1",
3
+ "version": "0.3.3",
4
4
  "description": "DSH Room — DeepSeek Harness plugin for accountless E2EE Collab rooms (sidebar: DSH Room)",
5
5
  "type": "module",
6
6
  "license": "MIT",