@cilow/sdk 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +412 -199
- package/dist/client.d.mts +224 -0
- package/dist/client.d.ts +224 -0
- package/dist/client.js +509 -0
- package/dist/client.js.map +1 -0
- package/dist/client.mjs +505 -0
- package/dist/client.mjs.map +1 -0
- package/dist/index.d.mts +94 -390
- package/dist/index.d.ts +94 -390
- package/dist/index.js +745 -350
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +732 -318
- package/dist/index.mjs.map +1 -0
- package/dist/providers/langchain.js +821 -0
- package/dist/providers/langchain.js.map +1 -0
- package/dist/providers/langchain.mjs +816 -0
- package/dist/providers/langchain.mjs.map +1 -0
- package/dist/providers/openai.js +737 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/openai.mjs +732 -0
- package/dist/providers/openai.mjs.map +1 -0
- package/dist/providers/vercel.js +866 -0
- package/dist/providers/vercel.js.map +1 -0
- package/dist/providers/vercel.mjs +860 -0
- package/dist/providers/vercel.mjs.map +1 -0
- package/dist/react/hooks.d.mts +327 -0
- package/dist/react/hooks.d.ts +327 -0
- package/dist/react/hooks.js +1183 -0
- package/dist/react/hooks.js.map +1 -0
- package/dist/react/hooks.mjs +1172 -0
- package/dist/react/hooks.mjs.map +1 -0
- package/dist/types.d.mts +494 -0
- package/dist/types.d.ts +494 -0
- package/dist/types.js +18 -0
- package/dist/types.js.map +1 -0
- package/dist/types.mjs +14 -0
- package/dist/types.mjs.map +1 -0
- package/dist/websocket.d.mts +160 -0
- package/dist/websocket.d.ts +160 -0
- package/dist/websocket.js +342 -0
- package/dist/websocket.js.map +1 -0
- package/dist/websocket.mjs +339 -0
- package/dist/websocket.mjs.map +1 -0
- package/package.json +90 -31
- package/LICENSE +0 -21
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/client.ts","../../src/providers/vercel.ts"],"names":[],"mappings":"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","file":"vercel.mjs","sourcesContent":["/**\n * Cilow Client - Core HTTP Client for Cilow API\n *\n * Provides a clean, type-safe interface for interacting with the Cilow\n * memory system API.\n */\n\nimport type {\n Memory,\n MemorySummary,\n SearchResult,\n SearchQuery,\n AdvancedSearchOptions,\n GraphNode,\n GraphEdge,\n GraphSubgraph,\n GraphTraversalOptions,\n MemoryStats,\n TagCount,\n UserStats,\n CilowConfig,\n CreateMemoryOptions,\n UpdateMemoryOptions,\n PaginatedResponse,\n HealthCheck,\n ApiError,\n ContextResult,\n ConversationTurn,\n} from './types';\n\n/**\n * HTTP fetch wrapper with error handling and retries\n */\nasync function fetchWithRetry(\n url: string,\n options: RequestInit,\n config: { timeout: number; retries: number; debug: boolean }\n): Promise<Response> {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), config.timeout);\n\n let lastError: Error | null = null;\n\n for (let attempt = 0; attempt <= config.retries; attempt++) {\n try {\n const response = await fetch(url, {\n ...options,\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n if (!response.ok) {\n const errorBody = await response.text();\n let apiError: ApiError;\n\n try {\n apiError = JSON.parse(errorBody);\n } catch {\n apiError = {\n code: `HTTP_${response.status}`,\n message: errorBody || response.statusText,\n };\n }\n\n throw new CilowApiError(apiError.message, apiError.code, response.status, apiError.details);\n }\n\n return response;\n } catch (error) {\n lastError = error as Error;\n\n if (error instanceof CilowApiError) {\n throw error;\n }\n\n if (config.debug) {\n console.warn(`Cilow API request failed (attempt ${attempt + 1}/${config.retries + 1}):`, error);\n }\n\n if (attempt < config.retries) {\n // Exponential backoff\n await new Promise((resolve) => setTimeout(resolve, Math.pow(2, attempt) * 100));\n }\n }\n }\n\n clearTimeout(timeoutId);\n throw lastError || new Error('Request failed');\n}\n\n/**\n * Custom error class for Cilow API errors\n */\nexport class CilowApiError extends Error {\n constructor(\n message: string,\n public readonly code: string,\n public readonly statusCode: number,\n public readonly details?: Record<string, unknown>\n ) {\n super(message);\n this.name = 'CilowApiError';\n }\n}\n\n/**\n * CilowClient - Main client class for interacting with the Cilow API\n *\n * @example\n * ```typescript\n * const client = new CilowClient({\n * apiUrl: 'https://api.cilow.ai',\n * apiKey: 'your-api-key'\n * });\n *\n * // Store a memory\n * const memoryId = await client.remember(\"User prefers dark mode\", {\n * tags: [\"preference\", \"ui\"]\n * });\n *\n * // Search memories\n * const results = await client.recall(\"user preferences\");\n *\n * // Delete memories\n * await client.forget({ tags: [\"old\"] });\n * ```\n */\nexport class CilowClient {\n private readonly baseUrl: string;\n private readonly apiKey: string;\n private readonly timeout: number;\n private readonly retries: number;\n private readonly headers: Record<string, string>;\n private readonly debug: boolean;\n\n constructor(config: CilowConfig) {\n this.baseUrl = config.apiUrl.replace(/\\/$/, '');\n this.apiKey = config.apiKey;\n this.timeout = config.timeout ?? 30000;\n this.retries = config.retries ?? 3;\n this.debug = config.debug ?? false;\n\n // Support both API key and Bearer token auth\n const authHeaders: Record<string, string> = this.apiKey.startsWith('cilow_')\n ? { 'X-API-Key': this.apiKey }\n : { Authorization: `Bearer ${this.apiKey}` };\n\n this.headers = {\n 'Content-Type': 'application/json',\n ...authHeaders,\n ...config.headers,\n };\n }\n\n /**\n * Make an API request\n */\n private async request<T>(\n method: string,\n path: string,\n body?: unknown,\n queryParams?: Record<string, string | number | boolean | undefined>\n ): Promise<T> {\n let url = `${this.baseUrl}${path}`;\n\n if (queryParams) {\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(queryParams)) {\n if (value !== undefined) {\n params.append(key, String(value));\n }\n }\n const queryString = params.toString();\n if (queryString) {\n url += `?${queryString}`;\n }\n }\n\n if (this.debug) {\n console.log(`Cilow API: ${method} ${url}`);\n }\n\n const response = await fetchWithRetry(\n url,\n {\n method,\n headers: this.headers,\n body: body ? JSON.stringify(body) : undefined,\n },\n { timeout: this.timeout, retries: this.retries, debug: this.debug }\n );\n\n const text = await response.text();\n if (!text) {\n return undefined as T;\n }\n\n return JSON.parse(text) as T;\n }\n\n // ===========================================================================\n // Simple API (remember, recall, forget)\n // ===========================================================================\n\n /**\n * Store a memory (simple API)\n *\n * @param content - The content to remember\n * @param options - Optional configuration\n * @returns The created memory ID\n *\n * @example\n * ```typescript\n * await cilow.remember(\"User prefers dark mode\", {\n * tags: [\"preference\"],\n * userId: \"user-123\"\n * });\n * ```\n */\n async remember(content: string, options?: CreateMemoryOptions): Promise<string> {\n const response = await this.request<{ memory_id: string; id?: string }>('POST', '/api/v1/memory/add', {\n content,\n tags: options?.tags ?? [],\n user_id: options?.userId,\n session_id: options?.sessionId,\n metadata: options?.metadata,\n type: options?.tier,\n });\n\n return response.memory_id || response.id || '';\n }\n\n /**\n * Search memories (simple API)\n *\n * @param query - Search query text\n * @param options - Search options\n * @returns Array of search results\n *\n * @example\n * ```typescript\n * const memories = await cilow.recall(\"user preferences\", {\n * limit: 10,\n * tags: [\"preference\"]\n * });\n * ```\n */\n async recall(\n query: string,\n options?: {\n limit?: number;\n minRelevance?: number;\n tags?: string[];\n userId?: string;\n }\n ): Promise<SearchResult[]> {\n interface ApiSearchResult {\n memory_id: string;\n content: string;\n score: number;\n similarity: number;\n tags?: string[];\n created_at?: string;\n }\n\n const response = await this.request<{ results: ApiSearchResult[] }>('POST', '/api/v1/memory/search', {\n query,\n limit: options?.limit ?? 10,\n min_score: options?.minRelevance ?? 0.3,\n tags: options?.tags,\n user_id: options?.userId,\n });\n\n // Transform API response to SDK format with defaults for required fields\n return (response.results ?? []).map((r): SearchResult => ({\n memory: {\n id: r.memory_id,\n content: r.content,\n tags: r.tags ?? [],\n tier: 'hot' as const,\n status: 'active' as const,\n accessCount: 0,\n tokenCount: Math.ceil(r.content.length / 4),\n metadata: {},\n createdAt: r.created_at ?? new Date().toISOString(),\n updatedAt: r.created_at ?? new Date().toISOString(),\n lastAccessedAt: new Date().toISOString(),\n },\n score: r.similarity,\n highlights: [],\n }));\n }\n\n /**\n * Delete memories (simple API)\n *\n * @param filter - Filter criteria for deletion\n * @returns Number of memories deleted\n *\n * @example\n * ```typescript\n * // Delete by tags\n * await cilow.forget({ tags: [\"temporary\"] });\n *\n * // Delete by user\n * await cilow.forget({ userId: \"user-123\" });\n *\n * // Delete specific memory\n * await cilow.forget({ memoryId: \"mem-abc\" });\n * ```\n */\n async forget(filter: {\n memoryId?: string;\n tags?: string[];\n userId?: string;\n sessionId?: string;\n olderThan?: string;\n }): Promise<number> {\n if (filter.memoryId) {\n await this.deleteMemory(filter.memoryId);\n return 1;\n }\n\n const response = await this.request<{ deleted: number }>('DELETE', '/api/v1/memories/bulk', {\n filter_tags: filter.tags,\n user_id: filter.userId,\n session_id: filter.sessionId,\n older_than: filter.olderThan,\n });\n\n return response.deleted ?? 0;\n }\n\n // ===========================================================================\n // Memory CRUD Operations\n // ===========================================================================\n\n /**\n * Create a new memory\n */\n async createMemory(content: string, options?: CreateMemoryOptions): Promise<Memory> {\n return this.request<Memory>('POST', '/api/v1/memories', {\n content,\n tags: options?.tags ?? [],\n user_id: options?.userId,\n session_id: options?.sessionId,\n metadata: options?.metadata,\n tier: options?.tier,\n });\n }\n\n /**\n * Get a memory by ID\n */\n async getMemory(memoryId: string): Promise<Memory> {\n return this.request<Memory>('GET', `/api/v1/memories/${memoryId}`);\n }\n\n /**\n * Update a memory\n */\n async updateMemory(memoryId: string, updates: UpdateMemoryOptions): Promise<Memory> {\n return this.request<Memory>('PATCH', `/api/v1/memories/${memoryId}`, {\n content: updates.content,\n tags: updates.tags,\n metadata: updates.metadata,\n tier: updates.tier,\n });\n }\n\n /**\n * Delete a memory\n */\n async deleteMemory(memoryId: string): Promise<void> {\n await this.request<void>('DELETE', `/api/v1/memories/${memoryId}`);\n }\n\n /**\n * List memories with pagination\n */\n async listMemories(options?: {\n limit?: number;\n offset?: number;\n userId?: string;\n sessionId?: string;\n tags?: string[];\n tier?: string;\n }): Promise<PaginatedResponse<MemorySummary>> {\n interface ApiMemory {\n memory_id: string;\n id?: string;\n content: string;\n tags?: string[];\n created_at?: string;\n type?: string;\n }\n\n const response = await this.request<{ memories: ApiMemory[]; total?: number }>(\n 'GET',\n '/api/v1/memory/list',\n undefined,\n {\n limit: options?.limit ?? 20,\n offset: options?.offset ?? 0,\n user_id: options?.userId,\n session_id: options?.sessionId,\n tags: options?.tags?.join(','),\n type: options?.tier,\n }\n );\n\n const items: MemorySummary[] = (response.memories ?? []).map((m) => ({\n id: m.memory_id || m.id || '',\n content: m.content,\n tags: m.tags ?? [],\n createdAt: m.created_at ?? new Date().toISOString(),\n tier: (m.type as MemorySummary['tier']) || 'hot',\n }));\n\n const limit = options?.limit ?? 20;\n const offset = options?.offset ?? 0;\n const total = response.total ?? items.length;\n\n return {\n items,\n total,\n limit,\n offset,\n hasMore: offset + items.length < total,\n };\n }\n\n // ===========================================================================\n // Search Operations\n // ===========================================================================\n\n /**\n * Search memories with full options\n */\n async searchMemories(query: SearchQuery): Promise<SearchResult[]> {\n const response = await this.request<{ results: SearchResult[] }>('POST', '/api/v1/memories/search', {\n text: query.text,\n limit: query.limit ?? 10,\n min_relevance: query.minRelevance ?? 0.3,\n filter_tags: query.tags,\n user_id: query.userId,\n session_id: query.sessionId,\n tier: query.tier,\n created_after: query.createdAfter,\n created_before: query.createdBefore,\n include_archived: query.includeArchived,\n mode: query.mode ?? 'hybrid',\n });\n\n return response.results ?? [];\n }\n\n /**\n * Advanced search with reranking and boosts\n */\n async advancedSearch(query: AdvancedSearchOptions): Promise<SearchResult[]> {\n const response = await this.request<{ results: SearchResult[] }>('POST', '/api/v1/memories/search/advanced', {\n text: query.text,\n limit: query.limit ?? 10,\n min_relevance: query.minRelevance ?? 0.3,\n filter_tags: query.tags,\n required_tags: query.requiredTags,\n excluded_tags: query.excludedTags,\n user_id: query.userId,\n session_id: query.sessionId,\n recency_boost: query.recencyBoost,\n frequency_boost: query.frequencyBoost,\n metadata_filters: query.metadataFilters,\n reranker: query.reranker,\n });\n\n return response.results ?? [];\n }\n\n /**\n * Get context for AI applications\n */\n async getContext(\n query: string,\n options?: {\n maxTokens?: number;\n userId?: string;\n tags?: string[];\n }\n ): Promise<ContextResult> {\n const maxTokens = options?.maxTokens ?? 4000;\n const tokensPerChar = 0.25;\n\n const results = await this.searchMemories({\n text: query,\n limit: 30,\n minRelevance: 0.3,\n userId: options?.userId,\n tags: options?.tags,\n });\n\n let context = '';\n let estimatedTokens = 0;\n const memoryIds: string[] = [];\n const scores: number[] = [];\n\n for (const result of results) {\n const memoryText = `[Relevance: ${(result.score * 100).toFixed(0)}%]\\n${result.memory.content}\\n\\n`;\n const memoryTokens = Math.ceil(memoryText.length * tokensPerChar);\n\n if (estimatedTokens + memoryTokens > maxTokens) break;\n\n context += memoryText;\n estimatedTokens += memoryTokens;\n memoryIds.push(result.memory.id);\n scores.push(result.score);\n }\n\n return {\n context: context.trim(),\n memoriesUsed: memoryIds.length,\n estimatedTokens,\n memoryIds,\n scores,\n };\n }\n\n // ===========================================================================\n // Conversation Operations\n // ===========================================================================\n\n /**\n * Store a conversation turn\n */\n async storeConversation(turn: ConversationTurn & { userId: string }): Promise<string> {\n const content = `User: ${turn.userMessage}\\n\\nAssistant: ${turn.assistantResponse}`;\n const tags = ['conversation'];\n\n if (turn.sessionId) {\n tags.push(`session:${turn.sessionId}`);\n }\n\n return this.remember(content, {\n tags,\n userId: turn.userId,\n sessionId: turn.sessionId,\n metadata: {\n type: 'conversation',\n ...turn.metadata,\n },\n });\n }\n\n /**\n * Get conversation history for a session\n */\n async getConversationHistory(\n sessionId: string,\n options?: { limit?: number; offset?: number }\n ): Promise<MemorySummary[]> {\n const response = await this.listMemories({\n sessionId,\n tags: ['conversation'],\n limit: options?.limit ?? 50,\n offset: options?.offset ?? 0,\n });\n\n return response.items;\n }\n\n // ===========================================================================\n // Graph Operations\n // ===========================================================================\n\n /**\n * Get a graph node\n */\n async getGraphNode(nodeId: string): Promise<GraphNode> {\n return this.request<GraphNode>('GET', `/api/v1/graph/nodes/${nodeId}`);\n }\n\n /**\n * Create a graph node\n */\n async createGraphNode(\n type: string,\n name: string,\n properties?: Record<string, unknown>\n ): Promise<GraphNode> {\n return this.request<GraphNode>('POST', '/api/v1/graph/nodes', {\n type,\n name,\n properties: properties ?? {},\n });\n }\n\n /**\n * Create a graph edge\n */\n async createGraphEdge(\n sourceId: string,\n targetId: string,\n type: string,\n properties?: Record<string, unknown>\n ): Promise<GraphEdge> {\n return this.request<GraphEdge>('POST', '/api/v1/graph/edges', {\n source_id: sourceId,\n target_id: targetId,\n type,\n properties: properties ?? {},\n });\n }\n\n /**\n * Traverse the graph from a starting node\n */\n async traverseGraph(options: GraphTraversalOptions): Promise<GraphSubgraph> {\n return this.request<GraphSubgraph>('POST', '/api/v1/graph/traverse', {\n start_node_id: options.startNodeId,\n max_depth: options.maxDepth ?? 3,\n relationship_types: options.relationshipTypes,\n limit: options.limit ?? 100,\n direction: options.direction ?? 'both',\n });\n }\n\n /**\n * Get related nodes for a memory\n */\n async getRelatedNodes(memoryId: string): Promise<GraphNode[]> {\n const response = await this.request<{ nodes: GraphNode[] }>(\n 'GET',\n `/api/v1/memories/${memoryId}/related-nodes`\n );\n return response.nodes ?? [];\n }\n\n // ===========================================================================\n // Statistics & Admin\n // ===========================================================================\n\n /**\n * Get memory statistics\n */\n async getStats(): Promise<MemoryStats> {\n return this.request<MemoryStats>('GET', '/api/v1/stats');\n }\n\n /**\n * Get all tags with counts\n */\n async getTags(): Promise<TagCount[]> {\n const response = await this.request<{ tags: TagCount[] }>('GET', '/api/v1/tags');\n return response.tags ?? [];\n }\n\n /**\n * Get user statistics\n */\n async getUserStats(userId: string): Promise<UserStats> {\n return this.request<UserStats>('GET', `/api/v1/users/${userId}/stats`);\n }\n\n /**\n * Health check\n */\n async healthCheck(): Promise<HealthCheck> {\n return this.request<HealthCheck>('GET', '/health');\n }\n\n // ===========================================================================\n // Batch Operations\n // ===========================================================================\n\n /**\n * Batch create memories\n */\n async batchCreate(\n items: Array<{ content: string; options?: CreateMemoryOptions }>\n ): Promise<string[]> {\n const response = await this.request<{ ids: string[] }>('POST', '/api/v1/memories/batch', {\n memories: items.map((item) => ({\n content: item.content,\n tags: item.options?.tags ?? [],\n user_id: item.options?.userId,\n session_id: item.options?.sessionId,\n metadata: item.options?.metadata,\n })),\n });\n\n return response.ids ?? [];\n }\n\n /**\n * Batch delete memories\n */\n async batchDelete(memoryIds: string[]): Promise<number> {\n const response = await this.request<{ deleted: number }>('DELETE', '/api/v1/memories/batch', {\n ids: memoryIds,\n });\n\n return response.deleted ?? 0;\n }\n}\n\n/**\n * Create a Cilow client instance (convenience function)\n */\nexport function createClient(config: CilowConfig): CilowClient {\n return new CilowClient(config);\n}\n","/**\n * Cilow Provider for Vercel AI SDK\n *\n * Provides tool definitions and context utilities for the Vercel AI SDK.\n *\n * @example\n * ```typescript\n * import { createCilowTools, createCilowContext } from '@cilow/sdk/providers/vercel';\n * import { streamText } from 'ai';\n *\n * const tools = createCilowTools({\n * apiUrl: 'https://api.cilow.ai',\n * apiKey: 'your-key'\n * });\n *\n * const result = await streamText({\n * model: anthropic('claude-sonnet-4-20250514'),\n * tools,\n * prompt: 'What do you remember about me?'\n * });\n * ```\n */\n\nimport { tool } from 'ai';\nimport { z } from 'zod';\nimport { CilowClient } from '../client';\nimport type { CilowConfig, ContextResult } from '../types';\n\n// Define parameter schemas for type inference\nconst searchMemoriesSchema = z.object({\n query: z.string().describe('The search query to find relevant memories'),\n limit: z.number().optional().describe('Maximum results to return (default: 10)'),\n minRelevance: z.number().optional().describe('Minimum relevance score 0-1 (default: 0.3)'),\n tags: z.array(z.string()).optional().describe('Filter by specific tags'),\n userId: z.string().optional().describe('User ID to scope the search'),\n});\n\nconst addMemorySchema = z.object({\n content: z.string().describe('The content to remember'),\n tags: z.array(z.string()).optional().describe('Tags to categorize the memory'),\n userId: z.string().optional().describe('User ID to associate'),\n metadata: z.record(z.any()).optional().describe('Additional metadata'),\n});\n\nconst getContextSchema = z.object({\n query: z.string().describe('Query to find relevant context'),\n maxTokens: z.number().optional().describe('Maximum tokens to return (default: 2000)'),\n userId: z.string().optional().describe('User ID to scope context'),\n});\n\nconst rememberConversationSchema = z.object({\n userMessage: z.string().describe(\"The user's message\"),\n assistantResponse: z.string().describe(\"The assistant's response\"),\n sessionId: z.string().optional().describe('Session ID for grouping'),\n userId: z.string().optional().describe('User ID'),\n topic: z.string().optional().describe('Topic or category'),\n});\n\nconst forgetMemorySchema = z.object({\n memoryId: z.string().optional().describe('Memory ID to delete'),\n tags: z.array(z.string()).optional().describe('Delete memories with these tags'),\n userId: z.string().optional().describe('Delete memories for this user'),\n});\n\nconst emptySchema = z.object({});\n\n// Type aliases for parameter types\ntype SearchMemoriesParams = z.infer<typeof searchMemoriesSchema>;\ntype AddMemoryParams = z.infer<typeof addMemorySchema>;\ntype GetContextParams = z.infer<typeof getContextSchema>;\ntype RememberConversationParams = z.infer<typeof rememberConversationSchema>;\ntype ForgetMemoryParams = z.infer<typeof forgetMemorySchema>;\n\n/**\n * Configuration for Cilow Vercel AI SDK tools\n */\nexport interface CilowVercelConfig extends CilowConfig {\n /** Default user ID for memory operations */\n defaultUserId?: string;\n /** Default session ID */\n defaultSessionId?: string;\n /** Maximum search results */\n defaultSearchLimit?: number;\n /** Minimum relevance threshold */\n defaultMinRelevance?: number;\n}\n\n/**\n * Create Cilow memory tools for Vercel AI SDK\n *\n * Returns a set of tools that can be passed to `streamText` or `generateText`.\n *\n * @example\n * ```typescript\n * const tools = createCilowTools({\n * apiUrl: 'https://api.cilow.ai',\n * apiKey: 'your-key',\n * defaultUserId: 'user-123'\n * });\n *\n * const result = await streamText({\n * model: anthropic('claude-sonnet-4-20250514'),\n * tools,\n * messages: [{ role: 'user', content: 'What do you remember?' }]\n * });\n * ```\n */\nexport function createCilowTools(config: CilowVercelConfig) {\n const client = new CilowClient(config);\n const defaultUserId = config.defaultUserId;\n const defaultSessionId = config.defaultSessionId;\n const defaultLimit = config.defaultSearchLimit ?? 10;\n const defaultMinRelevance = config.defaultMinRelevance ?? 0.3;\n\n return {\n /**\n * Search through stored memories\n */\n searchMemories: tool({\n description:\n 'Search through stored memories using semantic similarity. Use this to recall information from past conversations or stored knowledge.',\n parameters: searchMemoriesSchema,\n execute: async (params: SearchMemoriesParams) => {\n const { query, limit, minRelevance, tags, userId } = params;\n try {\n const results = await client.recall(query, {\n limit: limit ?? defaultLimit,\n minRelevance: minRelevance ?? defaultMinRelevance,\n tags,\n userId: userId ?? defaultUserId,\n });\n\n return {\n success: true,\n count: results.length,\n memories: results.map((r) => ({\n content: r.memory.content,\n score: r.score,\n tags: r.memory.tags,\n createdAt: r.memory.createdAt,\n })),\n };\n } catch (error) {\n return {\n success: false,\n error: (error as Error).message,\n memories: [],\n };\n }\n },\n }),\n\n /**\n * Store a new memory\n */\n addMemory: tool({\n description:\n 'Store a new memory for future retrieval. Use this to save important information, user preferences, or insights.',\n parameters: addMemorySchema,\n execute: async (params: AddMemoryParams) => {\n const { content, tags, userId, metadata } = params;\n try {\n const memoryId = await client.remember(content, {\n tags,\n userId: userId ?? defaultUserId,\n metadata,\n });\n\n return {\n success: true,\n memoryId,\n message: 'Memory stored successfully',\n };\n } catch (error) {\n return {\n success: false,\n error: (error as Error).message,\n };\n }\n },\n }),\n\n /**\n * Get context for a conversation\n */\n getContext: tool({\n description:\n 'Retrieve relevant context from memories based on a query. Returns formatted context for including in prompts.',\n parameters: getContextSchema,\n execute: async (params: GetContextParams) => {\n const { query, maxTokens = 2000, userId } = params;\n try {\n const context = await client.getContext(query, {\n maxTokens,\n userId: userId ?? defaultUserId,\n });\n\n return {\n success: true,\n context: context.context,\n memoriesUsed: context.memoriesUsed,\n estimatedTokens: context.estimatedTokens,\n };\n } catch (error) {\n return {\n success: false,\n error: (error as Error).message,\n context: '',\n };\n }\n },\n }),\n\n /**\n * Store a conversation turn\n */\n rememberConversation: tool({\n description:\n 'Store a conversation exchange (user message and assistant response) for future context.',\n parameters: rememberConversationSchema,\n execute: async (params: RememberConversationParams) => {\n const { userMessage, assistantResponse, sessionId, userId, topic } = params;\n try {\n const memoryId = await client.storeConversation({\n userMessage,\n assistantResponse,\n sessionId: sessionId ?? defaultSessionId,\n userId: userId ?? defaultUserId ?? 'anonymous',\n metadata: topic ? { topic } : undefined,\n });\n\n return {\n success: true,\n memoryId,\n message: 'Conversation stored',\n };\n } catch (error) {\n return {\n success: false,\n error: (error as Error).message,\n };\n }\n },\n }),\n\n /**\n * Delete a memory\n */\n forgetMemory: tool({\n description: 'Delete a specific memory by ID or filter criteria.',\n parameters: forgetMemorySchema,\n execute: async (params: ForgetMemoryParams) => {\n const { memoryId, tags, userId } = params;\n try {\n const count = await client.forget({\n memoryId,\n tags,\n userId: userId ?? defaultUserId,\n });\n\n return {\n success: true,\n deletedCount: count,\n message: `Deleted ${count} memory(ies)`,\n };\n } catch (error) {\n return {\n success: false,\n error: (error as Error).message,\n };\n }\n },\n }),\n\n /**\n * Get memory statistics\n */\n getMemoryStats: tool({\n description: 'Get statistics about stored memories.',\n parameters: emptySchema,\n execute: async (_params: Record<string, never>) => {\n try {\n const stats = await client.getStats();\n return {\n success: true,\n stats: {\n totalMemories: stats.totalMemories,\n hotMemories: stats.hotMemories,\n warmMemories: stats.warmMemories,\n coldMemories: stats.coldMemories,\n totalTokens: stats.totalTokens,\n averageTokensPerMemory: stats.averageTokensPerMemory,\n },\n };\n } catch (error) {\n return {\n success: false,\n error: (error as Error).message,\n };\n }\n },\n }),\n\n /**\n * List all tags\n */\n listTags: tool({\n description: 'List all memory tags and their usage counts.',\n parameters: emptySchema,\n execute: async (_params: Record<string, never>) => {\n try {\n const tags = await client.getTags();\n return {\n success: true,\n tags: tags.map((t) => ({ tag: t.tag, count: t.count })),\n totalTags: tags.length,\n };\n } catch (error) {\n return {\n success: false,\n error: (error as Error).message,\n };\n }\n },\n }),\n };\n}\n\n/**\n * Type for the tools object\n */\nexport type CilowTools = ReturnType<typeof createCilowTools>;\n\n/**\n * Create a context retrieval function for Vercel AI SDK\n *\n * @example\n * ```typescript\n * const getContext = createCilowContext({\n * apiUrl: 'https://api.cilow.ai',\n * apiKey: 'your-key',\n * maxTokens: 2000\n * });\n *\n * const context = await getContext('What project are we working on?');\n *\n * const result = await streamText({\n * model: anthropic('claude-sonnet-4-20250514'),\n * system: `You are a helpful assistant.\\n\\nContext:\\n${context.context}`,\n * prompt: userMessage\n * });\n * ```\n */\nexport function createCilowContext(config: CilowVercelConfig & { maxTokens?: number }) {\n const client = new CilowClient(config);\n const defaultUserId = config.defaultUserId;\n const defaultMaxTokens = config.maxTokens ?? 4000;\n\n return async function getContext(\n query: string,\n options?: {\n userId?: string;\n maxTokens?: number;\n tags?: string[];\n }\n ): Promise<ContextResult> {\n return client.getContext(query, {\n maxTokens: options?.maxTokens ?? defaultMaxTokens,\n userId: options?.userId ?? defaultUserId,\n tags: options?.tags,\n });\n };\n}\n\n/**\n * Build a system prompt with memory context\n */\nexport function buildSystemPromptWithContext(\n basePrompt: string,\n context: ContextResult\n): string {\n if (!context.context || context.memoriesUsed === 0) {\n return basePrompt;\n }\n\n return `${basePrompt}\n\n## Relevant Information from Memory (${context.memoriesUsed} items)\n\n${context.context}\n\n---\n\nUse the above context when relevant to provide informed and personalized responses.`;\n}\n\n/**\n * Create middleware for automatically injecting memory context\n *\n * @example\n * ```typescript\n * const withMemory = createContextMiddleware({\n * apiUrl: 'https://api.cilow.ai',\n * apiKey: 'your-key'\n * });\n *\n * const messages = await withMemory(originalMessages, {\n * userId: 'user-123'\n * });\n * ```\n */\nexport function createContextMiddleware(config: CilowVercelConfig) {\n const getContext = createCilowContext(config);\n\n return async function withMemory<T extends { role: string; content: string }>(\n messages: T[],\n options?: {\n userId?: string;\n maxTokens?: number;\n }\n ): Promise<T[]> {\n if (messages.length === 0) return messages;\n\n // Find last user message\n const lastUserMessage = [...messages].reverse().find((m) => m.role === 'user');\n if (!lastUserMessage) return messages;\n\n const context = await getContext(lastUserMessage.content, options);\n\n if (!context.context || context.memoriesUsed === 0) {\n return messages;\n }\n\n // Find or create system message\n const systemIndex = messages.findIndex((m) => m.role === 'system');\n\n if (systemIndex >= 0) {\n const updatedMessages = [...messages];\n updatedMessages[systemIndex] = {\n ...messages[systemIndex],\n content: buildSystemPromptWithContext(messages[systemIndex].content, context),\n };\n return updatedMessages;\n } else {\n return [\n {\n role: 'system',\n content: `## Relevant Context from Memory\\n\\n${context.context}\\n\\nUse this context when relevant to answer the user's question.`,\n } as T,\n ...messages,\n ];\n }\n };\n}\n\n/**\n * Memory provider class for Vercel AI SDK\n */\nexport class CilowMemoryProvider {\n private client: CilowClient;\n private userId?: string;\n private sessionId?: string;\n private defaultTags: string[];\n private tokenBudget: number;\n\n constructor(config: CilowVercelConfig & { tokenBudget?: number; defaultTags?: string[] }) {\n this.client = new CilowClient(config);\n this.userId = config.defaultUserId;\n this.sessionId = config.defaultSessionId;\n this.defaultTags = config.defaultTags ?? [];\n this.tokenBudget = config.tokenBudget ?? 4000;\n }\n\n setUserId(userId: string): void {\n this.userId = userId;\n }\n\n setSessionId(sessionId: string): void {\n this.sessionId = sessionId;\n }\n\n async search(\n query: string,\n options?: { limit?: number; minRelevance?: number; tags?: string[] }\n ) {\n return this.client.recall(query, {\n ...options,\n userId: this.userId,\n });\n }\n\n async getContext(query: string, options?: { maxTokens?: number }): Promise<string> {\n const result = await this.client.getContext(query, {\n maxTokens: options?.maxTokens ?? this.tokenBudget,\n userId: this.userId,\n });\n return result.context;\n }\n\n async store(content: string, options?: { tags?: string[]; metadata?: Record<string, unknown> }) {\n const tags = [...this.defaultTags, ...(options?.tags ?? [])];\n if (this.sessionId) {\n tags.push(`session:${this.sessionId}`);\n }\n\n return this.client.remember(content, {\n tags,\n userId: this.userId,\n metadata: options?.metadata,\n });\n }\n\n async storeConversation(userMessage: string, assistantResponse: string) {\n return this.client.storeConversation({\n userMessage,\n assistantResponse,\n userId: this.userId ?? 'anonymous',\n sessionId: this.sessionId,\n });\n }\n\n async getSystemPrompt(\n basePrompt: string,\n query: string,\n options?: { maxContextTokens?: number }\n ): Promise<string> {\n const context = await this.client.getContext(query, {\n maxTokens: options?.maxContextTokens ?? 2000,\n userId: this.userId,\n });\n\n return buildSystemPromptWithContext(basePrompt, context);\n }\n\n async getStats() {\n return this.client.getStats();\n }\n}\n"]}
|
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
|
+
import { CilowClient } from '../client.mjs';
|
|
5
|
+
import { CilowWebSocket } from '../websocket.mjs';
|
|
6
|
+
import { CilowConfig, WebSocketConfig, CreateMemoryOptions, Memory, SearchResult, CilowEvent, MemoryStats } from '../types.mjs';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Cilow context value
|
|
10
|
+
*/
|
|
11
|
+
interface CilowContextValue {
|
|
12
|
+
/** Cilow client instance */
|
|
13
|
+
client: CilowClient;
|
|
14
|
+
/** WebSocket connection (if enabled) */
|
|
15
|
+
ws: CilowWebSocket | null;
|
|
16
|
+
/** Current user ID */
|
|
17
|
+
userId?: string;
|
|
18
|
+
/** Current session ID */
|
|
19
|
+
sessionId?: string;
|
|
20
|
+
/** Set user ID */
|
|
21
|
+
setUserId: (userId: string) => void;
|
|
22
|
+
/** Set session ID */
|
|
23
|
+
setSessionId: (sessionId: string) => void;
|
|
24
|
+
/** Whether WebSocket is connected */
|
|
25
|
+
isConnected: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Props for CilowProvider
|
|
29
|
+
*/
|
|
30
|
+
interface CilowProviderProps extends CilowConfig, Partial<WebSocketConfig> {
|
|
31
|
+
/** React children */
|
|
32
|
+
children: ReactNode;
|
|
33
|
+
/** Initial user ID */
|
|
34
|
+
userId?: string;
|
|
35
|
+
/** Initial session ID */
|
|
36
|
+
sessionId?: string;
|
|
37
|
+
/** Enable WebSocket connection */
|
|
38
|
+
enableWebSocket?: boolean;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* CilowProvider - Context provider for Cilow SDK
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* function App() {
|
|
46
|
+
* return (
|
|
47
|
+
* <CilowProvider
|
|
48
|
+
* apiUrl="https://api.cilow.ai"
|
|
49
|
+
* apiKey="your-key"
|
|
50
|
+
* userId="user-123"
|
|
51
|
+
* enableWebSocket={true}
|
|
52
|
+
* >
|
|
53
|
+
* <YourApp />
|
|
54
|
+
* </CilowProvider>
|
|
55
|
+
* );
|
|
56
|
+
* }
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
declare function CilowProvider({ children, userId: initialUserId, sessionId: initialSessionId, enableWebSocket, ...config }: CilowProviderProps): react_jsx_runtime.JSX.Element;
|
|
60
|
+
/**
|
|
61
|
+
* Hook to access Cilow context
|
|
62
|
+
*/
|
|
63
|
+
declare function useCilow(): CilowContextValue;
|
|
64
|
+
/**
|
|
65
|
+
* State for useMemory hook
|
|
66
|
+
*/
|
|
67
|
+
interface UseMemoryState {
|
|
68
|
+
/** Store a new memory */
|
|
69
|
+
remember: (content: string, options?: CreateMemoryOptions) => Promise<string>;
|
|
70
|
+
/** Delete memories */
|
|
71
|
+
forget: (filter: {
|
|
72
|
+
memoryId?: string;
|
|
73
|
+
tags?: string[];
|
|
74
|
+
}) => Promise<number>;
|
|
75
|
+
/** Get a memory by ID */
|
|
76
|
+
getMemory: (memoryId: string) => Promise<Memory>;
|
|
77
|
+
/** Loading state */
|
|
78
|
+
isLoading: boolean;
|
|
79
|
+
/** Error state */
|
|
80
|
+
error: Error | null;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* useMemory - Hook for memory CRUD operations
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```typescript
|
|
87
|
+
* function MyComponent() {
|
|
88
|
+
* const { remember, forget, isLoading, error } = useMemory();
|
|
89
|
+
*
|
|
90
|
+
* const handleSave = async () => {
|
|
91
|
+
* await remember("Important information", { tags: ["important"] });
|
|
92
|
+
* };
|
|
93
|
+
*
|
|
94
|
+
* const handleDelete = async (memoryId: string) => {
|
|
95
|
+
* await forget({ memoryId });
|
|
96
|
+
* };
|
|
97
|
+
*
|
|
98
|
+
* return <div>...</div>;
|
|
99
|
+
* }
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
declare function useMemory(): UseMemoryState;
|
|
103
|
+
/**
|
|
104
|
+
* State for useRecall hook
|
|
105
|
+
*/
|
|
106
|
+
interface UseRecallState {
|
|
107
|
+
/** Search results */
|
|
108
|
+
data: SearchResult[];
|
|
109
|
+
/** Execute search */
|
|
110
|
+
search: (query: string, options?: {
|
|
111
|
+
limit?: number;
|
|
112
|
+
tags?: string[];
|
|
113
|
+
}) => Promise<void>;
|
|
114
|
+
/** Clear results */
|
|
115
|
+
clear: () => void;
|
|
116
|
+
/** Loading state */
|
|
117
|
+
isLoading: boolean;
|
|
118
|
+
/** Error state */
|
|
119
|
+
error: Error | null;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* useRecall - Hook for searching memories
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```typescript
|
|
126
|
+
* function SearchComponent() {
|
|
127
|
+
* const { data, search, isLoading, error } = useRecall();
|
|
128
|
+
* const [query, setQuery] = useState('');
|
|
129
|
+
*
|
|
130
|
+
* const handleSearch = () => {
|
|
131
|
+
* search(query, { limit: 10 });
|
|
132
|
+
* };
|
|
133
|
+
*
|
|
134
|
+
* return (
|
|
135
|
+
* <div>
|
|
136
|
+
* <input value={query} onChange={e => setQuery(e.target.value)} />
|
|
137
|
+
* <button onClick={handleSearch} disabled={isLoading}>Search</button>
|
|
138
|
+
* {data.map(result => (
|
|
139
|
+
* <div key={result.memory.id}>
|
|
140
|
+
* <p>{result.memory.content}</p>
|
|
141
|
+
* <span>Score: {result.score}</span>
|
|
142
|
+
* </div>
|
|
143
|
+
* ))}
|
|
144
|
+
* </div>
|
|
145
|
+
* );
|
|
146
|
+
* }
|
|
147
|
+
* ```
|
|
148
|
+
*/
|
|
149
|
+
declare function useRecall(): UseRecallState;
|
|
150
|
+
/**
|
|
151
|
+
* Options for useMemorySubscription
|
|
152
|
+
*/
|
|
153
|
+
interface UseMemorySubscriptionOptions {
|
|
154
|
+
/** Filter by user ID */
|
|
155
|
+
userId?: string;
|
|
156
|
+
/** Filter by session ID */
|
|
157
|
+
sessionId?: string;
|
|
158
|
+
/** Filter by tags */
|
|
159
|
+
tags?: string[];
|
|
160
|
+
/** Event types to subscribe to */
|
|
161
|
+
eventTypes?: ('memory.created' | 'memory.updated' | 'memory.deleted')[];
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* State for useMemorySubscription hook
|
|
165
|
+
*/
|
|
166
|
+
interface UseMemorySubscriptionState {
|
|
167
|
+
/** Latest event */
|
|
168
|
+
latestEvent: CilowEvent | null;
|
|
169
|
+
/** All events received */
|
|
170
|
+
events: CilowEvent[];
|
|
171
|
+
/** Whether connected */
|
|
172
|
+
isConnected: boolean;
|
|
173
|
+
/** Clear events */
|
|
174
|
+
clearEvents: () => void;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* useMemorySubscription - Hook for real-time memory updates
|
|
178
|
+
*
|
|
179
|
+
* @example
|
|
180
|
+
* ```typescript
|
|
181
|
+
* function LiveMemories() {
|
|
182
|
+
* const { latestEvent, events, isConnected } = useMemorySubscription({
|
|
183
|
+
* userId: 'user-123'
|
|
184
|
+
* });
|
|
185
|
+
*
|
|
186
|
+
* useEffect(() => {
|
|
187
|
+
* if (latestEvent?.type === 'memory.created') {
|
|
188
|
+
* console.log('New memory:', latestEvent.memory);
|
|
189
|
+
* }
|
|
190
|
+
* }, [latestEvent]);
|
|
191
|
+
*
|
|
192
|
+
* return (
|
|
193
|
+
* <div>
|
|
194
|
+
* <p>Status: {isConnected ? 'Connected' : 'Disconnected'}</p>
|
|
195
|
+
* <p>Events received: {events.length}</p>
|
|
196
|
+
* </div>
|
|
197
|
+
* );
|
|
198
|
+
* }
|
|
199
|
+
* ```
|
|
200
|
+
*/
|
|
201
|
+
declare function useMemorySubscription(options?: UseMemorySubscriptionOptions): UseMemorySubscriptionState;
|
|
202
|
+
/**
|
|
203
|
+
* useMemoryContext - Hook for getting AI context from memories
|
|
204
|
+
*
|
|
205
|
+
* @example
|
|
206
|
+
* ```typescript
|
|
207
|
+
* function ChatInput() {
|
|
208
|
+
* const { getContext, context, isLoading } = useMemoryContext();
|
|
209
|
+
*
|
|
210
|
+
* const handleSend = async (message: string) => {
|
|
211
|
+
* const ctx = await getContext(message);
|
|
212
|
+
*
|
|
213
|
+
* // Use ctx.context as system message or context
|
|
214
|
+
* await sendToAI(message, ctx.context);
|
|
215
|
+
* };
|
|
216
|
+
*
|
|
217
|
+
* return <input onSubmit={handleSend} />;
|
|
218
|
+
* }
|
|
219
|
+
* ```
|
|
220
|
+
*/
|
|
221
|
+
declare function useMemoryContext(): {
|
|
222
|
+
getContext: (query: string, options?: {
|
|
223
|
+
maxTokens?: number;
|
|
224
|
+
tags?: string[];
|
|
225
|
+
}) => Promise<{
|
|
226
|
+
context: string;
|
|
227
|
+
memoriesUsed: number;
|
|
228
|
+
}>;
|
|
229
|
+
context: string;
|
|
230
|
+
memoriesUsed: number;
|
|
231
|
+
clearContext: () => void;
|
|
232
|
+
isLoading: boolean;
|
|
233
|
+
error: Error | null;
|
|
234
|
+
};
|
|
235
|
+
/**
|
|
236
|
+
* useMemoryStats - Hook for memory statistics
|
|
237
|
+
*
|
|
238
|
+
* @example
|
|
239
|
+
* ```typescript
|
|
240
|
+
* function StatsPanel() {
|
|
241
|
+
* const { stats, refresh, isLoading } = useMemoryStats();
|
|
242
|
+
*
|
|
243
|
+
* return (
|
|
244
|
+
* <div>
|
|
245
|
+
* <p>Total memories: {stats?.totalMemories ?? 0}</p>
|
|
246
|
+
* <p>Hot: {stats?.hotMemories ?? 0}</p>
|
|
247
|
+
* <p>Warm: {stats?.warmMemories ?? 0}</p>
|
|
248
|
+
* <p>Cold: {stats?.coldMemories ?? 0}</p>
|
|
249
|
+
* <button onClick={refresh} disabled={isLoading}>Refresh</button>
|
|
250
|
+
* </div>
|
|
251
|
+
* );
|
|
252
|
+
* }
|
|
253
|
+
* ```
|
|
254
|
+
*/
|
|
255
|
+
declare function useMemoryStats(): {
|
|
256
|
+
stats: MemoryStats | null;
|
|
257
|
+
refresh: () => Promise<void>;
|
|
258
|
+
isLoading: boolean;
|
|
259
|
+
error: Error | null;
|
|
260
|
+
};
|
|
261
|
+
/**
|
|
262
|
+
* useConversation - Hook for storing conversation turns
|
|
263
|
+
*
|
|
264
|
+
* @example
|
|
265
|
+
* ```typescript
|
|
266
|
+
* function Chat() {
|
|
267
|
+
* const { storeConversation, isLoading } = useConversation();
|
|
268
|
+
*
|
|
269
|
+
* const handleMessage = async (userMsg: string, aiResponse: string) => {
|
|
270
|
+
* // Store after getting AI response
|
|
271
|
+
* await storeConversation(userMsg, aiResponse);
|
|
272
|
+
* };
|
|
273
|
+
*
|
|
274
|
+
* return <ChatUI onMessage={handleMessage} />;
|
|
275
|
+
* }
|
|
276
|
+
* ```
|
|
277
|
+
*/
|
|
278
|
+
declare function useConversation(): {
|
|
279
|
+
storeConversation: (userMessage: string, assistantResponse: string, metadata?: Record<string, unknown>) => Promise<string>;
|
|
280
|
+
storedCount: number;
|
|
281
|
+
isLoading: boolean;
|
|
282
|
+
error: Error | null;
|
|
283
|
+
};
|
|
284
|
+
/**
|
|
285
|
+
* useDebounce - Debounce a value
|
|
286
|
+
*/
|
|
287
|
+
declare function useDebounce<T>(value: T, delay: number): T;
|
|
288
|
+
/**
|
|
289
|
+
* useDebouncedSearch - Hook for debounced memory search
|
|
290
|
+
*
|
|
291
|
+
* @example
|
|
292
|
+
* ```typescript
|
|
293
|
+
* function SearchWithDebounce() {
|
|
294
|
+
* const { query, setQuery, results, isLoading } = useDebouncedSearch({
|
|
295
|
+
* delay: 300
|
|
296
|
+
* });
|
|
297
|
+
*
|
|
298
|
+
* return (
|
|
299
|
+
* <div>
|
|
300
|
+
* <input
|
|
301
|
+
* value={query}
|
|
302
|
+
* onChange={e => setQuery(e.target.value)}
|
|
303
|
+
* placeholder="Search memories..."
|
|
304
|
+
* />
|
|
305
|
+
* {isLoading && <p>Searching...</p>}
|
|
306
|
+
* {results.map(r => (
|
|
307
|
+
* <div key={r.memory.id}>{r.memory.content}</div>
|
|
308
|
+
* ))}
|
|
309
|
+
* </div>
|
|
310
|
+
* );
|
|
311
|
+
* }
|
|
312
|
+
* ```
|
|
313
|
+
*/
|
|
314
|
+
declare function useDebouncedSearch(options?: {
|
|
315
|
+
delay?: number;
|
|
316
|
+
minLength?: number;
|
|
317
|
+
limit?: number;
|
|
318
|
+
}): {
|
|
319
|
+
query: string;
|
|
320
|
+
setQuery: react.Dispatch<react.SetStateAction<string>>;
|
|
321
|
+
results: SearchResult[];
|
|
322
|
+
clear: () => void;
|
|
323
|
+
isLoading: boolean;
|
|
324
|
+
error: Error | null;
|
|
325
|
+
};
|
|
326
|
+
|
|
327
|
+
export { type CilowContextValue, CilowProvider, type CilowProviderProps, type UseMemoryState, type UseMemorySubscriptionOptions, type UseMemorySubscriptionState, type UseRecallState, useCilow, useConversation, useDebounce, useDebouncedSearch, useMemory, useMemoryContext, useMemoryStats, useMemorySubscription, useRecall };
|