@supermemory/tools
Advanced tools
+1
-0
@@ -43,2 +43,3 @@ import { SupermemoryToolsConfig } from "./types-CNqWluJ2.js"; | ||
| mode?: "profile" | "query" | "full"; | ||
| addMemory?: "always" | "never"; | ||
| }) => LanguageModelV2; | ||
@@ -45,0 +46,0 @@ //#endregion |
+1
-1
@@ -6,2 +6,2 @@ import{DEFAULT_VALUES as e,PARAMETER_DESCRIPTIONS as t,TOOL_DESCRIPTIONS as n,getContainerTags as r}from"./shared-CttEw8ws.js";import i from"supermemory";import{tool as a,wrapLanguageModel as o}from"ai";import{z as s}from"zod";const c=e=>e?{debug:(e,t)=>{console.log(`[supermemory] ${e}`,t?JSON.stringify(t,null,2):``)},info:(e,t)=>{console.log(`[supermemory] ${e}`,t?JSON.stringify(t,null,2):``)},warn:(e,t)=>{console.warn(`[supermemory] ${e}`,t?JSON.stringify(t,null,2):``)},error:(e,t)=>{console.error(`[supermemory] ${e}`,t?JSON.stringify(t,null,2):``)}}:{debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}};function l(e){let t=[];return e.profile.static&&e.profile.static.length>0&&(t.push(`## Static Profile`),t.push(e.profile.static.map(e=>`- ${e}`).join(` | ||
| `)}const u=e=>e.prompt.reverse().find(e=>e.role===`user`)?.content.filter(e=>e.type===`text`).map(e=>e.text).join(` `),d=async(e,t)=>{let n=process.env.SUPERMEMORY_API_KEY;if(!n)throw Error(`SUPERMEMORY_API_KEY is not set`);let r=t?JSON.stringify({q:t,containerTag:e}):JSON.stringify({containerTag:e});try{let e=await fetch(`https://api.supermemory.ai/v4/profile`,{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${n}`},body:r});if(!e.ok){let t=await e.text().catch(()=>`Unknown error`);throw Error(`Supermemory profile search failed: ${e.status} ${e.statusText}. ${t}`)}return await e.json()}catch(e){throw e instanceof Error?e:Error(`Supermemory API request failed: ${e}`)}},f=async(e,t,n,r)=>{let i=e.prompt.some(e=>e.role===`system`),a=r===`profile`?``:e.prompt.reverse().find(e=>e.role===`user`)?.content?.filter(e=>e.type===`text`)?.map(e=>e.type===`text`?e.text:``)?.join(` `)||``,o=await d(t,a),s=o.profile.static?.length||0,c=o.profile.dynamic?.length||0;n.info(`Memory search completed`,{containerTag:t,memoryCountStatic:s,memoryCountDynamic:c,queryText:a.substring(0,100)+(a.length>100?`...`:``),mode:r});let u=r===`query`?``:l(o),f=r===`profile`?``:`Search results for user's recent message: \n${o.searchResults.results.map(e=>`- ${e.memory}`).join(` | ||
| `)}`,p=`${u}\n${f}`.trim();return p&&n.debug(`Memory content preview`,{content:p.substring(0,200),fullLength:p.length}),i?(n.debug(`Appending memories to existing system prompt`),{...e,prompt:e.prompt.map(e=>e.role===`system`?{...e,content:`${e.content} \n ${p}`}:e)}):(n.debug(`System prompt does not exist, creating system prompt with memories`),{...e,prompt:[{role:`system`,content:p},...e.prompt]})},p=(e,t=!1,n=`profile`)=>{let r=c(t);return{transformParams:async({params:t})=>n!==`profile`&&!u(t)?(r.debug(`No user message found, skipping memory search`),t):(r.info(`Starting memory search`,{containerTag:e,mode:n}),await f(t,e,r,n))}},m=(e,t,n)=>{if(!process.env.SUPERMEMORY_API_KEY)throw Error(`SUPERMEMORY_API_KEY is not set`);let r=n?.verbose??!1,i=n?.mode??`profile`;return o({model:e,middleware:p(t,r,i)})},h=(o,c)=>{let l=new i({apiKey:o,...c?.baseUrl?{baseURL:c.baseUrl}:{}}),u=r(c);return a({description:n.searchMemories,inputSchema:s.object({informationToGet:s.string().describe(t.informationToGet),includeFullDocs:s.boolean().optional().default(e.includeFullDocs).describe(t.includeFullDocs),limit:s.number().optional().default(e.limit).describe(t.limit)}),execute:async({informationToGet:t,includeFullDocs:n=e.includeFullDocs,limit:r=e.limit})=>{try{let i=await l.search.execute({q:t,containerTags:u,limit:r,chunkThreshold:e.chunkThreshold,includeFullDocs:n});return{success:!0,results:i.results,count:i.results?.length||0}}catch(e){return{success:!1,error:e instanceof Error?e.message:`Unknown error`}}}})},g=(e,o)=>{let c=new i({apiKey:e,...o?.baseUrl?{baseURL:o.baseUrl}:{}}),l=r(o);return a({description:n.addMemory,inputSchema:s.object({memory:s.string().describe(t.memory)}),execute:async({memory:e})=>{try{let t={};return{success:!0,memory:await c.memories.add({content:e,containerTags:l,...Object.keys(t).length>0&&{metadata:t}})}}catch(e){return{success:!1,error:e instanceof Error?e.message:`Unknown error`}}}})};function _(e,t){return{searchMemories:h(e,t),addMemory:g(e,t)}}export{g as addMemoryTool,h as searchMemoriesTool,_ as supermemoryTools,m as withSupermemory}; | ||
| `)}`,p=`${u}\n${f}`.trim();return p&&n.debug(`Memory content preview`,{content:p.substring(0,200),fullLength:p.length}),i?(n.debug(`Appending memories to existing system prompt`),{...e,prompt:e.prompt.map(e=>e.role===`system`?{...e,content:`${e.content} \n ${p}`}:e)}):(n.debug(`System prompt does not exist, creating system prompt with memories`),{...e,prompt:[{role:`system`,content:p},...e.prompt]})},p=async(e,t,n,r)=>{try{let i=await e.memories.add({content:n,containerTags:[t]});r.info(`Memory saved successfully`,{containerTag:t,contentLength:n.length,memoryId:i.id})}catch(e){r.error(`Error saving memory`,{error:e instanceof Error?e.message:`Unknown error`})}},m=(e,t=!1,n=`profile`,r=`never`)=>{let a=c(t),o=process.env.SUPERMEMORY_API_KEY;if(!o)throw Error(`SUPERMEMORY_API_KEY is not set`);let s=new i({apiKey:o});return{transformParams:async({params:t})=>{let i=u(t);return r===`always`&&i&&i.trim()&&p(s,e,i,a).catch(e=>{a.error(`Failed to create memories`,{error:e})}),n!==`profile`&&!i?(a.debug(`No user message found, skipping memory search`),t):(a.info(`Starting memory search`,{containerTag:e,mode:n}),await f(t,e,a,n))}}},h=(e,t,n)=>{if(!process.env.SUPERMEMORY_API_KEY)throw Error(`SUPERMEMORY_API_KEY is not set`);let r=n?.verbose??!1,i=n?.mode??`profile`,a=n?.addMemory??`never`;return o({model:e,middleware:m(t,r,i,a)})},g=(o,c)=>{let l=new i({apiKey:o,...c?.baseUrl?{baseURL:c.baseUrl}:{}}),u=r(c);return a({description:n.searchMemories,inputSchema:s.object({informationToGet:s.string().describe(t.informationToGet),includeFullDocs:s.boolean().optional().default(e.includeFullDocs).describe(t.includeFullDocs),limit:s.number().optional().default(e.limit).describe(t.limit)}),execute:async({informationToGet:t,includeFullDocs:n=e.includeFullDocs,limit:r=e.limit})=>{try{let i=await l.search.execute({q:t,containerTags:u,limit:r,chunkThreshold:e.chunkThreshold,includeFullDocs:n});return{success:!0,results:i.results,count:i.results?.length||0}}catch(e){return{success:!1,error:e instanceof Error?e.message:`Unknown error`}}}})},_=(e,o)=>{let c=new i({apiKey:e,...o?.baseUrl?{baseURL:o.baseUrl}:{}}),l=r(o);return a({description:n.addMemory,inputSchema:s.object({memory:s.string().describe(t.memory)}),execute:async({memory:e})=>{try{let t={};return{success:!0,memory:await c.memories.add({content:e,containerTags:l,...Object.keys(t).length>0&&{metadata:t}})}}catch(e){return{success:!1,error:e instanceof Error?e.message:`Unknown error`}}}})};function v(e,t){return{searchMemories:g(e,t),addMemory:_(e,t)}}export{_ as addMemoryTool,g as searchMemoriesTool,v as supermemoryTools,h as withSupermemory}; |
+1
-1
| { | ||
| "name": "@supermemory/tools", | ||
| "type": "module", | ||
| "version": "1.2.12", | ||
| "version": "1.2.13", | ||
| "description": "Memory tools for AI SDK and OpenAI function calling with supermemory", | ||
@@ -6,0 +6,0 @@ "scripts": { |
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
39954
1.42%427
0.23%6
20%