@amaster.ai/dsh-a2a 0.1.33 → 0.1.35
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 +278 -7
- package/lib/admission.js +25 -0
- package/lib/bridge.js +45 -23
- package/lib/content.js +163 -30
- package/lib/executor.js +38 -3
- package/lib/inbox-api.js +117 -0
- package/lib/inbox-changes.js +116 -0
- package/lib/inbox.js +557 -43
- package/lib/index.js +33 -4
- package/lib/legacy-stream.js +20 -5
- package/lib/server.js +159 -26
- package/lib/stores/gcs.js +6 -5
- package/lib/stores/redis.js +5 -4
- package/lib/stream-connection.js +75 -0
- package/lib/task-store.js +22 -4
- package/lib/types/admission.d.ts +10 -0
- package/lib/types/bridge.d.ts +8 -0
- package/lib/types/content.d.ts +7 -1
- package/lib/types/executor.d.ts +2 -0
- package/lib/types/inbox-api.d.ts +5 -0
- package/lib/types/inbox-changes.d.ts +25 -0
- package/lib/types/inbox.d.ts +57 -1
- package/lib/types/index.d.ts +197 -142
- package/lib/types/server.d.ts +13 -1
- package/lib/types/stream-connection.d.ts +8 -0
- package/package.json +25 -15
package/lib/types/index.d.ts
CHANGED
|
@@ -16,11 +16,13 @@ import type { Context } from '@deepseek-ai/cordis';
|
|
|
16
16
|
import type { Agent } from '@deepseek-ai/dsh-agent';
|
|
17
17
|
import type { TurnEndReason } from '@deepseek-ai/dsh-session';
|
|
18
18
|
import Schema from '@deepseek-ai/schemastery';
|
|
19
|
+
export type { ExtendedAgentCardProvider } from '@a2a-js/sdk/server';
|
|
19
20
|
export type { A2aApproval, A2aApprovalCodec, A2aApprovalReply } from './approval.js';
|
|
20
21
|
export { defaultApprovalCodec } from './approval.js';
|
|
21
22
|
export type { A2aFileMaterializer } from './content.js';
|
|
22
|
-
export type { A2aInbox, A2aInboxEvent } from './inbox.js';
|
|
23
|
+
export type { A2aInbox, A2aInboxEvent, InboxPageOptions, InboxSnapshot } from './inbox.js';
|
|
23
24
|
export { INBOX_EXTENSION } from './inbox.js';
|
|
25
|
+
export type { InboxChange } from './inbox-changes.js';
|
|
24
26
|
export type { SubagentToolSource } from './translator.js';
|
|
25
27
|
/** Event emitted when one A2A user message enters the dsh inbox. */
|
|
26
28
|
export declare const A2A_MESSAGE_ADMITTED_EVENT: "a2a/message-admitted";
|
|
@@ -68,200 +70,252 @@ declare module '@deepseek-ai/cordis' {
|
|
|
68
70
|
export declare const name = "dsh-a2a";
|
|
69
71
|
/** The bridge creates and owns agents through the registry service. */
|
|
70
72
|
export declare const inject: string[];
|
|
71
|
-
export declare const Config: Schema<Schemastery.ObjectS<{
|
|
72
|
-
inbox: Schema<Schemastery.ObjectS<{
|
|
73
|
-
enabled: Schema<boolean, boolean>;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
enabled: Schema<boolean, boolean>;
|
|
88
|
-
|
|
89
|
-
|
|
73
|
+
export declare const Config: Schema<Schemastery.ObjectS<NoInfer<{
|
|
74
|
+
inbox: Schema<Schemastery.ObjectS<NoInfer<{
|
|
75
|
+
enabled: Schema<boolean, boolean, "defined">;
|
|
76
|
+
notifications: Schema<boolean, boolean, "defined">;
|
|
77
|
+
shutdown: Schema<"cancel" | "retain-pending", "cancel" | "retain-pending", "defined">;
|
|
78
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
79
|
+
enabled: Schema<boolean, boolean, "defined">;
|
|
80
|
+
notifications: Schema<boolean, boolean, "defined">;
|
|
81
|
+
shutdown: Schema<"cancel" | "retain-pending", "cancel" | "retain-pending", "defined">;
|
|
82
|
+
}>>, "plain">;
|
|
83
|
+
enabled: Schema<boolean, boolean, "defined">;
|
|
84
|
+
host: Schema<string, string, "defined">;
|
|
85
|
+
port: Schema<number, number, "defined">;
|
|
86
|
+
basePath: Schema<string, string, "defined">;
|
|
87
|
+
rest: Schema<boolean, boolean, "defined">;
|
|
88
|
+
grpc: Schema<Schemastery.ObjectS<NoInfer<{
|
|
89
|
+
enabled: Schema<boolean, boolean, "defined">;
|
|
90
|
+
port: Schema<number, number, "defined">;
|
|
91
|
+
publicUrl: Schema<string, string, "defined">;
|
|
92
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
93
|
+
enabled: Schema<boolean, boolean, "defined">;
|
|
94
|
+
port: Schema<number, number, "defined">;
|
|
95
|
+
publicUrl: Schema<string, string, "defined">;
|
|
96
|
+
}>>, "plain">;
|
|
97
|
+
pushNotifications: Schema<boolean, boolean, "defined">;
|
|
98
|
+
heartbeat: Schema<Schemastery.ObjectS<NoInfer<{
|
|
99
|
+
enabled: Schema<boolean, boolean, "defined">;
|
|
100
|
+
intervalMs: Schema<number, number, "defined">;
|
|
101
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
102
|
+
enabled: Schema<boolean, boolean, "defined">;
|
|
103
|
+
intervalMs: Schema<number, number, "defined">;
|
|
104
|
+
}>>, "plain">;
|
|
90
105
|
/** Working directory for agents spawned by A2A tasks. Must be absolute. */
|
|
91
|
-
cwd: Schema<string, string>;
|
|
106
|
+
cwd: Schema<string, string, "defined">;
|
|
92
107
|
/**
|
|
93
108
|
* Root directory for fallback or opted-in local file parts (date-layered
|
|
94
109
|
* below it). Empty = <OS temp>/dsh-a2a-uploads.
|
|
95
110
|
*/
|
|
96
|
-
uploadsDir: Schema<string, string>;
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
111
|
+
uploadsDir: Schema<string, string, "defined">;
|
|
112
|
+
urlDownloads: Schema<Schemastery.ObjectS<NoInfer<{
|
|
113
|
+
allowPrivate: Schema<boolean, boolean, "defined">;
|
|
114
|
+
allowedHosts: Schema<string[], string[], "defined">;
|
|
115
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
116
|
+
allowPrivate: Schema<boolean, boolean, "defined">;
|
|
117
|
+
allowedHosts: Schema<string[], string[], "defined">;
|
|
118
|
+
}>>, "plain">;
|
|
119
|
+
subagentTools: Schema<Schemastery.ObjectS<NoInfer<{
|
|
120
|
+
enabled: Schema<boolean, boolean, "defined">;
|
|
121
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
122
|
+
enabled: Schema<boolean, boolean, "defined">;
|
|
123
|
+
}>>, "plain">;
|
|
124
|
+
agent: Schema<Schemastery.ObjectS<NoInfer<{
|
|
125
|
+
provider: Schema<string, string, "defined">;
|
|
126
|
+
model: Schema<string, string, "defined">;
|
|
105
127
|
/**
|
|
106
128
|
* Agent preset to mount per task (empty = the deployment default when the
|
|
107
129
|
* profile composes a preset roster). The web profile keeps tools inside
|
|
108
130
|
* presets — without one the agent sees an empty tool catalog.
|
|
109
131
|
*/
|
|
110
|
-
preset: Schema<string, string>;
|
|
111
|
-
}
|
|
112
|
-
provider: Schema<string, string>;
|
|
113
|
-
model: Schema<string, string>;
|
|
132
|
+
preset: Schema<string, string, "defined">;
|
|
133
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
134
|
+
provider: Schema<string, string, "defined">;
|
|
135
|
+
model: Schema<string, string, "defined">;
|
|
114
136
|
/**
|
|
115
137
|
* Agent preset to mount per task (empty = the deployment default when the
|
|
116
138
|
* profile composes a preset roster). The web profile keeps tools inside
|
|
117
139
|
* presets — without one the agent sees an empty tool catalog.
|
|
118
140
|
*/
|
|
119
|
-
preset: Schema<string, string>;
|
|
120
|
-
}
|
|
121
|
-
card: Schema<Schemastery.ObjectS<{
|
|
122
|
-
name: Schema<string, string>;
|
|
123
|
-
description: Schema<string, string>;
|
|
124
|
-
version: Schema<string, string>;
|
|
125
|
-
publicUrl: Schema<string, string>;
|
|
126
|
-
}
|
|
127
|
-
name: Schema<string, string>;
|
|
128
|
-
description: Schema<string, string>;
|
|
129
|
-
version: Schema<string, string>;
|
|
130
|
-
publicUrl: Schema<string, string>;
|
|
131
|
-
}
|
|
141
|
+
preset: Schema<string, string, "defined">;
|
|
142
|
+
}>>, "plain">;
|
|
143
|
+
card: Schema<Schemastery.ObjectS<NoInfer<{
|
|
144
|
+
name: Schema<string, string, "defined">;
|
|
145
|
+
description: Schema<string, string, "defined">;
|
|
146
|
+
version: Schema<string, string, "defined">;
|
|
147
|
+
publicUrl: Schema<string, string, "defined">;
|
|
148
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
149
|
+
name: Schema<string, string, "defined">;
|
|
150
|
+
description: Schema<string, string, "defined">;
|
|
151
|
+
version: Schema<string, string, "defined">;
|
|
152
|
+
publicUrl: Schema<string, string, "defined">;
|
|
153
|
+
}>>, "plain">;
|
|
132
154
|
/**
|
|
133
155
|
* A2A task snapshots, including protocol history. dsh-storage separately
|
|
134
156
|
* owns the full conversation log. 'memory' loses tasks on restart.
|
|
135
157
|
*/
|
|
136
|
-
taskStore: Schema<"memory" | "filesystem" | "redis" | "gcs", "memory" | "filesystem" | "redis" | "gcs">;
|
|
137
|
-
filesystem: Schema<Schemastery.ObjectS<{
|
|
138
|
-
root: Schema<string, string>;
|
|
139
|
-
}
|
|
140
|
-
root: Schema<string, string>;
|
|
141
|
-
}
|
|
142
|
-
redis: Schema<Schemastery.ObjectS<{
|
|
143
|
-
url: Schema<string, string>;
|
|
144
|
-
keyPrefix: Schema<string, string>;
|
|
145
|
-
ttlSeconds: Schema<number, number>;
|
|
146
|
-
}
|
|
147
|
-
url: Schema<string, string>;
|
|
148
|
-
keyPrefix: Schema<string, string>;
|
|
149
|
-
ttlSeconds: Schema<number, number>;
|
|
150
|
-
}
|
|
151
|
-
gcs: Schema<Schemastery.ObjectS<{
|
|
152
|
-
bucket: Schema<string, string>;
|
|
153
|
-
prefix: Schema<string, string>;
|
|
154
|
-
keyFilename: Schema<string, string>;
|
|
155
|
-
}
|
|
156
|
-
bucket: Schema<string, string>;
|
|
157
|
-
prefix: Schema<string, string>;
|
|
158
|
-
keyFilename: Schema<string, string>;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
inbox: Schema<Schemastery.ObjectS<{
|
|
162
|
-
enabled: Schema<boolean, boolean>;
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
enabled: Schema<boolean, boolean>;
|
|
177
|
-
|
|
178
|
-
|
|
158
|
+
taskStore: Schema<"memory" | "filesystem" | "redis" | "gcs", "memory" | "filesystem" | "redis" | "gcs", "defined">;
|
|
159
|
+
filesystem: Schema<Schemastery.ObjectS<NoInfer<{
|
|
160
|
+
root: Schema<string, string, "defined">;
|
|
161
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
162
|
+
root: Schema<string, string, "defined">;
|
|
163
|
+
}>>, "plain">;
|
|
164
|
+
redis: Schema<Schemastery.ObjectS<NoInfer<{
|
|
165
|
+
url: Schema<string, string, "defined">;
|
|
166
|
+
keyPrefix: Schema<string, string, "defined">;
|
|
167
|
+
ttlSeconds: Schema<number, number, "defined">;
|
|
168
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
169
|
+
url: Schema<string, string, "defined">;
|
|
170
|
+
keyPrefix: Schema<string, string, "defined">;
|
|
171
|
+
ttlSeconds: Schema<number, number, "defined">;
|
|
172
|
+
}>>, "plain">;
|
|
173
|
+
gcs: Schema<Schemastery.ObjectS<NoInfer<{
|
|
174
|
+
bucket: Schema<string, string, "defined">;
|
|
175
|
+
prefix: Schema<string, string, "defined">;
|
|
176
|
+
keyFilename: Schema<string, string, "defined">;
|
|
177
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
178
|
+
bucket: Schema<string, string, "defined">;
|
|
179
|
+
prefix: Schema<string, string, "defined">;
|
|
180
|
+
keyFilename: Schema<string, string, "defined">;
|
|
181
|
+
}>>, "plain">;
|
|
182
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
183
|
+
inbox: Schema<Schemastery.ObjectS<NoInfer<{
|
|
184
|
+
enabled: Schema<boolean, boolean, "defined">;
|
|
185
|
+
notifications: Schema<boolean, boolean, "defined">;
|
|
186
|
+
shutdown: Schema<"cancel" | "retain-pending", "cancel" | "retain-pending", "defined">;
|
|
187
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
188
|
+
enabled: Schema<boolean, boolean, "defined">;
|
|
189
|
+
notifications: Schema<boolean, boolean, "defined">;
|
|
190
|
+
shutdown: Schema<"cancel" | "retain-pending", "cancel" | "retain-pending", "defined">;
|
|
191
|
+
}>>, "plain">;
|
|
192
|
+
enabled: Schema<boolean, boolean, "defined">;
|
|
193
|
+
host: Schema<string, string, "defined">;
|
|
194
|
+
port: Schema<number, number, "defined">;
|
|
195
|
+
basePath: Schema<string, string, "defined">;
|
|
196
|
+
rest: Schema<boolean, boolean, "defined">;
|
|
197
|
+
grpc: Schema<Schemastery.ObjectS<NoInfer<{
|
|
198
|
+
enabled: Schema<boolean, boolean, "defined">;
|
|
199
|
+
port: Schema<number, number, "defined">;
|
|
200
|
+
publicUrl: Schema<string, string, "defined">;
|
|
201
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
202
|
+
enabled: Schema<boolean, boolean, "defined">;
|
|
203
|
+
port: Schema<number, number, "defined">;
|
|
204
|
+
publicUrl: Schema<string, string, "defined">;
|
|
205
|
+
}>>, "plain">;
|
|
206
|
+
pushNotifications: Schema<boolean, boolean, "defined">;
|
|
207
|
+
heartbeat: Schema<Schemastery.ObjectS<NoInfer<{
|
|
208
|
+
enabled: Schema<boolean, boolean, "defined">;
|
|
209
|
+
intervalMs: Schema<number, number, "defined">;
|
|
210
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
211
|
+
enabled: Schema<boolean, boolean, "defined">;
|
|
212
|
+
intervalMs: Schema<number, number, "defined">;
|
|
213
|
+
}>>, "plain">;
|
|
179
214
|
/** Working directory for agents spawned by A2A tasks. Must be absolute. */
|
|
180
|
-
cwd: Schema<string, string>;
|
|
215
|
+
cwd: Schema<string, string, "defined">;
|
|
181
216
|
/**
|
|
182
217
|
* Root directory for fallback or opted-in local file parts (date-layered
|
|
183
218
|
* below it). Empty = <OS temp>/dsh-a2a-uploads.
|
|
184
219
|
*/
|
|
185
|
-
uploadsDir: Schema<string, string>;
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
220
|
+
uploadsDir: Schema<string, string, "defined">;
|
|
221
|
+
urlDownloads: Schema<Schemastery.ObjectS<NoInfer<{
|
|
222
|
+
allowPrivate: Schema<boolean, boolean, "defined">;
|
|
223
|
+
allowedHosts: Schema<string[], string[], "defined">;
|
|
224
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
225
|
+
allowPrivate: Schema<boolean, boolean, "defined">;
|
|
226
|
+
allowedHosts: Schema<string[], string[], "defined">;
|
|
227
|
+
}>>, "plain">;
|
|
228
|
+
subagentTools: Schema<Schemastery.ObjectS<NoInfer<{
|
|
229
|
+
enabled: Schema<boolean, boolean, "defined">;
|
|
230
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
231
|
+
enabled: Schema<boolean, boolean, "defined">;
|
|
232
|
+
}>>, "plain">;
|
|
233
|
+
agent: Schema<Schemastery.ObjectS<NoInfer<{
|
|
234
|
+
provider: Schema<string, string, "defined">;
|
|
235
|
+
model: Schema<string, string, "defined">;
|
|
194
236
|
/**
|
|
195
237
|
* Agent preset to mount per task (empty = the deployment default when the
|
|
196
238
|
* profile composes a preset roster). The web profile keeps tools inside
|
|
197
239
|
* presets — without one the agent sees an empty tool catalog.
|
|
198
240
|
*/
|
|
199
|
-
preset: Schema<string, string>;
|
|
200
|
-
}
|
|
201
|
-
provider: Schema<string, string>;
|
|
202
|
-
model: Schema<string, string>;
|
|
241
|
+
preset: Schema<string, string, "defined">;
|
|
242
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
243
|
+
provider: Schema<string, string, "defined">;
|
|
244
|
+
model: Schema<string, string, "defined">;
|
|
203
245
|
/**
|
|
204
246
|
* Agent preset to mount per task (empty = the deployment default when the
|
|
205
247
|
* profile composes a preset roster). The web profile keeps tools inside
|
|
206
248
|
* presets — without one the agent sees an empty tool catalog.
|
|
207
249
|
*/
|
|
208
|
-
preset: Schema<string, string>;
|
|
209
|
-
}
|
|
210
|
-
card: Schema<Schemastery.ObjectS<{
|
|
211
|
-
name: Schema<string, string>;
|
|
212
|
-
description: Schema<string, string>;
|
|
213
|
-
version: Schema<string, string>;
|
|
214
|
-
publicUrl: Schema<string, string>;
|
|
215
|
-
}
|
|
216
|
-
name: Schema<string, string>;
|
|
217
|
-
description: Schema<string, string>;
|
|
218
|
-
version: Schema<string, string>;
|
|
219
|
-
publicUrl: Schema<string, string>;
|
|
220
|
-
}
|
|
250
|
+
preset: Schema<string, string, "defined">;
|
|
251
|
+
}>>, "plain">;
|
|
252
|
+
card: Schema<Schemastery.ObjectS<NoInfer<{
|
|
253
|
+
name: Schema<string, string, "defined">;
|
|
254
|
+
description: Schema<string, string, "defined">;
|
|
255
|
+
version: Schema<string, string, "defined">;
|
|
256
|
+
publicUrl: Schema<string, string, "defined">;
|
|
257
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
258
|
+
name: Schema<string, string, "defined">;
|
|
259
|
+
description: Schema<string, string, "defined">;
|
|
260
|
+
version: Schema<string, string, "defined">;
|
|
261
|
+
publicUrl: Schema<string, string, "defined">;
|
|
262
|
+
}>>, "plain">;
|
|
221
263
|
/**
|
|
222
264
|
* A2A task snapshots, including protocol history. dsh-storage separately
|
|
223
265
|
* owns the full conversation log. 'memory' loses tasks on restart.
|
|
224
266
|
*/
|
|
225
|
-
taskStore: Schema<"memory" | "filesystem" | "redis" | "gcs", "memory" | "filesystem" | "redis" | "gcs">;
|
|
226
|
-
filesystem: Schema<Schemastery.ObjectS<{
|
|
227
|
-
root: Schema<string, string>;
|
|
228
|
-
}
|
|
229
|
-
root: Schema<string, string>;
|
|
230
|
-
}
|
|
231
|
-
redis: Schema<Schemastery.ObjectS<{
|
|
232
|
-
url: Schema<string, string>;
|
|
233
|
-
keyPrefix: Schema<string, string>;
|
|
234
|
-
ttlSeconds: Schema<number, number>;
|
|
235
|
-
}
|
|
236
|
-
url: Schema<string, string>;
|
|
237
|
-
keyPrefix: Schema<string, string>;
|
|
238
|
-
ttlSeconds: Schema<number, number>;
|
|
239
|
-
}
|
|
240
|
-
gcs: Schema<Schemastery.ObjectS<{
|
|
241
|
-
bucket: Schema<string, string>;
|
|
242
|
-
prefix: Schema<string, string>;
|
|
243
|
-
keyFilename: Schema<string, string>;
|
|
244
|
-
}
|
|
245
|
-
bucket: Schema<string, string>;
|
|
246
|
-
prefix: Schema<string, string>;
|
|
247
|
-
keyFilename: Schema<string, string>;
|
|
248
|
-
}
|
|
249
|
-
}
|
|
267
|
+
taskStore: Schema<"memory" | "filesystem" | "redis" | "gcs", "memory" | "filesystem" | "redis" | "gcs", "defined">;
|
|
268
|
+
filesystem: Schema<Schemastery.ObjectS<NoInfer<{
|
|
269
|
+
root: Schema<string, string, "defined">;
|
|
270
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
271
|
+
root: Schema<string, string, "defined">;
|
|
272
|
+
}>>, "plain">;
|
|
273
|
+
redis: Schema<Schemastery.ObjectS<NoInfer<{
|
|
274
|
+
url: Schema<string, string, "defined">;
|
|
275
|
+
keyPrefix: Schema<string, string, "defined">;
|
|
276
|
+
ttlSeconds: Schema<number, number, "defined">;
|
|
277
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
278
|
+
url: Schema<string, string, "defined">;
|
|
279
|
+
keyPrefix: Schema<string, string, "defined">;
|
|
280
|
+
ttlSeconds: Schema<number, number, "defined">;
|
|
281
|
+
}>>, "plain">;
|
|
282
|
+
gcs: Schema<Schemastery.ObjectS<NoInfer<{
|
|
283
|
+
bucket: Schema<string, string, "defined">;
|
|
284
|
+
prefix: Schema<string, string, "defined">;
|
|
285
|
+
keyFilename: Schema<string, string, "defined">;
|
|
286
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
287
|
+
bucket: Schema<string, string, "defined">;
|
|
288
|
+
prefix: Schema<string, string, "defined">;
|
|
289
|
+
keyFilename: Schema<string, string, "defined">;
|
|
290
|
+
}>>, "plain">;
|
|
291
|
+
}>>, "plain">;
|
|
250
292
|
export interface A2aPluginConfig {
|
|
251
293
|
inbox?: {
|
|
252
294
|
enabled: boolean;
|
|
295
|
+
notifications?: boolean;
|
|
253
296
|
shutdown?: 'cancel' | 'retain-pending';
|
|
254
297
|
};
|
|
255
298
|
enabled: boolean;
|
|
256
299
|
host: string;
|
|
257
300
|
port: number;
|
|
258
301
|
basePath: string;
|
|
302
|
+
rest?: boolean;
|
|
303
|
+
grpc?: {
|
|
304
|
+
enabled: boolean;
|
|
305
|
+
port: number;
|
|
306
|
+
publicUrl?: string;
|
|
307
|
+
};
|
|
259
308
|
heartbeat?: {
|
|
260
309
|
enabled: boolean;
|
|
261
310
|
intervalMs: number;
|
|
262
311
|
};
|
|
312
|
+
pushNotifications?: boolean;
|
|
263
313
|
cwd: string;
|
|
264
314
|
uploadsDir: string;
|
|
315
|
+
urlDownloads?: {
|
|
316
|
+
allowPrivate?: boolean;
|
|
317
|
+
allowedHosts: string[];
|
|
318
|
+
};
|
|
265
319
|
subagentTools: {
|
|
266
320
|
enabled: boolean;
|
|
267
321
|
};
|
|
@@ -297,4 +351,5 @@ export interface A2aTasks {
|
|
|
297
351
|
}
|
|
298
352
|
export declare function apply(ctx: Context, config: A2aPluginConfig): Promise<{
|
|
299
353
|
port: number;
|
|
354
|
+
grpcPort?: number;
|
|
300
355
|
}> | undefined;
|
package/lib/types/server.d.ts
CHANGED
|
@@ -12,8 +12,10 @@
|
|
|
12
12
|
* the server, builds the card, and optionally adds transport heartbeats.
|
|
13
13
|
*/
|
|
14
14
|
import { type AgentExtension, type Message, type Task } from '@a2a-js/sdk';
|
|
15
|
-
import { type AgentExecutor, DefaultExecutionEventBus, ServerCallContext, type TaskStore } from '@a2a-js/sdk/server';
|
|
15
|
+
import { type AgentExecutor, DefaultExecutionEventBus, type ExtendedAgentCardProvider, ServerCallContext, type TaskStore } from '@a2a-js/sdk/server';
|
|
16
|
+
import type { NativeInbox } from './inbox.js';
|
|
16
17
|
export interface A2aServerOptions {
|
|
18
|
+
inbox?: NativeInbox;
|
|
17
19
|
extensions?: AgentExtension[];
|
|
18
20
|
host: string;
|
|
19
21
|
port: number;
|
|
@@ -31,6 +33,15 @@ export interface A2aServerOptions {
|
|
|
31
33
|
enabled: boolean;
|
|
32
34
|
intervalMs: number;
|
|
33
35
|
};
|
|
36
|
+
pushNotifications?: boolean;
|
|
37
|
+
rest?: boolean;
|
|
38
|
+
grpc?: {
|
|
39
|
+
enabled: boolean;
|
|
40
|
+
port: number;
|
|
41
|
+
publicUrl?: string;
|
|
42
|
+
};
|
|
43
|
+
/** Host provider must authorize the request before returning private card data. */
|
|
44
|
+
extendedAgentCard?: ExtendedAgentCardProvider;
|
|
34
45
|
approvalGuard?: (message: Message) => undefined | (() => void);
|
|
35
46
|
beforeWorkingTaskMessage?: (message: Message, requestHeaders: unknown) => Promise<void>;
|
|
36
47
|
beforeMessage?: (message: Message, context: ServerCallContext) => Promise<undefined | (() => void)>;
|
|
@@ -41,6 +52,7 @@ export interface A2aServer {
|
|
|
41
52
|
restoreTask(task: Task, context: ServerCallContext): DefaultExecutionEventBus;
|
|
42
53
|
/** The bound port (differs from options.port when 0). */
|
|
43
54
|
port: number;
|
|
55
|
+
grpcPort?: number;
|
|
44
56
|
close(): Promise<void>;
|
|
45
57
|
}
|
|
46
58
|
export declare function startA2aServer(options: A2aServerOptions): Promise<A2aServer>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Writable } from 'node:stream';
|
|
2
|
+
import { DefaultExecutionEventBus, type DefaultRequestHandler } from '@a2a-js/sdk/server';
|
|
3
|
+
/** SDK transports do not end their pending iterators on connection close. */
|
|
4
|
+
export declare function withStreamConnection<T>(output: Writable, run: () => T): T;
|
|
5
|
+
/** A disconnected subscriber stops only its SDK queue, never the task bus. */
|
|
6
|
+
export declare function subscriptionBus(source: DefaultExecutionEventBus | undefined): DefaultExecutionEventBus | undefined;
|
|
7
|
+
/** Keep SDK parsing, serialization and errors; adapt only stream consumption. */
|
|
8
|
+
export declare function connectedRequestHandler(handler: DefaultRequestHandler): DefaultRequestHandler;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amaster.ai/dsh-a2a",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.35",
|
|
4
4
|
"description": "A2A protocol (JSON-RPC + SSE) server plugin for DeepSeek Harness: expose dsh agents as A2A agents.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -33,21 +33,23 @@
|
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@a2a-js/sdk": "^1.1.0",
|
|
36
|
-
"@deepseek-ai/schemastery": "^3.18.
|
|
36
|
+
"@deepseek-ai/schemastery": "^3.18.5",
|
|
37
37
|
"express": "^4.21.0"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
40
|
"@deepseek-ai/cordis": "^4.0.1",
|
|
41
41
|
"@deepseek-ai/dsh-agent": ">=0.2.0-rc.2 || >=0.2.1-alpha.1",
|
|
42
42
|
"@deepseek-ai/dsh-attachment": ">=0.1.5-rc.1 || >=0.1.6-alpha.1 || >=0.1.7-alpha.1 || >=0.2.0-rc.1 || >=0.2.1-rc.1",
|
|
43
|
+
"@deepseek-ai/dsh-goal": ">=0.2.0-rc.2 || >=0.2.1-alpha.1",
|
|
43
44
|
"@deepseek-ai/dsh-llm": ">=0.1.5-rc.1 || >=0.1.6-alpha.1 || >=0.1.7-alpha.1 || >=0.2.0-rc.1 || >=0.2.1-rc.1",
|
|
44
|
-
"@deepseek-ai/dsh-session": ">=0.2.
|
|
45
|
+
"@deepseek-ai/dsh-session": ">=0.2.1-rc.5",
|
|
46
|
+
"@deepseek-ai/dsh-session-persistence": ">=0.2.0-rc.2 || >=0.2.1-alpha.1",
|
|
45
47
|
"@deepseek-ai/dsh-tools": ">=0.1.5-rc.1 || >=0.1.6-alpha.1 || >=0.1.7-alpha.1 || >=0.2.0-rc.1 || >=0.2.1-rc.1",
|
|
46
48
|
"@deepseek-ai/dsh-user-approval": ">=0.1.6-alpha.2 || >=0.1.7-alpha.1 || >=0.2.0-rc.1 || >=0.2.1-rc.1",
|
|
47
49
|
"@google-cloud/storage": "^7.0.0",
|
|
48
50
|
"ioredis": "^5.0.0",
|
|
49
|
-
"@
|
|
50
|
-
"@
|
|
51
|
+
"@grpc/grpc-js": "^1.11.0",
|
|
52
|
+
"@bufbuild/protobuf": "^2.10.2"
|
|
51
53
|
},
|
|
52
54
|
"peerDependenciesMeta": {
|
|
53
55
|
"@deepseek-ai/dsh-attachment": {
|
|
@@ -67,26 +69,34 @@
|
|
|
67
69
|
},
|
|
68
70
|
"@deepseek-ai/dsh-session-persistence": {
|
|
69
71
|
"optional": true
|
|
72
|
+
},
|
|
73
|
+
"@grpc/grpc-js": {
|
|
74
|
+
"optional": true
|
|
75
|
+
},
|
|
76
|
+
"@bufbuild/protobuf": {
|
|
77
|
+
"optional": true
|
|
70
78
|
}
|
|
71
79
|
},
|
|
72
80
|
"devDependencies": {
|
|
73
81
|
"@a2a-js/sdk-v03": "npm:@a2a-js/sdk@0.3.14",
|
|
82
|
+
"@bufbuild/protobuf": "2.10.2",
|
|
74
83
|
"@deepseek-ai/cordis": "4.0.5",
|
|
75
|
-
"@deepseek-ai/dsh-agent": "0.2.1-rc.
|
|
76
|
-
"@deepseek-ai/dsh-attachment": "0.2.1-rc.
|
|
77
|
-
"@deepseek-ai/dsh-
|
|
78
|
-
"@deepseek-ai/dsh-
|
|
79
|
-
"@deepseek-ai/dsh-session
|
|
80
|
-
"@deepseek-ai/dsh-
|
|
81
|
-
"@deepseek-ai/dsh-
|
|
84
|
+
"@deepseek-ai/dsh-agent": "0.2.1-rc.5",
|
|
85
|
+
"@deepseek-ai/dsh-attachment": "0.2.1-rc.5",
|
|
86
|
+
"@deepseek-ai/dsh-goal": "0.2.1-rc.5",
|
|
87
|
+
"@deepseek-ai/dsh-llm": "0.2.1-rc.5",
|
|
88
|
+
"@deepseek-ai/dsh-session": "0.2.1-rc.5",
|
|
89
|
+
"@deepseek-ai/dsh-session-persistence": "0.2.1-rc.5",
|
|
90
|
+
"@deepseek-ai/dsh-session-projection": "0.2.1-rc.5",
|
|
91
|
+
"@deepseek-ai/dsh-tools": "0.2.1-rc.5",
|
|
92
|
+
"@deepseek-ai/dsh-user-approval": "0.2.1-rc.5",
|
|
82
93
|
"@google-cloud/storage": "^7.0.0",
|
|
94
|
+
"@grpc/grpc-js": "1.14.4",
|
|
83
95
|
"@types/express": "^4.17.21",
|
|
84
96
|
"@types/node": "^22.0.0",
|
|
85
97
|
"ioredis": "^5.0.0",
|
|
86
98
|
"typescript": "^5.6.3",
|
|
87
|
-
"vitest": "^4.1.11"
|
|
88
|
-
"@deepseek-ai/dsh-goal": "0.2.1-rc.4",
|
|
89
|
-
"@deepseek-ai/dsh-session-persistence": "0.2.1-rc.4"
|
|
99
|
+
"vitest": "^4.1.11"
|
|
90
100
|
},
|
|
91
101
|
"engines": {
|
|
92
102
|
"node": "^20.19 || ^22.12 || >=24.0"
|