From 8ff3c758470cec42120c2b44f328613bb2992570 Mon Sep 17 00:00:00 2001 From: Shreyans Jain Date: Thu, 21 Aug 2025 22:39:07 +0530 Subject: [PATCH] Add AI SDK Utilities (#375) ### TL;DR Upgraded Biome to v2.2.0 and added a new AI SDK package for supermemory integration. ### What changed? - Updated Biome configuration with enhanced linting rules and formatting options - Upgraded `@biomejs/biome` from v2.1.3 to v2.2.0 - Added a new `@supermemory/ai-sdk` package with: - Infinite Chat Provider for connecting to various LLM providers with unlimited context - Memory Tools for searching, adding, and fetching memories from supermemory - Comprehensive test suite for both features - Detailed README with usage examples and configuration options - Removed unused ESLint and TypeScript configuration packages ### How to test? 1. Run `bun install` to update dependencies 2. Test the new AI SDK: 3. Verify Biome works with the updated configuration: ### Why make this change? The new AI SDK package provides integration with Vercel's AI SDK, allowing developers to use supermemory's context management with various LLM providers. This enables unlimited context support and memory tools for AI agents. The Biome upgrade brings improved linting and formatting capabilities, enhancing code quality across the project. --- biome.json | 140 ++++--- bun.lockb | Bin 746024 -> 699608 bytes package.json | 2 +- packages/ai-sdk/README.md | 313 +++++++++++++++ packages/ai-sdk/package.json | 26 ++ packages/ai-sdk/src/index.ts | 2 + packages/ai-sdk/src/infinite-chat.test.ts | 365 ++++++++++++++++++ packages/ai-sdk/src/infinite-chat.ts | 49 +++ packages/ai-sdk/src/tools.test.ts | 185 +++++++++ packages/ai-sdk/src/tools.ts | 147 +++++++ packages/ai-sdk/tsconfig.json | 10 + packages/eslint-config/README.md | 3 - packages/eslint-config/base.js | 32 -- packages/eslint-config/next.js | 49 --- packages/eslint-config/package.json | 24 -- packages/eslint-config/react-internal.js | 39 -- packages/typescript-config/base.json | 19 - packages/typescript-config/nextjs.json | 12 - packages/typescript-config/package.json | 9 - packages/typescript-config/react-library.json | 7 - 20 files changed, 1183 insertions(+), 250 deletions(-) create mode 100644 packages/ai-sdk/README.md create mode 100644 packages/ai-sdk/package.json create mode 100644 packages/ai-sdk/src/index.ts create mode 100644 packages/ai-sdk/src/infinite-chat.test.ts create mode 100644 packages/ai-sdk/src/infinite-chat.ts create mode 100644 packages/ai-sdk/src/tools.test.ts create mode 100644 packages/ai-sdk/src/tools.ts create mode 100644 packages/ai-sdk/tsconfig.json delete mode 100644 packages/eslint-config/README.md delete mode 100644 packages/eslint-config/base.js delete mode 100644 packages/eslint-config/next.js delete mode 100644 packages/eslint-config/package.json delete mode 100644 packages/eslint-config/react-internal.js delete mode 100644 packages/typescript-config/base.json delete mode 100644 packages/typescript-config/nextjs.json delete mode 100644 packages/typescript-config/package.json delete mode 100644 packages/typescript-config/react-library.json diff --git a/biome.json b/biome.json index 0959d573..9519c53e 100644 --- a/biome.json +++ b/biome.json @@ -1,75 +1,105 @@ { "$schema": "https://biomejs.dev/schemas/2.2.0/schema.json", + "assist": { + "actions": { + "source": { + "organizeImports": "on", + "useSortedAttributes": "on", + "useSortedKeys": "off" + } + }, + "enabled": true + }, "files": { "includes": [ - "**/*.js", - "**/*.jsx", - "**/*.ts", - "**/*.tsx", - "**/*.json", - "**/*.jsonc", + "**", "!**/node_modules", + "!**/.next/", + "!**/.contentlayer", + "!**/.vercel", + "!**/.react-router", + "!**/.wrangler", + "!**/package.json", + "!**/worker-configuration.d.ts", + "!**/.turbo/", + "!**/.vercel", "!**/dist", + "!**/.astro", "!**/build", - "!**/.next", - "!**/.turbo", - "!**/*.d.ts" + "!**/.alchemy", + "!**/.build", + "!**/.open-next", + "!**/*.astro" ] }, "formatter": { "enabled": true, - "formatWithErrors": false, - "indentStyle": "tab", - "indentWidth": 2, - "lineEnding": "lf", - "lineWidth": 80, - "attributePosition": "auto", - "includes": ["**", "!**/*.md"] - }, - "assist": { "actions": { "source": { "organizeImports": "on" } } }, - "linter": { - "enabled": true, - "rules": { - "recommended": true, - "a11y": { - "recommended": true - }, - "complexity": { - "recommended": true - }, - "correctness": { - "recommended": true - }, - "performance": { - "recommended": true - }, - "security": { - "recommended": true - }, - "style": { - "recommended": true - }, - "suspicious": { - "recommended": true - } - } + "indentStyle": "tab" }, "javascript": { "formatter": { "quoteStyle": "double", - "jsxQuoteStyle": "double", - "trailingCommas": "all", - "semicolons": "asNeeded", - "arrowParentheses": "always", - "bracketSpacing": true, - "bracketSameLine": false, - "quoteProperties": "asNeeded", - "attributePosition": "auto" + "semicolons": "asNeeded" } }, - "json": { - "formatter": { - "trailingCommas": "none" + "linter": { + "domains": { + "project": "none" + }, + "enabled": true, + "rules": { + "a11y": { + "useValidAnchor": "warn" + }, + "correctness": { + "noUnusedVariables": { + "level": "warn", + "options": { + "ignoreRestSiblings": true + } + }, + "useExhaustiveDependencies": "warn", + "noUnusedImports": "warn" + }, + "recommended": true, + "style": { + "noDefaultExport": "off", + "noInferrableTypes": "error", + "noNonNullAssertion": "warn", + "noParameterAssign": "error", + "noUnusedTemplateLiteral": "error", + "noUselessElse": "error", + "useAsConstAssertion": "error", + "useDefaultParameterLast": "error", + "useEnumInitializers": "error", + "useNamingConvention": { + "level": "off", + "options": { + "strictCase": false + } + }, + "useNumberNamespace": "error", + "useSelfClosingElements": "error", + "useSingleVarDeclarator": "error" + } } + }, + "overrides": [ + { + "includes": ["**/*.astro"], + "linter": { + "rules": { + "correctness": { + "noUnusedVariables": "off", + "noUnusedImports": "off" + } + } + } + } + ], + "vcs": { + "clientKind": "git", + "enabled": true, + "useIgnoreFile": true } } diff --git a/bun.lockb b/bun.lockb index 44008365546e35c400f630b14f7c1266bc37bd97..2143da85022b1c3f022523c5580707a1f22afdc4 100755 GIT binary patch delta 146667 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 delta 176605 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%0A(ZUbdF>s`9<*@s(7w-nM>x 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 diff --git a/package.json b/package.json index ca4b4df9..369a3f32 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "zod-openapi": "^4.2.4" }, "devDependencies": { - "@biomejs/biome": "^2.1.3", + "@biomejs/biome": "^2.2.0", "@total-typescript/tsconfig": "^1.0.4", "@types/pg": "^8.15.4", "drizzle-kit": "^0.31.4", diff --git a/packages/ai-sdk/README.md b/packages/ai-sdk/README.md new file mode 100644 index 00000000..da7fa8ab --- /dev/null +++ b/packages/ai-sdk/README.md @@ -0,0 +1,313 @@ +# supermemory AI SDK Utilities + +Vercel AI SDK utilities for supermemory + +## Installation + +```bash +npm install @supermemory/ai-sdk +# or +bun add @supermemory/ai-sdk +# or +pnpm add @supermemory/ai-sdk +# or +yarn add @supermemory/ai-sdk +``` + +## Features + +Choose **one** of the following approaches (they cannot be used together): + +- **Infinite Chat Provider**: Connect to various LLM providers with unlimited context support +- **Memory Tools**: Search, add, and fetch memories from supermemory using AI agents + +## Infinite Chat Provider + +The infinite chat provider allows you to connect to various LLM providers with supermemory's context management. + +```typescript +import { createSupermemoryInfiniteChat } from '@supermemory/ai-sdk' +import { generateText } from 'ai' + +// Using a named provider +const supermemory = createSupermemoryInfiniteChat('your-supermemory-api-key', { + providerName: 'openai', + providerApiKey: 'your-openai-api-key', + headers: { + // Optional additional headers + } +}) + +// Using a custom provider URL +const supermemory = createSupermemoryInfiniteChat('your-supermemory-api-key', { + providerUrl: 'https://your-custom-provider.com/v1/chat/completions', + providerApiKey: 'your-provider-api-key', + headers: { + // Optional additional headers + } +}) + +const result = await generateText({ + model: supermemory('gpt-4-turbo'), + messages: [ + { role: 'user', content: 'Hello, how are you?' } + ] +}) +``` + +### Complete Infinite Chat Example + +```typescript +import { createSupermemoryInfiniteChat } from '@supermemory/ai-sdk' +import { generateText } from 'ai' + +const supermemoryApiKey = process.env.SUPERMEMORY_API_KEY! +const openaiApiKey = process.env.OPENAI_API_KEY! + +// Initialize infinite chat provider +const supermemory = createSupermemoryInfiniteChat(supermemoryApiKey, { + providerName: 'openai', + providerApiKey: openaiApiKey, + headers: {} +}) + +async function chat(userMessage: string) { + const result = await generateText({ + model: supermemory('gpt-4-turbo'), + messages: [ + { + role: 'system', + content: 'You are a helpful assistant with unlimited context.' + }, + { + role: 'user', + content: userMessage + } + ] + // No tools - infinite chat handles context automatically + }) + + return result.text +} +``` + +### Configuration + +```typescript +// Option 1: Use a named provider +interface ConfigWithProviderName { + providerName: 'openai' | 'anthropic' | 'openrouter' | 'deepinfra' | 'groq' | 'google' | 'cloudflare' + providerApiKey: string + headers?: Record +} + +// Option 2: Use a custom provider URL +interface ConfigWithProviderUrl { + providerUrl: string + providerApiKey: string + headers?: Record +} +``` + +## Memory Tools + +supermemory tools allow AI agents to interact with user memories for enhanced context and personalization. + +```typescript +import { supermemoryTools } from '@supermemory/ai-sdk' +import { generateText } from 'ai' + +const result = await generateText({ + model: openai('gpt-4-turbo'), + messages: [ + { role: 'user', content: 'What do you remember about my preferences?' } + ], + tools: { + ...supermemoryTools('your-supermemory-api-key', { + // Optional: specify a base URL for self-hosted instances + baseUrl: 'https://api.supermemory.com', + + // Use either projectId OR containerTags, not both + projectId: 'your-project-id', + // OR + containerTags: ['tag1', 'tag2'] +}), +// Your other tools go here + } +}) +``` + +### Complete Memory Tools Example + +```typescript +import { supermemoryTools } from '@supermemory/ai-sdk' +import { generateText } from 'ai' +import { openai } from '@ai-sdk/openai' + +const supermemoryApiKey = process.env.SUPERMEMORY_API_KEY! + +async function chatWithTools(userMessage: string) { + const result = await generateText({ + model: openai('gpt-4-turbo'), // Use standard provider + messages: [ + { + role: 'system', + content: 'You are a helpful assistant with access to user memories.' + }, + { + role: 'user', + content: userMessage + } + ], + tools: { + ...supermemoryTools(supermemoryApiKey, { + projectId: 'my-project' + }) + }, + maxToolRoundtrips: 5 + }) + + return result.text +} +``` + +### Configuration + +```typescript +interface SupermemoryConfig { + // Optional: Base URL for API calls (default: https://api.supermemory.com) + baseUrl?: string + + // Container tags for organizing memories (cannot be used with projectId) + containerTags?: string[] + + // Project ID for scoping memories (cannot be used with containerTags) + projectId?: string +} +``` + +### Self-Hosted supermemory + +If you're running a self-hosted supermemory instance: + +```typescript +const tools = supermemoryTools('your-api-key', { + baseUrl: 'https://your-supermemory-instance.com', + containerTags: ['production', 'user-memories'] +}) +``` + +### Available Tools + +##### Search Memories + +Search through user memories using semantic matching. + +```typescript +const searchResult = await tools.searchMemories.execute({ + informationToGet: 'user preferences about coffee' +}) +``` + +##### Add Memory + +Add new memories to the user's memory store. + +```typescript +const addResult = await tools.addMemory.execute({ + memory: 'User prefers dark roast coffee in the morning' +}) +``` + +##### Fetch Memory + +Retrieve a specific memory by its ID. + +```typescript +const fetchResult = await tools.fetchMemory.execute({ + memoryId: 'memory-id-123' +}) +``` + +### Using Individual Tools + +For more flexibility, you can import and use individual tools: + +```typescript +import { + searchMemoriesTool, + addMemoryTool, + fetchMemoryTool +} from '@supermemory/ai-sdk' + +const searchTool = searchMemoriesTool('your-api-key', { + projectId: 'your-project-id' +}) + +// Use only the search tool +const result = await generateText({ + model: openai('gpt-4-turbo'), + messages: [...], + tools: { + searchMemories: searchTool + } +}) +``` + +### Error Handling + +All tool executions return a result object with a `success` field: + +```typescript +const result = await tools.searchMemories.execute({ + informationToGet: 'user preferences' +}) + +if (result.success) { + console.log('Found memories:', result.results) + console.log('Total count:', result.count) +} else { + console.error('Error searching memories:', result.error) +} +``` + +## Development + +### Running Tests + +```bash +# Run all tests +bun test + +# Run tests in watch mode +bun test --watch +``` + +#### Environment Variables for Tests + +All tests require API keys to run. Copy `.env.example` to `.env` and set the required values: + +```bash +cp .env.example .env +``` + +**Required:** +- `SUPERMEMORY_API_KEY`: Your Supermemory API key +- `PROVIDER_API_KEY`: Your AI provider API key (OpenAI, Anthropic, etc.) +- `OPENAI_API_KEY`: Your OpenAI API key for tool integration tests + +**Optional:** +- `SUPERMEMORY_BASE_URL`: Custom Supermemory base URL (defaults to `https://api.supermemory.ai`) +- `PROVIDER_NAME`: Provider name (defaults to `openai`) - one of: `openai`, `anthropic`, `openrouter`, `deepinfra`, `groq`, `google`, `cloudflare` +- `PROVIDER_URL`: Custom provider URL (use instead of `PROVIDER_NAME`) +- `MODEL_NAME`: Model to use in tests (defaults to `gpt-3.5-turbo`) + +Tests will fail if required API keys are not provided. + +## License + +MIT + +## Support + +Email our [24/7 Founder/CEO/Support Executive](dhravya@supermemory.com) \ No newline at end of file diff --git a/packages/ai-sdk/package.json b/packages/ai-sdk/package.json new file mode 100644 index 00000000..88b6fcee --- /dev/null +++ b/packages/ai-sdk/package.json @@ -0,0 +1,26 @@ +{ + "name": "@supermemory/ai-sdk", + "version": "0.0.1", + "main": "dist/index.mjs", + "types": "dist/index.d.mts", + "scripts": { + "build": "tsdown", + "dev": "tsdown --watch", + "check-types": "tsc --noEmit", + "test": "vitest", + "test:watch": "vitest --watch" + }, + "dependencies": { + "@ai-sdk/openai": "^2.0.15", + "ai": "^5.0.17", + "supermemory": "^3.0.0-alpha.22", + "zod": "^4.0.17" + }, + "devDependencies": { + "@total-typescript/tsconfig": "^1.0.4", + "@types/bun": "^1.2.20", + "tsdown": "^0.14.1", + "typescript": "^5.9.2", + "vitest": "^3.2.4" + } +} diff --git a/packages/ai-sdk/src/index.ts b/packages/ai-sdk/src/index.ts new file mode 100644 index 00000000..b6962318 --- /dev/null +++ b/packages/ai-sdk/src/index.ts @@ -0,0 +1,2 @@ +export * from "./infinite-chat" +export * from "./tools" diff --git a/packages/ai-sdk/src/infinite-chat.test.ts b/packages/ai-sdk/src/infinite-chat.test.ts new file mode 100644 index 00000000..92562b2e --- /dev/null +++ b/packages/ai-sdk/src/infinite-chat.test.ts @@ -0,0 +1,365 @@ +import { generateText } from "ai" +import { describe, expect, it } from "vitest" +import z from "zod" +import { + createSupermemoryInfiniteChat, + type SupermemoryInfiniteChatConfig, +} from "./infinite-chat" + +import "dotenv/config" + +const providers = z.enum([ + "openai", + "anthropic", + "openrouter", + "deepinfra", + "groq", + "google", + "cloudflare", +] satisfies SupermemoryInfiniteChatConfig["providerName"][]) + +describe("createSupermemoryInfiniteChat", () => { + // Required API keys - tests will fail if not provided + const testApiKey = process.env.SUPERMEMORY_API_KEY + const testProviderApiKey = process.env.PROVIDER_API_KEY + + if (!testApiKey) { + throw new Error( + "SUPERMEMORY_API_KEY environment variable is required for tests", + ) + } + if (!testProviderApiKey) { + throw new Error( + "PROVIDER_API_KEY environment variable is required for tests", + ) + } + + // Optional configuration with defaults + const testProviderName = providers.parse( + process.env.PROVIDER_NAME ?? "openai", + ) + const testProviderUrl = process.env.PROVIDER_URL + const testModelName = process.env.MODEL_NAME || "gpt-5-mini" + const testHeaders = { "custom-header": "test-value" } + + // Validate provider configuration - either name OR URL, not both + if (testProviderUrl && process.env.PROVIDER_NAME) { + throw new Error( + "Cannot specify both PROVIDER_NAME and PROVIDER_URL - use one or the other", + ) + } + + // Test prompts and inputs + const testPrompts = [ + "Hello, how are you?", + "What is 2 + 2?", + "Write a short poem about AI", + "Explain quantum computing in simple terms", + "What can you help me with today?", + ] + + const testMessages = [ + [{ role: "user" as const, content: "Hello!" }], + [ + { role: "system" as const, content: "You are a helpful assistant." }, + { role: "user" as const, content: "What is AI?" }, + ], + [ + { role: "user" as const, content: "Tell me a joke" }, + { + role: "assistant" as const, + content: + "Why don't scientists trust atoms? Because they make up everything!", + }, + { role: "user" as const, content: "Tell me another one" }, + ], + ] + + describe("client creation", () => { + it("should create client with configured provider", () => { + const config: SupermemoryInfiniteChatConfig = testProviderUrl + ? { + providerUrl: testProviderUrl, + providerApiKey: testProviderApiKey, + headers: testHeaders, + } + : { + providerName: testProviderName, + providerApiKey: testProviderApiKey, + headers: testHeaders, + } + + const client = createSupermemoryInfiniteChat(testApiKey, config) + + expect(client).toBeDefined() + expect(typeof client).toBe("function") + }) + + it("should create client with openai provider configuration", () => { + const config: SupermemoryInfiniteChatConfig = { + providerName: "openai", + providerApiKey: testProviderApiKey, + headers: testHeaders, + } + + const client = createSupermemoryInfiniteChat(testApiKey, config) + + expect(client).toBeDefined() + expect(typeof client).toBe("function") + }) + + it("should create client with anthropic provider configuration", () => { + const config: SupermemoryInfiniteChatConfig = { + providerName: "anthropic", + providerApiKey: testProviderApiKey, + headers: testHeaders, + } + + const client = createSupermemoryInfiniteChat(testApiKey, config) + + expect(client).toBeDefined() + expect(typeof client).toBe("function") + }) + + it("should create client with custom provider URL", () => { + const customUrl = "https://custom-provider.com/v1/chat" + const config: SupermemoryInfiniteChatConfig = { + providerUrl: customUrl, + providerApiKey: testProviderApiKey, + headers: testHeaders, + } + + const client = createSupermemoryInfiniteChat(testApiKey, config) + + expect(client).toBeDefined() + expect(typeof client).toBe("function") + }) + }) + + describe("AI SDK integration", () => { + it("should generate text with simple prompt", async () => { + const config: SupermemoryInfiniteChatConfig = testProviderUrl + ? { + providerUrl: testProviderUrl, + providerApiKey: testProviderApiKey, + headers: {}, + } + : { + providerName: testProviderName, + providerApiKey: testProviderApiKey, + headers: {}, + } + + const client = createSupermemoryInfiniteChat(testApiKey, config) + + console.log(client(testModelName)) + + const result = await generateText({ + model: client(testModelName), + prompt: testPrompts[0], // "Hello, how are you?" + }) + + expect(result).toBeDefined() + expect(result.text).toBeDefined() + expect(typeof result.text).toBe("string") + expect(result.text.length).toBeGreaterThan(0) + }) + + it("should generate text with messages array", async () => { + const config: SupermemoryInfiniteChatConfig = testProviderUrl + ? { + providerUrl: testProviderUrl, + providerApiKey: testProviderApiKey, + headers: {}, + } + : { + providerName: testProviderName, + providerApiKey: testProviderApiKey, + headers: {}, + } + + const client = createSupermemoryInfiniteChat(testApiKey, config) + + const result = await generateText({ + model: client(testModelName), + messages: testMessages[1], // System + user messages + }) + + expect(result).toBeDefined() + expect(result.text).toBeDefined() + expect(typeof result.text).toBe("string") + expect(result.text.length).toBeGreaterThan(0) + }) + + it("should handle conversation history", async () => { + const config: SupermemoryInfiniteChatConfig = testProviderUrl + ? { + providerUrl: testProviderUrl, + providerApiKey: testProviderApiKey, + headers: {}, + } + : { + providerName: testProviderName, + providerApiKey: testProviderApiKey, + headers: {}, + } + + const client = createSupermemoryInfiniteChat(testApiKey, config) + + const result = await generateText({ + model: client(testModelName), + messages: testMessages[2], // Multi-turn conversation + }) + + expect(result).toBeDefined() + expect(result.text).toBeDefined() + expect(typeof result.text).toBe("string") + expect(result.text.length).toBeGreaterThan(0) + }) + + it("should work with different prompt variations", async () => { + const config: SupermemoryInfiniteChatConfig = testProviderUrl + ? { + providerUrl: testProviderUrl, + providerApiKey: testProviderApiKey, + headers: {}, + } + : { + providerName: testProviderName, + providerApiKey: testProviderApiKey, + headers: {}, + } + + const client = createSupermemoryInfiniteChat(testApiKey, config) + + // Test multiple prompts + for (const prompt of testPrompts.slice(0, 3)) { + const result = await generateText({ + model: client(testModelName), + prompt, + }) + + expect(result).toBeDefined() + expect(result.text).toBeDefined() + expect(typeof result.text).toBe("string") + expect(result.text.length).toBeGreaterThan(0) + } + }) + + it("should work with configured and alternate models", async () => { + const config: SupermemoryInfiniteChatConfig = testProviderUrl + ? { + providerUrl: testProviderUrl, + providerApiKey: testProviderApiKey, + headers: {}, + } + : { + providerName: testProviderName, + providerApiKey: testProviderApiKey, + headers: {}, + } + + const client = createSupermemoryInfiniteChat(testApiKey, config) + + const modelsToTest = [testModelName] + // Add alternate model for OpenAI + if (testProviderName === "openai" && !testProviderUrl) { + modelsToTest.push("gpt-4o-mini") + } + + for (const modelName of modelsToTest) { + const result = await generateText({ + model: client(modelName), + prompt: "Say hello in one word", + }) + + expect(result).toBeDefined() + expect(result.text).toBeDefined() + expect(typeof result.text).toBe("string") + } + }) + + it("should work with custom headers", async () => { + const config: SupermemoryInfiniteChatConfig = testProviderUrl + ? { + providerUrl: testProviderUrl, + providerApiKey: testProviderApiKey, + headers: { + "x-custom-header": "test-value", + }, + } + : { + providerName: testProviderName, + providerApiKey: testProviderApiKey, + headers: { + "x-custom-header": "test-value", + }, + } + + const client = createSupermemoryInfiniteChat(testApiKey, config) + + const result = await generateText({ + model: client(testModelName), + prompt: "Hello", + }) + + expect(result).toBeDefined() + expect(result.text).toBeDefined() + expect(typeof result.text).toBe("string") + }) + }) + + describe("configuration validation", () => { + it("should handle empty headers object", () => { + const config: SupermemoryInfiniteChatConfig = testProviderUrl + ? { + providerUrl: testProviderUrl, + providerApiKey: testProviderApiKey, + headers: {}, + } + : { + providerName: testProviderName, + providerApiKey: testProviderApiKey, + headers: {}, + } + + const client = createSupermemoryInfiniteChat(testApiKey, config) + + expect(client).toBeDefined() + }) + + it("should handle configuration with custom headers", () => { + const customHeaders = { + authorization: "Bearer custom-token", + "x-custom": "custom-value", + } + const config: SupermemoryInfiniteChatConfig = testProviderUrl + ? { + providerUrl: testProviderUrl, + providerApiKey: testProviderApiKey, + headers: customHeaders, + } + : { + providerName: testProviderName, + providerApiKey: testProviderApiKey, + headers: customHeaders, + } + + const client = createSupermemoryInfiniteChat(testApiKey, config) + + expect(client).toBeDefined() + }) + + it("should handle different API keys", () => { + const config: SupermemoryInfiniteChatConfig = { + providerName: "openai", + providerApiKey: "different-provider-key", + headers: {}, + } + + const client = createSupermemoryInfiniteChat("different-sm-key", config) + + expect(client).toBeDefined() + }) + }) +}) diff --git a/packages/ai-sdk/src/infinite-chat.ts b/packages/ai-sdk/src/infinite-chat.ts new file mode 100644 index 00000000..d8b7c80a --- /dev/null +++ b/packages/ai-sdk/src/infinite-chat.ts @@ -0,0 +1,49 @@ +import { createOpenAI } from "@ai-sdk/openai" + +interface SupermemoryInfiniteChatConfigBase { + providerApiKey: string + headers: Record +} + +interface SupermemoryInfiniteChatConfigWithProviderName + extends SupermemoryInfiniteChatConfigBase { + providerName: keyof typeof providerMap + providerUrl?: never +} + +interface SupermemoryInfiniteChatConfigWithProviderUrl + extends SupermemoryInfiniteChatConfigBase { + providerUrl: string + providerName?: never +} + +export type SupermemoryInfiniteChatConfig = + | SupermemoryInfiniteChatConfigWithProviderName + | SupermemoryInfiniteChatConfigWithProviderUrl + +type SupermemoryApiKey = string + +const providerMap = { + openai: "https://api.openai.com/v1", + anthropic: "https://api.anthropic.com/v1", + openrouter: "https://openrouter.ai/api/v1", + deepinfra: "https://api.deepinfra.com/v1/openai", + groq: "https://api.groq.com/openai/v1", + google: "https://generativelanguage.googleapis.com/v1beta/openai", + cloudflare: "https://gateway.ai.cloudflare.com/v1/*/unlimited-context/openai", +} as const + +export const createSupermemoryInfiniteChat = ( + apiKey: SupermemoryApiKey, + config: SupermemoryInfiniteChatConfig, +) => + createOpenAI({ + apiKey: config.providerApiKey, + baseURL: config.providerName + ? providerMap[config.providerName] + : config.providerUrl, + headers: { + "x-api-key": apiKey, + ...config.headers, + }, + }).chat diff --git a/packages/ai-sdk/src/tools.test.ts b/packages/ai-sdk/src/tools.test.ts new file mode 100644 index 00000000..556a8511 --- /dev/null +++ b/packages/ai-sdk/src/tools.test.ts @@ -0,0 +1,185 @@ +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" + +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 + + 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") + } + + // Optional configuration with defaults + 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?", + "Help me plan my day based on what you know about me", + "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) + + expect(tools).toBeDefined() + expect(tools.searchMemories).toBeDefined() + expect(tools.addMemory).toBeDefined() + expect(tools.fetchMemory).toBeDefined() + }) + + it("should create tools with custom baseUrl", () => { + const config: SupermemoryToolsConfig = { + baseUrl: testBaseUrl, + } + const tools = supermemoryTools(testApiKey, config) + + expect(tools).toBeDefined() + expect(tools.searchMemories).toBeDefined() + expect(tools.addMemory).toBeDefined() + expect(tools.fetchMemory).toBeDefined() + }) + + it("should create tools with projectId configuration", () => { + const config: SupermemoryToolsConfig = { + projectId: "test-project-123", + } + const tools = supermemoryTools(testApiKey, config) + + expect(tools).toBeDefined() + expect(tools.searchMemories).toBeDefined() + expect(tools.addMemory).toBeDefined() + expect(tools.fetchMemory).toBeDefined() + }) + + it("should create tools with custom container tags", () => { + const config: SupermemoryToolsConfig = { + containerTags: ["custom-tag-1", "custom-tag-2"], + } + const tools = supermemoryTools(testApiKey, config) + + expect(tools).toBeDefined() + expect(tools.searchMemories).toBeDefined() + expect(tools.addMemory).toBeDefined() + expect(tools.fetchMemory).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), + messages: [ + { + role: "system", + content: + "You are a helpful assistant with access to user memories. Use the search tool when the user asks about preferences or past information.", + }, + { + role: "user", + content: testPrompts[0]!, + }, + ], + tools: { + ...supermemoryTools(testApiKey, { + projectId: "test-ai-integration", + baseUrl: testBaseUrl, + }), + }, + }) + + 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), + messages: [ + { + role: "system", + content: + "You are a helpful assistant. When the user asks you to remember something, use the addMemory tool.", + }, + { + role: "user", + content: "Please remember that I prefer dark roast coffee", + }, + ], + tools: { + addMemory: tools.addMemory, + }, + }) + + 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() + } + }) + + it("should handle multiple tool types", async () => { + const openai = createOpenAI({ + apiKey: testOpenAIKey, + }) + + const result = await generateText({ + model: openai(testModelName), + messages: [ + { + role: "system", + content: + "You are a helpful assistant with access to user memories. Use search when asked about preferences, and addMemory when told to remember something.", + }, + { + role: "user", + content: + "Search for my preferences and then remember that I also like green tea", + }, + ], + tools: { + ...supermemoryTools(testApiKey, { + containerTags: ["test-multi-tools"], + }), + }, + }) + + 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 new file mode 100644 index 00000000..7d99e2c7 --- /dev/null +++ b/packages/ai-sdk/src/tools.ts @@ -0,0 +1,147 @@ +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 +} + +/** + * Create Supermemory tools for AI SDK + */ +export function supermemoryTools( + apiKey: string, + config: SupermemoryToolsConfig, +) { + const client = new Supermemory({ + apiKey, + ...(config.baseUrl && { baseURL: config.baseUrl }), + }) + + const containerTags = config.projectId + ? [`sm_project_${config.projectId}`] + : (config.containerTags ?? ["sm_project_default"]) + + const searchMemories = tool({ + description: + "Search user memories and patterns. Run when explicitly asked or when context about user's past choices would be helpful. Uses semantic matching to find relevant details across related experiences.", + inputSchema: z.object({ + informationToGet: z + .string() + .describe("Terms to search for in the user's memories"), + }), + execute: async ({ informationToGet }) => { + try { + const response = await client.search.execute({ + q: informationToGet, + containerTags, + limit: 10, + chunkThreshold: 0.6, + }) + + 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: + "Add a new memory to the user's memories. Run when explicitly asked or when the user mentions any information generalizable beyond the context of the current conversation.", + inputSchema: z.object({ + memory: z + .string() + .describe( + "The text content of the memory to add. This should be a single sentence or a short paragraph.", + ), + }), + execute: async ({ memory }) => { + try { + const metadata: Record = {} + + 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", + } + } + }, + }) + + const fetchMemory = tool({ + description: "Fetch a specific memory by ID to get its full details", + inputSchema: z.object({ + memoryId: z.string().describe("The ID of the memory to fetch"), + }), + execute: async ({ memoryId }) => { + try { + const response = await client.memories.get(memoryId) + + return { + success: true, + memory: response, + } + } catch (error) { + return { + success: false, + error: error instanceof Error ? error.message : "Unknown error", + } + } + }, + }) + + return { + searchMemories, + addMemory, + fetchMemory, + } +} + +// Export individual tool creators for more flexibility +export const searchMemoriesTool = ( + apiKey: string, + config: SupermemoryToolsConfig, +) => { + const { searchMemories } = supermemoryTools(apiKey, config) + return searchMemories +} + +export const addMemoryTool = ( + apiKey: string, + config: SupermemoryToolsConfig, +) => { + const { addMemory } = supermemoryTools(apiKey, config) + return addMemory +} + +export const fetchMemoryTool = ( + apiKey: string, + config: SupermemoryToolsConfig, +) => { + const { fetchMemory } = supermemoryTools(apiKey, config) + return fetchMemory +} diff --git a/packages/ai-sdk/tsconfig.json b/packages/ai-sdk/tsconfig.json new file mode 100644 index 00000000..1bfa9593 --- /dev/null +++ b/packages/ai-sdk/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@total-typescript/tsconfig/bundler/dom/library-monorepo", + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["./*"], + "@lib/*": ["../lib/*"] + } + } +} diff --git a/packages/eslint-config/README.md b/packages/eslint-config/README.md deleted file mode 100644 index 8b42d901..00000000 --- a/packages/eslint-config/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# `@turbo/eslint-config` - -Collection of internal eslint configurations. diff --git a/packages/eslint-config/base.js b/packages/eslint-config/base.js deleted file mode 100644 index ca42eee9..00000000 --- a/packages/eslint-config/base.js +++ /dev/null @@ -1,32 +0,0 @@ -import js from "@eslint/js" -import eslintConfigPrettier from "eslint-config-prettier" -import onlyWarn from "eslint-plugin-only-warn" -import turboPlugin from "eslint-plugin-turbo" -import tseslint from "typescript-eslint" - -/** - * A shared ESLint configuration for the repository. - * - * @type {import("eslint").Linter.Config[]} - * */ -export const config = [ - js.configs.recommended, - eslintConfigPrettier, - ...tseslint.configs.recommended, - { - plugins: { - turbo: turboPlugin, - }, - rules: { - "turbo/no-undeclared-env-vars": "warn", - }, - }, - { - plugins: { - onlyWarn, - }, - }, - { - ignores: ["dist/**"], - }, -] diff --git a/packages/eslint-config/next.js b/packages/eslint-config/next.js deleted file mode 100644 index 74ef8ef3..00000000 --- a/packages/eslint-config/next.js +++ /dev/null @@ -1,49 +0,0 @@ -import js from "@eslint/js" -import pluginNext from "@next/eslint-plugin-next" -import eslintConfigPrettier from "eslint-config-prettier" -import pluginReact from "eslint-plugin-react" -import pluginReactHooks from "eslint-plugin-react-hooks" -import globals from "globals" -import tseslint from "typescript-eslint" -import { config as baseConfig } from "./base.js" - -/** - * A custom ESLint configuration for libraries that use Next.js. - * - * @type {import("eslint").Linter.Config[]} - * */ -export const nextJsConfig = [ - ...baseConfig, - js.configs.recommended, - eslintConfigPrettier, - ...tseslint.configs.recommended, - { - ...pluginReact.configs.flat.recommended, - languageOptions: { - ...pluginReact.configs.flat.recommended.languageOptions, - globals: { - ...globals.serviceworker, - }, - }, - }, - { - plugins: { - "@next/next": pluginNext, - }, - rules: { - ...pluginNext.configs.recommended.rules, - ...pluginNext.configs["core-web-vitals"].rules, - }, - }, - { - plugins: { - "react-hooks": pluginReactHooks, - }, - settings: { react: { version: "detect" } }, - rules: { - ...pluginReactHooks.configs.recommended.rules, - // React scope no longer necessary with new JSX transform. - "react/react-in-jsx-scope": "off", - }, - }, -] diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json deleted file mode 100644 index 9f420e9c..00000000 --- a/packages/eslint-config/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "@repo/eslint-config", - "version": "0.0.0", - "type": "module", - "private": true, - "exports": { - "./base": "./base.js", - "./next-js": "./next.js", - "./react-internal": "./react-internal.js" - }, - "devDependencies": { - "@eslint/js": "^9.33.0", - "@next/eslint-plugin-next": "^15.4.2", - "eslint": "^9.33.0", - "eslint-config-prettier": "^10.1.1", - "eslint-plugin-only-warn": "^1.1.0", - "eslint-plugin-react": "^7.37.5", - "eslint-plugin-react-hooks": "^5.2.0", - "eslint-plugin-turbo": "^2.5.0", - "globals": "^16.3.0", - "typescript": "^5.9.2", - "typescript-eslint": "^8.39.0" - } -} diff --git a/packages/eslint-config/react-internal.js b/packages/eslint-config/react-internal.js deleted file mode 100644 index b179949e..00000000 --- a/packages/eslint-config/react-internal.js +++ /dev/null @@ -1,39 +0,0 @@ -import js from "@eslint/js" -import eslintConfigPrettier from "eslint-config-prettier" -import pluginReact from "eslint-plugin-react" -import pluginReactHooks from "eslint-plugin-react-hooks" -import globals from "globals" -import tseslint from "typescript-eslint" -import { config as baseConfig } from "./base.js" - -/** - * A custom ESLint configuration for libraries that use React. - * - * @type {import("eslint").Linter.Config[]} */ -export const config = [ - ...baseConfig, - js.configs.recommended, - eslintConfigPrettier, - ...tseslint.configs.recommended, - pluginReact.configs.flat.recommended, - { - languageOptions: { - ...pluginReact.configs.flat.recommended.languageOptions, - globals: { - ...globals.serviceworker, - ...globals.browser, - }, - }, - }, - { - plugins: { - "react-hooks": pluginReactHooks, - }, - settings: { react: { version: "detect" } }, - rules: { - ...pluginReactHooks.configs.recommended.rules, - // React scope no longer necessary with new JSX transform. - "react/react-in-jsx-scope": "off", - }, - }, -] diff --git a/packages/typescript-config/base.json b/packages/typescript-config/base.json deleted file mode 100644 index 0756a8cd..00000000 --- a/packages/typescript-config/base.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "compilerOptions": { - "declaration": true, - "declarationMap": true, - "esModuleInterop": true, - "incremental": false, - "isolatedModules": true, - "lib": ["es2022", "DOM", "DOM.Iterable"], - "module": "NodeNext", - "moduleDetection": "force", - "moduleResolution": "NodeNext", - "noUncheckedIndexedAccess": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "strict": true, - "target": "ES2022" - } -} diff --git a/packages/typescript-config/nextjs.json b/packages/typescript-config/nextjs.json deleted file mode 100644 index 20317a2a..00000000 --- a/packages/typescript-config/nextjs.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "./base.json", - "compilerOptions": { - "plugins": [{ "name": "next" }], - "module": "ESNext", - "moduleResolution": "Bundler", - "allowJs": true, - "jsx": "preserve", - "noEmit": true - } -} diff --git a/packages/typescript-config/package.json b/packages/typescript-config/package.json deleted file mode 100644 index a9d4b226..00000000 --- a/packages/typescript-config/package.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "@repo/typescript-config", - "version": "0.0.0", - "private": true, - "license": "MIT", - "publishConfig": { - "access": "public" - } -} diff --git a/packages/typescript-config/react-library.json b/packages/typescript-config/react-library.json deleted file mode 100644 index 44957d69..00000000 --- a/packages/typescript-config/react-library.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "./base.json", - "compilerOptions": { - "jsx": "react-jsx" - } -}