ds-harness-remote 0.3.32 → 0.3.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +3 -3
  2. package/dist/client-runtime.d.ts +2 -1
  3. package/dist/client-runtime.d.ts.map +1 -1
  4. package/dist/client-runtime.js +73 -31
  5. package/dist/client-runtime.js.map +1 -1
  6. package/dist/client.d.ts +1 -0
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/client.github.js +88 -54
  9. package/dist/client.js +88 -54
  10. package/dist/client.js.map +1 -1
  11. package/dist/harness-api-bridge.d.ts.map +1 -1
  12. package/dist/harness-api-bridge.js +2 -5
  13. package/dist/harness-api-bridge.js.map +1 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +1384 -113
  16. package/dist/index.js.map +4 -4
  17. package/dist/native-rtc-helper.d.ts +4 -0
  18. package/dist/native-rtc-helper.d.ts.map +1 -0
  19. package/dist/native-rtc-helper.js +539 -0
  20. package/dist/native-rtc-helper.js.map +1 -0
  21. package/dist/rpc-router.d.ts +1 -6
  22. package/dist/rpc-router.d.ts.map +1 -1
  23. package/dist/rpc-router.js +5 -20
  24. package/dist/rpc-router.js.map +1 -1
  25. package/dist/safe-error.d.ts +8 -0
  26. package/dist/safe-error.d.ts.map +1 -0
  27. package/dist/safe-error.js +20 -0
  28. package/dist/safe-error.js.map +1 -0
  29. package/dist/server-connection.d.ts.map +1 -1
  30. package/dist/server-connection.js +43 -2
  31. package/dist/server-connection.js.map +1 -1
  32. package/dist/service.d.ts.map +1 -1
  33. package/dist/service.js +4 -2
  34. package/dist/service.js.map +1 -1
  35. package/dist/version.d.ts +1 -1
  36. package/dist/version.js +1 -1
  37. package/dist/werift-rtc.d.ts +45 -9
  38. package/dist/werift-rtc.d.ts.map +1 -1
  39. package/dist/werift-rtc.js +356 -35
  40. package/dist/werift-rtc.js.map +1 -1
  41. package/package.json +4 -1
  42. package/public.d.ts +1 -1
@@ -1,44 +1,147 @@
1
1
  /**
2
- * werift-backed Node RTC factory (webrtc-implementation-plan.md §6.2).
2
+ * Node RTC factory (webrtc-implementation-plan.md §6.2).
3
3
  *
4
- * werift is a pure-TypeScript WebRTC implementation with no native addons, so
5
- * it installs and runs on Linux x64/ARM64 without toolchains. The factory is
6
- * loaded lazily: `loadWeriftFactory` dynamically imports werift on first use,
7
- * keeping DSH startup time and memory unaffected for hosts that never receive
8
- * a WebRTC offer (or run with `forceRelay`).
4
+ * Native libwebrtc is preferred when present because its ICE behavior matches
5
+ * browser Remote Web. werift remains the pure-TypeScript fallback for systems
6
+ * without a loadable native addon. Both backends are loaded lazily so DSH
7
+ * startup remains unaffected when WebRTC is unused or `forceRelay` is enabled.
9
8
  */
9
+ import { createSocket } from 'node:dgram';
10
10
  import { networkInterfaces } from 'node:os';
11
+ import { summarizeAddress, summarizeIceCandidate } from '@dsh-remote/webrtc';
12
+ import { loadExternalNativeRtcFactory } from './native-rtc-helper.js';
11
13
  let cachedFactory;
14
+ let cachedWerift;
15
+ let cachedNativeFactory;
16
+ /**
17
+ * Node RTC factory used by the Plugin/VS Code clients and Host. Native
18
+ * libwebrtc is preferred because its ICE behavior matches browser Remote Web;
19
+ * werift remains the no-native fallback for environments that cannot load it.
20
+ */
21
+ export async function loadNodeRtcFactory(options = {}) {
22
+ const nativeFactory = isElectronRuntime()
23
+ ? await loadExternalNativeRtcFactory().catch(() => undefined)
24
+ : await loadNativeRtcFactory().catch(() => undefined);
25
+ return nativeFactory ?? await loadWeriftFactory(options);
26
+ }
12
27
  /** Load (once) a werift-backed factory, or `undefined` when it cannot be loaded. */
13
- export async function loadWeriftFactory() {
14
- if (cachedFactory !== undefined)
28
+ export async function loadWeriftFactory(options = {}) {
29
+ const cacheable = isCacheableFactoryOptions(options);
30
+ if (cacheable && cachedFactory !== undefined)
15
31
  return cachedFactory;
16
32
  try {
17
- const werift = (await import('werift'));
18
- cachedFactory = buildWeriftFactory(werift);
19
- return cachedFactory;
33
+ const werift = cachedWerift ?? (await import('werift'));
34
+ cachedWerift = werift;
35
+ const routeCandidates = options.preferredHostIpv4Candidates
36
+ ?? await detectRouteHostIpv4Candidates(options.routeTargets ?? [], options.routeProbeTimeoutMs);
37
+ const factory = buildWeriftFactory(werift, { ...options, preferredHostIpv4Candidates: routeCandidates });
38
+ if (cacheable)
39
+ cachedFactory = factory;
40
+ return factory;
41
+ }
42
+ catch {
43
+ return undefined;
44
+ }
45
+ }
46
+ async function loadNativeRtcFactory() {
47
+ if (cachedNativeFactory !== undefined)
48
+ return cachedNativeFactory;
49
+ try {
50
+ const wrtc = (await import('@roamhq/wrtc'));
51
+ const RTCPeerConnection = wrtc.RTCPeerConnection ?? wrtc.default?.RTCPeerConnection;
52
+ if (RTCPeerConnection === undefined)
53
+ return undefined;
54
+ cachedNativeFactory = buildNativeRtcFactory(RTCPeerConnection);
55
+ return cachedNativeFactory;
20
56
  }
21
57
  catch {
22
58
  return undefined;
23
59
  }
24
60
  }
61
+ function isElectronRuntime() {
62
+ const versions = process.versions;
63
+ return typeof versions.electron === 'string' || process.env.ELECTRON_RUN_AS_NODE === '1';
64
+ }
65
+ function buildNativeRtcFactory(RTCPeerConnection) {
66
+ return {
67
+ create(configuration) {
68
+ const raw = new RTCPeerConnection({ iceServers: configuration.iceServers });
69
+ return {
70
+ get connectionState() { return raw.connectionState; },
71
+ get iceConnectionState() { return raw.iceConnectionState; },
72
+ get iceGatheringState() { return raw.iceGatheringState; },
73
+ get signalingState() { return raw.signalingState; },
74
+ set onconnectionstatechange(value) { raw.onconnectionstatechange = value; },
75
+ get onconnectionstatechange() { return raw.onconnectionstatechange; },
76
+ set oniceconnectionstatechange(value) { raw.oniceconnectionstatechange = value; },
77
+ get oniceconnectionstatechange() { return raw.oniceconnectionstatechange; },
78
+ set onicegatheringstatechange(value) { raw.onicegatheringstatechange = value; },
79
+ get onicegatheringstatechange() { return raw.onicegatheringstatechange; },
80
+ set onicecandidate(value) {
81
+ raw.onicecandidate = value === null ? null : event => value({
82
+ candidate: event.candidate === null ? null : normalizeNativeCandidate(event.candidate),
83
+ });
84
+ },
85
+ get onicecandidate() { return raw.onicecandidate; },
86
+ set ondatachannel(value) {
87
+ raw.ondatachannel = value === null ? null : event => value({ channel: adaptNativeDataChannel(event.channel) });
88
+ },
89
+ get ondatachannel() { return raw.ondatachannel; },
90
+ createDataChannel(label, options) { return adaptNativeDataChannel(raw.createDataChannel(label, options)); },
91
+ createOffer() { return raw.createOffer(); },
92
+ createAnswer() { return raw.createAnswer(); },
93
+ setLocalDescription(description) { return raw.setLocalDescription(description); },
94
+ setRemoteDescription(description) { return raw.setRemoteDescription(description); },
95
+ addIceCandidate(candidate) { return raw.addIceCandidate(candidate); },
96
+ getStats() { return raw.getStats(); },
97
+ close() { raw.close(); },
98
+ };
99
+ },
100
+ };
101
+ }
25
102
  /** Synchronous factory for tests and callers that already resolved werift. */
26
- export function buildWeriftFactory(werift) {
103
+ export function buildWeriftFactory(werift, options = {}) {
27
104
  return {
28
105
  create(configuration) {
29
- const hostIpv4 = detectHostIpv4();
106
+ const hostIpv4Candidates = detectHostIpv4Candidates(options.interfaces ?? networkInterfaces(), options.preferredHostIpv4Candidates);
107
+ const allowedHostIpv4 = new Set(hostIpv4Candidates);
30
108
  const raw = new werift.RTCPeerConnection({
31
- iceServers: (configuration.iceServers ?? []),
109
+ iceServers: orderIceServersForWerift(configuration.iceServers ?? []),
110
+ iceUseIpv4: true,
32
111
  iceUseIpv6: false,
33
112
  iceUseLinkLocalAddress: false,
34
- ...(hostIpv4 === undefined ? {} : { iceInterfaceAddresses: { udp4: hostIpv4 } }),
113
+ ...(hostIpv4Candidates.length === 0
114
+ ? {}
115
+ : {
116
+ iceAdditionalHostAddresses: hostIpv4Candidates,
117
+ iceFilterCandidatePair: pair => {
118
+ const allowed = shouldUseCandidatePair(pair, allowedHostIpv4);
119
+ if (!allowed) {
120
+ configuration.onDiagnostic?.({
121
+ type: 'candidate-pair-filtered',
122
+ localCandidate: summarizeWeriftCandidate(localCandidate(pair)),
123
+ reason: 'local-host-not-allowed',
124
+ });
125
+ }
126
+ return allowed;
127
+ },
128
+ }),
35
129
  });
36
130
  let onIceCandidate = null;
37
131
  let onDataChannel = null;
38
132
  raw.onicecandidate = event => {
39
133
  if (onIceCandidate === null)
40
134
  return;
41
- onIceCandidate({ candidate: event.candidate === undefined ? null : event.candidate.toJSON() });
135
+ const candidate = event.candidate === undefined ? null : event.candidate.toJSON();
136
+ if (candidate !== null && !shouldAdvertiseCandidate(candidate, allowedHostIpv4)) {
137
+ configuration.onDiagnostic?.({
138
+ type: 'local-candidate-filtered',
139
+ candidate: summarizeIceCandidate(candidate),
140
+ reason: 'local-host-not-allowed',
141
+ });
142
+ return;
143
+ }
144
+ onIceCandidate({ candidate });
42
145
  };
43
146
  raw.ondatachannel = event => {
44
147
  if (onDataChannel === null)
@@ -106,6 +209,34 @@ function adaptDataChannel(raw) {
106
209
  close() { raw.close(); },
107
210
  };
108
211
  }
212
+ function adaptNativeDataChannel(raw) {
213
+ let onmessage = null;
214
+ return {
215
+ get label() { return raw.label; },
216
+ get ordered() { return raw.ordered; },
217
+ get readyState() { return raw.readyState; },
218
+ get bufferedAmount() { return raw.bufferedAmount; },
219
+ get binaryType() { return raw.binaryType; },
220
+ set binaryType(value) { raw.binaryType = value; },
221
+ set onopen(value) { raw.onopen = value; },
222
+ get onopen() { return raw.onopen; },
223
+ set onmessage(value) {
224
+ onmessage = value;
225
+ raw.onmessage = value === null ? null : event => value({ data: normalizeNativeMessageData(event.data) });
226
+ },
227
+ get onmessage() { return onmessage; },
228
+ set onclose(value) { raw.onclose = value; },
229
+ get onclose() { return raw.onclose; },
230
+ set onerror(value) { raw.onerror = value; },
231
+ get onerror() { return raw.onerror; },
232
+ set onbufferedamountlow(value) { raw.onbufferedamountlow = value; },
233
+ get onbufferedamountlow() { return raw.onbufferedamountlow; },
234
+ send(data) {
235
+ raw.send(typeof data === 'string' ? data : Buffer.from(data));
236
+ },
237
+ close() { raw.close(); },
238
+ };
239
+ }
109
240
  function toArrayBuffer(data) {
110
241
  if (typeof data === 'string')
111
242
  return data;
@@ -114,38 +245,228 @@ function toArrayBuffer(data) {
114
245
  // ArrayBuffer by byte offset/length is required to extract just the message.
115
246
  return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
116
247
  }
248
+ function normalizeNativeCandidate(candidate) {
249
+ if (typeof candidate.toJSON === 'function')
250
+ return candidate.toJSON();
251
+ return {
252
+ candidate: candidate.candidate,
253
+ sdpMid: candidate.sdpMid,
254
+ sdpMLineIndex: candidate.sdpMLineIndex,
255
+ usernameFragment: candidate.usernameFragment,
256
+ };
257
+ }
258
+ function normalizeNativeMessageData(data) {
259
+ if (typeof data === 'string')
260
+ return data;
261
+ if (data instanceof ArrayBuffer)
262
+ return data;
263
+ if (ArrayBuffer.isView(data)) {
264
+ return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
265
+ }
266
+ return new Uint8Array().buffer;
267
+ }
117
268
  /**
118
- * Pick the single best IPv4 host address for ICE gathering.
269
+ * Pick the safe IPv4 host addresses for ICE gathering.
119
270
  *
120
271
  * On macOS a host exposes many interfaces (WiFi `en0`, Thunderbolt `en1-4`,
121
272
  * `bridge*`, Apple Wireless Direct Link `awdl0`/`llw0`, and several VPN `utun*`
122
- * tunnels whose small MTUs drop large SCTP packets). Gathering a candidate for
123
- * every interface lets ICE select a bad path. Restrict werift to one real
124
- * interface and disable IPv6/link-local so the DataChannel rides the same
125
- * interface as the Server control connection.
273
+ * tunnels whose small MTUs drop large SCTP packets). Let werift/ICE compare
274
+ * real physical interfaces, but filter virtual and link-local Host candidates
275
+ * before they can become nominated paths.
126
276
  */
127
- function detectHostIpv4() {
128
- const preferred = [];
129
- const fallback = [];
130
- for (const [name, addresses] of Object.entries(networkInterfaces())) {
131
- if (isVirtualInterface(name))
277
+ export function detectHostIpv4Candidates(interfaces, preferredHostIpv4Candidates = []) {
278
+ const candidates = [];
279
+ const routePreference = new Map(preferredHostIpv4Candidates.map((ip, index) => [ip, 10_000 - index]));
280
+ for (const [name, addresses] of Object.entries(interfaces)) {
281
+ const interfaceScore = physicalInterfaceScore(name);
282
+ if (interfaceScore === undefined)
132
283
  continue;
133
284
  for (const address of addresses ?? []) {
134
- if (address.internal || address.family !== 'IPv4')
285
+ if (address.internal || !isIpv4Family(address.family))
135
286
  continue;
136
287
  const ip = address.address;
137
- if (ip.startsWith('127.') || ip.startsWith('169.254.') || isCgnat(ip))
288
+ if (!isUsableIpv4(ip))
138
289
  continue;
139
- if (isPrivate(ip))
140
- preferred.push(ip);
141
- else
142
- fallback.push(ip);
290
+ candidates.push({
291
+ name,
292
+ ip,
293
+ score: interfaceScore + (isPrivate(ip) ? 1_000 : 0) + (routePreference.get(ip) ?? 0),
294
+ });
143
295
  }
144
296
  }
145
- return preferred[0] ?? fallback[0];
297
+ candidates.sort((left, right) => {
298
+ const score = right.score - left.score;
299
+ if (score !== 0)
300
+ return score;
301
+ const name = left.name.localeCompare(right.name, 'en');
302
+ return name === 0 ? left.ip.localeCompare(right.ip, 'en', { numeric: true }) : name;
303
+ });
304
+ return [...new Set(candidates.map(candidate => candidate.ip))];
305
+ }
306
+ export async function detectRouteHostIpv4Candidates(targets, timeoutMs = 500) {
307
+ const detected = await Promise.all(targets.map(async (target) => {
308
+ const routeTarget = parseRouteTarget(target);
309
+ return routeTarget === undefined ? undefined : await detectRouteHostIpv4(routeTarget, timeoutMs).catch(() => undefined);
310
+ }));
311
+ return [...new Set(detected.filter((ip) => ip !== undefined && isUsableIpv4(ip)))];
312
+ }
313
+ function shouldUseCandidatePair(pair, allowedHostIpv4) {
314
+ if (allowedHostIpv4.size === 0)
315
+ return true;
316
+ const candidate = localCandidate(pair);
317
+ if (candidate === undefined)
318
+ return true;
319
+ return shouldUseLocalCandidate(candidate, allowedHostIpv4);
320
+ }
321
+ export function shouldAdvertiseCandidate(candidate, allowedHostIpv4) {
322
+ if (allowedHostIpv4.size === 0)
323
+ return true;
324
+ const parsed = parseIceCandidate(candidate);
325
+ if (parsed === undefined)
326
+ return true;
327
+ return shouldUseLocalCandidate(parsed, allowedHostIpv4);
328
+ }
329
+ function shouldUseLocalCandidate(candidate, allowedHostIpv4) {
330
+ if (candidate.type === 'host')
331
+ return candidate.host !== undefined && allowedHostIpv4.has(candidate.host);
332
+ if (candidate.type === 'srflx' && candidate.relatedAddress !== undefined) {
333
+ return allowedHostIpv4.has(candidate.relatedAddress);
334
+ }
335
+ return true;
336
+ }
337
+ function localCandidate(pair) {
338
+ try {
339
+ return pair.localCandidate;
340
+ }
341
+ catch {
342
+ return undefined;
343
+ }
344
+ }
345
+ function summarizeWeriftCandidate(candidate) {
346
+ if (candidate === undefined)
347
+ return undefined;
348
+ const address = summarizeAddress(candidate.host);
349
+ const related = summarizeAddress(candidate.relatedAddress);
350
+ return {
351
+ candidateType: candidate.type === 'host' || candidate.type === 'srflx' || candidate.type === 'prflx' || candidate.type === 'relay'
352
+ ? candidate.type
353
+ : 'unknown',
354
+ ...address,
355
+ ...(candidate.relatedAddress === undefined
356
+ ? {}
357
+ : { relatedAddressFamily: related.addressFamily, relatedAddressScope: related.addressScope }),
358
+ };
359
+ }
360
+ export function orderIceServersForWerift(iceServers) {
361
+ return iceServers.map(server => {
362
+ const urls = Array.isArray(server.urls) ? [...server.urls] : [server.urls];
363
+ urls.sort((left, right) => iceUrlScore(left) - iceUrlScore(right));
364
+ return { ...server, urls: Array.isArray(server.urls) ? urls : urls[0] ?? server.urls };
365
+ });
366
+ }
367
+ function iceUrlScore(url) {
368
+ const value = url.trim().toLowerCase();
369
+ if (value.startsWith('stun:') || value.startsWith('stuns:'))
370
+ return 0;
371
+ if (value.startsWith('turn:') && value.includes('transport=tcp'))
372
+ return 10;
373
+ if (value.startsWith('turns:') && value.includes('transport=tcp'))
374
+ return 20;
375
+ if (value.startsWith('turn:') && value.includes('transport=udp'))
376
+ return 30;
377
+ if (value.startsWith('turns:'))
378
+ return 40;
379
+ if (value.startsWith('turn:'))
380
+ return 50;
381
+ return 100;
146
382
  }
147
- function isVirtualInterface(name) {
148
- return /^(utun|ppp|bridge|awdl|llw|gif|stf|anpi|ap\d|en[1-9]\d*$)/i.test(name);
383
+ function parseRouteTarget(value) {
384
+ try {
385
+ const url = new URL(value);
386
+ const port = Number(url.port || (url.protocol === 'http:' ? '80' : '443'));
387
+ if (!Number.isSafeInteger(port) || port <= 0 || port > 65_535 || url.hostname.length === 0)
388
+ return undefined;
389
+ return { host: url.hostname, port };
390
+ }
391
+ catch {
392
+ return undefined;
393
+ }
394
+ }
395
+ async function detectRouteHostIpv4(target, timeoutMs) {
396
+ const socket = createSocket('udp4');
397
+ try {
398
+ return await new Promise((resolve, reject) => {
399
+ const timer = setTimeout(() => {
400
+ cleanup();
401
+ resolve(undefined);
402
+ }, timeoutMs);
403
+ const cleanup = () => {
404
+ clearTimeout(timer);
405
+ socket.off('error', onError);
406
+ };
407
+ const onError = (error) => {
408
+ cleanup();
409
+ reject(error);
410
+ };
411
+ socket.once('error', onError);
412
+ socket.connect(target.port, target.host, () => {
413
+ cleanup();
414
+ const address = socket.address();
415
+ resolve(typeof address === 'string' ? undefined : address.address);
416
+ });
417
+ });
418
+ }
419
+ finally {
420
+ socket.close();
421
+ }
422
+ }
423
+ function isCacheableFactoryOptions(options) {
424
+ return options.interfaces === undefined
425
+ && options.preferredHostIpv4Candidates === undefined
426
+ && options.routeTargets === undefined;
427
+ }
428
+ function parseIceCandidate(candidate) {
429
+ const value = candidate.candidate?.trim();
430
+ if (value === undefined || value.length === 0)
431
+ return undefined;
432
+ const parts = value.replace(/^candidate:/, '').split(/\s+/);
433
+ const typeIndex = parts.indexOf('typ');
434
+ if (typeIndex < 0)
435
+ return undefined;
436
+ const host = parts[4];
437
+ const type = parts[typeIndex + 1];
438
+ const relatedAddressIndex = parts.indexOf('raddr');
439
+ return {
440
+ ...(host === undefined ? {} : { host }),
441
+ ...(type === undefined ? {} : { type }),
442
+ ...(relatedAddressIndex < 0 || parts[relatedAddressIndex + 1] === undefined
443
+ ? {}
444
+ : { relatedAddress: parts[relatedAddressIndex + 1] }),
445
+ };
446
+ }
447
+ function physicalInterfaceScore(name) {
448
+ const value = name.toLowerCase();
449
+ if (/^(utun|tun|tap|ppp|bridge|awdl|llw|gif|stf|anpi|ap\d|vmnet|veth|docker|br-|vboxnet|lo)/.test(value)) {
450
+ return undefined;
451
+ }
452
+ if (/^(eth|eno|ens|enp)/.test(value))
453
+ return 500;
454
+ if (/^(en|wlan|wl|wifi|wi-fi)/.test(value))
455
+ return 450;
456
+ return 300;
457
+ }
458
+ function isIpv4Family(family) {
459
+ return family === 'IPv4' || family === 4;
460
+ }
461
+ function isUsableIpv4(ip) {
462
+ const parts = ip.split('.').map(Number);
463
+ if (parts.length !== 4 || parts.some(part => !Number.isInteger(part) || part < 0 || part > 255))
464
+ return false;
465
+ if (parts[0] === 0 || parts[0] === 127 || parts[0] >= 224)
466
+ return false;
467
+ if (parts[0] === 169 && parts[1] === 254)
468
+ return false;
469
+ return !isCgnat(ip);
149
470
  }
150
471
  function isCgnat(ip) {
151
472
  const parts = ip.split('.').map(Number);
@@ -1 +1 @@
1
- {"version":3,"file":"werift-rtc.js","sourceRoot":"","sources":["../src/werift-rtc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"werift-rtc.js","sourceRoot":"","sources":["../src/werift-rtc.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ds-harness-remote",
3
- "version": "0.3.32",
3
+ "version": "0.3.34",
4
4
  "description": "DeepSeek 远程连接",
5
5
  "repository": {
6
6
  "type": "git",
@@ -56,6 +56,9 @@
56
56
  "werift": "0.24.4",
57
57
  "zod": "^3.24.1"
58
58
  },
59
+ "optionalDependencies": {
60
+ "@roamhq/wrtc": "0.10.0"
61
+ },
59
62
  "peerDependencies": {
60
63
  "@deepseek-ai/cordis": ">=4.0.1 <5",
61
64
  "@deepseek-ai/dsh-client-connection": ">=0.1.0-rc.6 <0.2.0",
package/public.d.ts CHANGED
@@ -14,6 +14,6 @@ export interface Config {
14
14
  }
15
15
  }
16
16
 
17
- export declare const name: 'dsh-remote'
17
+ export declare const name: 'ds-harness-remote'
18
18
  export declare const Config: unknown
19
19
  export declare function apply(ctx: Context, config?: Config): void