#!/usr/bin/env bun /** * Simple Claude Memory Tool Example * Shows the cleanest way to integrate Claude's memory tool with supermemory */ import Anthropic from "@anthropic-ai/sdk" import { createClaudeMemoryTool } from "./claude-memory" const anthropic = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY!, }) const memoryTool = createClaudeMemoryTool(process.env.SUPERMEMORY_API_KEY!, { projectId: "my-app", }) async function chatWithMemory(userMessage: string) { // Send message to Claude with memory tool const response = await anthropic.beta.messages.create({ model: "claude-sonnet-4-5", max_tokens: 2048, messages: [{ role: "user", content: userMessage }], tools: [{ type: "memory_20250818", name: "memory" }], betas: ["context-management-2025-06-27"], }) // Handle any memory tool calls const toolResults = [] for (const block of response.content) { if (block.type === "tool_use" && block.name === "memory") { const toolResult = await memoryTool.handleCommandForToolResult( block.input as any, block.id, ) toolResults.push(toolResult) } } // Send tool results back to Claude if needed if (toolResults.length > 0) { const finalResponse = await anthropic.beta.messages.create({ model: "claude-sonnet-4-5", max_tokens: 2048, messages: [ { role: "user", content: userMessage }, { role: "assistant", content: response.content }, { role: "user", content: toolResults }, ], tools: [{ type: "memory_20250818", name: "memory" }], betas: ["context-management-2025-06-27"], }) return finalResponse } return response } // Example usage async function example() { const response = await chatWithMemory( "Remember that I prefer React with TypeScript for my projects", ) console.log(response.content[0]) } if (import.meta.main) { example() }