@dainprotocol/service-sdk 2.0.66 → 2.0.68

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 (101) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.js +8 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/service/index.d.ts +4 -2
  5. package/dist/service/index.js +8 -1
  6. package/dist/service/index.js.map +1 -1
  7. package/dist/service/nodeService.d.ts +4 -2
  8. package/dist/service/nodeService.js +8 -1
  9. package/dist/service/nodeService.js.map +1 -1
  10. package/dist/service/oauth2Manager.js +3 -2
  11. package/dist/service/oauth2Manager.js.map +1 -1
  12. package/dist/service/server.js +84 -9
  13. package/dist/service/server.js.map +1 -1
  14. package/dist/service/service.js +15 -2
  15. package/dist/service/service.js.map +1 -1
  16. package/dist/service/skills.d.ts +106 -0
  17. package/dist/service/skills.js +156 -0
  18. package/dist/service/skills.js.map +1 -0
  19. package/dist/service/trigger-forwarder.d.ts +47 -0
  20. package/dist/service/trigger-forwarder.js +91 -0
  21. package/dist/service/trigger-forwarder.js.map +1 -0
  22. package/dist/service/types.d.ts +4 -0
  23. package/dist/service/webhooks.d.ts +109 -10
  24. package/dist/service/webhooks.js +184 -30
  25. package/dist/service/webhooks.js.map +1 -1
  26. package/package.json +1 -1
  27. package/dist/__tests__/api-sdk.test.d.ts +0 -1
  28. package/dist/__tests__/api-sdk.test.js +0 -102
  29. package/dist/__tests__/api-sdk.test.js.map +0 -1
  30. package/dist/__tests__/auth.test.d.ts +0 -1
  31. package/dist/__tests__/auth.test.js +0 -110
  32. package/dist/__tests__/auth.test.js.map +0 -1
  33. package/dist/__tests__/citations-plugin.test.d.ts +0 -1
  34. package/dist/__tests__/citations-plugin.test.js +0 -491
  35. package/dist/__tests__/citations-plugin.test.js.map +0 -1
  36. package/dist/__tests__/context-behavior.test.d.ts +0 -1
  37. package/dist/__tests__/context-behavior.test.js +0 -290
  38. package/dist/__tests__/context-behavior.test.js.map +0 -1
  39. package/dist/__tests__/convertToVercelTool.test.d.ts +0 -1
  40. package/dist/__tests__/convertToVercelTool.test.js +0 -527
  41. package/dist/__tests__/convertToVercelTool.test.js.map +0 -1
  42. package/dist/__tests__/core.test.d.ts +0 -1
  43. package/dist/__tests__/core.test.js +0 -154
  44. package/dist/__tests__/core.test.js.map +0 -1
  45. package/dist/__tests__/crypto-plugin.test.d.ts +0 -1
  46. package/dist/__tests__/crypto-plugin.test.js +0 -694
  47. package/dist/__tests__/crypto-plugin.test.js.map +0 -1
  48. package/dist/__tests__/humanActions.test.d.ts +0 -1
  49. package/dist/__tests__/humanActions.test.js +0 -221
  50. package/dist/__tests__/humanActions.test.js.map +0 -1
  51. package/dist/__tests__/integration.test.d.ts +0 -1
  52. package/dist/__tests__/integration.test.js +0 -1573
  53. package/dist/__tests__/integration.test.js.map +0 -1
  54. package/dist/__tests__/mealMeSchemas.test.d.ts +0 -576
  55. package/dist/__tests__/mealMeSchemas.test.js +0 -627
  56. package/dist/__tests__/mealMeSchemas.test.js.map +0 -1
  57. package/dist/__tests__/oauth-context-simple.test.d.ts +0 -1
  58. package/dist/__tests__/oauth-context-simple.test.js +0 -90
  59. package/dist/__tests__/oauth-context-simple.test.js.map +0 -1
  60. package/dist/__tests__/oauth-context.test.d.ts +0 -1
  61. package/dist/__tests__/oauth-context.test.js +0 -282
  62. package/dist/__tests__/oauth-context.test.js.map +0 -1
  63. package/dist/__tests__/oauth.test.d.ts +0 -1
  64. package/dist/__tests__/oauth.test.js +0 -378
  65. package/dist/__tests__/oauth.test.js.map +0 -1
  66. package/dist/__tests__/oauth2-client-context.test.d.ts +0 -1
  67. package/dist/__tests__/oauth2-client-context.test.js +0 -165
  68. package/dist/__tests__/oauth2-client-context.test.js.map +0 -1
  69. package/dist/__tests__/oauth2-client-integration.test.d.ts +0 -1
  70. package/dist/__tests__/oauth2-client-integration.test.js +0 -182
  71. package/dist/__tests__/oauth2-client-integration.test.js.map +0 -1
  72. package/dist/__tests__/oauth2-client-simple.test.d.ts +0 -1
  73. package/dist/__tests__/oauth2-client-simple.test.js +0 -144
  74. package/dist/__tests__/oauth2-client-simple.test.js.map +0 -1
  75. package/dist/__tests__/oauth2-context.test.d.ts +0 -1
  76. package/dist/__tests__/oauth2-context.test.js +0 -201
  77. package/dist/__tests__/oauth2-context.test.js.map +0 -1
  78. package/dist/__tests__/oauth2-datasource.test.d.ts +0 -1
  79. package/dist/__tests__/oauth2-datasource.test.js +0 -251
  80. package/dist/__tests__/oauth2-datasource.test.js.map +0 -1
  81. package/dist/__tests__/plugin.test.d.ts +0 -1
  82. package/dist/__tests__/plugin.test.js +0 -900
  83. package/dist/__tests__/plugin.test.js.map +0 -1
  84. package/dist/__tests__/processes.test.d.ts +0 -1
  85. package/dist/__tests__/processes.test.js +0 -239
  86. package/dist/__tests__/processes.test.js.map +0 -1
  87. package/dist/__tests__/streaming.test.d.ts +0 -1
  88. package/dist/__tests__/streaming.test.js +0 -592
  89. package/dist/__tests__/streaming.test.js.map +0 -1
  90. package/dist/__tests__/testEnums.d.ts +0 -1
  91. package/dist/__tests__/testEnums.js +0 -73
  92. package/dist/__tests__/testEnums.js.map +0 -1
  93. package/dist/__tests__/testOptionals.test.d.ts +0 -1
  94. package/dist/__tests__/testOptionals.test.js +0 -83
  95. package/dist/__tests__/testOptionals.test.js.map +0 -1
  96. package/dist/__tests__/types.test.d.ts +0 -1
  97. package/dist/__tests__/types.test.js +0 -98
  98. package/dist/__tests__/types.test.js.map +0 -1
  99. package/dist/service/zod-json-converter.d.ts +0 -14
  100. package/dist/service/zod-json-converter.js +0 -203
  101. package/dist/service/zod-json-converter.js.map +0 -1
@@ -1,592 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- const client_auth_1 = require("@/client/client-auth");
5
- const client_1 = require("@/client/client");
6
- const ed25519_1 = require("@noble/curves/ed25519");
7
- const bs58_1 = tslib_1.__importDefault(require("bs58"));
8
- const nodeService_1 = require("@/service/nodeService");
9
- const core_1 = require("@/service/core");
10
- const zod_1 = require("zod");
11
- describe("DAIN Framework Streaming", () => {
12
- const privateKey = ed25519_1.ed25519.utils.randomPrivateKey();
13
- const publicKey = ed25519_1.ed25519.getPublicKey(privateKey);
14
- const address = bs58_1.default.encode(publicKey);
15
- const clientPrivateKey = ed25519_1.ed25519.utils.randomPrivateKey();
16
- const agentAuth = new client_auth_1.DainClientAuth({
17
- privateKeyBase58: bs58_1.default.encode(clientPrivateKey),
18
- agentId: "agent-12",
19
- orgId: "org-12",
20
- });
21
- // Initialize the connection to the DAIN service
22
- const dainConnection = new client_1.DainServiceConnection("http://localhost:4483", agentAuth);
23
- // Create a test tool with streaming updates
24
- const streamingTool = (0, core_1.createTool)({
25
- id: "streaming-test",
26
- name: "Streaming Test Tool",
27
- description: "Tool to test streaming functionality",
28
- input: zod_1.z.object({ message: zod_1.z.string() }),
29
- output: zod_1.z.object({ result: zod_1.z.string() }),
30
- handler: async ({ message }, agentInfo, context) => {
31
- console.log("Starting tool handler execution");
32
- // Send initial loading state
33
- if (context.updateUI) {
34
- console.log("Sending initial UI update");
35
- await context.updateUI({ ui: { type: "loading", message: "Starting..." } });
36
- console.log("Initial UI update sent");
37
- }
38
- // Add a delay - this is crucial for the test
39
- console.log("Starting first delay");
40
- await new Promise(resolve => setTimeout(resolve, 1000));
41
- console.log("First delay completed");
42
- // Create a process
43
- console.log("Creating process");
44
- const processId = await context.app.processes.createProcess(agentInfo, "one-time", "Streaming Test", `Testing streaming with: ${message}`);
45
- console.log("Process created with ID:", processId);
46
- // Notify about process creation
47
- if (context.addProcess) {
48
- console.log("Sending process update");
49
- await context.addProcess(processId);
50
- console.log("Process update sent");
51
- }
52
- // Add another delay
53
- console.log("Starting second delay");
54
- await new Promise(resolve => setTimeout(resolve, 1000));
55
- console.log("Second delay completed");
56
- // Send progress update
57
- if (context.updateUI) {
58
- console.log("Sending progress UI update");
59
- await context.updateUI({ ui: { type: "progress", message: "Processing..." } });
60
- console.log("Progress UI update sent");
61
- }
62
- // Final delay before result
63
- console.log("Starting final delay");
64
- await new Promise(resolve => setTimeout(resolve, 1000));
65
- console.log("Final delay completed");
66
- console.log("Returning final result");
67
- return {
68
- text: `Streaming test completed: ${message}`,
69
- data: { result: `completed-${message}` },
70
- ui: null,
71
- };
72
- },
73
- });
74
- // Add a streaming tool that accepts optional parameters
75
- const optionalStreamingTool = (0, core_1.createTool)({
76
- id: "optional-streaming-test",
77
- name: "Optional Streaming Test Tool",
78
- description: "Tool to test streaming with optional parameters",
79
- input: zod_1.z.object({
80
- message: zod_1.z.string().optional(),
81
- delay: zod_1.z.number().optional()
82
- }),
83
- output: zod_1.z.object({ result: zod_1.z.string() }),
84
- handler: async (params, agentInfo, context) => {
85
- console.log("Starting optional streaming tool with params:", params);
86
- // Get parameters or use defaults
87
- const message = params?.message || "Default message";
88
- const delay = params?.delay || 500; // Default delay
89
- // Send initial loading state
90
- if (context.updateUI) {
91
- console.log("Sending initial UI update");
92
- await context.updateUI({ ui: { type: "loading", message: "Starting optional streaming..." } });
93
- }
94
- // Add a delay
95
- console.log(`Delaying for ${delay}ms`);
96
- await new Promise(resolve => setTimeout(resolve, delay));
97
- // Send progress update
98
- if (context.updateUI) {
99
- console.log("Sending progress UI update");
100
- await context.updateUI({ ui: { type: "progress", message: "Processing with optional params..." } });
101
- }
102
- // Final delay before result
103
- await new Promise(resolve => setTimeout(resolve, delay / 2));
104
- console.log("Returning final result");
105
- return {
106
- text: `Optional streaming completed: ${message}`,
107
- data: { result: `completed-${message}-with-delay-${delay}` },
108
- ui: null,
109
- };
110
- },
111
- });
112
- // Create an error-throwing tool for testing
113
- const errorTool = (0, core_1.createTool)({
114
- id: "error-tool",
115
- name: "Error Tool",
116
- description: "Tool that throws errors",
117
- input: zod_1.z.object({ shouldThrow: zod_1.z.boolean() }),
118
- output: zod_1.z.object({ result: zod_1.z.string() }),
119
- handler: async ({ shouldThrow }) => {
120
- if (shouldThrow) {
121
- throw new Error("Intentional test error");
122
- }
123
- return {
124
- text: "No error occurred",
125
- data: { result: "success" },
126
- ui: null
127
- };
128
- },
129
- });
130
- const dainService = (0, nodeService_1.defineDAINService)({
131
- metadata: {
132
- title: "Streaming Test Service",
133
- description: "A DAIN service for testing streaming",
134
- version: "1.0.0",
135
- author: "Test Author",
136
- tags: ["streaming", "test"],
137
- },
138
- identity: {
139
- publicKey: bs58_1.default.encode(publicKey),
140
- agentId: "streaming-agent",
141
- orgId: "streaming-org",
142
- privateKey: bs58_1.default.encode(privateKey),
143
- },
144
- tools: [streamingTool, optionalStreamingTool, errorTool],
145
- });
146
- let server;
147
- beforeAll(async () => {
148
- server = await dainService.startNode({ port: 4483 });
149
- });
150
- afterAll(async () => {
151
- // Use a more robust approach to shutting down with proper cleanup
152
- if (server) {
153
- // Set a timeout for shutdown to complete
154
- const timeout = setTimeout(() => {
155
- console.warn('Server shutdown timed out, process may still have open handles');
156
- }, 5000);
157
- try {
158
- await server.shutdown();
159
- }
160
- catch (err) {
161
- console.error('Error shutting down server:', err);
162
- }
163
- finally {
164
- clearTimeout(timeout);
165
- server = null;
166
- // Wait a moment to allow any lingering connections to close
167
- await new Promise(resolve => setTimeout(resolve, 500));
168
- }
169
- }
170
- });
171
- it("Sends SSE events immediately rather than buffering", async () => {
172
- const events = [];
173
- let lastTimestamp = Date.now();
174
- // Add a longer delay before starting to ensure clean timing
175
- await new Promise(resolve => setTimeout(resolve, 1000));
176
- console.log("=".repeat(80));
177
- console.log("STARTING STREAMING TEST", new Date().toISOString());
178
- console.log("=".repeat(80));
179
- const startTime = Date.now();
180
- lastTimestamp = startTime;
181
- console.log("Starting test at:", new Date(lastTimestamp).toISOString());
182
- const resultPromise = dainConnection.callTool("streaming-test", { message: "test message" }, {
183
- onUIUpdate: (update) => {
184
- const now = Date.now();
185
- const delay = now - lastTimestamp;
186
- const elapsedFromStart = now - startTime;
187
- console.log(`[${elapsedFromStart}ms] UI Update received:`, JSON.stringify(update.ui));
188
- console.log(`Delay since last event: ${delay}ms`);
189
- events.push({ type: 'ui', timestamp: now, delay, data: update.ui });
190
- lastTimestamp = now;
191
- },
192
- onProcess: (processId) => {
193
- const now = Date.now();
194
- const delay = now - lastTimestamp;
195
- const elapsedFromStart = now - startTime;
196
- console.log(`[${elapsedFromStart}ms] Process Update received:`, processId);
197
- console.log(`Delay since last event: ${delay}ms`);
198
- events.push({ type: 'process', timestamp: now, delay, data: processId });
199
- lastTimestamp = now;
200
- }
201
- });
202
- // Wait for result
203
- const result = await resultPromise;
204
- const now = Date.now();
205
- const finalDelay = now - lastTimestamp;
206
- const totalTime = now - startTime;
207
- console.log(`[${totalTime}ms] Final result received, delay: ${finalDelay}ms`);
208
- events.push({ type: 'result', timestamp: now, delay: finalDelay, data: result });
209
- // Log all events with timing info
210
- console.log("\nDETAILED EVENT TIMELINE:");
211
- console.log("=".repeat(80));
212
- events.forEach((event, i) => {
213
- const timeFromStart = event.timestamp - startTime;
214
- const eventDate = new Date(event.timestamp).toISOString();
215
- console.log(`Event ${i + 1}: ${event.type}`);
216
- console.log(` Time: ${eventDate} (${timeFromStart}ms from start)`);
217
- console.log(` Delay since previous: ${event.delay}ms`);
218
- if (event.data) {
219
- if (typeof event.data === 'object') {
220
- console.log(` Data: ${JSON.stringify(event.data)}`);
221
- }
222
- else {
223
- console.log(` Data: ${event.data}`);
224
- }
225
- }
226
- console.log("-".repeat(40));
227
- });
228
- // Verify we got all expected events
229
- expect(events).toHaveLength(4);
230
- // Check that events are received in the correct order
231
- expect(events[0].type).toBe('ui');
232
- expect(events[1].type).toBe('process');
233
- expect(events[2].type).toBe('ui');
234
- expect(events[3].type).toBe('result');
235
- // Adjust expectations for the timing
236
- // First UI update might take longer due to connection setup
237
- expect(events[0].timestamp - startTime).toBeLessThan(10000);
238
- // For the delays between events, we need to be more lenient
239
- // as network conditions can vary, but there should be SOME delay
240
- expect(events[1].delay).toBeGreaterThan(10);
241
- expect(events[2].delay).toBeGreaterThan(10);
242
- expect(events[3].delay).toBeGreaterThan(10);
243
- // Verify spacing between events - they should align roughly with
244
- // our 1000ms delays in the handler
245
- const timeBetweenFirstAndProcess = events[1].timestamp - events[0].timestamp;
246
- const timeBetweenProcessAndSecondUI = events[2].timestamp - events[1].timestamp;
247
- const timeBetweenSecondUIAndResult = events[3].timestamp - events[2].timestamp;
248
- console.log("\nTIMES BETWEEN EVENTS:");
249
- console.log(`First UI to Process: ${timeBetweenFirstAndProcess}ms`);
250
- console.log(`Process to Second UI: ${timeBetweenProcessAndSecondUI}ms`);
251
- console.log(`Second UI to Result: ${timeBetweenSecondUIAndResult}ms`);
252
- // These should each be at least 500ms given our 1000ms delays
253
- // but we allow for some variance in timing
254
- expect(timeBetweenFirstAndProcess).toBeGreaterThan(100);
255
- expect(timeBetweenProcessAndSecondUI).toBeGreaterThan(100);
256
- expect(timeBetweenSecondUIAndResult).toBeGreaterThan(100);
257
- });
258
- it("Maintains backwards compatibility with non-streaming clients", async () => {
259
- const result = await dainConnection.callTool("streaming-test", {
260
- message: "test message"
261
- });
262
- expect(result).toEqual({
263
- text: "Streaming test completed: test message",
264
- data: { result: "completed-test message" },
265
- ui: null,
266
- });
267
- });
268
- it("Can stream UI updates with callToolAndGetNewContext", async () => {
269
- const events = [];
270
- let lastTimestamp = Date.now();
271
- // Add a longer delay before starting to ensure clean timing
272
- await new Promise(resolve => setTimeout(resolve, 1000));
273
- console.log("=".repeat(80));
274
- console.log("STARTING CONTEXT STREAMING TEST", new Date().toISOString());
275
- console.log("=".repeat(80));
276
- const startTime = Date.now();
277
- lastTimestamp = startTime;
278
- console.log("Starting context test at:", new Date(lastTimestamp).toISOString());
279
- const resultPromise = dainConnection.callToolAndGetNewContext("streaming-test", { message: "test message" }, {
280
- onUIUpdate: (update) => {
281
- const now = Date.now();
282
- const delay = now - lastTimestamp;
283
- const elapsedFromStart = now - startTime;
284
- console.log(`[${elapsedFromStart}ms] Context UI Update received:`, JSON.stringify(update.ui));
285
- console.log(`Delay since last event: ${delay}ms`);
286
- events.push({ type: 'ui', timestamp: now, delay, data: update.ui });
287
- lastTimestamp = now;
288
- },
289
- onProcess: (processId) => {
290
- const now = Date.now();
291
- const delay = now - lastTimestamp;
292
- const elapsedFromStart = now - startTime;
293
- console.log(`[${elapsedFromStart}ms] Context Process Update received:`, processId);
294
- console.log(`Delay since last event: ${delay}ms`);
295
- events.push({ type: 'process', timestamp: now, delay, data: processId });
296
- lastTimestamp = now;
297
- }
298
- });
299
- // Wait for result
300
- const result = await resultPromise;
301
- const now = Date.now();
302
- const finalDelay = now - lastTimestamp;
303
- const totalTime = now - startTime;
304
- console.log(`[${totalTime}ms] Context final result received, delay: ${finalDelay}ms`);
305
- events.push({ type: 'result', timestamp: now, delay: finalDelay, data: result });
306
- // Log all events with timing info
307
- console.log("\nDETAILED CONTEXT EVENT TIMELINE:");
308
- console.log("=".repeat(80));
309
- events.forEach((event, i) => {
310
- const timeFromStart = event.timestamp - startTime;
311
- const eventDate = new Date(event.timestamp).toISOString();
312
- console.log(`Event ${i + 1}: ${event.type}`);
313
- console.log(` Time: ${eventDate} (${timeFromStart}ms from start)`);
314
- console.log(` Delay since previous: ${event.delay}ms`);
315
- if (event.data) {
316
- if (typeof event.data === 'object') {
317
- console.log(` Data: ${JSON.stringify(event.data)}`);
318
- }
319
- else {
320
- console.log(` Data: ${event.data}`);
321
- }
322
- }
323
- console.log("-".repeat(40));
324
- });
325
- // Verify we got at least the UI updates
326
- expect(events.length).toBeGreaterThan(1);
327
- // Check if we have UI updates
328
- const uiEvents = events.filter(e => e.type === 'ui');
329
- expect(uiEvents.length).toBeGreaterThan(0);
330
- // Check the first UI event
331
- if (uiEvents.length >= 1) {
332
- expect(uiEvents[0].data).toEqual({ type: "loading", message: "Starting..." });
333
- }
334
- // Check the second UI event if it exists
335
- if (uiEvents.length >= 2) {
336
- expect(uiEvents[1].data).toEqual({ type: "progress", message: "Processing..." });
337
- }
338
- // Verify final result
339
- const resultEvent = events.find(e => e.type === 'result');
340
- expect(resultEvent).toBeDefined();
341
- expect(resultEvent.data.toolResult).toEqual({
342
- text: "Streaming test completed: test message",
343
- data: { result: "completed-test message" },
344
- ui: null,
345
- });
346
- // If we have more than one event, check that there are delays between them
347
- if (events.length > 1) {
348
- for (let i = 1; i < events.length; i++) {
349
- expect(events[i].delay).toBeGreaterThan(10);
350
- }
351
- // Calculate time between events
352
- if (events.length >= 3) {
353
- console.log("\nTIMES BETWEEN CONTEXT EVENTS:");
354
- for (let i = 1; i < events.length; i++) {
355
- const timeFromPrevious = events[i].timestamp - events[i - 1].timestamp;
356
- console.log(`From ${events[i - 1].type} to ${events[i].type}: ${timeFromPrevious}ms`);
357
- }
358
- }
359
- }
360
- });
361
- // Add test for streaming with empty parameters
362
- it("Can stream updates with empty parameter calls", async () => {
363
- const events = [];
364
- let lastTimestamp = Date.now();
365
- // Add a short delay before starting
366
- await new Promise(resolve => setTimeout(resolve, 500));
367
- console.log("=".repeat(80));
368
- console.log("STARTING EMPTY PARAMS STREAMING TEST", new Date().toISOString());
369
- console.log("=".repeat(80));
370
- const startTime = Date.now();
371
- lastTimestamp = startTime;
372
- // Call with empty parameters
373
- const result = await dainConnection.callTool("optional-streaming-test", {}, // Empty parameters object
374
- {
375
- onUIUpdate: (update) => {
376
- const now = Date.now();
377
- const delay = now - lastTimestamp;
378
- const elapsedFromStart = now - startTime;
379
- console.log(`[${elapsedFromStart}ms] Empty params UI Update:`, JSON.stringify(update.ui));
380
- events.push({ type: 'ui', timestamp: now, data: update.ui });
381
- lastTimestamp = now;
382
- }
383
- });
384
- const now = Date.now();
385
- const totalTime = now - startTime;
386
- console.log(`[${totalTime}ms] Empty params final result received`);
387
- events.push({ type: 'result', timestamp: now, data: result });
388
- // Verify we got UI updates
389
- expect(events.length).toBeGreaterThan(1);
390
- expect(events[0].type).toBe('ui');
391
- // Check the result
392
- expect(result.text).toBe("Optional streaming completed: Default message");
393
- expect(result.data.result).toBe("completed-Default message-with-delay-500");
394
- });
395
- // Test with undefined parameters
396
- it("Handles undefined parameters in streaming calls", async () => {
397
- // Call with undefined parameters
398
- const result = await dainConnection.callTool("optional-streaming-test", undefined, // Undefined parameters
399
- {
400
- onUIUpdate: () => { }
401
- });
402
- // Check the result - should use defaults
403
- expect(result.text).toBe("Optional streaming completed: Default message");
404
- expect(result.data.result).toBe("completed-Default message-with-delay-500");
405
- });
406
- it("Compares streaming between callTool and callToolAndGetNewContext", async () => {
407
- const callToolEvents = [];
408
- const callContextEvents = [];
409
- console.log("=".repeat(80));
410
- console.log("STARTING COMPARISON TEST", new Date().toISOString());
411
- console.log("=".repeat(80));
412
- // First use callTool with streaming
413
- const toolResult = await dainConnection.callTool("streaming-test", { message: "comparison-test" }, {
414
- onUIUpdate: (update) => {
415
- console.log("callTool UI Update:", JSON.stringify(update.ui));
416
- callToolEvents.push({ type: 'ui', data: update.ui });
417
- },
418
- onProcess: (processId) => {
419
- console.log("callTool Process Update:", processId);
420
- callToolEvents.push({ type: 'process', data: processId });
421
- }
422
- });
423
- callToolEvents.push({ type: 'result', data: toolResult });
424
- // Then use callToolAndGetNewContext with streaming
425
- const contextResult = await dainConnection.callToolAndGetNewContext("streaming-test", { message: "comparison-test" }, {
426
- onUIUpdate: (update) => {
427
- console.log("callToolAndGetNewContext UI Update:", JSON.stringify(update.ui));
428
- callContextEvents.push({ type: 'ui', data: update.ui });
429
- },
430
- onProcess: (processId) => {
431
- console.log("callToolAndGetNewContext Process Update:", processId);
432
- callContextEvents.push({ type: 'process', data: processId });
433
- }
434
- });
435
- callContextEvents.push({ type: 'result', data: contextResult });
436
- // Log all events for comparison
437
- console.log("\nCALL TOOL EVENTS:");
438
- console.log("-".repeat(80));
439
- callToolEvents.forEach((event, i) => {
440
- console.log(`Event ${i + 1}: ${event.type}`);
441
- if (event.data && typeof event.data === 'object') {
442
- console.log(` Data: ${JSON.stringify(event.data).substring(0, 200)}${JSON.stringify(event.data).length > 200 ? '...' : ''}`);
443
- }
444
- else {
445
- console.log(` Data: ${event.data}`);
446
- }
447
- });
448
- console.log("\nCALL TOOL AND GET NEW CONTEXT EVENTS:");
449
- console.log("-".repeat(80));
450
- callContextEvents.forEach((event, i) => {
451
- console.log(`Event ${i + 1}: ${event.type}`);
452
- if (event.data && typeof event.data === 'object') {
453
- console.log(` Data: ${JSON.stringify(event.data).substring(0, 200)}${JSON.stringify(event.data).length > 200 ? '...' : ''}`);
454
- }
455
- else {
456
- console.log(` Data: ${event.data}`);
457
- }
458
- });
459
- // COMPARISONS
460
- // Verify both received the same number of UI and process updates
461
- expect(callToolEvents.filter(e => e.type === 'ui').length)
462
- .toEqual(callContextEvents.filter(e => e.type === 'ui').length);
463
- expect(callToolEvents.filter(e => e.type === 'process').length)
464
- .toEqual(callContextEvents.filter(e => e.type === 'process').length);
465
- // Verify UI updates were identical
466
- const toolUiEvents = callToolEvents.filter(e => e.type === 'ui');
467
- const contextUiEvents = callContextEvents.filter(e => e.type === 'ui');
468
- toolUiEvents.forEach((toolEvent, i) => {
469
- expect(toolEvent.data).toEqual(contextUiEvents[i].data);
470
- });
471
- // Verify process IDs follow the same format
472
- const toolProcessEvents = callToolEvents.filter(e => e.type === 'process');
473
- const contextProcessEvents = callContextEvents.filter(e => e.type === 'process');
474
- toolProcessEvents.forEach((toolEvent, i) => {
475
- expect(typeof toolEvent.data).toEqual(typeof contextProcessEvents[i].data);
476
- expect(toolEvent.data).toMatch(/^service_.*_.*$/);
477
- });
478
- // Verify final results have the expected structure
479
- const toolResultEvent = callToolEvents.find(e => e.type === 'result');
480
- const contextResultEvent = callContextEvents.find(e => e.type === 'result');
481
- // callTool returns the direct result
482
- expect(toolResultEvent.data).toEqual({
483
- text: "Streaming test completed: comparison-test",
484
- data: { result: "completed-comparison-test" },
485
- ui: null,
486
- });
487
- // callToolAndGetNewContext returns { toolResult, context }
488
- expect(contextResultEvent.data).toHaveProperty('toolResult');
489
- expect(contextResultEvent.data).toHaveProperty('context');
490
- expect(contextResultEvent.data.toolResult).toEqual({
491
- text: "Streaming test completed: comparison-test",
492
- data: { result: "completed-comparison-test" },
493
- ui: null,
494
- });
495
- expect(Array.isArray(contextResultEvent.data.context)).toBe(true);
496
- }, 30000);
497
- it("Tests error handling in streaming mode", async () => {
498
- // Test callTool with error - we'll simulate an error by using an invalid tool ID
499
- let callToolError = null;
500
- try {
501
- const events = [];
502
- await dainConnection.callTool("non-existent-tool", { message: "error-test" }, {
503
- onUIUpdate: (update) => {
504
- events.push({ type: 'ui', data: update.ui });
505
- }
506
- });
507
- }
508
- catch (err) {
509
- callToolError = err;
510
- }
511
- expect(callToolError).not.toBeNull();
512
- // Test callToolAndGetNewContext with error - also using invalid tool ID
513
- let callContextError = null;
514
- try {
515
- const events = [];
516
- await dainConnection.callToolAndGetNewContext("non-existent-tool", { message: "error-test" }, {
517
- onUIUpdate: (update) => {
518
- events.push({ type: 'ui', data: update.ui });
519
- }
520
- });
521
- }
522
- catch (err) {
523
- callContextError = err;
524
- }
525
- expect(callContextError).not.toBeNull();
526
- // Test success case to ensure the streaming still works
527
- const result = await dainConnection.callTool("streaming-test", { message: "success-test" });
528
- expect(result).toEqual({
529
- text: "Streaming test completed: success-test",
530
- data: { result: "completed-success-test" },
531
- ui: null,
532
- });
533
- }, 30000);
534
- // Add a test for the new error handling in tool handlers
535
- it("Handles and formats tool handler errors correctly", async () => {
536
- // First test basic non-streaming error case
537
- console.log("\nTesting non-streaming error...");
538
- const basicErrorResult = await dainConnection.callTool("error-tool", { shouldThrow: true });
539
- // Verify the error format matches what we expect
540
- expect(basicErrorResult).toHaveProperty('error');
541
- expect(basicErrorResult).toHaveProperty('text');
542
- expect(basicErrorResult.error).toBe("Intentional test error");
543
- expect(basicErrorResult.text).toBe("Error: Intentional test error");
544
- expect(basicErrorResult.data).toBeNull();
545
- expect(basicErrorResult.ui).toBeNull();
546
- // Test context endpoint error format
547
- console.log("\nTesting context error...");
548
- const contextErrorResult = await dainConnection.callToolAndGetNewContext("error-tool", { shouldThrow: true });
549
- // Verify the context error format
550
- expect(contextErrorResult).toHaveProperty('toolResult');
551
- expect(contextErrorResult).toHaveProperty('context');
552
- expect(contextErrorResult.toolResult).toHaveProperty('error');
553
- expect(contextErrorResult.toolResult.error).toBe("Intentional test error");
554
- expect(contextErrorResult.toolResult.text).toBe("Error: Intentional test error");
555
- expect(contextErrorResult.toolResult.data).toBeNull();
556
- expect(contextErrorResult.toolResult.ui).toBeNull();
557
- expect(Array.isArray(contextErrorResult.context)).toBe(true);
558
- expect(contextErrorResult.context.length).toBe(0);
559
- // Test streaming error format
560
- console.log("\nTesting streaming error...");
561
- let streamingErrorEvents = [];
562
- const streamingErrorResult = await dainConnection.callTool("error-tool", { shouldThrow: true }, {
563
- onUIUpdate: (update) => {
564
- streamingErrorEvents.push({ type: 'ui', data: update.ui });
565
- }
566
- });
567
- // Verify streaming error format is the same
568
- expect(streamingErrorResult).toHaveProperty('error');
569
- expect(streamingErrorResult.error).toBe("Intentional test error");
570
- expect(streamingErrorResult.text).toBe("Error: Intentional test error");
571
- expect(streamingErrorResult.data).toBeNull();
572
- expect(streamingErrorResult.ui).toBeNull();
573
- // Test streaming context error format
574
- console.log("\nTesting streaming context error...");
575
- let streamingContextErrorEvents = [];
576
- const streamingContextErrorResult = await dainConnection.callToolAndGetNewContext("error-tool", { shouldThrow: true }, {
577
- onUIUpdate: (update) => {
578
- streamingContextErrorEvents.push({ type: 'ui', data: update.ui });
579
- }
580
- });
581
- // Verify streaming context error format
582
- expect(streamingContextErrorResult).toHaveProperty('toolResult');
583
- expect(streamingContextErrorResult).toHaveProperty('context');
584
- expect(streamingContextErrorResult.toolResult).toHaveProperty('error');
585
- expect(streamingContextErrorResult.toolResult.error).toBe("Intentional test error");
586
- expect(streamingContextErrorResult.toolResult.text).toBe("Error: Intentional test error");
587
- expect(streamingContextErrorResult.toolResult.data).toBeNull();
588
- expect(streamingContextErrorResult.toolResult.ui).toBeNull();
589
- expect(Array.isArray(streamingContextErrorResult.context)).toBe(true);
590
- }, 30000);
591
- });
592
- //# sourceMappingURL=streaming.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"streaming.test.js","sourceRoot":"","sources":["../../src/__tests__/streaming.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};