@@ -722,6 +722,113 @@ export class Thread {
722722 }
723723 }
724724
725+ /**
726+ * Add messages to a thread in batch mode. This will process messages concurrently, which is useful for data migrations.
727+ *
728+ * @param {string } threadId - The ID of the thread to which messages should be added.
729+ * @param {Zep.AddThreadMessagesRequest } request
730+ * @param {Thread.RequestOptions } requestOptions - Request-specific configuration.
731+ *
732+ * @throws {@link Zep.InternalServerError }
733+ *
734+ * @example
735+ * await client.thread.addMessagesBatch("threadId", {
736+ * messages: [{
737+ * content: "content",
738+ * role: "norole"
739+ * }]
740+ * })
741+ */
742+ public addMessagesBatch (
743+ threadId : string ,
744+ request : Zep . AddThreadMessagesRequest ,
745+ requestOptions ?: Thread . RequestOptions ,
746+ ) : core . HttpResponsePromise < Zep . AddThreadMessagesResponse > {
747+ return core . HttpResponsePromise . fromPromise ( this . __addMessagesBatch ( threadId , request , requestOptions ) ) ;
748+ }
749+
750+ private async __addMessagesBatch (
751+ threadId : string ,
752+ request : Zep . AddThreadMessagesRequest ,
753+ requestOptions ?: Thread . RequestOptions ,
754+ ) : Promise < core . WithRawResponse < Zep . AddThreadMessagesResponse > > {
755+ const _response = await ( this . _options . fetcher ?? core . fetcher ) ( {
756+ url : core . url . join (
757+ ( await core . Supplier . get ( this . _options . baseUrl ) ) ??
758+ ( await core . Supplier . get ( this . _options . environment ) ) ??
759+ environments . ZepEnvironment . Default ,
760+ `threads/${ encodeURIComponent ( threadId ) } /messages-batch` ,
761+ ) ,
762+ method : "POST" ,
763+ headers : mergeHeaders (
764+ this . _options ?. headers ,
765+ mergeOnlyDefinedHeaders ( { ...( await this . _getCustomAuthorizationHeaders ( ) ) } ) ,
766+ requestOptions ?. headers ,
767+ ) ,
768+ contentType : "application/json" ,
769+ requestType : "json" ,
770+ body : serializers . AddThreadMessagesRequest . jsonOrThrow ( request , {
771+ unrecognizedObjectKeys : "strip" ,
772+ omitUndefined : true ,
773+ } ) ,
774+ timeoutMs : requestOptions ?. timeoutInSeconds != null ? requestOptions . timeoutInSeconds * 1000 : 60000 ,
775+ maxRetries : requestOptions ?. maxRetries ,
776+ abortSignal : requestOptions ?. abortSignal ,
777+ } ) ;
778+ if ( _response . ok ) {
779+ return {
780+ data : serializers . AddThreadMessagesResponse . parseOrThrow ( _response . body , {
781+ unrecognizedObjectKeys : "passthrough" ,
782+ allowUnrecognizedUnionMembers : true ,
783+ allowUnrecognizedEnumValues : true ,
784+ skipValidation : true ,
785+ breadcrumbsPrefix : [ "response" ] ,
786+ } ) ,
787+ rawResponse : _response . rawResponse ,
788+ } ;
789+ }
790+
791+ if ( _response . error . reason === "status-code" ) {
792+ switch ( _response . error . statusCode ) {
793+ case 500 :
794+ throw new Zep . InternalServerError (
795+ serializers . ApiError . parseOrThrow ( _response . error . body , {
796+ unrecognizedObjectKeys : "passthrough" ,
797+ allowUnrecognizedUnionMembers : true ,
798+ allowUnrecognizedEnumValues : true ,
799+ skipValidation : true ,
800+ breadcrumbsPrefix : [ "response" ] ,
801+ } ) ,
802+ _response . rawResponse ,
803+ ) ;
804+ default :
805+ throw new errors . ZepError ( {
806+ statusCode : _response . error . statusCode ,
807+ body : _response . error . body ,
808+ rawResponse : _response . rawResponse ,
809+ } ) ;
810+ }
811+ }
812+
813+ switch ( _response . error . reason ) {
814+ case "non-json" :
815+ throw new errors . ZepError ( {
816+ statusCode : _response . error . statusCode ,
817+ body : _response . error . rawBody ,
818+ rawResponse : _response . rawResponse ,
819+ } ) ;
820+ case "timeout" :
821+ throw new errors . ZepTimeoutError (
822+ "Timeout exceeded when calling POST /threads/{threadId}/messages-batch." ,
823+ ) ;
824+ case "unknown" :
825+ throw new errors . ZepError ( {
826+ message : _response . error . errorMessage ,
827+ rawResponse : _response . rawResponse ,
828+ } ) ;
829+ }
830+ }
831+
725832 protected async _getCustomAuthorizationHeaders ( ) {
726833 const apiKeyValue = ( await core . Supplier . get ( this . _options . apiKey ) ) ?? process ?. env [ "ZEP_API_KEY" ] ;
727834 return { Authorization : `Api-Key ${ apiKeyValue } ` } ;
0 commit comments