@kortexya/reasoninglayer 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/config.ts","../src/errors.ts","../src/http.ts","../src/websocket.ts","../src/resources/sorts.ts","../src/resources/terms.ts","../src/resources/inference.ts","../src/resources/query.ts","../src/resources/cognitive.ts","../src/resources/fuzzy.ts","../src/resources/constraints.ts","../src/resources/namespaces.ts","../src/resources/collections.ts","../src/resources/execution.ts","../src/resources/causal.ts","../src/resources/ingestion.ts","../src/resources/reviews.ts","../src/resources/visualization.ts","../src/resources/ilp.ts","../src/resources/reasoning.ts","../src/resources/statistical.ts","../src/resources/control.ts","../src/resources/spaces.ts","../src/resources/row.ts","../src/resources/sources.ts","../src/resources/communities.ts","../src/resources/utilities.ts","../src/resources/scenarios.ts","../src/resources/action-reviews.ts","../src/resources/discovery.ts","../src/resources/extract.ts","../src/resources/oversight.ts","../src/resources/cdl.ts","../src/resources/neuro-symbolic.ts","../src/resources/analysis.ts","../src/resources/preferences.ts","../src/client.ts","../src/builders/value.ts","../src/builders/feature-input.ts","../src/builders/term-input.ts","../src/builders/guard.ts","../src/builders/sort.ts","../src/builders/psi.ts","../src/builders/allen.ts","../src/utils/discrimination.ts"],"names":["BASE"],"mappings":"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","file":"index.js","sourcesContent":["import type { Interceptor } from './types/common.js';\n\n/**\n * SDK version — sent as `X-SDK-Version` header on every request.\n *\n * @remarks\n * This is the single source of truth for the version constant.\n * The `scripts/release.sh` script updates this value alongside `package.json`.\n */\nexport const SDK_VERSION = '0.1.5';\n\n/**\n * Configuration for the Reasoning Layer client.\n *\n * @remarks\n * Required fields: `baseUrl` and `tenantId`. All other fields have sensible defaults.\n * No environment variable auto-detection — configuration is always explicit.\n *\n * @example\n * ```typescript\n * const config: ClientConfig = {\n * baseUrl: 'http://localhost:8083',\n * tenantId: '550e8400-e29b-41d4-a716-446655440000',\n * timeoutMs: 15000,\n * maxRetries: 2,\n * };\n * ```\n */\nexport interface ClientConfig {\n /** Base URL of the Reasoning Layer API (e.g., `\"http://localhost:8083\"`). */\n baseUrl: string;\n /** Tenant UUID. Set once, NOT overridable per-call. */\n tenantId: string;\n /** Default user UUID for `X-User-Id` header. Overridable per-call via `RequestOptions`. */\n userId?: string;\n /** Default namespace UUID for `X-Namespace-Id` header. Overridable per-call via `RequestOptions`. */\n namespaceId?: string;\n /** Authenticated user identifier for `X-Authenticated-User` header. */\n authenticatedUser?: string;\n /** Default request timeout in milliseconds. Overridable per-call. Default: 30000. */\n timeoutMs?: number;\n /** Maximum number of retry attempts. Default: 3. */\n maxRetries?: number;\n /** Whether to retry on 503 (Service Unavailable). Default: false. */\n retryOn503?: boolean;\n /** User-provided interceptors inserted into the request pipeline. */\n interceptors?: Interceptor[];\n /**\n * Custom `fetch` implementation for dependency injection.\n * Useful for testing (inject a mock) or custom environments.\n * Default: `globalThis.fetch`.\n */\n fetch?: typeof globalThis.fetch;\n}\n\n/**\n * Fully resolved configuration with all defaults applied.\n *\n * Created by {@link resolveConfig} from a {@link ClientConfig}.\n * All fields are required (no optionals).\n */\nexport interface ResolvedConfig {\n /** Base URL of the Reasoning Layer API. Trailing slash is stripped. */\n baseUrl: string;\n /** Tenant UUID. */\n tenantId: string;\n /** Default user UUID, or undefined if not set. */\n userId: string | undefined;\n /** Default namespace UUID, or undefined if not set. */\n namespaceId: string | undefined;\n /** Authenticated user identifier, or undefined if not set. */\n authenticatedUser: string | undefined;\n /** Request timeout in milliseconds. */\n timeoutMs: number;\n /** Maximum number of retry attempts. */\n maxRetries: number;\n /** Whether to retry on 503 (Service Unavailable). */\n retryOn503: boolean;\n /** User-provided interceptors. */\n interceptors: Interceptor[];\n /** The `fetch` implementation to use. */\n fetch: typeof globalThis.fetch;\n}\n\n/**\n * Resolve a {@link ClientConfig} into a {@link ResolvedConfig} with all defaults applied.\n *\n * @param config - The user-provided configuration.\n * @returns The fully resolved configuration.\n * @throws {Error} If required fields are missing or invalid.\n *\n * @example\n * ```typescript\n * const resolved = resolveConfig({\n * baseUrl: 'http://localhost:8083',\n * tenantId: '550e8400-e29b-41d4-a716-446655440000',\n * });\n * // resolved.timeoutMs === 30000\n * // resolved.maxRetries === 3\n * ```\n */\nexport function resolveConfig(config: ClientConfig): ResolvedConfig {\n if (!config.baseUrl) {\n throw new Error('ClientConfig.baseUrl is required');\n }\n if (!config.tenantId) {\n throw new Error('ClientConfig.tenantId is required');\n }\n\n return {\n baseUrl: config.baseUrl.replace(/\\/+$/, ''),\n tenantId: config.tenantId,\n userId: config.userId,\n namespaceId: config.namespaceId,\n authenticatedUser: config.authenticatedUser,\n timeoutMs: config.timeoutMs ?? 30_000,\n maxRetries: config.maxRetries ?? 3,\n retryOn503: config.retryOn503 ?? false,\n interceptors: config.interceptors ?? [],\n fetch: config.fetch ?? globalThis.fetch,\n };\n}\n","/**\n * Base error class for all Reasoning Layer SDK errors.\n *\n * All errors thrown by the SDK extend this class, enabling catch-all handling:\n * ```typescript\n * try { ... } catch (e) {\n * if (e instanceof ReasoningLayerError) { ... }\n * }\n * ```\n */\nexport class ReasoningLayerError extends Error {\n override name: string = 'ReasoningLayerError';\n\n constructor(message: string, options?: { cause?: Error }) {\n super(message, options);\n }\n}\n\n/**\n * HTTP API error (4xx/5xx response from the backend).\n *\n * Carries the HTTP status code, parsed response body, and response headers.\n */\nexport class ApiError extends ReasoningLayerError {\n override name: string = 'ApiError';\n\n /** HTTP status code. */\n readonly status: number;\n /** Backend error code (from response body `error` field), if present. */\n readonly errorCode: string | undefined;\n /** Parsed response body. */\n readonly body: unknown;\n /** Response headers. */\n readonly headers: Headers;\n\n constructor(\n message: string,\n status: number,\n body: unknown,\n headers: Headers,\n errorCode?: string,\n ) {\n super(message);\n this.status = status;\n this.body = body;\n this.headers = headers;\n this.errorCode = errorCode;\n }\n}\n\n/**\n * Bad request error (HTTP 400).\n *\n * The request was malformed or contained invalid parameters.\n */\nexport class BadRequestError extends ApiError {\n override name: string = 'BadRequestError';\n\n constructor(message: string, body: unknown, headers: Headers, errorCode?: string) {\n super(message, 400, body, headers, errorCode);\n }\n}\n\n/**\n * Not found error (HTTP 404).\n *\n * The requested resource does not exist.\n */\nexport class NotFoundError extends ApiError {\n override name: string = 'NotFoundError';\n\n constructor(message: string, body: unknown, headers: Headers, errorCode?: string) {\n super(message, 404, body, headers, errorCode);\n }\n}\n\n/**\n * Constraint violation error (HTTP 409).\n *\n * A type constraint or uniqueness constraint was violated.\n * Carries structured information about which term, feature, and constraint failed.\n */\nexport class ConstraintViolationError extends ApiError {\n override name: string = 'ConstraintViolationError';\n\n /** Term ID that violated the constraint, if available. */\n readonly termId: string | undefined;\n /** Feature name that violated the constraint, if available. */\n readonly feature: string | undefined;\n /** Constraint description, if available. */\n readonly constraint: string | undefined;\n\n constructor(\n message: string,\n body: unknown,\n headers: Headers,\n errorCode?: string,\n termId?: string,\n feature?: string,\n constraint?: string,\n ) {\n super(message, 409, body, headers, errorCode);\n this.termId = termId;\n this.feature = feature;\n this.constraint = constraint;\n }\n}\n\n/**\n * Rate limit error (HTTP 429).\n *\n * The request was rate-limited. Carries rate limit metadata from response headers.\n */\nexport class RateLimitError extends ApiError {\n override name: string = 'RateLimitError';\n\n /** Seconds to wait before retrying, or null if not specified. */\n readonly retryAfter: number | null;\n /** Maximum requests allowed in the current window, or null if not specified. */\n readonly limit: number | null;\n /** Requests remaining in the current window, or null if not specified. */\n readonly remaining: number | null;\n\n constructor(\n message: string,\n body: unknown,\n headers: Headers,\n errorCode?: string,\n retryAfter?: number | null,\n limit?: number | null,\n remaining?: number | null,\n ) {\n super(message, 429, body, headers, errorCode);\n this.retryAfter = retryAfter ?? null;\n this.limit = limit ?? null;\n this.remaining = remaining ?? null;\n }\n}\n\n/**\n * Internal server error (HTTP 500+).\n *\n * An unexpected error occurred on the backend.\n */\nexport class InternalServerError extends ApiError {\n override name: string = 'InternalServerError';\n\n constructor(message: string, status: number, body: unknown, headers: Headers, errorCode?: string) {\n super(message, status, body, headers, errorCode);\n }\n}\n\n/**\n * Timeout error.\n *\n * The request exceeded the configured timeout duration.\n */\nexport class TimeoutError extends ReasoningLayerError {\n override name: string = 'TimeoutError';\n\n /** The timeout duration in milliseconds that was exceeded. */\n readonly timeoutMs: number;\n\n constructor(timeoutMs: number) {\n super(`Request timed out after ${timeoutMs}ms`);\n this.timeoutMs = timeoutMs;\n }\n}\n\n/**\n * Client-side validation error.\n *\n * Thrown before a request is sent when input fails client-side validation.\n */\nexport class ValidationError extends ReasoningLayerError {\n override name: string = 'ValidationError';\n\n /** The field that failed validation, if applicable. */\n readonly field: string | undefined;\n\n constructor(message: string, field?: string) {\n super(message);\n this.field = field;\n }\n}\n\n/**\n * Network error.\n *\n * Wraps `fetch` connection failures (DNS resolution, connection refused, etc.).\n */\nexport class NetworkError extends ReasoningLayerError {\n override name: string = 'NetworkError';\n\n constructor(message: string, cause?: Error) {\n super(message, { cause });\n }\n}\n\n/**\n * Parse a numeric header value, returning null if absent or not a valid number.\n */\nfunction parseNumericHeader(headers: Headers, name: string): number | null {\n const value = headers.get(name);\n if (value === null) return null;\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : null;\n}\n\n/**\n * Parse rate limit headers from a response.\n */\nfunction parseRateLimitHeaders(headers: Headers): {\n retryAfter: number | null;\n limit: number | null;\n remaining: number | null;\n} {\n return {\n retryAfter: parseNumericHeader(headers, 'retry-after'),\n limit: parseNumericHeader(headers, 'x-ratelimit-limit'),\n remaining: parseNumericHeader(headers, 'x-ratelimit-remaining'),\n };\n}\n\n/**\n * Factory function that creates the appropriate {@link ApiError} subclass for a given HTTP status.\n *\n * @param status - HTTP status code.\n * @param body - Parsed response body.\n * @param headers - Response headers.\n * @returns The appropriate error subclass instance.\n *\n * @remarks\n * Status code mapping:\n * - 400 → {@link BadRequestError}\n * - 404 → {@link NotFoundError}\n * - 409 → {@link ConstraintViolationError} (parses termId, feature, constraint from body)\n * - 429 → {@link RateLimitError} (parses rate limit headers)\n * - 500+ → {@link InternalServerError}\n * - Other 4xx → {@link ApiError}\n */\nexport function createApiError(status: number, body: unknown, headers: Headers): ApiError {\n const errorCode = isErrorBody(body) ? body.error : undefined;\n const message = isErrorBody(body) ? body.message : `HTTP ${status}`;\n\n switch (status) {\n case 400:\n return new BadRequestError(message, body, headers, errorCode);\n\n case 404:\n return new NotFoundError(message, body, headers, errorCode);\n\n case 409: {\n let termId: string | undefined;\n let feature: string | undefined;\n let constraint: string | undefined;\n\n if (isConstraintViolationBody(body)) {\n termId = body.details?.term_id;\n feature = body.details?.feature;\n constraint = body.details?.constraint;\n }\n\n return new ConstraintViolationError(\n message,\n body,\n headers,\n errorCode,\n termId,\n feature,\n constraint,\n );\n }\n\n case 429: {\n const rl = parseRateLimitHeaders(headers);\n return new RateLimitError(message, body, headers, errorCode, rl.retryAfter, rl.limit, rl.remaining);\n }\n\n default:\n if (status >= 500) {\n return new InternalServerError(message, status, body, headers, errorCode);\n }\n return new ApiError(message, status, body, headers, errorCode);\n }\n}\n\n/** Type guard for standard error response body shape. */\nfunction isErrorBody(body: unknown): body is { error: string; message: string } {\n if (typeof body !== 'object' || body === null) return false;\n // Accepted: TypeScript cannot narrow `object` to indexable without cast after typeof+null check\n const obj = body as Record<string, unknown>;\n return typeof obj.error === 'string' && typeof obj.message === 'string';\n}\n\n/** Type guard for constraint violation response body with details. */\nfunction isConstraintViolationBody(\n body: unknown,\n): body is { error: string; message: string; details?: { term_id?: string; feature?: string; constraint?: string } } {\n if (!isErrorBody(body)) return false;\n if (!('details' in body)) return false;\n // Accepted: need index access after in-check; TypeScript narrows to `object & Record<\"details\", unknown>` but not indexable\n const obj = body as Record<string, unknown>;\n return typeof obj.details === 'object' && obj.details !== null;\n}\n","import { SDK_VERSION } from './config.js';\nimport type { ResolvedConfig } from './config.js';\nimport type { ApiResponse, RateLimitInfo, RequestOptions, Interceptor } from './types/common.js';\nimport {\n TimeoutError,\n NetworkError,\n RateLimitError,\n createApiError,\n} from './errors.js';\n\n/** HTTP methods supported by the client. */\ntype HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n\n/** Options for an internal HTTP request. */\ninterface InternalRequestOptions {\n body?: unknown;\n options?: RequestOptions;\n}\n\n/**\n * HTTP client for the Reasoning Layer API.\n *\n * Handles authentication headers, timeout, retry logic, interceptors,\n * and error mapping. Used internally by resource clients.\n *\n * @remarks\n * Dependency rule: imports from `config.ts`, `errors.ts`, and `types/common.ts` only.\n * Does NOT import from `builders/` or `resources/`.\n */\nexport class HttpClient {\n private readonly config: ResolvedConfig;\n\n constructor(config: ResolvedConfig) {\n this.config = config;\n }\n\n /**\n * Send a GET request.\n *\n * @param path - API path (e.g., `/api/v1/sorts`).\n * @param options - Per-call request options.\n * @returns Parsed JSON response body.\n */\n async get<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>('GET', path, { options });\n }\n\n /**\n * Send a POST request.\n *\n * @param path - API path.\n * @param body - Request body (will be JSON-serialized).\n * @param options - Per-call request options.\n * @returns Parsed JSON response body.\n */\n async post<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>('POST', path, { body, options });\n }\n\n /**\n * Send a PUT request.\n *\n * @param path - API path.\n * @param body - Request body (will be JSON-serialized).\n * @param options - Per-call request options.\n * @returns Parsed JSON response body.\n */\n async put<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>('PUT', path, { body, options });\n }\n\n /**\n * Send a DELETE request.\n *\n * @param path - API path.\n * @param options - Per-call request options.\n * @returns Parsed JSON response body.\n */\n async delete<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>('DELETE', path, { options });\n }\n\n /**\n * Send a request and return the result wrapped in {@link ApiResponse} with metadata.\n *\n * @param method - HTTP method.\n * @param path - API path.\n * @param reqOptions - Internal request options.\n * @returns Response wrapped in `ApiResponse<T>`.\n */\n async requestWithMetadata<T>(\n method: HttpMethod,\n path: string,\n reqOptions?: InternalRequestOptions,\n ): Promise<ApiResponse<T>> {\n const { data, status, headers, rateLimit } = await this.executeRequest<T>(\n method,\n path,\n reqOptions,\n );\n return { data, status, headers, rateLimit };\n }\n\n /**\n * Core request method. Handles URL construction, auth headers, interceptors,\n * timeout, retry, and error mapping.\n */\n async request<T>(\n method: HttpMethod,\n path: string,\n reqOptions?: InternalRequestOptions,\n ): Promise<T> {\n const result = await this.executeRequest<T>(method, path, reqOptions);\n return result.data;\n }\n\n /**\n * Execute a request with full metadata tracking.\n */\n private async executeRequest<T>(\n method: HttpMethod,\n path: string,\n reqOptions?: InternalRequestOptions,\n ): Promise<{ data: T; status: number; headers: Headers; rateLimit: RateLimitInfo | null }> {\n const perCall = reqOptions?.options;\n const maxRetries = perCall?.retries ?? this.config.maxRetries;\n const timeoutMs = perCall?.timeoutMs ?? this.config.timeoutMs;\n\n const url = `${this.config.baseUrl}${path}`;\n\n const headers = new Headers({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'X-SDK-Version': SDK_VERSION,\n });\n\n // Auth headers — tenantId is ALWAYS from config, never overridden per-call\n headers.set('X-Tenant-Id', this.config.tenantId);\n\n // Per-call overridable headers\n const userId = perCall?.userId ?? this.config.userId;\n if (userId) {\n headers.set('X-User-Id', userId);\n }\n\n const namespaceId = perCall?.namespaceId ?? this.config.namespaceId;\n if (namespaceId) {\n headers.set('X-Namespace-Id', namespaceId);\n }\n\n if (this.config.authenticatedUser) {\n headers.set('X-Authenticated-User', this.config.authenticatedUser);\n }\n\n const requestInit: RequestInit = {\n method,\n headers,\n };\n\n if (reqOptions?.body !== undefined) {\n requestInit.body = JSON.stringify(reqOptions.body);\n }\n\n let lastError: Error | undefined;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n // Wait before retry (not on first attempt)\n if (attempt > 0 && lastError) {\n const delay = this.calculateRetryDelay(attempt, lastError);\n await sleep(delay);\n }\n\n try {\n const response = await this.executeSingleRequest(\n url,\n requestInit,\n timeoutMs,\n perCall?.signal,\n );\n\n const rateLimit = parseRateLimitInfo(response.headers);\n\n // Success\n if (response.ok) {\n // Handle 204 No Content\n if (response.status === 204) {\n return {\n // Accepted: 204 No Content has no body; caller must handle undefined for void endpoints\n data: undefined as T,\n status: response.status,\n headers: response.headers,\n rateLimit,\n };\n }\n\n // Accepted: generic HTTP response cannot be narrowed to T at compile time\n const data = (await response.json()) as T;\n return { data, status: response.status, headers: response.headers, rateLimit };\n }\n\n // Error — parse body and create appropriate error\n let body: unknown;\n try {\n body = await response.json();\n } catch {\n body = { error: 'unknown', message: `HTTP ${response.status}` };\n }\n\n const apiError = createApiError(response.status, body, response.headers);\n\n // Retry on 429 (always) or 503 (if configured)\n if (response.status === 429 && attempt < maxRetries) {\n lastError = apiError;\n continue;\n }\n if (response.status === 503 && this.config.retryOn503 && attempt < maxRetries) {\n lastError = apiError;\n continue;\n }\n\n throw apiError;\n } catch (error) {\n // Re-throw SDK errors that should not be retried\n if (error instanceof TimeoutError) throw error;\n if (error instanceof RateLimitError && attempt >= maxRetries) throw error;\n\n // If it's an API error and not retryable, re-throw\n if (isApiErrorLike(error) && !isRetryableStatus(error, this.config.retryOn503)) {\n throw error;\n }\n\n // Network errors — could retry\n if (isNetworkFailure(error)) {\n lastError = error instanceof NetworkError ? error : new NetworkError(\n error instanceof Error ? error.message : 'Network request failed',\n error instanceof Error ? error : undefined,\n );\n if (attempt >= maxRetries) throw lastError;\n continue;\n }\n\n // Unknown error — re-throw\n throw error;\n }\n }\n\n // Should not reach here, but if we do, throw the last error\n throw lastError ?? new NetworkError('Request failed after retries');\n }\n\n /**\n * Execute a single fetch call with timeout and interceptor chain.\n */\n private async executeSingleRequest(\n url: string,\n init: RequestInit,\n timeoutMs: number,\n userSignal?: AbortSignal,\n ): Promise<Response> {\n const timeoutController = new AbortController();\n const timeoutId = setTimeout(() => timeoutController.abort(), timeoutMs);\n\n // Combine user signal with timeout signal\n let combinedSignal: AbortSignal;\n if (userSignal) {\n combinedSignal = AbortSignal.any([timeoutController.signal, userSignal]);\n } else {\n combinedSignal = timeoutController.signal;\n }\n\n const request = new Request(url, {\n ...init,\n signal: combinedSignal,\n });\n\n try {\n // Apply interceptors\n const fetchFn = this.config.fetch;\n const baseFetch = (req: Request): Promise<Response> => fetchFn(req);\n const chain = this.buildInterceptorChain(this.config.interceptors, baseFetch);\n\n const response = await chain(request);\n return response;\n } catch (error) {\n if (isAbortError(error)) {\n // Determine if it was our timeout or the user's signal\n if (timeoutController.signal.aborted) {\n throw new TimeoutError(timeoutMs);\n }\n // User-provided signal was aborted — re-throw as-is\n throw error;\n }\n\n // Network failure\n throw new NetworkError(\n error instanceof Error ? error.message : 'Network request failed',\n error instanceof Error ? error : undefined,\n );\n } finally {\n clearTimeout(timeoutId);\n }\n }\n\n /**\n * Build the interceptor chain, composing user interceptors with the base fetch.\n */\n private buildInterceptorChain(\n interceptors: Interceptor[],\n baseFetch: (req: Request) => Promise<Response>,\n ): (req: Request) => Promise<Response> {\n // Chain interceptors in order: first interceptor wraps second, which wraps third, etc.\n let chain = baseFetch;\n for (let i = interceptors.length - 1; i >= 0; i--) {\n const interceptor = interceptors[i];\n const next = chain;\n chain = (req: Request) => interceptor(req, next);\n }\n return chain;\n }\n\n /**\n * Calculate retry delay with exponential backoff and jitter.\n *\n * If the last error was a RateLimitError with a Retry-After value, use that instead.\n */\n private calculateRetryDelay(attempt: number, lastError: Error): number {\n // Respect Retry-After header from rate limit responses\n if (lastError instanceof RateLimitError && lastError.retryAfter !== null) {\n return lastError.retryAfter * 1000; // Convert seconds to ms\n }\n\n // Exponential backoff: 1s * 2^(attempt-1) + jitter\n const baseDelay = 1000;\n const maxDelay = 30_000;\n const exponentialDelay = baseDelay * Math.pow(2, attempt - 1);\n const jitter = Math.random() * 1000;\n return Math.min(exponentialDelay + jitter, maxDelay);\n }\n}\n\n/** Parse rate limit information from response headers. */\nfunction parseRateLimitInfo(headers: Headers): RateLimitInfo | null {\n const limitStr = headers.get('x-ratelimit-limit');\n const remainingStr = headers.get('x-ratelimit-remaining');\n const retryAfterStr = headers.get('retry-after');\n\n // Only return rate limit info if at least one header is present\n if (limitStr === null && remainingStr === null && retryAfterStr === null) {\n return null;\n }\n\n const limit = limitStr !== null ? Number(limitStr) : 0;\n const remaining = remainingStr !== null ? Number(remainingStr) : 0;\n const retryAfter = retryAfterStr !== null ? Number(retryAfterStr) : null;\n\n return {\n limit: Number.isFinite(limit) ? limit : 0,\n remaining: Number.isFinite(remaining) ? remaining : 0,\n retryAfter: retryAfter !== null && Number.isFinite(retryAfter) ? retryAfter : null,\n };\n}\n\n/** Check if an error is an AbortError (from AbortController). */\nfunction isAbortError(error: unknown): boolean {\n return error instanceof DOMException && error.name === 'AbortError';\n}\n\n/** Check if an error looks like a network failure (not an API error). */\nfunction isNetworkFailure(error: unknown): boolean {\n if (error instanceof NetworkError) return true;\n if (error instanceof TypeError) return true; // fetch throws TypeError for network failures\n return false;\n}\n\n/** Check if an error has a status property (ApiError-like). */\nfunction isApiErrorLike(error: unknown): error is { status: number } {\n return typeof error === 'object' && error !== null && 'status' in error;\n}\n\n/** Check if a status code should trigger a retry. */\nfunction isRetryableStatus(error: { status: number }, retryOn503: boolean): boolean {\n if (error.status === 429) return true;\n if (error.status === 503 && retryOn503) return true;\n return false;\n}\n\n/** Sleep for a given number of milliseconds. */\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","import type { ResolvedConfig } from './config.js';\nimport { NetworkError, ReasoningLayerError } from './errors.js';\n\n/** Handler for incoming WebSocket messages. */\nexport type MessageHandler<T = unknown> = (data: T) => void;\n\n/** Handler for reconnection events. */\nexport type ReconnectHandler = (attempt: number) => void;\n\n/**\n * An active WebSocket connection with auto-reconnect.\n *\n * @remarks\n * Uses the native WebSocket API (Node 18+, browsers, Deno, Bun).\n * Automatically reconnects with exponential backoff + jitter\n * (1s -> 2s -> 4s -> ... -> max 30s), up to 10 attempts.\n */\nexport class WebSocketConnection {\n private ws: WebSocket | null = null;\n private messageHandlers: MessageHandler[] = [];\n private reconnectHandlers: ReconnectHandler[] = [];\n private closeHandler: (() => void) | null = null;\n private errorHandler: ((error: Error) => void) | null = null;\n private reconnectAttempt = 0;\n private reconnectTimer: ReturnType<typeof setTimeout> | null = null;\n private intentionallyClosed = false;\n private _connected = false;\n\n private readonly url: string;\n private readonly maxReconnectAttempts: number;\n private readonly maxReconnectDelay: number;\n private readonly baseDelay: number;\n\n /** @internal */\n constructor(\n url: string,\n options?: {\n maxReconnectAttempts?: number;\n maxReconnectDelay?: number;\n baseDelay?: number;\n },\n ) {\n this.url = url;\n this.maxReconnectAttempts = options?.maxReconnectAttempts ?? 10;\n this.maxReconnectDelay = options?.maxReconnectDelay ?? 30_000;\n this.baseDelay = options?.baseDelay ?? 1_000;\n this.connect();\n }\n\n /**\n * Whether the WebSocket is currently connected.\n */\n get connected(): boolean {\n return this._connected;\n }\n\n /**\n * Register a handler for incoming messages.\n *\n * @param handler - Called with the parsed JSON message data.\n */\n onMessage<T = unknown>(handler: MessageHandler<T>): void {\n // Accepted: MessageHandler<T> is contravariant but runtime data is always unknown from JSON.parse\n this.messageHandlers.push(handler as MessageHandler);\n }\n\n /**\n * Register a handler for reconnection events.\n *\n * @param handler - Called with the reconnection attempt number.\n */\n onReconnect(handler: ReconnectHandler): void {\n this.reconnectHandlers.push(handler);\n }\n\n /**\n * Register a handler for connection close events.\n *\n * @param handler - Called when the connection closes.\n */\n onClose(handler: () => void): void {\n this.closeHandler = handler;\n }\n\n /**\n * Register a handler for connection errors.\n *\n * @param handler - Called with the error.\n */\n onError(handler: (error: Error) => void): void {\n this.errorHandler = handler;\n }\n\n /**\n * Close the WebSocket connection.\n *\n * @remarks\n * Once closed, the connection will not attempt to reconnect.\n */\n close(): void {\n this.intentionallyClosed = true;\n this.clearReconnectTimer();\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n this._connected = false;\n }\n\n private connect(): void {\n try {\n this.ws = new WebSocket(this.url);\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n this.handleError(new NetworkError(`WebSocket connection failed: ${err.message}`, err));\n this.scheduleReconnect();\n return;\n }\n\n this.ws.onopen = () => {\n this._connected = true;\n this.reconnectAttempt = 0;\n\n if (this.reconnectAttempt > 0) {\n for (const handler of this.reconnectHandlers) {\n handler(this.reconnectAttempt);\n }\n }\n };\n\n this.ws.onmessage = (event: MessageEvent) => {\n let data: unknown;\n try {\n data = JSON.parse(String(event.data));\n } catch {\n return;\n }\n\n for (const handler of this.messageHandlers) {\n handler(data);\n }\n };\n\n this.ws.onclose = () => {\n this._connected = false;\n if (!this.intentionallyClosed) {\n this.scheduleReconnect();\n } else {\n this.closeHandler?.();\n }\n };\n\n this.ws.onerror = () => {\n // Error details are not available from the WebSocket error event.\n // The onclose event will fire next and trigger reconnect if needed.\n this.handleError(new NetworkError('WebSocket error'));\n };\n }\n\n private scheduleReconnect(): void {\n if (this.intentionallyClosed) return;\n if (this.reconnectAttempt >= this.maxReconnectAttempts) {\n this.handleError(\n new ReasoningLayerError(\n `WebSocket reconnection failed after ${this.maxReconnectAttempts} attempts`,\n ),\n );\n this.closeHandler?.();\n return;\n }\n\n this.reconnectAttempt++;\n const delay = this.calculateReconnectDelay(this.reconnectAttempt);\n\n this.reconnectTimer = setTimeout(() => {\n for (const handler of this.reconnectHandlers) {\n handler(this.reconnectAttempt);\n }\n this.connect();\n }, delay);\n }\n\n private calculateReconnectDelay(attempt: number): number {\n const exponentialDelay = this.baseDelay * Math.pow(2, attempt - 1);\n const jitter = Math.random() * 1000;\n return Math.min(exponentialDelay + jitter, this.maxReconnectDelay);\n }\n\n private clearReconnectTimer(): void {\n if (this.reconnectTimer !== null) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = null;\n }\n }\n\n private handleError(error: Error): void {\n this.errorHandler?.(error);\n }\n}\n\n/**\n * WebSocket client for real-time event subscriptions.\n *\n * @remarks\n * Dependency rule: imports ONLY from `config.ts` + `errors.ts` (same level as `http.ts`).\n *\n * Constructs WebSocket URLs from the base HTTP URL by replacing the protocol\n * (`http` -> `ws`, `https` -> `wss`) and appending the tenant ID as a query parameter.\n *\n * @example\n * ```typescript\n * const wsClient = new WebSocketClient(resolvedConfig);\n * const conn = wsClient.connect('/api/v1/cognitive/agents/events', {\n * agent_id: 'some-uuid',\n * });\n * conn.onMessage((event) => console.log(event));\n * // ... later\n * conn.close();\n * ```\n */\nexport class WebSocketClient {\n private readonly config: ResolvedConfig;\n\n constructor(config: ResolvedConfig) {\n this.config = config;\n }\n\n /**\n * Open a WebSocket connection to the given path.\n *\n * @param path - API path (e.g., `/api/v1/cognitive/agents/events`).\n * @param params - Additional query parameters (appended after tenant_id).\n * @returns A new {@link WebSocketConnection} with auto-reconnect.\n */\n connect(path: string, params?: Record<string, string>): WebSocketConnection {\n const url = this.buildUrl(path, params);\n return new WebSocketConnection(url);\n }\n\n private buildUrl(path: string, params?: Record<string, string>): string {\n const baseUrl = this.config.baseUrl\n .replace(/^http:/, 'ws:')\n .replace(/^https:/, 'wss:');\n\n const queryParams = new URLSearchParams({ tenant_id: this.config.tenantId });\n\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n queryParams.set(key, value);\n }\n }\n\n return `${baseUrl}${path}?${queryParams.toString()}`;\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n SortDto,\n SortResponse,\n SortListResponse,\n CreateSortRequest,\n BulkCreateSortsRequest,\n BulkCreateSortsResponse,\n GlbRequest,\n GlbResponse,\n LubRequest,\n LubResponse,\n DecodeGlbResponse,\n SortCompareRequest,\n SortCompareResponse,\n UpdateReviewStatusRequest,\n LearnSortSimilaritiesRequest,\n LearnSortSimilaritiesResponse,\n LearnedSimilarityListResponse,\n ApproveLearnedSimilarityRequest,\n ApproveLearnedSimilarityResponse,\n RejectLearnedSimilarityRequest,\n RejectLearnedSimilarityResponse,\n} from '../types/sorts.js';\n\nconst BASE = '/api/v1/sorts';\n\n/**\n * Resource client for sort (type hierarchy) operations.\n *\n * @remarks\n * Sorts use the tagged {@link ValueDto} serialization format.\n * All methods accept optional {@link RequestOptions} as the last parameter.\n */\nexport class SortsClient {\n /** @internal */\n protected readonly http: HttpClient;\n /** @internal */\n protected readonly tenantId: string;\n\n /** @internal */\n constructor(http: HttpClient, tenantId: string) {\n this.http = http;\n this.tenantId = tenantId;\n }\n\n /**\n * Create a new sort.\n *\n * @param request - Sort creation parameters.\n * @param options - Per-call request options.\n * @returns The created sort.\n */\n async createSort(request: CreateSortRequest, options?: RequestOptions): Promise<SortDto> {\n const response = await this.http.post<SortResponse>(BASE, request, options);\n return response.sort;\n }\n\n /**\n * Get a sort by ID.\n *\n * @param sortId - Sort UUID.\n * @param options - Per-call request options.\n * @returns The sort.\n */\n async getSort(sortId: string, options?: RequestOptions): Promise<SortDto> {\n const response = await this.http.get<SortResponse>(`${BASE}/${sortId}`, options);\n return response.sort;\n }\n\n /**\n * Delete a sort by ID.\n *\n * @param sortId - Sort UUID.\n * @param options - Per-call request options.\n */\n async deleteSort(sortId: string, options?: RequestOptions): Promise<void> {\n await this.http.delete(`${BASE}/${sortId}`, options);\n }\n\n /**\n * List all sorts.\n *\n * @param options - Per-call request options.\n * @returns Array of sorts.\n */\n async listSorts(options?: RequestOptions): Promise<SortDto[]> {\n const response = await this.http.get<SortListResponse>(\n `${BASE}/tenant/${this.tenantId}`,\n options,\n );\n return response.sorts;\n }\n\n /**\n * Bulk-create sorts with name-based parent references.\n *\n * @param request - Bulk creation request with sort definitions.\n * @param options - Per-call request options.\n * @returns Mapping of sort names to created UUIDs.\n *\n * @remarks\n * Unlike {@link createSort}, parent references use sort **names** (not UUIDs),\n * which are resolved server-side. This enables defining an entire hierarchy in one request.\n */\n async bulkCreateSorts(\n request: BulkCreateSortsRequest,\n options?: RequestOptions,\n ): Promise<BulkCreateSortsResponse> {\n return this.http.post<BulkCreateSortsResponse>(`${BASE}/bulk`, request, options);\n }\n\n /**\n * Check if a sort is a subtype of another.\n *\n * @param childId - Child sort UUID.\n * @param parentId - Parent sort UUID.\n * @param options - Per-call request options.\n * @returns `true` if childId is a subtype of parentId.\n */\n async isSubtype(childId: string, parentId: string, options?: RequestOptions): Promise<boolean> {\n const result = await this.http.get<{ is_subtype: boolean }>(\n `${BASE}/${childId}/subtype/${parentId}`,\n options,\n );\n return result.is_subtype;\n }\n\n /**\n * Compute the Greatest Lower Bound (GLB) of two sorts.\n *\n * @param request - GLB request with two sort UUIDs.\n * @param options - Per-call request options.\n * @returns The GLB sort UUID, or null if no common lower bound exists.\n */\n async computeGlb(request: GlbRequest, options?: RequestOptions): Promise<GlbResponse> {\n return this.http.post<GlbResponse>(`${BASE}/glb`, request, options);\n }\n\n /**\n * Compute the Least Upper Bound (LUB) of two sorts.\n *\n * @param request - LUB request with two sort UUIDs.\n * @param options - Per-call request options.\n * @returns The LUB sort UUID, or null if no common upper bound exists.\n */\n async computeLub(request: LubRequest, options?: RequestOptions): Promise<LubResponse> {\n return this.http.post<LubResponse>(`${BASE}/lub`, request, options);\n }\n\n /**\n * Decode a GLB as a type disjunction.\n *\n * @param request - GLB request with two sort UUIDs.\n * @param options - Per-call request options.\n * @returns Human-readable type disjunction with constituent sorts.\n */\n async decodeGlb(request: GlbRequest, options?: RequestOptions): Promise<DecodeGlbResponse> {\n return this.http.post<DecodeGlbResponse>(`${BASE}/glb/decode`, request, options);\n }\n\n /**\n * Get direct children of a sort.\n *\n * @param sortId - Sort UUID.\n * @param options - Per-call request options.\n * @returns Array of child sorts.\n */\n async getChildren(sortId: string, options?: RequestOptions): Promise<SortDto[]> {\n return this.http.get<SortDto[]>(`${BASE}/${sortId}/children`, options);\n }\n\n /**\n * Get direct parents of a sort.\n *\n * @param sortId - Sort UUID.\n * @param options - Per-call request options.\n * @returns Array of parent sorts.\n */\n async getParents(sortId: string, options?: RequestOptions): Promise<SortDto[]> {\n return this.http.get<SortDto[]>(`${BASE}/${sortId}/parents`, options);\n }\n\n /**\n * Get all ancestors of a sort (transitive parents).\n *\n * @param sortId - Sort UUID.\n * @param options - Per-call request options.\n * @returns Array of ancestor sorts.\n */\n async getAncestors(sortId: string, options?: RequestOptions): Promise<SortDto[]> {\n return this.http.get<SortDto[]>(`${BASE}/${sortId}/ancestors`, options);\n }\n\n /**\n * Get all descendants of a sort (transitive children).\n *\n * @param sortId - Sort UUID.\n * @param options - Per-call request options.\n * @returns Array of descendant sorts.\n */\n async getDescendants(sortId: string, options?: RequestOptions): Promise<SortDto[]> {\n return this.http.get<SortDto[]>(`${BASE}/${sortId}/descendants`, options);\n }\n\n /**\n * Get sorts compatible with a given sort.\n *\n * @param sortId - Sort UUID.\n * @param options - Per-call request options.\n * @returns Array of compatible sorts.\n */\n async getCompatible(sortId: string, options?: RequestOptions): Promise<SortDto[]> {\n return this.http.get<SortDto[]>(`${BASE}/${sortId}/compatible`, options);\n }\n\n /**\n * Compare two sorts using a comparison operator.\n *\n * @param request - Comparison request with operator and two sort references.\n * @param options - Per-call request options.\n * @returns Comparison result.\n */\n async compareSorts(\n request: SortCompareRequest,\n options?: RequestOptions,\n ): Promise<SortCompareResponse> {\n return this.http.post<SortCompareResponse>(`${BASE}/compare`, request, options);\n }\n\n /**\n * Trigger re-indexing of the sort hierarchy.\n *\n * @param options - Per-call request options.\n */\n async indexSorts(options?: RequestOptions): Promise<void> {\n await this.http.post(`${BASE}/index`, undefined, options);\n }\n\n /**\n * Update the review status of a sort.\n *\n * @param sortId - Sort UUID.\n * @param request - New review status.\n * @param options - Per-call request options.\n */\n async updateReviewStatus(\n sortId: string,\n request: UpdateReviewStatusRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/${sortId}/review`, request, options);\n }\n\n // --- Sort Similarity Learning ---\n\n /**\n * Learn sort similarities from effect features.\n *\n * @param request - Learning parameters.\n * @param options - Per-call request options.\n * @returns Learning result with count of similarities found.\n */\n async learnSimilarities(\n request: LearnSortSimilaritiesRequest,\n options?: RequestOptions,\n ): Promise<LearnSortSimilaritiesResponse> {\n return this.http.post<LearnSortSimilaritiesResponse>(`${BASE}/learn-similarities`, request, options);\n }\n\n /**\n * Get all learned similarities.\n *\n * @param options - Per-call request options.\n * @returns List of learned similarities with status counts.\n */\n async getLearnedSimilarities(options?: RequestOptions): Promise<LearnedSimilarityListResponse> {\n return this.http.get<LearnedSimilarityListResponse>(`${BASE}/learned-similarities`, options);\n }\n\n /**\n * Approve a learned similarity.\n *\n * @param request - Sort pair to approve.\n * @param options - Per-call request options.\n * @returns Approval result.\n */\n async approveSimilarity(\n request: ApproveLearnedSimilarityRequest,\n options?: RequestOptions,\n ): Promise<ApproveLearnedSimilarityResponse> {\n return this.http.post<ApproveLearnedSimilarityResponse>(\n `${BASE}/learned-similarities/approve`,\n request,\n options,\n );\n }\n\n /**\n * Reject a learned similarity.\n *\n * @param request - Sort pair to reject with reason.\n * @param options - Per-call request options.\n * @returns Rejection result.\n */\n async rejectSimilarity(\n request: RejectLearnedSimilarityRequest,\n options?: RequestOptions,\n ): Promise<RejectLearnedSimilarityResponse> {\n return this.http.post<RejectLearnedSimilarityResponse>(\n `${BASE}/learned-similarities/reject`,\n request,\n options,\n );\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * Every method on the returned client wraps its response in {@link ApiResponse},\n * providing access to HTTP status, headers, and rate limit information.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): SortsClientWithMetadata {\n return new SortsClientWithMetadata(this.http, this.tenantId);\n }\n}\n\n/**\n * Metadata-aware variant of {@link SortsClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class SortsClientWithMetadata {\n private readonly http: HttpClient;\n private readonly tenantId: string;\n\n /** @internal */\n constructor(http: HttpClient, tenantId: string) {\n this.http = http;\n this.tenantId = tenantId;\n }\n\n async createSort(\n request: CreateSortRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SortDto>> {\n const result = await this.http.requestWithMetadata<SortResponse>('POST', BASE, {\n body: request,\n options,\n });\n return { ...result, data: result.data.sort };\n }\n\n async getSort(sortId: string, options?: RequestOptions): Promise<ApiResponse<SortDto>> {\n const result = await this.http.requestWithMetadata<SortResponse>('GET', `${BASE}/${sortId}`, {\n options,\n });\n return { ...result, data: result.data.sort };\n }\n\n async deleteSort(sortId: string, options?: RequestOptions): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('DELETE', `${BASE}/${sortId}`, { options });\n }\n\n async listSorts(options?: RequestOptions): Promise<ApiResponse<SortDto[]>> {\n const result = await this.http.requestWithMetadata<SortListResponse>(\n 'GET',\n `${BASE}/tenant/${this.tenantId}`,\n { options },\n );\n return { ...result, data: result.data.sorts };\n }\n\n async bulkCreateSorts(\n request: BulkCreateSortsRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<BulkCreateSortsResponse>> {\n return this.http.requestWithMetadata<BulkCreateSortsResponse>('POST', `${BASE}/bulk`, {\n body: request,\n options,\n });\n }\n\n async isSubtype(\n childId: string,\n parentId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<boolean>> {\n const result = await this.http.requestWithMetadata<{ is_subtype: boolean }>(\n 'GET',\n `${BASE}/${childId}/subtype/${parentId}`,\n { options },\n );\n return { ...result, data: result.data.is_subtype };\n }\n\n async computeGlb(\n request: GlbRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<GlbResponse>> {\n return this.http.requestWithMetadata<GlbResponse>('POST', `${BASE}/glb`, {\n body: request,\n options,\n });\n }\n\n async computeLub(\n request: LubRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<LubResponse>> {\n return this.http.requestWithMetadata<LubResponse>('POST', `${BASE}/lub`, {\n body: request,\n options,\n });\n }\n\n async decodeGlb(\n request: GlbRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<DecodeGlbResponse>> {\n return this.http.requestWithMetadata<DecodeGlbResponse>('POST', `${BASE}/glb/decode`, {\n body: request,\n options,\n });\n }\n\n async getChildren(sortId: string, options?: RequestOptions): Promise<ApiResponse<SortDto[]>> {\n return this.http.requestWithMetadata<SortDto[]>('GET', `${BASE}/${sortId}/children`, {\n options,\n });\n }\n\n async getParents(sortId: string, options?: RequestOptions): Promise<ApiResponse<SortDto[]>> {\n return this.http.requestWithMetadata<SortDto[]>('GET', `${BASE}/${sortId}/parents`, {\n options,\n });\n }\n\n async getAncestors(sortId: string, options?: RequestOptions): Promise<ApiResponse<SortDto[]>> {\n return this.http.requestWithMetadata<SortDto[]>('GET', `${BASE}/${sortId}/ancestors`, {\n options,\n });\n }\n\n async getDescendants(sortId: string, options?: RequestOptions): Promise<ApiResponse<SortDto[]>> {\n return this.http.requestWithMetadata<SortDto[]>('GET', `${BASE}/${sortId}/descendants`, {\n options,\n });\n }\n\n async getCompatible(sortId: string, options?: RequestOptions): Promise<ApiResponse<SortDto[]>> {\n return this.http.requestWithMetadata<SortDto[]>('GET', `${BASE}/${sortId}/compatible`, {\n options,\n });\n }\n\n async compareSorts(\n request: SortCompareRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SortCompareResponse>> {\n return this.http.requestWithMetadata<SortCompareResponse>('POST', `${BASE}/compare`, {\n body: request,\n options,\n });\n }\n\n async indexSorts(options?: RequestOptions): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/index`, {\n body: undefined,\n options,\n });\n }\n\n async updateReviewStatus(\n sortId: string,\n request: UpdateReviewStatusRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/${sortId}/review`, {\n body: request,\n options,\n });\n }\n\n async learnSimilarities(\n request: LearnSortSimilaritiesRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<LearnSortSimilaritiesResponse>> {\n return this.http.requestWithMetadata<LearnSortSimilaritiesResponse>(\n 'POST',\n `${BASE}/learn-similarities`,\n { body: request, options },\n );\n }\n\n async getLearnedSimilarities(\n options?: RequestOptions,\n ): Promise<ApiResponse<LearnedSimilarityListResponse>> {\n return this.http.requestWithMetadata<LearnedSimilarityListResponse>(\n 'GET',\n `${BASE}/learned-similarities`,\n { options },\n );\n }\n\n async approveSimilarity(\n request: ApproveLearnedSimilarityRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ApproveLearnedSimilarityResponse>> {\n return this.http.requestWithMetadata<ApproveLearnedSimilarityResponse>(\n 'POST',\n `${BASE}/learned-similarities/approve`,\n { body: request, options },\n );\n }\n\n async rejectSimilarity(\n request: RejectLearnedSimilarityRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RejectLearnedSimilarityResponse>> {\n return this.http.requestWithMetadata<RejectLearnedSimilarityResponse>(\n 'POST',\n `${BASE}/learned-similarities/reject`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n TermResponse,\n CreateTermRequest,\n UpdateTermRequest,\n BulkAddTermsRequest,\n BulkAddTermsResponse,\n} from '../types/terms.js';\n\nconst BASE = '/api/v1/terms';\n\n/**\n * Resource client for Psi-term operations.\n *\n * @remarks\n * Term CRUD endpoints return {@link TermResponse} (which wraps {@link TermDto} with\n * witness validation state), NOT raw TermDto. This is critical — the validation state\n * (complete, residuated, no_witnesses) indicates whether the term satisfies its type\n * witnesses.\n *\n * Terms use the tagged {@link ValueDto} serialization format.\n */\nexport class TermsClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Create a new Psi-term.\n *\n * @param request - Term creation parameters.\n * @param options - Per-call request options.\n * @returns The created term with validation state.\n */\n async createTerm(request: CreateTermRequest, options?: RequestOptions): Promise<TermResponse> {\n return this.http.post<TermResponse>(BASE, request, options);\n }\n\n /**\n * Get a term by ID.\n *\n * @param termId - Term UUID.\n * @param options - Per-call request options.\n * @returns The term with validation state.\n */\n async getTerm(termId: string, options?: RequestOptions): Promise<TermResponse> {\n return this.http.get<TermResponse>(`${BASE}/${termId}`, options);\n }\n\n /**\n * Update an existing term.\n *\n * @param termId - Term UUID.\n * @param request - Update parameters.\n * @param options - Per-call request options.\n * @returns The updated term with validation state.\n */\n async updateTerm(\n termId: string,\n request: UpdateTermRequest,\n options?: RequestOptions,\n ): Promise<TermResponse> {\n return this.http.put<TermResponse>(`${BASE}/${termId}`, request, options);\n }\n\n /**\n * Delete a term by ID.\n *\n * @param termId - Term UUID.\n * @param options - Per-call request options.\n */\n async deleteTerm(termId: string, options?: RequestOptions): Promise<void> {\n await this.http.delete(`${BASE}/${termId}`, options);\n }\n\n /**\n * Check if a term exists.\n *\n * @param termId - Term UUID.\n * @param options - Per-call request options.\n * @returns `true` if the term exists.\n */\n async termExists(termId: string, options?: RequestOptions): Promise<boolean> {\n try {\n await this.http.get(`${BASE}/${termId}/exists`, options);\n return true;\n } catch {\n return false;\n }\n }\n\n /**\n * Bulk-create terms.\n *\n * @param request - Bulk creation request.\n * @param options - Per-call request options.\n * @returns Bulk creation result with term UUIDs.\n */\n async bulkCreateTerms(\n request: BulkAddTermsRequest,\n options?: RequestOptions,\n ): Promise<BulkAddTermsResponse> {\n return this.http.post<BulkAddTermsResponse>(`${BASE}/bulk`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * Every method on the returned client wraps its response in {@link ApiResponse},\n * providing access to HTTP status, headers, and rate limit information.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): TermsClientWithMetadata {\n return new TermsClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link TermsClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class TermsClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async createTerm(\n request: CreateTermRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<TermResponse>> {\n return this.http.requestWithMetadata<TermResponse>('POST', BASE, { body: request, options });\n }\n\n async getTerm(termId: string, options?: RequestOptions): Promise<ApiResponse<TermResponse>> {\n return this.http.requestWithMetadata<TermResponse>('GET', `${BASE}/${termId}`, { options });\n }\n\n async updateTerm(\n termId: string,\n request: UpdateTermRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<TermResponse>> {\n return this.http.requestWithMetadata<TermResponse>('PUT', `${BASE}/${termId}`, {\n body: request,\n options,\n });\n }\n\n async deleteTerm(termId: string, options?: RequestOptions): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('DELETE', `${BASE}/${termId}`, { options });\n }\n\n async termExists(termId: string, options?: RequestOptions): Promise<ApiResponse<boolean>> {\n try {\n const result = await this.http.requestWithMetadata<unknown>(\n 'GET',\n `${BASE}/${termId}/exists`,\n { options },\n );\n return { ...result, data: true };\n } catch {\n return { data: false, status: 404, headers: new Headers(), rateLimit: null };\n }\n }\n\n async bulkCreateTerms(\n request: BulkAddTermsRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<BulkAddTermsResponse>> {\n return this.http.requestWithMetadata<BulkAddTermsResponse>('POST', `${BASE}/bulk`, {\n body: request,\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n AddRuleRequest,\n AddRuleResponse,\n AddFactRequest,\n AddFactResponse,\n BulkAddRulesRequest,\n BulkAddRulesResponse,\n BulkAddFactsRequest,\n BulkAddFactsResponse,\n GetFactsResponse,\n ClearFactsResponse,\n BackwardChainRequest,\n BackwardChainResponse,\n ForwardChainRequest,\n ForwardChainResponse,\n FuzzyProveRequest,\n FuzzyProveResponse,\n BayesianPredictRequest,\n BayesianPredictResponse,\n NafProveRequest,\n NafProveResponse,\n GoalDto,\n CreateGoalRequest,\n CreateGoalResponse,\n DeleteGoalResponse,\n MetaSortsResponse,\n} from '../types/inference.js';\n\n\nconst BASE = '/api/v1/inference';\n\n/**\n * Resource client for inference operations.\n *\n * @remarks\n * Inference requests use the untagged {@link FeatureInputValueDto} / {@link TermInputDto}\n * serialization format. Responses use {@link PsiTermDto} / {@link SolutionDto}.\n *\n * The SDK exposes only the homoiconic API surface. Legacy OsfClauseDto-based endpoints\n * are not supported.\n */\nexport class InferenceClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Add an inference rule.\n *\n * @param request - Rule definition using TermInputDto.\n * @param options - Per-call request options.\n * @returns The created rule wrapped in an AddRuleResponse.\n */\n async addRule(request: AddRuleRequest, options?: RequestOptions): Promise<AddRuleResponse> {\n return this.http.post<AddRuleResponse>(`${BASE}/rules`, request, options);\n }\n\n /**\n * Add a fact.\n *\n * @param request - Fact definition using TermInputDto.\n * @param options - Per-call request options.\n * @returns The created fact wrapped in an AddFactResponse.\n */\n async addFact(request: AddFactRequest, options?: RequestOptions): Promise<AddFactResponse> {\n return this.http.post<AddFactResponse>(`${BASE}/facts`, request, options);\n }\n\n /**\n * Bulk-add inference rules.\n *\n * @param request - Bulk rule definitions.\n * @param options - Per-call request options.\n * @returns Bulk creation result with rule_term_ids and rules_added count.\n */\n async bulkAddRules(\n request: BulkAddRulesRequest,\n options?: RequestOptions,\n ): Promise<BulkAddRulesResponse> {\n return this.http.post<BulkAddRulesResponse>(`${BASE}/rules/bulk`, request, options);\n }\n\n /**\n * Bulk-add facts.\n *\n * @param request - Bulk fact definitions.\n * @param options - Per-call request options.\n * @returns Bulk creation result with term_ids and facts_added count.\n */\n async bulkAddFacts(\n request: BulkAddFactsRequest,\n options?: RequestOptions,\n ): Promise<BulkAddFactsResponse> {\n return this.http.post<BulkAddFactsResponse>(`${BASE}/facts/bulk`, request, options);\n }\n\n /**\n * Get all stored facts for a tenant.\n *\n * @param tenantId - Tenant UUID.\n * @param options - Per-call request options.\n * @returns Facts with count.\n */\n async getFacts(tenantId: string, options?: RequestOptions): Promise<GetFactsResponse> {\n return this.http.get<GetFactsResponse>(`${BASE}/facts/${tenantId}`, options);\n }\n\n /**\n * Clear all stored facts for a tenant.\n *\n * @param tenantId - Tenant UUID.\n * @param options - Per-call request options.\n * @returns Clear result with facts_cleared count.\n */\n async clearFacts(tenantId: string, options?: RequestOptions): Promise<ClearFactsResponse> {\n return this.http.delete<ClearFactsResponse>(`${BASE}/facts/${tenantId}`, options);\n }\n\n /**\n * Run backward chaining inference (goal-directed proof search).\n *\n * @param request - Backward chaining request. Specify either `goal` (inline) or `goal_id` (saved), not both.\n * @param options - Per-call request options.\n * @returns Solutions found by the proof search.\n *\n * @remarks\n * The `timeout_ms` field on the request is a wall-clock timeout for the proof search.\n * When it fires, the backend returns whatever solutions have been found so far.\n */\n async backwardChain(\n request: BackwardChainRequest,\n options?: RequestOptions,\n ): Promise<BackwardChainResponse> {\n return this.http.post<BackwardChainResponse>(`${BASE}/backward-chain`, request, options);\n }\n\n /**\n * Run forward chaining inference (data-driven materialization).\n *\n * @param request - Forward chaining request.\n * @param options - Per-call request options.\n * @returns Derived facts and materialization statistics.\n *\n * @remarks\n * If `persist_derived` is true, derived facts are permanently saved to the database.\n */\n async forwardChain(\n request: ForwardChainRequest,\n options?: RequestOptions,\n ): Promise<ForwardChainResponse> {\n return this.http.post<ForwardChainResponse>(`${BASE}/forward-chain`, request, options);\n }\n\n /**\n * Run forward chaining and return results in tagged PsiTerm format.\n *\n * @param request - Forward chaining request.\n * @param options - Per-call request options.\n * @returns Derived facts in homoiconic PsiTerm format.\n */\n async forwardChainTagged(\n request: ForwardChainRequest,\n options?: RequestOptions,\n ): Promise<ForwardChainResponse> {\n return this.http.post<ForwardChainResponse>(\n `${BASE}/forward-chain-tagged`,\n request,\n options,\n );\n }\n\n /**\n * Run fuzzy proof search with truth degree propagation.\n *\n * @param request - Fuzzy prove request.\n * @param options - Per-call request options.\n * @returns Fuzzy solutions with truth degrees.\n */\n async fuzzyProve(\n request: FuzzyProveRequest,\n options?: RequestOptions,\n ): Promise<FuzzyProveResponse> {\n return this.http.post<FuzzyProveResponse>(`${BASE}/fuzzy-prove`, request, options);\n }\n\n /**\n * Run Bayesian prediction.\n *\n * @param request - Bayesian prediction request.\n * @param options - Per-call request options.\n * @returns Predictions with posterior probabilities.\n */\n async bayesianPredict(\n request: BayesianPredictRequest,\n options?: RequestOptions,\n ): Promise<BayesianPredictResponse> {\n return this.http.post<BayesianPredictResponse>(\n `${BASE}/bayesian-predict`,\n request,\n options,\n );\n }\n\n /**\n * Run negation-as-failure (NAF) proof search.\n *\n * @param request - NAF prove request.\n * @param options - Per-call request options.\n * @returns NAF proof result.\n */\n async nafProve(request: NafProveRequest, options?: RequestOptions): Promise<NafProveResponse> {\n return this.http.post<NafProveResponse>(`${BASE}/naf-prove`, request, options);\n }\n\n /**\n * Create a saved goal for reuse in backward chaining.\n *\n * @param request - Goal creation request.\n * @param options - Per-call request options.\n * @returns The created goal with ID, PsiTerm, and clause/constraint counts.\n */\n async createGoal(\n request: CreateGoalRequest,\n options?: RequestOptions,\n ): Promise<CreateGoalResponse> {\n return this.http.post<CreateGoalResponse>(`${BASE}/goals`, request, options);\n }\n\n /**\n * List all saved goals.\n *\n * @param options - Per-call request options.\n * @returns Array of goals.\n */\n async getGoals(options?: RequestOptions): Promise<GoalDto[]> {\n return this.http.get<GoalDto[]>(`${BASE}/goals`, options);\n }\n\n /**\n * Get a saved goal by ID.\n *\n * @param goalId - Goal UUID.\n * @param options - Per-call request options.\n * @returns The goal.\n */\n async getGoal(goalId: string, options?: RequestOptions): Promise<GoalDto> {\n return this.http.get<GoalDto>(`${BASE}/goals/${goalId}`, options);\n }\n\n /**\n * Delete a saved goal.\n *\n * @param goalId - Goal UUID.\n * @param options - Per-call request options.\n * @returns Delete result confirming deletion.\n */\n async deleteGoal(goalId: string, options?: RequestOptions): Promise<DeleteGoalResponse> {\n return this.http.delete<DeleteGoalResponse>(`${BASE}/goals/${goalId}`, options);\n }\n\n /**\n * Get meta-sorts used by the inference engine.\n *\n * @param options - Per-call request options.\n * @returns Meta-sorts information.\n */\n async getMetaSorts(options?: RequestOptions): Promise<MetaSortsResponse> {\n return this.http.get<MetaSortsResponse>(`${BASE}/meta-sorts`, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): InferenceClientWithMetadata {\n return new InferenceClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link InferenceClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class InferenceClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async addRule(\n request: AddRuleRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<AddRuleResponse>> {\n return this.http.requestWithMetadata<AddRuleResponse>('POST', `${BASE}/rules`, {\n body: request,\n options,\n });\n }\n\n async addFact(\n request: AddFactRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<AddFactResponse>> {\n return this.http.requestWithMetadata<AddFactResponse>('POST', `${BASE}/facts`, {\n body: request,\n options,\n });\n }\n\n async bulkAddRules(\n request: BulkAddRulesRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<BulkAddRulesResponse>> {\n return this.http.requestWithMetadata<BulkAddRulesResponse>('POST', `${BASE}/rules/bulk`, {\n body: request,\n options,\n });\n }\n\n async bulkAddFacts(\n request: BulkAddFactsRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<BulkAddFactsResponse>> {\n return this.http.requestWithMetadata<BulkAddFactsResponse>('POST', `${BASE}/facts/bulk`, {\n body: request,\n options,\n });\n }\n\n async getFacts(tenantId: string, options?: RequestOptions): Promise<ApiResponse<GetFactsResponse>> {\n return this.http.requestWithMetadata<GetFactsResponse>('GET', `${BASE}/facts/${tenantId}`, { options });\n }\n\n async clearFacts(tenantId: string, options?: RequestOptions): Promise<ApiResponse<ClearFactsResponse>> {\n return this.http.requestWithMetadata<ClearFactsResponse>('DELETE', `${BASE}/facts/${tenantId}`, {\n options,\n });\n }\n\n async backwardChain(\n request: BackwardChainRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<BackwardChainResponse>> {\n return this.http.requestWithMetadata<BackwardChainResponse>(\n 'POST',\n `${BASE}/backward-chain`,\n { body: request, options },\n );\n }\n\n async forwardChain(\n request: ForwardChainRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ForwardChainResponse>> {\n return this.http.requestWithMetadata<ForwardChainResponse>('POST', `${BASE}/forward-chain`, {\n body: request,\n options,\n });\n }\n\n async forwardChainTagged(\n request: ForwardChainRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ForwardChainResponse>> {\n return this.http.requestWithMetadata<ForwardChainResponse>(\n 'POST',\n `${BASE}/forward-chain-tagged`,\n { body: request, options },\n );\n }\n\n async fuzzyProve(\n request: FuzzyProveRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<FuzzyProveResponse>> {\n return this.http.requestWithMetadata<FuzzyProveResponse>('POST', `${BASE}/fuzzy-prove`, {\n body: request,\n options,\n });\n }\n\n async bayesianPredict(\n request: BayesianPredictRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<BayesianPredictResponse>> {\n return this.http.requestWithMetadata<BayesianPredictResponse>(\n 'POST',\n `${BASE}/bayesian-predict`,\n { body: request, options },\n );\n }\n\n async nafProve(\n request: NafProveRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<NafProveResponse>> {\n return this.http.requestWithMetadata<NafProveResponse>('POST', `${BASE}/naf-prove`, {\n body: request,\n options,\n });\n }\n\n async createGoal(\n request: CreateGoalRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<CreateGoalResponse>> {\n return this.http.requestWithMetadata<CreateGoalResponse>('POST', `${BASE}/goals`, {\n body: request,\n options,\n });\n }\n\n async getGoals(options?: RequestOptions): Promise<ApiResponse<GoalDto[]>> {\n return this.http.requestWithMetadata<GoalDto[]>('GET', `${BASE}/goals`, { options });\n }\n\n async getGoal(goalId: string, options?: RequestOptions): Promise<ApiResponse<GoalDto>> {\n return this.http.requestWithMetadata<GoalDto>('GET', `${BASE}/goals/${goalId}`, { options });\n }\n\n async deleteGoal(\n goalId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<DeleteGoalResponse>> {\n return this.http.requestWithMetadata<DeleteGoalResponse>(\n 'DELETE',\n `${BASE}/goals/${goalId}`,\n { options },\n );\n }\n\n async getMetaSorts(options?: RequestOptions): Promise<ApiResponse<MetaSortsResponse>> {\n return this.http.requestWithMetadata<MetaSortsResponse>('GET', `${BASE}/meta-sorts`, {\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type { TermDto } from '../types/terms.js';\nimport type { ValidatedTermResponse, ValidatedUnifyResponse } from '../types/terms.js';\nimport type {\n UnifiableQueryRequest,\n BySortQueryRequest,\n OsfSearchRequest,\n OsfSearchResponse,\n NlQueryRequest,\n NlQueryResponse,\n TermListResponse,\n UnificationQueryResponse,\n} from '../types/query.js';\n\nconst BASE = '/api/v1/query';\n\n/**\n * Resource client for query operations.\n *\n * @remarks\n * Query endpoints use mixed serialization formats:\n * - `/unifiable` and `/by-sort` return `TermDto[]` (tagged ValueDto format)\n * - `/osf-search` returns `OsfSearchResponse` (structured search result)\n * - `/validate-term` returns `ValidatedTermResponse` (witness validation)\n * - `/validated-unify` returns `ValidatedUnifyResponse` (validated unification)\n */\nexport class QueryClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Find terms that unify with a given pattern.\n *\n * @param request - Unifiable query with term input.\n * @param options - Per-call request options.\n * @returns Array of matching terms (tagged ValueDto format).\n */\n async findUnifiable(\n request: UnifiableQueryRequest,\n options?: RequestOptions,\n ): Promise<TermDto[]> {\n const response = await this.http.post<UnificationQueryResponse>(\n `${BASE}/unifiable`,\n request,\n options,\n );\n return response.results;\n }\n\n /**\n * Find terms by sort.\n *\n * @param request - Query by sort request.\n * @param options - Per-call request options.\n * @returns Array of matching terms (tagged ValueDto format).\n */\n async findBySort(request: BySortQueryRequest, options?: RequestOptions): Promise<TermDto[]> {\n const response = await this.http.post<TermListResponse>(\n `${BASE}/by-sort`,\n request,\n options,\n );\n return response.terms;\n }\n\n /**\n * Execute an Order-Sorted Feature search.\n *\n * @param request - OSF search request with pattern.\n * @param options - Per-call request options.\n * @returns Structured search results including entities, relations, and suspended query information.\n *\n * @remarks\n * If the query is too vague, the response may include a `suspended` field containing\n * information about what data is needed and how to refine the query (residuation at query level).\n */\n async osfSearch(\n request: OsfSearchRequest,\n options?: RequestOptions,\n ): Promise<OsfSearchResponse> {\n return this.http.post<OsfSearchResponse>(`${BASE}/osf-search`, request, options);\n }\n\n /**\n * Validate a term against its sort's type witnesses.\n *\n * @param request - Term validation request.\n * @param options - Per-call request options.\n * @returns Validation result with witness satisfaction status.\n */\n async validateTerm(\n request: unknown,\n options?: RequestOptions,\n ): Promise<ValidatedTermResponse> {\n return this.http.post<ValidatedTermResponse>(`${BASE}/validate-term`, request, options);\n }\n\n /**\n * Perform validated unification of two terms.\n *\n * @param request - Validated unification request.\n * @param options - Per-call request options.\n * @returns Unification result with GLB sort and witness validation.\n */\n async validatedUnify(\n request: unknown,\n options?: RequestOptions,\n ): Promise<ValidatedUnifyResponse> {\n return this.http.post<ValidatedUnifyResponse>(`${BASE}/validated-unify`, request, options);\n }\n\n /**\n * Execute a natural language query.\n *\n * @param request - Natural language query request.\n * @param options - Per-call request options.\n * @returns Interpreted query and results.\n */\n async nlQuery(request: NlQueryRequest, options?: RequestOptions): Promise<NlQueryResponse> {\n return this.http.post<NlQueryResponse>('/api/v1/nl/query', request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): QueryClientWithMetadata {\n return new QueryClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link QueryClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class QueryClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async findUnifiable(\n request: UnifiableQueryRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<TermDto[]>> {\n const result = await this.http.requestWithMetadata<UnificationQueryResponse>(\n 'POST',\n `${BASE}/unifiable`,\n { body: request, options },\n );\n return { ...result, data: result.data.results };\n }\n\n async findBySort(\n request: BySortQueryRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<TermDto[]>> {\n const result = await this.http.requestWithMetadata<TermListResponse>(\n 'POST',\n `${BASE}/by-sort`,\n { body: request, options },\n );\n return { ...result, data: result.data.terms };\n }\n\n async osfSearch(\n request: OsfSearchRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<OsfSearchResponse>> {\n return this.http.requestWithMetadata<OsfSearchResponse>('POST', `${BASE}/osf-search`, {\n body: request,\n options,\n });\n }\n\n async validateTerm(\n request: unknown,\n options?: RequestOptions,\n ): Promise<ApiResponse<ValidatedTermResponse>> {\n return this.http.requestWithMetadata<ValidatedTermResponse>('POST', `${BASE}/validate-term`, {\n body: request,\n options,\n });\n }\n\n async validatedUnify(\n request: unknown,\n options?: RequestOptions,\n ): Promise<ApiResponse<ValidatedUnifyResponse>> {\n return this.http.requestWithMetadata<ValidatedUnifyResponse>(\n 'POST',\n `${BASE}/validated-unify`,\n { body: request, options },\n );\n }\n\n async nlQuery(\n request: NlQueryRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<NlQueryResponse>> {\n return this.http.requestWithMetadata<NlQueryResponse>('POST', '/api/v1/nl/query', {\n body: request,\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { WebSocketClient } from '../websocket.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n CreateAgentRequest,\n CreateAgentResponse,\n AgentStateDto,\n ExtendedAgentStateDto,\n RunCycleRequest,\n RunCycleResponse,\n AddBeliefRequest,\n AddBeliefResponse,\n AddGoalRequest,\n AddGoalResponse,\n AddCognitiveRuleRequest,\n AddCognitiveRuleResponse,\n CreateCognitiveSortRequest,\n CreateCognitiveSortResponse,\n RecallEpisodesRequest,\n RecallEpisodesResponse,\n EpisodeStatsResponse,\n AddHtnMethodRequest,\n AddHtnMethodResponse,\n SendMessageRequest,\n SendMessageResponse,\n BroadcastMessageRequest,\n BroadcastMessageResponse,\n MarkMessagesReadRequest,\n MarkMessagesReadResponse,\n ProvideFeedbackRequest,\n ProvideFeedbackResponse,\n RunIntegratedCycleRequest,\n RunIntegratedCycleResponse,\n SubscribeToKbRequest,\n SubscribeToKbResponse,\n RecordEpisodeRequest,\n RecordEpisodeResponse,\n AgentEvent,\n AgentEventHandlers,\n AgentSubscription,\n} from '../types/cognitive.js';\n\nconst BASE = '/api/v1/cognitive/agents';\n\n/**\n * Resource client for cognitive agent operations.\n *\n * @remarks\n * Provides CRUD operations for cognitive agents, BDI cycle management,\n * belief/goal management, episodic memory, HTN planning, inter-agent messaging,\n * and human-in-the-loop feedback.\n *\n * WebSocket subscriptions for real-time agent events require a {@link WebSocketClient}.\n */\nexport class CognitiveClient {\n /** @internal */\n protected readonly http: HttpClient;\n /** @internal */\n private readonly ws: WebSocketClient | null;\n\n /** @internal */\n constructor(http: HttpClient, ws?: WebSocketClient | null) {\n this.http = http;\n this.ws = ws ?? null;\n }\n\n // --- Agent CRUD ---\n\n /**\n * Create a new cognitive agent.\n *\n * @param request - Agent creation parameters.\n * @param options - Per-call request options.\n * @returns The created agent response.\n */\n async createAgent(\n request: CreateAgentRequest,\n options?: RequestOptions,\n ): Promise<CreateAgentResponse> {\n return this.http.post<CreateAgentResponse>(BASE, request, options);\n }\n\n /**\n * Get an agent's basic state.\n *\n * @param agentId - Agent UUID.\n * @param options - Per-call request options.\n * @returns The agent's basic state.\n */\n async getAgent(agentId: string, options?: RequestOptions): Promise<AgentStateDto> {\n return this.http.get<AgentStateDto>(`${BASE}/${agentId}`, options);\n }\n\n /**\n * Delete a cognitive agent.\n *\n * @param agentId - Agent UUID.\n * @param options - Per-call request options.\n */\n async deleteAgent(agentId: string, options?: RequestOptions): Promise<void> {\n await this.http.delete(`${BASE}/${agentId}`, options);\n }\n\n /**\n * Get an agent's extended state (BDI + motivation + activations).\n *\n * @param agentId - Agent UUID.\n * @param options - Per-call request options.\n * @returns The agent's extended state.\n */\n async getState(agentId: string, options?: RequestOptions): Promise<ExtendedAgentStateDto> {\n return this.http.get<ExtendedAgentStateDto>(`${BASE}/${agentId}/state`, options);\n }\n\n // --- BDI Cycle ---\n\n /**\n * Run a single BDI cognitive cycle for an agent.\n *\n * @param request - Cycle request with agent and tenant IDs.\n * @param options - Per-call request options.\n * @returns The cycle outcome.\n */\n async runCycle(request: RunCycleRequest, options?: RequestOptions): Promise<RunCycleResponse> {\n return this.http.post<RunCycleResponse>(`${BASE}/cycle`, request, options);\n }\n\n // --- Beliefs ---\n\n /**\n * Add a belief to an agent.\n *\n * @param request - Belief to add.\n * @param options - Per-call request options.\n * @returns The created belief response.\n */\n async addBelief(\n request: AddBeliefRequest,\n options?: RequestOptions,\n ): Promise<AddBeliefResponse> {\n return this.http.post<AddBeliefResponse>(`${BASE}/beliefs`, request, options);\n }\n\n // --- Goals ---\n\n /**\n * Add a goal to an agent.\n *\n * @param request - Goal to add.\n * @param options - Per-call request options.\n * @returns The created goal response.\n */\n async addGoal(request: AddGoalRequest, options?: RequestOptions): Promise<AddGoalResponse> {\n return this.http.post<AddGoalResponse>(`${BASE}/goals`, request, options);\n }\n\n // --- Cognitive Registry ---\n\n /**\n * Add a rule to the cognitive registry.\n *\n * @param request - Rule definition.\n * @param options - Per-call request options.\n * @returns The created rule response.\n */\n async addRule(\n request: AddCognitiveRuleRequest,\n options?: RequestOptions,\n ): Promise<AddCognitiveRuleResponse> {\n return this.http.post<AddCognitiveRuleResponse>(`${BASE}/rules`, request, options);\n }\n\n /**\n * Add a sort to the cognitive registry.\n *\n * @param request - Sort definition.\n * @param options - Per-call request options.\n * @returns The created sort response.\n */\n async addSort(\n request: CreateCognitiveSortRequest,\n options?: RequestOptions,\n ): Promise<CreateCognitiveSortResponse> {\n return this.http.post<CreateCognitiveSortResponse>(`${BASE}/sorts`, request, options);\n }\n\n // --- Episodic Memory ---\n\n /**\n * Recall similar episodes from an agent's episodic memory.\n *\n * @param request - Recall request with goal and context.\n * @param options - Per-call request options.\n * @returns Recalled episodes sorted by similarity/recency.\n */\n async recallEpisodes(\n request: RecallEpisodesRequest,\n options?: RequestOptions,\n ): Promise<RecallEpisodesResponse> {\n return this.http.post<RecallEpisodesResponse>(`${BASE}/episodes/recall`, request, options);\n }\n\n /**\n * Get episode statistics for an agent.\n *\n * @param agentId - Agent UUID.\n * @param options - Per-call request options.\n * @returns Episode statistics.\n */\n async getEpisodeStats(\n agentId: string,\n options?: RequestOptions,\n ): Promise<EpisodeStatsResponse> {\n return this.http.get<EpisodeStatsResponse>(`${BASE}/${agentId}/episodes/stats`, options);\n }\n\n // --- HTN Planning ---\n\n /**\n * Add an HTN method to an agent.\n *\n * @param request - HTN method definition.\n * @param options - Per-call request options.\n * @returns The created method response.\n */\n async addHtnMethod(\n request: AddHtnMethodRequest,\n options?: RequestOptions,\n ): Promise<AddHtnMethodResponse> {\n return this.http.post<AddHtnMethodResponse>(`${BASE}/htn/methods`, request, options);\n }\n\n // --- Messaging ---\n\n /**\n * Send a message to another agent.\n *\n * @param request - Message to send.\n * @param options - Per-call request options.\n * @returns The send result.\n */\n async sendMessage(\n request: SendMessageRequest,\n options?: RequestOptions,\n ): Promise<SendMessageResponse> {\n return this.http.post<SendMessageResponse>(`${BASE}/messages`, request, options);\n }\n\n /**\n * Broadcast a message to all agents.\n *\n * @param request - Message to broadcast.\n * @param options - Per-call request options.\n * @returns The broadcast result.\n */\n async broadcastMessage(\n request: BroadcastMessageRequest,\n options?: RequestOptions,\n ): Promise<BroadcastMessageResponse> {\n return this.http.post<BroadcastMessageResponse>(\n `${BASE}/messages/broadcast`,\n request,\n options,\n );\n }\n\n /**\n * Mark messages as read.\n *\n * @param request - Messages to mark as read.\n * @param options - Per-call request options.\n * @returns The result.\n */\n async markMessagesRead(\n request: MarkMessagesReadRequest,\n options?: RequestOptions,\n ): Promise<MarkMessagesReadResponse> {\n return this.http.post<MarkMessagesReadResponse>(\n `${BASE}/messages/read`,\n request,\n options,\n );\n }\n\n // --- Feedback ---\n\n /**\n * Provide feedback on an agent result.\n *\n * @param request - Feedback to provide.\n * @param options - Per-call request options.\n * @returns The feedback result.\n */\n async provideFeedback(\n request: ProvideFeedbackRequest,\n options?: RequestOptions,\n ): Promise<ProvideFeedbackResponse> {\n return this.http.post<ProvideFeedbackResponse>('/api/v1/cognitive/feedback', request, options);\n }\n\n // --- Integrated Cycle ---\n\n /**\n * Run a full integrated cognitive cycle (all 9 modules).\n *\n * @param request - Integrated cycle request with agent and tenant IDs.\n * @param options - Per-call request options.\n * @returns The integrated cycle outcome with duration.\n */\n async integratedCycle(\n request: RunIntegratedCycleRequest,\n options?: RequestOptions,\n ): Promise<RunIntegratedCycleResponse> {\n return this.http.post<RunIntegratedCycleResponse>(\n `${BASE}/integrated-cycle`,\n request,\n options,\n );\n }\n\n // --- KB Subscription ---\n\n /**\n * Subscribe an agent to knowledge base changes (HTTP-based).\n *\n * @param request - Subscription request with watched sorts/features.\n * @param options - Per-call request options.\n * @returns Subscription ID.\n */\n async subscribeToKb(\n request: SubscribeToKbRequest,\n options?: RequestOptions,\n ): Promise<SubscribeToKbResponse> {\n return this.http.post<SubscribeToKbResponse>(`${BASE}/subscribe`, request, options);\n }\n\n // --- Episode Recording ---\n\n /**\n * Record an episodic memory entry for an agent.\n *\n * @param request - Episode to record.\n * @param options - Per-call request options.\n * @returns The created episode ID.\n */\n async recordEpisode(\n request: RecordEpisodeRequest,\n options?: RequestOptions,\n ): Promise<RecordEpisodeResponse> {\n return this.http.post<RecordEpisodeResponse>(`${BASE}/episodes`, request, options);\n }\n\n // --- WebSocket Subscriptions ---\n\n /**\n * Subscribe to real-time events for a cognitive agent.\n *\n * @param agentId - Agent UUID.\n * @param handlers - Event handlers.\n * @returns An active subscription that can be closed.\n * @throws {Error} If no WebSocket client is configured.\n *\n * @remarks\n * Requires a WebSocket client to be configured on the main client.\n * Events are pushed in real-time as the agent processes its BDI cycle.\n */\n subscribeToEvents(agentId: string, handlers: AgentEventHandlers): AgentSubscription {\n if (!this.ws) {\n throw new Error(\n 'WebSocket client not configured. Pass a WebSocket-enabled config to use subscriptions.',\n );\n }\n\n const conn = this.ws.connect(`${BASE}/${agentId}/events`);\n\n if (handlers.onEvent) {\n conn.onMessage<AgentEvent>(handlers.onEvent);\n }\n if (handlers.onReconnect) {\n conn.onReconnect(handlers.onReconnect);\n }\n if (handlers.onError) {\n conn.onError(handlers.onError);\n }\n if (handlers.onClose) {\n conn.onClose(handlers.onClose);\n }\n\n return {\n close: () => conn.close(),\n get connected() {\n return conn.connected;\n },\n };\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): CognitiveClientWithMetadata {\n return new CognitiveClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link CognitiveClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class CognitiveClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async createAgent(\n request: CreateAgentRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<CreateAgentResponse>> {\n return this.http.requestWithMetadata<CreateAgentResponse>('POST', BASE, {\n body: request,\n options,\n });\n }\n\n async getAgent(\n agentId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<AgentStateDto>> {\n return this.http.requestWithMetadata<AgentStateDto>('GET', `${BASE}/${agentId}`, { options });\n }\n\n async deleteAgent(agentId: string, options?: RequestOptions): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('DELETE', `${BASE}/${agentId}`, { options });\n }\n\n async getState(\n agentId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<ExtendedAgentStateDto>> {\n return this.http.requestWithMetadata<ExtendedAgentStateDto>(\n 'GET',\n `${BASE}/${agentId}/state`,\n { options },\n );\n }\n\n async runCycle(\n request: RunCycleRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RunCycleResponse>> {\n return this.http.requestWithMetadata<RunCycleResponse>('POST', `${BASE}/cycle`, {\n body: request,\n options,\n });\n }\n\n async addBelief(\n request: AddBeliefRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<AddBeliefResponse>> {\n return this.http.requestWithMetadata<AddBeliefResponse>('POST', `${BASE}/beliefs`, {\n body: request,\n options,\n });\n }\n\n async addGoal(\n request: AddGoalRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<AddGoalResponse>> {\n return this.http.requestWithMetadata<AddGoalResponse>('POST', `${BASE}/goals`, {\n body: request,\n options,\n });\n }\n\n async addRule(\n request: AddCognitiveRuleRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<AddCognitiveRuleResponse>> {\n return this.http.requestWithMetadata<AddCognitiveRuleResponse>('POST', `${BASE}/rules`, {\n body: request,\n options,\n });\n }\n\n async addSort(\n request: CreateCognitiveSortRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<CreateCognitiveSortResponse>> {\n return this.http.requestWithMetadata<CreateCognitiveSortResponse>('POST', `${BASE}/sorts`, {\n body: request,\n options,\n });\n }\n\n async recallEpisodes(\n request: RecallEpisodesRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RecallEpisodesResponse>> {\n return this.http.requestWithMetadata<RecallEpisodesResponse>(\n 'POST',\n `${BASE}/episodes/recall`,\n { body: request, options },\n );\n }\n\n async getEpisodeStats(\n agentId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<EpisodeStatsResponse>> {\n return this.http.requestWithMetadata<EpisodeStatsResponse>(\n 'GET',\n `${BASE}/${agentId}/episodes/stats`,\n { options },\n );\n }\n\n async addHtnMethod(\n request: AddHtnMethodRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<AddHtnMethodResponse>> {\n return this.http.requestWithMetadata<AddHtnMethodResponse>('POST', `${BASE}/htn/methods`, {\n body: request,\n options,\n });\n }\n\n async sendMessage(\n request: SendMessageRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SendMessageResponse>> {\n return this.http.requestWithMetadata<SendMessageResponse>('POST', `${BASE}/messages`, {\n body: request,\n options,\n });\n }\n\n async broadcastMessage(\n request: BroadcastMessageRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<BroadcastMessageResponse>> {\n return this.http.requestWithMetadata<BroadcastMessageResponse>(\n 'POST',\n `${BASE}/messages/broadcast`,\n { body: request, options },\n );\n }\n\n async markMessagesRead(\n request: MarkMessagesReadRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<MarkMessagesReadResponse>> {\n return this.http.requestWithMetadata<MarkMessagesReadResponse>(\n 'POST',\n `${BASE}/messages/read`,\n { body: request, options },\n );\n }\n\n async provideFeedback(\n request: ProvideFeedbackRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ProvideFeedbackResponse>> {\n return this.http.requestWithMetadata<ProvideFeedbackResponse>('POST', '/api/v1/cognitive/feedback', {\n body: request,\n options,\n });\n }\n\n async integratedCycle(\n request: RunIntegratedCycleRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RunIntegratedCycleResponse>> {\n return this.http.requestWithMetadata<RunIntegratedCycleResponse>(\n 'POST',\n `${BASE}/integrated-cycle`,\n { body: request, options },\n );\n }\n\n async subscribeToKb(\n request: SubscribeToKbRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SubscribeToKbResponse>> {\n return this.http.requestWithMetadata<SubscribeToKbResponse>('POST', `${BASE}/subscribe`, {\n body: request,\n options,\n });\n }\n\n async recordEpisode(\n request: RecordEpisodeRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RecordEpisodeResponse>> {\n return this.http.requestWithMetadata<RecordEpisodeResponse>('POST', `${BASE}/episodes`, {\n body: request,\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n FuzzyUnifyRequest,\n FuzzyUnifyResponse,\n FuzzyMergeRequest,\n FuzzyMergeResponse,\n FuzzySubsumptionRequest,\n FuzzySubsumptionResponse,\n FuzzySearchTopKRequest,\n FuzzySearchTopKResponse,\n PredictEffectRequest,\n PredictEffectResponse,\n} from '../types/fuzzy.js';\n\nconst BASE = '/api/v1/fuzzy';\n\n/**\n * Resource client for fuzzy operations.\n *\n * @remarks\n * Provides fuzzy unification, merging, subsumption checking,\n * top-K similarity search, and effect prediction.\n */\nexport class FuzzyClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Fuzzy unify two terms.\n *\n * @param request - Unification request with two term IDs and threshold.\n * @param options - Per-call request options.\n * @returns Unification degree, confidence, and unified term.\n */\n async fuzzyUnify(\n request: FuzzyUnifyRequest,\n options?: RequestOptions,\n ): Promise<FuzzyUnifyResponse> {\n return this.http.post<FuzzyUnifyResponse>(`${BASE}/unify`, request, options);\n }\n\n /**\n * Fuzzy merge two terms.\n *\n * @param request - Merge request with two term IDs and strategy.\n * @param options - Per-call request options.\n * @returns Merge result with computation time and feature count.\n */\n async fuzzyMerge(\n request: FuzzyMergeRequest,\n options?: RequestOptions,\n ): Promise<FuzzyMergeResponse> {\n return this.http.post<FuzzyMergeResponse>(`${BASE}/merge`, request, options);\n }\n\n /**\n * Check fuzzy subsumption between two terms.\n *\n * @param request - Subsumption request with general and specific term IDs.\n * @param options - Per-call request options.\n * @returns Subsumption degree and whether the relationship holds.\n */\n async fuzzySubsumption(\n request: FuzzySubsumptionRequest,\n options?: RequestOptions,\n ): Promise<FuzzySubsumptionResponse> {\n return this.http.post<FuzzySubsumptionResponse>(`${BASE}/subsumption`, request, options);\n }\n\n /**\n * Search for top-K most similar terms.\n *\n * @param request - Search request with query term and K.\n * @param options - Per-call request options.\n * @returns Top-K results sorted by similarity degree.\n */\n async searchTopK(\n request: FuzzySearchTopKRequest,\n options?: RequestOptions,\n ): Promise<FuzzySearchTopKResponse> {\n return this.http.post<FuzzySearchTopKResponse>(`${BASE}/search/top-k`, request, options);\n }\n\n /**\n * Predict the effect for a query point.\n *\n * @param request - Effect prediction request.\n * @param options - Per-call request options.\n * @returns Predicted effect with confidence and proof trace.\n */\n async predictEffect(\n request: PredictEffectRequest,\n options?: RequestOptions,\n ): Promise<PredictEffectResponse> {\n return this.http.post<PredictEffectResponse>(`${BASE}/predict-effect`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): FuzzyClientWithMetadata {\n return new FuzzyClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link FuzzyClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class FuzzyClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async fuzzyUnify(\n request: FuzzyUnifyRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<FuzzyUnifyResponse>> {\n return this.http.requestWithMetadata<FuzzyUnifyResponse>('POST', `${BASE}/unify`, {\n body: request,\n options,\n });\n }\n\n async fuzzyMerge(\n request: FuzzyMergeRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<FuzzyMergeResponse>> {\n return this.http.requestWithMetadata<FuzzyMergeResponse>('POST', `${BASE}/merge`, {\n body: request,\n options,\n });\n }\n\n async fuzzySubsumption(\n request: FuzzySubsumptionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<FuzzySubsumptionResponse>> {\n return this.http.requestWithMetadata<FuzzySubsumptionResponse>(\n 'POST',\n `${BASE}/subsumption`,\n { body: request, options },\n );\n }\n\n async searchTopK(\n request: FuzzySearchTopKRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<FuzzySearchTopKResponse>> {\n return this.http.requestWithMetadata<FuzzySearchTopKResponse>(\n 'POST',\n `${BASE}/search/top-k`,\n { body: request, options },\n );\n }\n\n async predictEffect(\n request: PredictEffectRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<PredictEffectResponse>> {\n return this.http.requestWithMetadata<PredictEffectResponse>(\n 'POST',\n `${BASE}/predict-effect`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n SolveConstraintRequest,\n SolveConstraintResponse,\n ConstraintGraphRequest,\n ConstraintGraphResponse,\n CreateConstraintSessionRequest,\n ConstraintSessionStatus,\n AddConstraintsRequest,\n BindVariablesRequest,\n BindVariablesResponse,\n} from '../types/constraints.js';\n\nconst BASE = '/api/v1/constraints';\nconst SESSION_BASE = '/api/v1/constraint-sessions';\n\n/**\n * Resource client for constraint operations.\n *\n * @remarks\n * Provides arithmetic constraint solving and constraint graph visualization.\n */\nexport class ConstraintsClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Solve arithmetic constraints.\n *\n * @param request - Constraints to solve with optional initial bindings.\n * @param options - Per-call request options.\n * @returns Solver result with variable bindings.\n */\n async solve(\n request: SolveConstraintRequest,\n options?: RequestOptions,\n ): Promise<SolveConstraintResponse> {\n return this.http.post<SolveConstraintResponse>(`${BASE}/solve`, request, options);\n }\n\n /**\n * Get constraint graph visualization.\n *\n * @param request - Graph request with optional focus term and flags.\n * @param options - Per-call request options.\n * @returns Constraint graph with statistics and optional cycle/FD domain data.\n */\n async getGraph(\n request: ConstraintGraphRequest,\n options?: RequestOptions,\n ): Promise<ConstraintGraphResponse> {\n return this.http.post<ConstraintGraphResponse>(`${BASE}/graph`, request, options);\n }\n\n // --- Session Management ---\n\n /**\n * Create a constraint session.\n *\n * @param request - Session creation parameters.\n * @param options - Per-call request options.\n * @returns Session status.\n */\n async createSession(\n request: CreateConstraintSessionRequest,\n options?: RequestOptions,\n ): Promise<ConstraintSessionStatus> {\n return this.http.post<ConstraintSessionStatus>(SESSION_BASE, request, options);\n }\n\n /**\n * Get a constraint session by ID.\n *\n * @param sessionId - Session ID.\n * @param options - Per-call request options.\n * @returns Session status.\n */\n async getSession(sessionId: string, options?: RequestOptions): Promise<ConstraintSessionStatus> {\n return this.http.get<ConstraintSessionStatus>(`${SESSION_BASE}/${sessionId}`, options);\n }\n\n /**\n * Add constraints to a session.\n *\n * @param sessionId - Session ID.\n * @param request - Constraints to add.\n * @param options - Per-call request options.\n * @returns Updated session status.\n */\n async addConstraints(\n sessionId: string,\n request: AddConstraintsRequest,\n options?: RequestOptions,\n ): Promise<ConstraintSessionStatus> {\n return this.http.post<ConstraintSessionStatus>(\n `${SESSION_BASE}/${sessionId}/constraints`,\n request,\n options,\n );\n }\n\n /**\n * Bind variables in a constraint session.\n *\n * @param sessionId - Session ID.\n * @param request - Variable bindings.\n * @param options - Per-call request options.\n * @returns Binding result.\n */\n async bindVariables(\n sessionId: string,\n request: BindVariablesRequest,\n options?: RequestOptions,\n ): Promise<BindVariablesResponse> {\n return this.http.post<BindVariablesResponse>(\n `${SESSION_BASE}/${sessionId}/bindings`,\n request,\n options,\n );\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): ConstraintsClientWithMetadata {\n return new ConstraintsClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link ConstraintsClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class ConstraintsClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async solve(\n request: SolveConstraintRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SolveConstraintResponse>> {\n return this.http.requestWithMetadata<SolveConstraintResponse>('POST', `${BASE}/solve`, {\n body: request,\n options,\n });\n }\n\n async getGraph(\n request: ConstraintGraphRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ConstraintGraphResponse>> {\n return this.http.requestWithMetadata<ConstraintGraphResponse>('POST', `${BASE}/graph`, {\n body: request,\n options,\n });\n }\n\n async createSession(\n request: CreateConstraintSessionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ConstraintSessionStatus>> {\n return this.http.requestWithMetadata<ConstraintSessionStatus>('POST', SESSION_BASE, {\n body: request,\n options,\n });\n }\n\n async getSession(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<ConstraintSessionStatus>> {\n return this.http.requestWithMetadata<ConstraintSessionStatus>(\n 'GET',\n `${SESSION_BASE}/${sessionId}`,\n { options },\n );\n }\n\n async addConstraints(\n sessionId: string,\n request: AddConstraintsRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ConstraintSessionStatus>> {\n return this.http.requestWithMetadata<ConstraintSessionStatus>(\n 'POST',\n `${SESSION_BASE}/${sessionId}/constraints`,\n { body: request, options },\n );\n }\n\n async bindVariables(\n sessionId: string,\n request: BindVariablesRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<BindVariablesResponse>> {\n return this.http.requestWithMetadata<BindVariablesResponse>(\n 'POST',\n `${SESSION_BASE}/${sessionId}/bindings`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n CreateRootNamespaceRequest,\n CreateChildNamespaceRequest,\n AddImportRequest,\n UpdateMetadataRequest,\n NamespaceDto,\n} from '../types/namespaces.js';\n\nconst BASE = '/api/v1/namespaces';\n\n/**\n * Resource client for namespace operations.\n *\n * @remarks\n * Provides CRUD operations for namespaces, import management,\n * and metadata updates.\n */\nexport class NamespacesClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Create a root namespace.\n *\n * @param request - Root namespace creation parameters.\n * @param options - Per-call request options.\n * @returns The created namespace.\n */\n async createRoot(\n request: CreateRootNamespaceRequest,\n options?: RequestOptions,\n ): Promise<NamespaceDto> {\n return this.http.post<NamespaceDto>(BASE, request, options);\n }\n\n /**\n * Create a child namespace.\n *\n * @param parentId - Parent namespace UUID.\n * @param request - Child namespace creation parameters.\n * @param options - Per-call request options.\n * @returns The created namespace.\n */\n async createChild(\n parentId: string,\n request: CreateChildNamespaceRequest,\n options?: RequestOptions,\n ): Promise<NamespaceDto> {\n return this.http.post<NamespaceDto>(`${BASE}/${parentId}/children`, request, options);\n }\n\n /**\n * Get a namespace by ID.\n *\n * @param namespaceId - Namespace UUID.\n * @param options - Per-call request options.\n * @returns The namespace.\n */\n async get(namespaceId: string, options?: RequestOptions): Promise<NamespaceDto> {\n return this.http.get<NamespaceDto>(`${BASE}/${namespaceId}`, options);\n }\n\n /**\n * Delete a namespace.\n *\n * @param namespaceId - Namespace UUID.\n * @param options - Per-call request options.\n */\n async delete(namespaceId: string, options?: RequestOptions): Promise<void> {\n await this.http.delete(`${BASE}/${namespaceId}`, options);\n }\n\n /**\n * List all namespaces.\n *\n * @param options - Per-call request options.\n * @returns Array of namespaces.\n */\n async list(options?: RequestOptions): Promise<NamespaceDto[]> {\n return this.http.get<NamespaceDto[]>(BASE, options);\n }\n\n /**\n * Add an import to a namespace.\n *\n * @param namespaceId - Namespace UUID.\n * @param request - Import request with source namespace ID.\n * @param options - Per-call request options.\n */\n async addImport(\n namespaceId: string,\n request: AddImportRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/${namespaceId}/imports`, request, options);\n }\n\n /**\n * Update namespace metadata.\n *\n * @param namespaceId - Namespace UUID.\n * @param request - Metadata update request.\n * @param options - Per-call request options.\n * @returns The updated namespace.\n */\n async updateMetadata(\n namespaceId: string,\n request: UpdateMetadataRequest,\n options?: RequestOptions,\n ): Promise<NamespaceDto> {\n return this.http.put<NamespaceDto>(`${BASE}/${namespaceId}/metadata`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): NamespacesClientWithMetadata {\n return new NamespacesClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link NamespacesClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class NamespacesClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async createRoot(\n request: CreateRootNamespaceRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<NamespaceDto>> {\n return this.http.requestWithMetadata<NamespaceDto>('POST', BASE, {\n body: request,\n options,\n });\n }\n\n async createChild(\n parentId: string,\n request: CreateChildNamespaceRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<NamespaceDto>> {\n return this.http.requestWithMetadata<NamespaceDto>(\n 'POST',\n `${BASE}/${parentId}/children`,\n { body: request, options },\n );\n }\n\n async get(\n namespaceId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<NamespaceDto>> {\n return this.http.requestWithMetadata<NamespaceDto>('GET', `${BASE}/${namespaceId}`, {\n options,\n });\n }\n\n async delete(namespaceId: string, options?: RequestOptions): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('DELETE', `${BASE}/${namespaceId}`, { options });\n }\n\n async list(options?: RequestOptions): Promise<ApiResponse<NamespaceDto[]>> {\n return this.http.requestWithMetadata<NamespaceDto[]>('GET', BASE, { options });\n }\n\n async addImport(\n namespaceId: string,\n request: AddImportRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/${namespaceId}/imports`, {\n body: request,\n options,\n });\n }\n\n async updateMetadata(\n namespaceId: string,\n request: UpdateMetadataRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<NamespaceDto>> {\n return this.http.requestWithMetadata<NamespaceDto>(\n 'PUT',\n `${BASE}/${namespaceId}/metadata`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n CreateCollectionRequest,\n UpdateCollectionRequest,\n CollectionDto,\n} from '../types/collections.js';\n\nconst BASE = '/api/v1/collections';\n\n/**\n * Resource client for collection operations.\n *\n * @remarks\n * Provides CRUD operations for collections, which organize terms\n * into hierarchical groupings with metadata and tags.\n */\nexport class CollectionsClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Create a collection.\n *\n * @param request - Collection creation parameters.\n * @param options - Per-call request options.\n * @returns The created collection.\n */\n async create(\n request: CreateCollectionRequest,\n options?: RequestOptions,\n ): Promise<CollectionDto> {\n return this.http.post<CollectionDto>(BASE, request, options);\n }\n\n /**\n * Get a collection by ID.\n *\n * @param collectionId - Collection UUID.\n * @param options - Per-call request options.\n * @returns The collection.\n */\n async get(collectionId: string, options?: RequestOptions): Promise<CollectionDto> {\n return this.http.get<CollectionDto>(`${BASE}/${collectionId}`, options);\n }\n\n /**\n * Update a collection.\n *\n * @param collectionId - Collection UUID.\n * @param request - Update parameters.\n * @param options - Per-call request options.\n * @returns The updated collection.\n */\n async update(\n collectionId: string,\n request: UpdateCollectionRequest,\n options?: RequestOptions,\n ): Promise<CollectionDto> {\n return this.http.put<CollectionDto>(`${BASE}/${collectionId}`, request, options);\n }\n\n /**\n * Delete a collection.\n *\n * @param collectionId - Collection UUID.\n * @param options - Per-call request options.\n */\n async delete(collectionId: string, options?: RequestOptions): Promise<void> {\n await this.http.delete(`${BASE}/${collectionId}`, options);\n }\n\n /**\n * List all collections.\n *\n * @param options - Per-call request options.\n * @returns Array of collections.\n */\n async list(options?: RequestOptions): Promise<CollectionDto[]> {\n return this.http.get<CollectionDto[]>(BASE, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): CollectionsClientWithMetadata {\n return new CollectionsClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link CollectionsClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class CollectionsClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async create(\n request: CreateCollectionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<CollectionDto>> {\n return this.http.requestWithMetadata<CollectionDto>('POST', BASE, {\n body: request,\n options,\n });\n }\n\n async get(\n collectionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<CollectionDto>> {\n return this.http.requestWithMetadata<CollectionDto>('GET', `${BASE}/${collectionId}`, {\n options,\n });\n }\n\n async update(\n collectionId: string,\n request: UpdateCollectionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<CollectionDto>> {\n return this.http.requestWithMetadata<CollectionDto>('PUT', `${BASE}/${collectionId}`, {\n body: request,\n options,\n });\n }\n\n async delete(\n collectionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('DELETE', `${BASE}/${collectionId}`, { options });\n }\n\n async list(options?: RequestOptions): Promise<ApiResponse<CollectionDto[]>> {\n return this.http.requestWithMetadata<CollectionDto[]>('GET', BASE, { options });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n CreateExecutionSessionRequest,\n ExecutionSessionResponse,\n BacktrackResponse,\n GoalStackResponse,\n ResiduateGoalRequest,\n ResiduateGoalResponse,\n BindTermRequest,\n BindTermResponse,\n ReleaseResiduationsRequest,\n ReleaseResiduationsResponse,\n AppendResiduationsRequest,\n AppendResiduationsResponse,\n GetResiduationsRequest,\n GetResiduationsResponse,\n} from '../types/execution.js';\n\nconst BASE = '/api/v1/execution';\n\n/**\n * Resource client for execution session operations.\n *\n * @remarks\n * Provides session management, backtracking, and goal stack inspection\n * for the WAM-style execution engine.\n */\nexport class ExecutionClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Create a new execution session.\n *\n * @param request - Session creation parameters.\n * @param options - Per-call request options.\n * @returns The created session.\n */\n async createSession(\n request: CreateExecutionSessionRequest,\n options?: RequestOptions,\n ): Promise<ExecutionSessionResponse> {\n return this.http.post<ExecutionSessionResponse>(`${BASE}/sessions`, request, options);\n }\n\n /**\n * Get an execution session.\n *\n * @param sessionId - Session ID.\n * @param options - Per-call request options.\n * @returns The session state.\n */\n async getSession(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ExecutionSessionResponse> {\n return this.http.get<ExecutionSessionResponse>(`${BASE}/sessions/${sessionId}`, options);\n }\n\n /**\n * Delete an execution session.\n *\n * @param sessionId - Session ID.\n * @param options - Per-call request options.\n */\n async deleteSession(sessionId: string, options?: RequestOptions): Promise<void> {\n await this.http.delete(`${BASE}/sessions/${sessionId}`, options);\n }\n\n /**\n * Backtrack the session (undo recent operations).\n *\n * @param sessionId - Session ID.\n * @param options - Per-call request options.\n * @returns Backtrack result with undone entries.\n */\n async backtrack(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<BacktrackResponse> {\n return this.http.post<BacktrackResponse>(\n `${BASE}/sessions/${sessionId}/backtrack`,\n undefined,\n options,\n );\n }\n\n /**\n * Get the current goal stack.\n *\n * @param sessionId - Session ID.\n * @param options - Per-call request options.\n * @returns Goal stack state.\n */\n async getGoalStack(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<GoalStackResponse> {\n return this.http.get<GoalStackResponse>(`${BASE}/sessions/${sessionId}/goals`, options);\n }\n\n /**\n * Get the session trail (undo log).\n *\n * @param sessionId - Session ID.\n * @param options - Per-call request options.\n * @returns Trail entries.\n */\n async getTrail(sessionId: string, options?: RequestOptions): Promise<unknown> {\n return this.http.get(`${BASE}/sessions/${sessionId}/trail`, options);\n }\n\n /**\n * Get choice points in the session.\n *\n * @param sessionId - Session ID.\n * @param options - Per-call request options.\n * @returns Choice point data.\n */\n async getChoicePoints(sessionId: string, options?: RequestOptions): Promise<unknown> {\n return this.http.get(`${BASE}/sessions/${sessionId}/choice-points`, options);\n }\n\n // --- Residuation ---\n\n /**\n * Residuate a goal (suspend until data becomes available).\n *\n * @param sessionId - Session ID.\n * @param request - Residuation request.\n * @param options - Per-call request options.\n * @returns Residuation result.\n */\n async residuate(\n sessionId: string,\n request: ResiduateGoalRequest,\n options?: RequestOptions,\n ): Promise<ResiduateGoalResponse> {\n return this.http.post<ResiduateGoalResponse>(\n `${BASE}/sessions/${sessionId}/residuate`,\n request,\n options,\n );\n }\n\n /**\n * Bind a term with sort and feature values.\n *\n * @param sessionId - Session ID.\n * @param request - Binding request.\n * @param options - Per-call request options.\n * @returns Binding result with evaluation results from released residuations.\n */\n async bind(\n sessionId: string,\n request: BindTermRequest,\n options?: RequestOptions,\n ): Promise<BindTermResponse> {\n return this.http.post<BindTermResponse>(\n `${BASE}/sessions/${sessionId}/bindings`,\n request,\n options,\n );\n }\n\n /**\n * Release residuations for a term (attempt evaluation).\n *\n * @param sessionId - Session ID.\n * @param request - Release request.\n * @param options - Per-call request options.\n * @returns Released goals and evaluation results.\n */\n async releaseResiduations(\n sessionId: string,\n request: ReleaseResiduationsRequest,\n options?: RequestOptions,\n ): Promise<ReleaseResiduationsResponse> {\n return this.http.post<ReleaseResiduationsResponse>(\n `${BASE}/sessions/${sessionId}/residuate/release`,\n request,\n options,\n );\n }\n\n /**\n * Append residuations from a source term to a target term.\n *\n * @param sessionId - Session ID.\n * @param request - Append request.\n * @param options - Per-call request options.\n * @returns Append result.\n */\n async appendResiduations(\n sessionId: string,\n request: AppendResiduationsRequest,\n options?: RequestOptions,\n ): Promise<AppendResiduationsResponse> {\n return this.http.post<AppendResiduationsResponse>(\n `${BASE}/sessions/${sessionId}/residuations/append`,\n request,\n options,\n );\n }\n\n /**\n * Get residuations for a term.\n *\n * @param sessionId - Session ID.\n * @param request - Get residuations request.\n * @param options - Per-call request options.\n * @returns Residuation details.\n */\n async getResiduations(\n sessionId: string,\n request: GetResiduationsRequest,\n options?: RequestOptions,\n ): Promise<GetResiduationsResponse> {\n return this.http.post<GetResiduationsResponse>(\n `${BASE}/sessions/${sessionId}/residuations`,\n request,\n options,\n );\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): ExecutionClientWithMetadata {\n return new ExecutionClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link ExecutionClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class ExecutionClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async createSession(\n request: CreateExecutionSessionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ExecutionSessionResponse>> {\n return this.http.requestWithMetadata<ExecutionSessionResponse>(\n 'POST',\n `${BASE}/sessions`,\n { body: request, options },\n );\n }\n\n async getSession(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<ExecutionSessionResponse>> {\n return this.http.requestWithMetadata<ExecutionSessionResponse>(\n 'GET',\n `${BASE}/sessions/${sessionId}`,\n { options },\n );\n }\n\n async deleteSession(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('DELETE', `${BASE}/sessions/${sessionId}`, {\n options,\n });\n }\n\n async backtrack(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<BacktrackResponse>> {\n return this.http.requestWithMetadata<BacktrackResponse>(\n 'POST',\n `${BASE}/sessions/${sessionId}/backtrack`,\n { body: undefined, options },\n );\n }\n\n async getGoalStack(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<GoalStackResponse>> {\n return this.http.requestWithMetadata<GoalStackResponse>(\n 'GET',\n `${BASE}/sessions/${sessionId}/goals`,\n { options },\n );\n }\n\n async getTrail(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>(\n 'GET',\n `${BASE}/sessions/${sessionId}/trail`,\n { options },\n );\n }\n\n async getChoicePoints(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>(\n 'GET',\n `${BASE}/sessions/${sessionId}/choice-points`,\n { options },\n );\n }\n\n async residuate(\n sessionId: string,\n request: ResiduateGoalRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ResiduateGoalResponse>> {\n return this.http.requestWithMetadata<ResiduateGoalResponse>(\n 'POST',\n `${BASE}/sessions/${sessionId}/residuate`,\n { body: request, options },\n );\n }\n\n async bind(\n sessionId: string,\n request: BindTermRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<BindTermResponse>> {\n return this.http.requestWithMetadata<BindTermResponse>(\n 'POST',\n `${BASE}/sessions/${sessionId}/bindings`,\n { body: request, options },\n );\n }\n\n async releaseResiduations(\n sessionId: string,\n request: ReleaseResiduationsRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ReleaseResiduationsResponse>> {\n return this.http.requestWithMetadata<ReleaseResiduationsResponse>(\n 'POST',\n `${BASE}/sessions/${sessionId}/residuate/release`,\n { body: request, options },\n );\n }\n\n async appendResiduations(\n sessionId: string,\n request: AppendResiduationsRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<AppendResiduationsResponse>> {\n return this.http.requestWithMetadata<AppendResiduationsResponse>(\n 'POST',\n `${BASE}/sessions/${sessionId}/residuations/append`,\n { body: request, options },\n );\n }\n\n async getResiduations(\n sessionId: string,\n request: GetResiduationsRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<GetResiduationsResponse>> {\n return this.http.requestWithMetadata<GetResiduationsResponse>(\n 'POST',\n `${BASE}/sessions/${sessionId}/residuations`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n CausalAncestorRequest,\n CausalAncestorResponse,\n CausesRequest,\n CausesResponse,\n CounterfactualRequest,\n CounterfactualResponse,\n DSeparatedRequest,\n DSeparatedResponse,\n InterventionRequest,\n InterventionResponse,\n GetCausalModelResponse,\n AddCausalRelationRequest,\n AddCausalRelationResponse,\n RootCauseAnalysisRequest,\n RootCauseAnalysisResponse,\n RootCauseWithProofResponse,\n} from '../types/causal.js';\n\nconst BASE = '/api/v1/causal';\n\n/**\n * Resource client for Pearl's causal hierarchy operations.\n *\n * @remarks\n * Provides causal reasoning operations including ancestry checks,\n * direct causation, counterfactual evaluation, d-separation,\n * do-calculus interventions, causal model management, and root cause analysis.\n */\nexport class CausalClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Check if one variable is a causal ancestor of another.\n *\n * @param request - Ancestor check request with ancestor and descendant variables.\n * @param options - Per-call request options.\n * @returns Ancestry result with path and certainty.\n */\n async checkAncestor(\n request: CausalAncestorRequest,\n options?: RequestOptions,\n ): Promise<CausalAncestorResponse> {\n return this.http.post<CausalAncestorResponse>(`${BASE}/ancestor`, request, options);\n }\n\n /**\n * Check if one variable directly causes another.\n *\n * @param request - Causes check request with cause and effect variables.\n * @param options - Per-call request options.\n * @returns Whether the causal relationship exists with certainty.\n */\n async checkCauses(\n request: CausesRequest,\n options?: RequestOptions,\n ): Promise<CausesResponse> {\n return this.http.post<CausesResponse>(`${BASE}/causes`, request, options);\n }\n\n /**\n * Evaluate a counterfactual query using Pearl's three-step algorithm.\n *\n * @param request - Counterfactual request with antecedent, consequent, and evidence.\n * @param options - Per-call request options.\n * @returns Counterfactual result with trace of abduction, action, and prediction.\n */\n async counterfactual(\n request: CounterfactualRequest,\n options?: RequestOptions,\n ): Promise<CounterfactualResponse> {\n return this.http.post<CounterfactualResponse>(`${BASE}/counterfactual`, request, options);\n }\n\n /**\n * Check d-separation between two variables given a conditioning set.\n *\n * @param request - D-separation request with variables and conditioning set.\n * @param options - Per-call request options.\n * @returns Whether the variables are d-separated and active paths.\n */\n async checkDSeparated(\n request: DSeparatedRequest,\n options?: RequestOptions,\n ): Promise<DSeparatedResponse> {\n return this.http.post<DSeparatedResponse>(`${BASE}/d-separated`, request, options);\n }\n\n /**\n * Apply a do-calculus intervention and query a variable.\n *\n * @param request - Intervention request with variable, value, and query.\n * @param options - Per-call request options.\n * @returns Intervention result with query output.\n */\n async intervene(\n request: InterventionRequest,\n options?: RequestOptions,\n ): Promise<InterventionResponse> {\n return this.http.post<InterventionResponse>(`${BASE}/intervention`, request, options);\n }\n\n /**\n * Get the current causal model (all variables and edges).\n *\n * @param options - Per-call request options.\n * @returns The causal model with variables and edges.\n */\n async getModel(options?: RequestOptions): Promise<GetCausalModelResponse> {\n return this.http.get<GetCausalModelResponse>(`${BASE}/model`, options);\n }\n\n /**\n * Add a causal relation to the model.\n *\n * @param request - Relation request with cause, effect, and optional certainty.\n * @param options - Per-call request options.\n * @returns Success status and created rule ID.\n */\n async addRelation(\n request: AddCausalRelationRequest,\n options?: RequestOptions,\n ): Promise<AddCausalRelationResponse> {\n return this.http.post<AddCausalRelationResponse>(`${BASE}/relations`, request, options);\n }\n\n /**\n * Perform root cause analysis for an effect.\n *\n * @param request - Root cause request with effect and optional max depth.\n * @param options - Per-call request options.\n * @returns Root causes and causal chains.\n */\n async rootCause(\n request: RootCauseAnalysisRequest,\n options?: RequestOptions,\n ): Promise<RootCauseAnalysisResponse> {\n return this.http.post<RootCauseAnalysisResponse>(`${BASE}/root-cause`, request, options);\n }\n\n /**\n * Perform root cause analysis with a proof tree.\n *\n * @param request - Root cause request with effect and optional max depth.\n * @param options - Per-call request options.\n * @returns Root causes, causal chains, and proof tree.\n */\n async rootCauseWithProof(\n request: RootCauseAnalysisRequest,\n options?: RequestOptions,\n ): Promise<RootCauseWithProofResponse> {\n return this.http.post<RootCauseWithProofResponse>(\n `${BASE}/root-cause-with-proof`,\n request,\n options,\n );\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): CausalClientWithMetadata {\n return new CausalClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link CausalClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class CausalClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async checkAncestor(\n request: CausalAncestorRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<CausalAncestorResponse>> {\n return this.http.requestWithMetadata<CausalAncestorResponse>('POST', `${BASE}/ancestor`, {\n body: request,\n options,\n });\n }\n\n async checkCauses(\n request: CausesRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<CausesResponse>> {\n return this.http.requestWithMetadata<CausesResponse>('POST', `${BASE}/causes`, {\n body: request,\n options,\n });\n }\n\n async counterfactual(\n request: CounterfactualRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<CounterfactualResponse>> {\n return this.http.requestWithMetadata<CounterfactualResponse>(\n 'POST',\n `${BASE}/counterfactual`,\n { body: request, options },\n );\n }\n\n async checkDSeparated(\n request: DSeparatedRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<DSeparatedResponse>> {\n return this.http.requestWithMetadata<DSeparatedResponse>('POST', `${BASE}/d-separated`, {\n body: request,\n options,\n });\n }\n\n async intervene(\n request: InterventionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<InterventionResponse>> {\n return this.http.requestWithMetadata<InterventionResponse>('POST', `${BASE}/intervention`, {\n body: request,\n options,\n });\n }\n\n async getModel(options?: RequestOptions): Promise<ApiResponse<GetCausalModelResponse>> {\n return this.http.requestWithMetadata<GetCausalModelResponse>('GET', `${BASE}/model`, {\n options,\n });\n }\n\n async addRelation(\n request: AddCausalRelationRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<AddCausalRelationResponse>> {\n return this.http.requestWithMetadata<AddCausalRelationResponse>('POST', `${BASE}/relations`, {\n body: request,\n options,\n });\n }\n\n async rootCause(\n request: RootCauseAnalysisRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RootCauseAnalysisResponse>> {\n return this.http.requestWithMetadata<RootCauseAnalysisResponse>(\n 'POST',\n `${BASE}/root-cause`,\n { body: request, options },\n );\n }\n\n async rootCauseWithProof(\n request: RootCauseAnalysisRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RootCauseWithProofResponse>> {\n return this.http.requestWithMetadata<RootCauseWithProofResponse>(\n 'POST',\n `${BASE}/root-cause-with-proof`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n IngestDocumentRequest,\n IngestDocumentResponse,\n IngestDocumentBatchRequest,\n IngestDocumentBatchResponse,\n IngestMarkdownRequest,\n IngestMarkdownResponse,\n IngestMarkdownBatchRequest,\n IngestRdfRequest,\n IngestRdfResponse,\n ListIngestionSessionsResponse,\n StartIngestionSessionRequest,\n IngestionSessionResponse,\n ListIncompleteDocumentsResponse,\n ResumeDocumentIngestionRequest,\n ResumeDocumentIngestionResponse,\n} from '../types/ingestion.js';\n\nconst BASE = '/api/v1/ingest';\n\n/**\n * Resource client for document, markdown, and RDF ingestion.\n *\n * @remarks\n * Provides ingestion of documents (with OCR), markdown content,\n * and RDF data. Supports batch operations and session-based\n * tracking with resumption for incomplete documents.\n */\nexport class IngestionClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Ingest a single document.\n *\n * @param request - Document ingestion request with source, config, and owner.\n * @param options - Per-call request options.\n * @returns Ingestion result with stats, metadata, and parse info.\n */\n async ingestDocument(\n request: IngestDocumentRequest,\n options?: RequestOptions,\n ): Promise<IngestDocumentResponse> {\n return this.http.post<IngestDocumentResponse>(`${BASE}/document`, request, options);\n }\n\n /**\n * Ingest a batch of documents.\n *\n * @param request - Batch ingestion request with documents, config, and owner.\n * @param options - Per-call request options.\n * @returns Batch results with per-document status.\n */\n async ingestDocumentBatch(\n request: IngestDocumentBatchRequest,\n options?: RequestOptions,\n ): Promise<IngestDocumentBatchResponse> {\n return this.http.post<IngestDocumentBatchResponse>(\n `${BASE}/document/batch`,\n request,\n options,\n );\n }\n\n /**\n * Ingest markdown content.\n *\n * @param request - Markdown ingestion request with content and owner.\n * @param options - Per-call request options.\n * @returns Ingestion statistics and review items.\n */\n async ingestMarkdown(\n request: IngestMarkdownRequest,\n options?: RequestOptions,\n ): Promise<IngestMarkdownResponse> {\n return this.http.post<IngestMarkdownResponse>(`${BASE}/markdown`, request, options);\n }\n\n /**\n * Ingest a batch of markdown documents.\n *\n * @param request - Batch markdown ingestion request with documents and owner.\n * @param options - Per-call request options.\n * @returns Ingestion statistics and review items.\n */\n async ingestMarkdownBatch(\n request: IngestMarkdownBatchRequest,\n options?: RequestOptions,\n ): Promise<IngestMarkdownResponse> {\n return this.http.post<IngestMarkdownResponse>(`${BASE}/markdown/batch`, request, options);\n }\n\n /**\n * Ingest RDF content (Turtle, N-Triples, RDF/XML, or JSON-LD).\n *\n * @param request - RDF ingestion request with content, format, and owner.\n * @param options - Per-call request options.\n * @returns Created sorts and terms from the RDF data.\n */\n async ingestRdf(\n request: IngestRdfRequest,\n options?: RequestOptions,\n ): Promise<IngestRdfResponse> {\n return this.http.post<IngestRdfResponse>(`${BASE}/rdf`, request, options);\n }\n\n /**\n * List all ingestion sessions.\n *\n * @param options - Per-call request options.\n * @returns List of sessions with total count.\n */\n async listSessions(options?: RequestOptions): Promise<ListIngestionSessionsResponse> {\n return this.http.get<ListIngestionSessionsResponse>(`${BASE}/sessions`, options);\n }\n\n /**\n * Start a new ingestion session.\n *\n * @param request - Session start request with document IDs.\n * @param options - Per-call request options.\n * @returns The created session.\n */\n async startSession(\n request: StartIngestionSessionRequest,\n options?: RequestOptions,\n ): Promise<IngestionSessionResponse> {\n return this.http.post<IngestionSessionResponse>(`${BASE}/sessions`, request, options);\n }\n\n /**\n * Get an ingestion session by ID.\n *\n * @param sessionId - Session UUID.\n * @param options - Per-call request options.\n * @returns The session details.\n */\n async getSession(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<IngestionSessionResponse> {\n return this.http.get<IngestionSessionResponse>(`${BASE}/sessions/${sessionId}`, options);\n }\n\n /**\n * Delete an ingestion session.\n *\n * @param sessionId - Session UUID.\n * @param options - Per-call request options.\n */\n async deleteSession(sessionId: string, options?: RequestOptions): Promise<void> {\n await this.http.delete(`${BASE}/sessions/${sessionId}`, options);\n }\n\n /**\n * List incomplete documents in a session that can be resumed.\n *\n * @param sessionId - Session UUID.\n * @param options - Per-call request options.\n * @returns Incomplete documents with resume positions.\n */\n async listIncompleteDocuments(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ListIncompleteDocumentsResponse> {\n return this.http.get<ListIncompleteDocumentsResponse>(\n `${BASE}/sessions/${sessionId}/incomplete`,\n options,\n );\n }\n\n /**\n * Resume ingestion of an incomplete document.\n *\n * @param sessionId - Session UUID.\n * @param request - Resume request with document content and config.\n * @param options - Per-call request options.\n * @returns Resume result with stats and review items.\n */\n async resumeIngestion(\n sessionId: string,\n request: ResumeDocumentIngestionRequest,\n options?: RequestOptions,\n ): Promise<ResumeDocumentIngestionResponse> {\n return this.http.post<ResumeDocumentIngestionResponse>(\n `${BASE}/sessions/${sessionId}/resume`,\n request,\n options,\n );\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): IngestionClientWithMetadata {\n return new IngestionClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link IngestionClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class IngestionClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async ingestDocument(\n request: IngestDocumentRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<IngestDocumentResponse>> {\n return this.http.requestWithMetadata<IngestDocumentResponse>('POST', `${BASE}/document`, {\n body: request,\n options,\n });\n }\n\n async ingestDocumentBatch(\n request: IngestDocumentBatchRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<IngestDocumentBatchResponse>> {\n return this.http.requestWithMetadata<IngestDocumentBatchResponse>(\n 'POST',\n `${BASE}/document/batch`,\n { body: request, options },\n );\n }\n\n async ingestMarkdown(\n request: IngestMarkdownRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<IngestMarkdownResponse>> {\n return this.http.requestWithMetadata<IngestMarkdownResponse>('POST', `${BASE}/markdown`, {\n body: request,\n options,\n });\n }\n\n async ingestMarkdownBatch(\n request: IngestMarkdownBatchRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<IngestMarkdownResponse>> {\n return this.http.requestWithMetadata<IngestMarkdownResponse>(\n 'POST',\n `${BASE}/markdown/batch`,\n { body: request, options },\n );\n }\n\n async ingestRdf(\n request: IngestRdfRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<IngestRdfResponse>> {\n return this.http.requestWithMetadata<IngestRdfResponse>('POST', `${BASE}/rdf`, {\n body: request,\n options,\n });\n }\n\n async listSessions(\n options?: RequestOptions,\n ): Promise<ApiResponse<ListIngestionSessionsResponse>> {\n return this.http.requestWithMetadata<ListIngestionSessionsResponse>(\n 'GET',\n `${BASE}/sessions`,\n { options },\n );\n }\n\n async startSession(\n request: StartIngestionSessionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<IngestionSessionResponse>> {\n return this.http.requestWithMetadata<IngestionSessionResponse>('POST', `${BASE}/sessions`, {\n body: request,\n options,\n });\n }\n\n async getSession(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<IngestionSessionResponse>> {\n return this.http.requestWithMetadata<IngestionSessionResponse>(\n 'GET',\n `${BASE}/sessions/${sessionId}`,\n { options },\n );\n }\n\n async deleteSession(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('DELETE', `${BASE}/sessions/${sessionId}`, {\n options,\n });\n }\n\n async listIncompleteDocuments(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<ListIncompleteDocumentsResponse>> {\n return this.http.requestWithMetadata<ListIncompleteDocumentsResponse>(\n 'GET',\n `${BASE}/sessions/${sessionId}/incomplete`,\n { options },\n );\n }\n\n async resumeIngestion(\n sessionId: string,\n request: ResumeDocumentIngestionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ResumeDocumentIngestionResponse>> {\n return this.http.requestWithMetadata<ResumeDocumentIngestionResponse>(\n 'POST',\n `${BASE}/sessions/${sessionId}/resume`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n AddPendingReviewRequest,\n ApproveEntityRequest,\n BulkApproveRequest,\n BulkMergeRequest,\n BulkRejectRequest,\n CorrectEntityRequest,\n MergeEntityRequest,\n ReExtractRequest,\n RejectEntityRequest,\n} from '../types/reviews.js';\n\nconst BASE = '/api/v1/reviews';\n\n/**\n * Resource client for entity review operations.\n *\n * @remarks\n * Provides methods for managing human-in-the-loop review of extracted\n * or ingested entities, including approval, rejection, correction,\n * merging, bulk operations, and re-extraction.\n */\nexport class ReviewsClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Add an entity to the pending review queue.\n *\n * @param request - Review details including entity, candidates, and reason.\n * @param options - Per-call request options.\n * @returns The created review response.\n */\n async addPendingReview(\n request: AddPendingReviewRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post<unknown>(`${BASE}/add`, request, options);\n }\n\n /**\n * Approve an entity as-is.\n *\n * @param request - Approval request with review ID and optional notes.\n * @param options - Per-call request options.\n * @returns The approval response.\n */\n async approveEntity(\n request: ApproveEntityRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post<unknown>(`${BASE}/approve`, request, options);\n }\n\n /**\n * Bulk approve multiple reviews.\n *\n * @param request - Bulk approval request with review IDs and reviewer.\n * @param options - Per-call request options.\n * @returns The bulk approval response.\n */\n async bulkApprove(\n request: BulkApproveRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post<unknown>(`${BASE}/bulk-approve`, request, options);\n }\n\n /**\n * Bulk merge multiple reviews into a target term.\n *\n * @param request - Bulk merge request with review IDs, reviewer, and target term.\n * @param options - Per-call request options.\n * @returns The bulk merge response.\n */\n async bulkMerge(\n request: BulkMergeRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post<unknown>(`${BASE}/bulk-merge`, request, options);\n }\n\n /**\n * Bulk reject multiple reviews.\n *\n * @param request - Bulk reject request with review IDs, reviewer, and reason.\n * @param options - Per-call request options.\n * @returns The bulk rejection response.\n */\n async bulkReject(\n request: BulkRejectRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post<unknown>(`${BASE}/bulk-reject`, request, options);\n }\n\n /**\n * Correct an entity before approval.\n *\n * @param request - Correction request with review ID, corrected features, and/or sort.\n * @param options - Per-call request options.\n * @returns The correction response.\n */\n async correctEntity(\n request: CorrectEntityRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post<unknown>(`${BASE}/correct`, request, options);\n }\n\n /**\n * Merge an entity with an existing term.\n *\n * @param request - Merge request with review ID, target term, and conflict resolution.\n * @param options - Per-call request options.\n * @returns The merge response.\n */\n async mergeEntity(\n request: MergeEntityRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post<unknown>(`${BASE}/merge`, request, options);\n }\n\n /**\n * List all pending reviews.\n *\n * @param options - Per-call request options.\n * @returns List of pending review entries.\n */\n async listPending(options?: RequestOptions): Promise<unknown> {\n return this.http.get<unknown>(`${BASE}/pending`, options);\n }\n\n /**\n * Re-extract entities from a document.\n *\n * @param request - Re-extraction request with document ID and optional instructions.\n * @param options - Per-call request options.\n * @returns The re-extraction response.\n */\n async reExtract(\n request: ReExtractRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post<unknown>(`${BASE}/re-extract`, request, options);\n }\n\n /**\n * Reject an entity.\n *\n * @param request - Rejection request with review ID and reason.\n * @param options - Per-call request options.\n * @returns The rejection response.\n */\n async rejectEntity(\n request: RejectEntityRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post<unknown>(`${BASE}/reject`, request, options);\n }\n\n /**\n * Get review summary for a tenant.\n *\n * @param tenantId - Tenant UUID.\n * @param options - Per-call request options.\n * @returns Review summary for the tenant.\n */\n async getSummary(tenantId: string, options?: RequestOptions): Promise<unknown> {\n return this.http.get<unknown>(`${BASE}/summary/${tenantId}`, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): ReviewsClientWithMetadata {\n return new ReviewsClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link ReviewsClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class ReviewsClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /** @see {@link ReviewsClient.addPendingReview} */\n async addPendingReview(\n request: AddPendingReviewRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/add`, {\n body: request,\n options,\n });\n }\n\n /** @see {@link ReviewsClient.approveEntity} */\n async approveEntity(\n request: ApproveEntityRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/approve`, {\n body: request,\n options,\n });\n }\n\n /** @see {@link ReviewsClient.bulkApprove} */\n async bulkApprove(\n request: BulkApproveRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/bulk-approve`, {\n body: request,\n options,\n });\n }\n\n /** @see {@link ReviewsClient.bulkMerge} */\n async bulkMerge(\n request: BulkMergeRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/bulk-merge`, {\n body: request,\n options,\n });\n }\n\n /** @see {@link ReviewsClient.bulkReject} */\n async bulkReject(\n request: BulkRejectRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/bulk-reject`, {\n body: request,\n options,\n });\n }\n\n /** @see {@link ReviewsClient.correctEntity} */\n async correctEntity(\n request: CorrectEntityRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/correct`, {\n body: request,\n options,\n });\n }\n\n /** @see {@link ReviewsClient.mergeEntity} */\n async mergeEntity(\n request: MergeEntityRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/merge`, {\n body: request,\n options,\n });\n }\n\n /** @see {@link ReviewsClient.listPending} */\n async listPending(options?: RequestOptions): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('GET', `${BASE}/pending`, { options });\n }\n\n /** @see {@link ReviewsClient.reExtract} */\n async reExtract(\n request: ReExtractRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/re-extract`, {\n body: request,\n options,\n });\n }\n\n /** @see {@link ReviewsClient.rejectEntity} */\n async rejectEntity(\n request: RejectEntityRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/reject`, {\n body: request,\n options,\n });\n }\n\n /** @see {@link ReviewsClient.getSummary} */\n async getSummary(tenantId: string, options?: RequestOptions): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('GET', `${BASE}/summary/${tenantId}`, {\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type { ConstraintGraphRequest, ConstraintGraphResponse } from '../types/constraints.js';\nimport type {\n HypergraphRequest,\n HypergraphResponse,\n LatticeVisualizationRequest,\n LatticeVisualizationResponse,\n GlbLubTraceRequest,\n GlbLubComputationTrace,\n ResiduationStateRequest,\n ResiduationStateResponse,\n TriggerDependencyRequest,\n TriggerDependencyResponse,\n} from '../types/visualization.js';\n\nconst BASE = '/api/v1/visualization';\n\n/**\n * Resource client for visualization operations.\n *\n * @remarks\n * Provides methods for generating graph visualizations of sort lattices,\n * term hypergraphs, constraint networks, GLB/LUB computation traces,\n * residuation state diagrams, and trigger dependency graphs.\n */\nexport class VisualizationClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Generate a constraint graph visualization.\n *\n * @param request - Constraint graph request with optional term focus and cycle detection.\n * @param options - Per-call request options.\n * @returns Constraint graph with nodes, edges, stats, and optional cycles.\n */\n async constraintGraph(\n request: ConstraintGraphRequest,\n options?: RequestOptions,\n ): Promise<ConstraintGraphResponse> {\n return this.http.post<ConstraintGraphResponse>(`${BASE}/constraints`, request, options);\n }\n\n /**\n * Generate a hypergraph visualization of OSF terms.\n *\n * @param request - Hypergraph request with root term and traversal options.\n * @param options - Per-call request options.\n * @returns Hypergraph with graph, stats, components, and degree distribution.\n */\n async hypergraph(\n request: HypergraphRequest,\n options?: RequestOptions,\n ): Promise<HypergraphResponse> {\n return this.http.post<HypergraphResponse>(`${BASE}/hypergraph`, request, options);\n }\n\n /**\n * Generate a hypergraph subgraph centered on a specific term.\n *\n * @param termId - Term UUID to center the subgraph on.\n * @param options - Per-call request options.\n * @returns Hypergraph response for the term's neighborhood.\n */\n async termSubgraph(termId: string, options?: RequestOptions): Promise<HypergraphResponse> {\n return this.http.get<HypergraphResponse>(`${BASE}/hypergraph/term/${termId}`, options);\n }\n\n /**\n * Generate a lattice (sort hierarchy) visualization.\n *\n * @param request - Lattice request with layout and filtering options.\n * @param options - Per-call request options.\n * @returns Lattice visualization with graph and statistics.\n */\n async lattice(\n request: LatticeVisualizationRequest,\n options?: RequestOptions,\n ): Promise<LatticeVisualizationResponse> {\n return this.http.post<LatticeVisualizationResponse>(`${BASE}/lattice`, request, options);\n }\n\n /**\n * Get the sort lattice as a DOT format string.\n *\n * @param options - Per-call request options.\n * @returns The lattice in DOT graph description language.\n *\n * @remarks\n * This endpoint returns a DOT format string. The HttpClient parses the\n * response as JSON, so the backend must return the DOT string as a\n * JSON-encoded string value.\n */\n async latticeDot(options?: RequestOptions): Promise<string> {\n return this.http.get<string>(`${BASE}/lattice/dot`, options);\n }\n\n /**\n * Trace a GLB or LUB computation between two sorts.\n *\n * @param request - Trace request with operation type and two sort IDs.\n * @param options - Per-call request options.\n * @returns Computation trace with steps, result, and optional graph.\n */\n async glbLubTrace(\n request: GlbLubTraceRequest,\n options?: RequestOptions,\n ): Promise<GlbLubComputationTrace> {\n return this.http.post<GlbLubComputationTrace>(\n `${BASE}/lattice/glb-lub-trace`,\n request,\n options,\n );\n }\n\n /**\n * Generate a residuation state diagram.\n *\n * @param request - Residuation state request with kind and state filters.\n * @param options - Per-call request options.\n * @returns Residuation state with terms, graph, and statistics.\n */\n async residuationState(\n request: ResiduationStateRequest,\n options?: RequestOptions,\n ): Promise<ResiduationStateResponse> {\n return this.http.post<ResiduationStateResponse>(`${BASE}/residuation`, request, options);\n }\n\n /**\n * Generate a trigger dependency graph for residuations.\n *\n * @param request - Trigger dependency request with optional residuation focus.\n * @param options - Per-call request options.\n * @returns Trigger dependency graph with critical paths.\n */\n async triggerDependencies(\n request: TriggerDependencyRequest,\n options?: RequestOptions,\n ): Promise<TriggerDependencyResponse> {\n return this.http.post<TriggerDependencyResponse>(\n `${BASE}/residuation/triggers`,\n request,\n options,\n );\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): VisualizationClientWithMetadata {\n return new VisualizationClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link VisualizationClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class VisualizationClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /** @see {@link VisualizationClient.constraintGraph} */\n async constraintGraph(\n request: ConstraintGraphRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ConstraintGraphResponse>> {\n return this.http.requestWithMetadata<ConstraintGraphResponse>('POST', `${BASE}/constraints`, {\n body: request,\n options,\n });\n }\n\n /** @see {@link VisualizationClient.hypergraph} */\n async hypergraph(\n request: HypergraphRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<HypergraphResponse>> {\n return this.http.requestWithMetadata<HypergraphResponse>('POST', `${BASE}/hypergraph`, {\n body: request,\n options,\n });\n }\n\n /** @see {@link VisualizationClient.termSubgraph} */\n async termSubgraph(\n termId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<HypergraphResponse>> {\n return this.http.requestWithMetadata<HypergraphResponse>(\n 'GET',\n `${BASE}/hypergraph/term/${termId}`,\n { options },\n );\n }\n\n /** @see {@link VisualizationClient.lattice} */\n async lattice(\n request: LatticeVisualizationRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<LatticeVisualizationResponse>> {\n return this.http.requestWithMetadata<LatticeVisualizationResponse>('POST', `${BASE}/lattice`, {\n body: request,\n options,\n });\n }\n\n /** @see {@link VisualizationClient.latticeDot} */\n async latticeDot(options?: RequestOptions): Promise<ApiResponse<string>> {\n return this.http.requestWithMetadata<string>('GET', `${BASE}/lattice/dot`, { options });\n }\n\n /** @see {@link VisualizationClient.glbLubTrace} */\n async glbLubTrace(\n request: GlbLubTraceRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<GlbLubComputationTrace>> {\n return this.http.requestWithMetadata<GlbLubComputationTrace>(\n 'POST',\n `${BASE}/lattice/glb-lub-trace`,\n { body: request, options },\n );\n }\n\n /** @see {@link VisualizationClient.residuationState} */\n async residuationState(\n request: ResiduationStateRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ResiduationStateResponse>> {\n return this.http.requestWithMetadata<ResiduationStateResponse>(\n 'POST',\n `${BASE}/residuation`,\n { body: request, options },\n );\n }\n\n /** @see {@link VisualizationClient.triggerDependencies} */\n async triggerDependencies(\n request: TriggerDependencyRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<TriggerDependencyResponse>> {\n return this.http.requestWithMetadata<TriggerDependencyResponse>(\n 'POST',\n `${BASE}/residuation/triggers`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n LearnPatternRequest,\n LearnPatternResponse,\n EvaluatePatternRequest,\n EvaluatePatternResponse,\n GFlowNetSampleRequest,\n GFlowNetSampleResponse,\n ListPatternsResponse,\n SynthesizeRequest,\n SynthesizeResponse,\n} from '../types/ilp.js';\n\nconst BASE = '/api/v1/ilp';\n\n/**\n * Resource client for Inductive Logic Programming (ILP) operations.\n *\n * @remarks\n * Provides pattern learning, evaluation, GFlowNet hypothesis sampling,\n * and neural-guided rule synthesis.\n */\nexport class IlpClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Learn a recursive arithmetic pattern from training examples.\n *\n * @param request - Learning request with examples and configuration.\n * @param options - Per-call request options.\n * @returns The learned pattern with confidence score and processing time.\n */\n async learnPattern(\n request: LearnPatternRequest,\n options?: RequestOptions,\n ): Promise<LearnPatternResponse> {\n return this.http.post<LearnPatternResponse>(`${BASE}/learn`, request, options);\n }\n\n /**\n * Evaluate a learned pattern on new inputs.\n *\n * @param request - Evaluation request with pattern ID and inputs.\n * @param options - Per-call request options.\n * @returns Evaluation results for each input.\n */\n async evaluatePattern(\n request: EvaluatePatternRequest,\n options?: RequestOptions,\n ): Promise<EvaluatePatternResponse> {\n return this.http.post<EvaluatePatternResponse>(`${BASE}/evaluate`, request, options);\n }\n\n /**\n * Sample hypotheses using GFlowNet.\n *\n * @param request - Sampling request with target sort and parameters.\n * @param options - Per-call request options.\n * @returns Sampled hypotheses with log-probabilities.\n */\n async gflownetSample(\n request: GFlowNetSampleRequest,\n options?: RequestOptions,\n ): Promise<GFlowNetSampleResponse> {\n return this.http.post<GFlowNetSampleResponse>(`${BASE}/gflownet/sample`, request, options);\n }\n\n /**\n * List all learned patterns.\n *\n * @param options - Per-call request options.\n * @returns List of pattern summaries.\n */\n async listPatterns(\n options?: RequestOptions,\n ): Promise<ListPatternsResponse> {\n return this.http.get<ListPatternsResponse>(`${BASE}/patterns`, options);\n }\n\n /**\n * Synthesize rules using neural-guided ILP.\n *\n * @param request - Synthesis request with examples and target sort.\n * @param options - Per-call request options.\n * @returns Synthesis result with processing details.\n */\n async synthesize(\n request: SynthesizeRequest,\n options?: RequestOptions,\n ): Promise<SynthesizeResponse> {\n return this.http.post<SynthesizeResponse>(`${BASE}/synthesize`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): IlpClientWithMetadata {\n return new IlpClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link IlpClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class IlpClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async learnPattern(\n request: LearnPatternRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<LearnPatternResponse>> {\n return this.http.requestWithMetadata<LearnPatternResponse>('POST', `${BASE}/learn`, {\n body: request,\n options,\n });\n }\n\n async evaluatePattern(\n request: EvaluatePatternRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<EvaluatePatternResponse>> {\n return this.http.requestWithMetadata<EvaluatePatternResponse>('POST', `${BASE}/evaluate`, {\n body: request,\n options,\n });\n }\n\n async gflownetSample(\n request: GFlowNetSampleRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<GFlowNetSampleResponse>> {\n return this.http.requestWithMetadata<GFlowNetSampleResponse>(\n 'POST',\n `${BASE}/gflownet/sample`,\n { body: request, options },\n );\n }\n\n async listPatterns(\n options?: RequestOptions,\n ): Promise<ApiResponse<ListPatternsResponse>> {\n return this.http.requestWithMetadata<ListPatternsResponse>('GET', `${BASE}/patterns`, {\n options,\n });\n }\n\n async synthesize(\n request: SynthesizeRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SynthesizeResponse>> {\n return this.http.requestWithMetadata<SynthesizeResponse>('POST', `${BASE}/synthesize`, {\n body: request,\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n FuzzyMergeRequest,\n FuzzyMergeResponse,\n FuzzySubsumptionRequest,\n FuzzySubsumptionResponse,\n} from '../types/fuzzy.js';\nimport type {\n EntailmentRequest,\n EntailmentResponse,\n EvidenceAssessmentRequest,\n ResiduationRequest,\n ResiduationResponse,\n ResourceCoordinationRequest,\n TemporalPlanRequest,\n} from '../types/reasoning.js';\n\nconst BASE = '/api/v1/reasoning';\n\n/**\n * Resource client for reasoning operations.\n *\n * @remarks\n * Provides entailment checking, evidence assessment, fuzzy merge/subsumption,\n * residuation checking, resource coordination, and temporal planning.\n *\n * The merge and subsumption endpoints reuse types from the fuzzy domain.\n * The assess, resource-coordination, and temporal-plan endpoints return\n * untyped responses because the backend does not define explicit response schemas.\n */\nexport class ReasoningClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Assess the truthfulness/validity of a subject based on related evidence.\n *\n * @param request - Evidence assessment request.\n * @param options - Per-call request options.\n * @returns Assessment result (untyped -- backend does not define an explicit response schema).\n */\n async assess(\n request: EvidenceAssessmentRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post<unknown>(`${BASE}/assess`, request, options);\n }\n\n /**\n * Check logical entailment between an antecedent and consequent.\n *\n * @param request - Entailment request with antecedent, consequent, and facts.\n * @param options - Per-call request options.\n * @returns Whether the antecedent entails the consequent with confidence.\n */\n async entailment(\n request: EntailmentRequest,\n options?: RequestOptions,\n ): Promise<EntailmentResponse> {\n return this.http.post<EntailmentResponse>(`${BASE}/entailment`, request, options);\n }\n\n /**\n * Fuzzy merge two terms via the reasoning endpoint.\n *\n * @param request - Merge request with two term IDs and strategy.\n * @param options - Per-call request options.\n * @returns Merge result with computation time and feature count.\n */\n async merge(\n request: FuzzyMergeRequest,\n options?: RequestOptions,\n ): Promise<FuzzyMergeResponse> {\n return this.http.post<FuzzyMergeResponse>(`${BASE}/merge`, request, options);\n }\n\n /**\n * Check for residuated (suspended) operations on a term.\n *\n * @param request - Residuation request with term ID.\n * @param options - Per-call request options.\n * @returns Suspended operations and resumption triggers.\n */\n async residuate(\n request: ResiduationRequest,\n options?: RequestOptions,\n ): Promise<ResiduationResponse> {\n return this.http.post<ResiduationResponse>(`${BASE}/residuate`, request, options);\n }\n\n /**\n * Coordinate N-way resource selections with compatibility constraints.\n *\n * @param request - Resource coordination request.\n * @param options - Per-call request options.\n * @returns Coordination result (untyped -- backend does not define an explicit response schema).\n */\n async resourceCoordination(\n request: ResourceCoordinationRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post<unknown>(`${BASE}/resource-coordination`, request, options);\n }\n\n /**\n * Check fuzzy subsumption between two terms via the reasoning endpoint.\n *\n * @param request - Subsumption request with general and specific term IDs.\n * @param options - Per-call request options.\n * @returns Subsumption degree and whether the relationship holds.\n */\n async subsumption(\n request: FuzzySubsumptionRequest,\n options?: RequestOptions,\n ): Promise<FuzzySubsumptionResponse> {\n return this.http.post<FuzzySubsumptionResponse>(`${BASE}/subsumption`, request, options);\n }\n\n /**\n * Generate a temporal plan with diversity constraints.\n *\n * @param request - Temporal plan request.\n * @param options - Per-call request options.\n * @returns Temporal plan result (untyped -- backend does not define an explicit response schema).\n */\n async temporalPlan(\n request: TemporalPlanRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post<unknown>(`${BASE}/temporal-plan`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): ReasoningClientWithMetadata {\n return new ReasoningClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link ReasoningClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class ReasoningClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async assess(\n request: EvidenceAssessmentRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/assess`, {\n body: request,\n options,\n });\n }\n\n async entailment(\n request: EntailmentRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<EntailmentResponse>> {\n return this.http.requestWithMetadata<EntailmentResponse>('POST', `${BASE}/entailment`, {\n body: request,\n options,\n });\n }\n\n async merge(\n request: FuzzyMergeRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<FuzzyMergeResponse>> {\n return this.http.requestWithMetadata<FuzzyMergeResponse>('POST', `${BASE}/merge`, {\n body: request,\n options,\n });\n }\n\n async residuate(\n request: ResiduationRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ResiduationResponse>> {\n return this.http.requestWithMetadata<ResiduationResponse>('POST', `${BASE}/residuate`, {\n body: request,\n options,\n });\n }\n\n async resourceCoordination(\n request: ResourceCoordinationRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/resource-coordination`, {\n body: request,\n options,\n });\n }\n\n async subsumption(\n request: FuzzySubsumptionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<FuzzySubsumptionResponse>> {\n return this.http.requestWithMetadata<FuzzySubsumptionResponse>(\n 'POST',\n `${BASE}/subsumption`,\n { body: request, options },\n );\n }\n\n async temporalPlan(\n request: TemporalPlanRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/temporal-plan`, {\n body: request,\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n StatisticalSuccessResponse,\n CorrelationRequest,\n CorrelationResponse,\n PartialCorrelationRequest,\n PartialCorrelationResponse,\n ConditionalIndependenceRequest,\n ConditionalIndependenceResponse,\n ObserveSingleRequest,\n ObserveSingleResponse,\n ObservePairRequest,\n ObservePairResponse,\n ObserveMultiRequest,\n ObserveMultiResponse,\n InterventionObservationRequest,\n InterventionObservationResponse,\n DiscoverCausalRequest,\n DiscoverCausalResponse,\n DiscoveryStatusResponse,\n DynamicDiscoveryRequest,\n DynamicDiscoveryResponse,\n} from '../types/statistical.js';\n\nconst BASE = '/api/v1/statistical';\n\n/**\n * Resource client for statistical analysis operations.\n *\n * @remarks\n * Provides observation recording, correlation computation,\n * conditional independence testing, and causal discovery.\n */\nexport class StatisticalClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Clear all observed statistical data.\n *\n * @param options - Per-call request options.\n * @returns Success message.\n */\n async clearData(\n options?: RequestOptions,\n ): Promise<StatisticalSuccessResponse> {\n return this.http.post<StatisticalSuccessResponse>(`${BASE}/clear-data`, undefined, options);\n }\n\n /**\n * Compute Pearson correlation between two variables.\n *\n * @param request - Correlation request with two variable names.\n * @param options - Per-call request options.\n * @returns Correlation coefficient and observation count.\n */\n async correlation(\n request: CorrelationRequest,\n options?: RequestOptions,\n ): Promise<CorrelationResponse> {\n return this.http.post<CorrelationResponse>(`${BASE}/correlation`, request, options);\n }\n\n /**\n * Discover causal relationships from observed data.\n *\n * @param request - Discovery request with variable list.\n * @param options - Per-call request options.\n * @returns Discovered causal relationships.\n */\n async discoverCausal(\n request: DiscoverCausalRequest,\n options?: RequestOptions,\n ): Promise<DiscoverCausalResponse> {\n return this.http.post<DiscoverCausalResponse>(`${BASE}/discover-causal`, request, options);\n }\n\n /**\n * Get the current status of causal discovery.\n *\n * @param options - Per-call request options.\n * @returns Discovery status with graph and uncertainty information.\n */\n async getDiscoveryStatus(\n options?: RequestOptions,\n ): Promise<DiscoveryStatusResponse> {\n return this.http.get<DiscoveryStatusResponse>(`${BASE}/discovery-status`, options);\n }\n\n /**\n * Run dynamic causal discovery with configurable strategy.\n *\n * @param request - Dynamic discovery request with strategy and parameters.\n * @param options - Per-call request options.\n * @returns Discovered relationships, proof tree, and interventions.\n */\n async dynamicDiscovery(\n request: DynamicDiscoveryRequest,\n options?: RequestOptions,\n ): Promise<DynamicDiscoveryResponse> {\n return this.http.post<DynamicDiscoveryResponse>(`${BASE}/dynamic-discovery`, request, options);\n }\n\n /**\n * Record an intervention observation for causal discovery.\n *\n * @param request - Intervention observation with changed/unchanged variables.\n * @param options - Per-call request options.\n * @returns Resolved edges and remaining uncertainty.\n */\n async interventionObservation(\n request: InterventionObservationRequest,\n options?: RequestOptions,\n ): Promise<InterventionObservationResponse> {\n return this.http.post<InterventionObservationResponse>(\n `${BASE}/intervention-observation`,\n request,\n options,\n );\n }\n\n /**\n * Observe a single variable value.\n *\n * @param request - Single observation request.\n * @param options - Per-call request options.\n * @returns Current observation count.\n */\n async observeSingle(\n request: ObserveSingleRequest,\n options?: RequestOptions,\n ): Promise<ObserveSingleResponse> {\n return this.http.post<ObserveSingleResponse>(`${BASE}/observe`, request, options);\n }\n\n /**\n * Observe multiple variable values simultaneously.\n *\n * @param request - Multi-observation request with variable-value map.\n * @param options - Per-call request options.\n * @returns Variables that were observed.\n */\n async observeMulti(\n request: ObserveMultiRequest,\n options?: RequestOptions,\n ): Promise<ObserveMultiResponse> {\n return this.http.post<ObserveMultiResponse>(`${BASE}/observe-multi`, request, options);\n }\n\n /**\n * Observe a pair of variable values.\n *\n * @param request - Pair observation request.\n * @param options - Per-call request options.\n * @returns Current observation count for this pair.\n */\n async observePair(\n request: ObservePairRequest,\n options?: RequestOptions,\n ): Promise<ObservePairResponse> {\n return this.http.post<ObservePairResponse>(`${BASE}/observe-pair`, request, options);\n }\n\n /**\n * Compute partial correlation controlling for a set of variables.\n *\n * @param request - Partial correlation request with conditioning set.\n * @param options - Per-call request options.\n * @returns Partial correlation coefficient.\n */\n async partialCorrelation(\n request: PartialCorrelationRequest,\n options?: RequestOptions,\n ): Promise<PartialCorrelationResponse> {\n return this.http.post<PartialCorrelationResponse>(\n `${BASE}/partial-correlation`,\n request,\n options,\n );\n }\n\n /**\n * Reset the causal discovery state.\n *\n * @param options - Per-call request options.\n * @returns Success message.\n */\n async resetDiscovery(\n options?: RequestOptions,\n ): Promise<StatisticalSuccessResponse> {\n return this.http.post<StatisticalSuccessResponse>(\n `${BASE}/reset-discovery`,\n undefined,\n options,\n );\n }\n\n /**\n * Test conditional independence between two variables.\n *\n * @param request - Independence test request with conditioning set.\n * @param options - Per-call request options.\n * @returns Independence result with p-value and explanation.\n */\n async testIndependence(\n request: ConditionalIndependenceRequest,\n options?: RequestOptions,\n ): Promise<ConditionalIndependenceResponse> {\n return this.http.post<ConditionalIndependenceResponse>(\n `${BASE}/test-independence`,\n request,\n options,\n );\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): StatisticalClientWithMetadata {\n return new StatisticalClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link StatisticalClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class StatisticalClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async clearData(\n options?: RequestOptions,\n ): Promise<ApiResponse<StatisticalSuccessResponse>> {\n return this.http.requestWithMetadata<StatisticalSuccessResponse>(\n 'POST',\n `${BASE}/clear-data`,\n { options },\n );\n }\n\n async correlation(\n request: CorrelationRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<CorrelationResponse>> {\n return this.http.requestWithMetadata<CorrelationResponse>('POST', `${BASE}/correlation`, {\n body: request,\n options,\n });\n }\n\n async discoverCausal(\n request: DiscoverCausalRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<DiscoverCausalResponse>> {\n return this.http.requestWithMetadata<DiscoverCausalResponse>(\n 'POST',\n `${BASE}/discover-causal`,\n { body: request, options },\n );\n }\n\n async getDiscoveryStatus(\n options?: RequestOptions,\n ): Promise<ApiResponse<DiscoveryStatusResponse>> {\n return this.http.requestWithMetadata<DiscoveryStatusResponse>(\n 'GET',\n `${BASE}/discovery-status`,\n { options },\n );\n }\n\n async dynamicDiscovery(\n request: DynamicDiscoveryRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<DynamicDiscoveryResponse>> {\n return this.http.requestWithMetadata<DynamicDiscoveryResponse>(\n 'POST',\n `${BASE}/dynamic-discovery`,\n { body: request, options },\n );\n }\n\n async interventionObservation(\n request: InterventionObservationRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<InterventionObservationResponse>> {\n return this.http.requestWithMetadata<InterventionObservationResponse>(\n 'POST',\n `${BASE}/intervention-observation`,\n { body: request, options },\n );\n }\n\n async observeSingle(\n request: ObserveSingleRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ObserveSingleResponse>> {\n return this.http.requestWithMetadata<ObserveSingleResponse>('POST', `${BASE}/observe`, {\n body: request,\n options,\n });\n }\n\n async observeMulti(\n request: ObserveMultiRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ObserveMultiResponse>> {\n return this.http.requestWithMetadata<ObserveMultiResponse>('POST', `${BASE}/observe-multi`, {\n body: request,\n options,\n });\n }\n\n async observePair(\n request: ObservePairRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ObservePairResponse>> {\n return this.http.requestWithMetadata<ObservePairResponse>('POST', `${BASE}/observe-pair`, {\n body: request,\n options,\n });\n }\n\n async partialCorrelation(\n request: PartialCorrelationRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<PartialCorrelationResponse>> {\n return this.http.requestWithMetadata<PartialCorrelationResponse>(\n 'POST',\n `${BASE}/partial-correlation`,\n { body: request, options },\n );\n }\n\n async resetDiscovery(\n options?: RequestOptions,\n ): Promise<ApiResponse<StatisticalSuccessResponse>> {\n return this.http.requestWithMetadata<StatisticalSuccessResponse>(\n 'POST',\n `${BASE}/reset-discovery`,\n { options },\n );\n }\n\n async testIndependence(\n request: ConditionalIndependenceRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ConditionalIndependenceResponse>> {\n return this.http.requestWithMetadata<ConditionalIndependenceResponse>(\n 'POST',\n `${BASE}/test-independence`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n BacktrackableAssignRequest,\n GlobalAssignRequest,\n CallOnceRequest,\n CondRequest,\n CutRequest,\n FindallRequest,\n ForallRequest,\n GlobalGetRequest,\n GlobalIncrementRequest,\n ImpliesRequest,\n ControlNafRequest,\n UndoRequest,\n} from '../types/control.js';\n\nconst BASE = '/api/v1/control';\n\n/**\n * Resource client for proof control operations.\n *\n * @remarks\n * Provides Prolog-style control flow primitives: cut, findall, forall,\n * negation as failure, conditional execution, backtrackable assignment,\n * global state management, and undo.\n *\n * All operations are session-scoped and return void.\n */\nexport class ControlClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Perform backtrackable assignment.\n *\n * @param request - Assignment request with term, feature, and value.\n * @param options - Per-call request options.\n */\n async backtrackableAssign(\n request: BacktrackableAssignRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/assign/backtrackable`, request, options);\n }\n\n /**\n * Perform global assignment (persists across backtracking).\n *\n * @param request - Global assignment request.\n * @param options - Per-call request options.\n */\n async globalAssign(\n request: GlobalAssignRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/assign/global`, request, options);\n }\n\n /**\n * Execute a goal once with cut (deterministic).\n *\n * @param request - Call-once request with goal.\n * @param options - Per-call request options.\n */\n async callOnce(\n request: CallOnceRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/call-once`, request, options);\n }\n\n /**\n * Execute conditional (if-then-else).\n *\n * @param request - Conditional request with condition, then, and else goals.\n * @param options - Per-call request options.\n */\n async cond(\n request: CondRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/cond`, request, options);\n }\n\n /**\n * Perform Prolog-style cut (discard choice points).\n *\n * @param request - Cut request with session ID.\n * @param options - Per-call request options.\n */\n async cut(\n request: CutRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/cut`, request, options);\n }\n\n /**\n * Collect all solutions for a goal (findall).\n *\n * @param request - Findall request with template, goal, and optional max.\n * @param options - Per-call request options.\n */\n async findall(\n request: FindallRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/findall`, request, options);\n }\n\n /**\n * Universal quantification (forall).\n *\n * @param request - Forall request with generator and test goals.\n * @param options - Per-call request options.\n */\n async forall(\n request: ForallRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/forall`, request, options);\n }\n\n /**\n * Get a global variable value.\n *\n * @param request - Get request with session ID and variable name.\n * @param options - Per-call request options.\n * @returns The global variable value.\n */\n async globalGet(\n request: GlobalGetRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post(`${BASE}/global/get`, request, options);\n }\n\n /**\n * Increment a global counter variable.\n *\n * @param request - Increment request with session ID and variable name.\n * @param options - Per-call request options.\n */\n async globalIncrement(\n request: GlobalIncrementRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/global/incr`, request, options);\n }\n\n /**\n * Execute implies (A -> B).\n *\n * @param request - Implies request with antecedent and consequent.\n * @param options - Per-call request options.\n */\n async implies(\n request: ImpliesRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/implies`, request, options);\n }\n\n /**\n * Negation as failure (low-level control).\n *\n * @param request - NAF request with goal.\n * @param options - Per-call request options.\n */\n async naf(\n request: ControlNafRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/naf`, request, options);\n }\n\n /**\n * Register an undo goal (execute on backtracking).\n *\n * @param request - Undo request with goal.\n * @param options - Per-call request options.\n */\n async undo(\n request: UndoRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/undo`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): ControlClientWithMetadata {\n return new ControlClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link ControlClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class ControlClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async backtrackableAssign(\n request: BacktrackableAssignRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/assign/backtrackable`, {\n body: request,\n options,\n });\n }\n\n async globalAssign(\n request: GlobalAssignRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/assign/global`, {\n body: request,\n options,\n });\n }\n\n async callOnce(\n request: CallOnceRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/call-once`, {\n body: request,\n options,\n });\n }\n\n async cond(\n request: CondRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/cond`, {\n body: request,\n options,\n });\n }\n\n async cut(\n request: CutRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/cut`, {\n body: request,\n options,\n });\n }\n\n async findall(\n request: FindallRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/findall`, {\n body: request,\n options,\n });\n }\n\n async forall(\n request: ForallRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/forall`, {\n body: request,\n options,\n });\n }\n\n async globalGet(\n request: GlobalGetRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/global/get`, {\n body: request,\n options,\n });\n }\n\n async globalIncrement(\n request: GlobalIncrementRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/global/incr`, {\n body: request,\n options,\n });\n }\n\n async implies(\n request: ImpliesRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/implies`, {\n body: request,\n options,\n });\n }\n\n async naf(\n request: ControlNafRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/naf`, {\n body: request,\n options,\n });\n }\n\n async undo(\n request: UndoRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/undo`, {\n body: request,\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n CreateSpaceRequest,\n SpaceResponse,\n CommitRequest,\n SpaceSearchRequest,\n SpaceSearchResponse,\n} from '../types/spaces.js';\n\nconst BASE = '/api/v1/spaces';\n\n/**\n * Resource client for computation space operations.\n *\n * @remarks\n * Provides creation, cloning, committing, and search operations\n * for Oz-style computation spaces (forked constraint environments).\n */\nexport class SpacesClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Create a new computation space.\n *\n * @param request - Space creation parameters.\n * @param options - Per-call request options.\n * @returns The created space.\n */\n async createSpace(\n request: CreateSpaceRequest,\n options?: RequestOptions,\n ): Promise<SpaceResponse> {\n return this.http.post<SpaceResponse>(BASE, request, options);\n }\n\n /**\n * Get a computation space by ID.\n *\n * @param spaceId - Space ID.\n * @param options - Per-call request options.\n * @returns The space state.\n */\n async getSpace(\n spaceId: string,\n options?: RequestOptions,\n ): Promise<SpaceResponse> {\n return this.http.get<SpaceResponse>(`${BASE}/${spaceId}`, options);\n }\n\n /**\n * Clone a computation space.\n *\n * @param spaceId - Space ID to clone.\n * @param options - Per-call request options.\n * @returns The cloned space.\n */\n async cloneSpace(\n spaceId: string,\n options?: RequestOptions,\n ): Promise<SpaceResponse> {\n return this.http.post<SpaceResponse>(`${BASE}/${spaceId}/clone`, undefined, options);\n }\n\n /**\n * Commit to an alternative in a space.\n *\n * @param spaceId - Space ID.\n * @param request - Commit request with alternative index.\n * @param options - Per-call request options.\n * @returns Updated space state.\n */\n async commit(\n spaceId: string,\n request: CommitRequest,\n options?: RequestOptions,\n ): Promise<SpaceResponse> {\n return this.http.post<SpaceResponse>(`${BASE}/${spaceId}/commit`, request, options);\n }\n\n /**\n * Search for solutions in a space.\n *\n * @param spaceId - Space ID.\n * @param request - Search parameters (strategy, max solutions).\n * @param options - Per-call request options.\n * @returns Search results with solutions.\n */\n async search(\n spaceId: string,\n request: SpaceSearchRequest,\n options?: RequestOptions,\n ): Promise<SpaceSearchResponse> {\n return this.http.post<SpaceSearchResponse>(`${BASE}/${spaceId}/search`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): SpacesClientWithMetadata {\n return new SpacesClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link SpacesClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class SpacesClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async createSpace(\n request: CreateSpaceRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SpaceResponse>> {\n return this.http.requestWithMetadata<SpaceResponse>('POST', BASE, {\n body: request,\n options,\n });\n }\n\n async getSpace(\n spaceId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<SpaceResponse>> {\n return this.http.requestWithMetadata<SpaceResponse>('GET', `${BASE}/${spaceId}`, { options });\n }\n\n async cloneSpace(\n spaceId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<SpaceResponse>> {\n return this.http.requestWithMetadata<SpaceResponse>('POST', `${BASE}/${spaceId}/clone`, {\n options,\n });\n }\n\n async commit(\n spaceId: string,\n request: CommitRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SpaceResponse>> {\n return this.http.requestWithMetadata<SpaceResponse>('POST', `${BASE}/${spaceId}/commit`, {\n body: request,\n options,\n });\n }\n\n async search(\n spaceId: string,\n request: SpaceSearchRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SpaceSearchResponse>> {\n return this.http.requestWithMetadata<SpaceSearchResponse>(\n 'POST',\n `${BASE}/${spaceId}/search`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n RowSearchRequest,\n RowSearchResponse,\n RowUnifyRequest,\n RowUnifyResponse,\n RowSimilarityRequest,\n RowSimilarityResponse,\n RowIntegrateRequest,\n RowIntegrateResponse,\n DynamicQueryRequest,\n DynamicQueryResponse,\n} from '../types/row.js';\n\nconst BASE = '/api/v1/row';\n\n/**\n * Resource client for row polymorphism operations.\n *\n * @remarks\n * Provides schema-flexible entity search, row type unification,\n * similarity computation, data integration, and dynamic queries.\n */\nexport class RowClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Search for entities matching a row pattern.\n *\n * @param request - Row search request with feature pattern.\n * @param options - Per-call request options.\n * @returns Matching entities.\n */\n async search(\n request: RowSearchRequest,\n options?: RequestOptions,\n ): Promise<RowSearchResponse> {\n return this.http.post<RowSearchResponse>(`${BASE}/search`, request, options);\n }\n\n /**\n * Unify two row types.\n *\n * @param request - Unification request with two row types.\n * @param options - Per-call request options.\n * @returns Unification result.\n */\n async unify(\n request: RowUnifyRequest,\n options?: RequestOptions,\n ): Promise<RowUnifyResponse> {\n return this.http.post<RowUnifyResponse>(`${BASE}/unify`, request, options);\n }\n\n /**\n * Compute similarity between two row types.\n *\n * @param request - Similarity request with two row types.\n * @param options - Per-call request options.\n * @returns Similarity score and feature comparison.\n */\n async similarity(\n request: RowSimilarityRequest,\n options?: RequestOptions,\n ): Promise<RowSimilarityResponse> {\n return this.http.post<RowSimilarityResponse>(`${BASE}/similarity`, request, options);\n }\n\n /**\n * Integrate entities across namespaces using shared features.\n *\n * @param request - Integration request with match features.\n * @param options - Per-call request options.\n * @returns Integration groups.\n */\n async integrate(\n request: RowIntegrateRequest,\n options?: RequestOptions,\n ): Promise<RowIntegrateResponse> {\n return this.http.post<RowIntegrateResponse>(`${BASE}/integrate`, request, options);\n }\n\n /**\n * Execute a dynamic query with pattern matching.\n *\n * @param request - Dynamic query with clauses and options.\n * @param options - Per-call request options.\n * @returns Query results.\n */\n async query(\n request: DynamicQueryRequest,\n options?: RequestOptions,\n ): Promise<DynamicQueryResponse> {\n return this.http.post<DynamicQueryResponse>(`${BASE}/query`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): RowClientWithMetadata {\n return new RowClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link RowClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class RowClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async search(\n request: RowSearchRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RowSearchResponse>> {\n return this.http.requestWithMetadata<RowSearchResponse>('POST', `${BASE}/search`, {\n body: request,\n options,\n });\n }\n\n async unify(\n request: RowUnifyRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RowUnifyResponse>> {\n return this.http.requestWithMetadata<RowUnifyResponse>('POST', `${BASE}/unify`, {\n body: request,\n options,\n });\n }\n\n async similarity(\n request: RowSimilarityRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RowSimilarityResponse>> {\n return this.http.requestWithMetadata<RowSimilarityResponse>('POST', `${BASE}/similarity`, {\n body: request,\n options,\n });\n }\n\n async integrate(\n request: RowIntegrateRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RowIntegrateResponse>> {\n return this.http.requestWithMetadata<RowIntegrateResponse>('POST', `${BASE}/integrate`, {\n body: request,\n options,\n });\n }\n\n async query(\n request: DynamicQueryRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<DynamicQueryResponse>> {\n return this.http.requestWithMetadata<DynamicQueryResponse>('POST', `${BASE}/query`, {\n body: request,\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n RegisterSourceRequest,\n RegisterSourceResponse,\n ListSourcesResponse,\n SourceDetailResponse,\n DiscoverSchemaRequest,\n DiscoverSchemaResponse,\n IngestFromSourceRequest,\n IngestFromSourceResponse,\n} from '../types/sources.js';\n\nconst BASE = '/api/v1/sources';\n\n/**\n * Resource client for data source operations.\n *\n * @remarks\n * Provides registration, listing, schema discovery, and data ingestion\n * for external data sources (CSV, SQL, Neo4j, MCP, REST, etc.).\n */\nexport class SourcesClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Register a new data source.\n *\n * @param request - Source registration request.\n * @param options - Per-call request options.\n * @returns Registration result.\n */\n async register(\n request: RegisterSourceRequest,\n options?: RequestOptions,\n ): Promise<RegisterSourceResponse> {\n return this.http.post<RegisterSourceResponse>(BASE, request, options);\n }\n\n /**\n * List all registered data sources.\n *\n * @param options - Per-call request options.\n * @returns List of sources.\n */\n async list(options?: RequestOptions): Promise<ListSourcesResponse> {\n return this.http.get<ListSourcesResponse>(BASE, options);\n }\n\n /**\n * Get details for a registered source.\n *\n * @param sourceId - Source identifier.\n * @param options - Per-call request options.\n * @returns Source details and health status.\n */\n async get(sourceId: string, options?: RequestOptions): Promise<SourceDetailResponse> {\n return this.http.get<SourceDetailResponse>(`${BASE}/${sourceId}`, options);\n }\n\n /**\n * Delete a registered source.\n *\n * @param sourceId - Source identifier.\n * @param options - Per-call request options.\n */\n async delete(sourceId: string, options?: RequestOptions): Promise<void> {\n await this.http.delete(`${BASE}/${sourceId}`, options);\n }\n\n /**\n * Discover schema from a registered source.\n *\n * @param sourceId - Source identifier.\n * @param request - Discovery parameters.\n * @param options - Per-call request options.\n * @returns Discovered schema with sorts and relations.\n */\n async discoverSchema(\n sourceId: string,\n request?: DiscoverSchemaRequest,\n options?: RequestOptions,\n ): Promise<DiscoverSchemaResponse> {\n return this.http.post<DiscoverSchemaResponse>(\n `${BASE}/${sourceId}/discover`,\n request,\n options,\n );\n }\n\n /**\n * Ingest data from a registered source.\n *\n * @param sourceId - Source identifier.\n * @param request - Ingestion parameters.\n * @param options - Per-call request options.\n * @returns Ingestion results and statistics.\n */\n async ingest(\n sourceId: string,\n request: IngestFromSourceRequest,\n options?: RequestOptions,\n ): Promise<IngestFromSourceResponse> {\n return this.http.post<IngestFromSourceResponse>(\n `${BASE}/${sourceId}/ingest`,\n request,\n options,\n );\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): SourcesClientWithMetadata {\n return new SourcesClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link SourcesClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class SourcesClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async register(\n request: RegisterSourceRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RegisterSourceResponse>> {\n return this.http.requestWithMetadata<RegisterSourceResponse>('POST', BASE, {\n body: request,\n options,\n });\n }\n\n async list(options?: RequestOptions): Promise<ApiResponse<ListSourcesResponse>> {\n return this.http.requestWithMetadata<ListSourcesResponse>('GET', BASE, { options });\n }\n\n async get(\n sourceId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<SourceDetailResponse>> {\n return this.http.requestWithMetadata<SourceDetailResponse>('GET', `${BASE}/${sourceId}`, {\n options,\n });\n }\n\n async delete(sourceId: string, options?: RequestOptions): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('DELETE', `${BASE}/${sourceId}`, { options });\n }\n\n async discoverSchema(\n sourceId: string,\n request?: DiscoverSchemaRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<DiscoverSchemaResponse>> {\n return this.http.requestWithMetadata<DiscoverSchemaResponse>(\n 'POST',\n `${BASE}/${sourceId}/discover`,\n { body: request, options },\n );\n }\n\n async ingest(\n sourceId: string,\n request: IngestFromSourceRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<IngestFromSourceResponse>> {\n return this.http.requestWithMetadata<IngestFromSourceResponse>(\n 'POST',\n `${BASE}/${sourceId}/ingest`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n DetectCommunitiesRequest,\n DetectCommunitiesResponse,\n GetMembershipsRequest,\n GetMembershipsResponse,\n SearchCommunitiesRequest,\n SearchCommunitiesResponse,\n} from '../types/communities.js';\n\nconst BASE = '/api/v1/communities';\n\n/**\n * Resource client for community detection operations.\n *\n * @remarks\n * Provides community detection, membership queries, and community search\n * using graph-based clustering of psi-terms.\n */\nexport class CommunitiesClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Detect communities from existing terms.\n *\n * @param request - Detection request with tenant ID and optional config.\n * @param options - Per-call request options.\n * @returns Detected communities with statistics.\n */\n async detect(\n request: DetectCommunitiesRequest,\n options?: RequestOptions,\n ): Promise<DetectCommunitiesResponse> {\n return this.http.post<DetectCommunitiesResponse>(`${BASE}/detect`, request, options);\n }\n\n /**\n * Get community memberships for a term.\n *\n * @param request - Membership request with term and tenant IDs.\n * @param options - Per-call request options.\n * @returns Memberships with community info.\n */\n async getMemberships(\n request: GetMembershipsRequest,\n options?: RequestOptions,\n ): Promise<GetMembershipsResponse> {\n return this.http.post<GetMembershipsResponse>(`${BASE}/memberships`, request, options);\n }\n\n /**\n * Search communities by entities, impact, level, or keyword.\n *\n * @param request - Search request with mode and tenant ID.\n * @param options - Per-call request options.\n * @returns Matching communities.\n */\n async search(\n request: SearchCommunitiesRequest,\n options?: RequestOptions,\n ): Promise<SearchCommunitiesResponse> {\n return this.http.post<SearchCommunitiesResponse>(`${BASE}/search`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): CommunitiesClientWithMetadata {\n return new CommunitiesClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link CommunitiesClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class CommunitiesClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async detect(\n request: DetectCommunitiesRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<DetectCommunitiesResponse>> {\n return this.http.requestWithMetadata<DetectCommunitiesResponse>('POST', `${BASE}/detect`, {\n body: request,\n options,\n });\n }\n\n async getMemberships(\n request: GetMembershipsRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<GetMembershipsResponse>> {\n return this.http.requestWithMetadata<GetMembershipsResponse>('POST', `${BASE}/memberships`, {\n body: request,\n options,\n });\n }\n\n async search(\n request: SearchCommunitiesRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SearchCommunitiesResponse>> {\n return this.http.requestWithMetadata<SearchCommunitiesResponse>('POST', `${BASE}/search`, {\n body: request,\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n StringCompareRequest,\n StringComparePredicateRequest,\n BatchStringCompareRequest,\n StringConcatRequest,\n StringLengthRequest,\n StringOpRequest,\n SubstringRequest,\n AscRequest,\n ChrRequest,\n NumberToStringRequest,\n RelationalArithRequest,\n MathFunctionRequest,\n BitwiseRequest,\n ModularArithRequest,\n CopyTermRequest,\n DeepCopyRequest,\n BatchCopyRequest,\n} from '../types/utilities.js';\n\n/**\n * Resource client for utility operations (strings, arithmetic, copy).\n *\n * @remarks\n * Combines string operations (/api/v1/strings/), arithmetic operations\n * (/api/v1/arithmetic/), and copy operations (/api/v1/copy/) into a\n * single client. Most operations are session-scoped and return void.\n */\nexport class UtilitiesClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n // --- String Operations ---\n\n /**\n * Compare two strings.\n *\n * @param request - Comparison request.\n * @param options - Per-call request options.\n */\n async stringCompare(\n request: StringCompareRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/strings/compare', request, options);\n }\n\n /**\n * Compare strings with a predicate operator (Wild_LIFE-style).\n *\n * @param request - Predicate comparison request.\n * @param options - Per-call request options.\n */\n async stringComparePredicate(\n request: StringComparePredicateRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/strings/compare-predicate', request, options);\n }\n\n /**\n * Batch string comparison.\n *\n * @param request - Batch comparison request.\n * @param options - Per-call request options.\n */\n async stringCompareBatch(\n request: BatchStringCompareRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/strings/compare-batch', request, options);\n }\n\n /**\n * Concatenate two strings.\n *\n * @param request - Concatenation request.\n * @param options - Per-call request options.\n */\n async stringConcat(\n request: StringConcatRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/strings/concat', request, options);\n }\n\n /**\n * Get string length.\n *\n * @param request - Length request.\n * @param options - Per-call request options.\n */\n async stringLength(\n request: StringLengthRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/strings/length', request, options);\n }\n\n /**\n * Perform a general string operation.\n *\n * @param request - String operation request.\n * @param options - Per-call request options.\n */\n async stringOp(\n request: StringOpRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/strings/op', request, options);\n }\n\n /**\n * Extract a substring.\n *\n * @param request - Substring request.\n * @param options - Per-call request options.\n */\n async substring(\n request: SubstringRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/strings/substr', request, options);\n }\n\n /**\n * Get ASCII code of a character.\n *\n * @param request - ASC request.\n * @param options - Per-call request options.\n */\n async asc(\n request: AscRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/strings/asc', request, options);\n }\n\n /**\n * Get character from ASCII code.\n *\n * @param request - CHR request.\n * @param options - Per-call request options.\n */\n async chr(\n request: ChrRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/strings/chr', request, options);\n }\n\n /**\n * Convert a number to string.\n *\n * @param request - Number-to-string request.\n * @param options - Per-call request options.\n */\n async numberToString(\n request: NumberToStringRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/strings/from-number', request, options);\n }\n\n // --- Arithmetic Operations ---\n\n /**\n * Perform relational addition.\n *\n * @param request - Relational arithmetic request (3-way).\n * @param options - Per-call request options.\n */\n async add(\n request: RelationalArithRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/arithmetic/add', request, options);\n }\n\n /**\n * Perform relational subtraction.\n *\n * @param request - Relational arithmetic request (3-way).\n * @param options - Per-call request options.\n */\n async sub(\n request: RelationalArithRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/arithmetic/sub', request, options);\n }\n\n /**\n * Perform relational multiplication.\n *\n * @param request - Relational arithmetic request (3-way).\n * @param options - Per-call request options.\n */\n async mult(\n request: RelationalArithRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/arithmetic/mult', request, options);\n }\n\n /**\n * Perform relational division.\n *\n * @param request - Relational arithmetic request (3-way).\n * @param options - Per-call request options.\n */\n async div(\n request: RelationalArithRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/arithmetic/div', request, options);\n }\n\n /**\n * Apply a math function (sin, cos, sqrt, etc.).\n *\n * @param request - Math function request.\n * @param options - Per-call request options.\n */\n async math(\n request: MathFunctionRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/arithmetic/math', request, options);\n }\n\n /**\n * Perform a bitwise operation.\n *\n * @param request - Bitwise request.\n * @param options - Per-call request options.\n */\n async bitwise(\n request: BitwiseRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/arithmetic/bitwise', request, options);\n }\n\n /**\n * Perform modular arithmetic (mod, rem, gcd).\n *\n * @param request - Modular arithmetic request.\n * @param options - Per-call request options.\n */\n async modular(\n request: ModularArithRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/arithmetic/modular', request, options);\n }\n\n // --- Copy Operations ---\n\n /**\n * Copy a term.\n *\n * @param request - Copy request with mode.\n * @param options - Per-call request options.\n */\n async copyTerm(\n request: CopyTermRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/copy/term', request, options);\n }\n\n /**\n * Deep copy a term with co-reference preservation.\n *\n * @param request - Deep copy request.\n * @param options - Per-call request options.\n */\n async deepCopy(\n request: DeepCopyRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/copy/deep', request, options);\n }\n\n /**\n * Batch copy multiple terms.\n *\n * @param request - Batch copy request.\n * @param options - Per-call request options.\n */\n async batchCopy(\n request: BatchCopyRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/copy/batch', request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): UtilitiesClientWithMetadata {\n return new UtilitiesClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link UtilitiesClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class UtilitiesClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async stringCompare(\n request: StringCompareRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/strings/compare', {\n body: request, options,\n });\n }\n\n async stringComparePredicate(\n request: StringComparePredicateRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/strings/compare-predicate', {\n body: request, options,\n });\n }\n\n async stringCompareBatch(\n request: BatchStringCompareRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/strings/compare-batch', {\n body: request, options,\n });\n }\n\n async stringConcat(\n request: StringConcatRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/strings/concat', {\n body: request, options,\n });\n }\n\n async stringLength(\n request: StringLengthRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/strings/length', {\n body: request, options,\n });\n }\n\n async stringOp(\n request: StringOpRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/strings/op', {\n body: request, options,\n });\n }\n\n async substring(\n request: SubstringRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/strings/substr', {\n body: request, options,\n });\n }\n\n async asc(\n request: AscRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/strings/asc', {\n body: request, options,\n });\n }\n\n async chr(\n request: ChrRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/strings/chr', {\n body: request, options,\n });\n }\n\n async numberToString(\n request: NumberToStringRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/strings/from-number', {\n body: request, options,\n });\n }\n\n async add(\n request: RelationalArithRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/arithmetic/add', {\n body: request, options,\n });\n }\n\n async sub(\n request: RelationalArithRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/arithmetic/sub', {\n body: request, options,\n });\n }\n\n async mult(\n request: RelationalArithRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/arithmetic/mult', {\n body: request, options,\n });\n }\n\n async div(\n request: RelationalArithRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/arithmetic/div', {\n body: request, options,\n });\n }\n\n async math(\n request: MathFunctionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/arithmetic/math', {\n body: request, options,\n });\n }\n\n async bitwise(\n request: BitwiseRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/arithmetic/bitwise', {\n body: request, options,\n });\n }\n\n async modular(\n request: ModularArithRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/arithmetic/modular', {\n body: request, options,\n });\n }\n\n async copyTerm(\n request: CopyTermRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/copy/term', {\n body: request, options,\n });\n }\n\n async deepCopy(\n request: DeepCopyRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/copy/deep', {\n body: request, options,\n });\n }\n\n async batchCopy(\n request: BatchCopyRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/copy/batch', {\n body: request, options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n CreateScenarioRequest,\n CreateScenarioResponse,\n ListScenariosResponse,\n GetScenarioResponse,\n UpdateScenarioRequest,\n UpdateScenarioResponse,\n VerifyScenarioRequest,\n VerifyScenarioResponse,\n} from '../types/scenarios.js';\n\nconst BASE = '/api/v1/scenarios';\n\n/**\n * Resource client for scenario operations.\n *\n * @remarks\n * Provides CRUD operations for scenarios (what-if analysis, verification).\n */\nexport class ScenariosClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Create a new scenario.\n *\n * @param request - Scenario creation parameters.\n * @param options - Per-call request options.\n * @returns Created scenario (may include interactive questions).\n */\n async create(\n request: CreateScenarioRequest,\n options?: RequestOptions,\n ): Promise<CreateScenarioResponse> {\n return this.http.post<CreateScenarioResponse>(BASE, request, options);\n }\n\n /**\n * List all scenarios.\n *\n * @param options - Per-call request options.\n * @returns List of scenarios.\n */\n async list(options?: RequestOptions): Promise<ListScenariosResponse> {\n return this.http.get<ListScenariosResponse>(BASE, options);\n }\n\n /**\n * Get a scenario by ID.\n *\n * @param id - Scenario ID.\n * @param options - Per-call request options.\n * @returns Scenario data.\n */\n async get(id: string, options?: RequestOptions): Promise<GetScenarioResponse> {\n return this.http.get<GetScenarioResponse>(`${BASE}/${id}`, options);\n }\n\n /**\n * Update a scenario.\n *\n * @param id - Scenario ID.\n * @param request - Update parameters.\n * @param options - Per-call request options.\n * @returns Updated scenario.\n */\n async update(\n id: string,\n request: UpdateScenarioRequest,\n options?: RequestOptions,\n ): Promise<UpdateScenarioResponse> {\n return this.http.request<UpdateScenarioResponse>('PATCH', `${BASE}/${id}`, {\n body: request,\n options,\n });\n }\n\n /**\n * Verify a scenario.\n *\n * @param id - Scenario ID.\n * @param request - Verification parameters.\n * @param options - Per-call request options.\n * @returns Verification results.\n */\n async verify(\n id: string,\n request: VerifyScenarioRequest,\n options?: RequestOptions,\n ): Promise<VerifyScenarioResponse> {\n return this.http.post<VerifyScenarioResponse>(`${BASE}/${id}/verify`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): ScenariosClientWithMetadata {\n return new ScenariosClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link ScenariosClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class ScenariosClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async create(\n request: CreateScenarioRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<CreateScenarioResponse>> {\n return this.http.requestWithMetadata<CreateScenarioResponse>('POST', BASE, {\n body: request,\n options,\n });\n }\n\n async list(options?: RequestOptions): Promise<ApiResponse<ListScenariosResponse>> {\n return this.http.requestWithMetadata<ListScenariosResponse>('GET', BASE, { options });\n }\n\n async get(\n id: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<GetScenarioResponse>> {\n return this.http.requestWithMetadata<GetScenarioResponse>('GET', `${BASE}/${id}`, { options });\n }\n\n async update(\n id: string,\n request: UpdateScenarioRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<UpdateScenarioResponse>> {\n return this.http.requestWithMetadata<UpdateScenarioResponse>('PATCH', `${BASE}/${id}`, {\n body: request,\n options,\n });\n }\n\n async verify(\n id: string,\n request: VerifyScenarioRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<VerifyScenarioResponse>> {\n return this.http.requestWithMetadata<VerifyScenarioResponse>(\n 'POST',\n `${BASE}/${id}/verify`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n ApproveActionRequest,\n RejectActionRequest,\n ModifyActionRequest,\n BulkApproveActionsRequest,\n BulkRejectActionsRequest,\n ActionReviewSummary,\n} from '../types/action-reviews.js';\n\nconst BASE = '/api/v1/action-reviews';\n\n/**\n * Resource client for autonomous action review operations.\n *\n * @remarks\n * Provides approval, rejection, modification, and bulk operations\n * for autonomous agent actions requiring human oversight.\n */\nexport class ActionReviewsClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Approve an autonomous action.\n *\n * @param request - Approval request with review ID.\n * @param options - Per-call request options.\n */\n async approve(\n request: ApproveActionRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/approve`, request, options);\n }\n\n /**\n * Reject an autonomous action.\n *\n * @param request - Rejection request with review ID and reason.\n * @param options - Per-call request options.\n */\n async reject(\n request: RejectActionRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/reject`, request, options);\n }\n\n /**\n * Modify an autonomous action.\n *\n * @param request - Modification request with changes.\n * @param options - Per-call request options.\n */\n async modify(\n request: ModifyActionRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/modify`, request, options);\n }\n\n /**\n * Bulk approve multiple actions.\n *\n * @param request - Bulk approval request with review IDs.\n * @param options - Per-call request options.\n */\n async bulkApprove(\n request: BulkApproveActionsRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/bulk-approve`, request, options);\n }\n\n /**\n * Bulk reject multiple actions.\n *\n * @param request - Bulk rejection request with review IDs and reason.\n * @param options - Per-call request options.\n */\n async bulkReject(\n request: BulkRejectActionsRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/bulk-reject`, request, options);\n }\n\n /**\n * List pending action reviews.\n *\n * @param options - Per-call request options.\n * @returns Pending reviews.\n */\n async listPending(options?: RequestOptions): Promise<unknown> {\n return this.http.get(`${BASE}/pending`, options);\n }\n\n /**\n * Get action review summary.\n *\n * @param options - Per-call request options.\n * @returns Review summary with counts.\n */\n async getSummary(options?: RequestOptions): Promise<ActionReviewSummary> {\n return this.http.get<ActionReviewSummary>(`${BASE}/summary`, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): ActionReviewsClientWithMetadata {\n return new ActionReviewsClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link ActionReviewsClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class ActionReviewsClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async approve(\n request: ApproveActionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/approve`, {\n body: request,\n options,\n });\n }\n\n async reject(\n request: RejectActionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/reject`, {\n body: request,\n options,\n });\n }\n\n async modify(\n request: ModifyActionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/modify`, {\n body: request,\n options,\n });\n }\n\n async bulkApprove(\n request: BulkApproveActionsRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/bulk-approve`, {\n body: request,\n options,\n });\n }\n\n async bulkReject(\n request: BulkRejectActionsRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/bulk-reject`, {\n body: request,\n options,\n });\n }\n\n async listPending(options?: RequestOptions): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('GET', `${BASE}/pending`, { options });\n }\n\n async getSummary(options?: RequestOptions): Promise<ApiResponse<ActionReviewSummary>> {\n return this.http.requestWithMetadata<ActionReviewSummary>('GET', `${BASE}/summary`, {\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n DiscoverEffectsRequest,\n DiscoverEffectsResponse,\n PredictFromDiscoveryRequest,\n PredictFromDiscoveryResponse,\n} from '../types/discovery.js';\n\nconst BASE = '/api/v1/discovery';\n\n/**\n * Resource client for causal discovery operations.\n *\n * @remarks\n * Provides causal effect discovery and prediction based on\n * discovered causal structure.\n */\nexport class DiscoveryClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Discover causal effects for a variable.\n *\n * @param request - Effect discovery request.\n * @param options - Per-call request options.\n * @returns Discovered effects.\n */\n async discoverEffects(\n request: DiscoverEffectsRequest,\n options?: RequestOptions,\n ): Promise<DiscoverEffectsResponse> {\n return this.http.post<DiscoverEffectsResponse>(`${BASE}/effects`, request, options);\n }\n\n /**\n * Predict using discovered causal structure.\n *\n * @param request - Prediction request with evidence.\n * @param options - Per-call request options.\n * @returns Prediction result with confidence.\n */\n async predict(\n request: PredictFromDiscoveryRequest,\n options?: RequestOptions,\n ): Promise<PredictFromDiscoveryResponse> {\n return this.http.post<PredictFromDiscoveryResponse>(`${BASE}/predict`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): DiscoveryClientWithMetadata {\n return new DiscoveryClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link DiscoveryClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class DiscoveryClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async discoverEffects(\n request: DiscoverEffectsRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<DiscoverEffectsResponse>> {\n return this.http.requestWithMetadata<DiscoverEffectsResponse>('POST', `${BASE}/effects`, {\n body: request,\n options,\n });\n }\n\n async predict(\n request: PredictFromDiscoveryRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<PredictFromDiscoveryResponse>> {\n return this.http.requestWithMetadata<PredictFromDiscoveryResponse>('POST', `${BASE}/predict`, {\n body: request,\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n ExtractEntitiesRequest,\n ExtractEntitiesResponse,\n} from '../types/extract.js';\n\nconst BASE = '/api/v1/extract';\n\n/**\n * Resource client for entity extraction operations.\n *\n * @remarks\n * Provides NLP-based entity extraction from text.\n */\nexport class ExtractClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Extract entities from text.\n *\n * @param request - Extraction request with text and options.\n * @param options - Per-call request options.\n * @returns Extracted entities and optional relations.\n */\n async extractEntities(\n request: ExtractEntitiesRequest,\n options?: RequestOptions,\n ): Promise<ExtractEntitiesResponse> {\n return this.http.post<ExtractEntitiesResponse>(`${BASE}/entities`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): ExtractClientWithMetadata {\n return new ExtractClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link ExtractClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class ExtractClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async extractEntities(\n request: ExtractEntitiesRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ExtractEntitiesResponse>> {\n return this.http.requestWithMetadata<ExtractEntitiesResponse>('POST', `${BASE}/entities`, {\n body: request,\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n FormalJudgeRequest,\n FormalJudgeResponse,\n FormalJudgeRefinementResponse,\n} from '../types/oversight.js';\n\nconst BASE = '/api/v1/oversight';\n\n/**\n * Resource client for FormalJudge oversight operations.\n *\n * @remarks\n * Provides neuro-symbolic agentic oversight verification.\n * Single-pass verification judges agent trajectories against formal safety constraints.\n * Iterative refinement re-runs the pipeline to converge on a safe verdict.\n */\nexport class OversightClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Run single-pass FormalJudge oversight verification.\n *\n * @param request - Judge request with trajectory and user intent.\n * @param options - Per-call request options.\n * @returns Verdict, scores, violations, and optional certificate.\n */\n async judge(\n request: FormalJudgeRequest,\n options?: RequestOptions,\n ): Promise<FormalJudgeResponse> {\n return this.http.post<FormalJudgeResponse>(`${BASE}/judge`, request, options);\n }\n\n /**\n * Run iterative refinement FormalJudge pipeline.\n *\n * @param request - Judge request with trajectory and user intent.\n * @param options - Per-call request options.\n * @returns Results from each refinement round with convergence status.\n */\n async refine(\n request: FormalJudgeRequest,\n options?: RequestOptions,\n ): Promise<FormalJudgeRefinementResponse> {\n return this.http.post<FormalJudgeRefinementResponse>(\n `${BASE}/judge/refine`,\n request,\n options,\n );\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): OversightClientWithMetadata {\n return new OversightClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link OversightClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class OversightClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Run single-pass FormalJudge oversight verification.\n *\n * @param request - Judge request with trajectory and user intent.\n * @param options - Per-call request options.\n * @returns Verdict, scores, violations, and optional certificate wrapped in {@link ApiResponse}.\n */\n async judge(\n request: FormalJudgeRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<FormalJudgeResponse>> {\n return this.http.requestWithMetadata<FormalJudgeResponse>('POST', `${BASE}/judge`, {\n body: request,\n options,\n });\n }\n\n /**\n * Run iterative refinement FormalJudge pipeline.\n *\n * @param request - Judge request with trajectory and user intent.\n * @param options - Per-call request options.\n * @returns Results from each refinement round with convergence status wrapped in {@link ApiResponse}.\n */\n async refine(\n request: FormalJudgeRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<FormalJudgeRefinementResponse>> {\n return this.http.requestWithMetadata<FormalJudgeRefinementResponse>(\n 'POST',\n `${BASE}/judge/refine`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n DifferentiableFcRequest,\n DifferentiableFcResponse,\n SoftUnifyRequest,\n SoftUnifyResponse,\n TaggedFcRequest,\n TaggedFcResponse,\n MonadicFixpointRequest,\n MonadicFixpointResponse,\n DerivedInferenceRequest,\n DerivedInferenceResponse,\n ClassifySafetyRequest,\n ClassifySafetyResponse,\n DynamicAddSortRequest,\n DynamicAddSortResponse,\n CdlStatusResponse,\n} from '../types/cdl.js';\n\nconst BASE = '/api/v1/cdl';\n\n/**\n * Resource client for Categorical Deep Learning (CDL) operations.\n *\n * @remarks\n * CDL combines differentiable neural layers with symbolic OSF inference.\n * All 6 CDL phases are exposed:\n * - Phase 1: Tagged forward chaining (provenance semirings)\n * - Phase 2: Differentiable forward chaining + soft unification\n * - Phase 3: Monadic fixpoint (OSF monad iteration)\n * - Phase 4: Derived inference (composed CDL neural layer)\n * - Phase 5: Safety classification (CDL fact grounding)\n * - Phase 6: Dynamic sort addition (self-modifying architecture)\n */\nexport class CdlClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Run differentiable forward chaining (Phases 1+2).\n *\n * @param request - Forward chaining parameters.\n * @param options - Per-call request options.\n * @returns Weighted facts, iteration metrics, and symbolic result.\n */\n async differentiableForwardChain(\n request: DifferentiableFcRequest,\n options?: RequestOptions,\n ): Promise<DifferentiableFcResponse> {\n return this.http.post<DifferentiableFcResponse>(\n `${BASE}/forward-chain/differentiable`,\n request,\n options,\n );\n }\n\n /**\n * Perform soft (differentiable) unification between two terms (Phase 2).\n *\n * @param request - Soft unification request with two term IDs.\n * @param options - Per-call request options.\n * @returns Confidence scores and compatibility.\n */\n async softUnify(\n request: SoftUnifyRequest,\n options?: RequestOptions,\n ): Promise<SoftUnifyResponse> {\n return this.http.post<SoftUnifyResponse>(`${BASE}/soft-unify`, request, options);\n }\n\n /**\n * Run tagged forward chaining with probabilistic semiring (Phase 1).\n *\n * @param request - Tagged forward chaining parameters.\n * @param options - Per-call request options.\n * @returns Tagged facts with probabilities.\n */\n async taggedForwardChain(\n request: TaggedFcRequest,\n options?: RequestOptions,\n ): Promise<TaggedFcResponse> {\n return this.http.post<TaggedFcResponse>(`${BASE}/forward-chain/tagged`, request, options);\n }\n\n /**\n * Run monadic fixpoint inference (Phase 3).\n *\n * @param request - Monadic fixpoint parameters.\n * @param options - Per-call request options.\n * @returns Facts with monadic metadata.\n */\n async monadicFixpoint(\n request: MonadicFixpointRequest,\n options?: RequestOptions,\n ): Promise<MonadicFixpointResponse> {\n return this.http.post<MonadicFixpointResponse>(\n `${BASE}/monadic-fixpoint`,\n request,\n options,\n );\n }\n\n /**\n * Run derived inference through composed CDL layer (Phase 4).\n *\n * @param request - Feature pairs for inference.\n * @param options - Per-call request options.\n * @returns Inference results with architecture info.\n */\n async derivedInference(\n request: DerivedInferenceRequest,\n options?: RequestOptions,\n ): Promise<DerivedInferenceResponse> {\n return this.http.post<DerivedInferenceResponse>(\n `${BASE}/derived-inference`,\n request,\n options,\n );\n }\n\n /**\n * Classify text for safety violations using CDL fact grounding (Phase 5).\n *\n * @param request - Safety classification request.\n * @param options - Per-call request options.\n * @returns Safety decisions, probabilities, and model info.\n */\n async classifySafety(\n request: ClassifySafetyRequest,\n options?: RequestOptions,\n ): Promise<ClassifySafetyResponse> {\n return this.http.post<ClassifySafetyResponse>(\n `${BASE}/classify-safety`,\n request,\n options,\n );\n }\n\n /**\n * Dynamically add a sort to the CDL architecture (Phase 6).\n *\n * @param request - Sort definition.\n * @param options - Per-call request options.\n * @returns Adaptation result with verification.\n */\n async dynamicAddSort(\n request: DynamicAddSortRequest,\n options?: RequestOptions,\n ): Promise<DynamicAddSortResponse> {\n return this.http.post<DynamicAddSortResponse>(\n `${BASE}/dynamic/add-sort`,\n request,\n options,\n );\n }\n\n /**\n * Get CDL subsystem status.\n *\n * @param options - Per-call request options.\n * @returns CDL component statuses.\n */\n async getStatus(options?: RequestOptions): Promise<CdlStatusResponse> {\n return this.http.get<CdlStatusResponse>(`${BASE}/status`, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): CdlClientWithMetadata {\n return new CdlClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link CdlClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class CdlClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async differentiableForwardChain(\n request: DifferentiableFcRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<DifferentiableFcResponse>> {\n return this.http.requestWithMetadata<DifferentiableFcResponse>(\n 'POST',\n `${BASE}/forward-chain/differentiable`,\n { body: request, options },\n );\n }\n\n async softUnify(\n request: SoftUnifyRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SoftUnifyResponse>> {\n return this.http.requestWithMetadata<SoftUnifyResponse>('POST', `${BASE}/soft-unify`, {\n body: request,\n options,\n });\n }\n\n async taggedForwardChain(\n request: TaggedFcRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<TaggedFcResponse>> {\n return this.http.requestWithMetadata<TaggedFcResponse>(\n 'POST',\n `${BASE}/forward-chain/tagged`,\n { body: request, options },\n );\n }\n\n async monadicFixpoint(\n request: MonadicFixpointRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<MonadicFixpointResponse>> {\n return this.http.requestWithMetadata<MonadicFixpointResponse>(\n 'POST',\n `${BASE}/monadic-fixpoint`,\n { body: request, options },\n );\n }\n\n async derivedInference(\n request: DerivedInferenceRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<DerivedInferenceResponse>> {\n return this.http.requestWithMetadata<DerivedInferenceResponse>(\n 'POST',\n `${BASE}/derived-inference`,\n { body: request, options },\n );\n }\n\n async classifySafety(\n request: ClassifySafetyRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ClassifySafetyResponse>> {\n return this.http.requestWithMetadata<ClassifySafetyResponse>(\n 'POST',\n `${BASE}/classify-safety`,\n { body: request, options },\n );\n }\n\n async dynamicAddSort(\n request: DynamicAddSortRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<DynamicAddSortResponse>> {\n return this.http.requestWithMetadata<DynamicAddSortResponse>(\n 'POST',\n `${BASE}/dynamic/add-sort`,\n { body: request, options },\n );\n }\n\n async getStatus(options?: RequestOptions): Promise<ApiResponse<CdlStatusResponse>> {\n return this.http.requestWithMetadata<CdlStatusResponse>('GET', `${BASE}/status`, {\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n NeuroSymbolicStatusResponse,\n DiagnosticsResponse,\n TrainingTriggerResponse,\n GFlowNetTrainResponse,\n E2eTrainingRequest,\n E2eTrainingResponse,\n SaveWeightsResponse,\n EmbeddingVerificationResponse,\n SortBoxRequest,\n SortBoxResponse,\n} from '../types/neuro-symbolic.js';\n\nconst BASE = '/api/v1/admin/neuro-symbolic';\n\n/**\n * Resource client for neuro-symbolic operations.\n *\n * @remarks\n * Provides training and embedding management for the neuro-symbolic subsystem.\n * All endpoints are under the admin namespace.\n */\nexport class NeuroSymbolicClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Get neuro-symbolic system status.\n *\n * @param options - Per-call request options.\n * @returns System status.\n */\n async getStatus(options?: RequestOptions): Promise<NeuroSymbolicStatusResponse> {\n return this.http.get<NeuroSymbolicStatusResponse>(`${BASE}/status`, options);\n }\n\n /**\n * Get neuro-symbolic diagnostics.\n *\n * @param options - Per-call request options.\n * @returns Diagnostics information.\n */\n async getDiagnostics(options?: RequestOptions): Promise<DiagnosticsResponse> {\n return this.http.get<DiagnosticsResponse>(`${BASE}/diagnostics`, options);\n }\n\n /**\n * Trigger scorer training.\n *\n * @param options - Per-call request options.\n * @returns Training trigger result.\n */\n async trainScorer(options?: RequestOptions): Promise<TrainingTriggerResponse> {\n return this.http.post<TrainingTriggerResponse>(`${BASE}/train`, undefined, options);\n }\n\n /**\n * Trigger embedding training.\n *\n * @param options - Per-call request options.\n * @returns Training trigger result.\n */\n async trainEmbeddings(options?: RequestOptions): Promise<TrainingTriggerResponse> {\n return this.http.post<TrainingTriggerResponse>(\n `${BASE}/train/embeddings`,\n undefined,\n options,\n );\n }\n\n /**\n * Trigger GFlowNet training.\n *\n * @param options - Per-call request options.\n * @returns GFlowNet training result.\n */\n async trainGflownet(options?: RequestOptions): Promise<GFlowNetTrainResponse> {\n return this.http.post<GFlowNetTrainResponse>(\n `${BASE}/train/gflownet`,\n undefined,\n options,\n );\n }\n\n /**\n * Run end-to-end training.\n *\n * @param request - Training configuration.\n * @param options - Per-call request options.\n * @returns Training results.\n */\n async trainE2e(\n request: E2eTrainingRequest,\n options?: RequestOptions,\n ): Promise<E2eTrainingResponse> {\n return this.http.post<E2eTrainingResponse>(`${BASE}/train/e2e`, request, options);\n }\n\n /**\n * Save trained weights.\n *\n * @param options - Per-call request options.\n * @returns Save result.\n */\n async saveWeights(options?: RequestOptions): Promise<SaveWeightsResponse> {\n return this.http.post<SaveWeightsResponse>(`${BASE}/save-weights`, undefined, options);\n }\n\n /**\n * Verify embedding quality.\n *\n * @param options - Per-call request options.\n * @returns Verification results for containment, meet preservation, and specificity.\n */\n async verifyEmbeddings(options?: RequestOptions): Promise<EmbeddingVerificationResponse> {\n return this.http.get<EmbeddingVerificationResponse>(\n `${BASE}/embeddings/verify`,\n options,\n );\n }\n\n /**\n * Look up a sort's box embedding.\n *\n * @param request - Sort box lookup request.\n * @param options - Per-call request options.\n * @returns Sort box coordinates and volume.\n */\n async sortBoxLookup(\n request: SortBoxRequest,\n options?: RequestOptions,\n ): Promise<SortBoxResponse> {\n return this.http.post<SortBoxResponse>(\n `${BASE}/embeddings/sort-box`,\n request,\n options,\n );\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): NeuroSymbolicClientWithMetadata {\n return new NeuroSymbolicClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link NeuroSymbolicClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class NeuroSymbolicClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async getStatus(\n options?: RequestOptions,\n ): Promise<ApiResponse<NeuroSymbolicStatusResponse>> {\n return this.http.requestWithMetadata<NeuroSymbolicStatusResponse>(\n 'GET',\n `${BASE}/status`,\n { options },\n );\n }\n\n async getDiagnostics(\n options?: RequestOptions,\n ): Promise<ApiResponse<DiagnosticsResponse>> {\n return this.http.requestWithMetadata<DiagnosticsResponse>(\n 'GET',\n `${BASE}/diagnostics`,\n { options },\n );\n }\n\n async trainScorer(\n options?: RequestOptions,\n ): Promise<ApiResponse<TrainingTriggerResponse>> {\n return this.http.requestWithMetadata<TrainingTriggerResponse>(\n 'POST',\n `${BASE}/train`,\n { options },\n );\n }\n\n async trainEmbeddings(\n options?: RequestOptions,\n ): Promise<ApiResponse<TrainingTriggerResponse>> {\n return this.http.requestWithMetadata<TrainingTriggerResponse>(\n 'POST',\n `${BASE}/train/embeddings`,\n { options },\n );\n }\n\n async trainGflownet(\n options?: RequestOptions,\n ): Promise<ApiResponse<GFlowNetTrainResponse>> {\n return this.http.requestWithMetadata<GFlowNetTrainResponse>(\n 'POST',\n `${BASE}/train/gflownet`,\n { options },\n );\n }\n\n async trainE2e(\n request: E2eTrainingRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<E2eTrainingResponse>> {\n return this.http.requestWithMetadata<E2eTrainingResponse>(\n 'POST',\n `${BASE}/train/e2e`,\n { body: request, options },\n );\n }\n\n async saveWeights(\n options?: RequestOptions,\n ): Promise<ApiResponse<SaveWeightsResponse>> {\n return this.http.requestWithMetadata<SaveWeightsResponse>(\n 'POST',\n `${BASE}/save-weights`,\n { options },\n );\n }\n\n async verifyEmbeddings(\n options?: RequestOptions,\n ): Promise<ApiResponse<EmbeddingVerificationResponse>> {\n return this.http.requestWithMetadata<EmbeddingVerificationResponse>(\n 'GET',\n `${BASE}/embeddings/verify`,\n { options },\n );\n }\n\n async sortBoxLookup(\n request: SortBoxRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SortBoxResponse>> {\n return this.http.requestWithMetadata<SortBoxResponse>(\n 'POST',\n `${BASE}/embeddings/sort-box`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n SortDiscoveryRequest,\n SortDiscoveryResponse,\n StartExplorationRequest,\n StartExplorationResponse,\n ConfirmResponse,\n RefuteRequest,\n RefuteResponse,\n ExplorationStatusResponse,\n ExplorationCompleteResponse,\n} from '../types/analysis.js';\n\nconst BASE = '/api/v1/analysis';\n\n/**\n * Resource client for analysis and Formal Concept Analysis (FCA) operations.\n *\n * @remarks\n * Provides sort discovery from existing terms and interactive attribute exploration\n * for discovering implications in the knowledge base.\n */\nexport class AnalysisClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Run sort discovery analysis on existing terms.\n *\n * @param request - Discovery parameters.\n * @param options - Per-call request options.\n * @returns Discovery results with recommendations.\n */\n async sortDiscovery(\n request: SortDiscoveryRequest,\n options?: RequestOptions,\n ): Promise<SortDiscoveryResponse> {\n return this.http.post<SortDiscoveryResponse>(`${BASE}/sort-discovery`, request, options);\n }\n\n /**\n * Start an interactive attribute exploration session.\n *\n * @param request - Exploration parameters.\n * @param options - Per-call request options.\n * @returns Session ID and first question.\n */\n async startExploration(\n request: StartExplorationRequest,\n options?: RequestOptions,\n ): Promise<StartExplorationResponse> {\n return this.http.post<StartExplorationResponse>(\n `${BASE}/attribute-exploration/start`,\n request,\n options,\n );\n }\n\n /**\n * Confirm the current implication in an exploration session.\n *\n * @param sessionId - Exploration session ID.\n * @param options - Per-call request options.\n * @returns Next question and progress.\n */\n async confirmImplication(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ConfirmResponse> {\n return this.http.post<ConfirmResponse>(\n `${BASE}/attribute-exploration/${sessionId}/confirm`,\n undefined,\n options,\n );\n }\n\n /**\n * Refute the current implication with a counterexample.\n *\n * @param sessionId - Exploration session ID.\n * @param request - Counterexample.\n * @param options - Per-call request options.\n * @returns Next question and progress.\n */\n async refuteImplication(\n sessionId: string,\n request: RefuteRequest,\n options?: RequestOptions,\n ): Promise<RefuteResponse> {\n return this.http.post<RefuteResponse>(\n `${BASE}/attribute-exploration/${sessionId}/refute`,\n request,\n options,\n );\n }\n\n /**\n * Get the current status of an exploration session.\n *\n * @param sessionId - Exploration session ID.\n * @param options - Per-call request options.\n * @returns Session status with progress and confirmed implications.\n */\n async getExplorationStatus(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ExplorationStatusResponse> {\n return this.http.get<ExplorationStatusResponse>(\n `${BASE}/attribute-exploration/${sessionId}/status`,\n options,\n );\n }\n\n /**\n * Complete an exploration session and create rules from the discovered basis.\n *\n * @param sessionId - Exploration session ID.\n * @param options - Per-call request options.\n * @returns Final implications and rules created.\n */\n async completeExploration(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ExplorationCompleteResponse> {\n return this.http.post<ExplorationCompleteResponse>(\n `${BASE}/attribute-exploration/${sessionId}/complete`,\n undefined,\n options,\n );\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): AnalysisClientWithMetadata {\n return new AnalysisClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link AnalysisClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class AnalysisClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async sortDiscovery(\n request: SortDiscoveryRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SortDiscoveryResponse>> {\n return this.http.requestWithMetadata<SortDiscoveryResponse>(\n 'POST',\n `${BASE}/sort-discovery`,\n { body: request, options },\n );\n }\n\n async startExploration(\n request: StartExplorationRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<StartExplorationResponse>> {\n return this.http.requestWithMetadata<StartExplorationResponse>(\n 'POST',\n `${BASE}/attribute-exploration/start`,\n { body: request, options },\n );\n }\n\n async confirmImplication(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<ConfirmResponse>> {\n return this.http.requestWithMetadata<ConfirmResponse>(\n 'POST',\n `${BASE}/attribute-exploration/${sessionId}/confirm`,\n { options },\n );\n }\n\n async refuteImplication(\n sessionId: string,\n request: RefuteRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RefuteResponse>> {\n return this.http.requestWithMetadata<RefuteResponse>(\n 'POST',\n `${BASE}/attribute-exploration/${sessionId}/refute`,\n { body: request, options },\n );\n }\n\n async getExplorationStatus(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<ExplorationStatusResponse>> {\n return this.http.requestWithMetadata<ExplorationStatusResponse>(\n 'GET',\n `${BASE}/attribute-exploration/${sessionId}/status`,\n { options },\n );\n }\n\n async completeExploration(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<ExplorationCompleteResponse>> {\n return this.http.requestWithMetadata<ExplorationCompleteResponse>(\n 'POST',\n `${BASE}/attribute-exploration/${sessionId}/complete`,\n { options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n RecordSelectionRequest,\n RecordSelectionResponse,\n PredictPreferencesRequest,\n PredictPreferencesResponse,\n} from '../types/preferences.js';\n\nconst BASE = '/api/v1/preferences';\n\n/**\n * Resource client for Bayesian preference learning operations.\n *\n * @remarks\n * Provides user preference recording and prediction for term ranking.\n */\nexport class PreferencesClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Record a user's term selection for preference learning.\n *\n * @param request - Selection to record.\n * @param options - Per-call request options.\n * @returns Recording result.\n */\n async recordSelection(\n request: RecordSelectionRequest,\n options?: RequestOptions,\n ): Promise<RecordSelectionResponse> {\n return this.http.post<RecordSelectionResponse>(`${BASE}/selection`, request, options);\n }\n\n /**\n * Predict user preferences for candidate terms.\n *\n * @param request - Prediction request with candidates.\n * @param options - Per-call request options.\n * @returns Predictions sorted by score.\n */\n async predict(\n request: PredictPreferencesRequest,\n options?: RequestOptions,\n ): Promise<PredictPreferencesResponse> {\n return this.http.post<PredictPreferencesResponse>(`${BASE}/predict`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): PreferencesClientWithMetadata {\n return new PreferencesClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link PreferencesClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class PreferencesClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async recordSelection(\n request: RecordSelectionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RecordSelectionResponse>> {\n return this.http.requestWithMetadata<RecordSelectionResponse>(\n 'POST',\n `${BASE}/selection`,\n { body: request, options },\n );\n }\n\n async predict(\n request: PredictPreferencesRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<PredictPreferencesResponse>> {\n return this.http.requestWithMetadata<PredictPreferencesResponse>(\n 'POST',\n `${BASE}/predict`,\n { body: request, options },\n );\n }\n}\n","import type { ClientConfig } from './config.js';\nimport { resolveConfig } from './config.js';\nimport { HttpClient } from './http.js';\nimport { WebSocketClient } from './websocket.js';\nimport { SortsClient } from './resources/sorts.js';\nimport { TermsClient } from './resources/terms.js';\nimport { InferenceClient } from './resources/inference.js';\nimport { QueryClient } from './resources/query.js';\nimport { CognitiveClient } from './resources/cognitive.js';\nimport { FuzzyClient } from './resources/fuzzy.js';\nimport { ConstraintsClient } from './resources/constraints.js';\nimport { NamespacesClient } from './resources/namespaces.js';\nimport { CollectionsClient } from './resources/collections.js';\nimport { ExecutionClient } from './resources/execution.js';\nimport { CausalClient } from './resources/causal.js';\nimport { IngestionClient } from './resources/ingestion.js';\nimport { ReviewsClient } from './resources/reviews.js';\nimport { VisualizationClient } from './resources/visualization.js';\nimport { IlpClient } from './resources/ilp.js';\nimport { ReasoningClient } from './resources/reasoning.js';\nimport { StatisticalClient } from './resources/statistical.js';\nimport { ControlClient } from './resources/control.js';\nimport { SpacesClient } from './resources/spaces.js';\nimport { RowClient } from './resources/row.js';\nimport { SourcesClient } from './resources/sources.js';\nimport { CommunitiesClient } from './resources/communities.js';\nimport { UtilitiesClient } from './resources/utilities.js';\nimport { ScenariosClient } from './resources/scenarios.js';\nimport { ActionReviewsClient } from './resources/action-reviews.js';\nimport { DiscoveryClient } from './resources/discovery.js';\nimport { ExtractClient } from './resources/extract.js';\nimport { OversightClient } from './resources/oversight.js';\nimport { CdlClient } from './resources/cdl.js';\nimport { NeuroSymbolicClient } from './resources/neuro-symbolic.js';\nimport { AnalysisClient } from './resources/analysis.js';\nimport { PreferencesClient } from './resources/preferences.js';\n\n/**\n * Main client for the Reasoning Layer API.\n *\n * Provides access to all resource clients through a shared HTTP connection\n * with configured authentication, retry, and timeout behavior.\n *\n * @example\n * ```typescript\n * import { ReasoningLayerClient } from '@kortexya/reasoning-layer';\n *\n * const client = new ReasoningLayerClient({\n * baseUrl: 'http://localhost:8083',\n * tenantId: 'my-tenant-uuid',\n * });\n *\n * const sort = await client.sorts.createSort({ name: 'employee' });\n * const term = await client.terms.createTerm({ sort_id: sort.id, features: {} });\n * ```\n */\nexport class ReasoningLayerClient {\n /** Sort (type hierarchy) operations. */\n readonly sorts: SortsClient;\n\n /** Psi-term CRUD operations. */\n readonly terms: TermsClient;\n\n /** Inference engine operations (backward/forward chaining, fuzzy, Bayesian, NAF). */\n readonly inference: InferenceClient;\n\n /** Query operations (unification, OSF search, validation). */\n readonly query: QueryClient;\n\n /** Cognitive agent operations (BDI cycle, beliefs, goals, messaging). */\n readonly cognitive: CognitiveClient;\n\n /** Fuzzy operations (unification, merge, subsumption, top-K search). */\n readonly fuzzy: FuzzyClient;\n\n /** Constraint operations (arithmetic solving, graph visualization). */\n readonly constraints: ConstraintsClient;\n\n /** Namespace operations (hierarchy, imports, metadata). */\n readonly namespaces: NamespacesClient;\n\n /** Collection operations (CRUD, tagging). */\n readonly collections: CollectionsClient;\n\n /** Execution session operations (backtracking, goal stack). */\n readonly execution: ExecutionClient;\n\n /** Causal reasoning operations (Pearl's hierarchy, interventions, counterfactuals). */\n readonly causal: CausalClient;\n\n /** Data ingestion operations (documents, markdown, RDF, session management). */\n readonly ingestion: IngestionClient;\n\n /** Human-in-the-loop review operations (approve, reject, merge, re-extract). */\n readonly reviews: ReviewsClient;\n\n /** Visualization operations (lattice, hypergraph, residuation state). */\n readonly visualization: VisualizationClient;\n\n /** Inductive logic programming operations (pattern learning, synthesis). */\n readonly ilp: IlpClient;\n\n /** Advanced reasoning operations (entailment, subsumption, resource coordination). */\n readonly reasoning: ReasoningClient;\n\n /** Statistical analysis operations (correlation, causal discovery, independence tests). */\n readonly statistical: StatisticalClient;\n\n /** Proof control operations (cut, findall, forall, NAF, conditionals). */\n readonly control: ControlClient;\n\n /** Computation space operations (create, clone, commit, search). */\n readonly spaces: SpacesClient;\n\n /** Row polymorphism operations (schema-flexible search, unification, integration). */\n readonly row: RowClient;\n\n /** Data source operations (register, discover schema, ingest). */\n readonly sources: SourcesClient;\n\n /** Community detection operations (detect, memberships, search). */\n readonly communities: CommunitiesClient;\n\n /** Utility operations (strings, arithmetic, copy). */\n readonly utilities: UtilitiesClient;\n\n /** Scenario operations (CRUD, verification). */\n readonly scenarios: ScenariosClient;\n\n /** Action review operations (approve, reject, modify autonomous actions). */\n readonly actionReviews: ActionReviewsClient;\n\n /** Causal discovery operations (effect discovery, prediction). */\n readonly discovery: DiscoveryClient;\n\n /** Entity extraction operations. */\n readonly extract: ExtractClient;\n\n /** FormalJudge oversight operations (safety verification, refinement). */\n readonly oversight: OversightClient;\n\n /** Categorical Deep Learning operations (differentiable FC, soft unification, safety). */\n readonly cdl: CdlClient;\n\n /** Neuro-symbolic operations (training, embeddings, diagnostics). */\n readonly neuroSymbolic: NeuroSymbolicClient;\n\n /** Analysis and FCA operations (sort discovery, attribute exploration). */\n readonly analysis: AnalysisClient;\n\n /** Bayesian preference learning operations (selection recording, prediction). */\n readonly preferences: PreferencesClient;\n\n /**\n * Create a new ReasoningLayerClient.\n *\n * @param config - Client configuration. At minimum, `baseUrl` and `tenantId` are required.\n *\n * @throws {Error} If `baseUrl` or `tenantId` is missing.\n */\n constructor(config: ClientConfig) {\n const resolved = resolveConfig(config);\n const http = new HttpClient(resolved);\n const ws = new WebSocketClient(resolved);\n\n this.sorts = new SortsClient(http, resolved.tenantId);\n this.terms = new TermsClient(http);\n this.inference = new InferenceClient(http);\n this.query = new QueryClient(http);\n this.cognitive = new CognitiveClient(http, ws);\n this.fuzzy = new FuzzyClient(http);\n this.constraints = new ConstraintsClient(http);\n this.namespaces = new NamespacesClient(http);\n this.collections = new CollectionsClient(http);\n this.execution = new ExecutionClient(http);\n this.causal = new CausalClient(http);\n this.ingestion = new IngestionClient(http);\n this.reviews = new ReviewsClient(http);\n this.visualization = new VisualizationClient(http);\n this.ilp = new IlpClient(http);\n this.reasoning = new ReasoningClient(http);\n this.statistical = new StatisticalClient(http);\n this.control = new ControlClient(http);\n this.spaces = new SpacesClient(http);\n this.row = new RowClient(http);\n this.sources = new SourcesClient(http);\n this.communities = new CommunitiesClient(http);\n this.utilities = new UtilitiesClient(http);\n this.scenarios = new ScenariosClient(http);\n this.actionReviews = new ActionReviewsClient(http);\n this.discovery = new DiscoveryClient(http);\n this.extract = new ExtractClient(http);\n this.oversight = new OversightClient(http);\n this.cdl = new CdlClient(http);\n this.neuroSymbolic = new NeuroSymbolicClient(http);\n this.analysis = new AnalysisClient(http);\n this.preferences = new PreferencesClient(http);\n }\n}\n","import type {\n ValueDto,\n FuzzyShapeDto,\n StringValue,\n IntegerValue,\n RealValue,\n BooleanValue,\n UninstantiatedValue,\n ReferenceValue,\n ListValue,\n FuzzyScalarValue,\n FuzzyNumberValue,\n SetValue,\n TriangularShape,\n TrapezoidalShape,\n GaussianShape,\n CyclicGaussianShape,\n} from '../types/index.js';\n\n/**\n * Builder namespace for tagged `ValueDto` values.\n *\n * Produces JSON in the tagged discriminated union format:\n * `{\"type\": \"String\", \"value\": \"hello\"}`, `{\"type\": \"Integer\", \"value\": 42}`, etc.\n *\n * @remarks\n * **Serialization format: Tagged (`ValueDto`).**\n *\n * Use with term CRUD (`/api/v1/terms`), queries (`/api/v1/query`), and fuzzy operations.\n * Do NOT use with homoiconic inference endpoints — use {@link FeatureInput} builders instead.\n *\n * @example\n * ```typescript\n * import { Value } from '@kortexya/reasoninglayer';\n *\n * const features = {\n * name: Value.string(\"Alice\"),\n * age: Value.integer(30),\n * active: Value.boolean(true),\n * };\n * ```\n */\nexport const Value = {\n /**\n * Create a string value.\n *\n * @param s - The string value.\n * @returns A tagged `StringValue`: `{\"type\": \"String\", \"value\": \"hello\"}`.\n *\n * @remarks\n * Serialization format: Tagged (ValueDto). Use with term CRUD, queries, fuzzy operations.\n * Do NOT use with homoiconic inference endpoints.\n *\n * @example\n * ```typescript\n * Value.string(\"Alice\") // {\"type\": \"String\", \"value\": \"Alice\"}\n * ```\n */\n string(s: string): StringValue {\n return { type: 'String', value: s };\n },\n\n /**\n * Create an integer value.\n *\n * @param n - The integer value (i64 on backend).\n * @returns A tagged `IntegerValue`: `{\"type\": \"Integer\", \"value\": 42}`.\n *\n * @remarks\n * Serialization format: Tagged (ValueDto). Use with term CRUD, queries, fuzzy operations.\n * Do NOT use with homoiconic inference endpoints.\n *\n * @example\n * ```typescript\n * Value.integer(42) // {\"type\": \"Integer\", \"value\": 42}\n * ```\n */\n integer(n: number): IntegerValue {\n return { type: 'Integer', value: n };\n },\n\n /**\n * Create a real (floating-point) value.\n *\n * @param n - The real value (f64 on backend).\n * @returns A tagged `RealValue`: `{\"type\": \"Real\", \"value\": 3.14}`.\n *\n * @remarks\n * Serialization format: Tagged (ValueDto). Use with term CRUD, queries, fuzzy operations.\n * Do NOT use with homoiconic inference endpoints.\n *\n * @example\n * ```typescript\n * Value.real(3.14) // {\"type\": \"Real\", \"value\": 3.14}\n * ```\n */\n real(n: number): RealValue {\n return { type: 'Real', value: n };\n },\n\n /**\n * Create a boolean value.\n *\n * @param b - The boolean value.\n * @returns A tagged `BooleanValue`: `{\"type\": \"Boolean\", \"value\": true}`.\n *\n * @remarks\n * Serialization format: Tagged (ValueDto). Use with term CRUD, queries, fuzzy operations.\n * Do NOT use with homoiconic inference endpoints.\n *\n * @example\n * ```typescript\n * Value.boolean(true) // {\"type\": \"Boolean\", \"value\": true}\n * ```\n */\n boolean(b: boolean): BooleanValue {\n return { type: 'Boolean', value: b };\n },\n\n /**\n * Create an uninstantiated (unknown) value.\n *\n * @returns A tagged `UninstantiatedValue`: `{\"type\": \"Uninstantiated\"}`.\n *\n * @remarks\n * Serialization format: Tagged (ValueDto). Use with term CRUD, queries, fuzzy operations.\n * Do NOT use with homoiconic inference endpoints.\n *\n * Represents a feature whose value has not yet been determined.\n * In the untagged format, this corresponds to `null`.\n *\n * @example\n * ```typescript\n * Value.uninstantiated() // {\"type\": \"Uninstantiated\"}\n * ```\n */\n uninstantiated(): UninstantiatedValue {\n return { type: 'Uninstantiated' };\n },\n\n /**\n * Create a reference to another term by UUID.\n *\n * @param id - The UUID of the referenced term.\n * @returns A tagged `ReferenceValue`: `{\"type\": \"Reference\", \"value\": \"uuid\"}`.\n *\n * @remarks\n * Serialization format: Tagged (ValueDto). Use with term CRUD, queries, fuzzy operations.\n * Do NOT use with homoiconic inference endpoints.\n *\n * @example\n * ```typescript\n * Value.reference(\"550e8400-e29b-41d4-a716-446655440000\")\n * ```\n */\n reference(id: string): ReferenceValue {\n return { type: 'Reference', value: id };\n },\n\n /**\n * Create a list of values.\n *\n * @param items - The list items as `ValueDto` values.\n * @returns A tagged `ListValue`: `{\"type\": \"List\", \"value\": [...]}`.\n *\n * @remarks\n * Serialization format: Tagged (ValueDto). Use with term CRUD, queries, fuzzy operations.\n * Do NOT use with homoiconic inference endpoints.\n *\n * @example\n * ```typescript\n * Value.list([Value.integer(1), Value.integer(2), Value.integer(3)])\n * ```\n */\n list(items: ValueDto[]): ListValue {\n return { type: 'List', value: items };\n },\n\n /**\n * Create a fuzzy scalar with a value and membership degree.\n *\n * @param value - The scalar value.\n * @param membership - The membership degree (0.0 to 1.0).\n * @returns A tagged `FuzzyScalarValue`.\n *\n * @remarks\n * Serialization format: Tagged (ValueDto). Use with term CRUD, queries, fuzzy operations.\n * Do NOT use with homoiconic inference endpoints.\n *\n * @example\n * ```typescript\n * Value.fuzzyScalar(0.5, 0.8) // {\"type\": \"FuzzyScalar\", \"value\": {\"value\": 0.5, \"membership\": 0.8}}\n * ```\n */\n fuzzyScalar(value: number, membership: number): FuzzyScalarValue {\n return { type: 'FuzzyScalar', value: { value, membership } };\n },\n\n /**\n * Create a fuzzy number defined by a membership function shape.\n *\n * @param shape - The fuzzy membership function shape (use {@link FuzzyShape} builders).\n * @returns A tagged `FuzzyNumberValue`.\n *\n * @remarks\n * Serialization format: Tagged (ValueDto). Use with term CRUD, queries, fuzzy operations.\n * Do NOT use with homoiconic inference endpoints.\n *\n * Note: The `FuzzyShapeDto` uses `\"kind\"` as its discriminator, NOT `\"type\"`.\n *\n * @example\n * ```typescript\n * Value.fuzzyNumber(FuzzyShape.triangular(20, 22, 24))\n * // {\"type\": \"FuzzyNumber\", \"value\": {\"shape\": {\"kind\": \"Triangular\", \"a\": 20, \"b\": 22, \"c\": 24}}}\n * ```\n */\n fuzzyNumber(shape: FuzzyShapeDto): FuzzyNumberValue {\n return { type: 'FuzzyNumber', value: { shape } };\n },\n\n /**\n * Create a set value with lower and upper bounds and an optional sort constraint.\n *\n * @param lower - Lower bound — definite members (term UUIDs).\n * @param upper - Upper bound — possible members (term UUIDs).\n * @param sortConstraint - Optional sort constraint for set members.\n * @returns A tagged `SetValue`.\n *\n * @remarks\n * Serialization format: Tagged (ValueDto). Use with term CRUD, queries, fuzzy operations.\n * Do NOT use with homoiconic inference endpoints.\n *\n * Represents partial information about set membership using Smyth powerdomain semantics.\n *\n * @example\n * ```typescript\n * Value.set([\"uuid1\"], [\"uuid1\", \"uuid2\", \"uuid3\"], \"person_sort_id\")\n * ```\n */\n set(lower: string[], upper: string[], sortConstraint?: string): SetValue {\n return {\n type: 'Set',\n value: {\n lower,\n upper,\n sort_constraint: sortConstraint ?? null,\n },\n };\n },\n} as const;\n\n/**\n * Builder namespace for fuzzy membership function shapes.\n *\n * Produces JSON using the `\"kind\"` discriminator (NOT `\"type\"`):\n * `{\"kind\": \"Triangular\", \"a\": 20, \"b\": 22, \"c\": 24}`.\n *\n * @remarks\n * **Discriminator field is `\"kind\"`, NOT `\"type\"`.**\n * This differs from most other tagged unions in the API which use `\"type\"`.\n *\n * @example\n * ```typescript\n * import { FuzzyShape, Value } from '@kortexya/reasoninglayer';\n *\n * const shape = FuzzyShape.triangular(20, 22, 24);\n * const fuzzyAge = Value.fuzzyNumber(shape);\n * ```\n */\nexport const FuzzyShape = {\n /**\n * Create a triangular fuzzy membership function.\n *\n * @param a - Left foot (membership = 0).\n * @param b - Peak (membership = 1).\n * @param c - Right foot (membership = 0).\n * @returns A `TriangularShape`: `{\"kind\": \"Triangular\", \"a\": 20, \"b\": 22, \"c\": 24}`.\n *\n * @remarks\n * Serialization format: Tagged by `\"kind\"` (FuzzyShapeDto).\n * The discriminator field is `\"kind\"`, NOT `\"type\"`.\n *\n * @example\n * ```typescript\n * FuzzyShape.triangular(20, 22, 24)\n * // {\"kind\": \"Triangular\", \"a\": 20, \"b\": 22, \"c\": 24}\n * ```\n */\n triangular(a: number, b: number, c: number): TriangularShape {\n return { kind: 'Triangular', a, b, c };\n },\n\n /**\n * Create a trapezoidal fuzzy membership function.\n *\n * @param a - Left foot (membership starts rising from 0).\n * @param b - Left shoulder (membership reaches 1).\n * @param c - Right shoulder (membership starts falling from 1).\n * @param d - Right foot (membership returns to 0).\n * @returns A `TrapezoidalShape`: `{\"kind\": \"Trapezoidal\", \"a\": 18, \"b\": 20, \"c\": 24, \"d\": 26}`.\n *\n * @remarks\n * Serialization format: Tagged by `\"kind\"` (FuzzyShapeDto).\n * The discriminator field is `\"kind\"`, NOT `\"type\"`.\n *\n * @example\n * ```typescript\n * FuzzyShape.trapezoidal(18, 20, 24, 26)\n * // {\"kind\": \"Trapezoidal\", \"a\": 18, \"b\": 20, \"c\": 24, \"d\": 26}\n * ```\n */\n trapezoidal(a: number, b: number, c: number, d: number): TrapezoidalShape {\n return { kind: 'Trapezoidal', a, b, c, d };\n },\n\n /**\n * Create a Gaussian fuzzy membership function.\n *\n * @param mean - Center of the Gaussian curve (membership = 1).\n * @param stdDev - Standard deviation controlling width.\n * @returns A `GaussianShape`: `{\"kind\": \"Gaussian\", \"mean\": 100, \"std_dev\": 15}`.\n *\n * @remarks\n * Serialization format: Tagged by `\"kind\"` (FuzzyShapeDto).\n * The discriminator field is `\"kind\"`, NOT `\"type\"`.\n *\n * @example\n * ```typescript\n * FuzzyShape.gaussian(100, 15)\n * // {\"kind\": \"Gaussian\", \"mean\": 100, \"std_dev\": 15}\n * ```\n */\n gaussian(mean: number, stdDev: number): GaussianShape {\n return { kind: 'Gaussian', mean, std_dev: stdDev };\n },\n\n /**\n * Create a cyclic Gaussian fuzzy membership function with periodic wrapping.\n *\n * @param mean - Center of the Gaussian curve.\n * @param stdDev - Standard deviation controlling width.\n * @param period - Period of the cyclic wrapping (e.g., 360 for degrees).\n * @returns A `CyclicGaussianShape`: `{\"kind\": \"CyclicGaussian\", \"mean\": 180, \"std_dev\": 30, \"period\": 360}`.\n *\n * @remarks\n * Serialization format: Tagged by `\"kind\"` (FuzzyShapeDto).\n * The discriminator field is `\"kind\"`, NOT `\"type\"`.\n *\n * @example\n * ```typescript\n * FuzzyShape.cyclicGaussian(180, 30, 360)\n * // {\"kind\": \"CyclicGaussian\", \"mean\": 180, \"std_dev\": 30, \"period\": 360}\n * ```\n */\n cyclicGaussian(mean: number, stdDev: number, period: number): CyclicGaussianShape {\n return { kind: 'CyclicGaussian', mean, std_dev: stdDev, period };\n },\n} as const;\n","import type {\n FeatureInputValueDto,\n FeatureInputTermRef,\n FeatureInputConstrainedVariable,\n FeatureInputVariable,\n FeatureInputInlineTerm,\n FeatureInputInlineTermByName,\n TermInputDto,\n} from '../types/index.js';\n\n/**\n * Builder namespace for untagged `FeatureInputValueDto` values.\n *\n * Produces raw JSON primitives and structural objects for homoiconic inference endpoints:\n * `\"hello\"`, `42`, `true`, `null`, `{term_id: \"uuid\"}`, etc.\n *\n * @remarks\n * **Serialization format: Untagged (`FeatureInputValueDto`).**\n *\n * Use with homoiconic inference endpoints (backward/forward chaining, fuzzy proving, etc.).\n * Do NOT use with term CRUD or query endpoints — use {@link Value} builders instead.\n *\n * @example\n * ```typescript\n * import { FeatureInput, TermInput } from '@kortexya/reasoninglayer';\n *\n * const features = {\n * name: FeatureInput.string(\"Alice\"),\n * age: FeatureInput.integer(30),\n * supervisor: FeatureInput.ref(supervisorId),\n * };\n * const term = TermInput.byName(\"person\", features);\n * ```\n */\nexport const FeatureInput = {\n /**\n * Create an untagged string value.\n *\n * @param s - The string value.\n * @returns The raw string: `\"hello\"`.\n *\n * @remarks\n * Serialization format: Untagged (FeatureInputValueDto). Use with homoiconic inference endpoints.\n * Do NOT use with term CRUD endpoints.\n *\n * @example\n * ```typescript\n * FeatureInput.string(\"Alice\") // \"Alice\"\n * ```\n */\n string(s: string): FeatureInputValueDto {\n return s;\n },\n\n /**\n * Create an untagged integer value.\n *\n * @param n - The integer value.\n * @returns The raw number: `42`.\n *\n * @remarks\n * Serialization format: Untagged (FeatureInputValueDto). Use with homoiconic inference endpoints.\n * Do NOT use with term CRUD endpoints.\n *\n * The backend distinguishes integers from reals. Use `FeatureInput.real()` for floating-point.\n *\n * @example\n * ```typescript\n * FeatureInput.integer(42) // 42\n * ```\n */\n integer(n: number): FeatureInputValueDto {\n return n;\n },\n\n /**\n * Create an untagged real (floating-point) value.\n *\n * @param n - The real value.\n * @returns The raw number: `3.14`.\n *\n * @remarks\n * Serialization format: Untagged (FeatureInputValueDto). Use with homoiconic inference endpoints.\n * Do NOT use with term CRUD endpoints.\n *\n * The backend distinguishes integers from reals. Use `FeatureInput.integer()` for whole numbers.\n *\n * @example\n * ```typescript\n * FeatureInput.real(3.14) // 3.14\n * ```\n */\n real(n: number): FeatureInputValueDto {\n return n;\n },\n\n /**\n * Create an untagged boolean value.\n *\n * @param b - The boolean value.\n * @returns The raw boolean: `true` or `false`.\n *\n * @remarks\n * Serialization format: Untagged (FeatureInputValueDto). Use with homoiconic inference endpoints.\n * Do NOT use with term CRUD endpoints.\n *\n * @example\n * ```typescript\n * FeatureInput.boolean(true) // true\n * ```\n */\n boolean(b: boolean): FeatureInputValueDto {\n return b;\n },\n\n /**\n * Create an untagged null value representing an uninstantiated feature.\n *\n * @returns `null`.\n *\n * @remarks\n * Serialization format: Untagged (FeatureInputValueDto). Use with homoiconic inference endpoints.\n * Do NOT use with term CRUD endpoints.\n *\n * Equivalent to `Value.uninstantiated()` in the tagged format.\n *\n * @example\n * ```typescript\n * FeatureInput.uninstantiated() // null\n * ```\n */\n uninstantiated(): null {\n return null;\n },\n\n /**\n * Create a reference to an existing term by UUID.\n *\n * @param termId - The UUID of the referenced term.\n * @returns An object: `{term_id: \"uuid\"}`.\n *\n * @remarks\n * Serialization format: Untagged (FeatureInputValueDto). Use with homoiconic inference endpoints.\n * Do NOT use with term CRUD endpoints.\n *\n * @example\n * ```typescript\n * FeatureInput.ref(\"550e8400-e29b-41d4-a716-446655440000\")\n * // {term_id: \"550e8400-e29b-41d4-a716-446655440000\"}\n * ```\n */\n ref(termId: string): FeatureInputTermRef {\n return { term_id: termId };\n },\n\n /**\n * Create an unconstrained variable.\n *\n * @param name - Variable name (conventionally prefixed with `?`, e.g., `\"?X\"`).\n * @returns An object: `{name: \"?X\"}`.\n *\n * @remarks\n * Serialization format: Untagged (FeatureInputValueDto). Use with homoiconic inference endpoints.\n * Do NOT use with term CRUD endpoints.\n *\n * For constrained variables, use {@link FeatureInput.constrainedVar} instead.\n *\n * @example\n * ```typescript\n * FeatureInput.variable(\"?X\") // {name: \"?X\"}\n * ```\n */\n variable(name: string): FeatureInputVariable {\n return { name };\n },\n\n /**\n * Create a constrained variable with a constraint as a `TermInputDto`.\n *\n * @param name - Variable name (conventionally prefixed with `?`, e.g., `\"?Salary\"`).\n * @param constraint - The constraint as a `TermInputDto` (typically a guard sort).\n * @returns An object: `{name: \"?Salary\", constraint: {...}}`.\n *\n * @remarks\n * Serialization format: Untagged (FeatureInputValueDto). Use with homoiconic inference endpoints.\n * Do NOT use with term CRUD endpoints.\n *\n * The most common constraint is a guard, which can be created with the `guard()` builder:\n * ```typescript\n * FeatureInput.constrainedVar(\"?Salary\", guard(\"gt\", 100))\n * ```\n *\n * **Critical ordering note**: `ConstrainedVariable` (with `name` + `constraint`) must serialize\n * before `Variable` (with only `name`) in the Rust `serde(untagged)` deserialization order.\n * The builder ensures the `constraint` field is always present.\n *\n * @example\n * ```typescript\n * FeatureInput.constrainedVar(\"?Salary\", guard(\"gt\", 100))\n * // {name: \"?Salary\", constraint: {sort_name: \"guard\", features: {op: \"gt\", right: 100}}}\n * ```\n */\n constrainedVar(name: string, constraint: TermInputDto): FeatureInputConstrainedVariable {\n return { name, constraint };\n },\n\n /**\n * Create an inline term by sort UUID in a feature value position.\n *\n * @param sortId - The sort UUID.\n * @param features - Optional features for the inline term.\n * @returns An object: `{sort_id: \"uuid\", features: {...}}`.\n *\n * @remarks\n * Serialization format: Untagged (FeatureInputValueDto). Use with homoiconic inference endpoints.\n * Do NOT use with term CRUD endpoints.\n *\n * @example\n * ```typescript\n * FeatureInput.inlineTerm(\"sort-uuid\", { name: FeatureInput.string(\"Alice\") })\n * ```\n */\n inlineTerm(\n sortId: string,\n features?: Record<string, FeatureInputValueDto>,\n ): FeatureInputInlineTerm {\n return features !== undefined ? { sort_id: sortId, features } : { sort_id: sortId };\n },\n\n /**\n * Create an inline term by sort name in a feature value position.\n *\n * @param sortName - The sort name (resolved server-side).\n * @param features - Optional features for the inline term.\n * @returns An object: `{sort_name: \"person\", features: {...}}`.\n *\n * @remarks\n * Serialization format: Untagged (FeatureInputValueDto). Use with homoiconic inference endpoints.\n * Do NOT use with term CRUD endpoints.\n *\n * @example\n * ```typescript\n * FeatureInput.inlineTermByName(\"person\", { name: FeatureInput.string(\"Alice\") })\n * ```\n */\n inlineTermByName(\n sortName: string,\n features?: Record<string, FeatureInputValueDto>,\n ): FeatureInputInlineTermByName {\n return features !== undefined ? { sort_name: sortName, features } : { sort_name: sortName };\n },\n\n /**\n * Create a list of feature input values.\n *\n * @param items - The list items as `FeatureInputValueDto` values.\n * @returns A raw JSON array: `[...]`.\n *\n * @remarks\n * Serialization format: Untagged (FeatureInputValueDto). Use with homoiconic inference endpoints.\n * Do NOT use with term CRUD endpoints.\n *\n * @example\n * ```typescript\n * FeatureInput.list([FeatureInput.string(\"a\"), FeatureInput.string(\"b\")])\n * // [\"a\", \"b\"]\n * ```\n */\n list(items: FeatureInputValueDto[]): FeatureInputValueDto[] {\n return items;\n },\n} as const;\n","import type {\n TermInputRef,\n TermInputInline,\n TermInputInlineByName,\n FeatureInputValueDto,\n} from '../types/index.js';\n\n/**\n * Builder namespace for `TermInputDto` values.\n *\n * Produces structural (untagged) term input objects used as top-level goals,\n * rule heads/bodies, and fact inputs in inference requests.\n *\n * @remarks\n * **Serialization format: Untagged (`TermInputDto`).**\n *\n * Use as top-level goal or rule head/body in inference requests.\n * The backend tries each variant in order: Reference, Inline (by sort ID), InlineByName.\n *\n * @example\n * ```typescript\n * import { TermInput, FeatureInput } from '@kortexya/reasoninglayer';\n *\n * // Reference an existing term\n * const ref = TermInput.ref(\"550e8400-e29b-41d4-a716-446655440000\");\n *\n * // Inline by sort name\n * const person = TermInput.byName(\"person\", {\n * name: FeatureInput.string(\"Alice\"),\n * age: FeatureInput.integer(30),\n * });\n * ```\n */\nexport const TermInput = {\n /**\n * Reference an existing term by UUID.\n *\n * @param termId - The UUID of the existing term.\n * @returns A reference input: `{term_id: \"uuid\"}`.\n *\n * @remarks\n * Serialization format: Untagged (TermInputDto). Use as top-level goal or rule head/body\n * in inference requests.\n *\n * @example\n * ```typescript\n * TermInput.ref(\"550e8400-e29b-41d4-a716-446655440000\")\n * // {term_id: \"550e8400-e29b-41d4-a716-446655440000\"}\n * ```\n */\n ref(termId: string): TermInputRef {\n return { term_id: termId };\n },\n\n /**\n * Define a term inline using a sort UUID and features.\n *\n * @param sortId - The sort UUID.\n * @param features - Feature map with `FeatureInputValueDto` values.\n * @returns An inline input: `{sort_id: \"uuid\", features: {...}}`.\n *\n * @remarks\n * Serialization format: Untagged (TermInputDto). Use as top-level goal or rule head/body\n * in inference requests.\n *\n * The `features` field is required for the sort_id variant per the backend schema.\n *\n * @example\n * ```typescript\n * TermInput.byId(\"sort-uuid\", {\n * name: FeatureInput.string(\"Alice\"),\n * })\n * ```\n */\n byId(sortId: string, features: Record<string, FeatureInputValueDto>): TermInputInline {\n return { sort_id: sortId, features };\n },\n\n /**\n * Define a term inline using a sort name and optional features.\n *\n * @param sortName - The sort name (resolved server-side to a sort UUID).\n * @param features - Optional feature map with `FeatureInputValueDto` values.\n * @returns An inline input: `{sort_name: \"person\", features: {...}}`.\n *\n * @remarks\n * Serialization format: Untagged (TermInputDto). Use as top-level goal or rule head/body\n * in inference requests.\n *\n * Sort name resolution happens server-side. The name must match an existing sort\n * in the tenant's sort hierarchy.\n *\n * @example\n * ```typescript\n * TermInput.byName(\"person\", {\n * name: FeatureInput.string(\"Alice\"),\n * age: FeatureInput.integer(30),\n * })\n * // {sort_name: \"person\", features: {name: \"Alice\", age: 30}}\n * ```\n */\n byName(\n sortName: string,\n features?: Record<string, FeatureInputValueDto>,\n ): TermInputInlineByName {\n return features !== undefined ? { sort_name: sortName, features } : { sort_name: sortName };\n },\n} as const;\n","import type { TermInputDto } from '../types/index.js';\nimport type { GuardOp } from '../types/inference.js';\n\n/**\n * Create a guard constraint as a `TermInputDto`.\n *\n * Produces a `TermInputDto` representing a guard sort with `op` and `right` features.\n * This is a shorthand for the most common constrained variable pattern.\n *\n * @param op - The guard comparison operator.\n * @param right - The right-hand value to compare against.\n * @returns A `TermInputDto` for the guard sort.\n *\n * @remarks\n * Serialization format: Untagged (TermInputDto). Used as the `constraint` argument\n * to `FeatureInput.constrainedVar()`.\n *\n * This function constructs object literals directly matching the `TermInputDto` and\n * `FeatureInputValueDto` shapes. It does NOT import from other builder files.\n *\n * The produced JSON matches:\n * ```json\n * {\"sort_name\": \"guard\", \"features\": {\"op\": \"gt\", \"right\": 100}}\n * ```\n *\n * @example\n * ```typescript\n * import { FeatureInput, guard } from '@kortexya/reasoninglayer';\n *\n * // Shorthand:\n * const salary = FeatureInput.constrainedVar(\"?Salary\", guard(\"gt\", 100));\n *\n * // Equivalent to:\n * const salaryExplicit = FeatureInput.constrainedVar(\"?Salary\",\n * { sort_name: \"guard\", features: { op: \"gt\", right: 100 } }\n * );\n * ```\n */\nexport function guard(op: GuardOp, right: number | string | boolean): TermInputDto {\n return {\n sort_name: 'guard',\n features: { op, right },\n };\n}\n","import type {\n CreateSortRequest,\n FeatureDescriptorDto,\n BoundConstraintDto,\n} from '../types/index.js';\n\n/**\n * Fluent builder for constructing {@link CreateSortRequest} objects.\n *\n * @remarks\n * The builder accumulates sort properties through a fluent chain and produces\n * a `CreateSortRequest` when `.build()` is called.\n *\n * @example\n * ```typescript\n * import { SortBuilder } from '@kortexya/reasoninglayer';\n *\n * const request = SortBuilder.create(\"employee\")\n * .withId(\"550e8400-e29b-41d4-a716-446655440000\")\n * .parent(personSortId)\n * .feature({\n * name: \"salary\",\n * required: true,\n * constraint: { type: \"IntegerRange\", value: { min: 0, max: 10000000 } },\n * })\n * .feature({ name: \"department\", required: true })\n * .boundConstraint({\n * constraint_type: \"upper\",\n * target: \"end_date\",\n * source_path: \"company.dissolution_date\",\n * })\n * .description(\"An employee at a company\")\n * .build();\n * ```\n */\nexport class SortBuilder {\n private readonly _name: string;\n private _id: string | null = null;\n private readonly _parents: string[] = [];\n private readonly _features: FeatureDescriptorDto[] = [];\n private readonly _boundConstraints: BoundConstraintDto[] = [];\n private _description: string | null = null;\n\n private constructor(name: string) {\n this._name = name;\n }\n\n /**\n * Start building a new sort with the given name.\n *\n * @param name - The sort name.\n * @returns A new `SortBuilder` instance.\n *\n * @example\n * ```typescript\n * const builder = SortBuilder.create(\"employee\");\n * ```\n */\n static create(name: string): SortBuilder {\n return new SortBuilder(name);\n }\n\n /**\n * Set a deterministic UUID for the sort.\n *\n * @param id - The UUID to use.\n * @returns This builder instance for chaining.\n *\n * @remarks\n * If not set, the server generates a UUID automatically.\n * Deterministic UUIDs are useful for homoiconic cross-references between sorts, rules, and facts.\n *\n * @example\n * ```typescript\n * builder.withId(\"550e8400-e29b-41d4-a716-446655440000\")\n * ```\n */\n withId(id: string): this {\n this._id = id;\n return this;\n }\n\n /**\n * Add a parent sort by UUID.\n *\n * @param parentId - The UUID of the parent sort.\n * @returns This builder instance for chaining.\n *\n * @remarks\n * Can be called multiple times to add multiple parents (multiple inheritance).\n * Uses sort UUIDs. For name-based parents, use {@link BulkSortDefinition} via bulk creation.\n *\n * @example\n * ```typescript\n * builder.parent(personSortId).parent(organizationMemberSortId)\n * ```\n */\n parent(parentId: string): this {\n this._parents.push(parentId);\n return this;\n }\n\n /**\n * Add multiple parent sorts by UUID.\n *\n * @param parentIds - The UUIDs of the parent sorts.\n * @returns This builder instance for chaining.\n *\n * @example\n * ```typescript\n * builder.parents([personSortId, organizationMemberSortId])\n * ```\n */\n parents(parentIds: string[]): this {\n this._parents.push(...parentIds);\n return this;\n }\n\n /**\n * Add a feature descriptor to the sort.\n *\n * @param descriptor - The feature descriptor defining name, type, constraints, etc.\n * @returns This builder instance for chaining.\n *\n * @example\n * ```typescript\n * builder.feature({\n * name: \"salary\",\n * required: true,\n * constraint: { type: \"IntegerRange\", value: { min: 0, max: 10000000 } },\n * })\n * ```\n */\n feature(descriptor: FeatureDescriptorDto): this {\n this._features.push(descriptor);\n return this;\n }\n\n /**\n * Add an inter-feature bound constraint.\n *\n * @param constraint - The bound constraint definition.\n * @returns This builder instance for chaining.\n *\n * @example\n * ```typescript\n * builder.boundConstraint({\n * constraint_type: \"upper\",\n * target: \"end_date\",\n * source_path: \"company.dissolution_date\",\n * })\n * ```\n */\n boundConstraint(constraint: BoundConstraintDto): this {\n this._boundConstraints.push(constraint);\n return this;\n }\n\n /**\n * Set a human-readable description for the sort.\n *\n * @param desc - The description text.\n * @returns This builder instance for chaining.\n *\n * @example\n * ```typescript\n * builder.description(\"An employee at a company\")\n * ```\n */\n description(desc: string): this {\n this._description = desc;\n return this;\n }\n\n /**\n * Build the final `CreateSortRequest`.\n *\n * @returns The constructed `CreateSortRequest` ready to send to the API.\n *\n * @example\n * ```typescript\n * const request = SortBuilder.create(\"employee\")\n * .parent(personSortId)\n * .feature({ name: \"salary\", required: true })\n * .build();\n *\n * await client.sorts.createSort(request);\n * ```\n */\n build(): CreateSortRequest {\n const request: CreateSortRequest = {\n name: this._name,\n };\n\n if (this._id !== null) {\n request.id = this._id;\n }\n\n if (this._parents.length > 0) {\n request.parents = this._parents;\n }\n\n if (this._features.length > 0) {\n request.features = this._features;\n }\n\n if (this._boundConstraints.length > 0) {\n request.bound_constraints = this._boundConstraints;\n }\n\n if (this._description !== null) {\n request.description = this._description;\n }\n\n return request;\n }\n}\n","import type { TermInputDto } from '../types/index.js';\nimport type { FeatureInputValueDto } from '../types/homoiconic.js';\nimport { ValidationError } from '../errors.js';\n\n/** Type guard that narrows `unknown` to an indexable plain object. */\nfunction isPlainObject(v: unknown): v is Record<string, unknown> {\n return typeof v === 'object' && v !== null && !Array.isArray(v);\n}\n\n/**\n * Coerce the `features` property of an object to a `FeatureInputValueDto` record.\n *\n * @param obj - The parent object whose `features` property to coerce.\n * @returns Coerced features record, or `undefined` if `features` is absent or not an object.\n */\nfunction coerceObjectFeatures(\n obj: Record<string, unknown>,\n): Record<string, FeatureInputValueDto> | undefined {\n const rawFeatures = obj.features;\n if (!isPlainObject(rawFeatures)) {\n return undefined;\n }\n const coerced: Record<string, FeatureInputValueDto> = {};\n for (const [k, v] of Object.entries(rawFeatures)) {\n coerced[k] = coerceFeatureValue(v);\n }\n return coerced;\n}\n\n/**\n * Auto-coerce a raw JavaScript value to a `FeatureInputValueDto`.\n *\n * @remarks\n * Applies the following coercion rules:\n * - `string` -> raw string\n * - `number` -> raw number (integer or float, backend distinguishes)\n * - `boolean` -> raw boolean\n * - `object with term_id` -> `{ term_id }` (term reference)\n * - `object with sort_name` -> `{ sort_name, features }` (inline by name, recursive)\n * - `object with sort_id` -> `{ sort_id, features }` (inline by ID, recursive)\n * - `object with name + constraint` -> `{ name, constraint }` (constrained variable)\n * - `object with name` -> `{ name }` (variable)\n * - `array` -> recurse each element\n * - `null` -> throws `ValidationError`\n *\n * @param value - The raw JavaScript value to coerce.\n * @returns The coerced `FeatureInputValueDto`.\n * @throws {ValidationError} If the value is `null`.\n */\nfunction coerceFeatureValue(value: unknown): FeatureInputValueDto {\n if (value === null) {\n throw new ValidationError('null is not a valid feature value in psi() shorthand. Use FeatureInput.uninstantiated() for null values.');\n }\n\n if (typeof value === 'string') {\n return value;\n }\n\n if (typeof value === 'number') {\n return value;\n }\n\n if (typeof value === 'boolean') {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map(coerceFeatureValue);\n }\n\n if (isPlainObject(value)) {\n // Term reference: { term_id: \"uuid\" }\n if ('term_id' in value && typeof value.term_id === 'string') {\n return { term_id: value.term_id };\n }\n\n // Constrained variable: { name: \"?X\", constraint: {...} }\n // Must be checked BEFORE variable (ConstrainedVariable > Variable ordering)\n if ('name' in value && typeof value.name === 'string' && 'constraint' in value) {\n // Accepted: constraint shape is validated server-side; full runtime validation is out of scope\n return { name: value.name, constraint: value.constraint as TermInputDto };\n }\n\n // Variable: { name: \"?X\" }\n if ('name' in value && typeof value.name === 'string') {\n return { name: value.name };\n }\n\n // Inline term by sort_name: { sort_name: \"person\", features: {...} }\n if ('sort_name' in value && typeof value.sort_name === 'string') {\n const features = coerceObjectFeatures(value);\n if (features) {\n return { sort_name: value.sort_name, features };\n }\n return { sort_name: value.sort_name };\n }\n\n // Inline term by sort_id: { sort_id: \"uuid\", features: {...} }\n if ('sort_id' in value && typeof value.sort_id === 'string') {\n const features = coerceObjectFeatures(value);\n if (features) {\n return { sort_id: value.sort_id, features };\n }\n return { sort_id: value.sort_id };\n }\n }\n\n throw new ValidationError(`Cannot coerce value of type ${typeof value} to FeatureInputValueDto`);\n}\n\n/**\n * Shorthand builder for creating inline `TermInputDto` values by sort name.\n *\n * @param sortName - The sort name (resolved server-side).\n * @param features - Optional features map with auto-coercion from raw JavaScript values.\n * @returns A `TermInputDto` (InlineByName variant).\n *\n * @remarks\n * **Serialization format: Untagged (`TermInputDto`).**\n *\n * The `psi()` shorthand auto-coerces raw JavaScript values to `FeatureInputValueDto`:\n * - Strings, numbers, booleans are passed through as raw primitives\n * - Objects with `term_id` become term references\n * - Objects with `sort_name` or `sort_id` become nested inline terms (recursive)\n * - Objects with `name` + optional `constraint` become variables\n * - Arrays are recursed element-by-element\n * - `null` throws a `ValidationError` (use `FeatureInput.uninstantiated()` explicitly)\n *\n * @example\n * ```typescript\n * import { psi } from '@kortexya/reasoninglayer';\n *\n * // Simple term:\n * const term = psi(\"person\", { name: \"Alice\", age: 30 });\n * // { sort_name: \"person\", features: { name: \"Alice\", age: 30 } }\n *\n * // Nested term:\n * const employee = psi(\"employee\", {\n * person: { sort_name: \"person\", features: { name: \"Bob\" } },\n * salary: 100000,\n * });\n *\n * // With variable:\n * const query = psi(\"person\", { name: { name: \"?Name\" } });\n * ```\n *\n * @throws {ValidationError} If any feature value is `null`.\n */\nexport function psi(\n sortName: string,\n features?: Record<string, unknown>,\n): TermInputDto {\n if (!features) {\n return { sort_name: sortName };\n }\n\n const coerced: Record<string, FeatureInputValueDto> = {};\n for (const [key, value] of Object.entries(features)) {\n coerced[key] = coerceFeatureValue(value);\n }\n\n return { sort_name: sortName, features: coerced };\n}\n","import type { ConstraintInputDto, AllenRelation } from '../types/inference.js';\n\n/**\n * Create an Allen temporal constraint.\n *\n * @param relation - One of the 13 Allen interval relations.\n * @param intervalA - The first interval identifier (variable or feature path).\n * @param intervalBTermId - The term ID (UUID) containing the second interval.\n * @returns A `ConstraintInputDto` of type `Allen`.\n *\n * @remarks\n * **Serialization format: Tagged (`ConstraintInputDto`).**\n *\n * Produces the following JSON:\n * ```json\n * {\n * \"type\": \"Allen\",\n * \"interval_a\": \"start_time\",\n * \"interval_b_term_id\": \"uuid\",\n * \"relation\": \"before\"\n * }\n * ```\n *\n * The 13 Allen relations are: `before`, `after`, `meets`, `met_by`,\n * `overlaps`, `overlapped_by`, `during`, `contains`, `starts`,\n * `started_by`, `finishes`, `finished_by`, `equals`.\n *\n * @example\n * ```typescript\n * import { allen } from '@kortexya/reasoninglayer';\n *\n * // Event A must happen before Event B:\n * const constraint = allen(\"before\", \"event_a_time\", \"event-b-term-uuid\");\n *\n * // Meeting must overlap with work hours:\n * const overlap = allen(\"overlaps\", \"meeting_time\", \"work-hours-term-uuid\");\n * ```\n */\nexport function allen(\n relation: AllenRelation,\n intervalA: string,\n intervalBTermId: string,\n): ConstraintInputDto {\n return {\n type: 'Allen',\n interval_a: intervalA,\n interval_b_term_id: intervalBTermId,\n relation,\n };\n}\n","import type { FeatureValueDto } from '../types/index.js';\n\n/**\n * UUID v4 regex pattern for discriminating term references from plain strings.\n *\n * @remarks\n * This is a best-effort heuristic. The backend distinguishes UUID strings from\n * regular strings by format validation. Some edge cases may exist where a plain\n * string happens to match UUID format.\n */\nconst UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\n/**\n * Check if a string matches UUID v4 format.\n *\n * @param s - The string to check.\n * @returns `true` if the string matches UUID format.\n */\nexport function isUuid(s: string): boolean {\n return UUID_REGEX.test(s);\n}\n\n/**\n * Discriminate an unknown JSON value into a typed `FeatureValueDto`.\n *\n * Parses raw JSON values from homoiconic inference responses into the\n * `FeatureValueDto` type. This is needed because the untagged format\n * uses raw JSON primitives with no type discriminator.\n *\n * @param value - The raw JSON value to discriminate.\n * @returns The typed `FeatureValueDto` value.\n * @throws {Error} If the value cannot be discriminated into a valid `FeatureValueDto`.\n *\n * @remarks\n * **Ambiguity note**: UUID strings and regular strings are both `string` in TypeScript.\n * This function does NOT distinguish between them — both return as `string`.\n * Use {@link isUuid} separately if you need to determine whether a string value\n * is a term reference (UUID) or a plain string.\n *\n * The backend's Rust `#[serde(untagged)]` deserialization order is:\n * 1. TermRef (UUID string)\n * 2. TermRefs/List (array)\n * 3. String\n * 4. Integer (i64)\n * 5. Real (f64)\n * 6. Boolean\n * 7. Null (uninstantiated)\n *\n * Since JavaScript `number` does not distinguish i64 from f64, this function\n * uses `Number.isInteger()` as a heuristic. The caller can use this to decide\n * whether to treat a number as integer or real.\n *\n * @example\n * ```typescript\n * import { discriminateFeatureValue, isUuid } from '@kortexya/reasoninglayer';\n *\n * const val = discriminateFeatureValue(\"hello\"); // string\n * const num = discriminateFeatureValue(42); // number (integer)\n * const arr = discriminateFeatureValue([\"a\", \"b\"]); // string[]\n * const nil = discriminateFeatureValue(null); // null\n *\n * // To check if a string is a term reference:\n * if (typeof val === \"string\" && isUuid(val)) {\n * // It's a term reference UUID\n * }\n * ```\n */\nexport function discriminateFeatureValue(value: unknown): FeatureValueDto {\n if (value === null) {\n return null;\n }\n\n if (typeof value === 'boolean') {\n return value;\n }\n\n if (typeof value === 'number') {\n return value;\n }\n\n if (typeof value === 'string') {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map(discriminateFeatureValue);\n }\n\n throw new Error(\n `Cannot discriminate value into FeatureValueDto: ${typeof value} (${JSON.stringify(value)})`,\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/config.ts","../src/errors.ts","../src/http.ts","../src/websocket.ts","../src/resources/sorts.ts","../src/resources/terms.ts","../src/resources/inference.ts","../src/resources/query.ts","../src/resources/cognitive.ts","../src/resources/fuzzy.ts","../src/resources/constraints.ts","../src/resources/namespaces.ts","../src/resources/collections.ts","../src/resources/execution.ts","../src/resources/causal.ts","../src/resources/ingestion.ts","../src/resources/reviews.ts","../src/resources/visualization.ts","../src/resources/ilp.ts","../src/resources/reasoning.ts","../src/resources/statistical.ts","../src/resources/control.ts","../src/resources/spaces.ts","../src/resources/row.ts","../src/resources/sources.ts","../src/resources/communities.ts","../src/resources/utilities.ts","../src/resources/scenarios.ts","../src/resources/action-reviews.ts","../src/resources/discovery.ts","../src/resources/extract.ts","../src/resources/oversight.ts","../src/resources/cdl.ts","../src/resources/neuro-symbolic.ts","../src/resources/analysis.ts","../src/resources/preferences.ts","../src/client.ts","../src/builders/value.ts","../src/builders/feature-input.ts","../src/builders/term-input.ts","../src/builders/guard.ts","../src/builders/sort.ts","../src/builders/psi.ts","../src/builders/allen.ts","../src/utils/discrimination.ts"],"names":["BASE"],"mappings":"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","file":"index.js","sourcesContent":["import type { Interceptor } from './types/common.js';\n\n/**\n * SDK version — sent as `X-SDK-Version` header on every request.\n *\n * @remarks\n * This is the single source of truth for the version constant.\n * The `scripts/release.sh` script updates this value alongside `package.json`.\n */\nexport const SDK_VERSION = '0.1.6';\n\n/**\n * Configuration for the Reasoning Layer client.\n *\n * @remarks\n * Required fields: `baseUrl` and `tenantId`. All other fields have sensible defaults.\n * No environment variable auto-detection — configuration is always explicit.\n *\n * @example\n * ```typescript\n * const config: ClientConfig = {\n * baseUrl: 'http://localhost:8083',\n * tenantId: '550e8400-e29b-41d4-a716-446655440000',\n * timeoutMs: 15000,\n * maxRetries: 2,\n * };\n * ```\n */\nexport interface ClientConfig {\n /** Base URL of the Reasoning Layer API (e.g., `\"http://localhost:8083\"`). */\n baseUrl: string;\n /** Tenant UUID. Set once, NOT overridable per-call. */\n tenantId: string;\n /** Default user UUID for `X-User-Id` header. Overridable per-call via `RequestOptions`. */\n userId?: string;\n /** Default namespace UUID for `X-Namespace-Id` header. Overridable per-call via `RequestOptions`. */\n namespaceId?: string;\n /** Authenticated user identifier for `X-Authenticated-User` header. */\n authenticatedUser?: string;\n /** Default request timeout in milliseconds. Overridable per-call. Default: 30000. */\n timeoutMs?: number;\n /** Maximum number of retry attempts. Default: 3. */\n maxRetries?: number;\n /** Whether to retry on 503 (Service Unavailable). Default: false. */\n retryOn503?: boolean;\n /** User-provided interceptors inserted into the request pipeline. */\n interceptors?: Interceptor[];\n /**\n * Custom `fetch` implementation for dependency injection.\n * Useful for testing (inject a mock) or custom environments.\n * Default: `globalThis.fetch`.\n */\n fetch?: typeof globalThis.fetch;\n}\n\n/**\n * Fully resolved configuration with all defaults applied.\n *\n * Created by {@link resolveConfig} from a {@link ClientConfig}.\n * All fields are required (no optionals).\n */\nexport interface ResolvedConfig {\n /** Base URL of the Reasoning Layer API. Trailing slash is stripped. */\n baseUrl: string;\n /** Tenant UUID. */\n tenantId: string;\n /** Default user UUID, or undefined if not set. */\n userId: string | undefined;\n /** Default namespace UUID, or undefined if not set. */\n namespaceId: string | undefined;\n /** Authenticated user identifier, or undefined if not set. */\n authenticatedUser: string | undefined;\n /** Request timeout in milliseconds. */\n timeoutMs: number;\n /** Maximum number of retry attempts. */\n maxRetries: number;\n /** Whether to retry on 503 (Service Unavailable). */\n retryOn503: boolean;\n /** User-provided interceptors. */\n interceptors: Interceptor[];\n /** The `fetch` implementation to use. */\n fetch: typeof globalThis.fetch;\n}\n\n/**\n * Resolve a {@link ClientConfig} into a {@link ResolvedConfig} with all defaults applied.\n *\n * @param config - The user-provided configuration.\n * @returns The fully resolved configuration.\n * @throws {Error} If required fields are missing or invalid.\n *\n * @example\n * ```typescript\n * const resolved = resolveConfig({\n * baseUrl: 'http://localhost:8083',\n * tenantId: '550e8400-e29b-41d4-a716-446655440000',\n * });\n * // resolved.timeoutMs === 30000\n * // resolved.maxRetries === 3\n * ```\n */\nexport function resolveConfig(config: ClientConfig): ResolvedConfig {\n if (!config.baseUrl) {\n throw new Error('ClientConfig.baseUrl is required');\n }\n if (!config.tenantId) {\n throw new Error('ClientConfig.tenantId is required');\n }\n\n return {\n baseUrl: config.baseUrl.replace(/\\/+$/, ''),\n tenantId: config.tenantId,\n userId: config.userId,\n namespaceId: config.namespaceId,\n authenticatedUser: config.authenticatedUser,\n timeoutMs: config.timeoutMs ?? 30_000,\n maxRetries: config.maxRetries ?? 3,\n retryOn503: config.retryOn503 ?? false,\n interceptors: config.interceptors ?? [],\n fetch: config.fetch ?? globalThis.fetch,\n };\n}\n","/**\n * Base error class for all Reasoning Layer SDK errors.\n *\n * All errors thrown by the SDK extend this class, enabling catch-all handling:\n * ```typescript\n * try { ... } catch (e) {\n * if (e instanceof ReasoningLayerError) { ... }\n * }\n * ```\n */\nexport class ReasoningLayerError extends Error {\n override name: string = 'ReasoningLayerError';\n\n constructor(message: string, options?: { cause?: Error }) {\n super(message, options);\n }\n}\n\n/**\n * HTTP API error (4xx/5xx response from the backend).\n *\n * Carries the HTTP status code, parsed response body, and response headers.\n */\nexport class ApiError extends ReasoningLayerError {\n override name: string = 'ApiError';\n\n /** HTTP status code. */\n readonly status: number;\n /** Backend error code (from response body `error` field), if present. */\n readonly errorCode: string | undefined;\n /** Parsed response body. */\n readonly body: unknown;\n /** Response headers. */\n readonly headers: Headers;\n\n constructor(\n message: string,\n status: number,\n body: unknown,\n headers: Headers,\n errorCode?: string,\n ) {\n super(message);\n this.status = status;\n this.body = body;\n this.headers = headers;\n this.errorCode = errorCode;\n }\n}\n\n/**\n * Bad request error (HTTP 400).\n *\n * The request was malformed or contained invalid parameters.\n */\nexport class BadRequestError extends ApiError {\n override name: string = 'BadRequestError';\n\n constructor(message: string, body: unknown, headers: Headers, errorCode?: string) {\n super(message, 400, body, headers, errorCode);\n }\n}\n\n/**\n * Not found error (HTTP 404).\n *\n * The requested resource does not exist.\n */\nexport class NotFoundError extends ApiError {\n override name: string = 'NotFoundError';\n\n constructor(message: string, body: unknown, headers: Headers, errorCode?: string) {\n super(message, 404, body, headers, errorCode);\n }\n}\n\n/**\n * Constraint violation error (HTTP 409).\n *\n * A type constraint or uniqueness constraint was violated.\n * Carries structured information about which term, feature, and constraint failed.\n */\nexport class ConstraintViolationError extends ApiError {\n override name: string = 'ConstraintViolationError';\n\n /** Term ID that violated the constraint, if available. */\n readonly termId: string | undefined;\n /** Feature name that violated the constraint, if available. */\n readonly feature: string | undefined;\n /** Constraint description, if available. */\n readonly constraint: string | undefined;\n\n constructor(\n message: string,\n body: unknown,\n headers: Headers,\n errorCode?: string,\n termId?: string,\n feature?: string,\n constraint?: string,\n ) {\n super(message, 409, body, headers, errorCode);\n this.termId = termId;\n this.feature = feature;\n this.constraint = constraint;\n }\n}\n\n/**\n * Rate limit error (HTTP 429).\n *\n * The request was rate-limited. Carries rate limit metadata from response headers.\n */\nexport class RateLimitError extends ApiError {\n override name: string = 'RateLimitError';\n\n /** Seconds to wait before retrying, or null if not specified. */\n readonly retryAfter: number | null;\n /** Maximum requests allowed in the current window, or null if not specified. */\n readonly limit: number | null;\n /** Requests remaining in the current window, or null if not specified. */\n readonly remaining: number | null;\n\n constructor(\n message: string,\n body: unknown,\n headers: Headers,\n errorCode?: string,\n retryAfter?: number | null,\n limit?: number | null,\n remaining?: number | null,\n ) {\n super(message, 429, body, headers, errorCode);\n this.retryAfter = retryAfter ?? null;\n this.limit = limit ?? null;\n this.remaining = remaining ?? null;\n }\n}\n\n/**\n * Internal server error (HTTP 500+).\n *\n * An unexpected error occurred on the backend.\n */\nexport class InternalServerError extends ApiError {\n override name: string = 'InternalServerError';\n\n constructor(message: string, status: number, body: unknown, headers: Headers, errorCode?: string) {\n super(message, status, body, headers, errorCode);\n }\n}\n\n/**\n * Timeout error.\n *\n * The request exceeded the configured timeout duration.\n */\nexport class TimeoutError extends ReasoningLayerError {\n override name: string = 'TimeoutError';\n\n /** The timeout duration in milliseconds that was exceeded. */\n readonly timeoutMs: number;\n\n constructor(timeoutMs: number) {\n super(`Request timed out after ${timeoutMs}ms`);\n this.timeoutMs = timeoutMs;\n }\n}\n\n/**\n * Client-side validation error.\n *\n * Thrown before a request is sent when input fails client-side validation.\n */\nexport class ValidationError extends ReasoningLayerError {\n override name: string = 'ValidationError';\n\n /** The field that failed validation, if applicable. */\n readonly field: string | undefined;\n\n constructor(message: string, field?: string) {\n super(message);\n this.field = field;\n }\n}\n\n/**\n * Network error.\n *\n * Wraps `fetch` connection failures (DNS resolution, connection refused, etc.).\n */\nexport class NetworkError extends ReasoningLayerError {\n override name: string = 'NetworkError';\n\n constructor(message: string, cause?: Error) {\n super(message, { cause });\n }\n}\n\n/**\n * Parse a numeric header value, returning null if absent or not a valid number.\n */\nfunction parseNumericHeader(headers: Headers, name: string): number | null {\n const value = headers.get(name);\n if (value === null) return null;\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : null;\n}\n\n/**\n * Parse rate limit headers from a response.\n */\nfunction parseRateLimitHeaders(headers: Headers): {\n retryAfter: number | null;\n limit: number | null;\n remaining: number | null;\n} {\n return {\n retryAfter: parseNumericHeader(headers, 'retry-after'),\n limit: parseNumericHeader(headers, 'x-ratelimit-limit'),\n remaining: parseNumericHeader(headers, 'x-ratelimit-remaining'),\n };\n}\n\n/**\n * Factory function that creates the appropriate {@link ApiError} subclass for a given HTTP status.\n *\n * @param status - HTTP status code.\n * @param body - Parsed response body.\n * @param headers - Response headers.\n * @returns The appropriate error subclass instance.\n *\n * @remarks\n * Status code mapping:\n * - 400 → {@link BadRequestError}\n * - 404 → {@link NotFoundError}\n * - 409 → {@link ConstraintViolationError} (parses termId, feature, constraint from body)\n * - 429 → {@link RateLimitError} (parses rate limit headers)\n * - 500+ → {@link InternalServerError}\n * - Other 4xx → {@link ApiError}\n */\nexport function createApiError(status: number, body: unknown, headers: Headers): ApiError {\n const errorCode = isErrorBody(body) ? body.error : undefined;\n const message = isErrorBody(body) ? body.message : `HTTP ${status}`;\n\n switch (status) {\n case 400:\n return new BadRequestError(message, body, headers, errorCode);\n\n case 404:\n return new NotFoundError(message, body, headers, errorCode);\n\n case 409: {\n let termId: string | undefined;\n let feature: string | undefined;\n let constraint: string | undefined;\n\n if (isConstraintViolationBody(body)) {\n termId = body.details?.term_id;\n feature = body.details?.feature;\n constraint = body.details?.constraint;\n }\n\n return new ConstraintViolationError(\n message,\n body,\n headers,\n errorCode,\n termId,\n feature,\n constraint,\n );\n }\n\n case 429: {\n const rl = parseRateLimitHeaders(headers);\n return new RateLimitError(message, body, headers, errorCode, rl.retryAfter, rl.limit, rl.remaining);\n }\n\n default:\n if (status >= 500) {\n return new InternalServerError(message, status, body, headers, errorCode);\n }\n return new ApiError(message, status, body, headers, errorCode);\n }\n}\n\n/** Type guard for standard error response body shape. */\nfunction isErrorBody(body: unknown): body is { error: string; message: string } {\n if (typeof body !== 'object' || body === null) return false;\n // Accepted: TypeScript cannot narrow `object` to indexable without cast after typeof+null check\n const obj = body as Record<string, unknown>;\n return typeof obj.error === 'string' && typeof obj.message === 'string';\n}\n\n/** Type guard for constraint violation response body with details. */\nfunction isConstraintViolationBody(\n body: unknown,\n): body is { error: string; message: string; details?: { term_id?: string; feature?: string; constraint?: string } } {\n if (!isErrorBody(body)) return false;\n if (!('details' in body)) return false;\n // Accepted: need index access after in-check; TypeScript narrows to `object & Record<\"details\", unknown>` but not indexable\n const obj = body as Record<string, unknown>;\n return typeof obj.details === 'object' && obj.details !== null;\n}\n","import { SDK_VERSION } from './config.js';\nimport type { ResolvedConfig } from './config.js';\nimport type { ApiResponse, RateLimitInfo, RequestOptions, Interceptor } from './types/common.js';\nimport {\n TimeoutError,\n NetworkError,\n RateLimitError,\n createApiError,\n} from './errors.js';\n\n/** HTTP methods supported by the client. */\ntype HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n\n/** Options for an internal HTTP request. */\ninterface InternalRequestOptions {\n body?: unknown;\n options?: RequestOptions;\n}\n\n/**\n * HTTP client for the Reasoning Layer API.\n *\n * Handles authentication headers, timeout, retry logic, interceptors,\n * and error mapping. Used internally by resource clients.\n *\n * @remarks\n * Dependency rule: imports from `config.ts`, `errors.ts`, and `types/common.ts` only.\n * Does NOT import from `builders/` or `resources/`.\n */\nexport class HttpClient {\n private readonly config: ResolvedConfig;\n\n constructor(config: ResolvedConfig) {\n this.config = config;\n }\n\n /**\n * Send a GET request.\n *\n * @param path - API path (e.g., `/api/v1/sorts`).\n * @param options - Per-call request options.\n * @returns Parsed JSON response body.\n */\n async get<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>('GET', path, { options });\n }\n\n /**\n * Send a POST request.\n *\n * @param path - API path.\n * @param body - Request body (will be JSON-serialized).\n * @param options - Per-call request options.\n * @returns Parsed JSON response body.\n */\n async post<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>('POST', path, { body, options });\n }\n\n /**\n * Send a PUT request.\n *\n * @param path - API path.\n * @param body - Request body (will be JSON-serialized).\n * @param options - Per-call request options.\n * @returns Parsed JSON response body.\n */\n async put<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\n return this.request<T>('PUT', path, { body, options });\n }\n\n /**\n * Send a DELETE request.\n *\n * @param path - API path.\n * @param options - Per-call request options.\n * @returns Parsed JSON response body.\n */\n async delete<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>('DELETE', path, { options });\n }\n\n /**\n * Send a request and return the result wrapped in {@link ApiResponse} with metadata.\n *\n * @param method - HTTP method.\n * @param path - API path.\n * @param reqOptions - Internal request options.\n * @returns Response wrapped in `ApiResponse<T>`.\n */\n async requestWithMetadata<T>(\n method: HttpMethod,\n path: string,\n reqOptions?: InternalRequestOptions,\n ): Promise<ApiResponse<T>> {\n const { data, status, headers, rateLimit } = await this.executeRequest<T>(\n method,\n path,\n reqOptions,\n );\n return { data, status, headers, rateLimit };\n }\n\n /**\n * Core request method. Handles URL construction, auth headers, interceptors,\n * timeout, retry, and error mapping.\n */\n async request<T>(\n method: HttpMethod,\n path: string,\n reqOptions?: InternalRequestOptions,\n ): Promise<T> {\n const result = await this.executeRequest<T>(method, path, reqOptions);\n return result.data;\n }\n\n /**\n * Execute a request with full metadata tracking.\n */\n private async executeRequest<T>(\n method: HttpMethod,\n path: string,\n reqOptions?: InternalRequestOptions,\n ): Promise<{ data: T; status: number; headers: Headers; rateLimit: RateLimitInfo | null }> {\n const perCall = reqOptions?.options;\n const maxRetries = perCall?.retries ?? this.config.maxRetries;\n const timeoutMs = perCall?.timeoutMs ?? this.config.timeoutMs;\n\n const url = `${this.config.baseUrl}${path}`;\n\n const headers = new Headers({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'X-SDK-Version': SDK_VERSION,\n });\n\n // Auth headers — tenantId is ALWAYS from config, never overridden per-call\n headers.set('X-Tenant-Id', this.config.tenantId);\n\n // Per-call overridable headers\n const userId = perCall?.userId ?? this.config.userId;\n if (userId) {\n headers.set('X-User-Id', userId);\n }\n\n const namespaceId = perCall?.namespaceId ?? this.config.namespaceId;\n if (namespaceId) {\n headers.set('X-Namespace-Id', namespaceId);\n }\n\n if (this.config.authenticatedUser) {\n headers.set('X-Authenticated-User', this.config.authenticatedUser);\n }\n\n const requestInit: RequestInit = {\n method,\n headers,\n };\n\n if (reqOptions?.body !== undefined) {\n requestInit.body = JSON.stringify(reqOptions.body);\n }\n\n let lastError: Error | undefined;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n // Wait before retry (not on first attempt)\n if (attempt > 0 && lastError) {\n const delay = this.calculateRetryDelay(attempt, lastError);\n await sleep(delay);\n }\n\n try {\n const response = await this.executeSingleRequest(\n url,\n requestInit,\n timeoutMs,\n perCall?.signal,\n );\n\n const rateLimit = parseRateLimitInfo(response.headers);\n\n // Success\n if (response.ok) {\n // Handle 204 No Content\n if (response.status === 204) {\n return {\n // Accepted: 204 No Content has no body; caller must handle undefined for void endpoints\n data: undefined as T,\n status: response.status,\n headers: response.headers,\n rateLimit,\n };\n }\n\n // Accepted: generic HTTP response cannot be narrowed to T at compile time\n const data = (await response.json()) as T;\n return { data, status: response.status, headers: response.headers, rateLimit };\n }\n\n // Error — parse body and create appropriate error\n let body: unknown;\n try {\n body = await response.json();\n } catch {\n body = { error: 'unknown', message: `HTTP ${response.status}` };\n }\n\n const apiError = createApiError(response.status, body, response.headers);\n\n // Retry on 429 (always) or 503 (if configured)\n if (response.status === 429 && attempt < maxRetries) {\n lastError = apiError;\n continue;\n }\n if (response.status === 503 && this.config.retryOn503 && attempt < maxRetries) {\n lastError = apiError;\n continue;\n }\n\n throw apiError;\n } catch (error) {\n // Re-throw SDK errors that should not be retried\n if (error instanceof TimeoutError) throw error;\n if (error instanceof RateLimitError && attempt >= maxRetries) throw error;\n\n // If it's an API error and not retryable, re-throw\n if (isApiErrorLike(error) && !isRetryableStatus(error, this.config.retryOn503)) {\n throw error;\n }\n\n // Network errors — could retry\n if (isNetworkFailure(error)) {\n lastError = error instanceof NetworkError ? error : new NetworkError(\n error instanceof Error ? error.message : 'Network request failed',\n error instanceof Error ? error : undefined,\n );\n if (attempt >= maxRetries) throw lastError;\n continue;\n }\n\n // Unknown error — re-throw\n throw error;\n }\n }\n\n // Should not reach here, but if we do, throw the last error\n throw lastError ?? new NetworkError('Request failed after retries');\n }\n\n /**\n * Execute a single fetch call with timeout and interceptor chain.\n */\n private async executeSingleRequest(\n url: string,\n init: RequestInit,\n timeoutMs: number,\n userSignal?: AbortSignal,\n ): Promise<Response> {\n const timeoutController = new AbortController();\n const timeoutId = setTimeout(() => timeoutController.abort(), timeoutMs);\n\n // Combine user signal with timeout signal\n let combinedSignal: AbortSignal;\n if (userSignal) {\n combinedSignal = AbortSignal.any([timeoutController.signal, userSignal]);\n } else {\n combinedSignal = timeoutController.signal;\n }\n\n const request = new Request(url, {\n ...init,\n signal: combinedSignal,\n });\n\n try {\n // Apply interceptors\n const fetchFn = this.config.fetch;\n const baseFetch = (req: Request): Promise<Response> => fetchFn(req);\n const chain = this.buildInterceptorChain(this.config.interceptors, baseFetch);\n\n const response = await chain(request);\n return response;\n } catch (error) {\n if (isAbortError(error)) {\n // Determine if it was our timeout or the user's signal\n if (timeoutController.signal.aborted) {\n throw new TimeoutError(timeoutMs);\n }\n // User-provided signal was aborted — re-throw as-is\n throw error;\n }\n\n // Network failure\n throw new NetworkError(\n error instanceof Error ? error.message : 'Network request failed',\n error instanceof Error ? error : undefined,\n );\n } finally {\n clearTimeout(timeoutId);\n }\n }\n\n /**\n * Build the interceptor chain, composing user interceptors with the base fetch.\n */\n private buildInterceptorChain(\n interceptors: Interceptor[],\n baseFetch: (req: Request) => Promise<Response>,\n ): (req: Request) => Promise<Response> {\n // Chain interceptors in order: first interceptor wraps second, which wraps third, etc.\n let chain = baseFetch;\n for (let i = interceptors.length - 1; i >= 0; i--) {\n const interceptor = interceptors[i];\n const next = chain;\n chain = (req: Request) => interceptor(req, next);\n }\n return chain;\n }\n\n /**\n * Calculate retry delay with exponential backoff and jitter.\n *\n * If the last error was a RateLimitError with a Retry-After value, use that instead.\n */\n private calculateRetryDelay(attempt: number, lastError: Error): number {\n // Respect Retry-After header from rate limit responses\n if (lastError instanceof RateLimitError && lastError.retryAfter !== null) {\n return lastError.retryAfter * 1000; // Convert seconds to ms\n }\n\n // Exponential backoff: 1s * 2^(attempt-1) + jitter\n const baseDelay = 1000;\n const maxDelay = 30_000;\n const exponentialDelay = baseDelay * Math.pow(2, attempt - 1);\n const jitter = Math.random() * 1000;\n return Math.min(exponentialDelay + jitter, maxDelay);\n }\n}\n\n/** Parse rate limit information from response headers. */\nfunction parseRateLimitInfo(headers: Headers): RateLimitInfo | null {\n const limitStr = headers.get('x-ratelimit-limit');\n const remainingStr = headers.get('x-ratelimit-remaining');\n const retryAfterStr = headers.get('retry-after');\n\n // Only return rate limit info if at least one header is present\n if (limitStr === null && remainingStr === null && retryAfterStr === null) {\n return null;\n }\n\n const limit = limitStr !== null ? Number(limitStr) : 0;\n const remaining = remainingStr !== null ? Number(remainingStr) : 0;\n const retryAfter = retryAfterStr !== null ? Number(retryAfterStr) : null;\n\n return {\n limit: Number.isFinite(limit) ? limit : 0,\n remaining: Number.isFinite(remaining) ? remaining : 0,\n retryAfter: retryAfter !== null && Number.isFinite(retryAfter) ? retryAfter : null,\n };\n}\n\n/** Check if an error is an AbortError (from AbortController). */\nfunction isAbortError(error: unknown): boolean {\n return error instanceof DOMException && error.name === 'AbortError';\n}\n\n/** Check if an error looks like a network failure (not an API error). */\nfunction isNetworkFailure(error: unknown): boolean {\n if (error instanceof NetworkError) return true;\n if (error instanceof TypeError) return true; // fetch throws TypeError for network failures\n return false;\n}\n\n/** Check if an error has a status property (ApiError-like). */\nfunction isApiErrorLike(error: unknown): error is { status: number } {\n return typeof error === 'object' && error !== null && 'status' in error;\n}\n\n/** Check if a status code should trigger a retry. */\nfunction isRetryableStatus(error: { status: number }, retryOn503: boolean): boolean {\n if (error.status === 429) return true;\n if (error.status === 503 && retryOn503) return true;\n return false;\n}\n\n/** Sleep for a given number of milliseconds. */\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","import type { ResolvedConfig } from './config.js';\nimport { NetworkError, ReasoningLayerError } from './errors.js';\n\n/** Handler for incoming WebSocket messages. */\nexport type MessageHandler<T = unknown> = (data: T) => void;\n\n/** Handler for reconnection events. */\nexport type ReconnectHandler = (attempt: number) => void;\n\n/**\n * An active WebSocket connection with auto-reconnect.\n *\n * @remarks\n * Uses the native WebSocket API (Node 18+, browsers, Deno, Bun).\n * Automatically reconnects with exponential backoff + jitter\n * (1s -> 2s -> 4s -> ... -> max 30s), up to 10 attempts.\n */\nexport class WebSocketConnection {\n private ws: WebSocket | null = null;\n private messageHandlers: MessageHandler[] = [];\n private reconnectHandlers: ReconnectHandler[] = [];\n private closeHandler: (() => void) | null = null;\n private errorHandler: ((error: Error) => void) | null = null;\n private reconnectAttempt = 0;\n private reconnectTimer: ReturnType<typeof setTimeout> | null = null;\n private intentionallyClosed = false;\n private _connected = false;\n\n private readonly url: string;\n private readonly maxReconnectAttempts: number;\n private readonly maxReconnectDelay: number;\n private readonly baseDelay: number;\n\n /** @internal */\n constructor(\n url: string,\n options?: {\n maxReconnectAttempts?: number;\n maxReconnectDelay?: number;\n baseDelay?: number;\n },\n ) {\n this.url = url;\n this.maxReconnectAttempts = options?.maxReconnectAttempts ?? 10;\n this.maxReconnectDelay = options?.maxReconnectDelay ?? 30_000;\n this.baseDelay = options?.baseDelay ?? 1_000;\n this.connect();\n }\n\n /**\n * Whether the WebSocket is currently connected.\n */\n get connected(): boolean {\n return this._connected;\n }\n\n /**\n * Register a handler for incoming messages.\n *\n * @param handler - Called with the parsed JSON message data.\n */\n onMessage<T = unknown>(handler: MessageHandler<T>): void {\n // Accepted: MessageHandler<T> is contravariant but runtime data is always unknown from JSON.parse\n this.messageHandlers.push(handler as MessageHandler);\n }\n\n /**\n * Register a handler for reconnection events.\n *\n * @param handler - Called with the reconnection attempt number.\n */\n onReconnect(handler: ReconnectHandler): void {\n this.reconnectHandlers.push(handler);\n }\n\n /**\n * Register a handler for connection close events.\n *\n * @param handler - Called when the connection closes.\n */\n onClose(handler: () => void): void {\n this.closeHandler = handler;\n }\n\n /**\n * Register a handler for connection errors.\n *\n * @param handler - Called with the error.\n */\n onError(handler: (error: Error) => void): void {\n this.errorHandler = handler;\n }\n\n /**\n * Close the WebSocket connection.\n *\n * @remarks\n * Once closed, the connection will not attempt to reconnect.\n */\n close(): void {\n this.intentionallyClosed = true;\n this.clearReconnectTimer();\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n this._connected = false;\n }\n\n private connect(): void {\n try {\n this.ws = new WebSocket(this.url);\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n this.handleError(new NetworkError(`WebSocket connection failed: ${err.message}`, err));\n this.scheduleReconnect();\n return;\n }\n\n this.ws.onopen = () => {\n this._connected = true;\n this.reconnectAttempt = 0;\n\n if (this.reconnectAttempt > 0) {\n for (const handler of this.reconnectHandlers) {\n handler(this.reconnectAttempt);\n }\n }\n };\n\n this.ws.onmessage = (event: MessageEvent) => {\n let data: unknown;\n try {\n data = JSON.parse(String(event.data));\n } catch {\n return;\n }\n\n for (const handler of this.messageHandlers) {\n handler(data);\n }\n };\n\n this.ws.onclose = () => {\n this._connected = false;\n if (!this.intentionallyClosed) {\n this.scheduleReconnect();\n } else {\n this.closeHandler?.();\n }\n };\n\n this.ws.onerror = () => {\n // Error details are not available from the WebSocket error event.\n // The onclose event will fire next and trigger reconnect if needed.\n this.handleError(new NetworkError('WebSocket error'));\n };\n }\n\n private scheduleReconnect(): void {\n if (this.intentionallyClosed) return;\n if (this.reconnectAttempt >= this.maxReconnectAttempts) {\n this.handleError(\n new ReasoningLayerError(\n `WebSocket reconnection failed after ${this.maxReconnectAttempts} attempts`,\n ),\n );\n this.closeHandler?.();\n return;\n }\n\n this.reconnectAttempt++;\n const delay = this.calculateReconnectDelay(this.reconnectAttempt);\n\n this.reconnectTimer = setTimeout(() => {\n for (const handler of this.reconnectHandlers) {\n handler(this.reconnectAttempt);\n }\n this.connect();\n }, delay);\n }\n\n private calculateReconnectDelay(attempt: number): number {\n const exponentialDelay = this.baseDelay * Math.pow(2, attempt - 1);\n const jitter = Math.random() * 1000;\n return Math.min(exponentialDelay + jitter, this.maxReconnectDelay);\n }\n\n private clearReconnectTimer(): void {\n if (this.reconnectTimer !== null) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = null;\n }\n }\n\n private handleError(error: Error): void {\n this.errorHandler?.(error);\n }\n}\n\n/**\n * WebSocket client for real-time event subscriptions.\n *\n * @remarks\n * Dependency rule: imports ONLY from `config.ts` + `errors.ts` (same level as `http.ts`).\n *\n * Constructs WebSocket URLs from the base HTTP URL by replacing the protocol\n * (`http` -> `ws`, `https` -> `wss`) and appending the tenant ID as a query parameter.\n *\n * @example\n * ```typescript\n * const wsClient = new WebSocketClient(resolvedConfig);\n * const conn = wsClient.connect('/api/v1/cognitive/agents/events', {\n * agent_id: 'some-uuid',\n * });\n * conn.onMessage((event) => console.log(event));\n * // ... later\n * conn.close();\n * ```\n */\nexport class WebSocketClient {\n private readonly config: ResolvedConfig;\n\n constructor(config: ResolvedConfig) {\n this.config = config;\n }\n\n /**\n * Open a WebSocket connection to the given path.\n *\n * @param path - API path (e.g., `/api/v1/cognitive/agents/events`).\n * @param params - Additional query parameters (appended after tenant_id).\n * @returns A new {@link WebSocketConnection} with auto-reconnect.\n */\n connect(path: string, params?: Record<string, string>): WebSocketConnection {\n const url = this.buildUrl(path, params);\n return new WebSocketConnection(url);\n }\n\n private buildUrl(path: string, params?: Record<string, string>): string {\n const baseUrl = this.config.baseUrl\n .replace(/^http:/, 'ws:')\n .replace(/^https:/, 'wss:');\n\n const queryParams = new URLSearchParams({ tenant_id: this.config.tenantId });\n\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n queryParams.set(key, value);\n }\n }\n\n return `${baseUrl}${path}?${queryParams.toString()}`;\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n SortDto,\n SortResponse,\n SortListResponse,\n CreateSortRequest,\n BulkCreateSortsRequest,\n BulkCreateSortsResponse,\n GlbRequest,\n GlbResponse,\n LubRequest,\n LubResponse,\n DecodeGlbResponse,\n SortCompareRequest,\n SortCompareResponse,\n UpdateReviewStatusRequest,\n LearnSortSimilaritiesRequest,\n LearnSortSimilaritiesResponse,\n LearnedSimilarityListResponse,\n ApproveLearnedSimilarityRequest,\n ApproveLearnedSimilarityResponse,\n RejectLearnedSimilarityRequest,\n RejectLearnedSimilarityResponse,\n} from '../types/sorts.js';\n\nconst BASE = '/api/v1/sorts';\n\n/**\n * Resource client for sort (type hierarchy) operations.\n *\n * @remarks\n * Sorts use the tagged {@link ValueDto} serialization format.\n * All methods accept optional {@link RequestOptions} as the last parameter.\n */\nexport class SortsClient {\n /** @internal */\n protected readonly http: HttpClient;\n /** @internal */\n protected readonly tenantId: string;\n\n /** @internal */\n constructor(http: HttpClient, tenantId: string) {\n this.http = http;\n this.tenantId = tenantId;\n }\n\n /**\n * Create a new sort.\n *\n * @param request - Sort creation parameters.\n * @param options - Per-call request options.\n * @returns The created sort.\n */\n async createSort(request: CreateSortRequest, options?: RequestOptions): Promise<SortDto> {\n const response = await this.http.post<SortResponse>(BASE, request, options);\n return response.sort;\n }\n\n /**\n * Get a sort by ID.\n *\n * @param sortId - Sort UUID.\n * @param options - Per-call request options.\n * @returns The sort.\n */\n async getSort(sortId: string, options?: RequestOptions): Promise<SortDto> {\n const response = await this.http.get<SortResponse>(`${BASE}/${sortId}`, options);\n return response.sort;\n }\n\n /**\n * Delete a sort by ID.\n *\n * @param sortId - Sort UUID.\n * @param options - Per-call request options.\n */\n async deleteSort(sortId: string, options?: RequestOptions): Promise<void> {\n await this.http.delete(`${BASE}/${sortId}`, options);\n }\n\n /**\n * List all sorts.\n *\n * @param options - Per-call request options.\n * @returns Array of sorts.\n */\n async listSorts(options?: RequestOptions): Promise<SortDto[]> {\n const response = await this.http.get<SortListResponse>(\n `${BASE}/tenant/${this.tenantId}`,\n options,\n );\n return response.sorts;\n }\n\n /**\n * Bulk-create sorts with name-based parent references.\n *\n * @param request - Bulk creation request with sort definitions.\n * @param options - Per-call request options.\n * @returns Mapping of sort names to created UUIDs.\n *\n * @remarks\n * Unlike {@link createSort}, parent references use sort **names** (not UUIDs),\n * which are resolved server-side. This enables defining an entire hierarchy in one request.\n */\n async bulkCreateSorts(\n request: BulkCreateSortsRequest,\n options?: RequestOptions,\n ): Promise<BulkCreateSortsResponse> {\n return this.http.post<BulkCreateSortsResponse>(`${BASE}/bulk`, request, options);\n }\n\n /**\n * Check if a sort is a subtype of another.\n *\n * @param childId - Child sort UUID.\n * @param parentId - Parent sort UUID.\n * @param options - Per-call request options.\n * @returns `true` if childId is a subtype of parentId.\n */\n async isSubtype(childId: string, parentId: string, options?: RequestOptions): Promise<boolean> {\n const result = await this.http.get<{ is_subtype: boolean }>(\n `${BASE}/${childId}/subtype/${parentId}`,\n options,\n );\n return result.is_subtype;\n }\n\n /**\n * Compute the Greatest Lower Bound (GLB) of two sorts.\n *\n * @param request - GLB request with two sort UUIDs.\n * @param options - Per-call request options.\n * @returns The GLB sort UUID, or null if no common lower bound exists.\n */\n async computeGlb(request: GlbRequest, options?: RequestOptions): Promise<GlbResponse> {\n return this.http.post<GlbResponse>(`${BASE}/glb`, request, options);\n }\n\n /**\n * Compute the Least Upper Bound (LUB) of two sorts.\n *\n * @param request - LUB request with two sort UUIDs.\n * @param options - Per-call request options.\n * @returns The LUB sort UUID, or null if no common upper bound exists.\n */\n async computeLub(request: LubRequest, options?: RequestOptions): Promise<LubResponse> {\n return this.http.post<LubResponse>(`${BASE}/lub`, request, options);\n }\n\n /**\n * Decode a GLB as a type disjunction.\n *\n * @param request - GLB request with two sort UUIDs.\n * @param options - Per-call request options.\n * @returns Human-readable type disjunction with constituent sorts.\n */\n async decodeGlb(request: GlbRequest, options?: RequestOptions): Promise<DecodeGlbResponse> {\n return this.http.post<DecodeGlbResponse>(`${BASE}/glb/decode`, request, options);\n }\n\n /**\n * Get direct children of a sort.\n *\n * @param sortId - Sort UUID.\n * @param options - Per-call request options.\n * @returns Array of child sorts.\n */\n async getChildren(sortId: string, options?: RequestOptions): Promise<SortDto[]> {\n return this.http.get<SortDto[]>(`${BASE}/${sortId}/children`, options);\n }\n\n /**\n * Get direct parents of a sort.\n *\n * @param sortId - Sort UUID.\n * @param options - Per-call request options.\n * @returns Array of parent sorts.\n */\n async getParents(sortId: string, options?: RequestOptions): Promise<SortDto[]> {\n return this.http.get<SortDto[]>(`${BASE}/${sortId}/parents`, options);\n }\n\n /**\n * Get all ancestors of a sort (transitive parents).\n *\n * @param sortId - Sort UUID.\n * @param options - Per-call request options.\n * @returns Array of ancestor sorts.\n */\n async getAncestors(sortId: string, options?: RequestOptions): Promise<SortDto[]> {\n return this.http.get<SortDto[]>(`${BASE}/${sortId}/ancestors`, options);\n }\n\n /**\n * Get all descendants of a sort (transitive children).\n *\n * @param sortId - Sort UUID.\n * @param options - Per-call request options.\n * @returns Array of descendant sorts.\n */\n async getDescendants(sortId: string, options?: RequestOptions): Promise<SortDto[]> {\n return this.http.get<SortDto[]>(`${BASE}/${sortId}/descendants`, options);\n }\n\n /**\n * Get sorts compatible with a given sort.\n *\n * @param sortId - Sort UUID.\n * @param options - Per-call request options.\n * @returns Array of compatible sorts.\n */\n async getCompatible(sortId: string, options?: RequestOptions): Promise<SortDto[]> {\n return this.http.get<SortDto[]>(`${BASE}/${sortId}/compatible`, options);\n }\n\n /**\n * Compare two sorts using a comparison operator.\n *\n * @param request - Comparison request with operator and two sort references.\n * @param options - Per-call request options.\n * @returns Comparison result.\n */\n async compareSorts(\n request: SortCompareRequest,\n options?: RequestOptions,\n ): Promise<SortCompareResponse> {\n return this.http.post<SortCompareResponse>(`${BASE}/compare`, request, options);\n }\n\n /**\n * Trigger re-indexing of the sort hierarchy.\n *\n * @param options - Per-call request options.\n */\n async indexSorts(options?: RequestOptions): Promise<void> {\n await this.http.post(`${BASE}/index`, undefined, options);\n }\n\n /**\n * Update the review status of a sort.\n *\n * @param sortId - Sort UUID.\n * @param request - New review status.\n * @param options - Per-call request options.\n */\n async updateReviewStatus(\n sortId: string,\n request: UpdateReviewStatusRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/${sortId}/review`, request, options);\n }\n\n // --- Sort Similarity Learning ---\n\n /**\n * Learn sort similarities from effect features.\n *\n * @param request - Learning parameters.\n * @param options - Per-call request options.\n * @returns Learning result with count of similarities found.\n */\n async learnSimilarities(\n request: LearnSortSimilaritiesRequest,\n options?: RequestOptions,\n ): Promise<LearnSortSimilaritiesResponse> {\n return this.http.post<LearnSortSimilaritiesResponse>(`${BASE}/learn-similarities`, request, options);\n }\n\n /**\n * Get all learned similarities.\n *\n * @param options - Per-call request options.\n * @returns List of learned similarities with status counts.\n */\n async getLearnedSimilarities(options?: RequestOptions): Promise<LearnedSimilarityListResponse> {\n return this.http.get<LearnedSimilarityListResponse>(`${BASE}/learned-similarities`, options);\n }\n\n /**\n * Approve a learned similarity.\n *\n * @param request - Sort pair to approve.\n * @param options - Per-call request options.\n * @returns Approval result.\n */\n async approveSimilarity(\n request: ApproveLearnedSimilarityRequest,\n options?: RequestOptions,\n ): Promise<ApproveLearnedSimilarityResponse> {\n return this.http.post<ApproveLearnedSimilarityResponse>(\n `${BASE}/learned-similarities/approve`,\n request,\n options,\n );\n }\n\n /**\n * Reject a learned similarity.\n *\n * @param request - Sort pair to reject with reason.\n * @param options - Per-call request options.\n * @returns Rejection result.\n */\n async rejectSimilarity(\n request: RejectLearnedSimilarityRequest,\n options?: RequestOptions,\n ): Promise<RejectLearnedSimilarityResponse> {\n return this.http.post<RejectLearnedSimilarityResponse>(\n `${BASE}/learned-similarities/reject`,\n request,\n options,\n );\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * Every method on the returned client wraps its response in {@link ApiResponse},\n * providing access to HTTP status, headers, and rate limit information.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): SortsClientWithMetadata {\n return new SortsClientWithMetadata(this.http, this.tenantId);\n }\n}\n\n/**\n * Metadata-aware variant of {@link SortsClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class SortsClientWithMetadata {\n private readonly http: HttpClient;\n private readonly tenantId: string;\n\n /** @internal */\n constructor(http: HttpClient, tenantId: string) {\n this.http = http;\n this.tenantId = tenantId;\n }\n\n async createSort(\n request: CreateSortRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SortDto>> {\n const result = await this.http.requestWithMetadata<SortResponse>('POST', BASE, {\n body: request,\n options,\n });\n return { ...result, data: result.data.sort };\n }\n\n async getSort(sortId: string, options?: RequestOptions): Promise<ApiResponse<SortDto>> {\n const result = await this.http.requestWithMetadata<SortResponse>('GET', `${BASE}/${sortId}`, {\n options,\n });\n return { ...result, data: result.data.sort };\n }\n\n async deleteSort(sortId: string, options?: RequestOptions): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('DELETE', `${BASE}/${sortId}`, { options });\n }\n\n async listSorts(options?: RequestOptions): Promise<ApiResponse<SortDto[]>> {\n const result = await this.http.requestWithMetadata<SortListResponse>(\n 'GET',\n `${BASE}/tenant/${this.tenantId}`,\n { options },\n );\n return { ...result, data: result.data.sorts };\n }\n\n async bulkCreateSorts(\n request: BulkCreateSortsRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<BulkCreateSortsResponse>> {\n return this.http.requestWithMetadata<BulkCreateSortsResponse>('POST', `${BASE}/bulk`, {\n body: request,\n options,\n });\n }\n\n async isSubtype(\n childId: string,\n parentId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<boolean>> {\n const result = await this.http.requestWithMetadata<{ is_subtype: boolean }>(\n 'GET',\n `${BASE}/${childId}/subtype/${parentId}`,\n { options },\n );\n return { ...result, data: result.data.is_subtype };\n }\n\n async computeGlb(\n request: GlbRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<GlbResponse>> {\n return this.http.requestWithMetadata<GlbResponse>('POST', `${BASE}/glb`, {\n body: request,\n options,\n });\n }\n\n async computeLub(\n request: LubRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<LubResponse>> {\n return this.http.requestWithMetadata<LubResponse>('POST', `${BASE}/lub`, {\n body: request,\n options,\n });\n }\n\n async decodeGlb(\n request: GlbRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<DecodeGlbResponse>> {\n return this.http.requestWithMetadata<DecodeGlbResponse>('POST', `${BASE}/glb/decode`, {\n body: request,\n options,\n });\n }\n\n async getChildren(sortId: string, options?: RequestOptions): Promise<ApiResponse<SortDto[]>> {\n return this.http.requestWithMetadata<SortDto[]>('GET', `${BASE}/${sortId}/children`, {\n options,\n });\n }\n\n async getParents(sortId: string, options?: RequestOptions): Promise<ApiResponse<SortDto[]>> {\n return this.http.requestWithMetadata<SortDto[]>('GET', `${BASE}/${sortId}/parents`, {\n options,\n });\n }\n\n async getAncestors(sortId: string, options?: RequestOptions): Promise<ApiResponse<SortDto[]>> {\n return this.http.requestWithMetadata<SortDto[]>('GET', `${BASE}/${sortId}/ancestors`, {\n options,\n });\n }\n\n async getDescendants(sortId: string, options?: RequestOptions): Promise<ApiResponse<SortDto[]>> {\n return this.http.requestWithMetadata<SortDto[]>('GET', `${BASE}/${sortId}/descendants`, {\n options,\n });\n }\n\n async getCompatible(sortId: string, options?: RequestOptions): Promise<ApiResponse<SortDto[]>> {\n return this.http.requestWithMetadata<SortDto[]>('GET', `${BASE}/${sortId}/compatible`, {\n options,\n });\n }\n\n async compareSorts(\n request: SortCompareRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SortCompareResponse>> {\n return this.http.requestWithMetadata<SortCompareResponse>('POST', `${BASE}/compare`, {\n body: request,\n options,\n });\n }\n\n async indexSorts(options?: RequestOptions): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/index`, {\n body: undefined,\n options,\n });\n }\n\n async updateReviewStatus(\n sortId: string,\n request: UpdateReviewStatusRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/${sortId}/review`, {\n body: request,\n options,\n });\n }\n\n async learnSimilarities(\n request: LearnSortSimilaritiesRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<LearnSortSimilaritiesResponse>> {\n return this.http.requestWithMetadata<LearnSortSimilaritiesResponse>(\n 'POST',\n `${BASE}/learn-similarities`,\n { body: request, options },\n );\n }\n\n async getLearnedSimilarities(\n options?: RequestOptions,\n ): Promise<ApiResponse<LearnedSimilarityListResponse>> {\n return this.http.requestWithMetadata<LearnedSimilarityListResponse>(\n 'GET',\n `${BASE}/learned-similarities`,\n { options },\n );\n }\n\n async approveSimilarity(\n request: ApproveLearnedSimilarityRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ApproveLearnedSimilarityResponse>> {\n return this.http.requestWithMetadata<ApproveLearnedSimilarityResponse>(\n 'POST',\n `${BASE}/learned-similarities/approve`,\n { body: request, options },\n );\n }\n\n async rejectSimilarity(\n request: RejectLearnedSimilarityRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RejectLearnedSimilarityResponse>> {\n return this.http.requestWithMetadata<RejectLearnedSimilarityResponse>(\n 'POST',\n `${BASE}/learned-similarities/reject`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n TermResponse,\n CreateTermRequest,\n UpdateTermRequest,\n BulkAddTermsRequest,\n BulkAddTermsResponse,\n} from '../types/terms.js';\n\nconst BASE = '/api/v1/terms';\n\n/**\n * Resource client for Psi-term operations.\n *\n * @remarks\n * Term CRUD endpoints return {@link TermResponse} (which wraps {@link TermDto} with\n * witness validation state), NOT raw TermDto. This is critical — the validation state\n * (complete, residuated, no_witnesses) indicates whether the term satisfies its type\n * witnesses.\n *\n * Terms use the tagged {@link ValueDto} serialization format.\n */\nexport class TermsClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Create a new Psi-term.\n *\n * @param request - Term creation parameters.\n * @param options - Per-call request options.\n * @returns The created term with validation state.\n */\n async createTerm(request: CreateTermRequest, options?: RequestOptions): Promise<TermResponse> {\n return this.http.post<TermResponse>(BASE, request, options);\n }\n\n /**\n * Get a term by ID.\n *\n * @param termId - Term UUID.\n * @param options - Per-call request options.\n * @returns The term with validation state.\n */\n async getTerm(termId: string, options?: RequestOptions): Promise<TermResponse> {\n return this.http.get<TermResponse>(`${BASE}/${termId}`, options);\n }\n\n /**\n * Update an existing term.\n *\n * @param termId - Term UUID.\n * @param request - Update parameters.\n * @param options - Per-call request options.\n * @returns The updated term with validation state.\n */\n async updateTerm(\n termId: string,\n request: UpdateTermRequest,\n options?: RequestOptions,\n ): Promise<TermResponse> {\n return this.http.put<TermResponse>(`${BASE}/${termId}`, request, options);\n }\n\n /**\n * Delete a term by ID.\n *\n * @param termId - Term UUID.\n * @param options - Per-call request options.\n */\n async deleteTerm(termId: string, options?: RequestOptions): Promise<void> {\n await this.http.delete(`${BASE}/${termId}`, options);\n }\n\n /**\n * Check if a term exists.\n *\n * @param termId - Term UUID.\n * @param options - Per-call request options.\n * @returns `true` if the term exists.\n */\n async termExists(termId: string, options?: RequestOptions): Promise<boolean> {\n try {\n await this.http.get(`${BASE}/${termId}/exists`, options);\n return true;\n } catch {\n return false;\n }\n }\n\n /**\n * Bulk-create terms.\n *\n * @param request - Bulk creation request.\n * @param options - Per-call request options.\n * @returns Bulk creation result with term UUIDs.\n */\n async bulkCreateTerms(\n request: BulkAddTermsRequest,\n options?: RequestOptions,\n ): Promise<BulkAddTermsResponse> {\n return this.http.post<BulkAddTermsResponse>(`${BASE}/bulk`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * Every method on the returned client wraps its response in {@link ApiResponse},\n * providing access to HTTP status, headers, and rate limit information.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): TermsClientWithMetadata {\n return new TermsClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link TermsClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class TermsClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async createTerm(\n request: CreateTermRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<TermResponse>> {\n return this.http.requestWithMetadata<TermResponse>('POST', BASE, { body: request, options });\n }\n\n async getTerm(termId: string, options?: RequestOptions): Promise<ApiResponse<TermResponse>> {\n return this.http.requestWithMetadata<TermResponse>('GET', `${BASE}/${termId}`, { options });\n }\n\n async updateTerm(\n termId: string,\n request: UpdateTermRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<TermResponse>> {\n return this.http.requestWithMetadata<TermResponse>('PUT', `${BASE}/${termId}`, {\n body: request,\n options,\n });\n }\n\n async deleteTerm(termId: string, options?: RequestOptions): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('DELETE', `${BASE}/${termId}`, { options });\n }\n\n async termExists(termId: string, options?: RequestOptions): Promise<ApiResponse<boolean>> {\n try {\n const result = await this.http.requestWithMetadata<unknown>(\n 'GET',\n `${BASE}/${termId}/exists`,\n { options },\n );\n return { ...result, data: true };\n } catch {\n return { data: false, status: 404, headers: new Headers(), rateLimit: null };\n }\n }\n\n async bulkCreateTerms(\n request: BulkAddTermsRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<BulkAddTermsResponse>> {\n return this.http.requestWithMetadata<BulkAddTermsResponse>('POST', `${BASE}/bulk`, {\n body: request,\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n AddRuleRequest,\n AddRuleResponse,\n AddFactRequest,\n AddFactResponse,\n BulkAddRulesRequest,\n BulkAddRulesResponse,\n BulkAddFactsRequest,\n BulkAddFactsResponse,\n GetFactsResponse,\n ClearFactsResponse,\n BackwardChainRequest,\n BackwardChainResponse,\n ForwardChainRequest,\n ForwardChainResponse,\n FuzzyProveRequest,\n FuzzyProveResponse,\n BayesianPredictRequest,\n BayesianPredictResponse,\n NafProveRequest,\n NafProveResponse,\n GoalDto,\n CreateGoalRequest,\n CreateGoalResponse,\n DeleteGoalResponse,\n MetaSortsResponse,\n} from '../types/inference.js';\n\n\nconst BASE = '/api/v1/inference';\n\n/**\n * Resource client for inference operations.\n *\n * @remarks\n * Inference requests use the untagged {@link FeatureInputValueDto} / {@link TermInputDto}\n * serialization format. Responses use {@link PsiTermDto} / {@link SolutionDto}.\n *\n * The SDK exposes only the homoiconic API surface. Legacy OsfClauseDto-based endpoints\n * are not supported.\n */\nexport class InferenceClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Add an inference rule.\n *\n * @param request - Rule definition using TermInputDto.\n * @param options - Per-call request options.\n * @returns The created rule wrapped in an AddRuleResponse.\n */\n async addRule(request: AddRuleRequest, options?: RequestOptions): Promise<AddRuleResponse> {\n return this.http.post<AddRuleResponse>(`${BASE}/rules`, request, options);\n }\n\n /**\n * Add a fact.\n *\n * @param request - Fact definition using TermInputDto.\n * @param options - Per-call request options.\n * @returns The created fact wrapped in an AddFactResponse.\n */\n async addFact(request: AddFactRequest, options?: RequestOptions): Promise<AddFactResponse> {\n return this.http.post<AddFactResponse>(`${BASE}/facts`, request, options);\n }\n\n /**\n * Bulk-add inference rules.\n *\n * @param request - Bulk rule definitions.\n * @param options - Per-call request options.\n * @returns Bulk creation result with rule_term_ids and rules_added count.\n */\n async bulkAddRules(\n request: BulkAddRulesRequest,\n options?: RequestOptions,\n ): Promise<BulkAddRulesResponse> {\n return this.http.post<BulkAddRulesResponse>(`${BASE}/rules/bulk`, request, options);\n }\n\n /**\n * Bulk-add facts.\n *\n * @param request - Bulk fact definitions.\n * @param options - Per-call request options.\n * @returns Bulk creation result with term_ids and facts_added count.\n */\n async bulkAddFacts(\n request: BulkAddFactsRequest,\n options?: RequestOptions,\n ): Promise<BulkAddFactsResponse> {\n return this.http.post<BulkAddFactsResponse>(`${BASE}/facts/bulk`, request, options);\n }\n\n /**\n * Get all stored facts for a tenant.\n *\n * @param tenantId - Tenant UUID.\n * @param options - Per-call request options.\n * @returns Facts with count.\n */\n async getFacts(tenantId: string, options?: RequestOptions): Promise<GetFactsResponse> {\n return this.http.get<GetFactsResponse>(`${BASE}/facts/${tenantId}`, options);\n }\n\n /**\n * Clear all stored facts for a tenant.\n *\n * @param tenantId - Tenant UUID.\n * @param options - Per-call request options.\n * @returns Clear result with facts_cleared count.\n */\n async clearFacts(tenantId: string, options?: RequestOptions): Promise<ClearFactsResponse> {\n return this.http.delete<ClearFactsResponse>(`${BASE}/facts/${tenantId}`, options);\n }\n\n /**\n * Run backward chaining inference (goal-directed proof search).\n *\n * @param request - Backward chaining request. Specify either `goal` (inline) or `goal_id` (saved), not both.\n * @param options - Per-call request options.\n * @returns Solutions found by the proof search.\n *\n * @remarks\n * The `timeout_ms` field on the request is a wall-clock timeout for the proof search.\n * When it fires, the backend returns whatever solutions have been found so far.\n */\n async backwardChain(\n request: BackwardChainRequest,\n options?: RequestOptions,\n ): Promise<BackwardChainResponse> {\n return this.http.post<BackwardChainResponse>(`${BASE}/backward-chain`, request, options);\n }\n\n /**\n * Run forward chaining inference (data-driven materialization).\n *\n * @param request - Forward chaining request.\n * @param options - Per-call request options.\n * @returns Derived facts and materialization statistics.\n *\n * @remarks\n * If `persist_derived` is true, derived facts are permanently saved to the database.\n */\n async forwardChain(\n request: ForwardChainRequest,\n options?: RequestOptions,\n ): Promise<ForwardChainResponse> {\n return this.http.post<ForwardChainResponse>(`${BASE}/forward-chain`, request, options);\n }\n\n /**\n * Run forward chaining and return results in tagged PsiTerm format.\n *\n * @param request - Forward chaining request.\n * @param options - Per-call request options.\n * @returns Derived facts in homoiconic PsiTerm format.\n */\n async forwardChainTagged(\n request: ForwardChainRequest,\n options?: RequestOptions,\n ): Promise<ForwardChainResponse> {\n return this.http.post<ForwardChainResponse>(\n `${BASE}/forward-chain-tagged`,\n request,\n options,\n );\n }\n\n /**\n * Run fuzzy proof search with truth degree propagation.\n *\n * @param request - Fuzzy prove request.\n * @param options - Per-call request options.\n * @returns Fuzzy solutions with truth degrees.\n */\n async fuzzyProve(\n request: FuzzyProveRequest,\n options?: RequestOptions,\n ): Promise<FuzzyProveResponse> {\n return this.http.post<FuzzyProveResponse>(`${BASE}/fuzzy-prove`, request, options);\n }\n\n /**\n * Run Bayesian prediction.\n *\n * @param request - Bayesian prediction request.\n * @param options - Per-call request options.\n * @returns Predictions with posterior probabilities.\n */\n async bayesianPredict(\n request: BayesianPredictRequest,\n options?: RequestOptions,\n ): Promise<BayesianPredictResponse> {\n return this.http.post<BayesianPredictResponse>(\n `${BASE}/bayesian-predict`,\n request,\n options,\n );\n }\n\n /**\n * Run negation-as-failure (NAF) proof search.\n *\n * @param request - NAF prove request.\n * @param options - Per-call request options.\n * @returns NAF proof result.\n */\n async nafProve(request: NafProveRequest, options?: RequestOptions): Promise<NafProveResponse> {\n return this.http.post<NafProveResponse>(`${BASE}/naf-prove`, request, options);\n }\n\n /**\n * Create a saved goal for reuse in backward chaining.\n *\n * @param request - Goal creation request.\n * @param options - Per-call request options.\n * @returns The created goal with ID, PsiTerm, and clause/constraint counts.\n */\n async createGoal(\n request: CreateGoalRequest,\n options?: RequestOptions,\n ): Promise<CreateGoalResponse> {\n return this.http.post<CreateGoalResponse>(`${BASE}/goals`, request, options);\n }\n\n /**\n * List all saved goals.\n *\n * @param options - Per-call request options.\n * @returns Array of goals.\n */\n async getGoals(options?: RequestOptions): Promise<GoalDto[]> {\n return this.http.get<GoalDto[]>(`${BASE}/goals`, options);\n }\n\n /**\n * Get a saved goal by ID.\n *\n * @param goalId - Goal UUID.\n * @param options - Per-call request options.\n * @returns The goal.\n */\n async getGoal(goalId: string, options?: RequestOptions): Promise<GoalDto> {\n return this.http.get<GoalDto>(`${BASE}/goals/${goalId}`, options);\n }\n\n /**\n * Delete a saved goal.\n *\n * @param goalId - Goal UUID.\n * @param options - Per-call request options.\n * @returns Delete result confirming deletion.\n */\n async deleteGoal(goalId: string, options?: RequestOptions): Promise<DeleteGoalResponse> {\n return this.http.delete<DeleteGoalResponse>(`${BASE}/goals/${goalId}`, options);\n }\n\n /**\n * Get meta-sorts used by the inference engine.\n *\n * @param options - Per-call request options.\n * @returns Meta-sorts information.\n */\n async getMetaSorts(options?: RequestOptions): Promise<MetaSortsResponse> {\n return this.http.get<MetaSortsResponse>(`${BASE}/meta-sorts`, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): InferenceClientWithMetadata {\n return new InferenceClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link InferenceClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class InferenceClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async addRule(\n request: AddRuleRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<AddRuleResponse>> {\n return this.http.requestWithMetadata<AddRuleResponse>('POST', `${BASE}/rules`, {\n body: request,\n options,\n });\n }\n\n async addFact(\n request: AddFactRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<AddFactResponse>> {\n return this.http.requestWithMetadata<AddFactResponse>('POST', `${BASE}/facts`, {\n body: request,\n options,\n });\n }\n\n async bulkAddRules(\n request: BulkAddRulesRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<BulkAddRulesResponse>> {\n return this.http.requestWithMetadata<BulkAddRulesResponse>('POST', `${BASE}/rules/bulk`, {\n body: request,\n options,\n });\n }\n\n async bulkAddFacts(\n request: BulkAddFactsRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<BulkAddFactsResponse>> {\n return this.http.requestWithMetadata<BulkAddFactsResponse>('POST', `${BASE}/facts/bulk`, {\n body: request,\n options,\n });\n }\n\n async getFacts(tenantId: string, options?: RequestOptions): Promise<ApiResponse<GetFactsResponse>> {\n return this.http.requestWithMetadata<GetFactsResponse>('GET', `${BASE}/facts/${tenantId}`, { options });\n }\n\n async clearFacts(tenantId: string, options?: RequestOptions): Promise<ApiResponse<ClearFactsResponse>> {\n return this.http.requestWithMetadata<ClearFactsResponse>('DELETE', `${BASE}/facts/${tenantId}`, {\n options,\n });\n }\n\n async backwardChain(\n request: BackwardChainRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<BackwardChainResponse>> {\n return this.http.requestWithMetadata<BackwardChainResponse>(\n 'POST',\n `${BASE}/backward-chain`,\n { body: request, options },\n );\n }\n\n async forwardChain(\n request: ForwardChainRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ForwardChainResponse>> {\n return this.http.requestWithMetadata<ForwardChainResponse>('POST', `${BASE}/forward-chain`, {\n body: request,\n options,\n });\n }\n\n async forwardChainTagged(\n request: ForwardChainRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ForwardChainResponse>> {\n return this.http.requestWithMetadata<ForwardChainResponse>(\n 'POST',\n `${BASE}/forward-chain-tagged`,\n { body: request, options },\n );\n }\n\n async fuzzyProve(\n request: FuzzyProveRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<FuzzyProveResponse>> {\n return this.http.requestWithMetadata<FuzzyProveResponse>('POST', `${BASE}/fuzzy-prove`, {\n body: request,\n options,\n });\n }\n\n async bayesianPredict(\n request: BayesianPredictRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<BayesianPredictResponse>> {\n return this.http.requestWithMetadata<BayesianPredictResponse>(\n 'POST',\n `${BASE}/bayesian-predict`,\n { body: request, options },\n );\n }\n\n async nafProve(\n request: NafProveRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<NafProveResponse>> {\n return this.http.requestWithMetadata<NafProveResponse>('POST', `${BASE}/naf-prove`, {\n body: request,\n options,\n });\n }\n\n async createGoal(\n request: CreateGoalRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<CreateGoalResponse>> {\n return this.http.requestWithMetadata<CreateGoalResponse>('POST', `${BASE}/goals`, {\n body: request,\n options,\n });\n }\n\n async getGoals(options?: RequestOptions): Promise<ApiResponse<GoalDto[]>> {\n return this.http.requestWithMetadata<GoalDto[]>('GET', `${BASE}/goals`, { options });\n }\n\n async getGoal(goalId: string, options?: RequestOptions): Promise<ApiResponse<GoalDto>> {\n return this.http.requestWithMetadata<GoalDto>('GET', `${BASE}/goals/${goalId}`, { options });\n }\n\n async deleteGoal(\n goalId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<DeleteGoalResponse>> {\n return this.http.requestWithMetadata<DeleteGoalResponse>(\n 'DELETE',\n `${BASE}/goals/${goalId}`,\n { options },\n );\n }\n\n async getMetaSorts(options?: RequestOptions): Promise<ApiResponse<MetaSortsResponse>> {\n return this.http.requestWithMetadata<MetaSortsResponse>('GET', `${BASE}/meta-sorts`, {\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type { TermDto } from '../types/terms.js';\nimport type { ValidatedTermResponse, ValidatedUnifyResponse } from '../types/terms.js';\nimport type {\n UnifiableQueryRequest,\n BySortQueryRequest,\n OsfSearchRequest,\n OsfSearchResponse,\n NlQueryRequest,\n NlQueryResponse,\n TermListResponse,\n UnificationQueryResponse,\n} from '../types/query.js';\n\nconst BASE = '/api/v1/query';\n\n/**\n * Resource client for query operations.\n *\n * @remarks\n * Query endpoints use mixed serialization formats:\n * - `/unifiable` and `/by-sort` return `TermDto[]` (tagged ValueDto format)\n * - `/osf-search` returns `OsfSearchResponse` (structured search result)\n * - `/validate-term` returns `ValidatedTermResponse` (witness validation)\n * - `/validated-unify` returns `ValidatedUnifyResponse` (validated unification)\n */\nexport class QueryClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Find terms that unify with a given pattern.\n *\n * @param request - Unifiable query with term input.\n * @param options - Per-call request options.\n * @returns Array of matching terms (tagged ValueDto format).\n */\n async findUnifiable(\n request: UnifiableQueryRequest,\n options?: RequestOptions,\n ): Promise<TermDto[]> {\n const response = await this.http.post<UnificationQueryResponse>(\n `${BASE}/unifiable`,\n request,\n options,\n );\n return response.results;\n }\n\n /**\n * Find terms by sort.\n *\n * @param request - Query by sort request.\n * @param options - Per-call request options.\n * @returns Array of matching terms (tagged ValueDto format).\n */\n async findBySort(request: BySortQueryRequest, options?: RequestOptions): Promise<TermDto[]> {\n const response = await this.http.post<TermListResponse>(\n `${BASE}/by-sort`,\n request,\n options,\n );\n return response.terms;\n }\n\n /**\n * Execute an Order-Sorted Feature search.\n *\n * @param request - OSF search request with pattern.\n * @param options - Per-call request options.\n * @returns Structured search results including entities, relations, and suspended query information.\n *\n * @remarks\n * If the query is too vague, the response may include a `suspended` field containing\n * information about what data is needed and how to refine the query (residuation at query level).\n */\n async osfSearch(\n request: OsfSearchRequest,\n options?: RequestOptions,\n ): Promise<OsfSearchResponse> {\n return this.http.post<OsfSearchResponse>(`${BASE}/osf-search`, request, options);\n }\n\n /**\n * Validate a term against its sort's type witnesses.\n *\n * @param request - Term validation request.\n * @param options - Per-call request options.\n * @returns Validation result with witness satisfaction status.\n */\n async validateTerm(\n request: unknown,\n options?: RequestOptions,\n ): Promise<ValidatedTermResponse> {\n return this.http.post<ValidatedTermResponse>(`${BASE}/validate-term`, request, options);\n }\n\n /**\n * Perform validated unification of two terms.\n *\n * @param request - Validated unification request.\n * @param options - Per-call request options.\n * @returns Unification result with GLB sort and witness validation.\n */\n async validatedUnify(\n request: unknown,\n options?: RequestOptions,\n ): Promise<ValidatedUnifyResponse> {\n return this.http.post<ValidatedUnifyResponse>(`${BASE}/validated-unify`, request, options);\n }\n\n /**\n * Execute a natural language query.\n *\n * @param request - Natural language query request.\n * @param options - Per-call request options.\n * @returns Interpreted query and results.\n */\n async nlQuery(request: NlQueryRequest, options?: RequestOptions): Promise<NlQueryResponse> {\n return this.http.post<NlQueryResponse>('/api/v1/nl/query', request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): QueryClientWithMetadata {\n return new QueryClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link QueryClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class QueryClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async findUnifiable(\n request: UnifiableQueryRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<TermDto[]>> {\n const result = await this.http.requestWithMetadata<UnificationQueryResponse>(\n 'POST',\n `${BASE}/unifiable`,\n { body: request, options },\n );\n return { ...result, data: result.data.results };\n }\n\n async findBySort(\n request: BySortQueryRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<TermDto[]>> {\n const result = await this.http.requestWithMetadata<TermListResponse>(\n 'POST',\n `${BASE}/by-sort`,\n { body: request, options },\n );\n return { ...result, data: result.data.terms };\n }\n\n async osfSearch(\n request: OsfSearchRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<OsfSearchResponse>> {\n return this.http.requestWithMetadata<OsfSearchResponse>('POST', `${BASE}/osf-search`, {\n body: request,\n options,\n });\n }\n\n async validateTerm(\n request: unknown,\n options?: RequestOptions,\n ): Promise<ApiResponse<ValidatedTermResponse>> {\n return this.http.requestWithMetadata<ValidatedTermResponse>('POST', `${BASE}/validate-term`, {\n body: request,\n options,\n });\n }\n\n async validatedUnify(\n request: unknown,\n options?: RequestOptions,\n ): Promise<ApiResponse<ValidatedUnifyResponse>> {\n return this.http.requestWithMetadata<ValidatedUnifyResponse>(\n 'POST',\n `${BASE}/validated-unify`,\n { body: request, options },\n );\n }\n\n async nlQuery(\n request: NlQueryRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<NlQueryResponse>> {\n return this.http.requestWithMetadata<NlQueryResponse>('POST', '/api/v1/nl/query', {\n body: request,\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { WebSocketClient } from '../websocket.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n CreateAgentRequest,\n CreateAgentResponse,\n AgentStateDto,\n ExtendedAgentStateDto,\n RunCycleRequest,\n RunCycleResponse,\n AddBeliefRequest,\n AddBeliefResponse,\n AddGoalRequest,\n AddGoalResponse,\n AddCognitiveRuleRequest,\n AddCognitiveRuleResponse,\n CreateCognitiveSortRequest,\n CreateCognitiveSortResponse,\n RecallEpisodesRequest,\n RecallEpisodesResponse,\n EpisodeStatsResponse,\n AddHtnMethodRequest,\n AddHtnMethodResponse,\n SendMessageRequest,\n SendMessageResponse,\n BroadcastMessageRequest,\n BroadcastMessageResponse,\n MarkMessagesReadRequest,\n MarkMessagesReadResponse,\n ProvideFeedbackRequest,\n ProvideFeedbackResponse,\n RunIntegratedCycleRequest,\n RunIntegratedCycleResponse,\n SubscribeToKbRequest,\n SubscribeToKbResponse,\n RecordEpisodeRequest,\n RecordEpisodeResponse,\n AgentEvent,\n AgentEventHandlers,\n AgentSubscription,\n} from '../types/cognitive.js';\n\nconst BASE = '/api/v1/cognitive/agents';\n\n/**\n * Resource client for cognitive agent operations.\n *\n * @remarks\n * Provides CRUD operations for cognitive agents, BDI cycle management,\n * belief/goal management, episodic memory, HTN planning, inter-agent messaging,\n * and human-in-the-loop feedback.\n *\n * WebSocket subscriptions for real-time agent events require a {@link WebSocketClient}.\n */\nexport class CognitiveClient {\n /** @internal */\n protected readonly http: HttpClient;\n /** @internal */\n private readonly ws: WebSocketClient | null;\n\n /** @internal */\n constructor(http: HttpClient, ws?: WebSocketClient | null) {\n this.http = http;\n this.ws = ws ?? null;\n }\n\n // --- Agent CRUD ---\n\n /**\n * Create a new cognitive agent.\n *\n * @param request - Agent creation parameters.\n * @param options - Per-call request options.\n * @returns The created agent response.\n */\n async createAgent(\n request: CreateAgentRequest,\n options?: RequestOptions,\n ): Promise<CreateAgentResponse> {\n return this.http.post<CreateAgentResponse>(BASE, request, options);\n }\n\n /**\n * Get an agent's basic state.\n *\n * @param agentId - Agent UUID.\n * @param options - Per-call request options.\n * @returns The agent's basic state.\n */\n async getAgent(agentId: string, options?: RequestOptions): Promise<AgentStateDto> {\n return this.http.get<AgentStateDto>(`${BASE}/${agentId}`, options);\n }\n\n /**\n * Delete a cognitive agent.\n *\n * @param agentId - Agent UUID.\n * @param options - Per-call request options.\n */\n async deleteAgent(agentId: string, options?: RequestOptions): Promise<void> {\n await this.http.delete(`${BASE}/${agentId}`, options);\n }\n\n /**\n * Get an agent's extended state (BDI + motivation + activations).\n *\n * @param agentId - Agent UUID.\n * @param options - Per-call request options.\n * @returns The agent's extended state.\n */\n async getState(agentId: string, options?: RequestOptions): Promise<ExtendedAgentStateDto> {\n return this.http.get<ExtendedAgentStateDto>(`${BASE}/${agentId}/state`, options);\n }\n\n // --- BDI Cycle ---\n\n /**\n * Run a single BDI cognitive cycle for an agent.\n *\n * @param request - Cycle request with agent and tenant IDs.\n * @param options - Per-call request options.\n * @returns The cycle outcome.\n */\n async runCycle(request: RunCycleRequest, options?: RequestOptions): Promise<RunCycleResponse> {\n return this.http.post<RunCycleResponse>(`${BASE}/cycle`, request, options);\n }\n\n // --- Beliefs ---\n\n /**\n * Add a belief to an agent.\n *\n * @param request - Belief to add.\n * @param options - Per-call request options.\n * @returns The created belief response.\n */\n async addBelief(\n request: AddBeliefRequest,\n options?: RequestOptions,\n ): Promise<AddBeliefResponse> {\n return this.http.post<AddBeliefResponse>(`${BASE}/beliefs`, request, options);\n }\n\n // --- Goals ---\n\n /**\n * Add a goal to an agent.\n *\n * @param request - Goal to add.\n * @param options - Per-call request options.\n * @returns The created goal response.\n */\n async addGoal(request: AddGoalRequest, options?: RequestOptions): Promise<AddGoalResponse> {\n return this.http.post<AddGoalResponse>(`${BASE}/goals`, request, options);\n }\n\n // --- Cognitive Registry ---\n\n /**\n * Add a rule to the cognitive registry.\n *\n * @param request - Rule definition.\n * @param options - Per-call request options.\n * @returns The created rule response.\n */\n async addRule(\n request: AddCognitiveRuleRequest,\n options?: RequestOptions,\n ): Promise<AddCognitiveRuleResponse> {\n return this.http.post<AddCognitiveRuleResponse>(`${BASE}/rules`, request, options);\n }\n\n /**\n * Add a sort to the cognitive registry.\n *\n * @param request - Sort definition.\n * @param options - Per-call request options.\n * @returns The created sort response.\n */\n async addSort(\n request: CreateCognitiveSortRequest,\n options?: RequestOptions,\n ): Promise<CreateCognitiveSortResponse> {\n return this.http.post<CreateCognitiveSortResponse>(`${BASE}/sorts`, request, options);\n }\n\n // --- Episodic Memory ---\n\n /**\n * Recall similar episodes from an agent's episodic memory.\n *\n * @param request - Recall request with goal and context.\n * @param options - Per-call request options.\n * @returns Recalled episodes sorted by similarity/recency.\n */\n async recallEpisodes(\n request: RecallEpisodesRequest,\n options?: RequestOptions,\n ): Promise<RecallEpisodesResponse> {\n return this.http.post<RecallEpisodesResponse>(`${BASE}/episodes/recall`, request, options);\n }\n\n /**\n * Get episode statistics for an agent.\n *\n * @param agentId - Agent UUID.\n * @param options - Per-call request options.\n * @returns Episode statistics.\n */\n async getEpisodeStats(\n agentId: string,\n options?: RequestOptions,\n ): Promise<EpisodeStatsResponse> {\n return this.http.get<EpisodeStatsResponse>(`${BASE}/${agentId}/episodes/stats`, options);\n }\n\n // --- HTN Planning ---\n\n /**\n * Add an HTN method to an agent.\n *\n * @param request - HTN method definition.\n * @param options - Per-call request options.\n * @returns The created method response.\n */\n async addHtnMethod(\n request: AddHtnMethodRequest,\n options?: RequestOptions,\n ): Promise<AddHtnMethodResponse> {\n return this.http.post<AddHtnMethodResponse>(`${BASE}/htn/methods`, request, options);\n }\n\n // --- Messaging ---\n\n /**\n * Send a message to another agent.\n *\n * @param request - Message to send.\n * @param options - Per-call request options.\n * @returns The send result.\n */\n async sendMessage(\n request: SendMessageRequest,\n options?: RequestOptions,\n ): Promise<SendMessageResponse> {\n return this.http.post<SendMessageResponse>(`${BASE}/messages`, request, options);\n }\n\n /**\n * Broadcast a message to all agents.\n *\n * @param request - Message to broadcast.\n * @param options - Per-call request options.\n * @returns The broadcast result.\n */\n async broadcastMessage(\n request: BroadcastMessageRequest,\n options?: RequestOptions,\n ): Promise<BroadcastMessageResponse> {\n return this.http.post<BroadcastMessageResponse>(\n `${BASE}/messages/broadcast`,\n request,\n options,\n );\n }\n\n /**\n * Mark messages as read.\n *\n * @param request - Messages to mark as read.\n * @param options - Per-call request options.\n * @returns The result.\n */\n async markMessagesRead(\n request: MarkMessagesReadRequest,\n options?: RequestOptions,\n ): Promise<MarkMessagesReadResponse> {\n return this.http.post<MarkMessagesReadResponse>(\n `${BASE}/messages/read`,\n request,\n options,\n );\n }\n\n // --- Feedback ---\n\n /**\n * Provide feedback on an agent result.\n *\n * @param request - Feedback to provide.\n * @param options - Per-call request options.\n * @returns The feedback result.\n */\n async provideFeedback(\n request: ProvideFeedbackRequest,\n options?: RequestOptions,\n ): Promise<ProvideFeedbackResponse> {\n return this.http.post<ProvideFeedbackResponse>('/api/v1/cognitive/feedback', request, options);\n }\n\n // --- Integrated Cycle ---\n\n /**\n * Run a full integrated cognitive cycle (all 9 modules).\n *\n * @param request - Integrated cycle request with agent and tenant IDs.\n * @param options - Per-call request options.\n * @returns The integrated cycle outcome with duration.\n */\n async integratedCycle(\n request: RunIntegratedCycleRequest,\n options?: RequestOptions,\n ): Promise<RunIntegratedCycleResponse> {\n return this.http.post<RunIntegratedCycleResponse>(\n `${BASE}/integrated-cycle`,\n request,\n options,\n );\n }\n\n // --- KB Subscription ---\n\n /**\n * Subscribe an agent to knowledge base changes (HTTP-based).\n *\n * @param request - Subscription request with watched sorts/features.\n * @param options - Per-call request options.\n * @returns Subscription ID.\n */\n async subscribeToKb(\n request: SubscribeToKbRequest,\n options?: RequestOptions,\n ): Promise<SubscribeToKbResponse> {\n return this.http.post<SubscribeToKbResponse>(`${BASE}/subscribe`, request, options);\n }\n\n // --- Episode Recording ---\n\n /**\n * Record an episodic memory entry for an agent.\n *\n * @param request - Episode to record.\n * @param options - Per-call request options.\n * @returns The created episode ID.\n */\n async recordEpisode(\n request: RecordEpisodeRequest,\n options?: RequestOptions,\n ): Promise<RecordEpisodeResponse> {\n return this.http.post<RecordEpisodeResponse>(`${BASE}/episodes`, request, options);\n }\n\n // --- WebSocket Subscriptions ---\n\n /**\n * Subscribe to real-time events for a cognitive agent.\n *\n * @param agentId - Agent UUID.\n * @param handlers - Event handlers.\n * @returns An active subscription that can be closed.\n * @throws {Error} If no WebSocket client is configured.\n *\n * @remarks\n * Requires a WebSocket client to be configured on the main client.\n * Events are pushed in real-time as the agent processes its BDI cycle.\n */\n subscribeToEvents(agentId: string, handlers: AgentEventHandlers): AgentSubscription {\n if (!this.ws) {\n throw new Error(\n 'WebSocket client not configured. Pass a WebSocket-enabled config to use subscriptions.',\n );\n }\n\n const conn = this.ws.connect(`${BASE}/${agentId}/events`);\n\n if (handlers.onEvent) {\n conn.onMessage<AgentEvent>(handlers.onEvent);\n }\n if (handlers.onReconnect) {\n conn.onReconnect(handlers.onReconnect);\n }\n if (handlers.onError) {\n conn.onError(handlers.onError);\n }\n if (handlers.onClose) {\n conn.onClose(handlers.onClose);\n }\n\n return {\n close: () => conn.close(),\n get connected() {\n return conn.connected;\n },\n };\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): CognitiveClientWithMetadata {\n return new CognitiveClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link CognitiveClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class CognitiveClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async createAgent(\n request: CreateAgentRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<CreateAgentResponse>> {\n return this.http.requestWithMetadata<CreateAgentResponse>('POST', BASE, {\n body: request,\n options,\n });\n }\n\n async getAgent(\n agentId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<AgentStateDto>> {\n return this.http.requestWithMetadata<AgentStateDto>('GET', `${BASE}/${agentId}`, { options });\n }\n\n async deleteAgent(agentId: string, options?: RequestOptions): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('DELETE', `${BASE}/${agentId}`, { options });\n }\n\n async getState(\n agentId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<ExtendedAgentStateDto>> {\n return this.http.requestWithMetadata<ExtendedAgentStateDto>(\n 'GET',\n `${BASE}/${agentId}/state`,\n { options },\n );\n }\n\n async runCycle(\n request: RunCycleRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RunCycleResponse>> {\n return this.http.requestWithMetadata<RunCycleResponse>('POST', `${BASE}/cycle`, {\n body: request,\n options,\n });\n }\n\n async addBelief(\n request: AddBeliefRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<AddBeliefResponse>> {\n return this.http.requestWithMetadata<AddBeliefResponse>('POST', `${BASE}/beliefs`, {\n body: request,\n options,\n });\n }\n\n async addGoal(\n request: AddGoalRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<AddGoalResponse>> {\n return this.http.requestWithMetadata<AddGoalResponse>('POST', `${BASE}/goals`, {\n body: request,\n options,\n });\n }\n\n async addRule(\n request: AddCognitiveRuleRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<AddCognitiveRuleResponse>> {\n return this.http.requestWithMetadata<AddCognitiveRuleResponse>('POST', `${BASE}/rules`, {\n body: request,\n options,\n });\n }\n\n async addSort(\n request: CreateCognitiveSortRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<CreateCognitiveSortResponse>> {\n return this.http.requestWithMetadata<CreateCognitiveSortResponse>('POST', `${BASE}/sorts`, {\n body: request,\n options,\n });\n }\n\n async recallEpisodes(\n request: RecallEpisodesRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RecallEpisodesResponse>> {\n return this.http.requestWithMetadata<RecallEpisodesResponse>(\n 'POST',\n `${BASE}/episodes/recall`,\n { body: request, options },\n );\n }\n\n async getEpisodeStats(\n agentId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<EpisodeStatsResponse>> {\n return this.http.requestWithMetadata<EpisodeStatsResponse>(\n 'GET',\n `${BASE}/${agentId}/episodes/stats`,\n { options },\n );\n }\n\n async addHtnMethod(\n request: AddHtnMethodRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<AddHtnMethodResponse>> {\n return this.http.requestWithMetadata<AddHtnMethodResponse>('POST', `${BASE}/htn/methods`, {\n body: request,\n options,\n });\n }\n\n async sendMessage(\n request: SendMessageRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SendMessageResponse>> {\n return this.http.requestWithMetadata<SendMessageResponse>('POST', `${BASE}/messages`, {\n body: request,\n options,\n });\n }\n\n async broadcastMessage(\n request: BroadcastMessageRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<BroadcastMessageResponse>> {\n return this.http.requestWithMetadata<BroadcastMessageResponse>(\n 'POST',\n `${BASE}/messages/broadcast`,\n { body: request, options },\n );\n }\n\n async markMessagesRead(\n request: MarkMessagesReadRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<MarkMessagesReadResponse>> {\n return this.http.requestWithMetadata<MarkMessagesReadResponse>(\n 'POST',\n `${BASE}/messages/read`,\n { body: request, options },\n );\n }\n\n async provideFeedback(\n request: ProvideFeedbackRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ProvideFeedbackResponse>> {\n return this.http.requestWithMetadata<ProvideFeedbackResponse>('POST', '/api/v1/cognitive/feedback', {\n body: request,\n options,\n });\n }\n\n async integratedCycle(\n request: RunIntegratedCycleRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RunIntegratedCycleResponse>> {\n return this.http.requestWithMetadata<RunIntegratedCycleResponse>(\n 'POST',\n `${BASE}/integrated-cycle`,\n { body: request, options },\n );\n }\n\n async subscribeToKb(\n request: SubscribeToKbRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SubscribeToKbResponse>> {\n return this.http.requestWithMetadata<SubscribeToKbResponse>('POST', `${BASE}/subscribe`, {\n body: request,\n options,\n });\n }\n\n async recordEpisode(\n request: RecordEpisodeRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RecordEpisodeResponse>> {\n return this.http.requestWithMetadata<RecordEpisodeResponse>('POST', `${BASE}/episodes`, {\n body: request,\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n FuzzyUnifyRequest,\n FuzzyUnifyResponse,\n FuzzyMergeRequest,\n FuzzyMergeResponse,\n FuzzySubsumptionRequest,\n FuzzySubsumptionResponse,\n FuzzySearchTopKRequest,\n FuzzySearchTopKResponse,\n PredictEffectRequest,\n PredictEffectResponse,\n} from '../types/fuzzy.js';\n\nconst BASE = '/api/v1/fuzzy';\n\n/**\n * Resource client for fuzzy operations.\n *\n * @remarks\n * Provides fuzzy unification, merging, subsumption checking,\n * top-K similarity search, and effect prediction.\n */\nexport class FuzzyClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Fuzzy unify two terms.\n *\n * @param request - Unification request with two term IDs and threshold.\n * @param options - Per-call request options.\n * @returns Unification degree, confidence, and unified term.\n */\n async fuzzyUnify(\n request: FuzzyUnifyRequest,\n options?: RequestOptions,\n ): Promise<FuzzyUnifyResponse> {\n return this.http.post<FuzzyUnifyResponse>(`${BASE}/unify`, request, options);\n }\n\n /**\n * Fuzzy merge two terms.\n *\n * @param request - Merge request with two term IDs and strategy.\n * @param options - Per-call request options.\n * @returns Merge result with computation time and feature count.\n */\n async fuzzyMerge(\n request: FuzzyMergeRequest,\n options?: RequestOptions,\n ): Promise<FuzzyMergeResponse> {\n return this.http.post<FuzzyMergeResponse>(`${BASE}/merge`, request, options);\n }\n\n /**\n * Check fuzzy subsumption between two terms.\n *\n * @param request - Subsumption request with general and specific term IDs.\n * @param options - Per-call request options.\n * @returns Subsumption degree and whether the relationship holds.\n */\n async fuzzySubsumption(\n request: FuzzySubsumptionRequest,\n options?: RequestOptions,\n ): Promise<FuzzySubsumptionResponse> {\n return this.http.post<FuzzySubsumptionResponse>(`${BASE}/subsumption`, request, options);\n }\n\n /**\n * Search for top-K most similar terms.\n *\n * @param request - Search request with query term and K.\n * @param options - Per-call request options.\n * @returns Top-K results sorted by similarity degree.\n */\n async searchTopK(\n request: FuzzySearchTopKRequest,\n options?: RequestOptions,\n ): Promise<FuzzySearchTopKResponse> {\n return this.http.post<FuzzySearchTopKResponse>(`${BASE}/search/top-k`, request, options);\n }\n\n /**\n * Predict the effect for a query point.\n *\n * @param request - Effect prediction request.\n * @param options - Per-call request options.\n * @returns Predicted effect with confidence and proof trace.\n */\n async predictEffect(\n request: PredictEffectRequest,\n options?: RequestOptions,\n ): Promise<PredictEffectResponse> {\n return this.http.post<PredictEffectResponse>(`${BASE}/predict-effect`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): FuzzyClientWithMetadata {\n return new FuzzyClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link FuzzyClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class FuzzyClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async fuzzyUnify(\n request: FuzzyUnifyRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<FuzzyUnifyResponse>> {\n return this.http.requestWithMetadata<FuzzyUnifyResponse>('POST', `${BASE}/unify`, {\n body: request,\n options,\n });\n }\n\n async fuzzyMerge(\n request: FuzzyMergeRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<FuzzyMergeResponse>> {\n return this.http.requestWithMetadata<FuzzyMergeResponse>('POST', `${BASE}/merge`, {\n body: request,\n options,\n });\n }\n\n async fuzzySubsumption(\n request: FuzzySubsumptionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<FuzzySubsumptionResponse>> {\n return this.http.requestWithMetadata<FuzzySubsumptionResponse>(\n 'POST',\n `${BASE}/subsumption`,\n { body: request, options },\n );\n }\n\n async searchTopK(\n request: FuzzySearchTopKRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<FuzzySearchTopKResponse>> {\n return this.http.requestWithMetadata<FuzzySearchTopKResponse>(\n 'POST',\n `${BASE}/search/top-k`,\n { body: request, options },\n );\n }\n\n async predictEffect(\n request: PredictEffectRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<PredictEffectResponse>> {\n return this.http.requestWithMetadata<PredictEffectResponse>(\n 'POST',\n `${BASE}/predict-effect`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n SolveConstraintRequest,\n SolveConstraintResponse,\n ConstraintGraphRequest,\n ConstraintGraphResponse,\n CreateConstraintSessionRequest,\n ConstraintSessionStatus,\n AddConstraintsRequest,\n BindVariablesRequest,\n BindVariablesResponse,\n} from '../types/constraints.js';\n\nconst BASE = '/api/v1/constraints';\nconst SESSION_BASE = '/api/v1/constraint-sessions';\n\n/**\n * Resource client for constraint operations.\n *\n * @remarks\n * Provides arithmetic constraint solving and constraint graph visualization.\n */\nexport class ConstraintsClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Solve arithmetic constraints.\n *\n * @param request - Constraints to solve with optional initial bindings.\n * @param options - Per-call request options.\n * @returns Solver result with variable bindings.\n */\n async solve(\n request: SolveConstraintRequest,\n options?: RequestOptions,\n ): Promise<SolveConstraintResponse> {\n return this.http.post<SolveConstraintResponse>(`${BASE}/solve`, request, options);\n }\n\n /**\n * Get constraint graph visualization.\n *\n * @param request - Graph request with optional focus term and flags.\n * @param options - Per-call request options.\n * @returns Constraint graph with statistics and optional cycle/FD domain data.\n */\n async getGraph(\n request: ConstraintGraphRequest,\n options?: RequestOptions,\n ): Promise<ConstraintGraphResponse> {\n return this.http.post<ConstraintGraphResponse>(`${BASE}/graph`, request, options);\n }\n\n // --- Session Management ---\n\n /**\n * Create a constraint session.\n *\n * @param request - Session creation parameters.\n * @param options - Per-call request options.\n * @returns Session status.\n */\n async createSession(\n request: CreateConstraintSessionRequest,\n options?: RequestOptions,\n ): Promise<ConstraintSessionStatus> {\n return this.http.post<ConstraintSessionStatus>(SESSION_BASE, request, options);\n }\n\n /**\n * Get a constraint session by ID.\n *\n * @param sessionId - Session ID.\n * @param options - Per-call request options.\n * @returns Session status.\n */\n async getSession(sessionId: string, options?: RequestOptions): Promise<ConstraintSessionStatus> {\n return this.http.get<ConstraintSessionStatus>(`${SESSION_BASE}/${sessionId}`, options);\n }\n\n /**\n * Add constraints to a session.\n *\n * @param sessionId - Session ID.\n * @param request - Constraints to add.\n * @param options - Per-call request options.\n * @returns Updated session status.\n */\n async addConstraints(\n sessionId: string,\n request: AddConstraintsRequest,\n options?: RequestOptions,\n ): Promise<ConstraintSessionStatus> {\n return this.http.post<ConstraintSessionStatus>(\n `${SESSION_BASE}/${sessionId}/constraints`,\n request,\n options,\n );\n }\n\n /**\n * Bind variables in a constraint session.\n *\n * @param sessionId - Session ID.\n * @param request - Variable bindings.\n * @param options - Per-call request options.\n * @returns Binding result.\n */\n async bindVariables(\n sessionId: string,\n request: BindVariablesRequest,\n options?: RequestOptions,\n ): Promise<BindVariablesResponse> {\n return this.http.post<BindVariablesResponse>(\n `${SESSION_BASE}/${sessionId}/bindings`,\n request,\n options,\n );\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): ConstraintsClientWithMetadata {\n return new ConstraintsClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link ConstraintsClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class ConstraintsClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async solve(\n request: SolveConstraintRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SolveConstraintResponse>> {\n return this.http.requestWithMetadata<SolveConstraintResponse>('POST', `${BASE}/solve`, {\n body: request,\n options,\n });\n }\n\n async getGraph(\n request: ConstraintGraphRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ConstraintGraphResponse>> {\n return this.http.requestWithMetadata<ConstraintGraphResponse>('POST', `${BASE}/graph`, {\n body: request,\n options,\n });\n }\n\n async createSession(\n request: CreateConstraintSessionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ConstraintSessionStatus>> {\n return this.http.requestWithMetadata<ConstraintSessionStatus>('POST', SESSION_BASE, {\n body: request,\n options,\n });\n }\n\n async getSession(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<ConstraintSessionStatus>> {\n return this.http.requestWithMetadata<ConstraintSessionStatus>(\n 'GET',\n `${SESSION_BASE}/${sessionId}`,\n { options },\n );\n }\n\n async addConstraints(\n sessionId: string,\n request: AddConstraintsRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ConstraintSessionStatus>> {\n return this.http.requestWithMetadata<ConstraintSessionStatus>(\n 'POST',\n `${SESSION_BASE}/${sessionId}/constraints`,\n { body: request, options },\n );\n }\n\n async bindVariables(\n sessionId: string,\n request: BindVariablesRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<BindVariablesResponse>> {\n return this.http.requestWithMetadata<BindVariablesResponse>(\n 'POST',\n `${SESSION_BASE}/${sessionId}/bindings`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n CreateRootNamespaceRequest,\n CreateChildNamespaceRequest,\n AddImportRequest,\n UpdateMetadataRequest,\n NamespaceDto,\n} from '../types/namespaces.js';\n\nconst BASE = '/api/v1/namespaces';\n\n/**\n * Resource client for namespace operations.\n *\n * @remarks\n * Provides CRUD operations for namespaces, import management,\n * and metadata updates.\n */\nexport class NamespacesClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Create a root namespace.\n *\n * @param request - Root namespace creation parameters.\n * @param options - Per-call request options.\n * @returns The created namespace.\n */\n async createRoot(\n request: CreateRootNamespaceRequest,\n options?: RequestOptions,\n ): Promise<NamespaceDto> {\n return this.http.post<NamespaceDto>(BASE, request, options);\n }\n\n /**\n * Create a child namespace.\n *\n * @param parentId - Parent namespace UUID.\n * @param request - Child namespace creation parameters.\n * @param options - Per-call request options.\n * @returns The created namespace.\n */\n async createChild(\n parentId: string,\n request: CreateChildNamespaceRequest,\n options?: RequestOptions,\n ): Promise<NamespaceDto> {\n return this.http.post<NamespaceDto>(`${BASE}/${parentId}/children`, request, options);\n }\n\n /**\n * Get a namespace by ID.\n *\n * @param namespaceId - Namespace UUID.\n * @param options - Per-call request options.\n * @returns The namespace.\n */\n async get(namespaceId: string, options?: RequestOptions): Promise<NamespaceDto> {\n return this.http.get<NamespaceDto>(`${BASE}/${namespaceId}`, options);\n }\n\n /**\n * Delete a namespace.\n *\n * @param namespaceId - Namespace UUID.\n * @param options - Per-call request options.\n */\n async delete(namespaceId: string, options?: RequestOptions): Promise<void> {\n await this.http.delete(`${BASE}/${namespaceId}`, options);\n }\n\n /**\n * List all namespaces.\n *\n * @param options - Per-call request options.\n * @returns Array of namespaces.\n */\n async list(options?: RequestOptions): Promise<NamespaceDto[]> {\n return this.http.get<NamespaceDto[]>(BASE, options);\n }\n\n /**\n * Add an import to a namespace.\n *\n * @param namespaceId - Namespace UUID.\n * @param request - Import request with source namespace ID.\n * @param options - Per-call request options.\n */\n async addImport(\n namespaceId: string,\n request: AddImportRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/${namespaceId}/imports`, request, options);\n }\n\n /**\n * Update namespace metadata.\n *\n * @param namespaceId - Namespace UUID.\n * @param request - Metadata update request.\n * @param options - Per-call request options.\n * @returns The updated namespace.\n */\n async updateMetadata(\n namespaceId: string,\n request: UpdateMetadataRequest,\n options?: RequestOptions,\n ): Promise<NamespaceDto> {\n return this.http.put<NamespaceDto>(`${BASE}/${namespaceId}/metadata`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): NamespacesClientWithMetadata {\n return new NamespacesClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link NamespacesClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class NamespacesClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async createRoot(\n request: CreateRootNamespaceRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<NamespaceDto>> {\n return this.http.requestWithMetadata<NamespaceDto>('POST', BASE, {\n body: request,\n options,\n });\n }\n\n async createChild(\n parentId: string,\n request: CreateChildNamespaceRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<NamespaceDto>> {\n return this.http.requestWithMetadata<NamespaceDto>(\n 'POST',\n `${BASE}/${parentId}/children`,\n { body: request, options },\n );\n }\n\n async get(\n namespaceId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<NamespaceDto>> {\n return this.http.requestWithMetadata<NamespaceDto>('GET', `${BASE}/${namespaceId}`, {\n options,\n });\n }\n\n async delete(namespaceId: string, options?: RequestOptions): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('DELETE', `${BASE}/${namespaceId}`, { options });\n }\n\n async list(options?: RequestOptions): Promise<ApiResponse<NamespaceDto[]>> {\n return this.http.requestWithMetadata<NamespaceDto[]>('GET', BASE, { options });\n }\n\n async addImport(\n namespaceId: string,\n request: AddImportRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/${namespaceId}/imports`, {\n body: request,\n options,\n });\n }\n\n async updateMetadata(\n namespaceId: string,\n request: UpdateMetadataRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<NamespaceDto>> {\n return this.http.requestWithMetadata<NamespaceDto>(\n 'PUT',\n `${BASE}/${namespaceId}/metadata`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n CreateCollectionRequest,\n UpdateCollectionRequest,\n CollectionDto,\n} from '../types/collections.js';\n\nconst BASE = '/api/v1/collections';\n\n/**\n * Resource client for collection operations.\n *\n * @remarks\n * Provides CRUD operations for collections, which organize terms\n * into hierarchical groupings with metadata and tags.\n */\nexport class CollectionsClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Create a collection.\n *\n * @param request - Collection creation parameters.\n * @param options - Per-call request options.\n * @returns The created collection.\n */\n async create(\n request: CreateCollectionRequest,\n options?: RequestOptions,\n ): Promise<CollectionDto> {\n return this.http.post<CollectionDto>(BASE, request, options);\n }\n\n /**\n * Get a collection by ID.\n *\n * @param collectionId - Collection UUID.\n * @param options - Per-call request options.\n * @returns The collection.\n */\n async get(collectionId: string, options?: RequestOptions): Promise<CollectionDto> {\n return this.http.get<CollectionDto>(`${BASE}/${collectionId}`, options);\n }\n\n /**\n * Update a collection.\n *\n * @param collectionId - Collection UUID.\n * @param request - Update parameters.\n * @param options - Per-call request options.\n * @returns The updated collection.\n */\n async update(\n collectionId: string,\n request: UpdateCollectionRequest,\n options?: RequestOptions,\n ): Promise<CollectionDto> {\n return this.http.put<CollectionDto>(`${BASE}/${collectionId}`, request, options);\n }\n\n /**\n * Delete a collection.\n *\n * @param collectionId - Collection UUID.\n * @param options - Per-call request options.\n */\n async delete(collectionId: string, options?: RequestOptions): Promise<void> {\n await this.http.delete(`${BASE}/${collectionId}`, options);\n }\n\n /**\n * List all collections.\n *\n * @param options - Per-call request options.\n * @returns Array of collections.\n */\n async list(options?: RequestOptions): Promise<CollectionDto[]> {\n return this.http.get<CollectionDto[]>(BASE, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): CollectionsClientWithMetadata {\n return new CollectionsClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link CollectionsClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class CollectionsClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async create(\n request: CreateCollectionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<CollectionDto>> {\n return this.http.requestWithMetadata<CollectionDto>('POST', BASE, {\n body: request,\n options,\n });\n }\n\n async get(\n collectionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<CollectionDto>> {\n return this.http.requestWithMetadata<CollectionDto>('GET', `${BASE}/${collectionId}`, {\n options,\n });\n }\n\n async update(\n collectionId: string,\n request: UpdateCollectionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<CollectionDto>> {\n return this.http.requestWithMetadata<CollectionDto>('PUT', `${BASE}/${collectionId}`, {\n body: request,\n options,\n });\n }\n\n async delete(\n collectionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('DELETE', `${BASE}/${collectionId}`, { options });\n }\n\n async list(options?: RequestOptions): Promise<ApiResponse<CollectionDto[]>> {\n return this.http.requestWithMetadata<CollectionDto[]>('GET', BASE, { options });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n CreateExecutionSessionRequest,\n ExecutionSessionResponse,\n BacktrackResponse,\n GoalStackResponse,\n ResiduateGoalRequest,\n ResiduateGoalResponse,\n BindTermRequest,\n BindTermResponse,\n ReleaseResiduationsRequest,\n ReleaseResiduationsResponse,\n AppendResiduationsRequest,\n AppendResiduationsResponse,\n GetResiduationsRequest,\n GetResiduationsResponse,\n} from '../types/execution.js';\n\nconst BASE = '/api/v1/execution';\n\n/**\n * Resource client for execution session operations.\n *\n * @remarks\n * Provides session management, backtracking, and goal stack inspection\n * for the WAM-style execution engine.\n */\nexport class ExecutionClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Create a new execution session.\n *\n * @param request - Session creation parameters.\n * @param options - Per-call request options.\n * @returns The created session.\n */\n async createSession(\n request: CreateExecutionSessionRequest,\n options?: RequestOptions,\n ): Promise<ExecutionSessionResponse> {\n return this.http.post<ExecutionSessionResponse>(`${BASE}/sessions`, request, options);\n }\n\n /**\n * Get an execution session.\n *\n * @param sessionId - Session ID.\n * @param options - Per-call request options.\n * @returns The session state.\n */\n async getSession(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ExecutionSessionResponse> {\n return this.http.get<ExecutionSessionResponse>(`${BASE}/sessions/${sessionId}`, options);\n }\n\n /**\n * Delete an execution session.\n *\n * @param sessionId - Session ID.\n * @param options - Per-call request options.\n */\n async deleteSession(sessionId: string, options?: RequestOptions): Promise<void> {\n await this.http.delete(`${BASE}/sessions/${sessionId}`, options);\n }\n\n /**\n * Backtrack the session (undo recent operations).\n *\n * @param sessionId - Session ID.\n * @param options - Per-call request options.\n * @returns Backtrack result with undone entries.\n */\n async backtrack(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<BacktrackResponse> {\n return this.http.post<BacktrackResponse>(\n `${BASE}/sessions/${sessionId}/backtrack`,\n undefined,\n options,\n );\n }\n\n /**\n * Get the current goal stack.\n *\n * @param sessionId - Session ID.\n * @param options - Per-call request options.\n * @returns Goal stack state.\n */\n async getGoalStack(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<GoalStackResponse> {\n return this.http.get<GoalStackResponse>(`${BASE}/sessions/${sessionId}/goals`, options);\n }\n\n /**\n * Get the session trail (undo log).\n *\n * @param sessionId - Session ID.\n * @param options - Per-call request options.\n * @returns Trail entries.\n */\n async getTrail(sessionId: string, options?: RequestOptions): Promise<unknown> {\n return this.http.get(`${BASE}/sessions/${sessionId}/trail`, options);\n }\n\n /**\n * Get choice points in the session.\n *\n * @param sessionId - Session ID.\n * @param options - Per-call request options.\n * @returns Choice point data.\n */\n async getChoicePoints(sessionId: string, options?: RequestOptions): Promise<unknown> {\n return this.http.get(`${BASE}/sessions/${sessionId}/choice-points`, options);\n }\n\n // --- Residuation ---\n\n /**\n * Residuate a goal (suspend until data becomes available).\n *\n * @param sessionId - Session ID.\n * @param request - Residuation request.\n * @param options - Per-call request options.\n * @returns Residuation result.\n */\n async residuate(\n sessionId: string,\n request: ResiduateGoalRequest,\n options?: RequestOptions,\n ): Promise<ResiduateGoalResponse> {\n return this.http.post<ResiduateGoalResponse>(\n `${BASE}/sessions/${sessionId}/residuate`,\n request,\n options,\n );\n }\n\n /**\n * Bind a term with sort and feature values.\n *\n * @param sessionId - Session ID.\n * @param request - Binding request.\n * @param options - Per-call request options.\n * @returns Binding result with evaluation results from released residuations.\n */\n async bind(\n sessionId: string,\n request: BindTermRequest,\n options?: RequestOptions,\n ): Promise<BindTermResponse> {\n return this.http.post<BindTermResponse>(\n `${BASE}/sessions/${sessionId}/bindings`,\n request,\n options,\n );\n }\n\n /**\n * Release residuations for a term (attempt evaluation).\n *\n * @param sessionId - Session ID.\n * @param request - Release request.\n * @param options - Per-call request options.\n * @returns Released goals and evaluation results.\n */\n async releaseResiduations(\n sessionId: string,\n request: ReleaseResiduationsRequest,\n options?: RequestOptions,\n ): Promise<ReleaseResiduationsResponse> {\n return this.http.post<ReleaseResiduationsResponse>(\n `${BASE}/sessions/${sessionId}/residuate/release`,\n request,\n options,\n );\n }\n\n /**\n * Append residuations from a source term to a target term.\n *\n * @param sessionId - Session ID.\n * @param request - Append request.\n * @param options - Per-call request options.\n * @returns Append result.\n */\n async appendResiduations(\n sessionId: string,\n request: AppendResiduationsRequest,\n options?: RequestOptions,\n ): Promise<AppendResiduationsResponse> {\n return this.http.post<AppendResiduationsResponse>(\n `${BASE}/sessions/${sessionId}/residuations/append`,\n request,\n options,\n );\n }\n\n /**\n * Get residuations for a term.\n *\n * @param sessionId - Session ID.\n * @param request - Get residuations request.\n * @param options - Per-call request options.\n * @returns Residuation details.\n */\n async getResiduations(\n sessionId: string,\n request: GetResiduationsRequest,\n options?: RequestOptions,\n ): Promise<GetResiduationsResponse> {\n return this.http.post<GetResiduationsResponse>(\n `${BASE}/sessions/${sessionId}/residuations`,\n request,\n options,\n );\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): ExecutionClientWithMetadata {\n return new ExecutionClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link ExecutionClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class ExecutionClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async createSession(\n request: CreateExecutionSessionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ExecutionSessionResponse>> {\n return this.http.requestWithMetadata<ExecutionSessionResponse>(\n 'POST',\n `${BASE}/sessions`,\n { body: request, options },\n );\n }\n\n async getSession(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<ExecutionSessionResponse>> {\n return this.http.requestWithMetadata<ExecutionSessionResponse>(\n 'GET',\n `${BASE}/sessions/${sessionId}`,\n { options },\n );\n }\n\n async deleteSession(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('DELETE', `${BASE}/sessions/${sessionId}`, {\n options,\n });\n }\n\n async backtrack(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<BacktrackResponse>> {\n return this.http.requestWithMetadata<BacktrackResponse>(\n 'POST',\n `${BASE}/sessions/${sessionId}/backtrack`,\n { body: undefined, options },\n );\n }\n\n async getGoalStack(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<GoalStackResponse>> {\n return this.http.requestWithMetadata<GoalStackResponse>(\n 'GET',\n `${BASE}/sessions/${sessionId}/goals`,\n { options },\n );\n }\n\n async getTrail(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>(\n 'GET',\n `${BASE}/sessions/${sessionId}/trail`,\n { options },\n );\n }\n\n async getChoicePoints(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>(\n 'GET',\n `${BASE}/sessions/${sessionId}/choice-points`,\n { options },\n );\n }\n\n async residuate(\n sessionId: string,\n request: ResiduateGoalRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ResiduateGoalResponse>> {\n return this.http.requestWithMetadata<ResiduateGoalResponse>(\n 'POST',\n `${BASE}/sessions/${sessionId}/residuate`,\n { body: request, options },\n );\n }\n\n async bind(\n sessionId: string,\n request: BindTermRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<BindTermResponse>> {\n return this.http.requestWithMetadata<BindTermResponse>(\n 'POST',\n `${BASE}/sessions/${sessionId}/bindings`,\n { body: request, options },\n );\n }\n\n async releaseResiduations(\n sessionId: string,\n request: ReleaseResiduationsRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ReleaseResiduationsResponse>> {\n return this.http.requestWithMetadata<ReleaseResiduationsResponse>(\n 'POST',\n `${BASE}/sessions/${sessionId}/residuate/release`,\n { body: request, options },\n );\n }\n\n async appendResiduations(\n sessionId: string,\n request: AppendResiduationsRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<AppendResiduationsResponse>> {\n return this.http.requestWithMetadata<AppendResiduationsResponse>(\n 'POST',\n `${BASE}/sessions/${sessionId}/residuations/append`,\n { body: request, options },\n );\n }\n\n async getResiduations(\n sessionId: string,\n request: GetResiduationsRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<GetResiduationsResponse>> {\n return this.http.requestWithMetadata<GetResiduationsResponse>(\n 'POST',\n `${BASE}/sessions/${sessionId}/residuations`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n CausalAncestorRequest,\n CausalAncestorResponse,\n CausesRequest,\n CausesResponse,\n CounterfactualRequest,\n CounterfactualResponse,\n DSeparatedRequest,\n DSeparatedResponse,\n InterventionRequest,\n InterventionResponse,\n GetCausalModelResponse,\n AddCausalRelationRequest,\n AddCausalRelationResponse,\n RootCauseAnalysisRequest,\n RootCauseAnalysisResponse,\n RootCauseWithProofResponse,\n} from '../types/causal.js';\n\nconst BASE = '/api/v1/causal';\n\n/**\n * Resource client for Pearl's causal hierarchy operations.\n *\n * @remarks\n * Provides causal reasoning operations including ancestry checks,\n * direct causation, counterfactual evaluation, d-separation,\n * do-calculus interventions, causal model management, and root cause analysis.\n */\nexport class CausalClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Check if one variable is a causal ancestor of another.\n *\n * @param request - Ancestor check request with ancestor and descendant variables.\n * @param options - Per-call request options.\n * @returns Ancestry result with path and certainty.\n */\n async checkAncestor(\n request: CausalAncestorRequest,\n options?: RequestOptions,\n ): Promise<CausalAncestorResponse> {\n return this.http.post<CausalAncestorResponse>(`${BASE}/ancestor`, request, options);\n }\n\n /**\n * Check if one variable directly causes another.\n *\n * @param request - Causes check request with cause and effect variables.\n * @param options - Per-call request options.\n * @returns Whether the causal relationship exists with certainty.\n */\n async checkCauses(\n request: CausesRequest,\n options?: RequestOptions,\n ): Promise<CausesResponse> {\n return this.http.post<CausesResponse>(`${BASE}/causes`, request, options);\n }\n\n /**\n * Evaluate a counterfactual query using Pearl's three-step algorithm.\n *\n * @param request - Counterfactual request with antecedent, consequent, and evidence.\n * @param options - Per-call request options.\n * @returns Counterfactual result with trace of abduction, action, and prediction.\n */\n async counterfactual(\n request: CounterfactualRequest,\n options?: RequestOptions,\n ): Promise<CounterfactualResponse> {\n return this.http.post<CounterfactualResponse>(`${BASE}/counterfactual`, request, options);\n }\n\n /**\n * Check d-separation between two variables given a conditioning set.\n *\n * @param request - D-separation request with variables and conditioning set.\n * @param options - Per-call request options.\n * @returns Whether the variables are d-separated and active paths.\n */\n async checkDSeparated(\n request: DSeparatedRequest,\n options?: RequestOptions,\n ): Promise<DSeparatedResponse> {\n return this.http.post<DSeparatedResponse>(`${BASE}/d-separated`, request, options);\n }\n\n /**\n * Apply a do-calculus intervention and query a variable.\n *\n * @param request - Intervention request with variable, value, and query.\n * @param options - Per-call request options.\n * @returns Intervention result with query output.\n */\n async intervene(\n request: InterventionRequest,\n options?: RequestOptions,\n ): Promise<InterventionResponse> {\n return this.http.post<InterventionResponse>(`${BASE}/intervention`, request, options);\n }\n\n /**\n * Get the current causal model (all variables and edges).\n *\n * @param options - Per-call request options.\n * @returns The causal model with variables and edges.\n */\n async getModel(options?: RequestOptions): Promise<GetCausalModelResponse> {\n return this.http.get<GetCausalModelResponse>(`${BASE}/model`, options);\n }\n\n /**\n * Add a causal relation to the model.\n *\n * @param request - Relation request with cause, effect, and optional certainty.\n * @param options - Per-call request options.\n * @returns Success status and created rule ID.\n */\n async addRelation(\n request: AddCausalRelationRequest,\n options?: RequestOptions,\n ): Promise<AddCausalRelationResponse> {\n return this.http.post<AddCausalRelationResponse>(`${BASE}/relations`, request, options);\n }\n\n /**\n * Perform root cause analysis for an effect.\n *\n * @param request - Root cause request with effect and optional max depth.\n * @param options - Per-call request options.\n * @returns Root causes and causal chains.\n */\n async rootCause(\n request: RootCauseAnalysisRequest,\n options?: RequestOptions,\n ): Promise<RootCauseAnalysisResponse> {\n return this.http.post<RootCauseAnalysisResponse>(`${BASE}/root-cause`, request, options);\n }\n\n /**\n * Perform root cause analysis with a proof tree.\n *\n * @param request - Root cause request with effect and optional max depth.\n * @param options - Per-call request options.\n * @returns Root causes, causal chains, and proof tree.\n */\n async rootCauseWithProof(\n request: RootCauseAnalysisRequest,\n options?: RequestOptions,\n ): Promise<RootCauseWithProofResponse> {\n return this.http.post<RootCauseWithProofResponse>(\n `${BASE}/root-cause-with-proof`,\n request,\n options,\n );\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): CausalClientWithMetadata {\n return new CausalClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link CausalClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class CausalClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async checkAncestor(\n request: CausalAncestorRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<CausalAncestorResponse>> {\n return this.http.requestWithMetadata<CausalAncestorResponse>('POST', `${BASE}/ancestor`, {\n body: request,\n options,\n });\n }\n\n async checkCauses(\n request: CausesRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<CausesResponse>> {\n return this.http.requestWithMetadata<CausesResponse>('POST', `${BASE}/causes`, {\n body: request,\n options,\n });\n }\n\n async counterfactual(\n request: CounterfactualRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<CounterfactualResponse>> {\n return this.http.requestWithMetadata<CounterfactualResponse>(\n 'POST',\n `${BASE}/counterfactual`,\n { body: request, options },\n );\n }\n\n async checkDSeparated(\n request: DSeparatedRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<DSeparatedResponse>> {\n return this.http.requestWithMetadata<DSeparatedResponse>('POST', `${BASE}/d-separated`, {\n body: request,\n options,\n });\n }\n\n async intervene(\n request: InterventionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<InterventionResponse>> {\n return this.http.requestWithMetadata<InterventionResponse>('POST', `${BASE}/intervention`, {\n body: request,\n options,\n });\n }\n\n async getModel(options?: RequestOptions): Promise<ApiResponse<GetCausalModelResponse>> {\n return this.http.requestWithMetadata<GetCausalModelResponse>('GET', `${BASE}/model`, {\n options,\n });\n }\n\n async addRelation(\n request: AddCausalRelationRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<AddCausalRelationResponse>> {\n return this.http.requestWithMetadata<AddCausalRelationResponse>('POST', `${BASE}/relations`, {\n body: request,\n options,\n });\n }\n\n async rootCause(\n request: RootCauseAnalysisRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RootCauseAnalysisResponse>> {\n return this.http.requestWithMetadata<RootCauseAnalysisResponse>(\n 'POST',\n `${BASE}/root-cause`,\n { body: request, options },\n );\n }\n\n async rootCauseWithProof(\n request: RootCauseAnalysisRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RootCauseWithProofResponse>> {\n return this.http.requestWithMetadata<RootCauseWithProofResponse>(\n 'POST',\n `${BASE}/root-cause-with-proof`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n IngestDocumentRequest,\n IngestDocumentResponse,\n IngestDocumentBatchRequest,\n IngestDocumentBatchResponse,\n IngestMarkdownRequest,\n IngestMarkdownResponse,\n IngestMarkdownBatchRequest,\n IngestRdfRequest,\n IngestRdfResponse,\n ListIngestionSessionsResponse,\n StartIngestionSessionRequest,\n IngestionSessionResponse,\n ListIncompleteDocumentsResponse,\n ResumeDocumentIngestionRequest,\n ResumeDocumentIngestionResponse,\n} from '../types/ingestion.js';\n\nconst BASE = '/api/v1/ingest';\n\n/**\n * Resource client for document, markdown, and RDF ingestion.\n *\n * @remarks\n * Provides ingestion of documents (with OCR), markdown content,\n * and RDF data. Supports batch operations and session-based\n * tracking with resumption for incomplete documents.\n */\nexport class IngestionClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Ingest a single document.\n *\n * @param request - Document ingestion request with source, config, and owner.\n * @param options - Per-call request options.\n * @returns Ingestion result with stats, metadata, and parse info.\n */\n async ingestDocument(\n request: IngestDocumentRequest,\n options?: RequestOptions,\n ): Promise<IngestDocumentResponse> {\n return this.http.post<IngestDocumentResponse>(`${BASE}/document`, request, options);\n }\n\n /**\n * Ingest a batch of documents.\n *\n * @param request - Batch ingestion request with documents, config, and owner.\n * @param options - Per-call request options.\n * @returns Batch results with per-document status.\n */\n async ingestDocumentBatch(\n request: IngestDocumentBatchRequest,\n options?: RequestOptions,\n ): Promise<IngestDocumentBatchResponse> {\n return this.http.post<IngestDocumentBatchResponse>(\n `${BASE}/document/batch`,\n request,\n options,\n );\n }\n\n /**\n * Ingest markdown content.\n *\n * @param request - Markdown ingestion request with content and owner.\n * @param options - Per-call request options.\n * @returns Ingestion statistics and review items.\n */\n async ingestMarkdown(\n request: IngestMarkdownRequest,\n options?: RequestOptions,\n ): Promise<IngestMarkdownResponse> {\n return this.http.post<IngestMarkdownResponse>(`${BASE}/markdown`, request, options);\n }\n\n /**\n * Ingest a batch of markdown documents.\n *\n * @param request - Batch markdown ingestion request with documents and owner.\n * @param options - Per-call request options.\n * @returns Ingestion statistics and review items.\n */\n async ingestMarkdownBatch(\n request: IngestMarkdownBatchRequest,\n options?: RequestOptions,\n ): Promise<IngestMarkdownResponse> {\n return this.http.post<IngestMarkdownResponse>(`${BASE}/markdown/batch`, request, options);\n }\n\n /**\n * Ingest RDF content (Turtle, N-Triples, RDF/XML, or JSON-LD).\n *\n * @param request - RDF ingestion request with content, format, and owner.\n * @param options - Per-call request options.\n * @returns Created sorts and terms from the RDF data.\n */\n async ingestRdf(\n request: IngestRdfRequest,\n options?: RequestOptions,\n ): Promise<IngestRdfResponse> {\n return this.http.post<IngestRdfResponse>(`${BASE}/rdf`, request, options);\n }\n\n /**\n * List all ingestion sessions.\n *\n * @param options - Per-call request options.\n * @returns List of sessions with total count.\n */\n async listSessions(options?: RequestOptions): Promise<ListIngestionSessionsResponse> {\n return this.http.get<ListIngestionSessionsResponse>(`${BASE}/sessions`, options);\n }\n\n /**\n * Start a new ingestion session.\n *\n * @param request - Session start request with document IDs.\n * @param options - Per-call request options.\n * @returns The created session.\n */\n async startSession(\n request: StartIngestionSessionRequest,\n options?: RequestOptions,\n ): Promise<IngestionSessionResponse> {\n return this.http.post<IngestionSessionResponse>(`${BASE}/sessions`, request, options);\n }\n\n /**\n * Get an ingestion session by ID.\n *\n * @param sessionId - Session UUID.\n * @param options - Per-call request options.\n * @returns The session details.\n */\n async getSession(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<IngestionSessionResponse> {\n return this.http.get<IngestionSessionResponse>(`${BASE}/sessions/${sessionId}`, options);\n }\n\n /**\n * Delete an ingestion session.\n *\n * @param sessionId - Session UUID.\n * @param options - Per-call request options.\n */\n async deleteSession(sessionId: string, options?: RequestOptions): Promise<void> {\n await this.http.delete(`${BASE}/sessions/${sessionId}`, options);\n }\n\n /**\n * List incomplete documents in a session that can be resumed.\n *\n * @param sessionId - Session UUID.\n * @param options - Per-call request options.\n * @returns Incomplete documents with resume positions.\n */\n async listIncompleteDocuments(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ListIncompleteDocumentsResponse> {\n return this.http.get<ListIncompleteDocumentsResponse>(\n `${BASE}/sessions/${sessionId}/incomplete`,\n options,\n );\n }\n\n /**\n * Resume ingestion of an incomplete document.\n *\n * @param sessionId - Session UUID.\n * @param request - Resume request with document content and config.\n * @param options - Per-call request options.\n * @returns Resume result with stats and review items.\n */\n async resumeIngestion(\n sessionId: string,\n request: ResumeDocumentIngestionRequest,\n options?: RequestOptions,\n ): Promise<ResumeDocumentIngestionResponse> {\n return this.http.post<ResumeDocumentIngestionResponse>(\n `${BASE}/sessions/${sessionId}/resume`,\n request,\n options,\n );\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): IngestionClientWithMetadata {\n return new IngestionClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link IngestionClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class IngestionClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async ingestDocument(\n request: IngestDocumentRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<IngestDocumentResponse>> {\n return this.http.requestWithMetadata<IngestDocumentResponse>('POST', `${BASE}/document`, {\n body: request,\n options,\n });\n }\n\n async ingestDocumentBatch(\n request: IngestDocumentBatchRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<IngestDocumentBatchResponse>> {\n return this.http.requestWithMetadata<IngestDocumentBatchResponse>(\n 'POST',\n `${BASE}/document/batch`,\n { body: request, options },\n );\n }\n\n async ingestMarkdown(\n request: IngestMarkdownRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<IngestMarkdownResponse>> {\n return this.http.requestWithMetadata<IngestMarkdownResponse>('POST', `${BASE}/markdown`, {\n body: request,\n options,\n });\n }\n\n async ingestMarkdownBatch(\n request: IngestMarkdownBatchRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<IngestMarkdownResponse>> {\n return this.http.requestWithMetadata<IngestMarkdownResponse>(\n 'POST',\n `${BASE}/markdown/batch`,\n { body: request, options },\n );\n }\n\n async ingestRdf(\n request: IngestRdfRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<IngestRdfResponse>> {\n return this.http.requestWithMetadata<IngestRdfResponse>('POST', `${BASE}/rdf`, {\n body: request,\n options,\n });\n }\n\n async listSessions(\n options?: RequestOptions,\n ): Promise<ApiResponse<ListIngestionSessionsResponse>> {\n return this.http.requestWithMetadata<ListIngestionSessionsResponse>(\n 'GET',\n `${BASE}/sessions`,\n { options },\n );\n }\n\n async startSession(\n request: StartIngestionSessionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<IngestionSessionResponse>> {\n return this.http.requestWithMetadata<IngestionSessionResponse>('POST', `${BASE}/sessions`, {\n body: request,\n options,\n });\n }\n\n async getSession(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<IngestionSessionResponse>> {\n return this.http.requestWithMetadata<IngestionSessionResponse>(\n 'GET',\n `${BASE}/sessions/${sessionId}`,\n { options },\n );\n }\n\n async deleteSession(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('DELETE', `${BASE}/sessions/${sessionId}`, {\n options,\n });\n }\n\n async listIncompleteDocuments(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<ListIncompleteDocumentsResponse>> {\n return this.http.requestWithMetadata<ListIncompleteDocumentsResponse>(\n 'GET',\n `${BASE}/sessions/${sessionId}/incomplete`,\n { options },\n );\n }\n\n async resumeIngestion(\n sessionId: string,\n request: ResumeDocumentIngestionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ResumeDocumentIngestionResponse>> {\n return this.http.requestWithMetadata<ResumeDocumentIngestionResponse>(\n 'POST',\n `${BASE}/sessions/${sessionId}/resume`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n AddPendingReviewRequest,\n ApproveEntityRequest,\n BulkApproveRequest,\n BulkMergeRequest,\n BulkRejectRequest,\n CorrectEntityRequest,\n MergeEntityRequest,\n ReExtractRequest,\n RejectEntityRequest,\n} from '../types/reviews.js';\n\nconst BASE = '/api/v1/reviews';\n\n/**\n * Resource client for entity review operations.\n *\n * @remarks\n * Provides methods for managing human-in-the-loop review of extracted\n * or ingested entities, including approval, rejection, correction,\n * merging, bulk operations, and re-extraction.\n */\nexport class ReviewsClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Add an entity to the pending review queue.\n *\n * @param request - Review details including entity, candidates, and reason.\n * @param options - Per-call request options.\n * @returns The created review response.\n */\n async addPendingReview(\n request: AddPendingReviewRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post<unknown>(`${BASE}/add`, request, options);\n }\n\n /**\n * Approve an entity as-is.\n *\n * @param request - Approval request with review ID and optional notes.\n * @param options - Per-call request options.\n * @returns The approval response.\n */\n async approveEntity(\n request: ApproveEntityRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post<unknown>(`${BASE}/approve`, request, options);\n }\n\n /**\n * Bulk approve multiple reviews.\n *\n * @param request - Bulk approval request with review IDs and reviewer.\n * @param options - Per-call request options.\n * @returns The bulk approval response.\n */\n async bulkApprove(\n request: BulkApproveRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post<unknown>(`${BASE}/bulk-approve`, request, options);\n }\n\n /**\n * Bulk merge multiple reviews into a target term.\n *\n * @param request - Bulk merge request with review IDs, reviewer, and target term.\n * @param options - Per-call request options.\n * @returns The bulk merge response.\n */\n async bulkMerge(\n request: BulkMergeRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post<unknown>(`${BASE}/bulk-merge`, request, options);\n }\n\n /**\n * Bulk reject multiple reviews.\n *\n * @param request - Bulk reject request with review IDs, reviewer, and reason.\n * @param options - Per-call request options.\n * @returns The bulk rejection response.\n */\n async bulkReject(\n request: BulkRejectRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post<unknown>(`${BASE}/bulk-reject`, request, options);\n }\n\n /**\n * Correct an entity before approval.\n *\n * @param request - Correction request with review ID, corrected features, and/or sort.\n * @param options - Per-call request options.\n * @returns The correction response.\n */\n async correctEntity(\n request: CorrectEntityRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post<unknown>(`${BASE}/correct`, request, options);\n }\n\n /**\n * Merge an entity with an existing term.\n *\n * @param request - Merge request with review ID, target term, and conflict resolution.\n * @param options - Per-call request options.\n * @returns The merge response.\n */\n async mergeEntity(\n request: MergeEntityRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post<unknown>(`${BASE}/merge`, request, options);\n }\n\n /**\n * List all pending reviews.\n *\n * @param options - Per-call request options.\n * @returns List of pending review entries.\n */\n async listPending(options?: RequestOptions): Promise<unknown> {\n return this.http.get<unknown>(`${BASE}/pending`, options);\n }\n\n /**\n * Re-extract entities from a document.\n *\n * @param request - Re-extraction request with document ID and optional instructions.\n * @param options - Per-call request options.\n * @returns The re-extraction response.\n */\n async reExtract(\n request: ReExtractRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post<unknown>(`${BASE}/re-extract`, request, options);\n }\n\n /**\n * Reject an entity.\n *\n * @param request - Rejection request with review ID and reason.\n * @param options - Per-call request options.\n * @returns The rejection response.\n */\n async rejectEntity(\n request: RejectEntityRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post<unknown>(`${BASE}/reject`, request, options);\n }\n\n /**\n * Get review summary for a tenant.\n *\n * @param tenantId - Tenant UUID.\n * @param options - Per-call request options.\n * @returns Review summary for the tenant.\n */\n async getSummary(tenantId: string, options?: RequestOptions): Promise<unknown> {\n return this.http.get<unknown>(`${BASE}/summary/${tenantId}`, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): ReviewsClientWithMetadata {\n return new ReviewsClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link ReviewsClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class ReviewsClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /** @see {@link ReviewsClient.addPendingReview} */\n async addPendingReview(\n request: AddPendingReviewRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/add`, {\n body: request,\n options,\n });\n }\n\n /** @see {@link ReviewsClient.approveEntity} */\n async approveEntity(\n request: ApproveEntityRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/approve`, {\n body: request,\n options,\n });\n }\n\n /** @see {@link ReviewsClient.bulkApprove} */\n async bulkApprove(\n request: BulkApproveRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/bulk-approve`, {\n body: request,\n options,\n });\n }\n\n /** @see {@link ReviewsClient.bulkMerge} */\n async bulkMerge(\n request: BulkMergeRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/bulk-merge`, {\n body: request,\n options,\n });\n }\n\n /** @see {@link ReviewsClient.bulkReject} */\n async bulkReject(\n request: BulkRejectRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/bulk-reject`, {\n body: request,\n options,\n });\n }\n\n /** @see {@link ReviewsClient.correctEntity} */\n async correctEntity(\n request: CorrectEntityRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/correct`, {\n body: request,\n options,\n });\n }\n\n /** @see {@link ReviewsClient.mergeEntity} */\n async mergeEntity(\n request: MergeEntityRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/merge`, {\n body: request,\n options,\n });\n }\n\n /** @see {@link ReviewsClient.listPending} */\n async listPending(options?: RequestOptions): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('GET', `${BASE}/pending`, { options });\n }\n\n /** @see {@link ReviewsClient.reExtract} */\n async reExtract(\n request: ReExtractRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/re-extract`, {\n body: request,\n options,\n });\n }\n\n /** @see {@link ReviewsClient.rejectEntity} */\n async rejectEntity(\n request: RejectEntityRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/reject`, {\n body: request,\n options,\n });\n }\n\n /** @see {@link ReviewsClient.getSummary} */\n async getSummary(tenantId: string, options?: RequestOptions): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('GET', `${BASE}/summary/${tenantId}`, {\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type { ConstraintGraphRequest, ConstraintGraphResponse } from '../types/constraints.js';\nimport type {\n HypergraphRequest,\n HypergraphResponse,\n LatticeVisualizationRequest,\n LatticeVisualizationResponse,\n GlbLubTraceRequest,\n GlbLubComputationTrace,\n ResiduationStateRequest,\n ResiduationStateResponse,\n TriggerDependencyRequest,\n TriggerDependencyResponse,\n} from '../types/visualization.js';\n\nconst BASE = '/api/v1/visualization';\n\n/**\n * Resource client for visualization operations.\n *\n * @remarks\n * Provides methods for generating graph visualizations of sort lattices,\n * term hypergraphs, constraint networks, GLB/LUB computation traces,\n * residuation state diagrams, and trigger dependency graphs.\n */\nexport class VisualizationClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Generate a constraint graph visualization.\n *\n * @param request - Constraint graph request with optional term focus and cycle detection.\n * @param options - Per-call request options.\n * @returns Constraint graph with nodes, edges, stats, and optional cycles.\n */\n async constraintGraph(\n request: ConstraintGraphRequest,\n options?: RequestOptions,\n ): Promise<ConstraintGraphResponse> {\n return this.http.post<ConstraintGraphResponse>(`${BASE}/constraints`, request, options);\n }\n\n /**\n * Generate a hypergraph visualization of OSF terms.\n *\n * @param request - Hypergraph request with root term and traversal options.\n * @param options - Per-call request options.\n * @returns Hypergraph with graph, stats, components, and degree distribution.\n */\n async hypergraph(\n request: HypergraphRequest,\n options?: RequestOptions,\n ): Promise<HypergraphResponse> {\n return this.http.post<HypergraphResponse>(`${BASE}/hypergraph`, request, options);\n }\n\n /**\n * Generate a hypergraph subgraph centered on a specific term.\n *\n * @param termId - Term UUID to center the subgraph on.\n * @param options - Per-call request options.\n * @returns Hypergraph response for the term's neighborhood.\n */\n async termSubgraph(termId: string, options?: RequestOptions): Promise<HypergraphResponse> {\n return this.http.get<HypergraphResponse>(`${BASE}/hypergraph/term/${termId}`, options);\n }\n\n /**\n * Generate a lattice (sort hierarchy) visualization.\n *\n * @param request - Lattice request with layout and filtering options.\n * @param options - Per-call request options.\n * @returns Lattice visualization with graph and statistics.\n */\n async lattice(\n request: LatticeVisualizationRequest,\n options?: RequestOptions,\n ): Promise<LatticeVisualizationResponse> {\n return this.http.post<LatticeVisualizationResponse>(`${BASE}/lattice`, request, options);\n }\n\n /**\n * Get the sort lattice as a DOT format string.\n *\n * @param options - Per-call request options.\n * @returns The lattice in DOT graph description language.\n *\n * @remarks\n * This endpoint returns a DOT format string. The HttpClient parses the\n * response as JSON, so the backend must return the DOT string as a\n * JSON-encoded string value.\n */\n async latticeDot(options?: RequestOptions): Promise<string> {\n return this.http.get<string>(`${BASE}/lattice/dot`, options);\n }\n\n /**\n * Trace a GLB or LUB computation between two sorts.\n *\n * @param request - Trace request with operation type and two sort IDs.\n * @param options - Per-call request options.\n * @returns Computation trace with steps, result, and optional graph.\n */\n async glbLubTrace(\n request: GlbLubTraceRequest,\n options?: RequestOptions,\n ): Promise<GlbLubComputationTrace> {\n return this.http.post<GlbLubComputationTrace>(\n `${BASE}/lattice/glb-lub-trace`,\n request,\n options,\n );\n }\n\n /**\n * Generate a residuation state diagram.\n *\n * @param request - Residuation state request with kind and state filters.\n * @param options - Per-call request options.\n * @returns Residuation state with terms, graph, and statistics.\n */\n async residuationState(\n request: ResiduationStateRequest,\n options?: RequestOptions,\n ): Promise<ResiduationStateResponse> {\n return this.http.post<ResiduationStateResponse>(`${BASE}/residuation`, request, options);\n }\n\n /**\n * Generate a trigger dependency graph for residuations.\n *\n * @param request - Trigger dependency request with optional residuation focus.\n * @param options - Per-call request options.\n * @returns Trigger dependency graph with critical paths.\n */\n async triggerDependencies(\n request: TriggerDependencyRequest,\n options?: RequestOptions,\n ): Promise<TriggerDependencyResponse> {\n return this.http.post<TriggerDependencyResponse>(\n `${BASE}/residuation/triggers`,\n request,\n options,\n );\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): VisualizationClientWithMetadata {\n return new VisualizationClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link VisualizationClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class VisualizationClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /** @see {@link VisualizationClient.constraintGraph} */\n async constraintGraph(\n request: ConstraintGraphRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ConstraintGraphResponse>> {\n return this.http.requestWithMetadata<ConstraintGraphResponse>('POST', `${BASE}/constraints`, {\n body: request,\n options,\n });\n }\n\n /** @see {@link VisualizationClient.hypergraph} */\n async hypergraph(\n request: HypergraphRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<HypergraphResponse>> {\n return this.http.requestWithMetadata<HypergraphResponse>('POST', `${BASE}/hypergraph`, {\n body: request,\n options,\n });\n }\n\n /** @see {@link VisualizationClient.termSubgraph} */\n async termSubgraph(\n termId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<HypergraphResponse>> {\n return this.http.requestWithMetadata<HypergraphResponse>(\n 'GET',\n `${BASE}/hypergraph/term/${termId}`,\n { options },\n );\n }\n\n /** @see {@link VisualizationClient.lattice} */\n async lattice(\n request: LatticeVisualizationRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<LatticeVisualizationResponse>> {\n return this.http.requestWithMetadata<LatticeVisualizationResponse>('POST', `${BASE}/lattice`, {\n body: request,\n options,\n });\n }\n\n /** @see {@link VisualizationClient.latticeDot} */\n async latticeDot(options?: RequestOptions): Promise<ApiResponse<string>> {\n return this.http.requestWithMetadata<string>('GET', `${BASE}/lattice/dot`, { options });\n }\n\n /** @see {@link VisualizationClient.glbLubTrace} */\n async glbLubTrace(\n request: GlbLubTraceRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<GlbLubComputationTrace>> {\n return this.http.requestWithMetadata<GlbLubComputationTrace>(\n 'POST',\n `${BASE}/lattice/glb-lub-trace`,\n { body: request, options },\n );\n }\n\n /** @see {@link VisualizationClient.residuationState} */\n async residuationState(\n request: ResiduationStateRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ResiduationStateResponse>> {\n return this.http.requestWithMetadata<ResiduationStateResponse>(\n 'POST',\n `${BASE}/residuation`,\n { body: request, options },\n );\n }\n\n /** @see {@link VisualizationClient.triggerDependencies} */\n async triggerDependencies(\n request: TriggerDependencyRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<TriggerDependencyResponse>> {\n return this.http.requestWithMetadata<TriggerDependencyResponse>(\n 'POST',\n `${BASE}/residuation/triggers`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n LearnPatternRequest,\n LearnPatternResponse,\n EvaluatePatternRequest,\n EvaluatePatternResponse,\n GFlowNetSampleRequest,\n GFlowNetSampleResponse,\n ListPatternsResponse,\n SynthesizeRequest,\n SynthesizeResponse,\n} from '../types/ilp.js';\n\nconst BASE = '/api/v1/ilp';\n\n/**\n * Resource client for Inductive Logic Programming (ILP) operations.\n *\n * @remarks\n * Provides pattern learning, evaluation, GFlowNet hypothesis sampling,\n * and neural-guided rule synthesis.\n */\nexport class IlpClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Learn a recursive arithmetic pattern from training examples.\n *\n * @param request - Learning request with examples and configuration.\n * @param options - Per-call request options.\n * @returns The learned pattern with confidence score and processing time.\n */\n async learnPattern(\n request: LearnPatternRequest,\n options?: RequestOptions,\n ): Promise<LearnPatternResponse> {\n return this.http.post<LearnPatternResponse>(`${BASE}/learn`, request, options);\n }\n\n /**\n * Evaluate a learned pattern on new inputs.\n *\n * @param request - Evaluation request with pattern ID and inputs.\n * @param options - Per-call request options.\n * @returns Evaluation results for each input.\n */\n async evaluatePattern(\n request: EvaluatePatternRequest,\n options?: RequestOptions,\n ): Promise<EvaluatePatternResponse> {\n return this.http.post<EvaluatePatternResponse>(`${BASE}/evaluate`, request, options);\n }\n\n /**\n * Sample hypotheses using GFlowNet.\n *\n * @param request - Sampling request with target sort and parameters.\n * @param options - Per-call request options.\n * @returns Sampled hypotheses with log-probabilities.\n */\n async gflownetSample(\n request: GFlowNetSampleRequest,\n options?: RequestOptions,\n ): Promise<GFlowNetSampleResponse> {\n return this.http.post<GFlowNetSampleResponse>(`${BASE}/gflownet/sample`, request, options);\n }\n\n /**\n * List all learned patterns.\n *\n * @param options - Per-call request options.\n * @returns List of pattern summaries.\n */\n async listPatterns(\n options?: RequestOptions,\n ): Promise<ListPatternsResponse> {\n return this.http.get<ListPatternsResponse>(`${BASE}/patterns`, options);\n }\n\n /**\n * Synthesize rules using neural-guided ILP.\n *\n * @param request - Synthesis request with examples and target sort.\n * @param options - Per-call request options.\n * @returns Synthesis result with processing details.\n */\n async synthesize(\n request: SynthesizeRequest,\n options?: RequestOptions,\n ): Promise<SynthesizeResponse> {\n return this.http.post<SynthesizeResponse>(`${BASE}/synthesize`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): IlpClientWithMetadata {\n return new IlpClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link IlpClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class IlpClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async learnPattern(\n request: LearnPatternRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<LearnPatternResponse>> {\n return this.http.requestWithMetadata<LearnPatternResponse>('POST', `${BASE}/learn`, {\n body: request,\n options,\n });\n }\n\n async evaluatePattern(\n request: EvaluatePatternRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<EvaluatePatternResponse>> {\n return this.http.requestWithMetadata<EvaluatePatternResponse>('POST', `${BASE}/evaluate`, {\n body: request,\n options,\n });\n }\n\n async gflownetSample(\n request: GFlowNetSampleRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<GFlowNetSampleResponse>> {\n return this.http.requestWithMetadata<GFlowNetSampleResponse>(\n 'POST',\n `${BASE}/gflownet/sample`,\n { body: request, options },\n );\n }\n\n async listPatterns(\n options?: RequestOptions,\n ): Promise<ApiResponse<ListPatternsResponse>> {\n return this.http.requestWithMetadata<ListPatternsResponse>('GET', `${BASE}/patterns`, {\n options,\n });\n }\n\n async synthesize(\n request: SynthesizeRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SynthesizeResponse>> {\n return this.http.requestWithMetadata<SynthesizeResponse>('POST', `${BASE}/synthesize`, {\n body: request,\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n FuzzyMergeRequest,\n FuzzyMergeResponse,\n FuzzySubsumptionRequest,\n FuzzySubsumptionResponse,\n} from '../types/fuzzy.js';\nimport type {\n EntailmentRequest,\n EntailmentResponse,\n EvidenceAssessmentRequest,\n ResiduationRequest,\n ResiduationResponse,\n ResourceCoordinationRequest,\n TemporalPlanRequest,\n} from '../types/reasoning.js';\n\nconst BASE = '/api/v1/reasoning';\n\n/**\n * Resource client for reasoning operations.\n *\n * @remarks\n * Provides entailment checking, evidence assessment, fuzzy merge/subsumption,\n * residuation checking, resource coordination, and temporal planning.\n *\n * The merge and subsumption endpoints reuse types from the fuzzy domain.\n * The assess, resource-coordination, and temporal-plan endpoints return\n * untyped responses because the backend does not define explicit response schemas.\n */\nexport class ReasoningClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Assess the truthfulness/validity of a subject based on related evidence.\n *\n * @param request - Evidence assessment request.\n * @param options - Per-call request options.\n * @returns Assessment result (untyped -- backend does not define an explicit response schema).\n */\n async assess(\n request: EvidenceAssessmentRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post<unknown>(`${BASE}/assess`, request, options);\n }\n\n /**\n * Check logical entailment between an antecedent and consequent.\n *\n * @param request - Entailment request with antecedent, consequent, and facts.\n * @param options - Per-call request options.\n * @returns Whether the antecedent entails the consequent with confidence.\n */\n async entailment(\n request: EntailmentRequest,\n options?: RequestOptions,\n ): Promise<EntailmentResponse> {\n return this.http.post<EntailmentResponse>(`${BASE}/entailment`, request, options);\n }\n\n /**\n * Fuzzy merge two terms via the reasoning endpoint.\n *\n * @param request - Merge request with two term IDs and strategy.\n * @param options - Per-call request options.\n * @returns Merge result with computation time and feature count.\n */\n async merge(\n request: FuzzyMergeRequest,\n options?: RequestOptions,\n ): Promise<FuzzyMergeResponse> {\n return this.http.post<FuzzyMergeResponse>(`${BASE}/merge`, request, options);\n }\n\n /**\n * Check for residuated (suspended) operations on a term.\n *\n * @param request - Residuation request with term ID.\n * @param options - Per-call request options.\n * @returns Suspended operations and resumption triggers.\n */\n async residuate(\n request: ResiduationRequest,\n options?: RequestOptions,\n ): Promise<ResiduationResponse> {\n return this.http.post<ResiduationResponse>(`${BASE}/residuate`, request, options);\n }\n\n /**\n * Coordinate N-way resource selections with compatibility constraints.\n *\n * @param request - Resource coordination request.\n * @param options - Per-call request options.\n * @returns Coordination result (untyped -- backend does not define an explicit response schema).\n */\n async resourceCoordination(\n request: ResourceCoordinationRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post<unknown>(`${BASE}/resource-coordination`, request, options);\n }\n\n /**\n * Check fuzzy subsumption between two terms via the reasoning endpoint.\n *\n * @param request - Subsumption request with general and specific term IDs.\n * @param options - Per-call request options.\n * @returns Subsumption degree and whether the relationship holds.\n */\n async subsumption(\n request: FuzzySubsumptionRequest,\n options?: RequestOptions,\n ): Promise<FuzzySubsumptionResponse> {\n return this.http.post<FuzzySubsumptionResponse>(`${BASE}/subsumption`, request, options);\n }\n\n /**\n * Generate a temporal plan with diversity constraints.\n *\n * @param request - Temporal plan request.\n * @param options - Per-call request options.\n * @returns Temporal plan result (untyped -- backend does not define an explicit response schema).\n */\n async temporalPlan(\n request: TemporalPlanRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post<unknown>(`${BASE}/temporal-plan`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): ReasoningClientWithMetadata {\n return new ReasoningClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link ReasoningClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class ReasoningClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async assess(\n request: EvidenceAssessmentRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/assess`, {\n body: request,\n options,\n });\n }\n\n async entailment(\n request: EntailmentRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<EntailmentResponse>> {\n return this.http.requestWithMetadata<EntailmentResponse>('POST', `${BASE}/entailment`, {\n body: request,\n options,\n });\n }\n\n async merge(\n request: FuzzyMergeRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<FuzzyMergeResponse>> {\n return this.http.requestWithMetadata<FuzzyMergeResponse>('POST', `${BASE}/merge`, {\n body: request,\n options,\n });\n }\n\n async residuate(\n request: ResiduationRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ResiduationResponse>> {\n return this.http.requestWithMetadata<ResiduationResponse>('POST', `${BASE}/residuate`, {\n body: request,\n options,\n });\n }\n\n async resourceCoordination(\n request: ResourceCoordinationRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/resource-coordination`, {\n body: request,\n options,\n });\n }\n\n async subsumption(\n request: FuzzySubsumptionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<FuzzySubsumptionResponse>> {\n return this.http.requestWithMetadata<FuzzySubsumptionResponse>(\n 'POST',\n `${BASE}/subsumption`,\n { body: request, options },\n );\n }\n\n async temporalPlan(\n request: TemporalPlanRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/temporal-plan`, {\n body: request,\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n StatisticalSuccessResponse,\n CorrelationRequest,\n CorrelationResponse,\n PartialCorrelationRequest,\n PartialCorrelationResponse,\n ConditionalIndependenceRequest,\n ConditionalIndependenceResponse,\n ObserveSingleRequest,\n ObserveSingleResponse,\n ObservePairRequest,\n ObservePairResponse,\n ObserveMultiRequest,\n ObserveMultiResponse,\n InterventionObservationRequest,\n InterventionObservationResponse,\n DiscoverCausalRequest,\n DiscoverCausalResponse,\n DiscoveryStatusResponse,\n DynamicDiscoveryRequest,\n DynamicDiscoveryResponse,\n} from '../types/statistical.js';\n\nconst BASE = '/api/v1/statistical';\n\n/**\n * Resource client for statistical analysis operations.\n *\n * @remarks\n * Provides observation recording, correlation computation,\n * conditional independence testing, and causal discovery.\n */\nexport class StatisticalClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Clear all observed statistical data.\n *\n * @param options - Per-call request options.\n * @returns Success message.\n */\n async clearData(\n options?: RequestOptions,\n ): Promise<StatisticalSuccessResponse> {\n return this.http.post<StatisticalSuccessResponse>(`${BASE}/clear-data`, undefined, options);\n }\n\n /**\n * Compute Pearson correlation between two variables.\n *\n * @param request - Correlation request with two variable names.\n * @param options - Per-call request options.\n * @returns Correlation coefficient and observation count.\n */\n async correlation(\n request: CorrelationRequest,\n options?: RequestOptions,\n ): Promise<CorrelationResponse> {\n return this.http.post<CorrelationResponse>(`${BASE}/correlation`, request, options);\n }\n\n /**\n * Discover causal relationships from observed data.\n *\n * @param request - Discovery request with variable list.\n * @param options - Per-call request options.\n * @returns Discovered causal relationships.\n */\n async discoverCausal(\n request: DiscoverCausalRequest,\n options?: RequestOptions,\n ): Promise<DiscoverCausalResponse> {\n return this.http.post<DiscoverCausalResponse>(`${BASE}/discover-causal`, request, options);\n }\n\n /**\n * Get the current status of causal discovery.\n *\n * @param options - Per-call request options.\n * @returns Discovery status with graph and uncertainty information.\n */\n async getDiscoveryStatus(\n options?: RequestOptions,\n ): Promise<DiscoveryStatusResponse> {\n return this.http.get<DiscoveryStatusResponse>(`${BASE}/discovery-status`, options);\n }\n\n /**\n * Run dynamic causal discovery with configurable strategy.\n *\n * @param request - Dynamic discovery request with strategy and parameters.\n * @param options - Per-call request options.\n * @returns Discovered relationships, proof tree, and interventions.\n */\n async dynamicDiscovery(\n request: DynamicDiscoveryRequest,\n options?: RequestOptions,\n ): Promise<DynamicDiscoveryResponse> {\n return this.http.post<DynamicDiscoveryResponse>(`${BASE}/dynamic-discovery`, request, options);\n }\n\n /**\n * Record an intervention observation for causal discovery.\n *\n * @param request - Intervention observation with changed/unchanged variables.\n * @param options - Per-call request options.\n * @returns Resolved edges and remaining uncertainty.\n */\n async interventionObservation(\n request: InterventionObservationRequest,\n options?: RequestOptions,\n ): Promise<InterventionObservationResponse> {\n return this.http.post<InterventionObservationResponse>(\n `${BASE}/intervention-observation`,\n request,\n options,\n );\n }\n\n /**\n * Observe a single variable value.\n *\n * @param request - Single observation request.\n * @param options - Per-call request options.\n * @returns Current observation count.\n */\n async observeSingle(\n request: ObserveSingleRequest,\n options?: RequestOptions,\n ): Promise<ObserveSingleResponse> {\n return this.http.post<ObserveSingleResponse>(`${BASE}/observe`, request, options);\n }\n\n /**\n * Observe multiple variable values simultaneously.\n *\n * @param request - Multi-observation request with variable-value map.\n * @param options - Per-call request options.\n * @returns Variables that were observed.\n */\n async observeMulti(\n request: ObserveMultiRequest,\n options?: RequestOptions,\n ): Promise<ObserveMultiResponse> {\n return this.http.post<ObserveMultiResponse>(`${BASE}/observe-multi`, request, options);\n }\n\n /**\n * Observe a pair of variable values.\n *\n * @param request - Pair observation request.\n * @param options - Per-call request options.\n * @returns Current observation count for this pair.\n */\n async observePair(\n request: ObservePairRequest,\n options?: RequestOptions,\n ): Promise<ObservePairResponse> {\n return this.http.post<ObservePairResponse>(`${BASE}/observe-pair`, request, options);\n }\n\n /**\n * Compute partial correlation controlling for a set of variables.\n *\n * @param request - Partial correlation request with conditioning set.\n * @param options - Per-call request options.\n * @returns Partial correlation coefficient.\n */\n async partialCorrelation(\n request: PartialCorrelationRequest,\n options?: RequestOptions,\n ): Promise<PartialCorrelationResponse> {\n return this.http.post<PartialCorrelationResponse>(\n `${BASE}/partial-correlation`,\n request,\n options,\n );\n }\n\n /**\n * Reset the causal discovery state.\n *\n * @param options - Per-call request options.\n * @returns Success message.\n */\n async resetDiscovery(\n options?: RequestOptions,\n ): Promise<StatisticalSuccessResponse> {\n return this.http.post<StatisticalSuccessResponse>(\n `${BASE}/reset-discovery`,\n undefined,\n options,\n );\n }\n\n /**\n * Test conditional independence between two variables.\n *\n * @param request - Independence test request with conditioning set.\n * @param options - Per-call request options.\n * @returns Independence result with p-value and explanation.\n */\n async testIndependence(\n request: ConditionalIndependenceRequest,\n options?: RequestOptions,\n ): Promise<ConditionalIndependenceResponse> {\n return this.http.post<ConditionalIndependenceResponse>(\n `${BASE}/test-independence`,\n request,\n options,\n );\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): StatisticalClientWithMetadata {\n return new StatisticalClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link StatisticalClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class StatisticalClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async clearData(\n options?: RequestOptions,\n ): Promise<ApiResponse<StatisticalSuccessResponse>> {\n return this.http.requestWithMetadata<StatisticalSuccessResponse>(\n 'POST',\n `${BASE}/clear-data`,\n { options },\n );\n }\n\n async correlation(\n request: CorrelationRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<CorrelationResponse>> {\n return this.http.requestWithMetadata<CorrelationResponse>('POST', `${BASE}/correlation`, {\n body: request,\n options,\n });\n }\n\n async discoverCausal(\n request: DiscoverCausalRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<DiscoverCausalResponse>> {\n return this.http.requestWithMetadata<DiscoverCausalResponse>(\n 'POST',\n `${BASE}/discover-causal`,\n { body: request, options },\n );\n }\n\n async getDiscoveryStatus(\n options?: RequestOptions,\n ): Promise<ApiResponse<DiscoveryStatusResponse>> {\n return this.http.requestWithMetadata<DiscoveryStatusResponse>(\n 'GET',\n `${BASE}/discovery-status`,\n { options },\n );\n }\n\n async dynamicDiscovery(\n request: DynamicDiscoveryRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<DynamicDiscoveryResponse>> {\n return this.http.requestWithMetadata<DynamicDiscoveryResponse>(\n 'POST',\n `${BASE}/dynamic-discovery`,\n { body: request, options },\n );\n }\n\n async interventionObservation(\n request: InterventionObservationRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<InterventionObservationResponse>> {\n return this.http.requestWithMetadata<InterventionObservationResponse>(\n 'POST',\n `${BASE}/intervention-observation`,\n { body: request, options },\n );\n }\n\n async observeSingle(\n request: ObserveSingleRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ObserveSingleResponse>> {\n return this.http.requestWithMetadata<ObserveSingleResponse>('POST', `${BASE}/observe`, {\n body: request,\n options,\n });\n }\n\n async observeMulti(\n request: ObserveMultiRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ObserveMultiResponse>> {\n return this.http.requestWithMetadata<ObserveMultiResponse>('POST', `${BASE}/observe-multi`, {\n body: request,\n options,\n });\n }\n\n async observePair(\n request: ObservePairRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ObservePairResponse>> {\n return this.http.requestWithMetadata<ObservePairResponse>('POST', `${BASE}/observe-pair`, {\n body: request,\n options,\n });\n }\n\n async partialCorrelation(\n request: PartialCorrelationRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<PartialCorrelationResponse>> {\n return this.http.requestWithMetadata<PartialCorrelationResponse>(\n 'POST',\n `${BASE}/partial-correlation`,\n { body: request, options },\n );\n }\n\n async resetDiscovery(\n options?: RequestOptions,\n ): Promise<ApiResponse<StatisticalSuccessResponse>> {\n return this.http.requestWithMetadata<StatisticalSuccessResponse>(\n 'POST',\n `${BASE}/reset-discovery`,\n { options },\n );\n }\n\n async testIndependence(\n request: ConditionalIndependenceRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ConditionalIndependenceResponse>> {\n return this.http.requestWithMetadata<ConditionalIndependenceResponse>(\n 'POST',\n `${BASE}/test-independence`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n BacktrackableAssignRequest,\n GlobalAssignRequest,\n CallOnceRequest,\n CondRequest,\n CutRequest,\n FindallRequest,\n ForallRequest,\n GlobalGetRequest,\n GlobalIncrementRequest,\n ImpliesRequest,\n ControlNafRequest,\n UndoRequest,\n} from '../types/control.js';\n\nconst BASE = '/api/v1/control';\n\n/**\n * Resource client for proof control operations.\n *\n * @remarks\n * Provides Prolog-style control flow primitives: cut, findall, forall,\n * negation as failure, conditional execution, backtrackable assignment,\n * global state management, and undo.\n *\n * All operations are session-scoped and return void.\n */\nexport class ControlClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Perform backtrackable assignment.\n *\n * @param request - Assignment request with term, feature, and value.\n * @param options - Per-call request options.\n */\n async backtrackableAssign(\n request: BacktrackableAssignRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/assign/backtrackable`, request, options);\n }\n\n /**\n * Perform global assignment (persists across backtracking).\n *\n * @param request - Global assignment request.\n * @param options - Per-call request options.\n */\n async globalAssign(\n request: GlobalAssignRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/assign/global`, request, options);\n }\n\n /**\n * Execute a goal once with cut (deterministic).\n *\n * @param request - Call-once request with goal.\n * @param options - Per-call request options.\n */\n async callOnce(\n request: CallOnceRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/call-once`, request, options);\n }\n\n /**\n * Execute conditional (if-then-else).\n *\n * @param request - Conditional request with condition, then, and else goals.\n * @param options - Per-call request options.\n */\n async cond(\n request: CondRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/cond`, request, options);\n }\n\n /**\n * Perform Prolog-style cut (discard choice points).\n *\n * @param request - Cut request with session ID.\n * @param options - Per-call request options.\n */\n async cut(\n request: CutRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/cut`, request, options);\n }\n\n /**\n * Collect all solutions for a goal (findall).\n *\n * @param request - Findall request with template, goal, and optional max.\n * @param options - Per-call request options.\n */\n async findall(\n request: FindallRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/findall`, request, options);\n }\n\n /**\n * Universal quantification (forall).\n *\n * @param request - Forall request with generator and test goals.\n * @param options - Per-call request options.\n */\n async forall(\n request: ForallRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/forall`, request, options);\n }\n\n /**\n * Get a global variable value.\n *\n * @param request - Get request with session ID and variable name.\n * @param options - Per-call request options.\n * @returns The global variable value.\n */\n async globalGet(\n request: GlobalGetRequest,\n options?: RequestOptions,\n ): Promise<unknown> {\n return this.http.post(`${BASE}/global/get`, request, options);\n }\n\n /**\n * Increment a global counter variable.\n *\n * @param request - Increment request with session ID and variable name.\n * @param options - Per-call request options.\n */\n async globalIncrement(\n request: GlobalIncrementRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/global/incr`, request, options);\n }\n\n /**\n * Execute implies (A -> B).\n *\n * @param request - Implies request with antecedent and consequent.\n * @param options - Per-call request options.\n */\n async implies(\n request: ImpliesRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/implies`, request, options);\n }\n\n /**\n * Negation as failure (low-level control).\n *\n * @param request - NAF request with goal.\n * @param options - Per-call request options.\n */\n async naf(\n request: ControlNafRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/naf`, request, options);\n }\n\n /**\n * Register an undo goal (execute on backtracking).\n *\n * @param request - Undo request with goal.\n * @param options - Per-call request options.\n */\n async undo(\n request: UndoRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/undo`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): ControlClientWithMetadata {\n return new ControlClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link ControlClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class ControlClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async backtrackableAssign(\n request: BacktrackableAssignRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/assign/backtrackable`, {\n body: request,\n options,\n });\n }\n\n async globalAssign(\n request: GlobalAssignRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/assign/global`, {\n body: request,\n options,\n });\n }\n\n async callOnce(\n request: CallOnceRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/call-once`, {\n body: request,\n options,\n });\n }\n\n async cond(\n request: CondRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/cond`, {\n body: request,\n options,\n });\n }\n\n async cut(\n request: CutRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/cut`, {\n body: request,\n options,\n });\n }\n\n async findall(\n request: FindallRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/findall`, {\n body: request,\n options,\n });\n }\n\n async forall(\n request: ForallRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/forall`, {\n body: request,\n options,\n });\n }\n\n async globalGet(\n request: GlobalGetRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('POST', `${BASE}/global/get`, {\n body: request,\n options,\n });\n }\n\n async globalIncrement(\n request: GlobalIncrementRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/global/incr`, {\n body: request,\n options,\n });\n }\n\n async implies(\n request: ImpliesRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/implies`, {\n body: request,\n options,\n });\n }\n\n async naf(\n request: ControlNafRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/naf`, {\n body: request,\n options,\n });\n }\n\n async undo(\n request: UndoRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/undo`, {\n body: request,\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n CreateSpaceRequest,\n SpaceResponse,\n CommitRequest,\n SpaceSearchRequest,\n SpaceSearchResponse,\n} from '../types/spaces.js';\n\nconst BASE = '/api/v1/spaces';\n\n/**\n * Resource client for computation space operations.\n *\n * @remarks\n * Provides creation, cloning, committing, and search operations\n * for Oz-style computation spaces (forked constraint environments).\n */\nexport class SpacesClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Create a new computation space.\n *\n * @param request - Space creation parameters.\n * @param options - Per-call request options.\n * @returns The created space.\n */\n async createSpace(\n request: CreateSpaceRequest,\n options?: RequestOptions,\n ): Promise<SpaceResponse> {\n return this.http.post<SpaceResponse>(BASE, request, options);\n }\n\n /**\n * Get a computation space by ID.\n *\n * @param spaceId - Space ID.\n * @param options - Per-call request options.\n * @returns The space state.\n */\n async getSpace(\n spaceId: string,\n options?: RequestOptions,\n ): Promise<SpaceResponse> {\n return this.http.get<SpaceResponse>(`${BASE}/${spaceId}`, options);\n }\n\n /**\n * Clone a computation space.\n *\n * @param spaceId - Space ID to clone.\n * @param options - Per-call request options.\n * @returns The cloned space.\n */\n async cloneSpace(\n spaceId: string,\n options?: RequestOptions,\n ): Promise<SpaceResponse> {\n return this.http.post<SpaceResponse>(`${BASE}/${spaceId}/clone`, undefined, options);\n }\n\n /**\n * Commit to an alternative in a space.\n *\n * @param spaceId - Space ID.\n * @param request - Commit request with alternative index.\n * @param options - Per-call request options.\n * @returns Updated space state.\n */\n async commit(\n spaceId: string,\n request: CommitRequest,\n options?: RequestOptions,\n ): Promise<SpaceResponse> {\n return this.http.post<SpaceResponse>(`${BASE}/${spaceId}/commit`, request, options);\n }\n\n /**\n * Search for solutions in a space.\n *\n * @param spaceId - Space ID.\n * @param request - Search parameters (strategy, max solutions).\n * @param options - Per-call request options.\n * @returns Search results with solutions.\n */\n async search(\n spaceId: string,\n request: SpaceSearchRequest,\n options?: RequestOptions,\n ): Promise<SpaceSearchResponse> {\n return this.http.post<SpaceSearchResponse>(`${BASE}/${spaceId}/search`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): SpacesClientWithMetadata {\n return new SpacesClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link SpacesClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class SpacesClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async createSpace(\n request: CreateSpaceRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SpaceResponse>> {\n return this.http.requestWithMetadata<SpaceResponse>('POST', BASE, {\n body: request,\n options,\n });\n }\n\n async getSpace(\n spaceId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<SpaceResponse>> {\n return this.http.requestWithMetadata<SpaceResponse>('GET', `${BASE}/${spaceId}`, { options });\n }\n\n async cloneSpace(\n spaceId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<SpaceResponse>> {\n return this.http.requestWithMetadata<SpaceResponse>('POST', `${BASE}/${spaceId}/clone`, {\n options,\n });\n }\n\n async commit(\n spaceId: string,\n request: CommitRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SpaceResponse>> {\n return this.http.requestWithMetadata<SpaceResponse>('POST', `${BASE}/${spaceId}/commit`, {\n body: request,\n options,\n });\n }\n\n async search(\n spaceId: string,\n request: SpaceSearchRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SpaceSearchResponse>> {\n return this.http.requestWithMetadata<SpaceSearchResponse>(\n 'POST',\n `${BASE}/${spaceId}/search`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n RowSearchRequest,\n RowSearchResponse,\n RowUnifyRequest,\n RowUnifyResponse,\n RowSimilarityRequest,\n RowSimilarityResponse,\n RowIntegrateRequest,\n RowIntegrateResponse,\n DynamicQueryRequest,\n DynamicQueryResponse,\n} from '../types/row.js';\n\nconst BASE = '/api/v1/row';\n\n/**\n * Resource client for row polymorphism operations.\n *\n * @remarks\n * Provides schema-flexible entity search, row type unification,\n * similarity computation, data integration, and dynamic queries.\n */\nexport class RowClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Search for entities matching a row pattern.\n *\n * @param request - Row search request with feature pattern.\n * @param options - Per-call request options.\n * @returns Matching entities.\n */\n async search(\n request: RowSearchRequest,\n options?: RequestOptions,\n ): Promise<RowSearchResponse> {\n return this.http.post<RowSearchResponse>(`${BASE}/search`, request, options);\n }\n\n /**\n * Unify two row types.\n *\n * @param request - Unification request with two row types.\n * @param options - Per-call request options.\n * @returns Unification result.\n */\n async unify(\n request: RowUnifyRequest,\n options?: RequestOptions,\n ): Promise<RowUnifyResponse> {\n return this.http.post<RowUnifyResponse>(`${BASE}/unify`, request, options);\n }\n\n /**\n * Compute similarity between two row types.\n *\n * @param request - Similarity request with two row types.\n * @param options - Per-call request options.\n * @returns Similarity score and feature comparison.\n */\n async similarity(\n request: RowSimilarityRequest,\n options?: RequestOptions,\n ): Promise<RowSimilarityResponse> {\n return this.http.post<RowSimilarityResponse>(`${BASE}/similarity`, request, options);\n }\n\n /**\n * Integrate entities across namespaces using shared features.\n *\n * @param request - Integration request with match features.\n * @param options - Per-call request options.\n * @returns Integration groups.\n */\n async integrate(\n request: RowIntegrateRequest,\n options?: RequestOptions,\n ): Promise<RowIntegrateResponse> {\n return this.http.post<RowIntegrateResponse>(`${BASE}/integrate`, request, options);\n }\n\n /**\n * Execute a dynamic query with pattern matching.\n *\n * @param request - Dynamic query with clauses and options.\n * @param options - Per-call request options.\n * @returns Query results.\n */\n async query(\n request: DynamicQueryRequest,\n options?: RequestOptions,\n ): Promise<DynamicQueryResponse> {\n return this.http.post<DynamicQueryResponse>(`${BASE}/query`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): RowClientWithMetadata {\n return new RowClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link RowClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class RowClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async search(\n request: RowSearchRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RowSearchResponse>> {\n return this.http.requestWithMetadata<RowSearchResponse>('POST', `${BASE}/search`, {\n body: request,\n options,\n });\n }\n\n async unify(\n request: RowUnifyRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RowUnifyResponse>> {\n return this.http.requestWithMetadata<RowUnifyResponse>('POST', `${BASE}/unify`, {\n body: request,\n options,\n });\n }\n\n async similarity(\n request: RowSimilarityRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RowSimilarityResponse>> {\n return this.http.requestWithMetadata<RowSimilarityResponse>('POST', `${BASE}/similarity`, {\n body: request,\n options,\n });\n }\n\n async integrate(\n request: RowIntegrateRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RowIntegrateResponse>> {\n return this.http.requestWithMetadata<RowIntegrateResponse>('POST', `${BASE}/integrate`, {\n body: request,\n options,\n });\n }\n\n async query(\n request: DynamicQueryRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<DynamicQueryResponse>> {\n return this.http.requestWithMetadata<DynamicQueryResponse>('POST', `${BASE}/query`, {\n body: request,\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n RegisterSourceRequest,\n RegisterSourceResponse,\n ListSourcesResponse,\n SourceDetailResponse,\n DiscoverSchemaRequest,\n DiscoverSchemaResponse,\n IngestFromSourceRequest,\n IngestFromSourceResponse,\n} from '../types/sources.js';\n\nconst BASE = '/api/v1/sources';\n\n/**\n * Resource client for data source operations.\n *\n * @remarks\n * Provides registration, listing, schema discovery, and data ingestion\n * for external data sources (CSV, SQL, Neo4j, MCP, REST, etc.).\n */\nexport class SourcesClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Register a new data source.\n *\n * @param request - Source registration request.\n * @param options - Per-call request options.\n * @returns Registration result.\n */\n async register(\n request: RegisterSourceRequest,\n options?: RequestOptions,\n ): Promise<RegisterSourceResponse> {\n return this.http.post<RegisterSourceResponse>(BASE, request, options);\n }\n\n /**\n * List all registered data sources.\n *\n * @param options - Per-call request options.\n * @returns List of sources.\n */\n async list(options?: RequestOptions): Promise<ListSourcesResponse> {\n return this.http.get<ListSourcesResponse>(BASE, options);\n }\n\n /**\n * Get details for a registered source.\n *\n * @param sourceId - Source identifier.\n * @param options - Per-call request options.\n * @returns Source details and health status.\n */\n async get(sourceId: string, options?: RequestOptions): Promise<SourceDetailResponse> {\n return this.http.get<SourceDetailResponse>(`${BASE}/${sourceId}`, options);\n }\n\n /**\n * Delete a registered source.\n *\n * @param sourceId - Source identifier.\n * @param options - Per-call request options.\n */\n async delete(sourceId: string, options?: RequestOptions): Promise<void> {\n await this.http.delete(`${BASE}/${sourceId}`, options);\n }\n\n /**\n * Discover schema from a registered source.\n *\n * @param sourceId - Source identifier.\n * @param request - Discovery parameters.\n * @param options - Per-call request options.\n * @returns Discovered schema with sorts and relations.\n */\n async discoverSchema(\n sourceId: string,\n request?: DiscoverSchemaRequest,\n options?: RequestOptions,\n ): Promise<DiscoverSchemaResponse> {\n return this.http.post<DiscoverSchemaResponse>(\n `${BASE}/${sourceId}/discover`,\n request,\n options,\n );\n }\n\n /**\n * Ingest data from a registered source.\n *\n * @param sourceId - Source identifier.\n * @param request - Ingestion parameters.\n * @param options - Per-call request options.\n * @returns Ingestion results and statistics.\n */\n async ingest(\n sourceId: string,\n request: IngestFromSourceRequest,\n options?: RequestOptions,\n ): Promise<IngestFromSourceResponse> {\n return this.http.post<IngestFromSourceResponse>(\n `${BASE}/${sourceId}/ingest`,\n request,\n options,\n );\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): SourcesClientWithMetadata {\n return new SourcesClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link SourcesClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class SourcesClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async register(\n request: RegisterSourceRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RegisterSourceResponse>> {\n return this.http.requestWithMetadata<RegisterSourceResponse>('POST', BASE, {\n body: request,\n options,\n });\n }\n\n async list(options?: RequestOptions): Promise<ApiResponse<ListSourcesResponse>> {\n return this.http.requestWithMetadata<ListSourcesResponse>('GET', BASE, { options });\n }\n\n async get(\n sourceId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<SourceDetailResponse>> {\n return this.http.requestWithMetadata<SourceDetailResponse>('GET', `${BASE}/${sourceId}`, {\n options,\n });\n }\n\n async delete(sourceId: string, options?: RequestOptions): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('DELETE', `${BASE}/${sourceId}`, { options });\n }\n\n async discoverSchema(\n sourceId: string,\n request?: DiscoverSchemaRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<DiscoverSchemaResponse>> {\n return this.http.requestWithMetadata<DiscoverSchemaResponse>(\n 'POST',\n `${BASE}/${sourceId}/discover`,\n { body: request, options },\n );\n }\n\n async ingest(\n sourceId: string,\n request: IngestFromSourceRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<IngestFromSourceResponse>> {\n return this.http.requestWithMetadata<IngestFromSourceResponse>(\n 'POST',\n `${BASE}/${sourceId}/ingest`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n DetectCommunitiesRequest,\n DetectCommunitiesResponse,\n GetMembershipsRequest,\n GetMembershipsResponse,\n SearchCommunitiesRequest,\n SearchCommunitiesResponse,\n} from '../types/communities.js';\n\nconst BASE = '/api/v1/communities';\n\n/**\n * Resource client for community detection operations.\n *\n * @remarks\n * Provides community detection, membership queries, and community search\n * using graph-based clustering of psi-terms.\n */\nexport class CommunitiesClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Detect communities from existing terms.\n *\n * @param request - Detection request with tenant ID and optional config.\n * @param options - Per-call request options.\n * @returns Detected communities with statistics.\n */\n async detect(\n request: DetectCommunitiesRequest,\n options?: RequestOptions,\n ): Promise<DetectCommunitiesResponse> {\n return this.http.post<DetectCommunitiesResponse>(`${BASE}/detect`, request, options);\n }\n\n /**\n * Get community memberships for a term.\n *\n * @param request - Membership request with term and tenant IDs.\n * @param options - Per-call request options.\n * @returns Memberships with community info.\n */\n async getMemberships(\n request: GetMembershipsRequest,\n options?: RequestOptions,\n ): Promise<GetMembershipsResponse> {\n return this.http.post<GetMembershipsResponse>(`${BASE}/memberships`, request, options);\n }\n\n /**\n * Search communities by entities, impact, level, or keyword.\n *\n * @param request - Search request with mode and tenant ID.\n * @param options - Per-call request options.\n * @returns Matching communities.\n */\n async search(\n request: SearchCommunitiesRequest,\n options?: RequestOptions,\n ): Promise<SearchCommunitiesResponse> {\n return this.http.post<SearchCommunitiesResponse>(`${BASE}/search`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): CommunitiesClientWithMetadata {\n return new CommunitiesClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link CommunitiesClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class CommunitiesClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async detect(\n request: DetectCommunitiesRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<DetectCommunitiesResponse>> {\n return this.http.requestWithMetadata<DetectCommunitiesResponse>('POST', `${BASE}/detect`, {\n body: request,\n options,\n });\n }\n\n async getMemberships(\n request: GetMembershipsRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<GetMembershipsResponse>> {\n return this.http.requestWithMetadata<GetMembershipsResponse>('POST', `${BASE}/memberships`, {\n body: request,\n options,\n });\n }\n\n async search(\n request: SearchCommunitiesRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SearchCommunitiesResponse>> {\n return this.http.requestWithMetadata<SearchCommunitiesResponse>('POST', `${BASE}/search`, {\n body: request,\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n StringCompareRequest,\n StringComparePredicateRequest,\n BatchStringCompareRequest,\n StringConcatRequest,\n StringLengthRequest,\n StringOpRequest,\n SubstringRequest,\n AscRequest,\n ChrRequest,\n NumberToStringRequest,\n RelationalArithRequest,\n MathFunctionRequest,\n BitwiseRequest,\n ModularArithRequest,\n CopyTermRequest,\n DeepCopyRequest,\n BatchCopyRequest,\n} from '../types/utilities.js';\n\n/**\n * Resource client for utility operations (strings, arithmetic, copy).\n *\n * @remarks\n * Combines string operations (/api/v1/strings/), arithmetic operations\n * (/api/v1/arithmetic/), and copy operations (/api/v1/copy/) into a\n * single client. Most operations are session-scoped and return void.\n */\nexport class UtilitiesClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n // --- String Operations ---\n\n /**\n * Compare two strings.\n *\n * @param request - Comparison request.\n * @param options - Per-call request options.\n */\n async stringCompare(\n request: StringCompareRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/strings/compare', request, options);\n }\n\n /**\n * Compare strings with a predicate operator (Wild_LIFE-style).\n *\n * @param request - Predicate comparison request.\n * @param options - Per-call request options.\n */\n async stringComparePredicate(\n request: StringComparePredicateRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/strings/compare-predicate', request, options);\n }\n\n /**\n * Batch string comparison.\n *\n * @param request - Batch comparison request.\n * @param options - Per-call request options.\n */\n async stringCompareBatch(\n request: BatchStringCompareRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/strings/compare-batch', request, options);\n }\n\n /**\n * Concatenate two strings.\n *\n * @param request - Concatenation request.\n * @param options - Per-call request options.\n */\n async stringConcat(\n request: StringConcatRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/strings/concat', request, options);\n }\n\n /**\n * Get string length.\n *\n * @param request - Length request.\n * @param options - Per-call request options.\n */\n async stringLength(\n request: StringLengthRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/strings/length', request, options);\n }\n\n /**\n * Perform a general string operation.\n *\n * @param request - String operation request.\n * @param options - Per-call request options.\n */\n async stringOp(\n request: StringOpRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/strings/op', request, options);\n }\n\n /**\n * Extract a substring.\n *\n * @param request - Substring request.\n * @param options - Per-call request options.\n */\n async substring(\n request: SubstringRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/strings/substr', request, options);\n }\n\n /**\n * Get ASCII code of a character.\n *\n * @param request - ASC request.\n * @param options - Per-call request options.\n */\n async asc(\n request: AscRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/strings/asc', request, options);\n }\n\n /**\n * Get character from ASCII code.\n *\n * @param request - CHR request.\n * @param options - Per-call request options.\n */\n async chr(\n request: ChrRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/strings/chr', request, options);\n }\n\n /**\n * Convert a number to string.\n *\n * @param request - Number-to-string request.\n * @param options - Per-call request options.\n */\n async numberToString(\n request: NumberToStringRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/strings/from-number', request, options);\n }\n\n // --- Arithmetic Operations ---\n\n /**\n * Perform relational addition.\n *\n * @param request - Relational arithmetic request (3-way).\n * @param options - Per-call request options.\n */\n async add(\n request: RelationalArithRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/arithmetic/add', request, options);\n }\n\n /**\n * Perform relational subtraction.\n *\n * @param request - Relational arithmetic request (3-way).\n * @param options - Per-call request options.\n */\n async sub(\n request: RelationalArithRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/arithmetic/sub', request, options);\n }\n\n /**\n * Perform relational multiplication.\n *\n * @param request - Relational arithmetic request (3-way).\n * @param options - Per-call request options.\n */\n async mult(\n request: RelationalArithRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/arithmetic/mult', request, options);\n }\n\n /**\n * Perform relational division.\n *\n * @param request - Relational arithmetic request (3-way).\n * @param options - Per-call request options.\n */\n async div(\n request: RelationalArithRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/arithmetic/div', request, options);\n }\n\n /**\n * Apply a math function (sin, cos, sqrt, etc.).\n *\n * @param request - Math function request.\n * @param options - Per-call request options.\n */\n async math(\n request: MathFunctionRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/arithmetic/math', request, options);\n }\n\n /**\n * Perform a bitwise operation.\n *\n * @param request - Bitwise request.\n * @param options - Per-call request options.\n */\n async bitwise(\n request: BitwiseRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/arithmetic/bitwise', request, options);\n }\n\n /**\n * Perform modular arithmetic (mod, rem, gcd).\n *\n * @param request - Modular arithmetic request.\n * @param options - Per-call request options.\n */\n async modular(\n request: ModularArithRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/arithmetic/modular', request, options);\n }\n\n // --- Copy Operations ---\n\n /**\n * Copy a term.\n *\n * @param request - Copy request with mode.\n * @param options - Per-call request options.\n */\n async copyTerm(\n request: CopyTermRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/copy/term', request, options);\n }\n\n /**\n * Deep copy a term with co-reference preservation.\n *\n * @param request - Deep copy request.\n * @param options - Per-call request options.\n */\n async deepCopy(\n request: DeepCopyRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/copy/deep', request, options);\n }\n\n /**\n * Batch copy multiple terms.\n *\n * @param request - Batch copy request.\n * @param options - Per-call request options.\n */\n async batchCopy(\n request: BatchCopyRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post('/api/v1/copy/batch', request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): UtilitiesClientWithMetadata {\n return new UtilitiesClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link UtilitiesClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class UtilitiesClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async stringCompare(\n request: StringCompareRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/strings/compare', {\n body: request, options,\n });\n }\n\n async stringComparePredicate(\n request: StringComparePredicateRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/strings/compare-predicate', {\n body: request, options,\n });\n }\n\n async stringCompareBatch(\n request: BatchStringCompareRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/strings/compare-batch', {\n body: request, options,\n });\n }\n\n async stringConcat(\n request: StringConcatRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/strings/concat', {\n body: request, options,\n });\n }\n\n async stringLength(\n request: StringLengthRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/strings/length', {\n body: request, options,\n });\n }\n\n async stringOp(\n request: StringOpRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/strings/op', {\n body: request, options,\n });\n }\n\n async substring(\n request: SubstringRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/strings/substr', {\n body: request, options,\n });\n }\n\n async asc(\n request: AscRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/strings/asc', {\n body: request, options,\n });\n }\n\n async chr(\n request: ChrRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/strings/chr', {\n body: request, options,\n });\n }\n\n async numberToString(\n request: NumberToStringRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/strings/from-number', {\n body: request, options,\n });\n }\n\n async add(\n request: RelationalArithRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/arithmetic/add', {\n body: request, options,\n });\n }\n\n async sub(\n request: RelationalArithRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/arithmetic/sub', {\n body: request, options,\n });\n }\n\n async mult(\n request: RelationalArithRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/arithmetic/mult', {\n body: request, options,\n });\n }\n\n async div(\n request: RelationalArithRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/arithmetic/div', {\n body: request, options,\n });\n }\n\n async math(\n request: MathFunctionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/arithmetic/math', {\n body: request, options,\n });\n }\n\n async bitwise(\n request: BitwiseRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/arithmetic/bitwise', {\n body: request, options,\n });\n }\n\n async modular(\n request: ModularArithRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/arithmetic/modular', {\n body: request, options,\n });\n }\n\n async copyTerm(\n request: CopyTermRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/copy/term', {\n body: request, options,\n });\n }\n\n async deepCopy(\n request: DeepCopyRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/copy/deep', {\n body: request, options,\n });\n }\n\n async batchCopy(\n request: BatchCopyRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', '/api/v1/copy/batch', {\n body: request, options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n CreateScenarioRequest,\n CreateScenarioResponse,\n ListScenariosResponse,\n GetScenarioResponse,\n UpdateScenarioRequest,\n UpdateScenarioResponse,\n VerifyScenarioRequest,\n VerifyScenarioResponse,\n} from '../types/scenarios.js';\n\nconst BASE = '/api/v1/scenarios';\n\n/**\n * Resource client for scenario operations.\n *\n * @remarks\n * Provides CRUD operations for scenarios (what-if analysis, verification).\n */\nexport class ScenariosClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Create a new scenario.\n *\n * @param request - Scenario creation parameters.\n * @param options - Per-call request options.\n * @returns Created scenario (may include interactive questions).\n */\n async create(\n request: CreateScenarioRequest,\n options?: RequestOptions,\n ): Promise<CreateScenarioResponse> {\n return this.http.post<CreateScenarioResponse>(BASE, request, options);\n }\n\n /**\n * List all scenarios.\n *\n * @param options - Per-call request options.\n * @returns List of scenarios.\n */\n async list(options?: RequestOptions): Promise<ListScenariosResponse> {\n return this.http.get<ListScenariosResponse>(BASE, options);\n }\n\n /**\n * Get a scenario by ID.\n *\n * @param id - Scenario ID.\n * @param options - Per-call request options.\n * @returns Scenario data.\n */\n async get(id: string, options?: RequestOptions): Promise<GetScenarioResponse> {\n return this.http.get<GetScenarioResponse>(`${BASE}/${id}`, options);\n }\n\n /**\n * Update a scenario.\n *\n * @param id - Scenario ID.\n * @param request - Update parameters.\n * @param options - Per-call request options.\n * @returns Updated scenario.\n */\n async update(\n id: string,\n request: UpdateScenarioRequest,\n options?: RequestOptions,\n ): Promise<UpdateScenarioResponse> {\n return this.http.request<UpdateScenarioResponse>('PATCH', `${BASE}/${id}`, {\n body: request,\n options,\n });\n }\n\n /**\n * Verify a scenario.\n *\n * @param id - Scenario ID.\n * @param request - Verification parameters.\n * @param options - Per-call request options.\n * @returns Verification results.\n */\n async verify(\n id: string,\n request: VerifyScenarioRequest,\n options?: RequestOptions,\n ): Promise<VerifyScenarioResponse> {\n return this.http.post<VerifyScenarioResponse>(`${BASE}/${id}/verify`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): ScenariosClientWithMetadata {\n return new ScenariosClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link ScenariosClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class ScenariosClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async create(\n request: CreateScenarioRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<CreateScenarioResponse>> {\n return this.http.requestWithMetadata<CreateScenarioResponse>('POST', BASE, {\n body: request,\n options,\n });\n }\n\n async list(options?: RequestOptions): Promise<ApiResponse<ListScenariosResponse>> {\n return this.http.requestWithMetadata<ListScenariosResponse>('GET', BASE, { options });\n }\n\n async get(\n id: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<GetScenarioResponse>> {\n return this.http.requestWithMetadata<GetScenarioResponse>('GET', `${BASE}/${id}`, { options });\n }\n\n async update(\n id: string,\n request: UpdateScenarioRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<UpdateScenarioResponse>> {\n return this.http.requestWithMetadata<UpdateScenarioResponse>('PATCH', `${BASE}/${id}`, {\n body: request,\n options,\n });\n }\n\n async verify(\n id: string,\n request: VerifyScenarioRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<VerifyScenarioResponse>> {\n return this.http.requestWithMetadata<VerifyScenarioResponse>(\n 'POST',\n `${BASE}/${id}/verify`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n ApproveActionRequest,\n RejectActionRequest,\n ModifyActionRequest,\n BulkApproveActionsRequest,\n BulkRejectActionsRequest,\n ActionReviewSummary,\n} from '../types/action-reviews.js';\n\nconst BASE = '/api/v1/action-reviews';\n\n/**\n * Resource client for autonomous action review operations.\n *\n * @remarks\n * Provides approval, rejection, modification, and bulk operations\n * for autonomous agent actions requiring human oversight.\n */\nexport class ActionReviewsClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Approve an autonomous action.\n *\n * @param request - Approval request with review ID.\n * @param options - Per-call request options.\n */\n async approve(\n request: ApproveActionRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/approve`, request, options);\n }\n\n /**\n * Reject an autonomous action.\n *\n * @param request - Rejection request with review ID and reason.\n * @param options - Per-call request options.\n */\n async reject(\n request: RejectActionRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/reject`, request, options);\n }\n\n /**\n * Modify an autonomous action.\n *\n * @param request - Modification request with changes.\n * @param options - Per-call request options.\n */\n async modify(\n request: ModifyActionRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/modify`, request, options);\n }\n\n /**\n * Bulk approve multiple actions.\n *\n * @param request - Bulk approval request with review IDs.\n * @param options - Per-call request options.\n */\n async bulkApprove(\n request: BulkApproveActionsRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/bulk-approve`, request, options);\n }\n\n /**\n * Bulk reject multiple actions.\n *\n * @param request - Bulk rejection request with review IDs and reason.\n * @param options - Per-call request options.\n */\n async bulkReject(\n request: BulkRejectActionsRequest,\n options?: RequestOptions,\n ): Promise<void> {\n await this.http.post(`${BASE}/bulk-reject`, request, options);\n }\n\n /**\n * List pending action reviews.\n *\n * @param options - Per-call request options.\n * @returns Pending reviews.\n */\n async listPending(options?: RequestOptions): Promise<unknown> {\n return this.http.get(`${BASE}/pending`, options);\n }\n\n /**\n * Get action review summary.\n *\n * @param options - Per-call request options.\n * @returns Review summary with counts.\n */\n async getSummary(options?: RequestOptions): Promise<ActionReviewSummary> {\n return this.http.get<ActionReviewSummary>(`${BASE}/summary`, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): ActionReviewsClientWithMetadata {\n return new ActionReviewsClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link ActionReviewsClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class ActionReviewsClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async approve(\n request: ApproveActionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/approve`, {\n body: request,\n options,\n });\n }\n\n async reject(\n request: RejectActionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/reject`, {\n body: request,\n options,\n });\n }\n\n async modify(\n request: ModifyActionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/modify`, {\n body: request,\n options,\n });\n }\n\n async bulkApprove(\n request: BulkApproveActionsRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/bulk-approve`, {\n body: request,\n options,\n });\n }\n\n async bulkReject(\n request: BulkRejectActionsRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<void>> {\n return this.http.requestWithMetadata<void>('POST', `${BASE}/bulk-reject`, {\n body: request,\n options,\n });\n }\n\n async listPending(options?: RequestOptions): Promise<ApiResponse<unknown>> {\n return this.http.requestWithMetadata<unknown>('GET', `${BASE}/pending`, { options });\n }\n\n async getSummary(options?: RequestOptions): Promise<ApiResponse<ActionReviewSummary>> {\n return this.http.requestWithMetadata<ActionReviewSummary>('GET', `${BASE}/summary`, {\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n DiscoverEffectsRequest,\n DiscoverEffectsResponse,\n PredictFromDiscoveryRequest,\n PredictFromDiscoveryResponse,\n} from '../types/discovery.js';\n\nconst BASE = '/api/v1/discovery';\n\n/**\n * Resource client for causal discovery operations.\n *\n * @remarks\n * Provides causal effect discovery and prediction based on\n * discovered causal structure.\n */\nexport class DiscoveryClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Discover causal effects for a variable.\n *\n * @param request - Effect discovery request.\n * @param options - Per-call request options.\n * @returns Discovered effects.\n */\n async discoverEffects(\n request: DiscoverEffectsRequest,\n options?: RequestOptions,\n ): Promise<DiscoverEffectsResponse> {\n return this.http.post<DiscoverEffectsResponse>(`${BASE}/effects`, request, options);\n }\n\n /**\n * Predict using discovered causal structure.\n *\n * @param request - Prediction request with evidence.\n * @param options - Per-call request options.\n * @returns Prediction result with confidence.\n */\n async predict(\n request: PredictFromDiscoveryRequest,\n options?: RequestOptions,\n ): Promise<PredictFromDiscoveryResponse> {\n return this.http.post<PredictFromDiscoveryResponse>(`${BASE}/predict`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): DiscoveryClientWithMetadata {\n return new DiscoveryClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link DiscoveryClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class DiscoveryClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async discoverEffects(\n request: DiscoverEffectsRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<DiscoverEffectsResponse>> {\n return this.http.requestWithMetadata<DiscoverEffectsResponse>('POST', `${BASE}/effects`, {\n body: request,\n options,\n });\n }\n\n async predict(\n request: PredictFromDiscoveryRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<PredictFromDiscoveryResponse>> {\n return this.http.requestWithMetadata<PredictFromDiscoveryResponse>('POST', `${BASE}/predict`, {\n body: request,\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n ExtractEntitiesRequest,\n ExtractEntitiesResponse,\n} from '../types/extract.js';\n\nconst BASE = '/api/v1/extract';\n\n/**\n * Resource client for entity extraction operations.\n *\n * @remarks\n * Provides NLP-based entity extraction from text.\n */\nexport class ExtractClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Extract entities from text.\n *\n * @param request - Extraction request with text and options.\n * @param options - Per-call request options.\n * @returns Extracted entities and optional relations.\n */\n async extractEntities(\n request: ExtractEntitiesRequest,\n options?: RequestOptions,\n ): Promise<ExtractEntitiesResponse> {\n return this.http.post<ExtractEntitiesResponse>(`${BASE}/entities`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): ExtractClientWithMetadata {\n return new ExtractClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link ExtractClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class ExtractClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async extractEntities(\n request: ExtractEntitiesRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ExtractEntitiesResponse>> {\n return this.http.requestWithMetadata<ExtractEntitiesResponse>('POST', `${BASE}/entities`, {\n body: request,\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n FormalJudgeRequest,\n FormalJudgeResponse,\n FormalJudgeRefinementResponse,\n} from '../types/oversight.js';\n\nconst BASE = '/api/v1/oversight';\n\n/**\n * Resource client for FormalJudge oversight operations.\n *\n * @remarks\n * Provides neuro-symbolic agentic oversight verification.\n * Single-pass verification judges agent trajectories against formal safety constraints.\n * Iterative refinement re-runs the pipeline to converge on a safe verdict.\n */\nexport class OversightClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Run single-pass FormalJudge oversight verification.\n *\n * @param request - Judge request with trajectory and user intent.\n * @param options - Per-call request options.\n * @returns Verdict, scores, violations, and optional certificate.\n */\n async judge(\n request: FormalJudgeRequest,\n options?: RequestOptions,\n ): Promise<FormalJudgeResponse> {\n return this.http.post<FormalJudgeResponse>(`${BASE}/judge`, request, options);\n }\n\n /**\n * Run iterative refinement FormalJudge pipeline.\n *\n * @param request - Judge request with trajectory and user intent.\n * @param options - Per-call request options.\n * @returns Results from each refinement round with convergence status.\n */\n async refine(\n request: FormalJudgeRequest,\n options?: RequestOptions,\n ): Promise<FormalJudgeRefinementResponse> {\n return this.http.post<FormalJudgeRefinementResponse>(\n `${BASE}/judge/refine`,\n request,\n options,\n );\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): OversightClientWithMetadata {\n return new OversightClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link OversightClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class OversightClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Run single-pass FormalJudge oversight verification.\n *\n * @param request - Judge request with trajectory and user intent.\n * @param options - Per-call request options.\n * @returns Verdict, scores, violations, and optional certificate wrapped in {@link ApiResponse}.\n */\n async judge(\n request: FormalJudgeRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<FormalJudgeResponse>> {\n return this.http.requestWithMetadata<FormalJudgeResponse>('POST', `${BASE}/judge`, {\n body: request,\n options,\n });\n }\n\n /**\n * Run iterative refinement FormalJudge pipeline.\n *\n * @param request - Judge request with trajectory and user intent.\n * @param options - Per-call request options.\n * @returns Results from each refinement round with convergence status wrapped in {@link ApiResponse}.\n */\n async refine(\n request: FormalJudgeRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<FormalJudgeRefinementResponse>> {\n return this.http.requestWithMetadata<FormalJudgeRefinementResponse>(\n 'POST',\n `${BASE}/judge/refine`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n DifferentiableFcRequest,\n DifferentiableFcResponse,\n SoftUnifyRequest,\n SoftUnifyResponse,\n TaggedFcRequest,\n TaggedFcResponse,\n MonadicFixpointRequest,\n MonadicFixpointResponse,\n DerivedInferenceRequest,\n DerivedInferenceResponse,\n ClassifySafetyRequest,\n ClassifySafetyResponse,\n DynamicAddSortRequest,\n DynamicAddSortResponse,\n CdlStatusResponse,\n} from '../types/cdl.js';\n\nconst BASE = '/api/v1/cdl';\n\n/**\n * Resource client for Categorical Deep Learning (CDL) operations.\n *\n * @remarks\n * CDL combines differentiable neural layers with symbolic OSF inference.\n * All 6 CDL phases are exposed:\n * - Phase 1: Tagged forward chaining (provenance semirings)\n * - Phase 2: Differentiable forward chaining + soft unification\n * - Phase 3: Monadic fixpoint (OSF monad iteration)\n * - Phase 4: Derived inference (composed CDL neural layer)\n * - Phase 5: Safety classification (CDL fact grounding)\n * - Phase 6: Dynamic sort addition (self-modifying architecture)\n */\nexport class CdlClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Run differentiable forward chaining (Phases 1+2).\n *\n * @param request - Forward chaining parameters.\n * @param options - Per-call request options.\n * @returns Weighted facts, iteration metrics, and symbolic result.\n */\n async differentiableForwardChain(\n request: DifferentiableFcRequest,\n options?: RequestOptions,\n ): Promise<DifferentiableFcResponse> {\n return this.http.post<DifferentiableFcResponse>(\n `${BASE}/forward-chain/differentiable`,\n request,\n options,\n );\n }\n\n /**\n * Perform soft (differentiable) unification between two terms (Phase 2).\n *\n * @param request - Soft unification request with two term IDs.\n * @param options - Per-call request options.\n * @returns Confidence scores and compatibility.\n */\n async softUnify(\n request: SoftUnifyRequest,\n options?: RequestOptions,\n ): Promise<SoftUnifyResponse> {\n return this.http.post<SoftUnifyResponse>(`${BASE}/soft-unify`, request, options);\n }\n\n /**\n * Run tagged forward chaining with probabilistic semiring (Phase 1).\n *\n * @param request - Tagged forward chaining parameters.\n * @param options - Per-call request options.\n * @returns Tagged facts with probabilities.\n */\n async taggedForwardChain(\n request: TaggedFcRequest,\n options?: RequestOptions,\n ): Promise<TaggedFcResponse> {\n return this.http.post<TaggedFcResponse>(`${BASE}/forward-chain/tagged`, request, options);\n }\n\n /**\n * Run monadic fixpoint inference (Phase 3).\n *\n * @param request - Monadic fixpoint parameters.\n * @param options - Per-call request options.\n * @returns Facts with monadic metadata.\n */\n async monadicFixpoint(\n request: MonadicFixpointRequest,\n options?: RequestOptions,\n ): Promise<MonadicFixpointResponse> {\n return this.http.post<MonadicFixpointResponse>(\n `${BASE}/monadic-fixpoint`,\n request,\n options,\n );\n }\n\n /**\n * Run derived inference through composed CDL layer (Phase 4).\n *\n * @param request - Feature pairs for inference.\n * @param options - Per-call request options.\n * @returns Inference results with architecture info.\n */\n async derivedInference(\n request: DerivedInferenceRequest,\n options?: RequestOptions,\n ): Promise<DerivedInferenceResponse> {\n return this.http.post<DerivedInferenceResponse>(\n `${BASE}/derived-inference`,\n request,\n options,\n );\n }\n\n /**\n * Classify text for safety violations using CDL fact grounding (Phase 5).\n *\n * @param request - Safety classification request.\n * @param options - Per-call request options.\n * @returns Safety decisions, probabilities, and model info.\n */\n async classifySafety(\n request: ClassifySafetyRequest,\n options?: RequestOptions,\n ): Promise<ClassifySafetyResponse> {\n return this.http.post<ClassifySafetyResponse>(\n `${BASE}/classify-safety`,\n request,\n options,\n );\n }\n\n /**\n * Dynamically add a sort to the CDL architecture (Phase 6).\n *\n * @param request - Sort definition.\n * @param options - Per-call request options.\n * @returns Adaptation result with verification.\n */\n async dynamicAddSort(\n request: DynamicAddSortRequest,\n options?: RequestOptions,\n ): Promise<DynamicAddSortResponse> {\n return this.http.post<DynamicAddSortResponse>(\n `${BASE}/dynamic/add-sort`,\n request,\n options,\n );\n }\n\n /**\n * Get CDL subsystem status.\n *\n * @param options - Per-call request options.\n * @returns CDL component statuses.\n */\n async getStatus(options?: RequestOptions): Promise<CdlStatusResponse> {\n return this.http.get<CdlStatusResponse>(`${BASE}/status`, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): CdlClientWithMetadata {\n return new CdlClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link CdlClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class CdlClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async differentiableForwardChain(\n request: DifferentiableFcRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<DifferentiableFcResponse>> {\n return this.http.requestWithMetadata<DifferentiableFcResponse>(\n 'POST',\n `${BASE}/forward-chain/differentiable`,\n { body: request, options },\n );\n }\n\n async softUnify(\n request: SoftUnifyRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SoftUnifyResponse>> {\n return this.http.requestWithMetadata<SoftUnifyResponse>('POST', `${BASE}/soft-unify`, {\n body: request,\n options,\n });\n }\n\n async taggedForwardChain(\n request: TaggedFcRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<TaggedFcResponse>> {\n return this.http.requestWithMetadata<TaggedFcResponse>(\n 'POST',\n `${BASE}/forward-chain/tagged`,\n { body: request, options },\n );\n }\n\n async monadicFixpoint(\n request: MonadicFixpointRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<MonadicFixpointResponse>> {\n return this.http.requestWithMetadata<MonadicFixpointResponse>(\n 'POST',\n `${BASE}/monadic-fixpoint`,\n { body: request, options },\n );\n }\n\n async derivedInference(\n request: DerivedInferenceRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<DerivedInferenceResponse>> {\n return this.http.requestWithMetadata<DerivedInferenceResponse>(\n 'POST',\n `${BASE}/derived-inference`,\n { body: request, options },\n );\n }\n\n async classifySafety(\n request: ClassifySafetyRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<ClassifySafetyResponse>> {\n return this.http.requestWithMetadata<ClassifySafetyResponse>(\n 'POST',\n `${BASE}/classify-safety`,\n { body: request, options },\n );\n }\n\n async dynamicAddSort(\n request: DynamicAddSortRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<DynamicAddSortResponse>> {\n return this.http.requestWithMetadata<DynamicAddSortResponse>(\n 'POST',\n `${BASE}/dynamic/add-sort`,\n { body: request, options },\n );\n }\n\n async getStatus(options?: RequestOptions): Promise<ApiResponse<CdlStatusResponse>> {\n return this.http.requestWithMetadata<CdlStatusResponse>('GET', `${BASE}/status`, {\n options,\n });\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n NeuroSymbolicStatusResponse,\n DiagnosticsResponse,\n TrainingTriggerResponse,\n GFlowNetTrainResponse,\n E2eTrainingRequest,\n E2eTrainingResponse,\n SaveWeightsResponse,\n EmbeddingVerificationResponse,\n SortBoxRequest,\n SortBoxResponse,\n} from '../types/neuro-symbolic.js';\n\nconst BASE = '/api/v1/admin/neuro-symbolic';\n\n/**\n * Resource client for neuro-symbolic operations.\n *\n * @remarks\n * Provides training and embedding management for the neuro-symbolic subsystem.\n * All endpoints are under the admin namespace.\n */\nexport class NeuroSymbolicClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Get neuro-symbolic system status.\n *\n * @param options - Per-call request options.\n * @returns System status.\n */\n async getStatus(options?: RequestOptions): Promise<NeuroSymbolicStatusResponse> {\n return this.http.get<NeuroSymbolicStatusResponse>(`${BASE}/status`, options);\n }\n\n /**\n * Get neuro-symbolic diagnostics.\n *\n * @param options - Per-call request options.\n * @returns Diagnostics information.\n */\n async getDiagnostics(options?: RequestOptions): Promise<DiagnosticsResponse> {\n return this.http.get<DiagnosticsResponse>(`${BASE}/diagnostics`, options);\n }\n\n /**\n * Trigger scorer training.\n *\n * @param options - Per-call request options.\n * @returns Training trigger result.\n */\n async trainScorer(options?: RequestOptions): Promise<TrainingTriggerResponse> {\n return this.http.post<TrainingTriggerResponse>(`${BASE}/train`, undefined, options);\n }\n\n /**\n * Trigger embedding training.\n *\n * @param options - Per-call request options.\n * @returns Training trigger result.\n */\n async trainEmbeddings(options?: RequestOptions): Promise<TrainingTriggerResponse> {\n return this.http.post<TrainingTriggerResponse>(\n `${BASE}/train/embeddings`,\n undefined,\n options,\n );\n }\n\n /**\n * Trigger GFlowNet training.\n *\n * @param options - Per-call request options.\n * @returns GFlowNet training result.\n */\n async trainGflownet(options?: RequestOptions): Promise<GFlowNetTrainResponse> {\n return this.http.post<GFlowNetTrainResponse>(\n `${BASE}/train/gflownet`,\n undefined,\n options,\n );\n }\n\n /**\n * Run end-to-end training.\n *\n * @param request - Training configuration.\n * @param options - Per-call request options.\n * @returns Training results.\n */\n async trainE2e(\n request: E2eTrainingRequest,\n options?: RequestOptions,\n ): Promise<E2eTrainingResponse> {\n return this.http.post<E2eTrainingResponse>(`${BASE}/train/e2e`, request, options);\n }\n\n /**\n * Save trained weights.\n *\n * @param options - Per-call request options.\n * @returns Save result.\n */\n async saveWeights(options?: RequestOptions): Promise<SaveWeightsResponse> {\n return this.http.post<SaveWeightsResponse>(`${BASE}/save-weights`, undefined, options);\n }\n\n /**\n * Verify embedding quality.\n *\n * @param options - Per-call request options.\n * @returns Verification results for containment, meet preservation, and specificity.\n */\n async verifyEmbeddings(options?: RequestOptions): Promise<EmbeddingVerificationResponse> {\n return this.http.get<EmbeddingVerificationResponse>(\n `${BASE}/embeddings/verify`,\n options,\n );\n }\n\n /**\n * Look up a sort's box embedding.\n *\n * @param request - Sort box lookup request.\n * @param options - Per-call request options.\n * @returns Sort box coordinates and volume.\n */\n async sortBoxLookup(\n request: SortBoxRequest,\n options?: RequestOptions,\n ): Promise<SortBoxResponse> {\n return this.http.post<SortBoxResponse>(\n `${BASE}/embeddings/sort-box`,\n request,\n options,\n );\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): NeuroSymbolicClientWithMetadata {\n return new NeuroSymbolicClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link NeuroSymbolicClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class NeuroSymbolicClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async getStatus(\n options?: RequestOptions,\n ): Promise<ApiResponse<NeuroSymbolicStatusResponse>> {\n return this.http.requestWithMetadata<NeuroSymbolicStatusResponse>(\n 'GET',\n `${BASE}/status`,\n { options },\n );\n }\n\n async getDiagnostics(\n options?: RequestOptions,\n ): Promise<ApiResponse<DiagnosticsResponse>> {\n return this.http.requestWithMetadata<DiagnosticsResponse>(\n 'GET',\n `${BASE}/diagnostics`,\n { options },\n );\n }\n\n async trainScorer(\n options?: RequestOptions,\n ): Promise<ApiResponse<TrainingTriggerResponse>> {\n return this.http.requestWithMetadata<TrainingTriggerResponse>(\n 'POST',\n `${BASE}/train`,\n { options },\n );\n }\n\n async trainEmbeddings(\n options?: RequestOptions,\n ): Promise<ApiResponse<TrainingTriggerResponse>> {\n return this.http.requestWithMetadata<TrainingTriggerResponse>(\n 'POST',\n `${BASE}/train/embeddings`,\n { options },\n );\n }\n\n async trainGflownet(\n options?: RequestOptions,\n ): Promise<ApiResponse<GFlowNetTrainResponse>> {\n return this.http.requestWithMetadata<GFlowNetTrainResponse>(\n 'POST',\n `${BASE}/train/gflownet`,\n { options },\n );\n }\n\n async trainE2e(\n request: E2eTrainingRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<E2eTrainingResponse>> {\n return this.http.requestWithMetadata<E2eTrainingResponse>(\n 'POST',\n `${BASE}/train/e2e`,\n { body: request, options },\n );\n }\n\n async saveWeights(\n options?: RequestOptions,\n ): Promise<ApiResponse<SaveWeightsResponse>> {\n return this.http.requestWithMetadata<SaveWeightsResponse>(\n 'POST',\n `${BASE}/save-weights`,\n { options },\n );\n }\n\n async verifyEmbeddings(\n options?: RequestOptions,\n ): Promise<ApiResponse<EmbeddingVerificationResponse>> {\n return this.http.requestWithMetadata<EmbeddingVerificationResponse>(\n 'GET',\n `${BASE}/embeddings/verify`,\n { options },\n );\n }\n\n async sortBoxLookup(\n request: SortBoxRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SortBoxResponse>> {\n return this.http.requestWithMetadata<SortBoxResponse>(\n 'POST',\n `${BASE}/embeddings/sort-box`,\n { body: request, options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n SortDiscoveryRequest,\n SortDiscoveryResponse,\n StartExplorationRequest,\n StartExplorationResponse,\n ConfirmResponse,\n RefuteRequest,\n RefuteResponse,\n ExplorationStatusResponse,\n ExplorationCompleteResponse,\n} from '../types/analysis.js';\n\nconst BASE = '/api/v1/analysis';\n\n/**\n * Resource client for analysis and Formal Concept Analysis (FCA) operations.\n *\n * @remarks\n * Provides sort discovery from existing terms and interactive attribute exploration\n * for discovering implications in the knowledge base.\n */\nexport class AnalysisClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Run sort discovery analysis on existing terms.\n *\n * @param request - Discovery parameters.\n * @param options - Per-call request options.\n * @returns Discovery results with recommendations.\n */\n async sortDiscovery(\n request: SortDiscoveryRequest,\n options?: RequestOptions,\n ): Promise<SortDiscoveryResponse> {\n return this.http.post<SortDiscoveryResponse>(`${BASE}/sort-discovery`, request, options);\n }\n\n /**\n * Start an interactive attribute exploration session.\n *\n * @param request - Exploration parameters.\n * @param options - Per-call request options.\n * @returns Session ID and first question.\n */\n async startExploration(\n request: StartExplorationRequest,\n options?: RequestOptions,\n ): Promise<StartExplorationResponse> {\n return this.http.post<StartExplorationResponse>(\n `${BASE}/attribute-exploration/start`,\n request,\n options,\n );\n }\n\n /**\n * Confirm the current implication in an exploration session.\n *\n * @param sessionId - Exploration session ID.\n * @param options - Per-call request options.\n * @returns Next question and progress.\n */\n async confirmImplication(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ConfirmResponse> {\n return this.http.post<ConfirmResponse>(\n `${BASE}/attribute-exploration/${sessionId}/confirm`,\n undefined,\n options,\n );\n }\n\n /**\n * Refute the current implication with a counterexample.\n *\n * @param sessionId - Exploration session ID.\n * @param request - Counterexample.\n * @param options - Per-call request options.\n * @returns Next question and progress.\n */\n async refuteImplication(\n sessionId: string,\n request: RefuteRequest,\n options?: RequestOptions,\n ): Promise<RefuteResponse> {\n return this.http.post<RefuteResponse>(\n `${BASE}/attribute-exploration/${sessionId}/refute`,\n request,\n options,\n );\n }\n\n /**\n * Get the current status of an exploration session.\n *\n * @param sessionId - Exploration session ID.\n * @param options - Per-call request options.\n * @returns Session status with progress and confirmed implications.\n */\n async getExplorationStatus(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ExplorationStatusResponse> {\n return this.http.get<ExplorationStatusResponse>(\n `${BASE}/attribute-exploration/${sessionId}/status`,\n options,\n );\n }\n\n /**\n * Complete an exploration session and create rules from the discovered basis.\n *\n * @param sessionId - Exploration session ID.\n * @param options - Per-call request options.\n * @returns Final implications and rules created.\n */\n async completeExploration(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ExplorationCompleteResponse> {\n return this.http.post<ExplorationCompleteResponse>(\n `${BASE}/attribute-exploration/${sessionId}/complete`,\n undefined,\n options,\n );\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): AnalysisClientWithMetadata {\n return new AnalysisClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link AnalysisClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class AnalysisClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async sortDiscovery(\n request: SortDiscoveryRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<SortDiscoveryResponse>> {\n return this.http.requestWithMetadata<SortDiscoveryResponse>(\n 'POST',\n `${BASE}/sort-discovery`,\n { body: request, options },\n );\n }\n\n async startExploration(\n request: StartExplorationRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<StartExplorationResponse>> {\n return this.http.requestWithMetadata<StartExplorationResponse>(\n 'POST',\n `${BASE}/attribute-exploration/start`,\n { body: request, options },\n );\n }\n\n async confirmImplication(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<ConfirmResponse>> {\n return this.http.requestWithMetadata<ConfirmResponse>(\n 'POST',\n `${BASE}/attribute-exploration/${sessionId}/confirm`,\n { options },\n );\n }\n\n async refuteImplication(\n sessionId: string,\n request: RefuteRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RefuteResponse>> {\n return this.http.requestWithMetadata<RefuteResponse>(\n 'POST',\n `${BASE}/attribute-exploration/${sessionId}/refute`,\n { body: request, options },\n );\n }\n\n async getExplorationStatus(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<ExplorationStatusResponse>> {\n return this.http.requestWithMetadata<ExplorationStatusResponse>(\n 'GET',\n `${BASE}/attribute-exploration/${sessionId}/status`,\n { options },\n );\n }\n\n async completeExploration(\n sessionId: string,\n options?: RequestOptions,\n ): Promise<ApiResponse<ExplorationCompleteResponse>> {\n return this.http.requestWithMetadata<ExplorationCompleteResponse>(\n 'POST',\n `${BASE}/attribute-exploration/${sessionId}/complete`,\n { options },\n );\n }\n}\n","import type { HttpClient } from '../http.js';\nimport type { ApiResponse, RequestOptions } from '../types/common.js';\nimport type {\n RecordSelectionRequest,\n RecordSelectionResponse,\n PredictPreferencesRequest,\n PredictPreferencesResponse,\n} from '../types/preferences.js';\n\nconst BASE = '/api/v1/preferences';\n\n/**\n * Resource client for Bayesian preference learning operations.\n *\n * @remarks\n * Provides user preference recording and prediction for term ranking.\n */\nexport class PreferencesClient {\n /** @internal */\n protected readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n /**\n * Record a user's term selection for preference learning.\n *\n * @param request - Selection to record.\n * @param options - Per-call request options.\n * @returns Recording result.\n */\n async recordSelection(\n request: RecordSelectionRequest,\n options?: RequestOptions,\n ): Promise<RecordSelectionResponse> {\n return this.http.post<RecordSelectionResponse>(`${BASE}/selection`, request, options);\n }\n\n /**\n * Predict user preferences for candidate terms.\n *\n * @param request - Prediction request with candidates.\n * @param options - Per-call request options.\n * @returns Predictions sorted by score.\n */\n async predict(\n request: PredictPreferencesRequest,\n options?: RequestOptions,\n ): Promise<PredictPreferencesResponse> {\n return this.http.post<PredictPreferencesResponse>(`${BASE}/predict`, request, options);\n }\n\n /**\n * Return a metadata-aware variant of this client.\n *\n * @returns A new client instance whose methods return `Promise<ApiResponse<T>>`.\n */\n withMetadata(): PreferencesClientWithMetadata {\n return new PreferencesClientWithMetadata(this.http);\n }\n}\n\n/**\n * Metadata-aware variant of {@link PreferencesClient}.\n *\n * Every method returns `Promise<ApiResponse<T>>` instead of `Promise<T>`.\n */\nexport class PreferencesClientWithMetadata {\n private readonly http: HttpClient;\n\n /** @internal */\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async recordSelection(\n request: RecordSelectionRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<RecordSelectionResponse>> {\n return this.http.requestWithMetadata<RecordSelectionResponse>(\n 'POST',\n `${BASE}/selection`,\n { body: request, options },\n );\n }\n\n async predict(\n request: PredictPreferencesRequest,\n options?: RequestOptions,\n ): Promise<ApiResponse<PredictPreferencesResponse>> {\n return this.http.requestWithMetadata<PredictPreferencesResponse>(\n 'POST',\n `${BASE}/predict`,\n { body: request, options },\n );\n }\n}\n","import type { ClientConfig } from './config.js';\nimport { resolveConfig } from './config.js';\nimport { HttpClient } from './http.js';\nimport { WebSocketClient } from './websocket.js';\nimport { SortsClient } from './resources/sorts.js';\nimport { TermsClient } from './resources/terms.js';\nimport { InferenceClient } from './resources/inference.js';\nimport { QueryClient } from './resources/query.js';\nimport { CognitiveClient } from './resources/cognitive.js';\nimport { FuzzyClient } from './resources/fuzzy.js';\nimport { ConstraintsClient } from './resources/constraints.js';\nimport { NamespacesClient } from './resources/namespaces.js';\nimport { CollectionsClient } from './resources/collections.js';\nimport { ExecutionClient } from './resources/execution.js';\nimport { CausalClient } from './resources/causal.js';\nimport { IngestionClient } from './resources/ingestion.js';\nimport { ReviewsClient } from './resources/reviews.js';\nimport { VisualizationClient } from './resources/visualization.js';\nimport { IlpClient } from './resources/ilp.js';\nimport { ReasoningClient } from './resources/reasoning.js';\nimport { StatisticalClient } from './resources/statistical.js';\nimport { ControlClient } from './resources/control.js';\nimport { SpacesClient } from './resources/spaces.js';\nimport { RowClient } from './resources/row.js';\nimport { SourcesClient } from './resources/sources.js';\nimport { CommunitiesClient } from './resources/communities.js';\nimport { UtilitiesClient } from './resources/utilities.js';\nimport { ScenariosClient } from './resources/scenarios.js';\nimport { ActionReviewsClient } from './resources/action-reviews.js';\nimport { DiscoveryClient } from './resources/discovery.js';\nimport { ExtractClient } from './resources/extract.js';\nimport { OversightClient } from './resources/oversight.js';\nimport { CdlClient } from './resources/cdl.js';\nimport { NeuroSymbolicClient } from './resources/neuro-symbolic.js';\nimport { AnalysisClient } from './resources/analysis.js';\nimport { PreferencesClient } from './resources/preferences.js';\n\n/**\n * Main client for the Reasoning Layer API.\n *\n * Provides access to all resource clients through a shared HTTP connection\n * with configured authentication, retry, and timeout behavior.\n *\n * @example\n * ```typescript\n * import { ReasoningLayerClient } from '@kortexya/reasoning-layer';\n *\n * const client = new ReasoningLayerClient({\n * baseUrl: 'http://localhost:8083',\n * tenantId: 'my-tenant-uuid',\n * });\n *\n * const sort = await client.sorts.createSort({ name: 'employee' });\n * const term = await client.terms.createTerm({ sort_id: sort.id, features: {} });\n * ```\n */\nexport class ReasoningLayerClient {\n /** Sort (type hierarchy) operations. */\n readonly sorts: SortsClient;\n\n /** Psi-term CRUD operations. */\n readonly terms: TermsClient;\n\n /** Inference engine operations (backward/forward chaining, fuzzy, Bayesian, NAF). */\n readonly inference: InferenceClient;\n\n /** Query operations (unification, OSF search, validation). */\n readonly query: QueryClient;\n\n /** Cognitive agent operations (BDI cycle, beliefs, goals, messaging). */\n readonly cognitive: CognitiveClient;\n\n /** Fuzzy operations (unification, merge, subsumption, top-K search). */\n readonly fuzzy: FuzzyClient;\n\n /** Constraint operations (arithmetic solving, graph visualization). */\n readonly constraints: ConstraintsClient;\n\n /** Namespace operations (hierarchy, imports, metadata). */\n readonly namespaces: NamespacesClient;\n\n /** Collection operations (CRUD, tagging). */\n readonly collections: CollectionsClient;\n\n /** Execution session operations (backtracking, goal stack). */\n readonly execution: ExecutionClient;\n\n /** Causal reasoning operations (Pearl's hierarchy, interventions, counterfactuals). */\n readonly causal: CausalClient;\n\n /** Data ingestion operations (documents, markdown, RDF, session management). */\n readonly ingestion: IngestionClient;\n\n /** Human-in-the-loop review operations (approve, reject, merge, re-extract). */\n readonly reviews: ReviewsClient;\n\n /** Visualization operations (lattice, hypergraph, residuation state). */\n readonly visualization: VisualizationClient;\n\n /** Inductive logic programming operations (pattern learning, synthesis). */\n readonly ilp: IlpClient;\n\n /** Advanced reasoning operations (entailment, subsumption, resource coordination). */\n readonly reasoning: ReasoningClient;\n\n /** Statistical analysis operations (correlation, causal discovery, independence tests). */\n readonly statistical: StatisticalClient;\n\n /** Proof control operations (cut, findall, forall, NAF, conditionals). */\n readonly control: ControlClient;\n\n /** Computation space operations (create, clone, commit, search). */\n readonly spaces: SpacesClient;\n\n /** Row polymorphism operations (schema-flexible search, unification, integration). */\n readonly row: RowClient;\n\n /** Data source operations (register, discover schema, ingest). */\n readonly sources: SourcesClient;\n\n /** Community detection operations (detect, memberships, search). */\n readonly communities: CommunitiesClient;\n\n /** Utility operations (strings, arithmetic, copy). */\n readonly utilities: UtilitiesClient;\n\n /** Scenario operations (CRUD, verification). */\n readonly scenarios: ScenariosClient;\n\n /** Action review operations (approve, reject, modify autonomous actions). */\n readonly actionReviews: ActionReviewsClient;\n\n /** Causal discovery operations (effect discovery, prediction). */\n readonly discovery: DiscoveryClient;\n\n /** Entity extraction operations. */\n readonly extract: ExtractClient;\n\n /** FormalJudge oversight operations (safety verification, refinement). */\n readonly oversight: OversightClient;\n\n /** Categorical Deep Learning operations (differentiable FC, soft unification, safety). */\n readonly cdl: CdlClient;\n\n /** Neuro-symbolic operations (training, embeddings, diagnostics). */\n readonly neuroSymbolic: NeuroSymbolicClient;\n\n /** Analysis and FCA operations (sort discovery, attribute exploration). */\n readonly analysis: AnalysisClient;\n\n /** Bayesian preference learning operations (selection recording, prediction). */\n readonly preferences: PreferencesClient;\n\n /**\n * Create a new ReasoningLayerClient.\n *\n * @param config - Client configuration. At minimum, `baseUrl` and `tenantId` are required.\n *\n * @throws {Error} If `baseUrl` or `tenantId` is missing.\n */\n constructor(config: ClientConfig) {\n const resolved = resolveConfig(config);\n const http = new HttpClient(resolved);\n const ws = new WebSocketClient(resolved);\n\n this.sorts = new SortsClient(http, resolved.tenantId);\n this.terms = new TermsClient(http);\n this.inference = new InferenceClient(http);\n this.query = new QueryClient(http);\n this.cognitive = new CognitiveClient(http, ws);\n this.fuzzy = new FuzzyClient(http);\n this.constraints = new ConstraintsClient(http);\n this.namespaces = new NamespacesClient(http);\n this.collections = new CollectionsClient(http);\n this.execution = new ExecutionClient(http);\n this.causal = new CausalClient(http);\n this.ingestion = new IngestionClient(http);\n this.reviews = new ReviewsClient(http);\n this.visualization = new VisualizationClient(http);\n this.ilp = new IlpClient(http);\n this.reasoning = new ReasoningClient(http);\n this.statistical = new StatisticalClient(http);\n this.control = new ControlClient(http);\n this.spaces = new SpacesClient(http);\n this.row = new RowClient(http);\n this.sources = new SourcesClient(http);\n this.communities = new CommunitiesClient(http);\n this.utilities = new UtilitiesClient(http);\n this.scenarios = new ScenariosClient(http);\n this.actionReviews = new ActionReviewsClient(http);\n this.discovery = new DiscoveryClient(http);\n this.extract = new ExtractClient(http);\n this.oversight = new OversightClient(http);\n this.cdl = new CdlClient(http);\n this.neuroSymbolic = new NeuroSymbolicClient(http);\n this.analysis = new AnalysisClient(http);\n this.preferences = new PreferencesClient(http);\n }\n}\n","import type {\n ValueDto,\n FuzzyShapeDto,\n StringValue,\n IntegerValue,\n RealValue,\n BooleanValue,\n UninstantiatedValue,\n ReferenceValue,\n ListValue,\n FuzzyScalarValue,\n FuzzyNumberValue,\n SetValue,\n TriangularShape,\n TrapezoidalShape,\n GaussianShape,\n CyclicGaussianShape,\n} from '../types/index.js';\n\n/**\n * Builder namespace for tagged `ValueDto` values.\n *\n * Produces JSON in the tagged discriminated union format:\n * `{\"type\": \"String\", \"value\": \"hello\"}`, `{\"type\": \"Integer\", \"value\": 42}`, etc.\n *\n * @remarks\n * **Serialization format: Tagged (`ValueDto`).**\n *\n * Use with term CRUD (`/api/v1/terms`), queries (`/api/v1/query`), and fuzzy operations.\n * Do NOT use with homoiconic inference endpoints — use {@link FeatureInput} builders instead.\n *\n * @example\n * ```typescript\n * import { Value } from '@kortexya/reasoninglayer';\n *\n * const features = {\n * name: Value.string(\"Alice\"),\n * age: Value.integer(30),\n * active: Value.boolean(true),\n * };\n * ```\n */\nexport const Value = {\n /**\n * Create a string value.\n *\n * @param s - The string value.\n * @returns A tagged `StringValue`: `{\"type\": \"String\", \"value\": \"hello\"}`.\n *\n * @remarks\n * Serialization format: Tagged (ValueDto). Use with term CRUD, queries, fuzzy operations.\n * Do NOT use with homoiconic inference endpoints.\n *\n * @example\n * ```typescript\n * Value.string(\"Alice\") // {\"type\": \"String\", \"value\": \"Alice\"}\n * ```\n */\n string(s: string): StringValue {\n return { type: 'String', value: s };\n },\n\n /**\n * Create an integer value.\n *\n * @param n - The integer value (i64 on backend).\n * @returns A tagged `IntegerValue`: `{\"type\": \"Integer\", \"value\": 42}`.\n *\n * @remarks\n * Serialization format: Tagged (ValueDto). Use with term CRUD, queries, fuzzy operations.\n * Do NOT use with homoiconic inference endpoints.\n *\n * @example\n * ```typescript\n * Value.integer(42) // {\"type\": \"Integer\", \"value\": 42}\n * ```\n */\n integer(n: number): IntegerValue {\n return { type: 'Integer', value: n };\n },\n\n /**\n * Create a real (floating-point) value.\n *\n * @param n - The real value (f64 on backend).\n * @returns A tagged `RealValue`: `{\"type\": \"Real\", \"value\": 3.14}`.\n *\n * @remarks\n * Serialization format: Tagged (ValueDto). Use with term CRUD, queries, fuzzy operations.\n * Do NOT use with homoiconic inference endpoints.\n *\n * @example\n * ```typescript\n * Value.real(3.14) // {\"type\": \"Real\", \"value\": 3.14}\n * ```\n */\n real(n: number): RealValue {\n return { type: 'Real', value: n };\n },\n\n /**\n * Create a boolean value.\n *\n * @param b - The boolean value.\n * @returns A tagged `BooleanValue`: `{\"type\": \"Boolean\", \"value\": true}`.\n *\n * @remarks\n * Serialization format: Tagged (ValueDto). Use with term CRUD, queries, fuzzy operations.\n * Do NOT use with homoiconic inference endpoints.\n *\n * @example\n * ```typescript\n * Value.boolean(true) // {\"type\": \"Boolean\", \"value\": true}\n * ```\n */\n boolean(b: boolean): BooleanValue {\n return { type: 'Boolean', value: b };\n },\n\n /**\n * Create an uninstantiated (unknown) value.\n *\n * @returns A tagged `UninstantiatedValue`: `{\"type\": \"Uninstantiated\"}`.\n *\n * @remarks\n * Serialization format: Tagged (ValueDto). Use with term CRUD, queries, fuzzy operations.\n * Do NOT use with homoiconic inference endpoints.\n *\n * Represents a feature whose value has not yet been determined.\n * In the untagged format, this corresponds to `null`.\n *\n * @example\n * ```typescript\n * Value.uninstantiated() // {\"type\": \"Uninstantiated\"}\n * ```\n */\n uninstantiated(): UninstantiatedValue {\n return { type: 'Uninstantiated' };\n },\n\n /**\n * Create a reference to another term by UUID.\n *\n * @param id - The UUID of the referenced term.\n * @returns A tagged `ReferenceValue`: `{\"type\": \"Reference\", \"value\": \"uuid\"}`.\n *\n * @remarks\n * Serialization format: Tagged (ValueDto). Use with term CRUD, queries, fuzzy operations.\n * Do NOT use with homoiconic inference endpoints.\n *\n * @example\n * ```typescript\n * Value.reference(\"550e8400-e29b-41d4-a716-446655440000\")\n * ```\n */\n reference(id: string): ReferenceValue {\n return { type: 'Reference', value: id };\n },\n\n /**\n * Create a list of values.\n *\n * @param items - The list items as `ValueDto` values.\n * @returns A tagged `ListValue`: `{\"type\": \"List\", \"value\": [...]}`.\n *\n * @remarks\n * Serialization format: Tagged (ValueDto). Use with term CRUD, queries, fuzzy operations.\n * Do NOT use with homoiconic inference endpoints.\n *\n * @example\n * ```typescript\n * Value.list([Value.integer(1), Value.integer(2), Value.integer(3)])\n * ```\n */\n list(items: ValueDto[]): ListValue {\n return { type: 'List', value: items };\n },\n\n /**\n * Create a fuzzy scalar with a value and membership degree.\n *\n * @param value - The scalar value.\n * @param membership - The membership degree (0.0 to 1.0).\n * @returns A tagged `FuzzyScalarValue`.\n *\n * @remarks\n * Serialization format: Tagged (ValueDto). Use with term CRUD, queries, fuzzy operations.\n * Do NOT use with homoiconic inference endpoints.\n *\n * @example\n * ```typescript\n * Value.fuzzyScalar(0.5, 0.8) // {\"type\": \"FuzzyScalar\", \"value\": {\"value\": 0.5, \"membership\": 0.8}}\n * ```\n */\n fuzzyScalar(value: number, membership: number): FuzzyScalarValue {\n return { type: 'FuzzyScalar', value: { value, membership } };\n },\n\n /**\n * Create a fuzzy number defined by a membership function shape.\n *\n * @param shape - The fuzzy membership function shape (use {@link FuzzyShape} builders).\n * @returns A tagged `FuzzyNumberValue`.\n *\n * @remarks\n * Serialization format: Tagged (ValueDto). Use with term CRUD, queries, fuzzy operations.\n * Do NOT use with homoiconic inference endpoints.\n *\n * Note: The `FuzzyShapeDto` uses `\"kind\"` as its discriminator, NOT `\"type\"`.\n *\n * @example\n * ```typescript\n * Value.fuzzyNumber(FuzzyShape.triangular(20, 22, 24))\n * // {\"type\": \"FuzzyNumber\", \"value\": {\"shape\": {\"kind\": \"Triangular\", \"a\": 20, \"b\": 22, \"c\": 24}}}\n * ```\n */\n fuzzyNumber(shape: FuzzyShapeDto): FuzzyNumberValue {\n return { type: 'FuzzyNumber', value: { shape } };\n },\n\n /**\n * Create a set value with lower and upper bounds and an optional sort constraint.\n *\n * @param lower - Lower bound — definite members (term UUIDs).\n * @param upper - Upper bound — possible members (term UUIDs).\n * @param sortConstraint - Optional sort constraint for set members.\n * @returns A tagged `SetValue`.\n *\n * @remarks\n * Serialization format: Tagged (ValueDto). Use with term CRUD, queries, fuzzy operations.\n * Do NOT use with homoiconic inference endpoints.\n *\n * Represents partial information about set membership using Smyth powerdomain semantics.\n *\n * @example\n * ```typescript\n * Value.set([\"uuid1\"], [\"uuid1\", \"uuid2\", \"uuid3\"], \"person_sort_id\")\n * ```\n */\n set(lower: string[], upper: string[], sortConstraint?: string): SetValue {\n return {\n type: 'Set',\n value: {\n lower,\n upper,\n sort_constraint: sortConstraint ?? null,\n },\n };\n },\n} as const;\n\n/**\n * Builder namespace for fuzzy membership function shapes.\n *\n * Produces JSON using the `\"kind\"` discriminator (NOT `\"type\"`):\n * `{\"kind\": \"Triangular\", \"a\": 20, \"b\": 22, \"c\": 24}`.\n *\n * @remarks\n * **Discriminator field is `\"kind\"`, NOT `\"type\"`.**\n * This differs from most other tagged unions in the API which use `\"type\"`.\n *\n * @example\n * ```typescript\n * import { FuzzyShape, Value } from '@kortexya/reasoninglayer';\n *\n * const shape = FuzzyShape.triangular(20, 22, 24);\n * const fuzzyAge = Value.fuzzyNumber(shape);\n * ```\n */\nexport const FuzzyShape = {\n /**\n * Create a triangular fuzzy membership function.\n *\n * @param a - Left foot (membership = 0).\n * @param b - Peak (membership = 1).\n * @param c - Right foot (membership = 0).\n * @returns A `TriangularShape`: `{\"kind\": \"Triangular\", \"a\": 20, \"b\": 22, \"c\": 24}`.\n *\n * @remarks\n * Serialization format: Tagged by `\"kind\"` (FuzzyShapeDto).\n * The discriminator field is `\"kind\"`, NOT `\"type\"`.\n *\n * @example\n * ```typescript\n * FuzzyShape.triangular(20, 22, 24)\n * // {\"kind\": \"Triangular\", \"a\": 20, \"b\": 22, \"c\": 24}\n * ```\n */\n triangular(a: number, b: number, c: number): TriangularShape {\n return { kind: 'Triangular', a, b, c };\n },\n\n /**\n * Create a trapezoidal fuzzy membership function.\n *\n * @param a - Left foot (membership starts rising from 0).\n * @param b - Left shoulder (membership reaches 1).\n * @param c - Right shoulder (membership starts falling from 1).\n * @param d - Right foot (membership returns to 0).\n * @returns A `TrapezoidalShape`: `{\"kind\": \"Trapezoidal\", \"a\": 18, \"b\": 20, \"c\": 24, \"d\": 26}`.\n *\n * @remarks\n * Serialization format: Tagged by `\"kind\"` (FuzzyShapeDto).\n * The discriminator field is `\"kind\"`, NOT `\"type\"`.\n *\n * @example\n * ```typescript\n * FuzzyShape.trapezoidal(18, 20, 24, 26)\n * // {\"kind\": \"Trapezoidal\", \"a\": 18, \"b\": 20, \"c\": 24, \"d\": 26}\n * ```\n */\n trapezoidal(a: number, b: number, c: number, d: number): TrapezoidalShape {\n return { kind: 'Trapezoidal', a, b, c, d };\n },\n\n /**\n * Create a Gaussian fuzzy membership function.\n *\n * @param mean - Center of the Gaussian curve (membership = 1).\n * @param stdDev - Standard deviation controlling width.\n * @returns A `GaussianShape`: `{\"kind\": \"Gaussian\", \"mean\": 100, \"std_dev\": 15}`.\n *\n * @remarks\n * Serialization format: Tagged by `\"kind\"` (FuzzyShapeDto).\n * The discriminator field is `\"kind\"`, NOT `\"type\"`.\n *\n * @example\n * ```typescript\n * FuzzyShape.gaussian(100, 15)\n * // {\"kind\": \"Gaussian\", \"mean\": 100, \"std_dev\": 15}\n * ```\n */\n gaussian(mean: number, stdDev: number): GaussianShape {\n return { kind: 'Gaussian', mean, std_dev: stdDev };\n },\n\n /**\n * Create a cyclic Gaussian fuzzy membership function with periodic wrapping.\n *\n * @param mean - Center of the Gaussian curve.\n * @param stdDev - Standard deviation controlling width.\n * @param period - Period of the cyclic wrapping (e.g., 360 for degrees).\n * @returns A `CyclicGaussianShape`: `{\"kind\": \"CyclicGaussian\", \"mean\": 180, \"std_dev\": 30, \"period\": 360}`.\n *\n * @remarks\n * Serialization format: Tagged by `\"kind\"` (FuzzyShapeDto).\n * The discriminator field is `\"kind\"`, NOT `\"type\"`.\n *\n * @example\n * ```typescript\n * FuzzyShape.cyclicGaussian(180, 30, 360)\n * // {\"kind\": \"CyclicGaussian\", \"mean\": 180, \"std_dev\": 30, \"period\": 360}\n * ```\n */\n cyclicGaussian(mean: number, stdDev: number, period: number): CyclicGaussianShape {\n return { kind: 'CyclicGaussian', mean, std_dev: stdDev, period };\n },\n} as const;\n","import type {\n FeatureInputValueDto,\n FeatureInputTermRef,\n FeatureInputConstrainedVariable,\n FeatureInputVariable,\n FeatureInputInlineTerm,\n FeatureInputInlineTermByName,\n TermInputDto,\n} from '../types/index.js';\n\n/**\n * Builder namespace for untagged `FeatureInputValueDto` values.\n *\n * Produces raw JSON primitives and structural objects for homoiconic inference endpoints:\n * `\"hello\"`, `42`, `true`, `null`, `{term_id: \"uuid\"}`, etc.\n *\n * @remarks\n * **Serialization format: Untagged (`FeatureInputValueDto`).**\n *\n * Use with homoiconic inference endpoints (backward/forward chaining, fuzzy proving, etc.).\n * Do NOT use with term CRUD or query endpoints — use {@link Value} builders instead.\n *\n * @example\n * ```typescript\n * import { FeatureInput, TermInput } from '@kortexya/reasoninglayer';\n *\n * const features = {\n * name: FeatureInput.string(\"Alice\"),\n * age: FeatureInput.integer(30),\n * supervisor: FeatureInput.ref(supervisorId),\n * };\n * const term = TermInput.byName(\"person\", features);\n * ```\n */\nexport const FeatureInput = {\n /**\n * Create an untagged string value.\n *\n * @param s - The string value.\n * @returns The raw string: `\"hello\"`.\n *\n * @remarks\n * Serialization format: Untagged (FeatureInputValueDto). Use with homoiconic inference endpoints.\n * Do NOT use with term CRUD endpoints.\n *\n * @example\n * ```typescript\n * FeatureInput.string(\"Alice\") // \"Alice\"\n * ```\n */\n string(s: string): FeatureInputValueDto {\n return s;\n },\n\n /**\n * Create an untagged integer value.\n *\n * @param n - The integer value.\n * @returns The raw number: `42`.\n *\n * @remarks\n * Serialization format: Untagged (FeatureInputValueDto). Use with homoiconic inference endpoints.\n * Do NOT use with term CRUD endpoints.\n *\n * The backend distinguishes integers from reals. Use `FeatureInput.real()` for floating-point.\n *\n * @example\n * ```typescript\n * FeatureInput.integer(42) // 42\n * ```\n */\n integer(n: number): FeatureInputValueDto {\n return n;\n },\n\n /**\n * Create an untagged real (floating-point) value.\n *\n * @param n - The real value.\n * @returns The raw number: `3.14`.\n *\n * @remarks\n * Serialization format: Untagged (FeatureInputValueDto). Use with homoiconic inference endpoints.\n * Do NOT use with term CRUD endpoints.\n *\n * The backend distinguishes integers from reals. Use `FeatureInput.integer()` for whole numbers.\n *\n * @example\n * ```typescript\n * FeatureInput.real(3.14) // 3.14\n * ```\n */\n real(n: number): FeatureInputValueDto {\n return n;\n },\n\n /**\n * Create an untagged boolean value.\n *\n * @param b - The boolean value.\n * @returns The raw boolean: `true` or `false`.\n *\n * @remarks\n * Serialization format: Untagged (FeatureInputValueDto). Use with homoiconic inference endpoints.\n * Do NOT use with term CRUD endpoints.\n *\n * @example\n * ```typescript\n * FeatureInput.boolean(true) // true\n * ```\n */\n boolean(b: boolean): FeatureInputValueDto {\n return b;\n },\n\n /**\n * Create an untagged null value representing an uninstantiated feature.\n *\n * @returns `null`.\n *\n * @remarks\n * Serialization format: Untagged (FeatureInputValueDto). Use with homoiconic inference endpoints.\n * Do NOT use with term CRUD endpoints.\n *\n * Equivalent to `Value.uninstantiated()` in the tagged format.\n *\n * @example\n * ```typescript\n * FeatureInput.uninstantiated() // null\n * ```\n */\n uninstantiated(): null {\n return null;\n },\n\n /**\n * Create a reference to an existing term by UUID.\n *\n * @param termId - The UUID of the referenced term.\n * @returns An object: `{term_id: \"uuid\"}`.\n *\n * @remarks\n * Serialization format: Untagged (FeatureInputValueDto). Use with homoiconic inference endpoints.\n * Do NOT use with term CRUD endpoints.\n *\n * @example\n * ```typescript\n * FeatureInput.ref(\"550e8400-e29b-41d4-a716-446655440000\")\n * // {term_id: \"550e8400-e29b-41d4-a716-446655440000\"}\n * ```\n */\n ref(termId: string): FeatureInputTermRef {\n return { term_id: termId };\n },\n\n /**\n * Create an unconstrained variable.\n *\n * @param name - Variable name (conventionally prefixed with `?`, e.g., `\"?X\"`).\n * @returns An object: `{name: \"?X\"}`.\n *\n * @remarks\n * Serialization format: Untagged (FeatureInputValueDto). Use with homoiconic inference endpoints.\n * Do NOT use with term CRUD endpoints.\n *\n * For constrained variables, use {@link FeatureInput.constrainedVar} instead.\n *\n * @example\n * ```typescript\n * FeatureInput.variable(\"?X\") // {name: \"?X\"}\n * ```\n */\n variable(name: string): FeatureInputVariable {\n return { name };\n },\n\n /**\n * Create a constrained variable with a constraint as a `TermInputDto`.\n *\n * @param name - Variable name (conventionally prefixed with `?`, e.g., `\"?Salary\"`).\n * @param constraint - The constraint as a `TermInputDto` (typically a guard sort).\n * @returns An object: `{name: \"?Salary\", constraint: {...}}`.\n *\n * @remarks\n * Serialization format: Untagged (FeatureInputValueDto). Use with homoiconic inference endpoints.\n * Do NOT use with term CRUD endpoints.\n *\n * The most common constraint is a guard, which can be created with the `guard()` builder:\n * ```typescript\n * FeatureInput.constrainedVar(\"?Salary\", guard(\"gt\", 100))\n * ```\n *\n * **Critical ordering note**: `ConstrainedVariable` (with `name` + `constraint`) must serialize\n * before `Variable` (with only `name`) in the Rust `serde(untagged)` deserialization order.\n * The builder ensures the `constraint` field is always present.\n *\n * @example\n * ```typescript\n * FeatureInput.constrainedVar(\"?Salary\", guard(\"gt\", 100))\n * // {name: \"?Salary\", constraint: {sort_name: \"guard\", features: {op: \"gt\", right: 100}}}\n * ```\n */\n constrainedVar(name: string, constraint: TermInputDto): FeatureInputConstrainedVariable {\n return { name, constraint };\n },\n\n /**\n * Create an inline term by sort UUID in a feature value position.\n *\n * @param sortId - The sort UUID.\n * @param features - Optional features for the inline term.\n * @returns An object: `{sort_id: \"uuid\", features: {...}}`.\n *\n * @remarks\n * Serialization format: Untagged (FeatureInputValueDto). Use with homoiconic inference endpoints.\n * Do NOT use with term CRUD endpoints.\n *\n * @example\n * ```typescript\n * FeatureInput.inlineTerm(\"sort-uuid\", { name: FeatureInput.string(\"Alice\") })\n * ```\n */\n inlineTerm(\n sortId: string,\n features?: Record<string, FeatureInputValueDto>,\n ): FeatureInputInlineTerm {\n return features !== undefined ? { sort_id: sortId, features } : { sort_id: sortId };\n },\n\n /**\n * Create an inline term by sort name in a feature value position.\n *\n * @param sortName - The sort name (resolved server-side).\n * @param features - Optional features for the inline term.\n * @returns An object: `{sort_name: \"person\", features: {...}}`.\n *\n * @remarks\n * Serialization format: Untagged (FeatureInputValueDto). Use with homoiconic inference endpoints.\n * Do NOT use with term CRUD endpoints.\n *\n * @example\n * ```typescript\n * FeatureInput.inlineTermByName(\"person\", { name: FeatureInput.string(\"Alice\") })\n * ```\n */\n inlineTermByName(\n sortName: string,\n features?: Record<string, FeatureInputValueDto>,\n ): FeatureInputInlineTermByName {\n return features !== undefined ? { sort_name: sortName, features } : { sort_name: sortName };\n },\n\n /**\n * Create a list of feature input values.\n *\n * @param items - The list items as `FeatureInputValueDto` values.\n * @returns A raw JSON array: `[...]`.\n *\n * @remarks\n * Serialization format: Untagged (FeatureInputValueDto). Use with homoiconic inference endpoints.\n * Do NOT use with term CRUD endpoints.\n *\n * @example\n * ```typescript\n * FeatureInput.list([FeatureInput.string(\"a\"), FeatureInput.string(\"b\")])\n * // [\"a\", \"b\"]\n * ```\n */\n list(items: FeatureInputValueDto[]): FeatureInputValueDto[] {\n return items;\n },\n} as const;\n","import type {\n TermInputRef,\n TermInputInline,\n TermInputInlineByName,\n FeatureInputValueDto,\n} from '../types/index.js';\n\n/**\n * Builder namespace for `TermInputDto` values.\n *\n * Produces structural (untagged) term input objects used as top-level goals,\n * rule heads/bodies, and fact inputs in inference requests.\n *\n * @remarks\n * **Serialization format: Untagged (`TermInputDto`).**\n *\n * Use as top-level goal or rule head/body in inference requests.\n * The backend tries each variant in order: Reference, Inline (by sort ID), InlineByName.\n *\n * @example\n * ```typescript\n * import { TermInput, FeatureInput } from '@kortexya/reasoninglayer';\n *\n * // Reference an existing term\n * const ref = TermInput.ref(\"550e8400-e29b-41d4-a716-446655440000\");\n *\n * // Inline by sort name\n * const person = TermInput.byName(\"person\", {\n * name: FeatureInput.string(\"Alice\"),\n * age: FeatureInput.integer(30),\n * });\n * ```\n */\nexport const TermInput = {\n /**\n * Reference an existing term by UUID.\n *\n * @param termId - The UUID of the existing term.\n * @returns A reference input: `{term_id: \"uuid\"}`.\n *\n * @remarks\n * Serialization format: Untagged (TermInputDto). Use as top-level goal or rule head/body\n * in inference requests.\n *\n * @example\n * ```typescript\n * TermInput.ref(\"550e8400-e29b-41d4-a716-446655440000\")\n * // {term_id: \"550e8400-e29b-41d4-a716-446655440000\"}\n * ```\n */\n ref(termId: string): TermInputRef {\n return { term_id: termId };\n },\n\n /**\n * Define a term inline using a sort UUID and features.\n *\n * @param sortId - The sort UUID.\n * @param features - Feature map with `FeatureInputValueDto` values.\n * @returns An inline input: `{sort_id: \"uuid\", features: {...}}`.\n *\n * @remarks\n * Serialization format: Untagged (TermInputDto). Use as top-level goal or rule head/body\n * in inference requests.\n *\n * The `features` field is required for the sort_id variant per the backend schema.\n *\n * @example\n * ```typescript\n * TermInput.byId(\"sort-uuid\", {\n * name: FeatureInput.string(\"Alice\"),\n * })\n * ```\n */\n byId(sortId: string, features: Record<string, FeatureInputValueDto>): TermInputInline {\n return { sort_id: sortId, features };\n },\n\n /**\n * Define a term inline using a sort name and optional features.\n *\n * @param sortName - The sort name (resolved server-side to a sort UUID).\n * @param features - Optional feature map with `FeatureInputValueDto` values.\n * @returns An inline input: `{sort_name: \"person\", features: {...}}`.\n *\n * @remarks\n * Serialization format: Untagged (TermInputDto). Use as top-level goal or rule head/body\n * in inference requests.\n *\n * Sort name resolution happens server-side. The name must match an existing sort\n * in the tenant's sort hierarchy.\n *\n * @example\n * ```typescript\n * TermInput.byName(\"person\", {\n * name: FeatureInput.string(\"Alice\"),\n * age: FeatureInput.integer(30),\n * })\n * // {sort_name: \"person\", features: {name: \"Alice\", age: 30}}\n * ```\n */\n byName(\n sortName: string,\n features?: Record<string, FeatureInputValueDto>,\n ): TermInputInlineByName {\n return features !== undefined ? { sort_name: sortName, features } : { sort_name: sortName };\n },\n} as const;\n","import type { TermInputDto } from '../types/index.js';\nimport type { GuardOp } from '../types/inference.js';\n\n/**\n * Create a guard constraint as a `TermInputDto`.\n *\n * Produces a `TermInputDto` representing a guard sort with `op` and `right` features.\n * This is a shorthand for the most common constrained variable pattern.\n *\n * @param op - The guard comparison operator.\n * @param right - The right-hand value to compare against.\n * @returns A `TermInputDto` for the guard sort.\n *\n * @remarks\n * Serialization format: Untagged (TermInputDto). Used as the `constraint` argument\n * to `FeatureInput.constrainedVar()`.\n *\n * This function constructs object literals directly matching the `TermInputDto` and\n * `FeatureInputValueDto` shapes. It does NOT import from other builder files.\n *\n * The produced JSON matches:\n * ```json\n * {\"sort_name\": \"guard\", \"features\": {\"op\": \"gt\", \"right\": 100}}\n * ```\n *\n * @example\n * ```typescript\n * import { FeatureInput, guard } from '@kortexya/reasoninglayer';\n *\n * // Shorthand:\n * const salary = FeatureInput.constrainedVar(\"?Salary\", guard(\"gt\", 100));\n *\n * // Equivalent to:\n * const salaryExplicit = FeatureInput.constrainedVar(\"?Salary\",\n * { sort_name: \"guard\", features: { op: \"gt\", right: 100 } }\n * );\n * ```\n */\nexport function guard(op: GuardOp, right: number | string | boolean): TermInputDto {\n return {\n sort_name: 'guard',\n features: { op, right },\n };\n}\n","import type {\n CreateSortRequest,\n FeatureDescriptorDto,\n BoundConstraintDto,\n} from '../types/index.js';\n\n/**\n * Fluent builder for constructing {@link CreateSortRequest} objects.\n *\n * @remarks\n * The builder accumulates sort properties through a fluent chain and produces\n * a `CreateSortRequest` when `.build()` is called.\n *\n * @example\n * ```typescript\n * import { SortBuilder } from '@kortexya/reasoninglayer';\n *\n * const request = SortBuilder.create(\"employee\")\n * .withId(\"550e8400-e29b-41d4-a716-446655440000\")\n * .parent(personSortId)\n * .feature({\n * name: \"salary\",\n * required: true,\n * constraint: { type: \"IntegerRange\", value: { min: 0, max: 10000000 } },\n * })\n * .feature({ name: \"department\", required: true })\n * .boundConstraint({\n * constraint_type: \"upper\",\n * target: \"end_date\",\n * source_path: \"company.dissolution_date\",\n * })\n * .description(\"An employee at a company\")\n * .build();\n * ```\n */\nexport class SortBuilder {\n private readonly _name: string;\n private _id: string | null = null;\n private readonly _parents: string[] = [];\n private readonly _features: FeatureDescriptorDto[] = [];\n private readonly _boundConstraints: BoundConstraintDto[] = [];\n private _description: string | null = null;\n\n private constructor(name: string) {\n this._name = name;\n }\n\n /**\n * Start building a new sort with the given name.\n *\n * @param name - The sort name.\n * @returns A new `SortBuilder` instance.\n *\n * @example\n * ```typescript\n * const builder = SortBuilder.create(\"employee\");\n * ```\n */\n static create(name: string): SortBuilder {\n return new SortBuilder(name);\n }\n\n /**\n * Set a deterministic UUID for the sort.\n *\n * @param id - The UUID to use.\n * @returns This builder instance for chaining.\n *\n * @remarks\n * If not set, the server generates a UUID automatically.\n * Deterministic UUIDs are useful for homoiconic cross-references between sorts, rules, and facts.\n *\n * @example\n * ```typescript\n * builder.withId(\"550e8400-e29b-41d4-a716-446655440000\")\n * ```\n */\n withId(id: string): this {\n this._id = id;\n return this;\n }\n\n /**\n * Add a parent sort by UUID.\n *\n * @param parentId - The UUID of the parent sort.\n * @returns This builder instance for chaining.\n *\n * @remarks\n * Can be called multiple times to add multiple parents (multiple inheritance).\n * Uses sort UUIDs. For name-based parents, use {@link BulkSortDefinition} via bulk creation.\n *\n * @example\n * ```typescript\n * builder.parent(personSortId).parent(organizationMemberSortId)\n * ```\n */\n parent(parentId: string): this {\n this._parents.push(parentId);\n return this;\n }\n\n /**\n * Add multiple parent sorts by UUID.\n *\n * @param parentIds - The UUIDs of the parent sorts.\n * @returns This builder instance for chaining.\n *\n * @example\n * ```typescript\n * builder.parents([personSortId, organizationMemberSortId])\n * ```\n */\n parents(parentIds: string[]): this {\n this._parents.push(...parentIds);\n return this;\n }\n\n /**\n * Add a feature descriptor to the sort.\n *\n * @param descriptor - The feature descriptor defining name, type, constraints, etc.\n * @returns This builder instance for chaining.\n *\n * @example\n * ```typescript\n * builder.feature({\n * name: \"salary\",\n * required: true,\n * constraint: { type: \"IntegerRange\", value: { min: 0, max: 10000000 } },\n * })\n * ```\n */\n feature(descriptor: FeatureDescriptorDto): this {\n this._features.push(descriptor);\n return this;\n }\n\n /**\n * Add an inter-feature bound constraint.\n *\n * @param constraint - The bound constraint definition.\n * @returns This builder instance for chaining.\n *\n * @example\n * ```typescript\n * builder.boundConstraint({\n * constraint_type: \"upper\",\n * target: \"end_date\",\n * source_path: \"company.dissolution_date\",\n * })\n * ```\n */\n boundConstraint(constraint: BoundConstraintDto): this {\n this._boundConstraints.push(constraint);\n return this;\n }\n\n /**\n * Set a human-readable description for the sort.\n *\n * @param desc - The description text.\n * @returns This builder instance for chaining.\n *\n * @example\n * ```typescript\n * builder.description(\"An employee at a company\")\n * ```\n */\n description(desc: string): this {\n this._description = desc;\n return this;\n }\n\n /**\n * Build the final `CreateSortRequest`.\n *\n * @returns The constructed `CreateSortRequest` ready to send to the API.\n *\n * @example\n * ```typescript\n * const request = SortBuilder.create(\"employee\")\n * .parent(personSortId)\n * .feature({ name: \"salary\", required: true })\n * .build();\n *\n * await client.sorts.createSort(request);\n * ```\n */\n build(): CreateSortRequest {\n const request: CreateSortRequest = {\n name: this._name,\n };\n\n if (this._id !== null) {\n request.id = this._id;\n }\n\n if (this._parents.length > 0) {\n request.parents = this._parents;\n }\n\n if (this._features.length > 0) {\n request.features = this._features;\n }\n\n if (this._boundConstraints.length > 0) {\n request.bound_constraints = this._boundConstraints;\n }\n\n if (this._description !== null) {\n request.description = this._description;\n }\n\n return request;\n }\n}\n","import type { TermInputDto } from '../types/index.js';\nimport type { FeatureInputValueDto } from '../types/homoiconic.js';\nimport { ValidationError } from '../errors.js';\n\n/** Type guard that narrows `unknown` to an indexable plain object. */\nfunction isPlainObject(v: unknown): v is Record<string, unknown> {\n return typeof v === 'object' && v !== null && !Array.isArray(v);\n}\n\n/**\n * Coerce the `features` property of an object to a `FeatureInputValueDto` record.\n *\n * @param obj - The parent object whose `features` property to coerce.\n * @returns Coerced features record, or `undefined` if `features` is absent or not an object.\n */\nfunction coerceObjectFeatures(\n obj: Record<string, unknown>,\n): Record<string, FeatureInputValueDto> | undefined {\n const rawFeatures = obj.features;\n if (!isPlainObject(rawFeatures)) {\n return undefined;\n }\n const coerced: Record<string, FeatureInputValueDto> = {};\n for (const [k, v] of Object.entries(rawFeatures)) {\n coerced[k] = coerceFeatureValue(v);\n }\n return coerced;\n}\n\n/**\n * Auto-coerce a raw JavaScript value to a `FeatureInputValueDto`.\n *\n * @remarks\n * Applies the following coercion rules:\n * - `string` -> raw string\n * - `number` -> raw number (integer or float, backend distinguishes)\n * - `boolean` -> raw boolean\n * - `object with term_id` -> `{ term_id }` (term reference)\n * - `object with sort_name` -> `{ sort_name, features }` (inline by name, recursive)\n * - `object with sort_id` -> `{ sort_id, features }` (inline by ID, recursive)\n * - `object with name + constraint` -> `{ name, constraint }` (constrained variable)\n * - `object with name` -> `{ name }` (variable)\n * - `array` -> recurse each element\n * - `null` -> throws `ValidationError`\n *\n * @param value - The raw JavaScript value to coerce.\n * @returns The coerced `FeatureInputValueDto`.\n * @throws {ValidationError} If the value is `null`.\n */\nfunction coerceFeatureValue(value: unknown): FeatureInputValueDto {\n if (value === null) {\n throw new ValidationError('null is not a valid feature value in psi() shorthand. Use FeatureInput.uninstantiated() for null values.');\n }\n\n if (typeof value === 'string') {\n return value;\n }\n\n if (typeof value === 'number') {\n return value;\n }\n\n if (typeof value === 'boolean') {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map(coerceFeatureValue);\n }\n\n if (isPlainObject(value)) {\n // Term reference: { term_id: \"uuid\" }\n if ('term_id' in value && typeof value.term_id === 'string') {\n return { term_id: value.term_id };\n }\n\n // Constrained variable: { name: \"?X\", constraint: {...} }\n // Must be checked BEFORE variable (ConstrainedVariable > Variable ordering)\n if ('name' in value && typeof value.name === 'string' && 'constraint' in value) {\n // Accepted: constraint shape is validated server-side; full runtime validation is out of scope\n return { name: value.name, constraint: value.constraint as TermInputDto };\n }\n\n // Variable: { name: \"?X\" }\n if ('name' in value && typeof value.name === 'string') {\n return { name: value.name };\n }\n\n // Inline term by sort_name: { sort_name: \"person\", features: {...} }\n if ('sort_name' in value && typeof value.sort_name === 'string') {\n const features = coerceObjectFeatures(value);\n if (features) {\n return { sort_name: value.sort_name, features };\n }\n return { sort_name: value.sort_name };\n }\n\n // Inline term by sort_id: { sort_id: \"uuid\", features: {...} }\n if ('sort_id' in value && typeof value.sort_id === 'string') {\n const features = coerceObjectFeatures(value);\n if (features) {\n return { sort_id: value.sort_id, features };\n }\n return { sort_id: value.sort_id };\n }\n }\n\n throw new ValidationError(`Cannot coerce value of type ${typeof value} to FeatureInputValueDto`);\n}\n\n/**\n * Shorthand builder for creating inline `TermInputDto` values by sort name.\n *\n * @param sortName - The sort name (resolved server-side).\n * @param features - Optional features map with auto-coercion from raw JavaScript values.\n * @returns A `TermInputDto` (InlineByName variant).\n *\n * @remarks\n * **Serialization format: Untagged (`TermInputDto`).**\n *\n * The `psi()` shorthand auto-coerces raw JavaScript values to `FeatureInputValueDto`:\n * - Strings, numbers, booleans are passed through as raw primitives\n * - Objects with `term_id` become term references\n * - Objects with `sort_name` or `sort_id` become nested inline terms (recursive)\n * - Objects with `name` + optional `constraint` become variables\n * - Arrays are recursed element-by-element\n * - `null` throws a `ValidationError` (use `FeatureInput.uninstantiated()` explicitly)\n *\n * @example\n * ```typescript\n * import { psi } from '@kortexya/reasoninglayer';\n *\n * // Simple term:\n * const term = psi(\"person\", { name: \"Alice\", age: 30 });\n * // { sort_name: \"person\", features: { name: \"Alice\", age: 30 } }\n *\n * // Nested term:\n * const employee = psi(\"employee\", {\n * person: { sort_name: \"person\", features: { name: \"Bob\" } },\n * salary: 100000,\n * });\n *\n * // With variable:\n * const query = psi(\"person\", { name: { name: \"?Name\" } });\n * ```\n *\n * @throws {ValidationError} If any feature value is `null`.\n */\nexport function psi(\n sortName: string,\n features?: Record<string, unknown>,\n): TermInputDto {\n if (!features) {\n return { sort_name: sortName };\n }\n\n const coerced: Record<string, FeatureInputValueDto> = {};\n for (const [key, value] of Object.entries(features)) {\n coerced[key] = coerceFeatureValue(value);\n }\n\n return { sort_name: sortName, features: coerced };\n}\n","import type { ConstraintInputDto, AllenRelation } from '../types/inference.js';\n\n/**\n * Create an Allen temporal constraint.\n *\n * @param relation - One of the 13 Allen interval relations.\n * @param intervalA - The first interval identifier (variable or feature path).\n * @param intervalBTermId - The term ID (UUID) containing the second interval.\n * @returns A `ConstraintInputDto` of type `Allen`.\n *\n * @remarks\n * **Serialization format: Tagged (`ConstraintInputDto`).**\n *\n * Produces the following JSON:\n * ```json\n * {\n * \"type\": \"Allen\",\n * \"interval_a\": \"start_time\",\n * \"interval_b_term_id\": \"uuid\",\n * \"relation\": \"before\"\n * }\n * ```\n *\n * The 13 Allen relations are: `before`, `after`, `meets`, `met_by`,\n * `overlaps`, `overlapped_by`, `during`, `contains`, `starts`,\n * `started_by`, `finishes`, `finished_by`, `equals`.\n *\n * @example\n * ```typescript\n * import { allen } from '@kortexya/reasoninglayer';\n *\n * // Event A must happen before Event B:\n * const constraint = allen(\"before\", \"event_a_time\", \"event-b-term-uuid\");\n *\n * // Meeting must overlap with work hours:\n * const overlap = allen(\"overlaps\", \"meeting_time\", \"work-hours-term-uuid\");\n * ```\n */\nexport function allen(\n relation: AllenRelation,\n intervalA: string,\n intervalBTermId: string,\n): ConstraintInputDto {\n return {\n type: 'Allen',\n interval_a: intervalA,\n interval_b_term_id: intervalBTermId,\n relation,\n };\n}\n","import type { FeatureValueDto } from '../types/index.js';\n\n/**\n * UUID v4 regex pattern for discriminating term references from plain strings.\n *\n * @remarks\n * This is a best-effort heuristic. The backend distinguishes UUID strings from\n * regular strings by format validation. Some edge cases may exist where a plain\n * string happens to match UUID format.\n */\nconst UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\n/**\n * Check if a string matches UUID v4 format.\n *\n * @param s - The string to check.\n * @returns `true` if the string matches UUID format.\n */\nexport function isUuid(s: string): boolean {\n return UUID_REGEX.test(s);\n}\n\n/**\n * Discriminate an unknown JSON value into a typed `FeatureValueDto`.\n *\n * Parses raw JSON values from homoiconic inference responses into the\n * `FeatureValueDto` type. This is needed because the untagged format\n * uses raw JSON primitives with no type discriminator.\n *\n * @param value - The raw JSON value to discriminate.\n * @returns The typed `FeatureValueDto` value.\n * @throws {Error} If the value cannot be discriminated into a valid `FeatureValueDto`.\n *\n * @remarks\n * **Ambiguity note**: UUID strings and regular strings are both `string` in TypeScript.\n * This function does NOT distinguish between them — both return as `string`.\n * Use {@link isUuid} separately if you need to determine whether a string value\n * is a term reference (UUID) or a plain string.\n *\n * The backend's Rust `#[serde(untagged)]` deserialization order is:\n * 1. TermRef (UUID string)\n * 2. TermRefs/List (array)\n * 3. String\n * 4. Integer (i64)\n * 5. Real (f64)\n * 6. Boolean\n * 7. Null (uninstantiated)\n *\n * Since JavaScript `number` does not distinguish i64 from f64, this function\n * uses `Number.isInteger()` as a heuristic. The caller can use this to decide\n * whether to treat a number as integer or real.\n *\n * @example\n * ```typescript\n * import { discriminateFeatureValue, isUuid } from '@kortexya/reasoninglayer';\n *\n * const val = discriminateFeatureValue(\"hello\"); // string\n * const num = discriminateFeatureValue(42); // number (integer)\n * const arr = discriminateFeatureValue([\"a\", \"b\"]); // string[]\n * const nil = discriminateFeatureValue(null); // null\n *\n * // To check if a string is a term reference:\n * if (typeof val === \"string\" && isUuid(val)) {\n * // It's a term reference UUID\n * }\n * ```\n */\nexport function discriminateFeatureValue(value: unknown): FeatureValueDto {\n if (value === null) {\n return null;\n }\n\n if (typeof value === 'boolean') {\n return value;\n }\n\n if (typeof value === 'number') {\n return value;\n }\n\n if (typeof value === 'string') {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map(discriminateFeatureValue);\n }\n\n throw new Error(\n `Cannot discriminate value into FeatureValueDto: ${typeof value} (${JSON.stringify(value)})`,\n );\n}\n"]}
|