@memnexus-ai/typescript-sdk 1.58.9 → 1.59.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/dist/index.cjs +6 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +57 -0
- package/dist/index.d.ts +57 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/http/http-types.ts","../src/http/handlers.ts","../src/http/http-client.ts","../src/http/base-service.ts","../src/http/serialization.ts","../src/http/request-builder.ts","../src/services/users-service.ts","../src/services/topics-service.ts","../src/services/system-service.ts","../src/services/patterns-service.ts","../src/services/behavior-service.ts","../src/services/recommendations-service.ts","../src/services/narratives-service.ts","../src/services/monitoring-service.ts","../src/services/memories-service.ts","../src/services/invites-service.ts","../src/services/health-service.ts","../src/services/graphrag-service.ts","../src/services/facts-service.ts","../src/services/entities-service.ts","../src/services/conversations-service.ts","../src/services/billing-service.ts","../src/services/artifacts-service.ts","../src/services/api-keys-service.ts","../src/services/alerts-service.ts","../src/services/admin-service.ts","../src/services/admin-alerts-service.ts","../src/services/admin-pipeline-service.ts","../src/models/schemas.ts","../src/index.ts"],"sourcesContent":["/**\n * HTTP types for the SDK.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type { ZodType } from 'zod';\n\n/** HTTP methods supported by the SDK */\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';\n\n/** OpenAPI parameter serialization styles */\nexport enum SerializationStyle {\n SIMPLE = 'simple',\n LABEL = 'label',\n MATRIX = 'matrix',\n FORM = 'form',\n SPACE_DELIMITED = 'space_delimited',\n PIPE_DELIMITED = 'pipe_delimited',\n DEEP_OBJECT = 'deep_object',\n NONE = 'none',\n}\n\n/** Content types */\nexport enum ContentType {\n Json = 'json',\n Xml = 'xml',\n Pdf = 'pdf',\n Image = 'image',\n File = 'file',\n Binary = 'binary',\n FormUrlEncoded = 'form',\n Text = 'text',\n MultipartFormData = 'multipartFormData',\n EventStream = 'eventStream',\n NoContent = 'noContent',\n}\n\n/** HTTP request structure */\nexport interface HttpRequest {\n baseUrl: string;\n method: HttpMethod;\n path: string;\n headers: Map<string, unknown>;\n body?: BodyInit;\n abortSignal?: AbortSignal;\n queryParams: Map<string, unknown>;\n pathParams: Map<string, unknown>;\n}\n\n/** HTTP response metadata */\nexport interface HttpMetadata {\n status: number;\n statusText: string;\n headers: Record<string, string>;\n}\n\n/** HTTP response */\nexport interface HttpResponse<T = unknown> {\n data?: T;\n metadata: HttpMetadata;\n raw: ArrayBuffer;\n}\n\n/** HTTP error response */\nexport interface HttpError {\n error: string;\n metadata: HttpMetadata;\n}\n\n/** SDK configuration */\nexport interface SdkConfig {\n baseUrl?: string;\n environment?: Environment;\n timeoutMs?: number;\n token?: string;\n retry?: RetryOptions;\n validation?: ValidationOptions;\n}\n\n/** Available environments */\nexport enum Environment {\n DEFAULT = 'http://localhost:3000',\n}\n\n/** Retry options */\nexport interface RetryOptions {\n attempts: number;\n delayMs?: number;\n maxDelayMs?: number;\n jitterMs?: number;\n backoffFactor?: number;\n httpCodesToRetry?: number[];\n httpMethodsToRetry?: string[];\n}\n\n/** Validation options */\nexport interface ValidationOptions {\n responseValidation?: boolean;\n}\n\n/** Request parameter with serialization info */\nexport interface RequestParameter {\n key: string | undefined;\n value: unknown;\n explode: boolean;\n encode: boolean;\n style: SerializationStyle;\n isLimit: boolean;\n isOffset: boolean;\n isCursor: boolean;\n}\n\n/** Response definition for validation */\nexport interface ResponseDefinition {\n schema: ZodType;\n contentType: ContentType;\n status: number;\n}\n\n/** Error definition */\nexport interface ErrorDefinition {\n error: new (...args: any[]) => Error;\n contentType: ContentType;\n status: number;\n}\n\n/** Hook interface for request/response interception */\nexport interface Hook {\n beforeRequest(request: HttpRequest, params: Map<string, string>): Promise<HttpRequest>;\n afterResponse(request: HttpRequest, response: HttpResponse<any>, params: Map<string, string>): Promise<HttpResponse<any>>;\n onError(request: HttpRequest, response: HttpResponse<any>, params: Map<string, string>): Promise<HttpError>;\n}\n\n/**\n * Typed error thrown by the SDK for non-2xx HTTP responses.\n * Use `instanceof SdkError` to catch API errors and access the status code directly.\n *\n * @example\n * ```ts\n * try {\n * await sdk.memories.createMemory({ name: 'my-note', content: '...' });\n * } catch (e) {\n * if (e instanceof SdkError && e.status === 409) {\n * // Named memory already exists — upsert via updateNamedMemory\n * }\n * }\n * ```\n */\nexport class SdkError extends Error {\n constructor(\n /** HTTP status code (e.g. 404, 409) */\n public readonly status: number,\n /** HTTP status text (e.g. \"Not Found\") */\n public readonly statusText: string,\n /** Parsed response body, if any */\n public readonly data: unknown,\n message: string\n ) {\n super(message);\n this.name = 'SdkError';\n // Maintain correct prototype chain for instanceof across transpilation targets\n Object.setPrototypeOf(this, SdkError.prototype);\n }\n}\n","/**\n * Request handlers for the handler chain.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { SdkError } from './http-types.js';\nimport type {\n HttpRequest,\n HttpResponse,\n HttpError,\n Hook,\n RetryOptions,\n} from './http-types.js';\nimport type { Request } from './request-builder.js';\n\n/** Handler interface */\nexport interface RequestHandler {\n handle<T>(request: Request): Promise<HttpResponse<T>>;\n setNext(handler: RequestHandler): RequestHandler;\n}\n\n/**\n * Base handler with chain support\n */\nabstract class BaseHandler implements RequestHandler {\n protected nextHandler?: RequestHandler;\n\n setNext(handler: RequestHandler): RequestHandler {\n this.nextHandler = handler;\n return handler;\n }\n\n abstract handle<T>(request: Request): Promise<HttpResponse<T>>;\n\n protected async callNext<T>(request: Request): Promise<HttpResponse<T>> {\n if (!this.nextHandler) {\n throw new Error('No next handler in chain');\n }\n return this.nextHandler.handle<T>(request);\n }\n}\n\n/**\n * Retry handler with exponential backoff\n */\nexport class RetryHandler extends BaseHandler {\n private readonly maxAttempts: number;\n private readonly delayMs: number;\n private readonly maxDelayMs: number;\n private readonly jitterMs: number;\n private readonly backoffFactor: number;\n private readonly httpCodesToRetry: Set<number>;\n private readonly httpMethodsToRetry: Set<string>;\n\n constructor(options?: RetryOptions) {\n super();\n this.maxAttempts = options?.attempts ?? 3;\n this.delayMs = options?.delayMs ?? 150;\n this.maxDelayMs = options?.maxDelayMs ?? 5000;\n this.jitterMs = options?.jitterMs ?? 50;\n this.backoffFactor = options?.backoffFactor ?? 2;\n this.httpCodesToRetry = new Set(options?.httpCodesToRetry ?? [408,429,500,502,503,504]);\n this.httpMethodsToRetry = new Set(options?.httpMethodsToRetry ?? [\"GET\",\"POST\",\"PUT\",\"DELETE\",\"PATCH\",\"HEAD\",\"OPTIONS\"]);\n }\n\n async handle<T>(request: Request): Promise<HttpResponse<T>> {\n let lastError: Error | undefined;\n let attempt = 0;\n\n while (attempt < this.maxAttempts) {\n try {\n const response = await this.callNext<T>(request);\n\n // Check if we should retry based on status code\n if (this.shouldRetry(request.method, response.metadata.status)) {\n lastError = new Error(`HTTP ${response.metadata.status}`);\n attempt++;\n await this.delay(attempt);\n continue;\n }\n\n return response;\n } catch (error) {\n lastError = error as Error;\n attempt++;\n\n if (attempt >= this.maxAttempts) {\n break;\n }\n\n await this.delay(attempt);\n }\n }\n\n throw lastError || new Error('Max retry attempts reached');\n }\n\n private shouldRetry(method: string, status: number): boolean {\n return this.httpMethodsToRetry.has(method) && this.httpCodesToRetry.has(status);\n }\n\n private async delay(attempt: number): Promise<void> {\n const exponentialDelay = this.delayMs * Math.pow(this.backoffFactor, attempt - 1);\n const jitter = Math.random() * this.jitterMs;\n const delay = Math.min(exponentialDelay + jitter, this.maxDelayMs);\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n}\n\n/**\n * Validation handler for request/response validation\n */\nexport class ValidationHandler extends BaseHandler {\n async handle<T>(request: Request): Promise<HttpResponse<T>> {\n // Validate request body if schema provided\n if (request.requestSchema && request.body) {\n const result = request.requestSchema.safeParse(request.body);\n if (!result.success) {\n throw new Error(`Request validation failed: ${result.error.message}`);\n }\n }\n\n const response = await this.callNext<T>(request);\n\n // Validate response if enabled and schema available\n if (request.validation?.responseValidation && response.data) {\n const matchingResponse = request.responses.find(\n (r) => r.status === response.metadata.status\n );\n if (matchingResponse) {\n const result = matchingResponse.schema.safeParse(response.data);\n if (!result.success) {\n throw new Error(`Response validation failed: ${result.error.message}`);\n }\n }\n }\n\n return response;\n }\n}\n\n/**\n * Hook handler for request/response interception\n */\nexport class HookHandler extends BaseHandler {\n private readonly hook: Hook;\n\n constructor(hook: Hook) {\n super();\n this.hook = hook;\n }\n\n async handle<T>(request: Request): Promise<HttpResponse<T>> {\n // Build HttpRequest for hook\n const httpRequest: HttpRequest = {\n baseUrl: request.baseUrl,\n method: request.method,\n path: request.path,\n headers: new Map(Object.entries(request.getHeaders())),\n queryParams: new Map(),\n pathParams: new Map(),\n body: request.body as BodyInit,\n };\n\n // Call beforeRequest hook\n const modifiedRequest = await this.hook.beforeRequest(httpRequest, new Map());\n\n // Execute the request\n const response = await this.callNext<T>(request);\n\n // Call afterResponse hook\n const modifiedResponse = await this.hook.afterResponse(modifiedRequest, response, new Map());\n\n return modifiedResponse as HttpResponse<T>;\n }\n}\n\n/**\n * Execute handler - actually performs the HTTP request\n */\nexport class ExecuteHandler extends BaseHandler {\n async handle<T>(request: Request): Promise<HttpResponse<T>> {\n const url = request.constructFullUrl();\n const headers = request.getHeaders();\n\n // Add content type for JSON bodies\n if (request.body && typeof request.body === 'object') {\n headers['Content-Type'] = 'application/json';\n }\n\n // Add authorization header if token is set\n if (request.config.token) {\n headers['Authorization'] = `Bearer ${request.config.token}`;\n }\n\n const fetchOptions: RequestInit = {\n method: request.method,\n headers,\n };\n\n // Add body for non-GET requests\n if (request.body && request.method !== 'GET') {\n fetchOptions.body = typeof request.body === 'string'\n ? request.body\n : JSON.stringify(request.body);\n }\n\n // Add timeout if configured\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n if (request.config.timeoutMs) {\n const controller = new AbortController();\n timeoutId = setTimeout(() => controller.abort(), request.config.timeoutMs);\n fetchOptions.signal = controller.signal;\n }\n\n try {\n const response = await fetch(url, fetchOptions);\n\n // Get response headers\n const responseHeaders: Record<string, string> = {};\n response.headers.forEach((value, key) => {\n responseHeaders[key] = value;\n });\n\n // Parse response body\n const raw = await response.arrayBuffer();\n let data: T | undefined;\n\n const contentType = response.headers.get('content-type') || '';\n if (contentType.includes('application/json') && raw.byteLength > 0) {\n const text = new TextDecoder().decode(raw);\n try {\n data = JSON.parse(text) as T;\n } catch {\n // Not valid JSON, leave data undefined\n }\n }\n\n const httpResponse: HttpResponse<T> = {\n data,\n metadata: {\n status: response.status,\n statusText: response.statusText,\n headers: responseHeaders,\n },\n raw,\n };\n\n // Throw on error status codes\n if (!response.ok) {\n throw new SdkError(response.status, response.statusText, data, `HTTP ${response.status}: ${response.statusText}`);\n }\n\n return httpResponse;\n } finally {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n }\n }\n}\n\n/**\n * Default hook implementation (pass-through)\n */\nexport class CustomHook implements Hook {\n async beforeRequest(request: HttpRequest, params: Map<string, string>): Promise<HttpRequest> {\n return request;\n }\n\n async afterResponse(\n request: HttpRequest,\n response: HttpResponse<any>,\n params: Map<string, string>\n ): Promise<HttpResponse<any>> {\n return response;\n }\n\n async onError(\n request: HttpRequest,\n response: HttpResponse<any>,\n params: Map<string, string>\n ): Promise<HttpError> {\n return {\n error: response.metadata.statusText,\n metadata: response.metadata,\n };\n }\n}\n","/**\n * HTTP client for making API requests.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type {\n HttpResponse,\n SdkConfig,\n Hook,\n} from './http-types.js';\nimport type { Request } from './request-builder.js';\nimport { RetryHandler } from './handlers.js';\nimport { ValidationHandler } from './handlers.js';\nimport { HookHandler } from './handlers.js';\nimport { ExecuteHandler } from './handlers.js';\nimport { CustomHook } from './handlers.js';\n\n/** Handler interface */\ninterface RequestHandler {\n handle<T>(request: Request): Promise<HttpResponse<T>>;\n setNext(handler: RequestHandler): RequestHandler;\n}\n\n/**\n * Core HTTP client with handler chain.\n */\nexport class HttpClient {\n private config: SdkConfig;\n private readonly requestHandlerChain: RequestHandler;\n\n constructor(config: SdkConfig, hook?: Hook) {\n this.config = config;\n\n // Build handler chain: Retry -> Validation -> Hook -> Execute\n const executeHandler = new ExecuteHandler();\n const hookHandler = new HookHandler(hook || new CustomHook());\n const validationHandler = new ValidationHandler();\n const retryHandler = new RetryHandler(config.retry);\n\n retryHandler.setNext(validationHandler);\n validationHandler.setNext(hookHandler);\n hookHandler.setNext(executeHandler);\n\n this.requestHandlerChain = retryHandler;\n }\n\n /**\n * Execute an HTTP request\n */\n async call<T>(request: Request): Promise<HttpResponse<T>> {\n return this.requestHandlerChain.handle<T>(request);\n }\n\n /**\n * Update base URL\n */\n setBaseUrl(url: string): void {\n this.config.baseUrl = url;\n }\n\n /**\n * Update config\n */\n setConfig(config: SdkConfig): void {\n this.config = config;\n }\n}\n","/**\n * Base service class that all API services extend.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type { SdkConfig, Environment } from './http-types.js';\nimport { HttpClient } from './http-client.js';\n\n/**\n * Base class for all API service classes.\n */\nexport class BaseService {\n protected config: SdkConfig;\n protected client: HttpClient;\n\n constructor(config: SdkConfig) {\n this.config = config;\n this.client = new HttpClient(config);\n }\n\n /**\n * Set the base URL for API requests\n */\n set baseUrl(baseUrl: string) {\n this.config.baseUrl = baseUrl;\n this.client.setBaseUrl(baseUrl);\n }\n\n /**\n * Set the environment\n */\n set environment(environment: Environment) {\n this.config.environment = environment;\n this.client.setBaseUrl(environment);\n }\n\n /**\n * Set the request timeout in milliseconds\n */\n set timeoutMs(timeoutMs: number) {\n this.config.timeoutMs = timeoutMs;\n }\n\n /**\n * Set the bearer token for authentication\n */\n set token(token: string) {\n this.config.token = token;\n }\n}\n","/**\n * Parameter serialization utilities.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type { RequestParameter, SerializationStyle } from './http-types.js';\n\n/**\n * Serialize a parameter value based on its style\n */\nexport function serializeParameter(param: RequestParameter): unknown {\n const { value, style, explode } = param;\n\n if (value === undefined || value === null) {\n return undefined;\n }\n\n // Primitive values don't need special serialization\n if (typeof value !== 'object') {\n return value;\n }\n\n // Array serialization\n if (Array.isArray(value)) {\n return serializeArray(value, style as SerializationStyle, explode);\n }\n\n // Object serialization\n return serializeObject(value as Record<string, unknown>, style as SerializationStyle, explode);\n}\n\n/**\n * Serialize an array value\n */\nfunction serializeArray(\n value: unknown[],\n style: SerializationStyle,\n explode: boolean\n): string | string[] {\n if (explode) {\n return value.map(String);\n }\n\n switch (style) {\n case 'simple':\n return value.join(',');\n case 'label':\n return '.' + value.join('.');\n case 'matrix':\n return ';' + value.join(';');\n case 'form':\n return value.join(',');\n case 'space_delimited':\n return value.join(' ');\n case 'pipe_delimited':\n return value.join('|');\n default:\n return value.join(',');\n }\n}\n\n/**\n * Serialize an object value\n */\nfunction serializeObject(\n value: Record<string, unknown>,\n style: SerializationStyle,\n explode: boolean\n): string | Record<string, string> {\n const entries = Object.entries(value).filter(([_, v]) => v !== undefined);\n\n if (style === 'deep_object') {\n // For deep object, we return the object as-is for query param handling\n return Object.fromEntries(entries.map(([k, v]) => [k, String(v)]));\n }\n\n if (explode) {\n return Object.fromEntries(entries.map(([k, v]) => [k, String(v)]));\n }\n\n // Non-exploded object serialization\n const pairs = entries.flatMap(([k, v]) => [k, String(v)]);\n\n switch (style) {\n case 'simple':\n return pairs.join(',');\n case 'label':\n return '.' + pairs.join('.');\n case 'matrix':\n return ';' + pairs.join(';');\n case 'form':\n return pairs.join(',');\n default:\n return pairs.join(',');\n }\n}\n\nexport type { SerializationStyle };\n","/**\n * Request builder for constructing HTTP requests.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type { ZodType } from 'zod';\nimport type {\n HttpMethod,\n SdkConfig,\n RequestParameter,\n ResponseDefinition,\n ErrorDefinition,\n ContentType,\n RetryOptions,\n ValidationOptions,\n SerializationStyle,\n} from './http-types.js';\nimport { serializeParameter } from './serialization.js';\n\n/** Request creation parameters */\nexport interface CreateRequestParameters {\n baseUrl: string;\n method: HttpMethod;\n path: string;\n config: SdkConfig;\n headers?: Map<string, RequestParameter>;\n queryParams?: Map<string, RequestParameter>;\n pathParams?: Map<string, RequestParameter>;\n body?: unknown;\n responses?: ResponseDefinition[];\n errors?: ErrorDefinition[];\n requestSchema?: ZodType;\n requestContentType?: ContentType;\n validation?: ValidationOptions;\n retry?: RetryOptions;\n}\n\n/**\n * HTTP Request object\n */\nexport class Request {\n readonly baseUrl: string;\n readonly method: HttpMethod;\n readonly path: string;\n readonly config: SdkConfig;\n readonly headers: Map<string, RequestParameter>;\n readonly queryParams: Map<string, RequestParameter>;\n readonly pathParams: Map<string, RequestParameter>;\n body?: unknown;\n readonly responses: ResponseDefinition[];\n readonly errors: ErrorDefinition[];\n readonly requestSchema?: ZodType;\n readonly requestContentType?: ContentType;\n readonly validation: ValidationOptions;\n readonly retry: RetryOptions;\n\n constructor(params: CreateRequestParameters) {\n this.baseUrl = params.baseUrl;\n this.method = params.method;\n this.path = params.path;\n this.config = params.config;\n this.headers = params.headers || new Map();\n this.queryParams = params.queryParams || new Map();\n this.pathParams = params.pathParams || new Map();\n this.body = params.body;\n this.responses = params.responses || [];\n this.errors = params.errors || [];\n this.requestSchema = params.requestSchema;\n this.requestContentType = params.requestContentType;\n this.validation = params.validation || {};\n this.retry = params.retry || { attempts: 1 };\n }\n\n /**\n * Add a header parameter\n */\n addHeaderParam(key: string, param: RequestParameter): void {\n this.headers.set(key, param);\n }\n\n /**\n * Add a query parameter\n */\n addQueryParam(key: string, param: RequestParameter): void {\n this.queryParams.set(key, param);\n }\n\n /**\n * Add a path parameter\n */\n addPathParam(key: string, param: RequestParameter): void {\n this.pathParams.set(key, param);\n }\n\n /**\n * Set the request body\n */\n addBody(body: unknown): void {\n this.body = body;\n }\n\n /**\n * Construct the full URL with path and query parameters\n */\n constructFullUrl(): string {\n // Substitute path parameters\n let url = this.path;\n for (const [key, param] of this.pathParams) {\n const value = serializeParameter(param);\n url = url.replace(`{${key}}`, encodeURIComponent(String(value)));\n }\n\n // Add query parameters\n const queryString = this.buildQueryString();\n if (queryString) {\n url += `?${queryString}`;\n }\n\n return `${this.baseUrl}${url}`;\n }\n\n /**\n * Get serialized headers\n */\n getHeaders(): Record<string, string> {\n const headers: Record<string, string> = {};\n\n for (const [key, param] of this.headers) {\n const value = serializeParameter(param);\n if (value !== undefined && value !== null) {\n headers[key] = String(value);\n }\n }\n\n return headers;\n }\n\n /**\n * Build query string from parameters\n */\n private buildQueryString(): string {\n const parts: string[] = [];\n\n for (const [key, param] of this.queryParams) {\n const serialized = serializeQueryParam(key, param);\n if (serialized) {\n parts.push(serialized);\n }\n }\n\n return parts.join('&');\n }\n}\n\n/**\n * Serialize a query parameter\n */\nfunction serializeQueryParam(key: string, param: RequestParameter): string | null {\n const value = param.value;\n if (value === undefined || value === null) {\n return null;\n }\n\n // Handle arrays\n if (Array.isArray(value)) {\n if (param.explode) {\n return value.map((v) => `${encodeURIComponent(key)}=${encodeURIComponent(String(v))}`).join('&');\n }\n return `${encodeURIComponent(key)}=${value.map((v) => encodeURIComponent(String(v))).join(',')}`;\n }\n\n // Handle objects (deep object style)\n if (typeof value === 'object') {\n if (param.style === 'deep_object' as any) {\n return Object.entries(value)\n .map(([k, v]) => `${encodeURIComponent(key)}[${encodeURIComponent(k)}]=${encodeURIComponent(String(v))}`)\n .join('&');\n }\n // Form style\n return Object.entries(value)\n .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`)\n .join('&');\n }\n\n // Primitive value\n return `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`;\n}\n","/**\n * UsersService - User management and profile endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { User, UserUsage, Memory, Conversation, Fact, Pattern } from '../models/types.js';\n\n/**\n * User management and profile endpoints\n */\nexport class UsersService extends BaseService {\n\n /**\n * Sync user from WorkOS\n * Called by the customer portal after WorkOS authentication.\nCreates a new user if they don't exist, or updates their profile if they do.\nThis is the main entry point for user provisioning.\nWhen the invite gate is closed and a new user is created, the inviteCode\nis redeemed atomically to track which code was used for registration.\n\n * @param body - Request body\n */\n async syncUser(body: { workosId: string; email: string; firstName?: string; lastName?: string; profilePictureUrl?: string; inviteCode?: string }): Promise<HttpResponse<{ data?: User; created?: boolean }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/users/sync',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get current user\n * Get the currently authenticated user's profile and usage information\n */\n async getCurrentUser(): Promise<HttpResponse<{ data?: User; usage?: UserUsage }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/users/me',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Update current user\n * Update the currently authenticated user's profile\n * @param body - Request body\n */\n async updateCurrentUser(options?: { body?: { firstName?: string; lastName?: string; profilePictureUrl?: string } }): Promise<HttpResponse<{ data?: User }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PATCH',\n path: '/api/users/me',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get current user's usage\n * Get the currently authenticated user's memory usage statistics\n */\n async getCurrentUserUsage(): Promise<HttpResponse<{ data?: UserUsage }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/users/me/usage',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Export all user data\n * Export all user data as a JSON archive. Includes profile, memories,\nconversations, facts, and patterns. Supports GDPR Article 20\n(right to data portability). Sensitive fields (Stripe customer ID,\nWorkOS ID, embeddings) are excluded.\n\n */\n async exportUserData(): Promise<HttpResponse<{ exportVersion?: string; exportedAt?: string; counts?: { memories?: number; conversations?: number; facts?: number; patterns?: number }; profile?: Record<string, unknown>; memories?: Memory[]; conversations?: Conversation[]; facts?: Fact[]; patterns?: Pattern[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/users/me/export',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Initiate account deletion\n * Schedule the current user's account for deletion after a 7-day grace period.\nRequires email confirmation. Immediately revokes API keys and cancels\nany active subscription. The account enters read-only mode.\n\n * @param body - Request body\n */\n async initiateAccountDeletion(body: { confirmationEmail: string }): Promise<HttpResponse<{ data?: User; message?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/users/me/deletion',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Cancel account deletion\n * Cancel a pending account deletion during the grace period.\nNote: Previously revoked API keys are not restored — new keys must be created.\nStripe subscription may need manual reactivation via the billing portal.\n\n */\n async cancelAccountDeletion(): Promise<HttpResponse<{ data?: User; message?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/users/me/deletion',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Get user by ID\n * Get a user by their internal ID (admin only)\n * @param id - \n */\n async getUserById(id: string): Promise<HttpResponse<{ data?: User }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/users/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n}","/**\n * TopicsService - Topic detection, clustering, and management endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Topic, Community } from '../models/types.js';\n\n/**\n * Topic detection, clustering, and management endpoints\n */\nexport class TopicsService extends BaseService {\n\n /**\n * List topics\n * List all topics with pagination\n * @param limit - Maximum number of topics to return\n * @param offset - Number of topics to skip\n * @param sortBy - Field to sort topics by\n * @param order - Sort order\n */\n async listTopics(options?: { limit?: number; offset?: number; sortBy?: 'name' | 'memoryCount'; order?: 'asc' | 'desc' }): Promise<HttpResponse<{ data?: Topic[]; pagination?: { limit?: number; offset?: number; count?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/topics',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n if (options?.sortBy !== undefined) {\n request.addQueryParam('sortBy', {\n key: 'sortBy',\n value: options.sortBy,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.order !== undefined) {\n request.addQueryParam('order', {\n key: 'order',\n value: options.order,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get topic by ID\n * Retrieve a specific topic by its ID\n * @param id - The topic ID\n */\n async getTopicById(id: string): Promise<HttpResponse<{ data?: Topic }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/topics/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Merge topics\n * Merge two topics into one\n * @param body - Request body\n */\n async mergeTopics(body: { sourceTopicId: string; targetTopicId: string }): Promise<HttpResponse<{ data?: Topic }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/merge',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Discover related topics\n * Discover topics related to a given topic\n * @param body - Request body\n */\n async discoverRelatedTopics(body: { topicId: string; limit?: number }): Promise<HttpResponse<{ data?: Topic[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/discover-related',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Calculate topic similarity\n * Calculate similarity score between two topics\n * @param body - Request body\n */\n async calculateTopicSimilarity(body: { topicId1: string; topicId2: string }): Promise<HttpResponse<{ data?: { similarity?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/similarity',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Find similar topics\n * Find topics similar to a given topic\n * @param body - Request body\n */\n async findSimilarTopics(body: { topicId: string; threshold?: number; limit?: number }): Promise<HttpResponse<{ data?: { topic?: Topic; similarity?: number }[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/similar',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Cluster topics\n * Cluster topics using community detection algorithms\n * @param body - Request body\n */\n async clusterTopics(options?: { body?: { minClusterSize?: number } }): Promise<HttpResponse<{ data?: { clusters?: Record<string, unknown>[]; clusterCount?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/cluster',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Detect communities\n * Detect communities in the topic graph using specified algorithm\n * @param body - Request body\n */\n async detectCommunities(options?: { body?: { algorithm?: string } }): Promise<HttpResponse<{ data?: { communities?: Community[]; communityCount?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/detect-communities',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Search topics\n * Search topics by query string using fulltext search\n * @param body - Request body\n */\n async searchTopics(body: { query: string; limit?: number; offset?: number }): Promise<HttpResponse<{ data?: Record<string, unknown>[]; total?: number; limit?: number; offset?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/search',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * SystemService - System health, monitoring, and configuration endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n * System health, monitoring, and configuration endpoints\n */\nexport class SystemService extends BaseService {\n\n /**\n * Get system health status\n * Get the current health status of the system including database connectivity\n */\n async getSystemHealth(): Promise<HttpResponse<{ data?: { status?: 'healthy' | 'unhealthy'; database?: Record<string, unknown>; uptime?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/system/health',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Get context status\n * Get database statistics and context information\n */\n async getContextStatus(): Promise<HttpResponse<{ data?: Record<string, unknown> }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/system/context/status',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Get feature flags\n * Get all feature flags for the authenticated user\n */\n async getFeatureFlags(): Promise<HttpResponse<{ data?: Record<string, unknown> }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/system/feature-flags',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Evaluate feature flag\n * Evaluate a specific feature flag for the authenticated user\n * @param body - Request body\n */\n async evaluateFeatureFlag(body: { flagName: string; context?: Record<string, unknown> }): Promise<HttpResponse<{ data?: { enabled?: boolean; flagName?: string } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/system/feature-flags/evaluate',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Analyze memory quality distribution\n * Analyze the quality distribution of memories for the authenticated user\n * @param includeDetails - Include detailed pruning candidate information\n * @param minQualityThreshold - Minimum quality threshold for pruning candidates (default 0.4)\n */\n async analyzeMemoryQuality(options?: { includeDetails?: boolean; minQualityThreshold?: number }): Promise<HttpResponse<{ data?: { totalMemories?: number; qualityDistribution?: { high?: number; medium?: number; low?: number }; averageQuality?: number; pruningCandidates?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/system/memory/quality',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.includeDetails !== undefined) {\n request.addQueryParam('includeDetails', {\n key: 'includeDetails',\n value: options.includeDetails,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.minQualityThreshold !== undefined) {\n request.addQueryParam('minQualityThreshold', {\n key: 'minQualityThreshold',\n value: options.minQualityThreshold,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Prune low-quality memories\n * Prune (soft delete) low-quality memories for the authenticated user\n * @param body - Request body\n */\n async pruneMemories(options?: { body?: { targetReduction?: number; minQualityThreshold?: number; preserveRecent?: boolean; recentDaysToPreserve?: number; dryRun?: boolean } }): Promise<HttpResponse<{ data?: { prunedCount?: number; prunedIds?: string[]; dryRun?: boolean } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/system/memory/prune',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get OpenAPI specification\n * Returns the OpenAPI 3.x specification for the entire API. This endpoint is used by CI/CD to sync the API Gateway.\n * @param noCache - Bypass cache and regenerate specification\n */\n async getOpenApiSpec(options?: { noCache?: '1' | 'true' }): Promise<HttpResponse<Record<string, unknown>>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/openapi.json',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.noCache !== undefined) {\n request.addQueryParam('noCache', {\n key: 'noCache',\n value: options.noCache,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n}","/**\n * PatternsService - Pattern detection and behavioral analysis endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Pattern } from '../models/types.js';\n\n/**\n * Pattern detection and behavioral analysis endpoints\n */\nexport class PatternsService extends BaseService {\n\n /**\n * List patterns\n * List all patterns for the authenticated user\n * @param limit - Maximum number of patterns to return\n * @param offset - Number of patterns to skip\n */\n async listPatterns(options?: { limit?: number; offset?: number }): Promise<HttpResponse<{ data?: Pattern[]; pagination?: { limit?: number; offset?: number; count?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/patterns',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Compile patterns\n * Compile patterns from user's memories\n * @param body - Request body\n */\n async compilePatterns(options?: { body?: { minOccurrences?: number; timeWindow?: string } }): Promise<HttpResponse<{ data?: Pattern[]; count?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/compile',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Detect behavioral patterns\n * Run pattern detection algorithms to identify recurring behavioral patterns\n * @param body - Request body\n */\n async detectPatterns(options?: { body?: { contextFilter?: string; timeframeStart?: string; timeframeEnd?: string; minConfidence?: number; maxResults?: number; autoStore?: boolean } }): Promise<HttpResponse<{ data?: { detectedPatterns?: Pattern[]; count?: number; stored?: number; confidence?: { average?: number; highest?: number } } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/detect',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Analyze pattern trends\n * Analyze pattern trends, correlations, and generate insights\n * @param body - Request body\n */\n async analyzePatterns(options?: { body?: { timeRange?: number; groupBy?: 'type' | 'context' | 'confidence'; includeDetails?: boolean } }): Promise<HttpResponse<{ data?: { analysis?: { totalPatterns?: number; recentPatterns?: number; trends?: Record<string, unknown>; insights?: string[]; recommendations?: string[] }; timeRange?: number; analyzedAt?: string } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/analyze',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Update pattern\n * Update an existing pattern with partial data\n * @param id - The pattern ID\n * @param body - Request body\n */\n async updatePattern(id: string, body: { name?: string; description?: string; confidence?: number; metadata?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Pattern }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PATCH',\n path: '/api/patterns/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Record pattern feedback\n * Record feedback on a pattern\n * @param body - Request body\n */\n async recordPatternFeedback(body: { patternId: string; feedback: string }): Promise<HttpResponse<{ data?: Pattern }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/feedback',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Compile behavioral instructions from stored patterns\n * Converts stored behavioral patterns into actionable instructions suitable for injection into AI agent context at conversation start. Uses template-based (non-LLM) generation for deterministic output within the P95 <100ms budget.\n\n * @param body - Request body\n */\n async compileInstructions(options?: { body?: { conversationContext?: string[]; currentQuery?: string; tokenBudget?: number; minConfidence?: number; maxInstructions?: number } }): Promise<HttpResponse<{ instructions: { patternId: string; instruction: string; confidence: number; priority: number; source: 'learned' | 'explicit' | 'manual'; patternType: string; activatedBy: string[]; recommendationId?: string; triggerContext?: string; evidenceSummary?: string; firstSurfacing?: boolean }[]; summary: string; tokenCount: number; patternsEvaluated: number; patternsActivated: number; conflictsResolved: { winnerId: string; loserId: string; strategy: 'priority_override' }[]; systemState?: 'ok' | 'cold_start' | 'pending_only' | 'no_match'; pendingCount?: number; patternsExcluded?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/compile-instructions',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * BehaviorService - Behavioral pattern tracking and state management endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n * Behavioral pattern tracking and state management endpoints\n */\nexport class BehaviorService extends BaseService {\n\n /**\n * Get behavioral state\n * Get current behavioral state for the authenticated user\n */\n async getBehavioralState(): Promise<HttpResponse<{ data?: Record<string, unknown> }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/patterns/behavior/state',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Update behavioral state\n * Update or mutate behavioral state\n * @param body - Request body\n */\n async updateBehavioralState(options?: { body?: { state?: Record<string, unknown>; mutations?: Record<string, unknown> } }): Promise<HttpResponse<{ data?: Record<string, unknown> }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/behavior/state',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * RecommendationsService - Behavioral recommendation management endpoints (v2) API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Recommendation } from '../models/types.js';\n\n/**\n * Behavioral recommendation management endpoints (v2)\n */\nexport class RecommendationsService extends BaseService {\n\n /**\n * Create an explicit recommendation\n * Create a new explicit recommendation (triggerContext + practice pair). Source is set to 'explicit'; triggerEmbedding is generated synchronously before return. SEC-BL-v2-002: practice content is validated against a prompt-injection deny-list. SEC-BL-v2-003: evidenceMemoryIds ownership is verified against the authenticated user.\n\n * @param body - Request body\n */\n async createRecommendation(body: { triggerContext: string; practice: string; evidenceSummary?: string; outcomeSignal?: 'positive' | 'neutral' | 'unknown'; evidenceMemoryIds?: string[]; activateImmediately?: boolean }): Promise<HttpResponse<{ data?: Recommendation }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/recommendations',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * List pending recommendations\n * Returns recommendations with status='pending_review' for the authenticated user, ordered by confidence DESC, createdAt ASC.\n\n * @param limit - Maximum number of results\n * @param offset - Number of results to skip\n */\n async listPendingRecommendations(options?: { limit?: number; offset?: number }): Promise<HttpResponse<{ data?: Recommendation[]; pagination?: { limit?: number; offset?: number; count?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/patterns/recommendations/pending',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Approve a pending recommendation\n * Transitions a recommendation from status='pending_review' to status='active'. Returns 404 if the recommendation is not found, not owned by the authenticated user, or is not in pending_review status.\n\n * @param id - Recommendation ID\n * @param body - Request body\n */\n async approveRecommendation(id: string, options?: { body?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Recommendation }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PATCH',\n path: '/api/patterns/recommendations/{id}/approve',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Dismiss a recommendation\n * Permanently dismisses a recommendation (any non-dismissed status → dismissed). This transition is terminal — dismissed recommendations cannot be reactivated. Returns 404 if not found, not owned by the authenticated user, or already dismissed.\n\n * @param id - Recommendation ID\n * @param body - Request body\n */\n async dismissRecommendation(id: string, options?: { body?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Recommendation }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PATCH',\n path: '/api/patterns/recommendations/{id}/dismiss',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * List active recommendations\n * Returns recommendations with status='active' for the authenticated user, ordered by confidence DESC. These are the behavioral preferences currently surfacing in Claude via compile-instructions and build_context. SEC-BL-v2-003: results are scoped to the authenticated user — no cross-user data.\n\n * @param limit - Maximum number of results\n * @param offset - Number of results to skip\n */\n async listActiveRecommendations(options?: { limit?: number; offset?: number }): Promise<HttpResponse<{ data?: Recommendation[]; pagination?: { limit?: number; offset?: number; count?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/patterns/recommendations/active',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Match active recommendations to content\n * Embeds the supplied content and returns active Recommendations whose triggerContext is semantically similar. Used by the MCP server for just-in-time behavioral nudges on memory save. Results are scoped to the authenticated user — no cross-user data is returned.\n\n * @param body - Request body\n */\n async matchRecommendations(body: { content: string; limit?: number; similarityThreshold?: number }): Promise<HttpResponse<{ data: Recommendation[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/recommendations/match',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Pause an active recommendation\n * Transitions a recommendation from status='active' to status='paused'. Paused recommendations are excluded from compile-instructions and build_context surfacing. Returns 404 if the recommendation is not found, not owned by the authenticated user, or is not in active status. SEC-BL-v2-003: MATCH includes userId — no IDOR.\n\n * @param id - Recommendation ID\n * @param body - Request body\n */\n async pauseRecommendation(id: string, options?: { body?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Recommendation }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PATCH',\n path: '/api/patterns/recommendations/{id}/pause',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * NarrativesService - Narrative thread management endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { NarrativeThread, NarrativeMemory } from '../models/types.js';\n\n/**\n * Narrative thread management endpoints\n */\nexport class NarrativesService extends BaseService {\n\n /**\n * List narrative threads\n * List all narrative threads for the authenticated user.\nNarratives group related memories into coherent storylines.\n\n * @param limit - Maximum number of narratives to return\n * @param offset - Number of narratives to skip\n * @param state - Filter by narrative state\n * @param topics - Comma-separated list of topics to filter by\n */\n async listNarratives(options?: { limit?: number; offset?: number; state?: 'open' | 'resolved' | 'reopened' | 'superseded'; topics?: string }): Promise<HttpResponse<{ data: NarrativeThread[]; pagination: { limit: number; offset: number; count: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/narratives',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n if (options?.state !== undefined) {\n request.addQueryParam('state', {\n key: 'state',\n value: options.state,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.topics !== undefined) {\n request.addQueryParam('topics', {\n key: 'topics',\n value: options.topics,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create a narrative thread\n * Create a new narrative thread starting from a root memory.\nNarratives help organize related memories into coherent storylines.\n\n * @param body - Request body\n */\n async createNarrative(body: { title: string; rootMemoryId: string; topics?: string[] }): Promise<HttpResponse<{ data: NarrativeThread }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/narratives',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get a narrative thread\n * Retrieve a specific narrative thread by ID\n * @param id - The narrative ID\n */\n async getNarrative(id: string): Promise<HttpResponse<{ data: NarrativeThread }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/narratives/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Delete a narrative thread\n * Delete a narrative thread.\nThis does not delete the associated memories, only the narrative structure.\n\n * @param id - The narrative ID\n */\n async deleteNarrative(id: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/narratives/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Update a narrative thread\n * Update a narrative thread's title, topics, or state.\nUse this to resolve, reopen, or modify narratives.\n\n * @param id - The narrative ID\n * @param body - Request body\n */\n async updateNarrative(id: string, body: { title?: string; state?: 'open' | 'resolved' | 'reopened' | 'superseded'; resolutionMemoryId?: string; topics?: string[] }): Promise<HttpResponse<{ data: NarrativeThread }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PATCH',\n path: '/api/narratives/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get narrative timeline\n * Get all memories in a narrative, ordered by their position in the narrative.\nEach memory includes its position and effective state.\n\n * @param id - The narrative ID\n * @param limit - Maximum number of memories to return\n * @param offset - Number of memories to skip\n */\n async getNarrativeTimeline(id: string, options?: { limit?: number; offset?: number }): Promise<HttpResponse<{ data: NarrativeMemory[]; narrative: NarrativeThread; pagination: { limit: number; offset: number; total: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/narratives/{id}/timeline',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Add a memory to a narrative\n * Add an existing memory to a narrative thread.\nOptionally specify a position to insert the memory at.\n\n * @param id - The narrative ID\n * @param body - Request body\n */\n async addMemoryToNarrative(id: string, body: { memoryId: string; position?: number }): Promise<HttpResponse<{ data: NarrativeThread }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/narratives/{id}/memories',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Remove a memory from a narrative\n * Remove a memory from a narrative thread.\nThis does not delete the memory itself, only removes it from the narrative.\n\n * @param id - The narrative ID\n * @param memoryId - The memory ID to remove\n */\n async removeMemoryFromNarrative(id: string, memoryId: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/narratives/{id}/memories/{memoryId}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n request.addPathParam('memoryId', {\n key: 'memoryId',\n value: memoryId,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n}","/**\n * MonitoringService - Observability and metrics endpoints for production monitoring API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n * Observability and metrics endpoints for production monitoring\n */\nexport class MonitoringService extends BaseService {\n\n /**\n * Prometheus metrics endpoint\n * Returns Prometheus-formatted metrics for monitoring and observability.\nThis endpoint is public and requires no authentication.\nDesigned to be scraped by Prometheus at regular intervals.\n\n */\n async getMetrics(): Promise<HttpResponse<unknown>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/metrics',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n}","/**\n * MemoriesService - Memory management and retrieval endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Memory, Pagination, CreateMemoryResponseMeta, PrecomputedMemoryFields, SearchResult, SearchMeta, Facets, ClaimGroup, BatchGetMemoriesMeta, DigestMetadata, DigestSource, DigestKeyFact, DigestEntity, EffectiveStateBreakdown, BuildContextActiveWork, BuildContextFact, BuildContextGotcha, BuildContextActivity, BuildContextPattern, BuildContextMeta, RelatedMemoryResult, CodeContext, MemoryRelationship } from '../models/types.js';\n\n/**\n * Memory management and retrieval endpoints\n */\nexport class MemoriesService extends BaseService {\n\n /**\n * Get memory by ID\n * Retrieve a specific memory by its ID with configurable detail level.\n\n**Detail levels:**\n- `minimal` — raw memory only, no extra queries\n- `standard` (default) — adds userTopics, extractedTopics, entities, facts, relationships\n- `full` — adds conversationContext (title, memoryCount, position) and relationship target previews\n\n * @param id - The memory ID\n * @param detail - Detail level: minimal (raw memory), standard (default, + topics/entities/facts/relationships), full (+ conversation context and relationship previews)\n */\n async getMemoryById(id: string, options?: { detail?: 'minimal' | 'standard' | 'full' }): Promise<HttpResponse<{ data: Memory }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.detail !== undefined) {\n request.addQueryParam('detail', {\n key: 'detail',\n value: options.detail,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Update a memory\n * Update an existing memory for the authenticated user\n * @param id - Memory ID\n * @param body - Request body\n */\n async updateMemory(id: string, body: { content?: string; name?: string | ''; memoryType?: 'episodic' | 'semantic' | 'procedural'; context?: string; topics?: string[]; outcome?: 'resolved' | 'unresolved' }): Promise<HttpResponse<{ data?: Memory }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PUT',\n path: '/api/memories/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Delete memory\n * Delete a memory by its ID\n * @param id - The memory ID\n */\n async deleteMemory(id: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/memories/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Aggregated memory analytics\n * Return aggregated memory counts grouped by a time dimension (day, week, month)\nor by topic. Useful for activity dashboards and trend analysis.\n\n * @param groupBy - Dimension to group counts by: day (YYYY-MM-DD), week (YYYY-Www), month (YYYY-MM), or topic\n * @param after - Filter memories on or after this ISO 8601 timestamp\n * @param before - Filter memories on or before this ISO 8601 timestamp\n * @param recent - Shorthand time window relative to now (e.g. 7d, 2w, 1mo). Sets the lower bound. Takes precedence over `after`.\n * @param topic - Pre-filter to memories that contain this topic before grouping\n * @param limit - Maximum number of buckets to return\n */\n async getMemoriesStats(options?: { groupBy?: 'day' | 'week' | 'month' | 'topic'; after?: string; before?: string; recent?: string; topic?: string; limit?: number }): Promise<HttpResponse<{ groupBy?: 'day' | 'week' | 'month' | 'topic'; data?: { bucket?: string; count?: number }[]; total?: number; filters?: { after?: string; before?: string; topic?: string } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/stats',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.groupBy !== undefined) {\n request.addQueryParam('groupBy', {\n key: 'groupBy',\n value: options.groupBy,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.after !== undefined) {\n request.addQueryParam('after', {\n key: 'after',\n value: options.after,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.before !== undefined) {\n request.addQueryParam('before', {\n key: 'before',\n value: options.before,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.recent !== undefined) {\n request.addQueryParam('recent', {\n key: 'recent',\n value: options.recent,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.topic !== undefined) {\n request.addQueryParam('topic', {\n key: 'topic',\n value: options.topic,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * List memories\n * List all memories for the authenticated user with pagination.\n\n**ID Prefix Search:**\nUse the `idPrefix` parameter for git-style short ID lookup. This enables efficient\nserver-side filtering instead of fetching all memories and filtering client-side.\n- Minimum 6 characters required for `idPrefix`\n- Returns matching memories directly (no need for secondary fetch)\n- Example: `?idPrefix=2d09116a` finds memories starting with that prefix\n\n * @param idPrefix - Filter memories by ID prefix (git-style short ID lookup). Minimum 6 characters.\n * @param limit - Maximum number of memories to return\n * @param offset - Number of memories to skip\n * @param page - Page number (alternative to offset)\n * @param sortBy - Field to sort results by\n * @param order - Sort order\n * @param from - Filter memories created on or after this ISO 8601 timestamp (ingestion time lower bound)\n * @param to - Filter memories created on or before this ISO 8601 timestamp (ingestion time upper bound)\n * @param recent - Shorthand time filter relative to now (e.g. \"24h\", \"7d\", \"2w\"). Sets the lower bound for ingestion time. Takes precedence over `from` when both are provided.\n * @param topics - Comma-separated topic names. Memories must have at least one matching topic.\n * @param excludeTopics - Comma-separated topic names. Memories with any matching topic are excluded.\n * @param conversationId - Filter to memories belonging to the given conversation.\n * @param scope - Filter by codeContext scope. Comma-separated key:value pairs (e.g. scope=product:memnexus,team:retrieval). Memories must match ALL specified scope pairs. Allowed keys, product, service, team, role — unknown keys return 400.\n */\n async listMemories(options?: { idPrefix?: string; limit?: number; offset?: number; page?: number; sortBy?: 'createdAt' | 'updatedAt' | 'eventTime'; order?: 'asc' | 'desc'; from?: string; to?: string; recent?: string; topics?: string; excludeTopics?: string; conversationId?: string; scope?: string }): Promise<HttpResponse<{ data?: Memory[]; pagination?: Pagination; filtersApplied?: { from?: string; to?: string; topics?: string[]; excludeTopics?: string[]; conversationId?: string; scope?: Record<string, unknown> } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.idPrefix !== undefined) {\n request.addQueryParam('idPrefix', {\n key: 'idPrefix',\n value: options.idPrefix,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n if (options?.page !== undefined) {\n request.addQueryParam('page', {\n key: 'page',\n value: options.page,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.sortBy !== undefined) {\n request.addQueryParam('sortBy', {\n key: 'sortBy',\n value: options.sortBy,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.order !== undefined) {\n request.addQueryParam('order', {\n key: 'order',\n value: options.order,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.from !== undefined) {\n request.addQueryParam('from', {\n key: 'from',\n value: options.from,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.to !== undefined) {\n request.addQueryParam('to', {\n key: 'to',\n value: options.to,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.recent !== undefined) {\n request.addQueryParam('recent', {\n key: 'recent',\n value: options.recent,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.topics !== undefined) {\n request.addQueryParam('topics', {\n key: 'topics',\n value: options.topics,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.excludeTopics !== undefined) {\n request.addQueryParam('excludeTopics', {\n key: 'excludeTopics',\n value: options.excludeTopics,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.conversationId !== undefined) {\n request.addQueryParam('conversationId', {\n key: 'conversationId',\n value: options.conversationId,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.scope !== undefined) {\n request.addQueryParam('scope', {\n key: 'scope',\n value: options.scope,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create a memory\n * Create a new memory for the authenticated user.\n\n**Conversation Management:**\n- Use `conversationId: \"NEW\"` to create a new conversation automatically\n- Provide an existing conversation ID to add to that conversation\n\n**Session Management:**\n- Sessions are automatically assigned based on 90-minute gap detection\n- If the last memory in the conversation was within 90 minutes, the same session is reused\n- If the gap exceeds 90 minutes, a new session is created\n\n**Response:**\n- Returns the created memory in `data` field\n- Returns session/conversation metadata in `meta` field\n\n * @param body - Request body\n */\n async createMemory(body: { conversationId?: string; claudeSessionId?: string; name?: string; content: string; memoryType?: 'episodic' | 'semantic' | 'procedural'; role?: 'user' | 'assistant' | 'system'; context?: string; topics?: string[]; eventTime?: string; validFrom?: string; validTo?: string; codeContext?: { product?: string; repo?: string; service?: string; component?: string; team?: string; role?: string; extra?: Record<string, unknown> }; precomputed?: PrecomputedMemoryFields; taskId?: string; outcome?: 'resolved' | 'unresolved'; distill?: boolean }): Promise<HttpResponse<{ data: Memory; meta: CreateMemoryResponseMeta }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Search memories (GET)\n * Search memories using query parameters. Provides the same functionality as\nPOST /api/memories/search but accepts parameters via query string.\n\n**Benefits of GET:**\n- Faster response times (~3x improvement)\n- Browser/CDN caching support\n- Simpler integration for read-only clients\n\n**Search Methods:**\n- **hybrid** (default): Combines semantic and keyword search with Reciprocal Rank Fusion\n- **semantic**: Vector-based semantic search using OpenAI embeddings\n- **keyword**: Traditional fulltext search using Lucene\n\n**Array Parameters:**\n- `topics`: Provide as comma-separated values (e.g., `topics=typescript,api-design`)\n\n * @param q - Search query string. Optional — omit for topic/date-only browsing.\n * @param searchMethod - Search algorithm to use\n * @param limit - Maximum number of results to return\n * @param offset - Number of results to skip for pagination\n * @param threshold - Minimum similarity threshold for semantic search\n * @param mode - Content filtering mode\n * @param vectorWeight - Weight for vector similarity in hybrid search\n * @param fulltextWeight - Weight for fulltext matching in hybrid search\n * @param topics - Comma-separated list of topics to filter by (include memories with ANY of these topics)\n * @param excludeTopics - Comma-separated list of topics to exclude (exclude memories with ANY of these topics)\n * @param memoryType - Filter by memory type\n * @param conversationId - Filter by conversation ID\n * @param explain - Include detailed match explanations in results\n * @param includeTopics - Include associated topics in results\n * @param includeEntities - Include mentioned entities in results\n * @param includeFacts - Include extracted facts in results\n * @param includeClaims - Include claims associated with results (defaults to true)\n * @param asOfTime - Point-in-time query (ISO 8601 datetime)\n * @param validAtTime - Filter by validity time (ISO 8601 datetime)\n * @param eventTimeFrom - Event time range start (ISO 8601 datetime)\n * @param eventTimeTo - Event time range end (ISO 8601 datetime)\n * @param ingestionTimeFrom - Ingestion time range start (ISO 8601 datetime)\n * @param ingestionTimeTo - Ingestion time range end (ISO 8601 datetime)\n * @param includeExpired - Include expired memories in results\n * @param temporalMode - Temporal query mode\n * @param sortBy - Field to sort results by\n * @param order - Sort order\n * @param expandEntities - Enable entity graph traversal branch in hybrid search\n * @param expandTopics - Enable topic graph traversal branch in hybrid search\n * @param expandFacts - Enable fact graph traversal branch in hybrid search\n * @param includeSuperseded - Include superseded and contradicted memories in results\n * @param entityWeight - Weight for entity graph branch in hybrid search\n * @param topicWeight - Weight for topic graph branch in hybrid search\n * @param factWeight - Weight for fact graph branch in hybrid search\n * @param questionWeight - Weight for question graph branch in hybrid search\n * @param claimsWeight - Weight for claims vector branch in hybrid search\n * @param includeFacets - Include facet aggregation (topics, memoryType, effectiveState) in response\n * @param embeddingProvider - Which embedding provider to use for query-time embedding generation and vector index lookup. `voyage` is the canonical name for the secondary provider (Voyage voyage-3.5, 1024d); `openai` is accepted as a legacy alias and now also resolves to Voyage after v1.66 P0-EMBED-SWAP. Falls back to ollama when the secondary provider is unavailable.\n * @param scope - Filter by codeContext scope. Comma-separated key:value pairs (e.g. scope=product:memnexus,service:core-api). Memories must match ALL specified scope pairs. Allowed keys, product, service, team, role — unknown keys return 400.\n * @param taskId - Task-scoped retrieval: returns own-history first, fills remainder with cross-task results.\n * @param outcomeFilter - Filter by task outcome. Use 'resolved' to find successful approaches from past tasks.\n */\n async searchMemoriesGet(options?: { q?: string; searchMethod?: 'keyword' | 'semantic' | 'hybrid'; limit?: number; offset?: number; threshold?: number; mode?: 'unified' | 'content' | 'facts'; vectorWeight?: number; fulltextWeight?: number; topics?: string; excludeTopics?: string; memoryType?: 'episodic' | 'semantic' | 'procedural'; conversationId?: string; explain?: boolean; includeTopics?: boolean; includeEntities?: boolean; includeFacts?: boolean; includeClaims?: boolean; asOfTime?: string; validAtTime?: string; eventTimeFrom?: string; eventTimeTo?: string; ingestionTimeFrom?: string; ingestionTimeTo?: string; includeExpired?: boolean; temporalMode?: 'current' | 'historical' | 'evolution'; sortBy?: 'relevance' | 'createdAt' | 'updatedAt' | 'eventTime'; order?: 'asc' | 'desc'; expandEntities?: boolean; expandTopics?: boolean; expandFacts?: boolean; includeSuperseded?: boolean; entityWeight?: number; topicWeight?: number; factWeight?: number; questionWeight?: number; claimsWeight?: number; includeFacets?: boolean; embeddingProvider?: 'ollama' | 'openai' | 'voyage'; scope?: string; taskId?: string; outcomeFilter?: 'resolved' | 'unresolved' | 'any' }): Promise<HttpResponse<{ data: SearchResult[]; meta: SearchMeta; facets?: Facets; instructions?: string; claim_groups?: ClaimGroup[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/search',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.q !== undefined) {\n request.addQueryParam('q', {\n key: 'q',\n value: options.q,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.searchMethod !== undefined) {\n request.addQueryParam('searchMethod', {\n key: 'searchMethod',\n value: options.searchMethod,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n if (options?.threshold !== undefined) {\n request.addQueryParam('threshold', {\n key: 'threshold',\n value: options.threshold,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.mode !== undefined) {\n request.addQueryParam('mode', {\n key: 'mode',\n value: options.mode,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.vectorWeight !== undefined) {\n request.addQueryParam('vectorWeight', {\n key: 'vectorWeight',\n value: options.vectorWeight,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.fulltextWeight !== undefined) {\n request.addQueryParam('fulltextWeight', {\n key: 'fulltextWeight',\n value: options.fulltextWeight,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.topics !== undefined) {\n request.addQueryParam('topics', {\n key: 'topics',\n value: options.topics,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.excludeTopics !== undefined) {\n request.addQueryParam('excludeTopics', {\n key: 'excludeTopics',\n value: options.excludeTopics,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.memoryType !== undefined) {\n request.addQueryParam('memoryType', {\n key: 'memoryType',\n value: options.memoryType,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.conversationId !== undefined) {\n request.addQueryParam('conversationId', {\n key: 'conversationId',\n value: options.conversationId,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.explain !== undefined) {\n request.addQueryParam('explain', {\n key: 'explain',\n value: options.explain,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.includeTopics !== undefined) {\n request.addQueryParam('includeTopics', {\n key: 'includeTopics',\n value: options.includeTopics,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.includeEntities !== undefined) {\n request.addQueryParam('includeEntities', {\n key: 'includeEntities',\n value: options.includeEntities,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.includeFacts !== undefined) {\n request.addQueryParam('includeFacts', {\n key: 'includeFacts',\n value: options.includeFacts,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.includeClaims !== undefined) {\n request.addQueryParam('includeClaims', {\n key: 'includeClaims',\n value: options.includeClaims,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.asOfTime !== undefined) {\n request.addQueryParam('asOfTime', {\n key: 'asOfTime',\n value: options.asOfTime,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.validAtTime !== undefined) {\n request.addQueryParam('validAtTime', {\n key: 'validAtTime',\n value: options.validAtTime,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.eventTimeFrom !== undefined) {\n request.addQueryParam('eventTimeFrom', {\n key: 'eventTimeFrom',\n value: options.eventTimeFrom,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.eventTimeTo !== undefined) {\n request.addQueryParam('eventTimeTo', {\n key: 'eventTimeTo',\n value: options.eventTimeTo,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.ingestionTimeFrom !== undefined) {\n request.addQueryParam('ingestionTimeFrom', {\n key: 'ingestionTimeFrom',\n value: options.ingestionTimeFrom,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.ingestionTimeTo !== undefined) {\n request.addQueryParam('ingestionTimeTo', {\n key: 'ingestionTimeTo',\n value: options.ingestionTimeTo,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.includeExpired !== undefined) {\n request.addQueryParam('includeExpired', {\n key: 'includeExpired',\n value: options.includeExpired,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.temporalMode !== undefined) {\n request.addQueryParam('temporalMode', {\n key: 'temporalMode',\n value: options.temporalMode,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.sortBy !== undefined) {\n request.addQueryParam('sortBy', {\n key: 'sortBy',\n value: options.sortBy,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.order !== undefined) {\n request.addQueryParam('order', {\n key: 'order',\n value: options.order,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.expandEntities !== undefined) {\n request.addQueryParam('expandEntities', {\n key: 'expandEntities',\n value: options.expandEntities,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.expandTopics !== undefined) {\n request.addQueryParam('expandTopics', {\n key: 'expandTopics',\n value: options.expandTopics,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.expandFacts !== undefined) {\n request.addQueryParam('expandFacts', {\n key: 'expandFacts',\n value: options.expandFacts,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.includeSuperseded !== undefined) {\n request.addQueryParam('includeSuperseded', {\n key: 'includeSuperseded',\n value: options.includeSuperseded,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.entityWeight !== undefined) {\n request.addQueryParam('entityWeight', {\n key: 'entityWeight',\n value: options.entityWeight,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.topicWeight !== undefined) {\n request.addQueryParam('topicWeight', {\n key: 'topicWeight',\n value: options.topicWeight,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.factWeight !== undefined) {\n request.addQueryParam('factWeight', {\n key: 'factWeight',\n value: options.factWeight,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.questionWeight !== undefined) {\n request.addQueryParam('questionWeight', {\n key: 'questionWeight',\n value: options.questionWeight,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.claimsWeight !== undefined) {\n request.addQueryParam('claimsWeight', {\n key: 'claimsWeight',\n value: options.claimsWeight,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.includeFacets !== undefined) {\n request.addQueryParam('includeFacets', {\n key: 'includeFacets',\n value: options.includeFacets,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.embeddingProvider !== undefined) {\n request.addQueryParam('embeddingProvider', {\n key: 'embeddingProvider',\n value: options.embeddingProvider,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.scope !== undefined) {\n request.addQueryParam('scope', {\n key: 'scope',\n value: options.scope,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.taskId !== undefined) {\n request.addQueryParam('taskId', {\n key: 'taskId',\n value: options.taskId,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.outcomeFilter !== undefined) {\n request.addQueryParam('outcomeFilter', {\n key: 'outcomeFilter',\n value: options.outcomeFilter,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Search all memories\n * Search memories using different search methods:\n- **hybrid** (default): Combines semantic and keyword search with Reciprocal Rank Fusion\n- **semantic**: Vector-based semantic search using OpenAI embeddings\n- **keyword**: Traditional fulltext search using Lucene\n\nThe `mode` parameter controls content filtering (unified, content, facts).\nThe `searchMethod` parameter controls the search algorithm.\n\n * @param body - Request body\n */\n async searchMemories(body: { query: string; mode?: 'unified' | 'content' | 'facts'; searchMethod?: 'keyword' | 'semantic' | 'hybrid'; limit?: number; offset?: number; vectorWeight?: number; fulltextWeight?: number; threshold?: number; explain?: boolean; asOfTime?: string; validAtTime?: string; eventTimeFrom?: string; eventTimeTo?: string; ingestionTimeFrom?: string; ingestionTimeTo?: string; includeExpired?: boolean; temporalMode?: 'current' | 'historical' | 'evolution'; topics?: string[]; memoryType?: 'episodic' | 'semantic' | 'procedural'; conversationId?: string; taskId?: string; outcomeFilter?: 'resolved' | 'unresolved' | 'any'; includeTopics?: boolean; includeEntities?: boolean; includeFacts?: boolean; includeClaims?: boolean; entityTypes?: string[]; expandEntities?: boolean; expandTopics?: boolean; expandFacts?: boolean; includeSuperseded?: boolean; entityWeight?: number; topicWeight?: number; factWeight?: number; questionWeight?: number; claimsWeight?: number; sortBy?: 'relevance' | 'createdAt' | 'updatedAt' | 'eventTime'; order?: 'asc' | 'desc'; includeFacets?: boolean }): Promise<HttpResponse<{ data: SearchResult[]; meta: SearchMeta; facets?: Facets; instructions?: string; claim_groups?: ClaimGroup[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/search',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get multiple memories by IDs\n * Retrieve multiple memories by their IDs in a single request.\nMore efficient than making multiple individual GET requests.\n\nReturns memories in the order requested, with metadata about\nwhich IDs were found or missing.\n\n * @param body - Request body\n */\n async getMemoriesBatch(body: { ids: string[]; detail?: 'minimal' | 'standard' | 'full' }): Promise<HttpResponse<{ data: Memory[]; meta: BatchGetMemoriesMeta }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/batch',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Generate memory digest\n * Synthesizes a comprehensive, structured briefing from all relevant memories\non a topic. Instead of multiple search rounds, one call returns a complete digest.\n\n**Formats:**\n- `structured` (default): Sections with headers, bullet points, key decisions\n- `narrative`: Chronological prose narrative\n- `timeline`: Dated event list\n- `status-report`: Done/In Progress/Blocked grouping\n\n**Pipeline:**\n1. Gather: High-limit search + conversation expansion\n2. Organize: Group by conversation, status, timeline\n3. Synthesize: LLM generates formatted digest\n\nRequires an LLM provider to be configured (EXTRACTION_ENABLED=true).\nReturns 503 if the LLM provider is unavailable and 3+ memories are found.\n\n * @param body - Request body\n */\n async generateMemoryDigest(body: { query: string; recent?: string; topics?: string[]; conversationIds?: string[]; format?: 'structured' | 'narrative' | 'timeline' | 'status-report'; maxSources?: number; includeMemoryIds?: boolean; verbatimRecent?: number }): Promise<HttpResponse<{ digest: string; metadata: DigestMetadata; sources: DigestSource[]; recentMemories?: Memory[]; keyFacts?: DigestKeyFact[]; entities?: DigestEntity[]; effectiveStateBreakdown?: EffectiveStateBreakdown }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/digest',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Generate memory digest (SSE streaming)\n * Same as POST /api/memories/digest but uses Server-Sent Events (SSE) to stream\nthe response. Sends `: heartbeat` comments every 10 seconds during processing\nto prevent gateway read-timeout (default 60s) from killing long-running digests.\n\n**Event sequence:**\n- `: heartbeat` — keep-alive comment, sent every 10s during processing\n- `event: result` / `data: <DigestResponse JSON>` — digest completed successfully\n- `event: error` / `data: {\"error\":\"...\",\"statusCode\":N}` — digest failed\n- `event: done` / `data: {}` — stream complete (sent after result)\n\n**Formats and pipeline:** identical to POST /api/memories/digest.\n\n * @param body - Request body\n */\n async streamMemoryDigest(body: { query: string; recent?: string; topics?: string[]; conversationIds?: string[]; format?: 'structured' | 'narrative' | 'timeline' | 'status-report'; maxSources?: number; includeMemoryIds?: boolean; verbatimRecent?: number }): Promise<HttpResponse<unknown>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/digest/stream',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Build a context briefing\n * Answers \"What should I know before working on X?\" by combining active work\ndetection, fact retrieval, gotcha detection, recent activity, and pattern\nmatching into a single call. Eliminates the 5+ round-trip pattern agents\nuse today.\n\n * @param body - Request body\n */\n async buildContext(body: { context: string; files?: string[]; recentHours?: number }): Promise<HttpResponse<{ activeWork: BuildContextActiveWork; relevantFacts: BuildContextFact[]; gotchas: BuildContextGotcha[]; recentActivity: BuildContextActivity[]; relatedPatterns: BuildContextPattern[]; meta: BuildContextMeta }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/build-context',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get version history for a named memory\n * Returns the full version chain for a named memory, ordered newest-first.\nWalks the SUPERSEDES chain from HEAD backwards.\n\n * @param name - Memory name (kebab-case, 2-64 chars)\n * @param limit - Optional cap on the number of most-recent versions to return.\nWhen omitted, the full version chain is returned.\n\n */\n async getNamedMemoryHistory(name: string, options?: { limit?: number }): Promise<HttpResponse<{ name: string; versions: { version: number; id: string; content: string; effectiveState?: 'current' | 'superseded' | 'contradicted' | 'duplicate'; createdAt: string }[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/named/{name}/history',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('name', {\n key: 'name',\n value: name,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get a memory by name\n * Retrieve the current HEAD version of a named memory by its user-assigned name.\nSupports the same detail levels as GET /api/memories/{id}.\n\n * @param name - Memory name (kebab-case, 2-64 chars)\n * @param detail - Detail level: minimal (raw memory), standard (default, + topics/entities/facts/relationships), full (+ conversation context and relationship previews)\n */\n async getMemoryByName(name: string, options?: { detail?: 'minimal' | 'standard' | 'full' }): Promise<HttpResponse<{ data: Memory }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/named/{name}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('name', {\n key: 'name',\n value: name,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.detail !== undefined) {\n request.addQueryParam('detail', {\n key: 'detail',\n value: options.detail,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Update a named memory (create new version)\n * Creates a new version of a named memory. The name pointer moves to the new version,\nand a SUPERSEDES relationship links the new version to the old one.\nThe old version's effectiveState becomes 'superseded'.\n\n * @param name - Memory name (kebab-case, 2-64 chars)\n * @param body - Request body\n */\n async updateNamedMemory(name: string, body: { content: string; expectedHeadId?: string; memoryType?: 'episodic' | 'semantic' | 'procedural'; context?: string; topics?: string[]; conversationId?: string; codeContext?: { product?: string; repo?: string; service?: string; component?: string; team?: string; role?: string; extra?: Record<string, unknown> }; supersedes?: string }): Promise<HttpResponse<{ data?: Memory; meta?: { previousVersionId?: string; version?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PUT',\n path: '/api/memories/named/{name}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('name', {\n key: 'name',\n value: name,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Atomically append a block to a named memory\n * Atomically appends a text block to a named memory, eliminating the\nread-modify-write clobber that concurrent full-content updates cause on\nshared named memories. The server reads the current head, concatenates\n`existing + separator + block`, and writes a new version under the\nNameLock with an internal compare-and-swap + bounded retry — so\nsimultaneous appends all survive and the client needs no retry logic.\nContent is decrypted, assembled, size-checked, and re-encrypted\nserver-side; plaintext is never returned to other callers.\n\n * @param name - Memory name (kebab-case, 2-64 chars)\n * @param body - Request body\n */\n async appendNamedMemory(name: string, body: { block: string; separator?: string; memoryType?: 'episodic' | 'semantic' | 'procedural'; context?: string; topics?: string[]; conversationId?: string; codeContext?: { product?: string; repo?: string; service?: string; component?: string; team?: string; role?: string; extra?: Record<string, unknown> } }): Promise<HttpResponse<{ data?: Memory; meta?: { previousVersionId?: string; version?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/named/{name}/append',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('name', {\n key: 'name',\n value: name,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Bulk delete multiple memories\n * Soft-delete multiple memories at once. Requires confirmDeletion=true.\nEach memory is verified to belong to the authenticated user.\nMaximum 100 IDs per request.\n\n * @param body - Request body\n */\n async bulkDeleteMemories(body: { ids: string[]; confirmDeletion: true }): Promise<HttpResponse<{ deleted: number; failed: number; errors: { id: string; error: string }[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/memories/bulk',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Repair orphaned effectiveState values\n * Finds memories with effectiveState='superseded' or 'contradicted' but no\ncorresponding incoming SUPERSEDES/CONTRADICTS edges, and resets them to 'current'.\nThis handles cases where edges were deleted but effectiveState wasn't recalculated.\n\n */\n async repairEffectiveState(): Promise<HttpResponse<{ repaired?: number; memories?: { memoryId?: string; previousState?: string }[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/repair-effective-state',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Record behavioral feedback on a search result\n * Record whether a search result was selected or ignored by the user.\nUsed to build behavioral signals for retrieval quality measurement.\n\n * @param body - Request body\n */\n async recordSearchResultFeedback(body: { memoryId: string; action: 'selected' | 'not_selected'; searchMethod?: string; searchSessionId?: string; resultPosition?: number }): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/search/feedback',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Find similar memories\n * Find memories that are semantically similar to the given memory.\n\nUses vector similarity search if embeddings are available for the memory.\nFalls back to topic-based similarity if embeddings are not available.\n\nThe `relationship` field in results indicates the method used:\n- `similar` - Found via vector/semantic similarity\n- `similar-by-topic` - Fallback using shared topics\n\n * @param id - The source memory ID\n * @param limit - Maximum number of similar memories to return\n */\n async getSimilarMemories(id: string, options?: { limit?: number }): Promise<HttpResponse<{ data?: RelatedMemoryResult[]; sourceMemory?: Memory }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/{id}/similar',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Find memories from same conversation\n * Find other memories that belong to the same conversation as the given memory.\n\nReturns memories sorted chronologically (oldest first) to show the conversation flow.\nIf the memory doesn't belong to a conversation, returns an empty array.\n\n * @param id - The source memory ID\n * @param limit - Maximum number of conversation memories to return\n */\n async getConversationMemories(id: string, options?: { limit?: number }): Promise<HttpResponse<{ data?: RelatedMemoryResult[]; sourceMemory?: Memory; conversationId?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/{id}/conversation-memories',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Find related memories by topics\n * Find memories that share topics with the given memory.\n\nThe score indicates the ratio of shared topics (1.0 = all topics match).\nResults are sorted by score (most related first), then by timestamp.\n\nIf the source memory has no topics, returns an empty array.\n\n * @param id - The source memory ID\n * @param limit - Maximum number of related memories to return\n */\n async getRelatedMemories(id: string, options?: { limit?: number }): Promise<HttpResponse<{ data?: { memory: { id: string; name?: string; version?: number; content: string; memoryType: 'episodic' | 'semantic' | 'procedural'; context?: string; topics?: string[]; timestamp?: string; eventTime?: string; validFrom?: string; validTo?: string; codeContext?: CodeContext; createdAt: string; updatedAt: string; confidenceScore?: number; confidenceBasis?: 'direct-statement' | 'repeated-mention' | 'single-mention' | 'hedged' | 'inference' | 'external-source' | 'contradicted'; effectiveState?: 'current' | 'superseded' | 'contradicted' | 'duplicate'; authority?: 'directive' | 'decision' | 'observation' | 'auto-captured'; extractionStatus?: 'pending' | 'queued' | 'running' | 'completed' | 'failed' | 'skipped'; extractionCompletedAt?: string; contentEmbeddingStatus?: 'pending' | 'queued' | 'running' | 'completed' | 'failed' | 'skipped'; summary?: string; summaryStatus?: 'pending' | 'queued' | 'running' | 'completed' | 'failed' | 'skipped'; questionsStatus?: 'pending' | 'queued' | 'running' | 'completed' | 'failed' | 'skipped'; summaryEmbeddingStatus?: 'pending' | 'queued' | 'running' | 'completed' | 'failed' | 'skipped'; questionsEmbeddingStatus?: 'pending' | 'queued' | 'running' | 'completed' | 'failed' | 'skipped'; graphStatus?: 'pending' | 'queued' | 'running' | 'completed' | 'failed' | 'skipped'; graphSkipReason?: 'global_disabled' | 'plan_excluded' | 'user_opt_out' | 'content_too_short' | 'legacy' | 'budget_exhausted'; extractionSkipReason?: 'global_disabled' | 'plan_excluded' | 'user_opt_out' | 'content_too_short' | 'legacy'; embeddingStatus?: 'queued' | 'running' | 'completed' | 'failed' | 'skipped'; embeddingOpenaiStatus?: 'queued' | 'running' | 'completed' | 'failed' | 'skipped'; embeddingTruncated?: boolean; embeddingOriginalTokens?: number; embeddingStrategy?: 'full' | 'head-truncated' | 'summary-selected' | 'question-selected'; extractedTopicCount?: number; extractedFactCount?: number; extractedEntityCount?: number; conflictCount?: number; visibility?: 'private' | 'shared_with_users' | 'shared_with_org' | 'admin_visible'; sharedWith?: string[]; userTopics?: string[]; extractedTopics?: string[]; entities?: { name: string; type: string; confidence?: number }[]; taskId?: string; outcome?: 'resolved' | 'unresolved'; attemptNumber?: number; distillStatus?: 'pending' | 'queued' | 'running' | 'completed' | 'failed' | 'skipped'; distillSkipReason?: 'global_disabled' | 'plan_excluded' | 'user_opt_out' | 'content_too_short' | 'legacy' | 'budget_exhausted'; distillError?: string; distillCompletedAt?: string }; score: number; relationship: string; sharedTopics?: string[] }[]; sourceMemory?: Memory }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/{id}/related',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get relationships for a memory\n * Retrieve all relationships for a memory.\n\n**Direction Options:**\n- **outgoing**: Relationships where this memory is the source\n- **incoming**: Relationships where this memory is the target\n- **both**: All relationships involving this memory\n\n * @param id - The memory ID\n * @param direction - Direction of relationships to retrieve\n */\n async getMemoryRelationships(id: string, options?: { direction?: 'outgoing' | 'incoming' | 'both' }): Promise<HttpResponse<{ data: MemoryRelationship[]; sourceMemoryId: string; direction: 'outgoing' | 'incoming' | 'both' }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/{id}/relationships',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.direction !== undefined) {\n request.addQueryParam('direction', {\n key: 'direction',\n value: options.direction,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create a relationship between memories\n * Create a relationship between the source memory and a target memory.\n\n**Relationship Types:**\n- **SUPERSEDES**: The source memory replaces/updates the target memory\n- **FOLLOWS**: The source memory follows chronologically from the target\n- **RESOLVES**: The source memory resolves an issue mentioned in the target\n- **CONTRADICTS**: The source memory contradicts the target memory\n- **REFERENCES**: The source memory references the target memory\n\nWhen creating SUPERSEDES or CONTRADICTS relationships, the target memory's\neffectiveState will be automatically updated.\n\n * @param id - The source memory ID\n * @param body - Request body\n */\n async createMemoryRelationship(id: string, body: { targetMemoryId: string; type: 'SUPERSEDES' | 'FOLLOWS' | 'RESOLVES' | 'CONTRADICTS' | 'REFERENCES' | 'DUPLICATES'; confidence?: number; reason?: string }): Promise<HttpResponse<{ data?: MemoryRelationship }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/{id}/relationships',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Delete a relationship\n * Delete a specific relationship from a memory\n * @param id - The source memory ID\n * @param relationshipId - The relationship ID to delete\n */\n async deleteMemoryRelationship(id: string, relationshipId: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/memories/{id}/relationships/{relationshipId}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n request.addPathParam('relationshipId', {\n key: 'relationshipId',\n value: relationshipId,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Get timeline context for a memory\n * Get the chronological context around a memory.\nReturns preceding and following memories ordered by event time.\nUseful for understanding the narrative flow.\n\n * @param id - The memory ID\n * @param before - Number of preceding memories to return\n * @param after - Number of following memories to return\n */\n async getMemoryTimeline(id: string, options?: { before?: number; after?: number }): Promise<HttpResponse<{ data?: { memory?: Memory; preceding?: Memory[]; following?: Memory[] } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/{id}/timeline',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.before !== undefined) {\n request.addQueryParam('before', {\n key: 'before',\n value: options.before,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.after !== undefined) {\n request.addQueryParam('after', {\n key: 'after',\n value: options.after,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Detect potential relationships for a memory\n * Analyze a memory and detect potential relationships with other memories.\nUses semantic similarity and pattern detection to suggest relationships.\n\nSet `autoCreate: true` to automatically create high-confidence relationships.\n\n * @param id - The memory ID\n * @param body - Request body\n */\n async detectMemoryRelationships(id: string, options?: { body?: { autoCreate?: boolean; minConfidence?: number } }): Promise<HttpResponse<{ data?: { targetMemoryId?: string; type?: 'SUPERSEDES' | 'FOLLOWS' | 'RESOLVES' | 'CONTRADICTS' | 'REFERENCES'; confidence?: number; reason?: string }[]; autoCreated?: boolean }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/{id}/detect-relationships',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Generate LLM explanation for a memory relationship\n * Uses an LLM to explain why two memories have been flagged with a\nparticular relationship (e.g. contradiction). Returns a short\nplain-text explanation highlighting the specific differences.\n\n * @param id - The ID of the source memory\n * @param body - Request body\n */\n async explainMemoryRelationship(id: string, body: { otherMemoryId: string; relationshipType: string }): Promise<HttpResponse<{ data?: { explanation?: string } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/{id}/explain-relationship',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Export memories matching filters\n * Export memories matching an optional search query and filters to JSON or CSV format.\nWhen a query is provided, uses hybrid search. When no query is provided, lists memories\nwith optional topic and memoryType filters. Maximum 1000 results per export.\n\n * @param body - Request body\n */\n async exportMemories(body: { query?: string; topics?: string[]; memoryType?: 'episodic' | 'semantic' | 'procedural'; format?: 'json' | 'csv'; fields?: string[]; limit?: number }): Promise<HttpResponse<Record<string, unknown>[]>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/export',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Bulk update multiple memories\n * Update multiple memories at once. Supports updating topics and memoryType.\nEach memory is verified to belong to the authenticated user.\nMaximum 100 IDs per request.\n\n * @param body - Request body\n */\n async bulkUpdateMemories(body: { ids: string[]; updates: { topics?: string[]; memoryType?: 'episodic' | 'semantic' | 'procedural' } }): Promise<HttpResponse<{ updated: number; failed: number; errors: { id: string; error: string }[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/bulk-update',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Bulk add or remove topics from memories\n * Add and/or remove topics from multiple memories at once.\nAt least one of addTopics or removeTopics must be provided.\nEach memory is verified to belong to the authenticated user.\nMaximum 100 IDs per request.\n\n * @param body - Request body\n */\n async bulkTagMemories(body: { ids: string[]; addTopics?: string[]; removeTopics?: string[] }): Promise<HttpResponse<{ modified: number; failed: number; errors: { id: string; error: string }[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/bulk-tag',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * InvitesService - Invite code validation and gate status endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n * Invite code validation and gate status endpoints\n */\nexport class InvitesService extends BaseService {\n\n /**\n * Check invite gate status\n * Check whether the invite gate is currently open or closed.\nWhen gated is true, new signups require a valid invite code.\nResponse is cached server-side (30-second TTL).\n\n */\n async getGateStatus(): Promise<HttpResponse<{ gated?: boolean }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/invites/gate-status',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Validate an invite code\n * Validate an invite code without redeeming it.\nRate limited to 10 requests per minute per IP to prevent enumeration.\nError messages are intentionally generic.\n\n * @param body - Request body\n */\n async validateInviteCode(body: { code: string; email: string }): Promise<HttpResponse<{ valid?: boolean; error?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/invites/validate',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * HealthService - Health check endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n * Health check endpoints\n */\nexport class HealthService extends BaseService {\n\n /**\n * Liveness probe endpoint\n * Returns 200 if the process is alive. Does not check external dependencies.\nUsed by Kubernetes liveness probes to determine if the container should be restarted.\nUnlike /health, this endpoint does not query the database — a database outage\nshould not cause the API process to be killed and restarted.\n\n */\n async livenessCheck(): Promise<HttpResponse<{ status?: 'alive'; uptime?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/livez',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * API readiness check endpoint\n * Returns the readiness status of the API service, based on database\nconnectivity. This endpoint is public and requires no authentication.\nReturns 200 when the database is reachable, 503 when it is not.\n\nv2.35: the database status is served from a CACHE refreshed by a\nbackground loop every HEALTH_DB_CHECK_INTERVAL_MS — this endpoint does\nNOT query the database per request, so probe latency is decoupled from\nquery latency (the 07-03 dual-pod ejection fix). If the cache is older\nthan HEALTH_DB_STALENESS_CEILING_MS (the background checker is wedged,\ne.g. a hung query), readiness reports NOT-READY (503) — a genuinely\ndead/hung database is never masked by a stale \"ok\".\n\n */\n async healthCheck(): Promise<HttpResponse<{ status: 'healthy' | 'degraded' | 'unhealthy'; timestamp: string; version: string; uptime: number; checks: Record<string, unknown> }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/health',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n}","/**\n * GraphragService - Graph-based retrieval augmented generation endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { GraphRAGQueryResponse } from '../models/types.js';\n\n/**\n * Graph-based retrieval augmented generation endpoints\n */\nexport class GraphragService extends BaseService {\n\n /**\n * Explain a GraphRAG query\n * Get explanation for a previously executed GraphRAG query result\n * @param queryId - The query ID to explain\n */\n async explainGraphRAGQuery(options?: { queryId?: string }): Promise<HttpResponse<{ data?: Record<string, unknown> }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/graphrag/explain',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.queryId !== undefined) {\n request.addQueryParam('queryId', {\n key: 'queryId',\n value: options.queryId,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Query communities\n * Query communities for relevant information using semantic search\n * @param body - Request body\n */\n async queryCommunities(body: { query: string; limit?: number }): Promise<HttpResponse<{ data?: Record<string, unknown>[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/graphrag/query-communities',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Execute a GraphRAG query\n * Execute a graph-based retrieval augmented generation query\n * @param body - Request body\n */\n async executeGraphRAGQuery(body: { query: string; maxDepth?: number; depth?: number; limit?: number; includeRelationships?: boolean }): Promise<HttpResponse<{ data?: GraphRAGQueryResponse }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/graphrag/query',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * FactsService - Fact extraction and management endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Fact } from '../models/types.js';\n\n/**\n * Fact extraction and management endpoints\n */\nexport class FactsService extends BaseService {\n\n /**\n * List facts\n * List all facts for the authenticated user\n * @param limit - Maximum number of facts to return\n * @param offset - Number of facts to skip\n * @param memoryId - Filter facts to a specific memory\n * @param sortBy - Field to sort facts by\n * @param order - Sort order\n */\n async listFacts(options?: { limit?: number; offset?: number; memoryId?: string; sortBy?: 'confidence' | 'createdAt'; order?: 'asc' | 'desc' }): Promise<HttpResponse<{ data?: Fact[]; count?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/facts',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n if (options?.memoryId !== undefined) {\n request.addQueryParam('memoryId', {\n key: 'memoryId',\n value: options.memoryId,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.sortBy !== undefined) {\n request.addQueryParam('sortBy', {\n key: 'sortBy',\n value: options.sortBy,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.order !== undefined) {\n request.addQueryParam('order', {\n key: 'order',\n value: options.order,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create fact\n * Create a new semantic fact\n * @param body - Request body\n */\n async createFact(body: { subject: string; predicate: string; object: string }): Promise<HttpResponse<{ data?: Fact }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/facts',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get fact by ID\n * Retrieve a specific fact by its ID\n * @param id - The fact ID\n */\n async getFactById(id: string): Promise<HttpResponse<{ data?: Fact }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/facts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Update fact\n * Update an existing fact completely\n * @param id - The fact ID\n * @param body - Request body\n */\n async updateFact(id: string, body: { subject?: string; predicate?: string; object?: string; confidence?: number }): Promise<HttpResponse<{ data?: Fact }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PUT',\n path: '/api/facts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Delete fact\n * Delete a fact by its ID\n * @param id - The fact ID\n */\n async deleteFact(id: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/facts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Search facts\n * Search semantic facts by query string\n * @param body - Request body\n */\n async searchFacts(body: { query: string; limit?: number }): Promise<HttpResponse<{ data?: Fact[]; count?: number; metadata?: { query?: string } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/facts/search',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * EntitiesService - Entity extraction and discovery endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { EntityNode, Memory } from '../models/types.js';\n\n/**\n * Entity extraction and discovery endpoints\n */\nexport class EntitiesService extends BaseService {\n\n /**\n * List entities\n * List all entities for the authenticated user, optionally filtered by type\n * @param query - Search entities by name (case-insensitive substring match)\n * @param type - Filter by entity type (e.g., PERSON, TECHNOLOGY)\n * @param limit - Maximum number of entities to return\n * @param offset - Number of entities to skip\n */\n async listEntities(options?: { query?: string; type?: string; limit?: number; offset?: number }): Promise<HttpResponse<{ data?: EntityNode[]; pagination?: { limit?: number; offset?: number; count?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/entities',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.query !== undefined) {\n request.addQueryParam('query', {\n key: 'query',\n value: options.query,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.type !== undefined) {\n request.addQueryParam('type', {\n key: 'type',\n value: options.type,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get entity by ID\n * Retrieve a specific entity by its ID\n * @param id - The entity ID\n */\n async getEntityById(id: string): Promise<HttpResponse<{ data?: EntityNode }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/entities/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Get memories mentioning entity\n * Get all memories that mention a specific entity\n * @param id - The entity ID\n * @param limit - Maximum number of memories to return\n * @param offset - Number of memories to skip\n */\n async getEntityMemories(id: string, options?: { limit?: number; offset?: number }): Promise<HttpResponse<{ data?: { memory?: Memory; confidence?: number }[]; pagination?: { limit?: number; offset?: number; count?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/entities/{id}/memories',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get graph health metrics\n * Returns knowledge graph health metrics including entity counts, fact counts, topic counts, and extraction coverage\n */\n async getGraphHealth(): Promise<HttpResponse<{ data?: { totalMemories?: number; totalEntities?: number; totalFacts?: number; totalTopics?: number; memoriesWithEntities?: number; entityCoverage?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/entities/health',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n}","/**\n * ConversationsService - Conversation tracking and analysis endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Conversation, Memory } from '../models/types.js';\n\n/**\n * Conversation tracking and analysis endpoints\n */\nexport class ConversationsService extends BaseService {\n\n /**\n * List conversations\n * List all conversations for the authenticated user with pagination\n * @param limit - Maximum number of conversations to return\n * @param offset - Number of conversations to skip\n * @param since - Return only conversations created after this timestamp (ISO 8601 format)\n * @param sortBy - Field to sort conversations by\n * @param order - Sort order\n * @param minMemories - Return only conversations with at least this many memories (filters out empty init conversations)\n */\n async listConversations(options?: { limit?: number; offset?: number; since?: string; sortBy?: 'lastActivityAt' | 'createdAt' | 'memoryCount'; order?: 'asc' | 'desc'; minMemories?: number }): Promise<HttpResponse<{ data?: Conversation[]; pagination?: { limit?: number; offset?: number; count?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/conversations',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n if (options?.since !== undefined) {\n request.addQueryParam('since', {\n key: 'since',\n value: options.since,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.sortBy !== undefined) {\n request.addQueryParam('sortBy', {\n key: 'sortBy',\n value: options.sortBy,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.order !== undefined) {\n request.addQueryParam('order', {\n key: 'order',\n value: options.order,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.minMemories !== undefined) {\n request.addQueryParam('minMemories', {\n key: 'minMemories',\n value: options.minMemories,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create conversation\n * Create a new conversation for the authenticated user\n * @param body - Request body\n */\n async createConversation(body: { title: string; summary?: string }): Promise<HttpResponse<{ data?: Conversation }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/conversations',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get conversation summary\n * Retrieve a conversation summary by its ID\n * @param conversationId - The conversation ID\n */\n async getConversationSummary(conversationId: string): Promise<HttpResponse<{ data?: Conversation }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/conversations/{conversationId}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('conversationId', {\n key: 'conversationId',\n value: conversationId,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Delete conversation\n * Delete a conversation and soft-delete all associated memories\n * @param conversationId - The conversation ID\n */\n async deleteConversation(conversationId: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/conversations/{conversationId}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('conversationId', {\n key: 'conversationId',\n value: conversationId,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Get conversation timeline\n * Get all memories in a conversation in chronological order\n * @param conversationId - The conversation ID\n */\n async getConversationTimeline(conversationId: string): Promise<HttpResponse<{ data?: Memory[]; count?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/conversations/{conversationId}/timeline',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('conversationId', {\n key: 'conversationId',\n value: conversationId,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Search conversations\n * Search conversations by query string\n * @param body - Request body\n */\n async searchConversations(body: { query: string; limit?: number }): Promise<HttpResponse<{ data?: Conversation[]; count?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/conversations/search',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Find conversations by topic\n * Find conversations that contain a specific topic\n * @param body - Request body\n */\n async findConversationsByTopic(body: { topicId: string; limit?: number }): Promise<HttpResponse<{ data?: Conversation[]; count?: number; metadata?: { topicId?: string } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/conversations/by-topic',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * BillingService - Subscription billing and payment management endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { BillingOverview, CheckoutSessionResponse, PortalSessionResponse, Subscription, ListInvoicesResponse, ListPaymentMethodsResponse } from '../models/types.js';\n\n/**\n * Subscription billing and payment management endpoints\n */\nexport class BillingService extends BaseService {\n\n /**\n * Get billing overview\n * Get subscription, payment method, and upcoming invoice information\n */\n async getBillingOverview(): Promise<HttpResponse<{ data?: BillingOverview }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/billing/overview',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Create checkout session\n * Create a Stripe checkout session for subscription upgrade\n * @param body - Request body\n */\n async createCheckoutSession(body: { priceId?: string; successUrl: string; cancelUrl: string }): Promise<HttpResponse<{ data?: CheckoutSessionResponse }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/billing/checkout',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create billing portal session\n * Create a Stripe billing portal session for managing subscription\n * @param body - Request body\n */\n async createPortalSession(body: { returnUrl: string }): Promise<HttpResponse<{ data?: PortalSessionResponse }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/billing/portal',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get current subscription\n * Get the current subscription details for the authenticated user\n */\n async getSubscription(): Promise<HttpResponse<{ data?: Subscription }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/billing/subscription',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Cancel subscription\n * Cancel the current subscription at the end of the billing period\n * @param body - Request body\n */\n async cancelSubscription(options?: { body?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Subscription }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/billing/subscription/cancel',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Reactivate subscription\n * Reactivate a subscription that was scheduled for cancellation\n * @param body - Request body\n */\n async reactivateSubscription(options?: { body?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Subscription }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/billing/subscription/reactivate',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * List invoices\n * Get a list of invoices for the authenticated user\n * @param limit - Maximum number of invoices to return\n */\n async listInvoices(options?: { limit?: number }): Promise<HttpResponse<{ data?: ListInvoicesResponse }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/billing/invoices',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * List payment methods\n * Get a list of payment methods for the authenticated user\n */\n async listPaymentMethods(): Promise<HttpResponse<{ data?: ListPaymentMethodsResponse }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/billing/payment-methods',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Set default payment method\n * Set a payment method as the default for future payments\n * @param id - The payment method ID\n * @param body - Request body\n */\n async setDefaultPaymentMethod(id: string, options?: { body?: Record<string, unknown> }): Promise<HttpResponse<{ message?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/billing/payment-methods/{id}/default',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Delete payment method\n * Remove a payment method from the account\n * @param id - The payment method ID\n */\n async deletePaymentMethod(id: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/billing/payment-methods/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Stripe webhook endpoint\n * Receive and process Stripe webhook events\n * @param body - Request body\n */\n async stripeWebhook(body: Record<string, unknown>): Promise<HttpResponse<{ received?: boolean }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/billing/webhooks',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * ArtifactsService - Artifact storage and retrieval endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Artifact } from '../models/types.js';\n\n/**\n * Artifact storage and retrieval endpoints\n */\nexport class ArtifactsService extends BaseService {\n\n /**\n * List artifacts\n * List all artifacts for the authenticated user with optional filters\n * @param limit - Maximum number of artifacts to return\n * @param offset - Number of artifacts to skip\n * @param memoryId - Filter by memory ID\n * @param conversationId - Filter by conversation ID\n * @param type - Filter by artifact type\n */\n async listArtifacts(options?: { limit?: number; offset?: number; memoryId?: string; conversationId?: string; type?: string }): Promise<HttpResponse<{ data?: Artifact[]; count?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/artifacts',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n if (options?.memoryId !== undefined) {\n request.addQueryParam('memoryId', {\n key: 'memoryId',\n value: options.memoryId,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.conversationId !== undefined) {\n request.addQueryParam('conversationId', {\n key: 'conversationId',\n value: options.conversationId,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.type !== undefined) {\n request.addQueryParam('type', {\n key: 'type',\n value: options.type,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create artifact\n * Create a new artifact for the authenticated user\n * @param body - Request body\n */\n async createArtifact(body: { content: string; type: string; name?: string; description?: string; memoryId?: string; conversationId?: string; metadata?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Artifact }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/artifacts',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get artifact by ID\n * Retrieve a specific artifact by its ID\n * @param id - The artifact ID\n */\n async getArtifactById(id: string): Promise<HttpResponse<{ data?: Artifact }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/artifacts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Delete artifact\n * Delete an artifact by its ID\n * @param id - The artifact ID\n */\n async deleteArtifact(id: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/artifacts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Update artifact\n * Update an existing artifact with partial data\n * @param id - The artifact ID\n * @param body - Request body\n */\n async updateArtifact(id: string, body: { content?: string; type?: string; name?: string; description?: string; metadata?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Artifact }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PATCH',\n path: '/api/artifacts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * ApiKeysService - API key management endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { ApiKey } from '../models/types.js';\n\n/**\n * API key management endpoints\n */\nexport class ApiKeysService extends BaseService {\n\n /**\n * Get user information for current API key\n * Debug endpoint to retrieve user ID and authentication method from the current API key\n */\n async debugUser(): Promise<HttpResponse<{ data?: { userId?: string; authMethod?: string } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/apikeys/debug-user',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * List API keys\n * List all API keys for the authenticated user\n */\n async listApiKeys(): Promise<HttpResponse<{ data?: ApiKey[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/apikeys',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Create API key\n * Create a new API key for the authenticated user\n * @param body - Request body\n */\n async createApiKey(options?: { body?: { label?: string; expiresAt?: string; scopes?: 'read' | 'write' | 'admin'[] } }): Promise<HttpResponse<{ data?: { apiKey?: string; keyInfo?: ApiKey } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/apikeys',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Delete API key\n * Delete (revoke) an API key by its ID\n * @param id - The API key ID\n */\n async deleteApiKey(id: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/apikeys/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n}","/**\n * AlertsService - System alerts banner endpoints (customer portal) API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { SystemAlert } from '../models/types.js';\n\n/**\n * System alerts banner endpoints (customer portal)\n */\nexport class AlertsService extends BaseService {\n\n /**\n * List active system alerts for the current user\n * Returns all active, non-expired system alerts that target either\nall users or the authenticated user specifically. Used by the\ncustomer portal to render the system alerts banner.\n\n */\n async getActiveSystemAlerts(): Promise<HttpResponse<{ alerts?: SystemAlert[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/alerts/active',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n}","/**\n * AdminService - Admin management endpoints for invite codes and platform configuration API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n * Admin management endpoints for invite codes and platform configuration\n */\nexport class AdminService extends BaseService {\n\n /**\n * List invite codes\n * List all invite codes with optional status filter\n * @param status - Filter by status\n * @param limit - \n * @param offset - \n */\n async adminListInviteCodes(options?: { status?: 'active' | 'exhausted' | 'revoked' | 'expired'; limit?: number; offset?: number }): Promise<HttpResponse<{ invites?: { id?: string; code?: string; email?: string; label?: string; maxUses?: number; currentUses?: number; status?: string; expiresAt?: string; createdAt?: string }[]; total?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/admin/invites',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.status !== undefined) {\n request.addQueryParam('status', {\n key: 'status',\n value: options.status,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create invite code\n * Create a new invite code for the gated preview\n * @param body - Request body\n */\n async adminCreateInviteCode(body: { email: string; label: string; maxUses?: number; code?: string; expiresAt?: string; metadata?: Record<string, unknown> }): Promise<HttpResponse<{ id?: string; code?: string; label?: string; maxUses?: number; currentUses?: number; status?: string; expiresAt?: string; createdAt?: string; shareUrl?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/admin/invites',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get invite system statistics\n * Aggregate statistics for the invite system\n */\n async adminGetInviteStats(): Promise<HttpResponse<{ totalCodes?: number; activeCodes?: number; totalRedemptions?: number; totalCapacity?: number; utilizationRate?: number; recentRedemptions?: { code?: string; email?: string; redeemedAt?: string }[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/admin/invites/stats',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Get invite code details\n * Get details for a single invite code including redemptions\n * @param code - The invite code\n */\n async adminGetInviteCode(code: string): Promise<HttpResponse<{ id?: string; code?: string; email?: string; label?: string; maxUses?: number; currentUses?: number; status?: string; redemptions?: { userId?: string; email?: string; redeemedAt?: string }[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/admin/invites/{code}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('code', {\n key: 'code',\n value: code,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Revoke an invite code\n * Revoke an invite code. Existing accounts created with this code are unaffected.\n * @param code - \n */\n async adminRevokeInviteCode(code: string): Promise<HttpResponse<{ code?: string; status?: string; message?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/admin/invites/{code}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('code', {\n key: 'code',\n value: code,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Get gate status with audit info\n * Get current invite gate state with audit information\n */\n async adminGetGateStatus(): Promise<HttpResponse<{ gated?: boolean; updatedAt?: string; updatedBy?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/admin/gate',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Toggle invite gate\n * Toggle the invite gate. When enabled (true), new signups require a valid invite code.\nWhen disabled (false), registration is open. Takes effect immediately.\n\n * @param body - Request body\n */\n async adminSetGateStatus(body: { enabled: boolean }): Promise<HttpResponse<{ gated?: boolean; updatedAt?: string; message?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/admin/gate',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Backfill per-stage memory pipeline status fields by inspecting actual graph state\n * @param body - Request body\n */\n async adminMigratePerStageStatus(options?: { body?: { userId?: string; limit?: number; offset?: number; dryRun?: boolean } }): Promise<HttpResponse<{ scanned: number; unchanged: number; updated: number; dryRun: boolean; batchOffset: number; totalCandidates: number; totalRemaining: number; startedAt: string; completedAt: string; durationMs: number; errors: { memoryId?: string; error?: string }[]; toUpdate?: Record<string, unknown>[]; toUpdateCount?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/admin/migrate/per-stage-status',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * AdminAlertsService - Admin endpoints for managing system alerts API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { SystemAlert } from '../models/types.js';\n\n/**\n * Admin endpoints for managing system alerts\n */\nexport class AdminAlertsService extends BaseService {\n\n /**\n * List system alerts\n * @param activeOnly - If true, return only active, non-expired alerts.\n */\n async adminListSystemAlerts(options?: { activeOnly?: boolean }): Promise<HttpResponse<{ alerts?: SystemAlert[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/admin/alerts',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.activeOnly !== undefined) {\n request.addQueryParam('activeOnly', {\n key: 'activeOnly',\n value: options.activeOnly,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create a system alert\n * @param body - Request body\n */\n async adminCreateSystemAlert(body: { title: string; body: string; severity?: 'info' | 'warning' | 'critical'; active?: boolean; dismissible?: boolean; targetAllUsers?: boolean; targetUserIds?: string[]; expiresAt?: string }): Promise<HttpResponse<{ id: string; title: string; body: string; severity: 'info' | 'warning' | 'critical'; active?: boolean; dismissible?: boolean; targetAllUsers?: boolean; targetUserIds?: string[]; createdAt: string; expiresAt: string; createdBy: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/admin/alerts',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get a system alert by id\n * @param id - System alert id\n */\n async adminGetSystemAlert(id: string): Promise<HttpResponse<{ id: string; title: string; body: string; severity: 'info' | 'warning' | 'critical'; active?: boolean; dismissible?: boolean; targetAllUsers?: boolean; targetUserIds?: string[]; createdAt: string; expiresAt: string; createdBy: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/admin/alerts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Delete a system alert\n * @param id - System alert id\n */\n async adminDeleteSystemAlert(id: string): Promise<HttpResponse<{ deleted?: boolean }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/admin/alerts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Update a system alert\n * @param id - \n * @param body - Request body\n */\n async adminUpdateSystemAlert(id: string, body: { title?: string; body?: string; severity?: 'info' | 'warning' | 'critical'; active?: boolean; dismissible?: boolean; targetAllUsers?: boolean; targetUserIds?: string[]; expiresAt?: string }): Promise<HttpResponse<{ id: string; title: string; body: string; severity: 'info' | 'warning' | 'critical'; active?: boolean; dismissible?: boolean; targetAllUsers?: boolean; targetUserIds?: string[]; createdAt: string; expiresAt: string; createdBy: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PATCH',\n path: '/api/admin/alerts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * AdminPipelineService - Admin Pipeline API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n */\nexport class AdminPipelineService extends BaseService {\n\n /**\n * Re-enqueue a single memory through one pipeline\n * Admin-only. Re-publishes the requested pipeline job for the given\nmemory and resets the corresponding per-stage status field(s) to\n`queued`. Used to recover individual memories from transient\nworker failures or to replay a stage after a code change.\n\n * @param id - Memory id (admin can target any tenant).\n * @param body - Request body\n */\n async adminRerunMemoryPipeline(id: string, body: { pipeline: 'summary-qna' | 'embeddings' | 'graph'; embeddingKind?: 'content' | 'summary' | 'question'; questionId?: string }): Promise<HttpResponse<{ memoryId?: string; pipeline?: string; status?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/admin/memories/{id}/rerun',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Per-queue depth + failure counts for the memory-creation pipelines\n * Returns BullMQ `getJobCounts()` for each known pipeline queue. Queues\nthat have not yet been provisioned (e.g. `summary-qna` while task 2.3\nis in flight) are reported with `{ status: \"not_configured\" }` rather\nthan throwing.\n\n */\n async adminGetPipelineHealth(): Promise<HttpResponse<{ queues?: Record<string, unknown>; timestamp?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/admin/pipeline/health',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Inspect per-stage pipeline status for a single memory\n * Debugging affordance — returns the six per-stage status fields and graphSkipReason.\n * @param id - \n */\n async adminGetMemoryPipelineStatus(id: string): Promise<HttpResponse<{ memoryId?: string; contentEmbeddingStatus?: string; summaryStatus?: string; questionsStatus?: string; summaryEmbeddingStatus?: string; questionsEmbeddingStatus?: string; graphStatus?: string; graphSkipReason?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/admin/memories/{id}/pipeline-status',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n}","/**\n * Zod schemas for API models.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\n\nexport const error = z.object({\n /** Error message */\n error: z.string(),\n /** Optional constructor name of the underlying error. Present on selected 500 responses for client diagnostics; absent on most error responses. */\n errorClass: z.string().optional(),\n});\n\nexport const pagination = z.object({\n /** Maximum number of items per page */\n limit: z.number().min(1),\n /** Number of items to skip */\n offset: z.number().min(0),\n /** Total number of items */\n count: z.number().min(0),\n});\n\n/**\n * Environment context for memory scoping — product, service, team, component, role.\n */\nexport const codeContext = z.object({\n /** Product name (e.g. 'memnexus', 'spearmint') */\n product: z.string().max(200).optional(),\n /** Repository name, if different from product */\n repo: z.string().max(200).optional(),\n /** Service or package name (e.g. 'core-api', 'mcp-server', 'cli') */\n service: z.string().max(200).optional(),\n /** Subsystem or component (e.g. 'extraction-pipeline', 'search', 'billing') */\n component: z.string().max(200).optional(),\n /** Team that produced this knowledge (e.g. 'extraction', 'mcp', 'platform') */\n team: z.string().max(200).optional(),\n /** Agent role or persona (e.g. 'team-lead', 'implementer', 'reviewer') */\n role: z.string().max(200).optional(),\n /** Additional project-specific scope tags */\n extra: z.object({\n\n}).catchall(z.string().max(500)).optional(),\n}).nullable();\n\nexport const memory = z.lazy(() => z.object({\n /** Unique memory identifier */\n id: z.string(),\n /** Optional human-readable name for deterministic retrieval. Only the HEAD version carries the name. */\n name: z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/).optional(),\n /** Version number for named memories (1 for first version, increments on update) */\n version: z.number().min(1).optional(),\n /** Memory content */\n content: z.string(),\n /** Type of memory */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']),\n /** Context or domain of the memory */\n context: z.string().optional(),\n /** Associated topics */\n topics: z.array(z.string()).optional(),\n /** System ingestion timestamp (when the system learned about this) */\n timestamp: z.string().datetime().optional(),\n /** Event time (when the event actually occurred in reality) */\n eventTime: z.string().datetime().optional(),\n /** Validity start time (when this fact becomes valid) */\n validFrom: z.string().datetime().optional(),\n /** Validity end time (when this fact expires, null means never expires) */\n validTo: z.string().datetime().nullable().optional(),\n /** Environment context for memory scoping — product, service, team, component, role. */\n codeContext: codeContext.optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n /** Confidence score (0-1) for this memory's accuracy */\n confidenceScore: z.number().min(0).max(1).optional(),\n /** Basis for the confidence score */\n confidenceBasis: z.enum(['direct-statement', 'repeated-mention', 'single-mention', 'hedged', 'inference', 'external-source', 'contradicted']).optional(),\n /** Effective state of the memory in the narrative */\n effectiveState: z.enum(['current', 'superseded', 'contradicted', 'duplicate']).optional(),\n /** Authority level: directive (mandates) > decision (choices with reasoning) > observation (learned during work) > auto-captured (generated content) */\n authority: z.enum(['directive', 'decision', 'observation', 'auto-captured']).optional(),\n /** Legacy aggregate extraction status. DERIVED on read from the six per-stage statuses (contentEmbeddingStatus, summaryStatus, questionsStatus, summaryEmbeddingStatus, questionsEmbeddingStatus, graphStatus). Preserved for SDK compatibility per PRD memory-creation-pipeline-v2 §5 Q7. */\n extractionStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** When extraction was completed */\n extractionCompletedAt: z.string().datetime().optional(),\n /** Pipeline 2 content-embedding stage status. Tracks the queue lifecycle for writing m.embedding (primary content embedding). */\n contentEmbeddingStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** AI-generated summary of the memory content */\n summary: z.string().optional(),\n /** Pipeline 1 summary stage status. Tracks generation of m.summary by the summary-qna LLM call. */\n summaryStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Pipeline 1 questions stage status. Tracks generation of anticipated Question nodes by the summary-qna LLM call. */\n questionsStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Pipeline 2 summary-embedding stage status. Tracks the queue lifecycle for writing m.summaryEmbedding (depends on summaryStatus=completed). */\n summaryEmbeddingStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Pipeline 2 question-embedding stage status. Tracks the queue lifecycle for writing Question.embedding for each anticipated question (depends on questionsStatus=completed). */\n questionsEmbeddingStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Pipeline 3 graph-extraction stage status. Tracks generation of entities, facts, topics, authority, and memory-type. Replaces the role formerly played by the monolithic extractionStatus writer. */\n graphStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** When graphStatus=skipped, records why graph extraction was skipped. Mirrors the legacy extractionSkipReason field but scoped to the graph pipeline. */\n graphSkipReason: z.enum(['global_disabled', 'plan_excluded', 'user_opt_out', 'content_too_short', 'legacy', 'budget_exhausted']).nullable().optional(),\n /** When extractionStatus=skipped, records why extraction was skipped. global_disabled = GRAPH_EXTRACTION_ENABLED=false kill switch. */\n extractionSkipReason: z.enum(['global_disabled', 'plan_excluded', 'user_opt_out', 'content_too_short', 'legacy']).optional(),\n /** Status of primary (Ollama) embedding generation via durable queue */\n embeddingStatus: z.enum(['queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Status of secondary (OpenAI) dual-write embedding generation via durable queue */\n embeddingOpenaiStatus: z.enum(['queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** True if the primary content embedding used a head-truncated input (model context exceeded). */\n embeddingTruncated: z.boolean().optional(),\n /** Token count of the original content (pre-truncation, cl100k proxy). Useful for identifying under-indexed memories. */\n embeddingOriginalTokens: z.number().min(0).optional(),\n /** Smart-field strategy used to produce the primary content embedding. */\n embeddingStrategy: z.enum(['full', 'head-truncated', 'summary-selected', 'question-selected']).optional(),\n /** Number of topics extracted from content */\n extractedTopicCount: z.number().min(0).optional(),\n /** Number of facts extracted from content */\n extractedFactCount: z.number().min(0).optional(),\n /** Number of entities extracted from content */\n extractedEntityCount: z.number().min(0).optional(),\n /** Number of memories this memory contradicts via outgoing CONTRADICTS relationships */\n conflictCount: z.number().min(0).optional(),\n /** Memory visibility level. Null/undefined treated as 'private' for backward compatibility. 'admin_visible' is computed at retrieval time when an org owner/admin queries another member's post-join memory and is never accepted on writes. */\n visibility: z.enum(['private', 'shared_with_users', 'shared_with_org', 'admin_visible']).optional(),\n /** User IDs this memory is shared with (only populated when visibility = 'shared_with_users') */\n sharedWith: z.array(z.string()).optional(),\n /** Topics explicitly provided by the user */\n userTopics: z.array(z.string()).optional(),\n /** Topics automatically extracted from content */\n extractedTopics: z.array(z.string()).optional(),\n /** Entities extracted from memory content */\n entities: z.array(z.object({\n /** Entity name */\n name: z.string(),\n /** Entity type */\n type: z.string(),\n /** Extraction confidence */\n confidence: z.number().min(0).max(1).optional(),\n})).optional(),\n /** Task identifier for agentic loop memories */\n taskId: z.string().nullable().optional(),\n /** Task outcome status */\n outcome: z.enum(['resolved', 'unresolved']).nullable().optional(),\n /** Attempt number within the task */\n attemptNumber: z.number().nullable().optional(),\n /** Distillation pipeline stage status */\n distillStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).nullable().optional(),\n /** Reason distillation was skipped */\n distillSkipReason: z.enum(['global_disabled', 'plan_excluded', 'user_opt_out', 'content_too_short', 'legacy', 'budget_exhausted']).nullable().optional(),\n /** Error message if distillation failed */\n distillError: z.string().nullable().optional(),\n /** ISO 8601 timestamp when distillation completed */\n distillCompletedAt: z.string().nullable().optional(),\n}));\n\n/**\n * Privileged-only short-circuit for Pipeline 1/2 — admin/internal/test callers may pre-supply summary, questions, and/or embeddings to bypass LLM and embedding work at create time. Silently ignored for non-privileged callers.\n */\nexport const precomputedMemoryFields = z.object({\n /** Pre-computed memory summary. When supplied, summary-qna LLM call is skipped and m.summary is set inline. */\n summary: z.string().max(2000).optional(),\n /** Pre-computed anticipated questions. When supplied, the questions stage of the summary-qna LLM call is skipped and Question nodes are created inline. Hard-capped at 20. */\n questions: z.array(z.string().max(500)).max(20).optional(),\n /** Pre-computed embeddings keyed by Pipeline 2 job kind (content / summary / question). */\n embeddings: z.object({\n /** Pre-computed content embedding (m.embedding). Bypasses the content-embedding queue. */\n content: z.array(z.number()).optional(),\n /** Pre-computed summary embedding (m.summaryEmbedding). Bypasses the summary-embedding queue. */\n summary: z.array(z.number()).optional(),\n /** Pre-computed per-question embeddings — must have the same length as `questions` when both are supplied. */\n questions: z.array(z.array(z.number())).optional(),\n}).optional(),\n});\n\nexport const createMemoryRequest = z.lazy(() => z.object({\n /** Conversation ID - use \"NEW\" to always create a new conversation, provide an existing ID to append to it, or omit to auto-assign via claudeSessionId session grouping. */\n conversationId: z.string().min(1).optional(),\n /** Agent session ID (e.g. MCP session ID, Claude Code session UUID). When conversationId is omitted, reuses or creates a conversation for this session (automatic grouping). Ignored when conversationId is explicitly provided. Works with any MCP client (Claude, Copilot, Cursor, etc.). */\n claudeSessionId: z.string().max(200).optional(),\n /** Optional human-readable name for deterministic retrieval. Must be unique per user. */\n name: z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/).optional(),\n /** Memory content */\n content: z.string().min(1).max(50000),\n /** Type of memory */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']).optional(),\n /** Role (MCP protocol compatibility) */\n role: z.enum(['user', 'assistant', 'system']).optional(),\n /** Context or domain */\n context: z.string().max(200).optional(),\n /** Associated topics */\n topics: z.array(z.string().max(100)).max(50).optional(),\n /** Event time (when the event actually occurred in reality, ISO 8601 format) */\n eventTime: z.string().datetime().optional(),\n /** Validity start time (when this fact becomes valid, ISO 8601 format) */\n validFrom: z.string().datetime().optional(),\n /** Validity end time (when this fact expires, ISO 8601 format, omit for never expires) */\n validTo: z.string().datetime().optional(),\n codeContext: z.object({\n /** Product name (e.g. 'memnexus', 'spearmint') */\n product: z.string().max(200).optional(),\n /** Repository name, if different from product */\n repo: z.string().max(200).optional(),\n /** Service or package name (e.g. 'core-api', 'mcp-server', 'cli') */\n service: z.string().max(200).optional(),\n /** Subsystem or component (e.g. 'extraction-pipeline', 'search', 'billing') */\n component: z.string().max(200).optional(),\n /** Team that produced this knowledge (e.g. 'extraction', 'mcp', 'platform') */\n team: z.string().max(200).optional(),\n /** Agent role or persona (e.g. 'team-lead', 'implementer', 'reviewer') */\n role: z.string().max(200).optional(),\n /** Additional project-specific scope tags */\n extra: z.object({\n\n}).catchall(z.string().max(500)).optional(),\n}).optional(),\n /** Privileged-only short-circuit for Pipeline 1/2 — admin/internal/test callers may pre-supply summary, questions, and/or embeddings to bypass LLM and embedding work at create time. Silently ignored for non-privileged callers. */\n precomputed: precomputedMemoryFields.optional(),\n /** Task identifier for grouping memories across agentic loop attempts */\n taskId: z.string().max(200).optional(),\n /** Task outcome status for this memory */\n outcome: z.enum(['resolved', 'unresolved']).optional(),\n /** Request distillation of this memory (Pro/Enterprise only) */\n distill: z.boolean().optional(),\n}));\n\nexport const updateMemoryRequest = z.object({\n /** Updated memory content */\n content: z.string().min(1).max(50000).optional(),\n /** Assign or remove a name. Set to a valid name to assign, empty string to remove. */\n name: z.union([z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/), z.enum([''])]).optional(),\n /** Updated memory type */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']).optional(),\n /** Updated context or domain */\n context: z.string().max(200).optional(),\n /** Updated topics */\n topics: z.array(z.string().max(100)).max(50).optional(),\n /** Task outcome status. Set to null to clear. */\n outcome: z.enum(['resolved', 'unresolved']).nullable().optional(),\n});\n\nexport const createMemoryResponseMeta = z.object({\n /** Conversation ID (actual ID if \"NEW\" was provided) */\n conversationId: z.string(),\n /** Auto-assigned session ID based on 90-minute gap detection */\n sessionId: z.string(),\n /** Whether a new session was created (true) or existing session was reused (false) */\n sessionCreated: z.boolean(),\n /** Whether a new conversation was created (true if conversationId was \"NEW\") */\n conversationCreated: z.boolean(),\n});\n\n/**\n * Response from creating a memory, includes the memory and session/conversation metadata\n */\nexport const createMemoryResponse = z.lazy(() => z.object({\n data: memory,\n meta: createMemoryResponseMeta,\n}));\n\nexport const relatedMemoryResult = z.lazy(() => z.object({\n memory: z.object({\n /** Unique memory identifier */\n id: z.string(),\n /** Optional human-readable name for deterministic retrieval. Only the HEAD version carries the name. */\n name: z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/).optional(),\n /** Version number for named memories (1 for first version, increments on update) */\n version: z.number().min(1).optional(),\n /** Memory content */\n content: z.string(),\n /** Type of memory */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']),\n /** Context or domain of the memory */\n context: z.string().optional(),\n /** Associated topics */\n topics: z.array(z.string()).optional(),\n /** System ingestion timestamp (when the system learned about this) */\n timestamp: z.string().datetime().optional(),\n /** Event time (when the event actually occurred in reality) */\n eventTime: z.string().datetime().optional(),\n /** Validity start time (when this fact becomes valid) */\n validFrom: z.string().datetime().optional(),\n /** Validity end time (when this fact expires, null means never expires) */\n validTo: z.string().datetime().nullable().optional(),\n /** Environment context for memory scoping — product, service, team, component, role. */\n codeContext: codeContext.optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n /** Confidence score (0-1) for this memory's accuracy */\n confidenceScore: z.number().min(0).max(1).optional(),\n /** Basis for the confidence score */\n confidenceBasis: z.enum(['direct-statement', 'repeated-mention', 'single-mention', 'hedged', 'inference', 'external-source', 'contradicted']).optional(),\n /** Effective state of the memory in the narrative */\n effectiveState: z.enum(['current', 'superseded', 'contradicted', 'duplicate']).optional(),\n /** Authority level: directive (mandates) > decision (choices with reasoning) > observation (learned during work) > auto-captured (generated content) */\n authority: z.enum(['directive', 'decision', 'observation', 'auto-captured']).optional(),\n /** Legacy aggregate extraction status. DERIVED on read from the six per-stage statuses (contentEmbeddingStatus, summaryStatus, questionsStatus, summaryEmbeddingStatus, questionsEmbeddingStatus, graphStatus). Preserved for SDK compatibility per PRD memory-creation-pipeline-v2 §5 Q7. */\n extractionStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** When extraction was completed */\n extractionCompletedAt: z.string().datetime().optional(),\n /** Pipeline 2 content-embedding stage status. Tracks the queue lifecycle for writing m.embedding (primary content embedding). */\n contentEmbeddingStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** AI-generated summary of the memory content */\n summary: z.string().optional(),\n /** Pipeline 1 summary stage status. Tracks generation of m.summary by the summary-qna LLM call. */\n summaryStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Pipeline 1 questions stage status. Tracks generation of anticipated Question nodes by the summary-qna LLM call. */\n questionsStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Pipeline 2 summary-embedding stage status. Tracks the queue lifecycle for writing m.summaryEmbedding (depends on summaryStatus=completed). */\n summaryEmbeddingStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Pipeline 2 question-embedding stage status. Tracks the queue lifecycle for writing Question.embedding for each anticipated question (depends on questionsStatus=completed). */\n questionsEmbeddingStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Pipeline 3 graph-extraction stage status. Tracks generation of entities, facts, topics, authority, and memory-type. Replaces the role formerly played by the monolithic extractionStatus writer. */\n graphStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** When graphStatus=skipped, records why graph extraction was skipped. Mirrors the legacy extractionSkipReason field but scoped to the graph pipeline. */\n graphSkipReason: z.enum(['global_disabled', 'plan_excluded', 'user_opt_out', 'content_too_short', 'legacy', 'budget_exhausted']).nullable().optional(),\n /** When extractionStatus=skipped, records why extraction was skipped. global_disabled = GRAPH_EXTRACTION_ENABLED=false kill switch. */\n extractionSkipReason: z.enum(['global_disabled', 'plan_excluded', 'user_opt_out', 'content_too_short', 'legacy']).optional(),\n /** Status of primary (Ollama) embedding generation via durable queue */\n embeddingStatus: z.enum(['queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Status of secondary (OpenAI) dual-write embedding generation via durable queue */\n embeddingOpenaiStatus: z.enum(['queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** True if the primary content embedding used a head-truncated input (model context exceeded). */\n embeddingTruncated: z.boolean().optional(),\n /** Token count of the original content (pre-truncation, cl100k proxy). Useful for identifying under-indexed memories. */\n embeddingOriginalTokens: z.number().min(0).optional(),\n /** Smart-field strategy used to produce the primary content embedding. */\n embeddingStrategy: z.enum(['full', 'head-truncated', 'summary-selected', 'question-selected']).optional(),\n /** Number of topics extracted from content */\n extractedTopicCount: z.number().min(0).optional(),\n /** Number of facts extracted from content */\n extractedFactCount: z.number().min(0).optional(),\n /** Number of entities extracted from content */\n extractedEntityCount: z.number().min(0).optional(),\n /** Number of memories this memory contradicts via outgoing CONTRADICTS relationships */\n conflictCount: z.number().min(0).optional(),\n /** Memory visibility level. Null/undefined treated as 'private' for backward compatibility. 'admin_visible' is computed at retrieval time when an org owner/admin queries another member's post-join memory and is never accepted on writes. */\n visibility: z.enum(['private', 'shared_with_users', 'shared_with_org', 'admin_visible']).optional(),\n /** User IDs this memory is shared with (only populated when visibility = 'shared_with_users') */\n sharedWith: z.array(z.string()).optional(),\n /** Topics explicitly provided by the user */\n userTopics: z.array(z.string()).optional(),\n /** Topics automatically extracted from content */\n extractedTopics: z.array(z.string()).optional(),\n /** Entities extracted from memory content */\n entities: z.array(z.object({\n /** Entity name */\n name: z.string(),\n /** Entity type */\n type: z.string(),\n /** Extraction confidence */\n confidence: z.number().min(0).max(1).optional(),\n})).optional(),\n /** Task identifier for agentic loop memories */\n taskId: z.string().nullable().optional(),\n /** Task outcome status */\n outcome: z.enum(['resolved', 'unresolved']).nullable().optional(),\n /** Attempt number within the task */\n attemptNumber: z.number().nullable().optional(),\n /** Distillation pipeline stage status */\n distillStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).nullable().optional(),\n /** Reason distillation was skipped */\n distillSkipReason: z.enum(['global_disabled', 'plan_excluded', 'user_opt_out', 'content_too_short', 'legacy', 'budget_exhausted']).nullable().optional(),\n /** Error message if distillation failed */\n distillError: z.string().nullable().optional(),\n /** ISO 8601 timestamp when distillation completed */\n distillCompletedAt: z.string().nullable().optional(),\n}),\n /** Relevance score (0-1). For similar: semantic similarity. For related: topic overlap ratio. For conversation: position score. */\n score: z.number().min(0).max(1),\n /** Type of relationship: similar, similar-by-topic, conversation, or topic */\n relationship: z.string(),\n /** Topics shared with the source memory (only for topic relationship) */\n sharedTopics: z.array(z.string()).optional(),\n}));\n\n/**\n * Response from getting a memory by ID\n */\nexport const getMemoryResponse = z.lazy(() => z.object({\n data: memory,\n}));\n\nexport const updateNamedMemoryRequest = z.object({\n /** New content for the named memory version */\n content: z.string().min(1).max(50000),\n /** Optimistic concurrency (compare-and-swap): if provided, the update only succeeds when the current head version's id matches this value. On mismatch the server returns 409 Conflict with the current head id, so the caller can re-read, re-merge, and retry. When omitted, the update is an unconditional replace (backward compatible). */\n expectedHeadId: z.string().uuid().optional(),\n /** Type of memory (defaults to previous version's type) */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']).optional(),\n /** Context or domain */\n context: z.string().max(200).optional(),\n /** Associated topics */\n topics: z.array(z.string().max(100)).max(50).optional(),\n /** Conversation to group this version with (overrides previous version's conversation) */\n conversationId: z.string().max(200).optional(),\n codeContext: z.object({\n /** Product name (e.g. 'memnexus', 'spearmint') */\n product: z.string().max(200).optional(),\n /** Repository name, if different from product */\n repo: z.string().max(200).optional(),\n /** Service or package name (e.g. 'core-api', 'mcp-server', 'cli') */\n service: z.string().max(200).optional(),\n /** Subsystem or component (e.g. 'extraction-pipeline', 'search', 'billing') */\n component: z.string().max(200).optional(),\n /** Team that produced this knowledge (e.g. 'extraction', 'mcp', 'platform') */\n team: z.string().max(200).optional(),\n /** Agent role or persona (e.g. 'team-lead', 'implementer', 'reviewer') */\n role: z.string().max(200).optional(),\n /** Additional project-specific scope tags */\n extra: z.object({\n\n}).catchall(z.string().max(500)).optional(),\n}).optional(),\n /** Additional memory ID that this version supersedes (beyond the implicit version chain) */\n supersedes: z.string().uuid().optional(),\n});\n\nexport const appendNamedMemoryRequest = z.object({\n /** Text block to append to the named memory's current content. The total (existing + separator + block) must not exceed the maximum content length or the request is rejected with 413. */\n block: z.string().min(1).max(50000),\n /** Separator inserted between the existing content and the appended block. Defaults to a blank line (\"\\n\\n\"). */\n separator: z.string().max(100).optional(),\n /** Type of memory (defaults to previous version's type) */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']).optional(),\n /** Context or domain */\n context: z.string().max(200).optional(),\n /** Associated topics */\n topics: z.array(z.string().max(100)).max(50).optional(),\n /** Conversation to group this version with (overrides previous version's conversation) */\n conversationId: z.string().max(200).optional(),\n codeContext: z.object({\n /** Product name (e.g. 'memnexus', 'spearmint') */\n product: z.string().max(200).optional(),\n /** Repository name, if different from product */\n repo: z.string().max(200).optional(),\n /** Service or package name (e.g. 'core-api', 'mcp-server', 'cli') */\n service: z.string().max(200).optional(),\n /** Subsystem or component (e.g. 'extraction-pipeline', 'search', 'billing') */\n component: z.string().max(200).optional(),\n /** Team that produced this knowledge (e.g. 'extraction', 'mcp', 'platform') */\n team: z.string().max(200).optional(),\n /** Agent role or persona (e.g. 'team-lead', 'implementer', 'reviewer') */\n role: z.string().max(200).optional(),\n /** Additional project-specific scope tags */\n extra: z.object({\n\n}).catchall(z.string().max(500)).optional(),\n}).optional(),\n});\n\nexport const namedMemoryHistoryResponse = z.object({\n /** Human-readable name for deterministic retrieval (kebab-case, 2-64 chars) */\n name: z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/),\n versions: z.array(z.object({\n /** Version number */\n version: z.number().min(1),\n /** Memory ID for this version */\n id: z.string(),\n /** Memory content at this version */\n content: z.string(),\n /** Effective state — HEAD version is 'current', older versions are 'superseded' */\n effectiveState: z.enum(['current', 'superseded', 'contradicted', 'duplicate']).optional(),\n /** When this version was created */\n createdAt: z.string().datetime(),\n})),\n});\n\nexport const batchGetMemoriesRequest = z.object({\n /** Array of memory IDs to retrieve. Non-existent or malformed IDs are returned in the 'missing' array rather than failing the request. */\n ids: z.array(z.string().min(1).max(200)).min(1).max(100),\n /** Detail level for each memory. 'minimal' returns raw memory only (default, backward compatible). 'standard' adds topics, entities, facts, and relationships. 'full' additionally adds conversation context and relationship target previews. */\n detail: z.enum(['minimal', 'standard', 'full']).optional(),\n});\n\nexport const batchGetMemoriesMeta = z.object({\n /** Number of IDs requested */\n requested: z.number(),\n /** Number of memories found */\n found: z.number(),\n /** IDs that were not found */\n missing: z.array(z.string()),\n});\n\n/**\n * Response from batch memory retrieval\n */\nexport const batchGetMemoriesResponse = z.lazy(() => z.object({\n data: z.array(memory),\n meta: batchGetMemoriesMeta,\n}));\n\nexport const graphRAGQueryRequest = z.object({\n /** GraphRAG query string */\n query: z.string().min(1),\n /** Maximum graph traversal depth (alias: depth) */\n maxDepth: z.number().min(1).max(5).optional(),\n /** Graph traversal depth (deprecated, use maxDepth) */\n depth: z.number().min(1).max(5).optional(),\n /** Maximum number of results to return */\n limit: z.number().min(1).max(100).optional(),\n /** Include relationship data in response */\n includeRelationships: z.boolean().optional(),\n});\n\nexport const graphRAGQueryResponse = z.lazy(() => z.object({\n /** Unique identifier for this query execution */\n queryId: z.string(),\n /** Array of query results with graph context */\n results: z.array(z.object({\n memory: memory,\n /** Relevance score from full-text search */\n score: z.number(),\n /** Topics associated with this memory */\n topics: z.array(z.object({\n\n}).catchall(z.unknown().nullable())),\n /** Entities mentioned in this memory */\n entities: z.array(z.object({\n\n}).catchall(z.unknown().nullable())),\n /** Related memories through shared topics */\n relatedMemories: z.array(z.object({\n\n}).catchall(z.unknown().nullable())),\n})),\n /** Query execution metadata */\n metadata: z.object({\n /** Original query string */\n query: z.string(),\n /** Graph traversal depth used */\n depth: z.number(),\n /** Maximum number of results returned */\n limit: z.number(),\n /** Query execution timestamp */\n timestamp: z.string().datetime(),\n}),\n}));\n\nexport const conversation = z.object({\n /** Unique conversation identifier */\n id: z.string(),\n /** Conversation title */\n title: z.string(),\n /** Conversation summary */\n summary: z.string().nullable(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n});\n\nexport const createConversationRequest = z.object({\n /** Conversation title */\n title: z.string().min(1),\n /** Optional conversation summary */\n summary: z.string().optional(),\n});\n\nexport const apiKey = z.object({\n /** Unique API key identifier */\n id: z.string(),\n /** Human-readable label for the API key */\n label: z.string(),\n /** API key prefix for identification */\n prefix: z.string(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Expiration timestamp (null if never expires) */\n expiresAt: z.string().datetime().nullable(),\n /** Last usage timestamp (null if never used) */\n lastUsedAt: z.string().datetime().nullable(),\n});\n\nexport const topic = z.object({\n /** Topic name */\n name: z.string(),\n /** Number of memories associated with this topic */\n count: z.number().min(0),\n});\n\nexport const pattern = z.object({\n /** Unique pattern identifier */\n id: z.string(),\n /** Pattern type */\n type: z.string(),\n /** Pattern description */\n description: z.string(),\n /** Confidence score (0-1) */\n confidence: z.number().min(0).max(1),\n});\n\nexport const compileInstructionsRequest = z.object({\n conversationContext: z.array(z.string().max(100)).max(20).optional(),\n currentQuery: z.string().max(2000).optional(),\n tokenBudget: z.number().min(50).max(2000).optional(),\n minConfidence: z.number().min(0).max(1).optional(),\n maxInstructions: z.number().min(1).max(10).optional(),\n});\n\nexport const compileInstructionsResponse = z.object({\n instructions: z.array(z.object({\n patternId: z.string(),\n instruction: z.string().max(500),\n confidence: z.number(),\n priority: z.number(),\n source: z.enum(['learned', 'explicit', 'manual']),\n patternType: z.string(),\n activatedBy: z.array(z.string()),\n recommendationId: z.string().optional(),\n triggerContext: z.string().optional(),\n evidenceSummary: z.string().optional(),\n firstSurfacing: z.boolean().optional(),\n})),\n summary: z.string().max(1000),\n tokenCount: z.number(),\n patternsEvaluated: z.number(),\n patternsActivated: z.number(),\n conflictsResolved: z.array(z.object({\n winnerId: z.string(),\n loserId: z.string(),\n strategy: z.enum(['priority_override']),\n})),\n systemState: z.enum(['ok', 'cold_start', 'pending_only', 'no_match']).optional(),\n pendingCount: z.number().min(0).optional(),\n patternsExcluded: z.number().min(0).optional(),\n});\n\nexport const recommendation = z.object({\n id: z.string().uuid(),\n userId: z.string(),\n triggerContext: z.string().max(500),\n practice: z.string().max(1000),\n evidenceSummary: z.string().max(2000).optional(),\n source: z.enum(['explicit', 'learned', 'manual']),\n outcomeSignal: z.enum(['positive', 'neutral', 'unknown']),\n confidence: z.number().min(0).max(1),\n evidenceMemoryIds: z.array(z.string().uuid()).max(50).optional(),\n triggerEmbeddingStatus: z.enum(['pending', 'complete', 'failed']),\n applicationCount: z.number().min(0),\n provisional: z.boolean(),\n status: z.enum(['pending_review', 'active', 'paused', 'dismissed', 'superseded']),\n validFrom: z.string().datetime().optional(),\n validUntil: z.string().datetime().nullable().optional(),\n supersededBy: z.string().uuid().nullable().optional(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\n\nexport const createRecommendationRequest = z.object({\n triggerContext: z.string().max(500),\n practice: z.string().max(1000),\n evidenceSummary: z.string().max(2000).optional(),\n outcomeSignal: z.enum(['positive', 'neutral', 'unknown']).optional(),\n evidenceMemoryIds: z.array(z.string().uuid()).max(50).optional(),\n activateImmediately: z.boolean().optional(),\n});\n\nexport const matchRecommendationsRequest = z.object({\n content: z.string().max(10000),\n limit: z.number().min(1).max(5).optional(),\n similarityThreshold: z.number().min(0.1).max(0.99).optional(),\n});\n\nexport const serviceCheck = z.object({\n /** Service status */\n status: z.enum(['up', 'down']),\n /** Response time in milliseconds */\n responseTime: z.number().optional(),\n});\n\nexport const healthCheck = z.object({\n /** Overall system health status */\n status: z.enum(['healthy', 'degraded', 'unhealthy']),\n /** Health check timestamp */\n timestamp: z.string().datetime(),\n /** API version */\n version: z.string(),\n /** System uptime in seconds */\n uptime: z.number(),\n /** Individual service health checks */\n checks: z.object({\n\n}).catchall(serviceCheck),\n});\n\nexport const searchRequest = z.object({\n /** Search query. On POST all methods accept up to 32768 chars; the GET endpoint caps all methods at 2000 (use POST for larger queries). For queries over 2000 chars the keyword-matching side (the keyword method, and hybrid's fulltext/entity sub-branches) searches on a representative SAMPLE of the query's most salient terms rather than the whole text; the semantic branch still embeds the full query. Queries at or under 2000 chars are searched verbatim. */\n query: z.string().min(1).max(32768),\n /** Content filtering mode (defaults to unified) */\n mode: z.enum(['unified', 'content', 'facts']).optional(),\n /** Search algorithm: hybrid (combined, default), semantic (vector), or keyword (fulltext). */\n searchMethod: z.enum(['keyword', 'semantic', 'hybrid']).optional(),\n /** Target number of results (defaults to 20). Note: when the v2.33 RRF consensus-exemption feature is enabled (CONSENSUS_EXEMPTION_ENABLED, off by default), a hybrid response MAY contain up to limit + CONSENSUS_EXEMPTION_MAX_PINS results — a small number of dual-primary-consensus documents appended after the top-`limit` window without evicting it. With the feature off, the response never exceeds `limit`. */\n limit: z.number().min(1).max(100).optional(),\n /** Offset for pagination (defaults to 0) */\n offset: z.number().min(0).optional(),\n /** Weight for vector (semantic) results in hybrid search (0-1, defaults to 0.7) */\n vectorWeight: z.number().min(0).max(1).optional(),\n /** Weight for fulltext (keyword) results in hybrid search (0-1, defaults to 0.3) */\n fulltextWeight: z.number().min(0).max(1).optional(),\n /** Minimum similarity threshold for semantic search (0-1, defaults to 0.5) */\n threshold: z.number().min(0).max(1).optional(),\n /** If true, include detailed explanation of how each result was matched */\n explain: z.boolean().optional(),\n /** Point-in-time query: show what the system knew at this time (ISO 8601 format) */\n asOfTime: z.string().datetime().optional(),\n /** Validity query: show facts that were valid at this time (ISO 8601 format) */\n validAtTime: z.string().datetime().optional(),\n /** Event time range start (ISO 8601 format) */\n eventTimeFrom: z.string().datetime().optional(),\n /** Event time range end (ISO 8601 format) */\n eventTimeTo: z.string().datetime().optional(),\n /** Ingestion time range start (ISO 8601 format) */\n ingestionTimeFrom: z.string().datetime().optional(),\n /** Ingestion time range end (ISO 8601 format) */\n ingestionTimeTo: z.string().datetime().optional(),\n /** Include expired facts (defaults to false) */\n includeExpired: z.boolean().optional(),\n /** Temporal query mode: 'current' (only valid now), 'historical' (as of a point in time), 'evolution' (chronological) */\n temporalMode: z.enum(['current', 'historical', 'evolution']).optional(),\n /** Filter by topics - returns memories that have ANY of the specified topics */\n topics: z.array(z.string().max(100)).max(50).optional(),\n /** Filter by memory type */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']).optional(),\n /** Filter by conversation ID */\n conversationId: z.string().optional(),\n /** Task-scoped retrieval: returns own-history first, fills remainder with cross-task results. */\n taskId: z.string().max(200).optional(),\n /** Filter by task outcome. Use 'resolved' to find successful approaches from past tasks. */\n outcomeFilter: z.enum(['resolved', 'unresolved', 'any']).optional(),\n /** Include topics associated with matched memories (defaults to false for performance) */\n includeTopics: z.boolean().optional(),\n /** Include entities mentioned in matched memories (defaults to false for performance) */\n includeEntities: z.boolean().optional(),\n /** Include facts extracted from matched memories (defaults to false for performance) */\n includeFacts: z.boolean().optional(),\n /** Include claims associated with matched memories (defaults to true) */\n includeClaims: z.boolean().optional(),\n /** Filter entities by type (e.g., PERSON, TECHNOLOGY, PROJECT) */\n entityTypes: z.array(z.string().max(50)).max(20).optional(),\n /** Enable entity graph traversal branch in hybrid search (default false) */\n expandEntities: z.boolean().optional(),\n /** Enable topic graph traversal branch in hybrid search (default true) */\n expandTopics: z.boolean().optional(),\n /** Enable fact graph traversal branch in hybrid search (default true) */\n expandFacts: z.boolean().optional(),\n /** Include superseded and contradicted memories in results (default false) */\n includeSuperseded: z.boolean().optional(),\n /** Weight for entity graph branch in hybrid search (0-1, default 0.1) */\n entityWeight: z.number().min(0).max(1).optional(),\n /** Weight for topic graph branch in hybrid search (0-1, default 0.5) */\n topicWeight: z.number().min(0).max(1).optional(),\n /** Weight for fact graph branch in hybrid search (0-1, default 0.6) */\n factWeight: z.number().min(0).max(1).optional(),\n /** Weight for question graph branch in hybrid search (0-1) */\n questionWeight: z.number().min(0).max(1).optional(),\n /** Weight for claims vector branch in hybrid search (0-1, default 0.5) */\n claimsWeight: z.number().min(0).max(1).optional(),\n /** Field to sort results by (defaults to 'relevance' for search, 'createdAt' for list) */\n sortBy: z.enum(['relevance', 'createdAt', 'updatedAt', 'eventTime']).optional(),\n /** Sort order: 'asc' or 'desc' (defaults to 'desc' for timestamps, 'desc' for relevance) */\n order: z.enum(['asc', 'desc']).optional(),\n /** Include facet aggregation (topics, memoryType, effectiveState) in response (defaults to false) */\n includeFacets: z.boolean().optional(),\n});\n\nexport const entity = z.object({\n /** Entity name */\n name: z.string().optional(),\n /** Entity type */\n type: z.string().optional(),\n});\n\nexport const searchResult = z.lazy(() => z.object({\n /** Unique memory identifier */\n id: z.string(),\n /** Full memory content */\n content: z.string(),\n /** Truncated content preview (max 200 chars) */\n preview: z.string(),\n /** Optional human-readable name for deterministic retrieval */\n name: z.string().nullable().optional(),\n /** Type of memory */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']),\n /** Associated topics */\n topics: z.array(z.string()).optional(),\n /** Conversation this memory belongs to */\n conversationId: z.string().nullable().optional(),\n /** System ingestion timestamp */\n timestamp: z.string().datetime().optional(),\n /** Event time (when the event actually occurred) */\n eventTime: z.string().datetime().optional(),\n /** Validity start time */\n validFrom: z.string().datetime().optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime().optional(),\n /** Last update timestamp */\n updatedAt: z.string().datetime().optional(),\n /** Effective state of the memory */\n effectiveState: z.string().optional(),\n /** Confidence score (0-1) */\n confidenceScore: z.number().min(0).max(1).optional(),\n /** Overall relevance score for this result */\n score: z.number().nullable().optional(),\n /** Entities mentioned in this memory */\n entities: z.array(entity).optional(),\n /** Facts extracted from this memory */\n facts: z.array(z.object({\n /** Fact subject */\n subject: z.string(),\n /** Fact predicate */\n predicate: z.string(),\n /** Fact object */\n object: z.string(),\n /** Confidence */\n confidence: z.number().min(0).max(1).optional(),\n})).optional(),\n /** Combined RRF score for hybrid search */\n hybridScore: z.number().nullable().optional(),\n /** Vector similarity score (0-1) */\n vectorScore: z.number().optional(),\n /** Rank in vector search results */\n vectorRank: z.number().nullable().optional(),\n /** Fulltext search score */\n fulltextScore: z.number().optional(),\n /** Rank in fulltext search results */\n fulltextRank: z.number().nullable().optional(),\n /** Search branches that contributed to this result (e.g. ['semantic', 'entity']) */\n matchedVia: z.array(z.string()).optional(),\n /** Per-branch RRF scores for this result */\n branchScores: z.object({\n\n}).catchall(z.number()).optional(),\n /** Raw cross-encoder rerank score; present only when the reranker reordered this request's top-K (null otherwise) */\n rerankScore: z.number().nullable().optional(),\n /** Detailed explanation of the match (only when explain=true) */\n explanation: z.object({\n /** Human-readable explanation of why this result matched */\n matchReason: z.string(),\n /** Terms from the query that matched (for keyword search) */\n matchedTerms: z.array(z.string()).optional(),\n /** Cosine similarity score for semantic match (0-1) */\n semanticSimilarity: z.number().optional(),\n /** Factors that contributed to the match */\n contributingFactors: z.array(z.string()).optional(),\n}).optional(),\n}));\n\n/**\n * Temporal query metadata (present when temporal filters are used)\n */\nexport const temporalMetadata = z.object({\n /** Temporal query mode used */\n temporalMode: z.string(),\n /** Point-in-time timestamp */\n asOfTime: z.string().datetime().nullable(),\n /** Validity timestamp */\n validAtTime: z.string().datetime().nullable(),\n /** Event time range filter */\n eventTimeRange: z.object({\n from: z.string().datetime().nullable(),\n to: z.string().datetime().nullable(),\n}).nullable(),\n /** Ingestion time range filter */\n ingestionTimeRange: z.object({\n from: z.string().datetime().nullable(),\n to: z.string().datetime().nullable(),\n}).nullable(),\n /** Whether expired facts are included */\n includeExpired: z.boolean(),\n /** Whether temporal fields are included in results */\n temporalFieldsIncluded: z.boolean(),\n});\n\n/**\n * Search metadata including pagination, timing, and method\n */\nexport const searchMeta = z.lazy(() => z.object({\n /** Total number of results matching the query */\n total: z.number(),\n /** Current page number (1-based) */\n page: z.number(),\n /** Number of results per page */\n pageSize: z.number(),\n /** Search duration in milliseconds */\n searchTime: z.number(),\n /** Search method used for this query */\n searchMethod: z.string(),\n /** Temporal query metadata (present when temporal filters are used) */\n temporalMetadata: temporalMetadata.optional(),\n}));\n\nexport const facetEntry = z.object({\n /** Facet value */\n value: z.string(),\n /** Number of results with this value */\n count: z.number(),\n});\n\n/**\n * Facet aggregations (only present when includeFacets=true)\n */\nexport const facets = z.lazy(() => z.object({\n /** Topic facet counts (top 20 by frequency) */\n topics: z.array(facetEntry),\n /** Memory type facet counts */\n memoryType: z.array(facetEntry),\n /** Effective state facet counts */\n effectiveState: z.array(facetEntry),\n}));\n\nexport const claimGroupClaim = z.object({\n /** Claim ID */\n id: z.string(),\n /** Claim content text */\n content: z.string(),\n /** Memory this claim was extracted from */\n memoryId: z.string(),\n /** Claim creation timestamp */\n createdAt: z.string(),\n /** When the claimed event occurred */\n occurredStart: z.string().optional(),\n});\n\n/**\n * Computed signals about the claim cluster\n */\nexport const claimGroupSignals = z.object({\n /** Number of claims in this group */\n n_claims: z.number(),\n /** Minimum LLM-judged alignment score among all pairs in the group (0=conflict, 1=corroborate) */\n alignment_min: z.number(),\n /** Days between earliest and latest claim in the group */\n temporal_spread_days: z.number(),\n /** True if alignment_min < 0.85, indicating potential conflict */\n has_low_alignment_pair: z.boolean(),\n /** True if alignment_min < 0.4 — claims directly conflict or one supersedes the other */\n has_conflict: z.boolean(),\n /** True if temporal_spread_days > 30 */\n has_temporal_spread: z.boolean(),\n});\n\nexport const claimGroup = z.lazy(() => z.object({\n /** Deterministic group ID */\n id: z.string(),\n /** Claims in this group, sorted by createdAt descending (newest first) */\n claims: z.array(claimGroupClaim),\n /** Computed signals about the claim cluster */\n signals: claimGroupSignals,\n}));\n\nexport const searchResponse = z.lazy(() => z.object({\n /** Flattened search results with memory fields and search metadata. Length is normally ≤ the request `limit`; when the v2.33 consensus-exemption feature is enabled it may be up to limit + CONSENSUS_EXEMPTION_MAX_PINS (appended dual-primary-consensus documents). */\n data: z.array(searchResult),\n /** Search metadata including pagination, timing, and method */\n meta: searchMeta,\n /** Facet aggregations (only present when includeFacets=true) */\n facets: facets.optional(),\n /** Reader instructions for interpreting claims and resolving conflicts */\n instructions: z.string().optional(),\n /** Clusters of related claims that may conflict. Only present when relevant groups exist. Claims within each group are sorted newest-first. */\n claim_groups: z.array(claimGroup).optional(),\n}));\n\nexport const fact = z.object({\n /** Unique identifier for the fact */\n id: z.string(),\n /** User ID who owns this fact */\n userId: z.string(),\n /** The subject of the fact (what the fact is about) */\n subject: z.string(),\n /** The relationship or property type */\n predicate: z.string(),\n /** The value or target of the relationship */\n object: z.string(),\n /** Fact name/label (deprecated, use subject) */\n name: z.string().optional(),\n /** Entity type (deprecated, use predicate) */\n type: z.string().optional(),\n /** Fact description (deprecated) */\n description: z.string().nullable().optional(),\n /** Confidence score (0-1) */\n confidence: z.number().min(0).max(1).optional(),\n /** ID of the memory this fact was extracted from */\n sourceMemoryId: z.string().uuid().optional(),\n /** When this fact was extracted */\n extractedAt: z.string().datetime().optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n});\n\nexport const createFactRequest = z.object({\n /** Fact subject (entity name) */\n subject: z.string().min(1).max(500),\n /** Relationship type */\n predicate: z.string().min(1).max(200),\n /** Fact object (related entity) */\n object: z.string().min(1).max(500),\n});\n\nexport const updateFactRequest = z.object({\n /** Fact subject (entity name) */\n subject: z.string().min(1).max(500).optional(),\n /** Relationship type */\n predicate: z.string().min(1).max(200).optional(),\n /** Fact object (related entity) */\n object: z.string().min(1).max(500).optional(),\n /** Confidence score (0-1) */\n confidence: z.number().min(0).max(1).optional(),\n});\n\nexport const factSearchRequest = z.object({\n /** Search query string */\n query: z.string().min(1),\n /** Maximum number of results to return */\n limit: z.number().min(1).max(100).optional(),\n});\n\nexport const community = z.object({\n /** Unique identifier for the community */\n id: z.string(),\n /** Community name */\n name: z.string(),\n /** Community description */\n description: z.string().nullable().optional(),\n /** Number of topics in this community */\n topicCount: z.number().min(0).optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n});\n\nexport const entityNode = z.object({\n /** Unique identifier for the entity */\n id: z.string(),\n /** User ID who owns this entity */\n userId: z.string(),\n /** Entity display name */\n name: z.string(),\n /** Normalized (lowercase) name for deduplication */\n normalizedName: z.string(),\n /** Entity type classification (v2: PERSON, ORGANIZATION, CONCEPT; legacy types accepted) */\n type: z.enum(['PERSON', 'ORGANIZATION', 'CONCEPT', 'PROJECT', 'TECHNOLOGY', 'COMPONENT', 'API_ENDPOINT', 'FILE', 'LOCATION']),\n /** Alternative names for this entity */\n aliases: z.array(z.string()).optional(),\n /** Extraction confidence score (0-1) */\n confidence: z.number().min(0).max(1),\n /** When this entity was first extracted */\n firstSeenAt: z.string().datetime(),\n /** When this entity was most recently seen */\n lastSeenAt: z.string().datetime(),\n /** Number of memories that mention this entity */\n mentionCount: z.number().min(1),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n});\n\nexport const artifact = z.object({\n /** Unique identifier for the artifact */\n id: z.string(),\n /** User ID who owns this artifact */\n userId: z.string(),\n /** Artifact content */\n content: z.string(),\n /** Artifact type (e.g., note, document, code) */\n type: z.string(),\n /** Artifact name */\n name: z.string().nullable().optional(),\n /** Artifact description */\n description: z.string().nullable().optional(),\n /** Associated memory ID */\n memoryId: z.string().nullable().optional(),\n /** Associated conversation ID */\n conversationId: z.string().nullable().optional(),\n /** Additional metadata */\n metadata: z.object({}).optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n});\n\nexport const createArtifactRequest = z.object({\n /** Artifact content */\n content: z.string().min(1),\n /** Artifact type (e.g., note, document, code) */\n type: z.string().min(1),\n /** Artifact name */\n name: z.string().optional(),\n /** Artifact description */\n description: z.string().optional(),\n /** Associated memory ID */\n memoryId: z.string().optional(),\n /** Associated conversation ID */\n conversationId: z.string().optional(),\n /** Additional metadata */\n metadata: z.object({}).optional(),\n});\n\nexport const updateArtifactRequest = z.object({\n /** Artifact content */\n content: z.string().min(1).optional(),\n /** Artifact type (e.g., note, document, code) */\n type: z.string().min(1).optional(),\n /** Artifact name */\n name: z.string().optional(),\n /** Artifact description */\n description: z.string().optional(),\n /** Additional metadata */\n metadata: z.object({}).optional(),\n});\n\nexport const memoryRelationship = z.object({\n /** Unique relationship identifier */\n id: z.string(),\n /** ID of the source memory (the memory that has the relationship) */\n sourceMemoryId: z.string(),\n /** ID of the target memory (the memory being related to) */\n targetMemoryId: z.string(),\n /** Type of relationship between memories */\n type: z.enum(['SUPERSEDES', 'FOLLOWS', 'RESOLVES', 'CONTRADICTS', 'REFERENCES', 'DUPLICATES']),\n /** Confidence score for the relationship (0-1) */\n confidence: z.number().min(0).max(1),\n /** How the relationship was created */\n creationMethod: z.enum(['manual', 'auto-semantic', 'auto-temporal', 'auto-llm']),\n /** Human-readable explanation for why this relationship exists */\n reason: z.string().optional(),\n /** When the relationship was created */\n createdAt: z.string().datetime(),\n});\n\nexport const createMemoryRelationshipRequest = z.object({\n /** ID of the target memory to create a relationship with */\n targetMemoryId: z.string().min(1),\n /** Type of relationship between memories */\n type: z.enum(['SUPERSEDES', 'FOLLOWS', 'RESOLVES', 'CONTRADICTS', 'REFERENCES', 'DUPLICATES']),\n /** Confidence score for the relationship (0-1, defaults to 1.0 for manual) */\n confidence: z.number().min(0).max(1).optional(),\n /** Optional explanation for the relationship */\n reason: z.string().optional(),\n});\n\nexport const memoryRelationshipsResponse = z.lazy(() => z.object({\n data: z.array(memoryRelationship),\n /** The source memory ID these relationships are for */\n sourceMemoryId: z.string(),\n /** Direction of relationships returned */\n direction: z.enum(['outgoing', 'incoming', 'both']),\n}));\n\nexport const narrativeThread = z.object({\n /** Unique narrative thread identifier */\n id: z.string(),\n /** User ID who owns this narrative */\n userId: z.string(),\n /** Title describing the narrative thread */\n title: z.string(),\n /** Current state of the narrative thread */\n state: z.enum(['open', 'resolved', 'reopened', 'superseded']),\n /** ID of the first memory in this narrative */\n rootMemoryId: z.string(),\n /** ID of the most recent memory in this narrative */\n currentMemoryId: z.string().optional(),\n /** ID of the memory that resolved this narrative (if resolved) */\n resolutionMemoryId: z.string().optional(),\n /** Topics associated with this narrative */\n topics: z.array(z.string()),\n /** Number of memories in this narrative */\n memoryCount: z.number().min(0),\n /** When the narrative was created */\n createdAt: z.string().datetime(),\n /** When the narrative was last updated */\n updatedAt: z.string().datetime(),\n});\n\nexport const createNarrativeRequest = z.object({\n /** Title for the narrative thread */\n title: z.string().min(1),\n /** ID of the first memory in this narrative */\n rootMemoryId: z.string().min(1),\n /** Topics to associate with this narrative */\n topics: z.array(z.string()).optional(),\n});\n\nexport const updateNarrativeRequest = z.object({\n /** Updated title for the narrative */\n title: z.string().min(1).optional(),\n /** Current state of the narrative thread */\n state: z.enum(['open', 'resolved', 'reopened', 'superseded']).optional(),\n /** ID of the memory that resolves this narrative */\n resolutionMemoryId: z.string().optional(),\n /** Updated topics for the narrative */\n topics: z.array(z.string()).optional(),\n});\n\nexport const addMemoryToNarrativeRequest = z.object({\n /** ID of the memory to add to the narrative */\n memoryId: z.string().min(1),\n /** Position in the narrative (0-indexed, omit for append) */\n position: z.number().min(0).optional(),\n});\n\nexport const narrativeMemory = z.lazy(() => z.object({\n memory: z.object({\n /** Unique memory identifier */\n id: z.string(),\n /** Optional human-readable name for deterministic retrieval. Only the HEAD version carries the name. */\n name: z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/).optional(),\n /** Version number for named memories (1 for first version, increments on update) */\n version: z.number().min(1).optional(),\n /** Memory content */\n content: z.string(),\n /** Type of memory */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']),\n /** Context or domain of the memory */\n context: z.string().optional(),\n /** Associated topics */\n topics: z.array(z.string()).optional(),\n /** System ingestion timestamp (when the system learned about this) */\n timestamp: z.string().datetime().optional(),\n /** Event time (when the event actually occurred in reality) */\n eventTime: z.string().datetime().optional(),\n /** Validity start time (when this fact becomes valid) */\n validFrom: z.string().datetime().optional(),\n /** Validity end time (when this fact expires, null means never expires) */\n validTo: z.string().datetime().nullable().optional(),\n /** Environment context for memory scoping — product, service, team, component, role. */\n codeContext: codeContext.optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n /** Confidence score (0-1) for this memory's accuracy */\n confidenceScore: z.number().min(0).max(1).optional(),\n /** Basis for the confidence score */\n confidenceBasis: z.enum(['direct-statement', 'repeated-mention', 'single-mention', 'hedged', 'inference', 'external-source', 'contradicted']).optional(),\n /** Effective state of the memory in the narrative */\n effectiveState: z.enum(['current', 'superseded', 'contradicted', 'duplicate']).optional(),\n /** Authority level: directive (mandates) > decision (choices with reasoning) > observation (learned during work) > auto-captured (generated content) */\n authority: z.enum(['directive', 'decision', 'observation', 'auto-captured']).optional(),\n /** Legacy aggregate extraction status. DERIVED on read from the six per-stage statuses (contentEmbeddingStatus, summaryStatus, questionsStatus, summaryEmbeddingStatus, questionsEmbeddingStatus, graphStatus). Preserved for SDK compatibility per PRD memory-creation-pipeline-v2 §5 Q7. */\n extractionStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** When extraction was completed */\n extractionCompletedAt: z.string().datetime().optional(),\n /** Pipeline 2 content-embedding stage status. Tracks the queue lifecycle for writing m.embedding (primary content embedding). */\n contentEmbeddingStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** AI-generated summary of the memory content */\n summary: z.string().optional(),\n /** Pipeline 1 summary stage status. Tracks generation of m.summary by the summary-qna LLM call. */\n summaryStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Pipeline 1 questions stage status. Tracks generation of anticipated Question nodes by the summary-qna LLM call. */\n questionsStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Pipeline 2 summary-embedding stage status. Tracks the queue lifecycle for writing m.summaryEmbedding (depends on summaryStatus=completed). */\n summaryEmbeddingStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Pipeline 2 question-embedding stage status. Tracks the queue lifecycle for writing Question.embedding for each anticipated question (depends on questionsStatus=completed). */\n questionsEmbeddingStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Pipeline 3 graph-extraction stage status. Tracks generation of entities, facts, topics, authority, and memory-type. Replaces the role formerly played by the monolithic extractionStatus writer. */\n graphStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** When graphStatus=skipped, records why graph extraction was skipped. Mirrors the legacy extractionSkipReason field but scoped to the graph pipeline. */\n graphSkipReason: z.enum(['global_disabled', 'plan_excluded', 'user_opt_out', 'content_too_short', 'legacy', 'budget_exhausted']).nullable().optional(),\n /** When extractionStatus=skipped, records why extraction was skipped. global_disabled = GRAPH_EXTRACTION_ENABLED=false kill switch. */\n extractionSkipReason: z.enum(['global_disabled', 'plan_excluded', 'user_opt_out', 'content_too_short', 'legacy']).optional(),\n /** Status of primary (Ollama) embedding generation via durable queue */\n embeddingStatus: z.enum(['queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Status of secondary (OpenAI) dual-write embedding generation via durable queue */\n embeddingOpenaiStatus: z.enum(['queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** True if the primary content embedding used a head-truncated input (model context exceeded). */\n embeddingTruncated: z.boolean().optional(),\n /** Token count of the original content (pre-truncation, cl100k proxy). Useful for identifying under-indexed memories. */\n embeddingOriginalTokens: z.number().min(0).optional(),\n /** Smart-field strategy used to produce the primary content embedding. */\n embeddingStrategy: z.enum(['full', 'head-truncated', 'summary-selected', 'question-selected']).optional(),\n /** Number of topics extracted from content */\n extractedTopicCount: z.number().min(0).optional(),\n /** Number of facts extracted from content */\n extractedFactCount: z.number().min(0).optional(),\n /** Number of entities extracted from content */\n extractedEntityCount: z.number().min(0).optional(),\n /** Number of memories this memory contradicts via outgoing CONTRADICTS relationships */\n conflictCount: z.number().min(0).optional(),\n /** Memory visibility level. Null/undefined treated as 'private' for backward compatibility. 'admin_visible' is computed at retrieval time when an org owner/admin queries another member's post-join memory and is never accepted on writes. */\n visibility: z.enum(['private', 'shared_with_users', 'shared_with_org', 'admin_visible']).optional(),\n /** User IDs this memory is shared with (only populated when visibility = 'shared_with_users') */\n sharedWith: z.array(z.string()).optional(),\n /** Topics explicitly provided by the user */\n userTopics: z.array(z.string()).optional(),\n /** Topics automatically extracted from content */\n extractedTopics: z.array(z.string()).optional(),\n /** Entities extracted from memory content */\n entities: z.array(z.object({\n /** Entity name */\n name: z.string(),\n /** Entity type */\n type: z.string(),\n /** Extraction confidence */\n confidence: z.number().min(0).max(1).optional(),\n})).optional(),\n /** Task identifier for agentic loop memories */\n taskId: z.string().nullable().optional(),\n /** Task outcome status */\n outcome: z.enum(['resolved', 'unresolved']).nullable().optional(),\n /** Attempt number within the task */\n attemptNumber: z.number().nullable().optional(),\n /** Distillation pipeline stage status */\n distillStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).nullable().optional(),\n /** Reason distillation was skipped */\n distillSkipReason: z.enum(['global_disabled', 'plan_excluded', 'user_opt_out', 'content_too_short', 'legacy', 'budget_exhausted']).nullable().optional(),\n /** Error message if distillation failed */\n distillError: z.string().nullable().optional(),\n /** ISO 8601 timestamp when distillation completed */\n distillCompletedAt: z.string().nullable().optional(),\n}),\n /** Position of this memory in the narrative (0-indexed) */\n position: z.number().min(0),\n /** Effective state of this memory in the narrative context */\n effectiveState: z.enum(['current', 'superseded', 'contradicted']).optional(),\n}));\n\nexport const narrativeTimelineResponse = z.lazy(() => z.object({\n data: z.array(narrativeMemory),\n narrative: narrativeThread,\n pagination: z.object({\n limit: z.number(),\n offset: z.number(),\n total: z.number(),\n}),\n}));\n\nexport const getNarrativeResponse = z.lazy(() => z.object({\n data: narrativeThread,\n}));\n\nexport const listNarrativesResponse = z.lazy(() => z.object({\n data: z.array(narrativeThread),\n pagination: z.object({\n limit: z.number(),\n offset: z.number(),\n count: z.number(),\n}),\n}));\n\nexport const user = z.object({\n id: z.string().uuid(),\n email: z.string().email(),\n firstName: z.string().nullable(),\n lastName: z.string().nullable(),\n profilePictureUrl: z.string().url().nullable(),\n status: z.enum(['active', 'suspended', 'disabled']),\n plan: z.enum(['free', 'pro', 'enterprise']),\n memoryLimit: z.number(),\n retentionDays: z.number().nullable(),\n isTestUser: z.boolean(),\n isPreviewUser: z.boolean(),\n isInternalUser: z.boolean(),\n deletionStatus: z.enum(['none', 'pending_deletion', 'deleting', 'deleted', 'deletion_failed']),\n deletionScheduledFor: z.string().datetime().nullable(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\n\nexport const userUsage = z.object({\n memoriesUsed: z.number(),\n memoryLimit: z.number(),\n memoriesRemaining: z.number(),\n percentUsed: z.number(),\n plan: z.enum(['free', 'pro', 'enterprise']),\n periodStart: z.string().datetime(),\n periodEnd: z.string().datetime(),\n});\n\nexport const subscription = z.object({\n /** Stripe subscription ID */\n id: z.string(),\n /** Current subscription status */\n status: z.enum(['active', 'canceled', 'incomplete', 'incomplete_expired', 'past_due', 'paused', 'trialing', 'unpaid']),\n /** Plan type */\n plan: z.enum(['free', 'pro', 'enterprise']),\n /** Current period start date */\n currentPeriodStart: z.string().datetime(),\n /** Current period end date */\n currentPeriodEnd: z.string().datetime(),\n /** Whether subscription cancels at period end */\n cancelAtPeriodEnd: z.boolean(),\n /** When subscription was canceled */\n canceledAt: z.string().datetime().nullable(),\n});\n\nexport const invoice = z.object({\n /** Stripe invoice ID */\n id: z.string(),\n /** Invoice number */\n number: z.string().nullable(),\n /** Invoice status */\n status: z.enum(['draft', 'open', 'paid', 'uncollectible', 'void']),\n /** Amount due in cents */\n amountDue: z.number(),\n /** Amount paid in cents */\n amountPaid: z.number(),\n /** Three-letter ISO currency code */\n currency: z.string(),\n /** Start of billing period */\n periodStart: z.string().datetime(),\n /** End of billing period */\n periodEnd: z.string().datetime(),\n /** When invoice was created */\n created: z.string().datetime(),\n /** URL to view invoice */\n hostedInvoiceUrl: z.string().url().nullable(),\n /** URL to download invoice PDF */\n invoicePdf: z.string().url().nullable(),\n});\n\nexport const paymentMethod = z.object({\n /** Stripe payment method ID */\n id: z.string(),\n /** Payment method type (card, etc.) */\n type: z.string(),\n /** Card details if type is card */\n card: z.object({\n /** Card brand (visa, mastercard, etc.) */\n brand: z.string(),\n /** Last 4 digits of card */\n last4: z.string(),\n /** Expiration month */\n expMonth: z.number(),\n /** Expiration year */\n expYear: z.number(),\n}).nullable(),\n /** Whether this is the default payment method */\n isDefault: z.boolean(),\n});\n\nexport const billingOverview = z.object({\n subscription: z.object({\n /** Stripe subscription ID */\n id: z.string(),\n /** Current subscription status */\n status: z.enum(['active', 'canceled', 'incomplete', 'incomplete_expired', 'past_due', 'paused', 'trialing', 'unpaid']),\n /** Plan type */\n plan: z.enum(['free', 'pro', 'enterprise']),\n /** Current period start date */\n currentPeriodStart: z.string().datetime(),\n /** Current period end date */\n currentPeriodEnd: z.string().datetime(),\n /** Whether subscription cancels at period end */\n cancelAtPeriodEnd: z.boolean(),\n /** When subscription was canceled */\n canceledAt: z.string().datetime().nullable(),\n}),\n defaultPaymentMethod: z.object({\n /** Stripe payment method ID */\n id: z.string(),\n /** Payment method type (card, etc.) */\n type: z.string(),\n /** Card details if type is card */\n card: z.object({\n /** Card brand (visa, mastercard, etc.) */\n brand: z.string(),\n /** Last 4 digits of card */\n last4: z.string(),\n /** Expiration month */\n expMonth: z.number(),\n /** Expiration year */\n expYear: z.number(),\n}).nullable(),\n /** Whether this is the default payment method */\n isDefault: z.boolean(),\n}),\n /** Upcoming invoice preview */\n upcomingInvoice: z.object({\n /** Amount due in cents */\n amountDue: z.number(),\n /** Currency code */\n currency: z.string(),\n /** Next billing date */\n periodEnd: z.string().datetime(),\n}).nullable(),\n});\n\nexport const createCheckoutSessionRequest = z.object({\n /** Stripe price ID (defaults to Pro price) */\n priceId: z.string().optional(),\n /** URL to redirect after successful checkout */\n successUrl: z.string().url(),\n /** URL to redirect if checkout is canceled */\n cancelUrl: z.string().url(),\n});\n\nexport const checkoutSessionResponse = z.object({\n /** Stripe checkout session ID */\n sessionId: z.string(),\n /** URL to redirect user to Stripe checkout */\n url: z.string().url(),\n});\n\nexport const createPortalSessionRequest = z.object({\n /** URL to redirect after leaving the portal */\n returnUrl: z.string().url(),\n});\n\nexport const portalSessionResponse = z.object({\n /** URL to redirect user to Stripe billing portal */\n url: z.string().url(),\n});\n\nexport const listInvoicesResponse = z.lazy(() => z.object({\n /** List of invoices */\n data: z.array(invoice),\n /** Whether there are more invoices */\n hasMore: z.boolean(),\n}));\n\nexport const listPaymentMethodsResponse = z.lazy(() => z.object({\n /** List of payment methods */\n data: z.array(paymentMethod),\n}));\n\nexport const digestRequest = z.object({\n /** The topic or subject to generate a digest for */\n query: z.string().min(1).max(2000),\n /** Time window filter (e.g., \"7d\", \"24h\", \"2w\", \"30m\"). Only considers memories within this window. */\n recent: z.string().optional(),\n /** Filter to memories with these topics */\n topics: z.array(z.string()).optional(),\n /** Limit to specific conversation IDs */\n conversationIds: z.array(z.string()).optional(),\n /** Output format: \"structured\" (sections with headers), \"narrative\" (chronological prose), \"timeline\" (dated event list), \"status-report\" (done/in-progress/blocked) */\n format: z.enum(['structured', 'narrative', 'timeline', 'status-report']).optional(),\n /** Maximum number of memories to consider (1-500, default 100) */\n maxSources: z.number().min(1).max(500).optional(),\n /** Whether to include source memory IDs in the response */\n includeMemoryIds: z.boolean().optional(),\n /** Number of most-recent matching memories to return VERBATIM (full stored content, untouched) in `recentMemories`, instead of synthesizing them into `digest`. The remaining (older) memories are still synthesized into `digest` as usual. Recency is determined by event time when present, else system timestamp, else creation time. Default 0 = current behavior (synthesize all memories, `recentMemories` empty). When the total matched count is <= verbatimRecent, all matches are returned in `recentMemories` and `digest` is an empty string (no older memories to synthesize). Range 0-50. */\n verbatimRecent: z.number().min(0).max(50).optional(),\n});\n\n/**\n * Time range of the source memories (null if no sources found)\n */\nexport const digestTimeRange = z.object({\n /** Earliest memory timestamp in the digest sources */\n earliest: z.string().datetime(),\n /** Latest memory timestamp in the digest sources */\n latest: z.string().datetime(),\n}).nullable();\n\n/**\n * Generation metadata including source statistics\n */\nexport const digestMetadata = z.lazy(() => z.object({\n /** The query used to generate the digest */\n query: z.string(),\n /** Total number of memories gathered (search + expansion) before synthesis */\n sourcesConsidered: z.number().min(0),\n /** Number of memories fed into the synthesis step */\n sourcesUsed: z.number().min(0),\n /** Number of distinct conversations the sources come from */\n conversationsSpanned: z.number().min(0),\n /** Time range of the source memories (null if no sources found) */\n timeRange: digestTimeRange,\n /** Output format used for this digest */\n format: z.enum(['structured', 'narrative', 'timeline', 'status-report']),\n /** Average relevance score (0-1) of the source memories used in synthesis. Low values (<0.02) indicate the query may not have strong matches. */\n averageRelevance: z.number().min(0).max(1).optional(),\n /** True when averageRelevance falls in the narrow-window band (>= DIGEST_RELEVANCE_THRESHOLD but < NARROW_WINDOW_FALLBACK_CEILING) — the digest synthesised from weak matches that may not represent strong context. Consumers should surface a warning to the calling agent. */\n narrowWindowFallback: z.boolean().optional(),\n /** True when the digest is in the narrow-window band AND the source memories span 2+ distinct codeContext.product values (or none share a product). Indicates the synthesis is drawn from heterogeneous, possibly cross-project sources — likely the wrong project for the calling agent. See support#183. */\n crossProjectFallback: z.boolean().optional(),\n /** ISO 8601 timestamp when the digest was generated */\n generatedAt: z.string().datetime(),\n /** Recursion stats (only present when recursive synthesis is used) */\n recursion: z.object({\n /** Whether recursive synthesis was used */\n enabled: z.boolean(),\n /** Number of leaf groups synthesized */\n leafGroups: z.number().min(0),\n /** Total LLM calls made during recursive synthesis */\n llmCallsUsed: z.number().min(0),\n /** Maximum recursion depth reached */\n maxDepthReached: z.number().min(0),\n}).optional(),\n}));\n\nexport const digestSource = z.object({\n /** Source memory ID */\n memoryId: z.string(),\n /** Relevance score (0-1) for this source memory */\n relevance: z.number().min(0).max(1),\n /** Conversation ID this memory belongs to */\n conversation: z.string().optional(),\n});\n\nexport const digestKeyFact = z.object({\n /** Fact subject */\n subject: z.string(),\n /** Relationship type */\n predicate: z.string(),\n /** Fact value */\n object: z.string(),\n /** Confidence score */\n confidence: z.number().min(0).max(1),\n});\n\nexport const digestEntity = z.object({\n /** Entity name */\n name: z.string(),\n /** Entity type */\n type: z.string(),\n});\n\n/**\n * Breakdown of source memories by effective state (current/superseded/contradicted)\n */\nexport const effectiveStateBreakdown = z.object({\n /** Active memories used in synthesis */\n current: z.number().min(0),\n /** Superseded memories (deprioritized in synthesis) */\n superseded: z.number().min(0),\n /** Contradicted memories (deprioritized in synthesis) */\n contradicted: z.number().min(0),\n});\n\nexport const digestResponse = z.lazy(() => z.object({\n /** The generated digest content (markdown formatted) */\n digest: z.string(),\n /** Generation metadata including source statistics */\n metadata: digestMetadata,\n /** Source memories used to generate the digest, for traceability */\n sources: z.array(digestSource),\n /** The N most-recent matching memories returned VERBATIM (full stored content, untouched), where N = the request's verbatimRecent. Ordered newest-first. Empty/omitted when verbatimRecent is 0 (the default). These memories are NOT synthesized into `digest` — the synthesis covers only the older remainder. Lets callers preserve the exact structure of recent items (per-item status, identifiers, next-step) while still condensing the older tail. */\n recentMemories: z.array(memory).optional(),\n /** Top extracted facts relevant to the digest, deduplicated and ranked by frequency */\n keyFacts: z.array(digestKeyFact).optional(),\n /** Key entities mentioned across source memories */\n entities: z.array(digestEntity).optional(),\n /** Breakdown of source memories by effective state (current/superseded/contradicted) */\n effectiveStateBreakdown: effectiveStateBreakdown.optional(),\n}));\n\nexport const exportRequest = z.object({\n /** Optional search query to filter memories for export */\n query: z.string().max(2000).optional(),\n /** Filter by topics */\n topics: z.array(z.string().max(100)).max(50).optional(),\n /** Filter by memory type */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']).optional(),\n /** Export format: json or csv (default: json) */\n format: z.enum(['json', 'csv']).optional(),\n /** Optional field selection. If omitted, all standard fields are included. */\n fields: z.array(z.string().max(50)).max(20).optional(),\n /** Maximum results to export (default 100, max 1000) */\n limit: z.number().min(1).max(1000).optional(),\n});\n\nexport const bulkUpdateRequest = z.object({\n /** Memory IDs to update (max 100) */\n ids: z.array(z.string().min(1)).min(1).max(100),\n /** Fields to update on all specified memories */\n updates: z.object({\n /** Replace topics on all specified memories */\n topics: z.array(z.string().max(100)).max(50).optional(),\n /** Set memory type on all specified memories */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']).optional(),\n}),\n});\n\nexport const bulkUpdateResponse = z.object({\n /** Number of memories successfully updated */\n updated: z.number(),\n /** Number of memories that failed to update */\n failed: z.number(),\n /** Per-item error details */\n errors: z.array(z.object({\n /** Memory ID that failed */\n id: z.string(),\n /** Error message */\n error: z.string(),\n})),\n});\n\nexport const bulkDeleteRequest = z.object({\n /** Memory IDs to delete (max 100) */\n ids: z.array(z.string().min(1)).min(1).max(100),\n /** Must be true to confirm bulk deletion */\n confirmDeletion: z.literal(true),\n});\n\nexport const bulkDeleteResponse = z.object({\n /** Number of memories successfully deleted */\n deleted: z.number(),\n /** Number of memories that failed to delete */\n failed: z.number(),\n /** Per-item error details */\n errors: z.array(z.object({\n /** Memory ID that failed */\n id: z.string(),\n /** Error message */\n error: z.string(),\n})),\n});\n\nexport const bulkTagRequest = z.object({\n /** Memory IDs to modify tags on (max 100) */\n ids: z.array(z.string().min(1)).min(1).max(100),\n /** Topics to add to all specified memories */\n addTopics: z.array(z.string().max(100)).max(50).optional(),\n /** Topics to remove from all specified memories */\n removeTopics: z.array(z.string().max(100)).max(50).optional(),\n});\n\nexport const bulkTagResponse = z.object({\n /** Number of memories successfully modified */\n modified: z.number(),\n /** Number of memories that failed to modify */\n failed: z.number(),\n /** Per-item error details */\n errors: z.array(z.object({\n /** Memory ID that failed */\n id: z.string(),\n /** Error message */\n error: z.string(),\n})),\n});\n\nexport const buildContextRequest = z.object({\n /** What you are about to work on */\n context: z.string().min(1).max(2000),\n /** File paths you will be touching */\n files: z.array(z.string()).optional(),\n /** How far back to look for recent activity (hours, default 24) */\n recentHours: z.number().min(1).max(720).optional(),\n});\n\n/**\n * Most relevant active conversation, or null if none found\n */\nexport const buildContextActiveWork = z.object({\n /** Conversation ID */\n conversationId: z.string(),\n /** Conversation title */\n title: z.string().nullable(),\n /** ISO 8601 timestamp of last activity */\n lastActivity: z.string(),\n /** Most recent memory in this conversation */\n lastMemory: z.object({\n /** Memory ID */\n id: z.string(),\n /** Truncated content summary */\n summary: z.string(),\n}),\n}).nullable();\n\nexport const buildContextFact = z.object({\n /** Fact subject */\n subject: z.string(),\n /** Fact predicate */\n predicate: z.string(),\n /** Fact object */\n object: z.string(),\n /** Confidence score (0-1) */\n confidence: z.number(),\n /** Memory this fact was extracted from */\n sourceMemoryId: z.string(),\n});\n\nexport const buildContextGotcha = z.object({\n /** The gotcha fact text */\n fact: z.string(),\n /** Number of distinct source memories mentioning this */\n sourceCount: z.number(),\n /** Source memory IDs */\n sourceMemories: z.array(z.string()),\n /** ISO 8601 timestamp of most recent source */\n lastSeen: z.string(),\n});\n\nexport const buildContextActivity = z.object({\n /** Memory ID */\n id: z.string(),\n /** Truncated content summary (max 200 chars) */\n summary: z.string(),\n /** ISO 8601 timestamp */\n date: z.string(),\n /** Conversation ID */\n conversationId: z.string().nullable(),\n});\n\nexport const buildContextPattern = z.object({\n /** Pattern description */\n pattern: z.string(),\n /** Confidence score (0-1) */\n confidence: z.number(),\n});\n\n/**\n * Request metadata for transparency\n */\nexport const buildContextMeta = z.object({\n /** Search terms extracted from the context and files */\n contextTerms: z.array(z.string()),\n /** Hours window used for recent activity */\n recentHours: z.number(),\n /** Sections whose backing query exceeded the per-branch timeout and were returned empty. Present only when at least one branch timed out, so an empty section can otherwise be read as 'no data'. */\n timedOutSections: z.array(z.string()).optional(),\n});\n\nexport const buildContextResponse = z.lazy(() => z.object({\n /** Most relevant active conversation, or null if none found */\n activeWork: buildContextActiveWork,\n /** Facts related to the context terms */\n relevantFacts: z.array(buildContextFact),\n /** Gotchas — facts appearing in 2+ source memories */\n gotchas: z.array(buildContextGotcha),\n /** Recent relevant memories within the time window */\n recentActivity: z.array(buildContextActivity),\n /** Behavioral patterns related to the context */\n relatedPatterns: z.array(buildContextPattern),\n /** Request metadata for transparency */\n meta: buildContextMeta,\n}));\n\nexport const systemAlert = z.object({\n id: z.string().uuid(),\n title: z.string().min(1).max(120),\n body: z.string().min(1).max(2000),\n severity: z.enum(['info', 'warning', 'critical']),\n active: z.boolean().optional(),\n dismissible: z.boolean().optional(),\n targetAllUsers: z.boolean().optional(),\n targetUserIds: z.array(z.string()).optional(),\n createdAt: z.string().datetime(),\n expiresAt: z.string().datetime().nullable(),\n createdBy: z.string(),\n});\n\nexport const createSystemAlertRequest = z.object({\n title: z.string().min(1).max(120),\n body: z.string().min(1).max(2000),\n severity: z.enum(['info', 'warning', 'critical']).optional(),\n active: z.boolean().optional(),\n dismissible: z.boolean().optional(),\n targetAllUsers: z.boolean().optional(),\n targetUserIds: z.array(z.string().uuid()).max(1000).optional(),\n expiresAt: z.string().datetime().nullable().optional(),\n});\n\nexport const updateSystemAlertRequest = z.object({\n title: z.string().min(1).max(120).optional(),\n body: z.string().min(1).max(2000).optional(),\n severity: z.enum(['info', 'warning', 'critical']).optional(),\n active: z.boolean().optional(),\n dismissible: z.boolean().optional(),\n targetAllUsers: z.boolean().optional(),\n targetUserIds: z.array(z.string().uuid()).max(1000).optional(),\n expiresAt: z.string().datetime().nullable().optional(),\n});\n","/**\n * MemNexus SDK Client\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type { SdkConfig, Environment } from './http/http-types.js';\n\nimport { UsersService } from './services/users-service.js';\nimport { TopicsService } from './services/topics-service.js';\nimport { SystemService } from './services/system-service.js';\nimport { PatternsService } from './services/patterns-service.js';\nimport { BehaviorService } from './services/behavior-service.js';\nimport { RecommendationsService } from './services/recommendations-service.js';\nimport { NarrativesService } from './services/narratives-service.js';\nimport { MonitoringService } from './services/monitoring-service.js';\nimport { MemoriesService } from './services/memories-service.js';\nimport { InvitesService } from './services/invites-service.js';\nimport { HealthService } from './services/health-service.js';\nimport { GraphragService } from './services/graphrag-service.js';\nimport { FactsService } from './services/facts-service.js';\nimport { EntitiesService } from './services/entities-service.js';\nimport { ConversationsService } from './services/conversations-service.js';\nimport { BillingService } from './services/billing-service.js';\nimport { ArtifactsService } from './services/artifacts-service.js';\nimport { ApiKeysService } from './services/api-keys-service.js';\nimport { AlertsService } from './services/alerts-service.js';\nimport { AdminService } from './services/admin-service.js';\nimport { AdminAlertsService } from './services/admin-alerts-service.js';\nimport { AdminPipelineService } from './services/admin-pipeline-service.js';\n\n// Re-export types\nexport * from './http/http-types.js';\nexport * from './models/types.js';\nexport * from './models/schemas.js';\n\n// Re-export services\nexport { UsersService } from './services/users-service.js';\nexport { TopicsService } from './services/topics-service.js';\nexport { SystemService } from './services/system-service.js';\nexport { PatternsService } from './services/patterns-service.js';\nexport { BehaviorService } from './services/behavior-service.js';\nexport { RecommendationsService } from './services/recommendations-service.js';\nexport { NarrativesService } from './services/narratives-service.js';\nexport { MonitoringService } from './services/monitoring-service.js';\nexport { MemoriesService } from './services/memories-service.js';\nexport { InvitesService } from './services/invites-service.js';\nexport { HealthService } from './services/health-service.js';\nexport { GraphragService } from './services/graphrag-service.js';\nexport { FactsService } from './services/facts-service.js';\nexport { EntitiesService } from './services/entities-service.js';\nexport { ConversationsService } from './services/conversations-service.js';\nexport { BillingService } from './services/billing-service.js';\nexport { ArtifactsService } from './services/artifacts-service.js';\nexport { ApiKeysService } from './services/api-keys-service.js';\nexport { AlertsService } from './services/alerts-service.js';\nexport { AdminService } from './services/admin-service.js';\nexport { AdminAlertsService } from './services/admin-alerts-service.js';\nexport { AdminPipelineService } from './services/admin-pipeline-service.js';\n\n/**\n * MemNexus SDK client.\n * Provides access to all API services.\n */\nexport class Memnexus {\n private readonly config: SdkConfig;\n\n /** User management and profile endpoints operations */\n public readonly users: UsersService;\n /** Topic detection, clustering, and management endpoints operations */\n public readonly topics: TopicsService;\n /** System health, monitoring, and configuration endpoints operations */\n public readonly system: SystemService;\n /** Pattern detection and behavioral analysis endpoints operations */\n public readonly patterns: PatternsService;\n /** Behavioral pattern tracking and state management endpoints operations */\n public readonly behavior: BehaviorService;\n /** Behavioral recommendation management endpoints (v2) operations */\n public readonly recommendations: RecommendationsService;\n /** Narrative thread management endpoints operations */\n public readonly narratives: NarrativesService;\n /** Observability and metrics endpoints for production monitoring operations */\n public readonly monitoring: MonitoringService;\n /** Memory management and retrieval endpoints operations */\n public readonly memories: MemoriesService;\n /** Invite code validation and gate status endpoints operations */\n public readonly invites: InvitesService;\n /** Health check endpoints operations */\n public readonly health: HealthService;\n /** Graph-based retrieval augmented generation endpoints operations */\n public readonly graphrag: GraphragService;\n /** Fact extraction and management endpoints operations */\n public readonly facts: FactsService;\n /** Entity extraction and discovery endpoints operations */\n public readonly entities: EntitiesService;\n /** Conversation tracking and analysis endpoints operations */\n public readonly conversations: ConversationsService;\n /** Subscription billing and payment management endpoints operations */\n public readonly billing: BillingService;\n /** Artifact storage and retrieval endpoints operations */\n public readonly artifacts: ArtifactsService;\n /** API key management endpoints operations */\n public readonly apiKeys: ApiKeysService;\n /** System alerts banner endpoints (customer portal) operations */\n public readonly alerts: AlertsService;\n /** Admin management endpoints for invite codes and platform configuration operations */\n public readonly admin: AdminService;\n /** Admin endpoints for managing system alerts operations */\n public readonly adminAlerts: AdminAlertsService;\n /** Admin Pipeline operations */\n public readonly adminPipeline: AdminPipelineService;\n\n /**\n * Create a new SDK client.\n * @param config - SDK configuration\n */\n constructor(config: SdkConfig = {}) {\n this.config = {\n baseUrl: config.baseUrl || 'http://localhost:3000',\n ...config,\n };\n\n this.users = new UsersService(this.config);\n this.topics = new TopicsService(this.config);\n this.system = new SystemService(this.config);\n this.patterns = new PatternsService(this.config);\n this.behavior = new BehaviorService(this.config);\n this.recommendations = new RecommendationsService(this.config);\n this.narratives = new NarrativesService(this.config);\n this.monitoring = new MonitoringService(this.config);\n this.memories = new MemoriesService(this.config);\n this.invites = new InvitesService(this.config);\n this.health = new HealthService(this.config);\n this.graphrag = new GraphragService(this.config);\n this.facts = new FactsService(this.config);\n this.entities = new EntitiesService(this.config);\n this.conversations = new ConversationsService(this.config);\n this.billing = new BillingService(this.config);\n this.artifacts = new ArtifactsService(this.config);\n this.apiKeys = new ApiKeysService(this.config);\n this.alerts = new AlertsService(this.config);\n this.admin = new AdminService(this.config);\n this.adminAlerts = new AdminAlertsService(this.config);\n this.adminPipeline = new AdminPipelineService(this.config);\n }\n\n /**\n * Set the API token for authentication.\n * @param token - Bearer token\n */\n setToken(token: string): void {\n this.config.token = token;\n this.users.token = token;\n this.topics.token = token;\n this.system.token = token;\n this.patterns.token = token;\n this.behavior.token = token;\n this.recommendations.token = token;\n this.narratives.token = token;\n this.monitoring.token = token;\n this.memories.token = token;\n this.invites.token = token;\n this.health.token = token;\n this.graphrag.token = token;\n this.facts.token = token;\n this.entities.token = token;\n this.conversations.token = token;\n this.billing.token = token;\n this.artifacts.token = token;\n this.apiKeys.token = token;\n this.alerts.token = token;\n this.admin.token = token;\n this.adminAlerts.token = token;\n this.adminPipeline.token = token;\n }\n\n /**\n * Set the base URL for API requests.\n * @param baseUrl - API base URL\n */\n setBaseUrl(baseUrl: string): void {\n this.config.baseUrl = baseUrl;\n this.users.baseUrl = baseUrl;\n this.topics.baseUrl = baseUrl;\n this.system.baseUrl = baseUrl;\n this.patterns.baseUrl = baseUrl;\n this.behavior.baseUrl = baseUrl;\n this.recommendations.baseUrl = baseUrl;\n this.narratives.baseUrl = baseUrl;\n this.monitoring.baseUrl = baseUrl;\n this.memories.baseUrl = baseUrl;\n this.invites.baseUrl = baseUrl;\n this.health.baseUrl = baseUrl;\n this.graphrag.baseUrl = baseUrl;\n this.facts.baseUrl = baseUrl;\n this.entities.baseUrl = baseUrl;\n this.conversations.baseUrl = baseUrl;\n this.billing.baseUrl = baseUrl;\n this.artifacts.baseUrl = baseUrl;\n this.apiKeys.baseUrl = baseUrl;\n this.alerts.baseUrl = baseUrl;\n this.admin.baseUrl = baseUrl;\n this.adminAlerts.baseUrl = baseUrl;\n this.adminPipeline.baseUrl = baseUrl;\n }\n\n /**\n * Set the environment.\n * @param environment - API environment\n */\n setEnvironment(environment: Environment): void {\n this.config.environment = environment;\n this.users.environment = environment;\n this.topics.environment = environment;\n this.system.environment = environment;\n this.patterns.environment = environment;\n this.behavior.environment = environment;\n this.recommendations.environment = environment;\n this.narratives.environment = environment;\n this.monitoring.environment = environment;\n this.memories.environment = environment;\n this.invites.environment = environment;\n this.health.environment = environment;\n this.graphrag.environment = environment;\n this.facts.environment = environment;\n this.entities.environment = environment;\n this.conversations.environment = environment;\n this.billing.environment = environment;\n this.artifacts.environment = environment;\n this.apiKeys.environment = environment;\n this.alerts.environment = environment;\n this.admin.environment = environment;\n this.adminAlerts.environment = environment;\n this.adminPipeline.environment = environment;\n }\n}\n\nexport default Memnexus;"],"mappings":"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","names":["SerializationStyle","ContentType","Environment","error"]}
|
|
1
|
+
{"version":3,"sources":["../src/http/http-types.ts","../src/http/handlers.ts","../src/http/http-client.ts","../src/http/base-service.ts","../src/http/serialization.ts","../src/http/request-builder.ts","../src/services/users-service.ts","../src/services/topics-service.ts","../src/services/system-service.ts","../src/services/patterns-service.ts","../src/services/behavior-service.ts","../src/services/recommendations-service.ts","../src/services/narratives-service.ts","../src/services/monitoring-service.ts","../src/services/memories-service.ts","../src/services/invites-service.ts","../src/services/health-service.ts","../src/services/graphrag-service.ts","../src/services/facts-service.ts","../src/services/entities-service.ts","../src/services/conversations-service.ts","../src/services/billing-service.ts","../src/services/artifacts-service.ts","../src/services/api-keys-service.ts","../src/services/alerts-service.ts","../src/services/admin-service.ts","../src/services/admin-alerts-service.ts","../src/services/admin-pipeline-service.ts","../src/models/schemas.ts","../src/index.ts"],"sourcesContent":["/**\n * HTTP types for the SDK.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type { ZodType } from 'zod';\n\n/** HTTP methods supported by the SDK */\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';\n\n/** OpenAPI parameter serialization styles */\nexport enum SerializationStyle {\n SIMPLE = 'simple',\n LABEL = 'label',\n MATRIX = 'matrix',\n FORM = 'form',\n SPACE_DELIMITED = 'space_delimited',\n PIPE_DELIMITED = 'pipe_delimited',\n DEEP_OBJECT = 'deep_object',\n NONE = 'none',\n}\n\n/** Content types */\nexport enum ContentType {\n Json = 'json',\n Xml = 'xml',\n Pdf = 'pdf',\n Image = 'image',\n File = 'file',\n Binary = 'binary',\n FormUrlEncoded = 'form',\n Text = 'text',\n MultipartFormData = 'multipartFormData',\n EventStream = 'eventStream',\n NoContent = 'noContent',\n}\n\n/** HTTP request structure */\nexport interface HttpRequest {\n baseUrl: string;\n method: HttpMethod;\n path: string;\n headers: Map<string, unknown>;\n body?: BodyInit;\n abortSignal?: AbortSignal;\n queryParams: Map<string, unknown>;\n pathParams: Map<string, unknown>;\n}\n\n/** HTTP response metadata */\nexport interface HttpMetadata {\n status: number;\n statusText: string;\n headers: Record<string, string>;\n}\n\n/** HTTP response */\nexport interface HttpResponse<T = unknown> {\n data?: T;\n metadata: HttpMetadata;\n raw: ArrayBuffer;\n}\n\n/** HTTP error response */\nexport interface HttpError {\n error: string;\n metadata: HttpMetadata;\n}\n\n/** SDK configuration */\nexport interface SdkConfig {\n baseUrl?: string;\n environment?: Environment;\n timeoutMs?: number;\n token?: string;\n retry?: RetryOptions;\n validation?: ValidationOptions;\n}\n\n/** Available environments */\nexport enum Environment {\n DEFAULT = 'http://localhost:3000',\n}\n\n/** Retry options */\nexport interface RetryOptions {\n attempts: number;\n delayMs?: number;\n maxDelayMs?: number;\n jitterMs?: number;\n backoffFactor?: number;\n httpCodesToRetry?: number[];\n httpMethodsToRetry?: string[];\n}\n\n/** Validation options */\nexport interface ValidationOptions {\n responseValidation?: boolean;\n}\n\n/** Request parameter with serialization info */\nexport interface RequestParameter {\n key: string | undefined;\n value: unknown;\n explode: boolean;\n encode: boolean;\n style: SerializationStyle;\n isLimit: boolean;\n isOffset: boolean;\n isCursor: boolean;\n}\n\n/** Response definition for validation */\nexport interface ResponseDefinition {\n schema: ZodType;\n contentType: ContentType;\n status: number;\n}\n\n/** Error definition */\nexport interface ErrorDefinition {\n error: new (...args: any[]) => Error;\n contentType: ContentType;\n status: number;\n}\n\n/** Hook interface for request/response interception */\nexport interface Hook {\n beforeRequest(request: HttpRequest, params: Map<string, string>): Promise<HttpRequest>;\n afterResponse(request: HttpRequest, response: HttpResponse<any>, params: Map<string, string>): Promise<HttpResponse<any>>;\n onError(request: HttpRequest, response: HttpResponse<any>, params: Map<string, string>): Promise<HttpError>;\n}\n\n/**\n * Typed error thrown by the SDK for non-2xx HTTP responses.\n * Use `instanceof SdkError` to catch API errors and access the status code directly.\n *\n * @example\n * ```ts\n * try {\n * await sdk.memories.createMemory({ name: 'my-note', content: '...' });\n * } catch (e) {\n * if (e instanceof SdkError && e.status === 409) {\n * // Named memory already exists — upsert via updateNamedMemory\n * }\n * }\n * ```\n */\nexport class SdkError extends Error {\n constructor(\n /** HTTP status code (e.g. 404, 409) */\n public readonly status: number,\n /** HTTP status text (e.g. \"Not Found\") */\n public readonly statusText: string,\n /** Parsed response body, if any */\n public readonly data: unknown,\n message: string\n ) {\n super(message);\n this.name = 'SdkError';\n // Maintain correct prototype chain for instanceof across transpilation targets\n Object.setPrototypeOf(this, SdkError.prototype);\n }\n}\n","/**\n * Request handlers for the handler chain.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { SdkError } from './http-types.js';\nimport type {\n HttpRequest,\n HttpResponse,\n HttpError,\n Hook,\n RetryOptions,\n} from './http-types.js';\nimport type { Request } from './request-builder.js';\n\n/** Handler interface */\nexport interface RequestHandler {\n handle<T>(request: Request): Promise<HttpResponse<T>>;\n setNext(handler: RequestHandler): RequestHandler;\n}\n\n/**\n * Base handler with chain support\n */\nabstract class BaseHandler implements RequestHandler {\n protected nextHandler?: RequestHandler;\n\n setNext(handler: RequestHandler): RequestHandler {\n this.nextHandler = handler;\n return handler;\n }\n\n abstract handle<T>(request: Request): Promise<HttpResponse<T>>;\n\n protected async callNext<T>(request: Request): Promise<HttpResponse<T>> {\n if (!this.nextHandler) {\n throw new Error('No next handler in chain');\n }\n return this.nextHandler.handle<T>(request);\n }\n}\n\n/**\n * Retry handler with exponential backoff\n */\nexport class RetryHandler extends BaseHandler {\n private readonly maxAttempts: number;\n private readonly delayMs: number;\n private readonly maxDelayMs: number;\n private readonly jitterMs: number;\n private readonly backoffFactor: number;\n private readonly httpCodesToRetry: Set<number>;\n private readonly httpMethodsToRetry: Set<string>;\n\n constructor(options?: RetryOptions) {\n super();\n this.maxAttempts = options?.attempts ?? 3;\n this.delayMs = options?.delayMs ?? 150;\n this.maxDelayMs = options?.maxDelayMs ?? 5000;\n this.jitterMs = options?.jitterMs ?? 50;\n this.backoffFactor = options?.backoffFactor ?? 2;\n this.httpCodesToRetry = new Set(options?.httpCodesToRetry ?? [408,429,500,502,503,504]);\n this.httpMethodsToRetry = new Set(options?.httpMethodsToRetry ?? [\"GET\",\"POST\",\"PUT\",\"DELETE\",\"PATCH\",\"HEAD\",\"OPTIONS\"]);\n }\n\n async handle<T>(request: Request): Promise<HttpResponse<T>> {\n let lastError: Error | undefined;\n let attempt = 0;\n\n while (attempt < this.maxAttempts) {\n try {\n const response = await this.callNext<T>(request);\n\n // Check if we should retry based on status code\n if (this.shouldRetry(request.method, response.metadata.status)) {\n lastError = new Error(`HTTP ${response.metadata.status}`);\n attempt++;\n await this.delay(attempt);\n continue;\n }\n\n return response;\n } catch (error) {\n lastError = error as Error;\n attempt++;\n\n if (attempt >= this.maxAttempts) {\n break;\n }\n\n await this.delay(attempt);\n }\n }\n\n throw lastError || new Error('Max retry attempts reached');\n }\n\n private shouldRetry(method: string, status: number): boolean {\n return this.httpMethodsToRetry.has(method) && this.httpCodesToRetry.has(status);\n }\n\n private async delay(attempt: number): Promise<void> {\n const exponentialDelay = this.delayMs * Math.pow(this.backoffFactor, attempt - 1);\n const jitter = Math.random() * this.jitterMs;\n const delay = Math.min(exponentialDelay + jitter, this.maxDelayMs);\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n}\n\n/**\n * Validation handler for request/response validation\n */\nexport class ValidationHandler extends BaseHandler {\n async handle<T>(request: Request): Promise<HttpResponse<T>> {\n // Validate request body if schema provided\n if (request.requestSchema && request.body) {\n const result = request.requestSchema.safeParse(request.body);\n if (!result.success) {\n throw new Error(`Request validation failed: ${result.error.message}`);\n }\n }\n\n const response = await this.callNext<T>(request);\n\n // Validate response if enabled and schema available\n if (request.validation?.responseValidation && response.data) {\n const matchingResponse = request.responses.find(\n (r) => r.status === response.metadata.status\n );\n if (matchingResponse) {\n const result = matchingResponse.schema.safeParse(response.data);\n if (!result.success) {\n throw new Error(`Response validation failed: ${result.error.message}`);\n }\n }\n }\n\n return response;\n }\n}\n\n/**\n * Hook handler for request/response interception\n */\nexport class HookHandler extends BaseHandler {\n private readonly hook: Hook;\n\n constructor(hook: Hook) {\n super();\n this.hook = hook;\n }\n\n async handle<T>(request: Request): Promise<HttpResponse<T>> {\n // Build HttpRequest for hook\n const httpRequest: HttpRequest = {\n baseUrl: request.baseUrl,\n method: request.method,\n path: request.path,\n headers: new Map(Object.entries(request.getHeaders())),\n queryParams: new Map(),\n pathParams: new Map(),\n body: request.body as BodyInit,\n };\n\n // Call beforeRequest hook\n const modifiedRequest = await this.hook.beforeRequest(httpRequest, new Map());\n\n // Execute the request\n const response = await this.callNext<T>(request);\n\n // Call afterResponse hook\n const modifiedResponse = await this.hook.afterResponse(modifiedRequest, response, new Map());\n\n return modifiedResponse as HttpResponse<T>;\n }\n}\n\n/**\n * Execute handler - actually performs the HTTP request\n */\nexport class ExecuteHandler extends BaseHandler {\n async handle<T>(request: Request): Promise<HttpResponse<T>> {\n const url = request.constructFullUrl();\n const headers = request.getHeaders();\n\n // Add content type for JSON bodies\n if (request.body && typeof request.body === 'object') {\n headers['Content-Type'] = 'application/json';\n }\n\n // Add authorization header if token is set\n if (request.config.token) {\n headers['Authorization'] = `Bearer ${request.config.token}`;\n }\n\n const fetchOptions: RequestInit = {\n method: request.method,\n headers,\n };\n\n // Add body for non-GET requests\n if (request.body && request.method !== 'GET') {\n fetchOptions.body = typeof request.body === 'string'\n ? request.body\n : JSON.stringify(request.body);\n }\n\n // Add timeout if configured\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n if (request.config.timeoutMs) {\n const controller = new AbortController();\n timeoutId = setTimeout(() => controller.abort(), request.config.timeoutMs);\n fetchOptions.signal = controller.signal;\n }\n\n try {\n const response = await fetch(url, fetchOptions);\n\n // Get response headers\n const responseHeaders: Record<string, string> = {};\n response.headers.forEach((value, key) => {\n responseHeaders[key] = value;\n });\n\n // Parse response body\n const raw = await response.arrayBuffer();\n let data: T | undefined;\n\n const contentType = response.headers.get('content-type') || '';\n if (contentType.includes('application/json') && raw.byteLength > 0) {\n const text = new TextDecoder().decode(raw);\n try {\n data = JSON.parse(text) as T;\n } catch {\n // Not valid JSON, leave data undefined\n }\n }\n\n const httpResponse: HttpResponse<T> = {\n data,\n metadata: {\n status: response.status,\n statusText: response.statusText,\n headers: responseHeaders,\n },\n raw,\n };\n\n // Throw on error status codes\n if (!response.ok) {\n throw new SdkError(response.status, response.statusText, data, `HTTP ${response.status}: ${response.statusText}`);\n }\n\n return httpResponse;\n } finally {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n }\n }\n}\n\n/**\n * Default hook implementation (pass-through)\n */\nexport class CustomHook implements Hook {\n async beforeRequest(request: HttpRequest, params: Map<string, string>): Promise<HttpRequest> {\n return request;\n }\n\n async afterResponse(\n request: HttpRequest,\n response: HttpResponse<any>,\n params: Map<string, string>\n ): Promise<HttpResponse<any>> {\n return response;\n }\n\n async onError(\n request: HttpRequest,\n response: HttpResponse<any>,\n params: Map<string, string>\n ): Promise<HttpError> {\n return {\n error: response.metadata.statusText,\n metadata: response.metadata,\n };\n }\n}\n","/**\n * HTTP client for making API requests.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type {\n HttpResponse,\n SdkConfig,\n Hook,\n} from './http-types.js';\nimport type { Request } from './request-builder.js';\nimport { RetryHandler } from './handlers.js';\nimport { ValidationHandler } from './handlers.js';\nimport { HookHandler } from './handlers.js';\nimport { ExecuteHandler } from './handlers.js';\nimport { CustomHook } from './handlers.js';\n\n/** Handler interface */\ninterface RequestHandler {\n handle<T>(request: Request): Promise<HttpResponse<T>>;\n setNext(handler: RequestHandler): RequestHandler;\n}\n\n/**\n * Core HTTP client with handler chain.\n */\nexport class HttpClient {\n private config: SdkConfig;\n private readonly requestHandlerChain: RequestHandler;\n\n constructor(config: SdkConfig, hook?: Hook) {\n this.config = config;\n\n // Build handler chain: Retry -> Validation -> Hook -> Execute\n const executeHandler = new ExecuteHandler();\n const hookHandler = new HookHandler(hook || new CustomHook());\n const validationHandler = new ValidationHandler();\n const retryHandler = new RetryHandler(config.retry);\n\n retryHandler.setNext(validationHandler);\n validationHandler.setNext(hookHandler);\n hookHandler.setNext(executeHandler);\n\n this.requestHandlerChain = retryHandler;\n }\n\n /**\n * Execute an HTTP request\n */\n async call<T>(request: Request): Promise<HttpResponse<T>> {\n return this.requestHandlerChain.handle<T>(request);\n }\n\n /**\n * Update base URL\n */\n setBaseUrl(url: string): void {\n this.config.baseUrl = url;\n }\n\n /**\n * Update config\n */\n setConfig(config: SdkConfig): void {\n this.config = config;\n }\n}\n","/**\n * Base service class that all API services extend.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type { SdkConfig, Environment } from './http-types.js';\nimport { HttpClient } from './http-client.js';\n\n/**\n * Base class for all API service classes.\n */\nexport class BaseService {\n protected config: SdkConfig;\n protected client: HttpClient;\n\n constructor(config: SdkConfig) {\n this.config = config;\n this.client = new HttpClient(config);\n }\n\n /**\n * Set the base URL for API requests\n */\n set baseUrl(baseUrl: string) {\n this.config.baseUrl = baseUrl;\n this.client.setBaseUrl(baseUrl);\n }\n\n /**\n * Set the environment\n */\n set environment(environment: Environment) {\n this.config.environment = environment;\n this.client.setBaseUrl(environment);\n }\n\n /**\n * Set the request timeout in milliseconds\n */\n set timeoutMs(timeoutMs: number) {\n this.config.timeoutMs = timeoutMs;\n }\n\n /**\n * Set the bearer token for authentication\n */\n set token(token: string) {\n this.config.token = token;\n }\n}\n","/**\n * Parameter serialization utilities.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type { RequestParameter, SerializationStyle } from './http-types.js';\n\n/**\n * Serialize a parameter value based on its style\n */\nexport function serializeParameter(param: RequestParameter): unknown {\n const { value, style, explode } = param;\n\n if (value === undefined || value === null) {\n return undefined;\n }\n\n // Primitive values don't need special serialization\n if (typeof value !== 'object') {\n return value;\n }\n\n // Array serialization\n if (Array.isArray(value)) {\n return serializeArray(value, style as SerializationStyle, explode);\n }\n\n // Object serialization\n return serializeObject(value as Record<string, unknown>, style as SerializationStyle, explode);\n}\n\n/**\n * Serialize an array value\n */\nfunction serializeArray(\n value: unknown[],\n style: SerializationStyle,\n explode: boolean\n): string | string[] {\n if (explode) {\n return value.map(String);\n }\n\n switch (style) {\n case 'simple':\n return value.join(',');\n case 'label':\n return '.' + value.join('.');\n case 'matrix':\n return ';' + value.join(';');\n case 'form':\n return value.join(',');\n case 'space_delimited':\n return value.join(' ');\n case 'pipe_delimited':\n return value.join('|');\n default:\n return value.join(',');\n }\n}\n\n/**\n * Serialize an object value\n */\nfunction serializeObject(\n value: Record<string, unknown>,\n style: SerializationStyle,\n explode: boolean\n): string | Record<string, string> {\n const entries = Object.entries(value).filter(([_, v]) => v !== undefined);\n\n if (style === 'deep_object') {\n // For deep object, we return the object as-is for query param handling\n return Object.fromEntries(entries.map(([k, v]) => [k, String(v)]));\n }\n\n if (explode) {\n return Object.fromEntries(entries.map(([k, v]) => [k, String(v)]));\n }\n\n // Non-exploded object serialization\n const pairs = entries.flatMap(([k, v]) => [k, String(v)]);\n\n switch (style) {\n case 'simple':\n return pairs.join(',');\n case 'label':\n return '.' + pairs.join('.');\n case 'matrix':\n return ';' + pairs.join(';');\n case 'form':\n return pairs.join(',');\n default:\n return pairs.join(',');\n }\n}\n\nexport type { SerializationStyle };\n","/**\n * Request builder for constructing HTTP requests.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type { ZodType } from 'zod';\nimport type {\n HttpMethod,\n SdkConfig,\n RequestParameter,\n ResponseDefinition,\n ErrorDefinition,\n ContentType,\n RetryOptions,\n ValidationOptions,\n SerializationStyle,\n} from './http-types.js';\nimport { serializeParameter } from './serialization.js';\n\n/** Request creation parameters */\nexport interface CreateRequestParameters {\n baseUrl: string;\n method: HttpMethod;\n path: string;\n config: SdkConfig;\n headers?: Map<string, RequestParameter>;\n queryParams?: Map<string, RequestParameter>;\n pathParams?: Map<string, RequestParameter>;\n body?: unknown;\n responses?: ResponseDefinition[];\n errors?: ErrorDefinition[];\n requestSchema?: ZodType;\n requestContentType?: ContentType;\n validation?: ValidationOptions;\n retry?: RetryOptions;\n}\n\n/**\n * HTTP Request object\n */\nexport class Request {\n readonly baseUrl: string;\n readonly method: HttpMethod;\n readonly path: string;\n readonly config: SdkConfig;\n readonly headers: Map<string, RequestParameter>;\n readonly queryParams: Map<string, RequestParameter>;\n readonly pathParams: Map<string, RequestParameter>;\n body?: unknown;\n readonly responses: ResponseDefinition[];\n readonly errors: ErrorDefinition[];\n readonly requestSchema?: ZodType;\n readonly requestContentType?: ContentType;\n readonly validation: ValidationOptions;\n readonly retry: RetryOptions;\n\n constructor(params: CreateRequestParameters) {\n this.baseUrl = params.baseUrl;\n this.method = params.method;\n this.path = params.path;\n this.config = params.config;\n this.headers = params.headers || new Map();\n this.queryParams = params.queryParams || new Map();\n this.pathParams = params.pathParams || new Map();\n this.body = params.body;\n this.responses = params.responses || [];\n this.errors = params.errors || [];\n this.requestSchema = params.requestSchema;\n this.requestContentType = params.requestContentType;\n this.validation = params.validation || {};\n this.retry = params.retry || { attempts: 1 };\n }\n\n /**\n * Add a header parameter\n */\n addHeaderParam(key: string, param: RequestParameter): void {\n this.headers.set(key, param);\n }\n\n /**\n * Add a query parameter\n */\n addQueryParam(key: string, param: RequestParameter): void {\n this.queryParams.set(key, param);\n }\n\n /**\n * Add a path parameter\n */\n addPathParam(key: string, param: RequestParameter): void {\n this.pathParams.set(key, param);\n }\n\n /**\n * Set the request body\n */\n addBody(body: unknown): void {\n this.body = body;\n }\n\n /**\n * Construct the full URL with path and query parameters\n */\n constructFullUrl(): string {\n // Substitute path parameters\n let url = this.path;\n for (const [key, param] of this.pathParams) {\n const value = serializeParameter(param);\n url = url.replace(`{${key}}`, encodeURIComponent(String(value)));\n }\n\n // Add query parameters\n const queryString = this.buildQueryString();\n if (queryString) {\n url += `?${queryString}`;\n }\n\n return `${this.baseUrl}${url}`;\n }\n\n /**\n * Get serialized headers\n */\n getHeaders(): Record<string, string> {\n const headers: Record<string, string> = {};\n\n for (const [key, param] of this.headers) {\n const value = serializeParameter(param);\n if (value !== undefined && value !== null) {\n headers[key] = String(value);\n }\n }\n\n return headers;\n }\n\n /**\n * Build query string from parameters\n */\n private buildQueryString(): string {\n const parts: string[] = [];\n\n for (const [key, param] of this.queryParams) {\n const serialized = serializeQueryParam(key, param);\n if (serialized) {\n parts.push(serialized);\n }\n }\n\n return parts.join('&');\n }\n}\n\n/**\n * Serialize a query parameter\n */\nfunction serializeQueryParam(key: string, param: RequestParameter): string | null {\n const value = param.value;\n if (value === undefined || value === null) {\n return null;\n }\n\n // Handle arrays\n if (Array.isArray(value)) {\n if (param.explode) {\n return value.map((v) => `${encodeURIComponent(key)}=${encodeURIComponent(String(v))}`).join('&');\n }\n return `${encodeURIComponent(key)}=${value.map((v) => encodeURIComponent(String(v))).join(',')}`;\n }\n\n // Handle objects (deep object style)\n if (typeof value === 'object') {\n if (param.style === 'deep_object' as any) {\n return Object.entries(value)\n .map(([k, v]) => `${encodeURIComponent(key)}[${encodeURIComponent(k)}]=${encodeURIComponent(String(v))}`)\n .join('&');\n }\n // Form style\n return Object.entries(value)\n .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`)\n .join('&');\n }\n\n // Primitive value\n return `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`;\n}\n","/**\n * UsersService - User management and profile endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { User, UserUsage, Memory, Conversation, Fact, Pattern } from '../models/types.js';\n\n/**\n * User management and profile endpoints\n */\nexport class UsersService extends BaseService {\n\n /**\n * Sync user from WorkOS\n * Called by the customer portal after WorkOS authentication.\nCreates a new user if they don't exist, or updates their profile if they do.\nThis is the main entry point for user provisioning.\nWhen the invite gate is closed and a new user is created, the inviteCode\nis redeemed atomically to track which code was used for registration.\n\n * @param body - Request body\n */\n async syncUser(body: { workosId: string; email: string; firstName?: string; lastName?: string; profilePictureUrl?: string; inviteCode?: string }): Promise<HttpResponse<{ data?: User; created?: boolean }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/users/sync',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get current user\n * Get the currently authenticated user's profile and usage information\n */\n async getCurrentUser(): Promise<HttpResponse<{ data?: User; usage?: UserUsage }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/users/me',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Update current user\n * Update the currently authenticated user's profile\n * @param body - Request body\n */\n async updateCurrentUser(options?: { body?: { firstName?: string; lastName?: string; profilePictureUrl?: string } }): Promise<HttpResponse<{ data?: User }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PATCH',\n path: '/api/users/me',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get current user's usage\n * Get the currently authenticated user's memory usage statistics\n */\n async getCurrentUserUsage(): Promise<HttpResponse<{ data?: UserUsage }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/users/me/usage',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Export all user data\n * Export all user data as a JSON archive. Includes profile, memories,\nconversations, facts, and patterns. Supports GDPR Article 20\n(right to data portability). Sensitive fields (Stripe customer ID,\nWorkOS ID, embeddings) are excluded.\n\n */\n async exportUserData(): Promise<HttpResponse<{ exportVersion?: string; exportedAt?: string; counts?: { memories?: number; conversations?: number; facts?: number; patterns?: number }; profile?: Record<string, unknown>; memories?: Memory[]; conversations?: Conversation[]; facts?: Fact[]; patterns?: Pattern[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/users/me/export',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Initiate account deletion\n * Schedule the current user's account for deletion after a 7-day grace period.\nRequires email confirmation. Immediately revokes API keys and cancels\nany active subscription. The account enters read-only mode.\n\n * @param body - Request body\n */\n async initiateAccountDeletion(body: { confirmationEmail: string }): Promise<HttpResponse<{ data?: User; message?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/users/me/deletion',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Cancel account deletion\n * Cancel a pending account deletion during the grace period.\nNote: Previously revoked API keys are not restored — new keys must be created.\nStripe subscription may need manual reactivation via the billing portal.\n\n */\n async cancelAccountDeletion(): Promise<HttpResponse<{ data?: User; message?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/users/me/deletion',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Get user by ID\n * Get a user by their internal ID (admin only)\n * @param id - \n */\n async getUserById(id: string): Promise<HttpResponse<{ data?: User }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/users/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n}","/**\n * TopicsService - Topic detection, clustering, and management endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Topic, Community } from '../models/types.js';\n\n/**\n * Topic detection, clustering, and management endpoints\n */\nexport class TopicsService extends BaseService {\n\n /**\n * List topics\n * List all topics with pagination\n * @param limit - Maximum number of topics to return\n * @param offset - Number of topics to skip\n * @param sortBy - Field to sort topics by\n * @param order - Sort order\n */\n async listTopics(options?: { limit?: number; offset?: number; sortBy?: 'name' | 'memoryCount'; order?: 'asc' | 'desc' }): Promise<HttpResponse<{ data?: Topic[]; pagination?: { limit?: number; offset?: number; count?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/topics',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n if (options?.sortBy !== undefined) {\n request.addQueryParam('sortBy', {\n key: 'sortBy',\n value: options.sortBy,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.order !== undefined) {\n request.addQueryParam('order', {\n key: 'order',\n value: options.order,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get topic by ID\n * Retrieve a specific topic by its ID\n * @param id - The topic ID\n */\n async getTopicById(id: string): Promise<HttpResponse<{ data?: Topic }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/topics/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Merge topics\n * Merge two topics into one\n * @param body - Request body\n */\n async mergeTopics(body: { sourceTopicId: string; targetTopicId: string }): Promise<HttpResponse<{ data?: Topic }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/merge',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Discover related topics\n * Discover topics related to a given topic\n * @param body - Request body\n */\n async discoverRelatedTopics(body: { topicId: string; limit?: number }): Promise<HttpResponse<{ data?: Topic[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/discover-related',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Calculate topic similarity\n * Calculate similarity score between two topics\n * @param body - Request body\n */\n async calculateTopicSimilarity(body: { topicId1: string; topicId2: string }): Promise<HttpResponse<{ data?: { similarity?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/similarity',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Find similar topics\n * Find topics similar to a given topic\n * @param body - Request body\n */\n async findSimilarTopics(body: { topicId: string; threshold?: number; limit?: number }): Promise<HttpResponse<{ data?: { topic?: Topic; similarity?: number }[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/similar',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Cluster topics\n * Cluster topics using community detection algorithms\n * @param body - Request body\n */\n async clusterTopics(options?: { body?: { minClusterSize?: number } }): Promise<HttpResponse<{ data?: { clusters?: Record<string, unknown>[]; clusterCount?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/cluster',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Detect communities\n * Detect communities in the topic graph using specified algorithm\n * @param body - Request body\n */\n async detectCommunities(options?: { body?: { algorithm?: string } }): Promise<HttpResponse<{ data?: { communities?: Community[]; communityCount?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/detect-communities',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Search topics\n * Search topics by query string using fulltext search\n * @param body - Request body\n */\n async searchTopics(body: { query: string; limit?: number; offset?: number }): Promise<HttpResponse<{ data?: Record<string, unknown>[]; total?: number; limit?: number; offset?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/topics/search',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * SystemService - System health, monitoring, and configuration endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n * System health, monitoring, and configuration endpoints\n */\nexport class SystemService extends BaseService {\n\n /**\n * Get system health status\n * Get the current health status of the system including database connectivity\n */\n async getSystemHealth(): Promise<HttpResponse<{ data?: { status?: 'healthy' | 'unhealthy'; database?: Record<string, unknown>; uptime?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/system/health',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Get context status\n * Get database statistics and context information\n */\n async getContextStatus(): Promise<HttpResponse<{ data?: Record<string, unknown> }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/system/context/status',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Get feature flags\n * Get all feature flags for the authenticated user\n */\n async getFeatureFlags(): Promise<HttpResponse<{ data?: Record<string, unknown> }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/system/feature-flags',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Evaluate feature flag\n * Evaluate a specific feature flag for the authenticated user\n * @param body - Request body\n */\n async evaluateFeatureFlag(body: { flagName: string; context?: Record<string, unknown> }): Promise<HttpResponse<{ data?: { enabled?: boolean; flagName?: string } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/system/feature-flags/evaluate',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Analyze memory quality distribution\n * Analyze the quality distribution of memories for the authenticated user\n * @param includeDetails - Include detailed pruning candidate information\n * @param minQualityThreshold - Minimum quality threshold for pruning candidates (default 0.4)\n */\n async analyzeMemoryQuality(options?: { includeDetails?: boolean; minQualityThreshold?: number }): Promise<HttpResponse<{ data?: { totalMemories?: number; qualityDistribution?: { high?: number; medium?: number; low?: number }; averageQuality?: number; pruningCandidates?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/system/memory/quality',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.includeDetails !== undefined) {\n request.addQueryParam('includeDetails', {\n key: 'includeDetails',\n value: options.includeDetails,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.minQualityThreshold !== undefined) {\n request.addQueryParam('minQualityThreshold', {\n key: 'minQualityThreshold',\n value: options.minQualityThreshold,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Prune low-quality memories\n * Prune (soft delete) low-quality memories for the authenticated user\n * @param body - Request body\n */\n async pruneMemories(options?: { body?: { targetReduction?: number; minQualityThreshold?: number; preserveRecent?: boolean; recentDaysToPreserve?: number; dryRun?: boolean } }): Promise<HttpResponse<{ data?: { prunedCount?: number; prunedIds?: string[]; dryRun?: boolean } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/system/memory/prune',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get OpenAPI specification\n * Returns the OpenAPI 3.x specification for the entire API. This endpoint is used by CI/CD to sync the API Gateway.\n * @param noCache - Bypass cache and regenerate specification\n */\n async getOpenApiSpec(options?: { noCache?: '1' | 'true' }): Promise<HttpResponse<Record<string, unknown>>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/openapi.json',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.noCache !== undefined) {\n request.addQueryParam('noCache', {\n key: 'noCache',\n value: options.noCache,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n}","/**\n * PatternsService - Pattern detection and behavioral analysis endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Pattern } from '../models/types.js';\n\n/**\n * Pattern detection and behavioral analysis endpoints\n */\nexport class PatternsService extends BaseService {\n\n /**\n * List patterns\n * List all patterns for the authenticated user\n * @param limit - Maximum number of patterns to return\n * @param offset - Number of patterns to skip\n */\n async listPatterns(options?: { limit?: number; offset?: number }): Promise<HttpResponse<{ data?: Pattern[]; pagination?: { limit?: number; offset?: number; count?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/patterns',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Compile patterns\n * Compile patterns from user's memories\n * @param body - Request body\n */\n async compilePatterns(options?: { body?: { minOccurrences?: number; timeWindow?: string } }): Promise<HttpResponse<{ data?: Pattern[]; count?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/compile',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Detect behavioral patterns\n * Run pattern detection algorithms to identify recurring behavioral patterns\n * @param body - Request body\n */\n async detectPatterns(options?: { body?: { contextFilter?: string; timeframeStart?: string; timeframeEnd?: string; minConfidence?: number; maxResults?: number; autoStore?: boolean } }): Promise<HttpResponse<{ data?: { detectedPatterns?: Pattern[]; count?: number; stored?: number; confidence?: { average?: number; highest?: number } } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/detect',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Analyze pattern trends\n * Analyze pattern trends, correlations, and generate insights\n * @param body - Request body\n */\n async analyzePatterns(options?: { body?: { timeRange?: number; groupBy?: 'type' | 'context' | 'confidence'; includeDetails?: boolean } }): Promise<HttpResponse<{ data?: { analysis?: { totalPatterns?: number; recentPatterns?: number; trends?: Record<string, unknown>; insights?: string[]; recommendations?: string[] }; timeRange?: number; analyzedAt?: string } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/analyze',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Update pattern\n * Update an existing pattern with partial data\n * @param id - The pattern ID\n * @param body - Request body\n */\n async updatePattern(id: string, body: { name?: string; description?: string; confidence?: number; metadata?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Pattern }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PATCH',\n path: '/api/patterns/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Record pattern feedback\n * Record feedback on a pattern\n * @param body - Request body\n */\n async recordPatternFeedback(body: { patternId: string; feedback: string }): Promise<HttpResponse<{ data?: Pattern }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/feedback',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Compile behavioral instructions from stored patterns\n * Converts stored behavioral patterns into actionable instructions suitable for injection into AI agent context at conversation start. Uses template-based (non-LLM) generation for deterministic output within the P95 <100ms budget.\n\n * @param body - Request body\n */\n async compileInstructions(options?: { body?: { conversationContext?: string[]; currentQuery?: string; tokenBudget?: number; minConfidence?: number; maxInstructions?: number } }): Promise<HttpResponse<{ instructions: { patternId: string; instruction: string; confidence: number; priority: number; source: 'learned' | 'explicit' | 'manual'; patternType: string; activatedBy: string[]; recommendationId?: string; triggerContext?: string; evidenceSummary?: string; firstSurfacing?: boolean }[]; summary: string; tokenCount: number; patternsEvaluated: number; patternsActivated: number; conflictsResolved: { winnerId: string; loserId: string; strategy: 'priority_override' }[]; systemState?: 'ok' | 'cold_start' | 'pending_only' | 'no_match'; pendingCount?: number; patternsExcluded?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/compile-instructions',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * BehaviorService - Behavioral pattern tracking and state management endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n * Behavioral pattern tracking and state management endpoints\n */\nexport class BehaviorService extends BaseService {\n\n /**\n * Get behavioral state\n * Get current behavioral state for the authenticated user\n */\n async getBehavioralState(): Promise<HttpResponse<{ data?: Record<string, unknown> }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/patterns/behavior/state',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Update behavioral state\n * Update or mutate behavioral state\n * @param body - Request body\n */\n async updateBehavioralState(options?: { body?: { state?: Record<string, unknown>; mutations?: Record<string, unknown> } }): Promise<HttpResponse<{ data?: Record<string, unknown> }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/behavior/state',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * RecommendationsService - Behavioral recommendation management endpoints (v2) API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Recommendation } from '../models/types.js';\n\n/**\n * Behavioral recommendation management endpoints (v2)\n */\nexport class RecommendationsService extends BaseService {\n\n /**\n * Create an explicit recommendation\n * Create a new explicit recommendation (triggerContext + practice pair). Source is set to 'explicit'; triggerEmbedding is generated synchronously before return. SEC-BL-v2-002: practice content is validated against a prompt-injection deny-list. SEC-BL-v2-003: evidenceMemoryIds ownership is verified against the authenticated user.\n\n * @param body - Request body\n */\n async createRecommendation(body: { triggerContext: string; practice: string; evidenceSummary?: string; outcomeSignal?: 'positive' | 'neutral' | 'unknown'; evidenceMemoryIds?: string[]; activateImmediately?: boolean }): Promise<HttpResponse<{ data?: Recommendation }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/recommendations',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * List pending recommendations\n * Returns recommendations with status='pending_review' for the authenticated user, ordered by confidence DESC, createdAt ASC.\n\n * @param limit - Maximum number of results\n * @param offset - Number of results to skip\n */\n async listPendingRecommendations(options?: { limit?: number; offset?: number }): Promise<HttpResponse<{ data?: Recommendation[]; pagination?: { limit?: number; offset?: number; count?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/patterns/recommendations/pending',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Approve a pending recommendation\n * Transitions a recommendation from status='pending_review' to status='active'. Returns 404 if the recommendation is not found, not owned by the authenticated user, or is not in pending_review status.\n\n * @param id - Recommendation ID\n * @param body - Request body\n */\n async approveRecommendation(id: string, options?: { body?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Recommendation }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PATCH',\n path: '/api/patterns/recommendations/{id}/approve',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Dismiss a recommendation\n * Permanently dismisses a recommendation (any non-dismissed status → dismissed). This transition is terminal — dismissed recommendations cannot be reactivated. Returns 404 if not found, not owned by the authenticated user, or already dismissed.\n\n * @param id - Recommendation ID\n * @param body - Request body\n */\n async dismissRecommendation(id: string, options?: { body?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Recommendation }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PATCH',\n path: '/api/patterns/recommendations/{id}/dismiss',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * List active recommendations\n * Returns recommendations with status='active' for the authenticated user, ordered by confidence DESC. These are the behavioral preferences currently surfacing in Claude via compile-instructions and build_context. SEC-BL-v2-003: results are scoped to the authenticated user — no cross-user data.\n\n * @param limit - Maximum number of results\n * @param offset - Number of results to skip\n */\n async listActiveRecommendations(options?: { limit?: number; offset?: number }): Promise<HttpResponse<{ data?: Recommendation[]; pagination?: { limit?: number; offset?: number; count?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/patterns/recommendations/active',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Match active recommendations to content\n * Embeds the supplied content and returns active Recommendations whose triggerContext is semantically similar. Used by the MCP server for just-in-time behavioral nudges on memory save. Results are scoped to the authenticated user — no cross-user data is returned.\n\n * @param body - Request body\n */\n async matchRecommendations(body: { content: string; limit?: number; similarityThreshold?: number }): Promise<HttpResponse<{ data: Recommendation[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/patterns/recommendations/match',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Pause an active recommendation\n * Transitions a recommendation from status='active' to status='paused'. Paused recommendations are excluded from compile-instructions and build_context surfacing. Returns 404 if the recommendation is not found, not owned by the authenticated user, or is not in active status. SEC-BL-v2-003: MATCH includes userId — no IDOR.\n\n * @param id - Recommendation ID\n * @param body - Request body\n */\n async pauseRecommendation(id: string, options?: { body?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Recommendation }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PATCH',\n path: '/api/patterns/recommendations/{id}/pause',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * NarrativesService - Narrative thread management endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { NarrativeThread, NarrativeMemory } from '../models/types.js';\n\n/**\n * Narrative thread management endpoints\n */\nexport class NarrativesService extends BaseService {\n\n /**\n * List narrative threads\n * List all narrative threads for the authenticated user.\nNarratives group related memories into coherent storylines.\n\n * @param limit - Maximum number of narratives to return\n * @param offset - Number of narratives to skip\n * @param state - Filter by narrative state\n * @param topics - Comma-separated list of topics to filter by\n */\n async listNarratives(options?: { limit?: number; offset?: number; state?: 'open' | 'resolved' | 'reopened' | 'superseded'; topics?: string }): Promise<HttpResponse<{ data: NarrativeThread[]; pagination: { limit: number; offset: number; count: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/narratives',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n if (options?.state !== undefined) {\n request.addQueryParam('state', {\n key: 'state',\n value: options.state,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.topics !== undefined) {\n request.addQueryParam('topics', {\n key: 'topics',\n value: options.topics,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create a narrative thread\n * Create a new narrative thread starting from a root memory.\nNarratives help organize related memories into coherent storylines.\n\n * @param body - Request body\n */\n async createNarrative(body: { title: string; rootMemoryId: string; topics?: string[] }): Promise<HttpResponse<{ data: NarrativeThread }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/narratives',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get a narrative thread\n * Retrieve a specific narrative thread by ID\n * @param id - The narrative ID\n */\n async getNarrative(id: string): Promise<HttpResponse<{ data: NarrativeThread }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/narratives/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Delete a narrative thread\n * Delete a narrative thread.\nThis does not delete the associated memories, only the narrative structure.\n\n * @param id - The narrative ID\n */\n async deleteNarrative(id: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/narratives/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Update a narrative thread\n * Update a narrative thread's title, topics, or state.\nUse this to resolve, reopen, or modify narratives.\n\n * @param id - The narrative ID\n * @param body - Request body\n */\n async updateNarrative(id: string, body: { title?: string; state?: 'open' | 'resolved' | 'reopened' | 'superseded'; resolutionMemoryId?: string; topics?: string[] }): Promise<HttpResponse<{ data: NarrativeThread }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PATCH',\n path: '/api/narratives/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get narrative timeline\n * Get all memories in a narrative, ordered by their position in the narrative.\nEach memory includes its position and effective state.\n\n * @param id - The narrative ID\n * @param limit - Maximum number of memories to return\n * @param offset - Number of memories to skip\n */\n async getNarrativeTimeline(id: string, options?: { limit?: number; offset?: number }): Promise<HttpResponse<{ data: NarrativeMemory[]; narrative: NarrativeThread; pagination: { limit: number; offset: number; total: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/narratives/{id}/timeline',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Add a memory to a narrative\n * Add an existing memory to a narrative thread.\nOptionally specify a position to insert the memory at.\n\n * @param id - The narrative ID\n * @param body - Request body\n */\n async addMemoryToNarrative(id: string, body: { memoryId: string; position?: number }): Promise<HttpResponse<{ data: NarrativeThread }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/narratives/{id}/memories',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Remove a memory from a narrative\n * Remove a memory from a narrative thread.\nThis does not delete the memory itself, only removes it from the narrative.\n\n * @param id - The narrative ID\n * @param memoryId - The memory ID to remove\n */\n async removeMemoryFromNarrative(id: string, memoryId: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/narratives/{id}/memories/{memoryId}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n request.addPathParam('memoryId', {\n key: 'memoryId',\n value: memoryId,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n}","/**\n * MonitoringService - Observability and metrics endpoints for production monitoring API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n * Observability and metrics endpoints for production monitoring\n */\nexport class MonitoringService extends BaseService {\n\n /**\n * Prometheus metrics endpoint\n * Returns Prometheus-formatted metrics for monitoring and observability.\nThis endpoint is public and requires no authentication.\nDesigned to be scraped by Prometheus at regular intervals.\n\n */\n async getMetrics(): Promise<HttpResponse<unknown>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/metrics',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n}","/**\n * MemoriesService - Memory management and retrieval endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Memory, Pagination, CreateMemoryResponseMeta, PrecomputedMemoryFields, SearchResult, SearchMeta, Facets, ClaimGroup, BatchGetMemoriesMeta, DigestMetadata, DigestSource, DigestKeyFact, DigestEntity, EffectiveStateBreakdown, BuildContextActiveWork, BuildContextFact, BuildContextGotcha, BuildContextActivity, BuildContextPattern, BuildContextMeta, RelatedMemoryResult, CodeContext, MemoryRelationship } from '../models/types.js';\n\n/**\n * Memory management and retrieval endpoints\n */\nexport class MemoriesService extends BaseService {\n\n /**\n * Get memory by ID\n * Retrieve a specific memory by its ID with configurable detail level.\n\n**Detail levels:**\n- `minimal` — raw memory only, no extra queries\n- `standard` (default) — adds userTopics, extractedTopics, entities, facts, relationships\n- `full` — adds conversationContext (title, memoryCount, position) and relationship target previews\n\n * @param id - The memory ID\n * @param detail - Detail level: minimal (raw memory), standard (default, + topics/entities/facts/relationships), full (+ conversation context and relationship previews)\n */\n async getMemoryById(id: string, options?: { detail?: 'minimal' | 'standard' | 'full' }): Promise<HttpResponse<{ data: Memory }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.detail !== undefined) {\n request.addQueryParam('detail', {\n key: 'detail',\n value: options.detail,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Update a memory\n * Update an existing memory for the authenticated user\n * @param id - Memory ID\n * @param body - Request body\n */\n async updateMemory(id: string, body: { content?: string; name?: string | ''; memoryType?: 'episodic' | 'semantic' | 'procedural'; context?: string; topics?: string[]; outcome?: 'resolved' | 'unresolved' }): Promise<HttpResponse<{ data?: Memory }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PUT',\n path: '/api/memories/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Delete memory\n * Delete a memory by its ID\n * @param id - The memory ID\n */\n async deleteMemory(id: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/memories/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Aggregated memory analytics\n * Return aggregated memory counts grouped by a time dimension (day, week, month)\nor by topic. Useful for activity dashboards and trend analysis.\n\n * @param groupBy - Dimension to group counts by: day (YYYY-MM-DD), week (YYYY-Www), month (YYYY-MM), or topic\n * @param after - Filter memories on or after this ISO 8601 timestamp\n * @param before - Filter memories on or before this ISO 8601 timestamp\n * @param recent - Shorthand time window relative to now (e.g. 7d, 2w, 1mo). Sets the lower bound. Takes precedence over `after`.\n * @param topic - Pre-filter to memories that contain this topic before grouping\n * @param limit - Maximum number of buckets to return\n */\n async getMemoriesStats(options?: { groupBy?: 'day' | 'week' | 'month' | 'topic'; after?: string; before?: string; recent?: string; topic?: string; limit?: number }): Promise<HttpResponse<{ groupBy?: 'day' | 'week' | 'month' | 'topic'; data?: { bucket?: string; count?: number }[]; total?: number; filters?: { after?: string; before?: string; topic?: string } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/stats',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.groupBy !== undefined) {\n request.addQueryParam('groupBy', {\n key: 'groupBy',\n value: options.groupBy,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.after !== undefined) {\n request.addQueryParam('after', {\n key: 'after',\n value: options.after,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.before !== undefined) {\n request.addQueryParam('before', {\n key: 'before',\n value: options.before,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.recent !== undefined) {\n request.addQueryParam('recent', {\n key: 'recent',\n value: options.recent,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.topic !== undefined) {\n request.addQueryParam('topic', {\n key: 'topic',\n value: options.topic,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * List memories\n * List all memories for the authenticated user with pagination.\n\n**ID Prefix Search:**\nUse the `idPrefix` parameter for git-style short ID lookup. This enables efficient\nserver-side filtering instead of fetching all memories and filtering client-side.\n- Minimum 6 characters required for `idPrefix`\n- Returns matching memories directly (no need for secondary fetch)\n- Example: `?idPrefix=2d09116a` finds memories starting with that prefix\n\n * @param idPrefix - Filter memories by ID prefix (git-style short ID lookup). Minimum 6 characters.\n * @param limit - Maximum number of memories to return\n * @param offset - Number of memories to skip\n * @param page - Page number (alternative to offset)\n * @param sortBy - Field to sort results by\n * @param order - Sort order\n * @param from - Filter memories created on or after this ISO 8601 timestamp (ingestion time lower bound)\n * @param to - Filter memories created on or before this ISO 8601 timestamp (ingestion time upper bound)\n * @param recent - Shorthand time filter relative to now (e.g. \"24h\", \"7d\", \"2w\"). Sets the lower bound for ingestion time. Takes precedence over `from` when both are provided.\n * @param topics - Comma-separated topic names. Memories must have at least one matching topic.\n * @param excludeTopics - Comma-separated topic names. Memories with any matching topic are excluded.\n * @param conversationId - Filter to memories belonging to the given conversation.\n * @param scope - Filter by codeContext scope. Comma-separated key:value pairs (e.g. scope=product:memnexus,team:retrieval). Memories must match ALL specified scope pairs. Allowed keys, product, service, team, role — unknown keys return 400.\n */\n async listMemories(options?: { idPrefix?: string; limit?: number; offset?: number; page?: number; sortBy?: 'createdAt' | 'updatedAt' | 'eventTime'; order?: 'asc' | 'desc'; from?: string; to?: string; recent?: string; topics?: string; excludeTopics?: string; conversationId?: string; scope?: string }): Promise<HttpResponse<{ data?: Memory[]; pagination?: Pagination; filtersApplied?: { from?: string; to?: string; topics?: string[]; excludeTopics?: string[]; conversationId?: string; scope?: Record<string, unknown> } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.idPrefix !== undefined) {\n request.addQueryParam('idPrefix', {\n key: 'idPrefix',\n value: options.idPrefix,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n if (options?.page !== undefined) {\n request.addQueryParam('page', {\n key: 'page',\n value: options.page,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.sortBy !== undefined) {\n request.addQueryParam('sortBy', {\n key: 'sortBy',\n value: options.sortBy,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.order !== undefined) {\n request.addQueryParam('order', {\n key: 'order',\n value: options.order,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.from !== undefined) {\n request.addQueryParam('from', {\n key: 'from',\n value: options.from,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.to !== undefined) {\n request.addQueryParam('to', {\n key: 'to',\n value: options.to,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.recent !== undefined) {\n request.addQueryParam('recent', {\n key: 'recent',\n value: options.recent,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.topics !== undefined) {\n request.addQueryParam('topics', {\n key: 'topics',\n value: options.topics,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.excludeTopics !== undefined) {\n request.addQueryParam('excludeTopics', {\n key: 'excludeTopics',\n value: options.excludeTopics,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.conversationId !== undefined) {\n request.addQueryParam('conversationId', {\n key: 'conversationId',\n value: options.conversationId,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.scope !== undefined) {\n request.addQueryParam('scope', {\n key: 'scope',\n value: options.scope,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create a memory\n * Create a new memory for the authenticated user.\n\n**Conversation Management:**\n- Use `conversationId: \"NEW\"` to create a new conversation automatically\n- Provide an existing conversation ID to add to that conversation\n\n**Session Management:**\n- Sessions are automatically assigned based on 90-minute gap detection\n- If the last memory in the conversation was within 90 minutes, the same session is reused\n- If the gap exceeds 90 minutes, a new session is created\n\n**Response:**\n- Returns the created memory in `data` field\n- Returns session/conversation metadata in `meta` field\n\n * @param body - Request body\n */\n async createMemory(body: { conversationId?: string; claudeSessionId?: string; name?: string; content: string; memoryType?: 'episodic' | 'semantic' | 'procedural'; role?: 'user' | 'assistant' | 'system'; context?: string; topics?: string[]; eventTime?: string; validFrom?: string; validTo?: string; codeContext?: { product?: string; repo?: string; service?: string; component?: string; team?: string; role?: string; extra?: Record<string, unknown> }; precomputed?: PrecomputedMemoryFields; taskId?: string; outcome?: 'resolved' | 'unresolved'; distill?: boolean }): Promise<HttpResponse<{ data: Memory; meta: CreateMemoryResponseMeta }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Search memories (GET)\n * Search memories using query parameters. Provides the same functionality as\nPOST /api/memories/search but accepts parameters via query string.\n\n**Benefits of GET:**\n- Faster response times (~3x improvement)\n- Browser/CDN caching support\n- Simpler integration for read-only clients\n\n**Search Methods:**\n- **hybrid** (default): Combines semantic and keyword search with Reciprocal Rank Fusion\n- **semantic**: Vector-based semantic search using OpenAI embeddings\n- **keyword**: Traditional fulltext search using Lucene\n\n**Array Parameters:**\n- `topics`: Provide as comma-separated values (e.g., `topics=typescript,api-design`)\n\n * @param q - Search query string. Optional — omit for topic/date-only browsing.\n * @param searchMethod - Search algorithm to use\n * @param limit - Maximum number of results to return\n * @param offset - Number of results to skip for pagination\n * @param threshold - Minimum similarity threshold for semantic search\n * @param mode - Content filtering mode\n * @param vectorWeight - Weight for vector similarity in hybrid search\n * @param fulltextWeight - Weight for fulltext matching in hybrid search\n * @param topics - Comma-separated list of topics to filter by (include memories with ANY of these topics)\n * @param excludeTopics - Comma-separated list of topics to exclude (exclude memories with ANY of these topics)\n * @param memoryType - Filter by memory type\n * @param conversationId - Filter by conversation ID\n * @param explain - Include detailed match explanations in results\n * @param includeTopics - Include associated topics in results\n * @param includeEntities - Include mentioned entities in results\n * @param includeFacts - Include extracted facts in results\n * @param includeClaims - Include claims associated with results (defaults to true)\n * @param asOfTime - Point-in-time query (ISO 8601 datetime)\n * @param validAtTime - Filter by validity time (ISO 8601 datetime)\n * @param eventTimeFrom - Event time range start (ISO 8601 datetime)\n * @param eventTimeTo - Event time range end (ISO 8601 datetime)\n * @param ingestionTimeFrom - Ingestion time range start (ISO 8601 datetime)\n * @param ingestionTimeTo - Ingestion time range end (ISO 8601 datetime)\n * @param includeExpired - Include expired memories in results\n * @param temporalMode - Temporal query mode\n * @param sortBy - Field to sort results by\n * @param order - Sort order\n * @param expandEntities - Enable entity graph traversal branch in hybrid search\n * @param expandTopics - Enable topic graph traversal branch in hybrid search\n * @param expandFacts - Enable fact graph traversal branch in hybrid search\n * @param includeSuperseded - Include superseded and contradicted memories in results\n * @param entityWeight - Weight for entity graph branch in hybrid search\n * @param topicWeight - Weight for topic graph branch in hybrid search\n * @param factWeight - Weight for fact graph branch in hybrid search\n * @param questionWeight - Weight for question graph branch in hybrid search\n * @param claimsWeight - Weight for claims vector branch in hybrid search\n * @param includeFacets - Include facet aggregation (topics, memoryType, effectiveState) in response\n * @param embeddingProvider - Which embedding provider to use for query-time embedding generation and vector index lookup. `voyage` is the canonical name for the secondary provider (Voyage voyage-3.5, 1024d); `openai` is accepted as a legacy alias and now also resolves to Voyage after v1.66 P0-EMBED-SWAP. Falls back to ollama when the secondary provider is unavailable.\n * @param scope - Filter by codeContext scope. Comma-separated key:value pairs (e.g. scope=product:memnexus,service:core-api). Memories must match ALL specified scope pairs. Allowed keys, product, service, team, role — unknown keys return 400.\n * @param taskId - Task-scoped retrieval: returns own-history first, fills remainder with cross-task results.\n * @param outcomeFilter - Filter by task outcome. Use 'resolved' to find successful approaches from past tasks.\n */\n async searchMemoriesGet(options?: { q?: string; searchMethod?: 'keyword' | 'semantic' | 'hybrid'; limit?: number; offset?: number; threshold?: number; mode?: 'unified' | 'content' | 'facts'; vectorWeight?: number; fulltextWeight?: number; topics?: string; excludeTopics?: string; memoryType?: 'episodic' | 'semantic' | 'procedural'; conversationId?: string; explain?: boolean; includeTopics?: boolean; includeEntities?: boolean; includeFacts?: boolean; includeClaims?: boolean; asOfTime?: string; validAtTime?: string; eventTimeFrom?: string; eventTimeTo?: string; ingestionTimeFrom?: string; ingestionTimeTo?: string; includeExpired?: boolean; temporalMode?: 'current' | 'historical' | 'evolution'; sortBy?: 'relevance' | 'createdAt' | 'updatedAt' | 'eventTime'; order?: 'asc' | 'desc'; expandEntities?: boolean; expandTopics?: boolean; expandFacts?: boolean; includeSuperseded?: boolean; entityWeight?: number; topicWeight?: number; factWeight?: number; questionWeight?: number; claimsWeight?: number; includeFacets?: boolean; embeddingProvider?: 'ollama' | 'openai' | 'voyage'; scope?: string; taskId?: string; outcomeFilter?: 'resolved' | 'unresolved' | 'any' }): Promise<HttpResponse<{ data: SearchResult[]; meta: SearchMeta; facets?: Facets; instructions?: string; claim_groups?: ClaimGroup[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/search',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.q !== undefined) {\n request.addQueryParam('q', {\n key: 'q',\n value: options.q,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.searchMethod !== undefined) {\n request.addQueryParam('searchMethod', {\n key: 'searchMethod',\n value: options.searchMethod,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n if (options?.threshold !== undefined) {\n request.addQueryParam('threshold', {\n key: 'threshold',\n value: options.threshold,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.mode !== undefined) {\n request.addQueryParam('mode', {\n key: 'mode',\n value: options.mode,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.vectorWeight !== undefined) {\n request.addQueryParam('vectorWeight', {\n key: 'vectorWeight',\n value: options.vectorWeight,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.fulltextWeight !== undefined) {\n request.addQueryParam('fulltextWeight', {\n key: 'fulltextWeight',\n value: options.fulltextWeight,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.topics !== undefined) {\n request.addQueryParam('topics', {\n key: 'topics',\n value: options.topics,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.excludeTopics !== undefined) {\n request.addQueryParam('excludeTopics', {\n key: 'excludeTopics',\n value: options.excludeTopics,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.memoryType !== undefined) {\n request.addQueryParam('memoryType', {\n key: 'memoryType',\n value: options.memoryType,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.conversationId !== undefined) {\n request.addQueryParam('conversationId', {\n key: 'conversationId',\n value: options.conversationId,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.explain !== undefined) {\n request.addQueryParam('explain', {\n key: 'explain',\n value: options.explain,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.includeTopics !== undefined) {\n request.addQueryParam('includeTopics', {\n key: 'includeTopics',\n value: options.includeTopics,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.includeEntities !== undefined) {\n request.addQueryParam('includeEntities', {\n key: 'includeEntities',\n value: options.includeEntities,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.includeFacts !== undefined) {\n request.addQueryParam('includeFacts', {\n key: 'includeFacts',\n value: options.includeFacts,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.includeClaims !== undefined) {\n request.addQueryParam('includeClaims', {\n key: 'includeClaims',\n value: options.includeClaims,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.asOfTime !== undefined) {\n request.addQueryParam('asOfTime', {\n key: 'asOfTime',\n value: options.asOfTime,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.validAtTime !== undefined) {\n request.addQueryParam('validAtTime', {\n key: 'validAtTime',\n value: options.validAtTime,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.eventTimeFrom !== undefined) {\n request.addQueryParam('eventTimeFrom', {\n key: 'eventTimeFrom',\n value: options.eventTimeFrom,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.eventTimeTo !== undefined) {\n request.addQueryParam('eventTimeTo', {\n key: 'eventTimeTo',\n value: options.eventTimeTo,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.ingestionTimeFrom !== undefined) {\n request.addQueryParam('ingestionTimeFrom', {\n key: 'ingestionTimeFrom',\n value: options.ingestionTimeFrom,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.ingestionTimeTo !== undefined) {\n request.addQueryParam('ingestionTimeTo', {\n key: 'ingestionTimeTo',\n value: options.ingestionTimeTo,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.includeExpired !== undefined) {\n request.addQueryParam('includeExpired', {\n key: 'includeExpired',\n value: options.includeExpired,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.temporalMode !== undefined) {\n request.addQueryParam('temporalMode', {\n key: 'temporalMode',\n value: options.temporalMode,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.sortBy !== undefined) {\n request.addQueryParam('sortBy', {\n key: 'sortBy',\n value: options.sortBy,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.order !== undefined) {\n request.addQueryParam('order', {\n key: 'order',\n value: options.order,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.expandEntities !== undefined) {\n request.addQueryParam('expandEntities', {\n key: 'expandEntities',\n value: options.expandEntities,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.expandTopics !== undefined) {\n request.addQueryParam('expandTopics', {\n key: 'expandTopics',\n value: options.expandTopics,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.expandFacts !== undefined) {\n request.addQueryParam('expandFacts', {\n key: 'expandFacts',\n value: options.expandFacts,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.includeSuperseded !== undefined) {\n request.addQueryParam('includeSuperseded', {\n key: 'includeSuperseded',\n value: options.includeSuperseded,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.entityWeight !== undefined) {\n request.addQueryParam('entityWeight', {\n key: 'entityWeight',\n value: options.entityWeight,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.topicWeight !== undefined) {\n request.addQueryParam('topicWeight', {\n key: 'topicWeight',\n value: options.topicWeight,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.factWeight !== undefined) {\n request.addQueryParam('factWeight', {\n key: 'factWeight',\n value: options.factWeight,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.questionWeight !== undefined) {\n request.addQueryParam('questionWeight', {\n key: 'questionWeight',\n value: options.questionWeight,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.claimsWeight !== undefined) {\n request.addQueryParam('claimsWeight', {\n key: 'claimsWeight',\n value: options.claimsWeight,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.includeFacets !== undefined) {\n request.addQueryParam('includeFacets', {\n key: 'includeFacets',\n value: options.includeFacets,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.embeddingProvider !== undefined) {\n request.addQueryParam('embeddingProvider', {\n key: 'embeddingProvider',\n value: options.embeddingProvider,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.scope !== undefined) {\n request.addQueryParam('scope', {\n key: 'scope',\n value: options.scope,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.taskId !== undefined) {\n request.addQueryParam('taskId', {\n key: 'taskId',\n value: options.taskId,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.outcomeFilter !== undefined) {\n request.addQueryParam('outcomeFilter', {\n key: 'outcomeFilter',\n value: options.outcomeFilter,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Search all memories\n * Search memories using different search methods:\n- **hybrid** (default): Combines semantic and keyword search with Reciprocal Rank Fusion\n- **semantic**: Vector-based semantic search using OpenAI embeddings\n- **keyword**: Traditional fulltext search using Lucene\n\nThe `mode` parameter controls content filtering (unified, content, facts).\nThe `searchMethod` parameter controls the search algorithm.\n\n * @param body - Request body\n */\n async searchMemories(body: { query: string; mode?: 'unified' | 'content' | 'facts'; searchMethod?: 'keyword' | 'semantic' | 'hybrid'; limit?: number; offset?: number; vectorWeight?: number; fulltextWeight?: number; threshold?: number; explain?: boolean; asOfTime?: string; validAtTime?: string; eventTimeFrom?: string; eventTimeTo?: string; ingestionTimeFrom?: string; ingestionTimeTo?: string; includeExpired?: boolean; temporalMode?: 'current' | 'historical' | 'evolution'; topics?: string[]; memoryType?: 'episodic' | 'semantic' | 'procedural'; conversationId?: string; taskId?: string; outcomeFilter?: 'resolved' | 'unresolved' | 'any'; includeTopics?: boolean; includeEntities?: boolean; includeFacts?: boolean; includeClaims?: boolean; entityTypes?: string[]; expandEntities?: boolean; expandTopics?: boolean; expandFacts?: boolean; includeSuperseded?: boolean; entityWeight?: number; topicWeight?: number; factWeight?: number; questionWeight?: number; claimsWeight?: number; sortBy?: 'relevance' | 'createdAt' | 'updatedAt' | 'eventTime'; order?: 'asc' | 'desc'; includeFacets?: boolean }): Promise<HttpResponse<{ data: SearchResult[]; meta: SearchMeta; facets?: Facets; instructions?: string; claim_groups?: ClaimGroup[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/search',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get multiple memories by IDs\n * Retrieve multiple memories by their IDs in a single request.\nMore efficient than making multiple individual GET requests.\n\nReturns memories in the order requested, with metadata about\nwhich IDs were found or missing.\n\n * @param body - Request body\n */\n async getMemoriesBatch(body: { ids: string[]; detail?: 'minimal' | 'standard' | 'full' }): Promise<HttpResponse<{ data: Memory[]; meta: BatchGetMemoriesMeta }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/batch',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Generate memory digest\n * Synthesizes a comprehensive, structured briefing from all relevant memories\non a topic. Instead of multiple search rounds, one call returns a complete digest.\n\n**Formats:**\n- `structured` (default): Sections with headers, bullet points, key decisions\n- `narrative`: Chronological prose narrative\n- `timeline`: Dated event list\n- `status-report`: Done/In Progress/Blocked grouping\n\n**Pipeline:**\n1. Gather: High-limit search + conversation expansion\n2. Organize: Group by conversation, status, timeline\n3. Synthesize: LLM generates formatted digest\n\nRequires an LLM provider to be configured (EXTRACTION_ENABLED=true).\nReturns 503 if the LLM provider is unavailable and 3+ memories are found.\n\n * @param body - Request body\n */\n async generateMemoryDigest(body: { query: string; recent?: string; topics?: string[]; conversationIds?: string[]; format?: 'structured' | 'narrative' | 'timeline' | 'status-report'; maxSources?: number; includeMemoryIds?: boolean; verbatimRecent?: number }): Promise<HttpResponse<{ digest: string; metadata: DigestMetadata; sources: DigestSource[]; recentMemories?: Memory[]; keyFacts?: DigestKeyFact[]; entities?: DigestEntity[]; effectiveStateBreakdown?: EffectiveStateBreakdown }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/digest',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Generate memory digest (SSE streaming)\n * Same as POST /api/memories/digest but uses Server-Sent Events (SSE) to stream\nthe response. Sends `: heartbeat` comments every 10 seconds during processing\nto prevent gateway read-timeout (default 60s) from killing long-running digests.\n\n**Event sequence:**\n- `: heartbeat` — keep-alive comment, sent every 10s during processing\n- `event: result` / `data: <DigestResponse JSON>` — digest completed successfully\n- `event: error` / `data: {\"error\":\"...\",\"statusCode\":N}` — digest failed\n- `event: done` / `data: {}` — stream complete (sent after result)\n\n**Formats and pipeline:** identical to POST /api/memories/digest.\n\n * @param body - Request body\n */\n async streamMemoryDigest(body: { query: string; recent?: string; topics?: string[]; conversationIds?: string[]; format?: 'structured' | 'narrative' | 'timeline' | 'status-report'; maxSources?: number; includeMemoryIds?: boolean; verbatimRecent?: number }): Promise<HttpResponse<unknown>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/digest/stream',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Build a context briefing\n * Answers \"What should I know before working on X?\" by combining active work\ndetection, fact retrieval, gotcha detection, recent activity, and pattern\nmatching into a single call. Eliminates the 5+ round-trip pattern agents\nuse today.\n\n * @param body - Request body\n */\n async buildContext(body: { context: string; files?: string[]; recentHours?: number }): Promise<HttpResponse<{ activeWork: BuildContextActiveWork; relevantFacts: BuildContextFact[]; gotchas: BuildContextGotcha[]; recentActivity: BuildContextActivity[]; relatedPatterns: BuildContextPattern[]; meta: BuildContextMeta }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/build-context',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get version history for a named memory\n * Returns the full version chain for a named memory, ordered newest-first.\nWalks the SUPERSEDES chain from HEAD backwards.\n\n * @param name - Memory name (kebab-case, 2-64 chars)\n * @param limit - Optional cap on the number of most-recent versions to return.\nWhen omitted, the full version chain is returned.\n\n */\n async getNamedMemoryHistory(name: string, options?: { limit?: number }): Promise<HttpResponse<{ name: string; versions: { version: number; id: string; content: string; effectiveState?: 'current' | 'superseded' | 'contradicted' | 'duplicate'; createdAt: string }[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/named/{name}/history',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('name', {\n key: 'name',\n value: name,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get a memory by name\n * Retrieve the current HEAD version of a named memory by its user-assigned name.\nSupports the same detail levels as GET /api/memories/{id}.\n\n * @param name - Memory name (kebab-case, 2-64 chars)\n * @param detail - Detail level: minimal (raw memory), standard (default, + topics/entities/facts/relationships), full (+ conversation context and relationship previews)\n */\n async getMemoryByName(name: string, options?: { detail?: 'minimal' | 'standard' | 'full' }): Promise<HttpResponse<{ data: Memory }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/named/{name}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('name', {\n key: 'name',\n value: name,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.detail !== undefined) {\n request.addQueryParam('detail', {\n key: 'detail',\n value: options.detail,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Update a named memory (create new version)\n * Creates a new version of a named memory. The name pointer moves to the new version,\nand a SUPERSEDES relationship links the new version to the old one.\nThe old version's effectiveState becomes 'superseded'.\n\n * @param name - Memory name (kebab-case, 2-64 chars)\n * @param body - Request body\n */\n async updateNamedMemory(name: string, body: { content: string; expectedHeadId?: string; memoryType?: 'episodic' | 'semantic' | 'procedural'; context?: string; topics?: string[]; conversationId?: string; codeContext?: { product?: string; repo?: string; service?: string; component?: string; team?: string; role?: string; extra?: Record<string, unknown> }; supersedes?: string }): Promise<HttpResponse<{ data?: Memory; meta?: { previousVersionId?: string; version?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PUT',\n path: '/api/memories/named/{name}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('name', {\n key: 'name',\n value: name,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Atomically append a block to a named memory\n * Atomically appends a text block to a named memory, eliminating the\nread-modify-write clobber that concurrent full-content updates cause on\nshared named memories. The server reads the current head, concatenates\n`existing + separator + block`, and writes a new version under the\nNameLock with an internal compare-and-swap + bounded retry — so\nsimultaneous appends all survive and the client needs no retry logic.\nContent is decrypted, assembled, size-checked, and re-encrypted\nserver-side; plaintext is never returned to other callers.\n\n * @param name - Memory name (kebab-case, 2-64 chars)\n * @param body - Request body\n */\n async appendNamedMemory(name: string, body: { block: string; separator?: string; memoryType?: 'episodic' | 'semantic' | 'procedural'; context?: string; topics?: string[]; conversationId?: string; codeContext?: { product?: string; repo?: string; service?: string; component?: string; team?: string; role?: string; extra?: Record<string, unknown> } }): Promise<HttpResponse<{ data?: Memory; meta?: { previousVersionId?: string; version?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/named/{name}/append',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('name', {\n key: 'name',\n value: name,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Bulk delete multiple memories\n * Soft-delete multiple memories at once. Requires confirmDeletion=true.\nEach memory is verified to belong to the authenticated user.\nMaximum 100 IDs per request.\n\n * @param body - Request body\n */\n async bulkDeleteMemories(body: { ids: string[]; confirmDeletion: true }): Promise<HttpResponse<{ deleted: number; failed: number; errors: { id: string; error: string }[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/memories/bulk',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Repair orphaned effectiveState values\n * Finds memories with effectiveState='superseded' or 'contradicted' but no\ncorresponding incoming SUPERSEDES/CONTRADICTS edges, and resets them to 'current'.\nThis handles cases where edges were deleted but effectiveState wasn't recalculated.\n\n */\n async repairEffectiveState(): Promise<HttpResponse<{ repaired?: number; memories?: { memoryId?: string; previousState?: string }[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/repair-effective-state',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Record behavioral feedback on a search result\n * Record whether a search result was selected or ignored by the user.\nUsed to build behavioral signals for retrieval quality measurement.\n\n * @param body - Request body\n */\n async recordSearchResultFeedback(body: { memoryId: string; action: 'selected' | 'not_selected'; searchMethod?: string; searchSessionId?: string; resultPosition?: number }): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/search/feedback',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Find similar memories\n * Find memories that are semantically similar to the given memory.\n\nUses vector similarity search if embeddings are available for the memory.\nFalls back to topic-based similarity if embeddings are not available.\n\nThe `relationship` field in results indicates the method used:\n- `similar` - Found via vector/semantic similarity\n- `similar-by-topic` - Fallback using shared topics\n\n * @param id - The source memory ID\n * @param limit - Maximum number of similar memories to return\n */\n async getSimilarMemories(id: string, options?: { limit?: number }): Promise<HttpResponse<{ data?: RelatedMemoryResult[]; sourceMemory?: Memory }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/{id}/similar',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Find memories from same conversation\n * Find other memories that belong to the same conversation as the given memory.\n\nReturns memories sorted chronologically (oldest first) to show the conversation flow.\nIf the memory doesn't belong to a conversation, returns an empty array.\n\n * @param id - The source memory ID\n * @param limit - Maximum number of conversation memories to return\n */\n async getConversationMemories(id: string, options?: { limit?: number }): Promise<HttpResponse<{ data?: RelatedMemoryResult[]; sourceMemory?: Memory; conversationId?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/{id}/conversation-memories',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Find related memories by topics\n * Find memories that share topics with the given memory.\n\nThe score indicates the ratio of shared topics (1.0 = all topics match).\nResults are sorted by score (most related first), then by timestamp.\n\nIf the source memory has no topics, returns an empty array.\n\n * @param id - The source memory ID\n * @param limit - Maximum number of related memories to return\n */\n async getRelatedMemories(id: string, options?: { limit?: number }): Promise<HttpResponse<{ data?: { memory: { id: string; name?: string; version?: number; content: string; memoryType: 'episodic' | 'semantic' | 'procedural'; memoryTypeUserSet?: boolean; context?: string; topics?: string[]; timestamp?: string; eventTime?: string; validFrom?: string; validTo?: string; codeContext?: CodeContext; createdAt: string; updatedAt: string; confidenceScore?: number; confidenceBasis?: 'direct-statement' | 'repeated-mention' | 'single-mention' | 'hedged' | 'inference' | 'external-source' | 'contradicted'; effectiveState?: 'current' | 'superseded' | 'contradicted' | 'duplicate'; authority?: 'directive' | 'decision' | 'observation' | 'auto-captured'; extractionStatus?: 'pending' | 'queued' | 'running' | 'completed' | 'failed' | 'skipped'; extractionCompletedAt?: string; contentEmbeddingStatus?: 'pending' | 'queued' | 'running' | 'completed' | 'failed' | 'skipped'; summary?: string; summaryStatus?: 'pending' | 'queued' | 'running' | 'completed' | 'failed' | 'skipped'; questionsStatus?: 'pending' | 'queued' | 'running' | 'completed' | 'failed' | 'skipped'; summaryEmbeddingStatus?: 'pending' | 'queued' | 'running' | 'completed' | 'failed' | 'skipped'; questionsEmbeddingStatus?: 'pending' | 'queued' | 'running' | 'completed' | 'failed' | 'skipped'; graphStatus?: 'pending' | 'queued' | 'running' | 'completed' | 'failed' | 'skipped'; graphSkipReason?: 'global_disabled' | 'plan_excluded' | 'user_opt_out' | 'content_too_short' | 'legacy' | 'budget_exhausted'; extractionSkipReason?: 'global_disabled' | 'plan_excluded' | 'user_opt_out' | 'content_too_short' | 'legacy'; embeddingStatus?: 'queued' | 'running' | 'completed' | 'failed' | 'skipped'; embeddingOpenaiStatus?: 'queued' | 'running' | 'completed' | 'failed' | 'skipped'; embeddingTruncated?: boolean; embeddingOriginalTokens?: number; embeddingStrategy?: 'full' | 'head-truncated' | 'summary-selected' | 'question-selected'; extractedTopicCount?: number; extractedFactCount?: number; extractedEntityCount?: number; conflictCount?: number; visibility?: 'private' | 'shared_with_users' | 'shared_with_org' | 'admin_visible'; sharedWith?: string[]; userTopics?: string[]; extractedTopics?: string[]; entities?: { name: string; type: string; confidence?: number }[]; taskId?: string; outcome?: 'resolved' | 'unresolved'; attemptNumber?: number; distillStatus?: 'pending' | 'queued' | 'running' | 'completed' | 'failed' | 'skipped'; distillSkipReason?: 'global_disabled' | 'plan_excluded' | 'user_opt_out' | 'content_too_short' | 'legacy' | 'budget_exhausted'; distillError?: string; distillCompletedAt?: string }; score: number; relationship: string; sharedTopics?: string[] }[]; sourceMemory?: Memory }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/{id}/related',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get relationships for a memory\n * Retrieve all relationships for a memory.\n\n**Direction Options:**\n- **outgoing**: Relationships where this memory is the source\n- **incoming**: Relationships where this memory is the target\n- **both**: All relationships involving this memory\n\n * @param id - The memory ID\n * @param direction - Direction of relationships to retrieve\n */\n async getMemoryRelationships(id: string, options?: { direction?: 'outgoing' | 'incoming' | 'both' }): Promise<HttpResponse<{ data: MemoryRelationship[]; sourceMemoryId: string; direction: 'outgoing' | 'incoming' | 'both' }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/{id}/relationships',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.direction !== undefined) {\n request.addQueryParam('direction', {\n key: 'direction',\n value: options.direction,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create a relationship between memories\n * Create a relationship between the source memory and a target memory.\n\n**Relationship Types:**\n- **SUPERSEDES**: The source memory replaces/updates the target memory\n- **FOLLOWS**: The source memory follows chronologically from the target\n- **RESOLVES**: The source memory resolves an issue mentioned in the target\n- **CONTRADICTS**: The source memory contradicts the target memory\n- **REFERENCES**: The source memory references the target memory\n\nWhen creating SUPERSEDES or CONTRADICTS relationships, the target memory's\neffectiveState will be automatically updated.\n\n * @param id - The source memory ID\n * @param body - Request body\n */\n async createMemoryRelationship(id: string, body: { targetMemoryId: string; type: 'SUPERSEDES' | 'FOLLOWS' | 'RESOLVES' | 'CONTRADICTS' | 'REFERENCES' | 'DUPLICATES'; confidence?: number; reason?: string }): Promise<HttpResponse<{ data?: MemoryRelationship }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/{id}/relationships',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Delete a relationship\n * Delete a specific relationship from a memory\n * @param id - The source memory ID\n * @param relationshipId - The relationship ID to delete\n */\n async deleteMemoryRelationship(id: string, relationshipId: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/memories/{id}/relationships/{relationshipId}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n request.addPathParam('relationshipId', {\n key: 'relationshipId',\n value: relationshipId,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Get timeline context for a memory\n * Get the chronological context around a memory.\nReturns preceding and following memories ordered by event time.\nUseful for understanding the narrative flow.\n\n * @param id - The memory ID\n * @param before - Number of preceding memories to return\n * @param after - Number of following memories to return\n */\n async getMemoryTimeline(id: string, options?: { before?: number; after?: number }): Promise<HttpResponse<{ data?: { memory?: Memory; preceding?: Memory[]; following?: Memory[] } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/memories/{id}/timeline',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.before !== undefined) {\n request.addQueryParam('before', {\n key: 'before',\n value: options.before,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.after !== undefined) {\n request.addQueryParam('after', {\n key: 'after',\n value: options.after,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Detect potential relationships for a memory\n * Analyze a memory and detect potential relationships with other memories.\nUses semantic similarity and pattern detection to suggest relationships.\n\nSet `autoCreate: true` to automatically create high-confidence relationships.\n\n * @param id - The memory ID\n * @param body - Request body\n */\n async detectMemoryRelationships(id: string, options?: { body?: { autoCreate?: boolean; minConfidence?: number } }): Promise<HttpResponse<{ data?: { targetMemoryId?: string; type?: 'SUPERSEDES' | 'FOLLOWS' | 'RESOLVES' | 'CONTRADICTS' | 'REFERENCES'; confidence?: number; reason?: string }[]; autoCreated?: boolean }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/{id}/detect-relationships',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Generate LLM explanation for a memory relationship\n * Uses an LLM to explain why two memories have been flagged with a\nparticular relationship (e.g. contradiction). Returns a short\nplain-text explanation highlighting the specific differences.\n\n * @param id - The ID of the source memory\n * @param body - Request body\n */\n async explainMemoryRelationship(id: string, body: { otherMemoryId: string; relationshipType: string }): Promise<HttpResponse<{ data?: { explanation?: string } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/{id}/explain-relationship',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Export memories matching filters\n * Export memories matching an optional search query and filters to JSON or CSV format.\nWhen a query is provided, uses hybrid search. When no query is provided, lists memories\nwith optional topic and memoryType filters. Maximum 1000 results per export.\n\n * @param body - Request body\n */\n async exportMemories(body: { query?: string; topics?: string[]; memoryType?: 'episodic' | 'semantic' | 'procedural'; format?: 'json' | 'csv'; fields?: string[]; limit?: number }): Promise<HttpResponse<Record<string, unknown>[]>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/export',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Bulk update multiple memories\n * Update multiple memories at once. Supports updating topics and memoryType.\nEach memory is verified to belong to the authenticated user.\nMaximum 100 IDs per request.\n\n * @param body - Request body\n */\n async bulkUpdateMemories(body: { ids: string[]; updates: { topics?: string[]; memoryType?: 'episodic' | 'semantic' | 'procedural' } }): Promise<HttpResponse<{ updated: number; failed: number; errors: { id: string; error: string }[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/bulk-update',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Bulk add or remove topics from memories\n * Add and/or remove topics from multiple memories at once.\nAt least one of addTopics or removeTopics must be provided.\nEach memory is verified to belong to the authenticated user.\nMaximum 100 IDs per request.\n\n * @param body - Request body\n */\n async bulkTagMemories(body: { ids: string[]; addTopics?: string[]; removeTopics?: string[] }): Promise<HttpResponse<{ modified: number; failed: number; errors: { id: string; error: string }[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/memories/bulk-tag',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * InvitesService - Invite code validation and gate status endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n * Invite code validation and gate status endpoints\n */\nexport class InvitesService extends BaseService {\n\n /**\n * Check invite gate status\n * Check whether the invite gate is currently open or closed.\nWhen gated is true, new signups require a valid invite code.\nResponse is cached server-side (30-second TTL).\n\n */\n async getGateStatus(): Promise<HttpResponse<{ gated?: boolean }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/invites/gate-status',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Validate an invite code\n * Validate an invite code without redeeming it.\nRate limited to 10 requests per minute per IP to prevent enumeration.\nError messages are intentionally generic.\n\n * @param body - Request body\n */\n async validateInviteCode(body: { code: string; email: string }): Promise<HttpResponse<{ valid?: boolean; error?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/invites/validate',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * HealthService - Health check endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n * Health check endpoints\n */\nexport class HealthService extends BaseService {\n\n /**\n * Liveness probe endpoint\n * Returns 200 if the process is alive. Does not check external dependencies.\nUsed by Kubernetes liveness probes to determine if the container should be restarted.\nUnlike /health, this endpoint does not query the database — a database outage\nshould not cause the API process to be killed and restarted.\n\n */\n async livenessCheck(): Promise<HttpResponse<{ status?: 'alive'; uptime?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/livez',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * API readiness check endpoint\n * Returns the readiness status of the API service, based on database\nconnectivity. This endpoint is public and requires no authentication.\nReturns 200 when the database is reachable, 503 when it is not.\n\nv2.35: the database status is served from a CACHE refreshed by a\nbackground loop every HEALTH_DB_CHECK_INTERVAL_MS — this endpoint does\nNOT query the database per request, so probe latency is decoupled from\nquery latency (the 07-03 dual-pod ejection fix). If the cache is older\nthan HEALTH_DB_STALENESS_CEILING_MS (the background checker is wedged,\ne.g. a hung query), readiness reports NOT-READY (503) — a genuinely\ndead/hung database is never masked by a stale \"ok\".\n\n */\n async healthCheck(): Promise<HttpResponse<{ status: 'healthy' | 'degraded' | 'unhealthy'; timestamp: string; version: string; uptime: number; checks: Record<string, unknown> }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/health',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n}","/**\n * GraphragService - Graph-based retrieval augmented generation endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { GraphRAGQueryResponse } from '../models/types.js';\n\n/**\n * Graph-based retrieval augmented generation endpoints\n */\nexport class GraphragService extends BaseService {\n\n /**\n * Explain a GraphRAG query\n * Get explanation for a previously executed GraphRAG query result\n * @param queryId - The query ID to explain\n */\n async explainGraphRAGQuery(options?: { queryId?: string }): Promise<HttpResponse<{ data?: Record<string, unknown> }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/graphrag/explain',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.queryId !== undefined) {\n request.addQueryParam('queryId', {\n key: 'queryId',\n value: options.queryId,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Query communities\n * Query communities for relevant information using semantic search\n * @param body - Request body\n */\n async queryCommunities(body: { query: string; limit?: number }): Promise<HttpResponse<{ data?: Record<string, unknown>[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/graphrag/query-communities',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Execute a GraphRAG query\n * Execute a graph-based retrieval augmented generation query\n * @param body - Request body\n */\n async executeGraphRAGQuery(body: { query: string; maxDepth?: number; depth?: number; limit?: number; includeRelationships?: boolean }): Promise<HttpResponse<{ data?: GraphRAGQueryResponse }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/graphrag/query',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * FactsService - Fact extraction and management endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Fact } from '../models/types.js';\n\n/**\n * Fact extraction and management endpoints\n */\nexport class FactsService extends BaseService {\n\n /**\n * List facts\n * List all facts for the authenticated user\n * @param limit - Maximum number of facts to return\n * @param offset - Number of facts to skip\n * @param memoryId - Filter facts to a specific memory\n * @param sortBy - Field to sort facts by\n * @param order - Sort order\n */\n async listFacts(options?: { limit?: number; offset?: number; memoryId?: string; sortBy?: 'confidence' | 'createdAt'; order?: 'asc' | 'desc' }): Promise<HttpResponse<{ data?: Fact[]; count?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/facts',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n if (options?.memoryId !== undefined) {\n request.addQueryParam('memoryId', {\n key: 'memoryId',\n value: options.memoryId,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.sortBy !== undefined) {\n request.addQueryParam('sortBy', {\n key: 'sortBy',\n value: options.sortBy,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.order !== undefined) {\n request.addQueryParam('order', {\n key: 'order',\n value: options.order,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create fact\n * Create a new semantic fact\n * @param body - Request body\n */\n async createFact(body: { subject: string; predicate: string; object: string }): Promise<HttpResponse<{ data?: Fact }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/facts',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get fact by ID\n * Retrieve a specific fact by its ID\n * @param id - The fact ID\n */\n async getFactById(id: string): Promise<HttpResponse<{ data?: Fact }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/facts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Update fact\n * Update an existing fact completely\n * @param id - The fact ID\n * @param body - Request body\n */\n async updateFact(id: string, body: { subject?: string; predicate?: string; object?: string; confidence?: number }): Promise<HttpResponse<{ data?: Fact }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PUT',\n path: '/api/facts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Delete fact\n * Delete a fact by its ID\n * @param id - The fact ID\n */\n async deleteFact(id: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/facts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Search facts\n * Search semantic facts by query string\n * @param body - Request body\n */\n async searchFacts(body: { query: string; limit?: number }): Promise<HttpResponse<{ data?: Fact[]; count?: number; metadata?: { query?: string } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/facts/search',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * EntitiesService - Entity extraction and discovery endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { EntityNode, Memory } from '../models/types.js';\n\n/**\n * Entity extraction and discovery endpoints\n */\nexport class EntitiesService extends BaseService {\n\n /**\n * List entities\n * List all entities for the authenticated user, optionally filtered by type\n * @param query - Search entities by name (case-insensitive substring match)\n * @param type - Filter by entity type (e.g., PERSON, TECHNOLOGY)\n * @param limit - Maximum number of entities to return\n * @param offset - Number of entities to skip\n */\n async listEntities(options?: { query?: string; type?: string; limit?: number; offset?: number }): Promise<HttpResponse<{ data?: EntityNode[]; pagination?: { limit?: number; offset?: number; count?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/entities',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.query !== undefined) {\n request.addQueryParam('query', {\n key: 'query',\n value: options.query,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.type !== undefined) {\n request.addQueryParam('type', {\n key: 'type',\n value: options.type,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get entity by ID\n * Retrieve a specific entity by its ID\n * @param id - The entity ID\n */\n async getEntityById(id: string): Promise<HttpResponse<{ data?: EntityNode }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/entities/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Get memories mentioning entity\n * Get all memories that mention a specific entity\n * @param id - The entity ID\n * @param limit - Maximum number of memories to return\n * @param offset - Number of memories to skip\n */\n async getEntityMemories(id: string, options?: { limit?: number; offset?: number }): Promise<HttpResponse<{ data?: { memory?: Memory; confidence?: number }[]; pagination?: { limit?: number; offset?: number; count?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/entities/{id}/memories',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get graph health metrics\n * Returns knowledge graph health metrics including entity counts, fact counts, topic counts, and extraction coverage\n */\n async getGraphHealth(): Promise<HttpResponse<{ data?: { totalMemories?: number; totalEntities?: number; totalFacts?: number; totalTopics?: number; memoriesWithEntities?: number; entityCoverage?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/entities/health',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n}","/**\n * ConversationsService - Conversation tracking and analysis endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Conversation, Memory } from '../models/types.js';\n\n/**\n * Conversation tracking and analysis endpoints\n */\nexport class ConversationsService extends BaseService {\n\n /**\n * List conversations\n * List all conversations for the authenticated user with pagination\n * @param limit - Maximum number of conversations to return\n * @param offset - Number of conversations to skip\n * @param since - Return only conversations created after this timestamp (ISO 8601 format)\n * @param sortBy - Field to sort conversations by\n * @param order - Sort order\n * @param minMemories - Return only conversations with at least this many memories (filters out empty init conversations)\n */\n async listConversations(options?: { limit?: number; offset?: number; since?: string; sortBy?: 'lastActivityAt' | 'createdAt' | 'memoryCount'; order?: 'asc' | 'desc'; minMemories?: number }): Promise<HttpResponse<{ data?: Conversation[]; pagination?: { limit?: number; offset?: number; count?: number } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/conversations',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n if (options?.since !== undefined) {\n request.addQueryParam('since', {\n key: 'since',\n value: options.since,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.sortBy !== undefined) {\n request.addQueryParam('sortBy', {\n key: 'sortBy',\n value: options.sortBy,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.order !== undefined) {\n request.addQueryParam('order', {\n key: 'order',\n value: options.order,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.minMemories !== undefined) {\n request.addQueryParam('minMemories', {\n key: 'minMemories',\n value: options.minMemories,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create conversation\n * Create a new conversation for the authenticated user\n * @param body - Request body\n */\n async createConversation(body: { title: string; summary?: string }): Promise<HttpResponse<{ data?: Conversation }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/conversations',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get conversation summary\n * Retrieve a conversation summary by its ID\n * @param conversationId - The conversation ID\n */\n async getConversationSummary(conversationId: string): Promise<HttpResponse<{ data?: Conversation }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/conversations/{conversationId}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('conversationId', {\n key: 'conversationId',\n value: conversationId,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Delete conversation\n * Delete a conversation and soft-delete all associated memories\n * @param conversationId - The conversation ID\n */\n async deleteConversation(conversationId: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/conversations/{conversationId}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('conversationId', {\n key: 'conversationId',\n value: conversationId,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Get conversation timeline\n * Get all memories in a conversation in chronological order\n * @param conversationId - The conversation ID\n */\n async getConversationTimeline(conversationId: string): Promise<HttpResponse<{ data?: Memory[]; count?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/conversations/{conversationId}/timeline',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('conversationId', {\n key: 'conversationId',\n value: conversationId,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Search conversations\n * Search conversations by query string\n * @param body - Request body\n */\n async searchConversations(body: { query: string; limit?: number }): Promise<HttpResponse<{ data?: Conversation[]; count?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/conversations/search',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Find conversations by topic\n * Find conversations that contain a specific topic\n * @param body - Request body\n */\n async findConversationsByTopic(body: { topicId: string; limit?: number }): Promise<HttpResponse<{ data?: Conversation[]; count?: number; metadata?: { topicId?: string } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/conversations/by-topic',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * BillingService - Subscription billing and payment management endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { BillingOverview, CheckoutSessionResponse, PortalSessionResponse, Subscription, ListInvoicesResponse, ListPaymentMethodsResponse } from '../models/types.js';\n\n/**\n * Subscription billing and payment management endpoints\n */\nexport class BillingService extends BaseService {\n\n /**\n * Get billing overview\n * Get subscription, payment method, and upcoming invoice information\n */\n async getBillingOverview(): Promise<HttpResponse<{ data?: BillingOverview }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/billing/overview',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Create checkout session\n * Create a Stripe checkout session for subscription upgrade\n * @param body - Request body\n */\n async createCheckoutSession(body: { priceId?: string; successUrl: string; cancelUrl: string }): Promise<HttpResponse<{ data?: CheckoutSessionResponse }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/billing/checkout',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create billing portal session\n * Create a Stripe billing portal session for managing subscription\n * @param body - Request body\n */\n async createPortalSession(body: { returnUrl: string }): Promise<HttpResponse<{ data?: PortalSessionResponse }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/billing/portal',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get current subscription\n * Get the current subscription details for the authenticated user\n */\n async getSubscription(): Promise<HttpResponse<{ data?: Subscription }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/billing/subscription',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Cancel subscription\n * Cancel the current subscription at the end of the billing period\n * @param body - Request body\n */\n async cancelSubscription(options?: { body?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Subscription }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/billing/subscription/cancel',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Reactivate subscription\n * Reactivate a subscription that was scheduled for cancellation\n * @param body - Request body\n */\n async reactivateSubscription(options?: { body?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Subscription }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/billing/subscription/reactivate',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * List invoices\n * Get a list of invoices for the authenticated user\n * @param limit - Maximum number of invoices to return\n */\n async listInvoices(options?: { limit?: number }): Promise<HttpResponse<{ data?: ListInvoicesResponse }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/billing/invoices',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * List payment methods\n * Get a list of payment methods for the authenticated user\n */\n async listPaymentMethods(): Promise<HttpResponse<{ data?: ListPaymentMethodsResponse }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/billing/payment-methods',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Set default payment method\n * Set a payment method as the default for future payments\n * @param id - The payment method ID\n * @param body - Request body\n */\n async setDefaultPaymentMethod(id: string, options?: { body?: Record<string, unknown> }): Promise<HttpResponse<{ message?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/billing/payment-methods/{id}/default',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Delete payment method\n * Remove a payment method from the account\n * @param id - The payment method ID\n */\n async deletePaymentMethod(id: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/billing/payment-methods/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Stripe webhook endpoint\n * Receive and process Stripe webhook events\n * @param body - Request body\n */\n async stripeWebhook(body: Record<string, unknown>): Promise<HttpResponse<{ received?: boolean }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/billing/webhooks',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * ArtifactsService - Artifact storage and retrieval endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { Artifact } from '../models/types.js';\n\n/**\n * Artifact storage and retrieval endpoints\n */\nexport class ArtifactsService extends BaseService {\n\n /**\n * List artifacts\n * List all artifacts for the authenticated user with optional filters\n * @param limit - Maximum number of artifacts to return\n * @param offset - Number of artifacts to skip\n * @param memoryId - Filter by memory ID\n * @param conversationId - Filter by conversation ID\n * @param type - Filter by artifact type\n */\n async listArtifacts(options?: { limit?: number; offset?: number; memoryId?: string; conversationId?: string; type?: string }): Promise<HttpResponse<{ data?: Artifact[]; count?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/artifacts',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n if (options?.memoryId !== undefined) {\n request.addQueryParam('memoryId', {\n key: 'memoryId',\n value: options.memoryId,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.conversationId !== undefined) {\n request.addQueryParam('conversationId', {\n key: 'conversationId',\n value: options.conversationId,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.type !== undefined) {\n request.addQueryParam('type', {\n key: 'type',\n value: options.type,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create artifact\n * Create a new artifact for the authenticated user\n * @param body - Request body\n */\n async createArtifact(body: { content: string; type: string; name?: string; description?: string; memoryId?: string; conversationId?: string; metadata?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Artifact }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/artifacts',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get artifact by ID\n * Retrieve a specific artifact by its ID\n * @param id - The artifact ID\n */\n async getArtifactById(id: string): Promise<HttpResponse<{ data?: Artifact }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/artifacts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Delete artifact\n * Delete an artifact by its ID\n * @param id - The artifact ID\n */\n async deleteArtifact(id: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/artifacts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Update artifact\n * Update an existing artifact with partial data\n * @param id - The artifact ID\n * @param body - Request body\n */\n async updateArtifact(id: string, body: { content?: string; type?: string; name?: string; description?: string; metadata?: Record<string, unknown> }): Promise<HttpResponse<{ data?: Artifact }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PATCH',\n path: '/api/artifacts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * ApiKeysService - API key management endpoints API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { ApiKey } from '../models/types.js';\n\n/**\n * API key management endpoints\n */\nexport class ApiKeysService extends BaseService {\n\n /**\n * Get user information for current API key\n * Debug endpoint to retrieve user ID and authentication method from the current API key\n */\n async debugUser(): Promise<HttpResponse<{ data?: { userId?: string; authMethod?: string } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/apikeys/debug-user',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * List API keys\n * List all API keys for the authenticated user\n */\n async listApiKeys(): Promise<HttpResponse<{ data?: ApiKey[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/apikeys',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Create API key\n * Create a new API key for the authenticated user\n * @param body - Request body\n */\n async createApiKey(options?: { body?: { label?: string; expiresAt?: string; scopes?: 'read' | 'write' | 'admin'[] } }): Promise<HttpResponse<{ data?: { apiKey?: string; keyInfo?: ApiKey } }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/apikeys',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Delete API key\n * Delete (revoke) an API key by its ID\n * @param id - The API key ID\n */\n async deleteApiKey(id: string): Promise<HttpResponse<void>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/apikeys/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n}","/**\n * AlertsService - System alerts banner endpoints (customer portal) API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { SystemAlert } from '../models/types.js';\n\n/**\n * System alerts banner endpoints (customer portal)\n */\nexport class AlertsService extends BaseService {\n\n /**\n * List active system alerts for the current user\n * Returns all active, non-expired system alerts that target either\nall users or the authenticated user specifically. Used by the\ncustomer portal to render the system alerts banner.\n\n */\n async getActiveSystemAlerts(): Promise<HttpResponse<{ alerts?: SystemAlert[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/alerts/active',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n}","/**\n * AdminService - Admin management endpoints for invite codes and platform configuration API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n * Admin management endpoints for invite codes and platform configuration\n */\nexport class AdminService extends BaseService {\n\n /**\n * List invite codes\n * List all invite codes with optional status filter\n * @param status - Filter by status\n * @param limit - \n * @param offset - \n */\n async adminListInviteCodes(options?: { status?: 'active' | 'exhausted' | 'revoked' | 'expired'; limit?: number; offset?: number }): Promise<HttpResponse<{ invites?: { id?: string; code?: string; email?: string; label?: string; maxUses?: number; currentUses?: number; status?: string; expiresAt?: string; createdAt?: string }[]; total?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/admin/invites',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.status !== undefined) {\n request.addQueryParam('status', {\n key: 'status',\n value: options.status,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.limit !== undefined) {\n request.addQueryParam('limit', {\n key: 'limit',\n value: options.limit,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: true,\n isOffset: false,\n isCursor: false,\n });\n }\n if (options?.offset !== undefined) {\n request.addQueryParam('offset', {\n key: 'offset',\n value: options.offset,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: true,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create invite code\n * Create a new invite code for the gated preview\n * @param body - Request body\n */\n async adminCreateInviteCode(body: { email: string; label: string; maxUses?: number; code?: string; expiresAt?: string; metadata?: Record<string, unknown> }): Promise<HttpResponse<{ id?: string; code?: string; label?: string; maxUses?: number; currentUses?: number; status?: string; expiresAt?: string; createdAt?: string; shareUrl?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/admin/invites',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get invite system statistics\n * Aggregate statistics for the invite system\n */\n async adminGetInviteStats(): Promise<HttpResponse<{ totalCodes?: number; activeCodes?: number; totalRedemptions?: number; totalCapacity?: number; utilizationRate?: number; recentRedemptions?: { code?: string; email?: string; redeemedAt?: string }[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/admin/invites/stats',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Get invite code details\n * Get details for a single invite code including redemptions\n * @param code - The invite code\n */\n async adminGetInviteCode(code: string): Promise<HttpResponse<{ id?: string; code?: string; email?: string; label?: string; maxUses?: number; currentUses?: number; status?: string; redemptions?: { userId?: string; email?: string; redeemedAt?: string }[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/admin/invites/{code}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('code', {\n key: 'code',\n value: code,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Revoke an invite code\n * Revoke an invite code. Existing accounts created with this code are unaffected.\n * @param code - \n */\n async adminRevokeInviteCode(code: string): Promise<HttpResponse<{ code?: string; status?: string; message?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/admin/invites/{code}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('code', {\n key: 'code',\n value: code,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Get gate status with audit info\n * Get current invite gate state with audit information\n */\n async adminGetGateStatus(): Promise<HttpResponse<{ gated?: boolean; updatedAt?: string; updatedBy?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/admin/gate',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Toggle invite gate\n * Toggle the invite gate. When enabled (true), new signups require a valid invite code.\nWhen disabled (false), registration is open. Takes effect immediately.\n\n * @param body - Request body\n */\n async adminSetGateStatus(body: { enabled: boolean }): Promise<HttpResponse<{ gated?: boolean; updatedAt?: string; message?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/admin/gate',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Backfill per-stage memory pipeline status fields by inspecting actual graph state\n * @param body - Request body\n */\n async adminMigratePerStageStatus(options?: { body?: { userId?: string; limit?: number; offset?: number; dryRun?: boolean } }): Promise<HttpResponse<{ scanned: number; unchanged: number; updated: number; dryRun: boolean; batchOffset: number; totalCandidates: number; totalRemaining: number; startedAt: string; completedAt: string; durationMs: number; errors: { memoryId?: string; error?: string }[]; toUpdate?: Record<string, unknown>[]; toUpdateCount?: number }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/admin/migrate/per-stage-status',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.body !== undefined) {\n request.addBody(options?.body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * AdminAlertsService - Admin endpoints for managing system alerts API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\nimport type { SystemAlert } from '../models/types.js';\n\n/**\n * Admin endpoints for managing system alerts\n */\nexport class AdminAlertsService extends BaseService {\n\n /**\n * List system alerts\n * @param activeOnly - If true, return only active, non-expired alerts.\n */\n async adminListSystemAlerts(options?: { activeOnly?: boolean }): Promise<HttpResponse<{ alerts?: SystemAlert[] }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/admin/alerts',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (options?.activeOnly !== undefined) {\n request.addQueryParam('activeOnly', {\n key: 'activeOnly',\n value: options.activeOnly,\n explode: false,\n encode: true,\n style: 'form' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n }\n\n return this.client.call(request);\n }\n\n /**\n * Create a system alert\n * @param body - Request body\n */\n async adminCreateSystemAlert(body: { title: string; body: string; severity?: 'info' | 'warning' | 'critical'; active?: boolean; dismissible?: boolean; targetAllUsers?: boolean; targetUserIds?: string[]; expiresAt?: string }): Promise<HttpResponse<{ id: string; title: string; body: string; severity: 'info' | 'warning' | 'critical'; active?: boolean; dismissible?: boolean; targetAllUsers?: boolean; targetUserIds?: string[]; createdAt: string; expiresAt: string; createdBy: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/admin/alerts',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Get a system alert by id\n * @param id - System alert id\n */\n async adminGetSystemAlert(id: string): Promise<HttpResponse<{ id: string; title: string; body: string; severity: 'info' | 'warning' | 'critical'; active?: boolean; dismissible?: boolean; targetAllUsers?: boolean; targetUserIds?: string[]; createdAt: string; expiresAt: string; createdBy: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/admin/alerts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Delete a system alert\n * @param id - System alert id\n */\n async adminDeleteSystemAlert(id: string): Promise<HttpResponse<{ deleted?: boolean }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'DELETE',\n path: '/api/admin/alerts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n\n /**\n * Update a system alert\n * @param id - \n * @param body - Request body\n */\n async adminUpdateSystemAlert(id: string, body: { title?: string; body?: string; severity?: 'info' | 'warning' | 'critical'; active?: boolean; dismissible?: boolean; targetAllUsers?: boolean; targetUserIds?: string[]; expiresAt?: string }): Promise<HttpResponse<{ id: string; title: string; body: string; severity: 'info' | 'warning' | 'critical'; active?: boolean; dismissible?: boolean; targetAllUsers?: boolean; targetUserIds?: string[]; createdAt: string; expiresAt: string; createdBy: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'PATCH',\n path: '/api/admin/alerts/{id}',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n}","/**\n * AdminPipelineService - Admin Pipeline API operations.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\nimport { BaseService } from '../http/base-service.js';\nimport { Request } from '../http/request-builder.js';\nimport type { HttpResponse, ContentType, SerializationStyle } from '../http/http-types.js';\nimport * as schemas from '../models/schemas.js';\n\n/**\n */\nexport class AdminPipelineService extends BaseService {\n\n /**\n * Re-enqueue a single memory through one pipeline\n * Admin-only. Re-publishes the requested pipeline job for the given\nmemory and resets the corresponding per-stage status field(s) to\n`queued`. Used to recover individual memories from transient\nworker failures or to replay a stage after a code change.\n\n * @param id - Memory id (admin can target any tenant).\n * @param body - Request body\n */\n async adminRerunMemoryPipeline(id: string, body: { pipeline: 'summary-qna' | 'embeddings' | 'graph'; embeddingKind?: 'content' | 'summary' | 'question'; questionId?: string }): Promise<HttpResponse<{ memoryId?: string; pipeline?: string; status?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'POST',\n path: '/api/admin/memories/{id}/rerun',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n if (body !== undefined) {\n request.addBody(body);\n }\n\n return this.client.call(request);\n }\n\n /**\n * Per-queue depth + failure counts for the memory-creation pipelines\n * Returns BullMQ `getJobCounts()` for each known pipeline queue. Queues\nthat have not yet been provisioned (e.g. `summary-qna` while task 2.3\nis in flight) are reported with `{ status: \"not_configured\" }` rather\nthan throwing.\n\n */\n async adminGetPipelineHealth(): Promise<HttpResponse<{ queues?: Record<string, unknown>; timestamp?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/admin/pipeline/health',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n\n return this.client.call(request);\n }\n\n /**\n * Inspect per-stage pipeline status for a single memory\n * Debugging affordance — returns the six per-stage status fields and graphSkipReason.\n * @param id - \n */\n async adminGetMemoryPipelineStatus(id: string): Promise<HttpResponse<{ memoryId?: string; contentEmbeddingStatus?: string; summaryStatus?: string; questionsStatus?: string; summaryEmbeddingStatus?: string; questionsEmbeddingStatus?: string; graphStatus?: string; graphSkipReason?: string }>> {\n const request = new Request({\n baseUrl: this.config.baseUrl || 'http://localhost:3000',\n method: 'GET',\n path: '/api/admin/memories/{id}/pipeline-status',\n config: this.config,\n retry: {\n attempts: 3,\n delayMs: 150,\n maxDelayMs: 5000,\n jitterMs: 50,\n backoffFactor: 2,\n },\n });\n\n request.addPathParam('id', {\n key: 'id',\n value: id,\n explode: false,\n encode: true,\n style: 'simple' as any,\n isLimit: false,\n isOffset: false,\n isCursor: false,\n });\n\n return this.client.call(request);\n }\n}","/**\n * Zod schemas for API models.\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport { z } from 'zod';\n\nexport const error = z.object({\n /** Error message */\n error: z.string(),\n /** Optional constructor name of the underlying error. Present on selected 500 responses for client diagnostics; absent on most error responses. */\n errorClass: z.string().optional(),\n});\n\nexport const pagination = z.object({\n /** Maximum number of items per page */\n limit: z.number().min(1),\n /** Number of items to skip */\n offset: z.number().min(0),\n /** Total number of items */\n count: z.number().min(0),\n});\n\n/**\n * Environment context for memory scoping — product, service, team, component, role.\n */\nexport const codeContext = z.object({\n /** Product name (e.g. 'memnexus', 'spearmint') */\n product: z.string().max(200).optional(),\n /** Repository name, if different from product */\n repo: z.string().max(200).optional(),\n /** Service or package name (e.g. 'core-api', 'mcp-server', 'cli') */\n service: z.string().max(200).optional(),\n /** Subsystem or component (e.g. 'extraction-pipeline', 'search', 'billing') */\n component: z.string().max(200).optional(),\n /** Team that produced this knowledge (e.g. 'extraction', 'mcp', 'platform') */\n team: z.string().max(200).optional(),\n /** Agent role or persona (e.g. 'team-lead', 'implementer', 'reviewer') */\n role: z.string().max(200).optional(),\n /** Additional project-specific scope tags */\n extra: z.object({\n\n}).catchall(z.string().max(500)).optional(),\n}).nullable();\n\nexport const memory = z.lazy(() => z.object({\n /** Unique memory identifier */\n id: z.string(),\n /** Optional human-readable name for deterministic retrieval. Only the HEAD version carries the name. */\n name: z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/).optional(),\n /** Version number for named memories (1 for first version, increments on update) */\n version: z.number().min(1).optional(),\n /** Memory content */\n content: z.string(),\n /** Type of memory */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']),\n /** True when memoryType was explicitly supplied by the caller on create/update, rather than defaulted from role/name. The async graph-extraction classifier reads this to skip auto-classification of user-set types. Absent on memories written before v3.84. */\n memoryTypeUserSet: z.boolean().optional(),\n /** Context or domain of the memory */\n context: z.string().optional(),\n /** Associated topics */\n topics: z.array(z.string()).optional(),\n /** System ingestion timestamp (when the system learned about this) */\n timestamp: z.string().datetime().optional(),\n /** Event time (when the event actually occurred in reality) */\n eventTime: z.string().datetime().optional(),\n /** Validity start time (when this fact becomes valid) */\n validFrom: z.string().datetime().optional(),\n /** Validity end time (when this fact expires, null means never expires) */\n validTo: z.string().datetime().nullable().optional(),\n /** Environment context for memory scoping — product, service, team, component, role. */\n codeContext: codeContext.optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n /** Confidence score (0-1) for this memory's accuracy */\n confidenceScore: z.number().min(0).max(1).optional(),\n /** Basis for the confidence score */\n confidenceBasis: z.enum(['direct-statement', 'repeated-mention', 'single-mention', 'hedged', 'inference', 'external-source', 'contradicted']).optional(),\n /** Effective state of the memory in the narrative */\n effectiveState: z.enum(['current', 'superseded', 'contradicted', 'duplicate']).optional(),\n /** Authority level: directive (mandates) > decision (choices with reasoning) > observation (learned during work) > auto-captured (generated content) */\n authority: z.enum(['directive', 'decision', 'observation', 'auto-captured']).optional(),\n /** Legacy aggregate extraction status. DERIVED on read from the six per-stage statuses (contentEmbeddingStatus, summaryStatus, questionsStatus, summaryEmbeddingStatus, questionsEmbeddingStatus, graphStatus). Preserved for SDK compatibility per PRD memory-creation-pipeline-v2 §5 Q7. */\n extractionStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** When extraction was completed */\n extractionCompletedAt: z.string().datetime().optional(),\n /** Pipeline 2 content-embedding stage status. Tracks the queue lifecycle for writing m.embedding (primary content embedding). */\n contentEmbeddingStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** AI-generated summary of the memory content */\n summary: z.string().optional(),\n /** Pipeline 1 summary stage status. Tracks generation of m.summary by the summary-qna LLM call. */\n summaryStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Pipeline 1 questions stage status. Tracks generation of anticipated Question nodes by the summary-qna LLM call. */\n questionsStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Pipeline 2 summary-embedding stage status. Tracks the queue lifecycle for writing m.summaryEmbedding (depends on summaryStatus=completed). */\n summaryEmbeddingStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Pipeline 2 question-embedding stage status. Tracks the queue lifecycle for writing Question.embedding for each anticipated question (depends on questionsStatus=completed). */\n questionsEmbeddingStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Pipeline 3 graph-extraction stage status. Tracks generation of entities, facts, topics, authority, and memory-type. Replaces the role formerly played by the monolithic extractionStatus writer. */\n graphStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** When graphStatus=skipped, records why graph extraction was skipped. Mirrors the legacy extractionSkipReason field but scoped to the graph pipeline. */\n graphSkipReason: z.enum(['global_disabled', 'plan_excluded', 'user_opt_out', 'content_too_short', 'legacy', 'budget_exhausted']).nullable().optional(),\n /** When extractionStatus=skipped, records why extraction was skipped. global_disabled = GRAPH_EXTRACTION_ENABLED=false kill switch. */\n extractionSkipReason: z.enum(['global_disabled', 'plan_excluded', 'user_opt_out', 'content_too_short', 'legacy']).optional(),\n /** Status of primary (Ollama) embedding generation via durable queue */\n embeddingStatus: z.enum(['queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Status of secondary (OpenAI) dual-write embedding generation via durable queue */\n embeddingOpenaiStatus: z.enum(['queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** True if the primary content embedding used a head-truncated input (model context exceeded). */\n embeddingTruncated: z.boolean().optional(),\n /** Token count of the original content (pre-truncation, cl100k proxy). Useful for identifying under-indexed memories. */\n embeddingOriginalTokens: z.number().min(0).optional(),\n /** Smart-field strategy used to produce the primary content embedding. */\n embeddingStrategy: z.enum(['full', 'head-truncated', 'summary-selected', 'question-selected']).optional(),\n /** Number of topics extracted from content */\n extractedTopicCount: z.number().min(0).optional(),\n /** Number of facts extracted from content */\n extractedFactCount: z.number().min(0).optional(),\n /** Number of entities extracted from content */\n extractedEntityCount: z.number().min(0).optional(),\n /** Number of memories this memory contradicts via outgoing CONTRADICTS relationships */\n conflictCount: z.number().min(0).optional(),\n /** Memory visibility level. Null/undefined treated as 'private' for backward compatibility. 'admin_visible' is computed at retrieval time when an org owner/admin queries another member's post-join memory and is never accepted on writes. */\n visibility: z.enum(['private', 'shared_with_users', 'shared_with_org', 'admin_visible']).optional(),\n /** User IDs this memory is shared with (only populated when visibility = 'shared_with_users') */\n sharedWith: z.array(z.string()).optional(),\n /** Topics explicitly provided by the user */\n userTopics: z.array(z.string()).optional(),\n /** Topics automatically extracted from content */\n extractedTopics: z.array(z.string()).optional(),\n /** Entities extracted from memory content */\n entities: z.array(z.object({\n /** Entity name */\n name: z.string(),\n /** Entity type */\n type: z.string(),\n /** Extraction confidence */\n confidence: z.number().min(0).max(1).optional(),\n})).optional(),\n /** Task identifier for agentic loop memories */\n taskId: z.string().nullable().optional(),\n /** Task outcome status */\n outcome: z.enum(['resolved', 'unresolved']).nullable().optional(),\n /** Attempt number within the task */\n attemptNumber: z.number().nullable().optional(),\n /** Distillation pipeline stage status */\n distillStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).nullable().optional(),\n /** Reason distillation was skipped */\n distillSkipReason: z.enum(['global_disabled', 'plan_excluded', 'user_opt_out', 'content_too_short', 'legacy', 'budget_exhausted']).nullable().optional(),\n /** Error message if distillation failed */\n distillError: z.string().nullable().optional(),\n /** ISO 8601 timestamp when distillation completed */\n distillCompletedAt: z.string().nullable().optional(),\n}));\n\n/**\n * Privileged-only short-circuit for Pipeline 1/2 — admin/internal/test callers may pre-supply summary, questions, and/or embeddings to bypass LLM and embedding work at create time. Silently ignored for non-privileged callers.\n */\nexport const precomputedMemoryFields = z.object({\n /** Pre-computed memory summary. When supplied, summary-qna LLM call is skipped and m.summary is set inline. */\n summary: z.string().max(2000).optional(),\n /** Pre-computed anticipated questions. When supplied, the questions stage of the summary-qna LLM call is skipped and Question nodes are created inline. Hard-capped at 20. */\n questions: z.array(z.string().max(500)).max(20).optional(),\n /** Pre-computed embeddings keyed by Pipeline 2 job kind (content / summary / question). */\n embeddings: z.object({\n /** Pre-computed content embedding (m.embedding). Bypasses the content-embedding queue. */\n content: z.array(z.number()).optional(),\n /** Pre-computed summary embedding (m.summaryEmbedding). Bypasses the summary-embedding queue. */\n summary: z.array(z.number()).optional(),\n /** Pre-computed per-question embeddings — must have the same length as `questions` when both are supplied. */\n questions: z.array(z.array(z.number())).optional(),\n}).optional(),\n});\n\nexport const createMemoryRequest = z.lazy(() => z.object({\n /** Conversation ID - use \"NEW\" to always create a new conversation, provide an existing ID to append to it, or omit to auto-assign via claudeSessionId session grouping. */\n conversationId: z.string().min(1).optional(),\n /** Agent session ID (e.g. MCP session ID, Claude Code session UUID). When conversationId is omitted, reuses or creates a conversation for this session (automatic grouping). Ignored when conversationId is explicitly provided. Works with any MCP client (Claude, Copilot, Cursor, etc.). */\n claudeSessionId: z.string().max(200).optional(),\n /** Optional human-readable name for deterministic retrieval. Must be unique per user. */\n name: z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/).optional(),\n /** Memory content */\n content: z.string().min(1).max(50000),\n /** Type of memory */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']).optional(),\n /** Role (MCP protocol compatibility) */\n role: z.enum(['user', 'assistant', 'system']).optional(),\n /** Context or domain */\n context: z.string().max(200).optional(),\n /** Associated topics */\n topics: z.array(z.string().max(100)).max(50).optional(),\n /** Event time (when the event actually occurred in reality, ISO 8601 format) */\n eventTime: z.string().datetime().optional(),\n /** Validity start time (when this fact becomes valid, ISO 8601 format) */\n validFrom: z.string().datetime().optional(),\n /** Validity end time (when this fact expires, ISO 8601 format, omit for never expires) */\n validTo: z.string().datetime().optional(),\n codeContext: z.object({\n /** Product name (e.g. 'memnexus', 'spearmint') */\n product: z.string().max(200).optional(),\n /** Repository name, if different from product */\n repo: z.string().max(200).optional(),\n /** Service or package name (e.g. 'core-api', 'mcp-server', 'cli') */\n service: z.string().max(200).optional(),\n /** Subsystem or component (e.g. 'extraction-pipeline', 'search', 'billing') */\n component: z.string().max(200).optional(),\n /** Team that produced this knowledge (e.g. 'extraction', 'mcp', 'platform') */\n team: z.string().max(200).optional(),\n /** Agent role or persona (e.g. 'team-lead', 'implementer', 'reviewer') */\n role: z.string().max(200).optional(),\n /** Additional project-specific scope tags */\n extra: z.object({\n\n}).catchall(z.string().max(500)).optional(),\n}).optional(),\n /** Privileged-only short-circuit for Pipeline 1/2 — admin/internal/test callers may pre-supply summary, questions, and/or embeddings to bypass LLM and embedding work at create time. Silently ignored for non-privileged callers. */\n precomputed: precomputedMemoryFields.optional(),\n /** Task identifier for grouping memories across agentic loop attempts */\n taskId: z.string().max(200).optional(),\n /** Task outcome status for this memory */\n outcome: z.enum(['resolved', 'unresolved']).optional(),\n /** Request distillation of this memory (Pro/Enterprise only) */\n distill: z.boolean().optional(),\n}));\n\nexport const updateMemoryRequest = z.object({\n /** Updated memory content */\n content: z.string().min(1).max(50000).optional(),\n /** Assign or remove a name. Set to a valid name to assign, empty string to remove. */\n name: z.union([z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/), z.enum([''])]).optional(),\n /** Updated memory type */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']).optional(),\n /** Updated context or domain */\n context: z.string().max(200).optional(),\n /** Updated topics */\n topics: z.array(z.string().max(100)).max(50).optional(),\n /** Task outcome status. Set to null to clear. */\n outcome: z.enum(['resolved', 'unresolved']).nullable().optional(),\n});\n\nexport const createMemoryResponseMeta = z.object({\n /** Conversation ID (actual ID if \"NEW\" was provided) */\n conversationId: z.string(),\n /** Auto-assigned session ID based on 90-minute gap detection */\n sessionId: z.string(),\n /** Whether a new session was created (true) or existing session was reused (false) */\n sessionCreated: z.boolean(),\n /** Whether a new conversation was created (true if conversationId was \"NEW\") */\n conversationCreated: z.boolean(),\n});\n\n/**\n * Response from creating a memory, includes the memory and session/conversation metadata\n */\nexport const createMemoryResponse = z.lazy(() => z.object({\n data: memory,\n meta: createMemoryResponseMeta,\n}));\n\nexport const relatedMemoryResult = z.lazy(() => z.object({\n memory: z.object({\n /** Unique memory identifier */\n id: z.string(),\n /** Optional human-readable name for deterministic retrieval. Only the HEAD version carries the name. */\n name: z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/).optional(),\n /** Version number for named memories (1 for first version, increments on update) */\n version: z.number().min(1).optional(),\n /** Memory content */\n content: z.string(),\n /** Type of memory */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']),\n /** True when memoryType was explicitly supplied by the caller on create/update, rather than defaulted from role/name. The async graph-extraction classifier reads this to skip auto-classification of user-set types. Absent on memories written before v3.84. */\n memoryTypeUserSet: z.boolean().optional(),\n /** Context or domain of the memory */\n context: z.string().optional(),\n /** Associated topics */\n topics: z.array(z.string()).optional(),\n /** System ingestion timestamp (when the system learned about this) */\n timestamp: z.string().datetime().optional(),\n /** Event time (when the event actually occurred in reality) */\n eventTime: z.string().datetime().optional(),\n /** Validity start time (when this fact becomes valid) */\n validFrom: z.string().datetime().optional(),\n /** Validity end time (when this fact expires, null means never expires) */\n validTo: z.string().datetime().nullable().optional(),\n /** Environment context for memory scoping — product, service, team, component, role. */\n codeContext: codeContext.optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n /** Confidence score (0-1) for this memory's accuracy */\n confidenceScore: z.number().min(0).max(1).optional(),\n /** Basis for the confidence score */\n confidenceBasis: z.enum(['direct-statement', 'repeated-mention', 'single-mention', 'hedged', 'inference', 'external-source', 'contradicted']).optional(),\n /** Effective state of the memory in the narrative */\n effectiveState: z.enum(['current', 'superseded', 'contradicted', 'duplicate']).optional(),\n /** Authority level: directive (mandates) > decision (choices with reasoning) > observation (learned during work) > auto-captured (generated content) */\n authority: z.enum(['directive', 'decision', 'observation', 'auto-captured']).optional(),\n /** Legacy aggregate extraction status. DERIVED on read from the six per-stage statuses (contentEmbeddingStatus, summaryStatus, questionsStatus, summaryEmbeddingStatus, questionsEmbeddingStatus, graphStatus). Preserved for SDK compatibility per PRD memory-creation-pipeline-v2 §5 Q7. */\n extractionStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** When extraction was completed */\n extractionCompletedAt: z.string().datetime().optional(),\n /** Pipeline 2 content-embedding stage status. Tracks the queue lifecycle for writing m.embedding (primary content embedding). */\n contentEmbeddingStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** AI-generated summary of the memory content */\n summary: z.string().optional(),\n /** Pipeline 1 summary stage status. Tracks generation of m.summary by the summary-qna LLM call. */\n summaryStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Pipeline 1 questions stage status. Tracks generation of anticipated Question nodes by the summary-qna LLM call. */\n questionsStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Pipeline 2 summary-embedding stage status. Tracks the queue lifecycle for writing m.summaryEmbedding (depends on summaryStatus=completed). */\n summaryEmbeddingStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Pipeline 2 question-embedding stage status. Tracks the queue lifecycle for writing Question.embedding for each anticipated question (depends on questionsStatus=completed). */\n questionsEmbeddingStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Pipeline 3 graph-extraction stage status. Tracks generation of entities, facts, topics, authority, and memory-type. Replaces the role formerly played by the monolithic extractionStatus writer. */\n graphStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** When graphStatus=skipped, records why graph extraction was skipped. Mirrors the legacy extractionSkipReason field but scoped to the graph pipeline. */\n graphSkipReason: z.enum(['global_disabled', 'plan_excluded', 'user_opt_out', 'content_too_short', 'legacy', 'budget_exhausted']).nullable().optional(),\n /** When extractionStatus=skipped, records why extraction was skipped. global_disabled = GRAPH_EXTRACTION_ENABLED=false kill switch. */\n extractionSkipReason: z.enum(['global_disabled', 'plan_excluded', 'user_opt_out', 'content_too_short', 'legacy']).optional(),\n /** Status of primary (Ollama) embedding generation via durable queue */\n embeddingStatus: z.enum(['queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Status of secondary (OpenAI) dual-write embedding generation via durable queue */\n embeddingOpenaiStatus: z.enum(['queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** True if the primary content embedding used a head-truncated input (model context exceeded). */\n embeddingTruncated: z.boolean().optional(),\n /** Token count of the original content (pre-truncation, cl100k proxy). Useful for identifying under-indexed memories. */\n embeddingOriginalTokens: z.number().min(0).optional(),\n /** Smart-field strategy used to produce the primary content embedding. */\n embeddingStrategy: z.enum(['full', 'head-truncated', 'summary-selected', 'question-selected']).optional(),\n /** Number of topics extracted from content */\n extractedTopicCount: z.number().min(0).optional(),\n /** Number of facts extracted from content */\n extractedFactCount: z.number().min(0).optional(),\n /** Number of entities extracted from content */\n extractedEntityCount: z.number().min(0).optional(),\n /** Number of memories this memory contradicts via outgoing CONTRADICTS relationships */\n conflictCount: z.number().min(0).optional(),\n /** Memory visibility level. Null/undefined treated as 'private' for backward compatibility. 'admin_visible' is computed at retrieval time when an org owner/admin queries another member's post-join memory and is never accepted on writes. */\n visibility: z.enum(['private', 'shared_with_users', 'shared_with_org', 'admin_visible']).optional(),\n /** User IDs this memory is shared with (only populated when visibility = 'shared_with_users') */\n sharedWith: z.array(z.string()).optional(),\n /** Topics explicitly provided by the user */\n userTopics: z.array(z.string()).optional(),\n /** Topics automatically extracted from content */\n extractedTopics: z.array(z.string()).optional(),\n /** Entities extracted from memory content */\n entities: z.array(z.object({\n /** Entity name */\n name: z.string(),\n /** Entity type */\n type: z.string(),\n /** Extraction confidence */\n confidence: z.number().min(0).max(1).optional(),\n})).optional(),\n /** Task identifier for agentic loop memories */\n taskId: z.string().nullable().optional(),\n /** Task outcome status */\n outcome: z.enum(['resolved', 'unresolved']).nullable().optional(),\n /** Attempt number within the task */\n attemptNumber: z.number().nullable().optional(),\n /** Distillation pipeline stage status */\n distillStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).nullable().optional(),\n /** Reason distillation was skipped */\n distillSkipReason: z.enum(['global_disabled', 'plan_excluded', 'user_opt_out', 'content_too_short', 'legacy', 'budget_exhausted']).nullable().optional(),\n /** Error message if distillation failed */\n distillError: z.string().nullable().optional(),\n /** ISO 8601 timestamp when distillation completed */\n distillCompletedAt: z.string().nullable().optional(),\n}),\n /** Relevance score (0-1). For similar: semantic similarity. For related: topic overlap ratio. For conversation: position score. */\n score: z.number().min(0).max(1),\n /** Type of relationship: similar, similar-by-topic, conversation, or topic */\n relationship: z.string(),\n /** Topics shared with the source memory (only for topic relationship) */\n sharedTopics: z.array(z.string()).optional(),\n}));\n\n/**\n * Response from getting a memory by ID\n */\nexport const getMemoryResponse = z.lazy(() => z.object({\n data: memory,\n}));\n\nexport const updateNamedMemoryRequest = z.object({\n /** New content for the named memory version */\n content: z.string().min(1).max(50000),\n /** Optimistic concurrency (compare-and-swap): if provided, the update only succeeds when the current head version's id matches this value. On mismatch the server returns 409 Conflict with the current head id, so the caller can re-read, re-merge, and retry. When omitted, the update is an unconditional replace (backward compatible). */\n expectedHeadId: z.string().uuid().optional(),\n /** Type of memory (defaults to previous version's type) */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']).optional(),\n /** Context or domain */\n context: z.string().max(200).optional(),\n /** Associated topics */\n topics: z.array(z.string().max(100)).max(50).optional(),\n /** Conversation to group this version with (overrides previous version's conversation) */\n conversationId: z.string().max(200).optional(),\n codeContext: z.object({\n /** Product name (e.g. 'memnexus', 'spearmint') */\n product: z.string().max(200).optional(),\n /** Repository name, if different from product */\n repo: z.string().max(200).optional(),\n /** Service or package name (e.g. 'core-api', 'mcp-server', 'cli') */\n service: z.string().max(200).optional(),\n /** Subsystem or component (e.g. 'extraction-pipeline', 'search', 'billing') */\n component: z.string().max(200).optional(),\n /** Team that produced this knowledge (e.g. 'extraction', 'mcp', 'platform') */\n team: z.string().max(200).optional(),\n /** Agent role or persona (e.g. 'team-lead', 'implementer', 'reviewer') */\n role: z.string().max(200).optional(),\n /** Additional project-specific scope tags */\n extra: z.object({\n\n}).catchall(z.string().max(500)).optional(),\n}).optional(),\n /** Additional memory ID that this version supersedes (beyond the implicit version chain) */\n supersedes: z.string().uuid().optional(),\n});\n\nexport const appendNamedMemoryRequest = z.object({\n /** Text block to append to the named memory's current content. The total (existing + separator + block) must not exceed the maximum content length or the request is rejected with 413. */\n block: z.string().min(1).max(50000),\n /** Separator inserted between the existing content and the appended block. Defaults to a blank line (\"\\n\\n\"). */\n separator: z.string().max(100).optional(),\n /** Type of memory (defaults to previous version's type) */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']).optional(),\n /** Context or domain */\n context: z.string().max(200).optional(),\n /** Associated topics */\n topics: z.array(z.string().max(100)).max(50).optional(),\n /** Conversation to group this version with (overrides previous version's conversation) */\n conversationId: z.string().max(200).optional(),\n codeContext: z.object({\n /** Product name (e.g. 'memnexus', 'spearmint') */\n product: z.string().max(200).optional(),\n /** Repository name, if different from product */\n repo: z.string().max(200).optional(),\n /** Service or package name (e.g. 'core-api', 'mcp-server', 'cli') */\n service: z.string().max(200).optional(),\n /** Subsystem or component (e.g. 'extraction-pipeline', 'search', 'billing') */\n component: z.string().max(200).optional(),\n /** Team that produced this knowledge (e.g. 'extraction', 'mcp', 'platform') */\n team: z.string().max(200).optional(),\n /** Agent role or persona (e.g. 'team-lead', 'implementer', 'reviewer') */\n role: z.string().max(200).optional(),\n /** Additional project-specific scope tags */\n extra: z.object({\n\n}).catchall(z.string().max(500)).optional(),\n}).optional(),\n});\n\nexport const namedMemoryHistoryResponse = z.object({\n /** Human-readable name for deterministic retrieval (kebab-case, 2-64 chars) */\n name: z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/),\n versions: z.array(z.object({\n /** Version number */\n version: z.number().min(1),\n /** Memory ID for this version */\n id: z.string(),\n /** Memory content at this version */\n content: z.string(),\n /** Effective state — HEAD version is 'current', older versions are 'superseded' */\n effectiveState: z.enum(['current', 'superseded', 'contradicted', 'duplicate']).optional(),\n /** When this version was created */\n createdAt: z.string().datetime(),\n})),\n});\n\nexport const batchGetMemoriesRequest = z.object({\n /** Array of memory IDs to retrieve. Non-existent or malformed IDs are returned in the 'missing' array rather than failing the request. */\n ids: z.array(z.string().min(1).max(200)).min(1).max(100),\n /** Detail level for each memory. 'minimal' returns raw memory only (default, backward compatible). 'standard' adds topics, entities, facts, and relationships. 'full' additionally adds conversation context and relationship target previews. */\n detail: z.enum(['minimal', 'standard', 'full']).optional(),\n});\n\nexport const batchGetMemoriesMeta = z.object({\n /** Number of IDs requested */\n requested: z.number(),\n /** Number of memories found */\n found: z.number(),\n /** IDs that were not found */\n missing: z.array(z.string()),\n});\n\n/**\n * Response from batch memory retrieval\n */\nexport const batchGetMemoriesResponse = z.lazy(() => z.object({\n data: z.array(memory),\n meta: batchGetMemoriesMeta,\n}));\n\nexport const graphRAGQueryRequest = z.object({\n /** GraphRAG query string */\n query: z.string().min(1),\n /** Maximum graph traversal depth (alias: depth) */\n maxDepth: z.number().min(1).max(5).optional(),\n /** Graph traversal depth (deprecated, use maxDepth) */\n depth: z.number().min(1).max(5).optional(),\n /** Maximum number of results to return */\n limit: z.number().min(1).max(100).optional(),\n /** Include relationship data in response */\n includeRelationships: z.boolean().optional(),\n});\n\nexport const graphRAGQueryResponse = z.lazy(() => z.object({\n /** Unique identifier for this query execution */\n queryId: z.string(),\n /** Array of query results with graph context */\n results: z.array(z.object({\n memory: memory,\n /** Relevance score from full-text search */\n score: z.number(),\n /** Topics associated with this memory */\n topics: z.array(z.object({\n\n}).catchall(z.unknown().nullable())),\n /** Entities mentioned in this memory */\n entities: z.array(z.object({\n\n}).catchall(z.unknown().nullable())),\n /** Related memories through shared topics */\n relatedMemories: z.array(z.object({\n\n}).catchall(z.unknown().nullable())),\n})),\n /** Query execution metadata */\n metadata: z.object({\n /** Original query string */\n query: z.string(),\n /** Graph traversal depth used */\n depth: z.number(),\n /** Maximum number of results returned */\n limit: z.number(),\n /** Query execution timestamp */\n timestamp: z.string().datetime(),\n}),\n}));\n\nexport const conversation = z.object({\n /** Unique conversation identifier */\n id: z.string(),\n /** Conversation title */\n title: z.string(),\n /** Conversation summary */\n summary: z.string().nullable(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n});\n\nexport const createConversationRequest = z.object({\n /** Conversation title */\n title: z.string().min(1),\n /** Optional conversation summary */\n summary: z.string().optional(),\n});\n\nexport const apiKey = z.object({\n /** Unique API key identifier */\n id: z.string(),\n /** Human-readable label for the API key */\n label: z.string(),\n /** API key prefix for identification */\n prefix: z.string(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Expiration timestamp (null if never expires) */\n expiresAt: z.string().datetime().nullable(),\n /** Last usage timestamp (null if never used) */\n lastUsedAt: z.string().datetime().nullable(),\n});\n\nexport const topic = z.object({\n /** Topic name */\n name: z.string(),\n /** Number of memories associated with this topic */\n count: z.number().min(0),\n});\n\nexport const pattern = z.object({\n /** Unique pattern identifier */\n id: z.string(),\n /** Pattern type */\n type: z.string(),\n /** Pattern description */\n description: z.string(),\n /** Confidence score (0-1) */\n confidence: z.number().min(0).max(1),\n});\n\nexport const compileInstructionsRequest = z.object({\n conversationContext: z.array(z.string().max(100)).max(20).optional(),\n currentQuery: z.string().max(2000).optional(),\n tokenBudget: z.number().min(50).max(2000).optional(),\n minConfidence: z.number().min(0).max(1).optional(),\n maxInstructions: z.number().min(1).max(10).optional(),\n});\n\nexport const compileInstructionsResponse = z.object({\n instructions: z.array(z.object({\n patternId: z.string(),\n instruction: z.string().max(500),\n confidence: z.number(),\n priority: z.number(),\n source: z.enum(['learned', 'explicit', 'manual']),\n patternType: z.string(),\n activatedBy: z.array(z.string()),\n recommendationId: z.string().optional(),\n triggerContext: z.string().optional(),\n evidenceSummary: z.string().optional(),\n firstSurfacing: z.boolean().optional(),\n})),\n summary: z.string().max(1000),\n tokenCount: z.number(),\n patternsEvaluated: z.number(),\n patternsActivated: z.number(),\n conflictsResolved: z.array(z.object({\n winnerId: z.string(),\n loserId: z.string(),\n strategy: z.enum(['priority_override']),\n})),\n systemState: z.enum(['ok', 'cold_start', 'pending_only', 'no_match']).optional(),\n pendingCount: z.number().min(0).optional(),\n patternsExcluded: z.number().min(0).optional(),\n});\n\nexport const recommendation = z.object({\n id: z.string().uuid(),\n userId: z.string(),\n triggerContext: z.string().max(500),\n practice: z.string().max(1000),\n evidenceSummary: z.string().max(2000).optional(),\n source: z.enum(['explicit', 'learned', 'manual']),\n outcomeSignal: z.enum(['positive', 'neutral', 'unknown']),\n confidence: z.number().min(0).max(1),\n evidenceMemoryIds: z.array(z.string().uuid()).max(50).optional(),\n triggerEmbeddingStatus: z.enum(['pending', 'complete', 'failed']),\n applicationCount: z.number().min(0),\n provisional: z.boolean(),\n status: z.enum(['pending_review', 'active', 'paused', 'dismissed', 'superseded']),\n validFrom: z.string().datetime().optional(),\n validUntil: z.string().datetime().nullable().optional(),\n supersededBy: z.string().uuid().nullable().optional(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\n\nexport const createRecommendationRequest = z.object({\n triggerContext: z.string().max(500),\n practice: z.string().max(1000),\n evidenceSummary: z.string().max(2000).optional(),\n outcomeSignal: z.enum(['positive', 'neutral', 'unknown']).optional(),\n evidenceMemoryIds: z.array(z.string().uuid()).max(50).optional(),\n activateImmediately: z.boolean().optional(),\n});\n\nexport const matchRecommendationsRequest = z.object({\n content: z.string().max(10000),\n limit: z.number().min(1).max(5).optional(),\n similarityThreshold: z.number().min(0.1).max(0.99).optional(),\n});\n\nexport const serviceCheck = z.object({\n /** Service status */\n status: z.enum(['up', 'down']),\n /** Response time in milliseconds */\n responseTime: z.number().optional(),\n});\n\nexport const healthCheck = z.object({\n /** Overall system health status */\n status: z.enum(['healthy', 'degraded', 'unhealthy']),\n /** Health check timestamp */\n timestamp: z.string().datetime(),\n /** API version */\n version: z.string(),\n /** System uptime in seconds */\n uptime: z.number(),\n /** Individual service health checks */\n checks: z.object({\n\n}).catchall(serviceCheck),\n});\n\nexport const searchRequest = z.object({\n /** Search query. On POST all methods accept up to 32768 chars; the GET endpoint caps all methods at 2000 (use POST for larger queries). For queries over 2000 chars the keyword-matching side (the keyword method, and hybrid's fulltext/entity sub-branches) searches on a representative SAMPLE of the query's most salient terms rather than the whole text; the semantic branch still embeds the full query. Queries at or under 2000 chars are searched verbatim. */\n query: z.string().min(1).max(32768),\n /** Content filtering mode (defaults to unified) */\n mode: z.enum(['unified', 'content', 'facts']).optional(),\n /** Search algorithm: hybrid (combined, default), semantic (vector), or keyword (fulltext). */\n searchMethod: z.enum(['keyword', 'semantic', 'hybrid']).optional(),\n /** Target number of results (defaults to 20). Note: when the v2.33 RRF consensus-exemption feature is enabled (CONSENSUS_EXEMPTION_ENABLED, off by default), a hybrid response MAY contain up to limit + CONSENSUS_EXEMPTION_MAX_PINS results — a small number of dual-primary-consensus documents appended after the top-`limit` window without evicting it. With the feature off, the response never exceeds `limit`. */\n limit: z.number().min(1).max(100).optional(),\n /** Offset for pagination (defaults to 0) */\n offset: z.number().min(0).optional(),\n /** Weight for vector (semantic) results in hybrid search (0-1, defaults to 0.7) */\n vectorWeight: z.number().min(0).max(1).optional(),\n /** Weight for fulltext (keyword) results in hybrid search (0-1, defaults to 0.3) */\n fulltextWeight: z.number().min(0).max(1).optional(),\n /** Minimum similarity threshold for semantic search (0-1, defaults to 0.5) */\n threshold: z.number().min(0).max(1).optional(),\n /** If true, include detailed explanation of how each result was matched */\n explain: z.boolean().optional(),\n /** Point-in-time query: show what the system knew at this time (ISO 8601 format) */\n asOfTime: z.string().datetime().optional(),\n /** Validity query: show facts that were valid at this time (ISO 8601 format) */\n validAtTime: z.string().datetime().optional(),\n /** Event time range start (ISO 8601 format) */\n eventTimeFrom: z.string().datetime().optional(),\n /** Event time range end (ISO 8601 format) */\n eventTimeTo: z.string().datetime().optional(),\n /** Ingestion time range start (ISO 8601 format) */\n ingestionTimeFrom: z.string().datetime().optional(),\n /** Ingestion time range end (ISO 8601 format) */\n ingestionTimeTo: z.string().datetime().optional(),\n /** Include expired facts (defaults to false) */\n includeExpired: z.boolean().optional(),\n /** Temporal query mode: 'current' (only valid now), 'historical' (as of a point in time), 'evolution' (chronological) */\n temporalMode: z.enum(['current', 'historical', 'evolution']).optional(),\n /** Filter by topics - returns memories that have ANY of the specified topics */\n topics: z.array(z.string().max(100)).max(50).optional(),\n /** Filter by memory type */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']).optional(),\n /** Filter by conversation ID */\n conversationId: z.string().optional(),\n /** Task-scoped retrieval: returns own-history first, fills remainder with cross-task results. */\n taskId: z.string().max(200).optional(),\n /** Filter by task outcome. Use 'resolved' to find successful approaches from past tasks. */\n outcomeFilter: z.enum(['resolved', 'unresolved', 'any']).optional(),\n /** Include topics associated with matched memories (defaults to false for performance) */\n includeTopics: z.boolean().optional(),\n /** Include entities mentioned in matched memories (defaults to false for performance) */\n includeEntities: z.boolean().optional(),\n /** Include facts extracted from matched memories (defaults to false for performance) */\n includeFacts: z.boolean().optional(),\n /** Include claims associated with matched memories (defaults to true) */\n includeClaims: z.boolean().optional(),\n /** Filter entities by type (e.g., PERSON, TECHNOLOGY, PROJECT) */\n entityTypes: z.array(z.string().max(50)).max(20).optional(),\n /** Enable entity graph traversal branch in hybrid search (default false) */\n expandEntities: z.boolean().optional(),\n /** Enable topic graph traversal branch in hybrid search (default true) */\n expandTopics: z.boolean().optional(),\n /** Enable fact graph traversal branch in hybrid search (default true) */\n expandFacts: z.boolean().optional(),\n /** Include superseded and contradicted memories in results (default false) */\n includeSuperseded: z.boolean().optional(),\n /** Weight for entity graph branch in hybrid search (0-1, default 0.1) */\n entityWeight: z.number().min(0).max(1).optional(),\n /** Weight for topic graph branch in hybrid search (0-1, default 0.5) */\n topicWeight: z.number().min(0).max(1).optional(),\n /** Weight for fact graph branch in hybrid search (0-1, default 0.6) */\n factWeight: z.number().min(0).max(1).optional(),\n /** Weight for question graph branch in hybrid search (0-1) */\n questionWeight: z.number().min(0).max(1).optional(),\n /** Weight for claims vector branch in hybrid search (0-1, default 0.5) */\n claimsWeight: z.number().min(0).max(1).optional(),\n /** Field to sort results by (defaults to 'relevance' for search, 'createdAt' for list) */\n sortBy: z.enum(['relevance', 'createdAt', 'updatedAt', 'eventTime']).optional(),\n /** Sort order: 'asc' or 'desc' (defaults to 'desc' for timestamps, 'desc' for relevance) */\n order: z.enum(['asc', 'desc']).optional(),\n /** Include facet aggregation (topics, memoryType, effectiveState) in response (defaults to false) */\n includeFacets: z.boolean().optional(),\n});\n\nexport const entity = z.object({\n /** Entity name */\n name: z.string().optional(),\n /** Entity type */\n type: z.string().optional(),\n});\n\nexport const searchResult = z.lazy(() => z.object({\n /** Unique memory identifier */\n id: z.string(),\n /** Full memory content */\n content: z.string(),\n /** Truncated content preview (max 200 chars) */\n preview: z.string(),\n /** Optional human-readable name for deterministic retrieval */\n name: z.string().nullable().optional(),\n /** Type of memory */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']),\n /** Associated topics */\n topics: z.array(z.string()).optional(),\n /** Conversation this memory belongs to */\n conversationId: z.string().nullable().optional(),\n /** System ingestion timestamp */\n timestamp: z.string().datetime().optional(),\n /** Event time (when the event actually occurred) */\n eventTime: z.string().datetime().optional(),\n /** Validity start time */\n validFrom: z.string().datetime().optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime().optional(),\n /** Last update timestamp */\n updatedAt: z.string().datetime().optional(),\n /** Effective state of the memory */\n effectiveState: z.string().optional(),\n /** Confidence score (0-1) */\n confidenceScore: z.number().min(0).max(1).optional(),\n /** Overall relevance score for this result */\n score: z.number().nullable().optional(),\n /** Entities mentioned in this memory */\n entities: z.array(entity).optional(),\n /** Facts extracted from this memory */\n facts: z.array(z.object({\n /** Fact subject */\n subject: z.string(),\n /** Fact predicate */\n predicate: z.string(),\n /** Fact object */\n object: z.string(),\n /** Confidence */\n confidence: z.number().min(0).max(1).optional(),\n})).optional(),\n /** Combined RRF score for hybrid search */\n hybridScore: z.number().nullable().optional(),\n /** Vector similarity score (0-1) */\n vectorScore: z.number().optional(),\n /** Rank in vector search results */\n vectorRank: z.number().nullable().optional(),\n /** Fulltext search score */\n fulltextScore: z.number().optional(),\n /** Rank in fulltext search results */\n fulltextRank: z.number().nullable().optional(),\n /** Search branches that contributed to this result (e.g. ['semantic', 'entity']) */\n matchedVia: z.array(z.string()).optional(),\n /** Per-branch RRF scores for this result */\n branchScores: z.object({\n\n}).catchall(z.number()).optional(),\n /** Raw cross-encoder rerank score; present only when the reranker reordered this request's top-K (null otherwise) */\n rerankScore: z.number().nullable().optional(),\n /** Detailed explanation of the match (only when explain=true) */\n explanation: z.object({\n /** Human-readable explanation of why this result matched */\n matchReason: z.string(),\n /** Terms from the query that matched (for keyword search) */\n matchedTerms: z.array(z.string()).optional(),\n /** Cosine similarity score for semantic match (0-1) */\n semanticSimilarity: z.number().optional(),\n /** Factors that contributed to the match */\n contributingFactors: z.array(z.string()).optional(),\n}).optional(),\n}));\n\n/**\n * Temporal query metadata (present when temporal filters are used)\n */\nexport const temporalMetadata = z.object({\n /** Temporal query mode used */\n temporalMode: z.string(),\n /** Point-in-time timestamp */\n asOfTime: z.string().datetime().nullable(),\n /** Validity timestamp */\n validAtTime: z.string().datetime().nullable(),\n /** Event time range filter */\n eventTimeRange: z.object({\n from: z.string().datetime().nullable(),\n to: z.string().datetime().nullable(),\n}).nullable(),\n /** Ingestion time range filter */\n ingestionTimeRange: z.object({\n from: z.string().datetime().nullable(),\n to: z.string().datetime().nullable(),\n}).nullable(),\n /** Whether expired facts are included */\n includeExpired: z.boolean(),\n /** Whether temporal fields are included in results */\n temporalFieldsIncluded: z.boolean(),\n});\n\n/**\n * Search metadata including pagination, timing, and method\n */\nexport const searchMeta = z.lazy(() => z.object({\n /** Total number of results matching the query */\n total: z.number(),\n /** Current page number (1-based) */\n page: z.number(),\n /** Number of results per page */\n pageSize: z.number(),\n /** Search duration in milliseconds */\n searchTime: z.number(),\n /** Search method used for this query */\n searchMethod: z.string(),\n /** Temporal query metadata (present when temporal filters are used) */\n temporalMetadata: temporalMetadata.optional(),\n}));\n\nexport const facetEntry = z.object({\n /** Facet value */\n value: z.string(),\n /** Number of results with this value */\n count: z.number(),\n});\n\n/**\n * Facet aggregations (only present when includeFacets=true)\n */\nexport const facets = z.lazy(() => z.object({\n /** Topic facet counts (top 20 by frequency) */\n topics: z.array(facetEntry),\n /** Memory type facet counts */\n memoryType: z.array(facetEntry),\n /** Effective state facet counts */\n effectiveState: z.array(facetEntry),\n}));\n\nexport const claimGroupClaim = z.object({\n /** Claim ID */\n id: z.string(),\n /** Claim content text */\n content: z.string(),\n /** Memory this claim was extracted from */\n memoryId: z.string(),\n /** Claim creation timestamp */\n createdAt: z.string(),\n /** When the claimed event occurred */\n occurredStart: z.string().optional(),\n});\n\n/**\n * Computed signals about the claim cluster\n */\nexport const claimGroupSignals = z.object({\n /** Number of claims in this group */\n n_claims: z.number(),\n /** Minimum LLM-judged alignment score among all pairs in the group (0=conflict, 1=corroborate) */\n alignment_min: z.number(),\n /** Days between earliest and latest claim in the group */\n temporal_spread_days: z.number(),\n /** True if alignment_min < 0.85, indicating potential conflict */\n has_low_alignment_pair: z.boolean(),\n /** True if alignment_min < 0.4 — claims directly conflict or one supersedes the other */\n has_conflict: z.boolean(),\n /** True if temporal_spread_days > 30 */\n has_temporal_spread: z.boolean(),\n});\n\nexport const claimGroup = z.lazy(() => z.object({\n /** Deterministic group ID */\n id: z.string(),\n /** Claims in this group, sorted by createdAt descending (newest first) */\n claims: z.array(claimGroupClaim),\n /** Computed signals about the claim cluster */\n signals: claimGroupSignals,\n}));\n\nexport const searchResponse = z.lazy(() => z.object({\n /** Flattened search results with memory fields and search metadata. Length is normally ≤ the request `limit`; when the v2.33 consensus-exemption feature is enabled it may be up to limit + CONSENSUS_EXEMPTION_MAX_PINS (appended dual-primary-consensus documents). */\n data: z.array(searchResult),\n /** Search metadata including pagination, timing, and method */\n meta: searchMeta,\n /** Facet aggregations (only present when includeFacets=true) */\n facets: facets.optional(),\n /** Reader instructions for interpreting claims and resolving conflicts */\n instructions: z.string().optional(),\n /** Clusters of related claims that may conflict. Only present when relevant groups exist. Claims within each group are sorted newest-first. */\n claim_groups: z.array(claimGroup).optional(),\n}));\n\nexport const fact = z.object({\n /** Unique identifier for the fact */\n id: z.string(),\n /** User ID who owns this fact */\n userId: z.string(),\n /** The subject of the fact (what the fact is about) */\n subject: z.string(),\n /** The relationship or property type */\n predicate: z.string(),\n /** The value or target of the relationship */\n object: z.string(),\n /** Fact name/label (deprecated, use subject) */\n name: z.string().optional(),\n /** Entity type (deprecated, use predicate) */\n type: z.string().optional(),\n /** Fact description (deprecated) */\n description: z.string().nullable().optional(),\n /** Confidence score (0-1) */\n confidence: z.number().min(0).max(1).optional(),\n /** ID of the memory this fact was extracted from */\n sourceMemoryId: z.string().uuid().optional(),\n /** When this fact was extracted */\n extractedAt: z.string().datetime().optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n});\n\nexport const createFactRequest = z.object({\n /** Fact subject (entity name) */\n subject: z.string().min(1).max(500),\n /** Relationship type */\n predicate: z.string().min(1).max(200),\n /** Fact object (related entity) */\n object: z.string().min(1).max(500),\n});\n\nexport const updateFactRequest = z.object({\n /** Fact subject (entity name) */\n subject: z.string().min(1).max(500).optional(),\n /** Relationship type */\n predicate: z.string().min(1).max(200).optional(),\n /** Fact object (related entity) */\n object: z.string().min(1).max(500).optional(),\n /** Confidence score (0-1) */\n confidence: z.number().min(0).max(1).optional(),\n});\n\nexport const factSearchRequest = z.object({\n /** Search query string */\n query: z.string().min(1),\n /** Maximum number of results to return */\n limit: z.number().min(1).max(100).optional(),\n});\n\nexport const community = z.object({\n /** Unique identifier for the community */\n id: z.string(),\n /** Community name */\n name: z.string(),\n /** Community description */\n description: z.string().nullable().optional(),\n /** Number of topics in this community */\n topicCount: z.number().min(0).optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n});\n\nexport const entityNode = z.object({\n /** Unique identifier for the entity */\n id: z.string(),\n /** User ID who owns this entity */\n userId: z.string(),\n /** Entity display name */\n name: z.string(),\n /** Normalized (lowercase) name for deduplication */\n normalizedName: z.string(),\n /** Entity type classification (v2: PERSON, ORGANIZATION, CONCEPT; legacy types accepted) */\n type: z.enum(['PERSON', 'ORGANIZATION', 'CONCEPT', 'PROJECT', 'TECHNOLOGY', 'COMPONENT', 'API_ENDPOINT', 'FILE', 'LOCATION']),\n /** Alternative names for this entity */\n aliases: z.array(z.string()).optional(),\n /** Extraction confidence score (0-1) */\n confidence: z.number().min(0).max(1),\n /** When this entity was first extracted */\n firstSeenAt: z.string().datetime(),\n /** When this entity was most recently seen */\n lastSeenAt: z.string().datetime(),\n /** Number of memories that mention this entity */\n mentionCount: z.number().min(1),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n});\n\nexport const artifact = z.object({\n /** Unique identifier for the artifact */\n id: z.string(),\n /** User ID who owns this artifact */\n userId: z.string(),\n /** Artifact content */\n content: z.string(),\n /** Artifact type (e.g., note, document, code) */\n type: z.string(),\n /** Artifact name */\n name: z.string().nullable().optional(),\n /** Artifact description */\n description: z.string().nullable().optional(),\n /** Associated memory ID */\n memoryId: z.string().nullable().optional(),\n /** Associated conversation ID */\n conversationId: z.string().nullable().optional(),\n /** Additional metadata */\n metadata: z.object({}).optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n});\n\nexport const createArtifactRequest = z.object({\n /** Artifact content */\n content: z.string().min(1),\n /** Artifact type (e.g., note, document, code) */\n type: z.string().min(1),\n /** Artifact name */\n name: z.string().optional(),\n /** Artifact description */\n description: z.string().optional(),\n /** Associated memory ID */\n memoryId: z.string().optional(),\n /** Associated conversation ID */\n conversationId: z.string().optional(),\n /** Additional metadata */\n metadata: z.object({}).optional(),\n});\n\nexport const updateArtifactRequest = z.object({\n /** Artifact content */\n content: z.string().min(1).optional(),\n /** Artifact type (e.g., note, document, code) */\n type: z.string().min(1).optional(),\n /** Artifact name */\n name: z.string().optional(),\n /** Artifact description */\n description: z.string().optional(),\n /** Additional metadata */\n metadata: z.object({}).optional(),\n});\n\nexport const memoryRelationship = z.object({\n /** Unique relationship identifier */\n id: z.string(),\n /** ID of the source memory (the memory that has the relationship) */\n sourceMemoryId: z.string(),\n /** ID of the target memory (the memory being related to) */\n targetMemoryId: z.string(),\n /** Type of relationship between memories */\n type: z.enum(['SUPERSEDES', 'FOLLOWS', 'RESOLVES', 'CONTRADICTS', 'REFERENCES', 'DUPLICATES']),\n /** Confidence score for the relationship (0-1) */\n confidence: z.number().min(0).max(1),\n /** How the relationship was created */\n creationMethod: z.enum(['manual', 'auto-semantic', 'auto-temporal', 'auto-llm']),\n /** Human-readable explanation for why this relationship exists */\n reason: z.string().optional(),\n /** When the relationship was created */\n createdAt: z.string().datetime(),\n});\n\nexport const createMemoryRelationshipRequest = z.object({\n /** ID of the target memory to create a relationship with */\n targetMemoryId: z.string().min(1),\n /** Type of relationship between memories */\n type: z.enum(['SUPERSEDES', 'FOLLOWS', 'RESOLVES', 'CONTRADICTS', 'REFERENCES', 'DUPLICATES']),\n /** Confidence score for the relationship (0-1, defaults to 1.0 for manual) */\n confidence: z.number().min(0).max(1).optional(),\n /** Optional explanation for the relationship */\n reason: z.string().optional(),\n});\n\nexport const memoryRelationshipsResponse = z.lazy(() => z.object({\n data: z.array(memoryRelationship),\n /** The source memory ID these relationships are for */\n sourceMemoryId: z.string(),\n /** Direction of relationships returned */\n direction: z.enum(['outgoing', 'incoming', 'both']),\n}));\n\nexport const narrativeThread = z.object({\n /** Unique narrative thread identifier */\n id: z.string(),\n /** User ID who owns this narrative */\n userId: z.string(),\n /** Title describing the narrative thread */\n title: z.string(),\n /** Current state of the narrative thread */\n state: z.enum(['open', 'resolved', 'reopened', 'superseded']),\n /** ID of the first memory in this narrative */\n rootMemoryId: z.string(),\n /** ID of the most recent memory in this narrative */\n currentMemoryId: z.string().optional(),\n /** ID of the memory that resolved this narrative (if resolved) */\n resolutionMemoryId: z.string().optional(),\n /** Topics associated with this narrative */\n topics: z.array(z.string()),\n /** Number of memories in this narrative */\n memoryCount: z.number().min(0),\n /** When the narrative was created */\n createdAt: z.string().datetime(),\n /** When the narrative was last updated */\n updatedAt: z.string().datetime(),\n});\n\nexport const createNarrativeRequest = z.object({\n /** Title for the narrative thread */\n title: z.string().min(1),\n /** ID of the first memory in this narrative */\n rootMemoryId: z.string().min(1),\n /** Topics to associate with this narrative */\n topics: z.array(z.string()).optional(),\n});\n\nexport const updateNarrativeRequest = z.object({\n /** Updated title for the narrative */\n title: z.string().min(1).optional(),\n /** Current state of the narrative thread */\n state: z.enum(['open', 'resolved', 'reopened', 'superseded']).optional(),\n /** ID of the memory that resolves this narrative */\n resolutionMemoryId: z.string().optional(),\n /** Updated topics for the narrative */\n topics: z.array(z.string()).optional(),\n});\n\nexport const addMemoryToNarrativeRequest = z.object({\n /** ID of the memory to add to the narrative */\n memoryId: z.string().min(1),\n /** Position in the narrative (0-indexed, omit for append) */\n position: z.number().min(0).optional(),\n});\n\nexport const narrativeMemory = z.lazy(() => z.object({\n memory: z.object({\n /** Unique memory identifier */\n id: z.string(),\n /** Optional human-readable name for deterministic retrieval. Only the HEAD version carries the name. */\n name: z.string().regex(/^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/).optional(),\n /** Version number for named memories (1 for first version, increments on update) */\n version: z.number().min(1).optional(),\n /** Memory content */\n content: z.string(),\n /** Type of memory */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']),\n /** True when memoryType was explicitly supplied by the caller on create/update, rather than defaulted from role/name. The async graph-extraction classifier reads this to skip auto-classification of user-set types. Absent on memories written before v3.84. */\n memoryTypeUserSet: z.boolean().optional(),\n /** Context or domain of the memory */\n context: z.string().optional(),\n /** Associated topics */\n topics: z.array(z.string()).optional(),\n /** System ingestion timestamp (when the system learned about this) */\n timestamp: z.string().datetime().optional(),\n /** Event time (when the event actually occurred in reality) */\n eventTime: z.string().datetime().optional(),\n /** Validity start time (when this fact becomes valid) */\n validFrom: z.string().datetime().optional(),\n /** Validity end time (when this fact expires, null means never expires) */\n validTo: z.string().datetime().nullable().optional(),\n /** Environment context for memory scoping — product, service, team, component, role. */\n codeContext: codeContext.optional(),\n /** Creation timestamp */\n createdAt: z.string().datetime(),\n /** Last update timestamp */\n updatedAt: z.string().datetime(),\n /** Confidence score (0-1) for this memory's accuracy */\n confidenceScore: z.number().min(0).max(1).optional(),\n /** Basis for the confidence score */\n confidenceBasis: z.enum(['direct-statement', 'repeated-mention', 'single-mention', 'hedged', 'inference', 'external-source', 'contradicted']).optional(),\n /** Effective state of the memory in the narrative */\n effectiveState: z.enum(['current', 'superseded', 'contradicted', 'duplicate']).optional(),\n /** Authority level: directive (mandates) > decision (choices with reasoning) > observation (learned during work) > auto-captured (generated content) */\n authority: z.enum(['directive', 'decision', 'observation', 'auto-captured']).optional(),\n /** Legacy aggregate extraction status. DERIVED on read from the six per-stage statuses (contentEmbeddingStatus, summaryStatus, questionsStatus, summaryEmbeddingStatus, questionsEmbeddingStatus, graphStatus). Preserved for SDK compatibility per PRD memory-creation-pipeline-v2 §5 Q7. */\n extractionStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** When extraction was completed */\n extractionCompletedAt: z.string().datetime().optional(),\n /** Pipeline 2 content-embedding stage status. Tracks the queue lifecycle for writing m.embedding (primary content embedding). */\n contentEmbeddingStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** AI-generated summary of the memory content */\n summary: z.string().optional(),\n /** Pipeline 1 summary stage status. Tracks generation of m.summary by the summary-qna LLM call. */\n summaryStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Pipeline 1 questions stage status. Tracks generation of anticipated Question nodes by the summary-qna LLM call. */\n questionsStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Pipeline 2 summary-embedding stage status. Tracks the queue lifecycle for writing m.summaryEmbedding (depends on summaryStatus=completed). */\n summaryEmbeddingStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Pipeline 2 question-embedding stage status. Tracks the queue lifecycle for writing Question.embedding for each anticipated question (depends on questionsStatus=completed). */\n questionsEmbeddingStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Pipeline 3 graph-extraction stage status. Tracks generation of entities, facts, topics, authority, and memory-type. Replaces the role formerly played by the monolithic extractionStatus writer. */\n graphStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** When graphStatus=skipped, records why graph extraction was skipped. Mirrors the legacy extractionSkipReason field but scoped to the graph pipeline. */\n graphSkipReason: z.enum(['global_disabled', 'plan_excluded', 'user_opt_out', 'content_too_short', 'legacy', 'budget_exhausted']).nullable().optional(),\n /** When extractionStatus=skipped, records why extraction was skipped. global_disabled = GRAPH_EXTRACTION_ENABLED=false kill switch. */\n extractionSkipReason: z.enum(['global_disabled', 'plan_excluded', 'user_opt_out', 'content_too_short', 'legacy']).optional(),\n /** Status of primary (Ollama) embedding generation via durable queue */\n embeddingStatus: z.enum(['queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** Status of secondary (OpenAI) dual-write embedding generation via durable queue */\n embeddingOpenaiStatus: z.enum(['queued', 'running', 'completed', 'failed', 'skipped']).optional(),\n /** True if the primary content embedding used a head-truncated input (model context exceeded). */\n embeddingTruncated: z.boolean().optional(),\n /** Token count of the original content (pre-truncation, cl100k proxy). Useful for identifying under-indexed memories. */\n embeddingOriginalTokens: z.number().min(0).optional(),\n /** Smart-field strategy used to produce the primary content embedding. */\n embeddingStrategy: z.enum(['full', 'head-truncated', 'summary-selected', 'question-selected']).optional(),\n /** Number of topics extracted from content */\n extractedTopicCount: z.number().min(0).optional(),\n /** Number of facts extracted from content */\n extractedFactCount: z.number().min(0).optional(),\n /** Number of entities extracted from content */\n extractedEntityCount: z.number().min(0).optional(),\n /** Number of memories this memory contradicts via outgoing CONTRADICTS relationships */\n conflictCount: z.number().min(0).optional(),\n /** Memory visibility level. Null/undefined treated as 'private' for backward compatibility. 'admin_visible' is computed at retrieval time when an org owner/admin queries another member's post-join memory and is never accepted on writes. */\n visibility: z.enum(['private', 'shared_with_users', 'shared_with_org', 'admin_visible']).optional(),\n /** User IDs this memory is shared with (only populated when visibility = 'shared_with_users') */\n sharedWith: z.array(z.string()).optional(),\n /** Topics explicitly provided by the user */\n userTopics: z.array(z.string()).optional(),\n /** Topics automatically extracted from content */\n extractedTopics: z.array(z.string()).optional(),\n /** Entities extracted from memory content */\n entities: z.array(z.object({\n /** Entity name */\n name: z.string(),\n /** Entity type */\n type: z.string(),\n /** Extraction confidence */\n confidence: z.number().min(0).max(1).optional(),\n})).optional(),\n /** Task identifier for agentic loop memories */\n taskId: z.string().nullable().optional(),\n /** Task outcome status */\n outcome: z.enum(['resolved', 'unresolved']).nullable().optional(),\n /** Attempt number within the task */\n attemptNumber: z.number().nullable().optional(),\n /** Distillation pipeline stage status */\n distillStatus: z.enum(['pending', 'queued', 'running', 'completed', 'failed', 'skipped']).nullable().optional(),\n /** Reason distillation was skipped */\n distillSkipReason: z.enum(['global_disabled', 'plan_excluded', 'user_opt_out', 'content_too_short', 'legacy', 'budget_exhausted']).nullable().optional(),\n /** Error message if distillation failed */\n distillError: z.string().nullable().optional(),\n /** ISO 8601 timestamp when distillation completed */\n distillCompletedAt: z.string().nullable().optional(),\n}),\n /** Position of this memory in the narrative (0-indexed) */\n position: z.number().min(0),\n /** Effective state of this memory in the narrative context */\n effectiveState: z.enum(['current', 'superseded', 'contradicted']).optional(),\n}));\n\nexport const narrativeTimelineResponse = z.lazy(() => z.object({\n data: z.array(narrativeMemory),\n narrative: narrativeThread,\n pagination: z.object({\n limit: z.number(),\n offset: z.number(),\n total: z.number(),\n}),\n}));\n\nexport const getNarrativeResponse = z.lazy(() => z.object({\n data: narrativeThread,\n}));\n\nexport const listNarrativesResponse = z.lazy(() => z.object({\n data: z.array(narrativeThread),\n pagination: z.object({\n limit: z.number(),\n offset: z.number(),\n count: z.number(),\n}),\n}));\n\nexport const user = z.object({\n id: z.string().uuid(),\n email: z.string().email(),\n firstName: z.string().nullable(),\n lastName: z.string().nullable(),\n profilePictureUrl: z.string().url().nullable(),\n status: z.enum(['active', 'suspended', 'disabled']),\n plan: z.enum(['free', 'pro', 'enterprise']),\n memoryLimit: z.number(),\n retentionDays: z.number().nullable(),\n isTestUser: z.boolean(),\n isPreviewUser: z.boolean(),\n isInternalUser: z.boolean(),\n deletionStatus: z.enum(['none', 'pending_deletion', 'deleting', 'deleted', 'deletion_failed']),\n deletionScheduledFor: z.string().datetime().nullable(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\n\nexport const userUsage = z.object({\n memoriesUsed: z.number(),\n memoryLimit: z.number(),\n memoriesRemaining: z.number(),\n percentUsed: z.number(),\n plan: z.enum(['free', 'pro', 'enterprise']),\n periodStart: z.string().datetime(),\n periodEnd: z.string().datetime(),\n});\n\nexport const subscription = z.object({\n /** Stripe subscription ID */\n id: z.string(),\n /** Current subscription status */\n status: z.enum(['active', 'canceled', 'incomplete', 'incomplete_expired', 'past_due', 'paused', 'trialing', 'unpaid']),\n /** Plan type */\n plan: z.enum(['free', 'pro', 'enterprise']),\n /** Current period start date */\n currentPeriodStart: z.string().datetime(),\n /** Current period end date */\n currentPeriodEnd: z.string().datetime(),\n /** Whether subscription cancels at period end */\n cancelAtPeriodEnd: z.boolean(),\n /** When subscription was canceled */\n canceledAt: z.string().datetime().nullable(),\n});\n\nexport const invoice = z.object({\n /** Stripe invoice ID */\n id: z.string(),\n /** Invoice number */\n number: z.string().nullable(),\n /** Invoice status */\n status: z.enum(['draft', 'open', 'paid', 'uncollectible', 'void']),\n /** Amount due in cents */\n amountDue: z.number(),\n /** Amount paid in cents */\n amountPaid: z.number(),\n /** Three-letter ISO currency code */\n currency: z.string(),\n /** Start of billing period */\n periodStart: z.string().datetime(),\n /** End of billing period */\n periodEnd: z.string().datetime(),\n /** When invoice was created */\n created: z.string().datetime(),\n /** URL to view invoice */\n hostedInvoiceUrl: z.string().url().nullable(),\n /** URL to download invoice PDF */\n invoicePdf: z.string().url().nullable(),\n});\n\nexport const paymentMethod = z.object({\n /** Stripe payment method ID */\n id: z.string(),\n /** Payment method type (card, etc.) */\n type: z.string(),\n /** Card details if type is card */\n card: z.object({\n /** Card brand (visa, mastercard, etc.) */\n brand: z.string(),\n /** Last 4 digits of card */\n last4: z.string(),\n /** Expiration month */\n expMonth: z.number(),\n /** Expiration year */\n expYear: z.number(),\n}).nullable(),\n /** Whether this is the default payment method */\n isDefault: z.boolean(),\n});\n\nexport const billingOverview = z.object({\n subscription: z.object({\n /** Stripe subscription ID */\n id: z.string(),\n /** Current subscription status */\n status: z.enum(['active', 'canceled', 'incomplete', 'incomplete_expired', 'past_due', 'paused', 'trialing', 'unpaid']),\n /** Plan type */\n plan: z.enum(['free', 'pro', 'enterprise']),\n /** Current period start date */\n currentPeriodStart: z.string().datetime(),\n /** Current period end date */\n currentPeriodEnd: z.string().datetime(),\n /** Whether subscription cancels at period end */\n cancelAtPeriodEnd: z.boolean(),\n /** When subscription was canceled */\n canceledAt: z.string().datetime().nullable(),\n}),\n defaultPaymentMethod: z.object({\n /** Stripe payment method ID */\n id: z.string(),\n /** Payment method type (card, etc.) */\n type: z.string(),\n /** Card details if type is card */\n card: z.object({\n /** Card brand (visa, mastercard, etc.) */\n brand: z.string(),\n /** Last 4 digits of card */\n last4: z.string(),\n /** Expiration month */\n expMonth: z.number(),\n /** Expiration year */\n expYear: z.number(),\n}).nullable(),\n /** Whether this is the default payment method */\n isDefault: z.boolean(),\n}),\n /** Upcoming invoice preview */\n upcomingInvoice: z.object({\n /** Amount due in cents */\n amountDue: z.number(),\n /** Currency code */\n currency: z.string(),\n /** Next billing date */\n periodEnd: z.string().datetime(),\n}).nullable(),\n});\n\nexport const createCheckoutSessionRequest = z.object({\n /** Stripe price ID (defaults to Pro price) */\n priceId: z.string().optional(),\n /** URL to redirect after successful checkout */\n successUrl: z.string().url(),\n /** URL to redirect if checkout is canceled */\n cancelUrl: z.string().url(),\n});\n\nexport const checkoutSessionResponse = z.object({\n /** Stripe checkout session ID */\n sessionId: z.string(),\n /** URL to redirect user to Stripe checkout */\n url: z.string().url(),\n});\n\nexport const createPortalSessionRequest = z.object({\n /** URL to redirect after leaving the portal */\n returnUrl: z.string().url(),\n});\n\nexport const portalSessionResponse = z.object({\n /** URL to redirect user to Stripe billing portal */\n url: z.string().url(),\n});\n\nexport const listInvoicesResponse = z.lazy(() => z.object({\n /** List of invoices */\n data: z.array(invoice),\n /** Whether there are more invoices */\n hasMore: z.boolean(),\n}));\n\nexport const listPaymentMethodsResponse = z.lazy(() => z.object({\n /** List of payment methods */\n data: z.array(paymentMethod),\n}));\n\nexport const digestRequest = z.object({\n /** The topic or subject to generate a digest for */\n query: z.string().min(1).max(2000),\n /** Time window filter (e.g., \"7d\", \"24h\", \"2w\", \"30m\"). Only considers memories within this window. */\n recent: z.string().optional(),\n /** Filter to memories with these topics */\n topics: z.array(z.string()).optional(),\n /** Limit to specific conversation IDs */\n conversationIds: z.array(z.string()).optional(),\n /** Output format: \"structured\" (sections with headers), \"narrative\" (chronological prose), \"timeline\" (dated event list), \"status-report\" (done/in-progress/blocked) */\n format: z.enum(['structured', 'narrative', 'timeline', 'status-report']).optional(),\n /** Maximum number of memories to consider (1-500, default 100) */\n maxSources: z.number().min(1).max(500).optional(),\n /** Whether to include source memory IDs in the response */\n includeMemoryIds: z.boolean().optional(),\n /** Number of most-recent matching memories to return VERBATIM (full stored content, untouched) in `recentMemories`, instead of synthesizing them into `digest`. The remaining (older) memories are still synthesized into `digest` as usual. Recency is determined by event time when present, else system timestamp, else creation time. Default 0 = current behavior (synthesize all memories, `recentMemories` empty). When the total matched count is <= verbatimRecent, all matches are returned in `recentMemories` and `digest` is an empty string (no older memories to synthesize). Range 0-50. */\n verbatimRecent: z.number().min(0).max(50).optional(),\n});\n\n/**\n * Time range of the source memories (null if no sources found)\n */\nexport const digestTimeRange = z.object({\n /** Earliest memory timestamp in the digest sources */\n earliest: z.string().datetime(),\n /** Latest memory timestamp in the digest sources */\n latest: z.string().datetime(),\n}).nullable();\n\n/**\n * Generation metadata including source statistics\n */\nexport const digestMetadata = z.lazy(() => z.object({\n /** The query used to generate the digest */\n query: z.string(),\n /** Total number of memories gathered (search + expansion) before synthesis */\n sourcesConsidered: z.number().min(0),\n /** Number of memories fed into the synthesis step */\n sourcesUsed: z.number().min(0),\n /** Number of distinct conversations the sources come from */\n conversationsSpanned: z.number().min(0),\n /** Time range of the source memories (null if no sources found) */\n timeRange: digestTimeRange,\n /** Output format used for this digest */\n format: z.enum(['structured', 'narrative', 'timeline', 'status-report']),\n /** Average relevance score (0-1) of the source memories used in synthesis. Low values (<0.02) indicate the query may not have strong matches. */\n averageRelevance: z.number().min(0).max(1).optional(),\n /** True when averageRelevance falls in the narrow-window band (>= DIGEST_RELEVANCE_THRESHOLD but < NARROW_WINDOW_FALLBACK_CEILING) — the digest synthesised from weak matches that may not represent strong context. Consumers should surface a warning to the calling agent. */\n narrowWindowFallback: z.boolean().optional(),\n /** True when the digest is in the narrow-window band AND the source memories span 2+ distinct codeContext.product values (or none share a product). Indicates the synthesis is drawn from heterogeneous, possibly cross-project sources — likely the wrong project for the calling agent. See support#183. */\n crossProjectFallback: z.boolean().optional(),\n /** ISO 8601 timestamp when the digest was generated */\n generatedAt: z.string().datetime(),\n /** Recursion stats (only present when recursive synthesis is used) */\n recursion: z.object({\n /** Whether recursive synthesis was used */\n enabled: z.boolean(),\n /** Number of leaf groups synthesized */\n leafGroups: z.number().min(0),\n /** Total LLM calls made during recursive synthesis */\n llmCallsUsed: z.number().min(0),\n /** Maximum recursion depth reached */\n maxDepthReached: z.number().min(0),\n}).optional(),\n}));\n\nexport const digestSource = z.object({\n /** Source memory ID */\n memoryId: z.string(),\n /** Relevance score (0-1) for this source memory */\n relevance: z.number().min(0).max(1),\n /** Conversation ID this memory belongs to */\n conversation: z.string().optional(),\n});\n\nexport const digestKeyFact = z.object({\n /** Fact subject */\n subject: z.string(),\n /** Relationship type */\n predicate: z.string(),\n /** Fact value */\n object: z.string(),\n /** Confidence score */\n confidence: z.number().min(0).max(1),\n});\n\nexport const digestEntity = z.object({\n /** Entity name */\n name: z.string(),\n /** Entity type */\n type: z.string(),\n});\n\n/**\n * Breakdown of source memories by effective state (current/superseded/contradicted)\n */\nexport const effectiveStateBreakdown = z.object({\n /** Active memories used in synthesis */\n current: z.number().min(0),\n /** Superseded memories (deprioritized in synthesis) */\n superseded: z.number().min(0),\n /** Contradicted memories (deprioritized in synthesis) */\n contradicted: z.number().min(0),\n});\n\nexport const digestResponse = z.lazy(() => z.object({\n /** The generated digest content (markdown formatted) */\n digest: z.string(),\n /** Generation metadata including source statistics */\n metadata: digestMetadata,\n /** Source memories used to generate the digest, for traceability */\n sources: z.array(digestSource),\n /** The N most-recent matching memories returned VERBATIM (full stored content, untouched), where N = the request's verbatimRecent. Ordered newest-first. Empty/omitted when verbatimRecent is 0 (the default). These memories are NOT synthesized into `digest` — the synthesis covers only the older remainder. Lets callers preserve the exact structure of recent items (per-item status, identifiers, next-step) while still condensing the older tail. */\n recentMemories: z.array(memory).optional(),\n /** Top extracted facts relevant to the digest, deduplicated and ranked by frequency */\n keyFacts: z.array(digestKeyFact).optional(),\n /** Key entities mentioned across source memories */\n entities: z.array(digestEntity).optional(),\n /** Breakdown of source memories by effective state (current/superseded/contradicted) */\n effectiveStateBreakdown: effectiveStateBreakdown.optional(),\n}));\n\nexport const exportRequest = z.object({\n /** Optional search query to filter memories for export */\n query: z.string().max(2000).optional(),\n /** Filter by topics */\n topics: z.array(z.string().max(100)).max(50).optional(),\n /** Filter by memory type */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']).optional(),\n /** Export format: json or csv (default: json) */\n format: z.enum(['json', 'csv']).optional(),\n /** Optional field selection. If omitted, all standard fields are included. */\n fields: z.array(z.string().max(50)).max(20).optional(),\n /** Maximum results to export (default 100, max 1000) */\n limit: z.number().min(1).max(1000).optional(),\n});\n\nexport const bulkUpdateRequest = z.object({\n /** Memory IDs to update (max 100) */\n ids: z.array(z.string().min(1)).min(1).max(100),\n /** Fields to update on all specified memories */\n updates: z.object({\n /** Replace topics on all specified memories */\n topics: z.array(z.string().max(100)).max(50).optional(),\n /** Set memory type on all specified memories */\n memoryType: z.enum(['episodic', 'semantic', 'procedural']).optional(),\n}),\n});\n\nexport const bulkUpdateResponse = z.object({\n /** Number of memories successfully updated */\n updated: z.number(),\n /** Number of memories that failed to update */\n failed: z.number(),\n /** Per-item error details */\n errors: z.array(z.object({\n /** Memory ID that failed */\n id: z.string(),\n /** Error message */\n error: z.string(),\n})),\n});\n\nexport const bulkDeleteRequest = z.object({\n /** Memory IDs to delete (max 100) */\n ids: z.array(z.string().min(1)).min(1).max(100),\n /** Must be true to confirm bulk deletion */\n confirmDeletion: z.literal(true),\n});\n\nexport const bulkDeleteResponse = z.object({\n /** Number of memories successfully deleted */\n deleted: z.number(),\n /** Number of memories that failed to delete */\n failed: z.number(),\n /** Per-item error details */\n errors: z.array(z.object({\n /** Memory ID that failed */\n id: z.string(),\n /** Error message */\n error: z.string(),\n})),\n});\n\nexport const bulkTagRequest = z.object({\n /** Memory IDs to modify tags on (max 100) */\n ids: z.array(z.string().min(1)).min(1).max(100),\n /** Topics to add to all specified memories */\n addTopics: z.array(z.string().max(100)).max(50).optional(),\n /** Topics to remove from all specified memories */\n removeTopics: z.array(z.string().max(100)).max(50).optional(),\n});\n\nexport const bulkTagResponse = z.object({\n /** Number of memories successfully modified */\n modified: z.number(),\n /** Number of memories that failed to modify */\n failed: z.number(),\n /** Per-item error details */\n errors: z.array(z.object({\n /** Memory ID that failed */\n id: z.string(),\n /** Error message */\n error: z.string(),\n})),\n});\n\nexport const buildContextRequest = z.object({\n /** What you are about to work on */\n context: z.string().min(1).max(2000),\n /** File paths you will be touching */\n files: z.array(z.string()).optional(),\n /** How far back to look for recent activity (hours, default 24) */\n recentHours: z.number().min(1).max(720).optional(),\n});\n\n/**\n * Most relevant active conversation, or null if none found\n */\nexport const buildContextActiveWork = z.object({\n /** Conversation ID */\n conversationId: z.string(),\n /** Conversation title */\n title: z.string().nullable(),\n /** ISO 8601 timestamp of last activity */\n lastActivity: z.string(),\n /** Most recent memory in this conversation */\n lastMemory: z.object({\n /** Memory ID */\n id: z.string(),\n /** Truncated content summary */\n summary: z.string(),\n}),\n}).nullable();\n\nexport const buildContextFact = z.object({\n /** Fact subject */\n subject: z.string(),\n /** Fact predicate */\n predicate: z.string(),\n /** Fact object */\n object: z.string(),\n /** Confidence score (0-1) */\n confidence: z.number(),\n /** Memory this fact was extracted from */\n sourceMemoryId: z.string(),\n});\n\nexport const buildContextGotcha = z.object({\n /** The gotcha fact text */\n fact: z.string(),\n /** Number of distinct source memories mentioning this */\n sourceCount: z.number(),\n /** Source memory IDs */\n sourceMemories: z.array(z.string()),\n /** ISO 8601 timestamp of most recent source */\n lastSeen: z.string(),\n});\n\nexport const buildContextActivity = z.object({\n /** Memory ID */\n id: z.string(),\n /** Truncated content summary (max 200 chars) */\n summary: z.string(),\n /** ISO 8601 timestamp */\n date: z.string(),\n /** Conversation ID */\n conversationId: z.string().nullable(),\n});\n\nexport const buildContextPattern = z.object({\n /** Pattern description */\n pattern: z.string(),\n /** Confidence score (0-1) */\n confidence: z.number(),\n});\n\n/**\n * Request metadata for transparency\n */\nexport const buildContextMeta = z.object({\n /** Search terms extracted from the context and files */\n contextTerms: z.array(z.string()),\n /** Hours window used for recent activity */\n recentHours: z.number(),\n /** Sections whose backing query exceeded the per-branch timeout and were returned empty. Present only when at least one branch timed out, so an empty section can otherwise be read as 'no data'. */\n timedOutSections: z.array(z.string()).optional(),\n});\n\nexport const buildContextResponse = z.lazy(() => z.object({\n /** Most relevant active conversation, or null if none found */\n activeWork: buildContextActiveWork,\n /** Facts related to the context terms */\n relevantFacts: z.array(buildContextFact),\n /** Gotchas — facts appearing in 2+ source memories */\n gotchas: z.array(buildContextGotcha),\n /** Recent relevant memories within the time window */\n recentActivity: z.array(buildContextActivity),\n /** Behavioral patterns related to the context */\n relatedPatterns: z.array(buildContextPattern),\n /** Request metadata for transparency */\n meta: buildContextMeta,\n}));\n\nexport const systemAlert = z.object({\n id: z.string().uuid(),\n title: z.string().min(1).max(120),\n body: z.string().min(1).max(2000),\n severity: z.enum(['info', 'warning', 'critical']),\n active: z.boolean().optional(),\n dismissible: z.boolean().optional(),\n targetAllUsers: z.boolean().optional(),\n targetUserIds: z.array(z.string()).optional(),\n createdAt: z.string().datetime(),\n expiresAt: z.string().datetime().nullable(),\n createdBy: z.string(),\n});\n\nexport const createSystemAlertRequest = z.object({\n title: z.string().min(1).max(120),\n body: z.string().min(1).max(2000),\n severity: z.enum(['info', 'warning', 'critical']).optional(),\n active: z.boolean().optional(),\n dismissible: z.boolean().optional(),\n targetAllUsers: z.boolean().optional(),\n targetUserIds: z.array(z.string().uuid()).max(1000).optional(),\n expiresAt: z.string().datetime().nullable().optional(),\n});\n\nexport const updateSystemAlertRequest = z.object({\n title: z.string().min(1).max(120).optional(),\n body: z.string().min(1).max(2000).optional(),\n severity: z.enum(['info', 'warning', 'critical']).optional(),\n active: z.boolean().optional(),\n dismissible: z.boolean().optional(),\n targetAllUsers: z.boolean().optional(),\n targetUserIds: z.array(z.string().uuid()).max(1000).optional(),\n expiresAt: z.string().datetime().nullable().optional(),\n});\n","/**\n * MemNexus SDK Client\n * Auto-generated by sdk-generator - do not edit manually.\n */\n\nimport type { SdkConfig, Environment } from './http/http-types.js';\n\nimport { UsersService } from './services/users-service.js';\nimport { TopicsService } from './services/topics-service.js';\nimport { SystemService } from './services/system-service.js';\nimport { PatternsService } from './services/patterns-service.js';\nimport { BehaviorService } from './services/behavior-service.js';\nimport { RecommendationsService } from './services/recommendations-service.js';\nimport { NarrativesService } from './services/narratives-service.js';\nimport { MonitoringService } from './services/monitoring-service.js';\nimport { MemoriesService } from './services/memories-service.js';\nimport { InvitesService } from './services/invites-service.js';\nimport { HealthService } from './services/health-service.js';\nimport { GraphragService } from './services/graphrag-service.js';\nimport { FactsService } from './services/facts-service.js';\nimport { EntitiesService } from './services/entities-service.js';\nimport { ConversationsService } from './services/conversations-service.js';\nimport { BillingService } from './services/billing-service.js';\nimport { ArtifactsService } from './services/artifacts-service.js';\nimport { ApiKeysService } from './services/api-keys-service.js';\nimport { AlertsService } from './services/alerts-service.js';\nimport { AdminService } from './services/admin-service.js';\nimport { AdminAlertsService } from './services/admin-alerts-service.js';\nimport { AdminPipelineService } from './services/admin-pipeline-service.js';\n\n// Re-export types\nexport * from './http/http-types.js';\nexport * from './models/types.js';\nexport * from './models/schemas.js';\n\n// Re-export services\nexport { UsersService } from './services/users-service.js';\nexport { TopicsService } from './services/topics-service.js';\nexport { SystemService } from './services/system-service.js';\nexport { PatternsService } from './services/patterns-service.js';\nexport { BehaviorService } from './services/behavior-service.js';\nexport { RecommendationsService } from './services/recommendations-service.js';\nexport { NarrativesService } from './services/narratives-service.js';\nexport { MonitoringService } from './services/monitoring-service.js';\nexport { MemoriesService } from './services/memories-service.js';\nexport { InvitesService } from './services/invites-service.js';\nexport { HealthService } from './services/health-service.js';\nexport { GraphragService } from './services/graphrag-service.js';\nexport { FactsService } from './services/facts-service.js';\nexport { EntitiesService } from './services/entities-service.js';\nexport { ConversationsService } from './services/conversations-service.js';\nexport { BillingService } from './services/billing-service.js';\nexport { ArtifactsService } from './services/artifacts-service.js';\nexport { ApiKeysService } from './services/api-keys-service.js';\nexport { AlertsService } from './services/alerts-service.js';\nexport { AdminService } from './services/admin-service.js';\nexport { AdminAlertsService } from './services/admin-alerts-service.js';\nexport { AdminPipelineService } from './services/admin-pipeline-service.js';\n\n/**\n * MemNexus SDK client.\n * Provides access to all API services.\n */\nexport class Memnexus {\n private readonly config: SdkConfig;\n\n /** User management and profile endpoints operations */\n public readonly users: UsersService;\n /** Topic detection, clustering, and management endpoints operations */\n public readonly topics: TopicsService;\n /** System health, monitoring, and configuration endpoints operations */\n public readonly system: SystemService;\n /** Pattern detection and behavioral analysis endpoints operations */\n public readonly patterns: PatternsService;\n /** Behavioral pattern tracking and state management endpoints operations */\n public readonly behavior: BehaviorService;\n /** Behavioral recommendation management endpoints (v2) operations */\n public readonly recommendations: RecommendationsService;\n /** Narrative thread management endpoints operations */\n public readonly narratives: NarrativesService;\n /** Observability and metrics endpoints for production monitoring operations */\n public readonly monitoring: MonitoringService;\n /** Memory management and retrieval endpoints operations */\n public readonly memories: MemoriesService;\n /** Invite code validation and gate status endpoints operations */\n public readonly invites: InvitesService;\n /** Health check endpoints operations */\n public readonly health: HealthService;\n /** Graph-based retrieval augmented generation endpoints operations */\n public readonly graphrag: GraphragService;\n /** Fact extraction and management endpoints operations */\n public readonly facts: FactsService;\n /** Entity extraction and discovery endpoints operations */\n public readonly entities: EntitiesService;\n /** Conversation tracking and analysis endpoints operations */\n public readonly conversations: ConversationsService;\n /** Subscription billing and payment management endpoints operations */\n public readonly billing: BillingService;\n /** Artifact storage and retrieval endpoints operations */\n public readonly artifacts: ArtifactsService;\n /** API key management endpoints operations */\n public readonly apiKeys: ApiKeysService;\n /** System alerts banner endpoints (customer portal) operations */\n public readonly alerts: AlertsService;\n /** Admin management endpoints for invite codes and platform configuration operations */\n public readonly admin: AdminService;\n /** Admin endpoints for managing system alerts operations */\n public readonly adminAlerts: AdminAlertsService;\n /** Admin Pipeline operations */\n public readonly adminPipeline: AdminPipelineService;\n\n /**\n * Create a new SDK client.\n * @param config - SDK configuration\n */\n constructor(config: SdkConfig = {}) {\n this.config = {\n baseUrl: config.baseUrl || 'http://localhost:3000',\n ...config,\n };\n\n this.users = new UsersService(this.config);\n this.topics = new TopicsService(this.config);\n this.system = new SystemService(this.config);\n this.patterns = new PatternsService(this.config);\n this.behavior = new BehaviorService(this.config);\n this.recommendations = new RecommendationsService(this.config);\n this.narratives = new NarrativesService(this.config);\n this.monitoring = new MonitoringService(this.config);\n this.memories = new MemoriesService(this.config);\n this.invites = new InvitesService(this.config);\n this.health = new HealthService(this.config);\n this.graphrag = new GraphragService(this.config);\n this.facts = new FactsService(this.config);\n this.entities = new EntitiesService(this.config);\n this.conversations = new ConversationsService(this.config);\n this.billing = new BillingService(this.config);\n this.artifacts = new ArtifactsService(this.config);\n this.apiKeys = new ApiKeysService(this.config);\n this.alerts = new AlertsService(this.config);\n this.admin = new AdminService(this.config);\n this.adminAlerts = new AdminAlertsService(this.config);\n this.adminPipeline = new AdminPipelineService(this.config);\n }\n\n /**\n * Set the API token for authentication.\n * @param token - Bearer token\n */\n setToken(token: string): void {\n this.config.token = token;\n this.users.token = token;\n this.topics.token = token;\n this.system.token = token;\n this.patterns.token = token;\n this.behavior.token = token;\n this.recommendations.token = token;\n this.narratives.token = token;\n this.monitoring.token = token;\n this.memories.token = token;\n this.invites.token = token;\n this.health.token = token;\n this.graphrag.token = token;\n this.facts.token = token;\n this.entities.token = token;\n this.conversations.token = token;\n this.billing.token = token;\n this.artifacts.token = token;\n this.apiKeys.token = token;\n this.alerts.token = token;\n this.admin.token = token;\n this.adminAlerts.token = token;\n this.adminPipeline.token = token;\n }\n\n /**\n * Set the base URL for API requests.\n * @param baseUrl - API base URL\n */\n setBaseUrl(baseUrl: string): void {\n this.config.baseUrl = baseUrl;\n this.users.baseUrl = baseUrl;\n this.topics.baseUrl = baseUrl;\n this.system.baseUrl = baseUrl;\n this.patterns.baseUrl = baseUrl;\n this.behavior.baseUrl = baseUrl;\n this.recommendations.baseUrl = baseUrl;\n this.narratives.baseUrl = baseUrl;\n this.monitoring.baseUrl = baseUrl;\n this.memories.baseUrl = baseUrl;\n this.invites.baseUrl = baseUrl;\n this.health.baseUrl = baseUrl;\n this.graphrag.baseUrl = baseUrl;\n this.facts.baseUrl = baseUrl;\n this.entities.baseUrl = baseUrl;\n this.conversations.baseUrl = baseUrl;\n this.billing.baseUrl = baseUrl;\n this.artifacts.baseUrl = baseUrl;\n this.apiKeys.baseUrl = baseUrl;\n this.alerts.baseUrl = baseUrl;\n this.admin.baseUrl = baseUrl;\n this.adminAlerts.baseUrl = baseUrl;\n this.adminPipeline.baseUrl = baseUrl;\n }\n\n /**\n * Set the environment.\n * @param environment - API environment\n */\n setEnvironment(environment: Environment): void {\n this.config.environment = environment;\n this.users.environment = environment;\n this.topics.environment = environment;\n this.system.environment = environment;\n this.patterns.environment = environment;\n this.behavior.environment = environment;\n this.recommendations.environment = environment;\n this.narratives.environment = environment;\n this.monitoring.environment = environment;\n this.memories.environment = environment;\n this.invites.environment = environment;\n this.health.environment = environment;\n this.graphrag.environment = environment;\n this.facts.environment = environment;\n this.entities.environment = environment;\n this.conversations.environment = environment;\n this.billing.environment = environment;\n this.artifacts.environment = environment;\n this.apiKeys.environment = environment;\n this.alerts.environment = environment;\n this.admin.environment = environment;\n this.adminAlerts.environment = environment;\n this.adminPipeline.environment = environment;\n }\n}\n\nexport default Memnexus;"],"mappings":"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","names":["SerializationStyle","ContentType","Environment","error"]}
|