Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@supermemory/tools

Package Overview
Dependencies
Maintainers
1
Versions
45
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@supermemory/tools - npm Package Compare versions

Comparing version
1.2.16
to
1.2.17
+14
-7
dist/ai-sdk.d.ts

@@ -7,3 +7,8 @@ import { SupermemoryToolsConfig } from "./types-CNqWluJ2.js";

//#region src/vercel/index.d.ts
interface WrapVercelLanguageModelOptions {
conversationId?: string;
verbose?: boolean;
mode?: "profile" | "query" | "full";
addMemory?: "always" | "never";
}
/**

@@ -20,4 +25,6 @@ * Wraps a language model with supermemory middleware to automatically inject relevant memories

* @param options - Optional configuration options for the middleware
* @param options.conversationId - Optional conversation ID to group messages into a single document for contextual memory generation
* @param options.verbose - Optional flag to enable detailed logging of memory search and injection process (default: false)
* @param options.mode - Optional mode for memory search: "profile" (default), "query", or "full"
* @param options.addMemory - Optional mode for memory search: "always" (default), "never"
*

@@ -31,3 +38,7 @@ * @returns A wrapped language model that automatically includes relevant memories in prompts

*
* const modelWithMemory = withSupermemory(openai("gpt-4"), "user-123")
* const modelWithMemory = withSupermemory(openai("gpt-4"), "user-123", {
* conversationId: "conversation-456",
* mode: "full",
* addMemory: "always"
* })
*

@@ -43,7 +54,3 @@ * const result = await generateText({

*/
declare const wrapVercelLanguageModel: (model: LanguageModelV2, containerTag: string, options?: {
verbose?: boolean;
mode?: "profile" | "query" | "full";
addMemory?: "always" | "never";
}) => LanguageModelV2;
declare const wrapVercelLanguageModel: (model: LanguageModelV2, containerTag: string, options?: WrapVercelLanguageModelOptions) => LanguageModelV2;
//#endregion

@@ -50,0 +57,0 @@ //#region src/ai-sdk.d.ts

@@ -5,3 +5,5 @@ 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=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};
`)}const u=e=>e.prompt.slice().reverse().find(e=>e.role===`user`)?.content.filter(e=>e.type===`text`).map(e=>e.text).join(` `),d=async(e,t)=>{let n=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 ${process.env.SUPERMEMORY_API_KEY}`},body:n});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.slice().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,fullLength:p.length}),i?(n.debug(`Added 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, created system prompt with memories`),{...e,prompt:[{role:`system`,content:p},...e.prompt]})},p=e=>e.prompt.map(e=>{let t=e.role===`user`?`User`:`Assistant`;if(typeof e.content==`string`)return`${t}: ${e.content}`;let n=e.content.filter(e=>e.type===`text`).map(e=>e.type===`text`?e.text:``).join(` `);return`${t}: ${n}`}).join(`
`),m=async(e,t,n,r,i)=>{try{let a=await e.memories.add({content:n,containerTags:[t],customId:r});i.info(`Memory saved successfully`,{containerTag:t,customId:r,contentLength:n.length,memoryId:a.id})}catch(e){i.error(`Error saving memory`,{error:e instanceof Error?e.message:`Unknown error`})}},h=(e,t,n=!1,r=`profile`,a=`never`)=>{let o=c(n),s=new i({apiKey:process.env.SUPERMEMORY_API_KEY});return{transformParams:async({params:n})=>{let i=u(n);if(a===`always`&&i&&i.trim()){let r=t?p(n):i,a=t?`conversation:${t}`:void 0;m(s,e,r,a,o)}return r!==`profile`&&!i?(o.debug(`No user message found, skipping memory search`),n):(o.info(`Starting memory search`,{containerTag:e,conversationId:t,mode:r}),await f(n,e,o,r))}}},g=(e,t,n)=>{if(!process.env.SUPERMEMORY_API_KEY)throw Error(`SUPERMEMORY_API_KEY is not set`);let r=n?.conversationId,i=n?.verbose??!1,a=n?.mode??`profile`,s=n?.addMemory??`never`;return o({model:e,middleware:h(t,r,i,a,s)})},_=(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`}}}})},v=(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 y(e,t){return{searchMemories:_(e,t),addMemory:v(e,t)}}export{v as addMemoryTool,_ as searchMemoriesTool,y as supermemoryTools,g as withSupermemory};
{
"name": "@supermemory/tools",
"type": "module",
"version": "1.2.16",
"version": "1.2.17",
"description": "Memory tools for AI SDK and OpenAI function calling with supermemory",

@@ -6,0 +6,0 @@ "scripts": {