@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/types.ts","../src/websocket.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.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 SDK TypeScript Type Definitions\n *\n * Comprehensive type definitions for the Cilow memory system.\n */\n\n// =============================================================================\n// Core Memory Types\n// =============================================================================\n\n/**\n * Memory tier classification based on access frequency and recency\n */\nexport type MemoryTier = 'hot' | 'warm' | 'cold';\n\n/**\n * Memory status for lifecycle management\n */\nexport type MemoryStatus = 'active' | 'archived' | 'deleted';\n\n/**\n * Core memory entity representing a stored piece of information\n */\nexport interface Memory {\n /** Unique identifier for the memory */\n id: string;\n /** The content of the memory */\n content: string;\n /** Tags for categorization and filtering */\n tags: string[];\n /** User ID associated with this memory */\n userId?: string;\n /** Session ID for grouping related memories */\n sessionId?: string;\n /** Current tier classification */\n tier: MemoryTier;\n /** Memory status */\n status: MemoryStatus;\n /** Access count for prioritization */\n accessCount: number;\n /** Token count for the content */\n tokenCount: number;\n /** Embedding vector (if available) */\n embedding?: number[];\n /** Additional metadata */\n metadata: Record<string, unknown>;\n /** ISO timestamp of creation */\n createdAt: string;\n /** ISO timestamp of last update */\n updatedAt: string;\n /** ISO timestamp of last access */\n lastAccessedAt: string;\n}\n\n/**\n * Minimal memory representation for list operations\n */\nexport interface MemorySummary {\n id: string;\n content: string;\n tags: string[];\n tier: MemoryTier;\n createdAt: string;\n}\n\n/**\n * Options for creating a new memory\n */\nexport interface CreateMemoryOptions {\n /** Tags to apply to the memory */\n tags?: string[];\n /** User ID to associate */\n userId?: string;\n /** Session ID for grouping */\n sessionId?: string;\n /** Additional metadata */\n metadata?: Record<string, unknown>;\n /** Force a specific tier */\n tier?: MemoryTier;\n}\n\n/**\n * Options for updating a memory\n */\nexport interface UpdateMemoryOptions {\n /** New content */\n content?: string;\n /** New tags (replaces existing) */\n tags?: string[];\n /** Updated metadata (merged with existing) */\n metadata?: Record<string, unknown>;\n /** Force tier change */\n tier?: MemoryTier;\n}\n\n// =============================================================================\n// Search Types\n// =============================================================================\n\n/**\n * Search result containing a memory and its relevance score\n */\nexport interface SearchResult {\n /** The matching memory */\n memory: Memory;\n /** Relevance score (0.0 - 1.0) */\n score: number;\n /** Matched terms or phrases */\n matchedTerms?: string[];\n /** Highlighted content snippets */\n highlights?: string[];\n}\n\n/**\n * Search query parameters\n */\nexport interface SearchQuery {\n /** The search text */\n text: string;\n /** Maximum number of results */\n limit?: number;\n /** Minimum relevance score threshold (0.0 - 1.0) */\n minRelevance?: number;\n /** Filter by tags (AND logic) */\n tags?: string[];\n /** Filter by user ID */\n userId?: string;\n /** Filter by session ID */\n sessionId?: string;\n /** Filter by tier */\n tier?: MemoryTier;\n /** Filter by date range - start */\n createdAfter?: string;\n /** Filter by date range - end */\n createdBefore?: string;\n /** Include archived memories */\n includeArchived?: boolean;\n /** Search mode */\n mode?: 'semantic' | 'keyword' | 'hybrid';\n}\n\n/**\n * Advanced search options for complex queries\n */\nexport interface AdvancedSearchOptions extends SearchQuery {\n /** Boost recent memories */\n recencyBoost?: number;\n /** Boost frequently accessed memories */\n frequencyBoost?: number;\n /** Required tags (must have all) */\n requiredTags?: string[];\n /** Excluded tags (must not have any) */\n excludedTags?: string[];\n /** Metadata filters */\n metadataFilters?: Record<string, unknown>;\n /** Custom reranking function name */\n reranker?: string;\n}\n\n// =============================================================================\n// Graph Types\n// =============================================================================\n\n/**\n * Node in the memory knowledge graph\n */\nexport interface GraphNode {\n /** Unique node identifier */\n id: string;\n /** Node type/label */\n type: string;\n /** Display name */\n name: string;\n /** Node properties */\n properties: Record<string, unknown>;\n /** Associated memory IDs */\n memoryIds: string[];\n /** Creation timestamp */\n createdAt: string;\n /** Last update timestamp */\n updatedAt: string;\n}\n\n/**\n * Edge connecting two nodes in the graph\n */\nexport interface GraphEdge {\n /** Unique edge identifier */\n id: string;\n /** Source node ID */\n sourceId: string;\n /** Target node ID */\n targetId: string;\n /** Relationship type */\n type: string;\n /** Edge weight/strength */\n weight: number;\n /** Edge properties */\n properties: Record<string, unknown>;\n /** Creation timestamp */\n createdAt: string;\n}\n\n/**\n * Subgraph result for graph traversal queries\n */\nexport interface GraphSubgraph {\n /** Nodes in the subgraph */\n nodes: GraphNode[];\n /** Edges in the subgraph */\n edges: GraphEdge[];\n /** Central node ID (if applicable) */\n centerId?: string;\n}\n\n/**\n * Options for graph traversal\n */\nexport interface GraphTraversalOptions {\n /** Starting node ID */\n startNodeId: string;\n /** Maximum traversal depth */\n maxDepth?: number;\n /** Filter by relationship types */\n relationshipTypes?: string[];\n /** Maximum nodes to return */\n limit?: number;\n /** Traversal direction */\n direction?: 'outbound' | 'inbound' | 'both';\n}\n\n// =============================================================================\n// Statistics Types\n// =============================================================================\n\n/**\n * Memory system statistics\n */\nexport interface MemoryStats {\n /** Total number of memories */\n totalMemories: number;\n /** Number of hot tier memories */\n hotMemories: number;\n /** Number of warm tier memories */\n warmMemories: number;\n /** Number of cold tier memories */\n coldMemories: number;\n /** Total token count across all memories */\n totalTokens: number;\n /** Average tokens per memory */\n averageTokensPerMemory: number;\n /** Number of unique users */\n uniqueUsers: number;\n /** Number of unique sessions */\n uniqueSessions: number;\n /** Total number of tags */\n totalTags: number;\n /** Storage size in bytes */\n storageSizeBytes: number;\n /** Stats generation timestamp */\n generatedAt: string;\n}\n\n/**\n * Tag with usage count\n */\nexport interface TagCount {\n /** Tag name */\n tag: string;\n /** Usage count */\n count: number;\n}\n\n/**\n * User activity statistics\n */\nexport interface UserStats {\n /** User ID */\n userId: string;\n /** Number of memories */\n memoryCount: number;\n /** Total tokens used */\n totalTokens: number;\n /** Number of sessions */\n sessionCount: number;\n /** First activity timestamp */\n firstActivityAt: string;\n /** Last activity timestamp */\n lastActivityAt: string;\n}\n\n// =============================================================================\n// Event Types (WebSocket)\n// =============================================================================\n\n/**\n * Base event type\n */\nexport interface BaseEvent {\n /** Event type identifier */\n type: string;\n /** Event timestamp */\n timestamp: string;\n /** Correlation ID for tracking */\n correlationId?: string;\n}\n\n/**\n * Memory created event\n */\nexport interface MemoryCreatedEvent extends BaseEvent {\n type: 'memory.created';\n /** The created memory */\n memory: Memory;\n}\n\n/**\n * Memory updated event\n */\nexport interface MemoryUpdatedEvent extends BaseEvent {\n type: 'memory.updated';\n /** The updated memory */\n memory: Memory;\n /** Changed fields */\n changedFields: string[];\n}\n\n/**\n * Memory deleted event\n */\nexport interface MemoryDeletedEvent extends BaseEvent {\n type: 'memory.deleted';\n /** Deleted memory ID */\n memoryId: string;\n}\n\n/**\n * Memory tier changed event\n */\nexport interface MemoryTierChangedEvent extends BaseEvent {\n type: 'memory.tier_changed';\n /** Memory ID */\n memoryId: string;\n /** Previous tier */\n previousTier: MemoryTier;\n /** New tier */\n newTier: MemoryTier;\n}\n\n/**\n * Graph node created event\n */\nexport interface GraphNodeCreatedEvent extends BaseEvent {\n type: 'graph.node_created';\n /** The created node */\n node: GraphNode;\n}\n\n/**\n * Graph edge created event\n */\nexport interface GraphEdgeCreatedEvent extends BaseEvent {\n type: 'graph.edge_created';\n /** The created edge */\n edge: GraphEdge;\n}\n\n/**\n * Connection status event\n */\nexport interface ConnectionStatusEvent extends BaseEvent {\n type: 'connection.status';\n /** Connection status */\n status: 'connected' | 'disconnected' | 'reconnecting';\n /** Reason for status change */\n reason?: string;\n}\n\n/**\n * Union type of all events\n */\nexport type CilowEvent =\n | MemoryCreatedEvent\n | MemoryUpdatedEvent\n | MemoryDeletedEvent\n | MemoryTierChangedEvent\n | GraphNodeCreatedEvent\n | GraphEdgeCreatedEvent\n | ConnectionStatusEvent;\n\n// =============================================================================\n// API Request/Response Types\n// =============================================================================\n\n/**\n * Pagination parameters\n */\nexport interface PaginationParams {\n /** Number of items per page */\n limit?: number;\n /** Offset for pagination */\n offset?: number;\n /** Cursor for cursor-based pagination */\n cursor?: string;\n}\n\n/**\n * Paginated response wrapper\n */\nexport interface PaginatedResponse<T> {\n /** Items in this page */\n items: T[];\n /** Total count of items */\n total: number;\n /** Current offset */\n offset: number;\n /** Items per page */\n limit: number;\n /** Cursor for next page */\n nextCursor?: string;\n /** Whether there are more items */\n hasMore: boolean;\n}\n\n/**\n * API error response\n */\nexport interface ApiError {\n /** Error code */\n code: string;\n /** Human-readable error message */\n message: string;\n /** Additional error details */\n details?: Record<string, unknown>;\n /** Request ID for debugging */\n requestId?: string;\n}\n\n/**\n * Health check response\n */\nexport interface HealthCheck {\n /** Service status */\n status: 'healthy' | 'degraded' | 'unhealthy';\n /** Service version */\n version: string;\n /** Uptime in seconds */\n uptimeSeconds: number;\n /** Component statuses */\n components: {\n name: string;\n status: 'healthy' | 'degraded' | 'unhealthy';\n latencyMs?: number;\n }[];\n}\n\n// =============================================================================\n// Client Configuration Types\n// =============================================================================\n\n/**\n * Client configuration options\n */\nexport interface CilowConfig {\n /** Base URL of the Cilow API */\n apiUrl: string;\n /** API key for authentication */\n apiKey: string;\n /** Request timeout in milliseconds */\n timeout?: number;\n /** Number of retry attempts for failed requests */\n retries?: number;\n /** Custom headers to include in requests */\n headers?: Record<string, string>;\n /** Enable debug logging */\n debug?: boolean;\n}\n\n/**\n * WebSocket configuration options\n */\nexport interface WebSocketConfig {\n /** WebSocket URL (defaults to apiUrl with ws:// protocol) */\n wsUrl?: string;\n /** Reconnection attempts */\n reconnectAttempts?: number;\n /** Reconnection delay in milliseconds */\n reconnectDelay?: number;\n /** Heartbeat interval in milliseconds */\n heartbeatInterval?: number;\n /** Message queue size for offline buffering */\n messageQueueSize?: number;\n}\n\n/**\n * Combined configuration for full client\n */\nexport interface FullCilowConfig extends CilowConfig, WebSocketConfig {\n /** Default user ID for all operations */\n defaultUserId?: string;\n /** Default session ID */\n defaultSessionId?: string;\n /** Default tags to apply */\n defaultTags?: string[];\n}\n\n// =============================================================================\n// Framework Integration Types\n// =============================================================================\n\n/**\n * Context result for AI integrations\n */\nexport interface ContextResult {\n /** Formatted context string */\n context: string;\n /** Number of memories used */\n memoriesUsed: number;\n /** Estimated token count */\n estimatedTokens: number;\n /** Memory IDs included */\n memoryIds: string[];\n /** Search scores */\n scores: number[];\n}\n\n/**\n * Conversation turn for storing dialogues\n */\nexport interface ConversationTurn {\n /** User's message */\n userMessage: string;\n /** Assistant's response */\n assistantResponse: string;\n /** Session ID */\n sessionId?: string;\n /** Additional metadata */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Batch operation result\n */\nexport interface BatchResult<T> {\n /** Successful operations */\n succeeded: T[];\n /** Failed operations with errors */\n failed: {\n item: T;\n error: string;\n }[];\n /** Total operations attempted */\n total: number;\n}\n\n// =============================================================================\n// Type Guards\n// =============================================================================\n\n/**\n * Check if an event is a memory event\n */\nexport function isMemoryEvent(event: CilowEvent): event is MemoryCreatedEvent | MemoryUpdatedEvent | MemoryDeletedEvent {\n return event.type.startsWith('memory.');\n}\n\n/**\n * Check if an event is a graph event\n */\nexport function isGraphEvent(event: CilowEvent): event is GraphNodeCreatedEvent | GraphEdgeCreatedEvent {\n return event.type.startsWith('graph.');\n}\n\n/**\n * Check if an object is an API error\n */\nexport function isApiError(obj: unknown): obj is ApiError {\n return (\n typeof obj === 'object' &&\n obj !== null &&\n 'code' in obj &&\n 'message' in obj\n );\n}\n","/**\n * Cilow WebSocket Client\n *\n * Real-time connection for memory updates, graph changes, and event streaming.\n */\n\nimport type {\n CilowConfig,\n WebSocketConfig,\n CilowEvent,\n MemoryCreatedEvent,\n MemoryUpdatedEvent,\n MemoryDeletedEvent,\n MemoryTierChangedEvent,\n GraphNodeCreatedEvent,\n GraphEdgeCreatedEvent,\n ConnectionStatusEvent,\n} from './types';\n\n/**\n * WebSocket connection states\n */\nexport type ConnectionState = 'disconnected' | 'connecting' | 'connected' | 'reconnecting';\n\n/**\n * Event listener type\n */\nexport type EventListener<T extends CilowEvent = CilowEvent> = (event: T) => void;\n\n/**\n * Subscription filter options\n */\nexport interface SubscriptionFilter {\n /** Filter by user ID */\n userId?: string;\n /** Filter by session ID */\n sessionId?: string;\n /** Filter by tags */\n tags?: string[];\n /** Filter by event types */\n eventTypes?: string[];\n}\n\n/**\n * CilowWebSocket - Real-time WebSocket client for Cilow\n *\n * @example\n * ```typescript\n * const ws = new CilowWebSocket({\n * apiUrl: 'https://api.cilow.ai',\n * apiKey: 'your-key'\n * });\n *\n * // Subscribe to memory events\n * ws.on('memory.created', (event) => {\n * console.log('New memory:', event.memory);\n * });\n *\n * // Connect\n * await ws.connect();\n *\n * // Subscribe to specific user's events\n * ws.subscribe({ userId: 'user-123' });\n * ```\n */\nexport class CilowWebSocket {\n private ws: WebSocket | null = null;\n private readonly wsUrl: string;\n private readonly apiKey: string;\n private readonly reconnectAttempts: number;\n private readonly reconnectDelay: number;\n private readonly heartbeatInterval: number;\n private readonly messageQueueSize: number;\n\n private state: ConnectionState = 'disconnected';\n private reconnectCount = 0;\n private heartbeatTimer: ReturnType<typeof setInterval> | null = null;\n private reconnectTimer: ReturnType<typeof setTimeout> | null = null;\n private messageQueue: string[] = [];\n private subscriptions: SubscriptionFilter[] = [];\n\n private listeners: Map<string, Set<EventListener>> = new Map();\n private allListeners: Set<EventListener> = new Set();\n\n constructor(config: CilowConfig & WebSocketConfig) {\n // Convert HTTP URL to WebSocket URL\n const httpUrl = config.apiUrl.replace(/\\/$/, '');\n this.wsUrl = config.wsUrl ?? httpUrl.replace(/^http/, 'ws') + '/ws';\n this.apiKey = config.apiKey;\n\n this.reconnectAttempts = config.reconnectAttempts ?? 5;\n this.reconnectDelay = config.reconnectDelay ?? 1000;\n this.heartbeatInterval = config.heartbeatInterval ?? 30000;\n this.messageQueueSize = config.messageQueueSize ?? 100;\n }\n\n /**\n * Get current connection state\n */\n get connectionState(): ConnectionState {\n return this.state;\n }\n\n /**\n * Check if connected\n */\n get isConnected(): boolean {\n return this.state === 'connected';\n }\n\n /**\n * Connect to the WebSocket server\n */\n async connect(): Promise<void> {\n if (this.state === 'connected' || this.state === 'connecting') {\n return;\n }\n\n this.state = 'connecting';\n this.emitStatusEvent('connecting');\n\n return new Promise((resolve, reject) => {\n try {\n // Add authentication to URL\n const url = new URL(this.wsUrl);\n url.searchParams.set('token', this.apiKey);\n\n this.ws = new WebSocket(url.toString());\n\n this.ws.onopen = () => {\n this.state = 'connected';\n this.reconnectCount = 0;\n this.emitStatusEvent('connected');\n this.startHeartbeat();\n this.flushMessageQueue();\n this.resubscribe();\n resolve();\n };\n\n this.ws.onclose = (event) => {\n this.handleClose(event);\n };\n\n this.ws.onerror = (error) => {\n if (this.state === 'connecting') {\n reject(new Error('WebSocket connection failed'));\n }\n this.handleError(error);\n };\n\n this.ws.onmessage = (event) => {\n this.handleMessage(event);\n };\n } catch (error) {\n this.state = 'disconnected';\n reject(error);\n }\n });\n }\n\n /**\n * Disconnect from the WebSocket server\n */\n disconnect(): void {\n this.stopHeartbeat();\n this.clearReconnectTimer();\n\n if (this.ws) {\n this.ws.onclose = null; // Prevent reconnection\n this.ws.close(1000, 'Client disconnect');\n this.ws = null;\n }\n\n this.state = 'disconnected';\n this.emitStatusEvent('disconnected', 'Client initiated disconnect');\n }\n\n /**\n * Subscribe to events with optional filter\n */\n subscribe(filter?: SubscriptionFilter): void {\n if (filter) {\n this.subscriptions.push(filter);\n }\n\n if (this.isConnected) {\n this.sendSubscription(filter);\n }\n }\n\n /**\n * Unsubscribe from events\n */\n unsubscribe(filter?: SubscriptionFilter): void {\n if (filter) {\n this.subscriptions = this.subscriptions.filter(\n (s) =>\n s.userId !== filter.userId ||\n s.sessionId !== filter.sessionId ||\n JSON.stringify(s.tags) !== JSON.stringify(filter.tags)\n );\n } else {\n this.subscriptions = [];\n }\n\n if (this.isConnected) {\n this.send({\n type: 'unsubscribe',\n filter,\n });\n }\n }\n\n /**\n * Add event listener for specific event type\n */\n on<T extends CilowEvent>(eventType: T['type'], listener: EventListener<T>): () => void {\n if (!this.listeners.has(eventType)) {\n this.listeners.set(eventType, new Set());\n }\n this.listeners.get(eventType)!.add(listener as EventListener);\n\n // Return unsubscribe function\n return () => {\n this.listeners.get(eventType)?.delete(listener as EventListener);\n };\n }\n\n /**\n * Add listener for all events\n */\n onAny(listener: EventListener): () => void {\n this.allListeners.add(listener);\n return () => {\n this.allListeners.delete(listener);\n };\n }\n\n /**\n * Remove event listener\n */\n off<T extends CilowEvent>(eventType: T['type'], listener: EventListener<T>): void {\n this.listeners.get(eventType)?.delete(listener as EventListener);\n }\n\n /**\n * Remove all listeners for an event type\n */\n offAll(eventType?: string): void {\n if (eventType) {\n this.listeners.delete(eventType);\n } else {\n this.listeners.clear();\n this.allListeners.clear();\n }\n }\n\n /**\n * Listen for memory created events\n */\n onMemoryCreated(listener: EventListener<MemoryCreatedEvent>): () => void {\n return this.on('memory.created', listener);\n }\n\n /**\n * Listen for memory updated events\n */\n onMemoryUpdated(listener: EventListener<MemoryUpdatedEvent>): () => void {\n return this.on('memory.updated', listener);\n }\n\n /**\n * Listen for memory deleted events\n */\n onMemoryDeleted(listener: EventListener<MemoryDeletedEvent>): () => void {\n return this.on('memory.deleted', listener);\n }\n\n /**\n * Listen for memory tier changed events\n */\n onMemoryTierChanged(listener: EventListener<MemoryTierChangedEvent>): () => void {\n return this.on('memory.tier_changed', listener);\n }\n\n /**\n * Listen for graph node created events\n */\n onGraphNodeCreated(listener: EventListener<GraphNodeCreatedEvent>): () => void {\n return this.on('graph.node_created', listener);\n }\n\n /**\n * Listen for graph edge created events\n */\n onGraphEdgeCreated(listener: EventListener<GraphEdgeCreatedEvent>): () => void {\n return this.on('graph.edge_created', listener);\n }\n\n /**\n * Listen for connection status changes\n */\n onConnectionStatus(listener: EventListener<ConnectionStatusEvent>): () => void {\n return this.on('connection.status', listener);\n }\n\n /**\n * Wait for specific event (one-time)\n */\n once<T extends CilowEvent>(eventType: T['type'], timeout?: number): Promise<T> {\n return new Promise((resolve, reject) => {\n const timeoutId = timeout\n ? setTimeout(() => {\n unsubscribe();\n reject(new Error(`Timeout waiting for event: ${eventType}`));\n }, timeout)\n : null;\n\n const unsubscribe = this.on(eventType, (event) => {\n if (timeoutId) clearTimeout(timeoutId);\n unsubscribe();\n resolve(event as T);\n });\n });\n }\n\n // ===========================================================================\n // Private Methods\n // ===========================================================================\n\n private send(message: Record<string, unknown>): void {\n const data = JSON.stringify(message);\n\n if (this.isConnected && this.ws) {\n this.ws.send(data);\n } else {\n // Queue message for later\n if (this.messageQueue.length >= this.messageQueueSize) {\n this.messageQueue.shift(); // Remove oldest\n }\n this.messageQueue.push(data);\n }\n }\n\n private sendSubscription(filter?: SubscriptionFilter): void {\n this.send({\n type: 'subscribe',\n filter: filter ?? {},\n });\n }\n\n private resubscribe(): void {\n for (const filter of this.subscriptions) {\n this.sendSubscription(filter);\n }\n }\n\n private flushMessageQueue(): void {\n while (this.messageQueue.length > 0 && this.isConnected && this.ws) {\n const message = this.messageQueue.shift();\n if (message) {\n this.ws.send(message);\n }\n }\n }\n\n private handleMessage(event: MessageEvent): void {\n try {\n const data = JSON.parse(event.data) as CilowEvent;\n this.emit(data);\n } catch (error) {\n console.error('Failed to parse WebSocket message:', error);\n }\n }\n\n private handleClose(event: CloseEvent): void {\n this.stopHeartbeat();\n\n if (event.code === 1000) {\n // Normal close\n this.state = 'disconnected';\n this.emitStatusEvent('disconnected', 'Connection closed normally');\n return;\n }\n\n // Attempt reconnection\n if (this.reconnectCount < this.reconnectAttempts) {\n this.state = 'reconnecting';\n this.emitStatusEvent('reconnecting', `Reconnecting (attempt ${this.reconnectCount + 1}/${this.reconnectAttempts})`);\n this.scheduleReconnect();\n } else {\n this.state = 'disconnected';\n this.emitStatusEvent('disconnected', 'Max reconnection attempts reached');\n }\n }\n\n private handleError(_error: Event): void {\n // Errors are typically followed by close events\n // Just log for debugging\n console.error('WebSocket error occurred');\n }\n\n private scheduleReconnect(): void {\n this.clearReconnectTimer();\n\n const delay = this.reconnectDelay * Math.pow(2, this.reconnectCount);\n this.reconnectCount++;\n\n this.reconnectTimer = setTimeout(async () => {\n try {\n await this.connect();\n } catch {\n // Connection failed, will retry in handleClose\n }\n }, delay);\n }\n\n private clearReconnectTimer(): void {\n if (this.reconnectTimer) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = null;\n }\n }\n\n private startHeartbeat(): void {\n this.stopHeartbeat();\n this.heartbeatTimer = setInterval(() => {\n if (this.isConnected) {\n this.send({ type: 'ping' });\n }\n }, this.heartbeatInterval);\n }\n\n private stopHeartbeat(): void {\n if (this.heartbeatTimer) {\n clearInterval(this.heartbeatTimer);\n this.heartbeatTimer = null;\n }\n }\n\n private emit(event: CilowEvent): void {\n // Emit to type-specific listeners\n const typeListeners = this.listeners.get(event.type);\n if (typeListeners) {\n for (const listener of typeListeners) {\n try {\n listener(event);\n } catch (error) {\n console.error('Error in event listener:', error);\n }\n }\n }\n\n // Emit to all-event listeners\n for (const listener of this.allListeners) {\n try {\n listener(event);\n } catch (error) {\n console.error('Error in event listener:', error);\n }\n }\n }\n\n private emitStatusEvent(status: 'connected' | 'disconnected' | 'reconnecting' | 'connecting', reason?: string): void {\n const event: ConnectionStatusEvent = {\n type: 'connection.status',\n timestamp: new Date().toISOString(),\n status: status === 'connecting' ? 'reconnecting' : status,\n reason,\n };\n this.emit(event);\n }\n}\n\n/**\n * Create a WebSocket client instance (convenience function)\n */\nexport function createWebSocket(config: CilowConfig & WebSocketConfig): CilowWebSocket {\n return new CilowWebSocket(config);\n}\n","/**\n * @cilow/sdk - Complete TypeScript SDK for Cilow AI Memory Infrastructure\n *\n * Cilow provides a multi-tier memory system for AI applications, enabling\n * persistent context, semantic search, and knowledge graph capabilities.\n *\n * @packageDocumentation\n *\n * @example Basic Usage\n * ```typescript\n * import { Cilow } from '@cilow/sdk';\n *\n * const cilow = new Cilow({\n * apiUrl: 'https://api.cilow.ai',\n * apiKey: 'your-api-key'\n * });\n *\n * // Store a memory\n * await cilow.remember(\"User prefers dark mode\", { tags: [\"preference\"] });\n *\n * // Search memories\n * const memories = await cilow.recall(\"user preferences\");\n *\n * // Delete memories\n * await cilow.forget({ tags: [\"old\"] });\n * ```\n *\n * @example Vercel AI SDK Integration\n * ```typescript\n * import { createCilowTools } 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 * @example React Integration\n * ```typescript\n * import { CilowProvider, useMemory, useRecall } from '@cilow/sdk/react';\n *\n * function App() {\n * return (\n * <CilowProvider apiUrl=\"https://api.cilow.ai\" apiKey=\"your-key\">\n * <MemoryComponent />\n * </CilowProvider>\n * );\n * }\n * ```\n */\n\n// =============================================================================\n// Core Client\n// =============================================================================\n\nexport { CilowClient, CilowApiError, createClient } from './client';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type {\n // Core types\n Memory,\n MemorySummary,\n MemoryTier,\n MemoryStatus,\n CreateMemoryOptions,\n UpdateMemoryOptions,\n\n // Search types\n SearchResult,\n SearchQuery,\n AdvancedSearchOptions,\n\n // Graph types\n GraphNode,\n GraphEdge,\n GraphSubgraph,\n GraphTraversalOptions,\n\n // Statistics types\n MemoryStats,\n TagCount,\n UserStats,\n\n // Event types\n CilowEvent,\n MemoryCreatedEvent,\n MemoryUpdatedEvent,\n MemoryDeletedEvent,\n MemoryTierChangedEvent,\n GraphNodeCreatedEvent,\n GraphEdgeCreatedEvent,\n ConnectionStatusEvent,\n BaseEvent,\n\n // API types\n PaginationParams,\n PaginatedResponse,\n ApiError,\n HealthCheck,\n\n // Configuration types\n CilowConfig,\n WebSocketConfig,\n FullCilowConfig,\n\n // Integration types\n ContextResult,\n ConversationTurn,\n BatchResult,\n} from './types';\n\nexport { isMemoryEvent, isGraphEvent, isApiError } from './types';\n\n// =============================================================================\n// WebSocket\n// =============================================================================\n\nexport {\n CilowWebSocket,\n createWebSocket,\n type ConnectionState,\n type EventListener,\n type SubscriptionFilter,\n} from './websocket';\n\n// =============================================================================\n// Main Export - Cilow Class (Alias for CilowClient)\n// =============================================================================\n\nimport { CilowClient } from './client';\nimport type { CilowConfig, FullCilowConfig } from './types';\n\n/**\n * Cilow - Main entry point for the Cilow SDK\n *\n * This is an alias for CilowClient with a simpler name for common usage.\n *\n * @example\n * ```typescript\n * import { Cilow } from '@cilow/sdk';\n *\n * const cilow = new Cilow({\n * apiUrl: 'https://api.cilow.ai',\n * apiKey: 'your-api-key'\n * });\n *\n * // Simple API\n * await cilow.remember(\"User prefers dark mode\", { tags: [\"preference\"] });\n * const memories = await cilow.recall(\"user preferences\");\n * await cilow.forget({ tags: [\"old\"] });\n *\n * // Full API\n * const memory = await cilow.getMemory(\"mem-123\");\n * const stats = await cilow.getStats();\n * const context = await cilow.getContext(\"recent discussions\");\n * ```\n */\nexport class Cilow extends CilowClient {\n constructor(config: CilowConfig) {\n super(config);\n }\n}\n\n/**\n * Create a Cilow instance (convenience function)\n *\n * @param config - Configuration options\n * @returns Cilow client instance\n *\n * @example\n * ```typescript\n * import { createCilow } from '@cilow/sdk';\n *\n * const cilow = createCilow({\n * apiUrl: 'https://api.cilow.ai',\n * apiKey: 'your-api-key'\n * });\n * ```\n */\nexport function createCilow(config: CilowConfig): Cilow {\n return new Cilow(config);\n}\n\n// =============================================================================\n// Default Export\n// =============================================================================\n\nexport default Cilow;\n"]}
|