@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/langchain.ts"],"names":[],"mappings":"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","file":"langchain.js","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 LangChain\n *\n * Provides LangChain-compatible memory classes and retrievers.\n *\n * @example\n * ```typescript\n * import { CilowMemory, CilowRetriever } from '@cilow/sdk/providers/langchain';\n * import { ChatOpenAI } from '@langchain/openai';\n * import { ConversationChain } from 'langchain/chains';\n *\n * const memory = new CilowMemory({\n * apiUrl: 'https://api.cilow.ai',\n * apiKey: 'cilow-key',\n * userId: 'user-123'\n * });\n *\n * const chain = new ConversationChain({\n * llm: new ChatOpenAI(),\n * memory\n * });\n * ```\n */\n\nimport type {\n BaseMessage,\n HumanMessage,\n AIMessage,\n SystemMessage,\n} from '@langchain/core/messages';\nimport type { Document } from '@langchain/core/documents';\nimport { CilowClient } from '../client';\nimport type { CilowConfig, Memory, SearchResult } from '../types';\n\n/**\n * Configuration for Cilow LangChain memory\n */\nexport interface CilowMemoryConfig extends CilowConfig {\n /** User ID for memory operations */\n userId?: string;\n /** Session ID for grouping conversations */\n sessionId?: string;\n /** Memory key for the conversation history */\n memoryKey?: string;\n /** Input key for user messages */\n inputKey?: string;\n /** Output key for AI responses */\n outputKey?: string;\n /** Whether to return messages as chat messages or string */\n returnMessages?: boolean;\n /** Maximum number of memories to include in context */\n maxMemories?: number;\n /** Minimum relevance score */\n minRelevance?: number;\n}\n\n/**\n * Memory variables returned by the memory class\n */\nexport interface MemoryVariables {\n [key: string]: string | BaseMessage[];\n}\n\n/**\n * Input values for saving context\n */\nexport interface InputValues {\n [key: string]: unknown;\n}\n\n/**\n * Output values from the model\n */\nexport interface OutputValues {\n [key: string]: unknown;\n}\n\n/**\n * CilowMemory - LangChain-compatible memory class\n *\n * Implements the BaseChatMemory interface for use with LangChain chains.\n *\n * @example\n * ```typescript\n * import { CilowMemory } from '@cilow/sdk/providers/langchain';\n * import { ConversationChain } from 'langchain/chains';\n * import { ChatOpenAI } from '@langchain/openai';\n *\n * const memory = new CilowMemory({\n * apiUrl: 'https://api.cilow.ai',\n * apiKey: 'cilow-key',\n * userId: 'user-123',\n * sessionId: 'session-abc'\n * });\n *\n * const chain = new ConversationChain({\n * llm: new ChatOpenAI(),\n * memory\n * });\n *\n * const response = await chain.call({\n * input: 'What did we discuss last time?'\n * });\n * ```\n */\nexport class CilowMemory {\n private client: CilowClient;\n private userId?: string;\n private sessionId?: string;\n private memoryKey: string;\n private inputKey: string;\n private outputKey: string;\n private returnMessages: boolean;\n private maxMemories: number;\n private minRelevance: number;\n\n /** Memory keys for LangChain compatibility */\n public memoryKeys: string[];\n\n constructor(config: CilowMemoryConfig) {\n this.client = new CilowClient(config);\n this.userId = config.userId;\n this.sessionId = config.sessionId;\n this.memoryKey = config.memoryKey ?? 'history';\n this.inputKey = config.inputKey ?? 'input';\n this.outputKey = config.outputKey ?? 'output';\n this.returnMessages = config.returnMessages ?? true;\n this.maxMemories = config.maxMemories ?? 10;\n this.minRelevance = config.minRelevance ?? 0.3;\n this.memoryKeys = [this.memoryKey];\n }\n\n /**\n * Load memory variables based on input\n */\n async loadMemoryVariables(values: InputValues): Promise<MemoryVariables> {\n // Get the input to use as context query\n const input = values[this.inputKey];\n const query = typeof input === 'string' ? input : JSON.stringify(input);\n\n // Search for relevant memories\n const results = await this.client.recall(query, {\n limit: this.maxMemories,\n minRelevance: this.minRelevance,\n userId: this.userId,\n });\n\n if (this.returnMessages) {\n const messages = this.resultsToMessages(results);\n return { [this.memoryKey]: messages };\n } else {\n const history = this.resultsToString(results);\n return { [this.memoryKey]: history };\n }\n }\n\n /**\n * Save context from a conversation turn\n */\n async saveContext(inputValues: InputValues, outputValues: OutputValues): Promise<void> {\n const input = inputValues[this.inputKey];\n const output = outputValues[this.outputKey];\n\n const userMessage = typeof input === 'string' ? input : JSON.stringify(input);\n const assistantMessage = typeof output === 'string' ? output : JSON.stringify(output);\n\n await this.client.storeConversation({\n userMessage,\n assistantResponse: assistantMessage,\n userId: this.userId ?? 'anonymous',\n sessionId: this.sessionId,\n });\n }\n\n /**\n * Clear memory for the current session\n */\n async clear(): Promise<void> {\n if (this.sessionId) {\n await this.client.forget({\n sessionId: this.sessionId,\n });\n } else if (this.userId) {\n await this.client.forget({\n userId: this.userId,\n tags: ['conversation'],\n });\n }\n }\n\n /**\n * Convert search results to LangChain messages\n */\n private resultsToMessages(results: SearchResult[]): BaseMessage[] {\n const messages: BaseMessage[] = [];\n\n for (const result of results) {\n const content = result.memory.content;\n\n // Parse conversation format\n if (content.includes('User:') && content.includes('Assistant:')) {\n const [userPart, assistantPart] = content.split('\\n\\nAssistant:');\n const userMessage = userPart.replace('User:', '').trim();\n const assistantMessage = assistantPart?.trim() ?? '';\n\n // Create message objects (would need actual imports in real usage)\n messages.push({\n _getType: () => 'human',\n content: userMessage,\n } as unknown as BaseMessage);\n\n if (assistantMessage) {\n messages.push({\n _getType: () => 'ai',\n content: assistantMessage,\n } as unknown as BaseMessage);\n }\n } else {\n // Treat as system/context message\n messages.push({\n _getType: () => 'system',\n content: content,\n } as unknown as BaseMessage);\n }\n }\n\n return messages;\n }\n\n /**\n * Convert search results to string history\n */\n private resultsToString(results: SearchResult[]): string {\n return results\n .map((r, i) => `[Memory ${i + 1} - Relevance: ${(r.score * 100).toFixed(0)}%]\\n${r.memory.content}`)\n .join('\\n\\n');\n }\n\n /**\n * Set user ID\n */\n setUserId(userId: string): void {\n this.userId = userId;\n }\n\n /**\n * Set session ID\n */\n setSessionId(sessionId: string): void {\n this.sessionId = sessionId;\n }\n}\n\n/**\n * Configuration for Cilow retriever\n */\nexport interface CilowRetrieverConfig extends CilowConfig {\n /** User ID for filtering */\n userId?: string;\n /** Tags to filter by */\n tags?: string[];\n /** Number of documents to retrieve */\n topK?: number;\n /** Minimum relevance score */\n minRelevance?: number;\n}\n\n/**\n * CilowRetriever - LangChain-compatible retriever for RAG applications\n *\n * @example\n * ```typescript\n * import { CilowRetriever } from '@cilow/sdk/providers/langchain';\n * import { RetrievalQAChain } from 'langchain/chains';\n * import { ChatOpenAI } from '@langchain/openai';\n *\n * const retriever = new CilowRetriever({\n * apiUrl: 'https://api.cilow.ai',\n * apiKey: 'cilow-key',\n * topK: 5\n * });\n *\n * const chain = RetrievalQAChain.fromLLM(\n * new ChatOpenAI(),\n * retriever\n * );\n *\n * const answer = await chain.call({\n * query: 'What are the key points from our meetings?'\n * });\n * ```\n */\nexport class CilowRetriever {\n private client: CilowClient;\n private userId?: string;\n private tags?: string[];\n private topK: number;\n private minRelevance: number;\n\n constructor(config: CilowRetrieverConfig) {\n this.client = new CilowClient(config);\n this.userId = config.userId;\n this.tags = config.tags;\n this.topK = config.topK ?? 5;\n this.minRelevance = config.minRelevance ?? 0.3;\n }\n\n /**\n * Retrieve relevant documents for a query\n */\n async getRelevantDocuments(query: string): Promise<Document[]> {\n const results = await this.client.recall(query, {\n limit: this.topK,\n minRelevance: this.minRelevance,\n tags: this.tags,\n userId: this.userId,\n });\n\n return results.map((result) => this.resultToDocument(result));\n }\n\n /**\n * Alias for getRelevantDocuments (LangChain compatibility)\n */\n async invoke(query: string): Promise<Document[]> {\n return this.getRelevantDocuments(query);\n }\n\n /**\n * Convert search result to LangChain document\n */\n private resultToDocument(result: SearchResult): Document {\n return {\n pageContent: result.memory.content,\n metadata: {\n id: result.memory.id,\n score: result.score,\n tags: result.memory.tags,\n tier: result.memory.tier,\n createdAt: result.memory.createdAt,\n ...result.memory.metadata,\n },\n } as Document;\n }\n\n /**\n * Add documents to the memory store\n */\n async addDocuments(documents: Document[]): Promise<string[]> {\n const ids: string[] = [];\n\n for (const doc of documents) {\n const id = await this.client.remember(doc.pageContent, {\n tags: (doc.metadata?.tags as string[]) ?? [],\n userId: this.userId,\n metadata: doc.metadata,\n });\n ids.push(id);\n }\n\n return ids;\n }\n\n /**\n * Delete documents by IDs\n */\n async deleteDocuments(ids: string[]): Promise<void> {\n await this.client.batchDelete(ids);\n }\n\n /**\n * Set user ID for filtering\n */\n setUserId(userId: string): void {\n this.userId = userId;\n }\n\n /**\n * Set tags for filtering\n */\n setTags(tags: string[]): void {\n this.tags = tags;\n }\n}\n\n/**\n * CilowVectorStore - LangChain-compatible vector store\n *\n * @example\n * ```typescript\n * import { CilowVectorStore } from '@cilow/sdk/providers/langchain';\n *\n * const vectorStore = new CilowVectorStore({\n * apiUrl: 'https://api.cilow.ai',\n * apiKey: 'cilow-key'\n * });\n *\n * // Add documents\n * await vectorStore.addDocuments([\n * { pageContent: 'Meeting notes from Monday', metadata: { topic: 'standup' } },\n * { pageContent: 'Product requirements document', metadata: { topic: 'product' } }\n * ]);\n *\n * // Search\n * const results = await vectorStore.similaritySearch('standup notes', 5);\n * ```\n */\nexport class CilowVectorStore {\n private client: CilowClient;\n private userId?: string;\n private defaultTags: string[];\n\n constructor(config: CilowConfig & { userId?: string; defaultTags?: string[] }) {\n this.client = new CilowClient(config);\n this.userId = config.userId;\n this.defaultTags = config.defaultTags ?? [];\n }\n\n /**\n * Add documents to the vector store\n */\n async addDocuments(documents: Document[]): Promise<string[]> {\n const items = documents.map((doc) => ({\n content: doc.pageContent,\n options: {\n tags: [...this.defaultTags, ...((doc.metadata?.tags as string[]) ?? [])],\n userId: this.userId,\n metadata: doc.metadata,\n },\n }));\n\n return this.client.batchCreate(items);\n }\n\n /**\n * Add texts to the vector store\n */\n async addTexts(\n texts: string[],\n metadatas?: Record<string, unknown>[]\n ): Promise<string[]> {\n const documents = texts.map((text, i) => ({\n pageContent: text,\n metadata: metadatas?.[i] ?? {},\n })) as Document[];\n\n return this.addDocuments(documents);\n }\n\n /**\n * Similarity search by query text\n */\n async similaritySearch(query: string, k = 5): Promise<Document[]> {\n const results = await this.client.recall(query, {\n limit: k,\n userId: this.userId,\n });\n\n return results.map((r) => ({\n pageContent: r.memory.content,\n metadata: {\n id: r.memory.id,\n score: r.score,\n tags: r.memory.tags,\n ...r.memory.metadata,\n },\n })) as Document[];\n }\n\n /**\n * Similarity search with scores\n */\n async similaritySearchWithScore(\n query: string,\n k = 5\n ): Promise<[Document, number][]> {\n const results = await this.client.recall(query, {\n limit: k,\n userId: this.userId,\n });\n\n return results.map((r) => [\n {\n pageContent: r.memory.content,\n metadata: {\n id: r.memory.id,\n tags: r.memory.tags,\n ...r.memory.metadata,\n },\n } as Document,\n r.score,\n ]);\n }\n\n /**\n * Maximum marginal relevance search\n */\n async maxMarginalRelevanceSearch(\n query: string,\n options?: {\n k?: number;\n fetchK?: number;\n lambda?: number;\n }\n ): Promise<Document[]> {\n // Cilow handles MMR internally, just use similarity search\n return this.similaritySearch(query, options?.k ?? 5);\n }\n\n /**\n * Delete documents by IDs\n */\n async delete(ids: string[]): Promise<void> {\n await this.client.batchDelete(ids);\n }\n\n /**\n * Get retriever from this vector store\n */\n asRetriever(options?: { k?: number }): CilowRetriever {\n return new CilowRetriever({\n apiUrl: '', // Will be overridden\n apiKey: '', // Will be overridden\n userId: this.userId,\n topK: options?.k ?? 5,\n });\n }\n\n /**\n * Set user ID\n */\n setUserId(userId: string): void {\n this.userId = userId;\n }\n}\n\n/**\n * Create a callback handler for automatic memory storage\n *\n * @example\n * ```typescript\n * import { createMemoryCallbackHandler } from '@cilow/sdk/providers/langchain';\n *\n * const handler = createMemoryCallbackHandler({\n * apiUrl: 'https://api.cilow.ai',\n * apiKey: 'cilow-key',\n * userId: 'user-123'\n * });\n *\n * const chain = new ConversationChain({\n * llm: new ChatOpenAI(),\n * callbacks: [handler]\n * });\n * ```\n */\nexport function createMemoryCallbackHandler(config: CilowConfig & { userId?: string }) {\n const client = new CilowClient(config);\n const userId = config.userId ?? 'anonymous';\n\n let currentInput = '';\n\n return {\n handleChainStart(\n chain: { name: string },\n inputs: Record<string, unknown>\n ): void {\n // Capture input for later\n currentInput = typeof inputs.input === 'string'\n ? inputs.input\n : JSON.stringify(inputs.input);\n },\n\n async handleChainEnd(outputs: Record<string, unknown>): Promise<void> {\n const output = typeof outputs.output === 'string'\n ? outputs.output\n : typeof outputs.text === 'string'\n ? outputs.text\n : JSON.stringify(outputs);\n\n if (currentInput && output) {\n await client.storeConversation({\n userMessage: currentInput,\n assistantResponse: output,\n userId,\n });\n }\n\n currentInput = '';\n },\n\n handleChainError(_error: Error): void {\n currentInput = '';\n },\n };\n}\n"]}
|