{"version":3,"sources":["../src/core/errors.ts","../src/utils/response-adapter.ts","../src/utils/http-client.ts","../src/core/client.ts","../src/core/types.ts","../src/core/prediction-types.ts","../src/core/behavior-types.ts"],"names":["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","/**\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","/**\n * Predictive Memory System Types\n *\n * The AI that anticipates what you need before you realize it.\n *\n * Scoring Algorithm:\n *   - Semantic similarity to current context (40%)\n *   - Temporal relevance (recency decay curve) (30%)\n *   - Usage frequency of similar memories (20%)\n *   - Serendipity factor (adjacent/surprising topics) (10%)\n */\n\nimport { z } from \"zod\";\nimport {\n  ResponseFormatType,\n  MemoryTypeValue,\n  MemoryQueryContext,\n  QueryScope,\n} from \"./types.js\";\n\n// ============================================================================\n// Input Parameters\n// ============================================================================\n\n/**\n * Context describing the user's current work/focus\n */\nexport interface PredictiveContext {\n  /** Current project or task description */\n  currentProject?: string;\n\n  /** Recent work patterns or topics */\n  recentTopics?: string[];\n\n  /** Current files being worked on */\n  activeFiles?: string[];\n\n  /** Free-form context text (e.g., current task, meeting notes) */\n  contextText?: string;\n\n  /** Team channel or conversation topics (for team-aware predictions) */\n  teamContext?: string;\n}\n\n/**\n * Parameters for predictive memory recall\n */\nexport interface PredictiveRecallParams extends MemoryQueryContext {\n  /** User ID */\n  userId: string;\n\n  /** Current context for prediction scoring */\n  context: PredictiveContext;\n\n  /** Maximum predictions to return (default: 5, max: 20) */\n  limit?: number;\n\n  /** Minimum confidence threshold (0-100, default: 40) */\n  minConfidence?: number;\n\n  /** Include serendipity/surprise suggestions (default: true) */\n  includeSerendipity?: boolean;\n\n  /** Time window in days for recency scoring (default: 90) */\n  timeWindowDays?: number;\n\n  /** Response format */\n  responseFormat?: ResponseFormatType;\n}\n\n// Zod schema for MCP/API validation\nexport const PredictiveRecallParamsSchema = z.object({\n  userId: z.string().uuid(),\n  organizationId: z.string().uuid().optional(),\n  topicId: z.string().optional(),\n  queryScope: QueryScope.optional(),\n  context: z.object({\n    currentProject: z.string().optional(),\n    recentTopics: z.array(z.string()).optional(),\n    activeFiles: z.array(z.string()).optional(),\n    contextText: z.string().optional(),\n    teamContext: z.string().optional(),\n  }),\n  limit: z.number().int().min(1).max(20).default(5),\n  minConfidence: z.number().min(0).max(100).default(40),\n  includeSerendipity: z.boolean().default(true),\n  memoryTypes: z.array(z.enum([\n    \"context\", \"project\", \"knowledge\", \"reference\", \"personal\", \"workflow\"\n  ])).optional(),\n  timeWindowDays: z.number().int().min(1).max(365).default(90),\n  responseFormat: z.enum([\"json\", \"markdown\"]).default(\"markdown\"),\n});\n\n// ============================================================================\n// Scoring Components\n// ============================================================================\n\n/**\n * Individual scoring factors for a prediction\n */\nexport interface PredictionScoreBreakdown {\n  /** Semantic similarity to current context (0-100) */\n  semanticScore: number;\n\n  /** Temporal relevance based on age (0-100) */\n  temporalScore: number;\n\n  /** Usage frequency of similar content (0-100) */\n  frequencyScore: number;\n\n  /** Serendipity/surprise factor (0-100) */\n  serendipityScore: number;\n\n  /** Weighted combination (0-100) */\n  combinedScore: number;\n}\n\n/**\n * Reason why a memory was predicted\n */\nexport type PredictionReason =\n  | \"semantic_match\"      // High semantic similarity to current context\n  | \"recent_related\"      // Recently viewed similar content\n  | \"team_trending\"       // Team is discussing related topics\n  | \"pattern_match\"       // Matches user's work patterns\n  | \"adjacent_discovery\"  // Serendipitous adjacent topic\n  | \"expert_topic\"        // User has expertise in this area\n  | \"prerequisite\"        // Foundational for current work\n  | \"frequently_used\";    // Often accessed in similar contexts\n\n// ============================================================================\n// Output Types\n// ============================================================================\n\n/**\n * A single predicted memory with confidence and explanation\n */\nexport interface PredictedMemory {\n  /** Memory ID */\n  id: string;\n\n  /** Memory title */\n  title: string;\n\n  /** Memory type */\n  type: MemoryTypeValue;\n\n  /** Memory tags */\n  tags: string[];\n\n  /** Content preview (first 300 chars) */\n  contentPreview: string;\n\n  /** Confidence score (0-100) */\n  confidence: number;\n\n  /** Human-readable explanation of why this was predicted */\n  reason: string;\n\n  /** Structured reason type */\n  reasonType: PredictionReason;\n\n  /** Detailed score breakdown */\n  scoreBreakdown: PredictionScoreBreakdown;\n\n  /** Days since memory was created */\n  daysSinceCreated: number;\n\n  /** Days since memory was last accessed */\n  daysSinceAccessed?: number;\n\n  /** Suggested action for the user */\n  suggestedAction: \"review\" | \"apply\" | \"reference\" | \"explore\";\n\n  /** Related topic clusters */\n  relatedTopics?: string[];\n}\n\n/**\n * Result of predictive recall operation\n */\nexport interface PredictiveRecallResult {\n  /** Predicted memories ranked by confidence */\n  predictions: PredictedMemory[];\n\n  /** Total predictions returned */\n  totalPredictions: number;\n\n  /** Total memories analyzed */\n  memoriesAnalyzed: number;\n\n  /** Context that was used for prediction */\n  contextUsed: {\n    projectContext: boolean;\n    topicsContext: boolean;\n    filesContext: boolean;\n    textContext: boolean;\n    teamContext: boolean;\n  };\n\n  /** Scoring weights used */\n  scoringWeights: {\n    semantic: number;\n    temporal: number;\n    frequency: number;\n    serendipity: number;\n  };\n\n  /** Algorithm metadata */\n  algorithmInfo: {\n    version: string;\n    embeddingModel: string;\n    timeWindowDays: number;\n  };\n\n  /** Timestamp of prediction */\n  generatedAt: string;\n}\n\n// ============================================================================\n// Internal Types (for engine use)\n// ============================================================================\n\n/**\n * Internal memory representation with embedding for scoring\n */\nexport interface ScoredMemoryCandidate {\n  id: string;\n  title: string;\n  content: string;\n  type: MemoryTypeValue;\n  tags: string[];\n  embedding: number[];\n  createdAt: Date;\n  updatedAt: Date;\n  metadata?: Record<string, any>;\n  accessCount?: number;\n}\n\n/**\n * Scoring configuration (tunable weights)\n */\nexport interface PredictionScoringConfig {\n  /** Weight for semantic similarity (default: 0.40) */\n  semanticWeight: number;\n\n  /** Weight for temporal relevance (default: 0.30) */\n  temporalWeight: number;\n\n  /** Weight for usage frequency (default: 0.20) */\n  frequencyWeight: number;\n\n  /** Weight for serendipity (default: 0.10) */\n  serendipityWeight: number;\n\n  /** Decay rate for temporal scoring (half-life in days) */\n  temporalDecayHalfLife: number;\n\n  /** Similarity threshold for semantic matching */\n  semanticThreshold: number;\n\n  /** Serendipity similarity range (min-max for \"adjacent\" topics) */\n  serendipityRange: {\n    min: number;\n    max: number;\n  };\n}\n\n/**\n * Default scoring configuration\n */\nexport const DEFAULT_SCORING_CONFIG: PredictionScoringConfig = {\n  semanticWeight: 0.40,\n  temporalWeight: 0.30,\n  frequencyWeight: 0.20,\n  serendipityWeight: 0.10,\n  temporalDecayHalfLife: 14, // 2 weeks\n  semanticThreshold: 0.5,\n  serendipityRange: {\n    min: 0.3,  // Not too similar\n    max: 0.6,  // Not too different\n  },\n};\n\n// ============================================================================\n// Feedback Types (for learning loop)\n// ============================================================================\n\n/**\n * User feedback on a prediction\n */\nexport interface PredictionFeedback {\n  /** Prediction/memory ID */\n  memoryId: string;\n\n  /** User ID */\n  userId: string;\n\n  /** Was this prediction useful? */\n  useful: boolean;\n\n  /** Action taken */\n  action: \"clicked\" | \"saved\" | \"dismissed\" | \"ignored\";\n\n  /** Optional reason for dismissal */\n  dismissReason?: \"not_relevant\" | \"already_know\" | \"not_now\" | \"other\";\n\n  /** Timestamp */\n  timestamp: string;\n}\n\n/**\n * Aggregated feedback for model improvement\n */\nexport interface PredictionAccuracyMetrics {\n  /** Total predictions made */\n  totalPredictions: number;\n\n  /** Predictions marked as useful */\n  usefulPredictions: number;\n\n  /** Predictions clicked/engaged */\n  engagedPredictions: number;\n\n  /** Accuracy rate (useful / total) */\n  accuracyRate: number;\n\n  /** Engagement rate (engaged / total) */\n  engagementRate: number;\n\n  /** Time period analyzed */\n  timePeriod: {\n    start: string;\n    end: string;\n  };\n}\n","/**\n * Behavioral Pattern Learning Types\n *\n * These types support the AI-powered behavioral learning system that:\n * - Records successful workflows and action patterns\n * - Recalls similar patterns based on current context\n * - Suggests next actions based on learned behaviors\n *\n * The system stores trigger embeddings for semantic similarity search,\n * enabling the SDK to anticipate what actions users might want to take.\n */\n\nimport { z } from \"zod\";\n\nexport const BehaviorOutcomeValues = [\"success\", \"partial\", \"failed\"] as const;\nexport type BehaviorOutcome = typeof BehaviorOutcomeValues[number];\n\n// ============================================================================\n// Behavior Pattern Core Types\n// ============================================================================\n\n/**\n * A single action within a behavior pattern\n */\nexport interface BehaviorAction {\n  /** Tool or action identifier */\n  tool: string;\n\n  /** Parameters used with this action */\n  parameters?: Record<string, unknown>;\n\n  /** Legacy alias for parameters; use `parameters` for new callers */\n  params?: Record<string, unknown>;\n\n  /** Outcome of the action when recorded as a workflow step */\n  outcome?: BehaviorOutcome;\n\n  /** Timestamp when action occurred */\n  timestamp?: string;\n\n  /** Duration in milliseconds (if applicable) */\n  duration_ms?: number;\n}\n\n/**\n * Context that was active when a behavior pattern was recorded\n */\nexport interface BehaviorContext {\n  /** Current project or workspace */\n  project?: string;\n\n  /** Files that were open/active */\n  active_files?: string[];\n\n  /** Current task or goal description */\n  current_task?: string;\n\n  /** Environment metadata (IDE, terminal, etc.) */\n  environment?: string;\n\n  /** Additional custom context */\n  [key: string]: unknown;\n}\n\n/**\n * A recorded behavior pattern with embeddings for similarity search\n */\nexport interface BehaviorPattern {\n  /** Unique identifier */\n  id: string;\n\n  /** User who created this pattern */\n  user_id: string;\n\n  /** Natural language description of what triggered this pattern */\n  trigger: string;\n\n  /** OpenAI-compatible trigger embedding for semantic search */\n  trigger_embedding?: number[];\n\n  /** Voyage trigger embedding for semantic search */\n  voyage_trigger_embedding?: number[];\n\n  /** Context when pattern was recorded */\n  context: BehaviorContext;\n\n  /** Ordered list of actions taken */\n  actions: BehaviorAction[];\n\n  /** Final outcome/result classification */\n  final_outcome: BehaviorOutcome;\n\n  /** Confidence score (0-1) indicating pattern reliability */\n  confidence: number;\n\n  /** Number of times this pattern has been recalled/used */\n  use_count: number;\n\n  /** Similarity score (only present in search results) */\n  similarity?: number;\n\n  /** When the pattern was created */\n  created_at: string;\n\n  /** When the pattern was last updated/used */\n  updated_at: string;\n}\n\n// ============================================================================\n// Record Behavior Endpoint Types\n// ============================================================================\n\n/**\n * Parameters for recording a new behavior pattern\n */\nexport interface RecordBehaviorParams {\n  /** User ID (UUID) */\n  user_id: string;\n\n  /** Natural language description of what triggered this workflow */\n  trigger: string;\n\n  /** Context when the pattern occurred */\n  context?: BehaviorContext;\n\n  /** Ordered list of actions taken */\n  actions: BehaviorAction[];\n\n  /** Final outcome classification */\n  final_outcome: BehaviorOutcome;\n\n  /** Confidence in this pattern (0-1, default: 0.7) */\n  confidence?: number;\n}\n\n/** Zod schema for API validation */\nexport const RecordBehaviorParamsSchema = z.object({\n  user_id: z.string().uuid(),\n  trigger: z.string().min(1, \"Trigger description is required\"),\n  context: z.record(z.unknown()).optional(),\n  actions: z.array(z.object({\n    tool: z.string(),\n    parameters: z.record(z.unknown()).optional(),\n    params: z.record(z.unknown()).optional(),\n    outcome: z.enum(BehaviorOutcomeValues),\n    timestamp: z.string().optional(),\n    duration_ms: z.number().optional(),\n  })).min(1, \"At least one action is required\"),\n  final_outcome: z.enum(BehaviorOutcomeValues),\n  confidence: z.number().min(0).max(1).default(0.7),\n});\n\n/**\n * Response from recording a behavior pattern\n */\nexport interface RecordBehaviorResult {\n  /** The created or updated pattern */\n  pattern: BehaviorPattern;\n\n  /** Whether a duplicate was updated instead of creating new */\n  was_duplicate: boolean;\n\n  /** Message describing what happened */\n  message: string;\n}\n\n// ============================================================================\n// Recall Behavior Endpoint Types\n// ============================================================================\n\n/**\n * Parameters for recalling similar behavior patterns\n */\nexport interface RecallBehaviorParams {\n  /** User ID (UUID) */\n  user_id: string;\n\n  /** Current context for similarity matching */\n  context: {\n    /** Current task description (required for embedding generation) */\n    current_task: string;\n\n    /** Optional additional context fields */\n    [key: string]: unknown;\n  };\n\n  /** Maximum patterns to return (default: 5) */\n  limit?: number;\n\n  /** Minimum similarity threshold (0-1, default: 0.7) */\n  similarity_threshold?: number;\n}\n\n/** Zod schema for API validation */\nexport const RecallBehaviorParamsSchema = z.object({\n  user_id: z.string().uuid(),\n  context: z.object({\n    current_task: z.string().min(1, \"Current task description is required\"),\n  }).passthrough(),\n  limit: z.number().int().min(1).max(20).default(5),\n  similarity_threshold: z.number().min(0).max(1).default(0.7),\n});\n\n/**\n * A recalled pattern with similarity information\n */\nexport interface RecalledPattern {\n  /** The matched pattern */\n  pattern: BehaviorPattern;\n\n  /** Similarity score (0-1) */\n  similarity_score: number;\n\n  /** Human-readable explanation of why this matched */\n  relevance_reason: string;\n}\n\n/**\n * Response from recalling behavior patterns\n */\nexport interface RecallBehaviorResult {\n  /** Matched patterns sorted by similarity */\n  patterns: RecalledPattern[];\n\n  /** Total patterns found */\n  total_found: number;\n}\n\n// ============================================================================\n// Suggest Action Endpoint Types\n// ============================================================================\n\n/**\n * Parameters for getting action suggestions\n */\nexport interface SuggestActionParams {\n  /** User ID (UUID) */\n  user_id: string;\n\n  /** Current state for action prediction */\n  current_state: {\n    /** Description of current task */\n    task_description: string;\n\n    /** Steps already completed (for predicting next step) */\n    completed_steps?: string[];\n\n    /** Optional additional state */\n    [key: string]: unknown;\n  };\n\n  /** Maximum suggestions to return (default: 3) */\n  max_suggestions?: number;\n}\n\n/** Zod schema for API validation */\nconst SuggestActionStepSchema = z\n  .union([\n    z.string().min(1, \"Completed step must be a non-empty string\"),\n    z.object({\n      tool: z.string().min(1, \"Legacy step objects must include tool\"),\n      parameters: z.record(z.unknown()).optional(),\n      params: z.record(z.unknown()).optional(),\n    }),\n  ])\n  .transform((step) => (typeof step === \"string\" ? step : step.tool));\n\nexport const SuggestActionParamsSchema = z.object({\n  user_id: z.string().uuid(),\n  current_state: z.object({\n    task_description: z.string().min(1, \"Task description is required\"),\n    completed_steps: z.array(SuggestActionStepSchema).optional(),\n  }).passthrough(),\n  max_suggestions: z.number().int().min(1).max(10).default(3),\n});\n\n/**\n * A suggested next action based on learned patterns\n */\nexport interface ActionSuggestion {\n  /** Suggested action description */\n  action: string;\n\n  /** Tool to use for this action */\n  tool: string;\n\n  /** Confidence score (0-1) */\n  confidence: number;\n\n  /** Pattern IDs that informed this suggestion */\n  based_on_patterns: string[];\n\n  /** Human-readable explanation */\n  reasoning: string;\n}\n\n/**\n * Response from action suggestion endpoint\n */\nexport interface SuggestActionResult {\n  /** Suggested actions sorted by confidence */\n  suggestions: ActionSuggestion[];\n}\n\n// ============================================================================\n// Edge Function Response Wrapper\n// ============================================================================\n\n/**\n * Standard response format from behavior edge functions\n */\nexport interface BehaviorEdgeFunctionResponse<T> {\n  /** Whether the operation succeeded */\n  success: boolean;\n\n  /** Response data (present on success) */\n  data?: T;\n\n  /** Error information (present on failure) */\n  error?: {\n    message: string;\n    code: string;\n  };\n\n  /** Optional message (for duplicate detection, etc.) */\n  message?: string;\n}\n"]}