@agentica/core 0.19.0 → 0.20.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.
Files changed (59) hide show
  1. package/lib/context/AgenticaOperation.d.ts +3 -4
  2. package/lib/context/internal/AgenticaOperationComposer.js +8 -1
  3. package/lib/context/internal/AgenticaOperationComposer.js.map +1 -1
  4. package/lib/context/internal/AgenticaOperationComposer.spec.js +39 -10
  5. package/lib/context/internal/AgenticaOperationComposer.spec.js.map +1 -1
  6. package/lib/functional/assertHttpLlmApplication.js +168 -168
  7. package/lib/functional/assertMcpController.d.ts +24 -0
  8. package/lib/functional/assertMcpController.js +1701 -0
  9. package/lib/functional/assertMcpController.js.map +1 -0
  10. package/lib/functional/validateHttpLlmApplication.js +148 -148
  11. package/lib/index.d.ts +1 -1
  12. package/lib/index.js +1 -1
  13. package/lib/index.js.map +1 -1
  14. package/lib/index.mjs +2013 -404
  15. package/lib/index.mjs.map +1 -1
  16. package/lib/orchestrate/call.js +11 -1
  17. package/lib/orchestrate/call.js.map +1 -1
  18. package/lib/orchestrate/initialize.js +60 -60
  19. package/lib/structures/IAgenticaController.d.ts +8 -4
  20. package/lib/structures/mcp/index.d.ts +0 -2
  21. package/lib/structures/mcp/index.js +0 -2
  22. package/lib/structures/mcp/index.js.map +1 -1
  23. package/lib/utils/AsyncQueue.d.ts +10 -0
  24. package/lib/utils/AsyncQueue.js +33 -9
  25. package/lib/utils/AsyncQueue.js.map +1 -1
  26. package/lib/utils/AsyncQueue.spec.d.ts +1 -0
  27. package/lib/utils/AsyncQueue.spec.js +280 -0
  28. package/lib/utils/AsyncQueue.spec.js.map +1 -0
  29. package/lib/utils/MPSC.spec.d.ts +1 -0
  30. package/lib/utils/MPSC.spec.js +222 -0
  31. package/lib/utils/MPSC.spec.js.map +1 -0
  32. package/lib/utils/StreamUtil.spec.d.ts +1 -0
  33. package/lib/utils/StreamUtil.spec.js +471 -0
  34. package/lib/utils/StreamUtil.spec.js.map +1 -0
  35. package/package.json +3 -3
  36. package/src/context/AgenticaOperation.ts +5 -6
  37. package/src/context/internal/AgenticaOperationComposer.spec.ts +45 -14
  38. package/src/context/internal/AgenticaOperationComposer.ts +10 -2
  39. package/src/functional/assertMcpController.ts +49 -0
  40. package/src/index.ts +1 -1
  41. package/src/orchestrate/call.ts +14 -4
  42. package/src/structures/IAgenticaController.ts +9 -4
  43. package/src/structures/mcp/index.ts +0 -2
  44. package/src/utils/AsyncQueue.spec.ts +355 -0
  45. package/src/utils/AsyncQueue.ts +36 -8
  46. package/src/utils/MPSC.spec.ts +276 -0
  47. package/src/utils/StreamUtil.spec.ts +520 -0
  48. package/lib/functional/assertMcpLlmApplication.d.ts +0 -18
  49. package/lib/functional/assertMcpLlmApplication.js +0 -74
  50. package/lib/functional/assertMcpLlmApplication.js.map +0 -1
  51. package/lib/structures/mcp/IMcpLlmApplication.d.ts +0 -9
  52. package/lib/structures/mcp/IMcpLlmApplication.js +0 -3
  53. package/lib/structures/mcp/IMcpLlmApplication.js.map +0 -1
  54. package/lib/structures/mcp/IMcpLlmFunction.d.ts +0 -17
  55. package/lib/structures/mcp/IMcpLlmFunction.js +0 -3
  56. package/lib/structures/mcp/IMcpLlmFunction.js.map +0 -1
  57. package/src/functional/assertMcpLlmApplication.ts +0 -32
  58. package/src/structures/mcp/IMcpLlmApplication.ts +0 -10
  59. package/src/structures/mcp/IMcpLlmFunction.ts +0 -19
@@ -0,0 +1,471 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __asyncValues = (this && this.__asyncValues) || function (o) {
12
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
13
+ var m = o[Symbol.asyncIterator], i;
14
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
15
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
16
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
17
+ };
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ const StreamUtil_1 = require("./StreamUtil");
20
+ // Helper function to create a stream with numbers from start to end
21
+ function createNumberStream(start, end) {
22
+ return new ReadableStream({
23
+ start(controller) {
24
+ for (let i = start; i <= end; i++) {
25
+ controller.enqueue(i);
26
+ }
27
+ controller.close();
28
+ },
29
+ });
30
+ }
31
+ // Helper function to create an empty stream
32
+ function createEmptyStream() {
33
+ return new ReadableStream({
34
+ start(controller) {
35
+ controller.close();
36
+ },
37
+ });
38
+ }
39
+ // Helper function to convert ReadableStream to array
40
+ function streamToArray(stream) {
41
+ return __awaiter(this, void 0, void 0, function* () {
42
+ const reader = stream.getReader();
43
+ const result = [];
44
+ while (true) {
45
+ const { done, value } = yield reader.read();
46
+ if (done) {
47
+ break;
48
+ }
49
+ result.push(value);
50
+ }
51
+ return result;
52
+ });
53
+ }
54
+ // Helper function to create test stream
55
+ function createTestStream(items) {
56
+ return new ReadableStream({
57
+ start(controller) {
58
+ for (const item of items) {
59
+ controller.enqueue(item);
60
+ }
61
+ controller.close();
62
+ },
63
+ });
64
+ }
65
+ // Delay function (for simulating async operations)
66
+ function delay(ms) {
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ return new Promise(resolve => setTimeout(resolve, ms));
69
+ });
70
+ }
71
+ // Helper function to create a stream with numbers from start to end asynchronously
72
+ function createDelayedNumberStream(start, end, delayMs) {
73
+ return __awaiter(this, void 0, void 0, function* () {
74
+ // Simulate async work
75
+ yield delay(delayMs);
76
+ return new ReadableStream({
77
+ start(controller) {
78
+ for (let i = start; i <= end; i++) {
79
+ controller.enqueue(i);
80
+ }
81
+ controller.close();
82
+ },
83
+ });
84
+ });
85
+ }
86
+ // Helper function to create an empty stream asynchronously
87
+ function createEmptyDelayedStream(delayMs) {
88
+ return __awaiter(this, void 0, void 0, function* () {
89
+ // Simulate async work
90
+ yield delay(delayMs);
91
+ return new ReadableStream({
92
+ start(controller) {
93
+ controller.close();
94
+ },
95
+ });
96
+ });
97
+ }
98
+ // Helper function to create a stream with items having various delay times
99
+ function createVariableDelayedNumberStream(items) {
100
+ return __awaiter(this, void 0, void 0, function* () {
101
+ // Wait for all items to be ready based on their delays
102
+ yield Promise.all(items.map((item) => __awaiter(this, void 0, void 0, function* () { return delay(item.delay); })));
103
+ return new ReadableStream({
104
+ start(controller) {
105
+ for (const item of items) {
106
+ controller.enqueue(item.value);
107
+ }
108
+ controller.close();
109
+ },
110
+ });
111
+ });
112
+ }
113
+ describe("streamUtil", () => {
114
+ describe("readAll", () => {
115
+ it("should read all values from a stream", () => __awaiter(void 0, void 0, void 0, function* () {
116
+ const stream = createNumberStream(1, 5);
117
+ const result = yield StreamUtil_1.StreamUtil.readAll(stream);
118
+ expect(result).toEqual([1, 2, 3, 4, 5]);
119
+ }));
120
+ it("should return empty array for empty stream", () => __awaiter(void 0, void 0, void 0, function* () {
121
+ const stream = createEmptyStream();
122
+ const result = yield StreamUtil_1.StreamUtil.readAll(stream);
123
+ expect(result).toEqual([]);
124
+ }));
125
+ it("should handle error in stream", () => __awaiter(void 0, void 0, void 0, function* () {
126
+ const stream = new ReadableStream({
127
+ start(controller) {
128
+ controller.enqueue(1);
129
+ controller.enqueue(2);
130
+ controller.error(new Error("Stream error"));
131
+ },
132
+ });
133
+ yield expect(StreamUtil_1.StreamUtil.readAll(stream)).rejects.toThrow("Stream error");
134
+ }));
135
+ it("should handle null or undefined values in stream", () => __awaiter(void 0, void 0, void 0, function* () {
136
+ const stream = createTestStream([1, null, 3, undefined, 5]);
137
+ const result = yield StreamUtil_1.StreamUtil.readAll(stream);
138
+ expect(result).toEqual([1, null, 3, undefined, 5]);
139
+ }));
140
+ });
141
+ describe("reduce", () => {
142
+ it("should concatenate strings from number stream", () => __awaiter(void 0, void 0, void 0, function* () {
143
+ const stringStream = createNumberStream(1, 3);
144
+ const stringResult = yield StreamUtil_1.StreamUtil.reduce(stringStream, (acc, cur) => acc + cur.toString(), "");
145
+ expect(stringResult).toBe("123");
146
+ }));
147
+ it("should sum numbers from stream", () => __awaiter(void 0, void 0, void 0, function* () {
148
+ const sumStream = createNumberStream(1, 5);
149
+ const sumResult = yield StreamUtil_1.StreamUtil.reduce(sumStream, (acc, cur) => acc + cur, 0);
150
+ expect(sumResult).toBe(15);
151
+ }));
152
+ it("should work without initial value", () => __awaiter(void 0, void 0, void 0, function* () {
153
+ const noInitialStream = createNumberStream(1, 4);
154
+ const noInitialResult = yield StreamUtil_1.StreamUtil.reduce(noInitialStream, (acc, cur) => acc + cur);
155
+ expect(noInitialResult).toBe(10);
156
+ }));
157
+ it("should return initial value for empty stream", () => __awaiter(void 0, void 0, void 0, function* () {
158
+ const emptyStream = createEmptyStream();
159
+ const emptyResult = yield StreamUtil_1.StreamUtil.reduce(emptyStream, (acc, cur) => acc + cur.toString(), "initial value");
160
+ expect(emptyResult).toBe("initial value");
161
+ }));
162
+ it("should return null for empty stream without initial value", () => __awaiter(void 0, void 0, void 0, function* () {
163
+ const emptyNoInitialStream = createEmptyStream();
164
+ const emptyNoInitialResult = yield StreamUtil_1.StreamUtil.reduce(emptyNoInitialStream, (acc, cur) => acc + cur);
165
+ expect(emptyNoInitialResult).toBeNull();
166
+ }));
167
+ it("should work with async generated stream", () => __awaiter(void 0, void 0, void 0, function* () {
168
+ const stringStream = yield createDelayedNumberStream(1, 3, 10);
169
+ const stringResult = yield StreamUtil_1.StreamUtil.reduce(stringStream, (acc, cur) => acc + cur.toString(), "");
170
+ expect(stringResult).toBe("123");
171
+ }));
172
+ it("should work with async stream without initial value", () => __awaiter(void 0, void 0, void 0, function* () {
173
+ const noInitialStream = yield createDelayedNumberStream(1, 4, 15);
174
+ const noInitialResult = yield StreamUtil_1.StreamUtil.reduce(noInitialStream, (acc, cur) => acc + cur);
175
+ expect(noInitialResult).toBe(10);
176
+ }));
177
+ it("should work with async stream transformation and aggregation into array", () => __awaiter(void 0, void 0, void 0, function* () {
178
+ const transformStream = yield createDelayedNumberStream(1, 3, 10);
179
+ const transformResult = yield StreamUtil_1.StreamUtil.reduce(transformStream, (acc, cur) => {
180
+ if (typeof acc === "number") {
181
+ // Handle case when no initial value is provided
182
+ return [`item${acc}`, `item${cur}`];
183
+ }
184
+ return [...acc, `item${cur}`];
185
+ }, []);
186
+ expect(transformResult).toEqual(["item1", "item2", "item3"]);
187
+ }));
188
+ it("should return initial value for async generated empty stream", () => __awaiter(void 0, void 0, void 0, function* () {
189
+ const emptyStream = yield createEmptyDelayedStream(30);
190
+ const emptyResult = yield StreamUtil_1.StreamUtil.reduce(emptyStream, (acc, cur) => acc + cur.toString(), "initial");
191
+ expect(emptyResult).toBe("initial");
192
+ }));
193
+ it("should work with stream with values created with various async delays", () => __awaiter(void 0, void 0, void 0, function* () {
194
+ const delayStream = yield createVariableDelayedNumberStream([
195
+ { value: 1, delay: 20 },
196
+ { value: 2, delay: 40 },
197
+ { value: 3, delay: 10 },
198
+ ]);
199
+ const delayResult = yield StreamUtil_1.StreamUtil.reduce(delayStream, (acc, cur) => acc + cur, 0);
200
+ expect(delayResult).toBe(6);
201
+ }));
202
+ it("should handle error in reducer function", () => __awaiter(void 0, void 0, void 0, function* () {
203
+ const stream = createNumberStream(1, 3);
204
+ yield expect(StreamUtil_1.StreamUtil.reduce(stream, (acc, cur) => {
205
+ if (cur === 2) {
206
+ throw new Error("Test error");
207
+ }
208
+ return acc + cur;
209
+ }, 0)).rejects.toThrow("Test error");
210
+ }));
211
+ it("should handle null or undefined values in stream", () => __awaiter(void 0, void 0, void 0, function* () {
212
+ const stream = createTestStream([1, null, 3, undefined, 5]);
213
+ const result = yield StreamUtil_1.StreamUtil.reduce(stream, (acc, cur) => (acc !== null && acc !== void 0 ? acc : 0) + (cur !== null && cur !== void 0 ? cur : 0), 0);
214
+ expect(result).toBe(9); // 1 + 0 + 3 + 0 + 5 = 9
215
+ }));
216
+ });
217
+ describe("from", () => {
218
+ it("should create a stream with a single value", () => __awaiter(void 0, void 0, void 0, function* () {
219
+ const stream = StreamUtil_1.StreamUtil.from("Hello, world!");
220
+ const reader = stream.getReader();
221
+ const { done, value } = yield reader.read();
222
+ expect(done).toBe(false);
223
+ expect(value).toBe("Hello, world!");
224
+ const next = yield reader.read();
225
+ expect(next.done).toBe(true);
226
+ }));
227
+ it("should handle null or undefined values", () => __awaiter(void 0, void 0, void 0, function* () {
228
+ const stream = StreamUtil_1.StreamUtil.from(null);
229
+ const reader = stream.getReader();
230
+ const { done, value } = yield reader.read();
231
+ expect(done).toBe(false);
232
+ expect(value).toBeNull();
233
+ const next = yield reader.read();
234
+ expect(next.done).toBe(true);
235
+ }));
236
+ });
237
+ describe("transform", () => {
238
+ it("should transform number stream by doubling", () => __awaiter(void 0, void 0, void 0, function* () {
239
+ const numbersInput = [1, 2, 3, 4, 5];
240
+ const numberStream = createTestStream(numbersInput);
241
+ const doubledStream = StreamUtil_1.StreamUtil.transform(numberStream, (num) => num * 2);
242
+ const doubledResult = yield streamToArray(doubledStream);
243
+ const expectedDoubled = numbersInput.map(n => n * 2);
244
+ expect(doubledResult).toEqual(expectedDoubled);
245
+ }));
246
+ it("should transform object stream", () => __awaiter(void 0, void 0, void 0, function* () {
247
+ const objectsInput = [
248
+ { name: "item1", value: 10 },
249
+ { name: "item2", value: 20 },
250
+ { name: "item3", value: 30 },
251
+ ];
252
+ const objectStream = createTestStream(objectsInput);
253
+ const transformedObjectStream = StreamUtil_1.StreamUtil.transform(objectStream, obj => ({
254
+ id: obj.name.toUpperCase(),
255
+ doubledValue: obj.value * 2,
256
+ }));
257
+ const transformedObjects = yield streamToArray(transformedObjectStream);
258
+ const expectedObjects = objectsInput.map(obj => ({
259
+ id: obj.name.toUpperCase(),
260
+ doubledValue: obj.value * 2,
261
+ }));
262
+ expect(transformedObjects).toEqual(expectedObjects);
263
+ }));
264
+ it("should handle empty stream", () => __awaiter(void 0, void 0, void 0, function* () {
265
+ const emptyStream = createEmptyStream();
266
+ const transformedEmptyStream = StreamUtil_1.StreamUtil.transform(emptyStream, n => n * 2);
267
+ const emptyResult = yield streamToArray(transformedEmptyStream);
268
+ expect(emptyResult).toEqual([]);
269
+ }));
270
+ it("should transform type (number -> string)", () => __awaiter(void 0, void 0, void 0, function* () {
271
+ const numbersInput = [1, 2, 3, 4, 5];
272
+ const numberStream = createTestStream(numbersInput);
273
+ const stringStream = StreamUtil_1.StreamUtil.transform(numberStream, num => `Number: ${num}`);
274
+ const stringResult = yield streamToArray(stringStream);
275
+ const expectedStrings = numbersInput.map(n => `Number: ${n}`);
276
+ expect(stringResult).toEqual(expectedStrings);
277
+ }));
278
+ it("should handle error in transformer function", () => __awaiter(void 0, void 0, void 0, function* () {
279
+ const stream = createNumberStream(1, 3);
280
+ const transformedStream = StreamUtil_1.StreamUtil.transform(stream, (num) => {
281
+ if (num === 2) {
282
+ throw new Error("Transform error");
283
+ }
284
+ return num * 2;
285
+ });
286
+ yield expect(streamToArray(transformedStream)).rejects.toThrow("Transform error");
287
+ }));
288
+ it("should handle null or undefined values in stream", () => __awaiter(void 0, void 0, void 0, function* () {
289
+ const stream = createTestStream([1, null, 3, undefined, 5]);
290
+ const transformedStream = StreamUtil_1.StreamUtil.transform(stream, num => (num !== null && num !== void 0 ? num : 0) * 2);
291
+ const result = yield streamToArray(transformedStream);
292
+ expect(result).toEqual([2, 0, 6, 0, 10]);
293
+ }));
294
+ });
295
+ describe("toAsyncGenerator", () => {
296
+ it("should yield a single value", () => __awaiter(void 0, void 0, void 0, function* () {
297
+ var _a, e_1, _b, _c;
298
+ const generator = (0, StreamUtil_1.toAsyncGenerator)("test value");
299
+ const result = [];
300
+ try {
301
+ for (var _d = true, generator_1 = __asyncValues(generator), generator_1_1; generator_1_1 = yield generator_1.next(), _a = generator_1_1.done, !_a; _d = true) {
302
+ _c = generator_1_1.value;
303
+ _d = false;
304
+ const value = _c;
305
+ result.push(value);
306
+ }
307
+ }
308
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
309
+ finally {
310
+ try {
311
+ if (!_d && !_a && (_b = generator_1.return)) yield _b.call(generator_1);
312
+ }
313
+ finally { if (e_1) throw e_1.error; }
314
+ }
315
+ expect(result).toEqual(["test value"]);
316
+ }));
317
+ it("should handle null or undefined values", () => __awaiter(void 0, void 0, void 0, function* () {
318
+ var _a, e_2, _b, _c;
319
+ const generator = (0, StreamUtil_1.toAsyncGenerator)(null);
320
+ const result = [];
321
+ try {
322
+ for (var _d = true, generator_2 = __asyncValues(generator), generator_2_1; generator_2_1 = yield generator_2.next(), _a = generator_2_1.done, !_a; _d = true) {
323
+ _c = generator_2_1.value;
324
+ _d = false;
325
+ const value = _c;
326
+ result.push(value);
327
+ }
328
+ }
329
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
330
+ finally {
331
+ try {
332
+ if (!_d && !_a && (_b = generator_2.return)) yield _b.call(generator_2);
333
+ }
334
+ finally { if (e_2) throw e_2.error; }
335
+ }
336
+ expect(result).toEqual([null]);
337
+ }));
338
+ it("should handle object values", () => __awaiter(void 0, void 0, void 0, function* () {
339
+ var _a, e_3, _b, _c;
340
+ const testObj = { id: 1, name: "test" };
341
+ const generator = (0, StreamUtil_1.toAsyncGenerator)(testObj);
342
+ const result = [];
343
+ try {
344
+ for (var _d = true, generator_3 = __asyncValues(generator), generator_3_1; generator_3_1 = yield generator_3.next(), _a = generator_3_1.done, !_a; _d = true) {
345
+ _c = generator_3_1.value;
346
+ _d = false;
347
+ const value = _c;
348
+ result.push(value);
349
+ }
350
+ }
351
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
352
+ finally {
353
+ try {
354
+ if (!_d && !_a && (_b = generator_3.return)) yield _b.call(generator_3);
355
+ }
356
+ finally { if (e_3) throw e_3.error; }
357
+ }
358
+ expect(result).toEqual([testObj]);
359
+ }));
360
+ });
361
+ describe("streamDefaultReaderToAsyncGenerator", () => {
362
+ it("should convert stream reader to async generator", () => __awaiter(void 0, void 0, void 0, function* () {
363
+ var _a, e_4, _b, _c;
364
+ const stream = createNumberStream(1, 5);
365
+ const reader = stream.getReader();
366
+ const generator = (0, StreamUtil_1.streamDefaultReaderToAsyncGenerator)(reader);
367
+ const result = [];
368
+ try {
369
+ for (var _d = true, generator_4 = __asyncValues(generator), generator_4_1; generator_4_1 = yield generator_4.next(), _a = generator_4_1.done, !_a; _d = true) {
370
+ _c = generator_4_1.value;
371
+ _d = false;
372
+ const value = _c;
373
+ result.push(value);
374
+ }
375
+ }
376
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
377
+ finally {
378
+ try {
379
+ if (!_d && !_a && (_b = generator_4.return)) yield _b.call(generator_4);
380
+ }
381
+ finally { if (e_4) throw e_4.error; }
382
+ }
383
+ expect(result).toEqual([1, 2, 3, 4, 5]);
384
+ }));
385
+ it("should handle empty stream", () => __awaiter(void 0, void 0, void 0, function* () {
386
+ var _a, e_5, _b, _c;
387
+ const stream = createEmptyStream();
388
+ const reader = stream.getReader();
389
+ const generator = (0, StreamUtil_1.streamDefaultReaderToAsyncGenerator)(reader);
390
+ const result = [];
391
+ try {
392
+ for (var _d = true, generator_5 = __asyncValues(generator), generator_5_1; generator_5_1 = yield generator_5.next(), _a = generator_5_1.done, !_a; _d = true) {
393
+ _c = generator_5_1.value;
394
+ _d = false;
395
+ const value = _c;
396
+ result.push(value);
397
+ }
398
+ }
399
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
400
+ finally {
401
+ try {
402
+ if (!_d && !_a && (_b = generator_5.return)) yield _b.call(generator_5);
403
+ }
404
+ finally { if (e_5) throw e_5.error; }
405
+ }
406
+ expect(result).toEqual([]);
407
+ }));
408
+ it("should handle null or undefined values in stream", () => __awaiter(void 0, void 0, void 0, function* () {
409
+ var _a, e_6, _b, _c;
410
+ const stream = createTestStream([1, null, 3, undefined, 5]);
411
+ const reader = stream.getReader();
412
+ const generator = (0, StreamUtil_1.streamDefaultReaderToAsyncGenerator)(reader);
413
+ const result = [];
414
+ try {
415
+ for (var _d = true, generator_6 = __asyncValues(generator), generator_6_1; generator_6_1 = yield generator_6.next(), _a = generator_6_1.done, !_a; _d = true) {
416
+ _c = generator_6_1.value;
417
+ _d = false;
418
+ const value = _c;
419
+ result.push(value);
420
+ }
421
+ }
422
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
423
+ finally {
424
+ try {
425
+ if (!_d && !_a && (_b = generator_6.return)) yield _b.call(generator_6);
426
+ }
427
+ finally { if (e_6) throw e_6.error; }
428
+ }
429
+ expect(result).toEqual([1, null, 3, undefined, 5]);
430
+ }));
431
+ it("should handle error in stream", () => __awaiter(void 0, void 0, void 0, function* () {
432
+ var _a, e_7, _b, _c;
433
+ const stream = new ReadableStream({
434
+ start(controller) {
435
+ controller.enqueue(1);
436
+ controller.enqueue(2);
437
+ delay(1000).then(() => controller.error(new Error("Stream error"))).catch(() => { });
438
+ },
439
+ });
440
+ const reader = stream.getReader();
441
+ const generator = (0, StreamUtil_1.streamDefaultReaderToAsyncGenerator)(reader);
442
+ const result = [];
443
+ try {
444
+ try {
445
+ for (var _d = true, generator_7 = __asyncValues(generator), generator_7_1; generator_7_1 = yield generator_7.next(), _a = generator_7_1.done, !_a; _d = true) {
446
+ _c = generator_7_1.value;
447
+ _d = false;
448
+ const value = _c;
449
+ result.push(value);
450
+ }
451
+ }
452
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
453
+ finally {
454
+ try {
455
+ if (!_d && !_a && (_b = generator_7.return)) yield _b.call(generator_7);
456
+ }
457
+ finally { if (e_7) throw e_7.error; }
458
+ }
459
+ // Should not reach here
460
+ expect(true).toBe(false);
461
+ }
462
+ catch (error) {
463
+ console.error(error);
464
+ expect(error).toBeInstanceOf(Error);
465
+ expect(error.message).toBe("Stream error");
466
+ expect(result).toEqual([1, 2]);
467
+ }
468
+ }));
469
+ });
470
+ });
471
+ //# sourceMappingURL=StreamUtil.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamUtil.spec.js","sourceRoot":"","sources":["../../src/utils/StreamUtil.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentica/core",
3
- "version": "0.19.0",
3
+ "version": "0.20.0",
4
4
  "description": "Agentic AI Library specialized in LLM Function Calling",
5
5
  "author": "Wrtn Technologies",
6
6
  "license": "MIT",
@@ -37,12 +37,12 @@
37
37
  },
38
38
  "peerDependencies": {
39
39
  "@modelcontextprotocol/sdk": "^1.9.0",
40
- "@samchon/openapi": "^4.0.0",
40
+ "@samchon/openapi": "^4.2.0",
41
41
  "openai": "^4.80.0",
42
42
  "typia": "^9.0.1"
43
43
  },
44
44
  "dependencies": {
45
- "@samchon/openapi": "^4.0.0",
45
+ "@samchon/openapi": "^4.2.0",
46
46
  "typia": "^9.0.1",
47
47
  "uuid": "^11.0.4"
48
48
  },
@@ -1,8 +1,7 @@
1
- import type { IHttpLlmFunction, ILlmFunction, ILlmSchema } from "@samchon/openapi";
1
+ import type { IHttpLlmFunction, ILlmFunction, ILlmSchema, IMcpLlmFunction } from "@samchon/openapi";
2
2
 
3
3
  import type { IAgenticaOperationJson } from "../json/IAgenticaOperationJson";
4
4
  import type { IAgenticaController } from "../structures/IAgenticaController";
5
- import type { IMcpLlmFunction } from "../structures/mcp/IMcpLlmFunction";
6
5
 
7
6
  /**
8
7
  * Operation information in the Agentica Agent.
@@ -22,7 +21,7 @@ import type { IMcpLlmFunction } from "../structures/mcp/IMcpLlmFunction";
22
21
  export type AgenticaOperation<Model extends ILlmSchema.Model> =
23
22
  | AgenticaOperation.Class<Model>
24
23
  | AgenticaOperation.Http<Model>
25
- | AgenticaOperation.Mcp;
24
+ | AgenticaOperation.Mcp<Model>;
26
25
  export namespace AgenticaOperation {
27
26
  export type Class<Model extends ILlmSchema.Model> = Base<
28
27
  "class",
@@ -34,10 +33,10 @@ export namespace AgenticaOperation {
34
33
  IAgenticaController.IHttp<Model>,
35
34
  IHttpLlmFunction<Model>
36
35
  >;
37
- export type Mcp = Base<
36
+ export type Mcp<Model extends ILlmSchema.Model> = Base<
38
37
  "mcp",
39
- IAgenticaController.IMcp,
40
- IMcpLlmFunction
38
+ IAgenticaController.IMcp<Model>,
39
+ IMcpLlmFunction<Model>
41
40
  >;
42
41
 
43
42
  interface Base<
@@ -1,13 +1,12 @@
1
- import type { IHttpLlmFunction, ILlmFunction, IValidation } from "@samchon/openapi";
1
+ import type { IChatGptSchema, IHttpLlmFunction, ILlmFunction, IMcpLlmFunction, IValidation } from "@samchon/openapi";
2
2
 
3
3
  import { Client } from "@modelcontextprotocol/sdk/client/index.js";
4
4
  import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
5
5
 
6
6
  import type { IAgenticaConfig } from "../../structures/IAgenticaConfig";
7
7
  import type { IAgenticaController } from "../../structures/IAgenticaController";
8
- import type { IMcpLlmFunction } from "../../structures/mcp/IMcpLlmFunction";
9
8
 
10
- import { assertMcpLlmApplication } from "../../functional/assertMcpLlmApplication";
9
+ import { assertMcpController } from "../../functional/assertMcpController";
11
10
 
12
11
  import { compose, divide, getOperations, toClassOperations, toHttpOperations, toMcpOperations } from "./AgenticaOperationComposer";
13
12
 
@@ -70,16 +69,18 @@ function createMockClassController(name: string, functions: ILlmFunction<any>[])
70
69
  };
71
70
  }
72
71
 
73
- async function createMockMcpController(name: string, functions: IMcpLlmFunction[]): Promise<IAgenticaController.IMcp> {
74
- return {
72
+ async function createMockMcpController(name: string, functions: IMcpLlmFunction<"chatgpt">[]): Promise<IAgenticaController.IMcp<"chatgpt">> {
73
+ const controller = await assertMcpController({
74
+ model: "chatgpt",
75
75
  name,
76
- protocol: "mcp",
77
- application: await assertMcpLlmApplication({
78
- client,
79
- }).then(v => ({
80
- ...v,
76
+ client,
77
+ });
78
+ return {
79
+ ...controller,
80
+ application: {
81
+ ...controller.application,
81
82
  functions,
82
- })),
83
+ },
83
84
  };
84
85
  }
85
86
 
@@ -110,7 +111,17 @@ describe("a AgenticaOperationComposer", () => {
110
111
  const mockMcpController = await createMockMcpController("mcpController", [
111
112
  {
112
113
  name: "function4",
113
- parameters: {},
114
+ parameters: {
115
+ type: "object",
116
+ properties: {},
117
+ additionalProperties: false,
118
+ required: [],
119
+ $defs: {},
120
+ } satisfies IChatGptSchema.IParameters,
121
+ validate: (data: unknown) => ({
122
+ success: true,
123
+ data,
124
+ }),
114
125
  },
115
126
  ]);
116
127
 
@@ -182,7 +193,17 @@ describe("a AgenticaOperationComposer", () => {
182
193
  const mockController = await createMockMcpController("mcpController", [
183
194
  {
184
195
  name: "function1",
185
- parameters: {},
196
+ parameters: {
197
+ type: "object",
198
+ properties: {},
199
+ additionalProperties: false,
200
+ required: [],
201
+ $defs: {},
202
+ },
203
+ validate: (data: unknown) => ({
204
+ success: true,
205
+ data,
206
+ }),
186
207
  },
187
208
  ]);
188
209
 
@@ -245,7 +266,17 @@ describe("a AgenticaOperationComposer", () => {
245
266
  const mockController = await createMockMcpController("mcpController", [
246
267
  {
247
268
  name: "function1",
248
- parameters: {},
269
+ parameters: {
270
+ type: "object",
271
+ properties: {},
272
+ additionalProperties: false,
273
+ required: [],
274
+ $defs: {},
275
+ },
276
+ validate: (data: unknown) => ({
277
+ success: true,
278
+ data,
279
+ }),
249
280
  },
250
281
  ]);
251
282