diff --git a/apps/docs/docs.json b/apps/docs/docs.json index aef210a2..95cbd4f0 100644 --- a/apps/docs/docs.json +++ b/apps/docs/docs.json @@ -204,6 +204,19 @@ "ai-sdk/infinite-chat", "ai-sdk/npm" ] + }, + { + "group": "Memory Graph", + "icon": "network", + "pages": [ + "memory-graph/overview", + "memory-graph/installation", + "memory-graph/quick-start", + "memory-graph/api-reference", + "memory-graph/examples", + "memory-graph/troubleshooting", + "memory-graph/npm" + ] } ] } diff --git a/apps/docs/memory-api/sdks/overview.mdx b/apps/docs/memory-api/sdks/overview.mdx index 84719016..ae85c6aa 100644 --- a/apps/docs/memory-api/sdks/overview.mdx +++ b/apps/docs/memory-api/sdks/overview.mdx @@ -18,6 +18,10 @@ title: "Overview" Use supermemory with the python and javascript OpenAI SDKs + + Interactive canvas-based component to visualize your knowledge graph + + We will add support for your favorite SDKs asap. diff --git a/apps/docs/memory-graph/api-reference.mdx b/apps/docs/memory-graph/api-reference.mdx new file mode 100644 index 00000000..f6dc00c2 --- /dev/null +++ b/apps/docs/memory-graph/api-reference.mdx @@ -0,0 +1,405 @@ +--- +title: "API Reference" +description: "Complete reference for props, types, and configuration options" +sidebarTitle: "API Reference" +--- + +## Component Props + +### Core Props + + + Array of documents with their associated memories to display in the graph. This is the primary data source for the visualization. + + ```tsx + + ``` + + + + Indicates whether the initial data is currently loading. Shows a loading indicator overlay. + + ```tsx + + ``` + + + + Error object to display if data fetching fails. Shows an error state with the error message. + + ```tsx + + ``` + + + + Content to display when no documents are available. Useful for custom empty states. + + ```tsx + +
+

No memories yet

+ +
+
+ ``` +
+ +### Display Props + + + Visual variant that determines the default zoom level and UI layout. + + - **console**: Full dashboard view (zoom: 0.8, spaces selector shown, legend bottom-right) + - **consumer**: Embedded widget view (zoom: 0.5, spaces selector hidden, legend top-right) + + ```tsx + {/* Full dashboard */} + + + {/* Embedded widget */} + + ``` + + + + Controls visibility of the spaces/container filter dropdown. Defaults to `true` for console variant, `false` for consumer variant. + + ```tsx + {/* Force show on consumer variant */} + + ``` + + + + Custom ID for the legend element. Useful for DOM targeting or testing. + + ```tsx + + ``` + + +### Highlighting Props + + + Array of document IDs to highlight in the graph. Supports both internal IDs and custom IDs. Perfect for showing search results or filtered content. + + ```tsx + + ``` + + + + Controls whether highlights are currently visible. Useful for toggling highlights on/off. + + ```tsx + const [showHighlights, setShowHighlights] = useState(true) + + + ``` + + +### Pagination Props + +For large datasets, implement pagination to load documents incrementally: + + + Indicates whether additional data is being loaded. Shows a loading indicator without blocking interactions. + + ```tsx + + ``` + + + + Indicates whether more documents are available to load. + + ```tsx + + ``` + + + + Total number of documents currently loaded. Displayed in the loading indicator. + + ```tsx + + ``` + + + + Async callback function to load more documents. Called automatically when user scrolls near the viewport edge. + + ```tsx + const loadMore = async () => { + const nextPage = await fetchNextPage() + setDocuments(prev => [...prev, ...nextPage]) + } + + + ``` + + +### Advanced Props + + + Number of pixels occluded on the right side (e.g., by a chat panel). Used to adjust auto-fit calculations. + + ```tsx + {/* Account for 400px chat panel on the right */} + + ``` + + + + Enable automatic loading when 80% of documents are visible in viewport. Set to `false` for manual pagination control. + + ```tsx + + ``` + + + + Custom theme class name for styling overrides. Use with Vanilla Extract theme system. + + ```tsx + import { customTheme } from './my-theme.css' + + + ``` + + +## TypeScript Types + +### Core Data Types + +```typescript +interface DocumentWithMemories { + id: string + customId?: string | null + title?: string + content?: string + summary?: string + url?: string + summaryEmbedding?: number[] // For similarity calculations + memoryEntries: MemoryEntry[] + createdAt: string + updatedAt: string + userId?: string + spaceId?: string + spaceContainerTag?: string +} + +interface MemoryEntry { + id: string + documentId: string + content: string | null + embedding?: number[] + spaceContainerTag?: string + spaceId?: string + updatesMemoryId?: string | null + relation?: 'updates' | 'extends' | 'derives' | null + isForgotten?: boolean + isLatest?: boolean + forgetAfter?: string | null + createdAt: string + updatedAt: string +} +``` + +### Graph Types + +```typescript +interface GraphNode { + id: string + type: 'document' | 'memory' + x: number + y: number + data: DocumentWithMemories | MemoryEntry + size: number + color: string + isHovered: boolean + isDragging: boolean +} + +interface GraphEdge { + id: string + source: string + target: string + similarity: number // 0-1 for semantic similarity + visualProps: { + opacity: number + thickness: number + glow: number + pulseDuration: number + } + color: string + edgeType: 'doc-memory' | 'doc-doc' | 'version' + relationType?: 'updates' | 'extends' | 'derives' +} +``` + +### Component Props Type + +```typescript +interface MemoryGraphProps { + // Core + documents: DocumentWithMemories[] + isLoading?: boolean + error?: Error | null + children?: ReactNode + + // Display + variant?: 'console' | 'consumer' + showSpacesSelector?: boolean + legendId?: string + + // Highlighting + highlightDocumentIds?: string[] + highlightsVisible?: boolean + + // Pagination + isLoadingMore?: boolean + hasMore?: boolean + totalLoaded?: number + loadMoreDocuments?: () => Promise + + // Advanced + occludedRightPx?: number + autoLoadOnViewport?: boolean + themeClassName?: string +} +``` + +## Variants Comparison + +| Feature | Console | Consumer | +|---------|---------|----------| +| **Initial Zoom** | 0.8 (closer view) | 0.5 (wider view) | +| **Spaces Selector** | Shown by default | Hidden by default | +| **Legend Position** | Bottom-right | Top-right | +| **Best For** | Full-page dashboards | Embedded widgets | +| **Use Cases** | Admin panels, analytics | Sidebars, chat integration | + +### Console Variant + +```tsx + +``` + +{/* TODO: Add console variant screenshot */} + +### Consumer Variant + +```tsx +