dsh-interconnect 0.10.0 → 0.11.0
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 +20 -15
- package/assets/dsh-interconnect.md +5 -5
- package/dsh.plugin.json +2 -2
- package/lib/index.js +278 -154
- package/lib/interconnect/index.js +280 -155
- package/lib/interconnect/index.js.map +3 -3
- package/lib/skill-interconnect/index.js +1 -1
- package/lib/skill-interconnect/index.js.map +2 -2
- package/lib/tool-interconnect/index.js +70 -58
- package/lib/tool-interconnect/index.js.map +2 -2
- package/lib/types/interconnect/index.d.ts +64 -26
- package/lib/types/interconnect/index.d.ts.map +1 -1
- package/lib/types/interconnect/types.d.ts +7 -46
- package/lib/types/interconnect/types.d.ts.map +1 -1
- package/lib/types/skill-interconnect/index.d.ts.map +1 -1
- package/lib/types/tool-interconnect/index.d.ts +7 -3
- package/lib/types/tool-interconnect/index.d.ts.map +1 -1
- package/package.json +2 -5
|
@@ -1,22 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Wire contracts for `@deepseek-ai/dsh-interconnect`.
|
|
3
|
-
* The transport
|
|
4
|
-
*
|
|
5
|
-
* defines only the business payloads that ride inside that envelope.
|
|
3
|
+
* The transport is one WebSocket link per peer; this module defines only the
|
|
4
|
+
* business payloads that ride inside link frames.
|
|
6
5
|
* @module @deepseek-ai/dsh-interconnect
|
|
7
6
|
*/
|
|
8
|
-
/**
|
|
9
|
-
* Logical HTTP route prefix this service owns. Requests reach endpoints as
|
|
10
|
-
* `<baseURL>/interconnect/<endpoint>`.
|
|
11
|
-
*/
|
|
12
|
-
export declare const INTERCONNECT_CHANNEL = "/interconnect";
|
|
13
|
-
/**
|
|
14
|
-
* Credential reference holding the shared auth token. Both halves of a link
|
|
15
|
-
* must resolve the same value: inbound requests are rejected unless their
|
|
16
|
-
* `Authorization: Bearer <token>` matches this secret, and outbound requests
|
|
17
|
-
* send it. An unconfigured token fails closed on the inbound side.
|
|
18
|
-
*/
|
|
19
|
-
export declare const INTERCONNECT_TOKEN_REF = "DSH_INTERCONNECT_TOKEN";
|
|
20
7
|
/**
|
|
21
8
|
* How one inbound message reaches the target agent's inbox. Each value names an
|
|
22
9
|
* existing `Agent` method, which is exactly the pair `(inbox target, wakeup)`:
|
|
@@ -130,7 +117,7 @@ export interface PingResult {
|
|
|
130
117
|
* can reach exactly these, so the listing is the set of valid `sessionId`
|
|
131
118
|
* values rather than a directory of everything ever persisted.
|
|
132
119
|
*/
|
|
133
|
-
export interface
|
|
120
|
+
export interface InterconnectSessionSummary {
|
|
134
121
|
/** The session id to pass back as `SendPayload.sessionId`. */
|
|
135
122
|
readonly sessionId: string;
|
|
136
123
|
/**
|
|
@@ -145,7 +132,7 @@ export interface SessionSummary {
|
|
|
145
132
|
/** Business result of a `list` endpoint call. */
|
|
146
133
|
export interface ListResult {
|
|
147
134
|
/** Live sessions in registration order. */
|
|
148
|
-
readonly sessions: readonly
|
|
135
|
+
readonly sessions: readonly InterconnectSessionSummary[];
|
|
149
136
|
/** Echoed receiver instance id (diagnostic; never trusted for routing). */
|
|
150
137
|
readonly instance: string;
|
|
151
138
|
}
|
|
@@ -173,23 +160,6 @@ export interface SendRequest {
|
|
|
173
160
|
/** Ask the receiver to wake a persisted session; see {@link SendPayload.resume}. */
|
|
174
161
|
readonly resume?: boolean;
|
|
175
162
|
}
|
|
176
|
-
/**
|
|
177
|
-
* Business payload for the `reply` endpoint: deliver one text message back to
|
|
178
|
-
* the peer that a given local session most recently received a message from.
|
|
179
|
-
* `sessionId` names the LOCAL session; the outbound target is the sender this
|
|
180
|
-
* session recorded, so the caller does not need to know the peer's origin or
|
|
181
|
-
* session id again.
|
|
182
|
-
*/
|
|
183
|
-
export interface ReplyPayload {
|
|
184
|
-
/** Local session id that received the message being replied to. */
|
|
185
|
-
readonly sessionId: string;
|
|
186
|
-
/** Message text delivered back to the recorded sender's session. */
|
|
187
|
-
readonly text: string;
|
|
188
|
-
/** Per-message delivery override forwarded to the recalled sender. */
|
|
189
|
-
readonly delivery?: DeliveryMode;
|
|
190
|
-
/** Ask the recalled sender's receiver to wake a persisted session. */
|
|
191
|
-
readonly resume?: boolean;
|
|
192
|
-
}
|
|
193
163
|
/** Outbound reply request: which local session is replying, plus the text. */
|
|
194
164
|
export interface ReplyRequest {
|
|
195
165
|
/** Local session id that received the message being replied to. */
|
|
@@ -284,9 +254,9 @@ export type QueryMessage = {
|
|
|
284
254
|
};
|
|
285
255
|
/**
|
|
286
256
|
* The message-shaped business payload carried by a `msg` link frame. `kind`
|
|
287
|
-
*
|
|
288
|
-
*
|
|
289
|
-
*
|
|
257
|
+
* is always `send`: a reply originates locally (the tool calls `reply()`,
|
|
258
|
+
* which sends a regular `send` frame to the recalled sender), so the wire
|
|
259
|
+
* carries no `reply` variant to relay.
|
|
290
260
|
*/
|
|
291
261
|
export type LinkMessage = {
|
|
292
262
|
readonly kind: 'send';
|
|
@@ -296,15 +266,6 @@ export type LinkMessage = {
|
|
|
296
266
|
readonly sender?: SenderIdentity;
|
|
297
267
|
readonly delivery?: DeliveryMode;
|
|
298
268
|
readonly resume?: boolean;
|
|
299
|
-
} | {
|
|
300
|
-
readonly kind: 'reply';
|
|
301
|
-
/** LOCAL session id that received the message being replied to. */
|
|
302
|
-
readonly sessionId: string;
|
|
303
|
-
readonly text: string;
|
|
304
|
-
/** Attribution for the replying instance, so the peer can reply back. */
|
|
305
|
-
readonly sender?: SenderIdentity;
|
|
306
|
-
readonly delivery?: DeliveryMode;
|
|
307
|
-
readonly resume?: boolean;
|
|
308
269
|
};
|
|
309
270
|
/**
|
|
310
271
|
* Handle to one established outbound WebSocket peer link. `close` tears the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/interconnect/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/interconnect/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/skill-interconnect/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/skill-interconnect/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AA+C7C,0BAA0B;AAC1B,eAAO,MAAM,IAAI,uBAAuB,CAAA;AACxC,mDAAmD;AACnD,eAAO,MAAM,MAAM,UAA6B,CAAA;AAEhD,qEAAqE;AACrE,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAExC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Model-facing tools for cross-instance message handoff: `interconnect_send`
|
|
3
|
-
* delivers one text message to a live session on a peer DSH instance,
|
|
4
|
-
* `interconnect_ping` probes a peer's liveness and identity
|
|
3
|
+
* delivers one text message to a live session on a peer DSH instance,
|
|
4
|
+
* `interconnect_ping` probes a peer's liveness and identity, `interconnect_list`
|
|
5
|
+
* discovers a peer's live sessions, and `interconnect_reply` answers the sender
|
|
6
|
+
* a local session last heard from.
|
|
5
7
|
*
|
|
6
8
|
* The tools consume the host-plane `interconnect` service and publish nothing
|
|
7
9
|
* themselves, so this row sits as an ordinary tool plugin in a preset while
|
|
@@ -10,10 +12,12 @@
|
|
|
10
12
|
* @module @deepseek-ai/dsh-tool-interconnect
|
|
11
13
|
*/
|
|
12
14
|
import { Context } from '@deepseek-ai/cordis';
|
|
15
|
+
/** Cordis plugin name. */
|
|
16
|
+
export declare const name = "tool-interconnect";
|
|
13
17
|
/** Services required before the tools can register. */
|
|
14
18
|
export declare const inject: string[];
|
|
15
19
|
/**
|
|
16
|
-
* Register the
|
|
20
|
+
* Register the four tool surfaces. Registration is idempotent per fiber; the
|
|
17
21
|
* tools unregister with the owning fiber.
|
|
18
22
|
* @param ctx - connection context carrying the interconnect service and the tool registry.
|
|
19
23
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tool-interconnect/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tool-interconnect/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAK7C,0BAA0B;AAC1B,eAAO,MAAM,IAAI,sBAAsB,CAAA;AAEvC,uDAAuD;AACvD,eAAO,MAAM,MAAM,UAA4B,CAAA;AA6C/C;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAmRxC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-interconnect",
|
|
3
3
|
"description": "Cross-instance message/event handoff plugins for DeepSeek Harness (DSH): interconnect service + model-facing tools + companion skill",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.11.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "lib/index.js",
|
|
@@ -51,12 +51,10 @@
|
|
|
51
51
|
"peerDependencies": {
|
|
52
52
|
"@deepseek-ai/cordis": "*",
|
|
53
53
|
"@deepseek-ai/dsh-agent": "*",
|
|
54
|
-
"@deepseek-ai/dsh-api-remotes": "*",
|
|
55
54
|
"@deepseek-ai/dsh-credentials": "*",
|
|
56
55
|
"@deepseek-ai/dsh-llm": "*",
|
|
57
56
|
"@deepseek-ai/dsh-session": "*",
|
|
58
57
|
"@deepseek-ai/dsh-subagent": "*",
|
|
59
|
-
"@deepseek-ai/dsh-host-apiproxy": "*",
|
|
60
58
|
"@deepseek-ai/dsh-host-webserver": "*",
|
|
61
59
|
"@deepseek-ai/dsh-tools": "*",
|
|
62
60
|
"@deepseek-ai/dsh-skill": "*",
|
|
@@ -66,14 +64,13 @@
|
|
|
66
64
|
},
|
|
67
65
|
"devDependencies": {
|
|
68
66
|
"@deepseek-ai/cordis": "link:../dsh/vendor/cordis",
|
|
67
|
+
"@deepseek-ai/cordis-plugin-loader": "link:../dsh/vendor/loader",
|
|
69
68
|
"@deepseek-ai/schemastery": "link:../dsh/vendor/schemastery",
|
|
70
69
|
"@deepseek-ai/dsh-agent": "link:../dsh/packages/core/agent",
|
|
71
|
-
"@deepseek-ai/dsh-api-remotes": "link:../dsh/packages/api/remotes",
|
|
72
70
|
"@deepseek-ai/dsh-credentials": "link:../dsh/packages/credentials/credentials",
|
|
73
71
|
"@deepseek-ai/dsh-llm": "link:../dsh/packages/llm/llm",
|
|
74
72
|
"@deepseek-ai/dsh-session": "link:../dsh/packages/core/session",
|
|
75
73
|
"@deepseek-ai/dsh-subagent": "link:../dsh/packages/subagent/subagent",
|
|
76
|
-
"@deepseek-ai/dsh-host-apiproxy": "link:../dsh/packages/host/apiproxy",
|
|
77
74
|
"@deepseek-ai/dsh-host-webserver": "link:../dsh/packages/host/webserver",
|
|
78
75
|
"@deepseek-ai/dsh-tools": "link:../dsh/packages/core/tools",
|
|
79
76
|
"@deepseek-ai/dsh-skill": "link:../dsh/packages/skill/skill",
|