{"version":3,"sources":["../../src/core/errors.ts","../../src/utils/response-adapter.ts","../../src/utils/http-client.ts","../../src/core/client.ts","../../src/react/context/MemoryIntelligenceProvider.tsx","../../src/react/hooks/useMemoryIntelligence.ts","../../src/core/types.ts"],"names":["createContext","useState","useEffect","jsx","useContext","useQuery","z"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * SDK-specific error classes\n */\n\nexport class MemoryIntelligenceError extends Error {\n  constructor(message: string) {\n    super(message);\n    this.name = \"MemoryIntelligenceError\";\n  }\n}\n\nexport class ConfigurationError extends MemoryIntelligenceError {\n  constructor(message: string) {\n    super(message);\n    this.name = \"ConfigurationError\";\n  }\n}\n\nexport class MemoryNotFoundError extends MemoryIntelligenceError {\n  constructor(memoryId: string) {\n    super(`Memory not found: ${memoryId}`);\n    this.name = \"MemoryNotFoundError\";\n  }\n}\n\nexport class DatabaseError extends MemoryIntelligenceError {\n  constructor(message: string, public originalError?: Error) {\n    super(message);\n    this.name = \"DatabaseError\";\n  }\n}\n\nexport class EmbeddingError extends MemoryIntelligenceError {\n  constructor(message: string, public originalError?: Error) {\n    super(message);\n    this.name = \"EmbeddingError\";\n  }\n}\n\nexport class ValidationError extends MemoryIntelligenceError {\n  constructor(message: string) {\n    super(message);\n    this.name = \"ValidationError\";\n  }\n}\n","/**\n * Response Adapter for Edge Function envelope format\n * Handles the transition between direct API responses and Edge Function wrapped responses\n */\n\nimport { EdgeFunctionResponse } from \"../core/types.js\";\nimport { ApiResponse } from \"./http-client.js\";\n\nexport interface UsageInfo {\n  tokens_used: number;\n  cost_usd: number;\n  cached: boolean;\n}\n\nexport interface TierInfo {\n  tier: string;\n  usage_remaining: number;\n}\n\nexport interface UnwrappedResponse<T> {\n  data?: T;\n  error?: {\n    message: string;\n    code?: string;\n  };\n  usage?: UsageInfo;\n  tier_info?: TierInfo;\n  status: number;\n}\n\n/**\n * Adapts Edge Function envelope response to SDK internal format\n * Edge Functions return: { success, data, error, usage, tier_info }\n * SDK expects: { data, error, status }\n */\nexport function adaptEdgeFunctionResponse<T>(\n  httpResponse: ApiResponse<EdgeFunctionResponse<T>>\n): UnwrappedResponse<T> {\n  // If HTTP request itself failed\n  if (httpResponse.error) {\n    return {\n      status: httpResponse.status,\n      error: httpResponse.error,\n    };\n  }\n\n  const envelope = httpResponse.data;\n\n  // If no envelope data (shouldn't happen)\n  if (!envelope) {\n    return {\n      status: httpResponse.status,\n      error: {\n        message: \"Empty response from server\",\n        code: \"EMPTY_RESPONSE\",\n      },\n    };\n  }\n\n  // If Edge Function returned an error\n  if (!envelope.success && envelope.error) {\n    return {\n      status: httpResponse.status,\n      error: envelope.error,\n      usage: envelope.usage,\n      tier_info: envelope.tier_info,\n    };\n  }\n\n  // Successful response\n  return {\n    status: httpResponse.status,\n    data: envelope.data,\n    usage: envelope.usage,\n    tier_info: envelope.tier_info,\n  };\n}\n\n/**\n * Checks if a response appears to be an Edge Function envelope\n */\nexport function isEdgeFunctionEnvelope(data: unknown): data is EdgeFunctionResponse<unknown> {\n  if (typeof data !== \"object\" || data === null) {\n    return false;\n  }\n\n  const obj = data as Record<string, unknown>;\n  return \"success\" in obj && typeof obj.success === \"boolean\";\n}\n\n/**\n * Smart adapter that detects response format and adapts accordingly\n * Supports both direct API responses and Edge Function envelopes\n */\nexport function adaptResponse<T>(\n  httpResponse: ApiResponse<T | EdgeFunctionResponse<T>>\n): UnwrappedResponse<T> {\n  // If HTTP request itself failed\n  if (httpResponse.error) {\n    return {\n      status: httpResponse.status,\n      error: httpResponse.error,\n    };\n  }\n\n  const responseData = httpResponse.data;\n\n  // Check if it's an Edge Function envelope\n  if (isEdgeFunctionEnvelope(responseData)) {\n    return adaptEdgeFunctionResponse({\n      status: httpResponse.status,\n      data: responseData as EdgeFunctionResponse<T>,\n    });\n  }\n\n  // Direct API response (legacy format)\n  return {\n    status: httpResponse.status,\n    data: responseData as T,\n  };\n}\n\n/**\n * Cache entry for offline fallback support\n */\nexport interface CacheEntry<T> {\n  data: T;\n  timestamp: number;\n  endpoint: string;\n  params?: Record<string, unknown>;\n}\n\n/**\n * Simple in-memory cache for offline fallback\n */\nexport class ResponseCache {\n  private cache: Map<string, CacheEntry<unknown>> = new Map();\n  private ttl: number;\n\n  constructor(ttlMs: number = 300000) { // Default 5 minutes\n    this.ttl = ttlMs;\n  }\n\n  private generateKey(endpoint: string, params?: Record<string, unknown>): string {\n    const paramStr = params ? JSON.stringify(params) : \"\";\n    return `${endpoint}:${paramStr}`;\n  }\n\n  set<T>(endpoint: string, data: T, params?: Record<string, unknown>): void {\n    const key = this.generateKey(endpoint, params);\n    this.cache.set(key, {\n      data,\n      timestamp: Date.now(),\n      endpoint,\n      params,\n    });\n  }\n\n  get<T>(endpoint: string, params?: Record<string, unknown>): T | null {\n    const key = this.generateKey(endpoint, params);\n    const entry = this.cache.get(key);\n\n    if (!entry) {\n      return null;\n    }\n\n    // Check if expired\n    if (Date.now() - entry.timestamp > this.ttl) {\n      this.cache.delete(key);\n      return null;\n    }\n\n    return entry.data as T;\n  }\n\n  clear(): void {\n    this.cache.clear();\n  }\n\n  /**\n   * Clean up expired entries\n   */\n  cleanup(): void {\n    const now = Date.now();\n    for (const [key, entry] of this.cache.entries()) {\n      if (now - entry.timestamp > this.ttl) {\n        this.cache.delete(key);\n      }\n    }\n  }\n}\n","/**\n * HTTP client for Lanonasis API\n * Supports Edge Function envelope format with caching for offline fallback\n */\n\nimport { ConfigurationError } from \"../core/errors.js\";\nimport { EdgeFunctionResponse, ProcessingMode } from \"../core/types.js\";\nimport { adaptResponse, ResponseCache, UsageInfo, TierInfo } from \"./response-adapter.js\";\n\nexport interface HttpClientConfig {\n  apiUrl: string;\n  apiKey?: string;\n  authToken?: string;\n  authType?: \"apiKey\" | \"bearer\";\n  allowMissingAuth?: boolean;\n  timeout?: number;\n  headers?: Record<string, string>;\n  processingMode?: ProcessingMode;\n  enableCache?: boolean;\n  cacheTTL?: number;\n}\n\nexport interface ApiResponse<T = any> {\n  data?: T;\n  error?: {\n    message: string;\n    code?: string;\n  };\n  status: number;\n}\n\nexport interface EnhancedApiResponse<T = any> extends ApiResponse<T> {\n  usage?: UsageInfo;\n  tier_info?: TierInfo;\n  fromCache?: boolean;\n}\n\nexport class HttpClient {\n  private apiUrl: string;\n  private apiKey: string | undefined;\n  private timeout: number;\n  private headers: Record<string, string>;\n  private processingMode: ProcessingMode;\n  private cache: ResponseCache | null;\n\n  constructor(config: HttpClientConfig) {\n    this.apiUrl = config.apiUrl.replace(/\\/$/, \"\"); // Remove trailing slash\n\n    // Determine auth type: explicit config, or infer from provided credentials\n    let authType: \"apiKey\" | \"bearer\";\n    if (config.authType) {\n      authType = config.authType;\n    } else if (config.apiKey) {\n      authType = \"apiKey\";\n    } else if (config.authToken) {\n      authType = \"bearer\";\n    } else if (config.allowMissingAuth) {\n      // Default to apiKey when no auth provided but missing auth is allowed\n      authType = \"apiKey\";\n    } else {\n      throw new ConfigurationError(\n        \"Authentication required: provide apiKey, authToken, or set allowMissingAuth to true\"\n      );\n    }\n\n    const allowMissingAuth = Boolean(config.allowMissingAuth);\n\n    if (authType === \"apiKey\") {\n      if (!config.apiKey && !allowMissingAuth) {\n        throw new ConfigurationError(\"API key is required when authType is 'apiKey'\");\n      }\n      if (config.apiKey && !config.apiKey.startsWith(\"lano_\")) {\n        throw new ConfigurationError(\n          \"Invalid API key format. API key should start with 'lano_'\"\n        );\n      }\n    } else if (!config.authToken && !allowMissingAuth) {\n      throw new ConfigurationError(\"Bearer token is required when authType is 'bearer'\");\n    }\n\n    this.apiKey = config.apiKey;\n    this.timeout = config.timeout || 30000;\n    this.processingMode = config.processingMode || \"api\";\n\n    const baseHeaders: Record<string, string> = {\n      \"Content-Type\": \"application/json\",\n      ...config.headers,\n    };\n\n    if (authType === \"apiKey\" && this.apiKey && !(\"X-API-Key\" in baseHeaders)) {\n      baseHeaders[\"X-API-Key\"] = this.apiKey;\n    }\n\n    if (authType === \"bearer\" && config.authToken && !(\"Authorization\" in baseHeaders)) {\n      baseHeaders[\"Authorization\"] = `Bearer ${config.authToken}`;\n    }\n\n    this.headers = baseHeaders;\n\n    // Initialize cache for offline-fallback mode\n    if (config.enableCache !== false && this.processingMode === \"offline-fallback\") {\n      this.cache = new ResponseCache(config.cacheTTL || 300000);\n    } else {\n      this.cache = null;\n    }\n  }\n\n  /**\n   * Get the current processing mode\n   */\n  getProcessingMode(): ProcessingMode {\n    return this.processingMode;\n  }\n\n  /**\n   * Check if cache is enabled\n   */\n  isCacheEnabled(): boolean {\n    return this.cache !== null;\n  }\n\n  /**\n   * Clear the response cache\n   */\n  clearCache(): void {\n    this.cache?.clear();\n  }\n\n  private async request<T>(\n    method: string,\n    endpoint: string,\n    data?: any\n  ): Promise<ApiResponse<T>> {\n    const url = `${this.apiUrl}${endpoint}`;\n    const controller = new AbortController();\n    const timeoutId = setTimeout(() => controller.abort(), this.timeout);\n\n    try {\n      const options: RequestInit = {\n        method,\n        headers: this.headers,\n        signal: controller.signal,\n      };\n\n      if (data && (method === \"POST\" || method === \"PUT\" || method === \"PATCH\")) {\n        options.body = JSON.stringify(data);\n      }\n\n      const response = await fetch(url, options);\n      clearTimeout(timeoutId);\n\n      const responseData = await response.json() as any;\n\n      if (!response.ok) {\n        const errorMessage =\n          responseData?.message ||\n          responseData?.error?.message ||\n          (typeof responseData?.error === \"string\" ? responseData.error : undefined) ||\n          \"Request failed\";\n        return {\n          status: response.status,\n          error: {\n            message: errorMessage,\n            code: responseData?.code || responseData?.error?.code,\n          },\n        };\n      }\n\n      return {\n        status: response.status,\n        data: responseData as T,\n      };\n    } catch (error) {\n      clearTimeout(timeoutId);\n\n      if (error instanceof Error) {\n        if (error.name === \"AbortError\") {\n          return {\n            status: 408,\n            error: {\n              message: `Request timeout after ${this.timeout}ms`,\n              code: \"TIMEOUT\",\n            },\n          };\n        }\n\n        return {\n          status: 0,\n          error: {\n            message: error.message,\n            code: \"NETWORK_ERROR\",\n          },\n        };\n      }\n\n      return {\n        status: 0,\n        error: {\n          message: \"Unknown error occurred\",\n          code: \"UNKNOWN_ERROR\",\n        },\n      };\n    }\n  }\n\n  /**\n   * Enhanced request that handles Edge Function envelope format\n   * and supports offline-fallback caching\n   */\n  private async enhancedRequest<T>(\n    method: string,\n    endpoint: string,\n    data?: any\n  ): Promise<EnhancedApiResponse<T>> {\n    const cacheKey = data ? JSON.stringify(data) : undefined;\n\n    // Try API request first\n    const rawResponse = await this.request<EdgeFunctionResponse<T> | T>(method, endpoint, data);\n\n    // Handle network errors with offline fallback\n    if (rawResponse.error?.code === \"NETWORK_ERROR\" || rawResponse.error?.code === \"TIMEOUT\") {\n      if (this.processingMode === \"offline-fallback\" && this.cache) {\n        const cached = this.cache.get<T>(endpoint, cacheKey ? JSON.parse(cacheKey) : undefined);\n        if (cached) {\n          return {\n            status: 200,\n            data: cached,\n            fromCache: true,\n          };\n        }\n      }\n      // No cache available, return original error\n      return {\n        status: rawResponse.status,\n        error: rawResponse.error,\n        fromCache: false,\n      };\n    }\n\n    // Adapt response (handles both direct and envelope formats)\n    const adapted = adaptResponse<T>(rawResponse);\n\n    // Cache successful responses for offline fallback\n    if (!adapted.error && adapted.data && this.cache) {\n      this.cache.set(endpoint, adapted.data, cacheKey ? JSON.parse(cacheKey) : undefined);\n    }\n\n    return {\n      status: adapted.status,\n      data: adapted.data,\n      error: adapted.error,\n      usage: adapted.usage,\n      tier_info: adapted.tier_info,\n      fromCache: false,\n    };\n  }\n\n  async get<T>(endpoint: string): Promise<ApiResponse<T>> {\n    return this.request<T>(\"GET\", endpoint);\n  }\n\n  async post<T>(endpoint: string, data?: any): Promise<ApiResponse<T>> {\n    return this.request<T>(\"POST\", endpoint, data);\n  }\n\n  async put<T>(endpoint: string, data?: any): Promise<ApiResponse<T>> {\n    return this.request<T>(\"PUT\", endpoint, data);\n  }\n\n  async patch<T>(endpoint: string, data?: any): Promise<ApiResponse<T>> {\n    return this.request<T>(\"PATCH\", endpoint, data);\n  }\n\n  async delete<T>(endpoint: string): Promise<ApiResponse<T>> {\n    return this.request<T>(\"DELETE\", endpoint);\n  }\n\n  // Enhanced methods with Edge Function envelope support\n\n  async getEnhanced<T>(endpoint: string): Promise<EnhancedApiResponse<T>> {\n    return this.enhancedRequest<T>(\"GET\", endpoint);\n  }\n\n  async postEnhanced<T>(endpoint: string, data?: any): Promise<EnhancedApiResponse<T>> {\n    return this.enhancedRequest<T>(\"POST\", endpoint, data);\n  }\n\n  async putEnhanced<T>(endpoint: string, data?: any): Promise<EnhancedApiResponse<T>> {\n    return this.enhancedRequest<T>(\"PUT\", endpoint, data);\n  }\n\n  async patchEnhanced<T>(endpoint: string, data?: any): Promise<EnhancedApiResponse<T>> {\n    return this.enhancedRequest<T>(\"PATCH\", endpoint, data);\n  }\n\n  async deleteEnhanced<T>(endpoint: string): Promise<EnhancedApiResponse<T>> {\n    return this.enhancedRequest<T>(\"DELETE\", endpoint);\n  }\n}\n","/**\n * Core Memory Intelligence Client\n * Supports API-first with offline-fallback capability\n */\n\nimport {\n  MemoryIntelligenceConfig,\n  AnalyzePatternsParams,\n  PatternAnalysis,\n  SuggestTagsParams,\n  TagSuggestionsResult,\n  FindRelatedParams,\n  RelatedMemoriesResult,\n  DetectDuplicatesParams,\n  DuplicatesResult,\n  ExtractInsightsParams,\n  InsightsResult,\n  HealthCheckParams,\n  MemoryHealth,\n  QueryMemoriesOptions,\n  MemoryEntry,\n  ProcessingMode,\n  MemoryTypeValue,\n  QueryScopeValue,\n} from \"./types.js\";\nimport {\n  PredictiveRecallParams,\n  PredictiveRecallResult,\n} from \"./prediction-types.js\";\nimport {\n  RecordBehaviorParams,\n  RecordBehaviorResult,\n  RecallBehaviorParams,\n  RecallBehaviorResult,\n  SuggestActionParams,\n  SuggestActionResult,\n  BehaviorPattern,\n} from \"./behavior-types.js\";\nimport { DatabaseError } from \"./errors.js\";\nimport { HttpClient } from \"../utils/http-client.js\";\nimport { UsageInfo, TierInfo } from \"../utils/response-adapter.js\";\n\nconst DEFAULT_API_URL = \"https://api.lanonasis.com/api/v1\";\n\ntype MemoryQueryContextPayload = {\n  organizationId?: string;\n  topicId?: string;\n  memoryTypes?: MemoryTypeValue[];\n  queryScope?: QueryScopeValue;\n};\n\nfunction appendQueryContext(\n  params: URLSearchParams,\n  context: MemoryQueryContextPayload\n): void {\n  if (context.organizationId) {\n    params.append(\"organization_id\", context.organizationId);\n  }\n\n  if (context.topicId) {\n    params.append(\"topic_id\", context.topicId);\n  }\n\n  if (context.queryScope) {\n    params.append(\"query_scope\", context.queryScope);\n  }\n\n  for (const memoryType of context.memoryTypes || []) {\n    params.append(\"memory_types\", memoryType);\n  }\n}\n\nexport interface IntelligenceResponse<T> {\n  data: T;\n  usage?: UsageInfo;\n  tier_info?: TierInfo;\n  fromCache?: boolean;\n}\n\nexport class MemoryIntelligenceClient {\n  private httpClient: HttpClient;\n  private defaultResponseFormat: \"json\" | \"markdown\";\n  private processingMode: ProcessingMode;\n\n  constructor(config: MemoryIntelligenceConfig) {\n    this.processingMode = config.processingMode || \"api\";\n    const authType = config.authType || (config.apiKey ? \"apiKey\" : \"bearer\");\n\n    this.httpClient = new HttpClient({\n      apiUrl: config.apiUrl || DEFAULT_API_URL,\n      apiKey: config.apiKey,\n      authToken: config.authToken,\n      authType,\n      allowMissingAuth: config.allowMissingAuth,\n      timeout: config.timeout,\n      headers: config.headers,\n      processingMode: this.processingMode,\n      enableCache: config.enableCache,\n      cacheTTL: config.cacheTTL,\n    });\n\n    this.defaultResponseFormat = config.responseFormat || \"markdown\";\n  }\n\n  /**\n   * Get the current processing mode\n   */\n  getProcessingMode(): ProcessingMode {\n    return this.processingMode;\n  }\n\n  /**\n   * Check if cache is enabled (for offline-fallback mode)\n   */\n  isCacheEnabled(): boolean {\n    return this.httpClient.isCacheEnabled();\n  }\n\n  /**\n   * Clear the response cache\n   */\n  clearCache(): void {\n    this.httpClient.clearCache();\n  }\n\n  /**\n   * Get HTTP client for direct API access\n   */\n  public getHttpClient(): HttpClient {\n    return this.httpClient;\n  }\n\n  /**\n   * Query memories from the API\n   */\n  public async queryMemories(\n    userId: string,\n    options: QueryMemoriesOptions = {}\n  ): Promise<MemoryEntry[]> {\n    const {\n      type,\n      limit = 100,\n      offset = 0,\n      organizationId,\n      topicId,\n      memoryTypes,\n      queryScope,\n    } = options;\n\n    const params = new URLSearchParams({\n      user_id: userId,\n      limit: limit.toString(),\n      offset: offset.toString(),\n    });\n\n    if (type) {\n      params.append(\"type\", type);\n    }\n\n    appendQueryContext(params, {\n      organizationId,\n      topicId,\n      memoryTypes,\n      queryScope,\n    });\n\n    const response = await this.httpClient.getEnhanced<{ memories: MemoryEntry[] }>(\n      `/intelligence/memories?${params.toString()}`\n    );\n\n    if (response.error) {\n      throw new DatabaseError(`Failed to query memories: ${response.error.message}`);\n    }\n\n    return response.data?.memories || [];\n  }\n\n  /**\n   * Analyze usage patterns and trends in memory collection\n   */\n  async analyzePatterns(params: AnalyzePatternsParams): Promise<IntelligenceResponse<PatternAnalysis>> {\n    const response = await this.httpClient.postEnhanced<PatternAnalysis>(\n      \"/intelligence/analyze-patterns\",\n      {\n        ...params,\n        responseFormat: params.responseFormat || this.defaultResponseFormat,\n      }\n    );\n\n    if (response.error) {\n      throw new DatabaseError(`Failed to analyze patterns: ${response.error.message}`);\n    }\n\n    return {\n      data: response.data!,\n      usage: response.usage,\n      tier_info: response.tier_info,\n      fromCache: response.fromCache,\n    };\n  }\n\n  /**\n   * Get AI-powered tag suggestions for a memory\n   */\n  async suggestTags(params: SuggestTagsParams): Promise<IntelligenceResponse<TagSuggestionsResult>> {\n    const response = await this.httpClient.postEnhanced<TagSuggestionsResult>(\n      \"/intelligence/suggest-tags\",\n      {\n        ...params,\n        responseFormat: params.responseFormat || this.defaultResponseFormat,\n      }\n    );\n\n    if (response.error) {\n      throw new DatabaseError(`Failed to suggest tags: ${response.error.message}`);\n    }\n\n    return {\n      data: response.data!,\n      usage: response.usage,\n      tier_info: response.tier_info,\n      fromCache: response.fromCache,\n    };\n  }\n\n  /**\n   * Find semantically related memories using vector similarity\n   */\n  async findRelated(params: FindRelatedParams): Promise<IntelligenceResponse<RelatedMemoriesResult>> {\n    const response = await this.httpClient.postEnhanced<RelatedMemoriesResult>(\n      \"/intelligence/find-related\",\n      {\n        ...params,\n        responseFormat: params.responseFormat || this.defaultResponseFormat,\n      }\n    );\n\n    if (response.error) {\n      throw new DatabaseError(`Failed to find related memories: ${response.error.message}`);\n    }\n\n    return {\n      data: response.data!,\n      usage: response.usage,\n      tier_info: response.tier_info,\n      fromCache: response.fromCache,\n    };\n  }\n\n  /**\n   * Detect potential duplicate memories\n   */\n  async detectDuplicates(params: DetectDuplicatesParams): Promise<IntelligenceResponse<DuplicatesResult>> {\n    const response = await this.httpClient.postEnhanced<DuplicatesResult>(\n      \"/intelligence/detect-duplicates\",\n      {\n        ...params,\n        responseFormat: params.responseFormat || this.defaultResponseFormat,\n      }\n    );\n\n    if (response.error) {\n      throw new DatabaseError(`Failed to detect duplicates: ${response.error.message}`);\n    }\n\n    return {\n      data: response.data!,\n      usage: response.usage,\n      tier_info: response.tier_info,\n      fromCache: response.fromCache,\n    };\n  }\n\n  /**\n   * Extract insights and patterns from memories\n   */\n  async extractInsights(params: ExtractInsightsParams): Promise<IntelligenceResponse<InsightsResult>> {\n    const response = await this.httpClient.postEnhanced<InsightsResult>(\n      \"/intelligence/extract-insights\",\n      {\n        ...params,\n        responseFormat: params.responseFormat || this.defaultResponseFormat,\n      }\n    );\n\n    if (response.error) {\n      throw new DatabaseError(`Failed to extract insights: ${response.error.message}`);\n    }\n\n    return {\n      data: response.data!,\n      usage: response.usage,\n      tier_info: response.tier_info,\n      fromCache: response.fromCache,\n    };\n  }\n\n  /**\n   * Check the health and organization quality of memories\n   */\n  async healthCheck(params: HealthCheckParams): Promise<IntelligenceResponse<MemoryHealth>> {\n    const response = await this.httpClient.postEnhanced<MemoryHealth>(\n      \"/intelligence/health-check\",\n      {\n        ...params,\n        responseFormat: params.responseFormat || this.defaultResponseFormat,\n      }\n    );\n\n    if (response.error) {\n      throw new DatabaseError(`Failed to check health: ${response.error.message}`);\n    }\n\n    return {\n      data: response.data!,\n      usage: response.usage,\n      tier_info: response.tier_info,\n      fromCache: response.fromCache,\n    };\n  }\n\n  /**\n   * Predictive Memory Recall - AI that anticipates what you need\n   *\n   * Uses a weighted scoring algorithm:\n   *   - Semantic similarity to current context (40%)\n   *   - Temporal relevance (recency decay curve) (30%)\n   *   - Usage frequency (20%)\n   *   - Serendipity factor (adjacent discoveries) (10%)\n   *\n   * @example\n   * ```typescript\n   * const result = await client.predictiveRecall({\n   *   userId: \"user-123\",\n   *   context: {\n   *     currentProject: \"Building dashboard components\",\n   *     recentTopics: [\"React\", \"performance\", \"hooks\"],\n   *     contextText: \"Optimizing render performance for data tables\"\n   *   },\n   *   limit: 5,\n   *   minConfidence: 50\n   * });\n   *\n   * for (const prediction of result.data.predictions) {\n   *   console.log(`[${prediction.confidence}%] ${prediction.title}`);\n   *   console.log(`  Reason: ${prediction.reason}`);\n   *   console.log(`  Action: ${prediction.suggestedAction}`);\n   * }\n   * ```\n   */\n  async predictiveRecall(\n    params: PredictiveRecallParams\n  ): Promise<IntelligenceResponse<PredictiveRecallResult>> {\n    const response = await this.httpClient.postEnhanced<PredictiveRecallResult>(\n      \"/intelligence/predictive-recall\",\n      {\n        userId: params.userId,\n        organizationId: params.organizationId,\n        topicId: params.topicId,\n        queryScope: params.queryScope,\n        context: params.context,\n        limit: params.limit || 5,\n        minConfidence: params.minConfidence || 40,\n        includeSerendipity: params.includeSerendipity !== false,\n        memoryTypes: params.memoryTypes,\n        timeWindowDays: params.timeWindowDays || 90,\n        responseFormat: params.responseFormat || this.defaultResponseFormat,\n      }\n    );\n\n    if (response.error) {\n      throw new DatabaseError(`Failed to get predictions: ${response.error.message}`);\n    }\n\n    return {\n      data: response.data!,\n      usage: response.usage,\n      tier_info: response.tier_info,\n      fromCache: response.fromCache,\n    };\n  }\n\n  /**\n   * Record feedback on a prediction (for improving accuracy over time)\n   *\n   * @example\n   * ```typescript\n   * await client.recordPredictionFeedback({\n   *   memoryId: \"mem-123\",\n   *   userId: \"user-123\",\n   *   useful: true,\n   *   action: \"clicked\"\n   * });\n   * ```\n   */\n  async recordPredictionFeedback(params: {\n    memoryId: string;\n    userId: string;\n    useful: boolean;\n    action: \"clicked\" | \"saved\" | \"dismissed\" | \"ignored\";\n    dismissReason?: \"not_relevant\" | \"already_know\" | \"not_now\" | \"other\";\n  }): Promise<void> {\n    await this.httpClient.post(\"/intelligence/prediction-feedback\", params);\n  }\n\n  // ============================================================================\n  // Behavioral Learning Methods\n  // ============================================================================\n\n  /**\n   * Record a successful behavior pattern for future recall\n   *\n   * The system automatically:\n   * - Generates an embedding from the trigger description\n   * - Detects and updates duplicates (>95% similarity)\n   * - Tracks usage counts for pattern prioritization\n   *\n   * @example\n   * ```typescript\n   * const result = await client.recordBehavior({\n   *   user_id: \"user-123\",\n   *   trigger: \"User wants to refactor a React component to use hooks\",\n   *   context: {\n   *     project: \"dashboard-app\",\n   *     active_files: [\"src/components/DataTable.tsx\"]\n   *   },\n   *   actions: [\n   *     { tool: \"read_file\", parameters: { path: \"src/components/DataTable.tsx\" }, outcome: \"success\" },\n   *     { tool: \"analyze_code\", parameters: { focus: \"class_components\" }, outcome: \"success\" },\n   *     { tool: \"edit_file\", parameters: { path: \"src/components/DataTable.tsx\" }, outcome: \"success\" }\n   *   ],\n   *   final_outcome: \"success\"\n   * });\n   *\n   * if (result.data.was_duplicate) {\n   *   console.log(\"Updated existing pattern:\", result.data.pattern.id);\n   * }\n   * ```\n   */\n  async recordBehavior(\n    params: RecordBehaviorParams\n  ): Promise<IntelligenceResponse<RecordBehaviorResult>> {\n    const actions = params.actions.map((action) => ({\n      tool: action.tool,\n      ...(action.parameters || action.params\n        ? { parameters: action.parameters ?? action.params }\n        : {}),\n      ...(action.outcome ? { outcome: action.outcome } : {}),\n      ...(action.timestamp ? { timestamp: action.timestamp } : {}),\n      ...(action.duration_ms !== undefined ? { duration_ms: action.duration_ms } : {}),\n    }));\n\n    const response = await this.httpClient.postEnhanced<RecordBehaviorResult>(\n      \"/intelligence/behavior-record\",\n      {\n        user_id: params.user_id,\n        trigger: params.trigger,\n        context: params.context || {},\n        actions,\n        final_outcome: params.final_outcome,\n        confidence: params.confidence ?? 0.7,\n      }\n    );\n\n    if (response.error) {\n      throw new DatabaseError(`Failed to record behavior: ${response.error.message}`);\n    }\n\n    // Handle the edge function response format\n    const data = response.data as any;\n    return {\n      data: {\n        pattern: data.data || data,\n        was_duplicate: data.message?.includes(\"duplicate\") || false,\n        message: data.message || \"Behavior pattern recorded successfully\",\n      },\n      usage: response.usage,\n      tier_info: response.tier_info,\n      fromCache: response.fromCache,\n    };\n  }\n\n  /**\n   * Recall similar behavior patterns based on current context\n   *\n   * Use this to find workflows that match the user's current task,\n   * enabling AI assistants to suggest proven approaches.\n   *\n   * @example\n   * ```typescript\n   * const result = await client.recallBehavior({\n   *   user_id: \"user-123\",\n   *   context: {\n   *     current_task: \"Need to optimize database queries for user dashboard\"\n   *   },\n   *   limit: 5,\n   *   similarity_threshold: 0.7\n   * });\n   *\n   * for (const match of result.data.patterns) {\n   *   console.log(`[${Math.round(match.similarity_score * 100)}%] ${match.pattern.trigger}`);\n   *   console.log(`  Actions: ${match.pattern.actions.map(a => a.tool).join(\" → \")}`);\n   * }\n   * ```\n   */\n  async recallBehavior(\n    params: RecallBehaviorParams\n  ): Promise<IntelligenceResponse<RecallBehaviorResult>> {\n    const response = await this.httpClient.postEnhanced<RecallBehaviorResult>(\n      \"/intelligence/behavior-recall\",\n      {\n        user_id: params.user_id,\n        context: params.context,\n        limit: params.limit ?? 5,\n        similarity_threshold: params.similarity_threshold ?? 0.7,\n      }\n    );\n\n    if (response.error) {\n      throw new DatabaseError(`Failed to recall behaviors: ${response.error.message}`);\n    }\n\n    // Handle the edge function response format\n    const data = response.data as any;\n    return {\n      data: data.data || data,\n      usage: response.usage,\n      tier_info: response.tier_info,\n      fromCache: response.fromCache,\n    };\n  }\n\n  /**\n   * Get AI-powered action suggestions based on learned patterns\n   *\n   * Analyzes the current state and completed steps to predict\n   * what action the user should take next based on similar workflows.\n   *\n   * @example\n   * ```typescript\n   * const result = await client.suggestAction({\n   *   user_id: \"user-123\",\n   *   current_state: {\n   *     task_description: \"Implementing user authentication with OAuth\",\n   *     completed_steps: [\n   *       \"create src/auth/oauth.ts\",\n   *       \"inspect package.json\"\n   *     ]\n   *   },\n   *   max_suggestions: 3\n   * });\n   *\n   * for (const suggestion of result.data.suggestions) {\n   *   console.log(`[${Math.round(suggestion.confidence * 100)}%] ${suggestion.action}`);\n   *   console.log(`  Tool: ${suggestion.tool}`);\n   *   console.log(`  Why: ${suggestion.reasoning}`);\n   * }\n   * ```\n   */\n  async suggestAction(\n    params: SuggestActionParams\n  ): Promise<IntelligenceResponse<SuggestActionResult>> {\n    const response = await this.httpClient.postEnhanced<SuggestActionResult>(\n      \"/intelligence/behavior-suggest\",\n      {\n        user_id: params.user_id,\n        current_state: params.current_state,\n        max_suggestions: params.max_suggestions ?? 3,\n      }\n    );\n\n    if (response.error) {\n      throw new DatabaseError(`Failed to get action suggestions: ${response.error.message}`);\n    }\n\n    // Handle the edge function response format\n    const data = response.data as any;\n    return {\n      data: data.data || data,\n      usage: response.usage,\n      tier_info: response.tier_info,\n      fromCache: response.fromCache,\n    };\n  }\n\n  /**\n   * List all behavior patterns for a user\n   *\n   * @example\n   * ```typescript\n   * const patterns = await client.listBehaviorPatterns(\"user-123\", { limit: 20 });\n   * console.log(`Found ${patterns.length} patterns`);\n   * ```\n   */\n  async listBehaviorPatterns(\n    userId: string,\n    options: { limit?: number; offset?: number } = {}\n  ): Promise<BehaviorPattern[]> {\n    const { limit = 50, offset = 0 } = options;\n\n    const response = await this.httpClient.get<{ patterns: BehaviorPattern[] }>(\n      `/intelligence/behavior-patterns?user_id=${userId}&limit=${limit}&offset=${offset}`\n    );\n\n    if (response.error) {\n      throw new DatabaseError(`Failed to list behavior patterns: ${response.error.message}`);\n    }\n\n    return response.data?.patterns || [];\n  }\n}\n","/** @jsxImportSource react */\n/**\n * React Context Provider for Memory Intelligence\n */\n\nimport {\n  createContext,\n  useContext,\n  ReactNode,\n  useState,\n  useEffect,\n} from \"react\";\nimport { MemoryIntelligenceClient } from \"../../core/client.js\";\nimport { MemoryIntelligenceConfig } from \"../../core/types.js\";\n\ninterface MemoryIntelligenceContextValue {\n  client: MemoryIntelligenceClient;\n}\n\nconst MemoryIntelligenceContext =\n  createContext<MemoryIntelligenceContextValue | null>(null);\n\ninterface MemoryIntelligenceProviderProps {\n  config: MemoryIntelligenceConfig;\n  children: ReactNode;\n}\n\nexport function MemoryIntelligenceProvider({\n  config,\n  children,\n}: MemoryIntelligenceProviderProps) {\n  // Use useState to avoid recreating client on every render when config object is recreated\n  const [client, setClient] = useState(\n    () => new MemoryIntelligenceClient(config),\n  );\n\n  // Only recreate client when primitive config values change\n  useEffect(() => {\n    setClient(new MemoryIntelligenceClient(config));\n  }, [\n    config.apiUrl,\n    config.apiKey,\n    config.authToken,\n    config.authType,\n    config.allowMissingAuth,\n    config.timeout,\n    config.processingMode,\n    config.enableCache,\n    config.cacheTTL,\n  ]);\n\n  return (\n    <MemoryIntelligenceContext.Provider value={{ client }}>\n      {children}\n    </MemoryIntelligenceContext.Provider>\n  );\n}\n\nexport function useMemoryIntelligenceContext() {\n  const context = useContext(MemoryIntelligenceContext);\n  if (!context) {\n    throw new Error(\n      \"useMemoryIntelligenceContext must be used within MemoryIntelligenceProvider\",\n    );\n  }\n  return context;\n}\n\nexport { MemoryIntelligenceContext };\n","/**\n * React hooks for Memory Intelligence using React Query\n */\n\nimport { useQuery, useMutation, UseQueryOptions, UseMutationOptions } from \"@tanstack/react-query\";\nimport { useMemoryIntelligenceContext } from \"../context/MemoryIntelligenceProvider.js\";\nimport {\n  PatternAnalysis,\n  TagSuggestionsResult,\n  RelatedMemoriesResult,\n  DuplicatesResult,\n  InsightsResult,\n  MemoryHealth,\n  AnalyzePatternsParams,\n  SuggestTagsParams,\n  FindRelatedParams,\n  DetectDuplicatesParams,\n  ExtractInsightsParams,\n  HealthCheckParams,\n} from \"../../core/types.js\";\nimport {\n  PredictiveRecallParams,\n  PredictiveRecallResult,\n} from \"../../core/prediction-types.js\";\nimport type { IntelligenceResponse } from \"../../core/client.js\";\n\n/**\n * Get the Memory Intelligence client from context\n */\nexport function useMemoryIntelligence() {\n  const { client } = useMemoryIntelligenceContext();\n  return client;\n}\n\n/**\n * Hook for analyzing memory patterns\n *\n * @example\n * ```tsx\n * const { data, isLoading, error } = usePatternAnalysis({\n *   userId: \"user-123\",\n *   timeRangeDays: 30,\n *   responseFormat: \"json\"\n * });\n * ```\n */\nexport function usePatternAnalysis(\n  params: AnalyzePatternsParams,\n  options?: Omit<UseQueryOptions<IntelligenceResponse<PatternAnalysis>>, \"queryKey\" | \"queryFn\">\n) {\n  const client = useMemoryIntelligence();\n\n  return useQuery<IntelligenceResponse<PatternAnalysis>>({\n    queryKey: [\"memory-intelligence\", \"analyze-patterns\", params],\n    queryFn: () => client.analyzePatterns(params),\n    ...options,\n  });\n}\n\n/**\n * Hook for getting tag suggestions\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useTagSuggestions({\n *   memoryId: \"mem-123\",\n *   userId: \"user-123\",\n *   maxSuggestions: 5\n * });\n * ```\n */\nexport function useTagSuggestions(\n  params: SuggestTagsParams,\n  options?: Omit<UseQueryOptions<IntelligenceResponse<TagSuggestionsResult>>, \"queryKey\" | \"queryFn\">\n) {\n  const client = useMemoryIntelligence();\n\n  return useQuery<IntelligenceResponse<TagSuggestionsResult>>({\n    queryKey: [\"memory-intelligence\", \"suggest-tags\", params],\n    queryFn: () => client.suggestTags(params),\n    ...options,\n  });\n}\n\n/**\n * Mutation hook for getting tag suggestions (if you need manual trigger)\n *\n * @example\n * ```tsx\n * const { mutate, data, isPending } = useTagSuggestionsMutation();\n *\n * // Later...\n * mutate({\n *   memoryId: \"mem-123\",\n *   userId: \"user-123\"\n * });\n * ```\n */\nexport function useTagSuggestionsMutation(\n  options?: UseMutationOptions<IntelligenceResponse<TagSuggestionsResult>, Error, SuggestTagsParams>\n) {\n  const client = useMemoryIntelligence();\n\n  return useMutation<IntelligenceResponse<TagSuggestionsResult>, Error, SuggestTagsParams>({\n    mutationFn: (params) => client.suggestTags(params),\n    ...options,\n  });\n}\n\n/**\n * Hook for finding related memories\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useRelatedMemories({\n *   memoryId: \"mem-123\",\n *   userId: \"user-123\",\n *   limit: 10,\n *   similarityThreshold: 0.7\n * });\n * ```\n */\nexport function useRelatedMemories(\n  params: FindRelatedParams,\n  options?: Omit<UseQueryOptions<IntelligenceResponse<RelatedMemoriesResult>>, \"queryKey\" | \"queryFn\">\n) {\n  const client = useMemoryIntelligence();\n\n  return useQuery<IntelligenceResponse<RelatedMemoriesResult>>({\n    queryKey: [\"memory-intelligence\", \"find-related\", params],\n    queryFn: () => client.findRelated(params),\n    ...options,\n  });\n}\n\n/**\n * Hook for detecting duplicate memories\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useDuplicateDetection({\n *   userId: \"user-123\",\n *   similarityThreshold: 0.9,\n *   maxPairs: 20\n * });\n * ```\n */\nexport function useDuplicateDetection(\n  params: DetectDuplicatesParams,\n  options?: Omit<UseQueryOptions<IntelligenceResponse<DuplicatesResult>>, \"queryKey\" | \"queryFn\">\n) {\n  const client = useMemoryIntelligence();\n\n  return useQuery<IntelligenceResponse<DuplicatesResult>>({\n    queryKey: [\"memory-intelligence\", \"detect-duplicates\", params],\n    queryFn: () => client.detectDuplicates(params),\n    ...options,\n  });\n}\n\n/**\n * Mutation hook for duplicate detection (if you need manual trigger)\n */\nexport function useDuplicateDetectionMutation(\n  options?: UseMutationOptions<IntelligenceResponse<DuplicatesResult>, Error, DetectDuplicatesParams>\n) {\n  const client = useMemoryIntelligence();\n\n  return useMutation<IntelligenceResponse<DuplicatesResult>, Error, DetectDuplicatesParams>({\n    mutationFn: (params) => client.detectDuplicates(params),\n    ...options,\n  });\n}\n\n/**\n * Hook for extracting insights\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useInsightExtraction({\n *   userId: \"user-123\",\n *   topic: \"machine learning\",\n *   maxMemories: 20\n * });\n * ```\n */\nexport function useInsightExtraction(\n  params: ExtractInsightsParams,\n  options?: Omit<UseQueryOptions<IntelligenceResponse<InsightsResult>>, \"queryKey\" | \"queryFn\">\n) {\n  const client = useMemoryIntelligence();\n\n  return useQuery<IntelligenceResponse<InsightsResult>>({\n    queryKey: [\"memory-intelligence\", \"extract-insights\", params],\n    queryFn: () => client.extractInsights(params),\n    ...options,\n  });\n}\n\n/**\n * Mutation hook for insight extraction (if you need manual trigger)\n */\nexport function useInsightExtractionMutation(\n  options?: UseMutationOptions<IntelligenceResponse<InsightsResult>, Error, ExtractInsightsParams>\n) {\n  const client = useMemoryIntelligence();\n\n  return useMutation<IntelligenceResponse<InsightsResult>, Error, ExtractInsightsParams>({\n    mutationFn: (params) => client.extractInsights(params),\n    ...options,\n  });\n}\n\n/**\n * Hook for checking memory health\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useHealthCheck({\n *   userId: \"user-123\",\n *   responseFormat: \"json\"\n * });\n * ```\n */\nexport function useHealthCheck(\n  params: HealthCheckParams,\n  options?: Omit<UseQueryOptions<IntelligenceResponse<MemoryHealth>>, \"queryKey\" | \"queryFn\">\n) {\n  const client = useMemoryIntelligence();\n\n  return useQuery<IntelligenceResponse<MemoryHealth>>({\n    queryKey: [\"memory-intelligence\", \"health-check\", params],\n    queryFn: () => client.healthCheck(params),\n    ...options,\n  });\n}\n\n/**\n * Mutation hook for health check (if you need manual trigger)\n */\nexport function useHealthCheckMutation(\n  options?: UseMutationOptions<IntelligenceResponse<MemoryHealth>, Error, HealthCheckParams>\n) {\n  const client = useMemoryIntelligence();\n\n  return useMutation<IntelligenceResponse<MemoryHealth>, Error, HealthCheckParams>({\n    mutationFn: (params) => client.healthCheck(params),\n    ...options,\n  });\n}\n\n/**\n * Hook for predictive memory recall\n *\n * AI-powered prediction of memories you'll need based on your current context.\n * Uses semantic similarity, temporal relevance, usage patterns, and serendipity\n * scoring to anticipate what you need before you realize it.\n *\n * @example\n * ```tsx\n * const { data, isLoading, error } = usePredictiveRecall({\n *   userId: \"user-123\",\n *   context: {\n *     currentProject: \"Building dashboard components\",\n *     recentTopics: [\"React\", \"performance\"],\n *     contextText: \"Optimizing render performance\"\n *   },\n *   limit: 5,\n *   minConfidence: 50\n * });\n *\n * // Display predictions\n * {data?.data.predictions.map(pred => (\n *   <PredictionCard\n *     key={pred.id}\n *     title={pred.title}\n *     confidence={pred.confidence}\n *     reason={pred.reason}\n *     action={pred.suggestedAction}\n *   />\n * ))}\n * ```\n */\nexport function usePredictiveRecall(\n  params: PredictiveRecallParams,\n  options?: Omit<UseQueryOptions<IntelligenceResponse<PredictiveRecallResult>>, \"queryKey\" | \"queryFn\">\n) {\n  const client = useMemoryIntelligence();\n\n  return useQuery<IntelligenceResponse<PredictiveRecallResult>>({\n    queryKey: [\"memory-intelligence\", \"predictive-recall\", params],\n    queryFn: () => client.predictiveRecall(params),\n    // Predictions should refresh periodically as context changes\n    staleTime: 60000, // 1 minute\n    ...options,\n  });\n}\n\n/**\n * Mutation hook for predictive recall (if you need manual trigger)\n *\n * @example\n * ```tsx\n * const { mutate, data, isPending } = usePredictiveRecallMutation();\n *\n * // Trigger prediction when context changes\n * const handleContextChange = (newContext) => {\n *   mutate({\n *     userId: \"user-123\",\n *     context: newContext,\n *     limit: 5\n *   });\n * };\n * ```\n */\nexport function usePredictiveRecallMutation(\n  options?: UseMutationOptions<IntelligenceResponse<PredictiveRecallResult>, Error, PredictiveRecallParams>\n) {\n  const client = useMemoryIntelligence();\n\n  return useMutation<IntelligenceResponse<PredictiveRecallResult>, Error, PredictiveRecallParams>({\n    mutationFn: (params) => client.predictiveRecall(params),\n    ...options,\n  });\n}\n\n/**\n * Hook for recording prediction feedback\n *\n * @example\n * ```tsx\n * const { mutate: recordFeedback } = usePredictionFeedback();\n *\n * // When user clicks on a prediction\n * const handlePredictionClick = (memoryId: string) => {\n *   recordFeedback({\n *     memoryId,\n *     userId: \"user-123\",\n *     useful: true,\n *     action: \"clicked\"\n *   });\n * };\n * ```\n */\nexport function usePredictionFeedback(\n  options?: UseMutationOptions<void, Error, {\n    memoryId: string;\n    userId: string;\n    useful: boolean;\n    action: \"clicked\" | \"saved\" | \"dismissed\" | \"ignored\";\n    dismissReason?: \"not_relevant\" | \"already_know\" | \"not_now\" | \"other\";\n  }>\n) {\n  const client = useMemoryIntelligence();\n\n  return useMutation<void, Error, {\n    memoryId: string;\n    userId: string;\n    useful: boolean;\n    action: \"clicked\" | \"saved\" | \"dismissed\" | \"ignored\";\n    dismissReason?: \"not_relevant\" | \"already_know\" | \"not_now\" | \"other\";\n  }>({\n    mutationFn: (params) => client.recordPredictionFeedback(params),\n    ...options,\n  });\n}\n","/**\n * Type definitions for Memory Intelligence SDK\n */\n\nimport { z } from \"zod\";\n\n// Response format enum\nexport const ResponseFormat = {\n  JSON: \"json\",\n  MARKDOWN: \"markdown\",\n} as const;\n\nexport type ResponseFormatType = (typeof ResponseFormat)[keyof typeof ResponseFormat];\n\n// Memory type enum\nexport const MemoryType = z.enum([\n  \"context\",\n  \"project\",\n  \"knowledge\",\n  \"reference\",\n  \"personal\",\n  \"workflow\",\n]);\n\nexport type MemoryTypeValue = z.infer<typeof MemoryType>;\n\n// Optional query-scope hint for context-aware rollouts.\nexport const QueryScope = z.enum([\n  \"personal\",\n  \"team\",\n  \"organization\",\n  \"hybrid\",\n]);\n\nexport type QueryScopeValue = z.infer<typeof QueryScope>;\n\n// Processing mode for SDK operations\nexport type ProcessingMode = 'api' | 'offline-fallback';\n\n// Configuration interface\nexport interface MemoryIntelligenceConfig {\n  apiUrl?: string; // Lanonasis API URL (default: https://api.lanonasis.com/api/v1)\n  apiKey?: string; // Lanonasis API key (format: lano_xxxxxxxxxx)\n  authToken?: string; // Bearer token for user-scoped auth (dashboard/SSO)\n  authType?: 'apiKey' | 'bearer'; // Explicitly set auth type; inferred from apiKey/authToken if not provided\n  allowMissingAuth?: boolean; // Allow client creation without auth (SDK consumers should gate calls)\n  timeout?: number; // Request timeout in milliseconds (default: 30000)\n  responseFormat?: ResponseFormatType;\n  headers?: Record<string, string>; // Custom headers\n\n  /**\n   * Processing mode for intelligence operations\n   * - 'api': Always use Lanonasis API endpoints (default)\n   * - 'offline-fallback': Use API, fall back to cached/local data if unreachable\n   * @default 'api'\n   */\n  processingMode?: ProcessingMode;\n\n  /**\n   * Enable caching of API responses for offline fallback\n   * Only used when processingMode is 'offline-fallback'\n   * @default true\n   */\n  enableCache?: boolean;\n\n  /**\n   * Cache TTL in milliseconds (default: 5 minutes)\n   * @default 300000\n   */\n  cacheTTL?: number;\n}\n\n// API response wrapper from Edge Functions\nexport interface EdgeFunctionResponse<T> {\n  success: boolean;\n  data?: T;\n  error?: {\n    message: string;\n    code?: string;\n  };\n  usage?: {\n    tokens_used: number;\n    cost_usd: number;\n    cached: boolean;\n  };\n  tier_info?: {\n    tier: string;\n    usage_remaining: number;\n  };\n}\n\nexport interface MemoryQueryContext {\n  organizationId?: string;\n  topicId?: string;\n  memoryTypes?: MemoryTypeValue[];\n  queryScope?: QueryScopeValue;\n}\n\n// Tool parameter interfaces\nexport interface AnalyzePatternsParams extends MemoryQueryContext {\n  userId: string;\n  timeRangeDays?: number;\n  responseFormat?: ResponseFormatType;\n}\n\nexport interface SuggestTagsParams {\n  memoryId: string;\n  userId: string;\n  maxSuggestions?: number;\n  includeExistingTags?: boolean;\n  responseFormat?: ResponseFormatType;\n}\n\nexport interface FindRelatedParams extends MemoryQueryContext {\n  memoryId: string;\n  userId: string;\n  limit?: number;\n  similarityThreshold?: number;\n  responseFormat?: ResponseFormatType;\n}\n\nexport interface DetectDuplicatesParams extends MemoryQueryContext {\n  userId: string;\n  similarityThreshold?: number;\n  maxPairs?: number;\n  responseFormat?: ResponseFormatType;\n}\n\nexport interface ExtractInsightsParams extends MemoryQueryContext {\n  userId: string;\n  topic?: string;\n  memoryType?: MemoryTypeValue;\n  maxMemories?: number;\n  responseFormat?: ResponseFormatType;\n}\n\nexport interface HealthCheckParams extends MemoryQueryContext {\n  userId: string;\n  responseFormat?: ResponseFormatType;\n}\n\n// Tool result interfaces\nexport interface PatternAnalysis {\n  total_memories: number;\n  memories_by_type: Record<string, number>;\n  memories_by_day_of_week: Record<string, number>;\n  peak_creation_hours: number[];\n  average_content_length: number;\n  most_common_tags: Array<{ tag: string; count: number }>;\n  creation_velocity: {\n    daily_average: number;\n    trend: \"increasing\" | \"stable\" | \"decreasing\";\n  };\n  insights: string[];\n}\n\nexport interface TagSuggestion {\n  tag: string;\n  confidence: number;\n  reasoning: string;\n}\n\nexport interface TagSuggestionsResult {\n  memory_id: string;\n  existing_tags: string[];\n  suggestions: TagSuggestion[];\n  context: {\n    memory_type: string;\n    related_memories_analyzed: number;\n  };\n}\n\nexport interface RelatedMemory {\n  id: string;\n  title: string;\n  type: string;\n  similarity_score: number;\n  shared_tags: string[];\n  content_preview: string;\n}\n\nexport interface RelatedMemoriesResult {\n  source_memory: {\n    id: string;\n    title: string;\n    type: string;\n  };\n  related_memories: RelatedMemory[];\n  total_found: number;\n}\n\nexport interface DuplicateEntry {\n  id: string;\n  title: string;\n  similarity: number;\n  created_at: string;\n}\n\nexport interface DuplicateGroup {\n  primary_id: string;\n  primary_title: string;\n  duplicates: DuplicateEntry[];\n  similarity_score: number;\n}\n\nexport interface DuplicatesResult {\n  duplicate_groups: DuplicateGroup[];\n  total_groups: number;\n  total_duplicates: number;\n  detection_method: \"semantic\" | \"text\";\n  threshold_used: number;\n  memories_analyzed: number;\n  potential_storage_savings: string;\n}\n\nexport interface Insight {\n  type: \"themes\" | \"connections\" | \"gaps\" | \"actions\" | \"summary\";\n  content: string;\n  confidence: number;\n  related_memory_ids: string[];\n}\n\nexport interface InsightsResult {\n  insights: Insight[];\n  overall_summary: string;\n  memories_analyzed: number;\n  insight_types: string[];\n  topic_filter?: string | null;\n  generated_at: string;\n}\n\nexport interface HealthScoreBreakdown {\n  organization: number;\n  tagging: number;\n  recency: number;\n  completeness: number;\n  diversity: number;\n}\n\nexport interface HealthScore {\n  overall: number;\n  breakdown: HealthScoreBreakdown;\n}\n\nexport interface HealthStatistics {\n  total_memories: number;\n  active_memories: number;\n  archived_memories: number;\n  memories_with_tags: number;\n  unique_tags: number;\n  memory_types: number;\n  recent_memories_30d: number;\n  stale_memories_90d: number;\n}\n\nexport interface HealthIssue {\n  severity: \"high\" | \"medium\" | \"low\";\n  category: string;\n  description: string;\n  affected_count: number;\n  recommendation: string;\n}\n\nexport interface MemoryHealth {\n  health_score: HealthScore;\n  status: \"excellent\" | \"good\" | \"needs_attention\" | \"poor\";\n  statistics: HealthStatistics;\n  issues: HealthIssue[];\n  recommendations: string[];\n  generated_at: string;\n}\n\n// Memory entry interface (from database)\nexport interface MemoryEntry {\n  id: string;\n  user_id: string;\n  organization_id?: string | null;\n  topic_id?: string | null;\n  title: string;\n  content: string;\n  type: MemoryTypeValue;\n  memory_type?: string | null;\n  tags?: string[];\n  metadata?: Record<string, any>;\n  embedding?: number[];\n  access_count?: number | null;\n  last_accessed?: string | null;\n  created_at: string;\n  updated_at: string;\n}\n\n// Query options for internal use\nexport interface QueryMemoriesOptions extends MemoryQueryContext {\n  type?: string;\n  limit?: number;\n  offset?: number;\n  includeEmbeddings?: boolean;\n}\n"]}