@mastra/memory 0.0.2-alpha.3 → 0.0.2-alpha.5

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.
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@mastra/core"),t=require("crypto"),r=require("pg"),n=require("@upstash/redis");function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function s(e,t,r,n,a,s,o){try{var i=e[s](o),u=i.value}catch(e){return void r(e)}i.done?t(u):Promise.resolve(u).then(n,a)}function o(e){return function(){var t=this,r=arguments;return new Promise((function(n,a){var o=e.apply(t,r);function i(e){s(o,n,a,i,u,"next",e)}function u(e){s(o,n,a,i,u,"throw",e)}i(void 0)}))}}function i(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return a(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?a(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},u.apply(null,arguments)}function c(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,h(e,t)}function l(){l=function(){return t};var e,t={},r=Object.prototype,n=r.hasOwnProperty,a=Object.defineProperty||function(e,t,r){e[t]=r.value},s="function"==typeof Symbol?Symbol:{},o=s.iterator||"@@iterator",i=s.asyncIterator||"@@asyncIterator",u=s.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function h(e,t,r,n){var s=Object.create((t&&t.prototype instanceof x?t:x).prototype),o=new L(n||[]);return a(s,"_invoke",{value:A(e,r,o)}),s}function p(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=h;var d="suspendedStart",f="suspendedYield",v="executing",g="completed",y={};function x(){}function E(){}function m(){}var T={};c(T,o,(function(){return this}));var _=Object.getPrototypeOf,w=_&&_(_(R([])));w&&w!==r&&n.call(w,o)&&(T=w);var b=m.prototype=x.prototype=Object.create(T);function S(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function O(e,t){function r(a,s,o,i){var u=p(e[a],e,s);if("throw"!==u.type){var c=u.arg,l=c.value;return l&&"object"==typeof l&&n.call(l,"__await")?t.resolve(l.__await).then((function(e){r("next",e,o,i)}),(function(e){r("throw",e,o,i)})):t.resolve(l).then((function(e){c.value=e,o(c)}),(function(e){return r("throw",e,o,i)}))}i(u.arg)}var s;a(this,"_invoke",{value:function(e,n){function a(){return new t((function(t,a){r(e,n,t,a)}))}return s=s?s.then(a,a):a()}})}function A(t,r,n){var a=d;return function(s,o){if(a===v)throw Error("Generator is already running");if(a===g){if("throw"===s)throw o;return{value:e,done:!0}}for(n.method=s,n.arg=o;;){var i=n.delegate;if(i){var u=k(i,n);if(u){if(u===y)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(a===d)throw a=g,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);a=v;var c=p(t,r,n);if("normal"===c.type){if(a=n.done?g:f,c.arg===y)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(a=g,n.method="throw",n.arg=c.arg)}}}function k(t,r){var n=r.method,a=t.iterator[n];if(a===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,k(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),y;var s=p(a,t.iterator,r.arg);if("throw"===s.type)return r.method="throw",r.arg=s.arg,r.delegate=null,y;var o=s.arg;return o?o.done?(r[t.resultName]=o.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,y):o:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y)}function N(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function I(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function L(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(N,this),this.reset(!0)}function R(t){if(t||""===t){var r=t[o];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,s=function r(){for(;++a<t.length;)if(n.call(t,a))return r.value=t[a],r.done=!1,r;return r.value=e,r.done=!0,r};return s.next=s}}throw new TypeError(typeof t+" is not iterable")}return E.prototype=m,a(b,"constructor",{value:m,configurable:!0}),a(m,"constructor",{value:E,configurable:!0}),E.displayName=c(m,u,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===E||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,c(e,u,"GeneratorFunction")),e.prototype=Object.create(b),e},t.awrap=function(e){return{__await:e}},S(O.prototype),c(O.prototype,i,(function(){return this})),t.AsyncIterator=O,t.async=function(e,r,n,a,s){void 0===s&&(s=Promise);var o=new O(h(e,r,n,a),s);return t.isGeneratorFunction(r)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},S(b),c(b,u,"Generator"),c(b,o,(function(){return this})),c(b,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},t.values=R,L.prototype={constructor:L,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(I),!t)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var r=this;function a(n,a){return i.type="throw",i.arg=t,r.next=n,a&&(r.method="next",r.arg=e),!!a}for(var s=this.tryEntries.length-1;s>=0;--s){var o=this.tryEntries[s],i=o.completion;if("root"===o.tryLoc)return a("end");if(o.tryLoc<=this.prev){var u=n.call(o,"catchLoc"),c=n.call(o,"finallyLoc");if(u&&c){if(this.prev<o.catchLoc)return a(o.catchLoc,!0);if(this.prev<o.finallyLoc)return a(o.finallyLoc)}else if(u){if(this.prev<o.catchLoc)return a(o.catchLoc,!0)}else{if(!c)throw Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return a(o.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var s=a;break}}s&&("break"===e||"continue"===e)&&s.tryLoc<=t&&t<=s.finallyLoc&&(s=null);var o=s?s.completion:{};return o.type=e,o.arg=t,s?(this.method="next",this.next=s.finallyLoc,y):this.complete(o)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),y},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),I(r),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;I(r)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:R(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},t}function h(e,t){return h=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},h(e,t)}var p=r.Pool,d=function(e){function r(t){var r;return(r=e.call(this)||this).pool=void 0,r.hasTables=!1,r.pool=new p({connectionString:t.connectionString}),r.MAX_CONTEXT_TOKENS=t.maxTokens,r}c(r,e);var n=r.prototype;return n.getThreadById=function(){var e=o(l().mark((function e(t){var r,n;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.threadId,e.next=3,this.ensureTablesExist();case 3:return e.next=5,this.pool.connect();case 5:return n=e.sent,e.prev=6,e.next=9,n.query("\n SELECT id, title, created_at AS createdAt, updated_at AS updatedAt, resourceid, metadata\n FROM mastra_threads\n WHERE id = $1\n ",[r]);case 9:return e.abrupt("return",e.sent.rows[0]||null);case 11:return e.prev=11,n.release(),e.finish(11);case 14:case"end":return e.stop()}}),e,this,[[6,,11,14]])})));return function(t){return e.apply(this,arguments)}}(),n.getThreadsByResourceId=function(){var e=o(l().mark((function e(t){var r,n;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.resourceid,e.next=3,this.ensureTablesExist();case 3:return e.next=5,this.pool.connect();case 5:return n=e.sent,e.prev=6,e.next=9,n.query("\n SELECT id, title, resourceid, created_at AS createdAt, updated_at AS updatedAt, metadata\n FROM mastra_threads\n WHERE resourceid = $1\n ",[r]);case 9:return e.abrupt("return",e.sent.rows);case 11:return e.prev=11,n.release(),e.finish(11);case 14:case"end":return e.stop()}}),e,this,[[6,,11,14]])})));return function(t){return e.apply(this,arguments)}}(),n.saveThread=function(){var e=o(l().mark((function e(t){var r,n,a,s,o,i,u,c,h,p;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.thread,e.next=3,this.ensureTablesExist();case 3:return e.next=5,this.pool.connect();case 5:return n=e.sent,e.prev=6,s=r.id,o=r.title,i=r.createdAt,u=r.updatedAt,c=r.resourceid,h=r.metadata,e.next=10,n.query("\n INSERT INTO mastra_threads (id, title, created_at, updated_at, resourceid, metadata)\n VALUES ($1, $2, $3, $4, $5, $6)\n ON CONFLICT (id) DO UPDATE SET title = $2, updated_at = $4, resourceid = $5, metadata = $6\n RETURNING id, title, created_at AS createdAt, updated_at AS updatedAt, resourceid, metadata\n ",[s,o,i,u,c,JSON.stringify(h)]);case 10:return e.abrupt("return",null==(p=e.sent)||null==(a=p.rows)?void 0:a[0]);case 12:return e.prev=12,n.release(),e.finish(12);case 15:case"end":return e.stop()}}),e,this,[[6,,12,15]])})));return function(t){return e.apply(this,arguments)}}(),n.updateThread=function(){var e=o(l().mark((function e(t,r,n){var a,s,o;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.pool.connect();case 2:return a=e.sent,e.prev=3,e.next=6,a.query("\n UPDATE mastra_threads\n SET title = $1, metadata = $2, updated_at = NOW()\n WHERE id = $3\n RETURNING *\n ",[r,JSON.stringify(n),t]);case 6:return e.abrupt("return",null==(o=e.sent)||null==(s=o.rows)?void 0:s[0]);case 8:return e.prev=8,a.release(),e.finish(8);case 11:case"end":return e.stop()}}),e,this,[[3,,8,11]])})));return function(t,r,n){return e.apply(this,arguments)}}(),n.deleteThread=function(){var e=o(l().mark((function e(t){var r;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.pool.connect();case 2:return r=e.sent,e.prev=3,e.next=6,r.query("\n DELETE FROM mastra_messages\n WHERE thread_id = $1\n ",[t]);case 6:return e.next=8,r.query("\n DELETE FROM mastra_threads\n WHERE id = $1\n ",[t]);case 8:return e.prev=8,r.release(),e.finish(8);case 11:case"end":return e.stop()}}),e,this,[[3,,8,11]])})));return function(t){return e.apply(this,arguments)}}(),n.validateToolCallArgs=function(){var e=o(l().mark((function e(t){var r,n;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.hashedArgs,e.next=3,this.ensureTablesExist();case 3:return e.next=5,this.pool.connect();case 5:return n=e.sent,e.prev=6,e.next=9,n.query(" SELECT tool_call_ids as toolCallIds, \n tool_call_args as toolCallArgs,\n created_at AS createdAt\n FROM mastra_messages\n WHERE tool_call_args::jsonb @> $1\n AND tool_call_args_expire_at > $2\n ORDER BY created_at ASC\n LIMIT 1",[JSON.stringify([r]),(new Date).toISOString()]);case 9:return e.abrupt("return",e.sent.rows.length>0);case 13:return e.prev=13,e.t0=e.catch(6),console.log("error checking if valid arg exists====",e.t0),e.abrupt("return",!1);case 17:return e.prev=17,n.release(),e.finish(17);case 20:case"end":return e.stop()}}),e,this,[[6,13,17,20]])})));return function(t){return e.apply(this,arguments)}}(),n.getToolResult=function(){var e=o(l().mark((function e(r){var n,a,s,o,i,u,c,h,p,d,f,v,g,y,x,E,m,T;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=r.threadId,a=r.toolArgs,s=r.toolName,e.next=3,this.ensureTablesExist();case 3:return console.log("checking for cached tool result====",JSON.stringify(a,null,2)),e.next=6,this.pool.connect();case 6:return o=e.sent,e.prev=7,i=t.createHash("sha256").update(JSON.stringify({args:a,threadId:n,toolName:s})).digest("hex"),console.log("hashedToolArgs====",i),e.next=12,o.query("SELECT tool_call_ids, \n tool_call_args,\n created_at\n FROM mastra_messages\n WHERE tool_call_args::jsonb @> $1\n AND tool_call_args_expire_at > $2\n ORDER BY created_at ASC\n LIMIT 1",[JSON.stringify([i]),(new Date).toISOString()]);case 12:if(!((u=e.sent).rows.length>0)){e.next=36;break}return console.log("toolArgsResult====",JSON.stringify(u.rows[0],null,2)),f=JSON.parse(null==(c=u.rows[0])?void 0:c.tool_call_args),v=JSON.parse(null==(h=u.rows[0])?void 0:h.tool_call_ids),g=null==(p=u.rows[0])?void 0:p.created_at,console.log("toolCallArgs====",JSON.stringify(f,null,2)),console.log("toolCallIds====",JSON.stringify(v,null,2)),console.log("createdAt====",g),y=f.findIndex((function(e){return e===i})),x=v[y],console.log("correspondingToolCallId====",{correspondingToolCallId:x,toolCallArgsIndex:y}),e.next=26,o.query("SELECT content \n FROM mastra_messages \n WHERE thread_id = $1\n AND tool_call_ids ILIKE $2\n AND type = 'tool-result'\n AND created_at = $3\n LIMIT 1",[n,"%"+x+"%",new Date(g).toISOString()]);case 26:if(E=e.sent,console.log("called toolResult"),0!==E.rows.length){e.next=31;break}return console.log("no tool result found"),e.abrupt("return",null);case 31:if(m=JSON.parse(null==(d=E.rows[0])?void 0:d.content),T=m.find((function(e){return e.toolCallId===x})),console.log("requiredToolResult====",JSON.stringify(T,null,2)),!T){e.next=36;break}return e.abrupt("return",T.result);case 36:return e.abrupt("return",null);case 39:return e.prev=39,e.t0=e.catch(7),console.log("error getting cached tool result====",e.t0),e.abrupt("return",null);case 43:return e.prev=43,o.release(),e.finish(43);case 46:case"end":return e.stop()}}),e,this,[[7,39,43,46]])})));return function(t){return e.apply(this,arguments)}}(),n.getContextWindow=function(){var e=o(l().mark((function e(t){var r,n,a,s,o,i,u,c;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.threadId,n=t.startDate,a=t.endDate,o=void 0===(s=t.format)?"raw":s,e.next=3,this.ensureTablesExist();case 3:return e.next=5,this.pool.connect();case 5:if(i=e.sent,e.prev=6,!this.MAX_CONTEXT_TOKENS){e.next=13;break}return e.next=10,i.query("WITH RankedMessages AS (\n SELECT *,\n SUM(tokens) OVER (ORDER BY created_at DESC) as running_total\n FROM mastra_messages\n WHERE thread_id = $1\n AND type = 'text'\n "+(n?"AND created_at >= '"+n.toISOString()+"'":"")+"\n "+(a?"AND created_at <= '"+a.toISOString()+"'":"")+"\n ORDER BY created_at DESC\n )\n SELECT id, \n content, \n role, \n type,\n created_at AS createdAt, \n thread_id AS threadId\n FROM RankedMessages\n WHERE running_total <= $2\n ORDER BY created_at ASC",[r,this.MAX_CONTEXT_TOKENS]);case 10:return u=e.sent,console.log("Format",o),e.abrupt("return",this.parseMessages(u.rows));case 13:return e.next=15,i.query("SELECT id, \n content, \n role, \n type,\n created_at AS createdAt, \n thread_id AS threadId\n FROM mastra_messages\n WHERE thread_id = $1\n AND type = 'text'\n "+(n?"AND created_at >= '"+n.toISOString()+"'":"")+"\n "+(a?"AND created_at <= '"+a.toISOString()+"'":"")+"\n ORDER BY created_at ASC",[r]);case 15:return c=e.sent,console.log("Format",o),e.abrupt("return",this.parseMessages(c.rows));case 20:return e.prev=20,e.t0=e.catch(6),console.log("error getting context window====",e.t0),e.abrupt("return",[]);case 24:return e.prev=24,i.release(),e.finish(24);case 27:case"end":return e.stop()}}),e,this,[[6,20,24,27]])})));return function(t){return e.apply(this,arguments)}}(),n.getMessages=function(){var e=o(l().mark((function e(t){var r,n,a,s;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.threadId,e.next=3,this.ensureTablesExist();case 3:return e.next=5,this.pool.connect();case 5:return n=e.sent,e.prev=6,e.next=9,n.query("\n SELECT \n id, \n content, \n role, \n type,\n created_at AS createdAt, \n thread_id AS threadId\n FROM mastra_messages\n WHERE thread_id = $1\n ORDER BY created_at ASC\n ",[r]);case 9:return a=this.parseMessages(e.sent.rows),s=this.convertToUIMessages(a),e.abrupt("return",{messages:a,uiMessages:s});case 13:return e.prev=13,n.release(),e.finish(13);case 16:case"end":return e.stop()}}),e,this,[[6,,13,16]])})));return function(t){return e.apply(this,arguments)}}(),n.saveMessages=function(){var e=o(l().mark((function e(r){var n,a,s,o,u,c=this;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=r.messages,e.next=3,this.ensureTablesExist();case 3:return e.next=5,this.pool.connect();case 5:return a=e.sent,e.prev=6,e.next=9,a.query("BEGIN");case 9:s=l().mark((function e(){var r,n,s,o,i,h,p,d,f,v,g,y,x,E,m,T,_;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=u.value,console.log("saving message====",JSON.stringify(r,null,2)),n=r.id,s=r.content,o=r.role,i=r.createdAt,h=r.threadId,p=r.toolCallIds,d=r.toolCallArgs,v=r.toolNames,g=null,"text"===(f=r.type)&&(x="assistant"===o?(null==(y=s[0])?void 0:y.text)||"":s,g=c.estimateTokens(x)),E=d?d.map((function(e,r){return t.createHash("sha256").update(JSON.stringify({args:e,threadId:h,toolName:null==v?void 0:v[r]})).digest("hex")})):null,m=!1,null==E||!E.length){e.next=20;break}m=!0,T=0;case 10:if(!(T<E.length)){e.next=20;break}return e.next=13,c.validateToolCallArgs({hashedArgs:E[T]});case 13:if(e.sent){e.next=17;break}return m=!1,e.abrupt("break",20);case 17:T++,e.next=10;break;case 20:return _=d?m?i:new Date(i.getTime()+3e5):null,console.log("just before query"),e.next=24,a.query("\n INSERT INTO mastra_messages (id, content, role, created_at, thread_id, tool_call_ids, tool_call_args, type, tokens, tool_call_args_expire_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)\n ",[n,JSON.stringify(s),o,i.toISOString(),h,JSON.stringify(p),JSON.stringify(E),f,g,null==_?void 0:_.toISOString()]);case 24:case"end":return e.stop()}}),e)})),o=i(n);case 11:if((u=o()).done){e.next=15;break}return e.delegateYield(s(),"t0",13);case 13:e.next=11;break;case 15:return console.log("just after query"),e.next=18,a.query("COMMIT");case 18:return e.abrupt("return",n);case 21:return e.prev=21,e.t1=e.catch(6),e.next=25,a.query("ROLLBACK");case 25:throw e.t1;case 26:return e.prev=26,a.release(),e.finish(26);case 29:case"end":return e.stop()}}),e,this,[[6,21,26,29]])})));return function(t){return e.apply(this,arguments)}}(),n.deleteMessage=function(){var e=o(l().mark((function e(t){var r;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.pool.connect();case 2:return r=e.sent,e.prev=3,e.next=6,r.query("\n DELETE FROM mastra_messages\n WHERE id = $1\n ",[t]);case 6:return e.prev=6,r.release(),e.finish(6);case 9:case"end":return e.stop()}}),e,this,[[3,,6,9]])})));return function(t){return e.apply(this,arguments)}}(),n.drop=function(){var e=o(l().mark((function e(){var t;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.pool.connect();case 2:return t=e.sent,e.next=5,t.query("DELETE FROM mastra_messages");case 5:return e.next=7,t.query("DELETE FROM mastra_threads");case 7:return t.release(),e.next=10,this.pool.end();case 10:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),n.ensureTablesExist=function(){var e=o(l().mark((function e(){var t,r,n,a,s;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.hasTables){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,this.pool.connect();case 4:return t=e.sent,e.prev=5,e.next=8,t.query("\n SELECT EXISTS (\n SELECT 1\n FROM information_schema.tables\n WHERE table_name = 'mastra_threads'\n );\n ");case 8:if(null!=(a=e.sent)&&null!=(r=a.rows)&&null!=(r=r[0])&&r.exists){e.next=12;break}return e.next=12,t.query("\n CREATE TABLE IF NOT EXISTS mastra_threads (\n id UUID PRIMARY KEY,\n resourceid TEXT,\n title TEXT,\n created_at TIMESTAMP WITH TIME ZONE NOT NULL,\n updated_at TIMESTAMP WITH TIME ZONE NOT NULL,\n metadata JSONB\n );\n ");case 12:return e.next=14,t.query("\n SELECT EXISTS (\n SELECT 1\n FROM information_schema.tables\n WHERE table_name = 'mastra_messages'\n );\n ");case 14:if(null!=(s=e.sent)&&null!=(n=s.rows)&&null!=(n=n[0])&&n.exists){e.next=18;break}return e.next=18,t.query("\n CREATE TABLE IF NOT EXISTS mastra_messages (\n id UUID PRIMARY KEY,\n content TEXT NOT NULL,\n role VARCHAR(20) NOT NULL,\n created_at TIMESTAMP WITH TIME ZONE NOT NULL,\n tool_call_ids TEXT DEFAULT NULL,\n tool_call_args TEXT DEFAULT NULL,\n tool_call_args_expire_at TIMESTAMP WITH TIME ZONE DEFAULT NULL,\n type VARCHAR(20) NOT NULL,\n tokens INTEGER DEFAULT NULL,\n thread_id UUID NOT NULL,\n FOREIGN KEY (thread_id) REFERENCES mastra_threads(id)\n );\n ");case 18:return e.prev=18,t.release(),this.hasTables=!0,e.finish(18);case 22:case"end":return e.stop()}}),e,this,[[5,,18,22]])})));return function(){return e.apply(this,arguments)}}(),r}(e.MastraMemory),f=function(e){function r(t){var r;return(r=e.call(this)||this).prefix=void 0,r.kv=void 0,r.prefix=t.prefix||"mastra",r.MAX_CONTEXT_TOKENS=t.maxTokens,r.kv=new n.Redis({url:t.url,token:t.token}),r}c(r,e);var a=r.prototype;return a.getThreadKey=function(e){return this.prefix+":thread:"+e},a.getMessagesKey=function(e){return this.prefix+":messages:"+e},a.getToolCacheKey=function(e){return this.prefix+":tool:"+e},a.getThreadById=function(){var e=o(l().mark((function e(t){var r,n;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.threadId,e.next=3,this.kv.get(this.getThreadKey(r));case 3:return e.abrupt("return",(n=e.sent)?this.parseThread(n):null);case 5:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),a.getThreadsByResourceId=function(){var e=o(l().mark((function e(t){var r,n,a,s=this;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.resourceid,n=this.prefix+":thread:*",e.next=4,this.kv.keys(n);case 4:return a=e.sent,e.next=7,Promise.all(a.map((function(e){return s.kv.get(e)})));case 7:return e.abrupt("return",e.sent.filter((function(e){return(null==e?void 0:e.resourceid)===r})).map((function(e){return s.parseThread(e)})));case 9:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),a.saveThread=function(){var e=o(l().mark((function e(t){var r,n,a;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=this.getThreadKey((r=t.thread).id),a=u({},r,{createdAt:r.createdAt.toISOString(),updatedAt:r.updatedAt.toISOString()}),e.next=5,this.kv.set(n,a);case 5:return e.abrupt("return",r);case 6:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),a.updateThread=function(){var e=o(l().mark((function e(t,r,n){var a,s,o;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=this.getThreadKey(t),e.next=3,this.kv.get(a);case 3:if(s=e.sent){e.next=6;break}throw new Error("Thread "+t+" not found");case 6:return o=u({},s,{title:r,metadata:n,updatedAt:(new Date).toISOString()}),e.next=9,this.kv.set(a,o);case 9:return e.abrupt("return",this.parseThread(o));case 10:case"end":return e.stop()}}),e,this)})));return function(t,r,n){return e.apply(this,arguments)}}(),a.deleteThread=function(){var e=o(l().mark((function e(t){return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.kv.del(this.getThreadKey(t));case 2:return e.next=4,this.kv.del(this.getMessagesKey(t));case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),a.validateToolCallArgs=function(){var e=o(l().mark((function e(t){var r,n;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=this.getToolCacheKey(t.hashedArgs),e.next=4,this.kv.get(r);case 4:return e.abrupt("return",!!(n=e.sent)&&new Date(n.expireAt)>new Date);case 6:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),a.getToolResult=function(){var e=o(l().mark((function e(r){var n,a,s,o,i,u;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=r.threadId,a=r.toolArgs,s=r.toolName,o=t.createHash("sha256").update(JSON.stringify({args:a,threadId:n,toolName:s})).digest("hex"),i=this.getToolCacheKey(o),e.next=5,this.kv.get(i);case 5:if(!((u=e.sent)&&new Date(u.expireAt)>new Date)){e.next=8;break}return e.abrupt("return",u.result||null);case 8:return e.abrupt("return",null);case 9:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),a.getContextWindow=function(){var e=o(l().mark((function e(t){var r,n,a,s,o,c,h,p,d,f,v,g,y,x;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.startDate,n=t.endDate,s=void 0===(a=t.format)?"raw":a,o=this.getMessagesKey(t.threadId),e.next=4,this.kv.lrange(o,0,-1);case 4:if(c=e.sent.filter((function(e){return"text"===e.type})),r&&(c=c.filter((function(e){return new Date(e.createdAt)>=r}))),n&&(c=c.filter((function(e){return new Date(e.createdAt)<=n}))),!this.MAX_CONTEXT_TOKENS){e.next=24;break}h=0,p=[],d=i(c.reverse());case 12:if((f=d()).done){e.next=22;break}if(y="assistant"===(g=f.value).role?(null==(v=g.content[0])?void 0:v.text)||"":g.content,x=Math.ceil(y.length/4),!(h+x>this.MAX_CONTEXT_TOKENS)){e.next=18;break}return e.abrupt("break",22);case 18:h+=x,p.unshift(u({},g,{tokens:x}));case 20:e.next=12;break;case 22:return console.log("Format:",s),e.abrupt("return",this.parseMessages(p));case 24:return e.abrupt("return",this.parseMessages(c));case 25:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),a.getMessages=function(){var e=o(l().mark((function e(t){var r,n,a;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=this.getMessagesKey(t.threadId),e.next=4,this.kv.lrange(r,0,-1);case 4:return n=this.parseMessages(e.sent),a=this.convertToUIMessages(n),e.abrupt("return",{messages:n,uiMessages:a});case 8:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),a.saveMessages=function(){var e=o(l().mark((function e(r){var n,a,s,o,c,h=this;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=r.messages,a=[],s=l().mark((function e(){var r,n,s,o,p,d,f,v,g,y,x,E,m,T,_,w,b,S;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s=(r=c.value).toolCallArgs,o=r.toolNames,p=r.createdAt,d=h.getMessagesKey(n=r.threadId),f=u({},r),"text"===r.type&&(g="assistant"===r.role?(null==(v=r.content[0])?void 0:v.text)||"":r.content,f.tokens=h.estimateTokens(g)),null==s||!s.length){e.next=28;break}y=s.map((function(e,r){return t.createHash("sha256").update(JSON.stringify({args:e,threadId:n,toolName:null==o?void 0:o[r]})).digest("hex")})),x=!0,E=i(y);case 9:if((m=E()).done){e.next=19;break}return T=m.value,e.next=13,h.validateToolCallArgs({hashedArgs:T});case 13:if(e.sent){e.next=17;break}return x=!1,e.abrupt("break",19);case 17:e.next=9;break;case 19:_=x?p:new Date(p.getTime()+3e5),w=i(y);case 21:if((b=w()).done){e.next=28;break}return S=h.getToolCacheKey(b.value),e.next=26,h.kv.set(S,{expireAt:_.toISOString()});case 26:e.next=21;break;case 28:return e.next=30,h.kv.rpush(d,f);case 30:a.push(f);case 31:case"end":return e.stop()}}),e)})),o=i(n);case 4:if((c=o()).done){e.next=8;break}return e.delegateYield(s(),"t0",6);case 6:e.next=4;break;case 8:return e.abrupt("return",a);case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),a.deleteMessage=function(){var e=o(l().mark((function e(t){var r,n,a,s,o,u,c;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=this.prefix+":messages:*",e.next=3,this.kv.keys(r);case 3:n=i(e.sent);case 5:if((a=n()).done){e.next=19;break}return s=a.value,e.next=9,this.kv.lrange(s,0,-1);case 9:if(u=(o=e.sent).filter((function(e){return e.id!==t})),o.length===u.length){e.next=17;break}return e.next=14,this.kv.del(s);case 14:if(!(u.length>0)){e.next=17;break}return e.next=17,(c=this.kv).rpush.apply(c,[s].concat(u));case 17:e.next=5;break;case 19:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),a.drop=function(){var e=o(l().mark((function e(){var t,r,n;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this.prefix+":*",e.next=3,this.kv.keys(t);case 3:if(!((r=e.sent).length>0)){e.next=7;break}return e.next=7,(n=this.kv).del.apply(n,r);case 7:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),a.parseThread=function(e){return u({},e,{createdAt:new Date(e.createdAt),updatedAt:new Date(e.updatedAt)})},a.parseMessages=function(e){return e.map((function(e){return u({},e,{createdAt:new Date(e.createdAt)})}))},r}(e.MastraMemory);exports.PgMemory=d,exports.UpstashKVMemory=f;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@mastra/core"),t=require("crypto"),r=require("pg"),n=require("@upstash/redis");function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function s(e,t,r,n,a,s,o){try{var i=e[s](o),u=i.value}catch(e){return void r(e)}i.done?t(u):Promise.resolve(u).then(n,a)}function o(e){return function(){var t=this,r=arguments;return new Promise((function(n,a){var o=e.apply(t,r);function i(e){s(o,n,a,i,u,"next",e)}function u(e){s(o,n,a,i,u,"throw",e)}i(void 0)}))}}function i(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return a(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?a(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},u.apply(null,arguments)}function c(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,h(e,t)}function l(){l=function(){return t};var e,t={},r=Object.prototype,n=r.hasOwnProperty,a=Object.defineProperty||function(e,t,r){e[t]=r.value},s="function"==typeof Symbol?Symbol:{},o=s.iterator||"@@iterator",i=s.asyncIterator||"@@asyncIterator",u=s.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function h(e,t,r,n){var s=Object.create((t&&t.prototype instanceof x?t:x).prototype),o=new L(n||[]);return a(s,"_invoke",{value:k(e,r,o)}),s}function p(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=h;var d="suspendedStart",f="suspendedYield",v="executing",g="completed",y={};function x(){}function E(){}function m(){}var T={};c(T,o,(function(){return this}));var _=Object.getPrototypeOf,w=_&&_(_(M([])));w&&w!==r&&n.call(w,o)&&(T=w);var b=m.prototype=x.prototype=Object.create(T);function S(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function O(e,t){function r(a,s,o,i){var u=p(e[a],e,s);if("throw"!==u.type){var c=u.arg,l=c.value;return l&&"object"==typeof l&&n.call(l,"__await")?t.resolve(l.__await).then((function(e){r("next",e,o,i)}),(function(e){r("throw",e,o,i)})):t.resolve(l).then((function(e){c.value=e,o(c)}),(function(e){return r("throw",e,o,i)}))}i(u.arg)}var s;a(this,"_invoke",{value:function(e,n){function a(){return new t((function(t,a){r(e,n,t,a)}))}return s=s?s.then(a,a):a()}})}function k(t,r,n){var a=d;return function(s,o){if(a===v)throw Error("Generator is already running");if(a===g){if("throw"===s)throw o;return{value:e,done:!0}}for(n.method=s,n.arg=o;;){var i=n.delegate;if(i){var u=A(i,n);if(u){if(u===y)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(a===d)throw a=g,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);a=v;var c=p(t,r,n);if("normal"===c.type){if(a=n.done?g:f,c.arg===y)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(a=g,n.method="throw",n.arg=c.arg)}}}function A(t,r){var n=r.method,a=t.iterator[n];if(a===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,A(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),y;var s=p(a,t.iterator,r.arg);if("throw"===s.type)return r.method="throw",r.arg=s.arg,r.delegate=null,y;var o=s.arg;return o?o.done?(r[t.resultName]=o.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,y):o:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y)}function N(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function I(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function L(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(N,this),this.reset(!0)}function M(t){if(t||""===t){var r=t[o];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,s=function r(){for(;++a<t.length;)if(n.call(t,a))return r.value=t[a],r.done=!1,r;return r.value=e,r.done=!0,r};return s.next=s}}throw new TypeError(typeof t+" is not iterable")}return E.prototype=m,a(b,"constructor",{value:m,configurable:!0}),a(m,"constructor",{value:E,configurable:!0}),E.displayName=c(m,u,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===E||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,c(e,u,"GeneratorFunction")),e.prototype=Object.create(b),e},t.awrap=function(e){return{__await:e}},S(O.prototype),c(O.prototype,i,(function(){return this})),t.AsyncIterator=O,t.async=function(e,r,n,a,s){void 0===s&&(s=Promise);var o=new O(h(e,r,n,a),s);return t.isGeneratorFunction(r)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},S(b),c(b,u,"Generator"),c(b,o,(function(){return this})),c(b,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},t.values=M,L.prototype={constructor:L,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(I),!t)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var r=this;function a(n,a){return i.type="throw",i.arg=t,r.next=n,a&&(r.method="next",r.arg=e),!!a}for(var s=this.tryEntries.length-1;s>=0;--s){var o=this.tryEntries[s],i=o.completion;if("root"===o.tryLoc)return a("end");if(o.tryLoc<=this.prev){var u=n.call(o,"catchLoc"),c=n.call(o,"finallyLoc");if(u&&c){if(this.prev<o.catchLoc)return a(o.catchLoc,!0);if(this.prev<o.finallyLoc)return a(o.finallyLoc)}else if(u){if(this.prev<o.catchLoc)return a(o.catchLoc,!0)}else{if(!c)throw Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return a(o.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var s=a;break}}s&&("break"===e||"continue"===e)&&s.tryLoc<=t&&t<=s.finallyLoc&&(s=null);var o=s?s.completion:{};return o.type=e,o.arg=t,s?(this.method="next",this.next=s.finallyLoc,y):this.complete(o)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),y},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),I(r),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;I(r)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:M(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},t}function h(e,t){return h=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},h(e,t)}var p=r.Pool,d=function(e){function r(t){var r;return(r=e.call(this)||this).pool=void 0,r.hasTables=!1,r.pool=new p({connectionString:t.connectionString}),r.MAX_CONTEXT_TOKENS=t.maxTokens,r}c(r,e);var n=r.prototype;return n.getThreadById=function(){var e=o(l().mark((function e(t){var r,n;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.threadId,e.next=3,this.ensureTablesExist();case 3:return e.next=5,this.pool.connect();case 5:return n=e.sent,e.prev=6,e.next=9,n.query("\n SELECT id, title, created_at AS createdAt, updated_at AS updatedAt, resourceid, metadata\n FROM mastra_threads\n WHERE id = $1\n ",[r]);case 9:return e.abrupt("return",e.sent.rows[0]||null);case 11:return e.prev=11,n.release(),e.finish(11);case 14:case"end":return e.stop()}}),e,this,[[6,,11,14]])})));return function(t){return e.apply(this,arguments)}}(),n.getThreadsByResourceId=function(){var e=o(l().mark((function e(t){var r,n;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.resourceid,e.next=3,this.ensureTablesExist();case 3:return e.next=5,this.pool.connect();case 5:return n=e.sent,e.prev=6,e.next=9,n.query("\n SELECT id, title, resourceid, created_at AS createdAt, updated_at AS updatedAt, metadata\n FROM mastra_threads\n WHERE resourceid = $1\n ",[r]);case 9:return e.abrupt("return",e.sent.rows);case 11:return e.prev=11,n.release(),e.finish(11);case 14:case"end":return e.stop()}}),e,this,[[6,,11,14]])})));return function(t){return e.apply(this,arguments)}}(),n.saveThread=function(){var e=o(l().mark((function e(t){var r,n,a,s,o,i,u,c,h,p;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.thread,e.next=3,this.ensureTablesExist();case 3:return e.next=5,this.pool.connect();case 5:return n=e.sent,e.prev=6,s=r.id,o=r.title,i=r.createdAt,u=r.updatedAt,c=r.resourceid,h=r.metadata,e.next=10,n.query("\n INSERT INTO mastra_threads (id, title, created_at, updated_at, resourceid, metadata)\n VALUES ($1, $2, $3, $4, $5, $6)\n ON CONFLICT (id) DO UPDATE SET title = $2, updated_at = $4, resourceid = $5, metadata = $6\n RETURNING id, title, created_at AS createdAt, updated_at AS updatedAt, resourceid, metadata\n ",[s,o,i,u,c,JSON.stringify(h)]);case 10:return e.abrupt("return",null==(p=e.sent)||null==(a=p.rows)?void 0:a[0]);case 12:return e.prev=12,n.release(),e.finish(12);case 15:case"end":return e.stop()}}),e,this,[[6,,12,15]])})));return function(t){return e.apply(this,arguments)}}(),n.updateThread=function(){var e=o(l().mark((function e(t,r,n){var a,s,o;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.pool.connect();case 2:return a=e.sent,e.prev=3,e.next=6,a.query("\n UPDATE mastra_threads\n SET title = $1, metadata = $2, updated_at = NOW()\n WHERE id = $3\n RETURNING *\n ",[r,JSON.stringify(n),t]);case 6:return e.abrupt("return",null==(o=e.sent)||null==(s=o.rows)?void 0:s[0]);case 8:return e.prev=8,a.release(),e.finish(8);case 11:case"end":return e.stop()}}),e,this,[[3,,8,11]])})));return function(t,r,n){return e.apply(this,arguments)}}(),n.deleteThread=function(){var e=o(l().mark((function e(t){var r;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.pool.connect();case 2:return r=e.sent,e.prev=3,e.next=6,r.query("\n DELETE FROM mastra_messages\n WHERE thread_id = $1\n ",[t]);case 6:return e.next=8,r.query("\n DELETE FROM mastra_threads\n WHERE id = $1\n ",[t]);case 8:return e.prev=8,r.release(),e.finish(8);case 11:case"end":return e.stop()}}),e,this,[[3,,8,11]])})));return function(t){return e.apply(this,arguments)}}(),n.validateToolCallArgs=function(){var e=o(l().mark((function e(t){var r,n;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.hashedArgs,e.next=3,this.ensureTablesExist();case 3:return e.next=5,this.pool.connect();case 5:return n=e.sent,e.prev=6,e.next=9,n.query(" SELECT tool_call_ids as toolCallIds, \n tool_call_args as toolCallArgs,\n created_at AS createdAt\n FROM mastra_messages\n WHERE tool_call_args::jsonb @> $1\n AND tool_call_args_expire_at > $2\n ORDER BY created_at ASC\n LIMIT 1",[JSON.stringify([r]),(new Date).toISOString()]);case 9:return e.abrupt("return",e.sent.rows.length>0);case 13:return e.prev=13,e.t0=e.catch(6),console.log("error checking if valid arg exists====",e.t0),e.abrupt("return",!1);case 17:return e.prev=17,n.release(),e.finish(17);case 20:case"end":return e.stop()}}),e,this,[[6,13,17,20]])})));return function(t){return e.apply(this,arguments)}}(),n.getToolResult=function(){var e=o(l().mark((function e(r){var n,a,s,o,i,u,c,h,p,d,f,v,g,y,x,E,m,T;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=r.threadId,a=r.toolArgs,s=r.toolName,e.next=3,this.ensureTablesExist();case 3:return console.log("checking for cached tool result====",JSON.stringify(a,null,2)),e.next=6,this.pool.connect();case 6:return o=e.sent,e.prev=7,i=t.createHash("sha256").update(JSON.stringify({args:a,threadId:n,toolName:s})).digest("hex"),e.next=11,o.query("SELECT tool_call_ids, \n tool_call_args,\n created_at\n FROM mastra_messages\n WHERE tool_call_args::jsonb @> $1\n AND tool_call_args_expire_at > $2\n ORDER BY created_at ASC\n LIMIT 1",[JSON.stringify([i]),(new Date).toISOString()]);case 11:if(!((u=e.sent).rows.length>0)){e.next=28;break}return f=JSON.parse(null==(c=u.rows[0])?void 0:c.tool_call_args),v=JSON.parse(null==(h=u.rows[0])?void 0:h.tool_call_ids),g=null==(p=u.rows[0])?void 0:p.created_at,y=f.findIndex((function(e){return e===i})),x=v[y],e.next=20,o.query("SELECT content \n FROM mastra_messages \n WHERE thread_id = $1\n AND tool_call_ids ILIKE $2\n AND type = 'tool-result'\n AND created_at = $3\n LIMIT 1",[n,"%"+x+"%",new Date(g).toISOString()]);case 20:if(0!==(E=e.sent).rows.length){e.next=24;break}return console.log("no tool result found"),e.abrupt("return",null);case 24:if(m=JSON.parse(null==(d=E.rows[0])?void 0:d.content),!(T=m.find((function(e){return e.toolCallId===x})))){e.next=28;break}return e.abrupt("return",T.result);case 28:return e.abrupt("return",null);case 31:return e.prev=31,e.t0=e.catch(7),console.log("error getting cached tool result====",e.t0),e.abrupt("return",null);case 35:return e.prev=35,o.release(),e.finish(35);case 38:case"end":return e.stop()}}),e,this,[[7,31,35,38]])})));return function(t){return e.apply(this,arguments)}}(),n.getContextWindow=function(){var e=o(l().mark((function e(t){var r,n,a,s,o,i,u,c;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.threadId,n=t.startDate,a=t.endDate,o=void 0===(s=t.format)?"raw":s,e.next=3,this.ensureTablesExist();case 3:return e.next=5,this.pool.connect();case 5:if(i=e.sent,e.prev=6,!this.MAX_CONTEXT_TOKENS){e.next=13;break}return e.next=10,i.query("WITH RankedMessages AS (\n SELECT *,\n SUM(tokens) OVER (ORDER BY created_at DESC) as running_total\n FROM mastra_messages\n WHERE thread_id = $1\n AND type = 'text'\n "+(n?"AND created_at >= '"+n.toISOString()+"'":"")+"\n "+(a?"AND created_at <= '"+a.toISOString()+"'":"")+"\n ORDER BY created_at DESC\n )\n SELECT id, \n content, \n role, \n type,\n created_at AS createdAt, \n thread_id AS threadId\n FROM RankedMessages\n WHERE running_total <= $2\n ORDER BY created_at ASC",[r,this.MAX_CONTEXT_TOKENS]);case 10:return u=e.sent,console.log("Format",o),e.abrupt("return",this.parseMessages(u.rows));case 13:return e.next=15,i.query("SELECT id, \n content, \n role, \n type,\n created_at AS createdAt, \n thread_id AS threadId\n FROM mastra_messages\n WHERE thread_id = $1\n AND type = 'text'\n "+(n?"AND created_at >= '"+n.toISOString()+"'":"")+"\n "+(a?"AND created_at <= '"+a.toISOString()+"'":"")+"\n ORDER BY created_at ASC",[r]);case 15:return c=e.sent,console.log("Format",o),e.abrupt("return",this.parseMessages(c.rows));case 20:return e.prev=20,e.t0=e.catch(6),console.log("error getting context window====",e.t0),e.abrupt("return",[]);case 24:return e.prev=24,i.release(),e.finish(24);case 27:case"end":return e.stop()}}),e,this,[[6,20,24,27]])})));return function(t){return e.apply(this,arguments)}}(),n.getMessages=function(){var e=o(l().mark((function e(t){var r,n,a,s;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.threadId,e.next=3,this.ensureTablesExist();case 3:return e.next=5,this.pool.connect();case 5:return n=e.sent,e.prev=6,e.next=9,n.query("\n SELECT \n id, \n content, \n role, \n type,\n created_at AS createdAt, \n thread_id AS threadId\n FROM mastra_messages\n WHERE thread_id = $1\n ORDER BY created_at ASC\n ",[r]);case 9:return a=this.parseMessages(e.sent.rows),s=this.convertToUIMessages(a),e.abrupt("return",{messages:a,uiMessages:s});case 13:return e.prev=13,n.release(),e.finish(13);case 16:case"end":return e.stop()}}),e,this,[[6,,13,16]])})));return function(t){return e.apply(this,arguments)}}(),n.saveMessages=function(){var e=o(l().mark((function e(r){var n,a,s,o,u,c=this;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=r.messages,e.next=3,this.ensureTablesExist();case 3:return e.next=5,this.pool.connect();case 5:return a=e.sent,e.prev=6,e.next=9,a.query("BEGIN");case 9:s=l().mark((function e(){var r,n,s,o,i,h,p,d,f,v,g,y,x,E,m,T,_;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=(r=u.value).id,s=r.content,o=r.role,i=r.createdAt,h=r.threadId,p=r.toolCallIds,d=r.toolCallArgs,v=r.toolNames,g=null,"text"===(f=r.type)&&(x="assistant"===o?(null==(y=s[0])?void 0:y.text)||"":s,g=c.estimateTokens(x)),E=d?d.map((function(e,r){return t.createHash("sha256").update(JSON.stringify({args:e,threadId:h,toolName:null==v?void 0:v[r]})).digest("hex")})):null,m=!1,null==E||!E.length){e.next=19;break}m=!0,T=0;case 9:if(!(T<E.length)){e.next=19;break}return e.next=12,c.validateToolCallArgs({hashedArgs:E[T]});case 12:if(e.sent){e.next=16;break}return m=!1,e.abrupt("break",19);case 16:T++,e.next=9;break;case 19:return _=d?m?i:new Date(i.getTime()+3e5):null,e.next=22,a.query("\n INSERT INTO mastra_messages (id, content, role, created_at, thread_id, tool_call_ids, tool_call_args, type, tokens, tool_call_args_expire_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)\n ",[n,JSON.stringify(s),o,i.toISOString(),h,JSON.stringify(p),JSON.stringify(E),f,g,null==_?void 0:_.toISOString()]);case 22:case"end":return e.stop()}}),e)})),o=i(n);case 11:if((u=o()).done){e.next=15;break}return e.delegateYield(s(),"t0",13);case 13:e.next=11;break;case 15:return e.next=17,a.query("COMMIT");case 17:return e.abrupt("return",n);case 20:return e.prev=20,e.t1=e.catch(6),e.next=24,a.query("ROLLBACK");case 24:throw e.t1;case 25:return e.prev=25,a.release(),e.finish(25);case 28:case"end":return e.stop()}}),e,this,[[6,20,25,28]])})));return function(t){return e.apply(this,arguments)}}(),n.deleteMessage=function(){var e=o(l().mark((function e(t){var r;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.pool.connect();case 2:return r=e.sent,e.prev=3,e.next=6,r.query("\n DELETE FROM mastra_messages\n WHERE id = $1\n ",[t]);case 6:return e.prev=6,r.release(),e.finish(6);case 9:case"end":return e.stop()}}),e,this,[[3,,6,9]])})));return function(t){return e.apply(this,arguments)}}(),n.drop=function(){var e=o(l().mark((function e(){var t;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.pool.connect();case 2:return t=e.sent,e.next=5,t.query("DELETE FROM mastra_messages");case 5:return e.next=7,t.query("DELETE FROM mastra_threads");case 7:return t.release(),e.next=10,this.pool.end();case 10:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),n.ensureTablesExist=function(){var e=o(l().mark((function e(){var t,r,n,a,s;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.hasTables){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,this.pool.connect();case 4:return t=e.sent,e.prev=5,e.next=8,t.query("\n SELECT EXISTS (\n SELECT 1\n FROM information_schema.tables\n WHERE table_name = 'mastra_threads'\n );\n ");case 8:if(null!=(a=e.sent)&&null!=(r=a.rows)&&null!=(r=r[0])&&r.exists){e.next=12;break}return e.next=12,t.query("\n CREATE TABLE IF NOT EXISTS mastra_threads (\n id UUID PRIMARY KEY,\n resourceid TEXT,\n title TEXT,\n created_at TIMESTAMP WITH TIME ZONE NOT NULL,\n updated_at TIMESTAMP WITH TIME ZONE NOT NULL,\n metadata JSONB\n );\n ");case 12:return e.next=14,t.query("\n SELECT EXISTS (\n SELECT 1\n FROM information_schema.tables\n WHERE table_name = 'mastra_messages'\n );\n ");case 14:if(null!=(s=e.sent)&&null!=(n=s.rows)&&null!=(n=n[0])&&n.exists){e.next=18;break}return e.next=18,t.query("\n CREATE TABLE IF NOT EXISTS mastra_messages (\n id UUID PRIMARY KEY,\n content TEXT NOT NULL,\n role VARCHAR(20) NOT NULL,\n created_at TIMESTAMP WITH TIME ZONE NOT NULL,\n tool_call_ids TEXT DEFAULT NULL,\n tool_call_args TEXT DEFAULT NULL,\n tool_call_args_expire_at TIMESTAMP WITH TIME ZONE DEFAULT NULL,\n type VARCHAR(20) NOT NULL,\n tokens INTEGER DEFAULT NULL,\n thread_id UUID NOT NULL,\n FOREIGN KEY (thread_id) REFERENCES mastra_threads(id)\n );\n ");case 18:return e.prev=18,t.release(),this.hasTables=!0,e.finish(18);case 22:case"end":return e.stop()}}),e,this,[[5,,18,22]])})));return function(){return e.apply(this,arguments)}}(),r}(e.MastraMemory),f=function(e){function r(t){var r;return(r=e.call(this)||this).prefix=void 0,r.kv=void 0,r.prefix=t.prefix||"mastra",r.MAX_CONTEXT_TOKENS=t.maxTokens,r.kv=new n.Redis({url:t.url,token:t.token}),r}c(r,e);var a=r.prototype;return a.getThreadKey=function(e){return this.prefix+":thread:"+e},a.getMessagesKey=function(e){return this.prefix+":messages:"+e},a.getToolCacheKey=function(e){return this.prefix+":tool:"+e},a.getThreadById=function(){var e=o(l().mark((function e(t){var r,n;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.threadId,e.next=3,this.kv.get(this.getThreadKey(r));case 3:return e.abrupt("return",(n=e.sent)?this.parseThread(n):null);case 5:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),a.getThreadsByResourceId=function(){var e=o(l().mark((function e(t){var r,n,a,s=this;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.resourceid,n=this.prefix+":thread:*",e.next=4,this.kv.keys(n);case 4:return a=e.sent,e.next=7,Promise.all(a.map((function(e){return s.kv.get(e)})));case 7:return e.abrupt("return",e.sent.filter((function(e){return(null==e?void 0:e.resourceid)===r})).map((function(e){return s.parseThread(e)})));case 9:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),a.saveThread=function(){var e=o(l().mark((function e(t){var r,n,a;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=this.getThreadKey((r=t.thread).id),a=u({},r,{createdAt:r.createdAt.toISOString(),updatedAt:r.updatedAt.toISOString()}),e.next=5,this.kv.set(n,a);case 5:return e.abrupt("return",r);case 6:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),a.updateThread=function(){var e=o(l().mark((function e(t,r,n){var a,s,o;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=this.getThreadKey(t),e.next=3,this.kv.get(a);case 3:if(s=e.sent){e.next=6;break}throw new Error("Thread "+t+" not found");case 6:return o=u({},s,{title:r,metadata:n,updatedAt:(new Date).toISOString()}),e.next=9,this.kv.set(a,o);case 9:return e.abrupt("return",this.parseThread(o));case 10:case"end":return e.stop()}}),e,this)})));return function(t,r,n){return e.apply(this,arguments)}}(),a.deleteThread=function(){var e=o(l().mark((function e(t){return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.kv.del(this.getThreadKey(t));case 2:return e.next=4,this.kv.del(this.getMessagesKey(t));case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),a.validateToolCallArgs=function(){var e=o(l().mark((function e(t){var r,n;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=this.getToolCacheKey(t.hashedArgs),e.next=4,this.kv.get(r);case 4:return e.abrupt("return",!!(n=e.sent)&&new Date(n.expireAt)>new Date);case 6:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),a.getToolResult=function(){var e=o(l().mark((function e(r){var n,a,s,o,i,u;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=r.threadId,a=r.toolArgs,s=r.toolName,o=t.createHash("sha256").update(JSON.stringify({args:a,threadId:n,toolName:s})).digest("hex"),i=this.getToolCacheKey(o),e.next=5,this.kv.get(i);case 5:if(!((u=e.sent)&&new Date(u.expireAt)>new Date)){e.next=8;break}return e.abrupt("return",u.result||null);case 8:return e.abrupt("return",null);case 9:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),a.getContextWindow=function(){var e=o(l().mark((function e(t){var r,n,a,s,o,c,h,p,d,f,v,g,y,x;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.startDate,n=t.endDate,s=void 0===(a=t.format)?"raw":a,o=this.getMessagesKey(t.threadId),e.next=4,this.kv.lrange(o,0,-1);case 4:if(c=e.sent.filter((function(e){return"text"===e.type})),r&&(c=c.filter((function(e){return new Date(e.createdAt)>=r}))),n&&(c=c.filter((function(e){return new Date(e.createdAt)<=n}))),!this.MAX_CONTEXT_TOKENS){e.next=24;break}h=0,p=[],d=i(c.reverse());case 12:if((f=d()).done){e.next=22;break}if(y="assistant"===(g=f.value).role?(null==(v=g.content[0])?void 0:v.text)||"":g.content,x=Math.ceil(y.length/4),!(h+x>this.MAX_CONTEXT_TOKENS)){e.next=18;break}return e.abrupt("break",22);case 18:h+=x,p.unshift(u({},g,{tokens:x}));case 20:e.next=12;break;case 22:return console.log("Format:",s),e.abrupt("return",this.parseMessages(p));case 24:return e.abrupt("return",this.parseMessages(c));case 25:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),a.getMessages=function(){var e=o(l().mark((function e(t){var r,n,a;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=this.getMessagesKey(t.threadId),e.next=4,this.kv.lrange(r,0,-1);case 4:return n=this.parseMessages(e.sent),a=this.convertToUIMessages(n),e.abrupt("return",{messages:n,uiMessages:a});case 8:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),a.saveMessages=function(){var e=o(l().mark((function e(r){var n,a,s,o,c,h=this;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=r.messages,a=[],s=l().mark((function e(){var r,n,s,o,p,d,f,v,g,y,x,E,m,T,_,w,b,S;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s=(r=c.value).toolCallArgs,o=r.toolNames,p=r.createdAt,d=h.getMessagesKey(n=r.threadId),f=u({},r),"text"===r.type&&(g="assistant"===r.role?(null==(v=r.content[0])?void 0:v.text)||"":r.content,f.tokens=h.estimateTokens(g)),null==s||!s.length){e.next=28;break}y=s.map((function(e,r){return t.createHash("sha256").update(JSON.stringify({args:e,threadId:n,toolName:null==o?void 0:o[r]})).digest("hex")})),x=!0,E=i(y);case 9:if((m=E()).done){e.next=19;break}return T=m.value,e.next=13,h.validateToolCallArgs({hashedArgs:T});case 13:if(e.sent){e.next=17;break}return x=!1,e.abrupt("break",19);case 17:e.next=9;break;case 19:_=x?p:new Date(p.getTime()+3e5),w=i(y);case 21:if((b=w()).done){e.next=28;break}return S=h.getToolCacheKey(b.value),e.next=26,h.kv.set(S,{expireAt:_.toISOString()});case 26:e.next=21;break;case 28:return e.next=30,h.kv.rpush(d,f);case 30:a.push(f);case 31:case"end":return e.stop()}}),e)})),o=i(n);case 4:if((c=o()).done){e.next=8;break}return e.delegateYield(s(),"t0",6);case 6:e.next=4;break;case 8:return e.abrupt("return",a);case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),a.deleteMessage=function(){var e=o(l().mark((function e(t){var r,n,a,s,o,u,c;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=this.prefix+":messages:*",e.next=3,this.kv.keys(r);case 3:n=i(e.sent);case 5:if((a=n()).done){e.next=19;break}return s=a.value,e.next=9,this.kv.lrange(s,0,-1);case 9:if(u=(o=e.sent).filter((function(e){return e.id!==t})),o.length===u.length){e.next=17;break}return e.next=14,this.kv.del(s);case 14:if(!(u.length>0)){e.next=17;break}return e.next=17,(c=this.kv).rpush.apply(c,[s].concat(u));case 17:e.next=5;break;case 19:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),a.drop=function(){var e=o(l().mark((function e(){var t,r,n;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this.prefix+":*",e.next=3,this.kv.keys(t);case 3:if(!((r=e.sent).length>0)){e.next=7;break}return e.next=7,(n=this.kv).del.apply(n,r);case 7:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),a.parseThread=function(e){return u({},e,{createdAt:new Date(e.createdAt),updatedAt:new Date(e.updatedAt)})},a.parseMessages=function(e){return e.map((function(e){return u({},e,{createdAt:new Date(e.createdAt)})}))},r}(e.MastraMemory);exports.PgMemory=d,exports.UpstashKVMemory=f;
2
2
  //# sourceMappingURL=memory.cjs.production.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.cjs.production.min.js","sources":["../src/postgres/index.ts","../src/kv/upstash.ts"],"sourcesContent":["import { MastraMemory, MessageType, ThreadType, MessageResponse } from '@mastra/core';\nimport { ToolResultPart, Message as AiMessage, TextPart } from 'ai';\nimport crypto from 'crypto';\nimport pg from 'pg';\n\nconst { Pool } = pg;\n\nexport class PgMemory extends MastraMemory {\n private pool: pg.Pool;\n hasTables: boolean = false;\n constructor(config: { connectionString: string; maxTokens?: number }) {\n super();\n this.pool = new Pool({ connectionString: config.connectionString });\n this.MAX_CONTEXT_TOKENS = config.maxTokens;\n }\n\n /**\n * Threads\n */\n\n async getThreadById({ threadId }: { threadId: string }): Promise<ThreadType | null> {\n await this.ensureTablesExist();\n\n const client = await this.pool.connect();\n try {\n const result = await client.query<ThreadType>(\n `\n SELECT id, title, created_at AS createdAt, updated_at AS updatedAt, resourceid, metadata\n FROM mastra_threads\n WHERE id = $1\n `,\n [threadId],\n );\n\n return result.rows[0] || null;\n } finally {\n client.release();\n }\n }\n\n async getThreadsByResourceId({ resourceid }: { resourceid: string }): Promise<ThreadType[]> {\n await this.ensureTablesExist();\n\n const client = await this.pool.connect();\n try {\n const result = await client.query<ThreadType>(\n `\n SELECT id, title, resourceid, created_at AS createdAt, updated_at AS updatedAt, metadata\n FROM mastra_threads\n WHERE resourceid = $1\n `,\n [resourceid],\n );\n return result.rows;\n } finally {\n client.release();\n }\n }\n\n async saveThread({ thread }: { thread: ThreadType }): Promise<ThreadType> {\n await this.ensureTablesExist();\n\n const client = await this.pool.connect();\n try {\n const { id, title, createdAt, updatedAt, resourceid, metadata } = thread;\n const result = await client.query<ThreadType>(\n `\n INSERT INTO mastra_threads (id, title, created_at, updated_at, resourceid, metadata)\n VALUES ($1, $2, $3, $4, $5, $6)\n ON CONFLICT (id) DO UPDATE SET title = $2, updated_at = $4, resourceid = $5, metadata = $6\n RETURNING id, title, created_at AS createdAt, updated_at AS updatedAt, resourceid, metadata\n `,\n [id, title, createdAt, updatedAt, resourceid, JSON.stringify(metadata)],\n );\n return result?.rows?.[0]!;\n } finally {\n client.release();\n }\n }\n\n async updateThread(id: string, title: string, metadata: Record<string, unknown>): Promise<ThreadType> {\n const client = await this.pool.connect();\n try {\n const result = await client.query<ThreadType>(\n `\n UPDATE mastra_threads\n SET title = $1, metadata = $2, updated_at = NOW()\n WHERE id = $3\n RETURNING *\n `,\n [title, JSON.stringify(metadata), id],\n );\n return result?.rows?.[0]!;\n } finally {\n client.release();\n }\n }\n\n async deleteThread(id: string): Promise<void> {\n const client = await this.pool.connect();\n try {\n await client.query(\n `\n DELETE FROM mastra_messages\n WHERE thread_id = $1\n `,\n [id],\n );\n\n await client.query(\n `\n DELETE FROM mastra_threads\n WHERE id = $1\n `,\n [id],\n );\n } finally {\n client.release();\n }\n }\n\n /**\n * Tool Cache\n */\n\n async validateToolCallArgs({ hashedArgs }: { hashedArgs: string }): Promise<boolean> {\n await this.ensureTablesExist();\n\n const client = await this.pool.connect();\n\n try {\n const toolArgsResult = await client.query<{ toolCallIds: string; toolCallArgs: string; createdAt: string }>(\n ` SELECT tool_call_ids as toolCallIds, \n tool_call_args as toolCallArgs,\n created_at AS createdAt\n FROM mastra_messages\n WHERE tool_call_args::jsonb @> $1\n AND tool_call_args_expire_at > $2\n ORDER BY created_at ASC\n LIMIT 1`,\n [JSON.stringify([hashedArgs]), new Date().toISOString()],\n );\n\n return toolArgsResult.rows.length > 0;\n } catch (error) {\n console.log('error checking if valid arg exists====', error);\n return false;\n } finally {\n client.release();\n }\n }\n\n async getToolResult({\n threadId,\n toolArgs,\n toolName,\n }: {\n threadId: string;\n toolArgs: Record<string, unknown>;\n toolName: string;\n }): Promise<ToolResultPart['result'] | null> {\n await this.ensureTablesExist();\n console.log('checking for cached tool result====', JSON.stringify(toolArgs, null, 2));\n\n const client = await this.pool.connect();\n\n try {\n const hashedToolArgs = crypto\n .createHash('sha256')\n .update(JSON.stringify({ args: toolArgs, threadId, toolName }))\n .digest('hex');\n\n console.log('hashedToolArgs====', hashedToolArgs);\n\n const toolArgsResult = await client.query<{ tool_call_ids: string; tool_call_args: string; created_at: string }>(\n `SELECT tool_call_ids, \n tool_call_args,\n created_at\n FROM mastra_messages\n WHERE tool_call_args::jsonb @> $1\n AND tool_call_args_expire_at > $2\n ORDER BY created_at ASC\n LIMIT 1`,\n [JSON.stringify([hashedToolArgs]), new Date().toISOString()],\n );\n\n if (toolArgsResult.rows.length > 0) {\n console.log('toolArgsResult====', JSON.stringify(toolArgsResult.rows[0], null, 2));\n const toolCallArgs = JSON.parse(toolArgsResult.rows[0]?.tool_call_args!) as string[];\n const toolCallIds = JSON.parse(toolArgsResult.rows[0]?.tool_call_ids!) as string[];\n const createdAt = toolArgsResult.rows[0]?.created_at!;\n\n console.log('toolCallArgs====', JSON.stringify(toolCallArgs, null, 2));\n console.log('toolCallIds====', JSON.stringify(toolCallIds, null, 2));\n console.log('createdAt====', createdAt);\n\n const toolCallArgsIndex = toolCallArgs.findIndex(arg => arg === hashedToolArgs);\n const correspondingToolCallId = toolCallIds[toolCallArgsIndex];\n\n console.log('correspondingToolCallId====', { correspondingToolCallId, toolCallArgsIndex });\n\n const toolResult = await client.query<{ content: string }>(\n `SELECT content \n FROM mastra_messages \n WHERE thread_id = $1\n AND tool_call_ids ILIKE $2\n AND type = 'tool-result'\n AND created_at = $3\n LIMIT 1`,\n [threadId, `%${correspondingToolCallId}%`, new Date(createdAt).toISOString()],\n );\n\n console.log('called toolResult');\n\n if (toolResult.rows.length === 0) {\n console.log('no tool result found');\n return null;\n }\n\n const toolResultContent = JSON.parse(toolResult.rows[0]?.content!) as Array<ToolResultPart>;\n const requiredToolResult = toolResultContent.find(part => part.toolCallId === correspondingToolCallId);\n\n console.log('requiredToolResult====', JSON.stringify(requiredToolResult, null, 2));\n\n if (requiredToolResult) {\n return requiredToolResult.result;\n }\n }\n\n return null;\n } catch (error) {\n console.log('error getting cached tool result====', error);\n return null;\n } finally {\n client.release();\n }\n }\n\n async getContextWindow<T extends 'raw' | 'core_message'>({\n threadId,\n startDate,\n endDate,\n format = 'raw' as T,\n }: {\n format?: T;\n threadId: string;\n startDate?: Date;\n endDate?: Date;\n }) {\n await this.ensureTablesExist();\n const client = await this.pool.connect();\n\n try {\n if (this.MAX_CONTEXT_TOKENS) {\n // Get messages with token limit and time filter\n const result = await client.query<MessageType>(\n `WITH RankedMessages AS (\n SELECT *,\n SUM(tokens) OVER (ORDER BY created_at DESC) as running_total\n FROM mastra_messages\n WHERE thread_id = $1\n AND type = 'text'\n ${startDate ? `AND created_at >= '${startDate.toISOString()}'` : ''}\n ${endDate ? `AND created_at <= '${endDate.toISOString()}'` : ''}\n ORDER BY created_at DESC\n )\n SELECT id, \n content, \n role, \n type,\n created_at AS createdAt, \n thread_id AS threadId\n FROM RankedMessages\n WHERE running_total <= $2\n ORDER BY created_at ASC`,\n [threadId, this.MAX_CONTEXT_TOKENS],\n );\n\n console.log('Format', format);\n return this.parseMessages(result.rows) as MessageResponse<T>;\n }\n\n //get all messages\n const result = await client.query<MessageType>(\n `SELECT id, \n content, \n role, \n type,\n created_at AS createdAt, \n thread_id AS threadId\n FROM mastra_messages\n WHERE thread_id = $1\n AND type = 'text'\n ${startDate ? `AND created_at >= '${startDate.toISOString()}'` : ''}\n ${endDate ? `AND created_at <= '${endDate.toISOString()}'` : ''}\n ORDER BY created_at ASC`,\n [threadId],\n );\n\n console.log('Format', format);\n return this.parseMessages(result.rows) as MessageResponse<T>;\n } catch (error) {\n console.log('error getting context window====', error);\n return [];\n } finally {\n client.release();\n }\n }\n\n /**\n * Messages\n */\n\n async getMessages({ threadId }: { threadId: string }): Promise<{ messages: MessageType[]; uiMessages: AiMessage[] }> {\n await this.ensureTablesExist();\n\n const client = await this.pool.connect();\n try {\n const result = await client.query<MessageType>(\n `\n SELECT \n id, \n content, \n role, \n type,\n created_at AS createdAt, \n thread_id AS threadId\n FROM mastra_messages\n WHERE thread_id = $1\n ORDER BY created_at ASC\n `,\n [threadId],\n );\n\n const messages = this.parseMessages(result.rows);\n const uiMessages = this.convertToUIMessages(messages);\n\n return { messages, uiMessages };\n } finally {\n client.release();\n }\n }\n\n async saveMessages({ messages }: { messages: MessageType[] }): Promise<MessageType[]> {\n await this.ensureTablesExist();\n\n const client = await this.pool.connect();\n try {\n await client.query('BEGIN');\n for (const message of messages) {\n console.log('saving message====', JSON.stringify(message, null, 2));\n const { id, content, role, createdAt, threadId, toolCallIds, toolCallArgs, type, toolNames } = message;\n let tokens = null;\n if (type === 'text') {\n const contentMssg = role === 'assistant' ? (content as Array<TextPart>)[0]?.text || '' : (content as string);\n tokens = this.estimateTokens(contentMssg);\n }\n\n // Hash the toolCallArgs if they exist\n const hashedToolCallArgs = toolCallArgs\n ? toolCallArgs.map((args, index) =>\n crypto\n .createHash('sha256')\n .update(JSON.stringify({ args, threadId, toolName: toolNames?.[index] }))\n .digest('hex'),\n )\n : null;\n\n let validArgExists = false;\n if (hashedToolCallArgs?.length) {\n // Check all args sequentially\n validArgExists = true; // Start true and set to false if any check fails\n for (let i = 0; i < hashedToolCallArgs.length; i++) {\n const isValid = await this.validateToolCallArgs({\n hashedArgs: hashedToolCallArgs[i]!,\n });\n if (!isValid) {\n validArgExists = false;\n break;\n }\n }\n }\n\n const toolCallArgsExpireAt = !toolCallArgs\n ? null\n : validArgExists\n ? createdAt\n : new Date(createdAt.getTime() + 5 * 60 * 1000); // 5 minutes\n\n console.log('just before query');\n\n await client.query(\n `\n INSERT INTO mastra_messages (id, content, role, created_at, thread_id, tool_call_ids, tool_call_args, type, tokens, tool_call_args_expire_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)\n `,\n [\n id,\n JSON.stringify(content),\n role,\n createdAt.toISOString(),\n threadId,\n JSON.stringify(toolCallIds),\n JSON.stringify(hashedToolCallArgs),\n type,\n tokens,\n toolCallArgsExpireAt?.toISOString(),\n ],\n );\n }\n console.log('just after query');\n await client.query('COMMIT');\n return messages;\n } catch (error) {\n await client.query('ROLLBACK');\n throw error;\n } finally {\n client.release();\n }\n }\n\n async deleteMessage(id: string): Promise<void> {\n const client = await this.pool.connect();\n try {\n await client.query(\n `\n DELETE FROM mastra_messages\n WHERE id = $1\n `,\n [id],\n );\n } finally {\n client.release();\n }\n }\n\n /**\n * Table Management\n */\n\n async drop() {\n const client = await this.pool.connect();\n await client.query('DELETE FROM mastra_messages');\n await client.query('DELETE FROM mastra_threads');\n client.release();\n await this.pool.end();\n }\n\n async ensureTablesExist(): Promise<void> {\n if (this.hasTables) {\n return;\n }\n\n const client = await this.pool.connect();\n try {\n // Check if the threads table exists\n const threadsResult = await client.query<{ exists: boolean }>(`\n SELECT EXISTS (\n SELECT 1\n FROM information_schema.tables\n WHERE table_name = 'mastra_threads'\n );\n `);\n\n if (!threadsResult?.rows?.[0]?.exists) {\n await client.query(`\n CREATE TABLE IF NOT EXISTS mastra_threads (\n id UUID PRIMARY KEY,\n resourceid TEXT,\n title TEXT,\n created_at TIMESTAMP WITH TIME ZONE NOT NULL,\n updated_at TIMESTAMP WITH TIME ZONE NOT NULL,\n metadata JSONB\n );\n `);\n }\n\n // Check if the messages table exists\n const messagesResult = await client.query<{ exists: boolean }>(`\n SELECT EXISTS (\n SELECT 1\n FROM information_schema.tables\n WHERE table_name = 'mastra_messages'\n );\n `);\n\n if (!messagesResult?.rows?.[0]?.exists) {\n await client.query(`\n CREATE TABLE IF NOT EXISTS mastra_messages (\n id UUID PRIMARY KEY,\n content TEXT NOT NULL,\n role VARCHAR(20) NOT NULL,\n created_at TIMESTAMP WITH TIME ZONE NOT NULL,\n tool_call_ids TEXT DEFAULT NULL,\n tool_call_args TEXT DEFAULT NULL,\n tool_call_args_expire_at TIMESTAMP WITH TIME ZONE DEFAULT NULL,\n type VARCHAR(20) NOT NULL,\n tokens INTEGER DEFAULT NULL,\n thread_id UUID NOT NULL,\n FOREIGN KEY (thread_id) REFERENCES mastra_threads(id)\n );\n `);\n }\n } finally {\n client.release();\n this.hasTables = true;\n }\n }\n}\n","import { MastraMemory, MessageType as BaseMastraMessageType, ThreadType, MessageResponse } from '@mastra/core';\nimport { Redis } from '@upstash/redis';\nimport { ToolResultPart, Message as AiMessage, TextPart } from 'ai';\nimport crypto from 'crypto';\n\ninterface ToolCacheData {\n expireAt: string;\n result?: ToolResultPart['result'];\n}\n\ninterface MessageType extends BaseMastraMessageType {\n tokens?: number;\n}\n\n// Internal type for serialized thread data\ninterface SerializedThreadType extends Omit<ThreadType, 'createdAt' | 'updatedAt'> {\n createdAt: string;\n updatedAt: string;\n}\n\nexport class UpstashKVMemory extends MastraMemory {\n private prefix: string;\n\n kv: Redis;\n\n constructor(config: { url: string; token: string; prefix?: string; maxTokens?: number }) {\n super();\n this.prefix = config.prefix || 'mastra';\n this.MAX_CONTEXT_TOKENS = config.maxTokens;\n\n this.kv = new Redis({\n url: config.url,\n token: config.token,\n });\n }\n\n private getThreadKey(threadId: string): string {\n return `${this.prefix}:thread:${threadId}`;\n }\n\n private getMessagesKey(threadId: string): string {\n return `${this.prefix}:messages:${threadId}`;\n }\n\n private getToolCacheKey(hashedArgs: string): string {\n return `${this.prefix}:tool:${hashedArgs}`;\n }\n\n async getThreadById({ threadId }: { threadId: string }): Promise<ThreadType | null> {\n const thread = await this.kv.get<SerializedThreadType>(this.getThreadKey(threadId));\n return thread ? this.parseThread(thread) : null;\n }\n\n async getThreadsByResourceId({ resourceid }: { resourceid: string }): Promise<ThreadType[]> {\n const pattern = `${this.prefix}:thread:*`;\n const keys = await this.kv.keys(pattern);\n\n const threads = await Promise.all(keys.map(key => this.kv.get<SerializedThreadType>(key)));\n\n return threads\n .filter(thread => thread?.resourceid === resourceid)\n .map(thread => this.parseThread(thread as SerializedThreadType));\n }\n\n async saveThread({ thread }: { thread: ThreadType }): Promise<ThreadType> {\n const key = this.getThreadKey(thread.id);\n const serializedThread: SerializedThreadType = {\n ...thread,\n createdAt: thread.createdAt.toISOString(),\n updatedAt: thread.updatedAt.toISOString(),\n };\n await this.kv.set(key, serializedThread);\n return thread;\n }\n\n async updateThread(id: string, title: string, metadata: Record<string, unknown>): Promise<ThreadType> {\n const key = this.getThreadKey(id);\n const thread = await this.kv.get<SerializedThreadType>(key);\n\n if (!thread) {\n throw new Error(`Thread ${id} not found`);\n }\n\n const updatedThread: SerializedThreadType = {\n ...thread,\n title,\n metadata,\n updatedAt: new Date().toISOString(),\n };\n\n await this.kv.set(key, updatedThread);\n return this.parseThread(updatedThread);\n }\n\n async deleteThread(id: string): Promise<void> {\n await this.kv.del(this.getThreadKey(id));\n await this.kv.del(this.getMessagesKey(id));\n }\n\n /**\n * Tool Cache\n */\n\n async validateToolCallArgs({ hashedArgs }: { hashedArgs: string }): Promise<boolean> {\n const cacheKey = this.getToolCacheKey(hashedArgs);\n const cached = await this.kv.get<ToolCacheData>(cacheKey);\n return !!cached && new Date(cached.expireAt) > new Date();\n }\n\n async getToolResult({\n threadId,\n toolArgs,\n toolName,\n }: {\n threadId: string;\n toolArgs: Record<string, unknown>;\n toolName: string;\n }): Promise<ToolResultPart['result'] | null> {\n const hashedToolArgs = crypto\n .createHash('sha256')\n .update(JSON.stringify({ args: toolArgs, threadId, toolName }))\n .digest('hex');\n\n const cacheKey = this.getToolCacheKey(hashedToolArgs);\n const cached = await this.kv.get<ToolCacheData>(cacheKey);\n\n if (cached && new Date(cached.expireAt) > new Date()) {\n return cached.result || null;\n }\n\n return null;\n }\n\n async getContextWindow<T extends 'raw' | 'core_message'>({\n threadId,\n startDate,\n endDate,\n format = 'raw' as T,\n }: {\n format?: T;\n threadId: string;\n startDate?: Date;\n endDate?: Date;\n }) {\n const messagesKey = this.getMessagesKey(threadId);\n const messages = await this.kv.lrange<MessageType>(messagesKey, 0, -1);\n\n let filteredMessages = messages.filter(msg => msg.type === 'text');\n\n if (startDate) {\n filteredMessages = filteredMessages.filter(msg => new Date(msg.createdAt) >= startDate);\n }\n\n if (endDate) {\n filteredMessages = filteredMessages.filter(msg => new Date(msg.createdAt) <= endDate);\n }\n\n if (this.MAX_CONTEXT_TOKENS) {\n let totalTokens = 0;\n const messagesWithinTokenLimit: MessageType[] = [];\n\n // Process messages from newest to oldest\n for (const message of filteredMessages.reverse()) {\n const content =\n message.role === 'assistant'\n ? (message.content as Array<TextPart>)[0]?.text || ''\n : (message.content as string);\n\n // Use a more aggressive token estimation\n // Roughly estimate 1 token per 4 characters\n const tokens = Math.ceil(content.length / 4);\n\n // Check if adding this message would exceed the token limit\n if (totalTokens + tokens > this.MAX_CONTEXT_TOKENS) {\n break;\n }\n\n totalTokens += tokens;\n messagesWithinTokenLimit.unshift({\n ...message,\n tokens,\n });\n }\n\n console.log('Format:', format);\n // Return messages in chronological order\n return this.parseMessages(messagesWithinTokenLimit) as MessageResponse<T>;\n }\n\n return this.parseMessages(filteredMessages) as MessageResponse<T>;\n }\n\n /**\n * Messages\n */\n\n async getMessages({ threadId }: { threadId: string }): Promise<{ messages: MessageType[]; uiMessages: AiMessage[] }> {\n const messagesKey = this.getMessagesKey(threadId);\n const messages = await this.kv.lrange<MessageType>(messagesKey, 0, -1);\n const parsedMessages = this.parseMessages(messages);\n const uiMessages = this.convertToUIMessages(parsedMessages);\n\n return { messages: parsedMessages, uiMessages };\n }\n\n async saveMessages({ messages }: { messages: MessageType[] }): Promise<MessageType[]> {\n const processedMessages: MessageType[] = [];\n\n for (const message of messages) {\n const { threadId, toolCallArgs, toolNames, createdAt } = message;\n const messagesKey = this.getMessagesKey(threadId);\n\n const processedMessage = { ...message };\n\n if (message.type === 'text') {\n const content =\n message.role === 'assistant'\n ? (message.content as Array<TextPart>)[0]?.text || ''\n : (message.content as string);\n processedMessage.tokens = this.estimateTokens(content);\n }\n\n if (toolCallArgs?.length) {\n const hashedToolCallArgs = toolCallArgs.map((args, index) =>\n crypto\n .createHash('sha256')\n .update(JSON.stringify({ args, threadId, toolName: toolNames?.[index] }))\n .digest('hex'),\n );\n\n let validArgExists = true;\n for (const hashedArg of hashedToolCallArgs) {\n const isValid = await this.validateToolCallArgs({ hashedArgs: hashedArg });\n if (!isValid) {\n validArgExists = false;\n break;\n }\n }\n\n const expireAt = validArgExists ? createdAt : new Date(createdAt.getTime() + 5 * 60 * 1000); // 5 minutes\n\n for (const hashedArg of hashedToolCallArgs) {\n const cacheKey = this.getToolCacheKey(hashedArg);\n await this.kv.set(cacheKey, { expireAt: expireAt.toISOString() } as ToolCacheData);\n }\n }\n\n await this.kv.rpush(messagesKey, processedMessage);\n processedMessages.push(processedMessage);\n }\n\n return processedMessages;\n }\n\n async deleteMessage(id: string): Promise<void> {\n const pattern = `${this.prefix}:messages:*`;\n const keys = await this.kv.keys(pattern);\n\n for (const key of keys) {\n const messages = await this.kv.lrange<MessageType>(key, 0, -1);\n const filteredMessages = messages.filter(msg => msg.id !== id);\n\n if (messages.length !== filteredMessages.length) {\n await this.kv.del(key);\n if (filteredMessages.length > 0) {\n await this.kv.rpush(key, ...filteredMessages);\n }\n }\n }\n }\n\n /**\n * Cleanup\n */\n\n async drop(): Promise<void> {\n const pattern = `${this.prefix}:*`;\n const keys = await this.kv.keys(pattern);\n if (keys.length > 0) {\n await this.kv.del(...keys);\n }\n }\n\n parseThread(thread: SerializedThreadType): ThreadType {\n return {\n ...thread,\n createdAt: new Date(thread.createdAt),\n updatedAt: new Date(thread.updatedAt),\n };\n }\n\n parseMessages(messages: MessageType[]): MessageType[] {\n return messages.map(message => ({\n ...message,\n createdAt: new Date(message.createdAt),\n }));\n }\n}\n"],"names":["Pool","pg","PgMemory","_MastraMemory","config","_this","call","this","pool","hasTables","connectionString","MAX_CONTEXT_TOKENS","maxTokens","_inheritsLoose","_proto","prototype","getThreadById","_getThreadById","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref","threadId","client","wrap","_context","prev","next","ensureTablesExist","connect","sent","query","abrupt","result","rows","release","finish","stop","_x","apply","arguments","getThreadsByResourceId","_getThreadsByResourceId","_callee2","_ref2","resourceid","_context2","_x2","saveThread","_saveThread","_callee3","_ref3","thread","_result$rows","id","title","createdAt","updatedAt","metadata","_context3","JSON","stringify","_x3","updateThread","_updateThread","_callee4","_result$rows2","_context4","_x4","_x5","_x6","deleteThread","_deleteThread","_callee5","_context5","_x7","validateToolCallArgs","_validateToolCallArgs","_callee6","_ref4","hashedArgs","_context6","Date","toISOString","toolArgsResult","length","t0","console","log","_x8","getToolResult","_getToolResult","_callee7","_ref5","toolArgs","toolName","hashedToolArgs","_toolArgsResult$rows$","_toolArgsResult$rows$2","_toolArgsResult$rows$3","_toolResult$rows$","toolCallArgs","toolCallIds","toolCallArgsIndex","correspondingToolCallId","toolResult","toolResultContent","requiredToolResult","_context7","crypto","createHash","update","args","digest","parse","tool_call_args","tool_call_ids","created_at","findIndex","arg","content","find","part","toolCallId","_x9","getContextWindow","_getContextWindow","_callee8","_ref6","startDate","endDate","_ref6$format","format","_result","_context8","parseMessages","_x10","getMessages","_getMessages","_callee9","_ref7","messages","uiMessages","_context9","convertToUIMessages","_x11","saveMessages","_saveMessages","_callee10","_ref8","_loop","_iterator","_step","_this2","_context11","message","role","type","toolNames","tokens","_content$","contentMssg","hashedToolCallArgs","validArgExists","i","toolCallArgsExpireAt","_context10","value","text","estimateTokens","map","index","getTime","_createForOfIteratorHelperLoose","done","delegateYield","t1","_x12","deleteMessage","_deleteMessage","_callee11","_context12","_x13","drop","_drop","_callee12","_context13","end","_ensureTablesExist","_callee13","_threadsResult$rows","_messagesResult$rows","threadsResult","messagesResult","_context14","exists","MastraMemory","UpstashKVMemory","prefix","kv","Redis","url","token","getThreadKey","getMessagesKey","getToolCacheKey","get","parseThread","pattern","keys","Promise","all","key","filter","serializedThread","_extends","set","updatedThread","Error","del","cacheKey","cached","expireAt","messagesKey","filteredMessages","totalTokens","messagesWithinTokenLimit","_message$content$","lrange","msg","reverse","Math","ceil","unshift","parsedMessages","processedMessages","_iterator2","_step2","_this3","processedMessage","_message$content$2","_iterator3","_step3","hashedArg","_iterator4","_step4","rpush","push","_iterator5","_step5","_this$kv","concat","_this$kv2"],"mappings":"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"}
1
+ {"version":3,"file":"memory.cjs.production.min.js","sources":["../src/postgres/index.ts","../src/kv/upstash.ts"],"sourcesContent":["import { MastraMemory, MessageType, ThreadType, MessageResponse } from '@mastra/core';\nimport { ToolResultPart, Message as AiMessage, TextPart } from 'ai';\nimport crypto from 'crypto';\nimport pg from 'pg';\n\nconst { Pool } = pg;\n\nexport class PgMemory extends MastraMemory {\n private pool: pg.Pool;\n hasTables: boolean = false;\n constructor(config: { connectionString: string; maxTokens?: number }) {\n super();\n this.pool = new Pool({ connectionString: config.connectionString });\n this.MAX_CONTEXT_TOKENS = config.maxTokens;\n }\n\n /**\n * Threads\n */\n\n async getThreadById({ threadId }: { threadId: string }): Promise<ThreadType | null> {\n await this.ensureTablesExist();\n\n const client = await this.pool.connect();\n try {\n const result = await client.query<ThreadType>(\n `\n SELECT id, title, created_at AS createdAt, updated_at AS updatedAt, resourceid, metadata\n FROM mastra_threads\n WHERE id = $1\n `,\n [threadId],\n );\n\n return result.rows[0] || null;\n } finally {\n client.release();\n }\n }\n\n async getThreadsByResourceId({ resourceid }: { resourceid: string }): Promise<ThreadType[]> {\n await this.ensureTablesExist();\n\n const client = await this.pool.connect();\n try {\n const result = await client.query<ThreadType>(\n `\n SELECT id, title, resourceid, created_at AS createdAt, updated_at AS updatedAt, metadata\n FROM mastra_threads\n WHERE resourceid = $1\n `,\n [resourceid],\n );\n return result.rows;\n } finally {\n client.release();\n }\n }\n\n async saveThread({ thread }: { thread: ThreadType }): Promise<ThreadType> {\n await this.ensureTablesExist();\n\n const client = await this.pool.connect();\n try {\n const { id, title, createdAt, updatedAt, resourceid, metadata } = thread;\n const result = await client.query<ThreadType>(\n `\n INSERT INTO mastra_threads (id, title, created_at, updated_at, resourceid, metadata)\n VALUES ($1, $2, $3, $4, $5, $6)\n ON CONFLICT (id) DO UPDATE SET title = $2, updated_at = $4, resourceid = $5, metadata = $6\n RETURNING id, title, created_at AS createdAt, updated_at AS updatedAt, resourceid, metadata\n `,\n [id, title, createdAt, updatedAt, resourceid, JSON.stringify(metadata)],\n );\n return result?.rows?.[0]!;\n } finally {\n client.release();\n }\n }\n\n async updateThread(id: string, title: string, metadata: Record<string, unknown>): Promise<ThreadType> {\n const client = await this.pool.connect();\n try {\n const result = await client.query<ThreadType>(\n `\n UPDATE mastra_threads\n SET title = $1, metadata = $2, updated_at = NOW()\n WHERE id = $3\n RETURNING *\n `,\n [title, JSON.stringify(metadata), id],\n );\n return result?.rows?.[0]!;\n } finally {\n client.release();\n }\n }\n\n async deleteThread(id: string): Promise<void> {\n const client = await this.pool.connect();\n try {\n await client.query(\n `\n DELETE FROM mastra_messages\n WHERE thread_id = $1\n `,\n [id],\n );\n\n await client.query(\n `\n DELETE FROM mastra_threads\n WHERE id = $1\n `,\n [id],\n );\n } finally {\n client.release();\n }\n }\n\n /**\n * Tool Cache\n */\n\n async validateToolCallArgs({ hashedArgs }: { hashedArgs: string }): Promise<boolean> {\n await this.ensureTablesExist();\n\n const client = await this.pool.connect();\n\n try {\n const toolArgsResult = await client.query<{ toolCallIds: string; toolCallArgs: string; createdAt: string }>(\n ` SELECT tool_call_ids as toolCallIds, \n tool_call_args as toolCallArgs,\n created_at AS createdAt\n FROM mastra_messages\n WHERE tool_call_args::jsonb @> $1\n AND tool_call_args_expire_at > $2\n ORDER BY created_at ASC\n LIMIT 1`,\n [JSON.stringify([hashedArgs]), new Date().toISOString()],\n );\n\n return toolArgsResult.rows.length > 0;\n } catch (error) {\n console.log('error checking if valid arg exists====', error);\n return false;\n } finally {\n client.release();\n }\n }\n\n async getToolResult({\n threadId,\n toolArgs,\n toolName,\n }: {\n threadId: string;\n toolArgs: Record<string, unknown>;\n toolName: string;\n }): Promise<ToolResultPart['result'] | null> {\n await this.ensureTablesExist();\n console.log('checking for cached tool result====', JSON.stringify(toolArgs, null, 2));\n\n const client = await this.pool.connect();\n\n try {\n const hashedToolArgs = crypto\n .createHash('sha256')\n .update(JSON.stringify({ args: toolArgs, threadId, toolName }))\n .digest('hex');\n\n const toolArgsResult = await client.query<{ tool_call_ids: string; tool_call_args: string; created_at: string }>(\n `SELECT tool_call_ids, \n tool_call_args,\n created_at\n FROM mastra_messages\n WHERE tool_call_args::jsonb @> $1\n AND tool_call_args_expire_at > $2\n ORDER BY created_at ASC\n LIMIT 1`,\n [JSON.stringify([hashedToolArgs]), new Date().toISOString()],\n );\n\n if (toolArgsResult.rows.length > 0) {\n const toolCallArgs = JSON.parse(toolArgsResult.rows[0]?.tool_call_args!) as string[];\n const toolCallIds = JSON.parse(toolArgsResult.rows[0]?.tool_call_ids!) as string[];\n const createdAt = toolArgsResult.rows[0]?.created_at!;\n\n const toolCallArgsIndex = toolCallArgs.findIndex(arg => arg === hashedToolArgs);\n const correspondingToolCallId = toolCallIds[toolCallArgsIndex];\n\n const toolResult = await client.query<{ content: string }>(\n `SELECT content \n FROM mastra_messages \n WHERE thread_id = $1\n AND tool_call_ids ILIKE $2\n AND type = 'tool-result'\n AND created_at = $3\n LIMIT 1`,\n [threadId, `%${correspondingToolCallId}%`, new Date(createdAt).toISOString()],\n );\n\n if (toolResult.rows.length === 0) {\n console.log('no tool result found');\n return null;\n }\n\n const toolResultContent = JSON.parse(toolResult.rows[0]?.content!) as Array<ToolResultPart>;\n const requiredToolResult = toolResultContent.find(part => part.toolCallId === correspondingToolCallId);\n\n if (requiredToolResult) {\n return requiredToolResult.result;\n }\n }\n\n return null;\n } catch (error) {\n console.log('error getting cached tool result====', error);\n return null;\n } finally {\n client.release();\n }\n }\n\n async getContextWindow<T extends 'raw' | 'core_message'>({\n threadId,\n startDate,\n endDate,\n format = 'raw' as T,\n }: {\n format?: T;\n threadId: string;\n startDate?: Date;\n endDate?: Date;\n }) {\n await this.ensureTablesExist();\n const client = await this.pool.connect();\n\n try {\n if (this.MAX_CONTEXT_TOKENS) {\n // Get messages with token limit and time filter\n const result = await client.query<MessageType>(\n `WITH RankedMessages AS (\n SELECT *,\n SUM(tokens) OVER (ORDER BY created_at DESC) as running_total\n FROM mastra_messages\n WHERE thread_id = $1\n AND type = 'text'\n ${startDate ? `AND created_at >= '${startDate.toISOString()}'` : ''}\n ${endDate ? `AND created_at <= '${endDate.toISOString()}'` : ''}\n ORDER BY created_at DESC\n )\n SELECT id, \n content, \n role, \n type,\n created_at AS createdAt, \n thread_id AS threadId\n FROM RankedMessages\n WHERE running_total <= $2\n ORDER BY created_at ASC`,\n [threadId, this.MAX_CONTEXT_TOKENS],\n );\n\n console.log('Format', format);\n return this.parseMessages(result.rows) as MessageResponse<T>;\n }\n\n //get all messages\n const result = await client.query<MessageType>(\n `SELECT id, \n content, \n role, \n type,\n created_at AS createdAt, \n thread_id AS threadId\n FROM mastra_messages\n WHERE thread_id = $1\n AND type = 'text'\n ${startDate ? `AND created_at >= '${startDate.toISOString()}'` : ''}\n ${endDate ? `AND created_at <= '${endDate.toISOString()}'` : ''}\n ORDER BY created_at ASC`,\n [threadId],\n );\n\n console.log('Format', format);\n return this.parseMessages(result.rows) as MessageResponse<T>;\n } catch (error) {\n console.log('error getting context window====', error);\n return [];\n } finally {\n client.release();\n }\n }\n\n /**\n * Messages\n */\n\n async getMessages({ threadId }: { threadId: string }): Promise<{ messages: MessageType[]; uiMessages: AiMessage[] }> {\n await this.ensureTablesExist();\n\n const client = await this.pool.connect();\n try {\n const result = await client.query<MessageType>(\n `\n SELECT \n id, \n content, \n role, \n type,\n created_at AS createdAt, \n thread_id AS threadId\n FROM mastra_messages\n WHERE thread_id = $1\n ORDER BY created_at ASC\n `,\n [threadId],\n );\n\n const messages = this.parseMessages(result.rows);\n const uiMessages = this.convertToUIMessages(messages);\n\n return { messages, uiMessages };\n } finally {\n client.release();\n }\n }\n\n async saveMessages({ messages }: { messages: MessageType[] }): Promise<MessageType[]> {\n await this.ensureTablesExist();\n\n const client = await this.pool.connect();\n try {\n await client.query('BEGIN');\n for (const message of messages) {\n const { id, content, role, createdAt, threadId, toolCallIds, toolCallArgs, type, toolNames } = message;\n let tokens = null;\n if (type === 'text') {\n const contentMssg = role === 'assistant' ? (content as Array<TextPart>)[0]?.text || '' : (content as string);\n tokens = this.estimateTokens(contentMssg);\n }\n\n // Hash the toolCallArgs if they exist\n const hashedToolCallArgs = toolCallArgs\n ? toolCallArgs.map((args, index) =>\n crypto\n .createHash('sha256')\n .update(JSON.stringify({ args, threadId, toolName: toolNames?.[index] }))\n .digest('hex'),\n )\n : null;\n\n let validArgExists = false;\n if (hashedToolCallArgs?.length) {\n // Check all args sequentially\n validArgExists = true; // Start true and set to false if any check fails\n for (let i = 0; i < hashedToolCallArgs.length; i++) {\n const isValid = await this.validateToolCallArgs({\n hashedArgs: hashedToolCallArgs[i]!,\n });\n if (!isValid) {\n validArgExists = false;\n break;\n }\n }\n }\n\n const toolCallArgsExpireAt = !toolCallArgs\n ? null\n : validArgExists\n ? createdAt\n : new Date(createdAt.getTime() + 5 * 60 * 1000); // 5 minutes\n\n await client.query(\n `\n INSERT INTO mastra_messages (id, content, role, created_at, thread_id, tool_call_ids, tool_call_args, type, tokens, tool_call_args_expire_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)\n `,\n [\n id,\n JSON.stringify(content),\n role,\n createdAt.toISOString(),\n threadId,\n JSON.stringify(toolCallIds),\n JSON.stringify(hashedToolCallArgs),\n type,\n tokens,\n toolCallArgsExpireAt?.toISOString(),\n ],\n );\n }\n await client.query('COMMIT');\n return messages;\n } catch (error) {\n await client.query('ROLLBACK');\n throw error;\n } finally {\n client.release();\n }\n }\n\n async deleteMessage(id: string): Promise<void> {\n const client = await this.pool.connect();\n try {\n await client.query(\n `\n DELETE FROM mastra_messages\n WHERE id = $1\n `,\n [id],\n );\n } finally {\n client.release();\n }\n }\n\n /**\n * Table Management\n */\n\n async drop() {\n const client = await this.pool.connect();\n await client.query('DELETE FROM mastra_messages');\n await client.query('DELETE FROM mastra_threads');\n client.release();\n await this.pool.end();\n }\n\n async ensureTablesExist(): Promise<void> {\n if (this.hasTables) {\n return;\n }\n\n const client = await this.pool.connect();\n try {\n // Check if the threads table exists\n const threadsResult = await client.query<{ exists: boolean }>(`\n SELECT EXISTS (\n SELECT 1\n FROM information_schema.tables\n WHERE table_name = 'mastra_threads'\n );\n `);\n\n if (!threadsResult?.rows?.[0]?.exists) {\n await client.query(`\n CREATE TABLE IF NOT EXISTS mastra_threads (\n id UUID PRIMARY KEY,\n resourceid TEXT,\n title TEXT,\n created_at TIMESTAMP WITH TIME ZONE NOT NULL,\n updated_at TIMESTAMP WITH TIME ZONE NOT NULL,\n metadata JSONB\n );\n `);\n }\n\n // Check if the messages table exists\n const messagesResult = await client.query<{ exists: boolean }>(`\n SELECT EXISTS (\n SELECT 1\n FROM information_schema.tables\n WHERE table_name = 'mastra_messages'\n );\n `);\n\n if (!messagesResult?.rows?.[0]?.exists) {\n await client.query(`\n CREATE TABLE IF NOT EXISTS mastra_messages (\n id UUID PRIMARY KEY,\n content TEXT NOT NULL,\n role VARCHAR(20) NOT NULL,\n created_at TIMESTAMP WITH TIME ZONE NOT NULL,\n tool_call_ids TEXT DEFAULT NULL,\n tool_call_args TEXT DEFAULT NULL,\n tool_call_args_expire_at TIMESTAMP WITH TIME ZONE DEFAULT NULL,\n type VARCHAR(20) NOT NULL,\n tokens INTEGER DEFAULT NULL,\n thread_id UUID NOT NULL,\n FOREIGN KEY (thread_id) REFERENCES mastra_threads(id)\n );\n `);\n }\n } finally {\n client.release();\n this.hasTables = true;\n }\n }\n}\n","import { MastraMemory, MessageType as BaseMastraMessageType, ThreadType, MessageResponse } from '@mastra/core';\nimport { Redis } from '@upstash/redis';\nimport { ToolResultPart, Message as AiMessage, TextPart } from 'ai';\nimport crypto from 'crypto';\n\ninterface ToolCacheData {\n expireAt: string;\n result?: ToolResultPart['result'];\n}\n\ninterface MessageType extends BaseMastraMessageType {\n tokens?: number;\n}\n\n// Internal type for serialized thread data\ninterface SerializedThreadType extends Omit<ThreadType, 'createdAt' | 'updatedAt'> {\n createdAt: string;\n updatedAt: string;\n}\n\nexport class UpstashKVMemory extends MastraMemory {\n private prefix: string;\n\n kv: Redis;\n\n constructor(config: { url: string; token: string; prefix?: string; maxTokens?: number }) {\n super();\n this.prefix = config.prefix || 'mastra';\n this.MAX_CONTEXT_TOKENS = config.maxTokens;\n\n this.kv = new Redis({\n url: config.url,\n token: config.token,\n });\n }\n\n private getThreadKey(threadId: string): string {\n return `${this.prefix}:thread:${threadId}`;\n }\n\n private getMessagesKey(threadId: string): string {\n return `${this.prefix}:messages:${threadId}`;\n }\n\n private getToolCacheKey(hashedArgs: string): string {\n return `${this.prefix}:tool:${hashedArgs}`;\n }\n\n async getThreadById({ threadId }: { threadId: string }): Promise<ThreadType | null> {\n const thread = await this.kv.get<SerializedThreadType>(this.getThreadKey(threadId));\n return thread ? this.parseThread(thread) : null;\n }\n\n async getThreadsByResourceId({ resourceid }: { resourceid: string }): Promise<ThreadType[]> {\n const pattern = `${this.prefix}:thread:*`;\n const keys = await this.kv.keys(pattern);\n\n const threads = await Promise.all(keys.map(key => this.kv.get<SerializedThreadType>(key)));\n\n return threads\n .filter(thread => thread?.resourceid === resourceid)\n .map(thread => this.parseThread(thread as SerializedThreadType));\n }\n\n async saveThread({ thread }: { thread: ThreadType }): Promise<ThreadType> {\n const key = this.getThreadKey(thread.id);\n const serializedThread: SerializedThreadType = {\n ...thread,\n createdAt: thread.createdAt.toISOString(),\n updatedAt: thread.updatedAt.toISOString(),\n };\n await this.kv.set(key, serializedThread);\n return thread;\n }\n\n async updateThread(id: string, title: string, metadata: Record<string, unknown>): Promise<ThreadType> {\n const key = this.getThreadKey(id);\n const thread = await this.kv.get<SerializedThreadType>(key);\n\n if (!thread) {\n throw new Error(`Thread ${id} not found`);\n }\n\n const updatedThread: SerializedThreadType = {\n ...thread,\n title,\n metadata,\n updatedAt: new Date().toISOString(),\n };\n\n await this.kv.set(key, updatedThread);\n return this.parseThread(updatedThread);\n }\n\n async deleteThread(id: string): Promise<void> {\n await this.kv.del(this.getThreadKey(id));\n await this.kv.del(this.getMessagesKey(id));\n }\n\n /**\n * Tool Cache\n */\n\n async validateToolCallArgs({ hashedArgs }: { hashedArgs: string }): Promise<boolean> {\n const cacheKey = this.getToolCacheKey(hashedArgs);\n const cached = await this.kv.get<ToolCacheData>(cacheKey);\n return !!cached && new Date(cached.expireAt) > new Date();\n }\n\n async getToolResult({\n threadId,\n toolArgs,\n toolName,\n }: {\n threadId: string;\n toolArgs: Record<string, unknown>;\n toolName: string;\n }): Promise<ToolResultPart['result'] | null> {\n const hashedToolArgs = crypto\n .createHash('sha256')\n .update(JSON.stringify({ args: toolArgs, threadId, toolName }))\n .digest('hex');\n\n const cacheKey = this.getToolCacheKey(hashedToolArgs);\n const cached = await this.kv.get<ToolCacheData>(cacheKey);\n\n if (cached && new Date(cached.expireAt) > new Date()) {\n return cached.result || null;\n }\n\n return null;\n }\n\n async getContextWindow<T extends 'raw' | 'core_message'>({\n threadId,\n startDate,\n endDate,\n format = 'raw' as T,\n }: {\n format?: T;\n threadId: string;\n startDate?: Date;\n endDate?: Date;\n }) {\n const messagesKey = this.getMessagesKey(threadId);\n const messages = await this.kv.lrange<MessageType>(messagesKey, 0, -1);\n\n let filteredMessages = messages.filter(msg => msg.type === 'text');\n\n if (startDate) {\n filteredMessages = filteredMessages.filter(msg => new Date(msg.createdAt) >= startDate);\n }\n\n if (endDate) {\n filteredMessages = filteredMessages.filter(msg => new Date(msg.createdAt) <= endDate);\n }\n\n if (this.MAX_CONTEXT_TOKENS) {\n let totalTokens = 0;\n const messagesWithinTokenLimit: MessageType[] = [];\n\n // Process messages from newest to oldest\n for (const message of filteredMessages.reverse()) {\n const content =\n message.role === 'assistant'\n ? (message.content as Array<TextPart>)[0]?.text || ''\n : (message.content as string);\n\n // Use a more aggressive token estimation\n // Roughly estimate 1 token per 4 characters\n const tokens = Math.ceil(content.length / 4);\n\n // Check if adding this message would exceed the token limit\n if (totalTokens + tokens > this.MAX_CONTEXT_TOKENS) {\n break;\n }\n\n totalTokens += tokens;\n messagesWithinTokenLimit.unshift({\n ...message,\n tokens,\n });\n }\n\n console.log('Format:', format);\n // Return messages in chronological order\n return this.parseMessages(messagesWithinTokenLimit) as MessageResponse<T>;\n }\n\n return this.parseMessages(filteredMessages) as MessageResponse<T>;\n }\n\n /**\n * Messages\n */\n\n async getMessages({ threadId }: { threadId: string }): Promise<{ messages: MessageType[]; uiMessages: AiMessage[] }> {\n const messagesKey = this.getMessagesKey(threadId);\n const messages = await this.kv.lrange<MessageType>(messagesKey, 0, -1);\n const parsedMessages = this.parseMessages(messages);\n const uiMessages = this.convertToUIMessages(parsedMessages);\n\n return { messages: parsedMessages, uiMessages };\n }\n\n async saveMessages({ messages }: { messages: MessageType[] }): Promise<MessageType[]> {\n const processedMessages: MessageType[] = [];\n\n for (const message of messages) {\n const { threadId, toolCallArgs, toolNames, createdAt } = message;\n const messagesKey = this.getMessagesKey(threadId);\n\n const processedMessage = { ...message };\n\n if (message.type === 'text') {\n const content =\n message.role === 'assistant'\n ? (message.content as Array<TextPart>)[0]?.text || ''\n : (message.content as string);\n processedMessage.tokens = this.estimateTokens(content);\n }\n\n if (toolCallArgs?.length) {\n const hashedToolCallArgs = toolCallArgs.map((args, index) =>\n crypto\n .createHash('sha256')\n .update(JSON.stringify({ args, threadId, toolName: toolNames?.[index] }))\n .digest('hex'),\n );\n\n let validArgExists = true;\n for (const hashedArg of hashedToolCallArgs) {\n const isValid = await this.validateToolCallArgs({ hashedArgs: hashedArg });\n if (!isValid) {\n validArgExists = false;\n break;\n }\n }\n\n const expireAt = validArgExists ? createdAt : new Date(createdAt.getTime() + 5 * 60 * 1000); // 5 minutes\n\n for (const hashedArg of hashedToolCallArgs) {\n const cacheKey = this.getToolCacheKey(hashedArg);\n await this.kv.set(cacheKey, { expireAt: expireAt.toISOString() } as ToolCacheData);\n }\n }\n\n await this.kv.rpush(messagesKey, processedMessage);\n processedMessages.push(processedMessage);\n }\n\n return processedMessages;\n }\n\n async deleteMessage(id: string): Promise<void> {\n const pattern = `${this.prefix}:messages:*`;\n const keys = await this.kv.keys(pattern);\n\n for (const key of keys) {\n const messages = await this.kv.lrange<MessageType>(key, 0, -1);\n const filteredMessages = messages.filter(msg => msg.id !== id);\n\n if (messages.length !== filteredMessages.length) {\n await this.kv.del(key);\n if (filteredMessages.length > 0) {\n await this.kv.rpush(key, ...filteredMessages);\n }\n }\n }\n }\n\n /**\n * Cleanup\n */\n\n async drop(): Promise<void> {\n const pattern = `${this.prefix}:*`;\n const keys = await this.kv.keys(pattern);\n if (keys.length > 0) {\n await this.kv.del(...keys);\n }\n }\n\n parseThread(thread: SerializedThreadType): ThreadType {\n return {\n ...thread,\n createdAt: new Date(thread.createdAt),\n updatedAt: new Date(thread.updatedAt),\n };\n }\n\n parseMessages(messages: MessageType[]): MessageType[] {\n return messages.map(message => ({\n ...message,\n createdAt: new Date(message.createdAt),\n }));\n }\n}\n"],"names":["Pool","pg","PgMemory","_MastraMemory","config","_this","call","this","pool","hasTables","connectionString","MAX_CONTEXT_TOKENS","maxTokens","_inheritsLoose","_proto","prototype","getThreadById","_getThreadById","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref","threadId","client","wrap","_context","prev","next","ensureTablesExist","connect","sent","query","abrupt","result","rows","release","finish","stop","_x","apply","arguments","getThreadsByResourceId","_getThreadsByResourceId","_callee2","_ref2","resourceid","_context2","_x2","saveThread","_saveThread","_callee3","_ref3","thread","_result$rows","id","title","createdAt","updatedAt","metadata","_context3","JSON","stringify","_x3","updateThread","_updateThread","_callee4","_result$rows2","_context4","_x4","_x5","_x6","deleteThread","_deleteThread","_callee5","_context5","_x7","validateToolCallArgs","_validateToolCallArgs","_callee6","_ref4","hashedArgs","_context6","Date","toISOString","toolArgsResult","length","t0","console","log","_x8","getToolResult","_getToolResult","_callee7","_ref5","toolArgs","toolName","hashedToolArgs","_toolArgsResult$rows$","_toolArgsResult$rows$2","_toolArgsResult$rows$3","_toolResult$rows$","toolCallArgs","toolCallIds","toolCallArgsIndex","correspondingToolCallId","toolResult","toolResultContent","requiredToolResult","_context7","crypto","createHash","update","args","digest","parse","tool_call_args","tool_call_ids","created_at","findIndex","arg","content","find","part","toolCallId","_x9","getContextWindow","_getContextWindow","_callee8","_ref6","startDate","endDate","_ref6$format","format","_result","_context8","parseMessages","_x10","getMessages","_getMessages","_callee9","_ref7","messages","uiMessages","_context9","convertToUIMessages","_x11","saveMessages","_saveMessages","_callee10","_ref8","_loop","_iterator","_step","_this2","_context11","message","role","type","toolNames","tokens","_content$","contentMssg","hashedToolCallArgs","validArgExists","i","toolCallArgsExpireAt","_context10","value","text","estimateTokens","map","index","getTime","_createForOfIteratorHelperLoose","done","delegateYield","t1","_x12","deleteMessage","_deleteMessage","_callee11","_context12","_x13","drop","_drop","_callee12","_context13","end","_ensureTablesExist","_callee13","_threadsResult$rows","_messagesResult$rows","threadsResult","messagesResult","_context14","exists","MastraMemory","UpstashKVMemory","prefix","kv","Redis","url","token","getThreadKey","getMessagesKey","getToolCacheKey","get","parseThread","pattern","keys","Promise","all","key","filter","serializedThread","_extends","set","updatedThread","Error","del","cacheKey","cached","expireAt","messagesKey","filteredMessages","totalTokens","messagesWithinTokenLimit","_message$content$","lrange","msg","reverse","Math","ceil","unshift","parsedMessages","processedMessages","_iterator2","_step2","_this3","processedMessage","_message$content$2","_iterator3","_step3","hashedArg","_iterator4","_step4","rpush","push","_iterator5","_step5","_this$kv","concat","_this$kv2"],"mappings":"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"}
@@ -631,68 +631,57 @@ var PgMemory = /*#__PURE__*/function (_MastraMemory) {
631
631
  threadId: threadId,
632
632
  toolName: toolName
633
633
  })).digest('hex');
634
- console.log('hashedToolArgs====', hashedToolArgs);
635
- _context7.next = 12;
634
+ _context7.next = 11;
636
635
  return client.query("SELECT tool_call_ids, \n tool_call_args,\n created_at\n FROM mastra_messages\n WHERE tool_call_args::jsonb @> $1\n AND tool_call_args_expire_at > $2\n ORDER BY created_at ASC\n LIMIT 1", [JSON.stringify([hashedToolArgs]), new Date().toISOString()]);
637
- case 12:
636
+ case 11:
638
637
  toolArgsResult = _context7.sent;
639
638
  if (!(toolArgsResult.rows.length > 0)) {
640
- _context7.next = 36;
639
+ _context7.next = 28;
641
640
  break;
642
641
  }
643
- console.log('toolArgsResult====', JSON.stringify(toolArgsResult.rows[0], null, 2));
644
642
  toolCallArgs = JSON.parse((_toolArgsResult$rows$ = toolArgsResult.rows[0]) == null ? void 0 : _toolArgsResult$rows$.tool_call_args);
645
643
  toolCallIds = JSON.parse((_toolArgsResult$rows$2 = toolArgsResult.rows[0]) == null ? void 0 : _toolArgsResult$rows$2.tool_call_ids);
646
644
  createdAt = (_toolArgsResult$rows$3 = toolArgsResult.rows[0]) == null ? void 0 : _toolArgsResult$rows$3.created_at;
647
- console.log('toolCallArgs====', JSON.stringify(toolCallArgs, null, 2));
648
- console.log('toolCallIds====', JSON.stringify(toolCallIds, null, 2));
649
- console.log('createdAt====', createdAt);
650
645
  toolCallArgsIndex = toolCallArgs.findIndex(function (arg) {
651
646
  return arg === hashedToolArgs;
652
647
  });
653
648
  correspondingToolCallId = toolCallIds[toolCallArgsIndex];
654
- console.log('correspondingToolCallId====', {
655
- correspondingToolCallId: correspondingToolCallId,
656
- toolCallArgsIndex: toolCallArgsIndex
657
- });
658
- _context7.next = 26;
649
+ _context7.next = 20;
659
650
  return client.query("SELECT content \n FROM mastra_messages \n WHERE thread_id = $1\n AND tool_call_ids ILIKE $2\n AND type = 'tool-result'\n AND created_at = $3\n LIMIT 1", [threadId, "%" + correspondingToolCallId + "%", new Date(createdAt).toISOString()]);
660
- case 26:
651
+ case 20:
661
652
  toolResult = _context7.sent;
662
- console.log('called toolResult');
663
653
  if (!(toolResult.rows.length === 0)) {
664
- _context7.next = 31;
654
+ _context7.next = 24;
665
655
  break;
666
656
  }
667
657
  console.log('no tool result found');
668
658
  return _context7.abrupt("return", null);
669
- case 31:
659
+ case 24:
670
660
  toolResultContent = JSON.parse((_toolResult$rows$ = toolResult.rows[0]) == null ? void 0 : _toolResult$rows$.content);
671
661
  requiredToolResult = toolResultContent.find(function (part) {
672
662
  return part.toolCallId === correspondingToolCallId;
673
663
  });
674
- console.log('requiredToolResult====', JSON.stringify(requiredToolResult, null, 2));
675
664
  if (!requiredToolResult) {
676
- _context7.next = 36;
665
+ _context7.next = 28;
677
666
  break;
678
667
  }
679
668
  return _context7.abrupt("return", requiredToolResult.result);
680
- case 36:
669
+ case 28:
681
670
  return _context7.abrupt("return", null);
682
- case 39:
683
- _context7.prev = 39;
671
+ case 31:
672
+ _context7.prev = 31;
684
673
  _context7.t0 = _context7["catch"](7);
685
674
  console.log('error getting cached tool result====', _context7.t0);
686
675
  return _context7.abrupt("return", null);
687
- case 43:
688
- _context7.prev = 43;
676
+ case 35:
677
+ _context7.prev = 35;
689
678
  client.release();
690
- return _context7.finish(43);
691
- case 46:
679
+ return _context7.finish(35);
680
+ case 38:
692
681
  case "end":
693
682
  return _context7.stop();
694
683
  }
695
- }, _callee7, this, [[7, 39, 43, 46]]);
684
+ }, _callee7, this, [[7, 31, 35, 38]]);
696
685
  }));
697
686
  function getToolResult(_x9) {
698
687
  return _getToolResult.apply(this, arguments);
@@ -822,7 +811,6 @@ var PgMemory = /*#__PURE__*/function (_MastraMemory) {
822
811
  while (1) switch (_context10.prev = _context10.next) {
823
812
  case 0:
824
813
  message = _step.value;
825
- console.log('saving message====', JSON.stringify(message, null, 2));
826
814
  id = message.id, content = message.content, role = message.role, createdAt = message.createdAt, threadId = message.threadId, toolCallIds = message.toolCallIds, toolCallArgs = message.toolCallArgs, type = message.type, toolNames = message.toolNames;
827
815
  tokens = null;
828
816
  if (type === 'text') {
@@ -839,39 +827,38 @@ var PgMemory = /*#__PURE__*/function (_MastraMemory) {
839
827
  }) : null;
840
828
  validArgExists = false;
841
829
  if (!(hashedToolCallArgs != null && hashedToolCallArgs.length)) {
842
- _context10.next = 20;
830
+ _context10.next = 19;
843
831
  break;
844
832
  }
845
833
  // Check all args sequentially
846
834
  validArgExists = true; // Start true and set to false if any check fails
847
835
  i = 0;
848
- case 10:
836
+ case 9:
849
837
  if (!(i < hashedToolCallArgs.length)) {
850
- _context10.next = 20;
838
+ _context10.next = 19;
851
839
  break;
852
840
  }
853
- _context10.next = 13;
841
+ _context10.next = 12;
854
842
  return _this2.validateToolCallArgs({
855
843
  hashedArgs: hashedToolCallArgs[i]
856
844
  });
857
- case 13:
845
+ case 12:
858
846
  isValid = _context10.sent;
859
847
  if (isValid) {
860
- _context10.next = 17;
848
+ _context10.next = 16;
861
849
  break;
862
850
  }
863
851
  validArgExists = false;
864
- return _context10.abrupt("break", 20);
865
- case 17:
852
+ return _context10.abrupt("break", 19);
853
+ case 16:
866
854
  i++;
867
- _context10.next = 10;
855
+ _context10.next = 9;
868
856
  break;
869
- case 20:
857
+ case 19:
870
858
  toolCallArgsExpireAt = !toolCallArgs ? null : validArgExists ? createdAt : new Date(createdAt.getTime() + 5 * 60 * 1000); // 5 minutes
871
- console.log('just before query');
872
- _context10.next = 24;
859
+ _context10.next = 22;
873
860
  return client.query("\n INSERT INTO mastra_messages (id, content, role, created_at, thread_id, tool_call_ids, tool_call_args, type, tokens, tool_call_args_expire_at)\n VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)\n ", [id, JSON.stringify(content), role, createdAt.toISOString(), threadId, JSON.stringify(toolCallIds), JSON.stringify(hashedToolCallArgs), type, tokens, toolCallArgsExpireAt == null ? void 0 : toolCallArgsExpireAt.toISOString()]);
874
- case 24:
861
+ case 22:
875
862
  case "end":
876
863
  return _context10.stop();
877
864
  }
@@ -888,27 +875,26 @@ var PgMemory = /*#__PURE__*/function (_MastraMemory) {
888
875
  _context11.next = 11;
889
876
  break;
890
877
  case 15:
891
- console.log('just after query');
892
- _context11.next = 18;
878
+ _context11.next = 17;
893
879
  return client.query('COMMIT');
894
- case 18:
880
+ case 17:
895
881
  return _context11.abrupt("return", messages);
896
- case 21:
897
- _context11.prev = 21;
882
+ case 20:
883
+ _context11.prev = 20;
898
884
  _context11.t1 = _context11["catch"](6);
899
- _context11.next = 25;
885
+ _context11.next = 24;
900
886
  return client.query('ROLLBACK');
901
- case 25:
887
+ case 24:
902
888
  throw _context11.t1;
903
- case 26:
904
- _context11.prev = 26;
889
+ case 25:
890
+ _context11.prev = 25;
905
891
  client.release();
906
- return _context11.finish(26);
907
- case 29:
892
+ return _context11.finish(25);
893
+ case 28:
908
894
  case "end":
909
895
  return _context11.stop();
910
896
  }
911
- }, _callee10, this, [[6, 21, 26, 29]]);
897
+ }, _callee10, this, [[6, 20, 25, 28]]);
912
898
  }));
913
899
  function saveMessages(_x12) {
914
900
  return _saveMessages.apply(this, arguments);