@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/openai.ts"],"names":[],"mappings":"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","file":"openai.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 OpenAI SDK\n *\n * Wraps the OpenAI SDK to automatically inject memory context into conversations.\n *\n * @example\n * ```typescript\n * import { createCilowOpenAI } from '@cilow/sdk/providers/openai';\n * import OpenAI from 'openai';\n *\n * const openai = new OpenAI();\n * const cilowOpenAI = createCilowOpenAI(openai, {\n * apiUrl: 'https://api.cilow.ai',\n * apiKey: 'cilow-key'\n * });\n *\n * const response = await cilowOpenAI.chat.completions.create({\n * model: 'gpt-4',\n * messages: [{ role: 'user', content: 'What do you remember?' }]\n * });\n * ```\n */\n\nimport type OpenAI from 'openai';\nimport { CilowClient } from '../client';\nimport type { CilowConfig, Memory, SearchResult } from '../types';\n\n/**\n * Configuration for Cilow OpenAI wrapper\n */\nexport interface CilowOpenAIConfig extends CilowConfig {\n /** Default user ID */\n defaultUserId?: string;\n /** Maximum tokens for memory context */\n maxContextTokens?: number;\n /** Minimum relevance score */\n minRelevance?: number;\n /** Whether to auto-store conversations */\n autoStore?: boolean;\n /** System prompt prefix for memory context */\n systemPromptPrefix?: string;\n}\n\n/**\n * Extended chat completion options\n */\nexport interface CilowChatCompletionOptions {\n /** User ID for memory operations */\n userId?: string;\n /** Session ID for grouping */\n sessionId?: string;\n /** Tags to filter memories */\n tags?: string[];\n /** Skip memory injection */\n skipMemory?: boolean;\n /** Skip storing this conversation */\n skipStore?: boolean;\n}\n\n/**\n * Chat completion response with memory metadata\n */\nexport interface CilowChatCompletionResponse {\n /** Original OpenAI response */\n completion: OpenAI.Chat.Completions.ChatCompletion;\n /** Memories used in context */\n memoriesUsed: number;\n /** Memory IDs included */\n memoryIds: string[];\n /** Stored conversation memory ID (if auto-store enabled) */\n storedMemoryId?: string;\n}\n\n/**\n * Wrapped OpenAI chat completions interface\n */\nexport interface CilowChatCompletions {\n create(\n params: OpenAI.Chat.Completions.ChatCompletionCreateParamsNonStreaming,\n options?: CilowChatCompletionOptions\n ): Promise<CilowChatCompletionResponse>;\n\n createStream(\n params: OpenAI.Chat.Completions.ChatCompletionCreateParamsStreaming,\n options?: CilowChatCompletionOptions\n ): Promise<{\n stream: AsyncIterable<OpenAI.Chat.Completions.ChatCompletionChunk>;\n memoriesUsed: number;\n memoryIds: string[];\n }>;\n}\n\n/**\n * Wrapped OpenAI chat interface\n */\nexport interface CilowChat {\n completions: CilowChatCompletions;\n}\n\n/**\n * Cilow-wrapped OpenAI client\n */\nexport interface CilowOpenAI {\n /** Wrapped chat interface with memory support */\n chat: CilowChat;\n /** Direct access to memory client */\n memory: CilowClient;\n /** Original OpenAI client */\n openai: OpenAI;\n\n /** Store a memory directly */\n remember(content: string, options?: { tags?: string[]; userId?: string }): Promise<string>;\n\n /** Search memories directly */\n recall(\n query: string,\n options?: { limit?: number; userId?: string }\n ): Promise<SearchResult[]>;\n\n /** Delete memories directly */\n forget(filter: { memoryId?: string; tags?: string[]; userId?: string }): Promise<number>;\n}\n\n/**\n * Create a Cilow-wrapped OpenAI client\n *\n * @param openai - OpenAI client instance\n * @param config - Cilow configuration\n * @returns Wrapped OpenAI client with memory capabilities\n *\n * @example\n * ```typescript\n * import OpenAI from 'openai';\n * import { createCilowOpenAI } from '@cilow/sdk/providers/openai';\n *\n * const openai = new OpenAI();\n * const cilowAI = createCilowOpenAI(openai, {\n * apiUrl: 'https://api.cilow.ai',\n * apiKey: 'cilow-key',\n * autoStore: true\n * });\n *\n * // Automatic memory injection\n * const { completion, memoriesUsed } = await cilowAI.chat.completions.create({\n * model: 'gpt-4',\n * messages: [\n * { role: 'user', content: 'Based on our previous discussions, what should I focus on?' }\n * ]\n * });\n *\n * console.log(`Used ${memoriesUsed} memories`);\n * console.log(completion.choices[0].message.content);\n * ```\n */\nexport function createCilowOpenAI(openai: OpenAI, config: CilowOpenAIConfig): CilowOpenAI {\n const cilowClient = new CilowClient(config);\n const defaultUserId = config.defaultUserId;\n const maxContextTokens = config.maxContextTokens ?? 4000;\n const minRelevance = config.minRelevance ?? 0.3;\n const autoStore = config.autoStore ?? false;\n const systemPromptPrefix =\n config.systemPromptPrefix ??\n 'The following is relevant context from memory. Use it when appropriate:';\n\n /**\n * Inject memory context into messages\n */\n async function injectMemoryContext(\n messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[],\n options?: CilowChatCompletionOptions\n ): Promise<{\n messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[];\n memoriesUsed: number;\n memoryIds: string[];\n }> {\n if (options?.skipMemory) {\n return { messages, memoriesUsed: 0, memoryIds: [] };\n }\n\n // Find the last user message to use as context query\n const lastUserMessage = [...messages]\n .reverse()\n .find((m): m is { role: 'user'; content: string } =>\n m.role === 'user' && typeof m.content === 'string'\n );\n\n if (!lastUserMessage) {\n return { messages, memoriesUsed: 0, memoryIds: [] };\n }\n\n // Get relevant context\n const context = await cilowClient.getContext(lastUserMessage.content, {\n maxTokens: maxContextTokens,\n userId: options?.userId ?? defaultUserId,\n tags: options?.tags,\n });\n\n if (!context.context || context.memoriesUsed === 0) {\n return { messages, memoriesUsed: 0, memoryIds: [] };\n }\n\n // Build memory context section\n const memoryContext = `${systemPromptPrefix}\\n\\n${context.context}`;\n\n // Find or create system message\n const messagesCopy = [...messages];\n const systemIndex = messagesCopy.findIndex((m) => m.role === 'system');\n\n if (systemIndex >= 0) {\n const existingSystem = messagesCopy[systemIndex];\n if (typeof existingSystem.content === 'string') {\n messagesCopy[systemIndex] = {\n ...existingSystem,\n content: `${existingSystem.content}\\n\\n---\\n\\n${memoryContext}`,\n };\n }\n } else {\n messagesCopy.unshift({\n role: 'system',\n content: memoryContext,\n });\n }\n\n return {\n messages: messagesCopy,\n memoriesUsed: context.memoriesUsed,\n memoryIds: context.memoryIds,\n };\n }\n\n /**\n * Store conversation after completion\n */\n async function storeConversation(\n userMessage: string,\n assistantResponse: string,\n options?: CilowChatCompletionOptions\n ): Promise<string | undefined> {\n if (options?.skipStore || !autoStore) {\n return undefined;\n }\n\n return cilowClient.storeConversation({\n userMessage,\n assistantResponse,\n userId: options?.userId ?? defaultUserId ?? 'anonymous',\n sessionId: options?.sessionId,\n });\n }\n\n const chatCompletions: CilowChatCompletions = {\n async create(\n params: OpenAI.Chat.Completions.ChatCompletionCreateParamsNonStreaming,\n options?: CilowChatCompletionOptions\n ): Promise<CilowChatCompletionResponse> {\n // Inject memory context\n const { messages, memoriesUsed, memoryIds } = await injectMemoryContext(\n params.messages,\n options\n );\n\n // Call OpenAI\n const completion = await openai.chat.completions.create({\n ...params,\n messages,\n });\n\n // Auto-store conversation if enabled\n let storedMemoryId: string | undefined;\n const lastUserMessage = [...params.messages]\n .reverse()\n .find((m): m is { role: 'user'; content: string } =>\n m.role === 'user' && typeof m.content === 'string'\n );\n const assistantResponse = completion.choices[0]?.message?.content;\n\n if (lastUserMessage && assistantResponse) {\n storedMemoryId = await storeConversation(\n lastUserMessage.content,\n assistantResponse,\n options\n );\n }\n\n return {\n completion,\n memoriesUsed,\n memoryIds,\n storedMemoryId,\n };\n },\n\n async createStream(\n params: OpenAI.Chat.Completions.ChatCompletionCreateParamsStreaming,\n options?: CilowChatCompletionOptions\n ): Promise<{\n stream: AsyncIterable<OpenAI.Chat.Completions.ChatCompletionChunk>;\n memoriesUsed: number;\n memoryIds: string[];\n }> {\n // Inject memory context\n const { messages, memoriesUsed, memoryIds } = await injectMemoryContext(\n params.messages,\n options\n );\n\n // Call OpenAI with streaming\n const stream = await openai.chat.completions.create({\n ...params,\n messages,\n stream: true,\n });\n\n return {\n stream: stream as AsyncIterable<OpenAI.Chat.Completions.ChatCompletionChunk>,\n memoriesUsed,\n memoryIds,\n };\n },\n };\n\n return {\n chat: {\n completions: chatCompletions,\n },\n memory: cilowClient,\n openai,\n\n async remember(content: string, options?: { tags?: string[]; userId?: string }) {\n return cilowClient.remember(content, {\n tags: options?.tags,\n userId: options?.userId ?? defaultUserId,\n });\n },\n\n async recall(query: string, options?: { limit?: number; userId?: string }) {\n return cilowClient.recall(query, {\n limit: options?.limit,\n userId: options?.userId ?? defaultUserId,\n });\n },\n\n async forget(filter: { memoryId?: string; tags?: string[]; userId?: string }) {\n return cilowClient.forget({\n ...filter,\n userId: filter.userId ?? defaultUserId,\n });\n },\n };\n}\n\n/**\n * OpenAI function definitions for Cilow memory tools\n *\n * These can be used with OpenAI's function calling feature.\n *\n * @example\n * ```typescript\n * const completion = await openai.chat.completions.create({\n * model: 'gpt-4',\n * messages: [...],\n * functions: cilowFunctions,\n * function_call: 'auto'\n * });\n * ```\n */\nexport const cilowFunctions: OpenAI.Chat.Completions.ChatCompletionCreateParams.Function[] = [\n {\n name: 'search_memories',\n description: 'Search through stored memories using semantic similarity',\n parameters: {\n type: 'object',\n properties: {\n query: {\n type: 'string',\n description: 'The search query to find relevant memories',\n },\n limit: {\n type: 'number',\n description: 'Maximum number of results (default: 10)',\n },\n tags: {\n type: 'array',\n items: { type: 'string' },\n description: 'Filter by specific tags',\n },\n },\n required: ['query'],\n },\n },\n {\n name: 'store_memory',\n description: 'Store a new memory for future retrieval',\n parameters: {\n type: 'object',\n properties: {\n content: {\n type: 'string',\n description: 'The content to remember',\n },\n tags: {\n type: 'array',\n items: { type: 'string' },\n description: 'Tags to categorize the memory',\n },\n },\n required: ['content'],\n },\n },\n {\n name: 'delete_memory',\n description: 'Delete memories by ID or filter criteria',\n parameters: {\n type: 'object',\n properties: {\n memoryId: {\n type: 'string',\n description: 'Specific memory ID to delete',\n },\n tags: {\n type: 'array',\n items: { type: 'string' },\n description: 'Delete memories with these tags',\n },\n },\n },\n },\n];\n\n/**\n * Execute a Cilow function call from OpenAI\n *\n * @param client - Cilow client instance\n * @param functionName - The function name from OpenAI\n * @param args - Function arguments as parsed JSON\n * @param userId - Optional user ID\n * @returns Function result\n */\nexport async function executeCilowFunction(\n client: CilowClient,\n functionName: string,\n args: Record<string, unknown>,\n userId?: string\n): Promise<unknown> {\n switch (functionName) {\n case 'search_memories':\n return client.recall(args.query as string, {\n limit: args.limit as number | undefined,\n tags: args.tags as string[] | undefined,\n userId,\n });\n\n case 'store_memory':\n return client.remember(args.content as string, {\n tags: args.tags as string[] | undefined,\n userId,\n });\n\n case 'delete_memory':\n return client.forget({\n memoryId: args.memoryId as string | undefined,\n tags: args.tags as string[] | undefined,\n userId,\n });\n\n default:\n throw new Error(`Unknown function: ${functionName}`);\n }\n}\n\n/**\n * Create a function executor for handling OpenAI function calls\n *\n * @example\n * ```typescript\n * const executor = createFunctionExecutor({\n * apiUrl: 'https://api.cilow.ai',\n * apiKey: 'cilow-key'\n * });\n *\n * // After getting a function call from OpenAI\n * const result = await executor(\n * functionCall.name,\n * JSON.parse(functionCall.arguments),\n * 'user-123'\n * );\n * ```\n */\nexport function createFunctionExecutor(config: CilowConfig) {\n const client = new CilowClient(config);\n\n return async function execute(\n functionName: string,\n args: Record<string, unknown>,\n userId?: string\n ): Promise<unknown> {\n return executeCilowFunction(client, functionName, args, userId);\n };\n}\n"]}
|