diff --git a/bun.lock b/bun.lock index 24dd6a58..b33504c2 100644 --- a/bun.lock +++ b/bun.lock @@ -248,17 +248,17 @@ }, "packages/tools": { "name": "@supermemory/tools", - "version": "1.3.50", + "version": "1.3.62", "dependencies": { "@ai-sdk/anthropic": "^2.0.25", "@ai-sdk/openai": "^2.0.23", - "@ai-sdk/provider": "^2.0.0", "ai": "^5.0.29", "openai": "^4.104.0", "supermemory": "^3.0.0-alpha.26", "zod": "^4.1.5", }, "devDependencies": { + "@ai-sdk/provider": "^3.0.0", "@anthropic-ai/sdk": "^0.65.0", "@total-typescript/tsconfig": "^1.0.4", "@types/bun": "^1.2.21", @@ -267,6 +267,9 @@ "typescript": "^5.9.2", "vitest": "^3.2.4", }, + "peerDependencies": { + "@ai-sdk/provider": "^2.0.0 || ^3.0.0", + }, }, "packages/ui": { "name": "@repo/ui", @@ -4777,8 +4780,12 @@ "@supermemory/tools/@ai-sdk/anthropic": ["@ai-sdk/anthropic@2.0.53", "", { "dependencies": { "@ai-sdk/provider": "2.0.0", "@ai-sdk/provider-utils": "3.0.18" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ih7NV+OFSNWZCF+tYYD7ovvvM+gv7TRKQblpVohg2ipIwC9Y0TirzocJVREzZa/v9luxUwFbsPji++DUDWWxsg=="], + "@supermemory/tools/@ai-sdk/provider": ["@ai-sdk/provider@3.0.0", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-m9ka3ptkPQbaHHZHqDXDF9C9B5/Mav0KTdky1k2HZ3/nrW2t1AgObxIVPyGDWQNS9FXT/FS6PIoSjpcP/No8rQ=="], + "@supermemory/tools/@anthropic-ai/sdk": ["@anthropic-ai/sdk@0.65.0", "", { "dependencies": { "json-schema-to-ts": "^3.1.1" }, "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["zod"], "bin": { "anthropic-ai-sdk": "bin/cli" } }, "sha512-zIdPOcrCVEI8t3Di40nH4z9EoeyGZfXbYSvWdDLsB/KkaSYMnEgC7gmcgWu83g2NTn1ZTpbMvpdttWDGGIk6zw=="], + "@supermemory/tools/ai": ["ai@5.0.113", "", { "dependencies": { "@ai-sdk/gateway": "2.0.21", "@ai-sdk/provider": "2.0.0", "@ai-sdk/provider-utils": "3.0.19", "@opentelemetry/api": "1.9.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-26vivpSO/mzZj0k1Si2IpsFspp26ttQICHRySQiMrtWcRd5mnJMX2a8sG28vmZ38C+JUn1cWmfZrsLMxkSMw9g=="], + "@supermemory/tools/typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], "@supermemory/tools/zod": ["zod@4.1.13", "", {}, "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig=="], @@ -5665,8 +5672,16 @@ "@supermemory/ai-sdk/ai/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@3.0.19", "", { "dependencies": { "@ai-sdk/provider": "2.0.0", "@standard-schema/spec": "^1.0.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-W41Wc9/jbUVXVwCN/7bWa4IKe8MtxO3EyA0Hfhx6grnmiYlCvpI8neSYWFE0zScXJkgA/YK3BRybzgyiXuu6JA=="], + "@supermemory/tools/@ai-sdk/anthropic/@ai-sdk/provider": ["@ai-sdk/provider@2.0.0", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA=="], + "@supermemory/tools/@ai-sdk/anthropic/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@3.0.18", "", { "dependencies": { "@ai-sdk/provider": "2.0.0", "@standard-schema/spec": "^1.0.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ypv1xXMsgGcNKUP+hglKqtdDuMg68nWHucPPAhIENrbFAI+xCHiqPVN8Zllxyv1TNZwGWUghPxJXU+Mqps0YRQ=="], + "@supermemory/tools/ai/@ai-sdk/gateway": ["@ai-sdk/gateway@2.0.21", "", { "dependencies": { "@ai-sdk/provider": "2.0.0", "@ai-sdk/provider-utils": "3.0.19", "@vercel/oidc": "3.0.5" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-BwV7DU/lAm3Xn6iyyvZdWgVxgLu3SNXzl5y57gMvkW4nGhAOV5269IrJzQwGt03bb107sa6H6uJwWxc77zXoGA=="], + + "@supermemory/tools/ai/@ai-sdk/provider": ["@ai-sdk/provider@2.0.0", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA=="], + + "@supermemory/tools/ai/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@3.0.19", "", { "dependencies": { "@ai-sdk/provider": "2.0.0", "@standard-schema/spec": "^1.0.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-W41Wc9/jbUVXVwCN/7bWa4IKe8MtxO3EyA0Hfhx6grnmiYlCvpI8neSYWFE0zScXJkgA/YK3BRybzgyiXuu6JA=="], + "@vanilla-extract/integration/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A=="], "@vanilla-extract/integration/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.27.0", "", { "os": "android", "cpu": "arm" }, "sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ=="], diff --git a/packages/tools/package.json b/packages/tools/package.json index d56a7dd1..d4194226 100644 --- a/packages/tools/package.json +++ b/packages/tools/package.json @@ -1,7 +1,7 @@ { "name": "@supermemory/tools", "type": "module", - "version": "1.3.62", + "version": "1.3.64", "description": "Memory tools for AI SDK and OpenAI function calling with supermemory", "scripts": { "build": "tsdown", diff --git a/packages/tools/src/openai/middleware.ts b/packages/tools/src/openai/middleware.ts index 018d1f4c..4d030d0e 100644 --- a/packages/tools/src/openai/middleware.ts +++ b/packages/tools/src/openai/middleware.ts @@ -184,7 +184,7 @@ const addSystemPrompt = async ( const deduplicated = deduplicateMemories({ static: memoriesResponse.profile.static, dynamic: memoriesResponse.profile.dynamic, - searchResults: memoriesResponse.searchResults.results, + searchResults: memoriesResponse.searchResults?.results, }) logger.debug("Memory deduplication completed for chat API", { @@ -197,7 +197,7 @@ const addSystemPrompt = async ( deduplicated: deduplicated.dynamic.length, }, searchResults: { - original: memoriesResponse.searchResults.results.length, + original: memoriesResponse.searchResults?.results?.length, deduplicated: deduplicated.searchResults.length, }, }) @@ -340,7 +340,9 @@ const addMemoryTool = async ( : "", ...((msg as any).name && { name: (msg as any).name }), ...((msg as any).tool_calls && { tool_calls: (msg as any).tool_calls }), - ...((msg as any).tool_call_id && { tool_call_id: (msg as any).tool_call_id }), + ...((msg as any).tool_call_id && { + tool_call_id: (msg as any).tool_call_id, + }), })) const response = await addConversation({ @@ -467,7 +469,7 @@ export function createOpenAIMiddleware( const deduplicated = deduplicateMemories({ static: memoriesResponse.profile.static, dynamic: memoriesResponse.profile.dynamic, - searchResults: memoriesResponse.searchResults.results, + searchResults: memoriesResponse.searchResults?.results, }) logger.debug(`Memory deduplication completed for ${context} API`, { @@ -480,7 +482,7 @@ export function createOpenAIMiddleware( deduplicated: deduplicated.dynamic.length, }, searchResults: { - original: memoriesResponse.searchResults.results.length, + original: memoriesResponse.searchResults?.results?.length, deduplicated: deduplicated.searchResults.length, }, }) diff --git a/packages/tools/src/vercel/memory-prompt.ts b/packages/tools/src/vercel/memory-prompt.ts index 1a9a05dd..da1d74f4 100644 --- a/packages/tools/src/vercel/memory-prompt.ts +++ b/packages/tools/src/vercel/memory-prompt.ts @@ -68,9 +68,13 @@ export const addSystemPrompt = async ( ? params.prompt .slice() .reverse() - .find((prompt) => prompt.role === "user") - ?.content?.filter((content) => content.type === "text") - ?.map((content) => (content.type === "text" ? content.text : "")) + .find((prompt: { role: string }) => prompt.role === "user") + ?.content?.filter( + (content: { type: string }) => content.type === "text", + ) + ?.map((content: { type: string; text: string }) => + content.type === "text" ? content.text : "", + ) ?.join(" ") || "" : "" @@ -108,7 +112,7 @@ export const addSystemPrompt = async ( deduplicated: deduplicated.dynamic.length, }, searchResults: { - original: memoriesResponse.searchResults.results.length, + original: memoriesResponse.searchResults?.results?.length, deduplicated: deduplicated.searchResults?.length, }, })