@vectorx/agent-runtime 0.5.1 → 0.6.1

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.
@@ -30,7 +30,7 @@ class AgentDriver {
30
30
  }
31
31
  const apiFuncs = {
32
32
  "POST:send-message": this.sendMessageFunc.bind(this),
33
- "POST:upload-file": this.uploadFileFunc.bind(this),
33
+ "POST:upload-openai-file": this.uploadFileFunc.bind(this),
34
34
  "GET:query-tasks": this.queryTasksFunc.bind(this),
35
35
  "GET:messages": this.getHistoryMessagesFunc.bind(this),
36
36
  "GET:info": this.getAgentInfoFunc.bind(this),
@@ -112,8 +112,7 @@ class AgentDriver {
112
112
  return __awaiter(this, void 0, void 0, function* () {
113
113
  var _a, _b;
114
114
  try {
115
- const parsedEvent = schema_1.uploadFileInputSchema.passthrough().parse(event);
116
- return yield ((_b = (_a = this.agent).uploadFile) === null || _b === void 0 ? void 0 : _b.call(_a, parsedEvent));
115
+ return yield ((_b = (_a = this.agent).uploadFile) === null || _b === void 0 ? void 0 : _b.call(_a, event));
117
116
  }
118
117
  catch (e) {
119
118
  return (0, integration_response_1.createIntegrationResponse)(500, codes_1.CODES.AGENT_API_ERROR, `Agent API 'uploadFile' failed, message: ${e}`);
package/lib/agent.js CHANGED
@@ -1,4 +1,37 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
36
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
37
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -640,43 +673,82 @@ class AgentRuntime {
640
673
  }
641
674
  uploadFile(input) {
642
675
  return __awaiter(this, void 0, void 0, function* () {
676
+ var _a, _b;
677
+ const fs = yield Promise.resolve().then(() => __importStar(require("fs")));
678
+ const path = yield Promise.resolve().then(() => __importStar(require("path")));
679
+ const os = yield Promise.resolve().then(() => __importStar(require("os")));
680
+ let tempFilePath = null;
643
681
  try {
644
- const validatedInput = schema_1.uploadFileInputSchema.passthrough().parse(input);
682
+ const fileData = input.file;
683
+ const rawFilename = fileData.newFilename || fileData.name || fileData.originalFilename || "unknown";
684
+ const baseName = (yield Promise.resolve().then(() => __importStar(require("path")))).basename(String(rawFilename));
685
+ const safeFilename = baseName.replace(/[\/\\:*?"<>|]/g, "_");
686
+ const filename = safeFilename;
687
+ const purpose = input.purpose || "file-extract";
688
+ const mimeType = fileData.type || fileData.mimetype || "application/octet-stream";
689
+ const fileBuffer = fileData.buffer || fileData;
690
+ if (!Buffer.isBuffer(fileBuffer)) {
691
+ throw new Error("无法从上传的文件对象中提取文件内容:buffer 不存在或格式错误");
692
+ }
693
+ this.logger.logAccesslog(functions_framework_1.LogLevel.INFO, safeJsonStringify({
694
+ type: AgentEventType.FRAMEWORK_EVENT,
695
+ scene: "AI_SDK_UPLOAD_FILE_PARSE",
696
+ message: "Parsed upload file metadata",
697
+ eventId: this.context.eventID,
698
+ timestamp: new Date().toISOString(),
699
+ data: {
700
+ filename,
701
+ rawFilename,
702
+ mimeType,
703
+ purpose,
704
+ size: typeof (fileData === null || fileData === void 0 ? void 0 : fileData.size) === "number" ? fileData.size : fileBuffer.length,
705
+ hasBuffer: true,
706
+ source: {
707
+ name: fileData === null || fileData === void 0 ? void 0 : fileData.name,
708
+ newFilename: fileData === null || fileData === void 0 ? void 0 : fileData.newFilename,
709
+ originalFilename: fileData === null || fileData === void 0 ? void 0 : fileData.originalFilename,
710
+ mimetype: fileData === null || fileData === void 0 ? void 0 : fileData.mimetype,
711
+ type: fileData === null || fileData === void 0 ? void 0 : fileData.type,
712
+ filepath: fileData === null || fileData === void 0 ? void 0 : fileData.filepath,
713
+ },
714
+ },
715
+ }));
716
+ const tempDir = os.tmpdir();
717
+ const timestamp = Date.now();
718
+ const randomStr = Math.random().toString(36).substring(2, 15);
719
+ const ext = path.extname(filename) || "";
720
+ tempFilePath = path.join(tempDir, `upload_${timestamp}_${randomStr}${ext}`);
721
+ fs.writeFileSync(tempFilePath, fileBuffer);
645
722
  this.logger.logAccesslog(functions_framework_1.LogLevel.INFO, safeJsonStringify({
646
723
  type: AgentEventType.FRAMEWORK_EVENT,
647
724
  scene: "AI_SDK_UPLOAD_FILE",
648
725
  method: "POST",
649
726
  url: "https://dashscope.aliyuncs.com/compatible-mode/v1/files",
650
727
  headers: {},
651
- data: { filename: validatedInput.filename, purpose: validatedInput.purpose },
728
+ data: { filename, purpose, tempFilePath },
652
729
  eventId: this.context.eventID,
653
730
  timestamp: new Date().toISOString(),
654
731
  }));
655
732
  const token = yield this.ai.tokenManager.getValidToken();
656
- const fileBuffer = Buffer.from(validatedInput.fileContent, "base64");
657
- const formData = {
658
- file: {
659
- value: fileBuffer,
660
- options: {
661
- filename: validatedInput.filename,
662
- contentType: validatedInput.mimeType || "application/octet-stream",
663
- },
664
- },
665
- purpose: validatedInput.purpose || "file-extract",
666
- };
667
- const response = yield this.request.upload({
733
+ const FormData = (yield Promise.resolve().then(() => __importStar(require("form-data")))).default;
734
+ const formData = new FormData();
735
+ formData.append("file", fs.createReadStream(tempFilePath), {
736
+ filename,
737
+ contentType: mimeType,
738
+ });
739
+ formData.append("purpose", purpose);
740
+ const response = yield this.request.fetch({
668
741
  url: "https://dashscope.aliyuncs.com/compatible-mode/v1/files",
669
- headers: {
670
- Authorization: `Bearer ${token}`,
671
- },
672
- data: formData,
742
+ headers: Object.assign({ Authorization: `Bearer ${token}` }, formData.getHeaders()),
743
+ method: "POST",
744
+ body: formData,
673
745
  });
674
746
  this.logger.logAccesslog(functions_framework_1.LogLevel.INFO, safeJsonStringify({
675
747
  type: AgentEventType.FRAMEWORK_EVENT,
676
748
  scene: "AI_SDK_UPLOAD_FILE",
677
749
  method: "POST",
678
750
  url: "https://dashscope.aliyuncs.com/compatible-mode/v1/files",
679
- status: response.status,
751
+ status: response.statusCode,
680
752
  data: response.data,
681
753
  eventId: this.context.eventID,
682
754
  timestamp: new Date().toISOString(),
@@ -690,8 +762,8 @@ class AgentRuntime {
690
762
  }
691
763
  else {
692
764
  return {
693
- code: response.status,
694
- msg: response.statusText || "文件上传失败",
765
+ code: response.statusCode,
766
+ msg: ((_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.message) || "文件上传失败",
695
767
  data: response.data,
696
768
  };
697
769
  }
@@ -712,6 +784,24 @@ class AgentRuntime {
712
784
  msg: error instanceof Error ? error.message : "文件上传失败",
713
785
  };
714
786
  }
787
+ finally {
788
+ if (tempFilePath) {
789
+ try {
790
+ fs.unlinkSync(tempFilePath);
791
+ }
792
+ catch (cleanupError) {
793
+ this.logger.logAccesslog(functions_framework_1.LogLevel.WARN, safeJsonStringify({
794
+ type: AgentEventType.FRAMEWORK_EVENT,
795
+ scene: "AI_SDK_UPLOAD_FILE_CLEANUP",
796
+ message: "临时文件清理失败",
797
+ tempFilePath,
798
+ error: cleanupError instanceof Error ? cleanupError.message : "未知错误",
799
+ eventId: this.context.eventID,
800
+ timestamp: new Date().toISOString(),
801
+ }));
802
+ }
803
+ }
804
+ }
715
805
  });
716
806
  }
717
807
  }
@@ -101,13 +101,13 @@ export declare const participantInfoSchema: z.ZodObject<{
101
101
  avatar_url: z.ZodString;
102
102
  }, "strip", z.ZodTypeAny, {
103
103
  name?: string;
104
- desc?: string;
105
104
  id?: string;
105
+ desc?: string;
106
106
  avatar_url?: string;
107
107
  }, {
108
108
  name?: string;
109
- desc?: string;
110
109
  id?: string;
110
+ desc?: string;
111
111
  avatar_url?: string;
112
112
  }>;
113
113
  export declare const conversationSchema: z.ZodObject<{
@@ -84,6 +84,19 @@ export declare const videoUrlContentSchema: z.ZodObject<{
84
84
  url?: string;
85
85
  };
86
86
  }>;
87
+ export declare const docUrlContentSchema: z.ZodObject<{
88
+ type: z.ZodLiteral<"doc_url">;
89
+ doc_url: z.ZodArray<z.ZodString, "many">;
90
+ file_parsing_strategy: z.ZodOptional<z.ZodString>;
91
+ }, "strip", z.ZodTypeAny, {
92
+ type?: "doc_url";
93
+ doc_url?: string[];
94
+ file_parsing_strategy?: string;
95
+ }, {
96
+ type?: "doc_url";
97
+ doc_url?: string[];
98
+ file_parsing_strategy?: string;
99
+ }>;
87
100
  export declare const messageContentSchema: z.ZodUnion<[z.ZodObject<{
88
101
  type: z.ZodLiteral<"text">;
89
102
  text: z.ZodString;
@@ -164,6 +177,18 @@ export declare const messageContentSchema: z.ZodUnion<[z.ZodObject<{
164
177
  video_url?: {
165
178
  url?: string;
166
179
  };
180
+ }>, z.ZodObject<{
181
+ type: z.ZodLiteral<"doc_url">;
182
+ doc_url: z.ZodArray<z.ZodString, "many">;
183
+ file_parsing_strategy: z.ZodOptional<z.ZodString>;
184
+ }, "strip", z.ZodTypeAny, {
185
+ type?: "doc_url";
186
+ doc_url?: string[];
187
+ file_parsing_strategy?: string;
188
+ }, {
189
+ type?: "doc_url";
190
+ doc_url?: string[];
191
+ file_parsing_strategy?: string;
167
192
  }>]>;
168
193
  export declare const baseMessageSchema: z.ZodObject<{
169
194
  role: z.ZodUnion<[z.ZodLiteral<"system">, z.ZodLiteral<"user">, z.ZodLiteral<"assistant">]>;
@@ -247,6 +272,18 @@ export declare const baseMessageSchema: z.ZodObject<{
247
272
  video_url?: {
248
273
  url?: string;
249
274
  };
275
+ }>, z.ZodObject<{
276
+ type: z.ZodLiteral<"doc_url">;
277
+ doc_url: z.ZodArray<z.ZodString, "many">;
278
+ file_parsing_strategy: z.ZodOptional<z.ZodString>;
279
+ }, "strip", z.ZodTypeAny, {
280
+ type?: "doc_url";
281
+ doc_url?: string[];
282
+ file_parsing_strategy?: string;
283
+ }, {
284
+ type?: "doc_url";
285
+ doc_url?: string[];
286
+ file_parsing_strategy?: string;
250
287
  }>]>, "many">]>;
251
288
  }, "strip", z.ZodTypeAny, {
252
289
  role?: "user" | "assistant" | "system";
@@ -272,6 +309,10 @@ export declare const baseMessageSchema: z.ZodObject<{
272
309
  video_url?: {
273
310
  url?: string;
274
311
  };
312
+ } | {
313
+ type?: "doc_url";
314
+ doc_url?: string[];
315
+ file_parsing_strategy?: string;
275
316
  })[];
276
317
  }, {
277
318
  role?: "user" | "assistant" | "system";
@@ -297,6 +338,10 @@ export declare const baseMessageSchema: z.ZodObject<{
297
338
  video_url?: {
298
339
  url?: string;
299
340
  };
341
+ } | {
342
+ type?: "doc_url";
343
+ doc_url?: string[];
344
+ file_parsing_strategy?: string;
300
345
  })[];
301
346
  }>;
302
347
  export declare const toolCallMessageSchema: z.ZodObject<{
@@ -410,6 +455,18 @@ export declare const messageItemSchema: z.ZodUnion<[z.ZodObject<{
410
455
  video_url?: {
411
456
  url?: string;
412
457
  };
458
+ }>, z.ZodObject<{
459
+ type: z.ZodLiteral<"doc_url">;
460
+ doc_url: z.ZodArray<z.ZodString, "many">;
461
+ file_parsing_strategy: z.ZodOptional<z.ZodString>;
462
+ }, "strip", z.ZodTypeAny, {
463
+ type?: "doc_url";
464
+ doc_url?: string[];
465
+ file_parsing_strategy?: string;
466
+ }, {
467
+ type?: "doc_url";
468
+ doc_url?: string[];
469
+ file_parsing_strategy?: string;
413
470
  }>]>, "many">]>;
414
471
  }, "strip", z.ZodTypeAny, {
415
472
  role?: "user" | "assistant" | "system";
@@ -435,6 +492,10 @@ export declare const messageItemSchema: z.ZodUnion<[z.ZodObject<{
435
492
  video_url?: {
436
493
  url?: string;
437
494
  };
495
+ } | {
496
+ type?: "doc_url";
497
+ doc_url?: string[];
498
+ file_parsing_strategy?: string;
438
499
  })[];
439
500
  }, {
440
501
  role?: "user" | "assistant" | "system";
@@ -460,6 +521,10 @@ export declare const messageItemSchema: z.ZodUnion<[z.ZodObject<{
460
521
  video_url?: {
461
522
  url?: string;
462
523
  };
524
+ } | {
525
+ type?: "doc_url";
526
+ doc_url?: string[];
527
+ file_parsing_strategy?: string;
463
528
  })[];
464
529
  }>, z.ZodObject<{
465
530
  role: z.ZodLiteral<"tool">;
@@ -571,6 +636,18 @@ export declare const messageHistorySchema: z.ZodArray<z.ZodUnion<[z.ZodObject<{
571
636
  video_url?: {
572
637
  url?: string;
573
638
  };
639
+ }>, z.ZodObject<{
640
+ type: z.ZodLiteral<"doc_url">;
641
+ doc_url: z.ZodArray<z.ZodString, "many">;
642
+ file_parsing_strategy: z.ZodOptional<z.ZodString>;
643
+ }, "strip", z.ZodTypeAny, {
644
+ type?: "doc_url";
645
+ doc_url?: string[];
646
+ file_parsing_strategy?: string;
647
+ }, {
648
+ type?: "doc_url";
649
+ doc_url?: string[];
650
+ file_parsing_strategy?: string;
574
651
  }>]>, "many">]>;
575
652
  }, "strip", z.ZodTypeAny, {
576
653
  role?: "user" | "assistant" | "system";
@@ -596,6 +673,10 @@ export declare const messageHistorySchema: z.ZodArray<z.ZodUnion<[z.ZodObject<{
596
673
  video_url?: {
597
674
  url?: string;
598
675
  };
676
+ } | {
677
+ type?: "doc_url";
678
+ doc_url?: string[];
679
+ file_parsing_strategy?: string;
599
680
  })[];
600
681
  }, {
601
682
  role?: "user" | "assistant" | "system";
@@ -621,6 +702,10 @@ export declare const messageHistorySchema: z.ZodArray<z.ZodUnion<[z.ZodObject<{
621
702
  video_url?: {
622
703
  url?: string;
623
704
  };
705
+ } | {
706
+ type?: "doc_url";
707
+ doc_url?: string[];
708
+ file_parsing_strategy?: string;
624
709
  })[];
625
710
  }>, z.ZodObject<{
626
711
  role: z.ZodLiteral<"tool">;
@@ -734,6 +819,18 @@ export declare const sendMessageInputSchema: z.ZodObject<{
734
819
  video_url?: {
735
820
  url?: string;
736
821
  };
822
+ }>, z.ZodObject<{
823
+ type: z.ZodLiteral<"doc_url">;
824
+ doc_url: z.ZodArray<z.ZodString, "many">;
825
+ file_parsing_strategy: z.ZodOptional<z.ZodString>;
826
+ }, "strip", z.ZodTypeAny, {
827
+ type?: "doc_url";
828
+ doc_url?: string[];
829
+ file_parsing_strategy?: string;
830
+ }, {
831
+ type?: "doc_url";
832
+ doc_url?: string[];
833
+ file_parsing_strategy?: string;
737
834
  }>]>, "many">]>;
738
835
  }, "strip", z.ZodTypeAny, {
739
836
  role?: "user" | "assistant" | "system";
@@ -759,6 +856,10 @@ export declare const sendMessageInputSchema: z.ZodObject<{
759
856
  video_url?: {
760
857
  url?: string;
761
858
  };
859
+ } | {
860
+ type?: "doc_url";
861
+ doc_url?: string[];
862
+ file_parsing_strategy?: string;
762
863
  })[];
763
864
  }, {
764
865
  role?: "user" | "assistant" | "system";
@@ -784,6 +885,10 @@ export declare const sendMessageInputSchema: z.ZodObject<{
784
885
  video_url?: {
785
886
  url?: string;
786
887
  };
888
+ } | {
889
+ type?: "doc_url";
890
+ doc_url?: string[];
891
+ file_parsing_strategy?: string;
787
892
  })[];
788
893
  }>, z.ZodObject<{
789
894
  role: z.ZodLiteral<"tool">;
@@ -813,6 +918,25 @@ export declare const sendMessageInputSchema: z.ZodObject<{
813
918
  content?: string | any[] | Record<string, any>;
814
919
  name?: string;
815
920
  }>]>, "many">;
921
+ files: z.ZodOptional<z.ZodArray<z.ZodObject<{
922
+ id: z.ZodString;
923
+ filename: z.ZodString;
924
+ purpose: z.ZodString;
925
+ bytes: z.ZodNumber;
926
+ created_at: z.ZodNumber;
927
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
928
+ id: z.ZodString;
929
+ filename: z.ZodString;
930
+ purpose: z.ZodString;
931
+ bytes: z.ZodNumber;
932
+ created_at: z.ZodNumber;
933
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
934
+ id: z.ZodString;
935
+ filename: z.ZodString;
936
+ purpose: z.ZodString;
937
+ bytes: z.ZodNumber;
938
+ created_at: z.ZodNumber;
939
+ }, z.ZodTypeAny, "passthrough">>, "many">>;
816
940
  }, "strip", z.ZodTypeAny, {
817
941
  msg?: string;
818
942
  history?: ({
@@ -839,6 +963,10 @@ export declare const sendMessageInputSchema: z.ZodObject<{
839
963
  video_url?: {
840
964
  url?: string;
841
965
  };
966
+ } | {
967
+ type?: "doc_url";
968
+ doc_url?: string[];
969
+ file_parsing_strategy?: string;
842
970
  })[];
843
971
  } | {
844
972
  function?: string;
@@ -850,6 +978,13 @@ export declare const sendMessageInputSchema: z.ZodObject<{
850
978
  content?: string | any[] | Record<string, any>;
851
979
  name?: string;
852
980
  })[];
981
+ files?: z.objectOutputType<{
982
+ id: z.ZodString;
983
+ filename: z.ZodString;
984
+ purpose: z.ZodString;
985
+ bytes: z.ZodNumber;
986
+ created_at: z.ZodNumber;
987
+ }, z.ZodTypeAny, "passthrough">[];
853
988
  }, {
854
989
  msg?: string;
855
990
  history?: ({
@@ -876,6 +1011,10 @@ export declare const sendMessageInputSchema: z.ZodObject<{
876
1011
  video_url?: {
877
1012
  url?: string;
878
1013
  };
1014
+ } | {
1015
+ type?: "doc_url";
1016
+ doc_url?: string[];
1017
+ file_parsing_strategy?: string;
879
1018
  })[];
880
1019
  } | {
881
1020
  function?: string;
@@ -887,12 +1026,20 @@ export declare const sendMessageInputSchema: z.ZodObject<{
887
1026
  content?: string | any[] | Record<string, any>;
888
1027
  name?: string;
889
1028
  })[];
1029
+ files?: z.objectInputType<{
1030
+ id: z.ZodString;
1031
+ filename: z.ZodString;
1032
+ purpose: z.ZodString;
1033
+ bytes: z.ZodNumber;
1034
+ created_at: z.ZodNumber;
1035
+ }, z.ZodTypeAny, "passthrough">[];
890
1036
  }>;
891
1037
  export type TextContent = z.infer<typeof textContentSchema>;
892
1038
  export type ImageContent = z.infer<typeof imageContentSchema>;
893
1039
  export type AudioContent = z.infer<typeof audioContentSchema>;
894
1040
  export type VideoContent = z.infer<typeof videoContentSchema>;
895
1041
  export type VideoUrlContent = z.infer<typeof videoUrlContentSchema>;
1042
+ export type DocUrlContent = z.infer<typeof docUrlContentSchema>;
896
1043
  export type MessageContent = z.infer<typeof messageContentSchema>;
897
1044
  export type BaseMessage = z.infer<typeof baseMessageSchema>;
898
1045
  export type ToolCallMessage = z.infer<typeof toolCallMessageSchema>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sendMessageInputSchema = exports.messageHistorySchema = exports.messageItemSchema = exports.toolResultMessageSchema = exports.toolCallMessageSchema = exports.baseMessageSchema = exports.messageContentSchema = exports.videoUrlContentSchema = exports.videoContentSchema = exports.audioContentSchema = exports.imageContentSchema = exports.textContentSchema = void 0;
3
+ exports.sendMessageInputSchema = exports.messageHistorySchema = exports.messageItemSchema = exports.toolResultMessageSchema = exports.toolCallMessageSchema = exports.baseMessageSchema = exports.messageContentSchema = exports.docUrlContentSchema = exports.videoUrlContentSchema = exports.videoContentSchema = exports.audioContentSchema = exports.imageContentSchema = exports.textContentSchema = void 0;
4
4
  const zod_1 = require("zod");
5
5
  exports.textContentSchema = zod_1.z.object({
6
6
  type: zod_1.z.literal("text"),
@@ -29,12 +29,18 @@ exports.videoUrlContentSchema = zod_1.z.object({
29
29
  url: zod_1.z.string(),
30
30
  }),
31
31
  });
32
+ exports.docUrlContentSchema = zod_1.z.object({
33
+ type: zod_1.z.literal("doc_url"),
34
+ doc_url: zod_1.z.array(zod_1.z.string()),
35
+ file_parsing_strategy: zod_1.z.string().optional(),
36
+ });
32
37
  exports.messageContentSchema = zod_1.z.union([
33
38
  exports.textContentSchema,
34
39
  exports.imageContentSchema,
35
40
  exports.audioContentSchema,
36
41
  exports.videoContentSchema,
37
42
  exports.videoUrlContentSchema,
43
+ exports.docUrlContentSchema,
38
44
  ]);
39
45
  exports.baseMessageSchema = zod_1.z.object({
40
46
  role: zod_1.z.union([zod_1.z.literal("system"), zod_1.z.literal("user"), zod_1.z.literal("assistant")]),
@@ -59,4 +65,15 @@ exports.messageHistorySchema = zod_1.z.array(exports.messageItemSchema);
59
65
  exports.sendMessageInputSchema = zod_1.z.object({
60
66
  msg: zod_1.z.string(),
61
67
  history: exports.messageHistorySchema,
68
+ files: zod_1.z
69
+ .array(zod_1.z
70
+ .object({
71
+ id: zod_1.z.string(),
72
+ filename: zod_1.z.string(),
73
+ purpose: zod_1.z.string(),
74
+ bytes: zod_1.z.number(),
75
+ created_at: zod_1.z.number(),
76
+ })
77
+ .passthrough())
78
+ .optional(),
62
79
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vectorx/agent-runtime",
3
- "version": "0.5.1",
3
+ "version": "0.6.1",
4
4
  "description": "Cloud AI agent runtime",
5
5
  "main": "lib/index.js",
6
6
  "files": [
@@ -20,13 +20,15 @@
20
20
  "node": ">=18.0.0"
21
21
  },
22
22
  "dependencies": {
23
- "@vectorx/ai-sdk": "0.5.1",
24
- "@vectorx/functions-framework": "0.5.1",
23
+ "@vectorx/ai-sdk": "0.6.1",
24
+ "@vectorx/functions-framework": "0.6.1",
25
+ "form-data": "^4.0.0",
25
26
  "langfuse": "^3.38.4",
26
27
  "query-string": "^6.14.1",
27
28
  "zod": "^3.24.2"
28
29
  },
29
30
  "devDependencies": {
31
+ "@types/form-data": "^2.5.0",
30
32
  "@types/jest": "^29.5.12",
31
33
  "@types/node": "^20.11.24",
32
34
  "@typescript-eslint/eslint-plugin": "^7.1.0",