@usetransactional/memory 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +300 -0
- package/dist/index.cjs +607 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +914 -0
- package/dist/index.d.ts +914 -0
- package/dist/index.js +592 -0
- package/dist/index.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/client.ts","../src/types.ts"],"names":["MemoryEntityType","MemoryEdgeType","MemoryFactSource","MemorySessionStatus","MemoryMessageRole"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Transactional Memory SDK - Error Classes\n */\n\n/**\n * Base error class for Memory SDK errors.\n */\nexport class MemoryError extends Error {\n /** Error code */\n readonly code: string;\n /** HTTP status code */\n readonly status: number;\n /** Additional error details */\n readonly details?: unknown;\n\n constructor(\n message: string,\n code: string,\n status: number,\n details?: unknown\n ) {\n super(message);\n this.name = 'MemoryError';\n this.code = code;\n this.status = status;\n this.details = details;\n }\n}\n\n/**\n * Authentication error (invalid or missing API key).\n */\nexport class AuthenticationError extends MemoryError {\n constructor(message = 'Invalid or missing API key') {\n super(message, 'AUTHENTICATION_ERROR', 401);\n this.name = 'AuthenticationError';\n }\n}\n\n/**\n * Validation error (invalid request parameters).\n */\nexport class ValidationError extends MemoryError {\n /** Field-level errors */\n readonly fieldErrors?: Array<{ field: string; message: string }>;\n\n constructor(\n message: string,\n fieldErrors?: Array<{ field: string; message: string }>\n ) {\n super(message, 'VALIDATION_ERROR', 400, { fieldErrors });\n this.name = 'ValidationError';\n this.fieldErrors = fieldErrors;\n }\n}\n\n/**\n * Not found error (resource doesn't exist).\n */\nexport class NotFoundError extends MemoryError {\n /** Resource type */\n readonly resourceType: string;\n /** Resource ID */\n readonly resourceId?: string;\n\n constructor(resourceType: string, resourceId?: string) {\n const message = resourceId\n ? `${resourceType} with ID '${resourceId}' not found`\n : `${resourceType} not found`;\n super(message, 'NOT_FOUND', 404, { resourceType, resourceId });\n this.name = 'NotFoundError';\n this.resourceType = resourceType;\n this.resourceId = resourceId;\n }\n}\n\n/**\n * Rate limit error (too many requests).\n */\nexport class RateLimitError extends MemoryError {\n /** Time to wait before retrying (seconds) */\n readonly retryAfter: number;\n /** Rate limit */\n readonly limit?: number;\n /** Remaining requests */\n readonly remaining?: number;\n /** Reset timestamp */\n readonly reset?: number;\n\n constructor(\n retryAfter: number,\n options?: { limit?: number; remaining?: number; reset?: number }\n ) {\n super(\n `Rate limit exceeded. Retry after ${retryAfter} seconds.`,\n 'RATE_LIMIT_ERROR',\n 429,\n { retryAfter, ...options }\n );\n this.name = 'RateLimitError';\n this.retryAfter = retryAfter;\n this.limit = options?.limit;\n this.remaining = options?.remaining;\n this.reset = options?.reset;\n }\n}\n\n/**\n * Server error (internal server error).\n */\nexport class ServerError extends MemoryError {\n constructor(message = 'Internal server error', details?: unknown) {\n super(message, 'SERVER_ERROR', 500, details);\n this.name = 'ServerError';\n }\n}\n\n/**\n * Timeout error (request timed out).\n */\nexport class TimeoutError extends MemoryError {\n /** Timeout duration in ms */\n readonly timeout: number;\n\n constructor(timeout: number) {\n super(\n `Request timed out after ${timeout}ms`,\n 'TIMEOUT_ERROR',\n 408,\n { timeout }\n );\n this.name = 'TimeoutError';\n this.timeout = timeout;\n }\n}\n\n/**\n * Network error (connection failed).\n */\nexport class NetworkError extends MemoryError {\n constructor(message = 'Network request failed', details?: unknown) {\n super(message, 'NETWORK_ERROR', 0, details);\n this.name = 'NetworkError';\n }\n}\n\n/**\n * Parse API error response into appropriate error class.\n */\nexport function parseApiError(\n status: number,\n body: { errorCode?: number; message?: string; errors?: unknown } | string\n): MemoryError {\n const errorBody = typeof body === 'string' ? { message: body } : body;\n const message = errorBody.message || 'Unknown error';\n\n switch (status) {\n case 401:\n return new AuthenticationError(message);\n\n case 400:\n case 422:\n return new ValidationError(\n message,\n errorBody.errors as Array<{ field: string; message: string }> | undefined\n );\n\n case 404:\n return new NotFoundError('Resource', undefined);\n\n case 429:\n return new RateLimitError(60); // Default to 60 seconds\n\n case 500:\n case 502:\n case 503:\n case 504:\n return new ServerError(message, errorBody);\n\n default:\n return new MemoryError(message, 'UNKNOWN_ERROR', status, errorBody);\n }\n}\n","/**\n * Transactional Memory SDK - Client Implementation\n */\n\nimport type {\n MemoryClientConfig,\n Memory,\n MemoryEdge,\n Session,\n CreateSessionParams,\n UpdateSessionParams,\n ListSessionsParams,\n AddMemoryParams,\n AddMemoryResult,\n UpdateMemoryParams,\n SearchParams,\n SearchResult,\n GetContextParams,\n ContextResult,\n IngestUrlParams,\n IngestUrlResult,\n IngestPdfParams,\n IngestPdfResult,\n IngestTextParams,\n IngestTextResult,\n UserProfile,\n UpsertProfileParams,\n GetGraphParams,\n GraphResult,\n TraverseParams,\n PaginatedResponse,\n JobStatus,\n} from './types';\nimport {\n MemoryError,\n AuthenticationError,\n TimeoutError,\n NetworkError,\n RateLimitError,\n parseApiError,\n} from './errors';\n\n// ===========================================\n// CONSTANTS\n// ===========================================\n\nconst DEFAULT_BASE_URL = 'https://api.usetransactional.com';\nconst DEFAULT_TIMEOUT = 30000;\nconst DEFAULT_MAX_RETRIES = 3;\n\n// ===========================================\n// HTTP CLIENT\n// ===========================================\n\ninterface RequestOptions {\n method: 'GET' | 'POST' | 'PATCH' | 'DELETE';\n path: string;\n body?: unknown;\n headers?: Record<string, string>;\n timeout?: number;\n}\n\ninterface ApiResponse<T> {\n data: T;\n meta?: Record<string, unknown>;\n}\n\n/**\n * Transactional Memory API Client.\n *\n * @example\n * ```typescript\n * import { MemoryClient } from '@transactional/memory-sdk';\n *\n * const client = new MemoryClient({\n * apiKey: 'your-api-key',\n * });\n *\n * // Add a memory\n * const result = await client.add({\n * content: 'User prefers TypeScript',\n * userId: 'user_123',\n * });\n *\n * // Search memories\n * const searchResult = await client.search({\n * query: 'programming language preferences',\n * userId: 'user_123',\n * });\n * ```\n */\nexport class MemoryClient {\n private readonly apiKey: string;\n private readonly baseUrl: string;\n private readonly timeout: number;\n private readonly maxRetries: number;\n private readonly customHeaders: Record<string, string>;\n\n /** Session operations */\n readonly sessions: SessionOperations;\n /** Profile operations */\n readonly profiles: ProfileOperations;\n /** Graph operations */\n readonly graph: GraphOperations;\n /** Ingest operations */\n readonly ingest: IngestOperations;\n\n constructor(config: MemoryClientConfig) {\n if (!config.apiKey) {\n throw new AuthenticationError('API key is required');\n }\n\n this.apiKey = config.apiKey;\n this.baseUrl = (config.baseUrl || DEFAULT_BASE_URL).replace(/\\/$/, '');\n this.timeout = config.timeout ?? DEFAULT_TIMEOUT;\n this.maxRetries = config.maxRetries ?? DEFAULT_MAX_RETRIES;\n this.customHeaders = config.headers || {};\n\n // Initialize sub-operations\n this.sessions = new SessionOperations(this);\n this.profiles = new ProfileOperations(this);\n this.graph = new GraphOperations(this);\n this.ingest = new IngestOperations(this);\n }\n\n // ===========================================\n // HTTP METHODS\n // ===========================================\n\n /**\n * Make an HTTP request to the API.\n */\n async request<T>(options: RequestOptions): Promise<T> {\n const url = `${this.baseUrl}${options.path}`;\n const timeout = options.timeout ?? this.timeout;\n\n const headers: Record<string, string> = {\n 'X-API-Key': this.apiKey,\n 'Content-Type': 'application/json',\n 'Accept': 'application/json',\n ...this.customHeaders,\n ...options.headers,\n };\n\n let lastError: Error | null = null;\n\n for (let attempt = 0; attempt <= this.maxRetries; attempt++) {\n try {\n // Create abort controller for timeout\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n\n try {\n const response = await fetch(url, {\n method: options.method,\n headers,\n body: options.body ? JSON.stringify(options.body) : undefined,\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n // Parse response\n const text = await response.text();\n let body: unknown;\n try {\n body = text ? JSON.parse(text) : {};\n } catch {\n body = { message: text };\n }\n\n // Handle errors\n if (!response.ok) {\n const error = parseApiError(response.status, body as any);\n\n // Don't retry on client errors (except rate limit)\n if (response.status < 500 && response.status !== 429) {\n throw error;\n }\n\n // Handle rate limit\n if (response.status === 429) {\n const retryAfter = parseInt(\n response.headers.get('Retry-After') || '60',\n 10\n );\n if (attempt < this.maxRetries) {\n await this.sleep(retryAfter * 1000);\n continue;\n }\n throw new RateLimitError(retryAfter);\n }\n\n // Retry on server errors\n lastError = error;\n if (attempt < this.maxRetries) {\n await this.sleep(Math.pow(2, attempt) * 1000);\n continue;\n }\n throw error;\n }\n\n // Return data\n const apiResponse = body as ApiResponse<T>;\n return apiResponse.data;\n } finally {\n clearTimeout(timeoutId);\n }\n } catch (error) {\n if (error instanceof MemoryError) {\n throw error;\n }\n\n if (error instanceof Error) {\n if (error.name === 'AbortError') {\n throw new TimeoutError(timeout);\n }\n lastError = new NetworkError(error.message);\n }\n\n if (attempt < this.maxRetries) {\n await this.sleep(Math.pow(2, attempt) * 1000);\n continue;\n }\n\n throw lastError || new NetworkError('Request failed');\n }\n }\n\n throw lastError || new NetworkError('Request failed after retries');\n }\n\n private sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n\n // ===========================================\n // MEMORY OPERATIONS\n // ===========================================\n\n /**\n * Add a memory.\n */\n async add(params: AddMemoryParams): Promise<AddMemoryResult> {\n return this.request<AddMemoryResult>({\n method: 'POST',\n path: '/memory/ingest',\n body: {\n content: params.content,\n sessionId: params.sessionId,\n metadata: {\n ...params.metadata,\n userId: params.userId,\n type: params.type,\n },\n },\n });\n }\n\n /**\n * Search memories.\n */\n async search(params: SearchParams): Promise<SearchResult> {\n return this.request<SearchResult>({\n method: 'POST',\n path: params.sessionId\n ? `/memory/sessions/${params.sessionId}/search`\n : '/memory/search/global',\n body: {\n query: params.query,\n sessionIds: params.sessionIds,\n userId: params.userId,\n types: params.types,\n strategy: params.strategy,\n threshold: params.threshold,\n limit: params.limit,\n includeRelated: params.includeRelated,\n },\n });\n }\n\n /**\n * Get a specific memory by ID.\n */\n async get(sessionId: string, memoryId: string): Promise<Memory> {\n return this.request<Memory>({\n method: 'GET',\n path: `/memory/sessions/${sessionId}/entities/${memoryId}`,\n });\n }\n\n /**\n * Update a memory.\n */\n async update(\n sessionId: string,\n memoryId: string,\n params: UpdateMemoryParams\n ): Promise<Memory> {\n return this.request<Memory>({\n method: 'PATCH',\n path: `/memory/sessions/${sessionId}/entities/${memoryId}`,\n body: params,\n });\n }\n\n /**\n * Delete a memory.\n */\n async delete(sessionId: string, memoryId: string): Promise<void> {\n await this.request<void>({\n method: 'DELETE',\n path: `/memory/sessions/${sessionId}/entities/${memoryId}`,\n });\n }\n\n /**\n * Get context for LLM prompts.\n */\n async getContext(params: GetContextParams): Promise<ContextResult> {\n const queryParams = new URLSearchParams();\n if (params.query) queryParams.set('query', params.query);\n if (params.maxTokens) queryParams.set('maxTokens', params.maxTokens.toString());\n if (params.includeProfile !== undefined)\n queryParams.set('includeProfile', params.includeProfile.toString());\n if (params.includeFacts !== undefined)\n queryParams.set('includeFacts', params.includeFacts.toString());\n if (params.includePreferences !== undefined)\n queryParams.set('includePreferences', params.includePreferences.toString());\n\n const path = params.sessionId\n ? `/memory/sessions/${params.sessionId}/context`\n : `/memory/profiles/${params.userId}/context`;\n\n return this.request<ContextResult>({\n method: 'GET',\n path: `${path}?${queryParams.toString()}`,\n });\n }\n\n /**\n * Get job status.\n */\n async getJobStatus(jobId: string): Promise<JobStatus> {\n return this.request<JobStatus>({\n method: 'GET',\n path: `/memory/jobs/${jobId}`,\n });\n }\n}\n\n// ===========================================\n// SESSION OPERATIONS\n// ===========================================\n\nclass SessionOperations {\n constructor(private client: MemoryClient) {}\n\n /**\n * Create a new session.\n */\n async create(params?: CreateSessionParams): Promise<Session> {\n return this.client.request<Session>({\n method: 'POST',\n path: '/memory/sessions',\n body: params,\n });\n }\n\n /**\n * Get a session by ID.\n */\n async get(sessionId: string): Promise<Session> {\n return this.client.request<Session>({\n method: 'GET',\n path: `/memory/sessions/${sessionId}`,\n });\n }\n\n /**\n * List sessions.\n */\n async list(params?: ListSessionsParams): Promise<PaginatedResponse<Session>> {\n const queryParams = new URLSearchParams();\n if (params?.status) queryParams.set('status', params.status);\n if (params?.agentId) queryParams.set('agentId', params.agentId);\n if (params?.userId) queryParams.set('userId', params.userId);\n if (params?.search) queryParams.set('search', params.search);\n if (params?.page) queryParams.set('page', params.page.toString());\n if (params?.limit) queryParams.set('limit', params.limit.toString());\n\n return this.client.request<PaginatedResponse<Session>>({\n method: 'GET',\n path: `/memory/sessions?${queryParams.toString()}`,\n });\n }\n\n /**\n * Update a session.\n */\n async update(sessionId: string, params: UpdateSessionParams): Promise<Session> {\n return this.client.request<Session>({\n method: 'PATCH',\n path: `/memory/sessions/${sessionId}`,\n body: params,\n });\n }\n\n /**\n * Delete a session.\n */\n async delete(sessionId: string): Promise<void> {\n await this.client.request<void>({\n method: 'DELETE',\n path: `/memory/sessions/${sessionId}`,\n });\n }\n}\n\n// ===========================================\n// PROFILE OPERATIONS\n// ===========================================\n\nclass ProfileOperations {\n constructor(private client: MemoryClient) {}\n\n /**\n * Get a user profile.\n */\n async get(userId: string): Promise<UserProfile> {\n return this.client.request<UserProfile>({\n method: 'GET',\n path: `/memory/profiles/${userId}`,\n });\n }\n\n /**\n * Create or update a user profile.\n */\n async upsert(userId: string, params: UpsertProfileParams): Promise<UserProfile> {\n return this.client.request<UserProfile>({\n method: 'POST',\n path: `/memory/profiles/${userId}`,\n body: params,\n });\n }\n\n /**\n * Delete a user profile.\n */\n async delete(userId: string): Promise<void> {\n await this.client.request<void>({\n method: 'DELETE',\n path: `/memory/profiles/${userId}`,\n });\n }\n}\n\n// ===========================================\n// GRAPH OPERATIONS\n// ===========================================\n\nclass GraphOperations {\n constructor(private client: MemoryClient) {}\n\n /**\n * Get the knowledge graph.\n */\n async get(params?: GetGraphParams): Promise<GraphResult> {\n const queryParams = new URLSearchParams();\n if (params?.centerEntityId)\n queryParams.set('centerEntityId', params.centerEntityId);\n if (params?.depth) queryParams.set('depth', params.depth.toString());\n if (params?.entityTypes)\n queryParams.set('entityTypes', params.entityTypes.join(','));\n if (params?.edgeTypes)\n queryParams.set('edgeTypes', params.edgeTypes.join(','));\n if (params?.minWeight)\n queryParams.set('minWeight', params.minWeight.toString());\n if (params?.limit) queryParams.set('limit', params.limit.toString());\n\n const path = params?.sessionId\n ? `/memory/sessions/${params.sessionId}/graph`\n : '/memory/graph';\n\n return this.client.request<GraphResult>({\n method: 'GET',\n path: `${path}?${queryParams.toString()}`,\n });\n }\n\n /**\n * Traverse the graph from a starting entity.\n */\n async traverse(params: TraverseParams): Promise<GraphResult> {\n const queryParams = new URLSearchParams();\n queryParams.set('startEntityId', params.startEntityId);\n if (params.depth) queryParams.set('depth', params.depth.toString());\n if (params.direction) queryParams.set('direction', params.direction);\n if (params.entityTypes)\n queryParams.set('entityTypes', params.entityTypes.join(','));\n if (params.edgeTypes)\n queryParams.set('edgeTypes', params.edgeTypes.join(','));\n if (params.minWeight)\n queryParams.set('minWeight', params.minWeight.toString());\n if (params.limit) queryParams.set('limit', params.limit.toString());\n\n return this.client.request<GraphResult>({\n method: 'GET',\n path: `/memory/graph/traverse?${queryParams.toString()}`,\n });\n }\n}\n\n// ===========================================\n// INGEST OPERATIONS\n// ===========================================\n\nclass IngestOperations {\n constructor(private client: MemoryClient) {}\n\n /**\n * Ingest URL content.\n */\n async url(params: IngestUrlParams): Promise<IngestUrlResult> {\n return this.client.request<IngestUrlResult>({\n method: 'POST',\n path: '/memory/ingest/url',\n body: params,\n });\n }\n\n /**\n * Ingest PDF content.\n */\n async pdf(params: IngestPdfParams): Promise<IngestPdfResult> {\n // Create FormData for file upload\n const formData = new FormData();\n\n // Handle Buffer or Blob\n if (Buffer.isBuffer(params.file)) {\n const blob = new Blob([params.file], { type: 'application/pdf' });\n formData.append('file', blob, params.filename);\n } else {\n formData.append('file', params.file, params.filename);\n }\n\n // Add options as JSON\n const options = {\n sessionId: params.sessionId,\n userId: params.userId,\n metadata: params.metadata,\n extractEntities: params.options?.extractEntities,\n generateEmbeddings: params.options?.generateEmbeddings,\n ocrFallback: params.options?.ocrFallback,\n };\n formData.append('options', JSON.stringify(options));\n\n // Make request with FormData\n const url = `${(this.client as any).baseUrl}/memory/ingest/pdf`;\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'X-API-Key': (this.client as any).apiKey,\n },\n body: formData,\n });\n\n if (!response.ok) {\n const text = await response.text();\n let body: unknown;\n try {\n body = JSON.parse(text);\n } catch {\n body = { message: text };\n }\n throw parseApiError(response.status, body as any);\n }\n\n const result = (await response.json()) as { data: IngestPdfResult };\n return result.data;\n }\n\n /**\n * Ingest text content.\n */\n async text(params: IngestTextParams): Promise<IngestTextResult> {\n return this.client.request<IngestTextResult>({\n method: 'POST',\n path: '/memory/ingest',\n body: {\n content: params.content,\n contentType: params.contentType,\n sessionId: params.sessionId,\n metadata: params.metadata,\n },\n });\n }\n}\n","/**\n * Transactional Memory SDK - Type Definitions\n */\n\n// ===========================================\n// CONFIGURATION\n// ===========================================\n\n/**\n * Configuration for MemoryClient.\n */\nexport interface MemoryClientConfig {\n /** API key for authentication */\n apiKey: string;\n /** Base URL for the API (default: https://api.usetransactional.com) */\n baseUrl?: string;\n /** Request timeout in milliseconds (default: 30000) */\n timeout?: number;\n /** Maximum number of retries for failed requests (default: 3) */\n maxRetries?: number;\n /** Custom headers to include in all requests */\n headers?: Record<string, string>;\n}\n\n// ===========================================\n// ENTITY TYPES\n// ===========================================\n\n/**\n * Memory entity types.\n */\nexport enum MemoryEntityType {\n USER = 'user',\n FACT = 'fact',\n TOPIC = 'topic',\n PREFERENCE = 'preference',\n EVENT = 'event',\n MESSAGE = 'message',\n SUMMARY = 'summary',\n ORGANIZATION = 'organization',\n}\n\n/**\n * Memory edge types (relationships).\n */\nexport enum MemoryEdgeType {\n PREFERS = 'prefers',\n MENTIONED = 'mentioned',\n DISCUSSED = 'discussed',\n ASKED_ABOUT = 'asked_about',\n RELATES_TO = 'relates_to',\n FOLLOWS_UP = 'follows_up',\n SUMMARIZES = 'summarizes',\n EXTRACTED_FROM = 'extracted_from',\n WORKS_AT = 'works_at',\n INTERESTED_IN = 'interested_in',\n}\n\n/**\n * Source of a memory fact.\n */\nexport enum MemoryFactSource {\n EXTRACTED = 'extracted',\n EXPLICIT = 'explicit',\n INFERRED = 'inferred',\n}\n\n/**\n * Session status.\n */\nexport enum MemorySessionStatus {\n ACTIVE = 'ACTIVE',\n EXPIRED = 'EXPIRED',\n DELETED = 'DELETED',\n}\n\n/**\n * Message role.\n */\nexport enum MemoryMessageRole {\n USER = 'user',\n ASSISTANT = 'assistant',\n SYSTEM = 'system',\n}\n\n// ===========================================\n// MEMORY ENTITY\n// ===========================================\n\n/**\n * A memory entity.\n */\nexport interface Memory {\n /** Unique entity ID */\n id: string;\n /** Session this entity belongs to */\n sessionId: string;\n /** Entity type */\n type: MemoryEntityType;\n /** Entity name/key */\n name: string;\n /** Additional properties */\n properties: Record<string, unknown>;\n /** Confidence score (0-1) */\n confidence: number;\n /** How the entity was created */\n source: MemoryFactSource;\n /** Relevance score */\n score?: number;\n /** Whether entity has embeddings */\n hasEmbedding?: boolean;\n /** Creation timestamp */\n createdAt: string;\n /** Last update timestamp */\n updatedAt: string;\n}\n\n/**\n * A memory edge (relationship).\n */\nexport interface MemoryEdge {\n /** Unique edge ID */\n id: string;\n /** Source entity ID */\n from: string;\n /** Target entity ID */\n to: string;\n /** Relationship type */\n type: MemoryEdgeType;\n /** Relationship strength (0-1) */\n weight: number;\n /** Additional properties */\n properties: Record<string, unknown>;\n /** Creation timestamp */\n createdAt: string;\n}\n\n// ===========================================\n// SESSION TYPES\n// ===========================================\n\n/**\n * A memory session.\n */\nexport interface Session {\n /** Session ID */\n id: string;\n /** External reference ID */\n externalId: string | null;\n /** Agent/bot ID */\n agentId: string | null;\n /** User ID */\n userId: string | null;\n /** Session status */\n status: MemorySessionStatus;\n /** Session configuration */\n config?: SessionConfig;\n /** Session statistics */\n stats?: {\n entityCount: number;\n edgeCount: number;\n messageCount: number;\n lastActivityAt?: string;\n };\n /** Creation timestamp */\n createdAt: string;\n /** Last update timestamp */\n updatedAt: string;\n /** Expiration timestamp */\n expiresAt: string | null;\n}\n\n/**\n * Session configuration.\n */\nexport interface SessionConfig {\n /** Embedding provider */\n embeddingProvider?: string;\n /** Embedding model */\n embeddingModel?: string;\n /** Auto-extract entities */\n autoExtract?: boolean;\n /** Auto-summarize conversations */\n autoSummarize?: boolean;\n /** Message count threshold for summarization */\n summarizeThreshold?: number;\n}\n\n/**\n * Parameters for creating a session.\n */\nexport interface CreateSessionParams {\n /** External reference ID */\n externalId?: string;\n /** Agent/bot ID */\n agentId?: string;\n /** User ID */\n userId?: string;\n /** Time-to-live in seconds (default: 24 hours) */\n ttl?: number;\n /** Session configuration */\n config?: SessionConfig;\n /** Additional metadata */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Parameters for updating a session.\n */\nexport interface UpdateSessionParams {\n /** New TTL in seconds */\n ttl?: number;\n /** Configuration updates */\n config?: Partial<SessionConfig>;\n /** Metadata updates */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Parameters for listing sessions.\n */\nexport interface ListSessionsParams {\n /** Filter by status */\n status?: MemorySessionStatus;\n /** Filter by agent ID */\n agentId?: string;\n /** Filter by user ID */\n userId?: string;\n /** Search in external ID or agent ID */\n search?: string;\n /** Page number (1-based) */\n page?: number;\n /** Results per page (default: 20, max: 100) */\n limit?: number;\n}\n\n// ===========================================\n// MEMORY OPERATIONS\n// ===========================================\n\n/**\n * Parameters for adding a memory.\n */\nexport interface AddMemoryParams {\n /** Content to add */\n content: string;\n /** Session ID */\n sessionId?: string;\n /** User ID */\n userId?: string;\n /** Entity type */\n type?: MemoryEntityType;\n /** Additional metadata */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Result from adding a memory.\n */\nexport interface AddMemoryResult {\n /** Created entity ID */\n id: string;\n /** Session ID */\n sessionId: string;\n /** Processing status */\n status: 'processing' | 'completed';\n}\n\n/**\n * Parameters for updating a memory.\n */\nexport interface UpdateMemoryParams {\n /** New name */\n name?: string;\n /** New properties */\n properties?: Record<string, unknown>;\n /** New confidence */\n confidence?: number;\n}\n\n// ===========================================\n// SEARCH TYPES\n// ===========================================\n\n/**\n * Search strategy.\n */\nexport type SearchStrategy = 'auto' | 'keyword' | 'semantic' | 'hybrid';\n\n/**\n * Parameters for searching memories.\n */\nexport interface SearchParams {\n /** Search query */\n query: string;\n /** Scope to specific session */\n sessionId?: string;\n /** Scope to specific sessions */\n sessionIds?: string[];\n /** Filter by user ID */\n userId?: string;\n /** Filter by entity types */\n types?: MemoryEntityType[];\n /** Search strategy */\n strategy?: SearchStrategy;\n /** Minimum similarity threshold (0-1, default: 0.7) */\n threshold?: number;\n /** Maximum results (default: 10, max: 50) */\n limit?: number;\n /** Include related entities */\n includeRelated?: boolean;\n}\n\n/**\n * A search hit.\n */\nexport interface SearchHit {\n /** The matching entity */\n entity: Memory;\n /** Relevance score (0-1) */\n score: number;\n /** How the match was found */\n matchType: 'keyword' | 'semantic' | 'hybrid';\n /** Text highlights */\n highlights: string[];\n /** Related entities */\n relatedEntities?: Array<{\n id: string;\n type: MemoryEntityType;\n name: string;\n }>;\n}\n\n/**\n * Search result.\n */\nexport interface SearchResult {\n /** Search hits */\n results: SearchHit[];\n /** Query information */\n query: {\n original: string;\n tokens: number;\n };\n /** Metadata */\n meta: {\n strategy: SearchStrategy;\n searchTime: number;\n totalMatches: number;\n };\n}\n\n// ===========================================\n// CONTEXT TYPES\n// ===========================================\n\n/**\n * Parameters for getting context.\n */\nexport interface GetContextParams {\n /** User ID */\n userId: string;\n /** Session ID */\n sessionId?: string;\n /** Focus query */\n query?: string;\n /** Maximum tokens (default: 4000) */\n maxTokens?: number;\n /** Include user profile */\n includeProfile?: boolean;\n /** Include facts */\n includeFacts?: boolean;\n /** Include preferences */\n includePreferences?: boolean;\n}\n\n/**\n * Context result.\n */\nexport interface ContextResult {\n /** Formatted context string for LLM */\n context: string;\n /** Token count */\n tokenCount: number;\n /** User profile */\n profile?: {\n userId: string;\n name?: string;\n preferences: Record<string, unknown>;\n };\n /** Facts */\n facts: Array<{\n key: string;\n value: unknown;\n confidence: number;\n }>;\n /** Preferences */\n preferences: Array<{\n name: string;\n value: unknown;\n }>;\n /** Recent topics */\n recentTopics: Array<{\n name: string;\n sentiment?: string;\n lastDiscussed: string;\n }>;\n}\n\n// ===========================================\n// INGEST TYPES\n// ===========================================\n\n/**\n * Parameters for URL ingestion.\n */\nexport interface IngestUrlParams {\n /** URL to ingest */\n url: string;\n /** Session ID */\n sessionId?: string;\n /** User ID */\n userId?: string;\n /** Additional metadata */\n metadata?: Record<string, unknown>;\n /** Options */\n options?: {\n extractEntities?: boolean;\n generateEmbeddings?: boolean;\n chunkSize?: number;\n chunkOverlap?: number;\n };\n}\n\n/**\n * Result from URL ingestion.\n */\nexport interface IngestUrlResult {\n /** Memory ID */\n memoryId: string;\n /** Job ID (for async tracking) */\n jobId?: string;\n /** Final URL after redirects */\n url: string;\n /** Page title */\n title: string;\n /** Page description */\n description?: string;\n /** Author */\n author?: string;\n /** Published date */\n publishedDate?: string;\n /** Site name */\n siteName?: string;\n /** Content length */\n contentLength: number;\n /** Number of chunks */\n chunks: number;\n /** Extracted entities */\n entities: Array<{\n type: MemoryEntityType;\n name: string;\n value?: string;\n confidence: number;\n }>;\n /** Processing time in ms */\n processingTime: number;\n /** Status */\n status: 'processing' | 'completed';\n}\n\n/**\n * Parameters for PDF ingestion.\n */\nexport interface IngestPdfParams {\n /** PDF file (Buffer or Blob) */\n file: Buffer | Blob;\n /** Filename */\n filename: string;\n /** Session ID */\n sessionId?: string;\n /** User ID */\n userId?: string;\n /** Additional metadata */\n metadata?: Record<string, unknown>;\n /** Options */\n options?: {\n extractEntities?: boolean;\n generateEmbeddings?: boolean;\n ocrFallback?: boolean;\n };\n}\n\n/**\n * Result from PDF ingestion.\n */\nexport interface IngestPdfResult {\n /** Memory ID */\n memoryId: string;\n /** Job ID */\n jobId: string;\n /** Filename */\n filename: string;\n /** Document title */\n title: string;\n /** Author */\n author?: string;\n /** Creation date */\n createdDate?: string;\n /** Page count */\n pageCount: number;\n /** Content length */\n contentLength: number;\n /** Number of chunks */\n chunks: number;\n /** Extracted entities */\n entities: Array<{\n type: MemoryEntityType;\n name: string;\n value?: string;\n confidence: number;\n }>;\n /** Has images */\n hasImages: boolean;\n /** Has tables */\n hasTables: boolean;\n /** Processing time in ms */\n processingTime: number;\n /** Status */\n status: 'processing' | 'completed';\n}\n\n/**\n * Parameters for text ingestion.\n */\nexport interface IngestTextParams {\n /** Text content */\n content: string;\n /** Content type */\n contentType?: 'text' | 'json' | 'markdown' | 'code';\n /** Session ID */\n sessionId?: string;\n /** Additional metadata */\n metadata?: Record<string, unknown>;\n}\n\n/**\n * Result from text ingestion.\n */\nexport interface IngestTextResult {\n /** Session ID */\n sessionId: string;\n /** Message ID */\n messageId: string;\n /** Content type */\n contentType: string;\n /** Status */\n status: 'processing' | 'completed';\n /** Whether a new session was created */\n isNewSession: boolean;\n}\n\n// ===========================================\n// PROFILE TYPES\n// ===========================================\n\n/**\n * User profile.\n */\nexport interface UserProfile {\n /** Profile ID */\n id: number;\n /** User ID */\n userId: string;\n /** Static facts */\n staticFacts: {\n name?: string;\n role?: string;\n company?: string;\n timezone?: string;\n language?: string;\n email?: string;\n preferences?: Record<string, unknown>;\n [key: string]: unknown;\n };\n /** Dynamic facts */\n dynamicFacts: {\n recentTopics?: string[];\n interests?: string[];\n painPoints?: string[];\n goals?: string[];\n expertise?: string[];\n sentimentHistory?: Array<{ date: string; sentiment: string }>;\n [key: string]: unknown;\n };\n /** Total fact count */\n factCount: number;\n /** Total session count */\n sessionCount: number;\n /** Last session ID */\n lastSessionId: string | null;\n /** Creation timestamp */\n createdAt: string;\n /** Last update timestamp */\n updatedAt: string;\n /** Last activity timestamp */\n lastActiveAt: string | null;\n}\n\n/**\n * Parameters for upserting a profile.\n */\nexport interface UpsertProfileParams {\n /** Static facts to set/update */\n staticFacts?: Partial<UserProfile['staticFacts']>;\n /** Dynamic facts to set/update */\n dynamicFacts?: Partial<UserProfile['dynamicFacts']>;\n}\n\n// ===========================================\n// GRAPH TYPES\n// ===========================================\n\n/**\n * Graph node.\n */\nexport interface GraphNode {\n /** Node ID */\n id: string;\n /** Entity type */\n type: MemoryEntityType;\n /** Display name */\n name: string;\n /** Properties */\n properties: Record<string, unknown>;\n /** Score */\n score: number;\n /** Confidence */\n confidence: number;\n}\n\n/**\n * Graph edge.\n */\nexport interface GraphEdge {\n /** Edge ID */\n id: string;\n /** Source node ID */\n source: string;\n /** Target node ID */\n target: string;\n /** Relationship type */\n type: MemoryEdgeType;\n /** Weight */\n weight: number;\n /** Properties */\n properties: Record<string, unknown>;\n}\n\n/**\n * Graph result.\n */\nexport interface GraphResult {\n /** Nodes */\n nodes: GraphNode[];\n /** Edges */\n edges: GraphEdge[];\n /** Stats */\n stats: {\n totalNodes: number;\n totalEdges: number;\n depth: number;\n };\n}\n\n/**\n * Parameters for getting graph.\n */\nexport interface GetGraphParams {\n /** Session ID */\n sessionId?: string;\n /** Center entity ID */\n centerEntityId?: string;\n /** Traversal depth */\n depth?: number;\n /** Filter by entity types */\n entityTypes?: MemoryEntityType[];\n /** Filter by edge types */\n edgeTypes?: MemoryEdgeType[];\n /** Minimum edge weight */\n minWeight?: number;\n /** Maximum nodes */\n limit?: number;\n}\n\n/**\n * Parameters for graph traversal.\n */\nexport interface TraverseParams {\n /** Starting entity ID */\n startEntityId: string;\n /** Traversal depth */\n depth?: number;\n /** Direction */\n direction?: 'outbound' | 'inbound' | 'any';\n /** Filter by entity types */\n entityTypes?: MemoryEntityType[];\n /** Filter by edge types */\n edgeTypes?: MemoryEdgeType[];\n /** Minimum edge weight */\n minWeight?: number;\n /** Maximum nodes */\n limit?: number;\n}\n\n// ===========================================\n// API RESPONSE TYPES\n// ===========================================\n\n/**\n * Paginated list response.\n */\nexport interface PaginatedResponse<T> {\n /** Data items */\n data: T[];\n /** Pagination metadata */\n meta: {\n page: number;\n limit: number;\n total: number;\n totalPages: number;\n };\n}\n\n/**\n * Job status response.\n */\nexport interface JobStatus {\n /** Job ID */\n jobId: string;\n /** Status */\n status: 'pending' | 'processing' | 'completed' | 'failed';\n /** Progress (0-100) */\n progress?: number;\n /** Result data */\n result?: unknown;\n /** Error message */\n error?: string;\n /** Created at */\n createdAt: string;\n /** Completed at */\n completedAt?: string;\n}\n"]}
|