diff options
| author | Dhravya Shah <[email protected]> | 2025-09-18 20:34:18 -0700 |
|---|---|---|
| committer | Dhravya Shah <[email protected]> | 2025-09-18 21:03:49 -0700 |
| commit | 1fcb56908920da386900abb4ce2383374a625c72 (patch) | |
| tree | 0f9d7f695d4c9b1b85be3950fc869e0061dff3ed /packages/ai-sdk/src | |
| parent | refetching logic change (diff) | |
| download | supermemory-09-18-formatting.tar.xz supermemory-09-18-formatting.zip | |
formatting09-18-formatting
Diffstat (limited to 'packages/ai-sdk/src')
| -rw-r--r-- | packages/ai-sdk/src/tools.test.ts | 124 | ||||
| -rw-r--r-- | packages/ai-sdk/src/tools.ts | 48 |
2 files changed, 87 insertions, 85 deletions
diff --git a/packages/ai-sdk/src/tools.test.ts b/packages/ai-sdk/src/tools.test.ts index ebbe2235..aab4d451 100644 --- a/packages/ai-sdk/src/tools.test.ts +++ b/packages/ai-sdk/src/tools.test.ts @@ -1,27 +1,29 @@ -import { createOpenAI } from "@ai-sdk/openai" -import { generateText } from "ai" -import { describe, expect, it } from "vitest" -import { type SupermemoryToolsConfig, supermemoryTools } from "./tools" +import { createOpenAI } from "@ai-sdk/openai"; +import { generateText } from "ai"; +import { describe, expect, it } from "vitest"; +import { type SupermemoryToolsConfig, supermemoryTools } from "./tools"; -import "dotenv/config" +import "dotenv/config"; describe("supermemoryTools", () => { // Required API keys - tests will fail if not provided - const testApiKey = process.env.SUPERMEMORY_API_KEY - const testOpenAIKey = process.env.OPENAI_API_KEY + const testApiKey = process.env.SUPERMEMORY_API_KEY; + const testOpenAIKey = process.env.OPENAI_API_KEY; if (!testApiKey) { throw new Error( "SUPERMEMORY_API_KEY environment variable is required for tests", - ) + ); } if (!testOpenAIKey) { - throw new Error("OPENAI_API_KEY environment variable is required for tests") + throw new Error( + "OPENAI_API_KEY environment variable is required for tests", + ); } // Optional configuration with defaults - const testBaseUrl = process.env.SUPERMEMORY_BASE_URL ?? undefined - const testModelName = process.env.MODEL_NAME || "gpt-5-mini" + const testBaseUrl = process.env.SUPERMEMORY_BASE_URL ?? undefined; + const testModelName = process.env.MODEL_NAME || "gpt-5-mini"; const testPrompts = [ "What do you remember about my preferences?", @@ -29,57 +31,57 @@ describe("supermemoryTools", () => { "What are my current projects?", "Remind me of my interests and hobbies", "What should I focus on today?", - ] + ]; describe("client initialization", () => { it("should create tools with default configuration", () => { - const config: SupermemoryToolsConfig = {} - const tools = supermemoryTools(testApiKey, config) + const config: SupermemoryToolsConfig = {}; + const tools = supermemoryTools(testApiKey, config); - expect(tools).toBeDefined() - expect(tools.searchMemories).toBeDefined() - expect(tools.addMemory).toBeDefined() - }) + expect(tools).toBeDefined(); + expect(tools.searchMemories).toBeDefined(); + expect(tools.addMemory).toBeDefined(); + }); it("should create tools with custom baseUrl", () => { const config: SupermemoryToolsConfig = { baseUrl: testBaseUrl, - } - const tools = supermemoryTools(testApiKey, config) + }; + const tools = supermemoryTools(testApiKey, config); - expect(tools).toBeDefined() - expect(tools.searchMemories).toBeDefined() - expect(tools.addMemory).toBeDefined() - }) + expect(tools).toBeDefined(); + expect(tools.searchMemories).toBeDefined(); + expect(tools.addMemory).toBeDefined(); + }); it("should create tools with projectId configuration", () => { const config: SupermemoryToolsConfig = { projectId: "test-project-123", - } - const tools = supermemoryTools(testApiKey, config) + }; + const tools = supermemoryTools(testApiKey, config); - expect(tools).toBeDefined() - expect(tools.searchMemories).toBeDefined() - expect(tools.addMemory).toBeDefined() - }) + expect(tools).toBeDefined(); + expect(tools.searchMemories).toBeDefined(); + expect(tools.addMemory).toBeDefined(); + }); it("should create tools with custom container tags", () => { const config: SupermemoryToolsConfig = { containerTags: ["custom-tag-1", "custom-tag-2"], - } - const tools = supermemoryTools(testApiKey, config) + }; + const tools = supermemoryTools(testApiKey, config); - expect(tools).toBeDefined() - expect(tools.searchMemories).toBeDefined() - expect(tools.addMemory).toBeDefined() - }) - }) + expect(tools).toBeDefined(); + expect(tools.searchMemories).toBeDefined(); + expect(tools.addMemory).toBeDefined(); + }); + }); describe("AI SDK integration", () => { it("should work with AI SDK generateText", async () => { const openai = createOpenAI({ apiKey: testOpenAIKey, - }) + }); const result = await generateText({ model: openai(testModelName), @@ -100,22 +102,22 @@ describe("supermemoryTools", () => { baseUrl: testBaseUrl, }), }, - }) + }); - expect(result).toBeDefined() - expect(result.text).toBeDefined() - expect(typeof result.text).toBe("string") - }) + expect(result).toBeDefined(); + expect(result.text).toBeDefined(); + expect(typeof result.text).toBe("string"); + }); it("should use tools when prompted", async () => { const openai = createOpenAI({ apiKey: testOpenAIKey, - }) + }); const tools = supermemoryTools(testApiKey, { projectId: "test-tool-usage", baseUrl: testBaseUrl, - }) + }); const result = await generateText({ model: openai(testModelName), @@ -133,24 +135,24 @@ describe("supermemoryTools", () => { tools: { addMemory: tools.addMemory, }, - }) + }); - expect(result).toBeDefined() - expect(result.text).toBeDefined() - expect(result.toolCalls).toBeDefined() + expect(result).toBeDefined(); + expect(result.text).toBeDefined(); + expect(result.toolCalls).toBeDefined(); if (result.toolCalls && result.toolCalls.length > 0) { const addMemoryCall = result.toolCalls.find( (call) => call.toolName === "addMemory", - ) - expect(addMemoryCall).toBeDefined() + ); + expect(addMemoryCall).toBeDefined(); } - }) + }); it("should handle multiple tool types", async () => { const openai = createOpenAI({ apiKey: testOpenAIKey, - }) + }); const result = await generateText({ model: openai(testModelName), @@ -171,11 +173,11 @@ describe("supermemoryTools", () => { containerTags: ["test-multi-tools"], }), }, - }) - - expect(result).toBeDefined() - expect(result.text).toBeDefined() - expect(typeof result.text).toBe("string") - }) - }) -}) + }); + + expect(result).toBeDefined(); + expect(result.text).toBeDefined(); + expect(typeof result.text).toBe("string"); + }); + }); +}); diff --git a/packages/ai-sdk/src/tools.ts b/packages/ai-sdk/src/tools.ts index d0461924..97f54791 100644 --- a/packages/ai-sdk/src/tools.ts +++ b/packages/ai-sdk/src/tools.ts @@ -1,15 +1,15 @@ -import { tool } from "ai" -import Supermemory from "supermemory" -import { z } from "zod" +import { tool } from "ai"; +import Supermemory from "supermemory"; +import { z } from "zod"; /** * Supermemory configuration * Only one of `projectId` or `containerTags` can be provided. */ export interface SupermemoryToolsConfig { - baseUrl?: string - containerTags?: string[] - projectId?: string + baseUrl?: string; + containerTags?: string[]; + projectId?: string; } /** @@ -22,11 +22,11 @@ export function supermemoryTools( const client = new Supermemory({ apiKey, ...(config?.baseUrl ? { baseURL: config.baseUrl } : {}), - }) + }); const containerTags = config?.projectId ? [`sm_project_${config?.projectId}`] - : (config?.containerTags ?? ["sm_project_default"]) + : (config?.containerTags ?? ["sm_project_default"]); const searchMemories = tool({ description: @@ -60,21 +60,21 @@ export function supermemoryTools( limit, chunkThreshold: 0.6, includeFullDocs, - }) + }); return { success: true, results: response.results, count: response.results?.length || 0, - } + }; } catch (error) { return { success: false, error: error instanceof Error ? error.message : "Unknown error", - } + }; } }, - }) + }); const addMemory = tool({ description: @@ -88,31 +88,31 @@ export function supermemoryTools( }), execute: async ({ memory }) => { try { - const metadata: Record<string, string | number | boolean> = {} + const metadata: Record<string, string | number | boolean> = {}; const response = await client.memories.add({ content: memory, containerTags, ...(Object.keys(metadata).length > 0 && { metadata }), - }) + }); return { success: true, memory: response, - } + }; } catch (error) { return { success: false, error: error instanceof Error ? error.message : "Unknown error", - } + }; } }, - }) + }); return { searchMemories, addMemory, - } + }; } // Export individual tool creators for more flexibility @@ -120,14 +120,14 @@ export const searchMemoriesTool = ( apiKey: string, config?: SupermemoryToolsConfig, ) => { - const { searchMemories } = supermemoryTools(apiKey, config) - return searchMemories -} + const { searchMemories } = supermemoryTools(apiKey, config); + return searchMemories; +}; export const addMemoryTool = ( apiKey: string, config?: SupermemoryToolsConfig, ) => { - const { addMemory } = supermemoryTools(apiKey, config) - return addMemory -} + const { addMemory } = supermemoryTools(apiKey, config); + return addMemory; +}; |