@kortexya/reasoninglayer 0.2.1 → 0.2.2
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 +9 -3
- package/dist/index.cjs +552 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +464 -2
- package/dist/index.d.ts +464 -2
- package/dist/index.js +552 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/config.ts","../src/errors.ts","../src/websocket.ts","../src/api-spec/generated/http-client.ts","../src/generated-bridge.ts","../src/api-spec/generated/Sorts.ts","../src/api-spec/generated/Types.ts","../src/api-spec/generated/Terms.ts","../src/api-spec/generated/Inference.ts","../src/api-spec/generated/Cognitive.ts","../src/api-spec/generated/CognitiveAgentsEpisodicMemory.ts","../src/api-spec/generated/CognitiveAgentsHtn.ts","../src/api-spec/generated/CognitiveAgentsMessaging.ts","../src/api-spec/generated/CognitiveAgentsPlanLibrary.ts","../src/api-spec/generated/Ingestion.ts","../src/api-spec/generated/StructuredIngestion.ts","../src/api-spec/generated/NeuroSymbolic.ts","../src/api-spec/generated/Strings.ts","../src/api-spec/generated/Arithmetic.ts","../src/api-spec/generated/Copy.ts","../src/api-spec/generated/Communities.ts","../src/api-spec/generated/Collections.ts","../src/api-spec/generated/Execution.ts","../src/api-spec/generated/Causal.ts","../src/api-spec/generated/Reviews.ts","../src/api-spec/generated/Visualization.ts","../src/api-spec/generated/Ilp.ts","../src/api-spec/generated/ActionReviews.ts","../src/api-spec/generated/Discovery.ts","../src/api-spec/generated/Extraction.ts","../src/api-spec/generated/Oversight.ts","../src/api-spec/generated/Cdl.ts","../src/api-spec/generated/Preferences.ts","../src/api-spec/generated/Query.ts","../src/api-spec/generated/Fuzzy.ts","../src/api-spec/generated/Constraints.ts","../src/api-spec/generated/Reasoning.ts","../src/api-spec/generated/Statistical.ts","../src/api-spec/generated/Control.ts","../src/api-spec/generated/Spaces.ts","../src/api-spec/generated/RowPolymorphism.ts","../src/api-spec/generated/Namespaces.ts","../src/api-spec/generated/Scenarios.ts","../src/api-spec/generated/Analysis.ts","../src/api-spec/generated/Functions.ts","../src/api-spec/generated/WebhookActions.ts","../src/api-spec/generated/Synthetic.ts","../src/api-spec/generated/ProofEngine.ts","../src/api-spec/generated/Health.ts","../src/api-spec/generated/Admin.ts","../src/api-spec/generated/ImageExtraction.ts","../src/api-spec/generated/Ontology.ts","../src/api-spec/generated/Generation.ts","../src/api-spec/generated/Rag.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/resources/functions.ts","../src/resources/webhook-actions.ts","../src/resources/synthetic.ts","../src/resources/proof-engine.ts","../src/resources/health.ts","../src/resources/admin.ts","../src/resources/image-extraction.ts","../src/resources/ontology.ts","../src/resources/generation.ts","../src/resources/rag.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":["abortController","data"],"mappings":"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","file":"index.cjs","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.2.1';\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 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","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nexport type QueryParamsType = Record<string | number, any>;\nexport type ResponseFormat = keyof Omit<Body, \"body\" | \"bodyUsed\">;\n\nexport interface FullRequestParams extends Omit<RequestInit, \"body\"> {\n /** set parameter to `true` for call `securityWorker` for this request */\n secure?: boolean;\n /** request path */\n path: string;\n /** content type of request body */\n type?: ContentType;\n /** query params */\n query?: QueryParamsType;\n /** format of response (i.e. response.json() -> format: \"json\") */\n format?: ResponseFormat;\n /** request body */\n body?: unknown;\n /** base url */\n baseUrl?: string;\n /** request cancellation token */\n cancelToken?: CancelToken;\n}\n\nexport type RequestParams = Omit<\n FullRequestParams,\n \"body\" | \"method\" | \"query\" | \"path\"\n>;\n\nexport interface ApiConfig<SecurityDataType = unknown> {\n baseUrl?: string;\n baseApiParams?: Omit<RequestParams, \"baseUrl\" | \"cancelToken\" | \"signal\">;\n securityWorker?: (\n securityData: SecurityDataType | null,\n ) => Promise<RequestParams | void> | RequestParams | void;\n customFetch?: typeof fetch;\n}\n\nexport interface HttpResponse<D extends unknown, E extends unknown = unknown>\n extends Response {\n data: D;\n error: E;\n}\n\ntype CancelToken = Symbol | string | number;\n\nexport enum ContentType {\n Json = \"application/json\",\n JsonApi = \"application/vnd.api+json\",\n FormData = \"multipart/form-data\",\n UrlEncoded = \"application/x-www-form-urlencoded\",\n Text = \"text/plain\",\n}\n\nexport class HttpClient<SecurityDataType = unknown> {\n public baseUrl: string = \"\";\n private securityData: SecurityDataType | null = null;\n private securityWorker?: ApiConfig<SecurityDataType>[\"securityWorker\"];\n private abortControllers = new Map<CancelToken, AbortController>();\n private customFetch = (...fetchParams: Parameters<typeof fetch>) =>\n fetch(...fetchParams);\n\n private baseApiParams: RequestParams = {\n credentials: \"same-origin\",\n headers: {},\n redirect: \"follow\",\n referrerPolicy: \"no-referrer\",\n };\n\n constructor(apiConfig: ApiConfig<SecurityDataType> = {}) {\n Object.assign(this, apiConfig);\n }\n\n public setSecurityData = (data: SecurityDataType | null) => {\n this.securityData = data;\n };\n\n protected encodeQueryParam(key: string, value: any) {\n const encodedKey = encodeURIComponent(key);\n return `${encodedKey}=${encodeURIComponent(typeof value === \"number\" ? value : `${value}`)}`;\n }\n\n protected addQueryParam(query: QueryParamsType, key: string) {\n return this.encodeQueryParam(key, query[key]);\n }\n\n protected addArrayQueryParam(query: QueryParamsType, key: string) {\n const value = query[key];\n return value.map((v: any) => this.encodeQueryParam(key, v)).join(\"&\");\n }\n\n protected toQueryString(rawQuery?: QueryParamsType): string {\n const query = rawQuery || {};\n const keys = Object.keys(query).filter(\n (key) => \"undefined\" !== typeof query[key],\n );\n return keys\n .map((key) =>\n Array.isArray(query[key])\n ? this.addArrayQueryParam(query, key)\n : this.addQueryParam(query, key),\n )\n .join(\"&\");\n }\n\n protected addQueryParams(rawQuery?: QueryParamsType): string {\n const queryString = this.toQueryString(rawQuery);\n return queryString ? `?${queryString}` : \"\";\n }\n\n private contentFormatters: Record<ContentType, (input: any) => any> = {\n [ContentType.Json]: (input: any) =>\n input !== null && (typeof input === \"object\" || typeof input === \"string\")\n ? JSON.stringify(input)\n : input,\n [ContentType.JsonApi]: (input: any) =>\n input !== null && (typeof input === \"object\" || typeof input === \"string\")\n ? JSON.stringify(input)\n : input,\n [ContentType.Text]: (input: any) =>\n input !== null && typeof input !== \"string\"\n ? JSON.stringify(input)\n : input,\n [ContentType.FormData]: (input: any) => {\n if (input instanceof FormData) {\n return input;\n }\n\n return Object.keys(input || {}).reduce((formData, key) => {\n const property = input[key];\n formData.append(\n key,\n property instanceof Blob\n ? property\n : typeof property === \"object\" && property !== null\n ? JSON.stringify(property)\n : `${property}`,\n );\n return formData;\n }, new FormData());\n },\n [ContentType.UrlEncoded]: (input: any) => this.toQueryString(input),\n };\n\n protected mergeRequestParams(\n params1: RequestParams,\n params2?: RequestParams,\n ): RequestParams {\n return {\n ...this.baseApiParams,\n ...params1,\n ...(params2 || {}),\n headers: {\n ...(this.baseApiParams.headers || {}),\n ...(params1.headers || {}),\n ...((params2 && params2.headers) || {}),\n },\n };\n }\n\n protected createAbortSignal = (\n cancelToken: CancelToken,\n ): AbortSignal | undefined => {\n if (this.abortControllers.has(cancelToken)) {\n const abortController = this.abortControllers.get(cancelToken);\n if (abortController) {\n return abortController.signal;\n }\n return void 0;\n }\n\n const abortController = new AbortController();\n this.abortControllers.set(cancelToken, abortController);\n return abortController.signal;\n };\n\n public abortRequest = (cancelToken: CancelToken) => {\n const abortController = this.abortControllers.get(cancelToken);\n\n if (abortController) {\n abortController.abort();\n this.abortControllers.delete(cancelToken);\n }\n };\n\n public request = async <T = any, E = any>({\n body,\n secure,\n path,\n type,\n query,\n format,\n baseUrl,\n cancelToken,\n ...params\n }: FullRequestParams): Promise<HttpResponse<T, E>> => {\n const secureParams =\n ((typeof secure === \"boolean\" ? secure : this.baseApiParams.secure) &&\n this.securityWorker &&\n (await this.securityWorker(this.securityData))) ||\n {};\n const requestParams = this.mergeRequestParams(params, secureParams);\n const queryString = query && this.toQueryString(query);\n const payloadFormatter = this.contentFormatters[type || ContentType.Json];\n const responseFormat = format || requestParams.format;\n\n return this.customFetch(\n `${baseUrl || this.baseUrl || \"\"}${path}${queryString ? `?${queryString}` : \"\"}`,\n {\n ...requestParams,\n headers: {\n ...(requestParams.headers || {}),\n ...(type && type !== ContentType.FormData\n ? { \"Content-Type\": type }\n : {}),\n },\n signal:\n (cancelToken\n ? this.createAbortSignal(cancelToken)\n : requestParams.signal) || null,\n body:\n typeof body === \"undefined\" || body === null\n ? null\n : payloadFormatter(body),\n },\n ).then(async (response) => {\n const r = response as HttpResponse<T, E>;\n r.data = null as unknown as T;\n r.error = null as unknown as E;\n\n const responseToParse = responseFormat ? response.clone() : response;\n const data = !responseFormat\n ? r\n : await responseToParse[responseFormat]()\n .then((data) => {\n if (r.ok) {\n r.data = data;\n } else {\n r.error = data;\n }\n return r;\n })\n .catch((e) => {\n r.error = e;\n return r;\n });\n\n if (cancelToken) {\n this.abortControllers.delete(cancelToken);\n }\n\n if (!response.ok) throw data;\n return data;\n });\n };\n}\n","import { HttpClient as GeneratedHttpClient } from './api-spec/generated/http-client.js';\nimport { SDK_VERSION } from './config.js';\nimport type { ResolvedConfig } from './config.js';\nimport type { Interceptor } from './types/common.js';\nimport {\n TimeoutError,\n NetworkError,\n RateLimitError,\n createApiError,\n} from './errors.js';\n\n/**\n * Creates a configured generated {@link GeneratedHttpClient} wrapped with\n * SDK behavior: authentication headers, retry, timeout, interceptors,\n * and error mapping.\n *\n * @remarks\n * This is the single point of change for HTTP transport behavior.\n * All generated route classes share this client instance.\n *\n * The `customFetch` injected into the generated client handles:\n * - Auth headers (`X-Tenant-Id`, `X-User-Id`, `X-Namespace-Id`, `X-SDK-Version`)\n * - Timeout via `AbortController`\n * - Retry on 429 (always) and 503 (configurable) with exponential backoff + jitter\n * - Interceptor chain\n * - Error mapping to SDK error hierarchy\n *\n * On success, `customFetch` returns a `Response` with `ok: true`.\n * On failure, it throws the appropriate SDK error — the generated client\n * never sees non-ok responses.\n *\n * @param config - Resolved SDK configuration.\n * @returns A configured generated HttpClient instance.\n */\nexport function createGeneratedHttpClient(config: ResolvedConfig): GeneratedHttpClient {\n return new GeneratedHttpClient({\n baseUrl: config.baseUrl,\n baseApiParams: {\n headers: buildAuthHeaders(config),\n },\n customFetch: createCustomFetch(config),\n });\n}\n\nfunction buildAuthHeaders(config: ResolvedConfig): Record<string, string> {\n const headers: Record<string, string> = {\n 'Accept': 'application/json',\n 'X-Tenant-Id': config.tenantId,\n 'X-SDK-Version': SDK_VERSION,\n };\n if (config.userId) headers['X-User-Id'] = config.userId;\n if (config.namespaceId) headers['X-Namespace-Id'] = config.namespaceId;\n if (config.authenticatedUser) headers['X-Authenticated-User'] = config.authenticatedUser;\n return headers;\n}\n\nfunction createCustomFetch(config: ResolvedConfig): typeof fetch {\n return async (input: RequestInfo | URL, init?: RequestInit): Promise<Response> => {\n const maxRetries = config.maxRetries;\n const timeoutMs = config.timeoutMs;\n let lastError: Error | undefined;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n if (attempt > 0 && lastError) {\n await sleep(calculateRetryDelay(attempt, lastError));\n }\n\n try {\n const response = await executeFetch(input, init, timeoutMs, config);\n\n if (response.ok) return response;\n\n // Parse error body for SDK error creation\n let body: unknown;\n try {\n body = await response.clone().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 && config.retryOn503 && attempt < maxRetries) {\n lastError = apiError;\n continue;\n }\n\n throw apiError;\n } catch (error) {\n if (error instanceof TimeoutError) throw error;\n if (error instanceof RateLimitError && attempt >= maxRetries) throw error;\n\n if (isApiErrorLike(error) && !isRetryableStatus(error, config.retryOn503)) {\n throw error;\n }\n\n if (isNetworkFailure(error)) {\n lastError =\n error instanceof NetworkError\n ? error\n : 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 throw error;\n }\n }\n\n throw lastError ?? new NetworkError('Request failed after retries');\n };\n}\n\nasync function executeFetch(\n input: RequestInfo | URL,\n init: RequestInit | undefined,\n timeoutMs: number,\n config: ResolvedConfig,\n): Promise<Response> {\n const timeoutController = new AbortController();\n const timeoutId = setTimeout(() => timeoutController.abort(), timeoutMs);\n\n const existingSignal = init?.signal;\n const combinedSignal = existingSignal\n ? AbortSignal.any([timeoutController.signal, existingSignal])\n : timeoutController.signal;\n\n const url =\n typeof input === 'string'\n ? input\n : input instanceof URL\n ? input.toString()\n : input.url;\n\n const request = new Request(url, { ...init, signal: combinedSignal });\n\n try {\n const fetchFn = config.fetch;\n const baseFetch = (req: Request): Promise<Response> => fetchFn(req);\n const chain = buildInterceptorChain(config.interceptors, baseFetch);\n return await chain(request);\n } catch (error) {\n if (isAbortError(error)) {\n if (timeoutController.signal.aborted) {\n throw new TimeoutError(timeoutMs);\n }\n throw error;\n }\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\nfunction buildInterceptorChain(\n interceptors: Interceptor[],\n baseFetch: (req: Request) => Promise<Response>,\n): (req: Request) => Promise<Response> {\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\nfunction calculateRetryDelay(attempt: number, lastError: Error): number {\n if (lastError instanceof RateLimitError && lastError.retryAfter !== null) {\n return lastError.retryAfter * 1000;\n }\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\nfunction isAbortError(error: unknown): boolean {\n return error instanceof DOMException && error.name === 'AbortError';\n}\n\nfunction isNetworkFailure(error: unknown): boolean {\n if (error instanceof NetworkError) return true;\n if (error instanceof TypeError) return true;\n return false;\n}\n\nfunction isApiErrorLike(error: unknown): error is { status: number } {\n return typeof error === 'object' && error !== null && 'status' in error;\n}\n\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\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n ApproveLearnedSimilarityRequest,\n ApproveLearnedSimilarityResponse,\n BulkCreateSortsRequest,\n BulkCreateSortsResponse,\n BulkSetSimilaritiesRequest,\n BulkSetSimilaritiesResponse,\n ComputeGlbRequest,\n ComputeGlbResponse,\n ComputeLubRequest,\n ComputeLubResponse,\n CreateSortRequest,\n DecodeGlbRequest,\n DecodeGlbResponse,\n GetEquivalenceClassesResponse,\n GetPreorderDegreeRequest,\n GetPreorderDegreeResponse,\n GetSortSimilarityRequest,\n GetSortSimilarityResponse,\n IndexSortsResponse,\n IsSubtypeResponse,\n LearnSortSimilaritiesRequest,\n LearnSortSimilaritiesResponse,\n LearnedSimilarityListResponse,\n RejectLearnedSimilarityRequest,\n RejectLearnedSimilarityResponse,\n SetSortSimilarityRequest,\n SetSortSimilarityResponse,\n SortListResponse,\n SortResponse,\n UpdateSortReviewRequest,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Sorts<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description # Authorization Requires X-Tenant-Id header. The tenant_id field in the request body is ignored.\n *\n * @tags sorts\n * @name AddSort\n * @summary Add a new sort\n * @request POST:/api/v1/sorts\n * @secure\n */\n addSort = (data: CreateSortRequest, params: RequestParams = {}) =>\n this.http.request<SortResponse, void>({\n path: `/api/v1/sorts`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/sorts/learned-similarities/approve Approves a proposed or conflicted learned similarity. Once approved, the similarity is added to the active similarity relation and will be used in reasoning.\n *\n * @tags sorts\n * @name ApproveLearnedSimilarity\n * @summary Approve a learned similarity\n * @request POST:/api/v1/sorts/learned-similarities/approve\n */\n approveLearnedSimilarity = (\n data: ApproveLearnedSimilarityRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ApproveLearnedSimilarityResponse, any>({\n path: `/api/v1/sorts/learned-similarities/approve`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/sorts/bulk Creates multiple sorts in a single request, automatically resolving parent references by name. Sorts are topologically sorted to ensure parents are created before children. This is much faster than individual requests for large hierarchies. # Authorization Requires X-Tenant-Id header. The tenant_id field in the request body is ignored.\n *\n * @tags sorts\n * @name BulkCreateSorts\n * @summary Create multiple sorts in bulk\n * @request POST:/api/v1/sorts/bulk\n * @secure\n */\n bulkCreateSorts = (\n data: BulkCreateSortsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BulkCreateSortsResponse, any>({\n path: `/api/v1/sorts/bulk`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/sorts/similarity/bulk Sets multiple similarity relations in a single request using sort IDs. Uses a single database persist for much faster performance.\n *\n * @tags sorts\n * @name BulkSetSimilarities\n * @summary Set multiple sort similarities in bulk\n * @request POST:/api/v1/sorts/similarity/bulk\n */\n bulkSetSimilarities = (\n data: BulkSetSimilaritiesRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BulkSetSimilaritiesResponse, any>({\n path: `/api/v1/sorts/similarity/bulk`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags sorts\n * @name ComputeGlb\n * @summary Compute GLB (Greatest Lower Bound) of two sorts\n * @request POST:/api/v1/sorts/glb\n */\n computeGlb = (data: ComputeGlbRequest, params: RequestParams = {}) =>\n this.http.request<ComputeGlbResponse, any>({\n path: `/api/v1/sorts/glb`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags sorts\n * @name ComputeLub\n * @summary Compute LUB (Least Upper Bound) of two sorts\n * @request POST:/api/v1/sorts/lub\n */\n computeLub = (data: ComputeLubRequest, params: RequestParams = {}) =>\n this.http.request<ComputeLubResponse, any>({\n path: `/api/v1/sorts/lub`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Computes the bit-vector intersection (GLB) and decodes it into a human-readable type disjunction. This is Life1.0's decode() function. # Returns - `sort_ids`: List of sort IDs in the disjunction - `sort_names`: List of sort names in the disjunction - `formatted`: Human-readable format (e.g., \"int | real\") - `is_bottom`: True if the GLB is empty (incompatible sorts)\n *\n * @tags sorts\n * @name DecodeGlb\n * @summary Decode GLB (Greatest Lower Bound) of two sorts as type disjunction\n * @request POST:/api/v1/sorts/glb/decode\n */\n decodeGlb = (data: DecodeGlbRequest, params: RequestParams = {}) =>\n this.http.request<DecodeGlbResponse, any>({\n path: `/api/v1/sorts/glb/decode`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description # Authorization Requires X-Tenant-Id header. The sort must belong to the tenant. # Errors - 404 Not Found: Sort doesn't exist - 400 Bad Request: Sort has children (would orphan them)\n *\n * @tags sorts\n * @name DeleteSort\n * @summary Delete a sort by ID\n * @request DELETE:/api/v1/sorts/{id}\n * @secure\n */\n deleteSort = (id: string, params: RequestParams = {}) =>\n this.http.request<void, void>({\n path: `/api/v1/sorts/${id}`,\n method: \"DELETE\",\n secure: true,\n ...params,\n });\n /**\n * No description\n *\n * @tags sorts\n * @name GetCompatibleSorts\n * @summary Get compatible sorts for a given sort\n * @request GET:/api/v1/sorts/{id}/compatible\n */\n getCompatibleSorts = (id: string, params: RequestParams = {}) =>\n this.http.request<SortListResponse, any>({\n path: `/api/v1/sorts/${id}/compatible`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n /**\n * @description Per Definition IV.9 (Milanese & Pasi 2024): s₁ ≈ s₂ ⇔ ≾̇(s₁, s₂) > 0 AND ≾̇(s₂, s₁) > 0\n *\n * @tags sorts\n * @name GetEquivalenceClasses\n * @summary Get equivalence classes based on the combined preorder\n * @request GET:/api/v1/sorts/equivalence-classes\n */\n getEquivalenceClasses = (params: RequestParams = {}) =>\n this.http.request<GetEquivalenceClassesResponse, any>({\n path: `/api/v1/sorts/equivalence-classes`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n /**\n * @description Per Definition IV.5 (Milanese & Pasi 2024): ≾̇ = ((≾̃ .− ∼) ⊍ ≤)⁺\n *\n * @tags sorts\n * @name GetPreorderDegree\n * @summary Get preorder degree ≾̇(s₁, s₂) between two sorts\n * @request POST:/api/v1/sorts/preorder-degree\n */\n getPreorderDegree = (\n data: GetPreorderDegreeRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<GetPreorderDegreeResponse, any>({\n path: `/api/v1/sorts/preorder-degree`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags sorts\n * @name GetSort\n * @summary Get a sort by ID\n * @request GET:/api/v1/sorts/{id}\n */\n getSort = (id: string, params: RequestParams = {}) =>\n this.http.request<SortResponse, void>({\n path: `/api/v1/sorts/${id}`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags sorts\n * @name GetSortSimilarity\n * @summary Get direct similarity degree ∼(s₁, s₂) between two sorts\n * @request POST:/api/v1/sorts/similarity/get\n */\n getSortSimilarity = (\n data: GetSortSimilarityRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<GetSortSimilarityResponse, any>({\n path: `/api/v1/sorts/similarity/get`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description This enables semantic search over sort names for NER label pre-filtering. Must be called after bulk sort creation (e.g., after ontology hydration) to make sorts searchable via embedding similarity. Returns the number of sorts indexed.\n *\n * @tags sorts\n * @name IndexSorts\n * @summary Index all sorts for a tenant into the vector store (Qdrant).\n * @request POST:/api/v1/sorts/index\n * @secure\n */\n indexSorts = (params: RequestParams = {}) =>\n this.http.request<IndexSortsResponse, void>({\n path: `/api/v1/sorts/index`,\n method: \"POST\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags sorts\n * @name IsSubtype\n * @summary Check if one sort is a subtype of another\n * @request GET:/api/v1/sorts/{child_id}/subtype/{parent_id}\n */\n isSubtype = (childId: string, parentId: string, params: RequestParams = {}) =>\n this.http.request<IsSubtypeResponse, any>({\n path: `/api/v1/sorts/${childId}/subtype/${parentId}`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/sorts/learn-similarities Analyzes terms in the knowledge base to discover which sorts have similar effect distributions. This enables reasoning by analogy: if CF3 compounds and CHF2 compounds show similar potency distributions, they are likely bioisosteres that can be used interchangeably. # Request Body - `effect_feature`: Name of the numeric feature to analyze (e.g., \"potency\", \"ic50\") - `min_samples`: Minimum samples required per sort (default: 5) - `min_similarity`: Minimum similarity threshold (default: 0.5) # Response - `learned_count`: Number of sort pairs with learned similarity - `message`: Success message # Authorization Requires X-Tenant-Id header. The tenant_id field in the request body is ignored.\n *\n * @tags sorts\n * @name LearnSortSimilarities\n * @summary Learn sort similarities from behavioral data\n * @request POST:/api/v1/sorts/learn-similarities\n * @secure\n */\n learnSortSimilarities = (\n data: LearnSortSimilaritiesRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<LearnSortSimilaritiesResponse, any>({\n path: `/api/v1/sorts/learn-similarities`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description GET /api/v1/sorts/learned-similarities Returns all learned similarities that need human review, including: - Proposed: New similarities learned from data - Conflicted: Learned values that differ from expert-defined values\n *\n * @tags sorts\n * @name ListLearnedSimilarities\n * @summary List learned similarities pending review\n * @request GET:/api/v1/sorts/learned-similarities\n */\n listLearnedSimilarities = (params: RequestParams = {}) =>\n this.http.request<LearnedSimilarityListResponse, any>({\n path: `/api/v1/sorts/learned-similarities`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n /**\n * @description By default, system-defined sorts (built-in types like Thing, Person, etc.) are excluded from the response. Use `include_system=true` to include them.\n *\n * @tags sorts\n * @name ListSorts\n * @summary List all sorts for a tenant with optional filtering\n * @request GET:/api/v1/sorts/tenant/{tenant_id}\n */\n listSorts = (\n tenantId: string,\n query?: {\n /**\n * Include system-defined sorts in the response.\n * System sorts are built-in types like Thing, Person, etc.\n * Defaults to false (system sorts are excluded by default).\n */\n include_system?: boolean;\n /** Filter to only show LLM-extracted sorts */\n llm_extracted?: boolean | null;\n /** Filter to only show sorts needing review */\n needs_review?: boolean | null;\n },\n params: RequestParams = {},\n ) =>\n this.http.request<SortListResponse, any>({\n path: `/api/v1/sorts/tenant/${tenantId}`,\n method: \"GET\",\n query: query,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/sorts/learned-similarities/reject Rejects a proposed or conflicted learned similarity with a reason. Rejected similarities are not used in reasoning.\n *\n * @tags sorts\n * @name RejectLearnedSimilarity\n * @summary Reject a learned similarity\n * @request POST:/api/v1/sorts/learned-similarities/reject\n */\n rejectLearnedSimilarity = (\n data: RejectLearnedSimilarityRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<RejectLearnedSimilarityResponse, any>({\n path: `/api/v1/sorts/learned-similarities/reject`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Similarity is symmetric: ∼(s₁, s₂) = ∼(s₂, s₁) Degree must be in [0, 1] range.\n *\n * @tags sorts\n * @name SetSortSimilarity\n * @summary Set similarity degree between two sorts\n * @request POST:/api/v1/sorts/similarity\n */\n setSortSimilarity = (\n data: SetSortSimilarityRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<SetSortSimilarityResponse, any>({\n path: `/api/v1/sorts/similarity`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags sorts\n * @name UpdateSortReview\n * @summary Update the review status of a sort (approve or mark for review)\n * @request POST:/api/v1/sorts/{id}/review\n */\n updateSortReview = (\n id: string,\n data: UpdateSortReviewRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<SortResponse, any>({\n path: `/api/v1/sorts/${id}/review`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n BatchSortCompareRequest,\n BatchSortCompareResponse,\n GreatestSortsResponse,\n LeastSortsResponse,\n SortAncestorsResponse,\n SortChildrenResponse,\n SortCompareRequest,\n SortCompareResponse,\n SortDescendantsResponse,\n SortParentsResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Types<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags types\n * @name BatchCompareSorts\n * @summary Batch compare sorts POST /api/v1/sorts/compare/batch\n * @request POST:/api/v1/sorts/compare/batch\n * @secure\n */\n batchCompareSorts = (\n data: BatchSortCompareRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BatchSortCompareResponse, void>({\n path: `/api/v1/sorts/compare/batch`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags types\n * @name CompareSorts\n * @summary Compare two sorts POST /api/v1/sorts/compare\n * @request POST:/api/v1/sorts/compare\n * @secure\n */\n compareSorts = (data: SortCompareRequest, params: RequestParams = {}) =>\n this.http.request<SortCompareResponse, void>({\n path: `/api/v1/sorts/compare`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags types\n * @name GetGreatestSorts\n * @summary Get greatest (most general) sorts GET /api/v1/sorts/greatest/:tenant_id\n * @request GET:/api/v1/sorts/greatest/{tenant_id}\n * @secure\n */\n getGreatestSorts = (tenantId: string, params: RequestParams = {}) =>\n this.http.request<GreatestSortsResponse, void>({\n path: `/api/v1/sorts/greatest/${tenantId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags types\n * @name GetLeastSorts\n * @summary Get least (most specific) sorts GET /api/v1/sorts/least/:tenant_id\n * @request GET:/api/v1/sorts/least/{tenant_id}\n * @secure\n */\n getLeastSorts = (tenantId: string, params: RequestParams = {}) =>\n this.http.request<LeastSortsResponse, void>({\n path: `/api/v1/sorts/least/${tenantId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags types\n * @name GetSortAncestors\n * @summary Get ancestors of a sort GET /api/v1/sorts/:id/ancestors\n * @request GET:/api/v1/sorts/{id}/ancestors\n * @secure\n */\n getSortAncestors = (id: string, params: RequestParams = {}) =>\n this.http.request<SortAncestorsResponse, void>({\n path: `/api/v1/sorts/${id}/ancestors`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags types\n * @name GetSortChildren\n * @summary Get children of a sort GET /api/v1/sorts/:id/children\n * @request GET:/api/v1/sorts/{id}/children\n * @secure\n */\n getSortChildren = (id: string, params: RequestParams = {}) =>\n this.http.request<SortChildrenResponse, void>({\n path: `/api/v1/sorts/${id}/children`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags types\n * @name GetSortDescendants\n * @summary Get descendants of a sort GET /api/v1/sorts/:id/descendants\n * @request GET:/api/v1/sorts/{id}/descendants\n * @secure\n */\n getSortDescendants = (id: string, params: RequestParams = {}) =>\n this.http.request<SortDescendantsResponse, void>({\n path: `/api/v1/sorts/${id}/descendants`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags types\n * @name GetSortParents\n * @summary Get parents of a sort GET /api/v1/sorts/:id/parents\n * @request GET:/api/v1/sorts/{id}/parents\n * @secure\n */\n getSortParents = (id: string, params: RequestParams = {}) =>\n this.http.request<SortParentsResponse, void>({\n path: `/api/v1/sorts/${id}/parents`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n BulkAddTermsRequest,\n BulkAddTermsResponse,\n ClearTermsResponse,\n CreateTermRequest,\n TermExistsResponse,\n TermListResponse,\n TermResponse,\n UpdateTermRequest,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Terms<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Creates a term and validates it against its sort's existential witnesses. This implements Hassan Aït-Kaci's LIFE semantics where \"types ARE constraints\". ## Witness Validation When a term is created: 1. If the sort has no witnesses → state = `no_witnesses` (trivially complete) 2. If all witnesses are satisfied → state = `complete` with proofs 3. If witnesses can't be satisfied yet → state = `residuated` (waiting for info) Residuated terms are stored and will be re-evaluated when new facts arrive that might satisfy their pending witnesses. # Authorization Requires X-Tenant-Id header. The tenant_id field in the request body is ignored.\n *\n * @tags terms\n * @name AddTerm\n * @summary Add a new term\n * @request POST:/api/v1/terms\n * @secure\n */\n addTerm = (data: CreateTermRequest, params: RequestParams = {}) =>\n this.http.request<TermResponse, void>({\n path: `/api/v1/terms`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Creates multiple terms in a single operation for efficiency. This is optimized for high-volume data loading scenarios and skips individual witness validation (constraint propagation runs once at the end). # Performance - Terms are added to the domain store in a single lock acquisition - Constraint propagation runs once after all terms are added - Much faster than calling add_term N times # Authorization Requires X-Tenant-Id header. The tenant_id is taken from the header.\n *\n * @tags terms\n * @name BulkAddTerms\n * @summary Bulk add multiple terms\n * @request POST:/api/v1/terms/bulk\n * @secure\n */\n bulkAddTerms = (data: BulkAddTermsRequest, params: RequestParams = {}) =>\n this.http.request<BulkAddTermsResponse, void>({\n path: `/api/v1/terms/bulk`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Removes all terms (facts and rules) belonging to the tenant identified by the X-Tenant-Id header. This clears both PostgreSQL persistence and in-memory stores, including the residuation store. # Authorization Requires X-Tenant-Id header.\n *\n * @tags terms\n * @name ClearTerms\n * @summary Clear all terms for the authenticated tenant\n * @request DELETE:/api/v1/terms\n * @secure\n */\n clearTerms = (params: RequestParams = {}) =>\n this.http.request<ClearTermsResponse, any>({\n path: `/api/v1/terms`,\n method: \"DELETE\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags terms\n * @name DeleteTerm\n * @summary Delete a term\n * @request DELETE:/api/v1/terms/{id}\n */\n deleteTerm = (id: string, params: RequestParams = {}) =>\n this.http.request<void, void>({\n path: `/api/v1/terms/${id}`,\n method: \"DELETE\",\n ...params,\n });\n /**\n * No description\n *\n * @tags terms\n * @name GetTerm\n * @summary Get a term by ID\n * @request GET:/api/v1/terms/{id}\n */\n getTerm = (id: string, params: RequestParams = {}) =>\n this.http.request<TermResponse, void>({\n path: `/api/v1/terms/${id}`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n /**\n * @description Returns all terms belonging to the tenant identified by the X-Tenant-Id header. Terms are enriched with sort names, display names, and referenced term summaries. # Authorization Requires X-Tenant-Id header.\n *\n * @tags terms\n * @name ListTerms\n * @summary List all terms for the authenticated tenant\n * @request GET:/api/v1/terms\n * @secure\n */\n listTerms = (params: RequestParams = {}) =>\n this.http.request<TermListResponse, any>({\n path: `/api/v1/terms`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags terms\n * @name TermExists\n * @summary Check if a term exists\n * @request GET:/api/v1/terms/{id}/exists\n */\n termExists = (id: string, params: RequestParams = {}) =>\n this.http.request<TermExistsResponse, any>({\n path: `/api/v1/terms/${id}/exists`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags terms\n * @name UpdateTerm\n * @summary Update a term\n * @request PUT:/api/v1/terms/{id}\n */\n updateTerm = (\n id: string,\n data: UpdateTermRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<TermResponse, void>({\n path: `/api/v1/terms/${id}`,\n method: \"PUT\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n AddFactRequest,\n AddFactResponse,\n AddRuleRequest,\n AddRuleResponse,\n BackwardChainRequest,\n BackwardChainResponse,\n BayesianPredictRequest,\n BayesianPredictResponse,\n BulkAddFactsRequest,\n BulkAddFactsResponse,\n BulkAddRulesRequest,\n BulkAddRulesResponse,\n BulkFuzzyProveRequest,\n BulkFuzzyProveResponse,\n ClearFactsResponse,\n CreateGoalRequest,\n CreateGoalResponse,\n DeleteGoalResponse,\n ForwardChainRequest,\n ForwardChainResponse,\n FuzzyProveRequest,\n FuzzyProveResponse,\n GetFactsResponse,\n ListGoalsResponse,\n MetaSortsResponse,\n NafProveRequest,\n PsiTermDto,\n TaggedForwardChainRequest,\n TaggedForwardChainResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Inference<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description # DEPRECATED This endpoint is deprecated. Use `POST /api/v1/terms` instead. Both endpoints now do the same thing (TRUE HOMOICONICITY). # TRUE HOMOICONIC API Request contains a term. Response returns the created fact as a PsiTermDto. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name AddFact\n * @summary Add a fact to the knowledge base (fact is a rule with empty body)\n * @request POST:/api/v1/inference/facts\n * @secure\n */\n addFact = (data: AddFactRequest, params: RequestParams = {}) =>\n this.http.request<AddFactResponse, any>({\n path: `/api/v1/inference/facts`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description # TRUE HOMOICONIC API Request contains a term (head) and antecedents (body). Response returns the created rule as a PsiTermDto. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name AddRule\n * @summary Add a rule to the knowledge base\n * @request POST:/api/v1/inference/rules\n * @secure\n */\n addRule = (data: AddRuleRequest, params: RequestParams = {}) =>\n this.http.request<AddRuleResponse, any>({\n path: `/api/v1/inference/rules`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description # TRUE HOMOICONIC API Request contains a goal term and optional constraints. Response returns solutions with term-based substitutions. ## Temporal Reasoning Use constraints to filter by temporal relations: ```json { \"goal\": {\"sort_name\": \"Employment\", \"features\": {\"valid_to\": {\"name\": \"?EndTime\"}}}, \"constraints\": [{\"type\": \"Guard\", \"left\": \"?EndTime\", \"op\": \"lt\", \"right\": \"1583020800000\"}] } ``` # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name BackwardChain\n * @summary Execute backward chaining query\n * @request POST:/api/v1/inference/backward-chain\n * @secure\n */\n backwardChain = (data: BackwardChainRequest, params: RequestParams = {}) =>\n this.http.request<BackwardChainResponse, any>({\n path: `/api/v1/inference/backward-chain`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description This endpoint: 1. Runs fuzzy_prove to find all matching facts (priors + learned data) 2. Extracts FuzzyNumber values from the specified variable binding 3. Merges them using Bayesian conjugate update (for Gaussians) 4. Returns the merged posterior distribution # Authorization Requires X-Tenant-Id header. The tenant_id field in the request body is ignored.\n *\n * @tags inference\n * @name BayesianPredict\n * @summary Execute Bayesian prediction by merging multiple FuzzyNumber sources\n * @request POST:/api/v1/inference/bayesian-predict\n * @secure\n */\n bayesianPredict = (\n data: BayesianPredictRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BayesianPredictResponse, void>({\n path: `/api/v1/inference/bayesian-predict`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description # DEPRECATED This endpoint is deprecated. Use `POST /api/v1/terms/bulk` instead. Both endpoints now do the same thing (TRUE HOMOICONICITY). # TRUE HOMOICONIC API Request contains list of terms. Response returns term IDs. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name BulkAddFacts\n * @summary Add multiple facts to the knowledge base in bulk Optimized for high-throughput insertion (10K+ facts)\n * @request POST:/api/v1/inference/facts/bulk\n * @secure\n */\n bulkAddFacts = (data: BulkAddFactsRequest, params: RequestParams = {}) =>\n this.http.request<BulkAddFactsResponse, any>({\n path: `/api/v1/inference/facts/bulk`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description # TRUE HOMOICONIC API Request contains list of rules (head + antecedents). Response returns rule term IDs. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name BulkAddRules\n * @summary Add multiple rules to the knowledge base in bulk Optimized for high-throughput insertion (100+ rules at once)\n * @request POST:/api/v1/inference/rules/bulk\n * @secure\n */\n bulkAddRules = (data: BulkAddRulesRequest, params: RequestParams = {}) =>\n this.http.request<BulkAddRulesResponse, any>({\n path: `/api/v1/inference/rules/bulk`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description This endpoint dramatically reduces latency by: 1. Single HTTP round-trip for multiple queries 2. Shared hierarchy, term store overlay, and rules across all queries # TRUE HOMOICONIC API Uses TermInputDto for goals with nested features. Response uses homoiconic SolutionDto. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name BulkFuzzyProve\n * @summary Execute bulk fuzzy inference - multiple goals in one request\n * @request POST:/api/v1/inference/fuzzy-prove/bulk\n * @secure\n */\n bulkFuzzyProve = (data: BulkFuzzyProveRequest, params: RequestParams = {}) =>\n this.http.request<BulkFuzzyProveResponse, void>({\n path: `/api/v1/inference/fuzzy-prove/bulk`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description # DEPRECATED This endpoint is deprecated. Use `DELETE /api/v1/terms/{term_id}` for individual terms. # TRUE HOMOICONIC API # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name ClearFacts\n * @summary Clear all facts and rules for a tenant\n * @request DELETE:/api/v1/inference/facts/{tenant_id}\n * @secure\n */\n clearFacts = (tenantId: string, params: RequestParams = {}) =>\n this.http.request<ClearFactsResponse, any>({\n path: `/api/v1/inference/facts/${tenantId}`,\n method: \"DELETE\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description # TRUE HOMOICONICITY Goals are first-class Ψ-terms that can be created, persisted, and reused. This endpoint creates a goal from clauses and optional constraints, persists it to PostgreSQL, and returns the goal ID for later use. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name CreateGoal\n * @summary Create and persist a new goal\n * @request POST:/api/v1/inference/goals\n * @secure\n */\n createGoal = (data: CreateGoalRequest, params: RequestParams = {}) =>\n this.http.request<CreateGoalResponse, void>({\n path: `/api/v1/inference/goals`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description # TRUE HOMOICONICITY Deletes the goal term. Optionally deletes all referenced terms. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name DeleteGoal\n * @summary Delete a saved goal\n * @request DELETE:/api/v1/inference/goals/{goal_id}\n * @secure\n */\n deleteGoal = (\n goalId: string,\n query?: {\n /** Also delete referenced terms */\n delete_references?: boolean;\n },\n params: RequestParams = {},\n ) =>\n this.http.request<DeleteGoalResponse, void>({\n path: `/api/v1/inference/goals/${goalId}`,\n method: \"DELETE\",\n query: query,\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description # TRUE HOMOICONIC API Uses existing rules in the store. Initial facts can be provided or uses existing facts. Returns derived facts as PsiTermDto. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name ForwardChain\n * @summary Execute forward chaining materialization\n * @request POST:/api/v1/inference/forward-chain\n * @secure\n */\n forwardChain = (data: ForwardChainRequest, params: RequestParams = {}) =>\n this.http.request<ForwardChainResponse, any>({\n path: `/api/v1/inference/forward-chain`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Runs forward chaining with probabilistic provenance tags. Each derived fact carries a confidence value computed from the provenance semiring operations (noisy-or for disjunction, product for conjunction). This extends the standard forward chain endpoint by tracking how confidence propagates through rule application, enabling probabilistic reasoning over the knowledge base.\n *\n * @tags inference\n * @name ForwardChainTagged\n * @summary POST /api/v1/inference/forward-chain-tagged\n * @request POST:/api/v1/inference/forward-chain-tagged\n * @secure\n */\n forwardChainTagged = (\n data: TaggedForwardChainRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<TaggedForwardChainResponse, void>({\n path: `/api/v1/inference/forward-chain-tagged`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description # TRUE HOMOICONIC API Request contains a goal term. Response returns solutions with fuzzy degrees. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name FuzzyProve\n * @summary Execute fuzzy inference\n * @request POST:/api/v1/inference/fuzzy-prove\n * @secure\n */\n fuzzyProve = (data: FuzzyProveRequest, params: RequestParams = {}) =>\n this.http.request<FuzzyProveResponse, any>({\n path: `/api/v1/inference/fuzzy-prove`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description # DEPRECATED This endpoint is deprecated. Use `GET /api/v1/terms?tenant_id={tenant_id}` instead. Both endpoints now return the same data (TRUE HOMOICONICITY). # TRUE HOMOICONIC API Returns facts as PsiTermDto. UNIFIED: Hydrates from PostgreSQL on first access (facts survive server restarts) # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name GetFacts\n * @summary Get all facts for a tenant with their full data\n * @request GET:/api/v1/inference/facts/{tenant_id}\n * @secure\n */\n getFacts = (tenantId: string, params: RequestParams = {}) =>\n this.http.request<GetFactsResponse, any>({\n path: `/api/v1/inference/facts/${tenantId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description # TRUE HOMOICONICITY Returns the full goal term with all its referenced terms. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name GetGoal\n * @summary Get a specific saved goal by ID\n * @request GET:/api/v1/inference/goals/{goal_id}\n * @secure\n */\n getGoal = (goalId: string, params: RequestParams = {}) =>\n this.http.request<PsiTermDto, void>({\n path: `/api/v1/inference/goals/${goalId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description Returns the sort IDs of built-in meta sorts (guard_constraint, variable, etc.) Clients need these IDs to create terms using built-in sorts. # TRUE HOMOICONICITY In Aït-Kaci's vision, everything is referenced by ID, not by name. This endpoint provides the IDs clients need for built-in sorts. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name GetMetaSorts\n * @summary Get meta sort IDs for TRUE HOMOICONICITY\n * @request GET:/api/v1/inference/meta-sorts\n * @secure\n */\n getMetaSorts = (params: RequestParams = {}) =>\n this.http.request<MetaSortsResponse, any>({\n path: `/api/v1/inference/meta-sorts`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description # TRUE HOMOICONICITY Goals are Ψ-terms persisted to PostgreSQL. This endpoint returns all goals for the authenticated tenant with summary information. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name ListGoals\n * @summary List all saved goals for the authenticated tenant\n * @request GET:/api/v1/inference/goals\n * @secure\n */\n listGoals = (params: RequestParams = {}) =>\n this.http.request<ListGoalsResponse, void>({\n path: `/api/v1/inference/goals`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description # TRUE HOMOICONIC API Uses LiteralInputDto with TermInputDto for literals. Response uses homoiconic SolutionDto. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name NafProve\n * @summary Execute NAF-enabled backward chaining\n * @request POST:/api/v1/inference/naf-prove\n * @secure\n */\n nafProve = (data: NafProveRequest, params: RequestParams = {}) =>\n this.http.request<BackwardChainResponse, any>({\n path: `/api/v1/inference/naf-prove`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n AdaptiveModifyRequest,\n AdaptiveModifyResponse,\n AddBeliefRequest,\n AddBeliefResponse,\n AddCognitiveRuleRequest,\n AddCognitiveRuleResponse,\n AddGoalRequest,\n AddGoalResponse,\n CreateAgentRequest,\n CreateAgentResponse,\n CreateCognitiveSortRequest,\n CreateCognitiveSortResponse,\n GetAgentStateRequest,\n GetAgentStateResponse,\n GetExtendedAgentStateResponse,\n LearnFromCorrectionRequest,\n LearnFromCorrectionResponse,\n MotivationStateDto,\n ProvideFeedbackRequest,\n ProvideFeedbackResponse,\n ReflectionQueryRequest,\n ReflectionQueryResponse,\n RunCycleRequest,\n RunCycleResponse,\n RunIntegratedCycleRequest,\n RunIntegratedCycleResponse,\n SubscribeToKbRequest,\n SubscribeToKbResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Cognitive<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description This demonstrates TRUE HOMOICONICITY - rules can be asserted/retracted during inference, not just at API boundaries.\n *\n * @tags cognitive\n * @name AdaptiveModify\n * @summary Adaptive modification: agent modifies rules during inference.\n * @request POST:/api/v1/cognitive/agents/adapt\n */\n adaptiveModify = (data: AdaptiveModifyRequest, params: RequestParams = {}) =>\n this.http.request<AdaptiveModifyResponse, void>({\n path: `/api/v1/cognitive/agents/adapt`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags cognitive\n * @name AddBelief\n * @summary Add a belief to an agent.\n * @request POST:/api/v1/cognitive/agents/beliefs\n */\n addBelief = (data: AddBeliefRequest, params: RequestParams = {}) =>\n this.http.request<AddBeliefResponse, void>({\n path: `/api/v1/cognitive/agents/beliefs`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description This allows adding rules that the cognitive agent can use during its cycle. Rules are stored in the agent registry's ruleset (separate from the inference API).\n *\n * @tags cognitive\n * @name AddCognitiveRule\n * @summary Add a rule to the cognitive agent's ruleset.\n * @request POST:/api/v1/cognitive/agents/rules\n */\n addCognitiveRule = (\n data: AddCognitiveRuleRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<AddCognitiveRuleResponse, void>({\n path: `/api/v1/cognitive/agents/rules`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description The goal is stored as a Ψ-term with the agent_id feature set, allowing the CognitiveAgentEngine to query goals for a specific agent.\n *\n * @tags cognitive\n * @name AddGoal\n * @summary Add a goal to an agent.\n * @request POST:/api/v1/cognitive/agents/goals\n */\n addGoal = (data: AddGoalRequest, params: RequestParams = {}) =>\n this.http.request<AddGoalResponse, void>({\n path: `/api/v1/cognitive/agents/goals`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description ## Example ```bash curl -X POST http://localhost:3000/api/v1/cognitive/agents \\ -H \"Content-Type: application/json\" \\ -d '{\"name\": \"reasoning_agent\", \"tenant_id\": \"...\"}' ```\n *\n * @tags cognitive\n * @name CreateAgent\n * @summary Create a new cognitive agent.\n * @request POST:/api/v1/cognitive/agents\n */\n createAgent = (data: CreateAgentRequest, params: RequestParams = {}) =>\n this.http.request<CreateAgentResponse, void>({\n path: `/api/v1/cognitive/agents`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description This is necessary because cognitive agents use their own sort hierarchy separate from the inference system. Sorts must exist before rules can use them.\n *\n * @tags cognitive\n * @name CreateCognitiveSort\n * @summary Create a sort in the cognitive agent registry.\n * @request POST:/api/v1/cognitive/agents/sorts\n */\n createCognitiveSort = (\n data: CreateCognitiveSortRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<CreateCognitiveSortResponse, void>({\n path: `/api/v1/cognitive/agents/sorts`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Returns drives, deficits, curiosity targets, and the dominant drive. ## Example ```bash curl -X GET \"http://localhost:3000/api/v1/cognitive/agents/{id}/drives?tenant_id=...\" ```\n *\n * @tags cognitive\n * @name GetAgentDrives\n * @summary Get agent drives and motivation state.\n * @request GET:/api/v1/cognitive/agents/{agent_id}/drives\n */\n getAgentDrives = (\n agentId: string,\n query: {\n /**\n * Tenant ID\n * @format uuid\n */\n tenant_id: string;\n },\n params: RequestParams = {},\n ) =>\n this.http.request<MotivationStateDto, void>({\n path: `/api/v1/cognitive/agents/${agentId}/drives`,\n method: \"GET\",\n query: query,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags cognitive\n * @name GetAgentState\n * @summary Get agent state (goals, beliefs).\n * @request POST:/api/v1/cognitive/agents/state\n */\n getAgentState = (data: GetAgentStateRequest, params: RequestParams = {}) =>\n this.http.request<GetAgentStateResponse, void>({\n path: `/api/v1/cognitive/agents/state`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Returns beliefs, goals, intentions, pending perceptions, activations, recent episodes, and rule utilities. ## Example ```bash curl -X GET \"http://localhost:3000/api/v1/cognitive/agents/{id}/state?tenant_id=...\" ```\n *\n * @tags cognitive\n * @name GetExtendedAgentState\n * @summary Get extended agent state including full cognitive state.\n * @request GET:/api/v1/cognitive/agents/{agent_id}/extended-state\n */\n getExtendedAgentState = (\n agentId: string,\n query: {\n /**\n * Tenant ID\n * @format uuid\n */\n tenant_id: string;\n },\n params: RequestParams = {},\n ) =>\n this.http.request<GetExtendedAgentStateResponse, void>({\n path: `/api/v1/cognitive/agents/${agentId}/extended-state`,\n method: \"GET\",\n query: query,\n format: \"json\",\n ...params,\n });\n /**\n * @description Unlike `provide_feedback` which accepts natural language corrections, this endpoint accepts a structured correction pattern directly as Ψ-term features. This is useful when the client has already parsed the correction.\n *\n * @tags cognitive\n * @name LearnFromCorrection\n * @summary Learn from a user correction with explicit pattern.\n * @request POST:/api/v1/cognitive/learn_correction\n */\n learnFromCorrection = (\n data: LearnFromCorrectionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<LearnFromCorrectionResponse, void>({\n path: `/api/v1/cognitive/learn_correction`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description This enables the agent to learn from user corrections and preferences. All feedback is stored as Ψ-terms for TRUE HOMOICONICITY - they are queryable, unifiable, and can be reasoned about by the agent. ## Feedback Rating - `+1`: Result was correct/helpful - increases rule utility - `0`: Neutral - no learning - `-1`: Result was wrong - decreases rule utility, triggers correction learning ## Corrections When a correction is provided: 1. A `user_correction` Ψ-term is created with the correct answer pattern 2. Rules that produced the wrong result have their utility decreased 3. A new rule may be learned from the correction ## Preferences When a preference is provided: 1. A `user_preference` Ψ-term is created (subsort of constraint) 2. Future reasoning can consider this preference\n *\n * @tags cognitive\n * @name ProvideFeedback\n * @summary Provide user feedback on agent results.\n * @request POST:/api/v1/cognitive/feedback\n */\n provideFeedback = (\n data: ProvideFeedbackRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ProvideFeedbackResponse, void>({\n path: `/api/v1/cognitive/feedback`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description This demonstrates TRUE HOMOICONICITY - the agent can reason about its own inference rules using the same unification-based query mechanism.\n *\n * @tags cognitive\n * @name ReflectionQuery\n * @summary Reflection query: agent queries its own rules.\n * @request POST:/api/v1/cognitive/agents/reflect\n */\n reflectionQuery = (\n data: ReflectionQueryRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ReflectionQueryResponse, void>({\n path: `/api/v1/cognitive/agents/reflect`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Executes: perceive → reason → act → learn\n *\n * @tags cognitive\n * @name RunCycle\n * @summary Run one cycle of the agent's cognitive loop.\n * @request POST:/api/v1/cognitive/agents/cycle\n */\n runCycle = (data: RunCycleRequest, params: RequestParams = {}) =>\n this.http.request<RunCycleResponse, void>({\n path: `/api/v1/cognitive/agents/cycle`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description This executes the full cognitive cycle using all 9 modules: PERCEIVE → ACTIVATE → DELIBERATE → PREDICT → SIMULATE → EXECUTE → IMPASSE → LEARN → DECAY ## Example ```bash curl -X POST http://localhost:3000/api/v1/cognitive/agents/integrated-cycle \\ -H \"Content-Type: application/json\" \\ -d '{\"agent_id\": \"...\", \"tenant_id\": \"...\"}' ```\n *\n * @tags cognitive\n * @name RunIntegratedCycle\n * @summary Run an integrated cognitive cycle.\n * @request POST:/api/v1/cognitive/agents/integrated-cycle\n */\n runIntegratedCycle = (\n data: RunIntegratedCycleRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<RunIntegratedCycleResponse, void>({\n path: `/api/v1/cognitive/agents/integrated-cycle`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description When subscribed, the agent will receive notifications about changes to the specified sorts and features, enabling reactive behavior. ## Example ```bash curl -X POST http://localhost:3000/api/v1/cognitive/agents/subscribe \\ -H \"Content-Type: application/json\" \\ -d '{\"agent_id\": \"...\", \"tenant_id\": \"...\", \"watched_sorts\": [\"person\", \"event\"]}' ```\n *\n * @tags cognitive\n * @name SubscribeToKb\n * @summary Subscribe an agent to KB changes.\n * @request POST:/api/v1/cognitive/agents/subscribe\n */\n subscribeToKb = (data: SubscribeToKbRequest, params: RequestParams = {}) =>\n this.http.request<SubscribeToKbResponse, void>({\n path: `/api/v1/cognitive/agents/subscribe`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n EpisodeStatsResponse,\n GetEpisodeStatsRequest,\n RecallEpisodesRequest,\n RecallEpisodesResponse,\n RecordEpisodeRequest,\n RecordEpisodeResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class CognitiveAgentsEpisodicMemory<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags Cognitive Agents - Episodic Memory\n * @name GetEpisodeStats\n * @summary Get episode statistics.\n * @request POST:/api/v1/cognitive/agents/episodes/stats\n */\n getEpisodeStats = (\n data: GetEpisodeStatsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<EpisodeStatsResponse, void>({\n path: `/api/v1/cognitive/agents/episodes/stats`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags Cognitive Agents - Episodic Memory\n * @name RecallEpisodes\n * @summary Recall similar episodes from memory.\n * @request POST:/api/v1/cognitive/agents/episodes/recall\n */\n recallEpisodes = (data: RecallEpisodesRequest, params: RequestParams = {}) =>\n this.http.request<RecallEpisodesResponse, void>({\n path: `/api/v1/cognitive/agents/episodes/recall`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags Cognitive Agents - Episodic Memory\n * @name RecordEpisode\n * @summary Record an episode in memory.\n * @request POST:/api/v1/cognitive/agents/episodes\n */\n recordEpisode = (data: RecordEpisodeRequest, params: RequestParams = {}) =>\n this.http.request<RecordEpisodeResponse, void>({\n path: `/api/v1/cognitive/agents/episodes`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n AddHtnMethodRequest,\n AddHtnMethodResponse,\n DecomposeGoalRequest,\n DecomposeGoalResponse,\n GetHtnMethodsRequest,\n GetHtnMethodsResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class CognitiveAgentsHtn<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Registers a method that decomposes a task into subtasks.\n *\n * @tags Cognitive Agents - HTN\n * @name AddHtnMethod\n * @summary Add an HTN decomposition method.\n * @request POST:/api/v1/cognitive/agents/htn/methods\n */\n addHtnMethod = (data: AddHtnMethodRequest, params: RequestParams = {}) =>\n this.http.request<AddHtnMethodResponse, void>({\n path: `/api/v1/cognitive/agents/htn/methods`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Recursively decomposes a goal into executable primitive actions.\n *\n * @tags Cognitive Agents - HTN\n * @name DecomposeGoal\n * @summary Decompose a goal using HTN planning.\n * @request POST:/api/v1/cognitive/agents/htn/decompose\n */\n decomposeGoal = (data: DecomposeGoalRequest, params: RequestParams = {}) =>\n this.http.request<DecomposeGoalResponse, void>({\n path: `/api/v1/cognitive/agents/htn/decompose`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags Cognitive Agents - HTN\n * @name GetHtnMethods\n * @summary Get HTN methods, optionally filtered by task sort.\n * @request POST:/api/v1/cognitive/agents/htn/methods/list\n */\n getHtnMethods = (data: GetHtnMethodsRequest, params: RequestParams = {}) =>\n this.http.request<GetHtnMethodsResponse, void>({\n path: `/api/v1/cognitive/agents/htn/methods/list`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n BroadcastMessageRequest,\n BroadcastMessageResponse,\n GetInboxRequest,\n GetInboxResponse,\n MarkMessagesReadRequest,\n MarkMessagesReadResponse,\n SendMessageRequest,\n SendMessageResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class CognitiveAgentsMessaging<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags Cognitive Agents - Messaging\n * @name BroadcastMessage\n * @summary Broadcast a message to all agents.\n * @request POST:/api/v1/cognitive/agents/messages/broadcast\n */\n broadcastMessage = (\n data: BroadcastMessageRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BroadcastMessageResponse, void>({\n path: `/api/v1/cognitive/agents/messages/broadcast`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags Cognitive Agents - Messaging\n * @name GetInbox\n * @summary Get an agent's inbox.\n * @request POST:/api/v1/cognitive/agents/messages/inbox\n */\n getInbox = (data: GetInboxRequest, params: RequestParams = {}) =>\n this.http.request<GetInboxResponse, void>({\n path: `/api/v1/cognitive/agents/messages/inbox`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags Cognitive Agents - Messaging\n * @name MarkMessagesRead\n * @summary Mark messages as read.\n * @request POST:/api/v1/cognitive/agents/messages/read\n */\n markMessagesRead = (\n data: MarkMessagesReadRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<MarkMessagesReadResponse, void>({\n path: `/api/v1/cognitive/agents/messages/read`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags Cognitive Agents - Messaging\n * @name SendMessage\n * @summary Send a message to another agent.\n * @request POST:/api/v1/cognitive/agents/messages\n */\n sendMessage = (data: SendMessageRequest, params: RequestParams = {}) =>\n this.http.request<SendMessageResponse, void>({\n path: `/api/v1/cognitive/agents/messages`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n DeletePlanResponse,\n FindPlansRequest,\n FindPlansResponse,\n StorePlanRequest,\n StorePlanResponse,\n UpdatePlanStatsRequest,\n UpdatePlanStatsResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class CognitiveAgentsPlanLibrary<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags Cognitive Agents - Plan Library\n * @name DeletePlan\n * @summary Delete a plan from the library.\n * @request DELETE:/api/v1/cognitive/agents/plans/{plan_id}\n */\n deletePlan = (\n planId: string,\n query: {\n /**\n * Tenant ID\n * @format uuid\n */\n tenant_id: string;\n },\n params: RequestParams = {},\n ) =>\n this.http.request<DeletePlanResponse, void>({\n path: `/api/v1/cognitive/agents/plans/${planId}`,\n method: \"DELETE\",\n query: query,\n format: \"json\",\n ...params,\n });\n /**\n * @description Searches the plan library for plans that match the given goal.\n *\n * @tags Cognitive Agents - Plan Library\n * @name FindPlans\n * @summary Find matching plans for a goal.\n * @request POST:/api/v1/cognitive/agents/plans/find\n */\n findPlans = (data: FindPlansRequest, params: RequestParams = {}) =>\n this.http.request<FindPlansResponse, void>({\n path: `/api/v1/cognitive/agents/plans/find`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Stores a successful action sequence as a reusable plan template.\n *\n * @tags Cognitive Agents - Plan Library\n * @name StorePlan\n * @summary Store a plan in the library.\n * @request POST:/api/v1/cognitive/agents/plans\n */\n storePlan = (data: StorePlanRequest, params: RequestParams = {}) =>\n this.http.request<StorePlanResponse, void>({\n path: `/api/v1/cognitive/agents/plans`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags Cognitive Agents - Plan Library\n * @name UpdatePlanStats\n * @summary Update plan statistics after execution.\n * @request POST:/api/v1/cognitive/agents/plans/stats\n */\n updatePlanStats = (\n data: UpdatePlanStatsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<UpdatePlanStatsResponse, void>({\n path: `/api/v1/cognitive/agents/plans/stats`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n CancelDocumentResponse,\n DlqAbandonResponse,\n DlqCountResponse,\n DlqListResponse,\n IngestDocumentBatchRequest,\n IngestDocumentBatchResponse,\n IngestDocumentRequest,\n IngestDocumentResponse,\n IngestMarkdownBatchRequest,\n IngestMarkdownRequest,\n IngestRdfRequest,\n IngestRdfResponse,\n IngestionSessionResponse,\n ListIncompleteDocumentsResponse,\n ListIngestionSessionsResponse,\n QueueMetricsResponse,\n RecoverStuckRequest,\n RecoverStuckResponse,\n ReprocessFailedRequest,\n ReprocessFailedResponse,\n ResumeDocumentIngestionRequest,\n ResumeDocumentIngestionResponse,\n SessionProgressResponse,\n SessionStatsResponse,\n StartIngestionSessionRequest,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Ingestion<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Marks a pending DLQ entry as abandoned. Retained for audit but not retried.\n *\n * @tags ingestion\n * @name AbandonDlqEntry\n * @summary Abandon a DLQ entry (operator decides to skip it permanently).\n * @request POST:/api/v1/ingest/dlq/{id}/abandon\n * @secure\n */\n abandonDlqEntry = (id: string, params: RequestParams = {}) =>\n this.http.request<DlqAbandonResponse, void>({\n path: `/api/v1/ingest/dlq/${id}/abandon`,\n method: \"POST\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags ingestion\n * @name CancelDocumentIngestion\n * @summary Cancel an in-progress or pending document ingestion.\n * @request POST:/api/v1/ingest/sessions/{session_id}/documents/{document_id}/cancel\n * @secure\n */\n cancelDocumentIngestion = (\n sessionId: string,\n documentId: string,\n params: RequestParams = {},\n ) =>\n this.http.request<CancelDocumentResponse, void>({\n path: `/api/v1/ingest/sessions/${sessionId}/documents/${documentId}/cancel`,\n method: \"POST\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags ingestion\n * @name CountDlqEntries\n * @summary Count pending DLQ entries for the current tenant.\n * @request GET:/api/v1/ingest/dlq/count\n * @secure\n */\n countDlqEntries = (params: RequestParams = {}) =>\n this.http.request<DlqCountResponse, void>({\n path: `/api/v1/ingest/dlq/count`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description DELETE /api/v1/ingest/sessions/{session_id} Deletes an ingestion session and all associated progress records. This does NOT delete the ingested entities - only the session tracking data. # Path Parameters - `session_id`: UUID of the session to delete # Headers - `X-Tenant-Id`: Tenant ID for multi-tenancy isolation (required) # Response - 204 No Content on success\n *\n * @tags ingestion\n * @name DeleteIngestionSession\n * @summary Delete an ingestion session\n * @request DELETE:/api/v1/ingest/sessions/{session_id}\n * @secure\n */\n deleteIngestionSession = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<void, void>({\n path: `/api/v1/ingest/sessions/${sessionId}`,\n method: \"DELETE\",\n secure: true,\n ...params,\n });\n /**\n * @description GET /api/v1/ingest/sessions/{session_id}/documents/{document_id}/stats Returns ingestion stats for a specific document. Returns 204 No Content if the document exists but stats are not yet available (still processing). # Response Codes - 200: Document stats returned - 204: Document exists but stats not yet available - 404: Session or document not found\n *\n * @tags ingestion\n * @name GetIngestionDocumentStats\n * @summary Get stats for a single document within a session\n * @request GET:/api/v1/ingest/sessions/{session_id}/documents/{document_id}/stats\n * @secure\n */\n getIngestionDocumentStats = (\n sessionId: string,\n documentId: string,\n params: RequestParams = {},\n ) =>\n this.http.request<void, void>({\n path: `/api/v1/ingest/sessions/${sessionId}/documents/${documentId}/stats`,\n method: \"GET\",\n secure: true,\n ...params,\n });\n /**\n * @description Returns in-progress document snapshots with rich contextual data.\n *\n * @tags ingestion\n * @name GetIngestionProgress\n * @summary Get live pipeline progress for all documents in a session.\n * @request GET:/api/v1/ingest/sessions/{session_id}/progress\n * @secure\n */\n getIngestionProgress = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<SessionProgressResponse, void>({\n path: `/api/v1/ingest/sessions/${sessionId}/progress`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description GET /api/v1/ingest/sessions/{session_id} Returns details of a specific ingestion session. # Path Parameters - `session_id`: UUID of the session # Headers - `X-Tenant-Id`: Tenant ID for multi-tenancy isolation (required) # Response - Session details including status and progress\n *\n * @tags ingestion\n * @name GetIngestionSession\n * @summary Get an ingestion session by ID\n * @request GET:/api/v1/ingest/sessions/{session_id}\n * @secure\n */\n getIngestionSession = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<IngestionSessionResponse, void>({\n path: `/api/v1/ingest/sessions/${sessionId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description GET /api/v1/ingest/sessions/{session_id}/stats Returns per-document ingestion stats (term_ids, sort_names, processing_time_ms, etc.) for all documents in the session that have completed processing. # Response Codes - 200: Stats returned (may be empty if no documents completed yet) - 404: Session not found\n *\n * @tags ingestion\n * @name GetIngestionSessionStats\n * @summary Get stats for all completed documents in a session\n * @request GET:/api/v1/ingest/sessions/{session_id}/stats\n * @secure\n */\n getIngestionSessionStats = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<SessionStatsResponse, void>({\n path: `/api/v1/ingest/sessions/${sessionId}/stats`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description Returns current queue depth, document counts by status, circuit breaker state, and worker count.\n *\n * @tags ingestion\n * @name GetQueueMetrics\n * @summary Get queue metrics for the ingestion pipeline.\n * @request GET:/api/v1/ingest/queue-metrics\n * @secure\n */\n getQueueMetrics = (params: RequestParams = {}) =>\n this.http.request<QueueMetricsResponse, void>({\n path: `/api/v1/ingest/queue-metrics`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/ingest/document This endpoint accepts a document (as base64 or URL) and: 1. Parses it to Markdown using the document parser service (Docling) 2. Processes the Markdown through the existing ingestion pipeline 3. Returns combined statistics from both stages # Headers - `X-Tenant-Id`: Tenant ID for multi-tenancy isolation (required) # Request Body - `document`: Document source (base64 or URL) - `document_type`: Optional type hint (auto-detected if not provided) - `owner_id`: User ID who owns the ingested data - `ocr_config`: Optional OCR/parsing configuration - `ingestion_config`: Optional markdown ingestion configuration # Response - `success`: Whether ingestion completed successfully - `parse_stats`: Statistics from document parsing - `metadata`: Extracted document metadata - `ingestion_stats`: Statistics from markdown ingestion - `pending_review`: Entities that need human review\n *\n * @tags ingestion\n * @name IngestDocument\n * @summary Ingest a single document (PDF, DOCX, etc.)\n * @request POST:/api/v1/ingest/document\n * @secure\n */\n ingestDocument = (data: IngestDocumentRequest, params: RequestParams = {}) =>\n this.http.request<IngestDocumentResponse, void>({\n path: `/api/v1/ingest/document`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/ingest/document/batch This endpoint accepts multiple documents and processes them sequentially, sharing deduplication context across documents. # Headers - `X-Tenant-Id`: Tenant ID for multi-tenancy isolation (required)\n *\n * @tags ingestion\n * @name IngestDocumentBatch\n * @summary Ingest multiple documents in batch\n * @request POST:/api/v1/ingest/document/batch\n * @secure\n */\n ingestDocumentBatch = (\n data: IngestDocumentBatchRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<IngestDocumentBatchResponse, void>({\n path: `/api/v1/ingest/document/batch`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/ingest/markdown This endpoint accepts markdown content and extracts entities using: 1. Semantic chunking for large documents 2. LLM-based entity extraction 3. Sort reconciliation (optionally creating new sorts) 4. Entity deduplication against existing knowledge base # Headers - `X-Tenant-Id`: Tenant ID for multi-tenancy isolation (required) # Request Body - `content`: The markdown content to ingest - `owner_id`: User ID who owns the ingested data - `config`: Optional configuration overrides # Response - `success`: Whether ingestion completed successfully - `stats`: Statistics about the ingestion (chunks, entities, sorts) - `pending_review`: Entities that need human review for deduplication # Size Limits - Maximum content size is 100KB. For larger documents, use the document ingestion endpoint which handles chunking automatically.\n *\n * @tags ingestion\n * @name IngestMarkdown\n * @summary Ingest a single markdown document\n * @request POST:/api/v1/ingest/markdown\n * @secure\n */\n ingestMarkdown = (\n query: {\n /** When true, process synchronously (returns 201). When false/absent, process asynchronously (returns 202). */\n sync: boolean;\n },\n data: IngestMarkdownRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<void, void>({\n path: `/api/v1/ingest/markdown`,\n method: \"POST\",\n query: query,\n body: data,\n secure: true,\n type: ContentType.Json,\n ...params,\n });\n /**\n * @description POST /api/v1/ingest/markdown/batch This endpoint accepts multiple markdown documents and enqueues them for background processing. Each document is processed independently by background workers, tracked under a single session. When a task queue is available (default), returns 202 Accepted immediately. Falls back to synchronous processing (201 Created) only when no queue is configured. # Headers - `X-Tenant-Id`: Tenant ID for multi-tenancy isolation (required) # Request Body - `documents`: List of markdown documents with IDs and content - `owner_id`: User ID who owns the ingested data - `config`: Optional configuration overrides # Response - Async (202): Session ID + document IDs for tracking - Sync fallback (201): Full ingestion result with stats\n *\n * @tags ingestion\n * @name IngestMarkdownBatch\n * @summary Ingest multiple markdown documents in batch\n * @request POST:/api/v1/ingest/markdown/batch\n * @secure\n */\n ingestMarkdownBatch = (\n data: IngestMarkdownBatchRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<void, void>({\n path: `/api/v1/ingest/markdown/batch`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n ...params,\n });\n /**\n * No description\n *\n * @tags ingestion\n * @name IngestRdf\n * @summary Ingest RDF/OWL/SHACL data and convert to OSF\n * @request POST:/api/v1/ingest/rdf\n * @secure\n */\n ingestRdf = (data: IngestRdfRequest, params: RequestParams = {}) =>\n this.http.request<IngestRdfResponse, void>({\n path: `/api/v1/ingest/rdf`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Returns paginated list of chunk failures in the dead-letter queue.\n *\n * @tags ingestion\n * @name ListDlqEntries\n * @summary List pending DLQ entries for the current tenant.\n * @request GET:/api/v1/ingest/dlq\n * @secure\n */\n listDlqEntries = (\n query?: {\n /**\n * Max entries to return\n * @format int32\n * @min 0\n */\n limit?: number;\n /**\n * Offset for pagination\n * @format int32\n * @min 0\n */\n offset?: number;\n /**\n * Filter by session ID\n * @format uuid\n */\n session_id?: string;\n },\n params: RequestParams = {},\n ) =>\n this.http.request<DlqListResponse, void>({\n path: `/api/v1/ingest/dlq`,\n method: \"GET\",\n query: query,\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description GET /api/v1/ingest/sessions/{session_id}/incomplete Returns documents that have not completed ingestion and can be resumed. For each document, includes the chunk index to resume from. # Path Parameters - `session_id`: UUID of the session # Headers - `X-Tenant-Id`: Tenant ID for multi-tenancy isolation (required) # Response - List of incomplete documents with their resumption points\n *\n * @tags ingestion\n * @name ListIncompleteDocuments\n * @summary List incomplete documents in a session\n * @request GET:/api/v1/ingest/sessions/{session_id}/incomplete\n * @secure\n */\n listIncompleteDocuments = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<ListIncompleteDocumentsResponse, void>({\n path: `/api/v1/ingest/sessions/${sessionId}/incomplete`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description GET /api/v1/ingest/sessions Returns all ingestion sessions for the authenticated tenant. # Headers - `X-Tenant-Id`: Tenant ID for multi-tenancy isolation (required) # Response - List of sessions with their status and progress\n *\n * @tags ingestion\n * @name ListIngestionSessions\n * @summary List all ingestion sessions for the tenant\n * @request GET:/api/v1/ingest/sessions\n * @secure\n */\n listIngestionSessions = (params: RequestParams = {}) =>\n this.http.request<ListIngestionSessionsResponse, void>({\n path: `/api/v1/ingest/sessions`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description Finds documents stuck in InProgress for longer than the specified timeout and releases them back to Pending for re-processing.\n *\n * @tags ingestion\n * @name RecoverStuckDocuments\n * @summary Recover stuck documents that have been in InProgress too long.\n * @request POST:/api/v1/ingest/recover-stuck\n * @secure\n */\n recoverStuckDocuments = (\n data: RecoverStuckRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<RecoverStuckResponse, void>({\n path: `/api/v1/ingest/recover-stuck`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Finds documents in Failed status, resets them and optionally re-enqueues them.\n *\n * @tags ingestion\n * @name ReprocessFailedDocuments\n * @summary Reprocess failed documents by resetting them to Pending.\n * @request POST:/api/v1/ingest/reprocess-failed\n * @secure\n */\n reprocessFailedDocuments = (\n data: ReprocessFailedRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ReprocessFailedResponse, void>({\n path: `/api/v1/ingest/reprocess-failed`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/ingest/sessions/{session_id}/resume Resumes ingestion of an incomplete document from the last successful chunk. The document content must match the original content (verified via hash). # Path Parameters - `session_id`: UUID of the session # Headers - `X-Tenant-Id`: Tenant ID for multi-tenancy isolation (required) # Request Body - `document_id`: ID of the document to resume - `content`: Document content (must match original) - `owner_id`: User ID performing the ingestion - `config`: Optional configuration overrides # Response - Ingestion result including entities extracted and any pending reviews\n *\n * @tags ingestion\n * @name ResumeDocumentIngestion\n * @summary Resume ingestion of a document in a session\n * @request POST:/api/v1/ingest/sessions/{session_id}/resume\n * @secure\n */\n resumeDocumentIngestion = (\n sessionId: string,\n data: ResumeDocumentIngestionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ResumeDocumentIngestionResponse, void>({\n path: `/api/v1/ingest/sessions/${sessionId}/resume`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/ingest/sessions Creates a resumable ingestion session for tracking batch document ingestion. Returns a session ID that can be used to track progress and resume interrupted ingestion. # Headers - `X-Tenant-Id`: Tenant ID for multi-tenancy isolation (required) # Request Body - `document_ids`: List of document IDs that will be ingested in this session # Response - Session details including ID, status, and document count\n *\n * @tags ingestion\n * @name StartIngestionSession\n * @summary Start a new ingestion session\n * @request POST:/api/v1/ingest/sessions\n * @secure\n */\n startIngestionSession = (\n data: StartIngestionSessionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<IngestionSessionResponse, void>({\n path: `/api/v1/ingest/sessions`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n DiscoverSchemaRequest,\n DiscoverSchemaResponse,\n IngestFromSourceRequest,\n IngestFromSourceResponse,\n ListSourcesResponse,\n RegisterSourceRequest,\n RegisterSourceResponse,\n SourceDetailResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class StructuredIngestion<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags structured_ingestion\n * @name DeleteSource\n * @summary Unregister a data source.\n * @request DELETE:/api/v1/sources/{source_id}\n * @secure\n */\n deleteSource = (sourceId: string, params: RequestParams = {}) =>\n this.http.request<void, void>({\n path: `/api/v1/sources/${sourceId}`,\n method: \"DELETE\",\n secure: true,\n ...params,\n });\n /**\n * @description Performs schema introspection on the source to discover types (sorts), features (fields), and relations. This is a preview operation - no data is ingested.\n *\n * @tags structured_ingestion\n * @name DiscoverSchema\n * @summary Discover schema from a registered source.\n * @request POST:/api/v1/sources/{source_id}/discover\n * @secure\n */\n discoverSchema = (\n sourceId: string,\n data: DiscoverSchemaRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<DiscoverSchemaResponse, void>({\n path: `/api/v1/sources/${sourceId}/discover`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags structured_ingestion\n * @name GetSource\n * @summary Get details and health check for a registered source.\n * @request GET:/api/v1/sources/{source_id}\n * @secure\n */\n getSource = (sourceId: string, params: RequestParams = {}) =>\n this.http.request<SourceDetailResponse, void>({\n path: `/api/v1/sources/${sourceId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description Executes the full pipeline: 1. Schema discovery from connector 2. Paginated data fetch from connector 3. Render structured data to markdown with schema context 4. Feed through existing NER + LLM + OSFKB pipeline\n *\n * @tags structured_ingestion\n * @name IngestFromSource\n * @summary Ingest data from a registered source.\n * @request POST:/api/v1/sources/{source_id}/ingest\n * @secure\n */\n ingestFromSource = (\n sourceId: string,\n data: IngestFromSourceRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<IngestFromSourceResponse, void>({\n path: `/api/v1/sources/${sourceId}/ingest`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags structured_ingestion\n * @name ListSources\n * @summary List all registered data sources.\n * @request GET:/api/v1/sources\n * @secure\n */\n listSources = (params: RequestParams = {}) =>\n this.http.request<ListSourcesResponse, any>({\n path: `/api/v1/sources`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description Creates a connector instance from the provided configuration and registers it with the structured ingestion service for subsequent schema discovery and data ingestion.\n *\n * @tags structured_ingestion\n * @name RegisterSource\n * @summary Register a new data source.\n * @request POST:/api/v1/sources\n * @secure\n */\n registerSource = (data: RegisterSourceRequest, params: RequestParams = {}) =>\n this.http.request<RegisterSourceResponse, void>({\n path: `/api/v1/sources`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n DiagnosticsResponse,\n E2ETrainingRequest,\n E2ETrainingResponse,\n EmbeddingVerificationResponse,\n GFlowNetTrainResponse,\n NeuroSymbolicStatusResponse,\n SaveWeightsResponse,\n SortBoxRequest,\n SortBoxResponse,\n TrainFromTracesResponse,\n TrainingTriggerResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class NeuroSymbolic<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Returns per-choice-type success rates, weakest choice points, and trace buffer statistics from the shared TraceCollector. Identifies which decision points the scorer is worst at -- the primary diagnostic for targeted improvement.\n *\n * @tags neuro-symbolic\n * @name NeuroSymbolicDiagnostics\n * @summary GET /api/v1/admin/neuro-symbolic/diagnostics\n * @request GET:/api/v1/admin/neuro-symbolic/diagnostics\n */\n neuroSymbolicDiagnostics = (params: RequestParams = {}) =>\n this.http.request<DiagnosticsResponse, any>({\n path: `/api/v1/admin/neuro-symbolic/diagnostics`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n /**\n * @description Persists all trained weights (scorer, embeddings, GFlowNet) to disk. This is a blocking operation -- the response is returned after saving completes.\n *\n * @tags neuro-symbolic\n * @name NeuroSymbolicSaveWeights\n * @summary POST /api/v1/admin/neuro-symbolic/save-weights\n * @request POST:/api/v1/admin/neuro-symbolic/save-weights\n */\n neuroSymbolicSaveWeights = (params: RequestParams = {}) =>\n this.http.request<SaveWeightsResponse, void>({\n path: `/api/v1/admin/neuro-symbolic/save-weights`,\n method: \"POST\",\n format: \"json\",\n ...params,\n });\n /**\n * @description Looks up a single sort's box embedding by name. Returns the min/max coordinates, log-volume, and dimensionality.\n *\n * @tags neuro-symbolic\n * @name NeuroSymbolicSortBox\n * @summary POST /api/v1/admin/neuro-symbolic/embeddings/sort-box\n * @request POST:/api/v1/admin/neuro-symbolic/embeddings/sort-box\n */\n neuroSymbolicSortBox = (data: SortBoxRequest, params: RequestParams = {}) =>\n this.http.request<SortBoxResponse, void>({\n path: `/api/v1/admin/neuro-symbolic/embeddings/sort-box`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Returns the current status of the neuro-symbolic training subsystem, including scorer metrics, embedding metrics, and background loop state.\n *\n * @tags neuro-symbolic\n * @name NeuroSymbolicStatus\n * @summary GET /api/v1/admin/neuro-symbolic/status\n * @request GET:/api/v1/admin/neuro-symbolic/status\n */\n neuroSymbolicStatus = (params: RequestParams = {}) =>\n this.http.request<NeuroSymbolicStatusResponse, any>({\n path: `/api/v1/admin/neuro-symbolic/status`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n /**\n * @description Triggers synthetic training using the training harness. Generates synthetic knowledge bases and trains on derivation traces. This is a blocking operation -- the response is returned after training completes.\n *\n * @tags neuro-symbolic\n * @name NeuroSymbolicTrain\n * @summary POST /api/v1/admin/neuro-symbolic/train\n * @request POST:/api/v1/admin/neuro-symbolic/train\n */\n neuroSymbolicTrain = (params: RequestParams = {}) =>\n this.http.request<TrainingTriggerResponse, void>({\n path: `/api/v1/admin/neuro-symbolic/train`,\n method: \"POST\",\n format: \"json\",\n ...params,\n });\n /**\n * @description Triggers end-to-end differentiable training using tagged forward chaining with a probabilistic semiring. Runs the specified number of epochs, computing BCE loss against ground truth at each epoch. This is a blocking operation -- the response is returned after all epochs complete.\n *\n * @tags neuro-symbolic\n * @name NeuroSymbolicTrainE2E\n * @summary POST /api/v1/admin/neuro-symbolic/train/e2e\n * @request POST:/api/v1/admin/neuro-symbolic/train/e2e\n * @secure\n */\n neuroSymbolicTrainE2E = (\n data: E2ETrainingRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<E2ETrainingResponse, void>({\n path: `/api/v1/admin/neuro-symbolic/train/e2e`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Triggers box embedding refinement using containment loss from the sort hierarchy. This is a blocking operation -- the response is returned after training completes.\n *\n * @tags neuro-symbolic\n * @name NeuroSymbolicTrainEmbeddings\n * @summary POST /api/v1/admin/neuro-symbolic/train/embeddings\n * @request POST:/api/v1/admin/neuro-symbolic/train/embeddings\n */\n neuroSymbolicTrainEmbeddings = (params: RequestParams = {}) =>\n this.http.request<TrainingTriggerResponse, void>({\n path: `/api/v1/admin/neuro-symbolic/train/embeddings`,\n method: \"POST\",\n format: \"json\",\n ...params,\n });\n /**\n * @description Trains the neural scorer from accumulated search traces. Drains the trace buffer collected during guided searches and runs a training cycle. This is the feedback loop for AlphaProof-style learning: search -> collect traces -> train -> improved search.\n *\n * @tags neuro-symbolic\n * @name NeuroSymbolicTrainFromTraces\n * @summary POST /api/v1/admin/neuro-symbolic/train/from-traces\n * @request POST:/api/v1/admin/neuro-symbolic/train/from-traces\n */\n neuroSymbolicTrainFromTraces = (params: RequestParams = {}) =>\n this.http.request<TrainFromTracesResponse, void>({\n path: `/api/v1/admin/neuro-symbolic/train/from-traces`,\n method: \"POST\",\n format: \"json\",\n ...params,\n });\n /**\n * @description Triggers GFlowNet trajectory-balance training from accumulated trajectories. Drains the trajectory buffer and runs one TB training step. This is a blocking operation -- the response is returned after training completes.\n *\n * @tags neuro-symbolic\n * @name NeuroSymbolicTrainGflownet\n * @summary POST /api/v1/admin/neuro-symbolic/train/gflownet\n * @request POST:/api/v1/admin/neuro-symbolic/train/gflownet\n */\n neuroSymbolicTrainGflownet = (params: RequestParams = {}) =>\n this.http.request<GFlowNetTrainResponse, void>({\n path: `/api/v1/admin/neuro-symbolic/train/gflownet`,\n method: \"POST\",\n format: \"json\",\n ...params,\n });\n /**\n * @description Verifies that trained box embeddings faithfully represent the sort hierarchy. Runs three verification checks: - Containment: subtype boxes are contained in supertype boxes - Meet-preservation: box intersection approximates GLB embedding - Volume-specificity: more specific sorts have smaller volumes\n *\n * @tags neuro-symbolic\n * @name NeuroSymbolicVerifyEmbeddings\n * @summary GET /api/v1/admin/neuro-symbolic/embeddings/verify\n * @request GET:/api/v1/admin/neuro-symbolic/embeddings/verify\n */\n neuroSymbolicVerifyEmbeddings = (params: RequestParams = {}) =>\n this.http.request<EmbeddingVerificationResponse, void>({\n path: `/api/v1/admin/neuro-symbolic/embeddings/verify`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n AscRequest,\n AscResponse,\n BatchStringCompareRequest,\n BatchStringCompareResponse,\n ChrRequest,\n ChrResponse,\n NumberToStringRequest,\n NumberToStringResponse,\n StringComparePredicateRequest,\n StringComparePredicateResponse,\n StringCompareRequest,\n StringCompareResponse,\n StringConcatRequest,\n StringConcatResponse,\n StringLengthRequest,\n StringLengthResponse,\n StringOpRequest,\n StringOpResponse,\n SubstringRequest,\n SubstringResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Strings<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags strings\n * @name NumberToString\n * @summary Convert number to string POST /api/v1/strings/from-number\n * @request POST:/api/v1/strings/from-number\n * @secure\n */\n numberToString = (data: NumberToStringRequest, params: RequestParams = {}) =>\n this.http.request<NumberToStringResponse, void>({\n path: `/api/v1/strings/from-number`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags strings\n * @name StringAsc\n * @summary Get ASCII code of character POST /api/v1/strings/asc\n * @request POST:/api/v1/strings/asc\n * @secure\n */\n stringAsc = (data: AscRequest, params: RequestParams = {}) =>\n this.http.request<AscResponse, void>({\n path: `/api/v1/strings/asc`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags strings\n * @name StringChr\n * @summary Get character from ASCII code POST /api/v1/strings/chr\n * @request POST:/api/v1/strings/chr\n * @secure\n */\n stringChr = (data: ChrRequest, params: RequestParams = {}) =>\n this.http.request<ChrResponse, void>({\n path: `/api/v1/strings/chr`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags strings\n * @name StringCompare\n * @summary Compare two strings POST /api/v1/strings/compare\n * @request POST:/api/v1/strings/compare\n * @secure\n */\n stringCompare = (data: StringCompareRequest, params: RequestParams = {}) =>\n this.http.request<StringCompareResponse, void>({\n path: `/api/v1/strings/compare`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Useful for checking multiple string constraints at once.\n *\n * @tags strings\n * @name StringCompareBatch\n * @summary Batch string comparison for multiple predicates POST /api/v1/strings/compare-batch\n * @request POST:/api/v1/strings/compare-batch\n * @secure\n */\n stringCompareBatch = (\n data: BatchStringCompareRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BatchStringCompareResponse, void>({\n path: `/api/v1/strings/compare-batch`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Returns success/failure semantics like Wild_LIFE predicates. Uses lexicographic ordering for comparisons.\n *\n * @tags strings\n * @name StringComparePredicate\n * @summary Wild_Life-style string comparison predicate POST /api/v1/strings/compare-predicate\n * @request POST:/api/v1/strings/compare-predicate\n * @secure\n */\n stringComparePredicate = (\n data: StringComparePredicateRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<StringComparePredicateResponse, void>({\n path: `/api/v1/strings/compare-predicate`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags strings\n * @name StringConcat\n * @summary Concatenate two strings POST /api/v1/strings/concat\n * @request POST:/api/v1/strings/concat\n * @secure\n */\n stringConcat = (data: StringConcatRequest, params: RequestParams = {}) =>\n this.http.request<StringConcatResponse, void>({\n path: `/api/v1/strings/concat`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags strings\n * @name StringLength\n * @summary Get string length POST /api/v1/strings/length\n * @request POST:/api/v1/strings/length\n * @secure\n */\n stringLength = (data: StringLengthRequest, params: RequestParams = {}) =>\n this.http.request<StringLengthResponse, void>({\n path: `/api/v1/strings/length`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags strings\n * @name StringOp\n * @summary General string operation POST /api/v1/strings/op\n * @request POST:/api/v1/strings/op\n * @secure\n */\n stringOp = (data: StringOpRequest, params: RequestParams = {}) =>\n this.http.request<StringOpResponse, void>({\n path: `/api/v1/strings/op`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags strings\n * @name StringSubstr\n * @summary Get substring POST /api/v1/strings/substr\n * @request POST:/api/v1/strings/substr\n * @secure\n */\n stringSubstr = (data: SubstringRequest, params: RequestParams = {}) =>\n this.http.request<SubstringResponse, void>({\n path: `/api/v1/strings/substr`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n BitwiseRequest,\n BitwiseResponse,\n MathFunctionRequest,\n MathFunctionResponse,\n ModularArithRequest,\n ModularArithResponse,\n RelationalArithRequest,\n RelationalArithResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Arithmetic<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags arithmetic\n * @name ArithAdd\n * @summary 3-way addition: A + B = C POST /api/v1/arithmetic/add\n * @request POST:/api/v1/arithmetic/add\n * @secure\n */\n arithAdd = (data: RelationalArithRequest, params: RequestParams = {}) =>\n this.http.request<RelationalArithResponse, void>({\n path: `/api/v1/arithmetic/add`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags arithmetic\n * @name ArithDiv\n * @summary 3-way division: A / B = C POST /api/v1/arithmetic/div\n * @request POST:/api/v1/arithmetic/div\n * @secure\n */\n arithDiv = (data: RelationalArithRequest, params: RequestParams = {}) =>\n this.http.request<RelationalArithResponse, void>({\n path: `/api/v1/arithmetic/div`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags arithmetic\n * @name ArithMult\n * @summary 3-way multiplication: A * B = C POST /api/v1/arithmetic/mult\n * @request POST:/api/v1/arithmetic/mult\n * @secure\n */\n arithMult = (data: RelationalArithRequest, params: RequestParams = {}) =>\n this.http.request<RelationalArithResponse, void>({\n path: `/api/v1/arithmetic/mult`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags arithmetic\n * @name ArithSub\n * @summary 3-way subtraction: A - B = C POST /api/v1/arithmetic/sub\n * @request POST:/api/v1/arithmetic/sub\n * @secure\n */\n arithSub = (data: RelationalArithRequest, params: RequestParams = {}) =>\n this.http.request<RelationalArithResponse, void>({\n path: `/api/v1/arithmetic/sub`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags arithmetic\n * @name BitwiseOp\n * @summary Execute a bitwise operation POST /api/v1/arithmetic/bitwise\n * @request POST:/api/v1/arithmetic/bitwise\n * @secure\n */\n bitwiseOp = (data: BitwiseRequest, params: RequestParams = {}) =>\n this.http.request<BitwiseResponse, void>({\n path: `/api/v1/arithmetic/bitwise`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags arithmetic\n * @name MathFunction\n * @summary Execute a math function POST /api/v1/arithmetic/math\n * @request POST:/api/v1/arithmetic/math\n * @secure\n */\n mathFunction = (data: MathFunctionRequest, params: RequestParams = {}) =>\n this.http.request<MathFunctionResponse, void>({\n path: `/api/v1/arithmetic/math`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags arithmetic\n * @name ModularArith\n * @summary Execute modular arithmetic POST /api/v1/arithmetic/modular\n * @request POST:/api/v1/arithmetic/modular\n * @secure\n */\n modularArith = (data: ModularArithRequest, params: RequestParams = {}) =>\n this.http.request<ModularArithResponse, void>({\n path: `/api/v1/arithmetic/modular`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n BatchCopyRequest,\n BatchCopyResponse,\n CopyTermRequest,\n CopyTermResponse,\n DeepCopyRequest,\n DeepCopyResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Copy<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags copy\n * @name BatchCopy\n * @summary Batch copy terms POST /api/v1/copy/batch\n * @request POST:/api/v1/copy/batch\n * @secure\n */\n batchCopy = (data: BatchCopyRequest, params: RequestParams = {}) =>\n this.http.request<BatchCopyResponse, void>({\n path: `/api/v1/copy/batch`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags copy\n * @name CopyTerm\n * @summary Copy a term with specified semantics POST /api/v1/copy/term\n * @request POST:/api/v1/copy/term\n * @secure\n */\n copyTerm = (data: CopyTermRequest, params: RequestParams = {}) =>\n this.http.request<CopyTermResponse, void>({\n path: `/api/v1/copy/term`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags copy\n * @name DeepCopy\n * @summary Deep copy a term with cycle detection POST /api/v1/copy/deep\n * @request POST:/api/v1/copy/deep\n * @secure\n */\n deepCopy = (data: DeepCopyRequest, params: RequestParams = {}) =>\n this.http.request<DeepCopyResponse, void>({\n path: `/api/v1/copy/deep`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n DetectCommunitiesRequest,\n DetectCommunitiesResponse,\n GetMembershipsRequest,\n GetMembershipsResponse,\n SearchCommunitiesRequest,\n SearchCommunitiesResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Communities<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description POST /api/v1/communities/detect Runs Leiden community detection on terms belonging to the specified tenant. Creates Community and CommunityMembership PsiTerms in the knowledge base.\n *\n * @tags communities\n * @name DetectCommunities\n * @summary Detect communities from terms\n * @request POST:/api/v1/communities/detect\n * @secure\n */\n detectCommunities = (\n data: DetectCommunitiesRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<DetectCommunitiesResponse, void>({\n path: `/api/v1/communities/detect`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/communities/memberships Returns all communities that a term belongs to, with membership degrees.\n *\n * @tags communities\n * @name GetMemberships\n * @summary Get community memberships for a term\n * @request POST:/api/v1/communities/memberships\n * @secure\n */\n getMemberships = (data: GetMembershipsRequest, params: RequestParams = {}) =>\n this.http.request<GetMembershipsResponse, void>({\n path: `/api/v1/communities/memberships`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/communities/search Search for communities by various criteria: - ByEntities: Find communities containing specific terms - ByImpact: Find high-impact communities - ByLevel: Find communities at a specific hierarchy level - ByKeyword: Search community reports by keyword\n *\n * @tags communities\n * @name SearchCommunities\n * @summary Search communities\n * @request POST:/api/v1/communities/search\n * @secure\n */\n searchCommunities = (\n data: SearchCommunitiesRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<SearchCommunitiesResponse, void>({\n path: `/api/v1/communities/search`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n CollectionListResponse,\n CollectionResponse,\n CreateCollectionRequest,\n QueryByCollectionPathRequest,\n QueryInCollectionRequest,\n TermListResponse,\n UpdateCollectionRequest,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Collections<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description # Authorization Requires X-Namespace-Id header. The namespace_id field in the request body is ignored.\n *\n * @tags collections\n * @name CreateCollection\n * @summary Create a collection\n * @request POST:/api/v1/collections\n * @secure\n */\n createCollection = (\n data: CreateCollectionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<CollectionResponse, void>({\n path: `/api/v1/collections`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags collections\n * @name DeleteCollection\n * @summary Delete a collection\n * @request DELETE:/api/v1/collections/{id}\n * @secure\n */\n deleteCollection = (id: string, params: RequestParams = {}) =>\n this.http.request<void, void>({\n path: `/api/v1/collections/${id}`,\n method: \"DELETE\",\n secure: true,\n ...params,\n });\n /**\n * No description\n *\n * @tags collections\n * @name GetCollection\n * @summary Get a collection by ID\n * @request GET:/api/v1/collections/{id}\n * @secure\n */\n getCollection = (id: string, params: RequestParams = {}) =>\n this.http.request<CollectionResponse, void>({\n path: `/api/v1/collections/${id}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags collections\n * @name GetCollectionAncestors\n * @summary Get ancestors of a collection\n * @request GET:/api/v1/collections/{id}/ancestors\n * @secure\n */\n getCollectionAncestors = (id: string, params: RequestParams = {}) =>\n this.http.request<CollectionListResponse, void>({\n path: `/api/v1/collections/${id}/ancestors`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags collections\n * @name GetCollectionByPath\n * @summary Get a collection by path within a namespace\n * @request GET:/api/v1/collections/path/{namespace_id}/{path}\n * @secure\n */\n getCollectionByPath = (\n namespaceId: string,\n path: string,\n params: RequestParams = {},\n ) =>\n this.http.request<CollectionResponse, void>({\n path: `/api/v1/collections/path/${namespaceId}/${path}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags collections\n * @name GetCollectionChildren\n * @summary Get children of a collection\n * @request GET:/api/v1/collections/{id}/children\n * @secure\n */\n getCollectionChildren = (id: string, params: RequestParams = {}) =>\n this.http.request<CollectionListResponse, void>({\n path: `/api/v1/collections/${id}/children`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags collections\n * @name GetCollectionDescendants\n * @summary Get all descendants of a collection\n * @request GET:/api/v1/collections/{id}/descendants\n * @secure\n */\n getCollectionDescendants = (id: string, params: RequestParams = {}) =>\n this.http.request<CollectionListResponse, void>({\n path: `/api/v1/collections/${id}/descendants`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags collections\n * @name GetRootCollections\n * @summary Get root collections in a namespace\n * @request GET:/api/v1/collections/namespace/{namespace_id}/roots\n * @secure\n */\n getRootCollections = (namespaceId: string, params: RequestParams = {}) =>\n this.http.request<CollectionListResponse, void>({\n path: `/api/v1/collections/namespace/${namespaceId}/roots`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags collections\n * @name ListCollections\n * @summary List all collections in a namespace\n * @request GET:/api/v1/collections/namespace/{namespace_id}\n * @secure\n */\n listCollections = (namespaceId: string, params: RequestParams = {}) =>\n this.http.request<CollectionListResponse, void>({\n path: `/api/v1/collections/namespace/${namespaceId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags collections\n * @name QueryTermsByCollectionPath\n * @summary Query terms by collection path prefix (placeholder - needs term integration)\n * @request POST:/api/v1/collections/query/by-path\n * @secure\n */\n queryTermsByCollectionPath = (\n data: QueryByCollectionPathRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<TermListResponse, void>({\n path: `/api/v1/collections/query/by-path`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags collections\n * @name QueryTermsInCollection\n * @summary Query terms in a collection (placeholder - needs term integration)\n * @request POST:/api/v1/collections/query/in-collection\n * @secure\n */\n queryTermsInCollection = (\n data: QueryInCollectionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<TermListResponse, void>({\n path: `/api/v1/collections/query/in-collection`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags collections\n * @name UpdateCollection\n * @summary Update collection metadata\n * @request PUT:/api/v1/collections/{id}\n * @secure\n */\n updateCollection = (\n id: string,\n data: UpdateCollectionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<void, void>({\n path: `/api/v1/collections/${id}`,\n method: \"PUT\",\n body: data,\n secure: true,\n type: ContentType.Json,\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n AppendResiduationsRequest,\n AppendResiduationsResponse,\n ApplyCurriedRequest,\n ApplyCurriedResponse,\n BacktrackRequest,\n BacktrackResponse,\n BindTermRequest,\n BindTermResponse,\n BindingsResponse,\n ChoicePointMarkerResponse,\n CleanupResponse,\n CreateCurriedFunctionRequest,\n CreateExecutionSessionRequest,\n CurriedFunctionResponse,\n CurryingContextResponse,\n DetectMissingAttributesRequest,\n ExecutionSessionResponse,\n GetBindingsRequest,\n GetResiduationsRequest,\n GetResiduationsResponse,\n GoalStackResponse,\n LazyEvalRequest,\n LazyEvalResponse,\n MarkChoicePointRequest,\n MarkPendingRequest,\n MarkPendingResponse,\n PushGoalRequest,\n PushGoalResponse,\n ReleaseResiduationsRequest,\n ReleaseResiduationsResponse,\n ResiduateGoalRequest,\n ResiduatedTermDto,\n SessionStatsResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Execution<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags execution\n * @name AppendResiduations\n * @summary Append residuations during unification\n * @request POST:/api/v1/execution/sessions/{session_id}/residuations/append\n * @secure\n */\n appendResiduations = (\n sessionId: string,\n data: AppendResiduationsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<AppendResiduationsResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}/residuations/append`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name ApplyCurried\n * @summary Apply arguments to a curried function\n * @request POST:/api/v1/execution/curry/apply\n * @secure\n */\n applyCurried = (data: ApplyCurriedRequest, params: RequestParams = {}) =>\n this.http.request<ApplyCurriedResponse, void>({\n path: `/api/v1/execution/curry/apply`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name Backtrack\n * @summary Backtrack to a choice point\n * @request POST:/api/v1/execution/sessions/{session_id}/backtrack\n * @secure\n */\n backtrack = (\n sessionId: string,\n data: BacktrackRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BacktrackResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}/backtrack`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name BindTerm\n * @summary Bind a term in the session\n * @request POST:/api/v1/execution/sessions/{session_id}/bind\n * @secure\n */\n bindTerm = (\n sessionId: string,\n data: BindTermRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BindTermResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}/bind`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Query parameters: - max_age_hours: Sessions older than this will be cleaned (default: 24) - include_db: Also clean stale sessions from database (default: false)\n *\n * @tags execution\n * @name CleanupStaleSessions\n * @summary Clean up stale sessions from memory and optionally from database. This should be called periodically (e.g., via cron or health check) to prevent memory leaks.\n * @request POST:/api/v1/execution/cleanup\n * @secure\n */\n cleanupStaleSessions = (\n query?: {\n /** Also clean stale sessions from database (default: false) */\n include_db?: boolean;\n /**\n * Sessions older than this many hours will be cleaned (default: 24)\n * @format int64\n */\n max_age_hours?: number;\n },\n params: RequestParams = {},\n ) =>\n this.http.request<CleanupResponse, void>({\n path: `/api/v1/execution/cleanup`,\n method: \"POST\",\n query: query,\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description NOTE: Curried functions are ephemeral and not persisted. They will be lost on server restart. Use within a single session lifecycle.\n *\n * @tags execution\n * @name CreateCurriedFunction\n * @summary Create a curried function\n * @request POST:/api/v1/execution/curry\n * @secure\n */\n createCurriedFunction = (\n data: CreateCurriedFunctionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<CurriedFunctionResponse, void>({\n path: `/api/v1/execution/curry`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name CreateExecutionSession\n * @summary Create a new execution session\n * @request POST:/api/v1/execution/sessions\n * @secure\n */\n createExecutionSession = (\n data: CreateExecutionSessionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ExecutionSessionResponse, void>({\n path: `/api/v1/execution/sessions`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name DeleteExecutionSession\n * @summary Delete an execution session\n * @request DELETE:/api/v1/execution/sessions/{session_id}\n * @secure\n */\n deleteExecutionSession = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<void, void>({\n path: `/api/v1/execution/sessions/${sessionId}`,\n method: \"DELETE\",\n secure: true,\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name DetectCurryingContext\n * @summary Detect missing attributes for currying decision\n * @request POST:/api/v1/execution/curry/detect\n * @secure\n */\n detectCurryingContext = (\n data: DetectMissingAttributesRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<CurryingContextResponse, void>({\n path: `/api/v1/execution/curry/detect`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name GetBindings\n * @summary Get current bindings\n * @request POST:/api/v1/execution/sessions/{session_id}/bindings\n * @secure\n */\n getBindings = (\n sessionId: string,\n data: GetBindingsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BindingsResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}/bindings`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name GetExecutionSession\n * @summary Get session status\n * @request GET:/api/v1/execution/sessions/{session_id}\n * @secure\n */\n getExecutionSession = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<ExecutionSessionResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name GetGoalStack\n * @summary Get the current goal stack\n * @request GET:/api/v1/execution/sessions/{session_id}/goals\n * @secure\n */\n getGoalStack = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<GoalStackResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}/goals`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name GetResiduations\n * @summary Get residuations for a term\n * @request POST:/api/v1/execution/sessions/{session_id}/residuations\n * @secure\n */\n getResiduations = (\n sessionId: string,\n data: GetResiduationsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<GetResiduationsResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}/residuations`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name GetSessionStats\n * @request GET:/api/v1/execution/stats\n * @secure\n */\n getSessionStats = (params: RequestParams = {}) =>\n this.http.request<SessionStatsResponse, void>({\n path: `/api/v1/execution/stats`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name LazyEval\n * @summary Evaluate a term lazily\n * @request POST:/api/v1/execution/sessions/{session_id}/lazy-eval\n * @secure\n */\n lazyEval = (\n sessionId: string,\n data: LazyEvalRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<LazyEvalResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}/lazy-eval`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name MarkChoicePoint\n * @summary Mark a choice point\n * @request POST:/api/v1/execution/sessions/{session_id}/mark\n * @secure\n */\n markChoicePoint = (\n sessionId: string,\n data: MarkChoicePointRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ChoicePointMarkerResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}/mark`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name MarkPending\n * @summary Mark a residuation as pending\n * @request POST:/api/v1/execution/sessions/{session_id}/residuations/pending\n * @secure\n */\n markPending = (\n sessionId: string,\n data: MarkPendingRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<MarkPendingResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}/residuations/pending`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name PopGoal\n * @summary Pop a goal from the stack\n * @request POST:/api/v1/execution/sessions/{session_id}/goals/pop\n * @secure\n */\n popGoal = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<GoalStackResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}/goals/pop`,\n method: \"POST\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name PushGoal\n * @summary Push a goal onto the stack\n * @request POST:/api/v1/execution/sessions/{session_id}/goals\n * @secure\n */\n pushGoal = (\n sessionId: string,\n data: PushGoalRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<PushGoalResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}/goals`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name ReleaseResiduations\n * @summary Release residuations for a term\n * @request POST:/api/v1/execution/sessions/{session_id}/residuations/release\n * @secure\n */\n releaseResiduations = (\n sessionId: string,\n data: ReleaseResiduationsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ReleaseResiduationsResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}/residuations/release`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name ResiduateGoal\n * @summary Residuate a goal on a variable\n * @request POST:/api/v1/execution/sessions/{session_id}/residuate\n * @secure\n */\n residuateGoal = (\n sessionId: string,\n data: ResiduateGoalRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ResiduatedTermDto, void>({\n path: `/api/v1/execution/sessions/${sessionId}/residuate`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n AddCausalRelationRequest,\n AddCausalRelationResponse,\n CausalAncestorRequest,\n CausalAncestorResponse,\n CausesRequest,\n CausesResponse,\n CounterfactualRequest,\n CounterfactualResponse,\n DSeparatedRequest,\n DSeparatedResponse,\n GetCausalModelResponse,\n InterventionRequest,\n InterventionResponse,\n RootCauseAnalysisRequest,\n RootCauseAnalysisResponse,\n RootCauseWithProofResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Causal<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags causal\n * @name AddCausalRelation\n * @summary Add a causal relationship to the model\n * @request POST:/api/v1/causal/relations\n * @secure\n */\n addCausalRelation = (\n data: AddCausalRelationRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<AddCausalRelationResponse, void>({\n path: `/api/v1/causal/relations`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags causal\n * @name AnalyzeRootCauses\n * @summary Perform root cause analysis for an effect\n * @request POST:/api/v1/causal/root-cause\n * @secure\n */\n analyzeRootCauses = (\n data: RootCauseAnalysisRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<RootCauseAnalysisResponse, void>({\n path: `/api/v1/causal/root-cause`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags causal\n * @name AnalyzeRootCausesWithProof\n * @summary Perform root cause analysis with full proof tree for audit trail\n * @request POST:/api/v1/causal/root-cause-with-proof\n * @secure\n */\n analyzeRootCausesWithProof = (\n data: RootCauseAnalysisRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<RootCauseWithProofResponse, void>({\n path: `/api/v1/causal/root-cause-with-proof`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Implements Pearl's do(X=x) operator by disabling incoming edges to X.\n *\n * @tags causal\n * @name ApplyIntervention\n * @summary Apply a do-calculus intervention and query the result\n * @request POST:/api/v1/causal/intervention\n * @secure\n */\n applyIntervention = (data: InterventionRequest, params: RequestParams = {}) =>\n this.http.request<InterventionResponse, void>({\n path: `/api/v1/causal/intervention`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Uses transitive closure over the causal graph to find ancestry.\n *\n * @tags causal\n * @name CheckCausalAncestor\n * @summary Check if one variable is a causal ancestor of another\n * @request POST:/api/v1/causal/ancestor\n * @secure\n */\n checkCausalAncestor = (\n data: CausalAncestorRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<CausalAncestorResponse, void>({\n path: `/api/v1/causal/ancestor`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Uses the CausalInferenceBuiltins to check direct causal relationships.\n *\n * @tags causal\n * @name CheckCauses\n * @summary Check if one variable directly causes another\n * @request POST:/api/v1/causal/causes\n * @secure\n */\n checkCauses = (data: CausesRequest, params: RequestParams = {}) =>\n this.http.request<CausesResponse, void>({\n path: `/api/v1/causal/causes`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Uses Bayes-Ball algorithm to determine conditional independence.\n *\n * @tags causal\n * @name CheckDSeparated\n * @summary Check d-separation between two variables given a conditioning set\n * @request POST:/api/v1/causal/d-separated\n * @secure\n */\n checkDSeparated = (data: DSeparatedRequest, params: RequestParams = {}) =>\n this.http.request<DSeparatedResponse, void>({\n path: `/api/v1/causal/d-separated`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Steps: 1. Abduction: Compute exogenous variables from factual evidence 2. Action: Apply intervention do(X=x) 3. Prediction: Query in the modified world\n *\n * @tags causal\n * @name EvaluateCounterfactual\n * @summary Evaluate a counterfactual query using Pearl's three-step algorithm\n * @request POST:/api/v1/causal/counterfactual\n * @secure\n */\n evaluateCounterfactual = (\n data: CounterfactualRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<CounterfactualResponse, void>({\n path: `/api/v1/causal/counterfactual`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags causal\n * @name GetCausalModel\n * @summary Get the full causal model for the tenant\n * @request GET:/api/v1/causal/model\n * @secure\n */\n getCausalModel = (params: RequestParams = {}) =>\n this.http.request<GetCausalModelResponse, any>({\n path: `/api/v1/causal/model`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n AddPendingReviewRequest,\n AddPendingReviewResponse,\n ApproveEntityRequest,\n BulkApproveRequest,\n BulkMergeRequest,\n BulkRejectRequest,\n BulkReviewResponse,\n CorrectEntityRequest,\n ListPendingReviewsResponse,\n MergeEntityRequest,\n ReExtractRequest,\n ReExtractResponse,\n RejectEntityRequest,\n ReviewActionResponse,\n ReviewSummaryDto,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Reviews<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description POST /api/v1/reviews/add\n *\n * @tags reviews\n * @name AddPendingReview\n * @summary Add a new pending review (internal API, called from ingestion pipeline)\n * @request POST:/api/v1/reviews/add\n * @secure\n */\n addPendingReview = (\n data: AddPendingReviewRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<AddPendingReviewResponse, void>({\n path: `/api/v1/reviews/add`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reviews/approve Creates a term from the approved entity.\n *\n * @tags reviews\n * @name ApproveEntity\n * @summary Approve an entity as-is\n * @request POST:/api/v1/reviews/approve\n * @secure\n */\n approveEntity = (data: ApproveEntityRequest, params: RequestParams = {}) =>\n this.http.request<ReviewActionResponse, void>({\n path: `/api/v1/reviews/approve`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reviews/bulk-approve Approves multiple reviews in a single transaction.\n *\n * @tags reviews\n * @name BulkApprove\n * @summary Bulk approve multiple reviews\n * @request POST:/api/v1/reviews/bulk-approve\n * @secure\n */\n bulkApprove = (data: BulkApproveRequest, params: RequestParams = {}) =>\n this.http.request<BulkReviewResponse, void>({\n path: `/api/v1/reviews/bulk-approve`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reviews/bulk-merge Merges multiple reviews into a single existing term.\n *\n * @tags reviews\n * @name BulkMerge\n * @summary Bulk merge multiple reviews into a single target term\n * @request POST:/api/v1/reviews/bulk-merge\n * @secure\n */\n bulkMerge = (data: BulkMergeRequest, params: RequestParams = {}) =>\n this.http.request<BulkReviewResponse, void>({\n path: `/api/v1/reviews/bulk-merge`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reviews/bulk-reject Rejects multiple reviews in a single transaction.\n *\n * @tags reviews\n * @name BulkReject\n * @summary Bulk reject multiple reviews\n * @request POST:/api/v1/reviews/bulk-reject\n * @secure\n */\n bulkReject = (data: BulkRejectRequest, params: RequestParams = {}) =>\n this.http.request<BulkReviewResponse, void>({\n path: `/api/v1/reviews/bulk-reject`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reviews/correct Allows correcting the sort and/or features before creating the term.\n *\n * @tags reviews\n * @name CorrectEntity\n * @summary Correct an entity before approval\n * @request POST:/api/v1/reviews/correct\n * @secure\n */\n correctEntity = (data: CorrectEntityRequest, params: RequestParams = {}) =>\n this.http.request<ReviewActionResponse, void>({\n path: `/api/v1/reviews/correct`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description GET /api/v1/reviews/summary/:tenant_id\n *\n * @tags reviews\n * @name GetReviewSummary\n * @summary Get review summary statistics\n * @request GET:/api/v1/reviews/summary/{tenant_id}\n * @secure\n */\n getReviewSummary = (tenantId: string, params: RequestParams = {}) =>\n this.http.request<ReviewSummaryDto, void>({\n path: `/api/v1/reviews/summary/${tenantId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description GET /api/v1/reviews/pending Returns paginated list of entities requiring human review.\n *\n * @tags reviews\n * @name ListPendingReviews\n * @summary List pending reviews for a tenant\n * @request GET:/api/v1/reviews/pending\n * @secure\n */\n listPendingReviews = (params: RequestParams = {}) =>\n this.http.request<ListPendingReviewsResponse, void>({\n path: `/api/v1/reviews/pending`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reviews/merge Merges the entity's features into an existing term.\n *\n * @tags reviews\n * @name MergeEntity\n * @summary Merge entity with an existing term\n * @request POST:/api/v1/reviews/merge\n * @secure\n */\n mergeEntity = (data: MergeEntityRequest, params: RequestParams = {}) =>\n this.http.request<ReviewActionResponse, void>({\n path: `/api/v1/reviews/merge`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reviews/re-extract Triggers re-extraction with potentially different parameters.\n *\n * @tags reviews\n * @name ReExtract\n * @summary Re-extract entities from a document\n * @request POST:/api/v1/reviews/re-extract\n * @secure\n */\n reExtract = (data: ReExtractRequest, params: RequestParams = {}) =>\n this.http.request<ReExtractResponse, void>({\n path: `/api/v1/reviews/re-extract`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reviews/reject Marks the entity as rejected (will be discarded).\n *\n * @tags reviews\n * @name RejectEntity\n * @summary Reject an entity\n * @request POST:/api/v1/reviews/reject\n * @secure\n */\n rejectEntity = (data: RejectEntityRequest, params: RequestParams = {}) =>\n this.http.request<ReviewActionResponse, void>({\n path: `/api/v1/reviews/reject`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n ConstraintGraphRequest,\n ConstraintGraphResponse,\n GlbLubComputationTrace,\n GlbLubTraceRequest,\n HypergraphRequest,\n HypergraphResponse,\n LatticeVisualizationRequest,\n LatticeVisualizationResponse,\n ResiduationStateRequest,\n ResiduationStateResponse,\n TriggerDependencyRequest,\n TriggerDependencyResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Visualization<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags visualization\n * @name GetConstraintGraph\n * @summary Get constraint dependency graph\n * @request POST:/api/v1/visualization/constraints\n * @secure\n */\n getConstraintGraph = (\n data: ConstraintGraphRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ConstraintGraphResponse, any>({\n path: `/api/v1/visualization/constraints`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags visualization\n * @name GetHypergraph\n * @summary Get OSF term hypergraph visualization\n * @request POST:/api/v1/visualization/hypergraph\n * @secure\n */\n getHypergraph = (data: HypergraphRequest, params: RequestParams = {}) =>\n this.http.request<HypergraphResponse, any>({\n path: `/api/v1/visualization/hypergraph`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags visualization\n * @name GetLatticeDot\n * @summary Get the lattice visualization as DOT format\n * @request GET:/api/v1/visualization/lattice/dot\n * @secure\n */\n getLatticeDot = (params: RequestParams = {}) =>\n this.http.request<void, any>({\n path: `/api/v1/visualization/lattice/dot`,\n method: \"GET\",\n secure: true,\n ...params,\n });\n /**\n * @description Returns a graph representation of the sort hierarchy with nodes for each sort and edges for subtype relationships. Supports filtering by root sort and depth.\n *\n * @tags visualization\n * @name GetLatticeVisualization\n * @summary Get the sort hierarchy lattice visualization\n * @request POST:/api/v1/visualization/lattice\n * @secure\n */\n getLatticeVisualization = (\n data: LatticeVisualizationRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<LatticeVisualizationResponse, any>({\n path: `/api/v1/visualization/lattice`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags visualization\n * @name GetResiduationState\n * @summary Get residuation state diagram\n * @request POST:/api/v1/visualization/residuation\n * @secure\n */\n getResiduationState = (\n data: ResiduationStateRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ResiduationStateResponse, any>({\n path: `/api/v1/visualization/residuation`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags visualization\n * @name GetTermSubgraph\n * @summary Get subgraph rooted at a specific term\n * @request GET:/api/v1/visualization/hypergraph/term/{term_id}\n * @secure\n */\n getTermSubgraph = (termId: string, params: RequestParams = {}) =>\n this.http.request<HypergraphResponse, any>({\n path: `/api/v1/visualization/hypergraph/term/${termId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags visualization\n * @name GetTriggerDependencies\n * @summary Get trigger dependency graph\n * @request POST:/api/v1/visualization/residuation/triggers\n * @secure\n */\n getTriggerDependencies = (\n data: TriggerDependencyRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<TriggerDependencyResponse, any>({\n path: `/api/v1/visualization/residuation/triggers`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags visualization\n * @name GlbLubTrace\n * @summary Compute GLB or LUB with trace\n * @request POST:/api/v1/visualization/lattice/glb-lub-trace\n * @secure\n */\n glbLubTrace = (data: GlbLubTraceRequest, params: RequestParams = {}) =>\n this.http.request<GlbLubComputationTrace, any>({\n path: `/api/v1/visualization/lattice/glb-lub-trace`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n EvaluatePatternRequest,\n EvaluatePatternResponse,\n GFlowNetSampleRequest,\n GFlowNetSampleResponse,\n LearnPatternRequest,\n LearnPatternResponse,\n ListPatternsResponse,\n SynthesizeRequest,\n SynthesizeResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Ilp<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description POST /api/v1/ilp/evaluate Executes a previously learned arithmetic pattern on new input values that were NOT in the training set. This proves the system learned the algorithm, not just memorized the examples. # Request Body ```json { \"pattern_id\": \"factorial_abc123\", \"inputs\": [6, 7, 8, 9, 10] } ``` # Response ```json { \"success\": true, \"results\": [ { \"input\": 6, \"output\": 720 }, { \"input\": 7, \"output\": 5040 }, { \"input\": 8, \"output\": 40320 }, { \"input\": 9, \"output\": 362880 }, { \"input\": 10, \"output\": 3628800 } ], \"processing_time_ms\": 1 } ```\n *\n * @tags ilp\n * @name EvaluatePattern\n * @summary Evaluate a learned pattern on new inputs.\n * @request POST:/api/v1/ilp/evaluate\n * @secure\n */\n evaluatePattern = (\n data: EvaluatePatternRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<EvaluatePatternResponse, void>({\n path: `/api/v1/ilp/evaluate`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/ilp/gflownet/sample Creates a GFlowNet synthesizer and samples diverse rule hypotheses for the target sort. Uses the trained neural guide when available for biased sampling toward promising regions.\n *\n * @tags ilp\n * @name GflownetSample\n * @summary Sample diverse hypotheses using GFlowNet.\n * @request POST:/api/v1/ilp/gflownet/sample\n * @secure\n */\n gflownetSample = (data: GFlowNetSampleRequest, params: RequestParams = {}) =>\n this.http.request<GFlowNetSampleResponse, void>({\n path: `/api/v1/ilp/gflownet/sample`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/ilp/learn Uses OSF/LIFE anti-unification and recursive schema detection to learn arithmetic patterns like factorial, fibonacci, and triangular numbers. # Request Body ```json { \"name\": \"factorial\", \"examples\": [ { \"input\": 0, \"output\": 1 }, { \"input\": 1, \"output\": 1 }, { \"input\": 2, \"output\": 2 }, { \"input\": 3, \"output\": 6 }, { \"input\": 4, \"output\": 24 }, { \"input\": 5, \"output\": 120 } ] } ``` # Response ```json { \"success\": true, \"pattern\": { \"operation\": \"multiplication\", \"input_feature\": \"input\", \"output_feature\": \"output\", \"base_case_inputs\": [0], \"confidence\": 1.0, \"description\": \"factorial(n) = n * factorial(n-1), base: factorial(0) = 1\" }, \"pattern_id\": \"factorial_abc123\", \"examples_used\": 6, \"processing_time_ms\": 5 } ```\n *\n * @tags ilp\n * @name LearnPattern\n * @summary Learn a pattern from training examples.\n * @request POST:/api/v1/ilp/learn\n * @secure\n */\n learnPattern = (data: LearnPatternRequest, params: RequestParams = {}) =>\n this.http.request<LearnPatternResponse, void>({\n path: `/api/v1/ilp/learn`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description GET /api/v1/ilp/patterns Returns all patterns that have been learned in this session.\n *\n * @tags ilp\n * @name ListPatterns\n * @summary List all learned patterns.\n * @request GET:/api/v1/ilp/patterns\n * @secure\n */\n listPatterns = (params: RequestParams = {}) =>\n this.http.request<ListPatternsResponse, any>({\n path: `/api/v1/ilp/patterns`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/ilp/synthesize Uses the trained GFlowNet neural guide (when available) for diverse hypothesis sampling, combined with symbolic verification against examples. Falls back to symbolic synthesis if GFlowNet doesn't find a solution.\n *\n * @tags ilp\n * @name SynthesizePattern\n * @summary Synthesize rules using neural-guided ILP with optional GFlowNet.\n * @request POST:/api/v1/ilp/synthesize\n * @secure\n */\n synthesizePattern = (data: SynthesizeRequest, params: RequestParams = {}) =>\n this.http.request<SynthesizeResponse, void>({\n path: `/api/v1/ilp/synthesize`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n ActionReviewResponse,\n ActionReviewSummaryDto,\n ApproveActionRequest,\n BulkActionReviewResponse,\n BulkApproveActionsRequest,\n BulkRejectActionsRequest,\n ListActionReviewsResponse,\n ModifyActionRequest,\n RejectActionRequest,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class ActionReviews<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description POST /api/v1/action-reviews/approve Approves the action to be executed as-is.\n *\n * @tags action-reviews\n * @name ApproveAction\n * @summary Approve an action for execution\n * @request POST:/api/v1/action-reviews/approve\n * @secure\n */\n approveAction = (data: ApproveActionRequest, params: RequestParams = {}) =>\n this.http.request<ActionReviewResponse, void>({\n path: `/api/v1/action-reviews/approve`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/action-reviews/bulk-approve\n *\n * @tags action-reviews\n * @name BulkApproveActions\n * @summary Bulk approve multiple action reviews\n * @request POST:/api/v1/action-reviews/bulk-approve\n * @secure\n */\n bulkApproveActions = (\n data: BulkApproveActionsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BulkActionReviewResponse, void>({\n path: `/api/v1/action-reviews/bulk-approve`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/action-reviews/bulk-reject\n *\n * @tags action-reviews\n * @name BulkRejectActions\n * @summary Bulk reject multiple action reviews\n * @request POST:/api/v1/action-reviews/bulk-reject\n * @secure\n */\n bulkRejectActions = (\n data: BulkRejectActionsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BulkActionReviewResponse, void>({\n path: `/api/v1/action-reviews/bulk-reject`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description GET /api/v1/action-reviews/summary Returns summary statistics for pending action reviews.\n *\n * @tags action-reviews\n * @name GetActionReviewSummary\n * @summary Get action review summary statistics\n * @request GET:/api/v1/action-reviews/summary\n * @secure\n */\n getActionReviewSummary = (\n query: {\n /**\n * Tenant ID to get summary for\n * @format uuid\n */\n tenant_id: string;\n },\n params: RequestParams = {},\n ) =>\n this.http.request<ActionReviewSummaryDto, void>({\n path: `/api/v1/action-reviews/summary`,\n method: \"GET\",\n query: query,\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description GET /api/v1/action-reviews/pending Returns paginated list of actions requiring human review.\n *\n * @tags action-reviews\n * @name ListPendingActionReviews\n * @summary List pending action reviews for a tenant\n * @request GET:/api/v1/action-reviews/pending\n * @secure\n */\n listPendingActionReviews = (params: RequestParams = {}) =>\n this.http.request<ListActionReviewsResponse, void>({\n path: `/api/v1/action-reviews/pending`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/action-reviews/modify Modifies the action parameters and approves for execution.\n *\n * @tags action-reviews\n * @name ModifyAction\n * @summary Modify and approve an action\n * @request POST:/api/v1/action-reviews/modify\n * @secure\n */\n modifyAction = (data: ModifyActionRequest, params: RequestParams = {}) =>\n this.http.request<ActionReviewResponse, void>({\n path: `/api/v1/action-reviews/modify`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/action-reviews/reject Rejects the action. It will not be executed.\n *\n * @tags action-reviews\n * @name RejectAction\n * @summary Reject an action\n * @request POST:/api/v1/action-reviews/reject\n * @secure\n */\n rejectAction = (data: RejectActionRequest, params: RequestParams = {}) =>\n this.http.request<ActionReviewResponse, void>({\n path: `/api/v1/action-reviews/reject`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n DiscoverEffectsRequest,\n DiscoverEffectsResponse,\n PredictFromDiscoveryRequest,\n PredictFromDiscoveryResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Discovery<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description POST /api/v1/discovery/effects Ingests time series data, discovers seasonal patterns, extracts effects, and stores everything in the OSF Knowledge Base as PsiTerms with FuzzyNumber features. This endpoint creates: - A Sort hierarchy for discovered regimes (e.g., seasons for weather data) - PsiTerms representing historical observations with effect features - Effect distributions that can be queried via /fuzzy/predict-effect # Request Body ```json { \"name\": \"weather_prediction\", \"data\": [ { \"timestamp\": \"2024-01-01T12:00:00Z\", \"values\": { \"temperature\": 5.0, \"humidity\": 80.0 } }, { \"timestamp\": \"2024-01-02T12:00:00Z\", \"values\": { \"temperature\": 7.0, \"humidity\": 75.0 } } ], \"target_feature\": \"temperature\", \"config\": { \"window_size\": 7, \"num_regimes\": 4 } } ``` # Response ```json { \"success\": true, \"regimes_discovered\": 4, \"effects_extracted\": 12, \"discovered_horizons\": [{ \"horizon\": 7, \"score\": 0.85, \"confidence\": 0.9 }], \"sort_ids\": { \"winter\": \"uuid\", \"spring\": \"uuid\", \"summer\": \"uuid\", \"fall\": \"uuid\" }, \"terms_created\": 365, \"root_sort_id\": \"uuid\", \"processing_time_ms\": 150 } ```\n *\n * @tags discovery\n * @name DiscoverEffects\n * @summary Train effect discovery model from time series data.\n * @request POST:/api/v1/discovery/effects\n * @secure\n */\n discoverEffects = (\n data: DiscoverEffectsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<DiscoverEffectsResponse, void>({\n path: `/api/v1/discovery/effects`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/discovery/predict Finds similar historical patterns and predicts effects using fuzzy search with PRODUCT t-norm reweighting for better aggregation.\n *\n * @tags discovery\n * @name PredictFromDiscovery\n * @summary Predict effects using discovered model.\n * @request POST:/api/v1/discovery/predict\n * @secure\n */\n predictFromDiscovery = (\n data: PredictFromDiscoveryRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<PredictFromDiscoveryResponse, void>({\n path: `/api/v1/discovery/predict`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n ExtractEntitiesRequest,\n ExtractEntitiesResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Extraction<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Uses GLiNER2 (zero-shot NER) with sort names from the tenant's knowledge base, guaranteeing that all returned entity labels are valid sort names. Label selection (when no explicit labels provided): Embed the input text and ANN-search the pre-computed sort embedding index (Qdrant) for the most semantically similar HPO sorts. This is O(log n) and typically returns 20-100 highly relevant labels from 19K+ HPO sorts. Requires: - GLiNER2 NER service (`GLINER_NER_URL`) - Qdrant vector store for semantic label selection If either is not configured, returns a 500 error.\n *\n * @tags extraction\n * @name ExtractEntities\n * @summary Extract named entities from text using the tenant's sort hierarchy as labels.\n * @request POST:/api/v1/extract/entities\n * @secure\n */\n extractEntities = (\n data: ExtractEntitiesRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ExtractEntitiesResponse, void>({\n path: `/api/v1/extract/entities`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n CreateSessionRequest,\n CreateSessionResponse,\n FinalizeSessionRequest,\n FormalJudgeRefinementResponse,\n FormalJudgeRequest,\n FormalJudgeResponse,\n IngestStepRequest,\n SessionStatusResponse,\n StepVerificationResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Oversight<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Create a new live oversight session.\n *\n * @tags oversight\n * @name CreateSession\n * @summary POST /api/v1/oversight/sessions\n * @request POST:/api/v1/oversight/sessions\n */\n createSession = (data: CreateSessionRequest, params: RequestParams = {}) =>\n this.http.request<CreateSessionResponse, void>({\n path: `/api/v1/oversight/sessions`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Finalize a live oversight session, running full verification and returning the final verdict.\n *\n * @tags oversight\n * @name FinalizeSession\n * @summary POST /api/v1/oversight/sessions/:session_id/finalize\n * @request POST:/api/v1/oversight/sessions/{session_id}/finalize\n */\n finalizeSession = (\n sessionId: string,\n data: FinalizeSessionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<FormalJudgeResponse, void>({\n path: `/api/v1/oversight/sessions/${sessionId}/finalize`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Get the current status of a live oversight session.\n *\n * @tags oversight\n * @name GetSessionStatus\n * @summary GET /api/v1/oversight/sessions/:session_id/status\n * @request GET:/api/v1/oversight/sessions/{session_id}/status\n */\n getSessionStatus = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<SessionStatusResponse, void>({\n path: `/api/v1/oversight/sessions/${sessionId}/status`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n /**\n * @description Ingest a single trajectory step and return incremental verification result.\n *\n * @tags oversight\n * @name IngestStep\n * @summary POST /api/v1/oversight/sessions/:session_id/steps\n * @request POST:/api/v1/oversight/sessions/{session_id}/steps\n */\n ingestStep = (\n sessionId: string,\n data: IngestStepRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<StepVerificationResponse, void>({\n path: `/api/v1/oversight/sessions/${sessionId}/steps`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags oversight\n * @name JudgeTrajectory\n * @summary POST /api/v1/oversight/judge\n * @request POST:/api/v1/oversight/judge\n */\n judgeTrajectory = (data: FormalJudgeRequest, params: RequestParams = {}) =>\n this.http.request<FormalJudgeResponse, void>({\n path: `/api/v1/oversight/judge`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Iterative refinement pipeline (paper §4.5). Performs multiple rounds of judgment, feeding fix suggestions back as additional constraints.\n *\n * @tags oversight\n * @name JudgeWithRefinement\n * @summary POST /api/v1/oversight/judge/refine\n * @request POST:/api/v1/oversight/judge/refine\n */\n judgeWithRefinement = (\n data: FormalJudgeRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<FormalJudgeRefinementResponse, void>({\n path: `/api/v1/oversight/judge/refine`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n CdlStatusResponse,\n ClassifySafetyRequest,\n ClassifySafetyResponse,\n DerivedInferenceRequest,\n DerivedInferenceResponse,\n DifferentiableFcRequest,\n DifferentiableFcResponse,\n DynamicAddSortRequest,\n DynamicAddSortResponse,\n MonadicFixpointRequest,\n MonadicFixpointResponse,\n SoftUnifyRequest,\n SoftUnifyResponse,\n TaggedFcRequest,\n TaggedFcResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Cdl<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags cdl\n * @name CdlStatus\n * @summary Returns the status of all CDL subsystem components.\n * @request GET:/api/v1/cdl/status\n * @secure\n */\n cdlStatus = (params: RequestParams = {}) =>\n this.http.request<CdlStatusResponse, any>({\n path: `/api/v1/cdl/status`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags cdl\n * @name ClassifySafety\n * @summary Classify text for safety violations using the CDL fact grounding layer (Phase 5). Encodes text to embedding, then runs through CDL sort-hierarchy-constrained classifier.\n * @request POST:/api/v1/cdl/classify-safety\n * @secure\n */\n classifySafety = (data: ClassifySafetyRequest, params: RequestParams = {}) =>\n this.http.request<ClassifySafetyResponse, any>({\n path: `/api/v1/cdl/classify-safety`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags cdl\n * @name DerivedInference\n * @summary Run the composed CDL derived layer (Phase 4): unification matcher → residuation gate → sort classifier. Takes pairs of feature vectors and produces match scores, gate decisions, and sort predictions.\n * @request POST:/api/v1/cdl/derived-inference\n * @secure\n */\n derivedInference = (\n data: DerivedInferenceRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<DerivedInferenceResponse, any>({\n path: `/api/v1/cdl/derived-inference`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags cdl\n * @name DifferentiableForwardChain\n * @summary Run differentiable forward chaining (Phase 2) on the tenant's knowledge base. Performs symbolic FC for soundness, then annotates facts with continuous weights based on rule attention and soft unification scores.\n * @request POST:/api/v1/cdl/forward-chain/differentiable\n * @secure\n */\n differentiableForwardChain = (\n data: DifferentiableFcRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<DifferentiableFcResponse, any>({\n path: `/api/v1/cdl/forward-chain/differentiable`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags cdl\n * @name DynamicAddSort\n * @summary Dynamically add a sort to the CDL architecture (Phase 6). New sort weights are initialized from parent sort weights (functorial inheritance). Existing predictions are preserved within tolerance.\n * @request POST:/api/v1/cdl/dynamic/add-sort\n * @secure\n */\n dynamicAddSort = (data: DynamicAddSortRequest, params: RequestParams = {}) =>\n this.http.request<DynamicAddSortResponse, any>({\n path: `/api/v1/cdl/dynamic/add-sort`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags cdl\n * @name MonadicFixpointHandler\n * @summary Run monadic inference to fixpoint (Phase 3). Repeatedly applies the OSF endofunctor T and monad multiplication μ until no new facts are derived: fixpoint(X) = μ(T(μ(T(... μ(T(η(X)))...))))\n * @request POST:/api/v1/cdl/monadic-fixpoint\n * @secure\n */\n monadicFixpointHandler = (\n data: MonadicFixpointRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<MonadicFixpointResponse, any>({\n path: `/api/v1/cdl/monadic-fixpoint`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags cdl\n * @name SoftUnifyTerms\n * @summary Perform soft (differentiable) unification between two terms (Phase 2). Returns a continuous confidence score ∈ [0,1] alongside the hard boolean result.\n * @request POST:/api/v1/cdl/soft-unify\n * @secure\n */\n softUnifyTerms = (data: SoftUnifyRequest, params: RequestParams = {}) =>\n this.http.request<SoftUnifyResponse, any>({\n path: `/api/v1/cdl/soft-unify`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags cdl\n * @name TaggedForwardChain\n * @summary Run provenance-annotated forward chaining (Phase 1) with probabilistic semiring. Each derived fact carries a probability tag propagated via noisy-OR / product.\n * @request POST:/api/v1/cdl/forward-chain/tagged\n * @secure\n */\n taggedForwardChain = (data: TaggedFcRequest, params: RequestParams = {}) =>\n this.http.request<TaggedFcResponse, any>({\n path: `/api/v1/cdl/forward-chain/tagged`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n PredictPreferencesRequest,\n PredictPreferencesResponse,\n RecordSelectionRequest,\n RecordSelectionResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Preferences<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description POST /api/v1/preferences/predict Returns candidates ranked by how well they match the user's learned preferences. Uses Gaussian likelihood for numeric features and frequency for categorical features.\n *\n * @tags preferences\n * @name PredictPreferences\n * @summary Predict preference scores for candidate terms using Bayesian inference\n * @request POST:/api/v1/preferences/predict\n * @secure\n */\n predictPreferences = (\n data: PredictPreferencesRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<PredictPreferencesResponse, any>({\n path: `/api/v1/preferences/predict`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/preferences/selection Updates the user's preference profile by learning from the selected term. If no profile exists for this (user, tenant, sort), creates a new one.\n *\n * @tags preferences\n * @name RecordSelection\n * @summary Record a user selection for preference learning\n * @request POST:/api/v1/preferences/selection\n * @secure\n */\n recordSelection = (\n data: RecordSelectionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<RecordSelectionResponse, void>({\n path: `/api/v1/preferences/selection`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n FindBySortRequest,\n NlQueryRequest,\n NlQueryResponse,\n OsfSearchRequest,\n OsfSearchResponse,\n TermListResponse,\n UnificationQueryRequest,\n UnificationQueryResponse,\n ValidatedTermRequest,\n ValidatedTermResponse,\n ValidatedUnifyRequest,\n ValidatedUnifyResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Query<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Returns all terms with the specified sort OR any of its subtypes. This implements proper OSF polymorphic query semantics where querying a parent sort returns all instances of that sort and its descendants.\n *\n * @tags query\n * @name FindBySort\n * @summary Find terms by sort (polymorphic query)\n * @request POST:/api/v1/query/by-sort\n * @secure\n */\n findBySort = (data: FindBySortRequest, params: RequestParams = {}) =>\n this.http.request<TermListResponse, any>({\n path: `/api/v1/query/by-sort`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags query\n * @name FindUnifiable\n * @summary Find unifiable terms\n * @request POST:/api/v1/query/unifiable\n * @secure\n */\n findUnifiable = (data: UnificationQueryRequest, params: RequestParams = {}) =>\n this.http.request<UnificationQueryResponse, any>({\n path: `/api/v1/query/unifiable`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Supports two modes: - \"llm\" (default): Uses LLM prompt engineering (Anthropic/local) - \"constraint\": Uses fine-tuned FunctionGemma constraint model Both modes translate NL → constraints → execution → results\n *\n * @tags query\n * @name NlQuery\n * @summary Handle natural language query\n * @request POST:/api/v1/nl/query\n * @secure\n */\n nlQuery = (data: NlQueryRequest, params: RequestParams = {}) =>\n this.http.request<NlQueryResponse, any>({\n path: `/api/v1/nl/query`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/query/osf-search Performs structured search using only OSF operations (no LLM). Returns matched entities with provenance, discovered relations, and any query incompleteness information. **Key differentiators from other search endpoints:** - `/api/v1/query/by-sort` - Returns terms, but no relation discovery - `/api/v1/fuzzy/similar` - Returns similarity scores, but no relation discovery - `/api/v1/communities/search` - Requires pre-detected communities **This endpoint provides:** - Automatic relation discovery between matched entities - Residuation for incomplete queries (tells you what's missing) - Structured results with full provenance - Namespace and collection filtering\n *\n * @tags query\n * @name OsfSearch\n * @summary Pure OSF Search\n * @request POST:/api/v1/query/osf-search\n * @secure\n */\n osfSearch = (data: OsfSearchRequest, params: RequestParams = {}) =>\n this.http.request<OsfSearchResponse, any>({\n path: `/api/v1/query/osf-search`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description This performs unification AND validates the result against the GLB sort's witnesses. ## How It Differs from Regular Unification **Regular `/api/v1/term-store/sessions/:id/unify` (POST)**: - Computes GLB and unifies terms - Validates sort constraints (required features, type hints) - Does NOT check witnesses **This endpoint `/api/v1/query/validated-unify` (POST)**: - Computes GLB and unifies terms - Validates sort constraints - ALSO checks witnesses on the result - Returns proof of validity ## Example Unifying `person(name => \"Alice\")` with `grandparent(grandchild => \"Charlie\")`: 1. Computes GLB of person and grandparent 2. Creates unified term with both features 3. Checks grandparent witnesses: ∃Y. parent(Alice,Y) ∧ parent(Y,Charlie) 4. Returns unified term + witness proof\n *\n * @tags query\n * @name ValidatedUnify\n * @summary Unify two terms with witness validation\n * @request POST:/api/v1/query/validated-unify\n * @secure\n */\n validatedUnify = (data: ValidatedUnifyRequest, params: RequestParams = {}) =>\n this.http.request<ValidatedUnifyResponse, void>({\n path: `/api/v1/query/validated-unify`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description This endpoint implements Hassan Aït-Kaci's vision where \"types ARE constraints\". When you create a term of a sort, this validates that the term satisfies the sort's existential witnesses (compiled from rules). ## How It Differs from Regular Term Creation **Regular `/api/v1/terms` (POST)**: - Just stores the term - No validation against type constraints - Fast but permissive **This endpoint `/api/v1/query/validate-term` (POST)**: - Validates term against sort's witnesses - Returns proof that term is legitimate - Slower but type-safe ## Example Given rule: `grandparent(X,Z) :- parent(X,Y), parent(Y,Z)` Creating `grandparent(person => alice, grandchild => charlie)`: - Checks: ∃Y such that parent(alice, Y) ∧ parent(Y, charlie) - If found (e.g., Y=bob): Returns valid=true with witness proof - If not found: Returns valid=false with explanation Uses HomoiconicWitnessFinder for pure homoiconic witness validation.\n *\n * @tags query\n * @name ValidateTerm\n * @summary Validate a term against its sort's witnesses\n * @request POST:/api/v1/query/validate-term\n * @secure\n */\n validateTerm = (data: ValidatedTermRequest, params: RequestParams = {}) =>\n this.http.request<ValidatedTermResponse, void>({\n path: `/api/v1/query/validate-term`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n FindSimilarRequest,\n FuzzySearchTopKRequest,\n FuzzyUnifyRequest,\n FuzzyUnifyResponse,\n PredictEffectRequest,\n PredictEffectResponse,\n SimilaritySearchResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Fuzzy<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description POST /fuzzy/similar Returns all terms with similarity >= min_degree\n *\n * @tags fuzzy\n * @name FindSimilar\n * @summary Find similar terms\n * @request POST:/api/v1/fuzzy/similar\n * @secure\n */\n findSimilar = (data: FindSimilarRequest, params: RequestParams = {}) =>\n this.http.request<SimilaritySearchResponse, any>({\n path: `/api/v1/fuzzy/similar`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/fuzzy/top-k Implements **Top-K similarity search** commonly used in RAG (Retrieval-Augmented Generation) systems. Returns the K most similar terms to a query, sorted by fuzzy similarity degree in **descending order** (best matches first). # Algorithm 1. Filter candidates by `min_degree` threshold (if specified) 2. Compute fuzzy similarity degree μ ∈ [0,1] for each candidate 3. Sort by similarity (descending - highest first) 4. Return top K results # Request Body ```json { \"query\": { \"term_id\": \"uuid\" // Or inline query with sort_id + features }, \"k\": 5, \"min_degree\": 0.7 // Optional: minimum similarity threshold } ``` # Response ```json { \"results\": [ { \"term\": { \"id\": \"...\", \"sort\": \"...\", \"features\": {...} }, \"degree\": 0.95, \"confidence_percent\": 95.0 }, // ... up to K results, sorted by degree (descending) ], \"count\": 5 } ``` # Sorting Guarantee Results are **always sorted by similarity** (highest first): `response.results[i].degree >= response.results[i+1].degree` # Use Cases - **RAG Context Retrieval**: Find most relevant knowledge for LLM prompts - **Semantic Search**: Find similar items without exact matches - **Recommendation Systems**: Suggest similar items to users - **Deduplication**: Identify near-duplicate entries # Example Find 3 most similar sensors with at least 60% similarity: ```bash curl -X POST http://localhost:8080/api/v1/fuzzy/top-k \\ -H \"Content-Type: application/json\" \\ -d '{ \"query\": { \"term_id\": \"abc-123\" }, \"k\": 3, \"min_degree\": 0.6 }' ``` Response (sorted by similarity): ```json { \"results\": [ { \"term\": {...}, \"degree\": 0.92, \"confidence_percent\": 92.0 }, { \"term\": {...}, \"degree\": 0.85, \"confidence_percent\": 85.0 }, { \"term\": {...}, \"degree\": 0.73, \"confidence_percent\": 73.0 } ], \"count\": 3 } ```\n *\n * @tags fuzzy\n * @name FuzzySearchTopK\n * @summary Find top-K most similar terms (RAG-style retrieval)\n * @request POST:/api/v1/fuzzy/top-k\n * @secure\n */\n fuzzySearchTopK = (\n data: FuzzySearchTopKRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<SimilaritySearchResponse, any>({\n path: `/api/v1/fuzzy/top-k`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /fuzzy/unify Returns unified term with confidence degree\n *\n * @tags fuzzy\n * @name FuzzyUnify\n * @summary Fuzzy unify two terms\n * @request POST:/api/v1/fuzzy/unify\n * @secure\n */\n fuzzyUnify = (data: FuzzyUnifyRequest, params: RequestParams = {}) =>\n this.http.request<FuzzyUnifyResponse, any>({\n path: `/api/v1/fuzzy/unify`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/fuzzy/predict-effect This endpoint implements term-based Bayesian effect prediction: 1. Finds similar terms using fuzzy similarity search 2. Extracts FuzzyNumber effect values from matching terms 3. Merges them using Bayesian conjugate update (for Gaussians) 4. Returns the merged posterior distribution\n *\n * @tags fuzzy\n * @name PredictEffect\n * @summary Predict effect by finding similar terms and merging their effects\n * @request POST:/api/v1/fuzzy/predict-effect\n * @secure\n */\n predictEffect = (data: PredictEffectRequest, params: RequestParams = {}) =>\n this.http.request<PredictEffectResponse, void>({\n path: `/api/v1/fuzzy/predict-effect`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n AddConstraintsRequest,\n AddConstraintsResponse,\n BindVariablesRequest,\n BindVariablesResponse,\n CleanupSessionsResponse,\n CreateSessionRequest,\n CreateSessionResponse,\n DeleteSessionResponse,\n SessionStatusResponse,\n SolveConstraintRequest,\n SolveConstraintResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Constraints<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags constraints\n * @name AddConstraints\n * @summary Add constraints incrementally to an existing session\n * @request POST:/api/v1/constraint-sessions/{session_id}/constraints\n * @secure\n */\n addConstraints = (\n sessionId: string,\n data: AddConstraintsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<AddConstraintsResponse, void>({\n path: `/api/v1/constraint-sessions/${sessionId}/constraints`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags constraints\n * @name BindVariables\n * @summary Bind variables to trigger constraint propagation\n * @request POST:/api/v1/constraint-sessions/{session_id}/bindings\n * @secure\n */\n bindVariables = (\n sessionId: string,\n data: BindVariablesRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BindVariablesResponse, void>({\n path: `/api/v1/constraint-sessions/${sessionId}/bindings`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags constraints\n * @name CleanupOldSessions\n * @summary Clean up old sessions (should be called periodically)\n * @request POST:/api/v1/constraint-sessions/cleanup\n * @secure\n */\n cleanupOldSessions = (params: RequestParams = {}) =>\n this.http.request<CleanupSessionsResponse, void>({\n path: `/api/v1/constraint-sessions/cleanup`,\n method: \"POST\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags constraints\n * @name CreateSession\n * @summary Create a new constraint session\n * @request POST:/api/v1/constraint-sessions\n * @secure\n */\n createSession = (data: CreateSessionRequest, params: RequestParams = {}) =>\n this.http.request<CreateSessionResponse, void>({\n path: `/api/v1/constraint-sessions`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags constraints\n * @name DeleteSession\n * @summary Delete a constraint session\n * @request DELETE:/api/v1/constraint-sessions/{session_id}\n * @secure\n */\n deleteSession = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<DeleteSessionResponse, void>({\n path: `/api/v1/constraint-sessions/${sessionId}`,\n method: \"DELETE\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags constraints\n * @name GetSessionStatus\n * @summary Get status of a constraint session\n * @request GET:/api/v1/constraint-sessions/{session_id}\n * @secure\n */\n getSessionStatus = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<SessionStatusResponse, void>({\n path: `/api/v1/constraint-sessions/${sessionId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags constraints\n * @name ListSessions\n * @summary List all active sessions (for debugging/admin)\n * @request GET:/api/v1/constraint-sessions\n * @secure\n */\n listSessions = (params: RequestParams = {}) =>\n this.http.request<SessionStatusResponse[], void>({\n path: `/api/v1/constraint-sessions`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description For problems where you have all constraints upfront and want immediate results. Uses IncrementalConstraintStore internally with automatic cleanup. Process: 1. Creates temporary constraint store 2. Binds initial variables (if provided) 3. Adds all constraints 4. Solves via automatic propagation 5. Returns solution (store auto-cleans) For incremental solving where constraints arrive over time: Use POST /api/v1/constraint-sessions and related endpoints.\n *\n * @tags constraints\n * @name SolveConstraints\n * @summary Solve a constraint problem in one shot\n * @request POST:/api/v1/constraints/solve\n * @secure\n */\n solveConstraints = (\n data: SolveConstraintRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<SolveConstraintResponse, void>({\n path: `/api/v1/constraints/solve`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n DisentailmentRequest,\n DisentailmentResponse,\n EntailmentRequest,\n EntailmentResponse,\n EvidenceAssessmentRequest,\n EvidenceAssessmentResponse,\n FuzzyMergeRequest,\n FuzzyMergeResponse,\n FuzzySubsumptionRequest,\n FuzzySubsumptionResponse,\n GoalResiduationRequest,\n GoalResiduationResponse,\n ResiduationRequest,\n ResiduationResponse,\n ResourceCoordinationRequest,\n ResourceCoordinationResponse,\n TemporalPlanRequest,\n TemporalPlanResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Reasoning<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description POST /api/v1/reasoning/disentailment Disentailment A =/=> B means: \"if A holds, then B must NOT hold\" Returns whether the disentailment is violated (conflict: both A and B hold)\n *\n * @tags reasoning\n * @name Disentailment\n * @summary Check disentailment between two clauses\n * @request POST:/api/v1/reasoning/disentailment\n */\n disentailment = (data: DisentailmentRequest, params: RequestParams = {}) =>\n this.http.request<DisentailmentResponse, any>({\n path: `/api/v1/reasoning/disentailment`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reasoning/entailment Returns whether antecedent entails consequent\n *\n * @tags reasoning\n * @name Entailment\n * @summary Check entailment between clauses\n * @request POST:/api/v1/reasoning/entailment\n */\n entailment = (data: EntailmentRequest, params: RequestParams = {}) =>\n this.http.request<EntailmentResponse, any>({\n path: `/api/v1/reasoning/entailment`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reasoning/assess Computes truthfulness/validity of a subject based on related evidence. Uses fuzzy T-norm aggregation and residuation for insufficient evidence. This is GENERIC and works for any domain: - Health claims with medical evidence - News articles with fact-check sources - Scientific hypotheses with experimental data - Any subject-evidence relationship # Algorithm 1. Query all evidence terms linked to the subject 2. Separate into supporting vs contradicting evidence 3. Check residuation: if max evidence quality < threshold, suspend judgment 4. Compute T-norm aggregation of evidence contributions 5. Apply optional penalty (e.g., manipulation signals) 6. Return truthfulness score with label\n *\n * @tags reasoning\n * @name EvidenceAssessment\n * @summary Generic evidence-based assessment\n * @request POST:/api/v1/reasoning/assess\n * @secure\n */\n evidenceAssessment = (\n data: EvidenceAssessmentRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<EvidenceAssessmentResponse, void>({\n path: `/api/v1/reasoning/assess`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reasoning/merge Combines two terms by merging their features with fuzzy accumulation\n *\n * @tags reasoning\n * @name FuzzyMerge\n * @summary Merge two terms using fuzzy merging\n * @request POST:/api/v1/reasoning/merge\n */\n fuzzyMerge = (data: FuzzyMergeRequest, params: RequestParams = {}) =>\n this.http.request<FuzzyMergeResponse, any>({\n path: `/api/v1/reasoning/merge`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reasoning/subsumption Returns a degree μ ∈ [0,1] indicating how well specific is subsumed by general\n *\n * @tags reasoning\n * @name FuzzySubsumption\n * @summary Check fuzzy subsumption between two terms\n * @request POST:/api/v1/reasoning/subsumption\n */\n fuzzySubsumption = (\n data: FuzzySubsumptionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<FuzzySubsumptionResponse, any>({\n path: `/api/v1/reasoning/subsumption`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reasoning/goal-residuation Given a goal sort name and the sorts already available as evidence, analyses the rule base to find which antecedent sorts are missing. Returns entries sorted by information gain (most useful evidence first).\n *\n * @tags reasoning\n * @name GoalResiduation\n * @summary Compute goal-level residuation: which antecedent sorts are still needed?\n * @request POST:/api/v1/reasoning/goal-residuation\n * @secure\n */\n goalResiduation = (\n data: GoalResiduationRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<GoalResiduationResponse, void>({\n path: `/api/v1/reasoning/goal-residuation`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reasoning/residuate Returns suspended operations and resumption triggers\n *\n * @tags reasoning\n * @name Residuation\n * @summary Check residuation status\n * @request POST:/api/v1/reasoning/residuate\n */\n residuation = (data: ResiduationRequest, params: RequestParams = {}) =>\n this.http.request<ResiduationResponse, any>({\n path: `/api/v1/reasoning/residuate`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reasoning/resource-coordination **CURRENT STATUS**: This endpoint currently only supports 2-way pairwise coordination. **TODO**: Migrate to N-way coordination as defined in the updated DTOs. This is a GENERIC endpoint that works for ANY pairing scenario: - Meals + Wines (food service) - Tasks + Tools (project management) - Outfits + Occasions (fashion) - etc. The system knows nothing about wine or meals - it's purely generic. **Migration needed**: 1. Update to accept `resources: Vec<ResourceSpec>` instead of primary/secondary 2. Implement N-way compatibility algorithm in domain layer 3. Update service layer to handle N resources 4. Return `CoordinatedResourceSet` instead of `PairedResourceDto` 5. See RESOURCE_COORDINATION_EXAMPLES.md for target API design\n *\n * @tags reasoning\n * @name ResourceCoordination\n * @summary Resource coordination planning endpoint (generic multi-resource pairing)\n * @request POST:/api/v1/reasoning/resource-coordination\n * @secure\n */\n resourceCoordination = (\n data: ResourceCoordinationRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ResourceCoordinationResponse, void>({\n path: `/api/v1/reasoning/resource-coordination`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reasoning/temporal-plan Creates a temporal plan by selecting N terms from a sort while ensuring diversity according to specified constraints. This is useful for: - Weekly meal planning (7 recipes, no repeating cuisines) - Event scheduling (avoid conflicts) - Resource allocation with diversity requirements # Example Request ```json { \"tenant_id\": \"123e4567-e89b-12d3-a456-426614174000\", \"sort_id\": \"recipe-sort-uuid\", \"num_selections\": 7, \"no_repeat_fields\": [\"cuisine\"] } ``` # Example Response ```json { \"selected_term_ids\": [\"term1-uuid\", \"term2-uuid\", ...], \"diversity_score\": 0.95, \"candidates_count\": 150, \"computation_time_ms\": 42 } ```\n *\n * @tags reasoning\n * @name TemporalPlan\n * @summary Plan selections with diversity constraints (Temporal Planning)\n * @request POST:/api/v1/reasoning/temporal-plan\n * @secure\n */\n temporalPlan = (data: TemporalPlanRequest, params: RequestParams = {}) =>\n this.http.request<TemporalPlanResponse, void>({\n path: `/api/v1/reasoning/temporal-plan`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n ConditionalIndependenceRequest,\n ConditionalIndependenceResponse,\n CorrelationRequest,\n CorrelationResponse,\n DiscoverCausalRequest,\n DiscoverCausalResponse,\n DiscoveryStatusResponse,\n DynamicDiscoveryRequest,\n DynamicDiscoveryResponse,\n InterventionObservationRequest,\n InterventionObservationResponse,\n ObserveMultiRequest,\n ObserveMultiResponse,\n ObservePairRequest,\n ObservePairResponse,\n ObserveSingleRequest,\n ObserveSingleResponse,\n PartialCorrelationRequest,\n PartialCorrelationResponse,\n StatisticalSuccessResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Statistical<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description This endpoint clears all observed data from the statistical store, allowing tests or workflows to start with fresh data.\n *\n * @tags statistical\n * @name ClearStatisticalData\n * @summary Clear all statistical data\n * @request POST:/api/v1/statistical/clear-data\n * @secure\n */\n clearStatisticalData = (params: RequestParams = {}) =>\n this.http.request<StatisticalSuccessResponse, any>({\n path: `/api/v1/statistical/clear-data`,\n method: \"POST\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags statistical\n * @name DiscoverCausal\n * @summary Run causal discovery using DynamicDiscoveryEngine\n * @request POST:/api/v1/statistical/discover-causal\n * @secure\n */\n discoverCausal = (data: DiscoverCausalRequest, params: RequestParams = {}) =>\n this.http.request<DiscoverCausalResponse, any>({\n path: `/api/v1/statistical/discover-causal`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags statistical\n * @name DynamicDiscovery\n * @summary Run dynamic causal discovery with full proof tree and recommendations\n * @request POST:/api/v1/statistical/dynamic-discovery\n * @secure\n */\n dynamicDiscovery = (\n data: DynamicDiscoveryRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<DynamicDiscoveryResponse, any>({\n path: `/api/v1/statistical/dynamic-discovery`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags statistical\n * @name GetCorrelation\n * @summary Get correlation between two variables\n * @request POST:/api/v1/statistical/correlation\n * @secure\n */\n getCorrelation = (data: CorrelationRequest, params: RequestParams = {}) =>\n this.http.request<CorrelationResponse, any>({\n path: `/api/v1/statistical/correlation`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags statistical\n * @name GetDiscoveryStatus\n * @summary Get current discovery status\n * @request GET:/api/v1/statistical/discovery-status\n * @secure\n */\n getDiscoveryStatus = (params: RequestParams = {}) =>\n this.http.request<DiscoveryStatusResponse, any>({\n path: `/api/v1/statistical/discovery-status`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags statistical\n * @name GetPartialCorrelation\n * @summary Get partial correlation controlling for a set of variables\n * @request POST:/api/v1/statistical/partial-correlation\n * @secure\n */\n getPartialCorrelation = (\n data: PartialCorrelationRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<PartialCorrelationResponse, any>({\n path: `/api/v1/statistical/partial-correlation`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags statistical\n * @name ObserveMulti\n * @summary Observe multiple variables at once\n * @request POST:/api/v1/statistical/observe-multi\n * @secure\n */\n observeMulti = (data: ObserveMultiRequest, params: RequestParams = {}) =>\n this.http.request<ObserveMultiResponse, any>({\n path: `/api/v1/statistical/observe-multi`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags statistical\n * @name ObservePair\n * @summary Observe a pair of variables\n * @request POST:/api/v1/statistical/observe-pair\n * @secure\n */\n observePair = (data: ObservePairRequest, params: RequestParams = {}) =>\n this.http.request<ObservePairResponse, any>({\n path: `/api/v1/statistical/observe-pair`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags statistical\n * @name ObserveSingle\n * @summary Observe a single variable value\n * @request POST:/api/v1/statistical/observe\n * @secure\n */\n observeSingle = (data: ObserveSingleRequest, params: RequestParams = {}) =>\n this.http.request<ObserveSingleResponse, any>({\n path: `/api/v1/statistical/observe`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags statistical\n * @name RecordInterventionObservation\n * @summary Record an intervention observation to resolve uncertain edges\n * @request POST:/api/v1/statistical/intervention-observation\n * @secure\n */\n recordInterventionObservation = (\n data: InterventionObservationRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<InterventionObservationResponse, any>({\n path: `/api/v1/statistical/intervention-observation`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags statistical\n * @name ResetDiscovery\n * @summary Reset the discovery engine\n * @request POST:/api/v1/statistical/reset-discovery\n * @secure\n */\n resetDiscovery = (params: RequestParams = {}) =>\n this.http.request<StatisticalSuccessResponse, any>({\n path: `/api/v1/statistical/reset-discovery`,\n method: \"POST\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags statistical\n * @name TestConditionalIndependence\n * @summary Test conditional independence\n * @request POST:/api/v1/statistical/test-independence\n * @secure\n */\n testConditionalIndependence = (\n data: ConditionalIndependenceRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ConditionalIndependenceResponse, any>({\n path: `/api/v1/statistical/test-independence`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n AddSymbolRequest,\n AddSymbolResponse,\n BacktrackableAssignRequest,\n BacktrackableAssignResponse,\n CallOnceRequest,\n CallOnceResponse,\n CondRequest,\n CondResponse,\n CreateModuleRequest,\n CreateModuleResponse,\n CutRequest,\n CutResponse,\n FindallRequest,\n FindallResponse,\n ForallRequest,\n ForallResponse,\n GlobalAssignRequest,\n GlobalAssignResponse,\n GlobalGetRequest,\n GlobalGetResponse,\n GlobalIncrementRequest,\n GlobalIncrementResponse,\n ImpliesRequest,\n ImpliesResponse,\n ImportModuleRequest,\n ImportModuleResponse,\n ListSymbolsRequest,\n ListSymbolsResponse,\n NafRequest,\n NafResponse,\n ResolveSymbolRequest,\n ResolveSymbolResponse,\n UndoRequest,\n UndoResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Control<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags control\n * @name AddSymbol\n * @summary Add symbol to module POST /api/v1/modules/:name/symbols\n * @request POST:/api/v1/modules/symbols\n * @secure\n */\n addSymbol = (data: AddSymbolRequest, params: RequestParams = {}) =>\n this.http.request<AddSymbolResponse, void>({\n path: `/api/v1/modules/symbols`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name AssignBacktrackable\n * @summary Backtrackable assignment POST /api/v1/control/assign/backtrackable\n * @request POST:/api/v1/control/assign/backtrackable\n * @secure\n */\n assignBacktrackable = (\n data: BacktrackableAssignRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BacktrackableAssignResponse, void>({\n path: `/api/v1/control/assign/backtrackable`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name AssignGlobal\n * @summary Global assignment POST /api/v1/control/assign/global\n * @request POST:/api/v1/control/assign/global\n * @secure\n */\n assignGlobal = (data: GlobalAssignRequest, params: RequestParams = {}) =>\n this.http.request<GlobalAssignResponse, void>({\n path: `/api/v1/control/assign/global`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name ControlCallOnce\n * @summary Execute with cut (call_once) POST /api/v1/control/call-once\n * @request POST:/api/v1/control/call-once\n * @secure\n */\n controlCallOnce = (data: CallOnceRequest, params: RequestParams = {}) =>\n this.http.request<CallOnceResponse, void>({\n path: `/api/v1/control/call-once`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name ControlCond\n * @summary Execute conditional (if-then-else) POST /api/v1/control/cond\n * @request POST:/api/v1/control/cond\n * @secure\n */\n controlCond = (data: CondRequest, params: RequestParams = {}) =>\n this.http.request<CondResponse, void>({\n path: `/api/v1/control/cond`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name ControlCut\n * @summary Execute cut POST /api/v1/control/cut\n * @request POST:/api/v1/control/cut\n * @secure\n */\n controlCut = (data: CutRequest, params: RequestParams = {}) =>\n this.http.request<CutResponse, void>({\n path: `/api/v1/control/cut`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name ControlFindall\n * @summary Collect all solutions (findall) POST /api/v1/control/findall\n * @request POST:/api/v1/control/findall\n * @secure\n */\n controlFindall = (data: FindallRequest, params: RequestParams = {}) =>\n this.http.request<FindallResponse, void>({\n path: `/api/v1/control/findall`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name ControlForall\n * @summary Universal quantification (forall) POST /api/v1/control/forall\n * @request POST:/api/v1/control/forall\n * @secure\n */\n controlForall = (data: ForallRequest, params: RequestParams = {}) =>\n this.http.request<ForallResponse, void>({\n path: `/api/v1/control/forall`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name ControlImplies\n * @summary Evaluate implication (A -> B) POST /api/v1/control/implies\n * @request POST:/api/v1/control/implies\n * @secure\n */\n controlImplies = (data: ImpliesRequest, params: RequestParams = {}) =>\n this.http.request<ImpliesResponse, void>({\n path: `/api/v1/control/implies`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name ControlNaf\n * @summary Negation as failure POST /api/v1/control/naf\n * @request POST:/api/v1/control/naf\n * @secure\n */\n controlNaf = (data: NafRequest, params: RequestParams = {}) =>\n this.http.request<NafResponse, void>({\n path: `/api/v1/control/naf`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name ControlUndo\n * @summary Register undo action POST /api/v1/control/undo\n * @request POST:/api/v1/control/undo\n * @secure\n */\n controlUndo = (data: UndoRequest, params: RequestParams = {}) =>\n this.http.request<UndoResponse, void>({\n path: `/api/v1/control/undo`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name CreateModule\n * @summary Create a module POST /api/v1/modules\n * @request POST:/api/v1/modules\n * @secure\n */\n createModule = (data: CreateModuleRequest, params: RequestParams = {}) =>\n this.http.request<CreateModuleResponse, void>({\n path: `/api/v1/modules`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name GlobalGet\n * @summary Get global variable POST /api/v1/control/global/get\n * @request POST:/api/v1/control/global/get\n * @secure\n */\n globalGet = (data: GlobalGetRequest, params: RequestParams = {}) =>\n this.http.request<GlobalGetResponse, void>({\n path: `/api/v1/control/global/get`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name GlobalIncrement\n * @summary Global increment POST /api/v1/control/global/incr\n * @request POST:/api/v1/control/global/incr\n * @secure\n */\n globalIncrement = (\n data: GlobalIncrementRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<GlobalIncrementResponse, void>({\n path: `/api/v1/control/global/incr`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name ImportModule\n * @summary Import a module POST /api/v1/modules/import\n * @request POST:/api/v1/modules/import\n * @secure\n */\n importModule = (data: ImportModuleRequest, params: RequestParams = {}) =>\n this.http.request<ImportModuleResponse, void>({\n path: `/api/v1/modules/import`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name ListSymbols\n * @summary List module symbols POST /api/v1/modules/:name/symbols/list\n * @request POST:/api/v1/modules/symbols/list\n * @secure\n */\n listSymbols = (data: ListSymbolsRequest, params: RequestParams = {}) =>\n this.http.request<ListSymbolsResponse, void>({\n path: `/api/v1/modules/symbols/list`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name ResolveSymbol\n * @summary Resolve qualified symbol name POST /api/v1/modules/resolve\n * @request POST:/api/v1/modules/resolve\n * @secure\n */\n resolveSymbol = (data: ResolveSymbolRequest, params: RequestParams = {}) =>\n this.http.request<ResolveSymbolResponse, void>({\n path: `/api/v1/modules/resolve`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n CommitRequest,\n CreateSpaceRequest,\n SearchRequest,\n SearchResponse,\n SpaceResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Spaces<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags spaces\n * @name CloneSpace\n * @summary Clone a computation space for parallel exploration\n * @request POST:/api/v1/spaces/{space_id}/clone\n * @secure\n */\n cloneSpace = (spaceId: string, params: RequestParams = {}) =>\n this.http.request<SpaceResponse, void>({\n path: `/api/v1/spaces/${spaceId}/clone`,\n method: \"POST\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags spaces\n * @name CommitSpace\n * @summary Commit to an alternative in a space\n * @request POST:/api/v1/spaces/{space_id}/commit\n * @secure\n */\n commitSpace = (\n spaceId: string,\n data: CommitRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<SpaceResponse, void>({\n path: `/api/v1/spaces/${spaceId}/commit`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags spaces\n * @name CreateSpace\n * @summary Create a new computation space\n * @request POST:/api/v1/spaces\n * @secure\n */\n createSpace = (data: CreateSpaceRequest, params: RequestParams = {}) =>\n this.http.request<SpaceResponse, void>({\n path: `/api/v1/spaces`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags spaces\n * @name GetSpace\n * @summary Get the status of a computation space\n * @request GET:/api/v1/spaces/{space_id}\n * @secure\n */\n getSpace = (spaceId: string, params: RequestParams = {}) =>\n this.http.request<SpaceResponse, void>({\n path: `/api/v1/spaces/${spaceId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags spaces\n * @name SearchSpace\n * @summary Search for solutions in a space\n * @request POST:/api/v1/spaces/{space_id}/search\n * @secure\n */\n searchSpace = (\n spaceId: string,\n data: SearchRequest,\n query?: {\n /** Value ordering strategy (e.g., \"min\", \"max\", \"median\") */\n value_ordering?: string | null;\n },\n params: RequestParams = {},\n ) =>\n this.http.request<SearchResponse, void>({\n path: `/api/v1/spaces/${spaceId}/search`,\n method: \"POST\",\n query: query,\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n DynamicQueryRequest,\n DynamicQueryResponse,\n RowIntegrateRequest,\n RowIntegrateResponse,\n RowSearchRequest,\n RowSearchResponse,\n RowSimilarityRequest,\n RowSimilarityResponse,\n RowUnifyRequest,\n RowUnifyResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class RowPolymorphism<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Execute pattern-based queries with support for exact matching, type checking, comparisons, regex, and variable bindings. ## Example Use Case: Complex Filtered Queries Find all products where price > 100 and category contains \"electronics\": ```json { \"clauses\": [ {\"feature\": \"price\", \"pattern\": {\"type\": \"greater_than\", \"value\": 100}}, {\"feature\": \"category\", \"pattern\": {\"type\": \"contains\", \"substring\": \"electronics\"}} ], \"project\": [\"name\", \"price\", \"category\"], \"sort_by\": \"price\", \"descending\": true } ```\n *\n * @tags row-polymorphism\n * @name DynamicQuery\n * @summary Dynamic query building\n * @request POST:/api/v1/row/query\n * @secure\n */\n dynamicQuery = (data: DynamicQueryRequest, params: RequestParams = {}) =>\n this.http.request<DynamicQueryResponse, any>({\n path: `/api/v1/row/query`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Find groups of entities that share common feature values (potential duplicates or related entities across different schemas/sources). ## Example Use Case: Cross-Source Entity Matching Find entities that have the same \"email\" and \"name\" across different data sources: ```json { \"match_features\": [\"email\", \"name\"], \"min_similarity\": 0.9, \"source_namespaces\": [\"crm_data\", \"marketing_data\", \"support_data\"] } ```\n *\n * @tags row-polymorphism\n * @name RowIntegrate\n * @summary Feature-based data integration\n * @request POST:/api/v1/row/integrate\n * @secure\n */\n rowIntegrate = (data: RowIntegrateRequest, params: RequestParams = {}) =>\n this.http.request<RowIntegrateResponse, any>({\n path: `/api/v1/row/integrate`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Find all entities matching a row pattern (feature requirements) regardless of sort. This is \"structural typing\" for knowledge bases - query by structure, not by type. ## Example Use Case: Multi-Domain Entity Discovery Find all entities with a \"name\" and \"location\" feature, whether they're Person, Company, Building, Event, or any other sort: ```json { \"pattern\": { \"features\": [ {\"name\": \"name\", \"feature_type\": \"string\"}, {\"name\": \"location\", \"feature_type\": \"string\"} ], \"open\": true } } ```\n *\n * @tags row-polymorphism\n * @name RowSearch\n * @summary Schema-flexible entity search\n * @request POST:/api/v1/row/search\n * @secure\n */\n rowSearch = (data: RowSearchRequest, params: RequestParams = {}) =>\n this.http.request<RowSearchResponse, any>({\n path: `/api/v1/row/search`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Calculate the similarity between two row types based on feature overlap.\n *\n * @tags row-polymorphism\n * @name RowSimilarity\n * @summary Compute row type similarity\n * @request POST:/api/v1/row/similarity\n * @secure\n */\n rowSimilarity = (data: RowSimilarityRequest, params: RequestParams = {}) =>\n this.http.request<RowSimilarityResponse, any>({\n path: `/api/v1/row/similarity`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Try to unify two row types and return the result.\n *\n * @tags row-polymorphism\n * @name RowUnify\n * @summary Compute row type unification\n * @request POST:/api/v1/row/unify\n * @secure\n */\n rowUnify = (data: RowUnifyRequest, params: RequestParams = {}) =>\n this.http.request<RowUnifyResponse, any>({\n path: `/api/v1/row/unify`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n AddExportRequest,\n AddImportRequest,\n CreateChildNamespaceRequest,\n CreateRootNamespaceRequest,\n NamespaceListResponse,\n NamespaceResponse,\n UpdateMetadataRequest,\n UpdateVisibilityRequest,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Namespaces<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags namespaces\n * @name AddNamespaceExport\n * @summary Add an export to a namespace\n * @request POST:/api/v1/namespaces/{id}/exports\n * @secure\n */\n addNamespaceExport = (\n id: string,\n data: AddExportRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<void, void>({\n path: `/api/v1/namespaces/${id}/exports`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n ...params,\n });\n /**\n * No description\n *\n * @tags namespaces\n * @name AddNamespaceImport\n * @summary Add an import to a namespace\n * @request POST:/api/v1/namespaces/{id}/imports\n * @secure\n */\n addNamespaceImport = (\n id: string,\n data: AddImportRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<void, void>({\n path: `/api/v1/namespaces/${id}/imports`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n ...params,\n });\n /**\n * @description # Authorization Requires X-Tenant-Id header. The tenant_id field in the request body is ignored.\n *\n * @tags namespaces\n * @name CreateChildNamespace\n * @summary Create a child namespace\n * @request POST:/api/v1/namespaces/child\n * @secure\n */\n createChildNamespace = (\n data: CreateChildNamespaceRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<NamespaceResponse, void>({\n path: `/api/v1/namespaces/child`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description # Authorization Requires X-Tenant-Id header. The tenant_id field in the request body is ignored.\n *\n * @tags namespaces\n * @name CreateRootNamespace\n * @summary Create a root namespace\n * @request POST:/api/v1/namespaces\n * @secure\n */\n createRootNamespace = (\n data: CreateRootNamespaceRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<NamespaceResponse, void>({\n path: `/api/v1/namespaces`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags namespaces\n * @name DeleteNamespace\n * @summary Delete a namespace\n * @request DELETE:/api/v1/namespaces/{id}\n * @secure\n */\n deleteNamespace = (id: string, params: RequestParams = {}) =>\n this.http.request<void, void>({\n path: `/api/v1/namespaces/${id}`,\n method: \"DELETE\",\n secure: true,\n ...params,\n });\n /**\n * No description\n *\n * @tags namespaces\n * @name GetNamespace\n * @summary Get a namespace by ID\n * @request GET:/api/v1/namespaces/{id}\n * @secure\n */\n getNamespace = (id: string, params: RequestParams = {}) =>\n this.http.request<NamespaceResponse, void>({\n path: `/api/v1/namespaces/${id}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags namespaces\n * @name GetNamespaceAncestors\n * @summary Get ancestors of a namespace (from root to parent)\n * @request GET:/api/v1/namespaces/{id}/ancestors\n * @secure\n */\n getNamespaceAncestors = (id: string, params: RequestParams = {}) =>\n this.http.request<NamespaceListResponse, void>({\n path: `/api/v1/namespaces/${id}/ancestors`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags namespaces\n * @name GetNamespaceByPath\n * @summary Get a namespace by path\n * @request GET:/api/v1/namespaces/path/{tenant_id}/{path}\n * @secure\n */\n getNamespaceByPath = (\n tenantId: string,\n path: string,\n params: RequestParams = {},\n ) =>\n this.http.request<NamespaceResponse, void>({\n path: `/api/v1/namespaces/path/${tenantId}/${path}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags namespaces\n * @name GetNamespaceChildren\n * @summary Get children of a namespace\n * @request GET:/api/v1/namespaces/{id}/children\n * @secure\n */\n getNamespaceChildren = (id: string, params: RequestParams = {}) =>\n this.http.request<NamespaceListResponse, void>({\n path: `/api/v1/namespaces/${id}/children`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags namespaces\n * @name ListNamespaces\n * @summary List all namespaces for a tenant\n * @request GET:/api/v1/namespaces/tenant/{tenant_id}\n * @secure\n */\n listNamespaces = (tenantId: string, params: RequestParams = {}) =>\n this.http.request<NamespaceListResponse, void>({\n path: `/api/v1/namespaces/tenant/${tenantId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags namespaces\n * @name UpdateNamespaceMetadata\n * @summary Update namespace metadata\n * @request PUT:/api/v1/namespaces/{id}/metadata\n * @secure\n */\n updateNamespaceMetadata = (\n id: string,\n data: UpdateMetadataRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<void, void>({\n path: `/api/v1/namespaces/${id}/metadata`,\n method: \"PUT\",\n body: data,\n secure: true,\n type: ContentType.Json,\n ...params,\n });\n /**\n * No description\n *\n * @tags namespaces\n * @name UpdateNamespaceVisibility\n * @summary Update namespace visibility\n * @request PUT:/api/v1/namespaces/{id}/visibility\n * @secure\n */\n updateNamespaceVisibility = (\n id: string,\n data: UpdateVisibilityRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<void, void>({\n path: `/api/v1/namespaces/${id}/visibility`,\n method: \"PUT\",\n body: data,\n secure: true,\n type: ContentType.Json,\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n CreateScenarioRequest,\n CreateScenarioResponse,\n GetScenarioResponse,\n ListScenariosResponse,\n UpdateScenarioRequest,\n UpdateScenarioResponse,\n VerifyScenarioRequest,\n VerifyScenarioResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Scenarios<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Generates an OSFKB scenario from a natural language task description using an LLM, then materializes it into the knowledge base (sorts, beliefs, rules, goals, webhook actions, tools, curriculum, groundings). Supports multi-turn clarification.\n *\n * @tags scenarios\n * @name CreateScenario\n * @summary Generate and materialize a scenario from natural language\n * @request POST:/api/v1/scenarios\n * @secure\n */\n createScenario = (data: CreateScenarioRequest, params: RequestParams = {}) =>\n this.http.request<CreateScenarioResponse, void>({\n path: `/api/v1/scenarios`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Returns the full scenario definition and materialization metadata for a previously created scenario, looked up from the tenant's Psi-term store.\n *\n * @tags scenarios\n * @name GetScenario\n * @summary Retrieve a scenario by ID\n * @request GET:/api/v1/scenarios/{scenario_id}\n * @secure\n */\n getScenario = (scenarioId: string, params: RequestParams = {}) =>\n this.http.request<GetScenarioResponse, void>({\n path: `/api/v1/scenarios/${scenarioId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description Returns scenario summaries sorted by most recent first, including counts of materialized sorts, beliefs, and rules.\n *\n * @tags scenarios\n * @name ListScenarios\n * @summary List all scenarios for the current tenant\n * @request GET:/api/v1/scenarios\n * @secure\n */\n listScenarios = (params: RequestParams = {}) =>\n this.http.request<ListScenariosResponse, any>({\n path: `/api/v1/scenarios`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description Adds new sorts, beliefs, rules, constraints, guard constraints, temporal constraints, and/or webhook actions to an existing scenario without re-creating everything from scratch.\n *\n * @tags scenarios\n * @name UpdateScenario\n * @summary Incrementally update a scenario\n * @request PATCH:/api/v1/scenarios/{scenario_id}\n * @secure\n */\n updateScenario = (\n scenarioId: string,\n data: UpdateScenarioRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<UpdateScenarioResponse, void>({\n path: `/api/v1/scenarios/${scenarioId}`,\n method: \"PATCH\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Performs structural verification of materialization steps, then attempts FormalJudge semantic verification if an LLM is configured. Falls back gracefully to structural-only verification when the LLM is unavailable.\n *\n * @tags scenarios\n * @name VerifyScenario\n * @summary Verify a scenario with FormalJudge analysis\n * @request POST:/api/v1/scenarios/{scenario_id}/verify\n * @secure\n */\n verifyScenario = (\n scenarioId: string,\n data: VerifyScenarioRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<VerifyScenarioResponse, void>({\n path: `/api/v1/scenarios/${scenarioId}/verify`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n ConfirmResponseDto,\n ExplorationCompleteResponseDto,\n ExplorationStatusResponseDto,\n RefuteRequestDto,\n RefuteResponseDto,\n SortDiscoveryRequestDto,\n SortDiscoveryResponseDto,\n StartExplorationRequestDto,\n StartExplorationResponseDto,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Analysis<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Runs Ganter's Next Closure algorithm on existing PsiTerms to discover formal concepts (feature-set intersections) not captured by existing sorts. Returns ranked recommendations with confidence scores and optional auto-creation. When `fuzzy_thresholds` is non-empty, also runs fuzzy FCA at each alpha-cut level.\n *\n * @tags analysis\n * @name AnalyzeSortDiscovery\n * @summary Analyze the knowledge base for missing sort boundaries via FCA.\n * @request POST:/api/v1/analysis/sort-discovery\n */\n analyzeSortDiscovery = (\n data: SortDiscoveryRequestDto,\n params: RequestParams = {},\n ) =>\n this.http.request<SortDiscoveryResponseDto, void>({\n path: `/api/v1/analysis/sort-discovery`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description The exploration must be complete (no more questions) before calling this. Creates appropriateness sorts in the hierarchy from the Duquenne-Guigues basis.\n *\n * @tags analysis\n * @name CompleteExploration\n * @summary Complete the exploration and create sort rules from confirmed implications.\n * @request POST:/api/v1/analysis/attribute-exploration/{session_id}/complete\n */\n completeExploration = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<ExplorationCompleteResponseDto, void>({\n path: `/api/v1/analysis/attribute-exploration/${sessionId}/complete`,\n method: \"POST\",\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags analysis\n * @name ConfirmImplication\n * @summary Confirm the current implication: the expert agrees it holds.\n * @request POST:/api/v1/analysis/attribute-exploration/{session_id}/confirm\n */\n confirmImplication = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<ConfirmResponseDto, void>({\n path: `/api/v1/analysis/attribute-exploration/${sessionId}/confirm`,\n method: \"POST\",\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags analysis\n * @name ExplorationStatus\n * @summary Get the current status of an exploration session.\n * @request GET:/api/v1/analysis/attribute-exploration/{session_id}/status\n */\n explorationStatus = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<ExplorationStatusResponseDto, void>({\n path: `/api/v1/analysis/attribute-exploration/${sessionId}/status`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n /**\n * @description The counterexample must have all premise features but lack at least one conclusion feature.\n *\n * @tags analysis\n * @name RefuteImplication\n * @summary Refute the current implication with a counterexample.\n * @request POST:/api/v1/analysis/attribute-exploration/{session_id}/refute\n */\n refuteImplication = (\n sessionId: string,\n data: RefuteRequestDto,\n params: RequestParams = {},\n ) =>\n this.http.request<RefuteResponseDto, void>({\n path: `/api/v1/analysis/attribute-exploration/${sessionId}/refute`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Builds a formal context from the tenant's knowledge base terms and initializes the Ganter exploration protocol.\n *\n * @tags analysis\n * @name StartExploration\n * @summary Start a new attribute exploration session.\n * @request POST:/api/v1/analysis/attribute-exploration/start\n */\n startExploration = (\n data: StartExplorationRequestDto,\n params: RequestParams = {},\n ) =>\n this.http.request<StartExplorationResponseDto, void>({\n path: `/api/v1/analysis/attribute-exploration/start`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n EvaluateFunctionRequest,\n EvaluateFunctionResponse,\n RegisterFunctionRequest,\n RegisterFunctionResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Functions<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags functions\n * @name EvaluateFunction\n * @summary Handler to evaluate a function using LIFE-style FunctionEvaluator\n * @request POST:/api/v1/functions/evaluate\n * @secure\n */\n evaluateFunction = (\n data: EvaluateFunctionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<EvaluateFunctionResponse, void>({\n path: `/api/v1/functions/evaluate`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags functions\n * @name RegisterFunction\n * @summary Handler to register a user-defined function\n * @request POST:/api/v1/functions/register\n * @secure\n */\n registerFunction = (\n data: RegisterFunctionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<RegisterFunctionResponse, void>({\n path: `/api/v1/functions/register`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n InvokeActionRequest,\n InvokeActionResponse,\n ListExternalActionsResponse,\n ListPendingInvocationsResponse,\n RegisterExternalActionRequest,\n RegisterExternalActionResponse,\n WebhookCallbackRequest,\n WebhookCallbackResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class WebhookActions<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Binds output values to the action Ψ-term's features and fires demons.\n *\n * @tags webhook-actions\n * @name CompleteInvocation\n * @summary Complete a pending invocation (receive webhook callback).\n * @request POST:/api/v1/invocations/{id}/complete\n */\n completeInvocation = (\n id: string,\n data: WebhookCallbackRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<WebhookCallbackResponse, void>({\n path: `/api/v1/invocations/${id}/complete`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Creates an action Ψ-term with inputs, creates a pending invocation, attaches a demon for residuation, and returns the invocation ID.\n *\n * @tags webhook-actions\n * @name InvokeAction\n * @summary Invoke a registered external action.\n * @request POST:/api/v1/external-actions/{name}/invoke\n */\n invokeAction = (\n name: string,\n data: InvokeActionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<InvokeActionResponse, void>({\n path: `/api/v1/external-actions/${name}/invoke`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags webhook-actions\n * @name ListExternalActions\n * @summary List all registered external actions for a tenant.\n * @request GET:/api/v1/external-actions\n */\n listExternalActions = (\n query: {\n /**\n * Tenant ID\n * @format uuid\n */\n tenant_id: string;\n },\n params: RequestParams = {},\n ) =>\n this.http.request<ListExternalActionsResponse, any>({\n path: `/api/v1/external-actions`,\n method: \"GET\",\n query: query,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags webhook-actions\n * @name ListPendingInvocations\n * @summary List pending invocations for a tenant.\n * @request GET:/api/v1/invocations\n */\n listPendingInvocations = (\n query: {\n /**\n * Tenant ID\n * @format uuid\n */\n tenant_id: string;\n },\n params: RequestParams = {},\n ) =>\n this.http.request<ListPendingInvocationsResponse, any>({\n path: `/api/v1/invocations`,\n method: \"GET\",\n query: query,\n format: \"json\",\n ...params,\n });\n /**\n * @description Creates a sort inheriting from `effect` in the sort hierarchy.\n *\n * @tags webhook-actions\n * @name RegisterExternalAction\n * @summary Register a new external action type.\n * @request POST:/api/v1/external-actions\n */\n registerExternalAction = (\n data: RegisterExternalActionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<RegisterExternalActionResponse, void>({\n path: `/api/v1/external-actions`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n CalibrateRequest,\n CalibrationReportDto,\n CheckDiversityRequest,\n CheckDiversityResponse,\n ExportJsonlResponse,\n GenerateNegativesRequest,\n GenerateNegativesResponse,\n GenerateSyntheticDataRequest,\n GenerateSyntheticDataResponse,\n GenerationPromptRequest,\n GenerationPromptResponse,\n VerbalizeTermRequest,\n VerbalizeTermResponse,\n VerifyFaithfulnessRequest,\n VerifyFaithfulnessResponse,\n VerifyRoundTripRequest,\n VerifyRoundTripResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Synthetic<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Creates a structured prompt with a stable prefix (cacheable across batch calls) and dynamic content for a specific term. Mirrors the extraction pipeline's prompt architecture for KV-cache reuse. # Authorization Requires X-Tenant-Id header for tenant-scoped operations.\n *\n * @tags synthetic\n * @name BuildGenerationPrompt\n * @summary Build a generation prompt for LLM-based verbalization.\n * @request POST:/api/v1/synthetic/generation-prompt\n * @secure\n */\n buildGenerationPrompt = (\n data: GenerationPromptRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<GenerationPromptResponse, void>({\n path: `/api/v1/synthetic/generation-prompt`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Computes per-sort and per-feature Expected Calibration Error, identifies augmentation targets, and allocates exponential budgets for targeted synthetic data generation.\n *\n * @tags synthetic\n * @name Calibrate\n * @summary Run ECE calibration on extraction predictions.\n * @request POST:/api/v1/synthetic/calibrate\n * @secure\n */\n calibrate = (data: CalibrateRequest, params: RequestParams = {}) =>\n this.http.request<CalibrationReportDto, void>({\n path: `/api/v1/synthetic/calibrate`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Computes structural similarity using Wu-Palmer sort distance and Jaccard feature overlap. Returns novelty score and closest match. # Authorization Requires X-Tenant-Id header for tenant-scoped operations.\n *\n * @tags synthetic\n * @name CheckDiversity\n * @summary Check diversity of a candidate term against existing terms in the knowledge base.\n * @request POST:/api/v1/synthetic/check-diversity\n * @secure\n */\n checkDiversity = (data: CheckDiversityRequest, params: RequestParams = {}) =>\n this.http.request<CheckDiversityResponse, void>({\n path: `/api/v1/synthetic/check-diversity`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Generates synthetic data and returns it directly as JSONL (one JSON object per line), suitable for HuggingFace-compatible fine-tuning pipelines. # Authorization Requires X-Tenant-Id header for tenant-scoped generation.\n *\n * @tags synthetic\n * @name ExportJsonl\n * @summary Export synthetic training data as JSONL format.\n * @request POST:/api/v1/synthetic/export-jsonl\n * @secure\n */\n exportJsonl = (\n data: GenerateSyntheticDataRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ExportJsonlResponse, void>({\n path: `/api/v1/synthetic/export-jsonl`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Uses principled strategies to create training examples that are negative (invalid) for specific, documented reasons: sort incompatibility, feature perturbation, cross-sort confusion, missing required features, and feature type mismatch. # Authorization Requires X-Tenant-Id header for tenant-scoped operations.\n *\n * @tags synthetic\n * @name GenerateNegatives\n * @summary Generate enhanced negative examples for target sorts.\n * @request POST:/api/v1/synthetic/negatives\n * @secure\n */\n generateNegatives = (\n data: GenerateNegativesRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<GenerateNegativesResponse, void>({\n path: `/api/v1/synthetic/negatives`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Uses constraint solving (backward chaining, CLP(FD), MCMC, forward chaining) to generate valid Ψ-terms, then converts them into multi-format training pairs for SLM fine-tuning. Supports 5 training pair formats: Extraction, QuestionAnswer, FillBlank, Negative, and MultiHop. # Authorization Requires X-Tenant-Id header for tenant-scoped generation.\n *\n * @tags synthetic\n * @name GenerateSynthetic\n * @summary Generate synthetic training data from the knowledge base.\n * @request POST:/api/v1/synthetic/generate\n * @secure\n */\n generateSynthetic = (\n data: GenerateSyntheticDataRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<GenerateSyntheticDataResponse, void>({\n path: `/api/v1/synthetic/generate`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Converts a PsiTerm into natural language text using the specified strategy. Useful for on-demand text generation from existing terms. # Authorization Requires X-Tenant-Id header for tenant-scoped operations.\n *\n * @tags synthetic\n * @name VerbalizeTerm\n * @summary Verbalize a single term from the knowledge base.\n * @request POST:/api/v1/synthetic/verbalize\n * @secure\n */\n verbalizeTerm = (data: VerbalizeTermRequest, params: RequestParams = {}) =>\n this.http.request<VerbalizeTermResponse, void>({\n path: `/api/v1/synthetic/verbalize`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Compares original entity features against extracted features to determine if the generated text faithfully represents the source Ψ-term. Uses exact string matching with configurable thresholds for score and recovery rate. # Authorization Requires X-Tenant-Id header for tenant-scoped operations.\n *\n * @tags synthetic\n * @name VerifyFaithfulness\n * @summary Verify faithfulness of generated text against source entities.\n * @request POST:/api/v1/synthetic/verify-faithfulness\n * @secure\n */\n verifyFaithfulness = (\n data: VerifyFaithfulnessRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<VerifyFaithfulnessResponse, void>({\n path: `/api/v1/synthetic/verify-faithfulness`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Uses OSF-aware verification with Wu-Palmer sort similarity, feature-level comparison with type-aware value similarity, and Hungarian algorithm for optimal entity matching. # Authorization Requires X-Tenant-Id header for tenant-scoped operations.\n *\n * @tags synthetic\n * @name VerifyRoundTrip\n * @summary Verify round-trip faithfulness of extracted entities against ground truth.\n * @request POST:/api/v1/synthetic/verify-round-trip\n * @secure\n */\n verifyRoundTrip = (\n data: VerifyRoundTripRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<VerifyRoundTripResponse, void>({\n path: `/api/v1/synthetic/verify-round-trip`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n AssertRuleRequest,\n AssertRuleResponse,\n BacktrackTermStoreRequest,\n BacktrackTermStoreResponse,\n BindVariableRequest,\n BindVariableResponse,\n CreateRuleStoreRequest,\n CreateStoreTermRequest,\n CreateTermResponse,\n CreateTermStoreRequest,\n CreateVariableRequest,\n DereferenceRequest,\n DereferenceResponse,\n EvalBuiltinRequest,\n EvalBuiltinResponse,\n FindRulesRequest,\n FindRulesResponse,\n GetStoreTermRequest,\n GetStoreTermResponse,\n ListEvalFunctionsRequest,\n ListEvalFunctionsResponse,\n MarkRuleStoreRequest,\n MarkRuleStoreResponse,\n MarkTermStoreRequest,\n MarkTermStoreResponse,\n RetractRuleRequest,\n RetractRuleResponse,\n RuleStoreResponse,\n SetFeatureRequest,\n SetFeatureResponse,\n TermStoreSessionResponse,\n UndoRuleStoreRequest,\n UndoRuleStoreResponse,\n UnifyTermsRequest,\n UnifyTermsResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class ProofEngine<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags proof-engine\n * @name AssertRule\n * @summary Assert a rule\n * @request POST:/api/v1/proof-engine/rule-store/sessions/{store_id}/assert\n * @secure\n */\n assertRule = (\n storeId: string,\n data: AssertRuleRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<AssertRuleResponse, void>({\n path: `/api/v1/proof-engine/rule-store/sessions/${storeId}/assert`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name BacktrackTermStore\n * @summary Backtrack to a marker\n * @request POST:/api/v1/proof-engine/term-store/sessions/{session_id}/backtrack\n * @secure\n */\n backtrackTermStore = (\n sessionId: string,\n data: BacktrackTermStoreRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BacktrackTermStoreResponse, void>({\n path: `/api/v1/proof-engine/term-store/sessions/${sessionId}/backtrack`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name BindStoreVariable\n * @summary Bind a variable to a term\n * @request POST:/api/v1/proof-engine/term-store/sessions/{session_id}/bind\n * @secure\n */\n bindStoreVariable = (\n sessionId: string,\n data: BindVariableRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BindVariableResponse, void>({\n path: `/api/v1/proof-engine/term-store/sessions/${sessionId}/bind`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name CreateRuleStoreSession\n * @summary Create a new rule store session\n * @request POST:/api/v1/proof-engine/rule-store/sessions\n * @secure\n */\n createRuleStoreSession = (\n data: CreateRuleStoreRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<RuleStoreResponse, void>({\n path: `/api/v1/proof-engine/rule-store/sessions`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name CreateStoreTerm\n * @summary Create a term in the term store\n * @request POST:/api/v1/proof-engine/term-store/sessions/{session_id}/terms\n * @secure\n */\n createStoreTerm = (\n sessionId: string,\n data: CreateStoreTermRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<CreateTermResponse, void>({\n path: `/api/v1/proof-engine/term-store/sessions/${sessionId}/terms`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name CreateStoreVariable\n * @summary Create a variable in the term store\n * @request POST:/api/v1/proof-engine/term-store/sessions/{session_id}/variables\n * @secure\n */\n createStoreVariable = (\n sessionId: string,\n data: CreateVariableRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<CreateTermResponse, void>({\n path: `/api/v1/proof-engine/term-store/sessions/${sessionId}/variables`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name CreateTermStoreSession\n * @summary Create a new term store session\n * @request POST:/api/v1/proof-engine/term-store/sessions\n * @secure\n */\n createTermStoreSession = (\n data: CreateTermStoreRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<TermStoreSessionResponse, void>({\n path: `/api/v1/proof-engine/term-store/sessions`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name DereferenceStoreTerm\n * @summary Dereference a term\n * @request POST:/api/v1/proof-engine/term-store/sessions/{session_id}/dereference\n * @secure\n */\n dereferenceStoreTerm = (\n sessionId: string,\n data: DereferenceRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<DereferenceResponse, void>({\n path: `/api/v1/proof-engine/term-store/sessions/${sessionId}/dereference`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name EvalBuiltin\n * @summary Evaluate a built-in function\n * @request POST:/api/v1/proof-engine/eval\n * @secure\n */\n evalBuiltin = (data: EvalBuiltinRequest, params: RequestParams = {}) =>\n this.http.request<EvalBuiltinResponse, void>({\n path: `/api/v1/proof-engine/eval`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name FindRules\n * @summary Find matching rules\n * @request POST:/api/v1/proof-engine/rule-store/sessions/{store_id}/find\n * @secure\n */\n findRules = (\n storeId: string,\n data: FindRulesRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<FindRulesResponse, void>({\n path: `/api/v1/proof-engine/rule-store/sessions/${storeId}/find`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name GetRuleStoreSession\n * @summary Get rule store status\n * @request GET:/api/v1/proof-engine/rule-store/sessions/{store_id}\n * @secure\n */\n getRuleStoreSession = (storeId: string, params: RequestParams = {}) =>\n this.http.request<RuleStoreResponse, void>({\n path: `/api/v1/proof-engine/rule-store/sessions/${storeId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name GetStoreTerm\n * @summary Get term details\n * @request POST:/api/v1/proof-engine/term-store/sessions/{session_id}/terms/get\n * @secure\n */\n getStoreTerm = (\n sessionId: string,\n data: GetStoreTermRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<GetStoreTermResponse, void>({\n path: `/api/v1/proof-engine/term-store/sessions/${sessionId}/terms/get`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name GetTermStoreSession\n * @summary Get term store session status\n * @request GET:/api/v1/proof-engine/term-store/sessions/{session_id}\n * @secure\n */\n getTermStoreSession = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<TermStoreSessionResponse, void>({\n path: `/api/v1/proof-engine/term-store/sessions/${sessionId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name ListEvalFunctions\n * @summary List available eval functions\n * @request POST:/api/v1/proof-engine/eval/functions\n * @secure\n */\n listEvalFunctions = (\n data: ListEvalFunctionsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ListEvalFunctionsResponse, void>({\n path: `/api/v1/proof-engine/eval/functions`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name MarkRuleStore\n * @summary Mark a rule store checkpoint\n * @request POST:/api/v1/proof-engine/rule-store/sessions/{store_id}/mark\n * @secure\n */\n markRuleStore = (\n storeId: string,\n data: MarkRuleStoreRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<MarkRuleStoreResponse, void>({\n path: `/api/v1/proof-engine/rule-store/sessions/${storeId}/mark`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name MarkTermStore\n * @summary Mark a choice point\n * @request POST:/api/v1/proof-engine/term-store/sessions/{session_id}/mark\n * @secure\n */\n markTermStore = (\n sessionId: string,\n data: MarkTermStoreRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<MarkTermStoreResponse, void>({\n path: `/api/v1/proof-engine/term-store/sessions/${sessionId}/mark`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description TRUE HOMOICONICITY: Uses TermStore's RuleIndex with trail support for backtracking.\n *\n * @tags proof-engine\n * @name RetractRule\n * @summary Retract rules by ID or pattern.\n * @request POST:/api/v1/proof-engine/rule-store/sessions/{store_id}/retract\n * @secure\n */\n retractRule = (\n storeId: string,\n data: RetractRuleRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<RetractRuleResponse, void>({\n path: `/api/v1/proof-engine/rule-store/sessions/${storeId}/retract`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name SetStoreFeature\n * @summary Set a feature on a term\n * @request POST:/api/v1/proof-engine/term-store/sessions/{session_id}/features\n * @secure\n */\n setStoreFeature = (\n sessionId: string,\n data: SetFeatureRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<SetFeatureResponse, void>({\n path: `/api/v1/proof-engine/term-store/sessions/${sessionId}/features`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name UndoRuleStore\n * @summary Undo to a rule store checkpoint\n * @request POST:/api/v1/proof-engine/rule-store/sessions/{store_id}/undo\n * @secure\n */\n undoRuleStore = (\n storeId: string,\n data: UndoRuleStoreRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<UndoRuleStoreResponse, void>({\n path: `/api/v1/proof-engine/rule-store/sessions/${storeId}/undo`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name UnifyStoreTerms\n * @summary Unify two terms\n * @request POST:/api/v1/proof-engine/term-store/sessions/{session_id}/unify\n * @secure\n */\n unifyStoreTerms = (\n sessionId: string,\n data: UnifyTermsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<UnifyTermsResponse, void>({\n path: `/api/v1/proof-engine/term-store/sessions/${sessionId}/unify`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport { EnrichedHealthResponse } from \"./data-contracts\";\nimport { HttpClient, RequestParams } from \"./http-client\";\n\nexport class Health<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Returns overall status, individual component statuses, and build information. This replaces the legacy static `/health` with a comprehensive view.\n *\n * @tags health\n * @name HealthCheck\n * @summary Enriched health check endpoint\n * @request GET:/health\n */\n healthCheck = (params: RequestParams = {}) =>\n this.http.request<EnrichedHealthResponse, EnrichedHealthResponse>({\n path: `/health`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport { FactoryResetResponse, ListTenantsResponse } from \"./data-contracts\";\nimport { HttpClient, RequestParams } from \"./http-client\";\n\nexport class Admin<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Destructive operation that wipes all PostgreSQL tables, Qdrant vector collections, Valkey cache, and in-memory tenant inference states. Equivalent to docker volume rm. Use only for development/testing.\n *\n * @tags admin\n * @name ClearAllData\n * @summary Factory reset — wipe ALL data\n * @request POST:/api/v1/admin/clear-all\n */\n clearAllData = (params: RequestParams = {}) =>\n this.http.request<FactoryResetResponse, void>({\n path: `/api/v1/admin/clear-all`,\n method: \"POST\",\n format: \"json\",\n ...params,\n });\n /**\n * @description Returns all tenant IDs that have terms or ingestion sessions, with counts. No X-Tenant-Id header required. Works in both PostgreSQL and in-memory modes.\n *\n * @tags admin\n * @name ListTenants\n * @summary List all tenants with data\n * @request GET:/api/v1/admin/tenants\n */\n listTenants = (params: RequestParams = {}) =>\n this.http.request<ListTenantsResponse, any>({\n path: `/api/v1/admin/tenants`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport { ExtractImageRequest, ExtractImageResponse } from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class ImageExtraction<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Sends the image directly to a vision-capable model (Qwen3-VL) for concept extraction. Returns extracted entities, relations, and suggested sorts. If `persist=true` (default), the extracted concepts are persisted as PsiTerms and synced to the homoiconic inference stores.\n *\n * @tags image-extraction\n * @name ExtractImage\n * @summary Extract concepts from an image using a vision LLM.\n * @request POST:/api/v1/extract/image\n * @secure\n */\n extractImage = (data: ExtractImageRequest, params: RequestParams = {}) =>\n this.http.request<ExtractImageResponse, void>({\n path: `/api/v1/extract/image`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n GenerateOntologyRequest,\n GenerateOntologyResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Ontology<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description # Errors - 503 if no LLM is configured - 422 if the LLM returns invalid JSON after retries - 502 if the LLM service fails\n *\n * @tags ontology\n * @name Generate\n * @summary Generate an OSFKB scenario from a natural language task description.\n * @request POST:/api/v1/ontology/generate\n * @secure\n */\n generate = (data: GenerateOntologyRequest, params: RequestParams = {}) =>\n this.http.request<GenerateOntologyResponse, void>({\n path: `/api/v1/ontology/generate`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n GenerateDocumentRequest,\n GenerateDocumentResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Generation<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags generation\n * @name GenerateDocument\n * @summary Runs the evidence-grounded generation pipeline for a given root term.\n * @request POST:/api/v1/generate\n * @secure\n */\n generateDocument = (\n data: GenerateDocumentRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<GenerateDocumentResponse, void>({\n path: `/api/v1/generate`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n OntologyRagRequestDto,\n OntologyRagResponseDto,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Rag<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description POST /api/v1/rag/ontology Performs True Ontology RAG combining embedding search with OSF/LIFE feature unification: 1. Embedding search - find matching Ψ-terms via multilingual embeddings 2. Feature unification - navigate prerequisites/dependents via Ψ-term features 3. Emergent discovery - find relations via fuzzy feature unification This is a domain-agnostic API. The caller provides: - Feature names via `feature_config` (e.g., \"requires\", \"depends_on\") - Optional concept values and threshold for flagging (e.g., mastery scores) The caller is responsible for interpreting the results (coaching, medical, etc.)\n *\n * @tags rag\n * @name OntologyRag\n * @summary Generic Ontology RAG endpoint\n * @request POST:/api/v1/rag/ontology\n * @secure\n */\n ontologyRag = (data: OntologyRagRequestDto, params: RequestParams = {}) =>\n this.http.request<OntologyRagResponseDto, void>({\n path: `/api/v1/rag/ontology`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","import type { Sorts as GeneratedSorts } from '../api-spec/generated/Sorts.js';\nimport type { Types as GeneratedTypes } from '../api-spec/generated/Types.js';\nimport type {\n SortDto,\n SortInfoDto,\n CreateSortRequest,\n BulkCreateSortsRequest,\n BulkCreateSortsResponse,\n GlbRequest,\n GlbResponse,\n LubRequest,\n LubResponse,\n DecodeGlbResponse,\n SortCompareRequest,\n SortCompareResponse,\n UpdateReviewStatusRequest,\n GetSortSimilarityRequest,\n GetSortSimilarityResponse,\n SetSortSimilarityRequest,\n SetSortSimilarityResponse,\n BulkSetSimilaritiesRequest,\n BulkSetSimilaritiesResponse,\n GetPreorderDegreeRequest,\n GetPreorderDegreeResponse,\n GetEquivalenceClassesResponse,\n LearnSortSimilaritiesRequest,\n LearnSortSimilaritiesResponse,\n LearnedSimilarityListResponse,\n ApproveLearnedSimilarityRequest,\n ApproveLearnedSimilarityResponse,\n RejectLearnedSimilarityRequest,\n RejectLearnedSimilarityResponse,\n} from '../types/sorts.js';\n\n/**\n * Resource client for sort (type hierarchy) operations.\n *\n * @remarks\n * Sorts use the tagged {@link ValueDto} serialization format.\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class SortsClient {\n /** @internal */\n private readonly sorts: GeneratedSorts;\n /** @internal */\n private readonly types: GeneratedTypes;\n /** @internal */\n private readonly tenantId: string;\n\n /** @internal */\n constructor(sorts: GeneratedSorts, types: GeneratedTypes, tenantId: string) {\n this.sorts = sorts;\n this.types = types;\n this.tenantId = tenantId;\n }\n\n /**\n * Create a new sort.\n *\n * @param request - Sort creation parameters.\n * @returns The created sort.\n */\n async createSort(request: CreateSortRequest): Promise<SortDto> {\n const response = await this.sorts.addSort(request);\n return response.data.sort;\n }\n\n /**\n * Get a sort by ID.\n *\n * @param sortId - Sort UUID.\n * @returns The sort.\n */\n async getSort(sortId: string): Promise<SortDto> {\n const response = await this.sorts.getSort(sortId);\n return response.data.sort;\n }\n\n /**\n * Delete a sort by ID.\n *\n * @param sortId - Sort UUID.\n */\n async deleteSort(sortId: string): Promise<void> {\n await this.sorts.deleteSort(sortId);\n }\n\n /**\n * List all sorts.\n *\n * @returns Array of sorts.\n */\n async listSorts(): Promise<SortDto[]> {\n const response = await this.sorts.listSorts(this.tenantId);\n return response.data.sorts;\n }\n\n /**\n * Bulk-create sorts with name-based parent references.\n *\n * @param request - Bulk creation request with sort definitions.\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(request: BulkCreateSortsRequest): Promise<BulkCreateSortsResponse> {\n const response = await this.sorts.bulkCreateSorts(request);\n return response.data;\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 * @returns `true` if childId is a subtype of parentId.\n */\n async isSubtype(childId: string, parentId: string): Promise<boolean> {\n const response = await this.sorts.isSubtype(childId, parentId);\n return response.data.is_subtype;\n }\n\n /**\n * Compute the Greatest Lower Bound (GLB) of two sorts — the most specific type\n * shared by both sorts in the lattice.\n *\n * @param request - GLB request with two sort UUIDs.\n * @returns The GLB sort UUID, or null if no common lower bound exists.\n * @see findCommonSubtype\n */\n async computeGlb(request: GlbRequest): Promise<GlbResponse> {\n const response = await this.sorts.computeGlb(request);\n return response.data;\n }\n\n /**\n * Compute the Least Upper Bound (LUB) of two sorts — the most general type\n * that covers both sorts in the lattice.\n *\n * @param request - LUB request with two sort UUIDs.\n * @returns The LUB sort UUID, or null if no common upper bound exists.\n * @see findCommonSupertype\n */\n async computeLub(request: LubRequest): Promise<LubResponse> {\n const response = await this.sorts.computeLub(request);\n return response.data;\n }\n\n /**\n * Decode a GLB as a type disjunction.\n *\n * @param request - GLB request with two sort UUIDs.\n * @returns Human-readable type disjunction with constituent sorts.\n * @see explainCommonSubtype\n */\n async decodeGlb(request: GlbRequest): Promise<DecodeGlbResponse> {\n const response = await this.sorts.decodeGlb(request);\n return response.data;\n }\n\n /**\n * Find the most specific type shared by two types.\n * This is the Greatest Lower Bound (GLB) in the sort lattice.\n *\n * @param sortId1 - First sort identifier.\n * @param sortId2 - Second sort identifier.\n * @returns The most specific common subtype.\n * @see computeGlb\n */\n async findCommonSubtype(sortId1: string, sortId2: string): Promise<GlbResponse> {\n return this.computeGlb({ sort1_id: sortId1, sort2_id: sortId2 });\n }\n\n /**\n * Find the most general type that covers both types.\n * This is the Least Upper Bound (LUB) in the sort lattice.\n *\n * @param sortId1 - First sort identifier.\n * @param sortId2 - Second sort identifier.\n * @returns The most general common supertype.\n * @see computeLub\n */\n async findCommonSupertype(sortId1: string, sortId2: string): Promise<LubResponse> {\n return this.computeLub({ sort1_id: sortId1, sort2_id: sortId2 });\n }\n\n /**\n * Get a human-readable explanation of how two types relate.\n * This decodes the Greatest Lower Bound (GLB) showing type disjunction.\n *\n * @param sortId1 - First sort identifier.\n * @param sortId2 - Second sort identifier.\n * @returns The decoded GLB explanation.\n * @see decodeGlb\n */\n async explainCommonSubtype(sortId1: string, sortId2: string): Promise<DecodeGlbResponse> {\n return this.decodeGlb({ sort1_id: sortId1, sort2_id: sortId2 });\n }\n\n /**\n * Get direct children of a sort.\n *\n * @param sortId - Sort UUID.\n * @returns Array of child sorts.\n */\n async getChildren(sortId: string): Promise<SortInfoDto[]> {\n const response = await this.types.getSortChildren(sortId);\n return response.data.children;\n }\n\n /**\n * Get direct parents of a sort.\n *\n * @param sortId - Sort UUID.\n * @returns Array of parent sorts.\n */\n async getParents(sortId: string): Promise<SortInfoDto[]> {\n const response = await this.types.getSortParents(sortId);\n return response.data.parents;\n }\n\n /**\n * Get all ancestors of a sort (transitive parents).\n *\n * @param sortId - Sort UUID.\n * @returns Array of ancestor sorts.\n */\n async getAncestors(sortId: string): Promise<SortInfoDto[]> {\n const response = await this.types.getSortAncestors(sortId);\n return response.data.ancestors;\n }\n\n /**\n * Get all descendants of a sort (transitive children).\n *\n * @param sortId - Sort UUID.\n * @returns Array of descendant sorts.\n */\n async getDescendants(sortId: string): Promise<SortInfoDto[]> {\n const response = await this.types.getSortDescendants(sortId);\n return response.data.descendants;\n }\n\n /**\n * Get sorts compatible with a given sort.\n *\n * @param sortId - Sort UUID.\n * @returns Array of compatible sorts.\n */\n async getCompatible(sortId: string): Promise<SortDto[]> {\n const response = await this.sorts.getCompatibleSorts(sortId);\n return response.data.sorts;\n }\n\n /**\n * Compare two sorts using a comparison operator.\n *\n * @param request - Comparison request with operator and two sort references.\n * The `tenant_id` is auto-injected from the client configuration.\n * @returns Comparison result.\n */\n async compareSorts(request: Omit<SortCompareRequest, 'tenant_id'>): Promise<SortCompareResponse> {\n const response = await this.types.compareSorts({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n /**\n * Trigger re-indexing of the sort hierarchy.\n */\n async indexSorts(): Promise<void> {\n await this.sorts.indexSorts();\n }\n\n /**\n * Update the review status of a sort.\n *\n * @param sortId - Sort UUID.\n * @param request - New review status.\n */\n async updateReviewStatus(\n sortId: string,\n request: UpdateReviewStatusRequest,\n ): Promise<void> {\n await this.sorts.updateSortReview(sortId, request);\n }\n\n // --- Sort Similarity ---\n\n /**\n * Get the direct similarity degree between two sorts.\n *\n * @param request - Sort pair to query similarity for.\n * @returns The similarity response including sort IDs and degree.\n * @throws {@link ApiError} If the sorts do not exist.\n *\n * @remarks\n * Similarity is symmetric: sim(s1, s2) = sim(s2, s1).\n * Uses tagged serialization format.\n *\n * @example\n * ```typescript\n * const result = await client.sorts.getSortSimilarity({\n * sort1_id: 'uuid-1',\n * sort2_id: 'uuid-2',\n * });\n * console.log(result.degree); // 0.85\n * ```\n */\n async getSortSimilarity(\n request: GetSortSimilarityRequest,\n ): Promise<GetSortSimilarityResponse> {\n const response = await this.sorts.getSortSimilarity(request);\n return response.data;\n }\n\n /**\n * Set the similarity degree between two sorts.\n *\n * @param request - Sort pair and degree to set.\n * @returns The result of the set operation.\n * @throws {@link ApiError} If the sorts do not exist or the degree is out of range.\n *\n * @remarks\n * Similarity is symmetric: setting sim(s1, s2) also sets sim(s2, s1).\n * Degree must be in [0, 1] range.\n * Uses tagged serialization format.\n *\n * @example\n * ```typescript\n * const result = await client.sorts.setSortSimilarity({\n * sort1_id: 'uuid-1',\n * sort2_id: 'uuid-2',\n * degree: 0.85,\n * });\n * console.log(result.success); // true\n * ```\n */\n async setSortSimilarity(\n request: SetSortSimilarityRequest,\n ): Promise<SetSortSimilarityResponse> {\n const response = await this.sorts.setSortSimilarity(request);\n return response.data;\n }\n\n /**\n * Set multiple sort similarity relations in bulk.\n *\n * @param request - Bulk similarity entries to set.\n * @returns The result including count of similarities set.\n * @throws {@link ApiError} If any sort IDs are invalid.\n *\n * @remarks\n * Uses a single database persist for much faster performance than\n * individual {@link setSortSimilarity} calls.\n * Uses tagged serialization format.\n *\n * @example\n * ```typescript\n * const result = await client.sorts.bulkSetSimilarities({\n * similarities: [\n * { sort1_id: 'uuid-1', sort2_id: 'uuid-2', degree: 0.85 },\n * { sort1_id: 'uuid-3', sort2_id: 'uuid-4', degree: 0.70 },\n * ],\n * });\n * console.log(result.set_count); // 2\n * ```\n */\n async bulkSetSimilarities(\n request: BulkSetSimilaritiesRequest,\n ): Promise<BulkSetSimilaritiesResponse> {\n const response = await this.sorts.bulkSetSimilarities(request);\n return response.data;\n }\n\n /**\n * Compute the preorder degree between two sorts.\n *\n * @param request - Sort pair to compute preorder degree for.\n * @returns The preorder degree response including sort IDs and degree.\n * @throws {@link ApiError} If the sorts do not exist.\n *\n * @remarks\n * Per Definition IV.5 (Milanese and Pasi 2024), the combined preorder is:\n * `preorder_dot = ((similarity - subsumption) union subsumption)^+`\n *\n * Degree interpretation:\n * - 1.0 = subsumption (sort1 <= sort2)\n * - 0.0 < x < 1.0 = reachable via similarity-subsumption chain\n * - 0.0 = not reachable\n *\n * Uses tagged serialization format.\n *\n * @example\n * ```typescript\n * const result = await client.sorts.getPreorderDegree({\n * sort1_id: 'uuid-1',\n * sort2_id: 'uuid-2',\n * });\n * console.log(result.degree); // 0.72\n * ```\n */\n async getPreorderDegree(\n request: GetPreorderDegreeRequest,\n ): Promise<GetPreorderDegreeResponse> {\n const response = await this.sorts.getPreorderDegree(request);\n return response.data;\n }\n\n /**\n * Get equivalence classes based on the combined preorder.\n *\n * @returns Equivalence classes grouping sorts that are mutually reachable.\n * @throws {@link ApiError} If the lattice cannot be computed.\n *\n * @remarks\n * Per Definition IV.9 (Milanese and Pasi 2024):\n * s1 ~ s2 iff preorder_dot(s1, s2) > 0 AND preorder_dot(s2, s1) > 0.\n *\n * Uses tagged serialization format.\n *\n * @example\n * ```typescript\n * const result = await client.sorts.getEquivalenceClasses();\n * for (const ec of result.equivalence_classes) {\n * console.log(`Class of ${ec.size} sorts:`, ec.sort_ids);\n * }\n * ```\n */\n async getEquivalenceClasses(): Promise<GetEquivalenceClassesResponse> {\n const response = await this.sorts.getEquivalenceClasses();\n return response.data;\n }\n\n // --- Sort Similarity Learning ---\n\n /**\n * Learn sort similarities from effect features.\n *\n * @param request - Learning parameters.\n * @returns Learning result with count of similarities found.\n */\n async learnSimilarities(\n request: LearnSortSimilaritiesRequest,\n ): Promise<LearnSortSimilaritiesResponse> {\n const response = await this.sorts.learnSortSimilarities(request);\n return response.data;\n }\n\n /**\n * Get all learned similarities.\n *\n * @returns List of learned similarities with status counts.\n */\n async getLearnedSimilarities(): Promise<LearnedSimilarityListResponse> {\n const response = await this.sorts.listLearnedSimilarities();\n return response.data;\n }\n\n /**\n * Approve a learned similarity.\n *\n * @param request - Sort pair to approve.\n * @returns Approval result.\n */\n async approveSimilarity(\n request: ApproveLearnedSimilarityRequest,\n ): Promise<ApproveLearnedSimilarityResponse> {\n const response = await this.sorts.approveLearnedSimilarity(request);\n return response.data;\n }\n\n /**\n * Reject a learned similarity.\n *\n * @param request - Sort pair to reject with reason.\n * @returns Rejection result.\n */\n async rejectSimilarity(\n request: RejectLearnedSimilarityRequest,\n ): Promise<RejectLearnedSimilarityResponse> {\n const response = await this.sorts.rejectLearnedSimilarity(request);\n return response.data;\n }\n}\n","import type { Terms as GeneratedTerms } from '../api-spec/generated/Terms.js';\nimport { ApiError } from '../errors.js';\nimport type {\n TermResponse,\n CreateTermRequest,\n UpdateTermRequest,\n BulkAddTermsRequest,\n BulkAddTermsResponse,\n ClearTermsResponse,\n} from '../types/terms.js';\nimport type { TermListResponse } from '../types/query.js';\n\n/**\n * Resource client for record operations (create, read, update, delete typed records).\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 record satisfies its type\n * witnesses.\n *\n * Terms use the tagged {@link ValueDto} serialization format.\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class TermsClient {\n /** @internal */\n private readonly api: GeneratedTerms;\n\n /** @internal */\n constructor(api: GeneratedTerms) {\n this.api = api;\n }\n\n /**\n * Create a new record.\n *\n * @param request - Term creation parameters.\n * @returns The created term with validation state.\n */\n async createTerm(request: CreateTermRequest): Promise<TermResponse> {\n const response = await this.api.addTerm(request);\n return response.data;\n }\n\n /**\n * Get a term by ID.\n *\n * @param termId - Term UUID.\n * @returns The term with validation state.\n */\n async getTerm(termId: string): Promise<TermResponse> {\n const response = await this.api.getTerm(termId);\n return response.data;\n }\n\n /**\n * Update an existing term.\n *\n * @param termId - Term UUID.\n * @param request - Update parameters.\n * @returns The updated term with validation state.\n */\n async updateTerm(\n termId: string,\n request: UpdateTermRequest,\n ): Promise<TermResponse> {\n const response = await this.api.updateTerm(termId, request);\n return response.data;\n }\n\n /**\n * Delete a term by ID.\n *\n * @param termId - Term UUID.\n */\n async deleteTerm(termId: string): Promise<void> {\n await this.api.deleteTerm(termId);\n }\n\n /**\n * Check if a record exists.\n *\n * @param termId - Term UUID.\n * @returns `true` if the term exists, `false` if not found.\n * @throws {ApiError} If the request fails for reasons other than 404.\n */\n async termExists(termId: string): Promise<boolean> {\n try {\n await this.api.termExists(termId);\n return true;\n } catch (error) {\n if (error instanceof ApiError && error.status === 404) {\n return false;\n }\n throw error;\n }\n }\n\n /**\n * Bulk-create terms.\n *\n * @param request - Bulk creation request.\n * @returns Bulk creation result with term UUIDs.\n */\n async bulkCreateTerms(\n request: BulkAddTermsRequest,\n ): Promise<BulkAddTermsResponse> {\n const response = await this.api.bulkAddTerms(request);\n return response.data;\n }\n\n /**\n * List all terms for the authenticated tenant.\n *\n * @returns The list of terms with total count.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Terms are enriched with sort names, display names, and referenced term summaries.\n * Requires X-Tenant-Id header (set via client configuration).\n * Uses the tagged {@link ValueDto} serialization format.\n *\n * @example\n * ```typescript\n * const result = await client.terms.listTerms();\n * console.log(`Found ${result.count} terms`);\n * for (const term of result.terms) {\n * console.log(term.id, term.sort_name);\n * }\n * ```\n */\n async listTerms(): Promise<TermListResponse> {\n const response = await this.api.listTerms();\n return response.data;\n }\n\n /**\n * Clear all terms for the authenticated tenant.\n *\n * @returns Confirmation message and count of terms cleared.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Removes all terms (facts and rules) belonging to the tenant.\n * Clears both PostgreSQL persistence and in-memory stores, including the residuation store.\n * Requires X-Tenant-Id header (set via client configuration).\n *\n * @example\n * ```typescript\n * const result = await client.terms.clearTerms();\n * console.log(`${result.terms_cleared} terms cleared`);\n * ```\n */\n async clearTerms(): Promise<ClearTermsResponse> {\n const response = await this.api.clearTerms();\n return response.data;\n }\n}\n","import type { Inference as GeneratedInference } from '../api-spec/generated/Inference.js';\nimport type { PsiTermDto } from '../types/homoiconic.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 TaggedForwardChainRequest,\n TaggedForwardChainResponse,\n FuzzyProveRequest,\n FuzzyProveResponse,\n BulkFuzzyProveRequest,\n BulkFuzzyProveResponse,\n BayesianPredictRequest,\n BayesianPredictResponse,\n NafProveRequest,\n NafProveResponse,\n CreateGoalRequest,\n CreateGoalResponse,\n DeleteGoalResponse,\n ListGoalsResponse,\n MetaSortsResponse,\n} from '../types/inference.js';\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 *\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class InferenceClient {\n /** @internal */\n private readonly api: GeneratedInference;\n /** @internal */\n private readonly tenantId: string;\n\n /** @internal */\n constructor(api: GeneratedInference, tenantId: string) {\n this.api = api;\n this.tenantId = tenantId;\n }\n\n /**\n * Add an inference rule.\n *\n * @param request - Rule definition using TermInputDto.\n * @returns The created rule wrapped in an AddRuleResponse.\n */\n async addRule(request: AddRuleRequest): Promise<AddRuleResponse> {\n const response = await this.api.addRule(request);\n return response.data;\n }\n\n /**\n * Add a fact.\n *\n * @param request - Fact definition using TermInputDto.\n * @returns The created fact wrapped in an AddFactResponse.\n */\n async addFact(request: AddFactRequest): Promise<AddFactResponse> {\n const response = await this.api.addFact(request);\n return response.data;\n }\n\n /**\n * Bulk-add inference rules.\n *\n * @param request - Bulk rule definitions.\n * @returns Bulk creation result with rule_term_ids and rules_added count.\n */\n async bulkAddRules(\n request: BulkAddRulesRequest,\n ): Promise<BulkAddRulesResponse> {\n const response = await this.api.bulkAddRules(request);\n return response.data;\n }\n\n /**\n * Bulk-add facts.\n *\n * @param request - Bulk fact definitions.\n * @returns Bulk creation result with term_ids and facts_added count.\n */\n async bulkAddFacts(\n request: BulkAddFactsRequest,\n ): Promise<BulkAddFactsResponse> {\n const response = await this.api.bulkAddFacts(request);\n return response.data;\n }\n\n /**\n * Get all stored facts for the tenant.\n *\n * @returns Facts with count.\n */\n async getFacts(): Promise<GetFactsResponse> {\n const response = await this.api.getFacts(this.tenantId);\n return response.data;\n }\n\n /**\n * Clear all stored facts for the tenant.\n *\n * @returns Clear result with facts_cleared count.\n */\n async clearFacts(): Promise<ClearFactsResponse> {\n const response = await this.api.clearFacts(this.tenantId);\n return response.data;\n }\n\n /**\n * Query for matching data by searching rules and facts backwards from a goal pattern.\n *\n * @param request - Backward chaining request. Specify either `goal` (inline) or `goal_id` (saved), not both.\n * @returns Solutions found by searching backwards from the goal through rules and facts.\n *\n * @remarks\n * Backward chaining starts from a goal and works backwards through rules to find\n * which facts satisfy it. This is the primary query mechanism for inference.\n *\n * The `timeout_ms` field on the request is a wall-clock timeout for the search.\n * When it fires, the backend returns whatever solutions have been found so far.\n */\n async backwardChain(\n request: BackwardChainRequest,\n ): Promise<BackwardChainResponse> {\n const response = await this.api.backwardChain(request);\n return response.data;\n }\n\n /**\n * Derive new facts by applying all matching rules to existing facts repeatedly.\n *\n * @param request - Forward chaining request.\n * @returns Newly derived facts and statistics about the derivation process.\n *\n * @remarks\n * Forward chaining starts from existing facts and applies rules to derive new facts,\n * repeating until no more new facts can be derived (fixpoint) or limits are reached.\n *\n * If `persist_derived` is true, derived facts are permanently saved to the database.\n */\n async forwardChain(\n request: ForwardChainRequest,\n ): Promise<ForwardChainResponse> {\n const response = await this.api.forwardChain(request);\n return response.data;\n }\n\n /**\n * Run forward chaining with probabilistic provenance tags.\n *\n * @param request - Tagged forward chaining request with optional fact confidences.\n * @returns Derived facts with provenance confidence scores.\n *\n * @remarks\n * Each derived fact carries a confidence value computed from provenance semiring\n * operations (noisy-or for disjunction, product for conjunction).\n */\n async forwardChainTagged(\n request: TaggedForwardChainRequest,\n ): Promise<TaggedForwardChainResponse> {\n const response = await this.api.forwardChainTagged(request);\n return response.data;\n }\n\n /**\n * Run fuzzy proof search with truth degree propagation.\n *\n * @param request - Fuzzy prove request.\n * @returns Fuzzy solutions with truth degrees.\n */\n async fuzzyProve(\n request: FuzzyProveRequest,\n ): Promise<FuzzyProveResponse> {\n const response = await this.api.fuzzyProve(request);\n return response.data;\n }\n\n /**\n * Run bulk fuzzy inference with multiple goals in one request.\n *\n * @param request - Bulk fuzzy prove request with inline goals or goal IDs.\n * @returns Bulk fuzzy prove response with per-goal results.\n *\n * @remarks\n * Reduces latency via single HTTP round-trip, shared hierarchy, and rules across all goals.\n */\n async bulkFuzzyProve(\n request: BulkFuzzyProveRequest,\n ): Promise<BulkFuzzyProveResponse> {\n const response = await this.api.bulkFuzzyProve(request);\n return response.data;\n }\n\n /**\n * Run Bayesian prediction.\n *\n * @param request - Bayesian prediction request.\n * @returns Predictions with posterior probabilities.\n */\n async bayesianPredict(\n request: BayesianPredictRequest,\n ): Promise<BayesianPredictResponse> {\n const response = await this.api.bayesianPredict(request);\n return response.data;\n }\n\n /**\n * Run negation-as-failure (NAF) proof search.\n *\n * @param request - NAF prove request.\n * @returns NAF proof result.\n *\n * @see proveWithNegation — friendlier alias for this method.\n */\n async nafProve(request: NafProveRequest): Promise<NafProveResponse> {\n const response = await this.api.nafProve(request);\n return response.data;\n }\n\n /**\n * Prove a goal succeeds because no contrary evidence exists.\n * Uses Negation as Failure (NAF) — the goal is proven true if it cannot be disproven.\n * Alias for {@link nafProve}.\n *\n * @param request - NAF prove request.\n * @returns NAF proof result.\n *\n * @see nafProve\n */\n async proveWithNegation(request: NafProveRequest): Promise<NafProveResponse> {\n return this.nafProve(request);\n }\n\n /**\n * Create a saved goal for reuse in backward chaining.\n *\n * @param request - Goal creation request.\n * @returns The created goal with ID, PsiTerm, and clause/constraint counts.\n */\n async createGoal(\n request: CreateGoalRequest,\n ): Promise<CreateGoalResponse> {\n const response = await this.api.createGoal(request);\n return response.data;\n }\n\n /**\n * List all saved goals.\n *\n * @returns List of goals with summary information.\n */\n async listGoals(): Promise<ListGoalsResponse> {\n const response = await this.api.listGoals();\n return response.data;\n }\n\n /**\n * Get a saved goal by ID.\n *\n * @param goalId - Goal UUID.\n * @returns The goal as a PsiTermDto.\n */\n async getGoal(goalId: string): Promise<PsiTermDto> {\n const response = await this.api.getGoal(goalId);\n return response.data;\n }\n\n /**\n * Delete a saved goal.\n *\n * @param goalId - Goal UUID.\n * @returns Delete result confirming deletion.\n */\n async deleteGoal(goalId: string): Promise<DeleteGoalResponse> {\n const response = await this.api.deleteGoal(goalId);\n return response.data;\n }\n\n /**\n * Get meta-sorts used by the inference engine.\n *\n * @returns Meta-sorts information.\n */\n async getMetaSorts(): Promise<MetaSortsResponse> {\n const response = await this.api.getMetaSorts();\n return response.data;\n }\n}\n","import type { Query as GeneratedQuery } from '../api-spec/generated/Query.js';\nimport { ContentType } from '../api-spec/generated/http-client.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 ValidateTermRequest,\n ValidatedUnifyRequest,\n} from '../types/query.js';\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class QueryClient {\n /** @internal */\n private readonly api: GeneratedQuery;\n\n /** @internal */\n constructor(api: GeneratedQuery) {\n this.api = api;\n }\n\n /**\n * Find terms that unify with a given pattern.\n *\n * @param request - Unifiable query with term input.\n * @returns Array of matching terms (tagged ValueDto format).\n *\n * @see findMatching — friendlier alias for this method.\n */\n async findUnifiable(\n request: UnifiableQueryRequest,\n ): Promise<TermDto[]> {\n const response = await this.api.findUnifiable(request);\n return response.data.results;\n }\n\n /**\n * Find terms by sort.\n *\n * @param request - Query by sort request.\n * @returns Array of matching terms (tagged ValueDto format).\n */\n async findBySort(request: BySortQueryRequest): Promise<TermDto[]> {\n const response = await this.api.findBySort(request);\n return response.data.terms;\n }\n\n /**\n * Execute an Order-Sorted Feature search.\n *\n * @param request - OSF search request with pattern.\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 * @see search — friendlier alias for this method.\n */\n async osfSearch(\n request: OsfSearchRequest,\n ): Promise<OsfSearchResponse> {\n const response = await this.api.osfSearch(request);\n return response.data;\n }\n\n /**\n * Validate a term against its sort's type witnesses.\n *\n * @param request - Term validation request with sort_id and tagged features.\n * @returns Validation result with witness satisfaction status.\n *\n * @remarks\n * Uses tagged `ValueDto` format for features (same as term CRUD).\n */\n async validateTerm(\n request: ValidateTermRequest,\n ): Promise<ValidatedTermResponse> {\n const response = await this.api.validateTerm(request);\n return response.data;\n }\n\n /**\n * Perform validated unification of two terms.\n *\n * @param request - Validated unification request with two terms to unify.\n * @returns Unification result with GLB sort and witness validation.\n *\n * @remarks\n * Both terms use tagged `ValueDto` format for features (same as term CRUD).\n * The backend computes the GLB of the two sorts, unifies the terms,\n * and validates the result against the GLB sort's type witnesses.\n */\n async validatedUnify(\n request: ValidatedUnifyRequest,\n ): Promise<ValidatedUnifyResponse> {\n const response = await this.api.http.request<ValidatedUnifyResponse, void>({\n path: '/api/v1/query/validated-unify',\n method: 'POST',\n body: request,\n type: ContentType.Json,\n format: 'json',\n });\n return response.data;\n }\n\n /**\n * Execute a natural language query.\n *\n * @param request - Natural language query request.\n * @returns Interpreted query and results.\n */\n async nlQuery(request: NlQueryRequest): Promise<NlQueryResponse> {\n const response = await this.api.nlQuery(request);\n return response.data;\n }\n\n /**\n * Search for records matching a pattern with type-aware matching.\n * Alias for {@link osfSearch} using friendlier naming.\n *\n * @param request - OSF search request with pattern.\n * @returns Structured search results including entities, relations, and suspended query information.\n *\n * @see osfSearch\n */\n async search(request: OsfSearchRequest): Promise<OsfSearchResponse> {\n return this.osfSearch(request);\n }\n\n /**\n * Find all records that structurally match the given pattern.\n * Alias for {@link findUnifiable} using friendlier naming.\n *\n * @param request - Unifiable query with term input.\n * @returns Array of matching terms (tagged ValueDto format).\n *\n * @see findUnifiable\n */\n async findMatching(request: UnifiableQueryRequest): Promise<TermDto[]> {\n return this.findUnifiable(request);\n }\n}\n","import type { Cognitive as GeneratedCognitive } from '../api-spec/generated/Cognitive.js';\nimport type { CognitiveAgentsEpisodicMemory as GeneratedEpisodicMemory } from '../api-spec/generated/CognitiveAgentsEpisodicMemory.js';\nimport type { CognitiveAgentsHtn as GeneratedHtn } from '../api-spec/generated/CognitiveAgentsHtn.js';\nimport type { CognitiveAgentsMessaging as GeneratedMessaging } from '../api-spec/generated/CognitiveAgentsMessaging.js';\nimport type { CognitiveAgentsPlanLibrary as GeneratedPlanLibrary } from '../api-spec/generated/CognitiveAgentsPlanLibrary.js';\nimport type { WebSocketClient } from '../websocket.js';\nimport type {\n CreateAgentRequest,\n CreateAgentResponse,\n AgentStateDto,\n GetAgentStateRequest,\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 AdaptiveModifyRequest,\n AdaptiveModifyResponse,\n GetAgentDrivesRequest,\n MotivationStateDto,\n GetExtendedAgentStateRequest,\n ExtendedAgentStateDto,\n LearnFromCorrectionRequest,\n LearnFromCorrectionResponse,\n ReflectionQueryRequest,\n ReflectionQueryResponse,\n ProvideFeedbackRequest,\n ProvideFeedbackResponse,\n RunIntegratedCycleRequest,\n RunIntegratedCycleResponse,\n SubscribeToKbRequest,\n SubscribeToKbResponse,\n RecordEpisodeRequest,\n RecordEpisodeResponse,\n StorePlanRequest,\n StorePlanResponse,\n FindPlansRequest,\n FindPlansResponse,\n DeletePlanRequest,\n DeletePlanResponse,\n UpdatePlanStatsRequest,\n UpdatePlanStatsResponse,\n AgentEvent,\n AgentEventHandlers,\n AgentSubscription,\n} from '../types/cognitive.js';\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class CognitiveClient {\n /** @internal */\n private readonly api: GeneratedCognitive;\n /** @internal */\n private readonly episodicMemory: GeneratedEpisodicMemory;\n /** @internal */\n private readonly htn: GeneratedHtn;\n /** @internal */\n private readonly messaging: GeneratedMessaging;\n /** @internal */\n private readonly planLibrary: GeneratedPlanLibrary;\n /** @internal */\n private readonly ws: WebSocketClient | null;\n /** @internal */\n private readonly tenantId: string;\n\n /** @internal */\n constructor(\n api: GeneratedCognitive,\n episodicMemory: GeneratedEpisodicMemory,\n htn: GeneratedHtn,\n messaging: GeneratedMessaging,\n planLibrary: GeneratedPlanLibrary,\n tenantId: string,\n ws?: WebSocketClient | null,\n ) {\n this.api = api;\n this.episodicMemory = episodicMemory;\n this.htn = htn;\n this.messaging = messaging;\n this.planLibrary = planLibrary;\n this.tenantId = tenantId;\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 * @returns The created agent response.\n */\n async createAgent(\n request: Omit<CreateAgentRequest, 'tenant_id'>,\n ): Promise<CreateAgentResponse> {\n const response = await this.api.createAgent({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n /**\n * Get an agent's basic state.\n *\n * @param agentId - Agent UUID.\n * @returns The agent's basic state.\n *\n * @remarks\n * Uses a direct HTTP request fallback because this endpoint\n * is not present in the generated route class.\n */\n async getAgent(agentId: string): Promise<AgentStateDto> {\n const response = await this.api.http.request<AgentStateDto, void>({\n path: `/api/v1/cognitive/agents/${agentId}`,\n method: 'GET',\n format: 'json',\n });\n return response.data;\n }\n\n /**\n * Delete a cognitive agent.\n *\n * @param agentId - Agent UUID.\n *\n * @remarks\n * Uses a direct HTTP request fallback because this endpoint\n * is not present in the generated route class.\n */\n async deleteAgent(agentId: string): Promise<void> {\n await this.api.http.request<void, void>({\n path: `/api/v1/cognitive/agents/${agentId}`,\n method: 'DELETE',\n });\n }\n\n /**\n * Get an agent's state (BDI: beliefs, goals, pending status).\n *\n * @param request - Agent ID and tenant ID.\n * @returns The agent's state.\n *\n * @remarks\n * Uses POST with agent_id/tenant_id in the body (same pattern as other cognitive endpoints).\n */\n async getState(request: Omit<GetAgentStateRequest, 'tenant_id'>): Promise<AgentStateDto> {\n const response = await this.api.getAgentState({ ...request, tenant_id: this.tenantId });\n return response.data.agent;\n }\n\n /**\n * Get agent drives and motivation state.\n *\n * @param request - Agent ID and tenant ID.\n * @returns The agent's motivation state including drives, deficits, and curiosity targets.\n *\n * @remarks\n * Uses GET with agent_id as path parameter and tenant_id as query parameter.\n * Returns drives, deficits, curiosity targets, and the dominant drive.\n */\n async getAgentDrives(\n request: Omit<GetAgentDrivesRequest, 'tenant_id'>,\n ): Promise<MotivationStateDto> {\n const response = await this.api.getAgentDrives(request.agent_id, {\n tenant_id: this.tenantId,\n });\n return response.data;\n }\n\n /**\n * Get extended agent state including full cognitive state.\n *\n * @param request - Agent ID and tenant ID.\n * @returns The agent's extended state including beliefs, goals, intentions,\n * pending perceptions, activations, recent episodes, and rule utilities.\n *\n * @remarks\n * Uses GET with agent_id as path parameter and tenant_id as query parameter.\n */\n async getExtendedAgentState(\n request: Omit<GetExtendedAgentStateRequest, 'tenant_id'>,\n ): Promise<ExtendedAgentStateDto> {\n const response = await this.api.getExtendedAgentState(request.agent_id, {\n tenant_id: this.tenantId,\n });\n return response.data.agent;\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 * @returns The cycle outcome.\n */\n async runCycle(request: Omit<RunCycleRequest, 'tenant_id'>): Promise<RunCycleResponse> {\n const response = await this.api.runCycle({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n // --- Beliefs ---\n\n /**\n * Add a belief to an agent.\n *\n * @param request - Belief to add.\n * @returns The created belief response.\n */\n async addBelief(\n request: Omit<AddBeliefRequest, 'tenant_id'>,\n ): Promise<AddBeliefResponse> {\n const response = await this.api.addBelief({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n // --- Goals ---\n\n /**\n * Add a goal to an agent.\n *\n * @param request - Goal to add.\n * @returns The created goal response.\n */\n async addGoal(request: Omit<AddGoalRequest, 'tenant_id'>): Promise<AddGoalResponse> {\n const response = await this.api.addGoal({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n // --- Cognitive Registry ---\n\n /**\n * Add a rule to the cognitive registry.\n *\n * @param request - Rule definition.\n * @returns The created rule response.\n */\n async addRule(\n request: Omit<AddCognitiveRuleRequest, 'tenant_id'>,\n ): Promise<AddCognitiveRuleResponse> {\n const response = await this.api.addCognitiveRule({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n /**\n * Add a sort to the cognitive registry.\n *\n * @param request - Sort definition.\n * @returns The created sort response.\n */\n async addSort(\n request: Omit<CreateCognitiveSortRequest, 'tenant_id'>,\n ): Promise<CreateCognitiveSortResponse> {\n const response = await this.api.createCognitiveSort({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n // --- Adaptive Modification ---\n\n /**\n * Adaptively modify agent rules during inference.\n *\n * @param request - Modification request with action (\"assert\" or \"retract\") and term.\n * @returns The modification result including success status and modified term ID.\n *\n * @remarks\n * Demonstrates true homoiconicity: rules can be asserted or retracted during\n * inference, not just at API boundaries. Uses POST to `/api/v1/cognitive/agents/adapt`.\n */\n async adaptiveModify(\n request: Omit<AdaptiveModifyRequest, 'tenant_id'>,\n ): Promise<AdaptiveModifyResponse> {\n const response = await this.api.adaptiveModify({ ...request, tenant_id: this.tenantId });\n return response.data;\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 * @returns Recalled episodes sorted by similarity/recency.\n */\n async recallEpisodes(\n request: Omit<RecallEpisodesRequest, 'tenant_id'>,\n ): Promise<RecallEpisodesResponse> {\n const response = await this.episodicMemory.recallEpisodes({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n /**\n * Get episode statistics for an agent.\n *\n * @param request - Episode stats request with agent and tenant IDs.\n * @returns Episode statistics.\n *\n * @remarks\n * The generated endpoint uses POST with a request body (agent_id, tenant_id),\n * unlike the original SDK which used GET with a path parameter.\n */\n async getEpisodeStats(\n request: { agent_id: string },\n ): Promise<EpisodeStatsResponse> {\n const response = await this.episodicMemory.getEpisodeStats({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n // --- HTN Planning ---\n\n /**\n * Add an HTN method to an agent.\n *\n * @param request - HTN method definition.\n * @returns The created method response.\n */\n async addHtnMethod(\n request: Omit<AddHtnMethodRequest, 'tenant_id'>,\n ): Promise<AddHtnMethodResponse> {\n const response = await this.htn.addHtnMethod({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n // --- Messaging ---\n\n /**\n * Send a message to another agent.\n *\n * @param request - Message to send.\n * @returns The send result.\n */\n async sendMessage(\n request: Omit<SendMessageRequest, 'tenant_id'>,\n ): Promise<SendMessageResponse> {\n const response = await this.messaging.sendMessage({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n /**\n * Broadcast a message to all agents.\n *\n * @param request - Message to broadcast.\n * @returns The broadcast result.\n */\n async broadcastMessage(\n request: Omit<BroadcastMessageRequest, 'tenant_id'>,\n ): Promise<BroadcastMessageResponse> {\n const response = await this.messaging.broadcastMessage({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n /**\n * Mark messages as read.\n *\n * @param request - Messages to mark as read.\n * @returns The result.\n */\n async markMessagesRead(\n request: Omit<MarkMessagesReadRequest, 'tenant_id'>,\n ): Promise<MarkMessagesReadResponse> {\n const response = await this.messaging.markMessagesRead({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n // --- Feedback ---\n\n /**\n * Provide feedback on an agent result.\n *\n * @param request - Feedback to provide.\n * @returns The feedback result.\n */\n async provideFeedback(\n request: Omit<ProvideFeedbackRequest, 'tenant_id'>,\n ): Promise<ProvideFeedbackResponse> {\n const response = await this.api.provideFeedback({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n /**\n * Learn from a user correction with an explicit pattern.\n *\n * @param request - Correction request with result ID and correct pattern.\n * @returns The learning result including correction ID, learning event, and any new rules.\n *\n * @remarks\n * Unlike `provideFeedback` which accepts natural language corrections, this endpoint\n * accepts a structured correction pattern directly as Psi-term features.\n * Uses POST to `/api/v1/cognitive/learn_correction`.\n */\n async learnFromCorrection(\n request: Omit<LearnFromCorrectionRequest, 'tenant_id'>,\n ): Promise<LearnFromCorrectionResponse> {\n const response = await this.api.learnFromCorrection({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n /**\n * Query an agent's own rules via self-reflection.\n *\n * @param request - Reflection query with agent ID and query string.\n * @returns Matching rules/facts and count.\n *\n * @remarks\n * Demonstrates true homoiconicity: the agent can reason about its own\n * inference rules using the same unification-based query mechanism.\n * Uses POST to `/api/v1/cognitive/agents/reflect`.\n */\n async reflectionQuery(\n request: Omit<ReflectionQueryRequest, 'tenant_id'>,\n ): Promise<ReflectionQueryResponse> {\n const response = await this.api.reflectionQuery({ ...request, tenant_id: this.tenantId });\n return response.data;\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 * @returns The integrated cycle outcome with duration.\n */\n async integratedCycle(\n request: Omit<RunIntegratedCycleRequest, 'tenant_id'>,\n ): Promise<RunIntegratedCycleResponse> {\n const response = await this.api.runIntegratedCycle({ ...request, tenant_id: this.tenantId });\n return response.data;\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 * @returns Subscription ID.\n */\n async subscribeToKb(\n request: Omit<SubscribeToKbRequest, 'tenant_id'>,\n ): Promise<SubscribeToKbResponse> {\n const response = await this.api.subscribeToKb({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n // --- Episode Recording ---\n\n /**\n * Record an episodic memory entry for an agent.\n *\n * @param request - Episode to record.\n * @returns The created episode ID.\n */\n async recordEpisode(\n request: Omit<RecordEpisodeRequest, 'tenant_id'>,\n ): Promise<RecordEpisodeResponse> {\n const response = await this.episodicMemory.recordEpisode({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n // --- Plan Library ---\n\n /**\n * Store a plan in the library.\n *\n * @param request - Plan storage request with agent, goal, and action sequence.\n * @returns The stored plan ID and message.\n *\n * @remarks\n * Stores a successful action sequence as a reusable plan template.\n */\n async storePlan(\n request: Omit<StorePlanRequest, 'tenant_id'>,\n ): Promise<StorePlanResponse> {\n const response = await this.planLibrary.storePlan({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n /**\n * Find matching plans for a goal.\n *\n * @param request - Plan search request with agent, goal, and filtering options.\n * @returns Matching plans sorted by score.\n *\n * @remarks\n * Searches the plan library for plans that match the given goal.\n */\n async findPlans(\n request: Omit<FindPlansRequest, 'tenant_id'>,\n ): Promise<FindPlansResponse> {\n const response = await this.planLibrary.findPlans({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n /**\n * Delete a plan from the library.\n *\n * @param request - Plan deletion request with plan ID and tenant ID.\n * @returns Whether the plan was deleted.\n */\n async deletePlan(\n request: Omit<DeletePlanRequest, 'tenant_id'>,\n ): Promise<DeletePlanResponse> {\n const response = await this.planLibrary.deletePlan(request.plan_id, {\n tenant_id: this.tenantId,\n });\n return response.data;\n }\n\n /**\n * Update plan statistics after execution.\n *\n * @param request - Stats update request with plan ID and success outcome.\n * @returns Updated success rate and use count.\n */\n async updatePlanStats(\n request: Omit<UpdatePlanStatsRequest, 'tenant_id'>,\n ): Promise<UpdatePlanStatsResponse> {\n const response = await this.planLibrary.updatePlanStats({ ...request, tenant_id: this.tenantId });\n return response.data;\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(`/api/v1/cognitive/agents/${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","import type { Fuzzy as GeneratedFuzzy } from '../api-spec/generated/Fuzzy.js';\nimport { ContentType } from '../api-spec/generated/http-client.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\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class FuzzyClient {\n /** @internal */\n private readonly api: GeneratedFuzzy;\n\n /** @internal */\n constructor(api: GeneratedFuzzy) {\n this.api = api;\n }\n\n /**\n * Fuzzy unify two terms.\n *\n * @param request - Unification request with two term IDs and threshold.\n * @returns Unification degree, confidence, and unified term.\n * @see compareSimilarity\n */\n async fuzzyUnify(\n request: FuzzyUnifyRequest,\n ): Promise<FuzzyUnifyResponse> {\n const response = await this.api.fuzzyUnify(request);\n return response.data;\n }\n\n /**\n * Compare two records and compute their similarity score.\n * Alias for {@link fuzzyUnify} using friendlier naming.\n *\n * @param term1Id - First record identifier.\n * @param term2Id - Second record identifier.\n * @param options - Optional similarity parameters (threshold, mode).\n * @returns Similarity comparison result.\n * @see fuzzyUnify\n */\n async compareSimilarity(\n term1Id: string,\n term2Id: string,\n options?: Partial<Omit<FuzzyUnifyRequest, 'term1_id' | 'term2_id'>>,\n ): Promise<FuzzyUnifyResponse> {\n return this.fuzzyUnify({\n term1_id: term1Id,\n term2_id: term2Id,\n ...options,\n });\n }\n\n /**\n * Fuzzy merge two terms.\n *\n * @param request - Merge request with two term IDs and strategy.\n * @returns Merge result with computation time and feature count.\n */\n async fuzzyMerge(\n request: FuzzyMergeRequest,\n ): Promise<FuzzyMergeResponse> {\n const response = await this.api.http.request<FuzzyMergeResponse, void>({\n path: '/api/v1/fuzzy/merge',\n method: 'POST',\n body: request,\n type: ContentType.Json,\n format: 'json',\n });\n return response.data;\n }\n\n /**\n * Check fuzzy subsumption between two terms.\n *\n * @param request - Subsumption request with general and specific term IDs.\n * @returns Subsumption degree and whether the relationship holds.\n */\n async fuzzySubsumption(\n request: FuzzySubsumptionRequest,\n ): Promise<FuzzySubsumptionResponse> {\n const response = await this.api.http.request<FuzzySubsumptionResponse, void>({\n path: '/api/v1/fuzzy/subsumption',\n method: 'POST',\n body: request,\n type: ContentType.Json,\n format: 'json',\n });\n return response.data;\n }\n\n /**\n * Search for top-K most similar terms.\n *\n * @param request - Search request with query term and K.\n * @returns Top-K results sorted by similarity degree.\n */\n async searchTopK(\n request: FuzzySearchTopKRequest,\n ): Promise<FuzzySearchTopKResponse> {\n const response = await this.api.http.request<FuzzySearchTopKResponse, void>({\n path: '/api/v1/fuzzy/top-k',\n method: 'POST',\n body: request,\n type: ContentType.Json,\n format: 'json',\n });\n return response.data;\n }\n\n /**\n * Predict the effect for a query point.\n *\n * @param request - Effect prediction request.\n * @returns Predicted effect with confidence and proof trace.\n */\n async predictEffect(\n request: PredictEffectRequest,\n ): Promise<PredictEffectResponse> {\n const response = await this.api.http.request<PredictEffectResponse, void>({\n path: '/api/v1/fuzzy/predict-effect',\n method: 'POST',\n body: request,\n type: ContentType.Json,\n format: 'json',\n });\n return response.data;\n }\n}\n","import type { Constraints as GeneratedConstraints } from '../api-spec/generated/Constraints.js';\nimport { ContentType } from '../api-spec/generated/http-client.js';\nimport type {\n SolveConstraintRequest,\n SolveConstraintResponse,\n ConstraintGraphRequest,\n ConstraintGraphResponse,\n CreateConstraintSessionRequest,\n CreateConstraintSessionResponse,\n ConstraintSessionStatus,\n AddConstraintsRequest,\n AddConstraintsResponse,\n BindVariablesRequest,\n BindVariablesResponse,\n CleanupSessionsResponse,\n} from '../types/constraints.js';\n\n/**\n * Resource client for constraint operations.\n *\n * @remarks\n * Provides arithmetic constraint solving, constraint graph visualization,\n * and incremental constraint session management.\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class ConstraintsClient {\n /** @internal */\n private readonly api: GeneratedConstraints;\n\n /** @internal */\n constructor(api: GeneratedConstraints) {\n this.api = api;\n }\n\n /**\n * Solve arithmetic constraints.\n *\n * @param request - Constraints to solve with optional initial bindings.\n * @returns Solver result with variable bindings.\n */\n async solve(\n request: SolveConstraintRequest,\n ): Promise<SolveConstraintResponse> {\n const response = await this.api.solveConstraints(request);\n return response.data;\n }\n\n /**\n * Get constraint graph visualization.\n *\n * @param request - Graph request with optional focus term and flags.\n * @returns Constraint graph with statistics and optional cycle/FD domain data.\n */\n async getGraph(\n request: ConstraintGraphRequest,\n ): Promise<ConstraintGraphResponse> {\n const response = await this.api.http.request<ConstraintGraphResponse, void>({\n path: '/api/v1/constraints/graph',\n method: 'POST',\n body: request,\n type: ContentType.Json,\n format: 'json',\n });\n return response.data;\n }\n\n // --- Session Management ---\n\n /**\n * Create a constraint session.\n *\n * @param request - Session creation parameters (name, description, metadata).\n * @returns Session creation response with session_id, created_at, and status.\n */\n async createSession(\n request: CreateConstraintSessionRequest,\n ): Promise<CreateConstraintSessionResponse> {\n const response = await this.api.createSession(request);\n return response.data;\n }\n\n /**\n * Get a constraint session by ID.\n *\n * @param sessionId - Session ID.\n * @returns Full session status with constraint counts, bindings, and satisfaction state.\n */\n async getSession(sessionId: string): Promise<ConstraintSessionStatus> {\n const response = await this.api.getSessionStatus(sessionId);\n return response.data;\n }\n\n /**\n * Add constraints to a session.\n *\n * @param sessionId - Session ID.\n * @param request - Constraints to add.\n * @returns Result with counts of added/satisfied/suspended constraints.\n */\n async addConstraints(\n sessionId: string,\n request: AddConstraintsRequest,\n ): Promise<AddConstraintsResponse> {\n const response = await this.api.addConstraints(sessionId, request);\n return response.data;\n }\n\n /**\n * Bind variables in a constraint session.\n *\n * @param sessionId - Session ID.\n * @param request - Variable bindings.\n * @returns Binding result with updated satisfaction state.\n */\n async bindVariables(\n sessionId: string,\n request: BindVariablesRequest,\n ): Promise<BindVariablesResponse> {\n const response = await this.api.bindVariables(sessionId, request);\n return response.data;\n }\n\n /**\n * Clean up old constraint sessions.\n *\n * @remarks\n * Should be called periodically to remove stale sessions.\n * Calls `POST /api/v1/constraint-sessions/cleanup`.\n *\n * @returns Cleanup result with the number of sessions removed.\n * @throws {@link ApiError} if the backend returns an error response.\n *\n * @example\n * ```ts\n * const result = await client.constraints.cleanupOldSessions();\n * console.log(`Removed ${result.removed} old sessions`);\n * ```\n */\n async cleanupOldSessions(): Promise<CleanupSessionsResponse> {\n const response = await this.api.cleanupOldSessions();\n return response.data;\n }\n\n /**\n * List all active constraint sessions.\n *\n * @remarks\n * Intended for debugging and administration.\n * Calls `GET /api/v1/constraint-sessions`.\n *\n * @returns Array of session status objects for all active sessions.\n * @throws {@link ApiError} if the backend returns an error response.\n *\n * @example\n * ```ts\n * const sessions = await client.constraints.listSessions();\n * for (const session of sessions) {\n * console.log(`${session.session_id}: ${session.status}`);\n * }\n * ```\n */\n async listSessions(): Promise<ConstraintSessionStatus[]> {\n const response = await this.api.listSessions();\n return response.data;\n }\n}\n","import type { Namespaces as GeneratedNamespaces } from '../api-spec/generated/Namespaces.js';\nimport type {\n CreateRootNamespaceRequest,\n CreateChildNamespaceRequest,\n AddImportRequest,\n AddExportRequest,\n UpdateMetadataRequest,\n UpdateVisibilityRequest,\n NamespaceDto,\n NamespaceListResponse,\n} from '../types/namespaces.js';\n\n/**\n * Resource client for namespace operations.\n *\n * @remarks\n * Provides CRUD operations for namespaces, import management,\n * and metadata updates. Backend responses are wrapped in\n * `{ namespace: ... }` or `{ namespaces: [...], count }`;\n * this client unwraps them automatically.\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class NamespacesClient {\n /** @internal */\n private readonly api: GeneratedNamespaces;\n /** @internal */\n private readonly tenantId: string;\n\n /** @internal */\n constructor(api: GeneratedNamespaces, tenantId: string) {\n this.api = api;\n this.tenantId = tenantId;\n }\n\n /**\n * Create a root namespace.\n *\n * @param request - Root namespace creation parameters.\n * @returns The created namespace (unwrapped from response wrapper).\n */\n async createRoot(request: CreateRootNamespaceRequest): Promise<NamespaceDto> {\n const response = await this.api.createRootNamespace(request);\n return response.data.namespace;\n }\n\n /**\n * Create a child namespace.\n *\n * @param request - Child namespace creation parameters (path, visibility).\n * @returns The created namespace (unwrapped from response wrapper).\n *\n * @remarks\n * The parent is inferred from the `path` field (e.g., \"parent.child\").\n */\n async createChild(request: CreateChildNamespaceRequest): Promise<NamespaceDto> {\n const response = await this.api.createChildNamespace(request);\n return response.data.namespace;\n }\n\n /**\n * Get a namespace by ID.\n *\n * @param namespaceId - Namespace UUID.\n * @returns The namespace (unwrapped from response wrapper).\n */\n async get(namespaceId: string): Promise<NamespaceDto> {\n const response = await this.api.getNamespace(namespaceId);\n return response.data.namespace;\n }\n\n /**\n * Delete a namespace.\n *\n * @param namespaceId - Namespace UUID.\n */\n async delete(namespaceId: string): Promise<void> {\n await this.api.deleteNamespace(namespaceId);\n }\n\n /**\n * List all namespaces for the configured tenant.\n *\n * @returns Namespace list with count.\n */\n async list(): Promise<NamespaceListResponse> {\n const response = await this.api.listNamespaces(this.tenantId);\n return response.data;\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 */\n async addImport(\n namespaceId: string,\n request: AddImportRequest,\n ): Promise<void> {\n await this.api.addNamespaceImport(namespaceId, request);\n }\n\n /**\n * Update namespace metadata.\n *\n * @param namespaceId - Namespace UUID.\n * @param request - Metadata update request.\n */\n async updateMetadata(\n namespaceId: string,\n request: UpdateMetadataRequest,\n ): Promise<void> {\n await this.api.updateNamespaceMetadata(namespaceId, request);\n }\n\n /**\n * Add an export to a namespace.\n *\n * @param namespaceId - Namespace UUID.\n * @param request - Export request with symbol name.\n *\n * @throws {@link ApiError} If the namespace is not found or the export is invalid.\n *\n * @remarks\n * Calls `POST /api/v1/namespaces/{id}/exports`.\n *\n * @example\n * ```ts\n * await client.namespaces.addExport(namespaceId, { symbol: \"my_symbol\" });\n * ```\n */\n async addExport(\n namespaceId: string,\n request: AddExportRequest,\n ): Promise<void> {\n await this.api.addNamespaceExport(namespaceId, request);\n }\n\n /**\n * Get ancestors of a namespace (from root to parent).\n *\n * @param namespaceId - Namespace UUID.\n * @returns Namespace list with count, ordered from root to parent.\n *\n * @throws {@link ApiError} If the namespace is not found.\n *\n * @remarks\n * Calls `GET /api/v1/namespaces/{id}/ancestors`.\n *\n * @example\n * ```ts\n * const ancestors = await client.namespaces.getAncestors(namespaceId);\n * console.log(ancestors.namespaces); // root -> ... -> parent\n * ```\n */\n async getAncestors(namespaceId: string): Promise<NamespaceListResponse> {\n const response = await this.api.getNamespaceAncestors(namespaceId);\n return response.data;\n }\n\n /**\n * Get a namespace by path.\n *\n * @param tenantId - Tenant UUID.\n * @param path - Dot-separated namespace path (e.g., \"acme.engineering\").\n * @returns The namespace (unwrapped from response wrapper).\n *\n * @throws {@link ApiError} If the namespace is not found.\n *\n * @remarks\n * Calls `GET /api/v1/namespaces/path/{tenant_id}/{path}`.\n *\n * @example\n * ```ts\n * const ns = await client.namespaces.getByPath(tenantId, \"acme.engineering\");\n * console.log(ns.name);\n * ```\n */\n async getByPath(tenantId: string, path: string): Promise<NamespaceDto> {\n const response = await this.api.getNamespaceByPath(tenantId, path);\n return response.data.namespace;\n }\n\n /**\n * Get children of a namespace.\n *\n * @param namespaceId - Namespace UUID.\n * @returns Namespace list with count of direct children.\n *\n * @throws {@link ApiError} If the namespace is not found.\n *\n * @remarks\n * Calls `GET /api/v1/namespaces/{id}/children`.\n *\n * @example\n * ```ts\n * const children = await client.namespaces.getChildren(namespaceId);\n * console.log(children.count);\n * ```\n */\n async getChildren(namespaceId: string): Promise<NamespaceListResponse> {\n const response = await this.api.getNamespaceChildren(namespaceId);\n return response.data;\n }\n\n /**\n * Update namespace visibility.\n *\n * @param namespaceId - Namespace UUID.\n * @param request - Visibility update request.\n *\n * @throws {@link ApiError} If the namespace is not found.\n *\n * @remarks\n * Calls `PUT /api/v1/namespaces/{id}/visibility`.\n *\n * @example\n * ```ts\n * await client.namespaces.updateVisibility(namespaceId, { visibility: \"public\" });\n * ```\n */\n async updateVisibility(\n namespaceId: string,\n request: UpdateVisibilityRequest,\n ): Promise<void> {\n await this.api.updateNamespaceVisibility(namespaceId, request);\n }\n}\n","import type { Collections as GeneratedCollections } from '../api-spec/generated/Collections.js';\nimport type {\n CreateCollectionRequest,\n UpdateCollectionRequest,\n CollectionDto,\n} from '../types/collections.js';\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class CollectionsClient {\n /** @internal */\n private readonly api: GeneratedCollections;\n\n /** @internal */\n constructor(api: GeneratedCollections) {\n this.api = api;\n }\n\n /**\n * Create a collection.\n *\n * @param request - Collection creation parameters.\n * @returns The created collection.\n */\n async create(request: CreateCollectionRequest): Promise<CollectionDto> {\n const response = await this.api.createCollection(request);\n return response.data.collection;\n }\n\n /**\n * Get a collection by ID.\n *\n * @param collectionId - Collection UUID.\n * @returns The collection.\n */\n async get(collectionId: string): Promise<CollectionDto> {\n const response = await this.api.getCollection(collectionId);\n return response.data.collection;\n }\n\n /**\n * Update a collection.\n *\n * @param collectionId - Collection UUID.\n * @param request - Update parameters.\n */\n async update(\n collectionId: string,\n request: UpdateCollectionRequest,\n ): Promise<void> {\n await this.api.updateCollection(collectionId, request);\n }\n\n /**\n * Delete a collection.\n *\n * @param collectionId - Collection UUID.\n */\n async delete(collectionId: string): Promise<void> {\n await this.api.deleteCollection(collectionId);\n }\n\n /**\n * List all collections in a namespace.\n *\n * @param namespaceId - Namespace UUID.\n * @returns Array of collections.\n */\n async list(namespaceId: string): Promise<CollectionDto[]> {\n const response = await this.api.listCollections(namespaceId);\n return response.data.collections;\n }\n\n /**\n * Get ancestors of a collection.\n *\n * @param collectionId - Collection UUID.\n * @returns Array of ancestor collections.\n */\n async getAncestors(collectionId: string): Promise<CollectionDto[]> {\n const response = await this.api.getCollectionAncestors(collectionId);\n return response.data.collections;\n }\n\n /**\n * Get a collection by path within a namespace.\n *\n * @param namespaceId - Namespace UUID.\n * @param path - Collection path.\n * @returns The collection.\n */\n async getByPath(namespaceId: string, path: string): Promise<CollectionDto> {\n const response = await this.api.getCollectionByPath(namespaceId, path);\n return response.data.collection;\n }\n\n /**\n * Get children of a collection.\n *\n * @param collectionId - Collection UUID.\n * @returns Array of child collections.\n */\n async getChildren(collectionId: string): Promise<CollectionDto[]> {\n const response = await this.api.getCollectionChildren(collectionId);\n return response.data.collections;\n }\n\n /**\n * Get all descendants of a collection.\n *\n * @param collectionId - Collection UUID.\n * @returns Array of descendant collections.\n */\n async getDescendants(collectionId: string): Promise<CollectionDto[]> {\n const response = await this.api.getCollectionDescendants(collectionId);\n return response.data.collections;\n }\n\n /**\n * Get root collections in a namespace.\n *\n * @param namespaceId - Namespace UUID.\n * @returns Array of root collections.\n */\n async getRootCollections(namespaceId: string): Promise<CollectionDto[]> {\n const response = await this.api.getRootCollections(namespaceId);\n return response.data.collections;\n }\n\n /**\n * Query terms by collection path prefix.\n *\n * @param request - Query request with path prefix and options.\n * @returns Query result.\n */\n async queryTermsByPath(request: {\n namespace_id: string;\n path_prefix: string;\n include_descendants: boolean;\n }): Promise<unknown> {\n const response = await this.api.queryTermsByCollectionPath(request);\n return response.data;\n }\n\n /**\n * Query terms in a collection.\n *\n * @param request - Query request with collection ID and options.\n * @returns Query result.\n */\n async queryTermsInCollection(request: {\n collection_id: string;\n include_descendants: boolean;\n namespace_id: string;\n }): Promise<unknown> {\n const response = await this.api.queryTermsInCollection(request);\n return response.data;\n }\n}\n","import type { Execution as GeneratedExecution } from '../api-spec/generated/Execution.js';\nimport type {\n CreateExecutionSessionRequest,\n ExecutionSessionResponse,\n BacktrackResponse,\n GoalStackResponse,\n ResiduateGoalRequest,\n BindTermRequest,\n BindTermResponse,\n ReleaseResiduationsRequest,\n ReleaseResiduationsResponse,\n AppendResiduationsRequest,\n AppendResiduationsResponse,\n GetResiduationsRequest,\n GetResiduationsResponse,\n ApplyCurriedRequest,\n ApplyCurriedResponse,\n CreateCurriedFunctionRequest,\n CurriedFunctionResponse,\n DetectMissingAttributesRequest,\n CurryingContextResponse,\n CleanupStaleSessionsParams,\n CleanupResponse,\n GetBindingsRequest,\n BindingsResponse,\n ExecutionSessionStatsResponse,\n LazyEvalRequest,\n LazyEvalResponse,\n MarkChoicePointRequest,\n ChoicePointMarkerResponse,\n MarkPendingRequest,\n MarkPendingResponse,\n PushGoalRequest,\n PushGoalResponse,\n} from '../types/execution.js';\nimport type { ResiduatedTermDto } from '../types/visualization.js';\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class ExecutionClient {\n /** @internal */\n private readonly api: GeneratedExecution;\n\n /** @internal */\n constructor(api: GeneratedExecution) {\n this.api = api;\n }\n\n /**\n * Create a new execution session.\n *\n * @param request - Session creation parameters.\n * @returns The created session.\n */\n async createSession(\n request: CreateExecutionSessionRequest,\n ): Promise<ExecutionSessionResponse> {\n const response = await this.api.createExecutionSession(request);\n return response.data;\n }\n\n /**\n * Get an execution session.\n *\n * @param sessionId - Session ID.\n * @returns The session state.\n */\n async getSession(sessionId: string): Promise<ExecutionSessionResponse> {\n const response = await this.api.getExecutionSession(sessionId);\n return response.data;\n }\n\n /**\n * Delete an execution session.\n *\n * @param sessionId - Session ID.\n */\n async deleteSession(sessionId: string): Promise<void> {\n await this.api.deleteExecutionSession(sessionId);\n }\n\n /**\n * Backtrack the session (undo recent operations).\n *\n * @param sessionId - Session ID.\n * @param request - Optional backtrack parameters (marker index).\n * @returns Backtrack result with undone entries.\n */\n async backtrack(\n sessionId: string,\n request?: { marker_index?: number | null },\n ): Promise<BacktrackResponse> {\n const response = await this.api.backtrack(sessionId, request ?? {});\n return response.data;\n }\n\n /**\n * Get the current goal stack.\n *\n * @param sessionId - Session ID.\n * @returns Goal stack state.\n */\n async getGoalStack(sessionId: string): Promise<GoalStackResponse> {\n const response = await this.api.getGoalStack(sessionId);\n return response.data;\n }\n\n /**\n * Get the session trail (undo log).\n *\n * @param sessionId - Session ID.\n * @returns Trail entries.\n */\n async getTrail(sessionId: string): Promise<unknown> {\n const response = await this.api.http.request<unknown, void>({\n path: `/api/v1/execution/sessions/${sessionId}/trail`,\n method: 'GET',\n secure: true,\n format: 'json',\n });\n return response.data;\n }\n\n /**\n * Get choice points in the session.\n *\n * @param sessionId - Session ID.\n * @returns Choice point data.\n */\n async getChoicePoints(sessionId: string): Promise<unknown> {\n const response = await this.api.http.request<unknown, void>({\n path: `/api/v1/execution/sessions/${sessionId}/choice-points`,\n method: 'GET',\n secure: true,\n format: 'json',\n });\n return response.data;\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 * @returns Residuated term details.\n */\n async residuate(\n sessionId: string,\n request: ResiduateGoalRequest,\n ): Promise<ResiduatedTermDto> {\n const response = await this.api.residuateGoal(sessionId, request);\n return response.data;\n }\n\n /**\n * Bind a term with sort and feature values.\n *\n * @param sessionId - Session ID.\n * @param request - Binding request.\n * @returns Binding result with evaluation results from released residuations.\n */\n async bind(\n sessionId: string,\n request: BindTermRequest,\n ): Promise<BindTermResponse> {\n const response = await this.api.bindTerm(sessionId, request);\n return response.data;\n }\n\n /**\n * Release residuations for a term (attempt evaluation).\n *\n * @param sessionId - Session ID.\n * @param request - Release request.\n * @returns Released goals and evaluation results.\n */\n async releaseResiduations(\n sessionId: string,\n request: ReleaseResiduationsRequest,\n ): Promise<ReleaseResiduationsResponse> {\n const response = await this.api.releaseResiduations(sessionId, request);\n return response.data;\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 * @returns Append result.\n */\n async appendResiduations(\n sessionId: string,\n request: AppendResiduationsRequest,\n ): Promise<AppendResiduationsResponse> {\n const response = await this.api.appendResiduations(sessionId, request);\n return response.data;\n }\n\n /**\n * Get residuations for a term.\n *\n * @param sessionId - Session ID.\n * @param request - Get residuations request.\n * @returns Residuation details.\n */\n async getResiduations(\n sessionId: string,\n request: GetResiduationsRequest,\n ): Promise<GetResiduationsResponse> {\n const response = await this.api.getResiduations(sessionId, request);\n return response.data;\n }\n\n /**\n * Mark a residuation as pending.\n *\n * @param sessionId - Session ID.\n * @param request - Mark pending request with term ID and operation type.\n * @returns Whether the residuation was marked and its details.\n *\n * @remarks\n * Marks a specific residuation goal as pending so it will not be\n * evaluated until the term receives further bindings.\n */\n async markPending(\n sessionId: string,\n request: MarkPendingRequest,\n ): Promise<MarkPendingResponse> {\n const response = await this.api.markPending(sessionId, request);\n return response.data;\n }\n\n // --- Goal Stack ---\n\n /**\n * Push a goal onto the execution goal stack.\n *\n * @param sessionId - Session ID.\n * @param request - Push goal request containing the goal to push.\n * @returns The goal ID and updated stack size.\n *\n * @remarks\n * Goals are discriminated unions with a `type` field. Supported types\n * include `unify`, `prove`, `eval`, `type_disj`, `cut`, and `if_then_else`.\n */\n async pushGoal(\n sessionId: string,\n request: PushGoalRequest,\n ): Promise<PushGoalResponse> {\n const response = await this.api.pushGoal(sessionId, request);\n return response.data;\n }\n\n /**\n * Pop a goal from the execution goal stack.\n *\n * @param sessionId - Session ID.\n * @returns Updated goal stack state after popping.\n */\n async popGoal(sessionId: string): Promise<GoalStackResponse> {\n const response = await this.api.popGoal(sessionId);\n return response.data;\n }\n\n // --- Choice Points ---\n\n /**\n * Mark a choice point in the execution session for backtracking.\n *\n * @param sessionId - Session ID.\n * @param request - Optional description for the choice point.\n * @returns The marker index, choice point count, and timestamp.\n *\n * @remarks\n * Choice points record the execution state so it can be restored\n * via backtracking. The returned `marker_index` can be passed to\n * {@link backtrack} to undo operations back to this point.\n */\n async markChoicePoint(\n sessionId: string,\n request: MarkChoicePointRequest,\n ): Promise<ChoicePointMarkerResponse> {\n const response = await this.api.markChoicePoint(sessionId, request);\n return response.data;\n }\n\n // --- Bindings ---\n\n /**\n * Get current bindings for terms in a session.\n *\n * @param sessionId - Session ID.\n * @param request - Optional list of term IDs; if empty, returns all bindings.\n * @returns Current term bindings with their sorts and features.\n */\n async getBindings(\n sessionId: string,\n request: GetBindingsRequest,\n ): Promise<BindingsResponse> {\n const response = await this.api.getBindings(sessionId, request);\n return response.data;\n }\n\n // --- Lazy Evaluation ---\n\n /**\n * Evaluate a term lazily, deferring evaluation of excluded features.\n *\n * @param sessionId - Session ID.\n * @param request - Lazy evaluation request with term ID and excluded features.\n * @returns Evaluation status indicating what further evaluation is needed.\n *\n * @remarks\n * Returns a discriminated union by `status`:\n * - `evaluated`: Term was fully evaluated.\n * - `quoted`: Term was quoted (not evaluated).\n * - `subterms_need_eval`: Sub-terms require evaluation first.\n * - `needs_function_eval`: A function term needs evaluation.\n */\n async lazyEval(\n sessionId: string,\n request: LazyEvalRequest,\n ): Promise<LazyEvalResponse> {\n const response = await this.api.lazyEval(sessionId, request);\n return response.data;\n }\n\n // --- Currying ---\n\n /**\n * Create a curried function.\n *\n * @param request - Curried function creation parameters.\n * @returns The created curried function details.\n *\n * @remarks\n * Curried functions are ephemeral and not persisted. They will be\n * lost on server restart. Use within a single session lifecycle.\n */\n async createCurriedFunction(\n request: CreateCurriedFunctionRequest,\n ): Promise<CurriedFunctionResponse> {\n const response = await this.api.createCurriedFunction(request);\n return response.data;\n }\n\n /**\n * Apply arguments to a curried function.\n *\n * @param request - Apply request with curried function ID and arguments.\n * @returns A discriminated union indicating the result status.\n *\n * @remarks\n * Returns a discriminated union by `status`:\n * - `fully_applied`: All arguments provided, result computed.\n * - `still_curried`: Some arguments remain missing.\n * - `cannot_curry`: Function cannot be curried with the given arguments.\n */\n async applyCurried(\n request: ApplyCurriedRequest,\n ): Promise<ApplyCurriedResponse> {\n const response = await this.api.applyCurried(request);\n return response.data;\n }\n\n /**\n * Detect missing attributes for a currying decision.\n *\n * @param request - Call and definition attributes to compare.\n * @returns Currying context analysis indicating whether currying should be applied.\n *\n * @remarks\n * Compares the attributes in a function call against the attributes\n * in the function definition to determine if currying is appropriate.\n */\n async detectCurryingContext(\n request: DetectMissingAttributesRequest,\n ): Promise<CurryingContextResponse> {\n const response = await this.api.detectCurryingContext(request);\n return response.data;\n }\n\n // --- Session Management ---\n\n /**\n * Get execution session statistics.\n *\n * @returns Session statistics.\n */\n async getSessionStats(): Promise<ExecutionSessionStatsResponse> {\n const response = await this.api.getSessionStats();\n return response.data;\n }\n\n /**\n * Clean up stale execution sessions from memory and optionally from database.\n *\n * @param params - Optional cleanup parameters.\n * @returns Cleanup result with counts of cleaned sessions and curried functions.\n *\n * @remarks\n * This should be called periodically (e.g., via cron or health check)\n * to prevent memory leaks from abandoned sessions.\n */\n async cleanupStaleSessions(\n params?: CleanupStaleSessionsParams,\n ): Promise<CleanupResponse> {\n const response = await this.api.cleanupStaleSessions(params);\n return response.data;\n }\n}\n","import type { Causal as GeneratedCausal } from '../api-spec/generated/Causal.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\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class CausalClient {\n /** @internal */\n private readonly api: GeneratedCausal;\n\n /** @internal */\n constructor(api: GeneratedCausal) {\n this.api = api;\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 * @returns Ancestry result with path and certainty.\n */\n async checkAncestor(\n request: CausalAncestorRequest,\n ): Promise<CausalAncestorResponse> {\n const response = await this.api.checkCausalAncestor(request);\n return response.data;\n }\n\n /**\n * Check if one variable directly causes another.\n *\n * @param request - Causes check request with cause and effect variables.\n * @returns Whether the causal relationship exists with certainty.\n */\n async checkCauses(request: CausesRequest): Promise<CausesResponse> {\n const response = await this.api.checkCauses(request);\n return response.data;\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 * @returns Counterfactual result with trace of abduction, action, and prediction.\n */\n async counterfactual(\n request: CounterfactualRequest,\n ): Promise<CounterfactualResponse> {\n const response = await this.api.evaluateCounterfactual(request);\n return response.data;\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 * @returns Whether the variables are d-separated and active paths.\n */\n async checkDSeparated(\n request: DSeparatedRequest,\n ): Promise<DSeparatedResponse> {\n const response = await this.api.checkDSeparated(request);\n return response.data;\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 * @returns Intervention result with query output.\n */\n async intervene(\n request: InterventionRequest,\n ): Promise<InterventionResponse> {\n const response = await this.api.applyIntervention(request);\n return response.data;\n }\n\n /**\n * Get the current causal model (all variables and edges).\n *\n * @returns The causal model with variables and edges.\n */\n async getModel(): Promise<GetCausalModelResponse> {\n const response = await this.api.getCausalModel();\n return response.data;\n }\n\n /**\n * Add a causal relation to the model.\n *\n * @param request - Relation request with cause, effect, and optional certainty.\n * @returns Success status and created rule ID.\n */\n async addRelation(\n request: AddCausalRelationRequest,\n ): Promise<AddCausalRelationResponse> {\n const response = await this.api.addCausalRelation(request);\n return response.data;\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 * @returns Root causes and causal chains.\n */\n async rootCause(\n request: RootCauseAnalysisRequest,\n ): Promise<RootCauseAnalysisResponse> {\n const response = await this.api.analyzeRootCauses(request);\n return response.data;\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 * @returns Root causes, causal chains, and proof tree.\n */\n async rootCauseWithProof(\n request: RootCauseAnalysisRequest,\n ): Promise<RootCauseWithProofResponse> {\n const response = await this.api.analyzeRootCausesWithProof(request);\n return response.data;\n }\n}\n","import type { Ingestion as GeneratedIngestion } from '../api-spec/generated/Ingestion.js';\nimport { ContentType } from '../api-spec/generated/http-client.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\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class IngestionClient {\n /** @internal */\n private readonly api: GeneratedIngestion;\n\n /** @internal */\n constructor(api: GeneratedIngestion) {\n this.api = api;\n }\n\n /**\n * Ingest a single document.\n *\n * @param request - Document ingestion request with source, config, and owner.\n * @returns Ingestion result with stats, metadata, and parse info.\n */\n async ingestDocument(\n request: IngestDocumentRequest,\n ): Promise<IngestDocumentResponse> {\n const response = await this.api.ingestDocument(request);\n return response.data;\n }\n\n /**\n * Ingest a batch of documents.\n *\n * @param request - Batch ingestion request with documents, config, and owner.\n * @returns Batch results with per-document status.\n */\n async ingestDocumentBatch(\n request: IngestDocumentBatchRequest,\n ): Promise<IngestDocumentBatchResponse> {\n const response = await this.api.ingestDocumentBatch(request);\n return response.data;\n }\n\n /**\n * Ingest markdown content.\n *\n * @param request - Markdown ingestion request with content and owner.\n * @returns Ingestion statistics and review items.\n *\n * @remarks\n * Uses synchronous mode (sync=true) by default. The generated endpoint\n * returns void for the response type; we use a fallback to get the typed response.\n */\n async ingestMarkdown(\n request: IngestMarkdownRequest,\n ): Promise<IngestMarkdownResponse> {\n const response = await this.api.http.request<IngestMarkdownResponse, void>({\n path: `/api/v1/ingest/markdown`,\n method: 'POST',\n query: { sync: true },\n body: request,\n type: ContentType.Json,\n format: 'json',\n });\n return response.data;\n }\n\n /**\n * Ingest a batch of markdown documents.\n *\n * @param request - Batch markdown ingestion request with documents and owner.\n * @returns Ingestion statistics and review items.\n *\n * @remarks\n * The generated endpoint returns void; we use a fallback to get the typed response.\n */\n async ingestMarkdownBatch(\n request: IngestMarkdownBatchRequest,\n ): Promise<IngestMarkdownResponse> {\n const response = await this.api.http.request<IngestMarkdownResponse, void>({\n path: `/api/v1/ingest/markdown/batch`,\n method: 'POST',\n body: request,\n type: ContentType.Json,\n format: 'json',\n });\n return response.data;\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 * @returns Created sorts and terms from the RDF data.\n */\n async ingestRdf(\n request: IngestRdfRequest,\n ): Promise<IngestRdfResponse> {\n const response = await this.api.ingestRdf(request);\n return response.data;\n }\n\n /**\n * List all ingestion sessions.\n *\n * @returns List of sessions with total count.\n */\n async listSessions(): Promise<ListIngestionSessionsResponse> {\n const response = await this.api.listIngestionSessions();\n return response.data;\n }\n\n /**\n * Start a new ingestion session.\n *\n * @param request - Session start request with document IDs.\n * @returns The created session.\n */\n async startSession(\n request: StartIngestionSessionRequest,\n ): Promise<IngestionSessionResponse> {\n const response = await this.api.startIngestionSession(request);\n return response.data;\n }\n\n /**\n * Get an ingestion session by ID.\n *\n * @param sessionId - Session UUID.\n * @returns The session details.\n */\n async getSession(\n sessionId: string,\n ): Promise<IngestionSessionResponse> {\n const response = await this.api.getIngestionSession(sessionId);\n return response.data;\n }\n\n /**\n * Delete an ingestion session.\n *\n * @param sessionId - Session UUID.\n */\n async deleteSession(sessionId: string): Promise<void> {\n await this.api.deleteIngestionSession(sessionId);\n }\n\n /**\n * List incomplete documents in a session that can be resumed.\n *\n * @param sessionId - Session UUID.\n * @returns Incomplete documents with resume positions.\n */\n async listIncompleteDocuments(\n sessionId: string,\n ): Promise<ListIncompleteDocumentsResponse> {\n const response = await this.api.listIncompleteDocuments(sessionId);\n return response.data;\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 * @returns Resume result with stats and review items.\n */\n async resumeIngestion(\n sessionId: string,\n request: ResumeDocumentIngestionRequest,\n ): Promise<ResumeDocumentIngestionResponse> {\n const response = await this.api.resumeDocumentIngestion(sessionId, request);\n return response.data;\n }\n}\n","import type { Reviews as GeneratedReviews } from '../api-spec/generated/Reviews.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\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class ReviewsClient {\n /** @internal */\n private readonly api: GeneratedReviews;\n\n /** @internal */\n constructor(api: GeneratedReviews) {\n this.api = api;\n }\n\n /**\n * Add an entity to the pending review queue.\n *\n * @param request - Review details including entity, candidates, and reason.\n * @returns The created review response.\n */\n async addPendingReview(request: AddPendingReviewRequest): Promise<unknown> {\n const response = await this.api.addPendingReview(request);\n return response.data;\n }\n\n /**\n * Approve an entity as-is.\n *\n * @param request - Approval request with review ID and optional notes.\n * @returns The approval response.\n */\n async approveEntity(request: ApproveEntityRequest): Promise<unknown> {\n const response = await this.api.approveEntity(request);\n return response.data;\n }\n\n /**\n * Bulk approve multiple reviews.\n *\n * @param request - Bulk approval request with review IDs and reviewer.\n * @returns The bulk approval response.\n */\n async bulkApprove(request: BulkApproveRequest): Promise<unknown> {\n const response = await this.api.bulkApprove(request);\n return response.data;\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 * @returns The bulk merge response.\n */\n async bulkMerge(request: BulkMergeRequest): Promise<unknown> {\n const response = await this.api.bulkMerge(request);\n return response.data;\n }\n\n /**\n * Bulk reject multiple reviews.\n *\n * @param request - Bulk reject request with review IDs, reviewer, and reason.\n * @returns The bulk rejection response.\n */\n async bulkReject(request: BulkRejectRequest): Promise<unknown> {\n const response = await this.api.bulkReject(request);\n return response.data;\n }\n\n /**\n * Correct an entity before approval.\n *\n * @param request - Correction request with review ID, corrected features, and/or sort.\n * @returns The correction response.\n */\n async correctEntity(request: CorrectEntityRequest): Promise<unknown> {\n const response = await this.api.correctEntity(request);\n return response.data;\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 * @returns The merge response.\n */\n async mergeEntity(request: MergeEntityRequest): Promise<unknown> {\n const response = await this.api.mergeEntity(request);\n return response.data;\n }\n\n /**\n * List all pending reviews.\n *\n * @returns List of pending review entries.\n */\n async listPending(): Promise<unknown> {\n const response = await this.api.listPendingReviews();\n return response.data;\n }\n\n /**\n * Re-extract entities from a document.\n *\n * @param request - Re-extraction request with document ID and optional instructions.\n * @returns The re-extraction response.\n */\n async reExtract(request: ReExtractRequest): Promise<unknown> {\n const response = await this.api.reExtract(request);\n return response.data;\n }\n\n /**\n * Reject an entity.\n *\n * @param request - Rejection request with review ID and reason.\n * @returns The rejection response.\n */\n async rejectEntity(request: RejectEntityRequest): Promise<unknown> {\n const response = await this.api.rejectEntity(request);\n return response.data;\n }\n\n /**\n * Get review summary for a tenant.\n *\n * @param tenantId - Tenant UUID.\n * @returns Review summary for the tenant.\n */\n async getSummary(tenantId: string): Promise<unknown> {\n const response = await this.api.getReviewSummary(tenantId);\n return response.data;\n }\n}\n","import type { Visualization as GeneratedVisualization } from '../api-spec/generated/Visualization.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\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class VisualizationClient {\n /** @internal */\n private readonly api: GeneratedVisualization;\n\n /** @internal */\n constructor(api: GeneratedVisualization) {\n this.api = api;\n }\n\n /**\n * Generate a constraint graph visualization.\n *\n * @param request - Constraint graph request with optional term focus and cycle detection.\n * @returns Constraint graph with nodes, edges, stats, and optional cycles.\n */\n async constraintGraph(\n request: ConstraintGraphRequest,\n ): Promise<ConstraintGraphResponse> {\n const response = await this.api.getConstraintGraph(request);\n return response.data;\n }\n\n /**\n * Generate a hypergraph visualization of OSF terms.\n *\n * @param request - Hypergraph request with root term and traversal options.\n * @returns Hypergraph with graph, stats, components, and degree distribution.\n */\n async hypergraph(\n request: HypergraphRequest,\n ): Promise<HypergraphResponse> {\n const response = await this.api.getHypergraph(request);\n return response.data;\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 * @returns Hypergraph response for the term's neighborhood.\n */\n async termSubgraph(termId: string): Promise<HypergraphResponse> {\n const response = await this.api.getTermSubgraph(termId);\n return response.data;\n }\n\n /**\n * Generate a lattice (sort hierarchy) visualization.\n *\n * @param request - Lattice request with layout and filtering options.\n * @returns Lattice visualization with graph and statistics.\n */\n async lattice(\n request: LatticeVisualizationRequest,\n ): Promise<LatticeVisualizationResponse> {\n const response = await this.api.getLatticeVisualization(request);\n return response.data;\n }\n\n /**\n * Get the sort lattice as a DOT format string.\n *\n * @returns The lattice in DOT graph description language.\n *\n * @remarks\n * This endpoint returns a plain-text DOT string. The generated route class\n * declares void because the OpenAPI spec omits the response schema.\n * We call `http.request` directly with `format: 'text'` to parse the body.\n */\n async latticeDot(): Promise<string> {\n const response = await this.api.http.request<string, void>({\n path: '/api/v1/visualization/lattice/dot',\n method: 'GET',\n format: 'text',\n });\n return response.data;\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 * @returns Computation trace with steps, result, and optional graph.\n */\n async glbLubTrace(\n request: GlbLubTraceRequest,\n ): Promise<GlbLubComputationTrace> {\n const response = await this.api.glbLubTrace(request);\n return response.data;\n }\n\n /**\n * Generate a residuation state diagram.\n *\n * @param request - Residuation state request with kind and state filters.\n * @returns Residuation state with terms, graph, and statistics.\n */\n async residuationState(\n request: ResiduationStateRequest,\n ): Promise<ResiduationStateResponse> {\n const response = await this.api.getResiduationState(request);\n return response.data;\n }\n\n /**\n * Generate a trigger dependency graph for residuations.\n *\n * @param request - Trigger dependency request with optional residuation focus.\n * @returns Trigger dependency graph with critical paths.\n */\n async triggerDependencies(\n request: TriggerDependencyRequest,\n ): Promise<TriggerDependencyResponse> {\n const response = await this.api.getTriggerDependencies(request);\n return response.data;\n }\n}\n","import type { Ilp as GeneratedIlp } from '../api-spec/generated/Ilp.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\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class IlpClient {\n /** @internal */\n private readonly api: GeneratedIlp;\n\n /** @internal */\n constructor(api: GeneratedIlp) {\n this.api = api;\n }\n\n /**\n * Learn a recursive arithmetic pattern from training examples.\n *\n * @param request - Learning request with examples and configuration.\n * @returns The learned pattern with confidence score and processing time.\n */\n async learnPattern(\n request: LearnPatternRequest,\n ): Promise<LearnPatternResponse> {\n const response = await this.api.learnPattern(request);\n return response.data;\n }\n\n /**\n * Evaluate a learned pattern on new inputs.\n *\n * @param request - Evaluation request with pattern ID and inputs.\n * @returns Evaluation results for each input.\n */\n async evaluatePattern(\n request: EvaluatePatternRequest,\n ): Promise<EvaluatePatternResponse> {\n const response = await this.api.evaluatePattern(request);\n return response.data;\n }\n\n /**\n * Sample hypotheses using GFlowNet.\n *\n * @param request - Sampling request with target sort and parameters.\n * @returns Sampled hypotheses with log-probabilities.\n */\n async gflownetSample(\n request: GFlowNetSampleRequest,\n ): Promise<GFlowNetSampleResponse> {\n const response = await this.api.gflownetSample(request);\n return response.data;\n }\n\n /**\n * List all learned patterns.\n *\n * @returns List of pattern summaries.\n */\n async listPatterns(): Promise<ListPatternsResponse> {\n const response = await this.api.listPatterns();\n return response.data;\n }\n\n /**\n * Synthesize rules using neural-guided ILP.\n *\n * @param request - Synthesis request with examples and target sort.\n * @returns Synthesis result with processing details.\n */\n async synthesize(\n request: SynthesizeRequest,\n ): Promise<SynthesizeResponse> {\n const response = await this.api.synthesizePattern(request);\n return response.data;\n }\n}\n","import type { Reasoning as GeneratedReasoning } from '../api-spec/generated/Reasoning.js';\nimport type {\n FuzzyMergeRequest,\n FuzzyMergeResponse,\n FuzzySubsumptionRequest,\n FuzzySubsumptionResponse,\n} from '../types/fuzzy.js';\nimport type {\n DisentailmentRequest,\n DisentailmentResponse,\n EntailmentRequest,\n EntailmentResponse,\n EvidenceAssessmentRequest,\n EvidenceAssessmentResponse,\n GoalResiduationRequest,\n GoalResiduationResponse,\n ResiduationRequest,\n ResiduationResponse,\n ResourceCoordinationRequest,\n ResourceCoordinationResponse,\n TemporalPlanRequest,\n TemporalPlanResponse,\n} from '../types/reasoning.js';\n\n/**\n * Resource client for reasoning operations.\n *\n * @remarks\n * Provides entailment checking, disentailment checking, evidence assessment,\n * fuzzy merge/subsumption, residuation checking, goal residuation analysis,\n * resource coordination, and temporal planning.\n *\n * Delegates to the generated {@link GeneratedReasoning} route class for\n * type-safe HTTP calls.\n */\nexport class ReasoningClient {\n /** @internal */\n private readonly api: GeneratedReasoning;\n\n /** @internal */\n constructor(api: GeneratedReasoning) {\n this.api = api;\n }\n\n /**\n * Assess the truthfulness/validity of a subject based on related evidence.\n *\n * @param request - Evidence assessment request.\n * @returns Assessment result with truthfulness score, label, and evidence breakdown.\n */\n async assess(\n request: EvidenceAssessmentRequest,\n ): Promise<EvidenceAssessmentResponse> {\n const response = await this.api.evidenceAssessment(request);\n return response.data;\n }\n\n /**\n * Check disentailment between two clauses.\n *\n * @param request - Disentailment request with antecedent, consequent, and facts.\n * @returns Whether the disentailment holds or is violated.\n */\n async disentailment(\n request: DisentailmentRequest,\n ): Promise<DisentailmentResponse> {\n const response = await this.api.disentailment(request);\n return response.data;\n }\n\n /**\n * Check logical entailment between an antecedent and consequent.\n *\n * @param request - Entailment request with antecedent, consequent, and facts.\n * @returns Whether the antecedent entails the consequent with confidence.\n */\n async entailment(\n request: EntailmentRequest,\n ): Promise<EntailmentResponse> {\n const response = await this.api.entailment(request);\n return response.data;\n }\n\n /**\n * Compute goal-level residuation: which antecedent sorts are still needed.\n *\n * @param request - Goal residuation request with goal sort name and available sorts.\n * @returns Residuated entries sorted by information gain.\n */\n async goalResiduation(\n request: GoalResiduationRequest,\n ): Promise<GoalResiduationResponse> {\n const response = await this.api.goalResiduation(request);\n return response.data;\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 * @returns Merge result with computation time and feature count.\n */\n async merge(\n request: FuzzyMergeRequest,\n ): Promise<FuzzyMergeResponse> {\n const response = await this.api.fuzzyMerge(request);\n return response.data;\n }\n\n /**\n * Check for residuated (suspended) operations on a term.\n *\n * @param request - Residuation request with term ID.\n * @returns Suspended operations and resumption triggers.\n */\n async residuate(\n request: ResiduationRequest,\n ): Promise<ResiduationResponse> {\n const response = await this.api.residuation(request);\n return response.data;\n }\n\n /**\n * Coordinate N-way resource selections with compatibility constraints.\n *\n * @param request - Resource coordination request.\n * @returns Coordinated resource sets with compatibility scores.\n */\n async resourceCoordination(\n request: ResourceCoordinationRequest,\n ): Promise<ResourceCoordinationResponse> {\n const response = await this.api.resourceCoordination(request);\n return response.data;\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 * @returns Subsumption degree and whether the relationship holds.\n */\n async subsumption(\n request: FuzzySubsumptionRequest,\n ): Promise<FuzzySubsumptionResponse> {\n const response = await this.api.fuzzySubsumption(request);\n return response.data;\n }\n\n /**\n * Generate a temporal plan with diversity constraints.\n *\n * @param request - Temporal plan request.\n * @returns Selected term IDs with diversity and proximity scores.\n */\n async temporalPlan(\n request: TemporalPlanRequest,\n ): Promise<TemporalPlanResponse> {\n const response = await this.api.temporalPlan(request);\n return response.data;\n }\n}\n","import type { Statistical as GeneratedStatistical } from '../api-spec/generated/Statistical.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\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 *\n * Delegates to the generated {@link GeneratedStatistical} route class for\n * type-safe HTTP calls.\n */\nexport class StatisticalClient {\n /** @internal */\n private readonly api: GeneratedStatistical;\n\n /** @internal */\n constructor(api: GeneratedStatistical) {\n this.api = api;\n }\n\n /**\n * Clear all observed statistical data.\n *\n * @returns Success message.\n */\n async clearData(): Promise<StatisticalSuccessResponse> {\n const response = await this.api.clearStatisticalData();\n return response.data;\n }\n\n /**\n * Compute Pearson correlation between two variables.\n *\n * @param request - Correlation request with two variable names.\n * @returns Correlation coefficient and observation count.\n */\n async correlation(\n request: CorrelationRequest,\n ): Promise<CorrelationResponse> {\n const response = await this.api.getCorrelation(request);\n return response.data;\n }\n\n /**\n * Discover causal relationships from observed data.\n *\n * @param request - Discovery request with variable list.\n * @returns Discovered causal relationships.\n */\n async discoverCausal(\n request: DiscoverCausalRequest,\n ): Promise<DiscoverCausalResponse> {\n const response = await this.api.discoverCausal(request);\n return response.data;\n }\n\n /**\n * Get the current status of causal discovery.\n *\n * @returns Discovery status with graph and uncertainty information.\n */\n async getDiscoveryStatus(): Promise<DiscoveryStatusResponse> {\n const response = await this.api.getDiscoveryStatus();\n return response.data;\n }\n\n /**\n * Run dynamic causal discovery with configurable strategy.\n *\n * @param request - Dynamic discovery request with strategy and parameters.\n * @returns Discovered relationships, proof tree, and interventions.\n */\n async dynamicDiscovery(\n request: DynamicDiscoveryRequest,\n ): Promise<DynamicDiscoveryResponse> {\n const response = await this.api.dynamicDiscovery(request);\n return response.data;\n }\n\n /**\n * Record an intervention observation for causal discovery.\n *\n * @param request - Intervention observation with changed/unchanged variables.\n * @returns Resolved edges and remaining uncertainty.\n */\n async interventionObservation(\n request: InterventionObservationRequest,\n ): Promise<InterventionObservationResponse> {\n const response = await this.api.recordInterventionObservation(request);\n return response.data;\n }\n\n /**\n * Observe a single variable value.\n *\n * @param request - Single observation request.\n * @returns Current observation count.\n */\n async observeSingle(\n request: ObserveSingleRequest,\n ): Promise<ObserveSingleResponse> {\n const response = await this.api.observeSingle(request);\n return response.data;\n }\n\n /**\n * Observe multiple variable values simultaneously.\n *\n * @param request - Multi-observation request with variable-value map.\n * @returns Variables that were observed.\n */\n async observeMulti(\n request: ObserveMultiRequest,\n ): Promise<ObserveMultiResponse> {\n const response = await this.api.observeMulti(request);\n return response.data;\n }\n\n /**\n * Observe a pair of variable values.\n *\n * @param request - Pair observation request.\n * @returns Current observation count for this pair.\n */\n async observePair(\n request: ObservePairRequest,\n ): Promise<ObservePairResponse> {\n const response = await this.api.observePair(request);\n return response.data;\n }\n\n /**\n * Compute partial correlation controlling for a set of variables.\n *\n * @param request - Partial correlation request with conditioning set.\n * @returns Partial correlation coefficient.\n */\n async partialCorrelation(\n request: PartialCorrelationRequest,\n ): Promise<PartialCorrelationResponse> {\n const response = await this.api.getPartialCorrelation(request);\n return response.data;\n }\n\n /**\n * Reset the causal discovery state.\n *\n * @returns Success message.\n */\n async resetDiscovery(): Promise<StatisticalSuccessResponse> {\n const response = await this.api.resetDiscovery();\n return response.data;\n }\n\n /**\n * Test conditional independence between two variables.\n *\n * @param request - Independence test request with conditioning set.\n * @returns Independence result with p-value and explanation.\n */\n async testIndependence(\n request: ConditionalIndependenceRequest,\n ): Promise<ConditionalIndependenceResponse> {\n const response = await this.api.testConditionalIndependence(request);\n return response.data;\n }\n}\n","import type { Control as GeneratedControl } from '../api-spec/generated/Control.js';\nimport type {\n BacktrackableAssignRequest,\n BacktrackableAssignResponse,\n GlobalAssignRequest,\n GlobalAssignResponse,\n CallOnceRequest,\n CallOnceResponse,\n CondRequest,\n CondResponse,\n CutRequest,\n CutResponse,\n FindallRequest,\n FindallResponse,\n ForallRequest,\n ForallResponse,\n GlobalGetRequest,\n GlobalGetResponse,\n GlobalIncrementRequest,\n GlobalIncrementResponse,\n ImpliesRequest,\n ImpliesResponse,\n ControlNafRequest,\n NafResponse,\n UndoRequest,\n UndoResponse,\n CreateModuleRequest,\n CreateModuleResponse,\n ImportModuleRequest,\n ImportModuleResponse,\n AddSymbolRequest,\n AddSymbolResponse,\n ListSymbolsRequest,\n ListSymbolsResponse,\n ResolveSymbolRequest,\n ResolveSymbolResponse,\n} from '../types/control.js';\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, undo, and module system operations.\n *\n * Delegates to the generated {@link GeneratedControl} route class for\n * type-safe HTTP calls.\n */\nexport class ControlClient {\n /** @internal */\n private readonly api: GeneratedControl;\n\n /** @internal */\n constructor(api: GeneratedControl) {\n this.api = api;\n }\n\n /**\n * Perform backtrackable assignment.\n *\n * @param request - Assignment request with term, feature, and value.\n * @returns Assignment result with trail entry status.\n */\n async backtrackableAssign(\n request: BacktrackableAssignRequest,\n ): Promise<BacktrackableAssignResponse> {\n const response = await this.api.assignBacktrackable(request);\n return response.data;\n }\n\n /**\n * Perform global assignment (persists across backtracking).\n *\n * @param request - Global assignment request.\n * @returns Assignment result with previous value.\n */\n async globalAssign(\n request: GlobalAssignRequest,\n ): Promise<GlobalAssignResponse> {\n const response = await this.api.assignGlobal(request);\n return response.data;\n }\n\n /**\n * Execute a goal once with cut (deterministic).\n *\n * @param request - Call-once request with goal.\n * @returns Result with success status and choice points cut.\n */\n async callOnce(\n request: CallOnceRequest,\n ): Promise<CallOnceResponse> {\n const response = await this.api.controlCallOnce(request);\n return response.data;\n }\n\n /**\n * Execute conditional (if-then-else).\n *\n * @param request - Conditional request with condition, then, and else goals.\n * @returns Result with branch executed and success status.\n */\n async cond(\n request: CondRequest,\n ): Promise<CondResponse> {\n const response = await this.api.controlCond(request);\n return response.data;\n }\n\n /**\n * Perform Prolog-style cut (discard choice points).\n *\n * @param request - Cut request with session ID.\n * @returns Number of choice points removed.\n */\n async cut(\n request: CutRequest,\n ): Promise<CutResponse> {\n const response = await this.api.controlCut(request);\n return response.data;\n }\n\n /**\n * Collect all solutions for a goal (findall).\n *\n * @param request - Findall request with template, goal, and optional max.\n * @returns Collected solutions and count.\n */\n async findall(\n request: FindallRequest,\n ): Promise<FindallResponse> {\n const response = await this.api.controlFindall(request);\n return response.data;\n }\n\n /**\n * Universal quantification (forall).\n *\n * @param request - Forall request with generator and test goals.\n * @returns Result and number of solutions tested.\n */\n async forall(\n request: ForallRequest,\n ): Promise<ForallResponse> {\n const response = await this.api.controlForall(request);\n return response.data;\n }\n\n /**\n * Get a global variable value.\n *\n * @param request - Get request with session ID and variable name.\n * @returns The global variable value or not-found status.\n */\n async globalGet(\n request: GlobalGetRequest,\n ): Promise<GlobalGetResponse> {\n const response = await this.api.globalGet(request);\n return response.data;\n }\n\n /**\n * Increment a global counter variable.\n *\n * @param request - Increment request with session ID and variable name.\n * @returns New value and variable name.\n */\n async globalIncrement(\n request: GlobalIncrementRequest,\n ): Promise<GlobalIncrementResponse> {\n const response = await this.api.globalIncrement(request);\n return response.data;\n }\n\n /**\n * Execute implies (A -> B).\n *\n * @param request - Implies request with antecedent and consequent.\n * @returns Implication result.\n */\n async implies(\n request: ImpliesRequest,\n ): Promise<ImpliesResponse> {\n const response = await this.api.controlImplies(request);\n return response.data;\n }\n\n /**\n * Negation as failure (low-level control).\n *\n * @param request - NAF request with goal.\n * @returns Whether the goal failed (negation succeeded).\n */\n async naf(\n request: ControlNafRequest,\n ): Promise<NafResponse> {\n const response = await this.api.controlNaf(request);\n return response.data;\n }\n\n /**\n * Register an undo goal (execute on backtracking).\n *\n * @param request - Undo request with goal.\n * @returns Undo ID and trail position.\n */\n async undo(\n request: UndoRequest,\n ): Promise<UndoResponse> {\n const response = await this.api.controlUndo(request);\n return response.data;\n }\n\n // --- Module System ---\n\n /**\n * Create a module.\n *\n * @param request - Module creation request.\n * @returns Created module name.\n */\n async createModule(\n request: CreateModuleRequest,\n ): Promise<CreateModuleResponse> {\n const response = await this.api.createModule(request);\n return response.data;\n }\n\n /**\n * Import a module.\n *\n * @param request - Import request with importer, imported module, and optional alias.\n * @returns Imported module name.\n */\n async importModule(\n request: ImportModuleRequest,\n ): Promise<ImportModuleResponse> {\n const response = await this.api.importModule(request);\n return response.data;\n }\n\n /**\n * Add a symbol to a module.\n *\n * @param request - Add symbol request with module, symbol, and visibility.\n * @returns Added symbol details.\n */\n async addSymbol(\n request: AddSymbolRequest,\n ): Promise<AddSymbolResponse> {\n const response = await this.api.addSymbol(request);\n return response.data;\n }\n\n /**\n * List module symbols.\n *\n * @param request - List request with module name and session ID.\n * @returns Module symbols.\n */\n async listSymbols(\n request: ListSymbolsRequest,\n ): Promise<ListSymbolsResponse> {\n const response = await this.api.listSymbols(request);\n return response.data;\n }\n\n /**\n * Resolve a qualified symbol name.\n *\n * @param request - Resolve request with qualified name and current module.\n * @returns Resolved module and symbol name.\n */\n async resolveSymbol(\n request: ResolveSymbolRequest,\n ): Promise<ResolveSymbolResponse> {\n const response = await this.api.resolveSymbol(request);\n return response.data;\n }\n}\n","import type { Spaces as GeneratedSpaces } from '../api-spec/generated/Spaces.js';\nimport type {\n CreateSpaceRequest,\n SpaceResponse,\n CommitRequest,\n SpaceSearchRequest,\n SpaceSearchResponse,\n} from '../types/spaces.js';\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 *\n * Delegates to the generated {@link GeneratedSpaces} route class for\n * type-safe HTTP calls.\n */\nexport class SpacesClient {\n /** @internal */\n private readonly api: GeneratedSpaces;\n\n /** @internal */\n constructor(api: GeneratedSpaces) {\n this.api = api;\n }\n\n /**\n * Create a new computation space.\n *\n * @param request - Space creation parameters.\n * @returns The created space.\n */\n async createSpace(\n request: CreateSpaceRequest,\n ): Promise<SpaceResponse> {\n const response = await this.api.createSpace(request);\n return response.data;\n }\n\n /**\n * Get a computation space by ID.\n *\n * @param spaceId - Space ID.\n * @returns The space state.\n */\n async getSpace(\n spaceId: string,\n ): Promise<SpaceResponse> {\n const response = await this.api.getSpace(spaceId);\n return response.data;\n }\n\n /**\n * Clone a computation space.\n *\n * @param spaceId - Space ID to clone.\n * @returns The cloned space.\n */\n async cloneSpace(\n spaceId: string,\n ): Promise<SpaceResponse> {\n const response = await this.api.cloneSpace(spaceId);\n return response.data;\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 * @returns Updated space state.\n */\n async commit(\n spaceId: string,\n request: CommitRequest,\n ): Promise<SpaceResponse> {\n const response = await this.api.commitSpace(spaceId, request);\n return response.data;\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 * @returns Search results with solutions.\n */\n async search(\n spaceId: string,\n request: SpaceSearchRequest,\n ): Promise<SpaceSearchResponse> {\n const response = await this.api.searchSpace(spaceId, request);\n return response.data;\n }\n}\n","import type { RowPolymorphism as GeneratedRowPolymorphism } from '../api-spec/generated/RowPolymorphism.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\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 *\n * Delegates to the generated {@link GeneratedRowPolymorphism} route class for\n * type-safe HTTP calls.\n */\nexport class RowClient {\n /** @internal */\n private readonly api: GeneratedRowPolymorphism;\n\n /** @internal */\n constructor(api: GeneratedRowPolymorphism) {\n this.api = api;\n }\n\n /**\n * Search for entities matching a row pattern.\n *\n * @param request - Row search request with feature pattern.\n * @returns Matching entities.\n */\n async search(\n request: RowSearchRequest,\n ): Promise<RowSearchResponse> {\n const response = await this.api.rowSearch(request);\n return response.data;\n }\n\n /**\n * Unify two row types.\n *\n * @param request - Unification request with two row types.\n * @returns Unification result.\n */\n async unify(\n request: RowUnifyRequest,\n ): Promise<RowUnifyResponse> {\n const response = await this.api.rowUnify(request);\n return response.data;\n }\n\n /**\n * Compute similarity between two row types.\n *\n * @param request - Similarity request with two row types.\n * @returns Similarity score and feature comparison.\n */\n async similarity(\n request: RowSimilarityRequest,\n ): Promise<RowSimilarityResponse> {\n const response = await this.api.rowSimilarity(request);\n return response.data;\n }\n\n /**\n * Integrate entities across namespaces using shared features.\n *\n * @param request - Integration request with match features.\n * @returns Integration groups.\n */\n async integrate(\n request: RowIntegrateRequest,\n ): Promise<RowIntegrateResponse> {\n const response = await this.api.rowIntegrate(request);\n return response.data;\n }\n\n /**\n * Execute a dynamic query with pattern matching.\n *\n * @param request - Dynamic query with clauses and options.\n * @returns Query results.\n */\n async query(\n request: DynamicQueryRequest,\n ): Promise<DynamicQueryResponse> {\n const response = await this.api.dynamicQuery(request);\n return response.data;\n }\n}\n","import type { StructuredIngestion as GeneratedStructuredIngestion } from '../api-spec/generated/StructuredIngestion.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\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class SourcesClient {\n /** @internal */\n private readonly api: GeneratedStructuredIngestion;\n\n /** @internal */\n constructor(api: GeneratedStructuredIngestion) {\n this.api = api;\n }\n\n /**\n * Register a new data source.\n *\n * @param request - Source registration request.\n * @returns Registration result.\n */\n async register(\n request: RegisterSourceRequest,\n ): Promise<RegisterSourceResponse> {\n const response = await this.api.registerSource(request);\n return response.data;\n }\n\n /**\n * List all registered data sources.\n *\n * @returns List of sources.\n */\n async list(): Promise<ListSourcesResponse> {\n const response = await this.api.listSources();\n return response.data;\n }\n\n /**\n * Get details for a registered source.\n *\n * @param sourceId - Source identifier.\n * @returns Source details and health status.\n */\n async get(sourceId: string): Promise<SourceDetailResponse> {\n const response = await this.api.getSource(sourceId);\n return response.data;\n }\n\n /**\n * Delete a registered source.\n *\n * @param sourceId - Source identifier.\n */\n async delete(sourceId: string): Promise<void> {\n await this.api.deleteSource(sourceId);\n }\n\n /**\n * Discover schema from a registered source.\n *\n * @param sourceId - Source identifier.\n * @param request - Discovery parameters.\n * @returns Discovered schema with sorts and relations.\n */\n async discoverSchema(\n sourceId: string,\n request: DiscoverSchemaRequest,\n ): Promise<DiscoverSchemaResponse> {\n const response = await this.api.discoverSchema(sourceId, request);\n return response.data;\n }\n\n /**\n * Ingest data from a registered source.\n *\n * @param sourceId - Source identifier.\n * @param request - Ingestion parameters.\n * @returns Ingestion results and statistics.\n */\n async ingest(\n sourceId: string,\n request: IngestFromSourceRequest,\n ): Promise<IngestFromSourceResponse> {\n const response = await this.api.ingestFromSource(sourceId, request);\n return response.data;\n }\n}\n","import type { Communities as GeneratedCommunities } from '../api-spec/generated/Communities.js';\nimport type {\n DetectCommunitiesRequest,\n DetectCommunitiesResponse,\n GetMembershipsRequest,\n GetMembershipsResponse,\n SearchCommunitiesRequest,\n SearchCommunitiesResponse,\n} from '../types/communities.js';\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class CommunitiesClient {\n /** @internal */\n private readonly api: GeneratedCommunities;\n\n /** @internal */\n constructor(api: GeneratedCommunities) {\n this.api = api;\n }\n\n /**\n * Detect communities from existing terms.\n *\n * @param request - Detection request with tenant ID and optional config.\n * @returns Detected communities with statistics.\n */\n async detect(\n request: DetectCommunitiesRequest,\n ): Promise<DetectCommunitiesResponse> {\n const response = await this.api.detectCommunities(request);\n return response.data;\n }\n\n /**\n * Get community memberships for a term.\n *\n * @param request - Membership request with term and tenant IDs.\n * @returns Memberships with community info.\n */\n async getMemberships(\n request: GetMembershipsRequest,\n ): Promise<GetMembershipsResponse> {\n const response = await this.api.getMemberships(request);\n return response.data;\n }\n\n /**\n * Search communities by entities, impact, level, or keyword.\n *\n * @param request - Search request with mode and tenant ID.\n * @returns Matching communities.\n */\n async search(\n request: SearchCommunitiesRequest,\n ): Promise<SearchCommunitiesResponse> {\n const response = await this.api.searchCommunities(request);\n return response.data;\n }\n}\n","import type { Strings as GeneratedStrings } from '../api-spec/generated/Strings.js';\nimport type { Arithmetic as GeneratedArithmetic } from '../api-spec/generated/Arithmetic.js';\nimport type { Copy as GeneratedCopy } from '../api-spec/generated/Copy.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 (/strings/), arithmetic operations\n * (/arithmetic/), and copy operations (/copy/) into a single client.\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class UtilitiesClient {\n /** @internal */\n private readonly strings: GeneratedStrings;\n /** @internal */\n private readonly arithmetic: GeneratedArithmetic;\n /** @internal */\n private readonly copy: GeneratedCopy;\n\n /** @internal */\n constructor(strings: GeneratedStrings, arithmetic: GeneratedArithmetic, copy: GeneratedCopy) {\n this.strings = strings;\n this.arithmetic = arithmetic;\n this.copy = copy;\n }\n\n // --- String Operations ---\n\n /**\n * Compare two strings.\n *\n * @param request - Comparison request.\n */\n async stringCompare(\n request: StringCompareRequest,\n ): Promise<void> {\n await this.strings.stringCompare(request);\n }\n\n /**\n * Compare strings with a predicate operator (Wild_LIFE-style).\n *\n * @param request - Predicate comparison request.\n */\n async stringComparePredicate(\n request: StringComparePredicateRequest,\n ): Promise<void> {\n await this.strings.stringComparePredicate(request);\n }\n\n /**\n * Batch string comparison.\n *\n * @param request - Batch comparison request.\n */\n async stringCompareBatch(\n request: BatchStringCompareRequest,\n ): Promise<void> {\n await this.strings.stringCompareBatch(request);\n }\n\n /**\n * Concatenate two strings.\n *\n * @param request - Concatenation request.\n */\n async stringConcat(\n request: StringConcatRequest,\n ): Promise<void> {\n await this.strings.stringConcat(request);\n }\n\n /**\n * Get string length.\n *\n * @param request - Length request.\n */\n async stringLength(\n request: StringLengthRequest,\n ): Promise<void> {\n await this.strings.stringLength(request);\n }\n\n /**\n * Perform a general string operation.\n *\n * @param request - String operation request.\n */\n async stringOp(\n request: StringOpRequest,\n ): Promise<void> {\n await this.strings.stringOp(request);\n }\n\n /**\n * Extract a substring.\n *\n * @param request - Substring request.\n */\n async substring(\n request: SubstringRequest,\n ): Promise<void> {\n await this.strings.stringSubstr(request);\n }\n\n /**\n * Get ASCII code of a character.\n *\n * @param request - ASC request.\n */\n async asc(\n request: AscRequest,\n ): Promise<void> {\n await this.strings.stringAsc(request);\n }\n\n /**\n * Get character from ASCII code.\n *\n * @param request - CHR request.\n */\n async chr(\n request: ChrRequest,\n ): Promise<void> {\n await this.strings.stringChr(request);\n }\n\n /**\n * Convert a number to string.\n *\n * @param request - Number-to-string request.\n */\n async numberToString(\n request: NumberToStringRequest,\n ): Promise<void> {\n await this.strings.numberToString(request);\n }\n\n // --- Arithmetic Operations ---\n\n /**\n * Perform relational addition.\n *\n * @param request - Relational arithmetic request (3-way).\n */\n async add(\n request: RelationalArithRequest,\n ): Promise<void> {\n await this.arithmetic.arithAdd(request);\n }\n\n /**\n * Perform relational subtraction.\n *\n * @param request - Relational arithmetic request (3-way).\n */\n async sub(\n request: RelationalArithRequest,\n ): Promise<void> {\n await this.arithmetic.arithSub(request);\n }\n\n /**\n * Perform relational multiplication.\n *\n * @param request - Relational arithmetic request (3-way).\n */\n async mult(\n request: RelationalArithRequest,\n ): Promise<void> {\n await this.arithmetic.arithMult(request);\n }\n\n /**\n * Perform relational division.\n *\n * @param request - Relational arithmetic request (3-way).\n */\n async div(\n request: RelationalArithRequest,\n ): Promise<void> {\n await this.arithmetic.arithDiv(request);\n }\n\n /**\n * Apply a math function (sin, cos, sqrt, etc.).\n *\n * @param request - Math function request.\n */\n async math(\n request: MathFunctionRequest,\n ): Promise<void> {\n await this.arithmetic.mathFunction(request);\n }\n\n /**\n * Perform a bitwise operation.\n *\n * @param request - Bitwise request.\n */\n async bitwise(\n request: BitwiseRequest,\n ): Promise<void> {\n await this.arithmetic.bitwiseOp(request);\n }\n\n /**\n * Perform modular arithmetic (mod, rem, gcd).\n *\n * @param request - Modular arithmetic request.\n */\n async modular(\n request: ModularArithRequest,\n ): Promise<void> {\n await this.arithmetic.modularArith(request);\n }\n\n // --- Copy Operations ---\n\n /**\n * Copy a term.\n *\n * @param request - Copy request with mode.\n */\n async copyTerm(\n request: CopyTermRequest,\n ): Promise<void> {\n await this.copy.copyTerm(request);\n }\n\n /**\n * Deep copy a term with co-reference preservation.\n *\n * @param request - Deep copy request.\n */\n async deepCopy(\n request: DeepCopyRequest,\n ): Promise<void> {\n await this.copy.deepCopy(request);\n }\n\n /**\n * Batch copy multiple terms.\n *\n * @param request - Batch copy request.\n */\n async batchCopy(\n request: BatchCopyRequest,\n ): Promise<void> {\n await this.copy.batchCopy(request);\n }\n}\n","import type { Scenarios as GeneratedScenarios } from '../api-spec/generated/Scenarios.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\n/**\n * Resource client for scenario operations.\n *\n * @remarks\n * Provides CRUD operations for scenarios (what-if analysis, verification).\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class ScenariosClient {\n /** @internal */\n private readonly api: GeneratedScenarios;\n\n /** @internal */\n constructor(api: GeneratedScenarios) {\n this.api = api;\n }\n\n /**\n * Create a new scenario.\n *\n * @param request - Scenario creation parameters.\n * @returns Created scenario (may include interactive questions).\n */\n async create(request: CreateScenarioRequest): Promise<CreateScenarioResponse> {\n const response = await this.api.createScenario(request);\n return response.data;\n }\n\n /**\n * List all scenarios.\n *\n * @returns List of scenarios.\n */\n async list(): Promise<ListScenariosResponse> {\n const response = await this.api.listScenarios();\n return response.data;\n }\n\n /**\n * Get a scenario by ID.\n *\n * @param id - Scenario ID.\n * @returns Scenario data.\n */\n async get(id: string): Promise<GetScenarioResponse> {\n const response = await this.api.getScenario(id);\n return response.data;\n }\n\n /**\n * Update a scenario.\n *\n * @param id - Scenario ID.\n * @param request - Update parameters.\n * @returns Updated scenario.\n */\n async update(\n id: string,\n request: UpdateScenarioRequest,\n ): Promise<UpdateScenarioResponse> {\n const response = await this.api.updateScenario(id, request);\n return response.data;\n }\n\n /**\n * Verify a scenario.\n *\n * @param id - Scenario ID.\n * @param request - Verification parameters.\n * @returns Verification results.\n */\n async verify(\n id: string,\n request: VerifyScenarioRequest,\n ): Promise<VerifyScenarioResponse> {\n const response = await this.api.verifyScenario(id, request);\n return response.data;\n }\n}\n","import type { ActionReviews as GeneratedActionReviews } from '../api-spec/generated/ActionReviews.js';\nimport type {\n ApproveActionRequest,\n RejectActionRequest,\n ModifyActionRequest,\n BulkApproveActionsRequest,\n BulkRejectActionsRequest,\n ActionReviewResponse,\n BulkActionReviewResponse,\n ListActionReviewsResponse,\n ActionReviewSummaryDto,\n} from '../types/action-reviews.js';\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class ActionReviewsClient {\n /** @internal */\n private readonly api: GeneratedActionReviews;\n /** @internal */\n private readonly tenantId: string;\n\n /** @internal */\n constructor(api: GeneratedActionReviews, tenantId: string) {\n this.api = api;\n this.tenantId = tenantId;\n }\n\n /**\n * Approve an autonomous action.\n *\n * @param request - Approval request with review ID.\n * @returns Review response with execution status.\n */\n async approve(\n request: ApproveActionRequest,\n ): Promise<ActionReviewResponse> {\n const response = await this.api.approveAction(request);\n return response.data;\n }\n\n /**\n * Reject an autonomous action.\n *\n * @param request - Rejection request with review ID and reason.\n * @returns Review response with execution status.\n */\n async reject(\n request: RejectActionRequest,\n ): Promise<ActionReviewResponse> {\n const response = await this.api.rejectAction(request);\n return response.data;\n }\n\n /**\n * Modify an autonomous action.\n *\n * @param request - Modification request with changes.\n * @returns Review response with execution status.\n */\n async modify(\n request: ModifyActionRequest,\n ): Promise<ActionReviewResponse> {\n const response = await this.api.modifyAction(request);\n return response.data;\n }\n\n /**\n * Bulk approve multiple actions.\n *\n * @param request - Bulk approval request with review IDs.\n * @returns Bulk response with success/failure counts.\n */\n async bulkApprove(\n request: BulkApproveActionsRequest,\n ): Promise<BulkActionReviewResponse> {\n const response = await this.api.bulkApproveActions(request);\n return response.data;\n }\n\n /**\n * Bulk reject multiple actions.\n *\n * @param request - Bulk rejection request with review IDs and reason.\n * @returns Bulk response with success/failure counts.\n */\n async bulkReject(\n request: BulkRejectActionsRequest,\n ): Promise<BulkActionReviewResponse> {\n const response = await this.api.bulkRejectActions(request);\n return response.data;\n }\n\n /**\n * List pending action reviews.\n *\n * @returns Paginated list of pending reviews.\n */\n async listPending(): Promise<ListActionReviewsResponse> {\n const response = await this.api.listPendingActionReviews();\n return response.data;\n }\n\n /**\n * Get action review summary statistics.\n *\n * @returns Summary with counts and breakdowns.\n */\n async getSummary(): Promise<ActionReviewSummaryDto> {\n const response = await this.api.getActionReviewSummary({ tenant_id: this.tenantId });\n return response.data;\n }\n}\n","import type { Discovery as GeneratedDiscovery } from '../api-spec/generated/Discovery.js';\nimport type {\n DiscoverEffectsRequest,\n DiscoverEffectsResponse,\n PredictFromDiscoveryRequest,\n PredictFromDiscoveryResponse,\n} from '../types/discovery.js';\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class DiscoveryClient {\n /** @internal */\n private readonly api: GeneratedDiscovery;\n\n /** @internal */\n constructor(api: GeneratedDiscovery) {\n this.api = api;\n }\n\n /**\n * Discover causal effects from time series data.\n *\n * @param request - Effect discovery request.\n * @returns Discovered effects with regimes and horizons.\n */\n async discoverEffects(\n request: DiscoverEffectsRequest,\n ): Promise<DiscoverEffectsResponse> {\n const response = await this.api.discoverEffects(request);\n return response.data;\n }\n\n /**\n * Predict using discovered causal structure.\n *\n * @param request - Prediction request with current values and discovery sort ID.\n * @returns Prediction result with effect predictions by horizon.\n */\n async predict(\n request: PredictFromDiscoveryRequest,\n ): Promise<PredictFromDiscoveryResponse> {\n const response = await this.api.predictFromDiscovery(request);\n return response.data;\n }\n}\n","import type { Extraction as GeneratedExtraction } from '../api-spec/generated/Extraction.js';\nimport type {\n ExtractEntitiesRequest,\n ExtractEntitiesResponse,\n} from '../types/extract.js';\n\n/**\n * Resource client for entity extraction operations.\n *\n * @remarks\n * Provides NLP-based entity extraction from text.\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class ExtractClient {\n /** @internal */\n private readonly api: GeneratedExtraction;\n\n /** @internal */\n constructor(api: GeneratedExtraction) {\n this.api = api;\n }\n\n /**\n * Extract entities from text.\n *\n * @param request - Extraction request with text and options.\n * @returns Extracted entities with labels and model info.\n */\n async extractEntities(\n request: ExtractEntitiesRequest,\n ): Promise<ExtractEntitiesResponse> {\n const response = await this.api.extractEntities(request);\n return response.data;\n }\n}\n","import type { Oversight as GeneratedOversight } from '../api-spec/generated/Oversight.js';\nimport type {\n FormalJudgeRequest,\n FormalJudgeResponse,\n FormalJudgeRefinementResponse,\n CreateOversightSessionRequest,\n CreateOversightSessionResponse,\n FinalizeOversightSessionRequest,\n IngestStepRequest,\n OversightSessionStatusResponse,\n StepVerificationResponse,\n} from '../types/oversight.js';\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 * Live sessions support incremental step-by-step verification.\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class OversightClient {\n /** @internal */\n private readonly api: GeneratedOversight;\n\n /** @internal */\n constructor(api: GeneratedOversight) {\n this.api = api;\n }\n\n /**\n * Run single-pass FormalJudge oversight verification.\n *\n * @param request - Judge request with trajectory and user intent.\n * @returns Verdict, scores, violations, and optional certificate.\n */\n async judge(\n request: FormalJudgeRequest,\n ): Promise<FormalJudgeResponse> {\n const response = await this.api.judgeTrajectory(request);\n return response.data;\n }\n\n /**\n * Run iterative refinement FormalJudge pipeline.\n *\n * @param request - Judge request with trajectory and user intent.\n * @returns Results from each refinement round with convergence status.\n */\n async refine(\n request: FormalJudgeRequest,\n ): Promise<FormalJudgeRefinementResponse> {\n const response = await this.api.judgeWithRefinement(request);\n return response.data;\n }\n\n /**\n * Create a new live oversight session.\n *\n * @param request - Session creation request with user intent and optional config.\n * @returns Session ID and creation metadata.\n */\n async createSession(\n request: CreateOversightSessionRequest,\n ): Promise<CreateOversightSessionResponse> {\n const response = await this.api.createSession(request);\n return response.data;\n }\n\n /**\n * Finalize a live oversight session, running full verification.\n *\n * @param sessionId - Session UUID to finalize.\n * @param request - Optional final output and execution log.\n * @returns Final FormalJudge verdict for the session.\n */\n async finalizeSession(\n sessionId: string,\n request: FinalizeOversightSessionRequest,\n ): Promise<FormalJudgeResponse> {\n const response = await this.api.finalizeSession(sessionId, request);\n return response.data;\n }\n\n /**\n * Get the current status of a live oversight session.\n *\n * @param sessionId - Session UUID.\n * @returns Session status including step count, score, and alerts.\n */\n async getSessionStatus(\n sessionId: string,\n ): Promise<OversightSessionStatusResponse> {\n const response = await this.api.getSessionStatus(sessionId);\n return response.data;\n }\n\n /**\n * Ingest a single trajectory step and return incremental verification result.\n *\n * @param sessionId - Session UUID.\n * @param request - Step to ingest.\n * @returns Incremental verification result with alerts.\n */\n async ingestStep(\n sessionId: string,\n request: IngestStepRequest,\n ): Promise<StepVerificationResponse> {\n const response = await this.api.ingestStep(sessionId, request);\n return response.data;\n }\n}\n","import type { Cdl as GeneratedCdl } from '../api-spec/generated/Cdl.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\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 *\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class CdlClient {\n /** @internal */\n private readonly api: GeneratedCdl;\n\n /** @internal */\n constructor(api: GeneratedCdl) {\n this.api = api;\n }\n\n /**\n * Run differentiable forward chaining (Phases 1+2).\n *\n * @param request - Forward chaining parameters.\n * @returns Weighted facts, iteration metrics, and symbolic result.\n */\n async differentiableForwardChain(\n request: DifferentiableFcRequest,\n ): Promise<DifferentiableFcResponse> {\n const response = await this.api.differentiableForwardChain(request);\n return response.data;\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 * @returns Confidence scores and compatibility.\n */\n async softUnify(\n request: SoftUnifyRequest,\n ): Promise<SoftUnifyResponse> {\n const response = await this.api.softUnifyTerms(request);\n return response.data;\n }\n\n /**\n * Run tagged forward chaining with probabilistic semiring (Phase 1).\n *\n * @param request - Tagged forward chaining parameters.\n * @returns Tagged facts with probabilities.\n */\n async taggedForwardChain(\n request: TaggedFcRequest,\n ): Promise<TaggedFcResponse> {\n const response = await this.api.taggedForwardChain(request);\n return response.data;\n }\n\n /**\n * Run monadic fixpoint inference (Phase 3).\n *\n * @param request - Monadic fixpoint parameters.\n * @returns Facts with monadic metadata.\n */\n async monadicFixpoint(\n request: MonadicFixpointRequest,\n ): Promise<MonadicFixpointResponse> {\n const response = await this.api.monadicFixpointHandler(request);\n return response.data;\n }\n\n /**\n * Run derived inference through composed CDL layer (Phase 4).\n *\n * @param request - Feature pairs for inference.\n * @returns Inference results with architecture info.\n */\n async derivedInference(\n request: DerivedInferenceRequest,\n ): Promise<DerivedInferenceResponse> {\n const response = await this.api.derivedInference(request);\n return response.data;\n }\n\n /**\n * Classify text for safety violations using CDL fact grounding (Phase 5).\n *\n * @param request - Safety classification request.\n * @returns Safety decisions, probabilities, and model info.\n */\n async classifySafety(\n request: ClassifySafetyRequest,\n ): Promise<ClassifySafetyResponse> {\n const response = await this.api.classifySafety(request);\n return response.data;\n }\n\n /**\n * Dynamically add a sort to the CDL architecture (Phase 6).\n *\n * @param request - Sort definition.\n * @returns Adaptation result with verification.\n */\n async dynamicAddSort(\n request: DynamicAddSortRequest,\n ): Promise<DynamicAddSortResponse> {\n const response = await this.api.dynamicAddSort(request);\n return response.data;\n }\n\n /**\n * Get CDL subsystem status.\n *\n * @returns CDL component statuses.\n */\n async getStatus(): Promise<CdlStatusResponse> {\n const response = await this.api.cdlStatus();\n return response.data;\n }\n}\n","import type { NeuroSymbolic as GeneratedNeuroSymbolic } from '../api-spec/generated/NeuroSymbolic.js';\nimport type {\n NeuroSymbolicStatusResponse,\n DiagnosticsResponse,\n TrainingTriggerResponse,\n TrainFromTracesResponse,\n GFlowNetTrainResponse,\n E2ETrainingRequest,\n E2ETrainingResponse,\n SaveWeightsResponse,\n EmbeddingVerificationResponse,\n SortBoxRequest,\n SortBoxResponse,\n} from '../types/neuro-symbolic.js';\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class NeuroSymbolicClient {\n /** @internal */\n private readonly api: GeneratedNeuroSymbolic;\n\n /** @internal */\n constructor(api: GeneratedNeuroSymbolic) {\n this.api = api;\n }\n\n /**\n * Get neuro-symbolic system status.\n *\n * @returns System status.\n */\n async getStatus(): Promise<NeuroSymbolicStatusResponse> {\n const response = await this.api.neuroSymbolicStatus();\n return response.data;\n }\n\n /**\n * Get neuro-symbolic diagnostics.\n *\n * @returns Diagnostics information.\n */\n async getDiagnostics(): Promise<DiagnosticsResponse> {\n const response = await this.api.neuroSymbolicDiagnostics();\n return response.data;\n }\n\n /**\n * Trigger scorer training.\n *\n * @returns Training trigger result.\n */\n async trainScorer(): Promise<TrainingTriggerResponse> {\n const response = await this.api.neuroSymbolicTrain();\n return response.data;\n }\n\n /**\n * Trigger embedding training.\n *\n * @returns Training trigger result.\n */\n async trainEmbeddings(): Promise<TrainingTriggerResponse> {\n const response = await this.api.neuroSymbolicTrainEmbeddings();\n return response.data;\n }\n\n /**\n * Trigger GFlowNet training.\n *\n * @returns GFlowNet training result.\n */\n async trainGflownet(): Promise<GFlowNetTrainResponse> {\n const response = await this.api.neuroSymbolicTrainGflownet();\n return response.data;\n }\n\n /**\n * Train the neural scorer from accumulated search traces.\n *\n * Drains the trace buffer collected during guided searches and runs a training cycle.\n * This is the feedback loop for AlphaProof-style learning: search -> collect traces -> train -> improved search.\n * This is a blocking operation -- the response is returned after training completes.\n *\n * @returns Training result including loss and number of traces consumed.\n * @throws {ApiError} If the server returns an error response.\n * @example\n * ```ts\n * const result = await client.neuroSymbolic.trainFromTraces();\n * console.log(`Triggered: ${result.triggered}, Loss: ${result.loss}, Traces: ${result.traces_consumed}`);\n * ```\n * @remarks Uses untagged serialization. POST /api/v1/admin/neuro-symbolic/train/from-traces\n */\n async trainFromTraces(): Promise<TrainFromTracesResponse> {\n const response = await this.api.neuroSymbolicTrainFromTraces();\n return response.data;\n }\n\n /**\n * Run end-to-end training.\n *\n * @param request - Training configuration.\n * @returns Training results.\n */\n async trainE2e(\n request: E2ETrainingRequest,\n ): Promise<E2ETrainingResponse> {\n const response = await this.api.neuroSymbolicTrainE2E(request);\n return response.data;\n }\n\n /**\n * Save trained weights.\n *\n * @returns Save result.\n */\n async saveWeights(): Promise<SaveWeightsResponse> {\n const response = await this.api.neuroSymbolicSaveWeights();\n return response.data;\n }\n\n /**\n * Verify embedding quality.\n *\n * @returns Verification results for containment, meet preservation, and specificity.\n */\n async verifyEmbeddings(): Promise<EmbeddingVerificationResponse> {\n const response = await this.api.neuroSymbolicVerifyEmbeddings();\n return response.data;\n }\n\n /**\n * Look up a sort's box embedding.\n *\n * @param request - Sort box lookup request.\n * @returns Sort box coordinates and volume.\n */\n async sortBoxLookup(\n request: SortBoxRequest,\n ): Promise<SortBoxResponse> {\n const response = await this.api.neuroSymbolicSortBox(request);\n return response.data;\n }\n}\n","import type { Analysis as GeneratedAnalysis } from '../api-spec/generated/Analysis.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\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class AnalysisClient {\n /** @internal */\n private readonly api: GeneratedAnalysis;\n\n /** @internal */\n constructor(api: GeneratedAnalysis) {\n this.api = api;\n }\n\n /**\n * Run sort discovery analysis on existing terms.\n *\n * @param request - Discovery parameters.\n * @returns Discovery results with recommendations.\n */\n async sortDiscovery(request: SortDiscoveryRequest): Promise<SortDiscoveryResponse> {\n const response = await this.api.analyzeSortDiscovery(request);\n return response.data;\n }\n\n /**\n * Start an interactive attribute exploration session.\n *\n * @param request - Exploration parameters.\n * @returns Session ID and first question.\n */\n async startExploration(request: StartExplorationRequest): Promise<StartExplorationResponse> {\n const response = await this.api.startExploration(request);\n return response.data;\n }\n\n /**\n * Confirm the current implication in an exploration session.\n *\n * @param sessionId - Exploration session ID.\n * @returns Next question and progress.\n */\n async confirmImplication(sessionId: string): Promise<ConfirmResponse> {\n const response = await this.api.confirmImplication(sessionId);\n return response.data;\n }\n\n /**\n * Refute the current implication with a counterexample.\n *\n * @param sessionId - Exploration session ID.\n * @param request - Counterexample.\n * @returns Next question and progress.\n */\n async refuteImplication(\n sessionId: string,\n request: RefuteRequest,\n ): Promise<RefuteResponse> {\n const response = await this.api.refuteImplication(sessionId, request);\n return response.data;\n }\n\n /**\n * Get the current status of an exploration session.\n *\n * @param sessionId - Exploration session ID.\n * @returns Session status with progress and confirmed implications.\n */\n async getExplorationStatus(sessionId: string): Promise<ExplorationStatusResponse> {\n const response = await this.api.explorationStatus(sessionId);\n return response.data;\n }\n\n /**\n * Complete an exploration session and create rules from the discovered basis.\n *\n * @param sessionId - Exploration session ID.\n * @returns Final implications and rules created.\n */\n async completeExploration(sessionId: string): Promise<ExplorationCompleteResponse> {\n const response = await this.api.completeExploration(sessionId);\n return response.data;\n }\n}\n","import type { Preferences as GeneratedPreferences } from '../api-spec/generated/Preferences.js';\nimport type {\n RecordSelectionRequest,\n RecordSelectionResponse,\n PredictPreferencesRequest,\n PredictPreferencesResponse,\n} from '../types/preferences.js';\n\n/**\n * Resource client for Bayesian preference learning operations.\n *\n * @remarks\n * Provides user preference recording and prediction for term ranking.\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class PreferencesClient {\n /** @internal */\n private readonly api: GeneratedPreferences;\n\n /** @internal */\n constructor(api: GeneratedPreferences) {\n this.api = api;\n }\n\n /**\n * Record a user's term selection for preference learning.\n *\n * @param request - Selection to record.\n * @returns Recording result.\n */\n async recordSelection(\n request: RecordSelectionRequest,\n ): Promise<RecordSelectionResponse> {\n const response = await this.api.recordSelection(request);\n return response.data;\n }\n\n /**\n * Predict user preferences for candidate terms.\n *\n * @param request - Prediction request with candidates.\n * @returns Predictions sorted by score.\n */\n async predict(\n request: PredictPreferencesRequest,\n ): Promise<PredictPreferencesResponse> {\n const response = await this.api.predictPreferences(request);\n return response.data;\n }\n}\n","import type { Functions as GeneratedFunctions } from '../api-spec/generated/Functions.js';\nimport type {\n RegisterFunctionRequest,\n RegisterFunctionResponse,\n EvaluateFunctionRequest,\n EvaluateFunctionResponse,\n} from '../types/functions.js';\n\n/**\n * Resource client for LIFE-style user-defined function operations.\n *\n * @remarks\n * Provides registration and evaluation of user-defined functions using\n * the LIFE-style FunctionEvaluator. Functions are defined by ordered clauses\n * with pattern matching, optional guards, and expression bodies.\n *\n * Function values use a tagged serialization format with a `type` discriminator\n * (e.g., `{\"type\": \"Integer\", \"value\": 42}`).\n *\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class FunctionsClient {\n /** @internal */\n private readonly api: GeneratedFunctions;\n\n /** @internal */\n constructor(api: GeneratedFunctions) {\n this.api = api;\n }\n\n /**\n * Register a user-defined function.\n *\n * @param request - Function registration parameters including name, arity, and clauses.\n * @returns Registration confirmation with the assigned function UUID and clause count.\n * @throws {ApiError} If the request fails (e.g., invalid clauses or duplicate name).\n *\n * @remarks\n * Functions are defined by ordered clauses. Each clause has parameter patterns,\n * an optional guard, and a body. During evaluation, clauses are tried in order;\n * the first whose patterns and guard match is evaluated.\n *\n * Uses tagged {@link FunctionValueDto} serialization format.\n *\n * @example\n * ```typescript\n * const result = await client.functions.registerFunction({\n * name: 'factorial',\n * arity: 1,\n * tenant_id: 'my-tenant-uuid',\n * clauses: [\n * {\n * parameters: [{ type: 'Integer', value: 0 }],\n * body: { type: 'Value', value: { type: 'Integer', value: 1 } },\n * },\n * {\n * parameters: [{ type: 'Variable', name: 'n' }],\n * guard: { type: 'GreaterThan', var: 'n', value: { type: 'Integer', value: 0 } },\n * body: {\n * type: 'Expression',\n * expr: {\n * type: 'BinaryOp',\n * op: 'Multiply',\n * left: { type: 'Variable', name: 'n' },\n * right: {\n * type: 'FunctionCall',\n * function_name: 'factorial',\n * arguments: [{\n * type: 'BinaryOp',\n * op: 'Subtract',\n * left: { type: 'Variable', name: 'n' },\n * right: { type: 'Literal', value: { type: 'Integer', value: 1 } },\n * }],\n * },\n * },\n * },\n * },\n * ],\n * });\n * console.log(result.function_id); // UUID of the registered function\n * ```\n */\n async registerFunction(\n request: RegisterFunctionRequest,\n ): Promise<RegisterFunctionResponse> {\n const response = await this.api.registerFunction(request);\n return response.data;\n }\n\n /**\n * Evaluate a registered function with the given arguments.\n *\n * @param request - Evaluation parameters including function name and argument values.\n * @returns Evaluation result: either a concrete value or a suspension reason.\n * @throws {ApiError} If the request fails (e.g., function not found or arity mismatch).\n *\n * @remarks\n * The response is a tagged union discriminated by `result_type`:\n * - `\"Value\"` — evaluation succeeded, `value` contains the result.\n * - `\"Suspend\"` — evaluation was suspended, `reason` explains why.\n *\n * The `max_depth` parameter limits recursion depth (defaults to 100).\n *\n * Uses tagged {@link FunctionValueDto} serialization format.\n *\n * @example\n * ```typescript\n * const result = await client.functions.evaluateFunction({\n * function_name: 'factorial',\n * arguments: [{ type: 'Integer', value: 5 }],\n * tenant_id: 'my-tenant-uuid',\n * });\n * if (result.result_type === 'Value') {\n * console.log(result.value); // { type: 'Integer', value: 120 }\n * } else {\n * console.log('Suspended:', result.reason);\n * }\n * ```\n */\n async evaluateFunction(\n request: EvaluateFunctionRequest,\n ): Promise<EvaluateFunctionResponse> {\n const response = await this.api.evaluateFunction(request);\n return response.data;\n }\n}\n","import type { WebhookActions as GeneratedWebhookActions } from '../api-spec/generated/WebhookActions.js';\nimport type {\n RegisterExternalActionRequest,\n RegisterExternalActionResponse,\n InvokeActionRequest,\n InvokeActionResponse,\n WebhookCallbackRequest,\n WebhookCallbackResponse,\n ListExternalActionsResponse,\n ListPendingInvocationsResponse,\n} from '../types/webhook-actions.js';\n\n/**\n * Resource client for webhook-based external action operations.\n *\n * @remarks\n * Provides registration, invocation, listing, and callback completion\n * for external actions that integrate via webhooks. External actions\n * create sorts inheriting from `effect` in the sort hierarchy, and\n * invocations use residuation to suspend until the webhook callback\n * provides output values.\n *\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class WebhookActionsClient {\n /** @internal */\n private readonly api: GeneratedWebhookActions;\n /** @internal */\n private readonly tenantId: string;\n\n /** @internal */\n constructor(api: GeneratedWebhookActions, tenantId: string) {\n this.api = api;\n this.tenantId = tenantId;\n }\n\n /**\n * Register a new external action type.\n *\n * @param request - Registration parameters including name, webhook URL, inputs, and outputs.\n * @returns Registration confirmation with the assigned action ID and sort ID.\n * @throws {ApiError} If the request fails (e.g., duplicate name or invalid webhook URL).\n *\n * @remarks\n * Creates a new sort in the hierarchy inheriting from `effect`,\n * with features for all inputs and outputs. The sort name matches\n * the action name.\n *\n * @example\n * ```typescript\n * const result = await client.webhookActions.register({\n * name: 'send_email',\n * webhook_url: 'https://api.example.com/actions/send-email',\n * required_inputs: ['to', 'subject', 'body'],\n * outputs: ['message_id', 'sent_at'],\n * tenant_id: 'my-tenant-uuid',\n * });\n * console.log(result.action_id, result.sort_id);\n * ```\n */\n async register(\n request: RegisterExternalActionRequest,\n ): Promise<RegisterExternalActionResponse> {\n const response = await this.api.registerExternalAction(request);\n return response.data;\n }\n\n /**\n * Invoke a registered external action.\n *\n * @param name - Name of the action to invoke.\n * @param request - Invocation parameters including input values.\n * @returns Invocation details with the callback URL and invocation ID.\n * @throws {ApiError} If the request fails (e.g., action not found or missing required inputs).\n *\n * @remarks\n * Creates an action Psi-term with the provided inputs, sends a webhook\n * to the registered URL, and residuates on unbound outputs. The external\n * system should POST to the returned `callback_url` when complete.\n *\n * @example\n * ```typescript\n * const result = await client.webhookActions.invoke('send_email', {\n * action_name: 'send_email',\n * inputs: { to: 'user@example.com', subject: 'Hello', body: 'World' },\n * tenant_id: 'my-tenant-uuid',\n * });\n * console.log(result.invocation_id, result.callback_url);\n * ```\n */\n async invoke(\n name: string,\n request: InvokeActionRequest,\n ): Promise<InvokeActionResponse> {\n const response = await this.api.invokeAction(name, request);\n return response.data;\n }\n\n /**\n * Complete a pending invocation by processing a webhook callback.\n *\n * @param invocationId - The invocation ID to complete.\n * @param request - Callback data including status and output values.\n * @returns Callback processing result with demon firing details.\n * @throws {ApiError} If the request fails (e.g., invocation not found or already completed).\n *\n * @remarks\n * Binds output values to the action Psi-term's features and fires demons.\n * Optionally bridges the result as a belief into a cognitive agent's TermStore\n * via `notify_agent_id` and `notify_tenant_id`.\n *\n * @example\n * ```typescript\n * const result = await client.webhookActions.completeInvocation('inv-123', {\n * status: 'success',\n * outputs: { message_id: 'msg-456', sent_at: '2024-01-15T10:30:00Z' },\n * });\n * console.log(result.demons_fired, result.term_updated);\n * ```\n */\n async completeInvocation(\n invocationId: string,\n request: WebhookCallbackRequest,\n ): Promise<WebhookCallbackResponse> {\n const response = await this.api.completeInvocation(invocationId, request);\n return response.data;\n }\n\n /**\n * List all registered external actions for the tenant.\n *\n * @returns List of registered actions with total count.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Returns all actions registered for the tenant configured on this client.\n *\n * @example\n * ```typescript\n * const result = await client.webhookActions.listActions();\n * console.log(`Found ${result.total} actions`);\n * for (const action of result.actions) {\n * console.log(action.name, action.webhook_url);\n * }\n * ```\n */\n async listActions(): Promise<ListExternalActionsResponse> {\n const response = await this.api.listExternalActions({ tenant_id: this.tenantId });\n return response.data;\n }\n\n /**\n * List pending invocations for the tenant.\n *\n * @returns List of pending invocations with total count.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Returns all invocations awaiting webhook callback completion\n * for the tenant configured on this client.\n *\n * @example\n * ```typescript\n * const result = await client.webhookActions.listPendingInvocations();\n * console.log(`${result.total_pending} pending invocations`);\n * for (const inv of result.invocations) {\n * console.log(inv.invocation_id, inv.action_name, inv.status);\n * }\n * ```\n */\n async listPendingInvocations(): Promise<ListPendingInvocationsResponse> {\n const response = await this.api.listPendingInvocations({ tenant_id: this.tenantId });\n return response.data;\n }\n}\n","import type { Synthetic as GeneratedSynthetic } from '../api-spec/generated/Synthetic.js';\nimport type {\n CalibrateRequest,\n CalibrationReportDto,\n CheckDiversityRequest,\n CheckDiversityResponse,\n ExportJsonlResponse,\n GenerateNegativesRequest,\n GenerateNegativesResponse,\n GenerateSyntheticDataRequest,\n GenerateSyntheticDataResponse,\n GenerationPromptRequest,\n GenerationPromptResponse,\n VerbalizeTermRequest,\n VerbalizeTermResponse,\n VerifyFaithfulnessRequest,\n VerifyFaithfulnessResponse,\n VerifyRoundTripRequest,\n VerifyRoundTripResponse,\n} from '../types/synthetic.js';\n\n/**\n * Resource client for synthetic data generation operations.\n *\n * @remarks\n * Provides methods for generating synthetic training data from the knowledge base,\n * including positive and negative examples, verbalization, calibration, diversity\n * checking, faithfulness verification, and JSONL export.\n *\n * All endpoints operate on the authenticated tenant's knowledge base.\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class SyntheticClient {\n /** @internal */\n private readonly api: GeneratedSynthetic;\n\n /** @internal */\n constructor(api: GeneratedSynthetic) {\n this.api = api;\n }\n\n /**\n * Build a generation prompt for LLM-based verbalization.\n *\n * @param request - Prompt generation parameters including term ID and optional schema sort IDs.\n * @returns A structured prompt with stable prefix (cacheable) and dynamic content.\n * @throws {ApiError} If the request fails (e.g., term not found).\n *\n * @remarks\n * Creates a structured prompt with a stable prefix (cacheable across batch calls)\n * and dynamic content for a specific term. Mirrors the extraction pipeline's prompt\n * architecture for KV-cache reuse.\n *\n * Requires X-Tenant-Id header (set via client configuration).\n *\n * @example\n * ```typescript\n * const result = await client.synthetic.buildGenerationPrompt({\n * term_id: 'term-uuid',\n * schema_sort_ids: ['sort-uuid-1', 'sort-uuid-2'],\n * });\n * console.log(result.full_prompt);\n * console.log(result.stable_prefix); // cacheable across calls\n * ```\n */\n async buildGenerationPrompt(\n request: GenerationPromptRequest,\n ): Promise<GenerationPromptResponse> {\n const response = await this.api.buildGenerationPrompt(request);\n return response.data;\n }\n\n /**\n * Run ECE calibration on extraction predictions.\n *\n * @param request - Calibration parameters including predictions and sort name mapping.\n * @returns ECE calibration report with per-sort results and augmentation targets.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Computes per-sort and per-feature Expected Calibration Error, identifies\n * augmentation targets, and allocates exponential budgets for targeted\n * synthetic data generation.\n *\n * @example\n * ```typescript\n * const report = await client.synthetic.calibrate({\n * predictions: [\n * { sort_id: 'sort-uuid', confidence: 0.9, is_correct: true },\n * ],\n * sort_names: { 'sort-uuid': 'Employee' },\n * });\n * console.log(`Global ECE: ${report.global_ece}`);\n * for (const target of report.augmentation_targets) {\n * console.log(`${target.sort_name} needs ${target.recommended_examples} more examples`);\n * }\n * ```\n */\n async calibrate(request: CalibrateRequest): Promise<CalibrationReportDto> {\n const response = await this.api.calibrate(request);\n return response.data;\n }\n\n /**\n * Check diversity of a candidate term against existing terms in the knowledge base.\n *\n * @param request - Diversity check parameters including candidate entity and existing term IDs.\n * @returns Diversity check result with novelty score and closest match.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Computes structural similarity using Wu-Palmer sort distance and Jaccard feature\n * overlap. Returns novelty score and closest match.\n *\n * Requires X-Tenant-Id header (set via client configuration).\n *\n * @example\n * ```typescript\n * const result = await client.synthetic.checkDiversity({\n * candidate: { sort_id: 'sort-uuid', features: { name: 'Alice' } },\n * existing_term_ids: ['term-uuid-1', 'term-uuid-2'],\n * min_diversity_score: 0.3,\n * });\n * console.log(`Novel: ${result.is_diverse}, score: ${result.novelty_score}`);\n * ```\n */\n async checkDiversity(\n request: CheckDiversityRequest,\n ): Promise<CheckDiversityResponse> {\n const response = await this.api.checkDiversity(request);\n return response.data;\n }\n\n /**\n * Export synthetic training data as JSONL format.\n *\n * @param request - Generation parameters (same as generateSynthetic).\n * @returns JSONL string and example count.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Generates synthetic data and returns it directly as JSONL (one JSON object per line),\n * suitable for HuggingFace-compatible fine-tuning pipelines.\n *\n * Requires X-Tenant-Id header (set via client configuration).\n *\n * @example\n * ```typescript\n * const result = await client.synthetic.exportJsonl({\n * target_sorts: ['sort-uuid'],\n * max_terms_per_sort: 50,\n * });\n * console.log(`Exported ${result.example_count} examples`);\n * // Write JSONL to file for fine-tuning\n * ```\n */\n async exportJsonl(\n request: GenerateSyntheticDataRequest,\n ): Promise<ExportJsonlResponse> {\n const response = await this.api.exportJsonl(request);\n return response.data;\n }\n\n /**\n * Generate enhanced negative examples for target sorts.\n *\n * @param request - Negative generation parameters including target sorts and strategy flags.\n * @returns Generated negative examples with provenance.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Uses principled strategies to create training examples that are negative (invalid)\n * for specific, documented reasons: sort incompatibility, feature perturbation,\n * cross-sort confusion, missing required features, and feature type mismatch.\n *\n * Requires X-Tenant-Id header (set via client configuration).\n *\n * @example\n * ```typescript\n * const result = await client.synthetic.generateNegatives({\n * target_sorts: ['sort-uuid-1', 'sort-uuid-2'],\n * max_per_sort: 5,\n * seed: 42,\n * });\n * console.log(`Generated ${result.count} negatives`);\n * for (const neg of result.negatives) {\n * console.log(`${neg.strategy}: ${neg.explanation}`);\n * }\n * ```\n */\n async generateNegatives(\n request: GenerateNegativesRequest,\n ): Promise<GenerateNegativesResponse> {\n const response = await this.api.generateNegatives(request);\n return response.data;\n }\n\n /**\n * Generate synthetic training data from the knowledge base.\n *\n * @param request - Generation parameters including target sorts, strategy flags, and limits.\n * @returns Comprehensive generation result with examples, reports, and optional verification.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Uses constraint solving (backward chaining, CLP(FD), MCMC, forward chaining) to\n * generate valid Psi-terms, then converts them into multi-format training pairs for\n * SLM fine-tuning. Supports 5 training pair formats: Extraction, QuestionAnswer,\n * FillBlank, Negative, and MultiHop.\n *\n * Requires X-Tenant-Id header (set via client configuration).\n *\n * @example\n * ```typescript\n * const result = await client.synthetic.generateSynthetic({\n * target_sorts: ['sort-uuid'],\n * max_terms_per_sort: 100,\n * enable_verbalization: true,\n * seed: 42,\n * });\n * console.log(`Generated ${result.training_pairs_count} training pairs`);\n * console.log(`Report: ${result.report.terms_generated} terms generated`);\n * ```\n */\n async generateSynthetic(\n request: GenerateSyntheticDataRequest,\n ): Promise<GenerateSyntheticDataResponse> {\n const response = await this.api.generateSynthetic(request);\n return response.data;\n }\n\n /**\n * Verbalize a single term from the knowledge base.\n *\n * @param request - Verbalization parameters including term ID and strategy.\n * @returns Verbalization result with generated text.\n * @throws {ApiError} If the request fails (e.g., term not found).\n *\n * @remarks\n * Converts a Psi-term into natural language text using the specified strategy.\n * Useful for on-demand text generation from existing terms.\n *\n * Requires X-Tenant-Id header (set via client configuration).\n *\n * @example\n * ```typescript\n * const result = await client.synthetic.verbalizeTerm({\n * term_id: 'term-uuid',\n * strategy: 'SchemaGuided',\n * include_parent_context: true,\n * });\n * console.log(result.result.text);\n * ```\n */\n async verbalizeTerm(\n request: VerbalizeTermRequest,\n ): Promise<VerbalizeTermResponse> {\n const response = await this.api.verbalizeTerm(request);\n return response.data;\n }\n\n /**\n * Verify faithfulness of generated text against source entities.\n *\n * @param request - Verification parameters with original and extracted feature maps.\n * @returns Faithfulness verification result with score and mismatch details.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Compares original entity features against extracted features to determine if the\n * generated text faithfully represents the source Psi-term. Uses exact string matching\n * with configurable thresholds for score and recovery rate.\n *\n * Requires X-Tenant-Id header (set via client configuration).\n *\n * @example\n * ```typescript\n * const result = await client.synthetic.verifyFaithfulness({\n * original: { name: 'Alice', role: 'Engineer' },\n * extracted: { name: 'Alice', role: 'Developer' },\n * min_score: 0.5,\n * });\n * console.log(`Passed: ${result.passed}, Score: ${result.score}`);\n * ```\n */\n async verifyFaithfulness(\n request: VerifyFaithfulnessRequest,\n ): Promise<VerifyFaithfulnessResponse> {\n const response = await this.api.verifyFaithfulness(request);\n return response.data;\n }\n\n /**\n * Verify round-trip faithfulness of extracted entities against ground truth.\n *\n * @param request - Verification parameters with ground truth and extracted entities.\n * @returns Round-trip verification result with per-entity details.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Uses OSF-aware verification with Wu-Palmer sort similarity, feature-level comparison\n * with type-aware value similarity, and Hungarian algorithm for optimal entity matching.\n *\n * Requires X-Tenant-Id header (set via client configuration).\n *\n * @example\n * ```typescript\n * const result = await client.synthetic.verifyRoundTrip({\n * ground_truth: [{ sort_id: 'sort-uuid', features: { name: 'Alice' } }],\n * extracted: [{ sort_id: 'sort-uuid', features: { name: 'Alice' } }],\n * min_faithfulness_score: 0.5,\n * });\n * console.log(`Passed: ${result.passed}, Score: ${result.faithfulness_score}`);\n * ```\n */\n async verifyRoundTrip(\n request: VerifyRoundTripRequest,\n ): Promise<VerifyRoundTripResponse> {\n const response = await this.api.verifyRoundTrip(request);\n return response.data;\n }\n}\n","import type { ProofEngine as GeneratedProofEngine } from '../api-spec/generated/ProofEngine.js';\nimport type {\n CreateRuleStoreRequest,\n RuleStoreResponse,\n AssertRuleRequest,\n AssertRuleResponse,\n RetractRuleRequest,\n RetractRuleResponse,\n FindRulesRequest,\n FindRulesResponse,\n MarkRuleStoreRequest,\n MarkRuleStoreResponse,\n UndoRuleStoreRequest,\n UndoRuleStoreResponse,\n CreateTermStoreRequest,\n TermStoreSessionResponse,\n CreateStoreTermRequest,\n ProofEngineCreateTermResponse,\n CreateVariableRequest,\n BindVariableRequest,\n BindVariableResponse,\n DereferenceRequest,\n DereferenceResponse,\n GetStoreTermRequest,\n GetStoreTermResponse,\n SetFeatureRequest,\n SetFeatureResponse,\n UnifyTermsRequest,\n UnifyTermsResponse,\n MarkTermStoreRequest,\n MarkTermStoreResponse,\n BacktrackTermStoreRequest,\n BacktrackTermStoreResponse,\n EvalBuiltinRequest,\n EvalBuiltinResponse,\n ListEvalFunctionsRequest,\n ListEvalFunctionsResponse,\n} from '../types/proof-engine.js';\n\n/**\n * Resource client for proof engine operations.\n *\n * @remarks\n * Provides low-level access to the proof engine's term store, rule store,\n * and built-in evaluation capabilities. The term store manages Psi-terms\n * with trail-based backtracking. The rule store manages logical rules\n * with assertion, retraction, and pattern matching. Eval provides access\n * to built-in functions.\n *\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class ProofEngineClient {\n /** @internal */\n private readonly api: GeneratedProofEngine;\n\n /** @internal */\n constructor(api: GeneratedProofEngine) {\n this.api = api;\n }\n\n // ─── Rule Store ───────────────────────────────────────────────────────────\n\n /**\n * Create a new rule store session.\n *\n * @param request - Rule store creation parameters including tenant ID.\n * @returns The created rule store session with store ID, tenant ID, and rule count.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * The rule store session manages logical rules for the proof engine.\n * Rules can be asserted, retracted, and queried within the session.\n *\n * @example\n * ```typescript\n * const session = await client.proofEngine.createRuleStoreSession({\n * tenant_id: 'tenant-uuid',\n * });\n * console.log(session.store_id);\n * ```\n */\n async createRuleStoreSession(\n request: CreateRuleStoreRequest,\n ): Promise<RuleStoreResponse> {\n const response = await this.api.createRuleStoreSession(request);\n return response.data;\n }\n\n /**\n * Get rule store session status.\n *\n * @param storeId - Rule store session identifier.\n * @returns The rule store session info including rule count.\n * @throws {ApiError} If the session does not exist.\n *\n * @remarks\n * Retrieves the current state of a rule store session.\n *\n * @example\n * ```typescript\n * const session = await client.proofEngine.getRuleStoreSession('store-uuid');\n * console.log(`${session.rule_count} rules in store`);\n * ```\n */\n async getRuleStoreSession(storeId: string): Promise<RuleStoreResponse> {\n const response = await this.api.getRuleStoreSession(storeId);\n return response.data;\n }\n\n /**\n * Assert a rule into the rule store.\n *\n * @param storeId - Rule store session identifier.\n * @param request - Rule assertion parameters including head, optional body, and priority.\n * @returns The assertion result with rule ID and updated rule count.\n * @throws {ApiError} If the session does not exist or the rule is invalid.\n *\n * @remarks\n * Adds a new rule to the rule store. If `assert_first` is true, the rule\n * is added at the beginning (high priority); otherwise at the end.\n * A rule with no body is treated as a fact.\n *\n * @example\n * ```typescript\n * const result = await client.proofEngine.assertRule('store-uuid', {\n * head: { constraints: [{ type: 'sort', var_name: 'X', sort_id: 'person-uuid' }] },\n * body: [],\n * });\n * console.log(`Rule ${result.rule_id} asserted, ${result.rule_count} total`);\n * ```\n */\n async assertRule(\n storeId: string,\n request: AssertRuleRequest,\n ): Promise<AssertRuleResponse> {\n const response = await this.api.assertRule(storeId, request);\n return response.data;\n }\n\n /**\n * Retract rules from the rule store by ID or pattern.\n *\n * @param storeId - Rule store session identifier.\n * @param request - Retraction parameters (rule ID, pattern, or retract-all flag).\n * @returns The retraction result with counts and retracted IDs.\n * @throws {ApiError} If the session does not exist.\n *\n * @remarks\n * TRUE HOMOICONICITY: Uses TermStore's RuleIndex with trail support for backtracking.\n * Either `rule_id` or `pattern` should be provided. If `retract_all` is true,\n * all matching rules are removed; otherwise only the first match.\n *\n * @example\n * ```typescript\n * const result = await client.proofEngine.retractRule('store-uuid', {\n * rule_id: 'rule-uuid',\n * });\n * console.log(`${result.retracted_count} rules retracted`);\n * ```\n */\n async retractRule(\n storeId: string,\n request: RetractRuleRequest,\n ): Promise<RetractRuleResponse> {\n const response = await this.api.retractRule(storeId, request);\n return response.data;\n }\n\n /**\n * Find rules matching a pattern.\n *\n * @param storeId - Rule store session identifier.\n * @param request - Find request with a rule clause pattern.\n * @returns Matching rules.\n * @throws {ApiError} If the session does not exist.\n *\n * @remarks\n * Searches the rule store for rules whose head matches the provided pattern.\n *\n * @example\n * ```typescript\n * const result = await client.proofEngine.findRules('store-uuid', {\n * pattern: { constraints: [{ type: 'sort', var_name: 'X', sort_id: 'person-uuid' }] },\n * });\n * console.log(`Found ${result.matching_rules.length} matching rules`);\n * ```\n */\n async findRules(\n storeId: string,\n request: FindRulesRequest,\n ): Promise<FindRulesResponse> {\n const response = await this.api.findRules(storeId, request);\n return response.data;\n }\n\n /**\n * Mark a rule store checkpoint for backtracking.\n *\n * @param storeId - Rule store session identifier.\n * @param request - Empty object (checkpoint is based on session state).\n * @returns The checkpoint marker index.\n * @throws {ApiError} If the session does not exist.\n *\n * @remarks\n * Creates a checkpoint in the rule store that can be reverted to using\n * {@link undoRuleStore}.\n *\n * @example\n * ```typescript\n * const marker = await client.proofEngine.markRuleStore('store-uuid', {});\n * console.log(`Checkpoint at index ${marker.marker_index}`);\n * ```\n */\n async markRuleStore(\n storeId: string,\n request: MarkRuleStoreRequest,\n ): Promise<MarkRuleStoreResponse> {\n const response = await this.api.markRuleStore(storeId, request);\n return response.data;\n }\n\n /**\n * Undo to a rule store checkpoint.\n *\n * @param storeId - Rule store session identifier.\n * @param request - Undo request with marker index to revert to.\n * @returns Whether the undo succeeded and the resulting rule count.\n * @throws {ApiError} If the session does not exist or the marker is invalid.\n *\n * @remarks\n * Reverts the rule store to a previously created checkpoint.\n *\n * @example\n * ```typescript\n * const result = await client.proofEngine.undoRuleStore('store-uuid', {\n * marker_index: 0,\n * });\n * console.log(`Undo ${result.success ? 'succeeded' : 'failed'}, ${result.rule_count} rules`);\n * ```\n */\n async undoRuleStore(\n storeId: string,\n request: UndoRuleStoreRequest,\n ): Promise<UndoRuleStoreResponse> {\n const response = await this.api.undoRuleStore(storeId, request);\n return response.data;\n }\n\n // ─── Term Store ───────────────────────────────────────────────────────────\n\n /**\n * Create a new term store session.\n *\n * @param request - Term store creation parameters including tenant ID.\n * @returns The created session with session ID, term count, and variable count.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * The term store session manages Psi-terms with trail-based backtracking.\n * Terms and variables can be created, bound, unified, and dereferenced.\n *\n * @example\n * ```typescript\n * const session = await client.proofEngine.createTermStoreSession({\n * tenant_id: 'tenant-uuid',\n * });\n * console.log(session.session_id);\n * ```\n */\n async createTermStoreSession(\n request: CreateTermStoreRequest,\n ): Promise<TermStoreSessionResponse> {\n const response = await this.api.createTermStoreSession(request);\n return response.data;\n }\n\n /**\n * Get term store session status.\n *\n * @param sessionId - Term store session identifier.\n * @returns The session info including term and variable counts.\n * @throws {ApiError} If the session does not exist.\n *\n * @remarks\n * Retrieves the current state of a term store session.\n *\n * @example\n * ```typescript\n * const session = await client.proofEngine.getTermStoreSession('session-uuid');\n * console.log(`${session.term_count} terms, ${session.variable_count} variables`);\n * ```\n */\n async getTermStoreSession(\n sessionId: string,\n ): Promise<TermStoreSessionResponse> {\n const response = await this.api.getTermStoreSession(sessionId);\n return response.data;\n }\n\n /**\n * Create a term in the term store.\n *\n * @param sessionId - Term store session identifier.\n * @param request - Term creation parameters including sort ID and optional features.\n * @returns The created term info with term ID.\n * @throws {ApiError} If the session does not exist or the sort is invalid.\n *\n * @remarks\n * Creates a new term in the term store with the specified sort and features.\n *\n * @example\n * ```typescript\n * const term = await client.proofEngine.createStoreTerm('session-uuid', {\n * sort_id: 'person-uuid',\n * features: { name: \"Alice\" },\n * });\n * console.log(`Created term ${term.term_id}`);\n * ```\n */\n async createStoreTerm(\n sessionId: string,\n request: CreateStoreTermRequest,\n ): Promise<ProofEngineCreateTermResponse> {\n const response = await this.api.createStoreTerm(sessionId, request);\n return response.data;\n }\n\n /**\n * Create a variable in the term store.\n *\n * @param sessionId - Term store session identifier.\n * @param request - Variable creation parameters including sort ID.\n * @returns The created variable info with term ID.\n * @throws {ApiError} If the session does not exist or the sort is invalid.\n *\n * @remarks\n * Creates a new unbound variable in the term store.\n *\n * @example\n * ```typescript\n * const variable = await client.proofEngine.createStoreVariable('session-uuid', {\n * sort_id: 'person-uuid',\n * });\n * console.log(`Created variable ${variable.term_id}, is_variable: ${variable.is_variable}`);\n * ```\n */\n async createStoreVariable(\n sessionId: string,\n request: CreateVariableRequest,\n ): Promise<ProofEngineCreateTermResponse> {\n const response = await this.api.createStoreVariable(sessionId, request);\n return response.data;\n }\n\n /**\n * Bind a variable to a term.\n *\n * @param sessionId - Term store session identifier.\n * @param request - Binding parameters with variable ID and target term ID.\n * @returns The binding result including trail length for backtracking.\n * @throws {ApiError} If the session does not exist or the binding is invalid.\n *\n * @remarks\n * Binds a variable to a specific term. The binding is recorded on the trail\n * and can be undone by backtracking.\n *\n * @example\n * ```typescript\n * const result = await client.proofEngine.bindStoreVariable('session-uuid', {\n * variable_id: 'var-uuid',\n * target_id: 'term-uuid',\n * });\n * console.log(`Bound ${result.variable_id} to ${result.bound_to}`);\n * ```\n */\n async bindStoreVariable(\n sessionId: string,\n request: BindVariableRequest,\n ): Promise<BindVariableResponse> {\n const response = await this.api.bindStoreVariable(sessionId, request);\n return response.data;\n }\n\n /**\n * Dereference a term to follow variable bindings to the root.\n *\n * @param sessionId - Term store session identifier.\n * @param request - Dereference parameters with term ID.\n * @returns The dereferenced term information.\n * @throws {ApiError} If the session does not exist or the term ID is invalid.\n *\n * @remarks\n * Follows variable bindings to find the ultimate target term.\n * If the term is not bound, returns the original term ID.\n *\n * @example\n * ```typescript\n * const result = await client.proofEngine.dereferenceStoreTerm('session-uuid', {\n * term_id: 'var-uuid',\n * });\n * console.log(`${result.original_id} -> ${result.dereferenced_id} (bound: ${result.is_bound})`);\n * ```\n */\n async dereferenceStoreTerm(\n sessionId: string,\n request: DereferenceRequest,\n ): Promise<DereferenceResponse> {\n const response = await this.api.dereferenceStoreTerm(sessionId, request);\n return response.data;\n }\n\n /**\n * Get term details from the term store.\n *\n * @param sessionId - Term store session identifier.\n * @param request - Request with term ID to retrieve.\n * @returns The term details including sort, features, and binding information.\n * @throws {ApiError} If the session or term does not exist.\n *\n * @remarks\n * Retrieves the full details of a term, including its features\n * and whether it is bound to another term.\n *\n * @example\n * ```typescript\n * const term = await client.proofEngine.getStoreTerm('session-uuid', {\n * term_id: 'term-uuid',\n * });\n * console.log(`Sort: ${term.sort_id}, features:`, term.features);\n * ```\n */\n async getStoreTerm(\n sessionId: string,\n request: GetStoreTermRequest,\n ): Promise<GetStoreTermResponse> {\n const response = await this.api.getStoreTerm(sessionId, request);\n return response.data;\n }\n\n /**\n * Set a feature on a term in the term store.\n *\n * @param sessionId - Term store session identifier.\n * @param request - Feature setting parameters with term ID, feature name, and value.\n * @returns Whether the operation succeeded.\n * @throws {ApiError} If the session or term does not exist.\n *\n * @remarks\n * Sets or updates a named feature on a term.\n *\n * @example\n * ```typescript\n * const result = await client.proofEngine.setStoreFeature('session-uuid', {\n * term_id: 'term-uuid',\n * feature_name: 'age',\n * value: 30,\n * });\n * console.log(`Feature set: ${result.success}`);\n * ```\n */\n async setStoreFeature(\n sessionId: string,\n request: SetFeatureRequest,\n ): Promise<SetFeatureResponse> {\n const response = await this.api.setStoreFeature(sessionId, request);\n return response.data;\n }\n\n /**\n * Unify two terms in the term store.\n *\n * @param sessionId - Term store session identifier.\n * @param request - Unification parameters with two term IDs.\n * @returns The unification result including success, unified term ID, and trail length.\n * @throws {ApiError} If the session does not exist.\n *\n * @remarks\n * Performs unification of two terms, finding the most specific common\n * specialization. The result is recorded on the trail for backtracking.\n *\n * @example\n * ```typescript\n * const result = await client.proofEngine.unifyStoreTerms('session-uuid', {\n * term1_id: 'term1-uuid',\n * term2_id: 'term2-uuid',\n * });\n * if (result.success) {\n * console.log(`Unified as ${result.unified_term_id}`);\n * } else {\n * console.log(`Failed: ${result.failure_reason}`);\n * }\n * ```\n */\n async unifyStoreTerms(\n sessionId: string,\n request: UnifyTermsRequest,\n ): Promise<UnifyTermsResponse> {\n const response = await this.api.unifyStoreTerms(sessionId, request);\n return response.data;\n }\n\n /**\n * Mark a choice point in the term store for backtracking.\n *\n * @param sessionId - Term store session identifier.\n * @param request - Empty object (marker is based on session state).\n * @returns The marker index and trail length at the time of marking.\n * @throws {ApiError} If the session does not exist.\n *\n * @remarks\n * Creates a checkpoint that can be used to backtrack to using\n * {@link backtrackTermStore}.\n *\n * @example\n * ```typescript\n * const marker = await client.proofEngine.markTermStore('session-uuid', {});\n * console.log(`Marker at index ${marker.marker_index}, trail length ${marker.trail_length}`);\n * ```\n */\n async markTermStore(\n sessionId: string,\n request: MarkTermStoreRequest,\n ): Promise<MarkTermStoreResponse> {\n const response = await this.api.markTermStore(sessionId, request);\n return response.data;\n }\n\n /**\n * Backtrack to a marker in the term store.\n *\n * @param sessionId - Term store session identifier.\n * @param request - Backtrack request with marker index.\n * @returns The backtrack result including success and undone entry count.\n * @throws {ApiError} If the session does not exist or the marker is invalid.\n *\n * @remarks\n * Reverts the term store to a previously created choice point,\n * undoing all bindings and unifications since that point.\n *\n * @example\n * ```typescript\n * const result = await client.proofEngine.backtrackTermStore('session-uuid', {\n * marker_index: 0,\n * });\n * console.log(`Backtrack ${result.success ? 'succeeded' : 'failed'}, undid ${result.undone_entries} entries`);\n * ```\n */\n async backtrackTermStore(\n sessionId: string,\n request: BacktrackTermStoreRequest,\n ): Promise<BacktrackTermStoreResponse> {\n const response = await this.api.backtrackTermStore(sessionId, request);\n return response.data;\n }\n\n // ─── Eval ─────────────────────────────────────────────────────────────────\n\n /**\n * Evaluate a built-in function.\n *\n * @param request - Evaluation parameters with function name and arguments.\n * @returns The evaluation result (discriminated union by `status` field).\n * @throws {ApiError} If the function does not exist or arguments are invalid.\n *\n * @remarks\n * Evaluates one of the proof engine's built-in functions. The response\n * is a discriminated union on the `status` field:\n * - `success` — result in `result` field\n * - `success_unit` — no return value\n * - `failure` — evaluation failed\n * - `residuate` — blocked on argument at `blocking_arg_index`\n * - `error` — error with `message`\n *\n * @example\n * ```typescript\n * const result = await client.proofEngine.evalBuiltin({\n * function_name: 'plus',\n * arguments: [1, 2],\n * });\n * if (result.status === 'success') {\n * console.log('Result:', result.result);\n * }\n * ```\n */\n async evalBuiltin(request: EvalBuiltinRequest): Promise<EvalBuiltinResponse> {\n const response = await this.api.evalBuiltin(request);\n return response.data;\n }\n\n /**\n * List available eval functions.\n *\n * @param request - Optional filter by category.\n * @returns List of available eval functions with their metadata.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Returns information about all available built-in functions that can\n * be used with {@link evalBuiltin}, optionally filtered by category.\n *\n * @example\n * ```typescript\n * const result = await client.proofEngine.listEvalFunctions({});\n * for (const fn of result.functions) {\n * console.log(`${fn.name} (${fn.category}): ${fn.description}`);\n * }\n * ```\n */\n async listEvalFunctions(\n request: ListEvalFunctionsRequest,\n ): Promise<ListEvalFunctionsResponse> {\n const response = await this.api.listEvalFunctions(request);\n return response.data;\n }\n}\n","import type { Health as GeneratedHealth } from '../api-spec/generated/Health.js';\nimport type { EnrichedHealthResponse } from '../types/health.js';\n\n/**\n * Resource client for health check operations.\n *\n * @remarks\n * Provides access to the enriched health check endpoint, which returns\n * overall status, individual component statuses, and build information.\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class HealthClient {\n /** @internal */\n private readonly api: GeneratedHealth;\n\n /** @internal */\n constructor(api: GeneratedHealth) {\n this.api = api;\n }\n\n /**\n * Check the health of the Reasoning Layer backend.\n *\n * @returns Enriched health response with overall status, component statuses, and build info.\n *\n * @example\n * ```typescript\n * const health = await client.health.check();\n * console.log(health.status); // \"healthy\"\n * console.log(health.build_info.version); // \"1.2.3\"\n * for (const component of health.components) {\n * console.log(`${component.name}: ${component.status}`);\n * }\n * ```\n */\n async check(): Promise<EnrichedHealthResponse> {\n const response = await this.api.healthCheck();\n return response.data;\n }\n}\n","import type { Admin as GeneratedAdmin } from '../api-spec/generated/Admin.js';\nimport type {\n FactoryResetResponse,\n ListTenantsResponse,\n} from '../types/admin.js';\n\n/**\n * Resource client for administrative operations.\n *\n * @remarks\n * Provides system-wide administrative endpoints that operate across all tenants.\n * These are destructive or privileged operations intended for development, testing,\n * and operator tooling — not for regular application use.\n *\n * No `X-Tenant-Id` header is required for admin endpoints.\n *\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class AdminClient {\n /** @internal */\n private readonly api: GeneratedAdmin;\n\n /** @internal */\n constructor(api: GeneratedAdmin) {\n this.api = api;\n }\n\n /**\n * Factory reset — wipe ALL data across all storage backends.\n *\n * @returns Confirmation of what was wiped, including table counts and cache status.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Destructive operation that wipes all PostgreSQL tables, Qdrant vector collections,\n * Valkey cache, and in-memory tenant inference states. Equivalent to `docker volume rm`.\n * Use only for development/testing.\n *\n * @example\n * ```typescript\n * const result = await client.admin.clearAllData();\n * console.log(result.message);\n * console.log(`Tables cleared: ${result.postgres_tables_cleared}`);\n * console.log(`Qdrant collections deleted: ${result.qdrant_collections_deleted}`);\n * ```\n */\n async clearAllData(): Promise<FactoryResetResponse> {\n const response = await this.api.clearAllData();\n return response.data;\n }\n\n /**\n * List all tenants that have data in the system.\n *\n * @returns All tenants with their term and session counts.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Returns all tenant IDs that have terms or ingestion sessions, with counts.\n * No `X-Tenant-Id` header required. Works in both PostgreSQL and in-memory modes.\n *\n * @example\n * ```typescript\n * const result = await client.admin.listTenants();\n * for (const tenant of result.tenants) {\n * console.log(`${tenant.tenant_id}: ${tenant.term_count} terms, ${tenant.session_count} sessions`);\n * }\n * ```\n */\n async listTenants(): Promise<ListTenantsResponse> {\n const response = await this.api.listTenants();\n return response.data;\n }\n}\n","import type { ImageExtraction as GeneratedImageExtraction } from '../api-spec/generated/ImageExtraction.js';\nimport type {\n ExtractImageRequest,\n ExtractImageResponse,\n} from '../types/image-extraction.js';\n\n/**\n * Resource client for image-based concept extraction operations.\n *\n * @remarks\n * Sends images to a vision-capable model for concept extraction.\n * Returns extracted entities, relations, and suggested sorts.\n * If `persist` is true (default), extracted concepts are persisted\n * as PsiTerms and synced to the homoiconic inference stores.\n *\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class ImageExtractionClient {\n /** @internal */\n private readonly api: GeneratedImageExtraction;\n\n /** @internal */\n constructor(api: GeneratedImageExtraction) {\n this.api = api;\n }\n\n /**\n * Extract concepts from an image using a vision LLM.\n *\n * @param request - Image extraction request with base64-encoded image data and options.\n * @returns Extracted entities, relations, suggested sorts, and extraction statistics.\n * @throws {ApiError} If the extraction request fails.\n *\n * @remarks\n * Sends the image directly to a vision-capable model (e.g., Qwen3-VL)\n * for concept extraction. Returns extracted entities, relations, and\n * suggested sorts. If `persist` is true (default), the extracted concepts\n * are persisted as PsiTerms and synced to the homoiconic inference stores.\n *\n * @example\n * ```typescript\n * const result = await client.imageExtraction.extractImage({\n * filename: 'architecture.png',\n * image: base64EncodedData,\n * owner_id: 'user-uuid',\n * instruction: 'Focus on architecture components and their connections',\n * });\n * console.log(`Extracted ${result.entities.length} entities`);\n * console.log(`Found ${result.relations.length} relations`);\n * ```\n */\n async extractImage(\n request: ExtractImageRequest,\n ): Promise<ExtractImageResponse> {\n const response = await this.api.extractImage(request);\n return response.data;\n }\n}\n","import type { Ontology as GeneratedOntology } from '../api-spec/generated/Ontology.js';\nimport type {\n GenerateOntologyRequest,\n GenerateOntologyResponse,\n} from '../types/ontology.js';\n\n/**\n * Resource client for ontology generation operations.\n *\n * @remarks\n * Provides LLM-powered ontology generation from natural language task descriptions.\n * Supports multi-turn clarification: the first call may return clarification questions,\n * and subsequent calls with answers complete the generation.\n *\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class OntologyClient {\n /** @internal */\n private readonly api: GeneratedOntology;\n\n /** @internal */\n constructor(api: GeneratedOntology) {\n this.api = api;\n }\n\n /**\n * Generate an OSFKB scenario from a natural language task description.\n *\n * @param request - Generation parameters including the prompt and optional clarification answers.\n * @returns Either clarification questions (status `\"needs_clarification\"`) or the generated scenario (status `\"complete\"`).\n * @throws {ApiError} If the request fails (e.g., 503 if no LLM is configured, 422 if the LLM returns invalid JSON, 502 if the LLM service fails).\n *\n * @remarks\n * Supports multi-turn clarification. On first call, provide only `prompt`.\n * If the response status is `\"needs_clarification\"`, supply `session_id`\n * and `answers` on the next call to complete the generation.\n *\n * @example\n * ```typescript\n * // First call -- may need clarification\n * const result = await client.ontology.generate({\n * prompt: 'Build a customer support ticket system',\n * });\n *\n * if (result.status === 'needs_clarification') {\n * // Answer the questions and call again\n * const completed = await client.ontology.generate({\n * prompt: 'Build a customer support ticket system',\n * session_id: result.session_id,\n * answers: { priority_levels: '3' },\n * });\n * }\n * ```\n */\n async generate(\n request: GenerateOntologyRequest,\n ): Promise<GenerateOntologyResponse> {\n const response = await this.api.generate(request);\n return response.data;\n }\n}\n","import type { Generation as GeneratedGeneration } from '../api-spec/generated/Generation.js';\nimport type {\n GenerateDocumentRequest,\n GenerateDocumentResponse,\n} from '../types/generation.js';\n\n/**\n * Resource client for evidence-grounded document generation.\n *\n * @remarks\n * Runs the evidence-grounded generation pipeline for a given root term.\n * The pipeline derives a specification from the root term via forward chaining,\n * then generates an artifact using an LLM with citation provenance tracking.\n *\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class GenerationClient {\n /** @internal */\n private readonly api: GeneratedGeneration;\n\n /** @internal */\n constructor(api: GeneratedGeneration) {\n this.api = api;\n }\n\n /**\n * Run the evidence-grounded generation pipeline for a given root term.\n *\n * @param request - Generation parameters including root term ID and target modality.\n * @returns Generation result including the artifact, diagnostics, and verification.\n * @throws {ApiError} If the request fails (e.g., root term not found or LLM failure).\n *\n * @remarks\n * The pipeline derives a specification from the root term via forward chaining,\n * then generates a text artifact with citation provenance. The response includes\n * diagnostic messages from each stage and optional verification results.\n *\n * @example\n * ```typescript\n * const result = await client.generation.generateDocument({\n * root_term_id: 'root-term-uuid',\n * modality: 'text',\n * });\n *\n * if (result.success && result.artifact) {\n * console.log(result.artifact.content);\n * console.log('Citations:', result.artifact.provenance.length);\n * }\n *\n * for (const diag of result.diagnostics) {\n * console.log(`[${diag.level}] ${diag.stage}: ${diag.message}`);\n * }\n * ```\n */\n async generateDocument(\n request: GenerateDocumentRequest,\n ): Promise<GenerateDocumentResponse> {\n const response = await this.api.generateDocument(request);\n return response.data;\n }\n}\n","import type { Rag as GeneratedRag } from '../api-spec/generated/Rag.js';\nimport type {\n OntologyRagRequest,\n OntologyRagResponse,\n} from '../types/rag.js';\n\n/**\n * Resource client for Ontology RAG (Retrieval-Augmented Generation) operations.\n *\n * @remarks\n * Performs True Ontology RAG combining embedding search with OSF/LIFE\n * feature unification:\n *\n * 1. Embedding search -- find matching Psi-terms via multilingual embeddings.\n * 2. Feature unification -- navigate prerequisites/dependents via Psi-term features.\n * 3. Emergent discovery -- find relations via fuzzy feature unification.\n *\n * This is a domain-agnostic API. The caller provides feature names via\n * `feature_config` and is responsible for interpreting the results.\n *\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class RagClient {\n /** @internal */\n private readonly api: GeneratedRag;\n\n /** @internal */\n constructor(api: GeneratedRag) {\n this.api = api;\n }\n\n /**\n * Perform an Ontology RAG query combining embedding search with feature unification.\n *\n * @param request - RAG query parameters including query text, concept sort, and optional feature config.\n * @returns RAG results including primary concepts, prerequisites, dependents, and related concepts.\n * @throws {ApiError} If the request fails (e.g., concept sort not found).\n *\n * @remarks\n * Combines three search strategies:\n * 1. Embedding search for initial concept matching.\n * 2. Feature unification for prerequisite/dependent navigation.\n * 3. Fuzzy unification for emergent relation discovery.\n *\n * The response includes statistics for each stage.\n *\n * @example\n * ```typescript\n * const result = await client.rag.ontologyRag({\n * query_text: 'machine learning fundamentals',\n * concept_sort_id: 'concept-sort-uuid',\n * max_concepts: 5,\n * min_degree: 0.8,\n * include_prerequisites: true,\n * include_dependents: true,\n * include_related: true,\n * });\n *\n * for (const concept of result.primary_concepts) {\n * console.log(`${concept.canonical_name} (${concept.match_degree})`);\n * }\n *\n * console.log(`Found ${result.stats.emergent_discovered} emergent relations`);\n * ```\n */\n async ontologyRag(\n request: OntologyRagRequest,\n ): Promise<OntologyRagResponse> {\n const response = await this.api.ontologyRag(request);\n return response.data;\n }\n}\n","import type { ClientConfig } from './config.js';\nimport { resolveConfig } from './config.js';\nimport { WebSocketClient } from './websocket.js';\nimport { createGeneratedHttpClient } from './generated-bridge.js';\nimport { Sorts as GeneratedSorts } from './api-spec/generated/Sorts.js';\nimport { Types as GeneratedTypes } from './api-spec/generated/Types.js';\nimport { Terms as GeneratedTerms } from './api-spec/generated/Terms.js';\nimport { Inference as GeneratedInference } from './api-spec/generated/Inference.js';\nimport { Cognitive as GeneratedCognitive } from './api-spec/generated/Cognitive.js';\nimport { CognitiveAgentsEpisodicMemory as GeneratedEpisodicMemory } from './api-spec/generated/CognitiveAgentsEpisodicMemory.js';\nimport { CognitiveAgentsHtn as GeneratedHtn } from './api-spec/generated/CognitiveAgentsHtn.js';\nimport { CognitiveAgentsMessaging as GeneratedMessaging } from './api-spec/generated/CognitiveAgentsMessaging.js';\nimport { CognitiveAgentsPlanLibrary as GeneratedPlanLibrary } from './api-spec/generated/CognitiveAgentsPlanLibrary.js';\nimport { Ingestion as GeneratedIngestion } from './api-spec/generated/Ingestion.js';\nimport { StructuredIngestion as GeneratedStructuredIngestion } from './api-spec/generated/StructuredIngestion.js';\nimport { NeuroSymbolic as GeneratedNeuroSymbolic } from './api-spec/generated/NeuroSymbolic.js';\nimport { Strings as GeneratedStrings } from './api-spec/generated/Strings.js';\nimport { Arithmetic as GeneratedArithmetic } from './api-spec/generated/Arithmetic.js';\nimport { Copy as GeneratedCopy } from './api-spec/generated/Copy.js';\nimport { Communities as GeneratedCommunities } from './api-spec/generated/Communities.js';\nimport { Collections as GeneratedCollections } from './api-spec/generated/Collections.js';\nimport { Execution as GeneratedExecution } from './api-spec/generated/Execution.js';\nimport { Causal as GeneratedCausal } from './api-spec/generated/Causal.js';\nimport { Reviews as GeneratedReviews } from './api-spec/generated/Reviews.js';\nimport { Visualization as GeneratedVisualization } from './api-spec/generated/Visualization.js';\nimport { Ilp as GeneratedIlp } from './api-spec/generated/Ilp.js';\nimport { ActionReviews as GeneratedActionReviews } from './api-spec/generated/ActionReviews.js';\nimport { Discovery as GeneratedDiscovery } from './api-spec/generated/Discovery.js';\nimport { Extraction as GeneratedExtraction } from './api-spec/generated/Extraction.js';\nimport { Oversight as GeneratedOversight } from './api-spec/generated/Oversight.js';\nimport { Cdl as GeneratedCdl } from './api-spec/generated/Cdl.js';\nimport { Preferences as GeneratedPreferences } from './api-spec/generated/Preferences.js';\nimport { Query as GeneratedQuery } from './api-spec/generated/Query.js';\nimport { Fuzzy as GeneratedFuzzy } from './api-spec/generated/Fuzzy.js';\nimport { Constraints as GeneratedConstraints } from './api-spec/generated/Constraints.js';\nimport { Reasoning as GeneratedReasoning } from './api-spec/generated/Reasoning.js';\nimport { Statistical as GeneratedStatistical } from './api-spec/generated/Statistical.js';\nimport { Control as GeneratedControl } from './api-spec/generated/Control.js';\nimport { Spaces as GeneratedSpaces } from './api-spec/generated/Spaces.js';\nimport { RowPolymorphism as GeneratedRowPolymorphism } from './api-spec/generated/RowPolymorphism.js';\nimport { Namespaces as GeneratedNamespaces } from './api-spec/generated/Namespaces.js';\nimport { Scenarios as GeneratedScenarios } from './api-spec/generated/Scenarios.js';\nimport { Analysis as GeneratedAnalysis } from './api-spec/generated/Analysis.js';\nimport { Functions as GeneratedFunctions } from './api-spec/generated/Functions.js';\nimport { WebhookActions as GeneratedWebhookActions } from './api-spec/generated/WebhookActions.js';\nimport { Synthetic as GeneratedSynthetic } from './api-spec/generated/Synthetic.js';\nimport { ProofEngine as GeneratedProofEngine } from './api-spec/generated/ProofEngine.js';\nimport { Health as GeneratedHealth } from './api-spec/generated/Health.js';\nimport { Admin as GeneratedAdmin } from './api-spec/generated/Admin.js';\nimport { ImageExtraction as GeneratedImageExtraction } from './api-spec/generated/ImageExtraction.js';\nimport { Ontology as GeneratedOntology } from './api-spec/generated/Ontology.js';\nimport { Generation as GeneratedGeneration } from './api-spec/generated/Generation.js';\nimport { Rag as GeneratedRag } from './api-spec/generated/Rag.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';\nimport { FunctionsClient } from './resources/functions.js';\nimport { WebhookActionsClient } from './resources/webhook-actions.js';\nimport { SyntheticClient } from './resources/synthetic.js';\nimport { ProofEngineClient } from './resources/proof-engine.js';\nimport { HealthClient } from './resources/health.js';\nimport { AdminClient } from './resources/admin.js';\nimport { ImageExtractionClient } from './resources/image-extraction.js';\nimport { OntologyClient } from './resources/ontology.js';\nimport { GenerationClient } from './resources/generation.js';\nimport { RagClient } from './resources/rag.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 /** LIFE-style user-defined function operations (register, evaluate). */\n readonly functions: FunctionsClient;\n\n /** Webhook-based external action operations (register, invoke, complete, list). */\n readonly webhookActions: WebhookActionsClient;\n\n /** Synthetic data generation operations (generate, calibrate, verbalize, verify). */\n readonly synthetic: SyntheticClient;\n\n /** Proof engine operations (term store, rule store, built-in evaluation). */\n readonly proofEngine: ProofEngineClient;\n\n /** Health check operations (status, components, build info). */\n readonly health: HealthClient;\n\n /** Administrative operations (factory reset, tenant listing). */\n readonly admin: AdminClient;\n\n /** Image-based concept extraction operations (vision LLM). */\n readonly imageExtraction: ImageExtractionClient;\n\n /** Ontology generation operations (LLM-powered scenario generation). */\n readonly ontology: OntologyClient;\n\n /** Evidence-grounded document generation operations. */\n readonly generation: GenerationClient;\n\n /** Ontology RAG operations (embedding search + feature unification). */\n readonly rag: RagClient;\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 ws = new WebSocketClient(resolved);\n const generatedHttp = createGeneratedHttpClient(resolved);\n const generatedSorts = new GeneratedSorts(generatedHttp);\n const generatedTypes = new GeneratedTypes(generatedHttp);\n const generatedTerms = new GeneratedTerms(generatedHttp);\n const generatedInference = new GeneratedInference(generatedHttp);\n\n const generatedCognitive = new GeneratedCognitive(generatedHttp);\n const generatedEpisodicMemory = new GeneratedEpisodicMemory(generatedHttp);\n const generatedHtn = new GeneratedHtn(generatedHttp);\n const generatedMessaging = new GeneratedMessaging(generatedHttp);\n const generatedPlanLibrary = new GeneratedPlanLibrary(generatedHttp);\n const generatedIngestion = new GeneratedIngestion(generatedHttp);\n const generatedStructuredIngestion = new GeneratedStructuredIngestion(generatedHttp);\n const generatedNeuroSymbolic = new GeneratedNeuroSymbolic(generatedHttp);\n const generatedStrings = new GeneratedStrings(generatedHttp);\n const generatedArithmetic = new GeneratedArithmetic(generatedHttp);\n const generatedCopy = new GeneratedCopy(generatedHttp);\n const generatedCommunities = new GeneratedCommunities(generatedHttp);\n const generatedCollections = new GeneratedCollections(generatedHttp);\n const generatedExecution = new GeneratedExecution(generatedHttp);\n const generatedCausal = new GeneratedCausal(generatedHttp);\n const generatedReviews = new GeneratedReviews(generatedHttp);\n const generatedVisualization = new GeneratedVisualization(generatedHttp);\n const generatedIlp = new GeneratedIlp(generatedHttp);\n const generatedActionReviews = new GeneratedActionReviews(generatedHttp);\n const generatedDiscovery = new GeneratedDiscovery(generatedHttp);\n const generatedExtraction = new GeneratedExtraction(generatedHttp);\n const generatedOversight = new GeneratedOversight(generatedHttp);\n const generatedCdl = new GeneratedCdl(generatedHttp);\n const generatedPreferences = new GeneratedPreferences(generatedHttp);\n const generatedQuery = new GeneratedQuery(generatedHttp);\n const generatedFuzzy = new GeneratedFuzzy(generatedHttp);\n const generatedConstraints = new GeneratedConstraints(generatedHttp);\n const generatedReasoning = new GeneratedReasoning(generatedHttp);\n const generatedStatistical = new GeneratedStatistical(generatedHttp);\n const generatedControl = new GeneratedControl(generatedHttp);\n const generatedSpaces = new GeneratedSpaces(generatedHttp);\n const generatedRowPolymorphism = new GeneratedRowPolymorphism(generatedHttp);\n const generatedNamespaces = new GeneratedNamespaces(generatedHttp);\n const generatedScenarios = new GeneratedScenarios(generatedHttp);\n const generatedAnalysis = new GeneratedAnalysis(generatedHttp);\n const generatedFunctions = new GeneratedFunctions(generatedHttp);\n const generatedWebhookActions = new GeneratedWebhookActions(generatedHttp);\n const generatedSynthetic = new GeneratedSynthetic(generatedHttp);\n const generatedProofEngine = new GeneratedProofEngine(generatedHttp);\n const generatedHealth = new GeneratedHealth(generatedHttp);\n const generatedAdmin = new GeneratedAdmin(generatedHttp);\n const generatedImageExtraction = new GeneratedImageExtraction(generatedHttp);\n const generatedOntology = new GeneratedOntology(generatedHttp);\n const generatedGeneration = new GeneratedGeneration(generatedHttp);\n const generatedRag = new GeneratedRag(generatedHttp);\n\n this.sorts = new SortsClient(generatedSorts, generatedTypes, resolved.tenantId);\n this.terms = new TermsClient(generatedTerms);\n this.inference = new InferenceClient(generatedInference, resolved.tenantId);\n this.query = new QueryClient(generatedQuery);\n this.cognitive = new CognitiveClient(generatedCognitive, generatedEpisodicMemory, generatedHtn, generatedMessaging, generatedPlanLibrary, resolved.tenantId, ws);\n this.fuzzy = new FuzzyClient(generatedFuzzy);\n this.constraints = new ConstraintsClient(generatedConstraints);\n this.namespaces = new NamespacesClient(generatedNamespaces, resolved.tenantId);\n this.collections = new CollectionsClient(generatedCollections);\n this.execution = new ExecutionClient(generatedExecution);\n this.causal = new CausalClient(generatedCausal);\n this.ingestion = new IngestionClient(generatedIngestion);\n this.reviews = new ReviewsClient(generatedReviews);\n this.visualization = new VisualizationClient(generatedVisualization);\n this.ilp = new IlpClient(generatedIlp);\n this.reasoning = new ReasoningClient(generatedReasoning);\n this.statistical = new StatisticalClient(generatedStatistical);\n this.control = new ControlClient(generatedControl);\n this.spaces = new SpacesClient(generatedSpaces);\n this.row = new RowClient(generatedRowPolymorphism);\n this.sources = new SourcesClient(generatedStructuredIngestion);\n this.communities = new CommunitiesClient(generatedCommunities);\n this.utilities = new UtilitiesClient(generatedStrings, generatedArithmetic, generatedCopy);\n this.scenarios = new ScenariosClient(generatedScenarios);\n this.actionReviews = new ActionReviewsClient(generatedActionReviews, resolved.tenantId);\n this.discovery = new DiscoveryClient(generatedDiscovery);\n this.extract = new ExtractClient(generatedExtraction);\n this.oversight = new OversightClient(generatedOversight);\n this.cdl = new CdlClient(generatedCdl);\n this.neuroSymbolic = new NeuroSymbolicClient(generatedNeuroSymbolic);\n this.analysis = new AnalysisClient(generatedAnalysis);\n this.preferences = new PreferencesClient(generatedPreferences);\n this.functions = new FunctionsClient(generatedFunctions);\n this.webhookActions = new WebhookActionsClient(generatedWebhookActions, resolved.tenantId);\n this.synthetic = new SyntheticClient(generatedSynthetic);\n this.proofEngine = new ProofEngineClient(generatedProofEngine);\n this.health = new HealthClient(generatedHealth);\n this.admin = new AdminClient(generatedAdmin);\n this.imageExtraction = new ImageExtractionClient(generatedImageExtraction);\n this.ontology = new OntologyClient(generatedOntology);\n this.generation = new GenerationClient(generatedGeneration);\n this.rag = new RagClient(generatedRag);\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/websocket.ts","../src/api-spec/generated/http-client.ts","../src/generated-bridge.ts","../src/api-spec/generated/Sorts.ts","../src/api-spec/generated/Types.ts","../src/api-spec/generated/Terms.ts","../src/api-spec/generated/Inference.ts","../src/api-spec/generated/Cognitive.ts","../src/api-spec/generated/CognitiveAgentsEpisodicMemory.ts","../src/api-spec/generated/CognitiveAgentsHtn.ts","../src/api-spec/generated/CognitiveAgentsMessaging.ts","../src/api-spec/generated/CognitiveAgentsPlanLibrary.ts","../src/api-spec/generated/Ingestion.ts","../src/api-spec/generated/StructuredIngestion.ts","../src/api-spec/generated/NeuroSymbolic.ts","../src/api-spec/generated/Strings.ts","../src/api-spec/generated/Arithmetic.ts","../src/api-spec/generated/Copy.ts","../src/api-spec/generated/Communities.ts","../src/api-spec/generated/Collections.ts","../src/api-spec/generated/Execution.ts","../src/api-spec/generated/Causal.ts","../src/api-spec/generated/Reviews.ts","../src/api-spec/generated/Visualization.ts","../src/api-spec/generated/Ilp.ts","../src/api-spec/generated/ActionReviews.ts","../src/api-spec/generated/Discovery.ts","../src/api-spec/generated/Extraction.ts","../src/api-spec/generated/Oversight.ts","../src/api-spec/generated/Cdl.ts","../src/api-spec/generated/Preferences.ts","../src/api-spec/generated/Query.ts","../src/api-spec/generated/Fuzzy.ts","../src/api-spec/generated/Constraints.ts","../src/api-spec/generated/Reasoning.ts","../src/api-spec/generated/Statistical.ts","../src/api-spec/generated/Control.ts","../src/api-spec/generated/Spaces.ts","../src/api-spec/generated/RowPolymorphism.ts","../src/api-spec/generated/Namespaces.ts","../src/api-spec/generated/Scenarios.ts","../src/api-spec/generated/Analysis.ts","../src/api-spec/generated/Functions.ts","../src/api-spec/generated/WebhookActions.ts","../src/api-spec/generated/Synthetic.ts","../src/api-spec/generated/ProofEngine.ts","../src/api-spec/generated/Health.ts","../src/api-spec/generated/Admin.ts","../src/api-spec/generated/ImageExtraction.ts","../src/api-spec/generated/Ontology.ts","../src/api-spec/generated/Generation.ts","../src/api-spec/generated/Rag.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/resources/functions.ts","../src/resources/webhook-actions.ts","../src/resources/synthetic.ts","../src/resources/proof-engine.ts","../src/resources/health.ts","../src/resources/admin.ts","../src/resources/image-extraction.ts","../src/resources/ontology.ts","../src/resources/generation.ts","../src/resources/rag.ts","../src/builders/lp.ts","../src/resources/optimize.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":["abortController","data"],"mappings":"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","file":"index.cjs","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.2.2';\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 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","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nexport type QueryParamsType = Record<string | number, any>;\nexport type ResponseFormat = keyof Omit<Body, \"body\" | \"bodyUsed\">;\n\nexport interface FullRequestParams extends Omit<RequestInit, \"body\"> {\n /** set parameter to `true` for call `securityWorker` for this request */\n secure?: boolean;\n /** request path */\n path: string;\n /** content type of request body */\n type?: ContentType;\n /** query params */\n query?: QueryParamsType;\n /** format of response (i.e. response.json() -> format: \"json\") */\n format?: ResponseFormat;\n /** request body */\n body?: unknown;\n /** base url */\n baseUrl?: string;\n /** request cancellation token */\n cancelToken?: CancelToken;\n}\n\nexport type RequestParams = Omit<\n FullRequestParams,\n \"body\" | \"method\" | \"query\" | \"path\"\n>;\n\nexport interface ApiConfig<SecurityDataType = unknown> {\n baseUrl?: string;\n baseApiParams?: Omit<RequestParams, \"baseUrl\" | \"cancelToken\" | \"signal\">;\n securityWorker?: (\n securityData: SecurityDataType | null,\n ) => Promise<RequestParams | void> | RequestParams | void;\n customFetch?: typeof fetch;\n}\n\nexport interface HttpResponse<D extends unknown, E extends unknown = unknown>\n extends Response {\n data: D;\n error: E;\n}\n\ntype CancelToken = Symbol | string | number;\n\nexport enum ContentType {\n Json = \"application/json\",\n JsonApi = \"application/vnd.api+json\",\n FormData = \"multipart/form-data\",\n UrlEncoded = \"application/x-www-form-urlencoded\",\n Text = \"text/plain\",\n}\n\nexport class HttpClient<SecurityDataType = unknown> {\n public baseUrl: string = \"\";\n private securityData: SecurityDataType | null = null;\n private securityWorker?: ApiConfig<SecurityDataType>[\"securityWorker\"];\n private abortControllers = new Map<CancelToken, AbortController>();\n private customFetch = (...fetchParams: Parameters<typeof fetch>) =>\n fetch(...fetchParams);\n\n private baseApiParams: RequestParams = {\n credentials: \"same-origin\",\n headers: {},\n redirect: \"follow\",\n referrerPolicy: \"no-referrer\",\n };\n\n constructor(apiConfig: ApiConfig<SecurityDataType> = {}) {\n Object.assign(this, apiConfig);\n }\n\n public setSecurityData = (data: SecurityDataType | null) => {\n this.securityData = data;\n };\n\n protected encodeQueryParam(key: string, value: any) {\n const encodedKey = encodeURIComponent(key);\n return `${encodedKey}=${encodeURIComponent(typeof value === \"number\" ? value : `${value}`)}`;\n }\n\n protected addQueryParam(query: QueryParamsType, key: string) {\n return this.encodeQueryParam(key, query[key]);\n }\n\n protected addArrayQueryParam(query: QueryParamsType, key: string) {\n const value = query[key];\n return value.map((v: any) => this.encodeQueryParam(key, v)).join(\"&\");\n }\n\n protected toQueryString(rawQuery?: QueryParamsType): string {\n const query = rawQuery || {};\n const keys = Object.keys(query).filter(\n (key) => \"undefined\" !== typeof query[key],\n );\n return keys\n .map((key) =>\n Array.isArray(query[key])\n ? this.addArrayQueryParam(query, key)\n : this.addQueryParam(query, key),\n )\n .join(\"&\");\n }\n\n protected addQueryParams(rawQuery?: QueryParamsType): string {\n const queryString = this.toQueryString(rawQuery);\n return queryString ? `?${queryString}` : \"\";\n }\n\n private contentFormatters: Record<ContentType, (input: any) => any> = {\n [ContentType.Json]: (input: any) =>\n input !== null && (typeof input === \"object\" || typeof input === \"string\")\n ? JSON.stringify(input)\n : input,\n [ContentType.JsonApi]: (input: any) =>\n input !== null && (typeof input === \"object\" || typeof input === \"string\")\n ? JSON.stringify(input)\n : input,\n [ContentType.Text]: (input: any) =>\n input !== null && typeof input !== \"string\"\n ? JSON.stringify(input)\n : input,\n [ContentType.FormData]: (input: any) => {\n if (input instanceof FormData) {\n return input;\n }\n\n return Object.keys(input || {}).reduce((formData, key) => {\n const property = input[key];\n formData.append(\n key,\n property instanceof Blob\n ? property\n : typeof property === \"object\" && property !== null\n ? JSON.stringify(property)\n : `${property}`,\n );\n return formData;\n }, new FormData());\n },\n [ContentType.UrlEncoded]: (input: any) => this.toQueryString(input),\n };\n\n protected mergeRequestParams(\n params1: RequestParams,\n params2?: RequestParams,\n ): RequestParams {\n return {\n ...this.baseApiParams,\n ...params1,\n ...(params2 || {}),\n headers: {\n ...(this.baseApiParams.headers || {}),\n ...(params1.headers || {}),\n ...((params2 && params2.headers) || {}),\n },\n };\n }\n\n protected createAbortSignal = (\n cancelToken: CancelToken,\n ): AbortSignal | undefined => {\n if (this.abortControllers.has(cancelToken)) {\n const abortController = this.abortControllers.get(cancelToken);\n if (abortController) {\n return abortController.signal;\n }\n return void 0;\n }\n\n const abortController = new AbortController();\n this.abortControllers.set(cancelToken, abortController);\n return abortController.signal;\n };\n\n public abortRequest = (cancelToken: CancelToken) => {\n const abortController = this.abortControllers.get(cancelToken);\n\n if (abortController) {\n abortController.abort();\n this.abortControllers.delete(cancelToken);\n }\n };\n\n public request = async <T = any, E = any>({\n body,\n secure,\n path,\n type,\n query,\n format,\n baseUrl,\n cancelToken,\n ...params\n }: FullRequestParams): Promise<HttpResponse<T, E>> => {\n const secureParams =\n ((typeof secure === \"boolean\" ? secure : this.baseApiParams.secure) &&\n this.securityWorker &&\n (await this.securityWorker(this.securityData))) ||\n {};\n const requestParams = this.mergeRequestParams(params, secureParams);\n const queryString = query && this.toQueryString(query);\n const payloadFormatter = this.contentFormatters[type || ContentType.Json];\n const responseFormat = format || requestParams.format;\n\n return this.customFetch(\n `${baseUrl || this.baseUrl || \"\"}${path}${queryString ? `?${queryString}` : \"\"}`,\n {\n ...requestParams,\n headers: {\n ...(requestParams.headers || {}),\n ...(type && type !== ContentType.FormData\n ? { \"Content-Type\": type }\n : {}),\n },\n signal:\n (cancelToken\n ? this.createAbortSignal(cancelToken)\n : requestParams.signal) || null,\n body:\n typeof body === \"undefined\" || body === null\n ? null\n : payloadFormatter(body),\n },\n ).then(async (response) => {\n const r = response as HttpResponse<T, E>;\n r.data = null as unknown as T;\n r.error = null as unknown as E;\n\n const responseToParse = responseFormat ? response.clone() : response;\n const data = !responseFormat\n ? r\n : await responseToParse[responseFormat]()\n .then((data) => {\n if (r.ok) {\n r.data = data;\n } else {\n r.error = data;\n }\n return r;\n })\n .catch((e) => {\n r.error = e;\n return r;\n });\n\n if (cancelToken) {\n this.abortControllers.delete(cancelToken);\n }\n\n if (!response.ok) throw data;\n return data;\n });\n };\n}\n","import { HttpClient as GeneratedHttpClient } from './api-spec/generated/http-client.js';\nimport { SDK_VERSION } from './config.js';\nimport type { ResolvedConfig } from './config.js';\nimport type { Interceptor } from './types/common.js';\nimport {\n TimeoutError,\n NetworkError,\n RateLimitError,\n createApiError,\n} from './errors.js';\n\n/**\n * Creates a configured generated {@link GeneratedHttpClient} wrapped with\n * SDK behavior: authentication headers, retry, timeout, interceptors,\n * and error mapping.\n *\n * @remarks\n * This is the single point of change for HTTP transport behavior.\n * All generated route classes share this client instance.\n *\n * The `customFetch` injected into the generated client handles:\n * - Auth headers (`X-Tenant-Id`, `X-User-Id`, `X-Namespace-Id`, `X-SDK-Version`)\n * - Timeout via `AbortController`\n * - Retry on 429 (always) and 503 (configurable) with exponential backoff + jitter\n * - Interceptor chain\n * - Error mapping to SDK error hierarchy\n *\n * On success, `customFetch` returns a `Response` with `ok: true`.\n * On failure, it throws the appropriate SDK error — the generated client\n * never sees non-ok responses.\n *\n * @param config - Resolved SDK configuration.\n * @returns A configured generated HttpClient instance.\n */\nexport function createGeneratedHttpClient(config: ResolvedConfig): GeneratedHttpClient {\n return new GeneratedHttpClient({\n baseUrl: config.baseUrl,\n baseApiParams: {\n headers: buildAuthHeaders(config),\n },\n customFetch: createCustomFetch(config),\n });\n}\n\nfunction buildAuthHeaders(config: ResolvedConfig): Record<string, string> {\n const headers: Record<string, string> = {\n 'Accept': 'application/json',\n 'X-Tenant-Id': config.tenantId,\n 'X-SDK-Version': SDK_VERSION,\n };\n if (config.userId) headers['X-User-Id'] = config.userId;\n if (config.namespaceId) headers['X-Namespace-Id'] = config.namespaceId;\n if (config.authenticatedUser) headers['X-Authenticated-User'] = config.authenticatedUser;\n return headers;\n}\n\nfunction createCustomFetch(config: ResolvedConfig): typeof fetch {\n return async (input: RequestInfo | URL, init?: RequestInit): Promise<Response> => {\n const maxRetries = config.maxRetries;\n const timeoutMs = config.timeoutMs;\n let lastError: Error | undefined;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n if (attempt > 0 && lastError) {\n await sleep(calculateRetryDelay(attempt, lastError));\n }\n\n try {\n const response = await executeFetch(input, init, timeoutMs, config);\n\n if (response.ok) return response;\n\n // Parse error body for SDK error creation\n let body: unknown;\n try {\n body = await response.clone().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 && config.retryOn503 && attempt < maxRetries) {\n lastError = apiError;\n continue;\n }\n\n throw apiError;\n } catch (error) {\n if (error instanceof TimeoutError) throw error;\n if (error instanceof RateLimitError && attempt >= maxRetries) throw error;\n\n if (isApiErrorLike(error) && !isRetryableStatus(error, config.retryOn503)) {\n throw error;\n }\n\n if (isNetworkFailure(error)) {\n lastError =\n error instanceof NetworkError\n ? error\n : 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 throw error;\n }\n }\n\n throw lastError ?? new NetworkError('Request failed after retries');\n };\n}\n\nasync function executeFetch(\n input: RequestInfo | URL,\n init: RequestInit | undefined,\n timeoutMs: number,\n config: ResolvedConfig,\n): Promise<Response> {\n const timeoutController = new AbortController();\n const timeoutId = setTimeout(() => timeoutController.abort(), timeoutMs);\n\n const existingSignal = init?.signal;\n const combinedSignal = existingSignal\n ? AbortSignal.any([timeoutController.signal, existingSignal])\n : timeoutController.signal;\n\n const url =\n typeof input === 'string'\n ? input\n : input instanceof URL\n ? input.toString()\n : input.url;\n\n const request = new Request(url, { ...init, signal: combinedSignal });\n\n try {\n const fetchFn = config.fetch;\n const baseFetch = (req: Request): Promise<Response> => fetchFn(req);\n const chain = buildInterceptorChain(config.interceptors, baseFetch);\n return await chain(request);\n } catch (error) {\n if (isAbortError(error)) {\n if (timeoutController.signal.aborted) {\n throw new TimeoutError(timeoutMs);\n }\n throw error;\n }\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\nfunction buildInterceptorChain(\n interceptors: Interceptor[],\n baseFetch: (req: Request) => Promise<Response>,\n): (req: Request) => Promise<Response> {\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\nfunction calculateRetryDelay(attempt: number, lastError: Error): number {\n if (lastError instanceof RateLimitError && lastError.retryAfter !== null) {\n return lastError.retryAfter * 1000;\n }\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\nfunction isAbortError(error: unknown): boolean {\n return error instanceof DOMException && error.name === 'AbortError';\n}\n\nfunction isNetworkFailure(error: unknown): boolean {\n if (error instanceof NetworkError) return true;\n if (error instanceof TypeError) return true;\n return false;\n}\n\nfunction isApiErrorLike(error: unknown): error is { status: number } {\n return typeof error === 'object' && error !== null && 'status' in error;\n}\n\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\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n ApproveLearnedSimilarityRequest,\n ApproveLearnedSimilarityResponse,\n BulkCreateSortsRequest,\n BulkCreateSortsResponse,\n BulkSetSimilaritiesRequest,\n BulkSetSimilaritiesResponse,\n ComputeGlbRequest,\n ComputeGlbResponse,\n ComputeLubRequest,\n ComputeLubResponse,\n CreateSortRequest,\n DecodeGlbRequest,\n DecodeGlbResponse,\n GetEquivalenceClassesResponse,\n GetPreorderDegreeRequest,\n GetPreorderDegreeResponse,\n GetSortSimilarityRequest,\n GetSortSimilarityResponse,\n IndexSortsResponse,\n IsSubtypeResponse,\n LearnSortSimilaritiesRequest,\n LearnSortSimilaritiesResponse,\n LearnedSimilarityListResponse,\n RejectLearnedSimilarityRequest,\n RejectLearnedSimilarityResponse,\n SetSortSimilarityRequest,\n SetSortSimilarityResponse,\n SortListResponse,\n SortResponse,\n UpdateSortReviewRequest,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Sorts<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description # Authorization Requires X-Tenant-Id header. The tenant_id field in the request body is ignored.\n *\n * @tags sorts\n * @name AddSort\n * @summary Add a new sort\n * @request POST:/api/v1/sorts\n * @secure\n */\n addSort = (data: CreateSortRequest, params: RequestParams = {}) =>\n this.http.request<SortResponse, void>({\n path: `/api/v1/sorts`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/sorts/learned-similarities/approve Approves a proposed or conflicted learned similarity. Once approved, the similarity is added to the active similarity relation and will be used in reasoning.\n *\n * @tags sorts\n * @name ApproveLearnedSimilarity\n * @summary Approve a learned similarity\n * @request POST:/api/v1/sorts/learned-similarities/approve\n */\n approveLearnedSimilarity = (\n data: ApproveLearnedSimilarityRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ApproveLearnedSimilarityResponse, any>({\n path: `/api/v1/sorts/learned-similarities/approve`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/sorts/bulk Creates multiple sorts in a single request, automatically resolving parent references by name. Sorts are topologically sorted to ensure parents are created before children. This is much faster than individual requests for large hierarchies. # Authorization Requires X-Tenant-Id header. The tenant_id field in the request body is ignored.\n *\n * @tags sorts\n * @name BulkCreateSorts\n * @summary Create multiple sorts in bulk\n * @request POST:/api/v1/sorts/bulk\n * @secure\n */\n bulkCreateSorts = (\n data: BulkCreateSortsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BulkCreateSortsResponse, any>({\n path: `/api/v1/sorts/bulk`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/sorts/similarity/bulk Sets multiple similarity relations in a single request using sort IDs. Uses a single database persist for much faster performance.\n *\n * @tags sorts\n * @name BulkSetSimilarities\n * @summary Set multiple sort similarities in bulk\n * @request POST:/api/v1/sorts/similarity/bulk\n */\n bulkSetSimilarities = (\n data: BulkSetSimilaritiesRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BulkSetSimilaritiesResponse, any>({\n path: `/api/v1/sorts/similarity/bulk`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags sorts\n * @name ComputeGlb\n * @summary Compute GLB (Greatest Lower Bound) of two sorts\n * @request POST:/api/v1/sorts/glb\n */\n computeGlb = (data: ComputeGlbRequest, params: RequestParams = {}) =>\n this.http.request<ComputeGlbResponse, any>({\n path: `/api/v1/sorts/glb`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags sorts\n * @name ComputeLub\n * @summary Compute LUB (Least Upper Bound) of two sorts\n * @request POST:/api/v1/sorts/lub\n */\n computeLub = (data: ComputeLubRequest, params: RequestParams = {}) =>\n this.http.request<ComputeLubResponse, any>({\n path: `/api/v1/sorts/lub`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Computes the bit-vector intersection (GLB) and decodes it into a human-readable type disjunction. This is Life1.0's decode() function. # Returns - `sort_ids`: List of sort IDs in the disjunction - `sort_names`: List of sort names in the disjunction - `formatted`: Human-readable format (e.g., \"int | real\") - `is_bottom`: True if the GLB is empty (incompatible sorts)\n *\n * @tags sorts\n * @name DecodeGlb\n * @summary Decode GLB (Greatest Lower Bound) of two sorts as type disjunction\n * @request POST:/api/v1/sorts/glb/decode\n */\n decodeGlb = (data: DecodeGlbRequest, params: RequestParams = {}) =>\n this.http.request<DecodeGlbResponse, any>({\n path: `/api/v1/sorts/glb/decode`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description # Authorization Requires X-Tenant-Id header. The sort must belong to the tenant. # Errors - 404 Not Found: Sort doesn't exist - 400 Bad Request: Sort has children (would orphan them)\n *\n * @tags sorts\n * @name DeleteSort\n * @summary Delete a sort by ID\n * @request DELETE:/api/v1/sorts/{id}\n * @secure\n */\n deleteSort = (id: string, params: RequestParams = {}) =>\n this.http.request<void, void>({\n path: `/api/v1/sorts/${id}`,\n method: \"DELETE\",\n secure: true,\n ...params,\n });\n /**\n * No description\n *\n * @tags sorts\n * @name GetCompatibleSorts\n * @summary Get compatible sorts for a given sort\n * @request GET:/api/v1/sorts/{id}/compatible\n */\n getCompatibleSorts = (id: string, params: RequestParams = {}) =>\n this.http.request<SortListResponse, any>({\n path: `/api/v1/sorts/${id}/compatible`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n /**\n * @description Per Definition IV.9 (Milanese & Pasi 2024): s₁ ≈ s₂ ⇔ ≾̇(s₁, s₂) > 0 AND ≾̇(s₂, s₁) > 0\n *\n * @tags sorts\n * @name GetEquivalenceClasses\n * @summary Get equivalence classes based on the combined preorder\n * @request GET:/api/v1/sorts/equivalence-classes\n */\n getEquivalenceClasses = (params: RequestParams = {}) =>\n this.http.request<GetEquivalenceClassesResponse, any>({\n path: `/api/v1/sorts/equivalence-classes`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n /**\n * @description Per Definition IV.5 (Milanese & Pasi 2024): ≾̇ = ((≾̃ .− ∼) ⊍ ≤)⁺\n *\n * @tags sorts\n * @name GetPreorderDegree\n * @summary Get preorder degree ≾̇(s₁, s₂) between two sorts\n * @request POST:/api/v1/sorts/preorder-degree\n */\n getPreorderDegree = (\n data: GetPreorderDegreeRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<GetPreorderDegreeResponse, any>({\n path: `/api/v1/sorts/preorder-degree`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags sorts\n * @name GetSort\n * @summary Get a sort by ID\n * @request GET:/api/v1/sorts/{id}\n */\n getSort = (id: string, params: RequestParams = {}) =>\n this.http.request<SortResponse, void>({\n path: `/api/v1/sorts/${id}`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags sorts\n * @name GetSortSimilarity\n * @summary Get direct similarity degree ∼(s₁, s₂) between two sorts\n * @request POST:/api/v1/sorts/similarity/get\n */\n getSortSimilarity = (\n data: GetSortSimilarityRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<GetSortSimilarityResponse, any>({\n path: `/api/v1/sorts/similarity/get`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description This enables semantic search over sort names for NER label pre-filtering. Must be called after bulk sort creation (e.g., after ontology hydration) to make sorts searchable via embedding similarity. Returns the number of sorts indexed.\n *\n * @tags sorts\n * @name IndexSorts\n * @summary Index all sorts for a tenant into the vector store (Qdrant).\n * @request POST:/api/v1/sorts/index\n * @secure\n */\n indexSorts = (params: RequestParams = {}) =>\n this.http.request<IndexSortsResponse, void>({\n path: `/api/v1/sorts/index`,\n method: \"POST\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags sorts\n * @name IsSubtype\n * @summary Check if one sort is a subtype of another\n * @request GET:/api/v1/sorts/{child_id}/subtype/{parent_id}\n */\n isSubtype = (childId: string, parentId: string, params: RequestParams = {}) =>\n this.http.request<IsSubtypeResponse, any>({\n path: `/api/v1/sorts/${childId}/subtype/${parentId}`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/sorts/learn-similarities Analyzes terms in the knowledge base to discover which sorts have similar effect distributions. This enables reasoning by analogy: if CF3 compounds and CHF2 compounds show similar potency distributions, they are likely bioisosteres that can be used interchangeably. # Request Body - `effect_feature`: Name of the numeric feature to analyze (e.g., \"potency\", \"ic50\") - `min_samples`: Minimum samples required per sort (default: 5) - `min_similarity`: Minimum similarity threshold (default: 0.5) # Response - `learned_count`: Number of sort pairs with learned similarity - `message`: Success message # Authorization Requires X-Tenant-Id header. The tenant_id field in the request body is ignored.\n *\n * @tags sorts\n * @name LearnSortSimilarities\n * @summary Learn sort similarities from behavioral data\n * @request POST:/api/v1/sorts/learn-similarities\n * @secure\n */\n learnSortSimilarities = (\n data: LearnSortSimilaritiesRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<LearnSortSimilaritiesResponse, any>({\n path: `/api/v1/sorts/learn-similarities`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description GET /api/v1/sorts/learned-similarities Returns all learned similarities that need human review, including: - Proposed: New similarities learned from data - Conflicted: Learned values that differ from expert-defined values\n *\n * @tags sorts\n * @name ListLearnedSimilarities\n * @summary List learned similarities pending review\n * @request GET:/api/v1/sorts/learned-similarities\n */\n listLearnedSimilarities = (params: RequestParams = {}) =>\n this.http.request<LearnedSimilarityListResponse, any>({\n path: `/api/v1/sorts/learned-similarities`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n /**\n * @description By default, system-defined sorts (built-in types like Thing, Person, etc.) are excluded from the response. Use `include_system=true` to include them.\n *\n * @tags sorts\n * @name ListSorts\n * @summary List all sorts for a tenant with optional filtering\n * @request GET:/api/v1/sorts/tenant/{tenant_id}\n */\n listSorts = (\n tenantId: string,\n query?: {\n /**\n * Include system-defined sorts in the response.\n * System sorts are built-in types like Thing, Person, etc.\n * Defaults to false (system sorts are excluded by default).\n */\n include_system?: boolean;\n /** Filter to only show LLM-extracted sorts */\n llm_extracted?: boolean | null;\n /** Filter to only show sorts needing review */\n needs_review?: boolean | null;\n },\n params: RequestParams = {},\n ) =>\n this.http.request<SortListResponse, any>({\n path: `/api/v1/sorts/tenant/${tenantId}`,\n method: \"GET\",\n query: query,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/sorts/learned-similarities/reject Rejects a proposed or conflicted learned similarity with a reason. Rejected similarities are not used in reasoning.\n *\n * @tags sorts\n * @name RejectLearnedSimilarity\n * @summary Reject a learned similarity\n * @request POST:/api/v1/sorts/learned-similarities/reject\n */\n rejectLearnedSimilarity = (\n data: RejectLearnedSimilarityRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<RejectLearnedSimilarityResponse, any>({\n path: `/api/v1/sorts/learned-similarities/reject`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Similarity is symmetric: ∼(s₁, s₂) = ∼(s₂, s₁) Degree must be in [0, 1] range.\n *\n * @tags sorts\n * @name SetSortSimilarity\n * @summary Set similarity degree between two sorts\n * @request POST:/api/v1/sorts/similarity\n */\n setSortSimilarity = (\n data: SetSortSimilarityRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<SetSortSimilarityResponse, any>({\n path: `/api/v1/sorts/similarity`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags sorts\n * @name UpdateSortReview\n * @summary Update the review status of a sort (approve or mark for review)\n * @request POST:/api/v1/sorts/{id}/review\n */\n updateSortReview = (\n id: string,\n data: UpdateSortReviewRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<SortResponse, any>({\n path: `/api/v1/sorts/${id}/review`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n BatchSortCompareRequest,\n BatchSortCompareResponse,\n GreatestSortsResponse,\n LeastSortsResponse,\n SortAncestorsResponse,\n SortChildrenResponse,\n SortCompareRequest,\n SortCompareResponse,\n SortDescendantsResponse,\n SortParentsResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Types<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags types\n * @name BatchCompareSorts\n * @summary Batch compare sorts POST /api/v1/sorts/compare/batch\n * @request POST:/api/v1/sorts/compare/batch\n * @secure\n */\n batchCompareSorts = (\n data: BatchSortCompareRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BatchSortCompareResponse, void>({\n path: `/api/v1/sorts/compare/batch`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags types\n * @name CompareSorts\n * @summary Compare two sorts POST /api/v1/sorts/compare\n * @request POST:/api/v1/sorts/compare\n * @secure\n */\n compareSorts = (data: SortCompareRequest, params: RequestParams = {}) =>\n this.http.request<SortCompareResponse, void>({\n path: `/api/v1/sorts/compare`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags types\n * @name GetGreatestSorts\n * @summary Get greatest (most general) sorts GET /api/v1/sorts/greatest/:tenant_id\n * @request GET:/api/v1/sorts/greatest/{tenant_id}\n * @secure\n */\n getGreatestSorts = (tenantId: string, params: RequestParams = {}) =>\n this.http.request<GreatestSortsResponse, void>({\n path: `/api/v1/sorts/greatest/${tenantId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags types\n * @name GetLeastSorts\n * @summary Get least (most specific) sorts GET /api/v1/sorts/least/:tenant_id\n * @request GET:/api/v1/sorts/least/{tenant_id}\n * @secure\n */\n getLeastSorts = (tenantId: string, params: RequestParams = {}) =>\n this.http.request<LeastSortsResponse, void>({\n path: `/api/v1/sorts/least/${tenantId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags types\n * @name GetSortAncestors\n * @summary Get ancestors of a sort GET /api/v1/sorts/:id/ancestors\n * @request GET:/api/v1/sorts/{id}/ancestors\n * @secure\n */\n getSortAncestors = (id: string, params: RequestParams = {}) =>\n this.http.request<SortAncestorsResponse, void>({\n path: `/api/v1/sorts/${id}/ancestors`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags types\n * @name GetSortChildren\n * @summary Get children of a sort GET /api/v1/sorts/:id/children\n * @request GET:/api/v1/sorts/{id}/children\n * @secure\n */\n getSortChildren = (id: string, params: RequestParams = {}) =>\n this.http.request<SortChildrenResponse, void>({\n path: `/api/v1/sorts/${id}/children`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags types\n * @name GetSortDescendants\n * @summary Get descendants of a sort GET /api/v1/sorts/:id/descendants\n * @request GET:/api/v1/sorts/{id}/descendants\n * @secure\n */\n getSortDescendants = (id: string, params: RequestParams = {}) =>\n this.http.request<SortDescendantsResponse, void>({\n path: `/api/v1/sorts/${id}/descendants`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags types\n * @name GetSortParents\n * @summary Get parents of a sort GET /api/v1/sorts/:id/parents\n * @request GET:/api/v1/sorts/{id}/parents\n * @secure\n */\n getSortParents = (id: string, params: RequestParams = {}) =>\n this.http.request<SortParentsResponse, void>({\n path: `/api/v1/sorts/${id}/parents`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n BulkAddTermsRequest,\n BulkAddTermsResponse,\n ClearTermsResponse,\n CreateTermRequest,\n TermExistsResponse,\n TermListResponse,\n TermResponse,\n UpdateTermRequest,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Terms<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Creates a term and validates it against its sort's existential witnesses. This implements Hassan Aït-Kaci's LIFE semantics where \"types ARE constraints\". ## Witness Validation When a term is created: 1. If the sort has no witnesses → state = `no_witnesses` (trivially complete) 2. If all witnesses are satisfied → state = `complete` with proofs 3. If witnesses can't be satisfied yet → state = `residuated` (waiting for info) Residuated terms are stored and will be re-evaluated when new facts arrive that might satisfy their pending witnesses. # Authorization Requires X-Tenant-Id header. The tenant_id field in the request body is ignored.\n *\n * @tags terms\n * @name AddTerm\n * @summary Add a new term\n * @request POST:/api/v1/terms\n * @secure\n */\n addTerm = (data: CreateTermRequest, params: RequestParams = {}) =>\n this.http.request<TermResponse, void>({\n path: `/api/v1/terms`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Creates multiple terms in a single operation for efficiency. This is optimized for high-volume data loading scenarios and skips individual witness validation (constraint propagation runs once at the end). # Performance - Terms are added to the domain store in a single lock acquisition - Constraint propagation runs once after all terms are added - Much faster than calling add_term N times # Authorization Requires X-Tenant-Id header. The tenant_id is taken from the header.\n *\n * @tags terms\n * @name BulkAddTerms\n * @summary Bulk add multiple terms\n * @request POST:/api/v1/terms/bulk\n * @secure\n */\n bulkAddTerms = (data: BulkAddTermsRequest, params: RequestParams = {}) =>\n this.http.request<BulkAddTermsResponse, void>({\n path: `/api/v1/terms/bulk`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Removes all terms (facts and rules) belonging to the tenant identified by the X-Tenant-Id header. This clears both PostgreSQL persistence and in-memory stores, including the residuation store. # Authorization Requires X-Tenant-Id header.\n *\n * @tags terms\n * @name ClearTerms\n * @summary Clear all terms for the authenticated tenant\n * @request DELETE:/api/v1/terms\n * @secure\n */\n clearTerms = (params: RequestParams = {}) =>\n this.http.request<ClearTermsResponse, any>({\n path: `/api/v1/terms`,\n method: \"DELETE\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags terms\n * @name DeleteTerm\n * @summary Delete a term\n * @request DELETE:/api/v1/terms/{id}\n */\n deleteTerm = (id: string, params: RequestParams = {}) =>\n this.http.request<void, void>({\n path: `/api/v1/terms/${id}`,\n method: \"DELETE\",\n ...params,\n });\n /**\n * No description\n *\n * @tags terms\n * @name GetTerm\n * @summary Get a term by ID\n * @request GET:/api/v1/terms/{id}\n */\n getTerm = (id: string, params: RequestParams = {}) =>\n this.http.request<TermResponse, void>({\n path: `/api/v1/terms/${id}`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n /**\n * @description Returns all terms belonging to the tenant identified by the X-Tenant-Id header. Terms are enriched with sort names, display names, and referenced term summaries. # Authorization Requires X-Tenant-Id header.\n *\n * @tags terms\n * @name ListTerms\n * @summary List all terms for the authenticated tenant\n * @request GET:/api/v1/terms\n * @secure\n */\n listTerms = (params: RequestParams = {}) =>\n this.http.request<TermListResponse, any>({\n path: `/api/v1/terms`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags terms\n * @name TermExists\n * @summary Check if a term exists\n * @request GET:/api/v1/terms/{id}/exists\n */\n termExists = (id: string, params: RequestParams = {}) =>\n this.http.request<TermExistsResponse, any>({\n path: `/api/v1/terms/${id}/exists`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags terms\n * @name UpdateTerm\n * @summary Update a term\n * @request PUT:/api/v1/terms/{id}\n */\n updateTerm = (\n id: string,\n data: UpdateTermRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<TermResponse, void>({\n path: `/api/v1/terms/${id}`,\n method: \"PUT\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n AddFactRequest,\n AddFactResponse,\n AddRuleRequest,\n AddRuleResponse,\n BackwardChainRequest,\n BackwardChainResponse,\n BayesianPredictRequest,\n BayesianPredictResponse,\n BulkAddFactsRequest,\n BulkAddFactsResponse,\n BulkAddRulesRequest,\n BulkAddRulesResponse,\n BulkFuzzyProveRequest,\n BulkFuzzyProveResponse,\n ClearFactsResponse,\n CreateGoalRequest,\n CreateGoalResponse,\n DeleteGoalResponse,\n ForwardChainRequest,\n ForwardChainResponse,\n FuzzyProveRequest,\n FuzzyProveResponse,\n GetFactsResponse,\n ListGoalsResponse,\n MetaSortsResponse,\n NafProveRequest,\n PsiTermDto,\n TaggedForwardChainRequest,\n TaggedForwardChainResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Inference<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description # DEPRECATED This endpoint is deprecated. Use `POST /api/v1/terms` instead. Both endpoints now do the same thing (TRUE HOMOICONICITY). # TRUE HOMOICONIC API Request contains a term. Response returns the created fact as a PsiTermDto. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name AddFact\n * @summary Add a fact to the knowledge base (fact is a rule with empty body)\n * @request POST:/api/v1/inference/facts\n * @secure\n */\n addFact = (data: AddFactRequest, params: RequestParams = {}) =>\n this.http.request<AddFactResponse, any>({\n path: `/api/v1/inference/facts`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description # TRUE HOMOICONIC API Request contains a term (head) and antecedents (body). Response returns the created rule as a PsiTermDto. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name AddRule\n * @summary Add a rule to the knowledge base\n * @request POST:/api/v1/inference/rules\n * @secure\n */\n addRule = (data: AddRuleRequest, params: RequestParams = {}) =>\n this.http.request<AddRuleResponse, any>({\n path: `/api/v1/inference/rules`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description # TRUE HOMOICONIC API Request contains a goal term and optional constraints. Response returns solutions with term-based substitutions. ## Temporal Reasoning Use constraints to filter by temporal relations: ```json { \"goal\": {\"sort_name\": \"Employment\", \"features\": {\"valid_to\": {\"name\": \"?EndTime\"}}}, \"constraints\": [{\"type\": \"Guard\", \"left\": \"?EndTime\", \"op\": \"lt\", \"right\": \"1583020800000\"}] } ``` # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name BackwardChain\n * @summary Execute backward chaining query\n * @request POST:/api/v1/inference/backward-chain\n * @secure\n */\n backwardChain = (data: BackwardChainRequest, params: RequestParams = {}) =>\n this.http.request<BackwardChainResponse, any>({\n path: `/api/v1/inference/backward-chain`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description This endpoint: 1. Runs fuzzy_prove to find all matching facts (priors + learned data) 2. Extracts FuzzyNumber values from the specified variable binding 3. Merges them using Bayesian conjugate update (for Gaussians) 4. Returns the merged posterior distribution # Authorization Requires X-Tenant-Id header. The tenant_id field in the request body is ignored.\n *\n * @tags inference\n * @name BayesianPredict\n * @summary Execute Bayesian prediction by merging multiple FuzzyNumber sources\n * @request POST:/api/v1/inference/bayesian-predict\n * @secure\n */\n bayesianPredict = (\n data: BayesianPredictRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BayesianPredictResponse, void>({\n path: `/api/v1/inference/bayesian-predict`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description # DEPRECATED This endpoint is deprecated. Use `POST /api/v1/terms/bulk` instead. Both endpoints now do the same thing (TRUE HOMOICONICITY). # TRUE HOMOICONIC API Request contains list of terms. Response returns term IDs. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name BulkAddFacts\n * @summary Add multiple facts to the knowledge base in bulk Optimized for high-throughput insertion (10K+ facts)\n * @request POST:/api/v1/inference/facts/bulk\n * @secure\n */\n bulkAddFacts = (data: BulkAddFactsRequest, params: RequestParams = {}) =>\n this.http.request<BulkAddFactsResponse, any>({\n path: `/api/v1/inference/facts/bulk`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description # TRUE HOMOICONIC API Request contains list of rules (head + antecedents). Response returns rule term IDs. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name BulkAddRules\n * @summary Add multiple rules to the knowledge base in bulk Optimized for high-throughput insertion (100+ rules at once)\n * @request POST:/api/v1/inference/rules/bulk\n * @secure\n */\n bulkAddRules = (data: BulkAddRulesRequest, params: RequestParams = {}) =>\n this.http.request<BulkAddRulesResponse, any>({\n path: `/api/v1/inference/rules/bulk`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description This endpoint dramatically reduces latency by: 1. Single HTTP round-trip for multiple queries 2. Shared hierarchy, term store overlay, and rules across all queries # TRUE HOMOICONIC API Uses TermInputDto for goals with nested features. Response uses homoiconic SolutionDto. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name BulkFuzzyProve\n * @summary Execute bulk fuzzy inference - multiple goals in one request\n * @request POST:/api/v1/inference/fuzzy-prove/bulk\n * @secure\n */\n bulkFuzzyProve = (data: BulkFuzzyProveRequest, params: RequestParams = {}) =>\n this.http.request<BulkFuzzyProveResponse, void>({\n path: `/api/v1/inference/fuzzy-prove/bulk`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description # DEPRECATED This endpoint is deprecated. Use `DELETE /api/v1/terms/{term_id}` for individual terms. # TRUE HOMOICONIC API # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name ClearFacts\n * @summary Clear all facts and rules for a tenant\n * @request DELETE:/api/v1/inference/facts/{tenant_id}\n * @secure\n */\n clearFacts = (tenantId: string, params: RequestParams = {}) =>\n this.http.request<ClearFactsResponse, any>({\n path: `/api/v1/inference/facts/${tenantId}`,\n method: \"DELETE\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description # TRUE HOMOICONICITY Goals are first-class Ψ-terms that can be created, persisted, and reused. This endpoint creates a goal from clauses and optional constraints, persists it to PostgreSQL, and returns the goal ID for later use. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name CreateGoal\n * @summary Create and persist a new goal\n * @request POST:/api/v1/inference/goals\n * @secure\n */\n createGoal = (data: CreateGoalRequest, params: RequestParams = {}) =>\n this.http.request<CreateGoalResponse, void>({\n path: `/api/v1/inference/goals`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description # TRUE HOMOICONICITY Deletes the goal term. Optionally deletes all referenced terms. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name DeleteGoal\n * @summary Delete a saved goal\n * @request DELETE:/api/v1/inference/goals/{goal_id}\n * @secure\n */\n deleteGoal = (\n goalId: string,\n query?: {\n /** Also delete referenced terms */\n delete_references?: boolean;\n },\n params: RequestParams = {},\n ) =>\n this.http.request<DeleteGoalResponse, void>({\n path: `/api/v1/inference/goals/${goalId}`,\n method: \"DELETE\",\n query: query,\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description # TRUE HOMOICONIC API Uses existing rules in the store. Initial facts can be provided or uses existing facts. Returns derived facts as PsiTermDto. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name ForwardChain\n * @summary Execute forward chaining materialization\n * @request POST:/api/v1/inference/forward-chain\n * @secure\n */\n forwardChain = (data: ForwardChainRequest, params: RequestParams = {}) =>\n this.http.request<ForwardChainResponse, any>({\n path: `/api/v1/inference/forward-chain`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Runs forward chaining with probabilistic provenance tags. Each derived fact carries a confidence value computed from the provenance semiring operations (noisy-or for disjunction, product for conjunction). This extends the standard forward chain endpoint by tracking how confidence propagates through rule application, enabling probabilistic reasoning over the knowledge base.\n *\n * @tags inference\n * @name ForwardChainTagged\n * @summary POST /api/v1/inference/forward-chain-tagged\n * @request POST:/api/v1/inference/forward-chain-tagged\n * @secure\n */\n forwardChainTagged = (\n data: TaggedForwardChainRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<TaggedForwardChainResponse, void>({\n path: `/api/v1/inference/forward-chain-tagged`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description # TRUE HOMOICONIC API Request contains a goal term. Response returns solutions with fuzzy degrees. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name FuzzyProve\n * @summary Execute fuzzy inference\n * @request POST:/api/v1/inference/fuzzy-prove\n * @secure\n */\n fuzzyProve = (data: FuzzyProveRequest, params: RequestParams = {}) =>\n this.http.request<FuzzyProveResponse, any>({\n path: `/api/v1/inference/fuzzy-prove`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description # DEPRECATED This endpoint is deprecated. Use `GET /api/v1/terms?tenant_id={tenant_id}` instead. Both endpoints now return the same data (TRUE HOMOICONICITY). # TRUE HOMOICONIC API Returns facts as PsiTermDto. UNIFIED: Hydrates from PostgreSQL on first access (facts survive server restarts) # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name GetFacts\n * @summary Get all facts for a tenant with their full data\n * @request GET:/api/v1/inference/facts/{tenant_id}\n * @secure\n */\n getFacts = (tenantId: string, params: RequestParams = {}) =>\n this.http.request<GetFactsResponse, any>({\n path: `/api/v1/inference/facts/${tenantId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description # TRUE HOMOICONICITY Returns the full goal term with all its referenced terms. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name GetGoal\n * @summary Get a specific saved goal by ID\n * @request GET:/api/v1/inference/goals/{goal_id}\n * @secure\n */\n getGoal = (goalId: string, params: RequestParams = {}) =>\n this.http.request<PsiTermDto, void>({\n path: `/api/v1/inference/goals/${goalId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description Returns the sort IDs of built-in meta sorts (guard_constraint, variable, etc.) Clients need these IDs to create terms using built-in sorts. # TRUE HOMOICONICITY In Aït-Kaci's vision, everything is referenced by ID, not by name. This endpoint provides the IDs clients need for built-in sorts. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name GetMetaSorts\n * @summary Get meta sort IDs for TRUE HOMOICONICITY\n * @request GET:/api/v1/inference/meta-sorts\n * @secure\n */\n getMetaSorts = (params: RequestParams = {}) =>\n this.http.request<MetaSortsResponse, any>({\n path: `/api/v1/inference/meta-sorts`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description # TRUE HOMOICONICITY Goals are Ψ-terms persisted to PostgreSQL. This endpoint returns all goals for the authenticated tenant with summary information. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name ListGoals\n * @summary List all saved goals for the authenticated tenant\n * @request GET:/api/v1/inference/goals\n * @secure\n */\n listGoals = (params: RequestParams = {}) =>\n this.http.request<ListGoalsResponse, void>({\n path: `/api/v1/inference/goals`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description # TRUE HOMOICONIC API Uses LiteralInputDto with TermInputDto for literals. Response uses homoiconic SolutionDto. # Authorization Requires X-Tenant-Id header.\n *\n * @tags inference\n * @name NafProve\n * @summary Execute NAF-enabled backward chaining\n * @request POST:/api/v1/inference/naf-prove\n * @secure\n */\n nafProve = (data: NafProveRequest, params: RequestParams = {}) =>\n this.http.request<BackwardChainResponse, any>({\n path: `/api/v1/inference/naf-prove`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n AdaptiveModifyRequest,\n AdaptiveModifyResponse,\n AddBeliefRequest,\n AddBeliefResponse,\n AddCognitiveRuleRequest,\n AddCognitiveRuleResponse,\n AddGoalRequest,\n AddGoalResponse,\n CreateAgentRequest,\n CreateAgentResponse,\n CreateCognitiveSortRequest,\n CreateCognitiveSortResponse,\n GetAgentStateRequest,\n GetAgentStateResponse,\n GetExtendedAgentStateResponse,\n LearnFromCorrectionRequest,\n LearnFromCorrectionResponse,\n MotivationStateDto,\n ProvideFeedbackRequest,\n ProvideFeedbackResponse,\n ReflectionQueryRequest,\n ReflectionQueryResponse,\n RunCycleRequest,\n RunCycleResponse,\n RunIntegratedCycleRequest,\n RunIntegratedCycleResponse,\n SubscribeToKbRequest,\n SubscribeToKbResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Cognitive<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description This demonstrates TRUE HOMOICONICITY - rules can be asserted/retracted during inference, not just at API boundaries.\n *\n * @tags cognitive\n * @name AdaptiveModify\n * @summary Adaptive modification: agent modifies rules during inference.\n * @request POST:/api/v1/cognitive/agents/adapt\n */\n adaptiveModify = (data: AdaptiveModifyRequest, params: RequestParams = {}) =>\n this.http.request<AdaptiveModifyResponse, void>({\n path: `/api/v1/cognitive/agents/adapt`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags cognitive\n * @name AddBelief\n * @summary Add a belief to an agent.\n * @request POST:/api/v1/cognitive/agents/beliefs\n */\n addBelief = (data: AddBeliefRequest, params: RequestParams = {}) =>\n this.http.request<AddBeliefResponse, void>({\n path: `/api/v1/cognitive/agents/beliefs`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description This allows adding rules that the cognitive agent can use during its cycle. Rules are stored in the agent registry's ruleset (separate from the inference API).\n *\n * @tags cognitive\n * @name AddCognitiveRule\n * @summary Add a rule to the cognitive agent's ruleset.\n * @request POST:/api/v1/cognitive/agents/rules\n */\n addCognitiveRule = (\n data: AddCognitiveRuleRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<AddCognitiveRuleResponse, void>({\n path: `/api/v1/cognitive/agents/rules`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description The goal is stored as a Ψ-term with the agent_id feature set, allowing the CognitiveAgentEngine to query goals for a specific agent.\n *\n * @tags cognitive\n * @name AddGoal\n * @summary Add a goal to an agent.\n * @request POST:/api/v1/cognitive/agents/goals\n */\n addGoal = (data: AddGoalRequest, params: RequestParams = {}) =>\n this.http.request<AddGoalResponse, void>({\n path: `/api/v1/cognitive/agents/goals`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description ## Example ```bash curl -X POST http://localhost:3000/api/v1/cognitive/agents \\ -H \"Content-Type: application/json\" \\ -d '{\"name\": \"reasoning_agent\", \"tenant_id\": \"...\"}' ```\n *\n * @tags cognitive\n * @name CreateAgent\n * @summary Create a new cognitive agent.\n * @request POST:/api/v1/cognitive/agents\n */\n createAgent = (data: CreateAgentRequest, params: RequestParams = {}) =>\n this.http.request<CreateAgentResponse, void>({\n path: `/api/v1/cognitive/agents`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description This is necessary because cognitive agents use their own sort hierarchy separate from the inference system. Sorts must exist before rules can use them.\n *\n * @tags cognitive\n * @name CreateCognitiveSort\n * @summary Create a sort in the cognitive agent registry.\n * @request POST:/api/v1/cognitive/agents/sorts\n */\n createCognitiveSort = (\n data: CreateCognitiveSortRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<CreateCognitiveSortResponse, void>({\n path: `/api/v1/cognitive/agents/sorts`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Returns drives, deficits, curiosity targets, and the dominant drive. ## Example ```bash curl -X GET \"http://localhost:3000/api/v1/cognitive/agents/{id}/drives?tenant_id=...\" ```\n *\n * @tags cognitive\n * @name GetAgentDrives\n * @summary Get agent drives and motivation state.\n * @request GET:/api/v1/cognitive/agents/{agent_id}/drives\n */\n getAgentDrives = (\n agentId: string,\n query: {\n /**\n * Tenant ID\n * @format uuid\n */\n tenant_id: string;\n },\n params: RequestParams = {},\n ) =>\n this.http.request<MotivationStateDto, void>({\n path: `/api/v1/cognitive/agents/${agentId}/drives`,\n method: \"GET\",\n query: query,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags cognitive\n * @name GetAgentState\n * @summary Get agent state (goals, beliefs).\n * @request POST:/api/v1/cognitive/agents/state\n */\n getAgentState = (data: GetAgentStateRequest, params: RequestParams = {}) =>\n this.http.request<GetAgentStateResponse, void>({\n path: `/api/v1/cognitive/agents/state`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Returns beliefs, goals, intentions, pending perceptions, activations, recent episodes, and rule utilities. ## Example ```bash curl -X GET \"http://localhost:3000/api/v1/cognitive/agents/{id}/state?tenant_id=...\" ```\n *\n * @tags cognitive\n * @name GetExtendedAgentState\n * @summary Get extended agent state including full cognitive state.\n * @request GET:/api/v1/cognitive/agents/{agent_id}/extended-state\n */\n getExtendedAgentState = (\n agentId: string,\n query: {\n /**\n * Tenant ID\n * @format uuid\n */\n tenant_id: string;\n },\n params: RequestParams = {},\n ) =>\n this.http.request<GetExtendedAgentStateResponse, void>({\n path: `/api/v1/cognitive/agents/${agentId}/extended-state`,\n method: \"GET\",\n query: query,\n format: \"json\",\n ...params,\n });\n /**\n * @description Unlike `provide_feedback` which accepts natural language corrections, this endpoint accepts a structured correction pattern directly as Ψ-term features. This is useful when the client has already parsed the correction.\n *\n * @tags cognitive\n * @name LearnFromCorrection\n * @summary Learn from a user correction with explicit pattern.\n * @request POST:/api/v1/cognitive/learn_correction\n */\n learnFromCorrection = (\n data: LearnFromCorrectionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<LearnFromCorrectionResponse, void>({\n path: `/api/v1/cognitive/learn_correction`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description This enables the agent to learn from user corrections and preferences. All feedback is stored as Ψ-terms for TRUE HOMOICONICITY - they are queryable, unifiable, and can be reasoned about by the agent. ## Feedback Rating - `+1`: Result was correct/helpful - increases rule utility - `0`: Neutral - no learning - `-1`: Result was wrong - decreases rule utility, triggers correction learning ## Corrections When a correction is provided: 1. A `user_correction` Ψ-term is created with the correct answer pattern 2. Rules that produced the wrong result have their utility decreased 3. A new rule may be learned from the correction ## Preferences When a preference is provided: 1. A `user_preference` Ψ-term is created (subsort of constraint) 2. Future reasoning can consider this preference\n *\n * @tags cognitive\n * @name ProvideFeedback\n * @summary Provide user feedback on agent results.\n * @request POST:/api/v1/cognitive/feedback\n */\n provideFeedback = (\n data: ProvideFeedbackRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ProvideFeedbackResponse, void>({\n path: `/api/v1/cognitive/feedback`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description This demonstrates TRUE HOMOICONICITY - the agent can reason about its own inference rules using the same unification-based query mechanism.\n *\n * @tags cognitive\n * @name ReflectionQuery\n * @summary Reflection query: agent queries its own rules.\n * @request POST:/api/v1/cognitive/agents/reflect\n */\n reflectionQuery = (\n data: ReflectionQueryRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ReflectionQueryResponse, void>({\n path: `/api/v1/cognitive/agents/reflect`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Executes: perceive → reason → act → learn\n *\n * @tags cognitive\n * @name RunCycle\n * @summary Run one cycle of the agent's cognitive loop.\n * @request POST:/api/v1/cognitive/agents/cycle\n */\n runCycle = (data: RunCycleRequest, params: RequestParams = {}) =>\n this.http.request<RunCycleResponse, void>({\n path: `/api/v1/cognitive/agents/cycle`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description This executes the full cognitive cycle using all 9 modules: PERCEIVE → ACTIVATE → DELIBERATE → PREDICT → SIMULATE → EXECUTE → IMPASSE → LEARN → DECAY ## Example ```bash curl -X POST http://localhost:3000/api/v1/cognitive/agents/integrated-cycle \\ -H \"Content-Type: application/json\" \\ -d '{\"agent_id\": \"...\", \"tenant_id\": \"...\"}' ```\n *\n * @tags cognitive\n * @name RunIntegratedCycle\n * @summary Run an integrated cognitive cycle.\n * @request POST:/api/v1/cognitive/agents/integrated-cycle\n */\n runIntegratedCycle = (\n data: RunIntegratedCycleRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<RunIntegratedCycleResponse, void>({\n path: `/api/v1/cognitive/agents/integrated-cycle`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description When subscribed, the agent will receive notifications about changes to the specified sorts and features, enabling reactive behavior. ## Example ```bash curl -X POST http://localhost:3000/api/v1/cognitive/agents/subscribe \\ -H \"Content-Type: application/json\" \\ -d '{\"agent_id\": \"...\", \"tenant_id\": \"...\", \"watched_sorts\": [\"person\", \"event\"]}' ```\n *\n * @tags cognitive\n * @name SubscribeToKb\n * @summary Subscribe an agent to KB changes.\n * @request POST:/api/v1/cognitive/agents/subscribe\n */\n subscribeToKb = (data: SubscribeToKbRequest, params: RequestParams = {}) =>\n this.http.request<SubscribeToKbResponse, void>({\n path: `/api/v1/cognitive/agents/subscribe`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n EpisodeStatsResponse,\n GetEpisodeStatsRequest,\n RecallEpisodesRequest,\n RecallEpisodesResponse,\n RecordEpisodeRequest,\n RecordEpisodeResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class CognitiveAgentsEpisodicMemory<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags Cognitive Agents - Episodic Memory\n * @name GetEpisodeStats\n * @summary Get episode statistics.\n * @request POST:/api/v1/cognitive/agents/episodes/stats\n */\n getEpisodeStats = (\n data: GetEpisodeStatsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<EpisodeStatsResponse, void>({\n path: `/api/v1/cognitive/agents/episodes/stats`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags Cognitive Agents - Episodic Memory\n * @name RecallEpisodes\n * @summary Recall similar episodes from memory.\n * @request POST:/api/v1/cognitive/agents/episodes/recall\n */\n recallEpisodes = (data: RecallEpisodesRequest, params: RequestParams = {}) =>\n this.http.request<RecallEpisodesResponse, void>({\n path: `/api/v1/cognitive/agents/episodes/recall`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags Cognitive Agents - Episodic Memory\n * @name RecordEpisode\n * @summary Record an episode in memory.\n * @request POST:/api/v1/cognitive/agents/episodes\n */\n recordEpisode = (data: RecordEpisodeRequest, params: RequestParams = {}) =>\n this.http.request<RecordEpisodeResponse, void>({\n path: `/api/v1/cognitive/agents/episodes`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n AddHtnMethodRequest,\n AddHtnMethodResponse,\n DecomposeGoalRequest,\n DecomposeGoalResponse,\n GetHtnMethodsRequest,\n GetHtnMethodsResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class CognitiveAgentsHtn<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Registers a method that decomposes a task into subtasks.\n *\n * @tags Cognitive Agents - HTN\n * @name AddHtnMethod\n * @summary Add an HTN decomposition method.\n * @request POST:/api/v1/cognitive/agents/htn/methods\n */\n addHtnMethod = (data: AddHtnMethodRequest, params: RequestParams = {}) =>\n this.http.request<AddHtnMethodResponse, void>({\n path: `/api/v1/cognitive/agents/htn/methods`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Recursively decomposes a goal into executable primitive actions.\n *\n * @tags Cognitive Agents - HTN\n * @name DecomposeGoal\n * @summary Decompose a goal using HTN planning.\n * @request POST:/api/v1/cognitive/agents/htn/decompose\n */\n decomposeGoal = (data: DecomposeGoalRequest, params: RequestParams = {}) =>\n this.http.request<DecomposeGoalResponse, void>({\n path: `/api/v1/cognitive/agents/htn/decompose`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags Cognitive Agents - HTN\n * @name GetHtnMethods\n * @summary Get HTN methods, optionally filtered by task sort.\n * @request POST:/api/v1/cognitive/agents/htn/methods/list\n */\n getHtnMethods = (data: GetHtnMethodsRequest, params: RequestParams = {}) =>\n this.http.request<GetHtnMethodsResponse, void>({\n path: `/api/v1/cognitive/agents/htn/methods/list`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n BroadcastMessageRequest,\n BroadcastMessageResponse,\n GetInboxRequest,\n GetInboxResponse,\n MarkMessagesReadRequest,\n MarkMessagesReadResponse,\n SendMessageRequest,\n SendMessageResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class CognitiveAgentsMessaging<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags Cognitive Agents - Messaging\n * @name BroadcastMessage\n * @summary Broadcast a message to all agents.\n * @request POST:/api/v1/cognitive/agents/messages/broadcast\n */\n broadcastMessage = (\n data: BroadcastMessageRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BroadcastMessageResponse, void>({\n path: `/api/v1/cognitive/agents/messages/broadcast`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags Cognitive Agents - Messaging\n * @name GetInbox\n * @summary Get an agent's inbox.\n * @request POST:/api/v1/cognitive/agents/messages/inbox\n */\n getInbox = (data: GetInboxRequest, params: RequestParams = {}) =>\n this.http.request<GetInboxResponse, void>({\n path: `/api/v1/cognitive/agents/messages/inbox`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags Cognitive Agents - Messaging\n * @name MarkMessagesRead\n * @summary Mark messages as read.\n * @request POST:/api/v1/cognitive/agents/messages/read\n */\n markMessagesRead = (\n data: MarkMessagesReadRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<MarkMessagesReadResponse, void>({\n path: `/api/v1/cognitive/agents/messages/read`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags Cognitive Agents - Messaging\n * @name SendMessage\n * @summary Send a message to another agent.\n * @request POST:/api/v1/cognitive/agents/messages\n */\n sendMessage = (data: SendMessageRequest, params: RequestParams = {}) =>\n this.http.request<SendMessageResponse, void>({\n path: `/api/v1/cognitive/agents/messages`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n DeletePlanResponse,\n FindPlansRequest,\n FindPlansResponse,\n StorePlanRequest,\n StorePlanResponse,\n UpdatePlanStatsRequest,\n UpdatePlanStatsResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class CognitiveAgentsPlanLibrary<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags Cognitive Agents - Plan Library\n * @name DeletePlan\n * @summary Delete a plan from the library.\n * @request DELETE:/api/v1/cognitive/agents/plans/{plan_id}\n */\n deletePlan = (\n planId: string,\n query: {\n /**\n * Tenant ID\n * @format uuid\n */\n tenant_id: string;\n },\n params: RequestParams = {},\n ) =>\n this.http.request<DeletePlanResponse, void>({\n path: `/api/v1/cognitive/agents/plans/${planId}`,\n method: \"DELETE\",\n query: query,\n format: \"json\",\n ...params,\n });\n /**\n * @description Searches the plan library for plans that match the given goal.\n *\n * @tags Cognitive Agents - Plan Library\n * @name FindPlans\n * @summary Find matching plans for a goal.\n * @request POST:/api/v1/cognitive/agents/plans/find\n */\n findPlans = (data: FindPlansRequest, params: RequestParams = {}) =>\n this.http.request<FindPlansResponse, void>({\n path: `/api/v1/cognitive/agents/plans/find`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Stores a successful action sequence as a reusable plan template.\n *\n * @tags Cognitive Agents - Plan Library\n * @name StorePlan\n * @summary Store a plan in the library.\n * @request POST:/api/v1/cognitive/agents/plans\n */\n storePlan = (data: StorePlanRequest, params: RequestParams = {}) =>\n this.http.request<StorePlanResponse, void>({\n path: `/api/v1/cognitive/agents/plans`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags Cognitive Agents - Plan Library\n * @name UpdatePlanStats\n * @summary Update plan statistics after execution.\n * @request POST:/api/v1/cognitive/agents/plans/stats\n */\n updatePlanStats = (\n data: UpdatePlanStatsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<UpdatePlanStatsResponse, void>({\n path: `/api/v1/cognitive/agents/plans/stats`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n CancelDocumentResponse,\n DlqAbandonResponse,\n DlqCountResponse,\n DlqListResponse,\n IngestDocumentBatchRequest,\n IngestDocumentBatchResponse,\n IngestDocumentRequest,\n IngestDocumentResponse,\n IngestMarkdownBatchRequest,\n IngestMarkdownRequest,\n IngestRdfRequest,\n IngestRdfResponse,\n IngestionSessionResponse,\n ListIncompleteDocumentsResponse,\n ListIngestionSessionsResponse,\n QueueMetricsResponse,\n RecoverStuckRequest,\n RecoverStuckResponse,\n ReprocessFailedRequest,\n ReprocessFailedResponse,\n ResumeDocumentIngestionRequest,\n ResumeDocumentIngestionResponse,\n SessionProgressResponse,\n SessionStatsResponse,\n StartIngestionSessionRequest,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Ingestion<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Marks a pending DLQ entry as abandoned. Retained for audit but not retried.\n *\n * @tags ingestion\n * @name AbandonDlqEntry\n * @summary Abandon a DLQ entry (operator decides to skip it permanently).\n * @request POST:/api/v1/ingest/dlq/{id}/abandon\n * @secure\n */\n abandonDlqEntry = (id: string, params: RequestParams = {}) =>\n this.http.request<DlqAbandonResponse, void>({\n path: `/api/v1/ingest/dlq/${id}/abandon`,\n method: \"POST\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags ingestion\n * @name CancelDocumentIngestion\n * @summary Cancel an in-progress or pending document ingestion.\n * @request POST:/api/v1/ingest/sessions/{session_id}/documents/{document_id}/cancel\n * @secure\n */\n cancelDocumentIngestion = (\n sessionId: string,\n documentId: string,\n params: RequestParams = {},\n ) =>\n this.http.request<CancelDocumentResponse, void>({\n path: `/api/v1/ingest/sessions/${sessionId}/documents/${documentId}/cancel`,\n method: \"POST\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags ingestion\n * @name CountDlqEntries\n * @summary Count pending DLQ entries for the current tenant.\n * @request GET:/api/v1/ingest/dlq/count\n * @secure\n */\n countDlqEntries = (params: RequestParams = {}) =>\n this.http.request<DlqCountResponse, void>({\n path: `/api/v1/ingest/dlq/count`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description DELETE /api/v1/ingest/sessions/{session_id} Deletes an ingestion session and all associated progress records. This does NOT delete the ingested entities - only the session tracking data. # Path Parameters - `session_id`: UUID of the session to delete # Headers - `X-Tenant-Id`: Tenant ID for multi-tenancy isolation (required) # Response - 204 No Content on success\n *\n * @tags ingestion\n * @name DeleteIngestionSession\n * @summary Delete an ingestion session\n * @request DELETE:/api/v1/ingest/sessions/{session_id}\n * @secure\n */\n deleteIngestionSession = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<void, void>({\n path: `/api/v1/ingest/sessions/${sessionId}`,\n method: \"DELETE\",\n secure: true,\n ...params,\n });\n /**\n * @description GET /api/v1/ingest/sessions/{session_id}/documents/{document_id}/stats Returns ingestion stats for a specific document. Returns 204 No Content if the document exists but stats are not yet available (still processing). # Response Codes - 200: Document stats returned - 204: Document exists but stats not yet available - 404: Session or document not found\n *\n * @tags ingestion\n * @name GetIngestionDocumentStats\n * @summary Get stats for a single document within a session\n * @request GET:/api/v1/ingest/sessions/{session_id}/documents/{document_id}/stats\n * @secure\n */\n getIngestionDocumentStats = (\n sessionId: string,\n documentId: string,\n params: RequestParams = {},\n ) =>\n this.http.request<void, void>({\n path: `/api/v1/ingest/sessions/${sessionId}/documents/${documentId}/stats`,\n method: \"GET\",\n secure: true,\n ...params,\n });\n /**\n * @description Returns in-progress document snapshots with rich contextual data.\n *\n * @tags ingestion\n * @name GetIngestionProgress\n * @summary Get live pipeline progress for all documents in a session.\n * @request GET:/api/v1/ingest/sessions/{session_id}/progress\n * @secure\n */\n getIngestionProgress = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<SessionProgressResponse, void>({\n path: `/api/v1/ingest/sessions/${sessionId}/progress`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description GET /api/v1/ingest/sessions/{session_id} Returns details of a specific ingestion session. # Path Parameters - `session_id`: UUID of the session # Headers - `X-Tenant-Id`: Tenant ID for multi-tenancy isolation (required) # Response - Session details including status and progress\n *\n * @tags ingestion\n * @name GetIngestionSession\n * @summary Get an ingestion session by ID\n * @request GET:/api/v1/ingest/sessions/{session_id}\n * @secure\n */\n getIngestionSession = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<IngestionSessionResponse, void>({\n path: `/api/v1/ingest/sessions/${sessionId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description GET /api/v1/ingest/sessions/{session_id}/stats Returns per-document ingestion stats (term_ids, sort_names, processing_time_ms, etc.) for all documents in the session that have completed processing. # Response Codes - 200: Stats returned (may be empty if no documents completed yet) - 404: Session not found\n *\n * @tags ingestion\n * @name GetIngestionSessionStats\n * @summary Get stats for all completed documents in a session\n * @request GET:/api/v1/ingest/sessions/{session_id}/stats\n * @secure\n */\n getIngestionSessionStats = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<SessionStatsResponse, void>({\n path: `/api/v1/ingest/sessions/${sessionId}/stats`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description Returns current queue depth, document counts by status, circuit breaker state, and worker count.\n *\n * @tags ingestion\n * @name GetQueueMetrics\n * @summary Get queue metrics for the ingestion pipeline.\n * @request GET:/api/v1/ingest/queue-metrics\n * @secure\n */\n getQueueMetrics = (params: RequestParams = {}) =>\n this.http.request<QueueMetricsResponse, void>({\n path: `/api/v1/ingest/queue-metrics`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/ingest/document This endpoint accepts a document (as base64 or URL) and: 1. Parses it to Markdown using the document parser service (Docling) 2. Processes the Markdown through the existing ingestion pipeline 3. Returns combined statistics from both stages # Headers - `X-Tenant-Id`: Tenant ID for multi-tenancy isolation (required) # Request Body - `document`: Document source (base64 or URL) - `document_type`: Optional type hint (auto-detected if not provided) - `owner_id`: User ID who owns the ingested data - `ocr_config`: Optional OCR/parsing configuration - `ingestion_config`: Optional markdown ingestion configuration # Response - `success`: Whether ingestion completed successfully - `parse_stats`: Statistics from document parsing - `metadata`: Extracted document metadata - `ingestion_stats`: Statistics from markdown ingestion - `pending_review`: Entities that need human review\n *\n * @tags ingestion\n * @name IngestDocument\n * @summary Ingest a single document (PDF, DOCX, etc.)\n * @request POST:/api/v1/ingest/document\n * @secure\n */\n ingestDocument = (data: IngestDocumentRequest, params: RequestParams = {}) =>\n this.http.request<IngestDocumentResponse, void>({\n path: `/api/v1/ingest/document`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/ingest/document/batch This endpoint accepts multiple documents and processes them sequentially, sharing deduplication context across documents. # Headers - `X-Tenant-Id`: Tenant ID for multi-tenancy isolation (required)\n *\n * @tags ingestion\n * @name IngestDocumentBatch\n * @summary Ingest multiple documents in batch\n * @request POST:/api/v1/ingest/document/batch\n * @secure\n */\n ingestDocumentBatch = (\n data: IngestDocumentBatchRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<IngestDocumentBatchResponse, void>({\n path: `/api/v1/ingest/document/batch`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/ingest/markdown This endpoint accepts markdown content and extracts entities using: 1. Semantic chunking for large documents 2. LLM-based entity extraction 3. Sort reconciliation (optionally creating new sorts) 4. Entity deduplication against existing knowledge base # Headers - `X-Tenant-Id`: Tenant ID for multi-tenancy isolation (required) # Request Body - `content`: The markdown content to ingest - `owner_id`: User ID who owns the ingested data - `config`: Optional configuration overrides # Response - `success`: Whether ingestion completed successfully - `stats`: Statistics about the ingestion (chunks, entities, sorts) - `pending_review`: Entities that need human review for deduplication # Size Limits - Maximum content size is 100KB. For larger documents, use the document ingestion endpoint which handles chunking automatically.\n *\n * @tags ingestion\n * @name IngestMarkdown\n * @summary Ingest a single markdown document\n * @request POST:/api/v1/ingest/markdown\n * @secure\n */\n ingestMarkdown = (\n query: {\n /** When true, process synchronously (returns 201). When false/absent, process asynchronously (returns 202). */\n sync: boolean;\n },\n data: IngestMarkdownRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<void, void>({\n path: `/api/v1/ingest/markdown`,\n method: \"POST\",\n query: query,\n body: data,\n secure: true,\n type: ContentType.Json,\n ...params,\n });\n /**\n * @description POST /api/v1/ingest/markdown/batch This endpoint accepts multiple markdown documents and enqueues them for background processing. Each document is processed independently by background workers, tracked under a single session. When a task queue is available (default), returns 202 Accepted immediately. Falls back to synchronous processing (201 Created) only when no queue is configured. # Headers - `X-Tenant-Id`: Tenant ID for multi-tenancy isolation (required) # Request Body - `documents`: List of markdown documents with IDs and content - `owner_id`: User ID who owns the ingested data - `config`: Optional configuration overrides # Response - Async (202): Session ID + document IDs for tracking - Sync fallback (201): Full ingestion result with stats\n *\n * @tags ingestion\n * @name IngestMarkdownBatch\n * @summary Ingest multiple markdown documents in batch\n * @request POST:/api/v1/ingest/markdown/batch\n * @secure\n */\n ingestMarkdownBatch = (\n data: IngestMarkdownBatchRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<void, void>({\n path: `/api/v1/ingest/markdown/batch`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n ...params,\n });\n /**\n * No description\n *\n * @tags ingestion\n * @name IngestRdf\n * @summary Ingest RDF/OWL/SHACL data and convert to OSF\n * @request POST:/api/v1/ingest/rdf\n * @secure\n */\n ingestRdf = (data: IngestRdfRequest, params: RequestParams = {}) =>\n this.http.request<IngestRdfResponse, void>({\n path: `/api/v1/ingest/rdf`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Returns paginated list of chunk failures in the dead-letter queue.\n *\n * @tags ingestion\n * @name ListDlqEntries\n * @summary List pending DLQ entries for the current tenant.\n * @request GET:/api/v1/ingest/dlq\n * @secure\n */\n listDlqEntries = (\n query?: {\n /**\n * Max entries to return\n * @format int32\n * @min 0\n */\n limit?: number;\n /**\n * Offset for pagination\n * @format int32\n * @min 0\n */\n offset?: number;\n /**\n * Filter by session ID\n * @format uuid\n */\n session_id?: string;\n },\n params: RequestParams = {},\n ) =>\n this.http.request<DlqListResponse, void>({\n path: `/api/v1/ingest/dlq`,\n method: \"GET\",\n query: query,\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description GET /api/v1/ingest/sessions/{session_id}/incomplete Returns documents that have not completed ingestion and can be resumed. For each document, includes the chunk index to resume from. # Path Parameters - `session_id`: UUID of the session # Headers - `X-Tenant-Id`: Tenant ID for multi-tenancy isolation (required) # Response - List of incomplete documents with their resumption points\n *\n * @tags ingestion\n * @name ListIncompleteDocuments\n * @summary List incomplete documents in a session\n * @request GET:/api/v1/ingest/sessions/{session_id}/incomplete\n * @secure\n */\n listIncompleteDocuments = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<ListIncompleteDocumentsResponse, void>({\n path: `/api/v1/ingest/sessions/${sessionId}/incomplete`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description GET /api/v1/ingest/sessions Returns all ingestion sessions for the authenticated tenant. # Headers - `X-Tenant-Id`: Tenant ID for multi-tenancy isolation (required) # Response - List of sessions with their status and progress\n *\n * @tags ingestion\n * @name ListIngestionSessions\n * @summary List all ingestion sessions for the tenant\n * @request GET:/api/v1/ingest/sessions\n * @secure\n */\n listIngestionSessions = (params: RequestParams = {}) =>\n this.http.request<ListIngestionSessionsResponse, void>({\n path: `/api/v1/ingest/sessions`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description Finds documents stuck in InProgress for longer than the specified timeout and releases them back to Pending for re-processing.\n *\n * @tags ingestion\n * @name RecoverStuckDocuments\n * @summary Recover stuck documents that have been in InProgress too long.\n * @request POST:/api/v1/ingest/recover-stuck\n * @secure\n */\n recoverStuckDocuments = (\n data: RecoverStuckRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<RecoverStuckResponse, void>({\n path: `/api/v1/ingest/recover-stuck`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Finds documents in Failed status, resets them and optionally re-enqueues them.\n *\n * @tags ingestion\n * @name ReprocessFailedDocuments\n * @summary Reprocess failed documents by resetting them to Pending.\n * @request POST:/api/v1/ingest/reprocess-failed\n * @secure\n */\n reprocessFailedDocuments = (\n data: ReprocessFailedRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ReprocessFailedResponse, void>({\n path: `/api/v1/ingest/reprocess-failed`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/ingest/sessions/{session_id}/resume Resumes ingestion of an incomplete document from the last successful chunk. The document content must match the original content (verified via hash). # Path Parameters - `session_id`: UUID of the session # Headers - `X-Tenant-Id`: Tenant ID for multi-tenancy isolation (required) # Request Body - `document_id`: ID of the document to resume - `content`: Document content (must match original) - `owner_id`: User ID performing the ingestion - `config`: Optional configuration overrides # Response - Ingestion result including entities extracted and any pending reviews\n *\n * @tags ingestion\n * @name ResumeDocumentIngestion\n * @summary Resume ingestion of a document in a session\n * @request POST:/api/v1/ingest/sessions/{session_id}/resume\n * @secure\n */\n resumeDocumentIngestion = (\n sessionId: string,\n data: ResumeDocumentIngestionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ResumeDocumentIngestionResponse, void>({\n path: `/api/v1/ingest/sessions/${sessionId}/resume`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/ingest/sessions Creates a resumable ingestion session for tracking batch document ingestion. Returns a session ID that can be used to track progress and resume interrupted ingestion. # Headers - `X-Tenant-Id`: Tenant ID for multi-tenancy isolation (required) # Request Body - `document_ids`: List of document IDs that will be ingested in this session # Response - Session details including ID, status, and document count\n *\n * @tags ingestion\n * @name StartIngestionSession\n * @summary Start a new ingestion session\n * @request POST:/api/v1/ingest/sessions\n * @secure\n */\n startIngestionSession = (\n data: StartIngestionSessionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<IngestionSessionResponse, void>({\n path: `/api/v1/ingest/sessions`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n DiscoverSchemaRequest,\n DiscoverSchemaResponse,\n IngestFromSourceRequest,\n IngestFromSourceResponse,\n ListSourcesResponse,\n RegisterSourceRequest,\n RegisterSourceResponse,\n SourceDetailResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class StructuredIngestion<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags structured_ingestion\n * @name DeleteSource\n * @summary Unregister a data source.\n * @request DELETE:/api/v1/sources/{source_id}\n * @secure\n */\n deleteSource = (sourceId: string, params: RequestParams = {}) =>\n this.http.request<void, void>({\n path: `/api/v1/sources/${sourceId}`,\n method: \"DELETE\",\n secure: true,\n ...params,\n });\n /**\n * @description Performs schema introspection on the source to discover types (sorts), features (fields), and relations. This is a preview operation - no data is ingested.\n *\n * @tags structured_ingestion\n * @name DiscoverSchema\n * @summary Discover schema from a registered source.\n * @request POST:/api/v1/sources/{source_id}/discover\n * @secure\n */\n discoverSchema = (\n sourceId: string,\n data: DiscoverSchemaRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<DiscoverSchemaResponse, void>({\n path: `/api/v1/sources/${sourceId}/discover`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags structured_ingestion\n * @name GetSource\n * @summary Get details and health check for a registered source.\n * @request GET:/api/v1/sources/{source_id}\n * @secure\n */\n getSource = (sourceId: string, params: RequestParams = {}) =>\n this.http.request<SourceDetailResponse, void>({\n path: `/api/v1/sources/${sourceId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description Executes the full pipeline: 1. Schema discovery from connector 2. Paginated data fetch from connector 3. Render structured data to markdown with schema context 4. Feed through existing NER + LLM + OSFKB pipeline\n *\n * @tags structured_ingestion\n * @name IngestFromSource\n * @summary Ingest data from a registered source.\n * @request POST:/api/v1/sources/{source_id}/ingest\n * @secure\n */\n ingestFromSource = (\n sourceId: string,\n data: IngestFromSourceRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<IngestFromSourceResponse, void>({\n path: `/api/v1/sources/${sourceId}/ingest`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags structured_ingestion\n * @name ListSources\n * @summary List all registered data sources.\n * @request GET:/api/v1/sources\n * @secure\n */\n listSources = (params: RequestParams = {}) =>\n this.http.request<ListSourcesResponse, any>({\n path: `/api/v1/sources`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description Creates a connector instance from the provided configuration and registers it with the structured ingestion service for subsequent schema discovery and data ingestion.\n *\n * @tags structured_ingestion\n * @name RegisterSource\n * @summary Register a new data source.\n * @request POST:/api/v1/sources\n * @secure\n */\n registerSource = (data: RegisterSourceRequest, params: RequestParams = {}) =>\n this.http.request<RegisterSourceResponse, void>({\n path: `/api/v1/sources`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n DiagnosticsResponse,\n E2ETrainingRequest,\n E2ETrainingResponse,\n EmbeddingVerificationResponse,\n GFlowNetTrainResponse,\n NeuroSymbolicStatusResponse,\n SaveWeightsResponse,\n SortBoxRequest,\n SortBoxResponse,\n TrainFromTracesResponse,\n TrainingTriggerResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class NeuroSymbolic<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Returns per-choice-type success rates, weakest choice points, and trace buffer statistics from the shared TraceCollector. Identifies which decision points the scorer is worst at -- the primary diagnostic for targeted improvement.\n *\n * @tags neuro-symbolic\n * @name NeuroSymbolicDiagnostics\n * @summary GET /api/v1/admin/neuro-symbolic/diagnostics\n * @request GET:/api/v1/admin/neuro-symbolic/diagnostics\n */\n neuroSymbolicDiagnostics = (params: RequestParams = {}) =>\n this.http.request<DiagnosticsResponse, any>({\n path: `/api/v1/admin/neuro-symbolic/diagnostics`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n /**\n * @description Persists all trained weights (scorer, embeddings, GFlowNet) to disk. This is a blocking operation -- the response is returned after saving completes.\n *\n * @tags neuro-symbolic\n * @name NeuroSymbolicSaveWeights\n * @summary POST /api/v1/admin/neuro-symbolic/save-weights\n * @request POST:/api/v1/admin/neuro-symbolic/save-weights\n */\n neuroSymbolicSaveWeights = (params: RequestParams = {}) =>\n this.http.request<SaveWeightsResponse, void>({\n path: `/api/v1/admin/neuro-symbolic/save-weights`,\n method: \"POST\",\n format: \"json\",\n ...params,\n });\n /**\n * @description Looks up a single sort's box embedding by name. Returns the min/max coordinates, log-volume, and dimensionality.\n *\n * @tags neuro-symbolic\n * @name NeuroSymbolicSortBox\n * @summary POST /api/v1/admin/neuro-symbolic/embeddings/sort-box\n * @request POST:/api/v1/admin/neuro-symbolic/embeddings/sort-box\n */\n neuroSymbolicSortBox = (data: SortBoxRequest, params: RequestParams = {}) =>\n this.http.request<SortBoxResponse, void>({\n path: `/api/v1/admin/neuro-symbolic/embeddings/sort-box`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Returns the current status of the neuro-symbolic training subsystem, including scorer metrics, embedding metrics, and background loop state.\n *\n * @tags neuro-symbolic\n * @name NeuroSymbolicStatus\n * @summary GET /api/v1/admin/neuro-symbolic/status\n * @request GET:/api/v1/admin/neuro-symbolic/status\n */\n neuroSymbolicStatus = (params: RequestParams = {}) =>\n this.http.request<NeuroSymbolicStatusResponse, any>({\n path: `/api/v1/admin/neuro-symbolic/status`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n /**\n * @description Triggers synthetic training using the training harness. Generates synthetic knowledge bases and trains on derivation traces. This is a blocking operation -- the response is returned after training completes.\n *\n * @tags neuro-symbolic\n * @name NeuroSymbolicTrain\n * @summary POST /api/v1/admin/neuro-symbolic/train\n * @request POST:/api/v1/admin/neuro-symbolic/train\n */\n neuroSymbolicTrain = (params: RequestParams = {}) =>\n this.http.request<TrainingTriggerResponse, void>({\n path: `/api/v1/admin/neuro-symbolic/train`,\n method: \"POST\",\n format: \"json\",\n ...params,\n });\n /**\n * @description Triggers end-to-end differentiable training using tagged forward chaining with a probabilistic semiring. Runs the specified number of epochs, computing BCE loss against ground truth at each epoch. This is a blocking operation -- the response is returned after all epochs complete.\n *\n * @tags neuro-symbolic\n * @name NeuroSymbolicTrainE2E\n * @summary POST /api/v1/admin/neuro-symbolic/train/e2e\n * @request POST:/api/v1/admin/neuro-symbolic/train/e2e\n * @secure\n */\n neuroSymbolicTrainE2E = (\n data: E2ETrainingRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<E2ETrainingResponse, void>({\n path: `/api/v1/admin/neuro-symbolic/train/e2e`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Triggers box embedding refinement using containment loss from the sort hierarchy. This is a blocking operation -- the response is returned after training completes.\n *\n * @tags neuro-symbolic\n * @name NeuroSymbolicTrainEmbeddings\n * @summary POST /api/v1/admin/neuro-symbolic/train/embeddings\n * @request POST:/api/v1/admin/neuro-symbolic/train/embeddings\n */\n neuroSymbolicTrainEmbeddings = (params: RequestParams = {}) =>\n this.http.request<TrainingTriggerResponse, void>({\n path: `/api/v1/admin/neuro-symbolic/train/embeddings`,\n method: \"POST\",\n format: \"json\",\n ...params,\n });\n /**\n * @description Trains the neural scorer from accumulated search traces. Drains the trace buffer collected during guided searches and runs a training cycle. This is the feedback loop for AlphaProof-style learning: search -> collect traces -> train -> improved search.\n *\n * @tags neuro-symbolic\n * @name NeuroSymbolicTrainFromTraces\n * @summary POST /api/v1/admin/neuro-symbolic/train/from-traces\n * @request POST:/api/v1/admin/neuro-symbolic/train/from-traces\n */\n neuroSymbolicTrainFromTraces = (params: RequestParams = {}) =>\n this.http.request<TrainFromTracesResponse, void>({\n path: `/api/v1/admin/neuro-symbolic/train/from-traces`,\n method: \"POST\",\n format: \"json\",\n ...params,\n });\n /**\n * @description Triggers GFlowNet trajectory-balance training from accumulated trajectories. Drains the trajectory buffer and runs one TB training step. This is a blocking operation -- the response is returned after training completes.\n *\n * @tags neuro-symbolic\n * @name NeuroSymbolicTrainGflownet\n * @summary POST /api/v1/admin/neuro-symbolic/train/gflownet\n * @request POST:/api/v1/admin/neuro-symbolic/train/gflownet\n */\n neuroSymbolicTrainGflownet = (params: RequestParams = {}) =>\n this.http.request<GFlowNetTrainResponse, void>({\n path: `/api/v1/admin/neuro-symbolic/train/gflownet`,\n method: \"POST\",\n format: \"json\",\n ...params,\n });\n /**\n * @description Verifies that trained box embeddings faithfully represent the sort hierarchy. Runs three verification checks: - Containment: subtype boxes are contained in supertype boxes - Meet-preservation: box intersection approximates GLB embedding - Volume-specificity: more specific sorts have smaller volumes\n *\n * @tags neuro-symbolic\n * @name NeuroSymbolicVerifyEmbeddings\n * @summary GET /api/v1/admin/neuro-symbolic/embeddings/verify\n * @request GET:/api/v1/admin/neuro-symbolic/embeddings/verify\n */\n neuroSymbolicVerifyEmbeddings = (params: RequestParams = {}) =>\n this.http.request<EmbeddingVerificationResponse, void>({\n path: `/api/v1/admin/neuro-symbolic/embeddings/verify`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n AscRequest,\n AscResponse,\n BatchStringCompareRequest,\n BatchStringCompareResponse,\n ChrRequest,\n ChrResponse,\n NumberToStringRequest,\n NumberToStringResponse,\n StringComparePredicateRequest,\n StringComparePredicateResponse,\n StringCompareRequest,\n StringCompareResponse,\n StringConcatRequest,\n StringConcatResponse,\n StringLengthRequest,\n StringLengthResponse,\n StringOpRequest,\n StringOpResponse,\n SubstringRequest,\n SubstringResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Strings<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags strings\n * @name NumberToString\n * @summary Convert number to string POST /api/v1/strings/from-number\n * @request POST:/api/v1/strings/from-number\n * @secure\n */\n numberToString = (data: NumberToStringRequest, params: RequestParams = {}) =>\n this.http.request<NumberToStringResponse, void>({\n path: `/api/v1/strings/from-number`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags strings\n * @name StringAsc\n * @summary Get ASCII code of character POST /api/v1/strings/asc\n * @request POST:/api/v1/strings/asc\n * @secure\n */\n stringAsc = (data: AscRequest, params: RequestParams = {}) =>\n this.http.request<AscResponse, void>({\n path: `/api/v1/strings/asc`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags strings\n * @name StringChr\n * @summary Get character from ASCII code POST /api/v1/strings/chr\n * @request POST:/api/v1/strings/chr\n * @secure\n */\n stringChr = (data: ChrRequest, params: RequestParams = {}) =>\n this.http.request<ChrResponse, void>({\n path: `/api/v1/strings/chr`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags strings\n * @name StringCompare\n * @summary Compare two strings POST /api/v1/strings/compare\n * @request POST:/api/v1/strings/compare\n * @secure\n */\n stringCompare = (data: StringCompareRequest, params: RequestParams = {}) =>\n this.http.request<StringCompareResponse, void>({\n path: `/api/v1/strings/compare`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Useful for checking multiple string constraints at once.\n *\n * @tags strings\n * @name StringCompareBatch\n * @summary Batch string comparison for multiple predicates POST /api/v1/strings/compare-batch\n * @request POST:/api/v1/strings/compare-batch\n * @secure\n */\n stringCompareBatch = (\n data: BatchStringCompareRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BatchStringCompareResponse, void>({\n path: `/api/v1/strings/compare-batch`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Returns success/failure semantics like Wild_LIFE predicates. Uses lexicographic ordering for comparisons.\n *\n * @tags strings\n * @name StringComparePredicate\n * @summary Wild_Life-style string comparison predicate POST /api/v1/strings/compare-predicate\n * @request POST:/api/v1/strings/compare-predicate\n * @secure\n */\n stringComparePredicate = (\n data: StringComparePredicateRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<StringComparePredicateResponse, void>({\n path: `/api/v1/strings/compare-predicate`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags strings\n * @name StringConcat\n * @summary Concatenate two strings POST /api/v1/strings/concat\n * @request POST:/api/v1/strings/concat\n * @secure\n */\n stringConcat = (data: StringConcatRequest, params: RequestParams = {}) =>\n this.http.request<StringConcatResponse, void>({\n path: `/api/v1/strings/concat`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags strings\n * @name StringLength\n * @summary Get string length POST /api/v1/strings/length\n * @request POST:/api/v1/strings/length\n * @secure\n */\n stringLength = (data: StringLengthRequest, params: RequestParams = {}) =>\n this.http.request<StringLengthResponse, void>({\n path: `/api/v1/strings/length`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags strings\n * @name StringOp\n * @summary General string operation POST /api/v1/strings/op\n * @request POST:/api/v1/strings/op\n * @secure\n */\n stringOp = (data: StringOpRequest, params: RequestParams = {}) =>\n this.http.request<StringOpResponse, void>({\n path: `/api/v1/strings/op`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags strings\n * @name StringSubstr\n * @summary Get substring POST /api/v1/strings/substr\n * @request POST:/api/v1/strings/substr\n * @secure\n */\n stringSubstr = (data: SubstringRequest, params: RequestParams = {}) =>\n this.http.request<SubstringResponse, void>({\n path: `/api/v1/strings/substr`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n BitwiseRequest,\n BitwiseResponse,\n MathFunctionRequest,\n MathFunctionResponse,\n ModularArithRequest,\n ModularArithResponse,\n RelationalArithRequest,\n RelationalArithResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Arithmetic<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags arithmetic\n * @name ArithAdd\n * @summary 3-way addition: A + B = C POST /api/v1/arithmetic/add\n * @request POST:/api/v1/arithmetic/add\n * @secure\n */\n arithAdd = (data: RelationalArithRequest, params: RequestParams = {}) =>\n this.http.request<RelationalArithResponse, void>({\n path: `/api/v1/arithmetic/add`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags arithmetic\n * @name ArithDiv\n * @summary 3-way division: A / B = C POST /api/v1/arithmetic/div\n * @request POST:/api/v1/arithmetic/div\n * @secure\n */\n arithDiv = (data: RelationalArithRequest, params: RequestParams = {}) =>\n this.http.request<RelationalArithResponse, void>({\n path: `/api/v1/arithmetic/div`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags arithmetic\n * @name ArithMult\n * @summary 3-way multiplication: A * B = C POST /api/v1/arithmetic/mult\n * @request POST:/api/v1/arithmetic/mult\n * @secure\n */\n arithMult = (data: RelationalArithRequest, params: RequestParams = {}) =>\n this.http.request<RelationalArithResponse, void>({\n path: `/api/v1/arithmetic/mult`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags arithmetic\n * @name ArithSub\n * @summary 3-way subtraction: A - B = C POST /api/v1/arithmetic/sub\n * @request POST:/api/v1/arithmetic/sub\n * @secure\n */\n arithSub = (data: RelationalArithRequest, params: RequestParams = {}) =>\n this.http.request<RelationalArithResponse, void>({\n path: `/api/v1/arithmetic/sub`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags arithmetic\n * @name BitwiseOp\n * @summary Execute a bitwise operation POST /api/v1/arithmetic/bitwise\n * @request POST:/api/v1/arithmetic/bitwise\n * @secure\n */\n bitwiseOp = (data: BitwiseRequest, params: RequestParams = {}) =>\n this.http.request<BitwiseResponse, void>({\n path: `/api/v1/arithmetic/bitwise`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags arithmetic\n * @name MathFunction\n * @summary Execute a math function POST /api/v1/arithmetic/math\n * @request POST:/api/v1/arithmetic/math\n * @secure\n */\n mathFunction = (data: MathFunctionRequest, params: RequestParams = {}) =>\n this.http.request<MathFunctionResponse, void>({\n path: `/api/v1/arithmetic/math`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags arithmetic\n * @name ModularArith\n * @summary Execute modular arithmetic POST /api/v1/arithmetic/modular\n * @request POST:/api/v1/arithmetic/modular\n * @secure\n */\n modularArith = (data: ModularArithRequest, params: RequestParams = {}) =>\n this.http.request<ModularArithResponse, void>({\n path: `/api/v1/arithmetic/modular`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n BatchCopyRequest,\n BatchCopyResponse,\n CopyTermRequest,\n CopyTermResponse,\n DeepCopyRequest,\n DeepCopyResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Copy<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags copy\n * @name BatchCopy\n * @summary Batch copy terms POST /api/v1/copy/batch\n * @request POST:/api/v1/copy/batch\n * @secure\n */\n batchCopy = (data: BatchCopyRequest, params: RequestParams = {}) =>\n this.http.request<BatchCopyResponse, void>({\n path: `/api/v1/copy/batch`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags copy\n * @name CopyTerm\n * @summary Copy a term with specified semantics POST /api/v1/copy/term\n * @request POST:/api/v1/copy/term\n * @secure\n */\n copyTerm = (data: CopyTermRequest, params: RequestParams = {}) =>\n this.http.request<CopyTermResponse, void>({\n path: `/api/v1/copy/term`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags copy\n * @name DeepCopy\n * @summary Deep copy a term with cycle detection POST /api/v1/copy/deep\n * @request POST:/api/v1/copy/deep\n * @secure\n */\n deepCopy = (data: DeepCopyRequest, params: RequestParams = {}) =>\n this.http.request<DeepCopyResponse, void>({\n path: `/api/v1/copy/deep`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n DetectCommunitiesRequest,\n DetectCommunitiesResponse,\n GetMembershipsRequest,\n GetMembershipsResponse,\n SearchCommunitiesRequest,\n SearchCommunitiesResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Communities<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description POST /api/v1/communities/detect Runs Leiden community detection on terms belonging to the specified tenant. Creates Community and CommunityMembership PsiTerms in the knowledge base.\n *\n * @tags communities\n * @name DetectCommunities\n * @summary Detect communities from terms\n * @request POST:/api/v1/communities/detect\n * @secure\n */\n detectCommunities = (\n data: DetectCommunitiesRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<DetectCommunitiesResponse, void>({\n path: `/api/v1/communities/detect`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/communities/memberships Returns all communities that a term belongs to, with membership degrees.\n *\n * @tags communities\n * @name GetMemberships\n * @summary Get community memberships for a term\n * @request POST:/api/v1/communities/memberships\n * @secure\n */\n getMemberships = (data: GetMembershipsRequest, params: RequestParams = {}) =>\n this.http.request<GetMembershipsResponse, void>({\n path: `/api/v1/communities/memberships`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/communities/search Search for communities by various criteria: - ByEntities: Find communities containing specific terms - ByImpact: Find high-impact communities - ByLevel: Find communities at a specific hierarchy level - ByKeyword: Search community reports by keyword\n *\n * @tags communities\n * @name SearchCommunities\n * @summary Search communities\n * @request POST:/api/v1/communities/search\n * @secure\n */\n searchCommunities = (\n data: SearchCommunitiesRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<SearchCommunitiesResponse, void>({\n path: `/api/v1/communities/search`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n CollectionListResponse,\n CollectionResponse,\n CreateCollectionRequest,\n QueryByCollectionPathRequest,\n QueryInCollectionRequest,\n TermListResponse,\n UpdateCollectionRequest,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Collections<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description # Authorization Requires X-Namespace-Id header. The namespace_id field in the request body is ignored.\n *\n * @tags collections\n * @name CreateCollection\n * @summary Create a collection\n * @request POST:/api/v1/collections\n * @secure\n */\n createCollection = (\n data: CreateCollectionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<CollectionResponse, void>({\n path: `/api/v1/collections`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags collections\n * @name DeleteCollection\n * @summary Delete a collection\n * @request DELETE:/api/v1/collections/{id}\n * @secure\n */\n deleteCollection = (id: string, params: RequestParams = {}) =>\n this.http.request<void, void>({\n path: `/api/v1/collections/${id}`,\n method: \"DELETE\",\n secure: true,\n ...params,\n });\n /**\n * No description\n *\n * @tags collections\n * @name GetCollection\n * @summary Get a collection by ID\n * @request GET:/api/v1/collections/{id}\n * @secure\n */\n getCollection = (id: string, params: RequestParams = {}) =>\n this.http.request<CollectionResponse, void>({\n path: `/api/v1/collections/${id}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags collections\n * @name GetCollectionAncestors\n * @summary Get ancestors of a collection\n * @request GET:/api/v1/collections/{id}/ancestors\n * @secure\n */\n getCollectionAncestors = (id: string, params: RequestParams = {}) =>\n this.http.request<CollectionListResponse, void>({\n path: `/api/v1/collections/${id}/ancestors`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags collections\n * @name GetCollectionByPath\n * @summary Get a collection by path within a namespace\n * @request GET:/api/v1/collections/path/{namespace_id}/{path}\n * @secure\n */\n getCollectionByPath = (\n namespaceId: string,\n path: string,\n params: RequestParams = {},\n ) =>\n this.http.request<CollectionResponse, void>({\n path: `/api/v1/collections/path/${namespaceId}/${path}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags collections\n * @name GetCollectionChildren\n * @summary Get children of a collection\n * @request GET:/api/v1/collections/{id}/children\n * @secure\n */\n getCollectionChildren = (id: string, params: RequestParams = {}) =>\n this.http.request<CollectionListResponse, void>({\n path: `/api/v1/collections/${id}/children`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags collections\n * @name GetCollectionDescendants\n * @summary Get all descendants of a collection\n * @request GET:/api/v1/collections/{id}/descendants\n * @secure\n */\n getCollectionDescendants = (id: string, params: RequestParams = {}) =>\n this.http.request<CollectionListResponse, void>({\n path: `/api/v1/collections/${id}/descendants`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags collections\n * @name GetRootCollections\n * @summary Get root collections in a namespace\n * @request GET:/api/v1/collections/namespace/{namespace_id}/roots\n * @secure\n */\n getRootCollections = (namespaceId: string, params: RequestParams = {}) =>\n this.http.request<CollectionListResponse, void>({\n path: `/api/v1/collections/namespace/${namespaceId}/roots`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags collections\n * @name ListCollections\n * @summary List all collections in a namespace\n * @request GET:/api/v1/collections/namespace/{namespace_id}\n * @secure\n */\n listCollections = (namespaceId: string, params: RequestParams = {}) =>\n this.http.request<CollectionListResponse, void>({\n path: `/api/v1/collections/namespace/${namespaceId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags collections\n * @name QueryTermsByCollectionPath\n * @summary Query terms by collection path prefix (placeholder - needs term integration)\n * @request POST:/api/v1/collections/query/by-path\n * @secure\n */\n queryTermsByCollectionPath = (\n data: QueryByCollectionPathRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<TermListResponse, void>({\n path: `/api/v1/collections/query/by-path`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags collections\n * @name QueryTermsInCollection\n * @summary Query terms in a collection (placeholder - needs term integration)\n * @request POST:/api/v1/collections/query/in-collection\n * @secure\n */\n queryTermsInCollection = (\n data: QueryInCollectionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<TermListResponse, void>({\n path: `/api/v1/collections/query/in-collection`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags collections\n * @name UpdateCollection\n * @summary Update collection metadata\n * @request PUT:/api/v1/collections/{id}\n * @secure\n */\n updateCollection = (\n id: string,\n data: UpdateCollectionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<void, void>({\n path: `/api/v1/collections/${id}`,\n method: \"PUT\",\n body: data,\n secure: true,\n type: ContentType.Json,\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n AppendResiduationsRequest,\n AppendResiduationsResponse,\n ApplyCurriedRequest,\n ApplyCurriedResponse,\n BacktrackRequest,\n BacktrackResponse,\n BindTermRequest,\n BindTermResponse,\n BindingsResponse,\n ChoicePointMarkerResponse,\n CleanupResponse,\n CreateCurriedFunctionRequest,\n CreateExecutionSessionRequest,\n CurriedFunctionResponse,\n CurryingContextResponse,\n DetectMissingAttributesRequest,\n ExecutionSessionResponse,\n GetBindingsRequest,\n GetResiduationsRequest,\n GetResiduationsResponse,\n GoalStackResponse,\n LazyEvalRequest,\n LazyEvalResponse,\n MarkChoicePointRequest,\n MarkPendingRequest,\n MarkPendingResponse,\n PushGoalRequest,\n PushGoalResponse,\n ReleaseResiduationsRequest,\n ReleaseResiduationsResponse,\n ResiduateGoalRequest,\n ResiduatedTermDto,\n SessionStatsResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Execution<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags execution\n * @name AppendResiduations\n * @summary Append residuations during unification\n * @request POST:/api/v1/execution/sessions/{session_id}/residuations/append\n * @secure\n */\n appendResiduations = (\n sessionId: string,\n data: AppendResiduationsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<AppendResiduationsResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}/residuations/append`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name ApplyCurried\n * @summary Apply arguments to a curried function\n * @request POST:/api/v1/execution/curry/apply\n * @secure\n */\n applyCurried = (data: ApplyCurriedRequest, params: RequestParams = {}) =>\n this.http.request<ApplyCurriedResponse, void>({\n path: `/api/v1/execution/curry/apply`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name Backtrack\n * @summary Backtrack to a choice point\n * @request POST:/api/v1/execution/sessions/{session_id}/backtrack\n * @secure\n */\n backtrack = (\n sessionId: string,\n data: BacktrackRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BacktrackResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}/backtrack`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name BindTerm\n * @summary Bind a term in the session\n * @request POST:/api/v1/execution/sessions/{session_id}/bind\n * @secure\n */\n bindTerm = (\n sessionId: string,\n data: BindTermRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BindTermResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}/bind`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Query parameters: - max_age_hours: Sessions older than this will be cleaned (default: 24) - include_db: Also clean stale sessions from database (default: false)\n *\n * @tags execution\n * @name CleanupStaleSessions\n * @summary Clean up stale sessions from memory and optionally from database. This should be called periodically (e.g., via cron or health check) to prevent memory leaks.\n * @request POST:/api/v1/execution/cleanup\n * @secure\n */\n cleanupStaleSessions = (\n query?: {\n /** Also clean stale sessions from database (default: false) */\n include_db?: boolean;\n /**\n * Sessions older than this many hours will be cleaned (default: 24)\n * @format int64\n */\n max_age_hours?: number;\n },\n params: RequestParams = {},\n ) =>\n this.http.request<CleanupResponse, void>({\n path: `/api/v1/execution/cleanup`,\n method: \"POST\",\n query: query,\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description NOTE: Curried functions are ephemeral and not persisted. They will be lost on server restart. Use within a single session lifecycle.\n *\n * @tags execution\n * @name CreateCurriedFunction\n * @summary Create a curried function\n * @request POST:/api/v1/execution/curry\n * @secure\n */\n createCurriedFunction = (\n data: CreateCurriedFunctionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<CurriedFunctionResponse, void>({\n path: `/api/v1/execution/curry`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name CreateExecutionSession\n * @summary Create a new execution session\n * @request POST:/api/v1/execution/sessions\n * @secure\n */\n createExecutionSession = (\n data: CreateExecutionSessionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ExecutionSessionResponse, void>({\n path: `/api/v1/execution/sessions`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name DeleteExecutionSession\n * @summary Delete an execution session\n * @request DELETE:/api/v1/execution/sessions/{session_id}\n * @secure\n */\n deleteExecutionSession = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<void, void>({\n path: `/api/v1/execution/sessions/${sessionId}`,\n method: \"DELETE\",\n secure: true,\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name DetectCurryingContext\n * @summary Detect missing attributes for currying decision\n * @request POST:/api/v1/execution/curry/detect\n * @secure\n */\n detectCurryingContext = (\n data: DetectMissingAttributesRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<CurryingContextResponse, void>({\n path: `/api/v1/execution/curry/detect`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name GetBindings\n * @summary Get current bindings\n * @request POST:/api/v1/execution/sessions/{session_id}/bindings\n * @secure\n */\n getBindings = (\n sessionId: string,\n data: GetBindingsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BindingsResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}/bindings`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name GetExecutionSession\n * @summary Get session status\n * @request GET:/api/v1/execution/sessions/{session_id}\n * @secure\n */\n getExecutionSession = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<ExecutionSessionResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name GetGoalStack\n * @summary Get the current goal stack\n * @request GET:/api/v1/execution/sessions/{session_id}/goals\n * @secure\n */\n getGoalStack = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<GoalStackResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}/goals`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name GetResiduations\n * @summary Get residuations for a term\n * @request POST:/api/v1/execution/sessions/{session_id}/residuations\n * @secure\n */\n getResiduations = (\n sessionId: string,\n data: GetResiduationsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<GetResiduationsResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}/residuations`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name GetSessionStats\n * @request GET:/api/v1/execution/stats\n * @secure\n */\n getSessionStats = (params: RequestParams = {}) =>\n this.http.request<SessionStatsResponse, void>({\n path: `/api/v1/execution/stats`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name LazyEval\n * @summary Evaluate a term lazily\n * @request POST:/api/v1/execution/sessions/{session_id}/lazy-eval\n * @secure\n */\n lazyEval = (\n sessionId: string,\n data: LazyEvalRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<LazyEvalResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}/lazy-eval`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name MarkChoicePoint\n * @summary Mark a choice point\n * @request POST:/api/v1/execution/sessions/{session_id}/mark\n * @secure\n */\n markChoicePoint = (\n sessionId: string,\n data: MarkChoicePointRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ChoicePointMarkerResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}/mark`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name MarkPending\n * @summary Mark a residuation as pending\n * @request POST:/api/v1/execution/sessions/{session_id}/residuations/pending\n * @secure\n */\n markPending = (\n sessionId: string,\n data: MarkPendingRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<MarkPendingResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}/residuations/pending`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name PopGoal\n * @summary Pop a goal from the stack\n * @request POST:/api/v1/execution/sessions/{session_id}/goals/pop\n * @secure\n */\n popGoal = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<GoalStackResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}/goals/pop`,\n method: \"POST\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name PushGoal\n * @summary Push a goal onto the stack\n * @request POST:/api/v1/execution/sessions/{session_id}/goals\n * @secure\n */\n pushGoal = (\n sessionId: string,\n data: PushGoalRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<PushGoalResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}/goals`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name ReleaseResiduations\n * @summary Release residuations for a term\n * @request POST:/api/v1/execution/sessions/{session_id}/residuations/release\n * @secure\n */\n releaseResiduations = (\n sessionId: string,\n data: ReleaseResiduationsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ReleaseResiduationsResponse, void>({\n path: `/api/v1/execution/sessions/${sessionId}/residuations/release`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags execution\n * @name ResiduateGoal\n * @summary Residuate a goal on a variable\n * @request POST:/api/v1/execution/sessions/{session_id}/residuate\n * @secure\n */\n residuateGoal = (\n sessionId: string,\n data: ResiduateGoalRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ResiduatedTermDto, void>({\n path: `/api/v1/execution/sessions/${sessionId}/residuate`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n AddCausalRelationRequest,\n AddCausalRelationResponse,\n CausalAncestorRequest,\n CausalAncestorResponse,\n CausesRequest,\n CausesResponse,\n CounterfactualRequest,\n CounterfactualResponse,\n DSeparatedRequest,\n DSeparatedResponse,\n GetCausalModelResponse,\n InterventionRequest,\n InterventionResponse,\n RootCauseAnalysisRequest,\n RootCauseAnalysisResponse,\n RootCauseWithProofResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Causal<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags causal\n * @name AddCausalRelation\n * @summary Add a causal relationship to the model\n * @request POST:/api/v1/causal/relations\n * @secure\n */\n addCausalRelation = (\n data: AddCausalRelationRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<AddCausalRelationResponse, void>({\n path: `/api/v1/causal/relations`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags causal\n * @name AnalyzeRootCauses\n * @summary Perform root cause analysis for an effect\n * @request POST:/api/v1/causal/root-cause\n * @secure\n */\n analyzeRootCauses = (\n data: RootCauseAnalysisRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<RootCauseAnalysisResponse, void>({\n path: `/api/v1/causal/root-cause`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags causal\n * @name AnalyzeRootCausesWithProof\n * @summary Perform root cause analysis with full proof tree for audit trail\n * @request POST:/api/v1/causal/root-cause-with-proof\n * @secure\n */\n analyzeRootCausesWithProof = (\n data: RootCauseAnalysisRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<RootCauseWithProofResponse, void>({\n path: `/api/v1/causal/root-cause-with-proof`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Implements Pearl's do(X=x) operator by disabling incoming edges to X.\n *\n * @tags causal\n * @name ApplyIntervention\n * @summary Apply a do-calculus intervention and query the result\n * @request POST:/api/v1/causal/intervention\n * @secure\n */\n applyIntervention = (data: InterventionRequest, params: RequestParams = {}) =>\n this.http.request<InterventionResponse, void>({\n path: `/api/v1/causal/intervention`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Uses transitive closure over the causal graph to find ancestry.\n *\n * @tags causal\n * @name CheckCausalAncestor\n * @summary Check if one variable is a causal ancestor of another\n * @request POST:/api/v1/causal/ancestor\n * @secure\n */\n checkCausalAncestor = (\n data: CausalAncestorRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<CausalAncestorResponse, void>({\n path: `/api/v1/causal/ancestor`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Uses the CausalInferenceBuiltins to check direct causal relationships.\n *\n * @tags causal\n * @name CheckCauses\n * @summary Check if one variable directly causes another\n * @request POST:/api/v1/causal/causes\n * @secure\n */\n checkCauses = (data: CausesRequest, params: RequestParams = {}) =>\n this.http.request<CausesResponse, void>({\n path: `/api/v1/causal/causes`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Uses Bayes-Ball algorithm to determine conditional independence.\n *\n * @tags causal\n * @name CheckDSeparated\n * @summary Check d-separation between two variables given a conditioning set\n * @request POST:/api/v1/causal/d-separated\n * @secure\n */\n checkDSeparated = (data: DSeparatedRequest, params: RequestParams = {}) =>\n this.http.request<DSeparatedResponse, void>({\n path: `/api/v1/causal/d-separated`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Steps: 1. Abduction: Compute exogenous variables from factual evidence 2. Action: Apply intervention do(X=x) 3. Prediction: Query in the modified world\n *\n * @tags causal\n * @name EvaluateCounterfactual\n * @summary Evaluate a counterfactual query using Pearl's three-step algorithm\n * @request POST:/api/v1/causal/counterfactual\n * @secure\n */\n evaluateCounterfactual = (\n data: CounterfactualRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<CounterfactualResponse, void>({\n path: `/api/v1/causal/counterfactual`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags causal\n * @name GetCausalModel\n * @summary Get the full causal model for the tenant\n * @request GET:/api/v1/causal/model\n * @secure\n */\n getCausalModel = (params: RequestParams = {}) =>\n this.http.request<GetCausalModelResponse, any>({\n path: `/api/v1/causal/model`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n AddPendingReviewRequest,\n AddPendingReviewResponse,\n ApproveEntityRequest,\n BulkApproveRequest,\n BulkMergeRequest,\n BulkRejectRequest,\n BulkReviewResponse,\n CorrectEntityRequest,\n ListPendingReviewsResponse,\n MergeEntityRequest,\n ReExtractRequest,\n ReExtractResponse,\n RejectEntityRequest,\n ReviewActionResponse,\n ReviewSummaryDto,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Reviews<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description POST /api/v1/reviews/add\n *\n * @tags reviews\n * @name AddPendingReview\n * @summary Add a new pending review (internal API, called from ingestion pipeline)\n * @request POST:/api/v1/reviews/add\n * @secure\n */\n addPendingReview = (\n data: AddPendingReviewRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<AddPendingReviewResponse, void>({\n path: `/api/v1/reviews/add`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reviews/approve Creates a term from the approved entity.\n *\n * @tags reviews\n * @name ApproveEntity\n * @summary Approve an entity as-is\n * @request POST:/api/v1/reviews/approve\n * @secure\n */\n approveEntity = (data: ApproveEntityRequest, params: RequestParams = {}) =>\n this.http.request<ReviewActionResponse, void>({\n path: `/api/v1/reviews/approve`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reviews/bulk-approve Approves multiple reviews in a single transaction.\n *\n * @tags reviews\n * @name BulkApprove\n * @summary Bulk approve multiple reviews\n * @request POST:/api/v1/reviews/bulk-approve\n * @secure\n */\n bulkApprove = (data: BulkApproveRequest, params: RequestParams = {}) =>\n this.http.request<BulkReviewResponse, void>({\n path: `/api/v1/reviews/bulk-approve`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reviews/bulk-merge Merges multiple reviews into a single existing term.\n *\n * @tags reviews\n * @name BulkMerge\n * @summary Bulk merge multiple reviews into a single target term\n * @request POST:/api/v1/reviews/bulk-merge\n * @secure\n */\n bulkMerge = (data: BulkMergeRequest, params: RequestParams = {}) =>\n this.http.request<BulkReviewResponse, void>({\n path: `/api/v1/reviews/bulk-merge`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reviews/bulk-reject Rejects multiple reviews in a single transaction.\n *\n * @tags reviews\n * @name BulkReject\n * @summary Bulk reject multiple reviews\n * @request POST:/api/v1/reviews/bulk-reject\n * @secure\n */\n bulkReject = (data: BulkRejectRequest, params: RequestParams = {}) =>\n this.http.request<BulkReviewResponse, void>({\n path: `/api/v1/reviews/bulk-reject`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reviews/correct Allows correcting the sort and/or features before creating the term.\n *\n * @tags reviews\n * @name CorrectEntity\n * @summary Correct an entity before approval\n * @request POST:/api/v1/reviews/correct\n * @secure\n */\n correctEntity = (data: CorrectEntityRequest, params: RequestParams = {}) =>\n this.http.request<ReviewActionResponse, void>({\n path: `/api/v1/reviews/correct`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description GET /api/v1/reviews/summary/:tenant_id\n *\n * @tags reviews\n * @name GetReviewSummary\n * @summary Get review summary statistics\n * @request GET:/api/v1/reviews/summary/{tenant_id}\n * @secure\n */\n getReviewSummary = (tenantId: string, params: RequestParams = {}) =>\n this.http.request<ReviewSummaryDto, void>({\n path: `/api/v1/reviews/summary/${tenantId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description GET /api/v1/reviews/pending Returns paginated list of entities requiring human review.\n *\n * @tags reviews\n * @name ListPendingReviews\n * @summary List pending reviews for a tenant\n * @request GET:/api/v1/reviews/pending\n * @secure\n */\n listPendingReviews = (params: RequestParams = {}) =>\n this.http.request<ListPendingReviewsResponse, void>({\n path: `/api/v1/reviews/pending`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reviews/merge Merges the entity's features into an existing term.\n *\n * @tags reviews\n * @name MergeEntity\n * @summary Merge entity with an existing term\n * @request POST:/api/v1/reviews/merge\n * @secure\n */\n mergeEntity = (data: MergeEntityRequest, params: RequestParams = {}) =>\n this.http.request<ReviewActionResponse, void>({\n path: `/api/v1/reviews/merge`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reviews/re-extract Triggers re-extraction with potentially different parameters.\n *\n * @tags reviews\n * @name ReExtract\n * @summary Re-extract entities from a document\n * @request POST:/api/v1/reviews/re-extract\n * @secure\n */\n reExtract = (data: ReExtractRequest, params: RequestParams = {}) =>\n this.http.request<ReExtractResponse, void>({\n path: `/api/v1/reviews/re-extract`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reviews/reject Marks the entity as rejected (will be discarded).\n *\n * @tags reviews\n * @name RejectEntity\n * @summary Reject an entity\n * @request POST:/api/v1/reviews/reject\n * @secure\n */\n rejectEntity = (data: RejectEntityRequest, params: RequestParams = {}) =>\n this.http.request<ReviewActionResponse, void>({\n path: `/api/v1/reviews/reject`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n ConstraintGraphRequest,\n ConstraintGraphResponse,\n GlbLubComputationTrace,\n GlbLubTraceRequest,\n HypergraphRequest,\n HypergraphResponse,\n LatticeVisualizationRequest,\n LatticeVisualizationResponse,\n ResiduationStateRequest,\n ResiduationStateResponse,\n TriggerDependencyRequest,\n TriggerDependencyResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Visualization<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags visualization\n * @name GetConstraintGraph\n * @summary Get constraint dependency graph\n * @request POST:/api/v1/visualization/constraints\n * @secure\n */\n getConstraintGraph = (\n data: ConstraintGraphRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ConstraintGraphResponse, any>({\n path: `/api/v1/visualization/constraints`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags visualization\n * @name GetHypergraph\n * @summary Get OSF term hypergraph visualization\n * @request POST:/api/v1/visualization/hypergraph\n * @secure\n */\n getHypergraph = (data: HypergraphRequest, params: RequestParams = {}) =>\n this.http.request<HypergraphResponse, any>({\n path: `/api/v1/visualization/hypergraph`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags visualization\n * @name GetLatticeDot\n * @summary Get the lattice visualization as DOT format\n * @request GET:/api/v1/visualization/lattice/dot\n * @secure\n */\n getLatticeDot = (params: RequestParams = {}) =>\n this.http.request<void, any>({\n path: `/api/v1/visualization/lattice/dot`,\n method: \"GET\",\n secure: true,\n ...params,\n });\n /**\n * @description Returns a graph representation of the sort hierarchy with nodes for each sort and edges for subtype relationships. Supports filtering by root sort and depth.\n *\n * @tags visualization\n * @name GetLatticeVisualization\n * @summary Get the sort hierarchy lattice visualization\n * @request POST:/api/v1/visualization/lattice\n * @secure\n */\n getLatticeVisualization = (\n data: LatticeVisualizationRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<LatticeVisualizationResponse, any>({\n path: `/api/v1/visualization/lattice`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags visualization\n * @name GetResiduationState\n * @summary Get residuation state diagram\n * @request POST:/api/v1/visualization/residuation\n * @secure\n */\n getResiduationState = (\n data: ResiduationStateRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ResiduationStateResponse, any>({\n path: `/api/v1/visualization/residuation`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags visualization\n * @name GetTermSubgraph\n * @summary Get subgraph rooted at a specific term\n * @request GET:/api/v1/visualization/hypergraph/term/{term_id}\n * @secure\n */\n getTermSubgraph = (termId: string, params: RequestParams = {}) =>\n this.http.request<HypergraphResponse, any>({\n path: `/api/v1/visualization/hypergraph/term/${termId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags visualization\n * @name GetTriggerDependencies\n * @summary Get trigger dependency graph\n * @request POST:/api/v1/visualization/residuation/triggers\n * @secure\n */\n getTriggerDependencies = (\n data: TriggerDependencyRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<TriggerDependencyResponse, any>({\n path: `/api/v1/visualization/residuation/triggers`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags visualization\n * @name GlbLubTrace\n * @summary Compute GLB or LUB with trace\n * @request POST:/api/v1/visualization/lattice/glb-lub-trace\n * @secure\n */\n glbLubTrace = (data: GlbLubTraceRequest, params: RequestParams = {}) =>\n this.http.request<GlbLubComputationTrace, any>({\n path: `/api/v1/visualization/lattice/glb-lub-trace`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n EvaluatePatternRequest,\n EvaluatePatternResponse,\n GFlowNetSampleRequest,\n GFlowNetSampleResponse,\n LearnPatternRequest,\n LearnPatternResponse,\n ListPatternsResponse,\n SynthesizeRequest,\n SynthesizeResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Ilp<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description POST /api/v1/ilp/evaluate Executes a previously learned arithmetic pattern on new input values that were NOT in the training set. This proves the system learned the algorithm, not just memorized the examples. # Request Body ```json { \"pattern_id\": \"factorial_abc123\", \"inputs\": [6, 7, 8, 9, 10] } ``` # Response ```json { \"success\": true, \"results\": [ { \"input\": 6, \"output\": 720 }, { \"input\": 7, \"output\": 5040 }, { \"input\": 8, \"output\": 40320 }, { \"input\": 9, \"output\": 362880 }, { \"input\": 10, \"output\": 3628800 } ], \"processing_time_ms\": 1 } ```\n *\n * @tags ilp\n * @name EvaluatePattern\n * @summary Evaluate a learned pattern on new inputs.\n * @request POST:/api/v1/ilp/evaluate\n * @secure\n */\n evaluatePattern = (\n data: EvaluatePatternRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<EvaluatePatternResponse, void>({\n path: `/api/v1/ilp/evaluate`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/ilp/gflownet/sample Creates a GFlowNet synthesizer and samples diverse rule hypotheses for the target sort. Uses the trained neural guide when available for biased sampling toward promising regions.\n *\n * @tags ilp\n * @name GflownetSample\n * @summary Sample diverse hypotheses using GFlowNet.\n * @request POST:/api/v1/ilp/gflownet/sample\n * @secure\n */\n gflownetSample = (data: GFlowNetSampleRequest, params: RequestParams = {}) =>\n this.http.request<GFlowNetSampleResponse, void>({\n path: `/api/v1/ilp/gflownet/sample`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/ilp/learn Uses OSF/LIFE anti-unification and recursive schema detection to learn arithmetic patterns like factorial, fibonacci, and triangular numbers. # Request Body ```json { \"name\": \"factorial\", \"examples\": [ { \"input\": 0, \"output\": 1 }, { \"input\": 1, \"output\": 1 }, { \"input\": 2, \"output\": 2 }, { \"input\": 3, \"output\": 6 }, { \"input\": 4, \"output\": 24 }, { \"input\": 5, \"output\": 120 } ] } ``` # Response ```json { \"success\": true, \"pattern\": { \"operation\": \"multiplication\", \"input_feature\": \"input\", \"output_feature\": \"output\", \"base_case_inputs\": [0], \"confidence\": 1.0, \"description\": \"factorial(n) = n * factorial(n-1), base: factorial(0) = 1\" }, \"pattern_id\": \"factorial_abc123\", \"examples_used\": 6, \"processing_time_ms\": 5 } ```\n *\n * @tags ilp\n * @name LearnPattern\n * @summary Learn a pattern from training examples.\n * @request POST:/api/v1/ilp/learn\n * @secure\n */\n learnPattern = (data: LearnPatternRequest, params: RequestParams = {}) =>\n this.http.request<LearnPatternResponse, void>({\n path: `/api/v1/ilp/learn`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description GET /api/v1/ilp/patterns Returns all patterns that have been learned in this session.\n *\n * @tags ilp\n * @name ListPatterns\n * @summary List all learned patterns.\n * @request GET:/api/v1/ilp/patterns\n * @secure\n */\n listPatterns = (params: RequestParams = {}) =>\n this.http.request<ListPatternsResponse, any>({\n path: `/api/v1/ilp/patterns`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/ilp/synthesize Uses the trained GFlowNet neural guide (when available) for diverse hypothesis sampling, combined with symbolic verification against examples. Falls back to symbolic synthesis if GFlowNet doesn't find a solution.\n *\n * @tags ilp\n * @name SynthesizePattern\n * @summary Synthesize rules using neural-guided ILP with optional GFlowNet.\n * @request POST:/api/v1/ilp/synthesize\n * @secure\n */\n synthesizePattern = (data: SynthesizeRequest, params: RequestParams = {}) =>\n this.http.request<SynthesizeResponse, void>({\n path: `/api/v1/ilp/synthesize`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n ActionReviewResponse,\n ActionReviewSummaryDto,\n ApproveActionRequest,\n BulkActionReviewResponse,\n BulkApproveActionsRequest,\n BulkRejectActionsRequest,\n ListActionReviewsResponse,\n ModifyActionRequest,\n RejectActionRequest,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class ActionReviews<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description POST /api/v1/action-reviews/approve Approves the action to be executed as-is.\n *\n * @tags action-reviews\n * @name ApproveAction\n * @summary Approve an action for execution\n * @request POST:/api/v1/action-reviews/approve\n * @secure\n */\n approveAction = (data: ApproveActionRequest, params: RequestParams = {}) =>\n this.http.request<ActionReviewResponse, void>({\n path: `/api/v1/action-reviews/approve`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/action-reviews/bulk-approve\n *\n * @tags action-reviews\n * @name BulkApproveActions\n * @summary Bulk approve multiple action reviews\n * @request POST:/api/v1/action-reviews/bulk-approve\n * @secure\n */\n bulkApproveActions = (\n data: BulkApproveActionsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BulkActionReviewResponse, void>({\n path: `/api/v1/action-reviews/bulk-approve`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/action-reviews/bulk-reject\n *\n * @tags action-reviews\n * @name BulkRejectActions\n * @summary Bulk reject multiple action reviews\n * @request POST:/api/v1/action-reviews/bulk-reject\n * @secure\n */\n bulkRejectActions = (\n data: BulkRejectActionsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BulkActionReviewResponse, void>({\n path: `/api/v1/action-reviews/bulk-reject`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description GET /api/v1/action-reviews/summary Returns summary statistics for pending action reviews.\n *\n * @tags action-reviews\n * @name GetActionReviewSummary\n * @summary Get action review summary statistics\n * @request GET:/api/v1/action-reviews/summary\n * @secure\n */\n getActionReviewSummary = (\n query: {\n /**\n * Tenant ID to get summary for\n * @format uuid\n */\n tenant_id: string;\n },\n params: RequestParams = {},\n ) =>\n this.http.request<ActionReviewSummaryDto, void>({\n path: `/api/v1/action-reviews/summary`,\n method: \"GET\",\n query: query,\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description GET /api/v1/action-reviews/pending Returns paginated list of actions requiring human review.\n *\n * @tags action-reviews\n * @name ListPendingActionReviews\n * @summary List pending action reviews for a tenant\n * @request GET:/api/v1/action-reviews/pending\n * @secure\n */\n listPendingActionReviews = (params: RequestParams = {}) =>\n this.http.request<ListActionReviewsResponse, void>({\n path: `/api/v1/action-reviews/pending`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/action-reviews/modify Modifies the action parameters and approves for execution.\n *\n * @tags action-reviews\n * @name ModifyAction\n * @summary Modify and approve an action\n * @request POST:/api/v1/action-reviews/modify\n * @secure\n */\n modifyAction = (data: ModifyActionRequest, params: RequestParams = {}) =>\n this.http.request<ActionReviewResponse, void>({\n path: `/api/v1/action-reviews/modify`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/action-reviews/reject Rejects the action. It will not be executed.\n *\n * @tags action-reviews\n * @name RejectAction\n * @summary Reject an action\n * @request POST:/api/v1/action-reviews/reject\n * @secure\n */\n rejectAction = (data: RejectActionRequest, params: RequestParams = {}) =>\n this.http.request<ActionReviewResponse, void>({\n path: `/api/v1/action-reviews/reject`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n DiscoverEffectsRequest,\n DiscoverEffectsResponse,\n PredictFromDiscoveryRequest,\n PredictFromDiscoveryResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Discovery<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description POST /api/v1/discovery/effects Ingests time series data, discovers seasonal patterns, extracts effects, and stores everything in the OSF Knowledge Base as PsiTerms with FuzzyNumber features. This endpoint creates: - A Sort hierarchy for discovered regimes (e.g., seasons for weather data) - PsiTerms representing historical observations with effect features - Effect distributions that can be queried via /fuzzy/predict-effect # Request Body ```json { \"name\": \"weather_prediction\", \"data\": [ { \"timestamp\": \"2024-01-01T12:00:00Z\", \"values\": { \"temperature\": 5.0, \"humidity\": 80.0 } }, { \"timestamp\": \"2024-01-02T12:00:00Z\", \"values\": { \"temperature\": 7.0, \"humidity\": 75.0 } } ], \"target_feature\": \"temperature\", \"config\": { \"window_size\": 7, \"num_regimes\": 4 } } ``` # Response ```json { \"success\": true, \"regimes_discovered\": 4, \"effects_extracted\": 12, \"discovered_horizons\": [{ \"horizon\": 7, \"score\": 0.85, \"confidence\": 0.9 }], \"sort_ids\": { \"winter\": \"uuid\", \"spring\": \"uuid\", \"summer\": \"uuid\", \"fall\": \"uuid\" }, \"terms_created\": 365, \"root_sort_id\": \"uuid\", \"processing_time_ms\": 150 } ```\n *\n * @tags discovery\n * @name DiscoverEffects\n * @summary Train effect discovery model from time series data.\n * @request POST:/api/v1/discovery/effects\n * @secure\n */\n discoverEffects = (\n data: DiscoverEffectsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<DiscoverEffectsResponse, void>({\n path: `/api/v1/discovery/effects`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/discovery/predict Finds similar historical patterns and predicts effects using fuzzy search with PRODUCT t-norm reweighting for better aggregation.\n *\n * @tags discovery\n * @name PredictFromDiscovery\n * @summary Predict effects using discovered model.\n * @request POST:/api/v1/discovery/predict\n * @secure\n */\n predictFromDiscovery = (\n data: PredictFromDiscoveryRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<PredictFromDiscoveryResponse, void>({\n path: `/api/v1/discovery/predict`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n ExtractEntitiesRequest,\n ExtractEntitiesResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Extraction<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Uses GLiNER2 (zero-shot NER) with sort names from the tenant's knowledge base, guaranteeing that all returned entity labels are valid sort names. Label selection (when no explicit labels provided): Embed the input text and ANN-search the pre-computed sort embedding index (Qdrant) for the most semantically similar HPO sorts. This is O(log n) and typically returns 20-100 highly relevant labels from 19K+ HPO sorts. Requires: - GLiNER2 NER service (`GLINER_NER_URL`) - Qdrant vector store for semantic label selection If either is not configured, returns a 500 error.\n *\n * @tags extraction\n * @name ExtractEntities\n * @summary Extract named entities from text using the tenant's sort hierarchy as labels.\n * @request POST:/api/v1/extract/entities\n * @secure\n */\n extractEntities = (\n data: ExtractEntitiesRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ExtractEntitiesResponse, void>({\n path: `/api/v1/extract/entities`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n CreateSessionRequest,\n CreateSessionResponse,\n FinalizeSessionRequest,\n FormalJudgeRefinementResponse,\n FormalJudgeRequest,\n FormalJudgeResponse,\n IngestStepRequest,\n SessionStatusResponse,\n StepVerificationResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Oversight<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Create a new live oversight session.\n *\n * @tags oversight\n * @name CreateSession\n * @summary POST /api/v1/oversight/sessions\n * @request POST:/api/v1/oversight/sessions\n */\n createSession = (data: CreateSessionRequest, params: RequestParams = {}) =>\n this.http.request<CreateSessionResponse, void>({\n path: `/api/v1/oversight/sessions`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Finalize a live oversight session, running full verification and returning the final verdict.\n *\n * @tags oversight\n * @name FinalizeSession\n * @summary POST /api/v1/oversight/sessions/:session_id/finalize\n * @request POST:/api/v1/oversight/sessions/{session_id}/finalize\n */\n finalizeSession = (\n sessionId: string,\n data: FinalizeSessionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<FormalJudgeResponse, void>({\n path: `/api/v1/oversight/sessions/${sessionId}/finalize`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Get the current status of a live oversight session.\n *\n * @tags oversight\n * @name GetSessionStatus\n * @summary GET /api/v1/oversight/sessions/:session_id/status\n * @request GET:/api/v1/oversight/sessions/{session_id}/status\n */\n getSessionStatus = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<SessionStatusResponse, void>({\n path: `/api/v1/oversight/sessions/${sessionId}/status`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n /**\n * @description Ingest a single trajectory step and return incremental verification result.\n *\n * @tags oversight\n * @name IngestStep\n * @summary POST /api/v1/oversight/sessions/:session_id/steps\n * @request POST:/api/v1/oversight/sessions/{session_id}/steps\n */\n ingestStep = (\n sessionId: string,\n data: IngestStepRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<StepVerificationResponse, void>({\n path: `/api/v1/oversight/sessions/${sessionId}/steps`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags oversight\n * @name JudgeTrajectory\n * @summary POST /api/v1/oversight/judge\n * @request POST:/api/v1/oversight/judge\n */\n judgeTrajectory = (data: FormalJudgeRequest, params: RequestParams = {}) =>\n this.http.request<FormalJudgeResponse, void>({\n path: `/api/v1/oversight/judge`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Iterative refinement pipeline (paper §4.5). Performs multiple rounds of judgment, feeding fix suggestions back as additional constraints.\n *\n * @tags oversight\n * @name JudgeWithRefinement\n * @summary POST /api/v1/oversight/judge/refine\n * @request POST:/api/v1/oversight/judge/refine\n */\n judgeWithRefinement = (\n data: FormalJudgeRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<FormalJudgeRefinementResponse, void>({\n path: `/api/v1/oversight/judge/refine`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n CdlStatusResponse,\n ClassifySafetyRequest,\n ClassifySafetyResponse,\n DerivedInferenceRequest,\n DerivedInferenceResponse,\n DifferentiableFcRequest,\n DifferentiableFcResponse,\n DynamicAddSortRequest,\n DynamicAddSortResponse,\n MonadicFixpointRequest,\n MonadicFixpointResponse,\n SoftUnifyRequest,\n SoftUnifyResponse,\n TaggedFcRequest,\n TaggedFcResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Cdl<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags cdl\n * @name CdlStatus\n * @summary Returns the status of all CDL subsystem components.\n * @request GET:/api/v1/cdl/status\n * @secure\n */\n cdlStatus = (params: RequestParams = {}) =>\n this.http.request<CdlStatusResponse, any>({\n path: `/api/v1/cdl/status`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags cdl\n * @name ClassifySafety\n * @summary Classify text for safety violations using the CDL fact grounding layer (Phase 5). Encodes text to embedding, then runs through CDL sort-hierarchy-constrained classifier.\n * @request POST:/api/v1/cdl/classify-safety\n * @secure\n */\n classifySafety = (data: ClassifySafetyRequest, params: RequestParams = {}) =>\n this.http.request<ClassifySafetyResponse, any>({\n path: `/api/v1/cdl/classify-safety`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags cdl\n * @name DerivedInference\n * @summary Run the composed CDL derived layer (Phase 4): unification matcher → residuation gate → sort classifier. Takes pairs of feature vectors and produces match scores, gate decisions, and sort predictions.\n * @request POST:/api/v1/cdl/derived-inference\n * @secure\n */\n derivedInference = (\n data: DerivedInferenceRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<DerivedInferenceResponse, any>({\n path: `/api/v1/cdl/derived-inference`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags cdl\n * @name DifferentiableForwardChain\n * @summary Run differentiable forward chaining (Phase 2) on the tenant's knowledge base. Performs symbolic FC for soundness, then annotates facts with continuous weights based on rule attention and soft unification scores.\n * @request POST:/api/v1/cdl/forward-chain/differentiable\n * @secure\n */\n differentiableForwardChain = (\n data: DifferentiableFcRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<DifferentiableFcResponse, any>({\n path: `/api/v1/cdl/forward-chain/differentiable`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags cdl\n * @name DynamicAddSort\n * @summary Dynamically add a sort to the CDL architecture (Phase 6). New sort weights are initialized from parent sort weights (functorial inheritance). Existing predictions are preserved within tolerance.\n * @request POST:/api/v1/cdl/dynamic/add-sort\n * @secure\n */\n dynamicAddSort = (data: DynamicAddSortRequest, params: RequestParams = {}) =>\n this.http.request<DynamicAddSortResponse, any>({\n path: `/api/v1/cdl/dynamic/add-sort`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags cdl\n * @name MonadicFixpointHandler\n * @summary Run monadic inference to fixpoint (Phase 3). Repeatedly applies the OSF endofunctor T and monad multiplication μ until no new facts are derived: fixpoint(X) = μ(T(μ(T(... μ(T(η(X)))...))))\n * @request POST:/api/v1/cdl/monadic-fixpoint\n * @secure\n */\n monadicFixpointHandler = (\n data: MonadicFixpointRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<MonadicFixpointResponse, any>({\n path: `/api/v1/cdl/monadic-fixpoint`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags cdl\n * @name SoftUnifyTerms\n * @summary Perform soft (differentiable) unification between two terms (Phase 2). Returns a continuous confidence score ∈ [0,1] alongside the hard boolean result.\n * @request POST:/api/v1/cdl/soft-unify\n * @secure\n */\n softUnifyTerms = (data: SoftUnifyRequest, params: RequestParams = {}) =>\n this.http.request<SoftUnifyResponse, any>({\n path: `/api/v1/cdl/soft-unify`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags cdl\n * @name TaggedForwardChain\n * @summary Run provenance-annotated forward chaining (Phase 1) with probabilistic semiring. Each derived fact carries a probability tag propagated via noisy-OR / product.\n * @request POST:/api/v1/cdl/forward-chain/tagged\n * @secure\n */\n taggedForwardChain = (data: TaggedFcRequest, params: RequestParams = {}) =>\n this.http.request<TaggedFcResponse, any>({\n path: `/api/v1/cdl/forward-chain/tagged`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n PredictPreferencesRequest,\n PredictPreferencesResponse,\n RecordSelectionRequest,\n RecordSelectionResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Preferences<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description POST /api/v1/preferences/predict Returns candidates ranked by how well they match the user's learned preferences. Uses Gaussian likelihood for numeric features and frequency for categorical features.\n *\n * @tags preferences\n * @name PredictPreferences\n * @summary Predict preference scores for candidate terms using Bayesian inference\n * @request POST:/api/v1/preferences/predict\n * @secure\n */\n predictPreferences = (\n data: PredictPreferencesRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<PredictPreferencesResponse, any>({\n path: `/api/v1/preferences/predict`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/preferences/selection Updates the user's preference profile by learning from the selected term. If no profile exists for this (user, tenant, sort), creates a new one.\n *\n * @tags preferences\n * @name RecordSelection\n * @summary Record a user selection for preference learning\n * @request POST:/api/v1/preferences/selection\n * @secure\n */\n recordSelection = (\n data: RecordSelectionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<RecordSelectionResponse, void>({\n path: `/api/v1/preferences/selection`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n FindBySortRequest,\n NlQueryRequest,\n NlQueryResponse,\n OsfSearchRequest,\n OsfSearchResponse,\n TermListResponse,\n UnificationQueryRequest,\n UnificationQueryResponse,\n ValidatedTermRequest,\n ValidatedTermResponse,\n ValidatedUnifyRequest,\n ValidatedUnifyResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Query<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Returns all terms with the specified sort OR any of its subtypes. This implements proper OSF polymorphic query semantics where querying a parent sort returns all instances of that sort and its descendants.\n *\n * @tags query\n * @name FindBySort\n * @summary Find terms by sort (polymorphic query)\n * @request POST:/api/v1/query/by-sort\n * @secure\n */\n findBySort = (data: FindBySortRequest, params: RequestParams = {}) =>\n this.http.request<TermListResponse, any>({\n path: `/api/v1/query/by-sort`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags query\n * @name FindUnifiable\n * @summary Find unifiable terms\n * @request POST:/api/v1/query/unifiable\n * @secure\n */\n findUnifiable = (data: UnificationQueryRequest, params: RequestParams = {}) =>\n this.http.request<UnificationQueryResponse, any>({\n path: `/api/v1/query/unifiable`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Supports two modes: - \"llm\" (default): Uses LLM prompt engineering (Anthropic/local) - \"constraint\": Uses fine-tuned FunctionGemma constraint model Both modes translate NL → constraints → execution → results\n *\n * @tags query\n * @name NlQuery\n * @summary Handle natural language query\n * @request POST:/api/v1/nl/query\n * @secure\n */\n nlQuery = (data: NlQueryRequest, params: RequestParams = {}) =>\n this.http.request<NlQueryResponse, any>({\n path: `/api/v1/nl/query`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/query/osf-search Performs structured search using only OSF operations (no LLM). Returns matched entities with provenance, discovered relations, and any query incompleteness information. **Key differentiators from other search endpoints:** - `/api/v1/query/by-sort` - Returns terms, but no relation discovery - `/api/v1/fuzzy/similar` - Returns similarity scores, but no relation discovery - `/api/v1/communities/search` - Requires pre-detected communities **This endpoint provides:** - Automatic relation discovery between matched entities - Residuation for incomplete queries (tells you what's missing) - Structured results with full provenance - Namespace and collection filtering\n *\n * @tags query\n * @name OsfSearch\n * @summary Pure OSF Search\n * @request POST:/api/v1/query/osf-search\n * @secure\n */\n osfSearch = (data: OsfSearchRequest, params: RequestParams = {}) =>\n this.http.request<OsfSearchResponse, any>({\n path: `/api/v1/query/osf-search`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description This performs unification AND validates the result against the GLB sort's witnesses. ## How It Differs from Regular Unification **Regular `/api/v1/term-store/sessions/:id/unify` (POST)**: - Computes GLB and unifies terms - Validates sort constraints (required features, type hints) - Does NOT check witnesses **This endpoint `/api/v1/query/validated-unify` (POST)**: - Computes GLB and unifies terms - Validates sort constraints - ALSO checks witnesses on the result - Returns proof of validity ## Example Unifying `person(name => \"Alice\")` with `grandparent(grandchild => \"Charlie\")`: 1. Computes GLB of person and grandparent 2. Creates unified term with both features 3. Checks grandparent witnesses: ∃Y. parent(Alice,Y) ∧ parent(Y,Charlie) 4. Returns unified term + witness proof\n *\n * @tags query\n * @name ValidatedUnify\n * @summary Unify two terms with witness validation\n * @request POST:/api/v1/query/validated-unify\n * @secure\n */\n validatedUnify = (data: ValidatedUnifyRequest, params: RequestParams = {}) =>\n this.http.request<ValidatedUnifyResponse, void>({\n path: `/api/v1/query/validated-unify`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description This endpoint implements Hassan Aït-Kaci's vision where \"types ARE constraints\". When you create a term of a sort, this validates that the term satisfies the sort's existential witnesses (compiled from rules). ## How It Differs from Regular Term Creation **Regular `/api/v1/terms` (POST)**: - Just stores the term - No validation against type constraints - Fast but permissive **This endpoint `/api/v1/query/validate-term` (POST)**: - Validates term against sort's witnesses - Returns proof that term is legitimate - Slower but type-safe ## Example Given rule: `grandparent(X,Z) :- parent(X,Y), parent(Y,Z)` Creating `grandparent(person => alice, grandchild => charlie)`: - Checks: ∃Y such that parent(alice, Y) ∧ parent(Y, charlie) - If found (e.g., Y=bob): Returns valid=true with witness proof - If not found: Returns valid=false with explanation Uses HomoiconicWitnessFinder for pure homoiconic witness validation.\n *\n * @tags query\n * @name ValidateTerm\n * @summary Validate a term against its sort's witnesses\n * @request POST:/api/v1/query/validate-term\n * @secure\n */\n validateTerm = (data: ValidatedTermRequest, params: RequestParams = {}) =>\n this.http.request<ValidatedTermResponse, void>({\n path: `/api/v1/query/validate-term`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n FindSimilarRequest,\n FuzzySearchTopKRequest,\n FuzzyUnifyRequest,\n FuzzyUnifyResponse,\n PredictEffectRequest,\n PredictEffectResponse,\n SimilaritySearchResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Fuzzy<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description POST /fuzzy/similar Returns all terms with similarity >= min_degree\n *\n * @tags fuzzy\n * @name FindSimilar\n * @summary Find similar terms\n * @request POST:/api/v1/fuzzy/similar\n * @secure\n */\n findSimilar = (data: FindSimilarRequest, params: RequestParams = {}) =>\n this.http.request<SimilaritySearchResponse, any>({\n path: `/api/v1/fuzzy/similar`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/fuzzy/top-k Implements **Top-K similarity search** commonly used in RAG (Retrieval-Augmented Generation) systems. Returns the K most similar terms to a query, sorted by fuzzy similarity degree in **descending order** (best matches first). # Algorithm 1. Filter candidates by `min_degree` threshold (if specified) 2. Compute fuzzy similarity degree μ ∈ [0,1] for each candidate 3. Sort by similarity (descending - highest first) 4. Return top K results # Request Body ```json { \"query\": { \"term_id\": \"uuid\" // Or inline query with sort_id + features }, \"k\": 5, \"min_degree\": 0.7 // Optional: minimum similarity threshold } ``` # Response ```json { \"results\": [ { \"term\": { \"id\": \"...\", \"sort\": \"...\", \"features\": {...} }, \"degree\": 0.95, \"confidence_percent\": 95.0 }, // ... up to K results, sorted by degree (descending) ], \"count\": 5 } ``` # Sorting Guarantee Results are **always sorted by similarity** (highest first): `response.results[i].degree >= response.results[i+1].degree` # Use Cases - **RAG Context Retrieval**: Find most relevant knowledge for LLM prompts - **Semantic Search**: Find similar items without exact matches - **Recommendation Systems**: Suggest similar items to users - **Deduplication**: Identify near-duplicate entries # Example Find 3 most similar sensors with at least 60% similarity: ```bash curl -X POST http://localhost:8080/api/v1/fuzzy/top-k \\ -H \"Content-Type: application/json\" \\ -d '{ \"query\": { \"term_id\": \"abc-123\" }, \"k\": 3, \"min_degree\": 0.6 }' ``` Response (sorted by similarity): ```json { \"results\": [ { \"term\": {...}, \"degree\": 0.92, \"confidence_percent\": 92.0 }, { \"term\": {...}, \"degree\": 0.85, \"confidence_percent\": 85.0 }, { \"term\": {...}, \"degree\": 0.73, \"confidence_percent\": 73.0 } ], \"count\": 3 } ```\n *\n * @tags fuzzy\n * @name FuzzySearchTopK\n * @summary Find top-K most similar terms (RAG-style retrieval)\n * @request POST:/api/v1/fuzzy/top-k\n * @secure\n */\n fuzzySearchTopK = (\n data: FuzzySearchTopKRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<SimilaritySearchResponse, any>({\n path: `/api/v1/fuzzy/top-k`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /fuzzy/unify Returns unified term with confidence degree\n *\n * @tags fuzzy\n * @name FuzzyUnify\n * @summary Fuzzy unify two terms\n * @request POST:/api/v1/fuzzy/unify\n * @secure\n */\n fuzzyUnify = (data: FuzzyUnifyRequest, params: RequestParams = {}) =>\n this.http.request<FuzzyUnifyResponse, any>({\n path: `/api/v1/fuzzy/unify`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/fuzzy/predict-effect This endpoint implements term-based Bayesian effect prediction: 1. Finds similar terms using fuzzy similarity search 2. Extracts FuzzyNumber effect values from matching terms 3. Merges them using Bayesian conjugate update (for Gaussians) 4. Returns the merged posterior distribution\n *\n * @tags fuzzy\n * @name PredictEffect\n * @summary Predict effect by finding similar terms and merging their effects\n * @request POST:/api/v1/fuzzy/predict-effect\n * @secure\n */\n predictEffect = (data: PredictEffectRequest, params: RequestParams = {}) =>\n this.http.request<PredictEffectResponse, void>({\n path: `/api/v1/fuzzy/predict-effect`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n AddConstraintsRequest,\n AddConstraintsResponse,\n BindVariablesRequest,\n BindVariablesResponse,\n CleanupSessionsResponse,\n CreateSessionRequest,\n CreateSessionResponse,\n DeleteSessionResponse,\n SessionStatusResponse,\n SolveConstraintRequest,\n SolveConstraintResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Constraints<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags constraints\n * @name AddConstraints\n * @summary Add constraints incrementally to an existing session\n * @request POST:/api/v1/constraint-sessions/{session_id}/constraints\n * @secure\n */\n addConstraints = (\n sessionId: string,\n data: AddConstraintsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<AddConstraintsResponse, void>({\n path: `/api/v1/constraint-sessions/${sessionId}/constraints`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags constraints\n * @name BindVariables\n * @summary Bind variables to trigger constraint propagation\n * @request POST:/api/v1/constraint-sessions/{session_id}/bindings\n * @secure\n */\n bindVariables = (\n sessionId: string,\n data: BindVariablesRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BindVariablesResponse, void>({\n path: `/api/v1/constraint-sessions/${sessionId}/bindings`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags constraints\n * @name CleanupOldSessions\n * @summary Clean up old sessions (should be called periodically)\n * @request POST:/api/v1/constraint-sessions/cleanup\n * @secure\n */\n cleanupOldSessions = (params: RequestParams = {}) =>\n this.http.request<CleanupSessionsResponse, void>({\n path: `/api/v1/constraint-sessions/cleanup`,\n method: \"POST\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags constraints\n * @name CreateSession\n * @summary Create a new constraint session\n * @request POST:/api/v1/constraint-sessions\n * @secure\n */\n createSession = (data: CreateSessionRequest, params: RequestParams = {}) =>\n this.http.request<CreateSessionResponse, void>({\n path: `/api/v1/constraint-sessions`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags constraints\n * @name DeleteSession\n * @summary Delete a constraint session\n * @request DELETE:/api/v1/constraint-sessions/{session_id}\n * @secure\n */\n deleteSession = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<DeleteSessionResponse, void>({\n path: `/api/v1/constraint-sessions/${sessionId}`,\n method: \"DELETE\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags constraints\n * @name GetSessionStatus\n * @summary Get status of a constraint session\n * @request GET:/api/v1/constraint-sessions/{session_id}\n * @secure\n */\n getSessionStatus = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<SessionStatusResponse, void>({\n path: `/api/v1/constraint-sessions/${sessionId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags constraints\n * @name ListSessions\n * @summary List all active sessions (for debugging/admin)\n * @request GET:/api/v1/constraint-sessions\n * @secure\n */\n listSessions = (params: RequestParams = {}) =>\n this.http.request<SessionStatusResponse[], void>({\n path: `/api/v1/constraint-sessions`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description For problems where you have all constraints upfront and want immediate results. Uses IncrementalConstraintStore internally with automatic cleanup. Process: 1. Creates temporary constraint store 2. Binds initial variables (if provided) 3. Adds all constraints 4. Solves via automatic propagation 5. Returns solution (store auto-cleans) For incremental solving where constraints arrive over time: Use POST /api/v1/constraint-sessions and related endpoints.\n *\n * @tags constraints\n * @name SolveConstraints\n * @summary Solve a constraint problem in one shot\n * @request POST:/api/v1/constraints/solve\n * @secure\n */\n solveConstraints = (\n data: SolveConstraintRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<SolveConstraintResponse, void>({\n path: `/api/v1/constraints/solve`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n DisentailmentRequest,\n DisentailmentResponse,\n EntailmentRequest,\n EntailmentResponse,\n EvidenceAssessmentRequest,\n EvidenceAssessmentResponse,\n FuzzyMergeRequest,\n FuzzyMergeResponse,\n FuzzySubsumptionRequest,\n FuzzySubsumptionResponse,\n GoalResiduationRequest,\n GoalResiduationResponse,\n ResiduationRequest,\n ResiduationResponse,\n ResourceCoordinationRequest,\n ResourceCoordinationResponse,\n TemporalPlanRequest,\n TemporalPlanResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Reasoning<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description POST /api/v1/reasoning/disentailment Disentailment A =/=> B means: \"if A holds, then B must NOT hold\" Returns whether the disentailment is violated (conflict: both A and B hold)\n *\n * @tags reasoning\n * @name Disentailment\n * @summary Check disentailment between two clauses\n * @request POST:/api/v1/reasoning/disentailment\n */\n disentailment = (data: DisentailmentRequest, params: RequestParams = {}) =>\n this.http.request<DisentailmentResponse, any>({\n path: `/api/v1/reasoning/disentailment`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reasoning/entailment Returns whether antecedent entails consequent\n *\n * @tags reasoning\n * @name Entailment\n * @summary Check entailment between clauses\n * @request POST:/api/v1/reasoning/entailment\n */\n entailment = (data: EntailmentRequest, params: RequestParams = {}) =>\n this.http.request<EntailmentResponse, any>({\n path: `/api/v1/reasoning/entailment`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reasoning/assess Computes truthfulness/validity of a subject based on related evidence. Uses fuzzy T-norm aggregation and residuation for insufficient evidence. This is GENERIC and works for any domain: - Health claims with medical evidence - News articles with fact-check sources - Scientific hypotheses with experimental data - Any subject-evidence relationship # Algorithm 1. Query all evidence terms linked to the subject 2. Separate into supporting vs contradicting evidence 3. Check residuation: if max evidence quality < threshold, suspend judgment 4. Compute T-norm aggregation of evidence contributions 5. Apply optional penalty (e.g., manipulation signals) 6. Return truthfulness score with label\n *\n * @tags reasoning\n * @name EvidenceAssessment\n * @summary Generic evidence-based assessment\n * @request POST:/api/v1/reasoning/assess\n * @secure\n */\n evidenceAssessment = (\n data: EvidenceAssessmentRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<EvidenceAssessmentResponse, void>({\n path: `/api/v1/reasoning/assess`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reasoning/merge Combines two terms by merging their features with fuzzy accumulation\n *\n * @tags reasoning\n * @name FuzzyMerge\n * @summary Merge two terms using fuzzy merging\n * @request POST:/api/v1/reasoning/merge\n */\n fuzzyMerge = (data: FuzzyMergeRequest, params: RequestParams = {}) =>\n this.http.request<FuzzyMergeResponse, any>({\n path: `/api/v1/reasoning/merge`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reasoning/subsumption Returns a degree μ ∈ [0,1] indicating how well specific is subsumed by general\n *\n * @tags reasoning\n * @name FuzzySubsumption\n * @summary Check fuzzy subsumption between two terms\n * @request POST:/api/v1/reasoning/subsumption\n */\n fuzzySubsumption = (\n data: FuzzySubsumptionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<FuzzySubsumptionResponse, any>({\n path: `/api/v1/reasoning/subsumption`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reasoning/goal-residuation Given a goal sort name and the sorts already available as evidence, analyses the rule base to find which antecedent sorts are missing. Returns entries sorted by information gain (most useful evidence first).\n *\n * @tags reasoning\n * @name GoalResiduation\n * @summary Compute goal-level residuation: which antecedent sorts are still needed?\n * @request POST:/api/v1/reasoning/goal-residuation\n * @secure\n */\n goalResiduation = (\n data: GoalResiduationRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<GoalResiduationResponse, void>({\n path: `/api/v1/reasoning/goal-residuation`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reasoning/residuate Returns suspended operations and resumption triggers\n *\n * @tags reasoning\n * @name Residuation\n * @summary Check residuation status\n * @request POST:/api/v1/reasoning/residuate\n */\n residuation = (data: ResiduationRequest, params: RequestParams = {}) =>\n this.http.request<ResiduationResponse, any>({\n path: `/api/v1/reasoning/residuate`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reasoning/resource-coordination **CURRENT STATUS**: This endpoint currently only supports 2-way pairwise coordination. **TODO**: Migrate to N-way coordination as defined in the updated DTOs. This is a GENERIC endpoint that works for ANY pairing scenario: - Meals + Wines (food service) - Tasks + Tools (project management) - Outfits + Occasions (fashion) - etc. The system knows nothing about wine or meals - it's purely generic. **Migration needed**: 1. Update to accept `resources: Vec<ResourceSpec>` instead of primary/secondary 2. Implement N-way compatibility algorithm in domain layer 3. Update service layer to handle N resources 4. Return `CoordinatedResourceSet` instead of `PairedResourceDto` 5. See RESOURCE_COORDINATION_EXAMPLES.md for target API design\n *\n * @tags reasoning\n * @name ResourceCoordination\n * @summary Resource coordination planning endpoint (generic multi-resource pairing)\n * @request POST:/api/v1/reasoning/resource-coordination\n * @secure\n */\n resourceCoordination = (\n data: ResourceCoordinationRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ResourceCoordinationResponse, void>({\n path: `/api/v1/reasoning/resource-coordination`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description POST /api/v1/reasoning/temporal-plan Creates a temporal plan by selecting N terms from a sort while ensuring diversity according to specified constraints. This is useful for: - Weekly meal planning (7 recipes, no repeating cuisines) - Event scheduling (avoid conflicts) - Resource allocation with diversity requirements # Example Request ```json { \"tenant_id\": \"123e4567-e89b-12d3-a456-426614174000\", \"sort_id\": \"recipe-sort-uuid\", \"num_selections\": 7, \"no_repeat_fields\": [\"cuisine\"] } ``` # Example Response ```json { \"selected_term_ids\": [\"term1-uuid\", \"term2-uuid\", ...], \"diversity_score\": 0.95, \"candidates_count\": 150, \"computation_time_ms\": 42 } ```\n *\n * @tags reasoning\n * @name TemporalPlan\n * @summary Plan selections with diversity constraints (Temporal Planning)\n * @request POST:/api/v1/reasoning/temporal-plan\n * @secure\n */\n temporalPlan = (data: TemporalPlanRequest, params: RequestParams = {}) =>\n this.http.request<TemporalPlanResponse, void>({\n path: `/api/v1/reasoning/temporal-plan`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n ConditionalIndependenceRequest,\n ConditionalIndependenceResponse,\n CorrelationRequest,\n CorrelationResponse,\n DiscoverCausalRequest,\n DiscoverCausalResponse,\n DiscoveryStatusResponse,\n DynamicDiscoveryRequest,\n DynamicDiscoveryResponse,\n InterventionObservationRequest,\n InterventionObservationResponse,\n ObserveMultiRequest,\n ObserveMultiResponse,\n ObservePairRequest,\n ObservePairResponse,\n ObserveSingleRequest,\n ObserveSingleResponse,\n PartialCorrelationRequest,\n PartialCorrelationResponse,\n StatisticalSuccessResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Statistical<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description This endpoint clears all observed data from the statistical store, allowing tests or workflows to start with fresh data.\n *\n * @tags statistical\n * @name ClearStatisticalData\n * @summary Clear all statistical data\n * @request POST:/api/v1/statistical/clear-data\n * @secure\n */\n clearStatisticalData = (params: RequestParams = {}) =>\n this.http.request<StatisticalSuccessResponse, any>({\n path: `/api/v1/statistical/clear-data`,\n method: \"POST\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags statistical\n * @name DiscoverCausal\n * @summary Run causal discovery using DynamicDiscoveryEngine\n * @request POST:/api/v1/statistical/discover-causal\n * @secure\n */\n discoverCausal = (data: DiscoverCausalRequest, params: RequestParams = {}) =>\n this.http.request<DiscoverCausalResponse, any>({\n path: `/api/v1/statistical/discover-causal`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags statistical\n * @name DynamicDiscovery\n * @summary Run dynamic causal discovery with full proof tree and recommendations\n * @request POST:/api/v1/statistical/dynamic-discovery\n * @secure\n */\n dynamicDiscovery = (\n data: DynamicDiscoveryRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<DynamicDiscoveryResponse, any>({\n path: `/api/v1/statistical/dynamic-discovery`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags statistical\n * @name GetCorrelation\n * @summary Get correlation between two variables\n * @request POST:/api/v1/statistical/correlation\n * @secure\n */\n getCorrelation = (data: CorrelationRequest, params: RequestParams = {}) =>\n this.http.request<CorrelationResponse, any>({\n path: `/api/v1/statistical/correlation`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags statistical\n * @name GetDiscoveryStatus\n * @summary Get current discovery status\n * @request GET:/api/v1/statistical/discovery-status\n * @secure\n */\n getDiscoveryStatus = (params: RequestParams = {}) =>\n this.http.request<DiscoveryStatusResponse, any>({\n path: `/api/v1/statistical/discovery-status`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags statistical\n * @name GetPartialCorrelation\n * @summary Get partial correlation controlling for a set of variables\n * @request POST:/api/v1/statistical/partial-correlation\n * @secure\n */\n getPartialCorrelation = (\n data: PartialCorrelationRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<PartialCorrelationResponse, any>({\n path: `/api/v1/statistical/partial-correlation`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags statistical\n * @name ObserveMulti\n * @summary Observe multiple variables at once\n * @request POST:/api/v1/statistical/observe-multi\n * @secure\n */\n observeMulti = (data: ObserveMultiRequest, params: RequestParams = {}) =>\n this.http.request<ObserveMultiResponse, any>({\n path: `/api/v1/statistical/observe-multi`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags statistical\n * @name ObservePair\n * @summary Observe a pair of variables\n * @request POST:/api/v1/statistical/observe-pair\n * @secure\n */\n observePair = (data: ObservePairRequest, params: RequestParams = {}) =>\n this.http.request<ObservePairResponse, any>({\n path: `/api/v1/statistical/observe-pair`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags statistical\n * @name ObserveSingle\n * @summary Observe a single variable value\n * @request POST:/api/v1/statistical/observe\n * @secure\n */\n observeSingle = (data: ObserveSingleRequest, params: RequestParams = {}) =>\n this.http.request<ObserveSingleResponse, any>({\n path: `/api/v1/statistical/observe`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags statistical\n * @name RecordInterventionObservation\n * @summary Record an intervention observation to resolve uncertain edges\n * @request POST:/api/v1/statistical/intervention-observation\n * @secure\n */\n recordInterventionObservation = (\n data: InterventionObservationRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<InterventionObservationResponse, any>({\n path: `/api/v1/statistical/intervention-observation`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags statistical\n * @name ResetDiscovery\n * @summary Reset the discovery engine\n * @request POST:/api/v1/statistical/reset-discovery\n * @secure\n */\n resetDiscovery = (params: RequestParams = {}) =>\n this.http.request<StatisticalSuccessResponse, any>({\n path: `/api/v1/statistical/reset-discovery`,\n method: \"POST\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags statistical\n * @name TestConditionalIndependence\n * @summary Test conditional independence\n * @request POST:/api/v1/statistical/test-independence\n * @secure\n */\n testConditionalIndependence = (\n data: ConditionalIndependenceRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ConditionalIndependenceResponse, any>({\n path: `/api/v1/statistical/test-independence`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n AddSymbolRequest,\n AddSymbolResponse,\n BacktrackableAssignRequest,\n BacktrackableAssignResponse,\n CallOnceRequest,\n CallOnceResponse,\n CondRequest,\n CondResponse,\n CreateModuleRequest,\n CreateModuleResponse,\n CutRequest,\n CutResponse,\n FindallRequest,\n FindallResponse,\n ForallRequest,\n ForallResponse,\n GlobalAssignRequest,\n GlobalAssignResponse,\n GlobalGetRequest,\n GlobalGetResponse,\n GlobalIncrementRequest,\n GlobalIncrementResponse,\n ImpliesRequest,\n ImpliesResponse,\n ImportModuleRequest,\n ImportModuleResponse,\n ListSymbolsRequest,\n ListSymbolsResponse,\n NafRequest,\n NafResponse,\n ResolveSymbolRequest,\n ResolveSymbolResponse,\n UndoRequest,\n UndoResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Control<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags control\n * @name AddSymbol\n * @summary Add symbol to module POST /api/v1/modules/:name/symbols\n * @request POST:/api/v1/modules/symbols\n * @secure\n */\n addSymbol = (data: AddSymbolRequest, params: RequestParams = {}) =>\n this.http.request<AddSymbolResponse, void>({\n path: `/api/v1/modules/symbols`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name AssignBacktrackable\n * @summary Backtrackable assignment POST /api/v1/control/assign/backtrackable\n * @request POST:/api/v1/control/assign/backtrackable\n * @secure\n */\n assignBacktrackable = (\n data: BacktrackableAssignRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BacktrackableAssignResponse, void>({\n path: `/api/v1/control/assign/backtrackable`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name AssignGlobal\n * @summary Global assignment POST /api/v1/control/assign/global\n * @request POST:/api/v1/control/assign/global\n * @secure\n */\n assignGlobal = (data: GlobalAssignRequest, params: RequestParams = {}) =>\n this.http.request<GlobalAssignResponse, void>({\n path: `/api/v1/control/assign/global`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name ControlCallOnce\n * @summary Execute with cut (call_once) POST /api/v1/control/call-once\n * @request POST:/api/v1/control/call-once\n * @secure\n */\n controlCallOnce = (data: CallOnceRequest, params: RequestParams = {}) =>\n this.http.request<CallOnceResponse, void>({\n path: `/api/v1/control/call-once`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name ControlCond\n * @summary Execute conditional (if-then-else) POST /api/v1/control/cond\n * @request POST:/api/v1/control/cond\n * @secure\n */\n controlCond = (data: CondRequest, params: RequestParams = {}) =>\n this.http.request<CondResponse, void>({\n path: `/api/v1/control/cond`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name ControlCut\n * @summary Execute cut POST /api/v1/control/cut\n * @request POST:/api/v1/control/cut\n * @secure\n */\n controlCut = (data: CutRequest, params: RequestParams = {}) =>\n this.http.request<CutResponse, void>({\n path: `/api/v1/control/cut`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name ControlFindall\n * @summary Collect all solutions (findall) POST /api/v1/control/findall\n * @request POST:/api/v1/control/findall\n * @secure\n */\n controlFindall = (data: FindallRequest, params: RequestParams = {}) =>\n this.http.request<FindallResponse, void>({\n path: `/api/v1/control/findall`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name ControlForall\n * @summary Universal quantification (forall) POST /api/v1/control/forall\n * @request POST:/api/v1/control/forall\n * @secure\n */\n controlForall = (data: ForallRequest, params: RequestParams = {}) =>\n this.http.request<ForallResponse, void>({\n path: `/api/v1/control/forall`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name ControlImplies\n * @summary Evaluate implication (A -> B) POST /api/v1/control/implies\n * @request POST:/api/v1/control/implies\n * @secure\n */\n controlImplies = (data: ImpliesRequest, params: RequestParams = {}) =>\n this.http.request<ImpliesResponse, void>({\n path: `/api/v1/control/implies`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name ControlNaf\n * @summary Negation as failure POST /api/v1/control/naf\n * @request POST:/api/v1/control/naf\n * @secure\n */\n controlNaf = (data: NafRequest, params: RequestParams = {}) =>\n this.http.request<NafResponse, void>({\n path: `/api/v1/control/naf`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name ControlUndo\n * @summary Register undo action POST /api/v1/control/undo\n * @request POST:/api/v1/control/undo\n * @secure\n */\n controlUndo = (data: UndoRequest, params: RequestParams = {}) =>\n this.http.request<UndoResponse, void>({\n path: `/api/v1/control/undo`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name CreateModule\n * @summary Create a module POST /api/v1/modules\n * @request POST:/api/v1/modules\n * @secure\n */\n createModule = (data: CreateModuleRequest, params: RequestParams = {}) =>\n this.http.request<CreateModuleResponse, void>({\n path: `/api/v1/modules`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name GlobalGet\n * @summary Get global variable POST /api/v1/control/global/get\n * @request POST:/api/v1/control/global/get\n * @secure\n */\n globalGet = (data: GlobalGetRequest, params: RequestParams = {}) =>\n this.http.request<GlobalGetResponse, void>({\n path: `/api/v1/control/global/get`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name GlobalIncrement\n * @summary Global increment POST /api/v1/control/global/incr\n * @request POST:/api/v1/control/global/incr\n * @secure\n */\n globalIncrement = (\n data: GlobalIncrementRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<GlobalIncrementResponse, void>({\n path: `/api/v1/control/global/incr`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name ImportModule\n * @summary Import a module POST /api/v1/modules/import\n * @request POST:/api/v1/modules/import\n * @secure\n */\n importModule = (data: ImportModuleRequest, params: RequestParams = {}) =>\n this.http.request<ImportModuleResponse, void>({\n path: `/api/v1/modules/import`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name ListSymbols\n * @summary List module symbols POST /api/v1/modules/:name/symbols/list\n * @request POST:/api/v1/modules/symbols/list\n * @secure\n */\n listSymbols = (data: ListSymbolsRequest, params: RequestParams = {}) =>\n this.http.request<ListSymbolsResponse, void>({\n path: `/api/v1/modules/symbols/list`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags control\n * @name ResolveSymbol\n * @summary Resolve qualified symbol name POST /api/v1/modules/resolve\n * @request POST:/api/v1/modules/resolve\n * @secure\n */\n resolveSymbol = (data: ResolveSymbolRequest, params: RequestParams = {}) =>\n this.http.request<ResolveSymbolResponse, void>({\n path: `/api/v1/modules/resolve`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n CommitRequest,\n CreateSpaceRequest,\n SearchRequest,\n SearchResponse,\n SpaceResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Spaces<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags spaces\n * @name CloneSpace\n * @summary Clone a computation space for parallel exploration\n * @request POST:/api/v1/spaces/{space_id}/clone\n * @secure\n */\n cloneSpace = (spaceId: string, params: RequestParams = {}) =>\n this.http.request<SpaceResponse, void>({\n path: `/api/v1/spaces/${spaceId}/clone`,\n method: \"POST\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags spaces\n * @name CommitSpace\n * @summary Commit to an alternative in a space\n * @request POST:/api/v1/spaces/{space_id}/commit\n * @secure\n */\n commitSpace = (\n spaceId: string,\n data: CommitRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<SpaceResponse, void>({\n path: `/api/v1/spaces/${spaceId}/commit`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags spaces\n * @name CreateSpace\n * @summary Create a new computation space\n * @request POST:/api/v1/spaces\n * @secure\n */\n createSpace = (data: CreateSpaceRequest, params: RequestParams = {}) =>\n this.http.request<SpaceResponse, void>({\n path: `/api/v1/spaces`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags spaces\n * @name GetSpace\n * @summary Get the status of a computation space\n * @request GET:/api/v1/spaces/{space_id}\n * @secure\n */\n getSpace = (spaceId: string, params: RequestParams = {}) =>\n this.http.request<SpaceResponse, void>({\n path: `/api/v1/spaces/${spaceId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags spaces\n * @name SearchSpace\n * @summary Search for solutions in a space\n * @request POST:/api/v1/spaces/{space_id}/search\n * @secure\n */\n searchSpace = (\n spaceId: string,\n data: SearchRequest,\n query?: {\n /** Value ordering strategy (e.g., \"min\", \"max\", \"median\") */\n value_ordering?: string | null;\n },\n params: RequestParams = {},\n ) =>\n this.http.request<SearchResponse, void>({\n path: `/api/v1/spaces/${spaceId}/search`,\n method: \"POST\",\n query: query,\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n DynamicQueryRequest,\n DynamicQueryResponse,\n RowIntegrateRequest,\n RowIntegrateResponse,\n RowSearchRequest,\n RowSearchResponse,\n RowSimilarityRequest,\n RowSimilarityResponse,\n RowUnifyRequest,\n RowUnifyResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class RowPolymorphism<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Execute pattern-based queries with support for exact matching, type checking, comparisons, regex, and variable bindings. ## Example Use Case: Complex Filtered Queries Find all products where price > 100 and category contains \"electronics\": ```json { \"clauses\": [ {\"feature\": \"price\", \"pattern\": {\"type\": \"greater_than\", \"value\": 100}}, {\"feature\": \"category\", \"pattern\": {\"type\": \"contains\", \"substring\": \"electronics\"}} ], \"project\": [\"name\", \"price\", \"category\"], \"sort_by\": \"price\", \"descending\": true } ```\n *\n * @tags row-polymorphism\n * @name DynamicQuery\n * @summary Dynamic query building\n * @request POST:/api/v1/row/query\n * @secure\n */\n dynamicQuery = (data: DynamicQueryRequest, params: RequestParams = {}) =>\n this.http.request<DynamicQueryResponse, any>({\n path: `/api/v1/row/query`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Find groups of entities that share common feature values (potential duplicates or related entities across different schemas/sources). ## Example Use Case: Cross-Source Entity Matching Find entities that have the same \"email\" and \"name\" across different data sources: ```json { \"match_features\": [\"email\", \"name\"], \"min_similarity\": 0.9, \"source_namespaces\": [\"crm_data\", \"marketing_data\", \"support_data\"] } ```\n *\n * @tags row-polymorphism\n * @name RowIntegrate\n * @summary Feature-based data integration\n * @request POST:/api/v1/row/integrate\n * @secure\n */\n rowIntegrate = (data: RowIntegrateRequest, params: RequestParams = {}) =>\n this.http.request<RowIntegrateResponse, any>({\n path: `/api/v1/row/integrate`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Find all entities matching a row pattern (feature requirements) regardless of sort. This is \"structural typing\" for knowledge bases - query by structure, not by type. ## Example Use Case: Multi-Domain Entity Discovery Find all entities with a \"name\" and \"location\" feature, whether they're Person, Company, Building, Event, or any other sort: ```json { \"pattern\": { \"features\": [ {\"name\": \"name\", \"feature_type\": \"string\"}, {\"name\": \"location\", \"feature_type\": \"string\"} ], \"open\": true } } ```\n *\n * @tags row-polymorphism\n * @name RowSearch\n * @summary Schema-flexible entity search\n * @request POST:/api/v1/row/search\n * @secure\n */\n rowSearch = (data: RowSearchRequest, params: RequestParams = {}) =>\n this.http.request<RowSearchResponse, any>({\n path: `/api/v1/row/search`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Calculate the similarity between two row types based on feature overlap.\n *\n * @tags row-polymorphism\n * @name RowSimilarity\n * @summary Compute row type similarity\n * @request POST:/api/v1/row/similarity\n * @secure\n */\n rowSimilarity = (data: RowSimilarityRequest, params: RequestParams = {}) =>\n this.http.request<RowSimilarityResponse, any>({\n path: `/api/v1/row/similarity`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Try to unify two row types and return the result.\n *\n * @tags row-polymorphism\n * @name RowUnify\n * @summary Compute row type unification\n * @request POST:/api/v1/row/unify\n * @secure\n */\n rowUnify = (data: RowUnifyRequest, params: RequestParams = {}) =>\n this.http.request<RowUnifyResponse, any>({\n path: `/api/v1/row/unify`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n AddExportRequest,\n AddImportRequest,\n CreateChildNamespaceRequest,\n CreateRootNamespaceRequest,\n NamespaceListResponse,\n NamespaceResponse,\n UpdateMetadataRequest,\n UpdateVisibilityRequest,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Namespaces<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags namespaces\n * @name AddNamespaceExport\n * @summary Add an export to a namespace\n * @request POST:/api/v1/namespaces/{id}/exports\n * @secure\n */\n addNamespaceExport = (\n id: string,\n data: AddExportRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<void, void>({\n path: `/api/v1/namespaces/${id}/exports`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n ...params,\n });\n /**\n * No description\n *\n * @tags namespaces\n * @name AddNamespaceImport\n * @summary Add an import to a namespace\n * @request POST:/api/v1/namespaces/{id}/imports\n * @secure\n */\n addNamespaceImport = (\n id: string,\n data: AddImportRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<void, void>({\n path: `/api/v1/namespaces/${id}/imports`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n ...params,\n });\n /**\n * @description # Authorization Requires X-Tenant-Id header. The tenant_id field in the request body is ignored.\n *\n * @tags namespaces\n * @name CreateChildNamespace\n * @summary Create a child namespace\n * @request POST:/api/v1/namespaces/child\n * @secure\n */\n createChildNamespace = (\n data: CreateChildNamespaceRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<NamespaceResponse, void>({\n path: `/api/v1/namespaces/child`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description # Authorization Requires X-Tenant-Id header. The tenant_id field in the request body is ignored.\n *\n * @tags namespaces\n * @name CreateRootNamespace\n * @summary Create a root namespace\n * @request POST:/api/v1/namespaces\n * @secure\n */\n createRootNamespace = (\n data: CreateRootNamespaceRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<NamespaceResponse, void>({\n path: `/api/v1/namespaces`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags namespaces\n * @name DeleteNamespace\n * @summary Delete a namespace\n * @request DELETE:/api/v1/namespaces/{id}\n * @secure\n */\n deleteNamespace = (id: string, params: RequestParams = {}) =>\n this.http.request<void, void>({\n path: `/api/v1/namespaces/${id}`,\n method: \"DELETE\",\n secure: true,\n ...params,\n });\n /**\n * No description\n *\n * @tags namespaces\n * @name GetNamespace\n * @summary Get a namespace by ID\n * @request GET:/api/v1/namespaces/{id}\n * @secure\n */\n getNamespace = (id: string, params: RequestParams = {}) =>\n this.http.request<NamespaceResponse, void>({\n path: `/api/v1/namespaces/${id}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags namespaces\n * @name GetNamespaceAncestors\n * @summary Get ancestors of a namespace (from root to parent)\n * @request GET:/api/v1/namespaces/{id}/ancestors\n * @secure\n */\n getNamespaceAncestors = (id: string, params: RequestParams = {}) =>\n this.http.request<NamespaceListResponse, void>({\n path: `/api/v1/namespaces/${id}/ancestors`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags namespaces\n * @name GetNamespaceByPath\n * @summary Get a namespace by path\n * @request GET:/api/v1/namespaces/path/{tenant_id}/{path}\n * @secure\n */\n getNamespaceByPath = (\n tenantId: string,\n path: string,\n params: RequestParams = {},\n ) =>\n this.http.request<NamespaceResponse, void>({\n path: `/api/v1/namespaces/path/${tenantId}/${path}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags namespaces\n * @name GetNamespaceChildren\n * @summary Get children of a namespace\n * @request GET:/api/v1/namespaces/{id}/children\n * @secure\n */\n getNamespaceChildren = (id: string, params: RequestParams = {}) =>\n this.http.request<NamespaceListResponse, void>({\n path: `/api/v1/namespaces/${id}/children`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags namespaces\n * @name ListNamespaces\n * @summary List all namespaces for a tenant\n * @request GET:/api/v1/namespaces/tenant/{tenant_id}\n * @secure\n */\n listNamespaces = (tenantId: string, params: RequestParams = {}) =>\n this.http.request<NamespaceListResponse, void>({\n path: `/api/v1/namespaces/tenant/${tenantId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags namespaces\n * @name UpdateNamespaceMetadata\n * @summary Update namespace metadata\n * @request PUT:/api/v1/namespaces/{id}/metadata\n * @secure\n */\n updateNamespaceMetadata = (\n id: string,\n data: UpdateMetadataRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<void, void>({\n path: `/api/v1/namespaces/${id}/metadata`,\n method: \"PUT\",\n body: data,\n secure: true,\n type: ContentType.Json,\n ...params,\n });\n /**\n * No description\n *\n * @tags namespaces\n * @name UpdateNamespaceVisibility\n * @summary Update namespace visibility\n * @request PUT:/api/v1/namespaces/{id}/visibility\n * @secure\n */\n updateNamespaceVisibility = (\n id: string,\n data: UpdateVisibilityRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<void, void>({\n path: `/api/v1/namespaces/${id}/visibility`,\n method: \"PUT\",\n body: data,\n secure: true,\n type: ContentType.Json,\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n CreateScenarioRequest,\n CreateScenarioResponse,\n GetScenarioResponse,\n ListScenariosResponse,\n UpdateScenarioRequest,\n UpdateScenarioResponse,\n VerifyScenarioRequest,\n VerifyScenarioResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Scenarios<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Generates an OSFKB scenario from a natural language task description using an LLM, then materializes it into the knowledge base (sorts, beliefs, rules, goals, webhook actions, tools, curriculum, groundings). Supports multi-turn clarification.\n *\n * @tags scenarios\n * @name CreateScenario\n * @summary Generate and materialize a scenario from natural language\n * @request POST:/api/v1/scenarios\n * @secure\n */\n createScenario = (data: CreateScenarioRequest, params: RequestParams = {}) =>\n this.http.request<CreateScenarioResponse, void>({\n path: `/api/v1/scenarios`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Returns the full scenario definition and materialization metadata for a previously created scenario, looked up from the tenant's Psi-term store.\n *\n * @tags scenarios\n * @name GetScenario\n * @summary Retrieve a scenario by ID\n * @request GET:/api/v1/scenarios/{scenario_id}\n * @secure\n */\n getScenario = (scenarioId: string, params: RequestParams = {}) =>\n this.http.request<GetScenarioResponse, void>({\n path: `/api/v1/scenarios/${scenarioId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description Returns scenario summaries sorted by most recent first, including counts of materialized sorts, beliefs, and rules.\n *\n * @tags scenarios\n * @name ListScenarios\n * @summary List all scenarios for the current tenant\n * @request GET:/api/v1/scenarios\n * @secure\n */\n listScenarios = (params: RequestParams = {}) =>\n this.http.request<ListScenariosResponse, any>({\n path: `/api/v1/scenarios`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description Adds new sorts, beliefs, rules, constraints, guard constraints, temporal constraints, and/or webhook actions to an existing scenario without re-creating everything from scratch.\n *\n * @tags scenarios\n * @name UpdateScenario\n * @summary Incrementally update a scenario\n * @request PATCH:/api/v1/scenarios/{scenario_id}\n * @secure\n */\n updateScenario = (\n scenarioId: string,\n data: UpdateScenarioRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<UpdateScenarioResponse, void>({\n path: `/api/v1/scenarios/${scenarioId}`,\n method: \"PATCH\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Performs structural verification of materialization steps, then attempts FormalJudge semantic verification if an LLM is configured. Falls back gracefully to structural-only verification when the LLM is unavailable.\n *\n * @tags scenarios\n * @name VerifyScenario\n * @summary Verify a scenario with FormalJudge analysis\n * @request POST:/api/v1/scenarios/{scenario_id}/verify\n * @secure\n */\n verifyScenario = (\n scenarioId: string,\n data: VerifyScenarioRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<VerifyScenarioResponse, void>({\n path: `/api/v1/scenarios/${scenarioId}/verify`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n ConfirmResponseDto,\n ExplorationCompleteResponseDto,\n ExplorationStatusResponseDto,\n RefuteRequestDto,\n RefuteResponseDto,\n SortDiscoveryRequestDto,\n SortDiscoveryResponseDto,\n StartExplorationRequestDto,\n StartExplorationResponseDto,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Analysis<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Runs Ganter's Next Closure algorithm on existing PsiTerms to discover formal concepts (feature-set intersections) not captured by existing sorts. Returns ranked recommendations with confidence scores and optional auto-creation. When `fuzzy_thresholds` is non-empty, also runs fuzzy FCA at each alpha-cut level.\n *\n * @tags analysis\n * @name AnalyzeSortDiscovery\n * @summary Analyze the knowledge base for missing sort boundaries via FCA.\n * @request POST:/api/v1/analysis/sort-discovery\n */\n analyzeSortDiscovery = (\n data: SortDiscoveryRequestDto,\n params: RequestParams = {},\n ) =>\n this.http.request<SortDiscoveryResponseDto, void>({\n path: `/api/v1/analysis/sort-discovery`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description The exploration must be complete (no more questions) before calling this. Creates appropriateness sorts in the hierarchy from the Duquenne-Guigues basis.\n *\n * @tags analysis\n * @name CompleteExploration\n * @summary Complete the exploration and create sort rules from confirmed implications.\n * @request POST:/api/v1/analysis/attribute-exploration/{session_id}/complete\n */\n completeExploration = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<ExplorationCompleteResponseDto, void>({\n path: `/api/v1/analysis/attribute-exploration/${sessionId}/complete`,\n method: \"POST\",\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags analysis\n * @name ConfirmImplication\n * @summary Confirm the current implication: the expert agrees it holds.\n * @request POST:/api/v1/analysis/attribute-exploration/{session_id}/confirm\n */\n confirmImplication = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<ConfirmResponseDto, void>({\n path: `/api/v1/analysis/attribute-exploration/${sessionId}/confirm`,\n method: \"POST\",\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags analysis\n * @name ExplorationStatus\n * @summary Get the current status of an exploration session.\n * @request GET:/api/v1/analysis/attribute-exploration/{session_id}/status\n */\n explorationStatus = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<ExplorationStatusResponseDto, void>({\n path: `/api/v1/analysis/attribute-exploration/${sessionId}/status`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n /**\n * @description The counterexample must have all premise features but lack at least one conclusion feature.\n *\n * @tags analysis\n * @name RefuteImplication\n * @summary Refute the current implication with a counterexample.\n * @request POST:/api/v1/analysis/attribute-exploration/{session_id}/refute\n */\n refuteImplication = (\n sessionId: string,\n data: RefuteRequestDto,\n params: RequestParams = {},\n ) =>\n this.http.request<RefuteResponseDto, void>({\n path: `/api/v1/analysis/attribute-exploration/${sessionId}/refute`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Builds a formal context from the tenant's knowledge base terms and initializes the Ganter exploration protocol.\n *\n * @tags analysis\n * @name StartExploration\n * @summary Start a new attribute exploration session.\n * @request POST:/api/v1/analysis/attribute-exploration/start\n */\n startExploration = (\n data: StartExplorationRequestDto,\n params: RequestParams = {},\n ) =>\n this.http.request<StartExplorationResponseDto, void>({\n path: `/api/v1/analysis/attribute-exploration/start`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n EvaluateFunctionRequest,\n EvaluateFunctionResponse,\n RegisterFunctionRequest,\n RegisterFunctionResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Functions<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags functions\n * @name EvaluateFunction\n * @summary Handler to evaluate a function using LIFE-style FunctionEvaluator\n * @request POST:/api/v1/functions/evaluate\n * @secure\n */\n evaluateFunction = (\n data: EvaluateFunctionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<EvaluateFunctionResponse, void>({\n path: `/api/v1/functions/evaluate`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags functions\n * @name RegisterFunction\n * @summary Handler to register a user-defined function\n * @request POST:/api/v1/functions/register\n * @secure\n */\n registerFunction = (\n data: RegisterFunctionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<RegisterFunctionResponse, void>({\n path: `/api/v1/functions/register`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n InvokeActionRequest,\n InvokeActionResponse,\n ListExternalActionsResponse,\n ListPendingInvocationsResponse,\n RegisterExternalActionRequest,\n RegisterExternalActionResponse,\n WebhookCallbackRequest,\n WebhookCallbackResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class WebhookActions<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Binds output values to the action Ψ-term's features and fires demons.\n *\n * @tags webhook-actions\n * @name CompleteInvocation\n * @summary Complete a pending invocation (receive webhook callback).\n * @request POST:/api/v1/invocations/{id}/complete\n */\n completeInvocation = (\n id: string,\n data: WebhookCallbackRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<WebhookCallbackResponse, void>({\n path: `/api/v1/invocations/${id}/complete`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Creates an action Ψ-term with inputs, creates a pending invocation, attaches a demon for residuation, and returns the invocation ID.\n *\n * @tags webhook-actions\n * @name InvokeAction\n * @summary Invoke a registered external action.\n * @request POST:/api/v1/external-actions/{name}/invoke\n */\n invokeAction = (\n name: string,\n data: InvokeActionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<InvokeActionResponse, void>({\n path: `/api/v1/external-actions/${name}/invoke`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags webhook-actions\n * @name ListExternalActions\n * @summary List all registered external actions for a tenant.\n * @request GET:/api/v1/external-actions\n */\n listExternalActions = (\n query: {\n /**\n * Tenant ID\n * @format uuid\n */\n tenant_id: string;\n },\n params: RequestParams = {},\n ) =>\n this.http.request<ListExternalActionsResponse, any>({\n path: `/api/v1/external-actions`,\n method: \"GET\",\n query: query,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags webhook-actions\n * @name ListPendingInvocations\n * @summary List pending invocations for a tenant.\n * @request GET:/api/v1/invocations\n */\n listPendingInvocations = (\n query: {\n /**\n * Tenant ID\n * @format uuid\n */\n tenant_id: string;\n },\n params: RequestParams = {},\n ) =>\n this.http.request<ListPendingInvocationsResponse, any>({\n path: `/api/v1/invocations`,\n method: \"GET\",\n query: query,\n format: \"json\",\n ...params,\n });\n /**\n * @description Creates a sort inheriting from `effect` in the sort hierarchy.\n *\n * @tags webhook-actions\n * @name RegisterExternalAction\n * @summary Register a new external action type.\n * @request POST:/api/v1/external-actions\n */\n registerExternalAction = (\n data: RegisterExternalActionRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<RegisterExternalActionResponse, void>({\n path: `/api/v1/external-actions`,\n method: \"POST\",\n body: data,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n CalibrateRequest,\n CalibrationReportDto,\n CheckDiversityRequest,\n CheckDiversityResponse,\n ExportJsonlResponse,\n GenerateNegativesRequest,\n GenerateNegativesResponse,\n GenerateSyntheticDataRequest,\n GenerateSyntheticDataResponse,\n GenerationPromptRequest,\n GenerationPromptResponse,\n VerbalizeTermRequest,\n VerbalizeTermResponse,\n VerifyFaithfulnessRequest,\n VerifyFaithfulnessResponse,\n VerifyRoundTripRequest,\n VerifyRoundTripResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Synthetic<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Creates a structured prompt with a stable prefix (cacheable across batch calls) and dynamic content for a specific term. Mirrors the extraction pipeline's prompt architecture for KV-cache reuse. # Authorization Requires X-Tenant-Id header for tenant-scoped operations.\n *\n * @tags synthetic\n * @name BuildGenerationPrompt\n * @summary Build a generation prompt for LLM-based verbalization.\n * @request POST:/api/v1/synthetic/generation-prompt\n * @secure\n */\n buildGenerationPrompt = (\n data: GenerationPromptRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<GenerationPromptResponse, void>({\n path: `/api/v1/synthetic/generation-prompt`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Computes per-sort and per-feature Expected Calibration Error, identifies augmentation targets, and allocates exponential budgets for targeted synthetic data generation.\n *\n * @tags synthetic\n * @name Calibrate\n * @summary Run ECE calibration on extraction predictions.\n * @request POST:/api/v1/synthetic/calibrate\n * @secure\n */\n calibrate = (data: CalibrateRequest, params: RequestParams = {}) =>\n this.http.request<CalibrationReportDto, void>({\n path: `/api/v1/synthetic/calibrate`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Computes structural similarity using Wu-Palmer sort distance and Jaccard feature overlap. Returns novelty score and closest match. # Authorization Requires X-Tenant-Id header for tenant-scoped operations.\n *\n * @tags synthetic\n * @name CheckDiversity\n * @summary Check diversity of a candidate term against existing terms in the knowledge base.\n * @request POST:/api/v1/synthetic/check-diversity\n * @secure\n */\n checkDiversity = (data: CheckDiversityRequest, params: RequestParams = {}) =>\n this.http.request<CheckDiversityResponse, void>({\n path: `/api/v1/synthetic/check-diversity`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Generates synthetic data and returns it directly as JSONL (one JSON object per line), suitable for HuggingFace-compatible fine-tuning pipelines. # Authorization Requires X-Tenant-Id header for tenant-scoped generation.\n *\n * @tags synthetic\n * @name ExportJsonl\n * @summary Export synthetic training data as JSONL format.\n * @request POST:/api/v1/synthetic/export-jsonl\n * @secure\n */\n exportJsonl = (\n data: GenerateSyntheticDataRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ExportJsonlResponse, void>({\n path: `/api/v1/synthetic/export-jsonl`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Uses principled strategies to create training examples that are negative (invalid) for specific, documented reasons: sort incompatibility, feature perturbation, cross-sort confusion, missing required features, and feature type mismatch. # Authorization Requires X-Tenant-Id header for tenant-scoped operations.\n *\n * @tags synthetic\n * @name GenerateNegatives\n * @summary Generate enhanced negative examples for target sorts.\n * @request POST:/api/v1/synthetic/negatives\n * @secure\n */\n generateNegatives = (\n data: GenerateNegativesRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<GenerateNegativesResponse, void>({\n path: `/api/v1/synthetic/negatives`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Uses constraint solving (backward chaining, CLP(FD), MCMC, forward chaining) to generate valid Ψ-terms, then converts them into multi-format training pairs for SLM fine-tuning. Supports 5 training pair formats: Extraction, QuestionAnswer, FillBlank, Negative, and MultiHop. # Authorization Requires X-Tenant-Id header for tenant-scoped generation.\n *\n * @tags synthetic\n * @name GenerateSynthetic\n * @summary Generate synthetic training data from the knowledge base.\n * @request POST:/api/v1/synthetic/generate\n * @secure\n */\n generateSynthetic = (\n data: GenerateSyntheticDataRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<GenerateSyntheticDataResponse, void>({\n path: `/api/v1/synthetic/generate`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Converts a PsiTerm into natural language text using the specified strategy. Useful for on-demand text generation from existing terms. # Authorization Requires X-Tenant-Id header for tenant-scoped operations.\n *\n * @tags synthetic\n * @name VerbalizeTerm\n * @summary Verbalize a single term from the knowledge base.\n * @request POST:/api/v1/synthetic/verbalize\n * @secure\n */\n verbalizeTerm = (data: VerbalizeTermRequest, params: RequestParams = {}) =>\n this.http.request<VerbalizeTermResponse, void>({\n path: `/api/v1/synthetic/verbalize`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Compares original entity features against extracted features to determine if the generated text faithfully represents the source Ψ-term. Uses exact string matching with configurable thresholds for score and recovery rate. # Authorization Requires X-Tenant-Id header for tenant-scoped operations.\n *\n * @tags synthetic\n * @name VerifyFaithfulness\n * @summary Verify faithfulness of generated text against source entities.\n * @request POST:/api/v1/synthetic/verify-faithfulness\n * @secure\n */\n verifyFaithfulness = (\n data: VerifyFaithfulnessRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<VerifyFaithfulnessResponse, void>({\n path: `/api/v1/synthetic/verify-faithfulness`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description Uses OSF-aware verification with Wu-Palmer sort similarity, feature-level comparison with type-aware value similarity, and Hungarian algorithm for optimal entity matching. # Authorization Requires X-Tenant-Id header for tenant-scoped operations.\n *\n * @tags synthetic\n * @name VerifyRoundTrip\n * @summary Verify round-trip faithfulness of extracted entities against ground truth.\n * @request POST:/api/v1/synthetic/verify-round-trip\n * @secure\n */\n verifyRoundTrip = (\n data: VerifyRoundTripRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<VerifyRoundTripResponse, void>({\n path: `/api/v1/synthetic/verify-round-trip`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n AssertRuleRequest,\n AssertRuleResponse,\n BacktrackTermStoreRequest,\n BacktrackTermStoreResponse,\n BindVariableRequest,\n BindVariableResponse,\n CreateRuleStoreRequest,\n CreateStoreTermRequest,\n CreateTermResponse,\n CreateTermStoreRequest,\n CreateVariableRequest,\n DereferenceRequest,\n DereferenceResponse,\n EvalBuiltinRequest,\n EvalBuiltinResponse,\n FindRulesRequest,\n FindRulesResponse,\n GetStoreTermRequest,\n GetStoreTermResponse,\n ListEvalFunctionsRequest,\n ListEvalFunctionsResponse,\n MarkRuleStoreRequest,\n MarkRuleStoreResponse,\n MarkTermStoreRequest,\n MarkTermStoreResponse,\n RetractRuleRequest,\n RetractRuleResponse,\n RuleStoreResponse,\n SetFeatureRequest,\n SetFeatureResponse,\n TermStoreSessionResponse,\n UndoRuleStoreRequest,\n UndoRuleStoreResponse,\n UnifyTermsRequest,\n UnifyTermsResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class ProofEngine<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags proof-engine\n * @name AssertRule\n * @summary Assert a rule\n * @request POST:/api/v1/proof-engine/rule-store/sessions/{store_id}/assert\n * @secure\n */\n assertRule = (\n storeId: string,\n data: AssertRuleRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<AssertRuleResponse, void>({\n path: `/api/v1/proof-engine/rule-store/sessions/${storeId}/assert`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name BacktrackTermStore\n * @summary Backtrack to a marker\n * @request POST:/api/v1/proof-engine/term-store/sessions/{session_id}/backtrack\n * @secure\n */\n backtrackTermStore = (\n sessionId: string,\n data: BacktrackTermStoreRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BacktrackTermStoreResponse, void>({\n path: `/api/v1/proof-engine/term-store/sessions/${sessionId}/backtrack`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name BindStoreVariable\n * @summary Bind a variable to a term\n * @request POST:/api/v1/proof-engine/term-store/sessions/{session_id}/bind\n * @secure\n */\n bindStoreVariable = (\n sessionId: string,\n data: BindVariableRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<BindVariableResponse, void>({\n path: `/api/v1/proof-engine/term-store/sessions/${sessionId}/bind`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name CreateRuleStoreSession\n * @summary Create a new rule store session\n * @request POST:/api/v1/proof-engine/rule-store/sessions\n * @secure\n */\n createRuleStoreSession = (\n data: CreateRuleStoreRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<RuleStoreResponse, void>({\n path: `/api/v1/proof-engine/rule-store/sessions`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name CreateStoreTerm\n * @summary Create a term in the term store\n * @request POST:/api/v1/proof-engine/term-store/sessions/{session_id}/terms\n * @secure\n */\n createStoreTerm = (\n sessionId: string,\n data: CreateStoreTermRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<CreateTermResponse, void>({\n path: `/api/v1/proof-engine/term-store/sessions/${sessionId}/terms`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name CreateStoreVariable\n * @summary Create a variable in the term store\n * @request POST:/api/v1/proof-engine/term-store/sessions/{session_id}/variables\n * @secure\n */\n createStoreVariable = (\n sessionId: string,\n data: CreateVariableRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<CreateTermResponse, void>({\n path: `/api/v1/proof-engine/term-store/sessions/${sessionId}/variables`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name CreateTermStoreSession\n * @summary Create a new term store session\n * @request POST:/api/v1/proof-engine/term-store/sessions\n * @secure\n */\n createTermStoreSession = (\n data: CreateTermStoreRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<TermStoreSessionResponse, void>({\n path: `/api/v1/proof-engine/term-store/sessions`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name DereferenceStoreTerm\n * @summary Dereference a term\n * @request POST:/api/v1/proof-engine/term-store/sessions/{session_id}/dereference\n * @secure\n */\n dereferenceStoreTerm = (\n sessionId: string,\n data: DereferenceRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<DereferenceResponse, void>({\n path: `/api/v1/proof-engine/term-store/sessions/${sessionId}/dereference`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name EvalBuiltin\n * @summary Evaluate a built-in function\n * @request POST:/api/v1/proof-engine/eval\n * @secure\n */\n evalBuiltin = (data: EvalBuiltinRequest, params: RequestParams = {}) =>\n this.http.request<EvalBuiltinResponse, void>({\n path: `/api/v1/proof-engine/eval`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name FindRules\n * @summary Find matching rules\n * @request POST:/api/v1/proof-engine/rule-store/sessions/{store_id}/find\n * @secure\n */\n findRules = (\n storeId: string,\n data: FindRulesRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<FindRulesResponse, void>({\n path: `/api/v1/proof-engine/rule-store/sessions/${storeId}/find`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name GetRuleStoreSession\n * @summary Get rule store status\n * @request GET:/api/v1/proof-engine/rule-store/sessions/{store_id}\n * @secure\n */\n getRuleStoreSession = (storeId: string, params: RequestParams = {}) =>\n this.http.request<RuleStoreResponse, void>({\n path: `/api/v1/proof-engine/rule-store/sessions/${storeId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name GetStoreTerm\n * @summary Get term details\n * @request POST:/api/v1/proof-engine/term-store/sessions/{session_id}/terms/get\n * @secure\n */\n getStoreTerm = (\n sessionId: string,\n data: GetStoreTermRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<GetStoreTermResponse, void>({\n path: `/api/v1/proof-engine/term-store/sessions/${sessionId}/terms/get`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name GetTermStoreSession\n * @summary Get term store session status\n * @request GET:/api/v1/proof-engine/term-store/sessions/{session_id}\n * @secure\n */\n getTermStoreSession = (sessionId: string, params: RequestParams = {}) =>\n this.http.request<TermStoreSessionResponse, void>({\n path: `/api/v1/proof-engine/term-store/sessions/${sessionId}`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name ListEvalFunctions\n * @summary List available eval functions\n * @request POST:/api/v1/proof-engine/eval/functions\n * @secure\n */\n listEvalFunctions = (\n data: ListEvalFunctionsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<ListEvalFunctionsResponse, void>({\n path: `/api/v1/proof-engine/eval/functions`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name MarkRuleStore\n * @summary Mark a rule store checkpoint\n * @request POST:/api/v1/proof-engine/rule-store/sessions/{store_id}/mark\n * @secure\n */\n markRuleStore = (\n storeId: string,\n data: MarkRuleStoreRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<MarkRuleStoreResponse, void>({\n path: `/api/v1/proof-engine/rule-store/sessions/${storeId}/mark`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name MarkTermStore\n * @summary Mark a choice point\n * @request POST:/api/v1/proof-engine/term-store/sessions/{session_id}/mark\n * @secure\n */\n markTermStore = (\n sessionId: string,\n data: MarkTermStoreRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<MarkTermStoreResponse, void>({\n path: `/api/v1/proof-engine/term-store/sessions/${sessionId}/mark`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * @description TRUE HOMOICONICITY: Uses TermStore's RuleIndex with trail support for backtracking.\n *\n * @tags proof-engine\n * @name RetractRule\n * @summary Retract rules by ID or pattern.\n * @request POST:/api/v1/proof-engine/rule-store/sessions/{store_id}/retract\n * @secure\n */\n retractRule = (\n storeId: string,\n data: RetractRuleRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<RetractRuleResponse, void>({\n path: `/api/v1/proof-engine/rule-store/sessions/${storeId}/retract`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name SetStoreFeature\n * @summary Set a feature on a term\n * @request POST:/api/v1/proof-engine/term-store/sessions/{session_id}/features\n * @secure\n */\n setStoreFeature = (\n sessionId: string,\n data: SetFeatureRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<SetFeatureResponse, void>({\n path: `/api/v1/proof-engine/term-store/sessions/${sessionId}/features`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name UndoRuleStore\n * @summary Undo to a rule store checkpoint\n * @request POST:/api/v1/proof-engine/rule-store/sessions/{store_id}/undo\n * @secure\n */\n undoRuleStore = (\n storeId: string,\n data: UndoRuleStoreRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<UndoRuleStoreResponse, void>({\n path: `/api/v1/proof-engine/rule-store/sessions/${storeId}/undo`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n /**\n * No description\n *\n * @tags proof-engine\n * @name UnifyStoreTerms\n * @summary Unify two terms\n * @request POST:/api/v1/proof-engine/term-store/sessions/{session_id}/unify\n * @secure\n */\n unifyStoreTerms = (\n sessionId: string,\n data: UnifyTermsRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<UnifyTermsResponse, void>({\n path: `/api/v1/proof-engine/term-store/sessions/${sessionId}/unify`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport { EnrichedHealthResponse } from \"./data-contracts\";\nimport { HttpClient, RequestParams } from \"./http-client\";\n\nexport class Health<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Returns overall status, individual component statuses, and build information. This replaces the legacy static `/health` with a comprehensive view.\n *\n * @tags health\n * @name HealthCheck\n * @summary Enriched health check endpoint\n * @request GET:/health\n */\n healthCheck = (params: RequestParams = {}) =>\n this.http.request<EnrichedHealthResponse, EnrichedHealthResponse>({\n path: `/health`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport { FactoryResetResponse, ListTenantsResponse } from \"./data-contracts\";\nimport { HttpClient, RequestParams } from \"./http-client\";\n\nexport class Admin<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Destructive operation that wipes all PostgreSQL tables, Qdrant vector collections, Valkey cache, and in-memory tenant inference states. Equivalent to docker volume rm. Use only for development/testing.\n *\n * @tags admin\n * @name ClearAllData\n * @summary Factory reset — wipe ALL data\n * @request POST:/api/v1/admin/clear-all\n */\n clearAllData = (params: RequestParams = {}) =>\n this.http.request<FactoryResetResponse, void>({\n path: `/api/v1/admin/clear-all`,\n method: \"POST\",\n format: \"json\",\n ...params,\n });\n /**\n * @description Returns all tenant IDs that have terms or ingestion sessions, with counts. No X-Tenant-Id header required. Works in both PostgreSQL and in-memory modes.\n *\n * @tags admin\n * @name ListTenants\n * @summary List all tenants with data\n * @request GET:/api/v1/admin/tenants\n */\n listTenants = (params: RequestParams = {}) =>\n this.http.request<ListTenantsResponse, any>({\n path: `/api/v1/admin/tenants`,\n method: \"GET\",\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport { ExtractImageRequest, ExtractImageResponse } from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class ImageExtraction<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description Sends the image directly to a vision-capable model (Qwen3-VL) for concept extraction. Returns extracted entities, relations, and suggested sorts. If `persist=true` (default), the extracted concepts are persisted as PsiTerms and synced to the homoiconic inference stores.\n *\n * @tags image-extraction\n * @name ExtractImage\n * @summary Extract concepts from an image using a vision LLM.\n * @request POST:/api/v1/extract/image\n * @secure\n */\n extractImage = (data: ExtractImageRequest, params: RequestParams = {}) =>\n this.http.request<ExtractImageResponse, void>({\n path: `/api/v1/extract/image`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n GenerateOntologyRequest,\n GenerateOntologyResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Ontology<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description # Errors - 503 if no LLM is configured - 422 if the LLM returns invalid JSON after retries - 502 if the LLM service fails\n *\n * @tags ontology\n * @name Generate\n * @summary Generate an OSFKB scenario from a natural language task description.\n * @request POST:/api/v1/ontology/generate\n * @secure\n */\n generate = (data: GenerateOntologyRequest, params: RequestParams = {}) =>\n this.http.request<GenerateOntologyResponse, void>({\n path: `/api/v1/ontology/generate`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n GenerateDocumentRequest,\n GenerateDocumentResponse,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Generation<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * No description\n *\n * @tags generation\n * @name GenerateDocument\n * @summary Runs the evidence-grounded generation pipeline for a given root term.\n * @request POST:/api/v1/generate\n * @secure\n */\n generateDocument = (\n data: GenerateDocumentRequest,\n params: RequestParams = {},\n ) =>\n this.http.request<GenerateDocumentResponse, void>({\n path: `/api/v1/generate`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport {\n OntologyRagRequestDto,\n OntologyRagResponseDto,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\nexport class Rag<SecurityDataType = unknown> {\n http: HttpClient<SecurityDataType>;\n\n constructor(http: HttpClient<SecurityDataType>) {\n this.http = http;\n }\n\n /**\n * @description POST /api/v1/rag/ontology Performs True Ontology RAG combining embedding search with OSF/LIFE feature unification: 1. Embedding search - find matching Ψ-terms via multilingual embeddings 2. Feature unification - navigate prerequisites/dependents via Ψ-term features 3. Emergent discovery - find relations via fuzzy feature unification This is a domain-agnostic API. The caller provides: - Feature names via `feature_config` (e.g., \"requires\", \"depends_on\") - Optional concept values and threshold for flagging (e.g., mastery scores) The caller is responsible for interpreting the results (coaching, medical, etc.)\n *\n * @tags rag\n * @name OntologyRag\n * @summary Generic Ontology RAG endpoint\n * @request POST:/api/v1/rag/ontology\n * @secure\n */\n ontologyRag = (data: OntologyRagRequestDto, params: RequestParams = {}) =>\n this.http.request<OntologyRagResponseDto, void>({\n path: `/api/v1/rag/ontology`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n format: \"json\",\n ...params,\n });\n}\n","import type { Sorts as GeneratedSorts } from '../api-spec/generated/Sorts.js';\nimport type { Types as GeneratedTypes } from '../api-spec/generated/Types.js';\nimport type {\n SortDto,\n SortInfoDto,\n CreateSortRequest,\n BulkCreateSortsRequest,\n BulkCreateSortsResponse,\n GlbRequest,\n GlbResponse,\n LubRequest,\n LubResponse,\n DecodeGlbResponse,\n SortCompareRequest,\n SortCompareResponse,\n UpdateReviewStatusRequest,\n GetSortSimilarityRequest,\n GetSortSimilarityResponse,\n SetSortSimilarityRequest,\n SetSortSimilarityResponse,\n BulkSetSimilaritiesRequest,\n BulkSetSimilaritiesResponse,\n GetPreorderDegreeRequest,\n GetPreorderDegreeResponse,\n GetEquivalenceClassesResponse,\n LearnSortSimilaritiesRequest,\n LearnSortSimilaritiesResponse,\n LearnedSimilarityListResponse,\n ApproveLearnedSimilarityRequest,\n ApproveLearnedSimilarityResponse,\n RejectLearnedSimilarityRequest,\n RejectLearnedSimilarityResponse,\n} from '../types/sorts.js';\n\n/**\n * Resource client for sort (type hierarchy) operations.\n *\n * @remarks\n * Sorts use the tagged {@link ValueDto} serialization format.\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class SortsClient {\n /** @internal */\n private readonly sorts: GeneratedSorts;\n /** @internal */\n private readonly types: GeneratedTypes;\n /** @internal */\n private readonly tenantId: string;\n\n /** @internal */\n constructor(sorts: GeneratedSorts, types: GeneratedTypes, tenantId: string) {\n this.sorts = sorts;\n this.types = types;\n this.tenantId = tenantId;\n }\n\n /**\n * Create a new sort.\n *\n * @param request - Sort creation parameters.\n * @returns The created sort.\n */\n async createSort(request: CreateSortRequest): Promise<SortDto> {\n const response = await this.sorts.addSort(request);\n return response.data.sort;\n }\n\n /**\n * Get a sort by ID.\n *\n * @param sortId - Sort UUID.\n * @returns The sort.\n */\n async getSort(sortId: string): Promise<SortDto> {\n const response = await this.sorts.getSort(sortId);\n return response.data.sort;\n }\n\n /**\n * Delete a sort by ID.\n *\n * @param sortId - Sort UUID.\n */\n async deleteSort(sortId: string): Promise<void> {\n await this.sorts.deleteSort(sortId);\n }\n\n /**\n * List all sorts.\n *\n * @returns Array of sorts.\n */\n async listSorts(): Promise<SortDto[]> {\n const response = await this.sorts.listSorts(this.tenantId);\n return response.data.sorts;\n }\n\n /**\n * Bulk-create sorts with name-based parent references.\n *\n * @param request - Bulk creation request with sort definitions.\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(request: BulkCreateSortsRequest): Promise<BulkCreateSortsResponse> {\n const response = await this.sorts.bulkCreateSorts(request);\n return response.data;\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 * @returns `true` if childId is a subtype of parentId.\n */\n async isSubtype(childId: string, parentId: string): Promise<boolean> {\n const response = await this.sorts.isSubtype(childId, parentId);\n return response.data.is_subtype;\n }\n\n /**\n * Compute the Greatest Lower Bound (GLB) of two sorts — the most specific type\n * shared by both sorts in the lattice.\n *\n * @param request - GLB request with two sort UUIDs.\n * @returns The GLB sort UUID, or null if no common lower bound exists.\n * @see findCommonSubtype\n */\n async computeGlb(request: GlbRequest): Promise<GlbResponse> {\n const response = await this.sorts.computeGlb(request);\n return response.data;\n }\n\n /**\n * Compute the Least Upper Bound (LUB) of two sorts — the most general type\n * that covers both sorts in the lattice.\n *\n * @param request - LUB request with two sort UUIDs.\n * @returns The LUB sort UUID, or null if no common upper bound exists.\n * @see findCommonSupertype\n */\n async computeLub(request: LubRequest): Promise<LubResponse> {\n const response = await this.sorts.computeLub(request);\n return response.data;\n }\n\n /**\n * Decode a GLB as a type disjunction.\n *\n * @param request - GLB request with two sort UUIDs.\n * @returns Human-readable type disjunction with constituent sorts.\n * @see explainCommonSubtype\n */\n async decodeGlb(request: GlbRequest): Promise<DecodeGlbResponse> {\n const response = await this.sorts.decodeGlb(request);\n return response.data;\n }\n\n /**\n * Find the most specific type shared by two types.\n * This is the Greatest Lower Bound (GLB) in the sort lattice.\n *\n * @param sortId1 - First sort identifier.\n * @param sortId2 - Second sort identifier.\n * @returns The most specific common subtype.\n * @see computeGlb\n */\n async findCommonSubtype(sortId1: string, sortId2: string): Promise<GlbResponse> {\n return this.computeGlb({ sort1_id: sortId1, sort2_id: sortId2 });\n }\n\n /**\n * Find the most general type that covers both types.\n * This is the Least Upper Bound (LUB) in the sort lattice.\n *\n * @param sortId1 - First sort identifier.\n * @param sortId2 - Second sort identifier.\n * @returns The most general common supertype.\n * @see computeLub\n */\n async findCommonSupertype(sortId1: string, sortId2: string): Promise<LubResponse> {\n return this.computeLub({ sort1_id: sortId1, sort2_id: sortId2 });\n }\n\n /**\n * Get a human-readable explanation of how two types relate.\n * This decodes the Greatest Lower Bound (GLB) showing type disjunction.\n *\n * @param sortId1 - First sort identifier.\n * @param sortId2 - Second sort identifier.\n * @returns The decoded GLB explanation.\n * @see decodeGlb\n */\n async explainCommonSubtype(sortId1: string, sortId2: string): Promise<DecodeGlbResponse> {\n return this.decodeGlb({ sort1_id: sortId1, sort2_id: sortId2 });\n }\n\n /**\n * Get direct children of a sort.\n *\n * @param sortId - Sort UUID.\n * @returns Array of child sorts.\n */\n async getChildren(sortId: string): Promise<SortInfoDto[]> {\n const response = await this.types.getSortChildren(sortId);\n return response.data.children;\n }\n\n /**\n * Get direct parents of a sort.\n *\n * @param sortId - Sort UUID.\n * @returns Array of parent sorts.\n */\n async getParents(sortId: string): Promise<SortInfoDto[]> {\n const response = await this.types.getSortParents(sortId);\n return response.data.parents;\n }\n\n /**\n * Get all ancestors of a sort (transitive parents).\n *\n * @param sortId - Sort UUID.\n * @returns Array of ancestor sorts.\n */\n async getAncestors(sortId: string): Promise<SortInfoDto[]> {\n const response = await this.types.getSortAncestors(sortId);\n return response.data.ancestors;\n }\n\n /**\n * Get all descendants of a sort (transitive children).\n *\n * @param sortId - Sort UUID.\n * @returns Array of descendant sorts.\n */\n async getDescendants(sortId: string): Promise<SortInfoDto[]> {\n const response = await this.types.getSortDescendants(sortId);\n return response.data.descendants;\n }\n\n /**\n * Get sorts compatible with a given sort.\n *\n * @param sortId - Sort UUID.\n * @returns Array of compatible sorts.\n */\n async getCompatible(sortId: string): Promise<SortDto[]> {\n const response = await this.sorts.getCompatibleSorts(sortId);\n return response.data.sorts;\n }\n\n /**\n * Compare two sorts using a comparison operator.\n *\n * @param request - Comparison request with operator and two sort references.\n * The `tenant_id` is auto-injected from the client configuration.\n * @returns Comparison result.\n */\n async compareSorts(request: Omit<SortCompareRequest, 'tenant_id'>): Promise<SortCompareResponse> {\n const response = await this.types.compareSorts({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n /**\n * Trigger re-indexing of the sort hierarchy.\n */\n async indexSorts(): Promise<void> {\n await this.sorts.indexSorts();\n }\n\n /**\n * Update the review status of a sort.\n *\n * @param sortId - Sort UUID.\n * @param request - New review status.\n */\n async updateReviewStatus(\n sortId: string,\n request: UpdateReviewStatusRequest,\n ): Promise<void> {\n await this.sorts.updateSortReview(sortId, request);\n }\n\n // --- Sort Similarity ---\n\n /**\n * Get the direct similarity degree between two sorts.\n *\n * @param request - Sort pair to query similarity for.\n * @returns The similarity response including sort IDs and degree.\n * @throws {@link ApiError} If the sorts do not exist.\n *\n * @remarks\n * Similarity is symmetric: sim(s1, s2) = sim(s2, s1).\n * Uses tagged serialization format.\n *\n * @example\n * ```typescript\n * const result = await client.sorts.getSortSimilarity({\n * sort1_id: 'uuid-1',\n * sort2_id: 'uuid-2',\n * });\n * console.log(result.degree); // 0.85\n * ```\n */\n async getSortSimilarity(\n request: GetSortSimilarityRequest,\n ): Promise<GetSortSimilarityResponse> {\n const response = await this.sorts.getSortSimilarity(request);\n return response.data;\n }\n\n /**\n * Set the similarity degree between two sorts.\n *\n * @param request - Sort pair and degree to set.\n * @returns The result of the set operation.\n * @throws {@link ApiError} If the sorts do not exist or the degree is out of range.\n *\n * @remarks\n * Similarity is symmetric: setting sim(s1, s2) also sets sim(s2, s1).\n * Degree must be in [0, 1] range.\n * Uses tagged serialization format.\n *\n * @example\n * ```typescript\n * const result = await client.sorts.setSortSimilarity({\n * sort1_id: 'uuid-1',\n * sort2_id: 'uuid-2',\n * degree: 0.85,\n * });\n * console.log(result.success); // true\n * ```\n */\n async setSortSimilarity(\n request: SetSortSimilarityRequest,\n ): Promise<SetSortSimilarityResponse> {\n const response = await this.sorts.setSortSimilarity(request);\n return response.data;\n }\n\n /**\n * Set multiple sort similarity relations in bulk.\n *\n * @param request - Bulk similarity entries to set.\n * @returns The result including count of similarities set.\n * @throws {@link ApiError} If any sort IDs are invalid.\n *\n * @remarks\n * Uses a single database persist for much faster performance than\n * individual {@link setSortSimilarity} calls.\n * Uses tagged serialization format.\n *\n * @example\n * ```typescript\n * const result = await client.sorts.bulkSetSimilarities({\n * similarities: [\n * { sort1_id: 'uuid-1', sort2_id: 'uuid-2', degree: 0.85 },\n * { sort1_id: 'uuid-3', sort2_id: 'uuid-4', degree: 0.70 },\n * ],\n * });\n * console.log(result.set_count); // 2\n * ```\n */\n async bulkSetSimilarities(\n request: BulkSetSimilaritiesRequest,\n ): Promise<BulkSetSimilaritiesResponse> {\n const response = await this.sorts.bulkSetSimilarities(request);\n return response.data;\n }\n\n /**\n * Compute the preorder degree between two sorts.\n *\n * @param request - Sort pair to compute preorder degree for.\n * @returns The preorder degree response including sort IDs and degree.\n * @throws {@link ApiError} If the sorts do not exist.\n *\n * @remarks\n * Per Definition IV.5 (Milanese and Pasi 2024), the combined preorder is:\n * `preorder_dot = ((similarity - subsumption) union subsumption)^+`\n *\n * Degree interpretation:\n * - 1.0 = subsumption (sort1 <= sort2)\n * - 0.0 < x < 1.0 = reachable via similarity-subsumption chain\n * - 0.0 = not reachable\n *\n * Uses tagged serialization format.\n *\n * @example\n * ```typescript\n * const result = await client.sorts.getPreorderDegree({\n * sort1_id: 'uuid-1',\n * sort2_id: 'uuid-2',\n * });\n * console.log(result.degree); // 0.72\n * ```\n */\n async getPreorderDegree(\n request: GetPreorderDegreeRequest,\n ): Promise<GetPreorderDegreeResponse> {\n const response = await this.sorts.getPreorderDegree(request);\n return response.data;\n }\n\n /**\n * Get equivalence classes based on the combined preorder.\n *\n * @returns Equivalence classes grouping sorts that are mutually reachable.\n * @throws {@link ApiError} If the lattice cannot be computed.\n *\n * @remarks\n * Per Definition IV.9 (Milanese and Pasi 2024):\n * s1 ~ s2 iff preorder_dot(s1, s2) > 0 AND preorder_dot(s2, s1) > 0.\n *\n * Uses tagged serialization format.\n *\n * @example\n * ```typescript\n * const result = await client.sorts.getEquivalenceClasses();\n * for (const ec of result.equivalence_classes) {\n * console.log(`Class of ${ec.size} sorts:`, ec.sort_ids);\n * }\n * ```\n */\n async getEquivalenceClasses(): Promise<GetEquivalenceClassesResponse> {\n const response = await this.sorts.getEquivalenceClasses();\n return response.data;\n }\n\n // --- Sort Similarity Learning ---\n\n /**\n * Learn sort similarities from effect features.\n *\n * @param request - Learning parameters.\n * @returns Learning result with count of similarities found.\n */\n async learnSimilarities(\n request: LearnSortSimilaritiesRequest,\n ): Promise<LearnSortSimilaritiesResponse> {\n const response = await this.sorts.learnSortSimilarities(request);\n return response.data;\n }\n\n /**\n * Get all learned similarities.\n *\n * @returns List of learned similarities with status counts.\n */\n async getLearnedSimilarities(): Promise<LearnedSimilarityListResponse> {\n const response = await this.sorts.listLearnedSimilarities();\n return response.data;\n }\n\n /**\n * Approve a learned similarity.\n *\n * @param request - Sort pair to approve.\n * @returns Approval result.\n */\n async approveSimilarity(\n request: ApproveLearnedSimilarityRequest,\n ): Promise<ApproveLearnedSimilarityResponse> {\n const response = await this.sorts.approveLearnedSimilarity(request);\n return response.data;\n }\n\n /**\n * Reject a learned similarity.\n *\n * @param request - Sort pair to reject with reason.\n * @returns Rejection result.\n */\n async rejectSimilarity(\n request: RejectLearnedSimilarityRequest,\n ): Promise<RejectLearnedSimilarityResponse> {\n const response = await this.sorts.rejectLearnedSimilarity(request);\n return response.data;\n }\n}\n","import type { Terms as GeneratedTerms } from '../api-spec/generated/Terms.js';\nimport { ApiError } from '../errors.js';\nimport type {\n TermResponse,\n CreateTermRequest,\n UpdateTermRequest,\n BulkAddTermsRequest,\n BulkAddTermsResponse,\n ClearTermsResponse,\n} from '../types/terms.js';\nimport type { TermListResponse } from '../types/query.js';\n\n/**\n * Resource client for record operations (create, read, update, delete typed records).\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 record satisfies its type\n * witnesses.\n *\n * Terms use the tagged {@link ValueDto} serialization format.\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class TermsClient {\n /** @internal */\n private readonly api: GeneratedTerms;\n\n /** @internal */\n constructor(api: GeneratedTerms) {\n this.api = api;\n }\n\n /**\n * Create a new record.\n *\n * @param request - Term creation parameters.\n * @returns The created term with validation state.\n */\n async createTerm(request: CreateTermRequest): Promise<TermResponse> {\n const response = await this.api.addTerm(request);\n return response.data;\n }\n\n /**\n * Get a term by ID.\n *\n * @param termId - Term UUID.\n * @returns The term with validation state.\n */\n async getTerm(termId: string): Promise<TermResponse> {\n const response = await this.api.getTerm(termId);\n return response.data;\n }\n\n /**\n * Update an existing term.\n *\n * @param termId - Term UUID.\n * @param request - Update parameters.\n * @returns The updated term with validation state.\n */\n async updateTerm(\n termId: string,\n request: UpdateTermRequest,\n ): Promise<TermResponse> {\n const response = await this.api.updateTerm(termId, request);\n return response.data;\n }\n\n /**\n * Delete a term by ID.\n *\n * @param termId - Term UUID.\n */\n async deleteTerm(termId: string): Promise<void> {\n await this.api.deleteTerm(termId);\n }\n\n /**\n * Check if a record exists.\n *\n * @param termId - Term UUID.\n * @returns `true` if the term exists, `false` if not found.\n * @throws {ApiError} If the request fails for reasons other than 404.\n */\n async termExists(termId: string): Promise<boolean> {\n try {\n await this.api.termExists(termId);\n return true;\n } catch (error) {\n if (error instanceof ApiError && error.status === 404) {\n return false;\n }\n throw error;\n }\n }\n\n /**\n * Bulk-create terms.\n *\n * @param request - Bulk creation request.\n * @returns Bulk creation result with term UUIDs.\n */\n async bulkCreateTerms(\n request: BulkAddTermsRequest,\n ): Promise<BulkAddTermsResponse> {\n const response = await this.api.bulkAddTerms(request);\n return response.data;\n }\n\n /**\n * List all terms for the authenticated tenant.\n *\n * @returns The list of terms with total count.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Terms are enriched with sort names, display names, and referenced term summaries.\n * Requires X-Tenant-Id header (set via client configuration).\n * Uses the tagged {@link ValueDto} serialization format.\n *\n * @example\n * ```typescript\n * const result = await client.terms.listTerms();\n * console.log(`Found ${result.count} terms`);\n * for (const term of result.terms) {\n * console.log(term.id, term.sort_name);\n * }\n * ```\n */\n async listTerms(): Promise<TermListResponse> {\n const response = await this.api.listTerms();\n return response.data;\n }\n\n /**\n * Clear all terms for the authenticated tenant.\n *\n * @returns Confirmation message and count of terms cleared.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Removes all terms (facts and rules) belonging to the tenant.\n * Clears both PostgreSQL persistence and in-memory stores, including the residuation store.\n * Requires X-Tenant-Id header (set via client configuration).\n *\n * @example\n * ```typescript\n * const result = await client.terms.clearTerms();\n * console.log(`${result.terms_cleared} terms cleared`);\n * ```\n */\n async clearTerms(): Promise<ClearTermsResponse> {\n const response = await this.api.clearTerms();\n return response.data;\n }\n}\n","import type { Inference as GeneratedInference } from '../api-spec/generated/Inference.js';\nimport type { PsiTermDto } from '../types/homoiconic.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 TaggedForwardChainRequest,\n TaggedForwardChainResponse,\n FuzzyProveRequest,\n FuzzyProveResponse,\n BulkFuzzyProveRequest,\n BulkFuzzyProveResponse,\n BayesianPredictRequest,\n BayesianPredictResponse,\n NafProveRequest,\n NafProveResponse,\n CreateGoalRequest,\n CreateGoalResponse,\n DeleteGoalResponse,\n ListGoalsResponse,\n MetaSortsResponse,\n} from '../types/inference.js';\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 *\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class InferenceClient {\n /** @internal */\n private readonly api: GeneratedInference;\n /** @internal */\n private readonly tenantId: string;\n\n /** @internal */\n constructor(api: GeneratedInference, tenantId: string) {\n this.api = api;\n this.tenantId = tenantId;\n }\n\n /**\n * Add an inference rule.\n *\n * @param request - Rule definition using TermInputDto.\n * @returns The created rule wrapped in an AddRuleResponse.\n */\n async addRule(request: AddRuleRequest): Promise<AddRuleResponse> {\n const response = await this.api.addRule(request);\n return response.data;\n }\n\n /**\n * Add a fact.\n *\n * @param request - Fact definition using TermInputDto.\n * @returns The created fact wrapped in an AddFactResponse.\n */\n async addFact(request: AddFactRequest): Promise<AddFactResponse> {\n const response = await this.api.addFact(request);\n return response.data;\n }\n\n /**\n * Bulk-add inference rules.\n *\n * @param request - Bulk rule definitions.\n * @returns Bulk creation result with rule_term_ids and rules_added count.\n */\n async bulkAddRules(\n request: BulkAddRulesRequest,\n ): Promise<BulkAddRulesResponse> {\n const response = await this.api.bulkAddRules(request);\n return response.data;\n }\n\n /**\n * Bulk-add facts.\n *\n * @param request - Bulk fact definitions.\n * @returns Bulk creation result with term_ids and facts_added count.\n */\n async bulkAddFacts(\n request: BulkAddFactsRequest,\n ): Promise<BulkAddFactsResponse> {\n const response = await this.api.bulkAddFacts(request);\n return response.data;\n }\n\n /**\n * Get all stored facts for the tenant.\n *\n * @returns Facts with count.\n */\n async getFacts(): Promise<GetFactsResponse> {\n const response = await this.api.getFacts(this.tenantId);\n return response.data;\n }\n\n /**\n * Clear all stored facts for the tenant.\n *\n * @returns Clear result with facts_cleared count.\n */\n async clearFacts(): Promise<ClearFactsResponse> {\n const response = await this.api.clearFacts(this.tenantId);\n return response.data;\n }\n\n /**\n * Query for matching data by searching rules and facts backwards from a goal pattern.\n *\n * @param request - Backward chaining request. Specify either `goal` (inline) or `goal_id` (saved), not both.\n * @returns Solutions found by searching backwards from the goal through rules and facts.\n *\n * @remarks\n * Backward chaining starts from a goal and works backwards through rules to find\n * which facts satisfy it. This is the primary query mechanism for inference.\n *\n * The `timeout_ms` field on the request is a wall-clock timeout for the search.\n * When it fires, the backend returns whatever solutions have been found so far.\n */\n async backwardChain(\n request: BackwardChainRequest,\n ): Promise<BackwardChainResponse> {\n const response = await this.api.backwardChain(request);\n return response.data;\n }\n\n /**\n * Derive new facts by applying all matching rules to existing facts repeatedly.\n *\n * @param request - Forward chaining request.\n * @returns Newly derived facts and statistics about the derivation process.\n *\n * @remarks\n * Forward chaining starts from existing facts and applies rules to derive new facts,\n * repeating until no more new facts can be derived (fixpoint) or limits are reached.\n *\n * If `persist_derived` is true, derived facts are permanently saved to the database.\n */\n async forwardChain(\n request: ForwardChainRequest,\n ): Promise<ForwardChainResponse> {\n const response = await this.api.forwardChain(request);\n return response.data;\n }\n\n /**\n * Run forward chaining with probabilistic provenance tags.\n *\n * @param request - Tagged forward chaining request with optional fact confidences.\n * @returns Derived facts with provenance confidence scores.\n *\n * @remarks\n * Each derived fact carries a confidence value computed from provenance semiring\n * operations (noisy-or for disjunction, product for conjunction).\n */\n async forwardChainTagged(\n request: TaggedForwardChainRequest,\n ): Promise<TaggedForwardChainResponse> {\n const response = await this.api.forwardChainTagged(request);\n return response.data;\n }\n\n /**\n * Run fuzzy proof search with truth degree propagation.\n *\n * @param request - Fuzzy prove request.\n * @returns Fuzzy solutions with truth degrees.\n */\n async fuzzyProve(\n request: FuzzyProveRequest,\n ): Promise<FuzzyProveResponse> {\n const response = await this.api.fuzzyProve(request);\n return response.data;\n }\n\n /**\n * Run bulk fuzzy inference with multiple goals in one request.\n *\n * @param request - Bulk fuzzy prove request with inline goals or goal IDs.\n * @returns Bulk fuzzy prove response with per-goal results.\n *\n * @remarks\n * Reduces latency via single HTTP round-trip, shared hierarchy, and rules across all goals.\n */\n async bulkFuzzyProve(\n request: BulkFuzzyProveRequest,\n ): Promise<BulkFuzzyProveResponse> {\n const response = await this.api.bulkFuzzyProve(request);\n return response.data;\n }\n\n /**\n * Run Bayesian prediction.\n *\n * @param request - Bayesian prediction request.\n * @returns Predictions with posterior probabilities.\n */\n async bayesianPredict(\n request: BayesianPredictRequest,\n ): Promise<BayesianPredictResponse> {\n const response = await this.api.bayesianPredict(request);\n return response.data;\n }\n\n /**\n * Run negation-as-failure (NAF) proof search.\n *\n * @param request - NAF prove request.\n * @returns NAF proof result.\n *\n * @see proveWithNegation — friendlier alias for this method.\n */\n async nafProve(request: NafProveRequest): Promise<NafProveResponse> {\n const response = await this.api.nafProve(request);\n return response.data;\n }\n\n /**\n * Prove a goal succeeds because no contrary evidence exists.\n * Uses Negation as Failure (NAF) — the goal is proven true if it cannot be disproven.\n * Alias for {@link nafProve}.\n *\n * @param request - NAF prove request.\n * @returns NAF proof result.\n *\n * @see nafProve\n */\n async proveWithNegation(request: NafProveRequest): Promise<NafProveResponse> {\n return this.nafProve(request);\n }\n\n /**\n * Create a saved goal for reuse in backward chaining.\n *\n * @param request - Goal creation request.\n * @returns The created goal with ID, PsiTerm, and clause/constraint counts.\n */\n async createGoal(\n request: CreateGoalRequest,\n ): Promise<CreateGoalResponse> {\n const response = await this.api.createGoal(request);\n return response.data;\n }\n\n /**\n * List all saved goals.\n *\n * @returns List of goals with summary information.\n */\n async listGoals(): Promise<ListGoalsResponse> {\n const response = await this.api.listGoals();\n return response.data;\n }\n\n /**\n * Get a saved goal by ID.\n *\n * @param goalId - Goal UUID.\n * @returns The goal as a PsiTermDto.\n */\n async getGoal(goalId: string): Promise<PsiTermDto> {\n const response = await this.api.getGoal(goalId);\n return response.data;\n }\n\n /**\n * Delete a saved goal.\n *\n * @param goalId - Goal UUID.\n * @returns Delete result confirming deletion.\n */\n async deleteGoal(goalId: string): Promise<DeleteGoalResponse> {\n const response = await this.api.deleteGoal(goalId);\n return response.data;\n }\n\n /**\n * Get meta-sorts used by the inference engine.\n *\n * @returns Meta-sorts information.\n */\n async getMetaSorts(): Promise<MetaSortsResponse> {\n const response = await this.api.getMetaSorts();\n return response.data;\n }\n}\n","import type { Query as GeneratedQuery } from '../api-spec/generated/Query.js';\nimport { ContentType } from '../api-spec/generated/http-client.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 ValidateTermRequest,\n ValidatedUnifyRequest,\n} from '../types/query.js';\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class QueryClient {\n /** @internal */\n private readonly api: GeneratedQuery;\n\n /** @internal */\n constructor(api: GeneratedQuery) {\n this.api = api;\n }\n\n /**\n * Find terms that unify with a given pattern.\n *\n * @param request - Unifiable query with term input.\n * @returns Array of matching terms (tagged ValueDto format).\n *\n * @see findMatching — friendlier alias for this method.\n */\n async findUnifiable(\n request: UnifiableQueryRequest,\n ): Promise<TermDto[]> {\n const response = await this.api.findUnifiable(request);\n return response.data.results;\n }\n\n /**\n * Find terms by sort.\n *\n * @param request - Query by sort request.\n * @returns Array of matching terms (tagged ValueDto format).\n */\n async findBySort(request: BySortQueryRequest): Promise<TermDto[]> {\n const response = await this.api.findBySort(request);\n return response.data.terms;\n }\n\n /**\n * Execute an Order-Sorted Feature search.\n *\n * @param request - OSF search request with pattern.\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 * @see search — friendlier alias for this method.\n */\n async osfSearch(\n request: OsfSearchRequest,\n ): Promise<OsfSearchResponse> {\n const response = await this.api.osfSearch(request);\n return response.data;\n }\n\n /**\n * Validate a term against its sort's type witnesses.\n *\n * @param request - Term validation request with sort_id and tagged features.\n * @returns Validation result with witness satisfaction status.\n *\n * @remarks\n * Uses tagged `ValueDto` format for features (same as term CRUD).\n */\n async validateTerm(\n request: ValidateTermRequest,\n ): Promise<ValidatedTermResponse> {\n const response = await this.api.validateTerm(request);\n return response.data;\n }\n\n /**\n * Perform validated unification of two terms.\n *\n * @param request - Validated unification request with two terms to unify.\n * @returns Unification result with GLB sort and witness validation.\n *\n * @remarks\n * Both terms use tagged `ValueDto` format for features (same as term CRUD).\n * The backend computes the GLB of the two sorts, unifies the terms,\n * and validates the result against the GLB sort's type witnesses.\n */\n async validatedUnify(\n request: ValidatedUnifyRequest,\n ): Promise<ValidatedUnifyResponse> {\n const response = await this.api.http.request<ValidatedUnifyResponse, void>({\n path: '/api/v1/query/validated-unify',\n method: 'POST',\n body: request,\n type: ContentType.Json,\n format: 'json',\n });\n return response.data;\n }\n\n /**\n * Execute a natural language query.\n *\n * @param request - Natural language query request.\n * @returns Interpreted query and results.\n */\n async nlQuery(request: NlQueryRequest): Promise<NlQueryResponse> {\n const response = await this.api.nlQuery(request);\n return response.data;\n }\n\n /**\n * Search for records matching a pattern with type-aware matching.\n * Alias for {@link osfSearch} using friendlier naming.\n *\n * @param request - OSF search request with pattern.\n * @returns Structured search results including entities, relations, and suspended query information.\n *\n * @see osfSearch\n */\n async search(request: OsfSearchRequest): Promise<OsfSearchResponse> {\n return this.osfSearch(request);\n }\n\n /**\n * Find all records that structurally match the given pattern.\n * Alias for {@link findUnifiable} using friendlier naming.\n *\n * @param request - Unifiable query with term input.\n * @returns Array of matching terms (tagged ValueDto format).\n *\n * @see findUnifiable\n */\n async findMatching(request: UnifiableQueryRequest): Promise<TermDto[]> {\n return this.findUnifiable(request);\n }\n}\n","import type { Cognitive as GeneratedCognitive } from '../api-spec/generated/Cognitive.js';\nimport type { CognitiveAgentsEpisodicMemory as GeneratedEpisodicMemory } from '../api-spec/generated/CognitiveAgentsEpisodicMemory.js';\nimport type { CognitiveAgentsHtn as GeneratedHtn } from '../api-spec/generated/CognitiveAgentsHtn.js';\nimport type { CognitiveAgentsMessaging as GeneratedMessaging } from '../api-spec/generated/CognitiveAgentsMessaging.js';\nimport type { CognitiveAgentsPlanLibrary as GeneratedPlanLibrary } from '../api-spec/generated/CognitiveAgentsPlanLibrary.js';\nimport type { WebSocketClient } from '../websocket.js';\nimport type {\n CreateAgentRequest,\n CreateAgentResponse,\n AgentStateDto,\n GetAgentStateRequest,\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 AdaptiveModifyRequest,\n AdaptiveModifyResponse,\n GetAgentDrivesRequest,\n MotivationStateDto,\n GetExtendedAgentStateRequest,\n ExtendedAgentStateDto,\n LearnFromCorrectionRequest,\n LearnFromCorrectionResponse,\n ReflectionQueryRequest,\n ReflectionQueryResponse,\n ProvideFeedbackRequest,\n ProvideFeedbackResponse,\n RunIntegratedCycleRequest,\n RunIntegratedCycleResponse,\n SubscribeToKbRequest,\n SubscribeToKbResponse,\n RecordEpisodeRequest,\n RecordEpisodeResponse,\n StorePlanRequest,\n StorePlanResponse,\n FindPlansRequest,\n FindPlansResponse,\n DeletePlanRequest,\n DeletePlanResponse,\n UpdatePlanStatsRequest,\n UpdatePlanStatsResponse,\n AgentEvent,\n AgentEventHandlers,\n AgentSubscription,\n} from '../types/cognitive.js';\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class CognitiveClient {\n /** @internal */\n private readonly api: GeneratedCognitive;\n /** @internal */\n private readonly episodicMemory: GeneratedEpisodicMemory;\n /** @internal */\n private readonly htn: GeneratedHtn;\n /** @internal */\n private readonly messaging: GeneratedMessaging;\n /** @internal */\n private readonly planLibrary: GeneratedPlanLibrary;\n /** @internal */\n private readonly ws: WebSocketClient | null;\n /** @internal */\n private readonly tenantId: string;\n\n /** @internal */\n constructor(\n api: GeneratedCognitive,\n episodicMemory: GeneratedEpisodicMemory,\n htn: GeneratedHtn,\n messaging: GeneratedMessaging,\n planLibrary: GeneratedPlanLibrary,\n tenantId: string,\n ws?: WebSocketClient | null,\n ) {\n this.api = api;\n this.episodicMemory = episodicMemory;\n this.htn = htn;\n this.messaging = messaging;\n this.planLibrary = planLibrary;\n this.tenantId = tenantId;\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 * @returns The created agent response.\n */\n async createAgent(\n request: Omit<CreateAgentRequest, 'tenant_id'>,\n ): Promise<CreateAgentResponse> {\n const response = await this.api.createAgent({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n /**\n * Get an agent's basic state.\n *\n * @param agentId - Agent UUID.\n * @returns The agent's basic state.\n *\n * @remarks\n * Uses a direct HTTP request fallback because this endpoint\n * is not present in the generated route class.\n */\n async getAgent(agentId: string): Promise<AgentStateDto> {\n const response = await this.api.http.request<AgentStateDto, void>({\n path: `/api/v1/cognitive/agents/${agentId}`,\n method: 'GET',\n format: 'json',\n });\n return response.data;\n }\n\n /**\n * Delete a cognitive agent.\n *\n * @param agentId - Agent UUID.\n *\n * @remarks\n * Uses a direct HTTP request fallback because this endpoint\n * is not present in the generated route class.\n */\n async deleteAgent(agentId: string): Promise<void> {\n await this.api.http.request<void, void>({\n path: `/api/v1/cognitive/agents/${agentId}`,\n method: 'DELETE',\n });\n }\n\n /**\n * Get an agent's state (BDI: beliefs, goals, pending status).\n *\n * @param request - Agent ID and tenant ID.\n * @returns The agent's state.\n *\n * @remarks\n * Uses POST with agent_id/tenant_id in the body (same pattern as other cognitive endpoints).\n */\n async getState(request: Omit<GetAgentStateRequest, 'tenant_id'>): Promise<AgentStateDto> {\n const response = await this.api.getAgentState({ ...request, tenant_id: this.tenantId });\n return response.data.agent;\n }\n\n /**\n * Get agent drives and motivation state.\n *\n * @param request - Agent ID and tenant ID.\n * @returns The agent's motivation state including drives, deficits, and curiosity targets.\n *\n * @remarks\n * Uses GET with agent_id as path parameter and tenant_id as query parameter.\n * Returns drives, deficits, curiosity targets, and the dominant drive.\n */\n async getAgentDrives(\n request: Omit<GetAgentDrivesRequest, 'tenant_id'>,\n ): Promise<MotivationStateDto> {\n const response = await this.api.getAgentDrives(request.agent_id, {\n tenant_id: this.tenantId,\n });\n return response.data;\n }\n\n /**\n * Get extended agent state including full cognitive state.\n *\n * @param request - Agent ID and tenant ID.\n * @returns The agent's extended state including beliefs, goals, intentions,\n * pending perceptions, activations, recent episodes, and rule utilities.\n *\n * @remarks\n * Uses GET with agent_id as path parameter and tenant_id as query parameter.\n */\n async getExtendedAgentState(\n request: Omit<GetExtendedAgentStateRequest, 'tenant_id'>,\n ): Promise<ExtendedAgentStateDto> {\n const response = await this.api.getExtendedAgentState(request.agent_id, {\n tenant_id: this.tenantId,\n });\n return response.data.agent;\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 * @returns The cycle outcome.\n */\n async runCycle(request: Omit<RunCycleRequest, 'tenant_id'>): Promise<RunCycleResponse> {\n const response = await this.api.runCycle({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n // --- Beliefs ---\n\n /**\n * Add a belief to an agent.\n *\n * @param request - Belief to add.\n * @returns The created belief response.\n */\n async addBelief(\n request: Omit<AddBeliefRequest, 'tenant_id'>,\n ): Promise<AddBeliefResponse> {\n const response = await this.api.addBelief({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n // --- Goals ---\n\n /**\n * Add a goal to an agent.\n *\n * @param request - Goal to add.\n * @returns The created goal response.\n */\n async addGoal(request: Omit<AddGoalRequest, 'tenant_id'>): Promise<AddGoalResponse> {\n const response = await this.api.addGoal({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n // --- Cognitive Registry ---\n\n /**\n * Add a rule to the cognitive registry.\n *\n * @param request - Rule definition.\n * @returns The created rule response.\n */\n async addRule(\n request: Omit<AddCognitiveRuleRequest, 'tenant_id'>,\n ): Promise<AddCognitiveRuleResponse> {\n const response = await this.api.addCognitiveRule({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n /**\n * Add a sort to the cognitive registry.\n *\n * @param request - Sort definition.\n * @returns The created sort response.\n */\n async addSort(\n request: Omit<CreateCognitiveSortRequest, 'tenant_id'>,\n ): Promise<CreateCognitiveSortResponse> {\n const response = await this.api.createCognitiveSort({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n // --- Adaptive Modification ---\n\n /**\n * Adaptively modify agent rules during inference.\n *\n * @param request - Modification request with action (\"assert\" or \"retract\") and term.\n * @returns The modification result including success status and modified term ID.\n *\n * @remarks\n * Demonstrates true homoiconicity: rules can be asserted or retracted during\n * inference, not just at API boundaries. Uses POST to `/api/v1/cognitive/agents/adapt`.\n */\n async adaptiveModify(\n request: Omit<AdaptiveModifyRequest, 'tenant_id'>,\n ): Promise<AdaptiveModifyResponse> {\n const response = await this.api.adaptiveModify({ ...request, tenant_id: this.tenantId });\n return response.data;\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 * @returns Recalled episodes sorted by similarity/recency.\n */\n async recallEpisodes(\n request: Omit<RecallEpisodesRequest, 'tenant_id'>,\n ): Promise<RecallEpisodesResponse> {\n const response = await this.episodicMemory.recallEpisodes({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n /**\n * Get episode statistics for an agent.\n *\n * @param request - Episode stats request with agent and tenant IDs.\n * @returns Episode statistics.\n *\n * @remarks\n * The generated endpoint uses POST with a request body (agent_id, tenant_id),\n * unlike the original SDK which used GET with a path parameter.\n */\n async getEpisodeStats(\n request: { agent_id: string },\n ): Promise<EpisodeStatsResponse> {\n const response = await this.episodicMemory.getEpisodeStats({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n // --- HTN Planning ---\n\n /**\n * Add an HTN method to an agent.\n *\n * @param request - HTN method definition.\n * @returns The created method response.\n */\n async addHtnMethod(\n request: Omit<AddHtnMethodRequest, 'tenant_id'>,\n ): Promise<AddHtnMethodResponse> {\n const response = await this.htn.addHtnMethod({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n // --- Messaging ---\n\n /**\n * Send a message to another agent.\n *\n * @param request - Message to send.\n * @returns The send result.\n */\n async sendMessage(\n request: Omit<SendMessageRequest, 'tenant_id'>,\n ): Promise<SendMessageResponse> {\n const response = await this.messaging.sendMessage({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n /**\n * Broadcast a message to all agents.\n *\n * @param request - Message to broadcast.\n * @returns The broadcast result.\n */\n async broadcastMessage(\n request: Omit<BroadcastMessageRequest, 'tenant_id'>,\n ): Promise<BroadcastMessageResponse> {\n const response = await this.messaging.broadcastMessage({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n /**\n * Mark messages as read.\n *\n * @param request - Messages to mark as read.\n * @returns The result.\n */\n async markMessagesRead(\n request: Omit<MarkMessagesReadRequest, 'tenant_id'>,\n ): Promise<MarkMessagesReadResponse> {\n const response = await this.messaging.markMessagesRead({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n // --- Feedback ---\n\n /**\n * Provide feedback on an agent result.\n *\n * @param request - Feedback to provide.\n * @returns The feedback result.\n */\n async provideFeedback(\n request: Omit<ProvideFeedbackRequest, 'tenant_id'>,\n ): Promise<ProvideFeedbackResponse> {\n const response = await this.api.provideFeedback({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n /**\n * Learn from a user correction with an explicit pattern.\n *\n * @param request - Correction request with result ID and correct pattern.\n * @returns The learning result including correction ID, learning event, and any new rules.\n *\n * @remarks\n * Unlike `provideFeedback` which accepts natural language corrections, this endpoint\n * accepts a structured correction pattern directly as Psi-term features.\n * Uses POST to `/api/v1/cognitive/learn_correction`.\n */\n async learnFromCorrection(\n request: Omit<LearnFromCorrectionRequest, 'tenant_id'>,\n ): Promise<LearnFromCorrectionResponse> {\n const response = await this.api.learnFromCorrection({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n /**\n * Query an agent's own rules via self-reflection.\n *\n * @param request - Reflection query with agent ID and query string.\n * @returns Matching rules/facts and count.\n *\n * @remarks\n * Demonstrates true homoiconicity: the agent can reason about its own\n * inference rules using the same unification-based query mechanism.\n * Uses POST to `/api/v1/cognitive/agents/reflect`.\n */\n async reflectionQuery(\n request: Omit<ReflectionQueryRequest, 'tenant_id'>,\n ): Promise<ReflectionQueryResponse> {\n const response = await this.api.reflectionQuery({ ...request, tenant_id: this.tenantId });\n return response.data;\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 * @returns The integrated cycle outcome with duration.\n */\n async integratedCycle(\n request: Omit<RunIntegratedCycleRequest, 'tenant_id'>,\n ): Promise<RunIntegratedCycleResponse> {\n const response = await this.api.runIntegratedCycle({ ...request, tenant_id: this.tenantId });\n return response.data;\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 * @returns Subscription ID.\n */\n async subscribeToKb(\n request: Omit<SubscribeToKbRequest, 'tenant_id'>,\n ): Promise<SubscribeToKbResponse> {\n const response = await this.api.subscribeToKb({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n // --- Episode Recording ---\n\n /**\n * Record an episodic memory entry for an agent.\n *\n * @param request - Episode to record.\n * @returns The created episode ID.\n */\n async recordEpisode(\n request: Omit<RecordEpisodeRequest, 'tenant_id'>,\n ): Promise<RecordEpisodeResponse> {\n const response = await this.episodicMemory.recordEpisode({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n // --- Plan Library ---\n\n /**\n * Store a plan in the library.\n *\n * @param request - Plan storage request with agent, goal, and action sequence.\n * @returns The stored plan ID and message.\n *\n * @remarks\n * Stores a successful action sequence as a reusable plan template.\n */\n async storePlan(\n request: Omit<StorePlanRequest, 'tenant_id'>,\n ): Promise<StorePlanResponse> {\n const response = await this.planLibrary.storePlan({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n /**\n * Find matching plans for a goal.\n *\n * @param request - Plan search request with agent, goal, and filtering options.\n * @returns Matching plans sorted by score.\n *\n * @remarks\n * Searches the plan library for plans that match the given goal.\n */\n async findPlans(\n request: Omit<FindPlansRequest, 'tenant_id'>,\n ): Promise<FindPlansResponse> {\n const response = await this.planLibrary.findPlans({ ...request, tenant_id: this.tenantId });\n return response.data;\n }\n\n /**\n * Delete a plan from the library.\n *\n * @param request - Plan deletion request with plan ID and tenant ID.\n * @returns Whether the plan was deleted.\n */\n async deletePlan(\n request: Omit<DeletePlanRequest, 'tenant_id'>,\n ): Promise<DeletePlanResponse> {\n const response = await this.planLibrary.deletePlan(request.plan_id, {\n tenant_id: this.tenantId,\n });\n return response.data;\n }\n\n /**\n * Update plan statistics after execution.\n *\n * @param request - Stats update request with plan ID and success outcome.\n * @returns Updated success rate and use count.\n */\n async updatePlanStats(\n request: Omit<UpdatePlanStatsRequest, 'tenant_id'>,\n ): Promise<UpdatePlanStatsResponse> {\n const response = await this.planLibrary.updatePlanStats({ ...request, tenant_id: this.tenantId });\n return response.data;\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(`/api/v1/cognitive/agents/${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","import type { Fuzzy as GeneratedFuzzy } from '../api-spec/generated/Fuzzy.js';\nimport { ContentType } from '../api-spec/generated/http-client.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\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class FuzzyClient {\n /** @internal */\n private readonly api: GeneratedFuzzy;\n\n /** @internal */\n constructor(api: GeneratedFuzzy) {\n this.api = api;\n }\n\n /**\n * Fuzzy unify two terms.\n *\n * @param request - Unification request with two term IDs and threshold.\n * @returns Unification degree, confidence, and unified term.\n * @see compareSimilarity\n */\n async fuzzyUnify(\n request: FuzzyUnifyRequest,\n ): Promise<FuzzyUnifyResponse> {\n const response = await this.api.fuzzyUnify(request);\n return response.data;\n }\n\n /**\n * Compare two records and compute their similarity score.\n * Alias for {@link fuzzyUnify} using friendlier naming.\n *\n * @param term1Id - First record identifier.\n * @param term2Id - Second record identifier.\n * @param options - Optional similarity parameters (threshold, mode).\n * @returns Similarity comparison result.\n * @see fuzzyUnify\n */\n async compareSimilarity(\n term1Id: string,\n term2Id: string,\n options?: Partial<Omit<FuzzyUnifyRequest, 'term1_id' | 'term2_id'>>,\n ): Promise<FuzzyUnifyResponse> {\n return this.fuzzyUnify({\n term1_id: term1Id,\n term2_id: term2Id,\n ...options,\n });\n }\n\n /**\n * Fuzzy merge two terms.\n *\n * @param request - Merge request with two term IDs and strategy.\n * @returns Merge result with computation time and feature count.\n */\n async fuzzyMerge(\n request: FuzzyMergeRequest,\n ): Promise<FuzzyMergeResponse> {\n const response = await this.api.http.request<FuzzyMergeResponse, void>({\n path: '/api/v1/fuzzy/merge',\n method: 'POST',\n body: request,\n type: ContentType.Json,\n format: 'json',\n });\n return response.data;\n }\n\n /**\n * Check fuzzy subsumption between two terms.\n *\n * @param request - Subsumption request with general and specific term IDs.\n * @returns Subsumption degree and whether the relationship holds.\n */\n async fuzzySubsumption(\n request: FuzzySubsumptionRequest,\n ): Promise<FuzzySubsumptionResponse> {\n const response = await this.api.http.request<FuzzySubsumptionResponse, void>({\n path: '/api/v1/fuzzy/subsumption',\n method: 'POST',\n body: request,\n type: ContentType.Json,\n format: 'json',\n });\n return response.data;\n }\n\n /**\n * Search for top-K most similar terms.\n *\n * @param request - Search request with query term and K.\n * @returns Top-K results sorted by similarity degree.\n */\n async searchTopK(\n request: FuzzySearchTopKRequest,\n ): Promise<FuzzySearchTopKResponse> {\n const response = await this.api.http.request<FuzzySearchTopKResponse, void>({\n path: '/api/v1/fuzzy/top-k',\n method: 'POST',\n body: request,\n type: ContentType.Json,\n format: 'json',\n });\n return response.data;\n }\n\n /**\n * Predict the effect for a query point.\n *\n * @param request - Effect prediction request.\n * @returns Predicted effect with confidence and proof trace.\n */\n async predictEffect(\n request: PredictEffectRequest,\n ): Promise<PredictEffectResponse> {\n const response = await this.api.http.request<PredictEffectResponse, void>({\n path: '/api/v1/fuzzy/predict-effect',\n method: 'POST',\n body: request,\n type: ContentType.Json,\n format: 'json',\n });\n return response.data;\n }\n}\n","import type { Constraints as GeneratedConstraints } from '../api-spec/generated/Constraints.js';\nimport { ContentType } from '../api-spec/generated/http-client.js';\nimport type {\n SolveConstraintRequest,\n SolveConstraintResponse,\n ConstraintGraphRequest,\n ConstraintGraphResponse,\n CreateConstraintSessionRequest,\n CreateConstraintSessionResponse,\n ConstraintSessionStatus,\n AddConstraintsRequest,\n AddConstraintsResponse,\n BindVariablesRequest,\n BindVariablesResponse,\n CleanupSessionsResponse,\n} from '../types/constraints.js';\n\n/**\n * Resource client for constraint operations.\n *\n * @remarks\n * Provides arithmetic constraint solving, constraint graph visualization,\n * and incremental constraint session management.\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class ConstraintsClient {\n /** @internal */\n private readonly api: GeneratedConstraints;\n\n /** @internal */\n constructor(api: GeneratedConstraints) {\n this.api = api;\n }\n\n /**\n * Solve arithmetic constraints.\n *\n * @param request - Constraints to solve with optional initial bindings.\n * @returns Solver result with variable bindings.\n */\n async solve(\n request: SolveConstraintRequest,\n ): Promise<SolveConstraintResponse> {\n const response = await this.api.solveConstraints(request);\n return response.data;\n }\n\n /**\n * Get constraint graph visualization.\n *\n * @param request - Graph request with optional focus term and flags.\n * @returns Constraint graph with statistics and optional cycle/FD domain data.\n */\n async getGraph(\n request: ConstraintGraphRequest,\n ): Promise<ConstraintGraphResponse> {\n const response = await this.api.http.request<ConstraintGraphResponse, void>({\n path: '/api/v1/constraints/graph',\n method: 'POST',\n body: request,\n type: ContentType.Json,\n format: 'json',\n });\n return response.data;\n }\n\n // --- Session Management ---\n\n /**\n * Create a constraint session.\n *\n * @param request - Session creation parameters (name, description, metadata).\n * @returns Session creation response with session_id, created_at, and status.\n */\n async createSession(\n request: CreateConstraintSessionRequest,\n ): Promise<CreateConstraintSessionResponse> {\n const response = await this.api.createSession(request);\n return response.data;\n }\n\n /**\n * Get a constraint session by ID.\n *\n * @param sessionId - Session ID.\n * @returns Full session status with constraint counts, bindings, and satisfaction state.\n */\n async getSession(sessionId: string): Promise<ConstraintSessionStatus> {\n const response = await this.api.getSessionStatus(sessionId);\n return response.data;\n }\n\n /**\n * Add constraints to a session.\n *\n * @param sessionId - Session ID.\n * @param request - Constraints to add.\n * @returns Result with counts of added/satisfied/suspended constraints.\n */\n async addConstraints(\n sessionId: string,\n request: AddConstraintsRequest,\n ): Promise<AddConstraintsResponse> {\n const response = await this.api.addConstraints(sessionId, request);\n return response.data;\n }\n\n /**\n * Bind variables in a constraint session.\n *\n * @param sessionId - Session ID.\n * @param request - Variable bindings.\n * @returns Binding result with updated satisfaction state.\n */\n async bindVariables(\n sessionId: string,\n request: BindVariablesRequest,\n ): Promise<BindVariablesResponse> {\n const response = await this.api.bindVariables(sessionId, request);\n return response.data;\n }\n\n /**\n * Clean up old constraint sessions.\n *\n * @remarks\n * Should be called periodically to remove stale sessions.\n * Calls `POST /api/v1/constraint-sessions/cleanup`.\n *\n * @returns Cleanup result with the number of sessions removed.\n * @throws {@link ApiError} if the backend returns an error response.\n *\n * @example\n * ```ts\n * const result = await client.constraints.cleanupOldSessions();\n * console.log(`Removed ${result.removed} old sessions`);\n * ```\n */\n async cleanupOldSessions(): Promise<CleanupSessionsResponse> {\n const response = await this.api.cleanupOldSessions();\n return response.data;\n }\n\n /**\n * List all active constraint sessions.\n *\n * @remarks\n * Intended for debugging and administration.\n * Calls `GET /api/v1/constraint-sessions`.\n *\n * @returns Array of session status objects for all active sessions.\n * @throws {@link ApiError} if the backend returns an error response.\n *\n * @example\n * ```ts\n * const sessions = await client.constraints.listSessions();\n * for (const session of sessions) {\n * console.log(`${session.session_id}: ${session.status}`);\n * }\n * ```\n */\n async listSessions(): Promise<ConstraintSessionStatus[]> {\n const response = await this.api.listSessions();\n return response.data;\n }\n}\n","import type { Namespaces as GeneratedNamespaces } from '../api-spec/generated/Namespaces.js';\nimport type {\n CreateRootNamespaceRequest,\n CreateChildNamespaceRequest,\n AddImportRequest,\n AddExportRequest,\n UpdateMetadataRequest,\n UpdateVisibilityRequest,\n NamespaceDto,\n NamespaceListResponse,\n} from '../types/namespaces.js';\n\n/**\n * Resource client for namespace operations.\n *\n * @remarks\n * Provides CRUD operations for namespaces, import management,\n * and metadata updates. Backend responses are wrapped in\n * `{ namespace: ... }` or `{ namespaces: [...], count }`;\n * this client unwraps them automatically.\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class NamespacesClient {\n /** @internal */\n private readonly api: GeneratedNamespaces;\n /** @internal */\n private readonly tenantId: string;\n\n /** @internal */\n constructor(api: GeneratedNamespaces, tenantId: string) {\n this.api = api;\n this.tenantId = tenantId;\n }\n\n /**\n * Create a root namespace.\n *\n * @param request - Root namespace creation parameters.\n * @returns The created namespace (unwrapped from response wrapper).\n */\n async createRoot(request: CreateRootNamespaceRequest): Promise<NamespaceDto> {\n const response = await this.api.createRootNamespace(request);\n return response.data.namespace;\n }\n\n /**\n * Create a child namespace.\n *\n * @param request - Child namespace creation parameters (path, visibility).\n * @returns The created namespace (unwrapped from response wrapper).\n *\n * @remarks\n * The parent is inferred from the `path` field (e.g., \"parent.child\").\n */\n async createChild(request: CreateChildNamespaceRequest): Promise<NamespaceDto> {\n const response = await this.api.createChildNamespace(request);\n return response.data.namespace;\n }\n\n /**\n * Get a namespace by ID.\n *\n * @param namespaceId - Namespace UUID.\n * @returns The namespace (unwrapped from response wrapper).\n */\n async get(namespaceId: string): Promise<NamespaceDto> {\n const response = await this.api.getNamespace(namespaceId);\n return response.data.namespace;\n }\n\n /**\n * Delete a namespace.\n *\n * @param namespaceId - Namespace UUID.\n */\n async delete(namespaceId: string): Promise<void> {\n await this.api.deleteNamespace(namespaceId);\n }\n\n /**\n * List all namespaces for the configured tenant.\n *\n * @returns Namespace list with count.\n */\n async list(): Promise<NamespaceListResponse> {\n const response = await this.api.listNamespaces(this.tenantId);\n return response.data;\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 */\n async addImport(\n namespaceId: string,\n request: AddImportRequest,\n ): Promise<void> {\n await this.api.addNamespaceImport(namespaceId, request);\n }\n\n /**\n * Update namespace metadata.\n *\n * @param namespaceId - Namespace UUID.\n * @param request - Metadata update request.\n */\n async updateMetadata(\n namespaceId: string,\n request: UpdateMetadataRequest,\n ): Promise<void> {\n await this.api.updateNamespaceMetadata(namespaceId, request);\n }\n\n /**\n * Add an export to a namespace.\n *\n * @param namespaceId - Namespace UUID.\n * @param request - Export request with symbol name.\n *\n * @throws {@link ApiError} If the namespace is not found or the export is invalid.\n *\n * @remarks\n * Calls `POST /api/v1/namespaces/{id}/exports`.\n *\n * @example\n * ```ts\n * await client.namespaces.addExport(namespaceId, { symbol: \"my_symbol\" });\n * ```\n */\n async addExport(\n namespaceId: string,\n request: AddExportRequest,\n ): Promise<void> {\n await this.api.addNamespaceExport(namespaceId, request);\n }\n\n /**\n * Get ancestors of a namespace (from root to parent).\n *\n * @param namespaceId - Namespace UUID.\n * @returns Namespace list with count, ordered from root to parent.\n *\n * @throws {@link ApiError} If the namespace is not found.\n *\n * @remarks\n * Calls `GET /api/v1/namespaces/{id}/ancestors`.\n *\n * @example\n * ```ts\n * const ancestors = await client.namespaces.getAncestors(namespaceId);\n * console.log(ancestors.namespaces); // root -> ... -> parent\n * ```\n */\n async getAncestors(namespaceId: string): Promise<NamespaceListResponse> {\n const response = await this.api.getNamespaceAncestors(namespaceId);\n return response.data;\n }\n\n /**\n * Get a namespace by path.\n *\n * @param tenantId - Tenant UUID.\n * @param path - Dot-separated namespace path (e.g., \"acme.engineering\").\n * @returns The namespace (unwrapped from response wrapper).\n *\n * @throws {@link ApiError} If the namespace is not found.\n *\n * @remarks\n * Calls `GET /api/v1/namespaces/path/{tenant_id}/{path}`.\n *\n * @example\n * ```ts\n * const ns = await client.namespaces.getByPath(tenantId, \"acme.engineering\");\n * console.log(ns.name);\n * ```\n */\n async getByPath(tenantId: string, path: string): Promise<NamespaceDto> {\n const response = await this.api.getNamespaceByPath(tenantId, path);\n return response.data.namespace;\n }\n\n /**\n * Get children of a namespace.\n *\n * @param namespaceId - Namespace UUID.\n * @returns Namespace list with count of direct children.\n *\n * @throws {@link ApiError} If the namespace is not found.\n *\n * @remarks\n * Calls `GET /api/v1/namespaces/{id}/children`.\n *\n * @example\n * ```ts\n * const children = await client.namespaces.getChildren(namespaceId);\n * console.log(children.count);\n * ```\n */\n async getChildren(namespaceId: string): Promise<NamespaceListResponse> {\n const response = await this.api.getNamespaceChildren(namespaceId);\n return response.data;\n }\n\n /**\n * Update namespace visibility.\n *\n * @param namespaceId - Namespace UUID.\n * @param request - Visibility update request.\n *\n * @throws {@link ApiError} If the namespace is not found.\n *\n * @remarks\n * Calls `PUT /api/v1/namespaces/{id}/visibility`.\n *\n * @example\n * ```ts\n * await client.namespaces.updateVisibility(namespaceId, { visibility: \"public\" });\n * ```\n */\n async updateVisibility(\n namespaceId: string,\n request: UpdateVisibilityRequest,\n ): Promise<void> {\n await this.api.updateNamespaceVisibility(namespaceId, request);\n }\n}\n","import type { Collections as GeneratedCollections } from '../api-spec/generated/Collections.js';\nimport type {\n CreateCollectionRequest,\n UpdateCollectionRequest,\n CollectionDto,\n} from '../types/collections.js';\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class CollectionsClient {\n /** @internal */\n private readonly api: GeneratedCollections;\n\n /** @internal */\n constructor(api: GeneratedCollections) {\n this.api = api;\n }\n\n /**\n * Create a collection.\n *\n * @param request - Collection creation parameters.\n * @returns The created collection.\n */\n async create(request: CreateCollectionRequest): Promise<CollectionDto> {\n const response = await this.api.createCollection(request);\n return response.data.collection;\n }\n\n /**\n * Get a collection by ID.\n *\n * @param collectionId - Collection UUID.\n * @returns The collection.\n */\n async get(collectionId: string): Promise<CollectionDto> {\n const response = await this.api.getCollection(collectionId);\n return response.data.collection;\n }\n\n /**\n * Update a collection.\n *\n * @param collectionId - Collection UUID.\n * @param request - Update parameters.\n */\n async update(\n collectionId: string,\n request: UpdateCollectionRequest,\n ): Promise<void> {\n await this.api.updateCollection(collectionId, request);\n }\n\n /**\n * Delete a collection.\n *\n * @param collectionId - Collection UUID.\n */\n async delete(collectionId: string): Promise<void> {\n await this.api.deleteCollection(collectionId);\n }\n\n /**\n * List all collections in a namespace.\n *\n * @param namespaceId - Namespace UUID.\n * @returns Array of collections.\n */\n async list(namespaceId: string): Promise<CollectionDto[]> {\n const response = await this.api.listCollections(namespaceId);\n return response.data.collections;\n }\n\n /**\n * Get ancestors of a collection.\n *\n * @param collectionId - Collection UUID.\n * @returns Array of ancestor collections.\n */\n async getAncestors(collectionId: string): Promise<CollectionDto[]> {\n const response = await this.api.getCollectionAncestors(collectionId);\n return response.data.collections;\n }\n\n /**\n * Get a collection by path within a namespace.\n *\n * @param namespaceId - Namespace UUID.\n * @param path - Collection path.\n * @returns The collection.\n */\n async getByPath(namespaceId: string, path: string): Promise<CollectionDto> {\n const response = await this.api.getCollectionByPath(namespaceId, path);\n return response.data.collection;\n }\n\n /**\n * Get children of a collection.\n *\n * @param collectionId - Collection UUID.\n * @returns Array of child collections.\n */\n async getChildren(collectionId: string): Promise<CollectionDto[]> {\n const response = await this.api.getCollectionChildren(collectionId);\n return response.data.collections;\n }\n\n /**\n * Get all descendants of a collection.\n *\n * @param collectionId - Collection UUID.\n * @returns Array of descendant collections.\n */\n async getDescendants(collectionId: string): Promise<CollectionDto[]> {\n const response = await this.api.getCollectionDescendants(collectionId);\n return response.data.collections;\n }\n\n /**\n * Get root collections in a namespace.\n *\n * @param namespaceId - Namespace UUID.\n * @returns Array of root collections.\n */\n async getRootCollections(namespaceId: string): Promise<CollectionDto[]> {\n const response = await this.api.getRootCollections(namespaceId);\n return response.data.collections;\n }\n\n /**\n * Query terms by collection path prefix.\n *\n * @param request - Query request with path prefix and options.\n * @returns Query result.\n */\n async queryTermsByPath(request: {\n namespace_id: string;\n path_prefix: string;\n include_descendants: boolean;\n }): Promise<unknown> {\n const response = await this.api.queryTermsByCollectionPath(request);\n return response.data;\n }\n\n /**\n * Query terms in a collection.\n *\n * @param request - Query request with collection ID and options.\n * @returns Query result.\n */\n async queryTermsInCollection(request: {\n collection_id: string;\n include_descendants: boolean;\n namespace_id: string;\n }): Promise<unknown> {\n const response = await this.api.queryTermsInCollection(request);\n return response.data;\n }\n}\n","import type { Execution as GeneratedExecution } from '../api-spec/generated/Execution.js';\nimport type {\n CreateExecutionSessionRequest,\n ExecutionSessionResponse,\n BacktrackResponse,\n GoalStackResponse,\n ResiduateGoalRequest,\n BindTermRequest,\n BindTermResponse,\n ReleaseResiduationsRequest,\n ReleaseResiduationsResponse,\n AppendResiduationsRequest,\n AppendResiduationsResponse,\n GetResiduationsRequest,\n GetResiduationsResponse,\n ApplyCurriedRequest,\n ApplyCurriedResponse,\n CreateCurriedFunctionRequest,\n CurriedFunctionResponse,\n DetectMissingAttributesRequest,\n CurryingContextResponse,\n CleanupStaleSessionsParams,\n CleanupResponse,\n GetBindingsRequest,\n BindingsResponse,\n ExecutionSessionStatsResponse,\n LazyEvalRequest,\n LazyEvalResponse,\n MarkChoicePointRequest,\n ChoicePointMarkerResponse,\n MarkPendingRequest,\n MarkPendingResponse,\n PushGoalRequest,\n PushGoalResponse,\n} from '../types/execution.js';\nimport type { ResiduatedTermDto } from '../types/visualization.js';\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class ExecutionClient {\n /** @internal */\n private readonly api: GeneratedExecution;\n\n /** @internal */\n constructor(api: GeneratedExecution) {\n this.api = api;\n }\n\n /**\n * Create a new execution session.\n *\n * @param request - Session creation parameters.\n * @returns The created session.\n */\n async createSession(\n request: CreateExecutionSessionRequest,\n ): Promise<ExecutionSessionResponse> {\n const response = await this.api.createExecutionSession(request);\n return response.data;\n }\n\n /**\n * Get an execution session.\n *\n * @param sessionId - Session ID.\n * @returns The session state.\n */\n async getSession(sessionId: string): Promise<ExecutionSessionResponse> {\n const response = await this.api.getExecutionSession(sessionId);\n return response.data;\n }\n\n /**\n * Delete an execution session.\n *\n * @param sessionId - Session ID.\n */\n async deleteSession(sessionId: string): Promise<void> {\n await this.api.deleteExecutionSession(sessionId);\n }\n\n /**\n * Backtrack the session (undo recent operations).\n *\n * @param sessionId - Session ID.\n * @param request - Optional backtrack parameters (marker index).\n * @returns Backtrack result with undone entries.\n */\n async backtrack(\n sessionId: string,\n request?: { marker_index?: number | null },\n ): Promise<BacktrackResponse> {\n const response = await this.api.backtrack(sessionId, request ?? {});\n return response.data;\n }\n\n /**\n * Get the current goal stack.\n *\n * @param sessionId - Session ID.\n * @returns Goal stack state.\n */\n async getGoalStack(sessionId: string): Promise<GoalStackResponse> {\n const response = await this.api.getGoalStack(sessionId);\n return response.data;\n }\n\n /**\n * Get the session trail (undo log).\n *\n * @param sessionId - Session ID.\n * @returns Trail entries.\n */\n async getTrail(sessionId: string): Promise<unknown> {\n const response = await this.api.http.request<unknown, void>({\n path: `/api/v1/execution/sessions/${sessionId}/trail`,\n method: 'GET',\n secure: true,\n format: 'json',\n });\n return response.data;\n }\n\n /**\n * Get choice points in the session.\n *\n * @param sessionId - Session ID.\n * @returns Choice point data.\n */\n async getChoicePoints(sessionId: string): Promise<unknown> {\n const response = await this.api.http.request<unknown, void>({\n path: `/api/v1/execution/sessions/${sessionId}/choice-points`,\n method: 'GET',\n secure: true,\n format: 'json',\n });\n return response.data;\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 * @returns Residuated term details.\n */\n async residuate(\n sessionId: string,\n request: ResiduateGoalRequest,\n ): Promise<ResiduatedTermDto> {\n const response = await this.api.residuateGoal(sessionId, request);\n return response.data;\n }\n\n /**\n * Bind a term with sort and feature values.\n *\n * @param sessionId - Session ID.\n * @param request - Binding request.\n * @returns Binding result with evaluation results from released residuations.\n */\n async bind(\n sessionId: string,\n request: BindTermRequest,\n ): Promise<BindTermResponse> {\n const response = await this.api.bindTerm(sessionId, request);\n return response.data;\n }\n\n /**\n * Release residuations for a term (attempt evaluation).\n *\n * @param sessionId - Session ID.\n * @param request - Release request.\n * @returns Released goals and evaluation results.\n */\n async releaseResiduations(\n sessionId: string,\n request: ReleaseResiduationsRequest,\n ): Promise<ReleaseResiduationsResponse> {\n const response = await this.api.releaseResiduations(sessionId, request);\n return response.data;\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 * @returns Append result.\n */\n async appendResiduations(\n sessionId: string,\n request: AppendResiduationsRequest,\n ): Promise<AppendResiduationsResponse> {\n const response = await this.api.appendResiduations(sessionId, request);\n return response.data;\n }\n\n /**\n * Get residuations for a term.\n *\n * @param sessionId - Session ID.\n * @param request - Get residuations request.\n * @returns Residuation details.\n */\n async getResiduations(\n sessionId: string,\n request: GetResiduationsRequest,\n ): Promise<GetResiduationsResponse> {\n const response = await this.api.getResiduations(sessionId, request);\n return response.data;\n }\n\n /**\n * Mark a residuation as pending.\n *\n * @param sessionId - Session ID.\n * @param request - Mark pending request with term ID and operation type.\n * @returns Whether the residuation was marked and its details.\n *\n * @remarks\n * Marks a specific residuation goal as pending so it will not be\n * evaluated until the term receives further bindings.\n */\n async markPending(\n sessionId: string,\n request: MarkPendingRequest,\n ): Promise<MarkPendingResponse> {\n const response = await this.api.markPending(sessionId, request);\n return response.data;\n }\n\n // --- Goal Stack ---\n\n /**\n * Push a goal onto the execution goal stack.\n *\n * @param sessionId - Session ID.\n * @param request - Push goal request containing the goal to push.\n * @returns The goal ID and updated stack size.\n *\n * @remarks\n * Goals are discriminated unions with a `type` field. Supported types\n * include `unify`, `prove`, `eval`, `type_disj`, `cut`, and `if_then_else`.\n */\n async pushGoal(\n sessionId: string,\n request: PushGoalRequest,\n ): Promise<PushGoalResponse> {\n const response = await this.api.pushGoal(sessionId, request);\n return response.data;\n }\n\n /**\n * Pop a goal from the execution goal stack.\n *\n * @param sessionId - Session ID.\n * @returns Updated goal stack state after popping.\n */\n async popGoal(sessionId: string): Promise<GoalStackResponse> {\n const response = await this.api.popGoal(sessionId);\n return response.data;\n }\n\n // --- Choice Points ---\n\n /**\n * Mark a choice point in the execution session for backtracking.\n *\n * @param sessionId - Session ID.\n * @param request - Optional description for the choice point.\n * @returns The marker index, choice point count, and timestamp.\n *\n * @remarks\n * Choice points record the execution state so it can be restored\n * via backtracking. The returned `marker_index` can be passed to\n * {@link backtrack} to undo operations back to this point.\n */\n async markChoicePoint(\n sessionId: string,\n request: MarkChoicePointRequest,\n ): Promise<ChoicePointMarkerResponse> {\n const response = await this.api.markChoicePoint(sessionId, request);\n return response.data;\n }\n\n // --- Bindings ---\n\n /**\n * Get current bindings for terms in a session.\n *\n * @param sessionId - Session ID.\n * @param request - Optional list of term IDs; if empty, returns all bindings.\n * @returns Current term bindings with their sorts and features.\n */\n async getBindings(\n sessionId: string,\n request: GetBindingsRequest,\n ): Promise<BindingsResponse> {\n const response = await this.api.getBindings(sessionId, request);\n return response.data;\n }\n\n // --- Lazy Evaluation ---\n\n /**\n * Evaluate a term lazily, deferring evaluation of excluded features.\n *\n * @param sessionId - Session ID.\n * @param request - Lazy evaluation request with term ID and excluded features.\n * @returns Evaluation status indicating what further evaluation is needed.\n *\n * @remarks\n * Returns a discriminated union by `status`:\n * - `evaluated`: Term was fully evaluated.\n * - `quoted`: Term was quoted (not evaluated).\n * - `subterms_need_eval`: Sub-terms require evaluation first.\n * - `needs_function_eval`: A function term needs evaluation.\n */\n async lazyEval(\n sessionId: string,\n request: LazyEvalRequest,\n ): Promise<LazyEvalResponse> {\n const response = await this.api.lazyEval(sessionId, request);\n return response.data;\n }\n\n // --- Currying ---\n\n /**\n * Create a curried function.\n *\n * @param request - Curried function creation parameters.\n * @returns The created curried function details.\n *\n * @remarks\n * Curried functions are ephemeral and not persisted. They will be\n * lost on server restart. Use within a single session lifecycle.\n */\n async createCurriedFunction(\n request: CreateCurriedFunctionRequest,\n ): Promise<CurriedFunctionResponse> {\n const response = await this.api.createCurriedFunction(request);\n return response.data;\n }\n\n /**\n * Apply arguments to a curried function.\n *\n * @param request - Apply request with curried function ID and arguments.\n * @returns A discriminated union indicating the result status.\n *\n * @remarks\n * Returns a discriminated union by `status`:\n * - `fully_applied`: All arguments provided, result computed.\n * - `still_curried`: Some arguments remain missing.\n * - `cannot_curry`: Function cannot be curried with the given arguments.\n */\n async applyCurried(\n request: ApplyCurriedRequest,\n ): Promise<ApplyCurriedResponse> {\n const response = await this.api.applyCurried(request);\n return response.data;\n }\n\n /**\n * Detect missing attributes for a currying decision.\n *\n * @param request - Call and definition attributes to compare.\n * @returns Currying context analysis indicating whether currying should be applied.\n *\n * @remarks\n * Compares the attributes in a function call against the attributes\n * in the function definition to determine if currying is appropriate.\n */\n async detectCurryingContext(\n request: DetectMissingAttributesRequest,\n ): Promise<CurryingContextResponse> {\n const response = await this.api.detectCurryingContext(request);\n return response.data;\n }\n\n // --- Session Management ---\n\n /**\n * Get execution session statistics.\n *\n * @returns Session statistics.\n */\n async getSessionStats(): Promise<ExecutionSessionStatsResponse> {\n const response = await this.api.getSessionStats();\n return response.data;\n }\n\n /**\n * Clean up stale execution sessions from memory and optionally from database.\n *\n * @param params - Optional cleanup parameters.\n * @returns Cleanup result with counts of cleaned sessions and curried functions.\n *\n * @remarks\n * This should be called periodically (e.g., via cron or health check)\n * to prevent memory leaks from abandoned sessions.\n */\n async cleanupStaleSessions(\n params?: CleanupStaleSessionsParams,\n ): Promise<CleanupResponse> {\n const response = await this.api.cleanupStaleSessions(params);\n return response.data;\n }\n}\n","import type { Causal as GeneratedCausal } from '../api-spec/generated/Causal.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\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class CausalClient {\n /** @internal */\n private readonly api: GeneratedCausal;\n\n /** @internal */\n constructor(api: GeneratedCausal) {\n this.api = api;\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 * @returns Ancestry result with path and certainty.\n */\n async checkAncestor(\n request: CausalAncestorRequest,\n ): Promise<CausalAncestorResponse> {\n const response = await this.api.checkCausalAncestor(request);\n return response.data;\n }\n\n /**\n * Check if one variable directly causes another.\n *\n * @param request - Causes check request with cause and effect variables.\n * @returns Whether the causal relationship exists with certainty.\n */\n async checkCauses(request: CausesRequest): Promise<CausesResponse> {\n const response = await this.api.checkCauses(request);\n return response.data;\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 * @returns Counterfactual result with trace of abduction, action, and prediction.\n */\n async counterfactual(\n request: CounterfactualRequest,\n ): Promise<CounterfactualResponse> {\n const response = await this.api.evaluateCounterfactual(request);\n return response.data;\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 * @returns Whether the variables are d-separated and active paths.\n */\n async checkDSeparated(\n request: DSeparatedRequest,\n ): Promise<DSeparatedResponse> {\n const response = await this.api.checkDSeparated(request);\n return response.data;\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 * @returns Intervention result with query output.\n */\n async intervene(\n request: InterventionRequest,\n ): Promise<InterventionResponse> {\n const response = await this.api.applyIntervention(request);\n return response.data;\n }\n\n /**\n * Get the current causal model (all variables and edges).\n *\n * @returns The causal model with variables and edges.\n */\n async getModel(): Promise<GetCausalModelResponse> {\n const response = await this.api.getCausalModel();\n return response.data;\n }\n\n /**\n * Add a causal relation to the model.\n *\n * @param request - Relation request with cause, effect, and optional certainty.\n * @returns Success status and created rule ID.\n */\n async addRelation(\n request: AddCausalRelationRequest,\n ): Promise<AddCausalRelationResponse> {\n const response = await this.api.addCausalRelation(request);\n return response.data;\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 * @returns Root causes and causal chains.\n */\n async rootCause(\n request: RootCauseAnalysisRequest,\n ): Promise<RootCauseAnalysisResponse> {\n const response = await this.api.analyzeRootCauses(request);\n return response.data;\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 * @returns Root causes, causal chains, and proof tree.\n */\n async rootCauseWithProof(\n request: RootCauseAnalysisRequest,\n ): Promise<RootCauseWithProofResponse> {\n const response = await this.api.analyzeRootCausesWithProof(request);\n return response.data;\n }\n}\n","import type { Ingestion as GeneratedIngestion } from '../api-spec/generated/Ingestion.js';\nimport { ContentType } from '../api-spec/generated/http-client.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\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class IngestionClient {\n /** @internal */\n private readonly api: GeneratedIngestion;\n\n /** @internal */\n constructor(api: GeneratedIngestion) {\n this.api = api;\n }\n\n /**\n * Ingest a single document.\n *\n * @param request - Document ingestion request with source, config, and owner.\n * @returns Ingestion result with stats, metadata, and parse info.\n */\n async ingestDocument(\n request: IngestDocumentRequest,\n ): Promise<IngestDocumentResponse> {\n const response = await this.api.ingestDocument(request);\n return response.data;\n }\n\n /**\n * Ingest a batch of documents.\n *\n * @param request - Batch ingestion request with documents, config, and owner.\n * @returns Batch results with per-document status.\n */\n async ingestDocumentBatch(\n request: IngestDocumentBatchRequest,\n ): Promise<IngestDocumentBatchResponse> {\n const response = await this.api.ingestDocumentBatch(request);\n return response.data;\n }\n\n /**\n * Ingest markdown content.\n *\n * @param request - Markdown ingestion request with content and owner.\n * @returns Ingestion statistics and review items.\n *\n * @remarks\n * Uses synchronous mode (sync=true) by default. The generated endpoint\n * returns void for the response type; we use a fallback to get the typed response.\n */\n async ingestMarkdown(\n request: IngestMarkdownRequest,\n ): Promise<IngestMarkdownResponse> {\n const response = await this.api.http.request<IngestMarkdownResponse, void>({\n path: `/api/v1/ingest/markdown`,\n method: 'POST',\n query: { sync: true },\n body: request,\n type: ContentType.Json,\n format: 'json',\n });\n return response.data;\n }\n\n /**\n * Ingest a batch of markdown documents.\n *\n * @param request - Batch markdown ingestion request with documents and owner.\n * @returns Ingestion statistics and review items.\n *\n * @remarks\n * The generated endpoint returns void; we use a fallback to get the typed response.\n */\n async ingestMarkdownBatch(\n request: IngestMarkdownBatchRequest,\n ): Promise<IngestMarkdownResponse> {\n const response = await this.api.http.request<IngestMarkdownResponse, void>({\n path: `/api/v1/ingest/markdown/batch`,\n method: 'POST',\n body: request,\n type: ContentType.Json,\n format: 'json',\n });\n return response.data;\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 * @returns Created sorts and terms from the RDF data.\n */\n async ingestRdf(\n request: IngestRdfRequest,\n ): Promise<IngestRdfResponse> {\n const response = await this.api.ingestRdf(request);\n return response.data;\n }\n\n /**\n * List all ingestion sessions.\n *\n * @returns List of sessions with total count.\n */\n async listSessions(): Promise<ListIngestionSessionsResponse> {\n const response = await this.api.listIngestionSessions();\n return response.data;\n }\n\n /**\n * Start a new ingestion session.\n *\n * @param request - Session start request with document IDs.\n * @returns The created session.\n */\n async startSession(\n request: StartIngestionSessionRequest,\n ): Promise<IngestionSessionResponse> {\n const response = await this.api.startIngestionSession(request);\n return response.data;\n }\n\n /**\n * Get an ingestion session by ID.\n *\n * @param sessionId - Session UUID.\n * @returns The session details.\n */\n async getSession(\n sessionId: string,\n ): Promise<IngestionSessionResponse> {\n const response = await this.api.getIngestionSession(sessionId);\n return response.data;\n }\n\n /**\n * Delete an ingestion session.\n *\n * @param sessionId - Session UUID.\n */\n async deleteSession(sessionId: string): Promise<void> {\n await this.api.deleteIngestionSession(sessionId);\n }\n\n /**\n * List incomplete documents in a session that can be resumed.\n *\n * @param sessionId - Session UUID.\n * @returns Incomplete documents with resume positions.\n */\n async listIncompleteDocuments(\n sessionId: string,\n ): Promise<ListIncompleteDocumentsResponse> {\n const response = await this.api.listIncompleteDocuments(sessionId);\n return response.data;\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 * @returns Resume result with stats and review items.\n */\n async resumeIngestion(\n sessionId: string,\n request: ResumeDocumentIngestionRequest,\n ): Promise<ResumeDocumentIngestionResponse> {\n const response = await this.api.resumeDocumentIngestion(sessionId, request);\n return response.data;\n }\n}\n","import type { Reviews as GeneratedReviews } from '../api-spec/generated/Reviews.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\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class ReviewsClient {\n /** @internal */\n private readonly api: GeneratedReviews;\n\n /** @internal */\n constructor(api: GeneratedReviews) {\n this.api = api;\n }\n\n /**\n * Add an entity to the pending review queue.\n *\n * @param request - Review details including entity, candidates, and reason.\n * @returns The created review response.\n */\n async addPendingReview(request: AddPendingReviewRequest): Promise<unknown> {\n const response = await this.api.addPendingReview(request);\n return response.data;\n }\n\n /**\n * Approve an entity as-is.\n *\n * @param request - Approval request with review ID and optional notes.\n * @returns The approval response.\n */\n async approveEntity(request: ApproveEntityRequest): Promise<unknown> {\n const response = await this.api.approveEntity(request);\n return response.data;\n }\n\n /**\n * Bulk approve multiple reviews.\n *\n * @param request - Bulk approval request with review IDs and reviewer.\n * @returns The bulk approval response.\n */\n async bulkApprove(request: BulkApproveRequest): Promise<unknown> {\n const response = await this.api.bulkApprove(request);\n return response.data;\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 * @returns The bulk merge response.\n */\n async bulkMerge(request: BulkMergeRequest): Promise<unknown> {\n const response = await this.api.bulkMerge(request);\n return response.data;\n }\n\n /**\n * Bulk reject multiple reviews.\n *\n * @param request - Bulk reject request with review IDs, reviewer, and reason.\n * @returns The bulk rejection response.\n */\n async bulkReject(request: BulkRejectRequest): Promise<unknown> {\n const response = await this.api.bulkReject(request);\n return response.data;\n }\n\n /**\n * Correct an entity before approval.\n *\n * @param request - Correction request with review ID, corrected features, and/or sort.\n * @returns The correction response.\n */\n async correctEntity(request: CorrectEntityRequest): Promise<unknown> {\n const response = await this.api.correctEntity(request);\n return response.data;\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 * @returns The merge response.\n */\n async mergeEntity(request: MergeEntityRequest): Promise<unknown> {\n const response = await this.api.mergeEntity(request);\n return response.data;\n }\n\n /**\n * List all pending reviews.\n *\n * @returns List of pending review entries.\n */\n async listPending(): Promise<unknown> {\n const response = await this.api.listPendingReviews();\n return response.data;\n }\n\n /**\n * Re-extract entities from a document.\n *\n * @param request - Re-extraction request with document ID and optional instructions.\n * @returns The re-extraction response.\n */\n async reExtract(request: ReExtractRequest): Promise<unknown> {\n const response = await this.api.reExtract(request);\n return response.data;\n }\n\n /**\n * Reject an entity.\n *\n * @param request - Rejection request with review ID and reason.\n * @returns The rejection response.\n */\n async rejectEntity(request: RejectEntityRequest): Promise<unknown> {\n const response = await this.api.rejectEntity(request);\n return response.data;\n }\n\n /**\n * Get review summary for a tenant.\n *\n * @param tenantId - Tenant UUID.\n * @returns Review summary for the tenant.\n */\n async getSummary(tenantId: string): Promise<unknown> {\n const response = await this.api.getReviewSummary(tenantId);\n return response.data;\n }\n}\n","import type { Visualization as GeneratedVisualization } from '../api-spec/generated/Visualization.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\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class VisualizationClient {\n /** @internal */\n private readonly api: GeneratedVisualization;\n\n /** @internal */\n constructor(api: GeneratedVisualization) {\n this.api = api;\n }\n\n /**\n * Generate a constraint graph visualization.\n *\n * @param request - Constraint graph request with optional term focus and cycle detection.\n * @returns Constraint graph with nodes, edges, stats, and optional cycles.\n */\n async constraintGraph(\n request: ConstraintGraphRequest,\n ): Promise<ConstraintGraphResponse> {\n const response = await this.api.getConstraintGraph(request);\n return response.data;\n }\n\n /**\n * Generate a hypergraph visualization of OSF terms.\n *\n * @param request - Hypergraph request with root term and traversal options.\n * @returns Hypergraph with graph, stats, components, and degree distribution.\n */\n async hypergraph(\n request: HypergraphRequest,\n ): Promise<HypergraphResponse> {\n const response = await this.api.getHypergraph(request);\n return response.data;\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 * @returns Hypergraph response for the term's neighborhood.\n */\n async termSubgraph(termId: string): Promise<HypergraphResponse> {\n const response = await this.api.getTermSubgraph(termId);\n return response.data;\n }\n\n /**\n * Generate a lattice (sort hierarchy) visualization.\n *\n * @param request - Lattice request with layout and filtering options.\n * @returns Lattice visualization with graph and statistics.\n */\n async lattice(\n request: LatticeVisualizationRequest,\n ): Promise<LatticeVisualizationResponse> {\n const response = await this.api.getLatticeVisualization(request);\n return response.data;\n }\n\n /**\n * Get the sort lattice as a DOT format string.\n *\n * @returns The lattice in DOT graph description language.\n *\n * @remarks\n * This endpoint returns a plain-text DOT string. The generated route class\n * declares void because the OpenAPI spec omits the response schema.\n * We call `http.request` directly with `format: 'text'` to parse the body.\n */\n async latticeDot(): Promise<string> {\n const response = await this.api.http.request<string, void>({\n path: '/api/v1/visualization/lattice/dot',\n method: 'GET',\n format: 'text',\n });\n return response.data;\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 * @returns Computation trace with steps, result, and optional graph.\n */\n async glbLubTrace(\n request: GlbLubTraceRequest,\n ): Promise<GlbLubComputationTrace> {\n const response = await this.api.glbLubTrace(request);\n return response.data;\n }\n\n /**\n * Generate a residuation state diagram.\n *\n * @param request - Residuation state request with kind and state filters.\n * @returns Residuation state with terms, graph, and statistics.\n */\n async residuationState(\n request: ResiduationStateRequest,\n ): Promise<ResiduationStateResponse> {\n const response = await this.api.getResiduationState(request);\n return response.data;\n }\n\n /**\n * Generate a trigger dependency graph for residuations.\n *\n * @param request - Trigger dependency request with optional residuation focus.\n * @returns Trigger dependency graph with critical paths.\n */\n async triggerDependencies(\n request: TriggerDependencyRequest,\n ): Promise<TriggerDependencyResponse> {\n const response = await this.api.getTriggerDependencies(request);\n return response.data;\n }\n}\n","import type { Ilp as GeneratedIlp } from '../api-spec/generated/Ilp.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\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class IlpClient {\n /** @internal */\n private readonly api: GeneratedIlp;\n\n /** @internal */\n constructor(api: GeneratedIlp) {\n this.api = api;\n }\n\n /**\n * Learn a recursive arithmetic pattern from training examples.\n *\n * @param request - Learning request with examples and configuration.\n * @returns The learned pattern with confidence score and processing time.\n */\n async learnPattern(\n request: LearnPatternRequest,\n ): Promise<LearnPatternResponse> {\n const response = await this.api.learnPattern(request);\n return response.data;\n }\n\n /**\n * Evaluate a learned pattern on new inputs.\n *\n * @param request - Evaluation request with pattern ID and inputs.\n * @returns Evaluation results for each input.\n */\n async evaluatePattern(\n request: EvaluatePatternRequest,\n ): Promise<EvaluatePatternResponse> {\n const response = await this.api.evaluatePattern(request);\n return response.data;\n }\n\n /**\n * Sample hypotheses using GFlowNet.\n *\n * @param request - Sampling request with target sort and parameters.\n * @returns Sampled hypotheses with log-probabilities.\n */\n async gflownetSample(\n request: GFlowNetSampleRequest,\n ): Promise<GFlowNetSampleResponse> {\n const response = await this.api.gflownetSample(request);\n return response.data;\n }\n\n /**\n * List all learned patterns.\n *\n * @returns List of pattern summaries.\n */\n async listPatterns(): Promise<ListPatternsResponse> {\n const response = await this.api.listPatterns();\n return response.data;\n }\n\n /**\n * Synthesize rules using neural-guided ILP.\n *\n * @param request - Synthesis request with examples and target sort.\n * @returns Synthesis result with processing details.\n */\n async synthesize(\n request: SynthesizeRequest,\n ): Promise<SynthesizeResponse> {\n const response = await this.api.synthesizePattern(request);\n return response.data;\n }\n}\n","import type { Reasoning as GeneratedReasoning } from '../api-spec/generated/Reasoning.js';\nimport type {\n FuzzyMergeRequest,\n FuzzyMergeResponse,\n FuzzySubsumptionRequest,\n FuzzySubsumptionResponse,\n} from '../types/fuzzy.js';\nimport type {\n DisentailmentRequest,\n DisentailmentResponse,\n EntailmentRequest,\n EntailmentResponse,\n EvidenceAssessmentRequest,\n EvidenceAssessmentResponse,\n GoalResiduationRequest,\n GoalResiduationResponse,\n ResiduationRequest,\n ResiduationResponse,\n ResourceCoordinationRequest,\n ResourceCoordinationResponse,\n TemporalPlanRequest,\n TemporalPlanResponse,\n} from '../types/reasoning.js';\n\n/**\n * Resource client for reasoning operations.\n *\n * @remarks\n * Provides entailment checking, disentailment checking, evidence assessment,\n * fuzzy merge/subsumption, residuation checking, goal residuation analysis,\n * resource coordination, and temporal planning.\n *\n * Delegates to the generated {@link GeneratedReasoning} route class for\n * type-safe HTTP calls.\n */\nexport class ReasoningClient {\n /** @internal */\n private readonly api: GeneratedReasoning;\n\n /** @internal */\n constructor(api: GeneratedReasoning) {\n this.api = api;\n }\n\n /**\n * Assess the truthfulness/validity of a subject based on related evidence.\n *\n * @param request - Evidence assessment request.\n * @returns Assessment result with truthfulness score, label, and evidence breakdown.\n */\n async assess(\n request: EvidenceAssessmentRequest,\n ): Promise<EvidenceAssessmentResponse> {\n const response = await this.api.evidenceAssessment(request);\n return response.data;\n }\n\n /**\n * Check disentailment between two clauses.\n *\n * @param request - Disentailment request with antecedent, consequent, and facts.\n * @returns Whether the disentailment holds or is violated.\n */\n async disentailment(\n request: DisentailmentRequest,\n ): Promise<DisentailmentResponse> {\n const response = await this.api.disentailment(request);\n return response.data;\n }\n\n /**\n * Check logical entailment between an antecedent and consequent.\n *\n * @param request - Entailment request with antecedent, consequent, and facts.\n * @returns Whether the antecedent entails the consequent with confidence.\n */\n async entailment(\n request: EntailmentRequest,\n ): Promise<EntailmentResponse> {\n const response = await this.api.entailment(request);\n return response.data;\n }\n\n /**\n * Compute goal-level residuation: which antecedent sorts are still needed.\n *\n * @param request - Goal residuation request with goal sort name and available sorts.\n * @returns Residuated entries sorted by information gain.\n */\n async goalResiduation(\n request: GoalResiduationRequest,\n ): Promise<GoalResiduationResponse> {\n const response = await this.api.goalResiduation(request);\n return response.data;\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 * @returns Merge result with computation time and feature count.\n */\n async merge(\n request: FuzzyMergeRequest,\n ): Promise<FuzzyMergeResponse> {\n const response = await this.api.fuzzyMerge(request);\n return response.data;\n }\n\n /**\n * Check for residuated (suspended) operations on a term.\n *\n * @param request - Residuation request with term ID.\n * @returns Suspended operations and resumption triggers.\n */\n async residuate(\n request: ResiduationRequest,\n ): Promise<ResiduationResponse> {\n const response = await this.api.residuation(request);\n return response.data;\n }\n\n /**\n * Coordinate N-way resource selections with compatibility constraints.\n *\n * @param request - Resource coordination request.\n * @returns Coordinated resource sets with compatibility scores.\n */\n async resourceCoordination(\n request: ResourceCoordinationRequest,\n ): Promise<ResourceCoordinationResponse> {\n const response = await this.api.resourceCoordination(request);\n return response.data;\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 * @returns Subsumption degree and whether the relationship holds.\n */\n async subsumption(\n request: FuzzySubsumptionRequest,\n ): Promise<FuzzySubsumptionResponse> {\n const response = await this.api.fuzzySubsumption(request);\n return response.data;\n }\n\n /**\n * Generate a temporal plan with diversity constraints.\n *\n * @param request - Temporal plan request.\n * @returns Selected term IDs with diversity and proximity scores.\n */\n async temporalPlan(\n request: TemporalPlanRequest,\n ): Promise<TemporalPlanResponse> {\n const response = await this.api.temporalPlan(request);\n return response.data;\n }\n}\n","import type { Statistical as GeneratedStatistical } from '../api-spec/generated/Statistical.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\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 *\n * Delegates to the generated {@link GeneratedStatistical} route class for\n * type-safe HTTP calls.\n */\nexport class StatisticalClient {\n /** @internal */\n private readonly api: GeneratedStatistical;\n\n /** @internal */\n constructor(api: GeneratedStatistical) {\n this.api = api;\n }\n\n /**\n * Clear all observed statistical data.\n *\n * @returns Success message.\n */\n async clearData(): Promise<StatisticalSuccessResponse> {\n const response = await this.api.clearStatisticalData();\n return response.data;\n }\n\n /**\n * Compute Pearson correlation between two variables.\n *\n * @param request - Correlation request with two variable names.\n * @returns Correlation coefficient and observation count.\n */\n async correlation(\n request: CorrelationRequest,\n ): Promise<CorrelationResponse> {\n const response = await this.api.getCorrelation(request);\n return response.data;\n }\n\n /**\n * Discover causal relationships from observed data.\n *\n * @param request - Discovery request with variable list.\n * @returns Discovered causal relationships.\n */\n async discoverCausal(\n request: DiscoverCausalRequest,\n ): Promise<DiscoverCausalResponse> {\n const response = await this.api.discoverCausal(request);\n return response.data;\n }\n\n /**\n * Get the current status of causal discovery.\n *\n * @returns Discovery status with graph and uncertainty information.\n */\n async getDiscoveryStatus(): Promise<DiscoveryStatusResponse> {\n const response = await this.api.getDiscoveryStatus();\n return response.data;\n }\n\n /**\n * Run dynamic causal discovery with configurable strategy.\n *\n * @param request - Dynamic discovery request with strategy and parameters.\n * @returns Discovered relationships, proof tree, and interventions.\n */\n async dynamicDiscovery(\n request: DynamicDiscoveryRequest,\n ): Promise<DynamicDiscoveryResponse> {\n const response = await this.api.dynamicDiscovery(request);\n return response.data;\n }\n\n /**\n * Record an intervention observation for causal discovery.\n *\n * @param request - Intervention observation with changed/unchanged variables.\n * @returns Resolved edges and remaining uncertainty.\n */\n async interventionObservation(\n request: InterventionObservationRequest,\n ): Promise<InterventionObservationResponse> {\n const response = await this.api.recordInterventionObservation(request);\n return response.data;\n }\n\n /**\n * Observe a single variable value.\n *\n * @param request - Single observation request.\n * @returns Current observation count.\n */\n async observeSingle(\n request: ObserveSingleRequest,\n ): Promise<ObserveSingleResponse> {\n const response = await this.api.observeSingle(request);\n return response.data;\n }\n\n /**\n * Observe multiple variable values simultaneously.\n *\n * @param request - Multi-observation request with variable-value map.\n * @returns Variables that were observed.\n */\n async observeMulti(\n request: ObserveMultiRequest,\n ): Promise<ObserveMultiResponse> {\n const response = await this.api.observeMulti(request);\n return response.data;\n }\n\n /**\n * Observe a pair of variable values.\n *\n * @param request - Pair observation request.\n * @returns Current observation count for this pair.\n */\n async observePair(\n request: ObservePairRequest,\n ): Promise<ObservePairResponse> {\n const response = await this.api.observePair(request);\n return response.data;\n }\n\n /**\n * Compute partial correlation controlling for a set of variables.\n *\n * @param request - Partial correlation request with conditioning set.\n * @returns Partial correlation coefficient.\n */\n async partialCorrelation(\n request: PartialCorrelationRequest,\n ): Promise<PartialCorrelationResponse> {\n const response = await this.api.getPartialCorrelation(request);\n return response.data;\n }\n\n /**\n * Reset the causal discovery state.\n *\n * @returns Success message.\n */\n async resetDiscovery(): Promise<StatisticalSuccessResponse> {\n const response = await this.api.resetDiscovery();\n return response.data;\n }\n\n /**\n * Test conditional independence between two variables.\n *\n * @param request - Independence test request with conditioning set.\n * @returns Independence result with p-value and explanation.\n */\n async testIndependence(\n request: ConditionalIndependenceRequest,\n ): Promise<ConditionalIndependenceResponse> {\n const response = await this.api.testConditionalIndependence(request);\n return response.data;\n }\n}\n","import type { Control as GeneratedControl } from '../api-spec/generated/Control.js';\nimport type {\n BacktrackableAssignRequest,\n BacktrackableAssignResponse,\n GlobalAssignRequest,\n GlobalAssignResponse,\n CallOnceRequest,\n CallOnceResponse,\n CondRequest,\n CondResponse,\n CutRequest,\n CutResponse,\n FindallRequest,\n FindallResponse,\n ForallRequest,\n ForallResponse,\n GlobalGetRequest,\n GlobalGetResponse,\n GlobalIncrementRequest,\n GlobalIncrementResponse,\n ImpliesRequest,\n ImpliesResponse,\n ControlNafRequest,\n NafResponse,\n UndoRequest,\n UndoResponse,\n CreateModuleRequest,\n CreateModuleResponse,\n ImportModuleRequest,\n ImportModuleResponse,\n AddSymbolRequest,\n AddSymbolResponse,\n ListSymbolsRequest,\n ListSymbolsResponse,\n ResolveSymbolRequest,\n ResolveSymbolResponse,\n} from '../types/control.js';\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, undo, and module system operations.\n *\n * Delegates to the generated {@link GeneratedControl} route class for\n * type-safe HTTP calls.\n */\nexport class ControlClient {\n /** @internal */\n private readonly api: GeneratedControl;\n\n /** @internal */\n constructor(api: GeneratedControl) {\n this.api = api;\n }\n\n /**\n * Perform backtrackable assignment.\n *\n * @param request - Assignment request with term, feature, and value.\n * @returns Assignment result with trail entry status.\n */\n async backtrackableAssign(\n request: BacktrackableAssignRequest,\n ): Promise<BacktrackableAssignResponse> {\n const response = await this.api.assignBacktrackable(request);\n return response.data;\n }\n\n /**\n * Perform global assignment (persists across backtracking).\n *\n * @param request - Global assignment request.\n * @returns Assignment result with previous value.\n */\n async globalAssign(\n request: GlobalAssignRequest,\n ): Promise<GlobalAssignResponse> {\n const response = await this.api.assignGlobal(request);\n return response.data;\n }\n\n /**\n * Execute a goal once with cut (deterministic).\n *\n * @param request - Call-once request with goal.\n * @returns Result with success status and choice points cut.\n */\n async callOnce(\n request: CallOnceRequest,\n ): Promise<CallOnceResponse> {\n const response = await this.api.controlCallOnce(request);\n return response.data;\n }\n\n /**\n * Execute conditional (if-then-else).\n *\n * @param request - Conditional request with condition, then, and else goals.\n * @returns Result with branch executed and success status.\n */\n async cond(\n request: CondRequest,\n ): Promise<CondResponse> {\n const response = await this.api.controlCond(request);\n return response.data;\n }\n\n /**\n * Perform Prolog-style cut (discard choice points).\n *\n * @param request - Cut request with session ID.\n * @returns Number of choice points removed.\n */\n async cut(\n request: CutRequest,\n ): Promise<CutResponse> {\n const response = await this.api.controlCut(request);\n return response.data;\n }\n\n /**\n * Collect all solutions for a goal (findall).\n *\n * @param request - Findall request with template, goal, and optional max.\n * @returns Collected solutions and count.\n */\n async findall(\n request: FindallRequest,\n ): Promise<FindallResponse> {\n const response = await this.api.controlFindall(request);\n return response.data;\n }\n\n /**\n * Universal quantification (forall).\n *\n * @param request - Forall request with generator and test goals.\n * @returns Result and number of solutions tested.\n */\n async forall(\n request: ForallRequest,\n ): Promise<ForallResponse> {\n const response = await this.api.controlForall(request);\n return response.data;\n }\n\n /**\n * Get a global variable value.\n *\n * @param request - Get request with session ID and variable name.\n * @returns The global variable value or not-found status.\n */\n async globalGet(\n request: GlobalGetRequest,\n ): Promise<GlobalGetResponse> {\n const response = await this.api.globalGet(request);\n return response.data;\n }\n\n /**\n * Increment a global counter variable.\n *\n * @param request - Increment request with session ID and variable name.\n * @returns New value and variable name.\n */\n async globalIncrement(\n request: GlobalIncrementRequest,\n ): Promise<GlobalIncrementResponse> {\n const response = await this.api.globalIncrement(request);\n return response.data;\n }\n\n /**\n * Execute implies (A -> B).\n *\n * @param request - Implies request with antecedent and consequent.\n * @returns Implication result.\n */\n async implies(\n request: ImpliesRequest,\n ): Promise<ImpliesResponse> {\n const response = await this.api.controlImplies(request);\n return response.data;\n }\n\n /**\n * Negation as failure (low-level control).\n *\n * @param request - NAF request with goal.\n * @returns Whether the goal failed (negation succeeded).\n */\n async naf(\n request: ControlNafRequest,\n ): Promise<NafResponse> {\n const response = await this.api.controlNaf(request);\n return response.data;\n }\n\n /**\n * Register an undo goal (execute on backtracking).\n *\n * @param request - Undo request with goal.\n * @returns Undo ID and trail position.\n */\n async undo(\n request: UndoRequest,\n ): Promise<UndoResponse> {\n const response = await this.api.controlUndo(request);\n return response.data;\n }\n\n // --- Module System ---\n\n /**\n * Create a module.\n *\n * @param request - Module creation request.\n * @returns Created module name.\n */\n async createModule(\n request: CreateModuleRequest,\n ): Promise<CreateModuleResponse> {\n const response = await this.api.createModule(request);\n return response.data;\n }\n\n /**\n * Import a module.\n *\n * @param request - Import request with importer, imported module, and optional alias.\n * @returns Imported module name.\n */\n async importModule(\n request: ImportModuleRequest,\n ): Promise<ImportModuleResponse> {\n const response = await this.api.importModule(request);\n return response.data;\n }\n\n /**\n * Add a symbol to a module.\n *\n * @param request - Add symbol request with module, symbol, and visibility.\n * @returns Added symbol details.\n */\n async addSymbol(\n request: AddSymbolRequest,\n ): Promise<AddSymbolResponse> {\n const response = await this.api.addSymbol(request);\n return response.data;\n }\n\n /**\n * List module symbols.\n *\n * @param request - List request with module name and session ID.\n * @returns Module symbols.\n */\n async listSymbols(\n request: ListSymbolsRequest,\n ): Promise<ListSymbolsResponse> {\n const response = await this.api.listSymbols(request);\n return response.data;\n }\n\n /**\n * Resolve a qualified symbol name.\n *\n * @param request - Resolve request with qualified name and current module.\n * @returns Resolved module and symbol name.\n */\n async resolveSymbol(\n request: ResolveSymbolRequest,\n ): Promise<ResolveSymbolResponse> {\n const response = await this.api.resolveSymbol(request);\n return response.data;\n }\n}\n","import type { Spaces as GeneratedSpaces } from '../api-spec/generated/Spaces.js';\nimport type {\n CreateSpaceRequest,\n SpaceResponse,\n CommitRequest,\n SpaceSearchRequest,\n SpaceSearchResponse,\n} from '../types/spaces.js';\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 *\n * Delegates to the generated {@link GeneratedSpaces} route class for\n * type-safe HTTP calls.\n */\nexport class SpacesClient {\n /** @internal */\n private readonly api: GeneratedSpaces;\n\n /** @internal */\n constructor(api: GeneratedSpaces) {\n this.api = api;\n }\n\n /**\n * Create a new computation space.\n *\n * @param request - Space creation parameters.\n * @returns The created space.\n */\n async createSpace(\n request: CreateSpaceRequest,\n ): Promise<SpaceResponse> {\n const response = await this.api.createSpace(request);\n return response.data;\n }\n\n /**\n * Get a computation space by ID.\n *\n * @param spaceId - Space ID.\n * @returns The space state.\n */\n async getSpace(\n spaceId: string,\n ): Promise<SpaceResponse> {\n const response = await this.api.getSpace(spaceId);\n return response.data;\n }\n\n /**\n * Clone a computation space.\n *\n * @param spaceId - Space ID to clone.\n * @returns The cloned space.\n */\n async cloneSpace(\n spaceId: string,\n ): Promise<SpaceResponse> {\n const response = await this.api.cloneSpace(spaceId);\n return response.data;\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 * @returns Updated space state.\n */\n async commit(\n spaceId: string,\n request: CommitRequest,\n ): Promise<SpaceResponse> {\n const response = await this.api.commitSpace(spaceId, request);\n return response.data;\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 * @returns Search results with solutions.\n */\n async search(\n spaceId: string,\n request: SpaceSearchRequest,\n ): Promise<SpaceSearchResponse> {\n const response = await this.api.searchSpace(spaceId, request);\n return response.data;\n }\n}\n","import type { RowPolymorphism as GeneratedRowPolymorphism } from '../api-spec/generated/RowPolymorphism.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\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 *\n * Delegates to the generated {@link GeneratedRowPolymorphism} route class for\n * type-safe HTTP calls.\n */\nexport class RowClient {\n /** @internal */\n private readonly api: GeneratedRowPolymorphism;\n\n /** @internal */\n constructor(api: GeneratedRowPolymorphism) {\n this.api = api;\n }\n\n /**\n * Search for entities matching a row pattern.\n *\n * @param request - Row search request with feature pattern.\n * @returns Matching entities.\n */\n async search(\n request: RowSearchRequest,\n ): Promise<RowSearchResponse> {\n const response = await this.api.rowSearch(request);\n return response.data;\n }\n\n /**\n * Unify two row types.\n *\n * @param request - Unification request with two row types.\n * @returns Unification result.\n */\n async unify(\n request: RowUnifyRequest,\n ): Promise<RowUnifyResponse> {\n const response = await this.api.rowUnify(request);\n return response.data;\n }\n\n /**\n * Compute similarity between two row types.\n *\n * @param request - Similarity request with two row types.\n * @returns Similarity score and feature comparison.\n */\n async similarity(\n request: RowSimilarityRequest,\n ): Promise<RowSimilarityResponse> {\n const response = await this.api.rowSimilarity(request);\n return response.data;\n }\n\n /**\n * Integrate entities across namespaces using shared features.\n *\n * @param request - Integration request with match features.\n * @returns Integration groups.\n */\n async integrate(\n request: RowIntegrateRequest,\n ): Promise<RowIntegrateResponse> {\n const response = await this.api.rowIntegrate(request);\n return response.data;\n }\n\n /**\n * Execute a dynamic query with pattern matching.\n *\n * @param request - Dynamic query with clauses and options.\n * @returns Query results.\n */\n async query(\n request: DynamicQueryRequest,\n ): Promise<DynamicQueryResponse> {\n const response = await this.api.dynamicQuery(request);\n return response.data;\n }\n}\n","import type { StructuredIngestion as GeneratedStructuredIngestion } from '../api-spec/generated/StructuredIngestion.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\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class SourcesClient {\n /** @internal */\n private readonly api: GeneratedStructuredIngestion;\n\n /** @internal */\n constructor(api: GeneratedStructuredIngestion) {\n this.api = api;\n }\n\n /**\n * Register a new data source.\n *\n * @param request - Source registration request.\n * @returns Registration result.\n */\n async register(\n request: RegisterSourceRequest,\n ): Promise<RegisterSourceResponse> {\n const response = await this.api.registerSource(request);\n return response.data;\n }\n\n /**\n * List all registered data sources.\n *\n * @returns List of sources.\n */\n async list(): Promise<ListSourcesResponse> {\n const response = await this.api.listSources();\n return response.data;\n }\n\n /**\n * Get details for a registered source.\n *\n * @param sourceId - Source identifier.\n * @returns Source details and health status.\n */\n async get(sourceId: string): Promise<SourceDetailResponse> {\n const response = await this.api.getSource(sourceId);\n return response.data;\n }\n\n /**\n * Delete a registered source.\n *\n * @param sourceId - Source identifier.\n */\n async delete(sourceId: string): Promise<void> {\n await this.api.deleteSource(sourceId);\n }\n\n /**\n * Discover schema from a registered source.\n *\n * @param sourceId - Source identifier.\n * @param request - Discovery parameters.\n * @returns Discovered schema with sorts and relations.\n */\n async discoverSchema(\n sourceId: string,\n request: DiscoverSchemaRequest,\n ): Promise<DiscoverSchemaResponse> {\n const response = await this.api.discoverSchema(sourceId, request);\n return response.data;\n }\n\n /**\n * Ingest data from a registered source.\n *\n * @param sourceId - Source identifier.\n * @param request - Ingestion parameters.\n * @returns Ingestion results and statistics.\n */\n async ingest(\n sourceId: string,\n request: IngestFromSourceRequest,\n ): Promise<IngestFromSourceResponse> {\n const response = await this.api.ingestFromSource(sourceId, request);\n return response.data;\n }\n}\n","import type { Communities as GeneratedCommunities } from '../api-spec/generated/Communities.js';\nimport type {\n DetectCommunitiesRequest,\n DetectCommunitiesResponse,\n GetMembershipsRequest,\n GetMembershipsResponse,\n SearchCommunitiesRequest,\n SearchCommunitiesResponse,\n} from '../types/communities.js';\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class CommunitiesClient {\n /** @internal */\n private readonly api: GeneratedCommunities;\n\n /** @internal */\n constructor(api: GeneratedCommunities) {\n this.api = api;\n }\n\n /**\n * Detect communities from existing terms.\n *\n * @param request - Detection request with tenant ID and optional config.\n * @returns Detected communities with statistics.\n */\n async detect(\n request: DetectCommunitiesRequest,\n ): Promise<DetectCommunitiesResponse> {\n const response = await this.api.detectCommunities(request);\n return response.data;\n }\n\n /**\n * Get community memberships for a term.\n *\n * @param request - Membership request with term and tenant IDs.\n * @returns Memberships with community info.\n */\n async getMemberships(\n request: GetMembershipsRequest,\n ): Promise<GetMembershipsResponse> {\n const response = await this.api.getMemberships(request);\n return response.data;\n }\n\n /**\n * Search communities by entities, impact, level, or keyword.\n *\n * @param request - Search request with mode and tenant ID.\n * @returns Matching communities.\n */\n async search(\n request: SearchCommunitiesRequest,\n ): Promise<SearchCommunitiesResponse> {\n const response = await this.api.searchCommunities(request);\n return response.data;\n }\n}\n","import type { Strings as GeneratedStrings } from '../api-spec/generated/Strings.js';\nimport type { Arithmetic as GeneratedArithmetic } from '../api-spec/generated/Arithmetic.js';\nimport type { Copy as GeneratedCopy } from '../api-spec/generated/Copy.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 (/strings/), arithmetic operations\n * (/arithmetic/), and copy operations (/copy/) into a single client.\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class UtilitiesClient {\n /** @internal */\n private readonly strings: GeneratedStrings;\n /** @internal */\n private readonly arithmetic: GeneratedArithmetic;\n /** @internal */\n private readonly copy: GeneratedCopy;\n\n /** @internal */\n constructor(strings: GeneratedStrings, arithmetic: GeneratedArithmetic, copy: GeneratedCopy) {\n this.strings = strings;\n this.arithmetic = arithmetic;\n this.copy = copy;\n }\n\n // --- String Operations ---\n\n /**\n * Compare two strings.\n *\n * @param request - Comparison request.\n */\n async stringCompare(\n request: StringCompareRequest,\n ): Promise<void> {\n await this.strings.stringCompare(request);\n }\n\n /**\n * Compare strings with a predicate operator (Wild_LIFE-style).\n *\n * @param request - Predicate comparison request.\n */\n async stringComparePredicate(\n request: StringComparePredicateRequest,\n ): Promise<void> {\n await this.strings.stringComparePredicate(request);\n }\n\n /**\n * Batch string comparison.\n *\n * @param request - Batch comparison request.\n */\n async stringCompareBatch(\n request: BatchStringCompareRequest,\n ): Promise<void> {\n await this.strings.stringCompareBatch(request);\n }\n\n /**\n * Concatenate two strings.\n *\n * @param request - Concatenation request.\n */\n async stringConcat(\n request: StringConcatRequest,\n ): Promise<void> {\n await this.strings.stringConcat(request);\n }\n\n /**\n * Get string length.\n *\n * @param request - Length request.\n */\n async stringLength(\n request: StringLengthRequest,\n ): Promise<void> {\n await this.strings.stringLength(request);\n }\n\n /**\n * Perform a general string operation.\n *\n * @param request - String operation request.\n */\n async stringOp(\n request: StringOpRequest,\n ): Promise<void> {\n await this.strings.stringOp(request);\n }\n\n /**\n * Extract a substring.\n *\n * @param request - Substring request.\n */\n async substring(\n request: SubstringRequest,\n ): Promise<void> {\n await this.strings.stringSubstr(request);\n }\n\n /**\n * Get ASCII code of a character.\n *\n * @param request - ASC request.\n */\n async asc(\n request: AscRequest,\n ): Promise<void> {\n await this.strings.stringAsc(request);\n }\n\n /**\n * Get character from ASCII code.\n *\n * @param request - CHR request.\n */\n async chr(\n request: ChrRequest,\n ): Promise<void> {\n await this.strings.stringChr(request);\n }\n\n /**\n * Convert a number to string.\n *\n * @param request - Number-to-string request.\n */\n async numberToString(\n request: NumberToStringRequest,\n ): Promise<void> {\n await this.strings.numberToString(request);\n }\n\n // --- Arithmetic Operations ---\n\n /**\n * Perform relational addition.\n *\n * @param request - Relational arithmetic request (3-way).\n */\n async add(\n request: RelationalArithRequest,\n ): Promise<void> {\n await this.arithmetic.arithAdd(request);\n }\n\n /**\n * Perform relational subtraction.\n *\n * @param request - Relational arithmetic request (3-way).\n */\n async sub(\n request: RelationalArithRequest,\n ): Promise<void> {\n await this.arithmetic.arithSub(request);\n }\n\n /**\n * Perform relational multiplication.\n *\n * @param request - Relational arithmetic request (3-way).\n */\n async mult(\n request: RelationalArithRequest,\n ): Promise<void> {\n await this.arithmetic.arithMult(request);\n }\n\n /**\n * Perform relational division.\n *\n * @param request - Relational arithmetic request (3-way).\n */\n async div(\n request: RelationalArithRequest,\n ): Promise<void> {\n await this.arithmetic.arithDiv(request);\n }\n\n /**\n * Apply a math function (sin, cos, sqrt, etc.).\n *\n * @param request - Math function request.\n */\n async math(\n request: MathFunctionRequest,\n ): Promise<void> {\n await this.arithmetic.mathFunction(request);\n }\n\n /**\n * Perform a bitwise operation.\n *\n * @param request - Bitwise request.\n */\n async bitwise(\n request: BitwiseRequest,\n ): Promise<void> {\n await this.arithmetic.bitwiseOp(request);\n }\n\n /**\n * Perform modular arithmetic (mod, rem, gcd).\n *\n * @param request - Modular arithmetic request.\n */\n async modular(\n request: ModularArithRequest,\n ): Promise<void> {\n await this.arithmetic.modularArith(request);\n }\n\n // --- Copy Operations ---\n\n /**\n * Copy a term.\n *\n * @param request - Copy request with mode.\n */\n async copyTerm(\n request: CopyTermRequest,\n ): Promise<void> {\n await this.copy.copyTerm(request);\n }\n\n /**\n * Deep copy a term with co-reference preservation.\n *\n * @param request - Deep copy request.\n */\n async deepCopy(\n request: DeepCopyRequest,\n ): Promise<void> {\n await this.copy.deepCopy(request);\n }\n\n /**\n * Batch copy multiple terms.\n *\n * @param request - Batch copy request.\n */\n async batchCopy(\n request: BatchCopyRequest,\n ): Promise<void> {\n await this.copy.batchCopy(request);\n }\n}\n","import type { Scenarios as GeneratedScenarios } from '../api-spec/generated/Scenarios.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\n/**\n * Resource client for scenario operations.\n *\n * @remarks\n * Provides CRUD operations for scenarios (what-if analysis, verification).\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class ScenariosClient {\n /** @internal */\n private readonly api: GeneratedScenarios;\n\n /** @internal */\n constructor(api: GeneratedScenarios) {\n this.api = api;\n }\n\n /**\n * Create a new scenario.\n *\n * @param request - Scenario creation parameters.\n * @returns Created scenario (may include interactive questions).\n */\n async create(request: CreateScenarioRequest): Promise<CreateScenarioResponse> {\n const response = await this.api.createScenario(request);\n return response.data;\n }\n\n /**\n * List all scenarios.\n *\n * @returns List of scenarios.\n */\n async list(): Promise<ListScenariosResponse> {\n const response = await this.api.listScenarios();\n return response.data;\n }\n\n /**\n * Get a scenario by ID.\n *\n * @param id - Scenario ID.\n * @returns Scenario data.\n */\n async get(id: string): Promise<GetScenarioResponse> {\n const response = await this.api.getScenario(id);\n return response.data;\n }\n\n /**\n * Update a scenario.\n *\n * @param id - Scenario ID.\n * @param request - Update parameters.\n * @returns Updated scenario.\n */\n async update(\n id: string,\n request: UpdateScenarioRequest,\n ): Promise<UpdateScenarioResponse> {\n const response = await this.api.updateScenario(id, request);\n return response.data;\n }\n\n /**\n * Verify a scenario.\n *\n * @param id - Scenario ID.\n * @param request - Verification parameters.\n * @returns Verification results.\n */\n async verify(\n id: string,\n request: VerifyScenarioRequest,\n ): Promise<VerifyScenarioResponse> {\n const response = await this.api.verifyScenario(id, request);\n return response.data;\n }\n}\n","import type { ActionReviews as GeneratedActionReviews } from '../api-spec/generated/ActionReviews.js';\nimport type {\n ApproveActionRequest,\n RejectActionRequest,\n ModifyActionRequest,\n BulkApproveActionsRequest,\n BulkRejectActionsRequest,\n ActionReviewResponse,\n BulkActionReviewResponse,\n ListActionReviewsResponse,\n ActionReviewSummaryDto,\n} from '../types/action-reviews.js';\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class ActionReviewsClient {\n /** @internal */\n private readonly api: GeneratedActionReviews;\n /** @internal */\n private readonly tenantId: string;\n\n /** @internal */\n constructor(api: GeneratedActionReviews, tenantId: string) {\n this.api = api;\n this.tenantId = tenantId;\n }\n\n /**\n * Approve an autonomous action.\n *\n * @param request - Approval request with review ID.\n * @returns Review response with execution status.\n */\n async approve(\n request: ApproveActionRequest,\n ): Promise<ActionReviewResponse> {\n const response = await this.api.approveAction(request);\n return response.data;\n }\n\n /**\n * Reject an autonomous action.\n *\n * @param request - Rejection request with review ID and reason.\n * @returns Review response with execution status.\n */\n async reject(\n request: RejectActionRequest,\n ): Promise<ActionReviewResponse> {\n const response = await this.api.rejectAction(request);\n return response.data;\n }\n\n /**\n * Modify an autonomous action.\n *\n * @param request - Modification request with changes.\n * @returns Review response with execution status.\n */\n async modify(\n request: ModifyActionRequest,\n ): Promise<ActionReviewResponse> {\n const response = await this.api.modifyAction(request);\n return response.data;\n }\n\n /**\n * Bulk approve multiple actions.\n *\n * @param request - Bulk approval request with review IDs.\n * @returns Bulk response with success/failure counts.\n */\n async bulkApprove(\n request: BulkApproveActionsRequest,\n ): Promise<BulkActionReviewResponse> {\n const response = await this.api.bulkApproveActions(request);\n return response.data;\n }\n\n /**\n * Bulk reject multiple actions.\n *\n * @param request - Bulk rejection request with review IDs and reason.\n * @returns Bulk response with success/failure counts.\n */\n async bulkReject(\n request: BulkRejectActionsRequest,\n ): Promise<BulkActionReviewResponse> {\n const response = await this.api.bulkRejectActions(request);\n return response.data;\n }\n\n /**\n * List pending action reviews.\n *\n * @returns Paginated list of pending reviews.\n */\n async listPending(): Promise<ListActionReviewsResponse> {\n const response = await this.api.listPendingActionReviews();\n return response.data;\n }\n\n /**\n * Get action review summary statistics.\n *\n * @returns Summary with counts and breakdowns.\n */\n async getSummary(): Promise<ActionReviewSummaryDto> {\n const response = await this.api.getActionReviewSummary({ tenant_id: this.tenantId });\n return response.data;\n }\n}\n","import type { Discovery as GeneratedDiscovery } from '../api-spec/generated/Discovery.js';\nimport type {\n DiscoverEffectsRequest,\n DiscoverEffectsResponse,\n PredictFromDiscoveryRequest,\n PredictFromDiscoveryResponse,\n} from '../types/discovery.js';\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class DiscoveryClient {\n /** @internal */\n private readonly api: GeneratedDiscovery;\n\n /** @internal */\n constructor(api: GeneratedDiscovery) {\n this.api = api;\n }\n\n /**\n * Discover causal effects from time series data.\n *\n * @param request - Effect discovery request.\n * @returns Discovered effects with regimes and horizons.\n */\n async discoverEffects(\n request: DiscoverEffectsRequest,\n ): Promise<DiscoverEffectsResponse> {\n const response = await this.api.discoverEffects(request);\n return response.data;\n }\n\n /**\n * Predict using discovered causal structure.\n *\n * @param request - Prediction request with current values and discovery sort ID.\n * @returns Prediction result with effect predictions by horizon.\n */\n async predict(\n request: PredictFromDiscoveryRequest,\n ): Promise<PredictFromDiscoveryResponse> {\n const response = await this.api.predictFromDiscovery(request);\n return response.data;\n }\n}\n","import type { Extraction as GeneratedExtraction } from '../api-spec/generated/Extraction.js';\nimport type {\n ExtractEntitiesRequest,\n ExtractEntitiesResponse,\n} from '../types/extract.js';\n\n/**\n * Resource client for entity extraction operations.\n *\n * @remarks\n * Provides NLP-based entity extraction from text.\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class ExtractClient {\n /** @internal */\n private readonly api: GeneratedExtraction;\n\n /** @internal */\n constructor(api: GeneratedExtraction) {\n this.api = api;\n }\n\n /**\n * Extract entities from text.\n *\n * @param request - Extraction request with text and options.\n * @returns Extracted entities with labels and model info.\n */\n async extractEntities(\n request: ExtractEntitiesRequest,\n ): Promise<ExtractEntitiesResponse> {\n const response = await this.api.extractEntities(request);\n return response.data;\n }\n}\n","import type { Oversight as GeneratedOversight } from '../api-spec/generated/Oversight.js';\nimport type {\n FormalJudgeRequest,\n FormalJudgeResponse,\n FormalJudgeRefinementResponse,\n CreateOversightSessionRequest,\n CreateOversightSessionResponse,\n FinalizeOversightSessionRequest,\n IngestStepRequest,\n OversightSessionStatusResponse,\n StepVerificationResponse,\n} from '../types/oversight.js';\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 * Live sessions support incremental step-by-step verification.\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class OversightClient {\n /** @internal */\n private readonly api: GeneratedOversight;\n\n /** @internal */\n constructor(api: GeneratedOversight) {\n this.api = api;\n }\n\n /**\n * Run single-pass FormalJudge oversight verification.\n *\n * @param request - Judge request with trajectory and user intent.\n * @returns Verdict, scores, violations, and optional certificate.\n */\n async judge(\n request: FormalJudgeRequest,\n ): Promise<FormalJudgeResponse> {\n const response = await this.api.judgeTrajectory(request);\n return response.data;\n }\n\n /**\n * Run iterative refinement FormalJudge pipeline.\n *\n * @param request - Judge request with trajectory and user intent.\n * @returns Results from each refinement round with convergence status.\n */\n async refine(\n request: FormalJudgeRequest,\n ): Promise<FormalJudgeRefinementResponse> {\n const response = await this.api.judgeWithRefinement(request);\n return response.data;\n }\n\n /**\n * Create a new live oversight session.\n *\n * @param request - Session creation request with user intent and optional config.\n * @returns Session ID and creation metadata.\n */\n async createSession(\n request: CreateOversightSessionRequest,\n ): Promise<CreateOversightSessionResponse> {\n const response = await this.api.createSession(request);\n return response.data;\n }\n\n /**\n * Finalize a live oversight session, running full verification.\n *\n * @param sessionId - Session UUID to finalize.\n * @param request - Optional final output and execution log.\n * @returns Final FormalJudge verdict for the session.\n */\n async finalizeSession(\n sessionId: string,\n request: FinalizeOversightSessionRequest,\n ): Promise<FormalJudgeResponse> {\n const response = await this.api.finalizeSession(sessionId, request);\n return response.data;\n }\n\n /**\n * Get the current status of a live oversight session.\n *\n * @param sessionId - Session UUID.\n * @returns Session status including step count, score, and alerts.\n */\n async getSessionStatus(\n sessionId: string,\n ): Promise<OversightSessionStatusResponse> {\n const response = await this.api.getSessionStatus(sessionId);\n return response.data;\n }\n\n /**\n * Ingest a single trajectory step and return incremental verification result.\n *\n * @param sessionId - Session UUID.\n * @param request - Step to ingest.\n * @returns Incremental verification result with alerts.\n */\n async ingestStep(\n sessionId: string,\n request: IngestStepRequest,\n ): Promise<StepVerificationResponse> {\n const response = await this.api.ingestStep(sessionId, request);\n return response.data;\n }\n}\n","import type { Cdl as GeneratedCdl } from '../api-spec/generated/Cdl.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\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 *\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class CdlClient {\n /** @internal */\n private readonly api: GeneratedCdl;\n\n /** @internal */\n constructor(api: GeneratedCdl) {\n this.api = api;\n }\n\n /**\n * Run differentiable forward chaining (Phases 1+2).\n *\n * @param request - Forward chaining parameters.\n * @returns Weighted facts, iteration metrics, and symbolic result.\n */\n async differentiableForwardChain(\n request: DifferentiableFcRequest,\n ): Promise<DifferentiableFcResponse> {\n const response = await this.api.differentiableForwardChain(request);\n return response.data;\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 * @returns Confidence scores and compatibility.\n */\n async softUnify(\n request: SoftUnifyRequest,\n ): Promise<SoftUnifyResponse> {\n const response = await this.api.softUnifyTerms(request);\n return response.data;\n }\n\n /**\n * Run tagged forward chaining with probabilistic semiring (Phase 1).\n *\n * @param request - Tagged forward chaining parameters.\n * @returns Tagged facts with probabilities.\n */\n async taggedForwardChain(\n request: TaggedFcRequest,\n ): Promise<TaggedFcResponse> {\n const response = await this.api.taggedForwardChain(request);\n return response.data;\n }\n\n /**\n * Run monadic fixpoint inference (Phase 3).\n *\n * @param request - Monadic fixpoint parameters.\n * @returns Facts with monadic metadata.\n */\n async monadicFixpoint(\n request: MonadicFixpointRequest,\n ): Promise<MonadicFixpointResponse> {\n const response = await this.api.monadicFixpointHandler(request);\n return response.data;\n }\n\n /**\n * Run derived inference through composed CDL layer (Phase 4).\n *\n * @param request - Feature pairs for inference.\n * @returns Inference results with architecture info.\n */\n async derivedInference(\n request: DerivedInferenceRequest,\n ): Promise<DerivedInferenceResponse> {\n const response = await this.api.derivedInference(request);\n return response.data;\n }\n\n /**\n * Classify text for safety violations using CDL fact grounding (Phase 5).\n *\n * @param request - Safety classification request.\n * @returns Safety decisions, probabilities, and model info.\n */\n async classifySafety(\n request: ClassifySafetyRequest,\n ): Promise<ClassifySafetyResponse> {\n const response = await this.api.classifySafety(request);\n return response.data;\n }\n\n /**\n * Dynamically add a sort to the CDL architecture (Phase 6).\n *\n * @param request - Sort definition.\n * @returns Adaptation result with verification.\n */\n async dynamicAddSort(\n request: DynamicAddSortRequest,\n ): Promise<DynamicAddSortResponse> {\n const response = await this.api.dynamicAddSort(request);\n return response.data;\n }\n\n /**\n * Get CDL subsystem status.\n *\n * @returns CDL component statuses.\n */\n async getStatus(): Promise<CdlStatusResponse> {\n const response = await this.api.cdlStatus();\n return response.data;\n }\n}\n","import type { NeuroSymbolic as GeneratedNeuroSymbolic } from '../api-spec/generated/NeuroSymbolic.js';\nimport type {\n NeuroSymbolicStatusResponse,\n DiagnosticsResponse,\n TrainingTriggerResponse,\n TrainFromTracesResponse,\n GFlowNetTrainResponse,\n E2ETrainingRequest,\n E2ETrainingResponse,\n SaveWeightsResponse,\n EmbeddingVerificationResponse,\n SortBoxRequest,\n SortBoxResponse,\n} from '../types/neuro-symbolic.js';\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class NeuroSymbolicClient {\n /** @internal */\n private readonly api: GeneratedNeuroSymbolic;\n\n /** @internal */\n constructor(api: GeneratedNeuroSymbolic) {\n this.api = api;\n }\n\n /**\n * Get neuro-symbolic system status.\n *\n * @returns System status.\n */\n async getStatus(): Promise<NeuroSymbolicStatusResponse> {\n const response = await this.api.neuroSymbolicStatus();\n return response.data;\n }\n\n /**\n * Get neuro-symbolic diagnostics.\n *\n * @returns Diagnostics information.\n */\n async getDiagnostics(): Promise<DiagnosticsResponse> {\n const response = await this.api.neuroSymbolicDiagnostics();\n return response.data;\n }\n\n /**\n * Trigger scorer training.\n *\n * @returns Training trigger result.\n */\n async trainScorer(): Promise<TrainingTriggerResponse> {\n const response = await this.api.neuroSymbolicTrain();\n return response.data;\n }\n\n /**\n * Trigger embedding training.\n *\n * @returns Training trigger result.\n */\n async trainEmbeddings(): Promise<TrainingTriggerResponse> {\n const response = await this.api.neuroSymbolicTrainEmbeddings();\n return response.data;\n }\n\n /**\n * Trigger GFlowNet training.\n *\n * @returns GFlowNet training result.\n */\n async trainGflownet(): Promise<GFlowNetTrainResponse> {\n const response = await this.api.neuroSymbolicTrainGflownet();\n return response.data;\n }\n\n /**\n * Train the neural scorer from accumulated search traces.\n *\n * Drains the trace buffer collected during guided searches and runs a training cycle.\n * This is the feedback loop for AlphaProof-style learning: search -> collect traces -> train -> improved search.\n * This is a blocking operation -- the response is returned after training completes.\n *\n * @returns Training result including loss and number of traces consumed.\n * @throws {ApiError} If the server returns an error response.\n * @example\n * ```ts\n * const result = await client.neuroSymbolic.trainFromTraces();\n * console.log(`Triggered: ${result.triggered}, Loss: ${result.loss}, Traces: ${result.traces_consumed}`);\n * ```\n * @remarks Uses untagged serialization. POST /api/v1/admin/neuro-symbolic/train/from-traces\n */\n async trainFromTraces(): Promise<TrainFromTracesResponse> {\n const response = await this.api.neuroSymbolicTrainFromTraces();\n return response.data;\n }\n\n /**\n * Run end-to-end training.\n *\n * @param request - Training configuration.\n * @returns Training results.\n */\n async trainE2e(\n request: E2ETrainingRequest,\n ): Promise<E2ETrainingResponse> {\n const response = await this.api.neuroSymbolicTrainE2E(request);\n return response.data;\n }\n\n /**\n * Save trained weights.\n *\n * @returns Save result.\n */\n async saveWeights(): Promise<SaveWeightsResponse> {\n const response = await this.api.neuroSymbolicSaveWeights();\n return response.data;\n }\n\n /**\n * Verify embedding quality.\n *\n * @returns Verification results for containment, meet preservation, and specificity.\n */\n async verifyEmbeddings(): Promise<EmbeddingVerificationResponse> {\n const response = await this.api.neuroSymbolicVerifyEmbeddings();\n return response.data;\n }\n\n /**\n * Look up a sort's box embedding.\n *\n * @param request - Sort box lookup request.\n * @returns Sort box coordinates and volume.\n */\n async sortBoxLookup(\n request: SortBoxRequest,\n ): Promise<SortBoxResponse> {\n const response = await this.api.neuroSymbolicSortBox(request);\n return response.data;\n }\n}\n","import type { Analysis as GeneratedAnalysis } from '../api-spec/generated/Analysis.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\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 * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class AnalysisClient {\n /** @internal */\n private readonly api: GeneratedAnalysis;\n\n /** @internal */\n constructor(api: GeneratedAnalysis) {\n this.api = api;\n }\n\n /**\n * Run sort discovery analysis on existing terms.\n *\n * @param request - Discovery parameters.\n * @returns Discovery results with recommendations.\n */\n async sortDiscovery(request: SortDiscoveryRequest): Promise<SortDiscoveryResponse> {\n const response = await this.api.analyzeSortDiscovery(request);\n return response.data;\n }\n\n /**\n * Start an interactive attribute exploration session.\n *\n * @param request - Exploration parameters.\n * @returns Session ID and first question.\n */\n async startExploration(request: StartExplorationRequest): Promise<StartExplorationResponse> {\n const response = await this.api.startExploration(request);\n return response.data;\n }\n\n /**\n * Confirm the current implication in an exploration session.\n *\n * @param sessionId - Exploration session ID.\n * @returns Next question and progress.\n */\n async confirmImplication(sessionId: string): Promise<ConfirmResponse> {\n const response = await this.api.confirmImplication(sessionId);\n return response.data;\n }\n\n /**\n * Refute the current implication with a counterexample.\n *\n * @param sessionId - Exploration session ID.\n * @param request - Counterexample.\n * @returns Next question and progress.\n */\n async refuteImplication(\n sessionId: string,\n request: RefuteRequest,\n ): Promise<RefuteResponse> {\n const response = await this.api.refuteImplication(sessionId, request);\n return response.data;\n }\n\n /**\n * Get the current status of an exploration session.\n *\n * @param sessionId - Exploration session ID.\n * @returns Session status with progress and confirmed implications.\n */\n async getExplorationStatus(sessionId: string): Promise<ExplorationStatusResponse> {\n const response = await this.api.explorationStatus(sessionId);\n return response.data;\n }\n\n /**\n * Complete an exploration session and create rules from the discovered basis.\n *\n * @param sessionId - Exploration session ID.\n * @returns Final implications and rules created.\n */\n async completeExploration(sessionId: string): Promise<ExplorationCompleteResponse> {\n const response = await this.api.completeExploration(sessionId);\n return response.data;\n }\n}\n","import type { Preferences as GeneratedPreferences } from '../api-spec/generated/Preferences.js';\nimport type {\n RecordSelectionRequest,\n RecordSelectionResponse,\n PredictPreferencesRequest,\n PredictPreferencesResponse,\n} from '../types/preferences.js';\n\n/**\n * Resource client for Bayesian preference learning operations.\n *\n * @remarks\n * Provides user preference recording and prediction for term ranking.\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class PreferencesClient {\n /** @internal */\n private readonly api: GeneratedPreferences;\n\n /** @internal */\n constructor(api: GeneratedPreferences) {\n this.api = api;\n }\n\n /**\n * Record a user's term selection for preference learning.\n *\n * @param request - Selection to record.\n * @returns Recording result.\n */\n async recordSelection(\n request: RecordSelectionRequest,\n ): Promise<RecordSelectionResponse> {\n const response = await this.api.recordSelection(request);\n return response.data;\n }\n\n /**\n * Predict user preferences for candidate terms.\n *\n * @param request - Prediction request with candidates.\n * @returns Predictions sorted by score.\n */\n async predict(\n request: PredictPreferencesRequest,\n ): Promise<PredictPreferencesResponse> {\n const response = await this.api.predictPreferences(request);\n return response.data;\n }\n}\n","import type { Functions as GeneratedFunctions } from '../api-spec/generated/Functions.js';\nimport type {\n RegisterFunctionRequest,\n RegisterFunctionResponse,\n EvaluateFunctionRequest,\n EvaluateFunctionResponse,\n} from '../types/functions.js';\n\n/**\n * Resource client for LIFE-style user-defined function operations.\n *\n * @remarks\n * Provides registration and evaluation of user-defined functions using\n * the LIFE-style FunctionEvaluator. Functions are defined by ordered clauses\n * with pattern matching, optional guards, and expression bodies.\n *\n * Function values use a tagged serialization format with a `type` discriminator\n * (e.g., `{\"type\": \"Integer\", \"value\": 42}`).\n *\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class FunctionsClient {\n /** @internal */\n private readonly api: GeneratedFunctions;\n\n /** @internal */\n constructor(api: GeneratedFunctions) {\n this.api = api;\n }\n\n /**\n * Register a user-defined function.\n *\n * @param request - Function registration parameters including name, arity, and clauses.\n * @returns Registration confirmation with the assigned function UUID and clause count.\n * @throws {ApiError} If the request fails (e.g., invalid clauses or duplicate name).\n *\n * @remarks\n * Functions are defined by ordered clauses. Each clause has parameter patterns,\n * an optional guard, and a body. During evaluation, clauses are tried in order;\n * the first whose patterns and guard match is evaluated.\n *\n * Uses tagged {@link FunctionValueDto} serialization format.\n *\n * @example\n * ```typescript\n * const result = await client.functions.registerFunction({\n * name: 'factorial',\n * arity: 1,\n * tenant_id: 'my-tenant-uuid',\n * clauses: [\n * {\n * parameters: [{ type: 'Integer', value: 0 }],\n * body: { type: 'Value', value: { type: 'Integer', value: 1 } },\n * },\n * {\n * parameters: [{ type: 'Variable', name: 'n' }],\n * guard: { type: 'GreaterThan', var: 'n', value: { type: 'Integer', value: 0 } },\n * body: {\n * type: 'Expression',\n * expr: {\n * type: 'BinaryOp',\n * op: 'Multiply',\n * left: { type: 'Variable', name: 'n' },\n * right: {\n * type: 'FunctionCall',\n * function_name: 'factorial',\n * arguments: [{\n * type: 'BinaryOp',\n * op: 'Subtract',\n * left: { type: 'Variable', name: 'n' },\n * right: { type: 'Literal', value: { type: 'Integer', value: 1 } },\n * }],\n * },\n * },\n * },\n * },\n * ],\n * });\n * console.log(result.function_id); // UUID of the registered function\n * ```\n */\n async registerFunction(\n request: RegisterFunctionRequest,\n ): Promise<RegisterFunctionResponse> {\n const response = await this.api.registerFunction(request);\n return response.data;\n }\n\n /**\n * Evaluate a registered function with the given arguments.\n *\n * @param request - Evaluation parameters including function name and argument values.\n * @returns Evaluation result: either a concrete value or a suspension reason.\n * @throws {ApiError} If the request fails (e.g., function not found or arity mismatch).\n *\n * @remarks\n * The response is a tagged union discriminated by `result_type`:\n * - `\"Value\"` — evaluation succeeded, `value` contains the result.\n * - `\"Suspend\"` — evaluation was suspended, `reason` explains why.\n *\n * The `max_depth` parameter limits recursion depth (defaults to 100).\n *\n * Uses tagged {@link FunctionValueDto} serialization format.\n *\n * @example\n * ```typescript\n * const result = await client.functions.evaluateFunction({\n * function_name: 'factorial',\n * arguments: [{ type: 'Integer', value: 5 }],\n * tenant_id: 'my-tenant-uuid',\n * });\n * if (result.result_type === 'Value') {\n * console.log(result.value); // { type: 'Integer', value: 120 }\n * } else {\n * console.log('Suspended:', result.reason);\n * }\n * ```\n */\n async evaluateFunction(\n request: EvaluateFunctionRequest,\n ): Promise<EvaluateFunctionResponse> {\n const response = await this.api.evaluateFunction(request);\n return response.data;\n }\n}\n","import type { WebhookActions as GeneratedWebhookActions } from '../api-spec/generated/WebhookActions.js';\nimport type {\n RegisterExternalActionRequest,\n RegisterExternalActionResponse,\n InvokeActionRequest,\n InvokeActionResponse,\n WebhookCallbackRequest,\n WebhookCallbackResponse,\n ListExternalActionsResponse,\n ListPendingInvocationsResponse,\n} from '../types/webhook-actions.js';\n\n/**\n * Resource client for webhook-based external action operations.\n *\n * @remarks\n * Provides registration, invocation, listing, and callback completion\n * for external actions that integrate via webhooks. External actions\n * create sorts inheriting from `effect` in the sort hierarchy, and\n * invocations use residuation to suspend until the webhook callback\n * provides output values.\n *\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class WebhookActionsClient {\n /** @internal */\n private readonly api: GeneratedWebhookActions;\n /** @internal */\n private readonly tenantId: string;\n\n /** @internal */\n constructor(api: GeneratedWebhookActions, tenantId: string) {\n this.api = api;\n this.tenantId = tenantId;\n }\n\n /**\n * Register a new external action type.\n *\n * @param request - Registration parameters including name, webhook URL, inputs, and outputs.\n * @returns Registration confirmation with the assigned action ID and sort ID.\n * @throws {ApiError} If the request fails (e.g., duplicate name or invalid webhook URL).\n *\n * @remarks\n * Creates a new sort in the hierarchy inheriting from `effect`,\n * with features for all inputs and outputs. The sort name matches\n * the action name.\n *\n * @example\n * ```typescript\n * const result = await client.webhookActions.register({\n * name: 'send_email',\n * webhook_url: 'https://api.example.com/actions/send-email',\n * required_inputs: ['to', 'subject', 'body'],\n * outputs: ['message_id', 'sent_at'],\n * tenant_id: 'my-tenant-uuid',\n * });\n * console.log(result.action_id, result.sort_id);\n * ```\n */\n async register(\n request: RegisterExternalActionRequest,\n ): Promise<RegisterExternalActionResponse> {\n const response = await this.api.registerExternalAction(request);\n return response.data;\n }\n\n /**\n * Invoke a registered external action.\n *\n * @param name - Name of the action to invoke.\n * @param request - Invocation parameters including input values.\n * @returns Invocation details with the callback URL and invocation ID.\n * @throws {ApiError} If the request fails (e.g., action not found or missing required inputs).\n *\n * @remarks\n * Creates an action Psi-term with the provided inputs, sends a webhook\n * to the registered URL, and residuates on unbound outputs. The external\n * system should POST to the returned `callback_url` when complete.\n *\n * @example\n * ```typescript\n * const result = await client.webhookActions.invoke('send_email', {\n * action_name: 'send_email',\n * inputs: { to: 'user@example.com', subject: 'Hello', body: 'World' },\n * tenant_id: 'my-tenant-uuid',\n * });\n * console.log(result.invocation_id, result.callback_url);\n * ```\n */\n async invoke(\n name: string,\n request: InvokeActionRequest,\n ): Promise<InvokeActionResponse> {\n const response = await this.api.invokeAction(name, request);\n return response.data;\n }\n\n /**\n * Complete a pending invocation by processing a webhook callback.\n *\n * @param invocationId - The invocation ID to complete.\n * @param request - Callback data including status and output values.\n * @returns Callback processing result with demon firing details.\n * @throws {ApiError} If the request fails (e.g., invocation not found or already completed).\n *\n * @remarks\n * Binds output values to the action Psi-term's features and fires demons.\n * Optionally bridges the result as a belief into a cognitive agent's TermStore\n * via `notify_agent_id` and `notify_tenant_id`.\n *\n * @example\n * ```typescript\n * const result = await client.webhookActions.completeInvocation('inv-123', {\n * status: 'success',\n * outputs: { message_id: 'msg-456', sent_at: '2024-01-15T10:30:00Z' },\n * });\n * console.log(result.demons_fired, result.term_updated);\n * ```\n */\n async completeInvocation(\n invocationId: string,\n request: WebhookCallbackRequest,\n ): Promise<WebhookCallbackResponse> {\n const response = await this.api.completeInvocation(invocationId, request);\n return response.data;\n }\n\n /**\n * List all registered external actions for the tenant.\n *\n * @returns List of registered actions with total count.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Returns all actions registered for the tenant configured on this client.\n *\n * @example\n * ```typescript\n * const result = await client.webhookActions.listActions();\n * console.log(`Found ${result.total} actions`);\n * for (const action of result.actions) {\n * console.log(action.name, action.webhook_url);\n * }\n * ```\n */\n async listActions(): Promise<ListExternalActionsResponse> {\n const response = await this.api.listExternalActions({ tenant_id: this.tenantId });\n return response.data;\n }\n\n /**\n * List pending invocations for the tenant.\n *\n * @returns List of pending invocations with total count.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Returns all invocations awaiting webhook callback completion\n * for the tenant configured on this client.\n *\n * @example\n * ```typescript\n * const result = await client.webhookActions.listPendingInvocations();\n * console.log(`${result.total_pending} pending invocations`);\n * for (const inv of result.invocations) {\n * console.log(inv.invocation_id, inv.action_name, inv.status);\n * }\n * ```\n */\n async listPendingInvocations(): Promise<ListPendingInvocationsResponse> {\n const response = await this.api.listPendingInvocations({ tenant_id: this.tenantId });\n return response.data;\n }\n}\n","import type { Synthetic as GeneratedSynthetic } from '../api-spec/generated/Synthetic.js';\nimport type {\n CalibrateRequest,\n CalibrationReportDto,\n CheckDiversityRequest,\n CheckDiversityResponse,\n ExportJsonlResponse,\n GenerateNegativesRequest,\n GenerateNegativesResponse,\n GenerateSyntheticDataRequest,\n GenerateSyntheticDataResponse,\n GenerationPromptRequest,\n GenerationPromptResponse,\n VerbalizeTermRequest,\n VerbalizeTermResponse,\n VerifyFaithfulnessRequest,\n VerifyFaithfulnessResponse,\n VerifyRoundTripRequest,\n VerifyRoundTripResponse,\n} from '../types/synthetic.js';\n\n/**\n * Resource client for synthetic data generation operations.\n *\n * @remarks\n * Provides methods for generating synthetic training data from the knowledge base,\n * including positive and negative examples, verbalization, calibration, diversity\n * checking, faithfulness verification, and JSONL export.\n *\n * All endpoints operate on the authenticated tenant's knowledge base.\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class SyntheticClient {\n /** @internal */\n private readonly api: GeneratedSynthetic;\n\n /** @internal */\n constructor(api: GeneratedSynthetic) {\n this.api = api;\n }\n\n /**\n * Build a generation prompt for LLM-based verbalization.\n *\n * @param request - Prompt generation parameters including term ID and optional schema sort IDs.\n * @returns A structured prompt with stable prefix (cacheable) and dynamic content.\n * @throws {ApiError} If the request fails (e.g., term not found).\n *\n * @remarks\n * Creates a structured prompt with a stable prefix (cacheable across batch calls)\n * and dynamic content for a specific term. Mirrors the extraction pipeline's prompt\n * architecture for KV-cache reuse.\n *\n * Requires X-Tenant-Id header (set via client configuration).\n *\n * @example\n * ```typescript\n * const result = await client.synthetic.buildGenerationPrompt({\n * term_id: 'term-uuid',\n * schema_sort_ids: ['sort-uuid-1', 'sort-uuid-2'],\n * });\n * console.log(result.full_prompt);\n * console.log(result.stable_prefix); // cacheable across calls\n * ```\n */\n async buildGenerationPrompt(\n request: GenerationPromptRequest,\n ): Promise<GenerationPromptResponse> {\n const response = await this.api.buildGenerationPrompt(request);\n return response.data;\n }\n\n /**\n * Run ECE calibration on extraction predictions.\n *\n * @param request - Calibration parameters including predictions and sort name mapping.\n * @returns ECE calibration report with per-sort results and augmentation targets.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Computes per-sort and per-feature Expected Calibration Error, identifies\n * augmentation targets, and allocates exponential budgets for targeted\n * synthetic data generation.\n *\n * @example\n * ```typescript\n * const report = await client.synthetic.calibrate({\n * predictions: [\n * { sort_id: 'sort-uuid', confidence: 0.9, is_correct: true },\n * ],\n * sort_names: { 'sort-uuid': 'Employee' },\n * });\n * console.log(`Global ECE: ${report.global_ece}`);\n * for (const target of report.augmentation_targets) {\n * console.log(`${target.sort_name} needs ${target.recommended_examples} more examples`);\n * }\n * ```\n */\n async calibrate(request: CalibrateRequest): Promise<CalibrationReportDto> {\n const response = await this.api.calibrate(request);\n return response.data;\n }\n\n /**\n * Check diversity of a candidate term against existing terms in the knowledge base.\n *\n * @param request - Diversity check parameters including candidate entity and existing term IDs.\n * @returns Diversity check result with novelty score and closest match.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Computes structural similarity using Wu-Palmer sort distance and Jaccard feature\n * overlap. Returns novelty score and closest match.\n *\n * Requires X-Tenant-Id header (set via client configuration).\n *\n * @example\n * ```typescript\n * const result = await client.synthetic.checkDiversity({\n * candidate: { sort_id: 'sort-uuid', features: { name: 'Alice' } },\n * existing_term_ids: ['term-uuid-1', 'term-uuid-2'],\n * min_diversity_score: 0.3,\n * });\n * console.log(`Novel: ${result.is_diverse}, score: ${result.novelty_score}`);\n * ```\n */\n async checkDiversity(\n request: CheckDiversityRequest,\n ): Promise<CheckDiversityResponse> {\n const response = await this.api.checkDiversity(request);\n return response.data;\n }\n\n /**\n * Export synthetic training data as JSONL format.\n *\n * @param request - Generation parameters (same as generateSynthetic).\n * @returns JSONL string and example count.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Generates synthetic data and returns it directly as JSONL (one JSON object per line),\n * suitable for HuggingFace-compatible fine-tuning pipelines.\n *\n * Requires X-Tenant-Id header (set via client configuration).\n *\n * @example\n * ```typescript\n * const result = await client.synthetic.exportJsonl({\n * target_sorts: ['sort-uuid'],\n * max_terms_per_sort: 50,\n * });\n * console.log(`Exported ${result.example_count} examples`);\n * // Write JSONL to file for fine-tuning\n * ```\n */\n async exportJsonl(\n request: GenerateSyntheticDataRequest,\n ): Promise<ExportJsonlResponse> {\n const response = await this.api.exportJsonl(request);\n return response.data;\n }\n\n /**\n * Generate enhanced negative examples for target sorts.\n *\n * @param request - Negative generation parameters including target sorts and strategy flags.\n * @returns Generated negative examples with provenance.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Uses principled strategies to create training examples that are negative (invalid)\n * for specific, documented reasons: sort incompatibility, feature perturbation,\n * cross-sort confusion, missing required features, and feature type mismatch.\n *\n * Requires X-Tenant-Id header (set via client configuration).\n *\n * @example\n * ```typescript\n * const result = await client.synthetic.generateNegatives({\n * target_sorts: ['sort-uuid-1', 'sort-uuid-2'],\n * max_per_sort: 5,\n * seed: 42,\n * });\n * console.log(`Generated ${result.count} negatives`);\n * for (const neg of result.negatives) {\n * console.log(`${neg.strategy}: ${neg.explanation}`);\n * }\n * ```\n */\n async generateNegatives(\n request: GenerateNegativesRequest,\n ): Promise<GenerateNegativesResponse> {\n const response = await this.api.generateNegatives(request);\n return response.data;\n }\n\n /**\n * Generate synthetic training data from the knowledge base.\n *\n * @param request - Generation parameters including target sorts, strategy flags, and limits.\n * @returns Comprehensive generation result with examples, reports, and optional verification.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Uses constraint solving (backward chaining, CLP(FD), MCMC, forward chaining) to\n * generate valid Psi-terms, then converts them into multi-format training pairs for\n * SLM fine-tuning. Supports 5 training pair formats: Extraction, QuestionAnswer,\n * FillBlank, Negative, and MultiHop.\n *\n * Requires X-Tenant-Id header (set via client configuration).\n *\n * @example\n * ```typescript\n * const result = await client.synthetic.generateSynthetic({\n * target_sorts: ['sort-uuid'],\n * max_terms_per_sort: 100,\n * enable_verbalization: true,\n * seed: 42,\n * });\n * console.log(`Generated ${result.training_pairs_count} training pairs`);\n * console.log(`Report: ${result.report.terms_generated} terms generated`);\n * ```\n */\n async generateSynthetic(\n request: GenerateSyntheticDataRequest,\n ): Promise<GenerateSyntheticDataResponse> {\n const response = await this.api.generateSynthetic(request);\n return response.data;\n }\n\n /**\n * Verbalize a single term from the knowledge base.\n *\n * @param request - Verbalization parameters including term ID and strategy.\n * @returns Verbalization result with generated text.\n * @throws {ApiError} If the request fails (e.g., term not found).\n *\n * @remarks\n * Converts a Psi-term into natural language text using the specified strategy.\n * Useful for on-demand text generation from existing terms.\n *\n * Requires X-Tenant-Id header (set via client configuration).\n *\n * @example\n * ```typescript\n * const result = await client.synthetic.verbalizeTerm({\n * term_id: 'term-uuid',\n * strategy: 'SchemaGuided',\n * include_parent_context: true,\n * });\n * console.log(result.result.text);\n * ```\n */\n async verbalizeTerm(\n request: VerbalizeTermRequest,\n ): Promise<VerbalizeTermResponse> {\n const response = await this.api.verbalizeTerm(request);\n return response.data;\n }\n\n /**\n * Verify faithfulness of generated text against source entities.\n *\n * @param request - Verification parameters with original and extracted feature maps.\n * @returns Faithfulness verification result with score and mismatch details.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Compares original entity features against extracted features to determine if the\n * generated text faithfully represents the source Psi-term. Uses exact string matching\n * with configurable thresholds for score and recovery rate.\n *\n * Requires X-Tenant-Id header (set via client configuration).\n *\n * @example\n * ```typescript\n * const result = await client.synthetic.verifyFaithfulness({\n * original: { name: 'Alice', role: 'Engineer' },\n * extracted: { name: 'Alice', role: 'Developer' },\n * min_score: 0.5,\n * });\n * console.log(`Passed: ${result.passed}, Score: ${result.score}`);\n * ```\n */\n async verifyFaithfulness(\n request: VerifyFaithfulnessRequest,\n ): Promise<VerifyFaithfulnessResponse> {\n const response = await this.api.verifyFaithfulness(request);\n return response.data;\n }\n\n /**\n * Verify round-trip faithfulness of extracted entities against ground truth.\n *\n * @param request - Verification parameters with ground truth and extracted entities.\n * @returns Round-trip verification result with per-entity details.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Uses OSF-aware verification with Wu-Palmer sort similarity, feature-level comparison\n * with type-aware value similarity, and Hungarian algorithm for optimal entity matching.\n *\n * Requires X-Tenant-Id header (set via client configuration).\n *\n * @example\n * ```typescript\n * const result = await client.synthetic.verifyRoundTrip({\n * ground_truth: [{ sort_id: 'sort-uuid', features: { name: 'Alice' } }],\n * extracted: [{ sort_id: 'sort-uuid', features: { name: 'Alice' } }],\n * min_faithfulness_score: 0.5,\n * });\n * console.log(`Passed: ${result.passed}, Score: ${result.faithfulness_score}`);\n * ```\n */\n async verifyRoundTrip(\n request: VerifyRoundTripRequest,\n ): Promise<VerifyRoundTripResponse> {\n const response = await this.api.verifyRoundTrip(request);\n return response.data;\n }\n}\n","import type { ProofEngine as GeneratedProofEngine } from '../api-spec/generated/ProofEngine.js';\nimport type {\n CreateRuleStoreRequest,\n RuleStoreResponse,\n AssertRuleRequest,\n AssertRuleResponse,\n RetractRuleRequest,\n RetractRuleResponse,\n FindRulesRequest,\n FindRulesResponse,\n MarkRuleStoreRequest,\n MarkRuleStoreResponse,\n UndoRuleStoreRequest,\n UndoRuleStoreResponse,\n CreateTermStoreRequest,\n TermStoreSessionResponse,\n CreateStoreTermRequest,\n ProofEngineCreateTermResponse,\n CreateVariableRequest,\n BindVariableRequest,\n BindVariableResponse,\n DereferenceRequest,\n DereferenceResponse,\n GetStoreTermRequest,\n GetStoreTermResponse,\n SetFeatureRequest,\n SetFeatureResponse,\n UnifyTermsRequest,\n UnifyTermsResponse,\n MarkTermStoreRequest,\n MarkTermStoreResponse,\n BacktrackTermStoreRequest,\n BacktrackTermStoreResponse,\n EvalBuiltinRequest,\n EvalBuiltinResponse,\n ListEvalFunctionsRequest,\n ListEvalFunctionsResponse,\n} from '../types/proof-engine.js';\n\n/**\n * Resource client for proof engine operations.\n *\n * @remarks\n * Provides low-level access to the proof engine's term store, rule store,\n * and built-in evaluation capabilities. The term store manages Psi-terms\n * with trail-based backtracking. The rule store manages logical rules\n * with assertion, retraction, and pattern matching. Eval provides access\n * to built-in functions.\n *\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class ProofEngineClient {\n /** @internal */\n private readonly api: GeneratedProofEngine;\n\n /** @internal */\n constructor(api: GeneratedProofEngine) {\n this.api = api;\n }\n\n // ─── Rule Store ───────────────────────────────────────────────────────────\n\n /**\n * Create a new rule store session.\n *\n * @param request - Rule store creation parameters including tenant ID.\n * @returns The created rule store session with store ID, tenant ID, and rule count.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * The rule store session manages logical rules for the proof engine.\n * Rules can be asserted, retracted, and queried within the session.\n *\n * @example\n * ```typescript\n * const session = await client.proofEngine.createRuleStoreSession({\n * tenant_id: 'tenant-uuid',\n * });\n * console.log(session.store_id);\n * ```\n */\n async createRuleStoreSession(\n request: CreateRuleStoreRequest,\n ): Promise<RuleStoreResponse> {\n const response = await this.api.createRuleStoreSession(request);\n return response.data;\n }\n\n /**\n * Get rule store session status.\n *\n * @param storeId - Rule store session identifier.\n * @returns The rule store session info including rule count.\n * @throws {ApiError} If the session does not exist.\n *\n * @remarks\n * Retrieves the current state of a rule store session.\n *\n * @example\n * ```typescript\n * const session = await client.proofEngine.getRuleStoreSession('store-uuid');\n * console.log(`${session.rule_count} rules in store`);\n * ```\n */\n async getRuleStoreSession(storeId: string): Promise<RuleStoreResponse> {\n const response = await this.api.getRuleStoreSession(storeId);\n return response.data;\n }\n\n /**\n * Assert a rule into the rule store.\n *\n * @param storeId - Rule store session identifier.\n * @param request - Rule assertion parameters including head, optional body, and priority.\n * @returns The assertion result with rule ID and updated rule count.\n * @throws {ApiError} If the session does not exist or the rule is invalid.\n *\n * @remarks\n * Adds a new rule to the rule store. If `assert_first` is true, the rule\n * is added at the beginning (high priority); otherwise at the end.\n * A rule with no body is treated as a fact.\n *\n * @example\n * ```typescript\n * const result = await client.proofEngine.assertRule('store-uuid', {\n * head: { constraints: [{ type: 'sort', var_name: 'X', sort_id: 'person-uuid' }] },\n * body: [],\n * });\n * console.log(`Rule ${result.rule_id} asserted, ${result.rule_count} total`);\n * ```\n */\n async assertRule(\n storeId: string,\n request: AssertRuleRequest,\n ): Promise<AssertRuleResponse> {\n const response = await this.api.assertRule(storeId, request);\n return response.data;\n }\n\n /**\n * Retract rules from the rule store by ID or pattern.\n *\n * @param storeId - Rule store session identifier.\n * @param request - Retraction parameters (rule ID, pattern, or retract-all flag).\n * @returns The retraction result with counts and retracted IDs.\n * @throws {ApiError} If the session does not exist.\n *\n * @remarks\n * TRUE HOMOICONICITY: Uses TermStore's RuleIndex with trail support for backtracking.\n * Either `rule_id` or `pattern` should be provided. If `retract_all` is true,\n * all matching rules are removed; otherwise only the first match.\n *\n * @example\n * ```typescript\n * const result = await client.proofEngine.retractRule('store-uuid', {\n * rule_id: 'rule-uuid',\n * });\n * console.log(`${result.retracted_count} rules retracted`);\n * ```\n */\n async retractRule(\n storeId: string,\n request: RetractRuleRequest,\n ): Promise<RetractRuleResponse> {\n const response = await this.api.retractRule(storeId, request);\n return response.data;\n }\n\n /**\n * Find rules matching a pattern.\n *\n * @param storeId - Rule store session identifier.\n * @param request - Find request with a rule clause pattern.\n * @returns Matching rules.\n * @throws {ApiError} If the session does not exist.\n *\n * @remarks\n * Searches the rule store for rules whose head matches the provided pattern.\n *\n * @example\n * ```typescript\n * const result = await client.proofEngine.findRules('store-uuid', {\n * pattern: { constraints: [{ type: 'sort', var_name: 'X', sort_id: 'person-uuid' }] },\n * });\n * console.log(`Found ${result.matching_rules.length} matching rules`);\n * ```\n */\n async findRules(\n storeId: string,\n request: FindRulesRequest,\n ): Promise<FindRulesResponse> {\n const response = await this.api.findRules(storeId, request);\n return response.data;\n }\n\n /**\n * Mark a rule store checkpoint for backtracking.\n *\n * @param storeId - Rule store session identifier.\n * @param request - Empty object (checkpoint is based on session state).\n * @returns The checkpoint marker index.\n * @throws {ApiError} If the session does not exist.\n *\n * @remarks\n * Creates a checkpoint in the rule store that can be reverted to using\n * {@link undoRuleStore}.\n *\n * @example\n * ```typescript\n * const marker = await client.proofEngine.markRuleStore('store-uuid', {});\n * console.log(`Checkpoint at index ${marker.marker_index}`);\n * ```\n */\n async markRuleStore(\n storeId: string,\n request: MarkRuleStoreRequest,\n ): Promise<MarkRuleStoreResponse> {\n const response = await this.api.markRuleStore(storeId, request);\n return response.data;\n }\n\n /**\n * Undo to a rule store checkpoint.\n *\n * @param storeId - Rule store session identifier.\n * @param request - Undo request with marker index to revert to.\n * @returns Whether the undo succeeded and the resulting rule count.\n * @throws {ApiError} If the session does not exist or the marker is invalid.\n *\n * @remarks\n * Reverts the rule store to a previously created checkpoint.\n *\n * @example\n * ```typescript\n * const result = await client.proofEngine.undoRuleStore('store-uuid', {\n * marker_index: 0,\n * });\n * console.log(`Undo ${result.success ? 'succeeded' : 'failed'}, ${result.rule_count} rules`);\n * ```\n */\n async undoRuleStore(\n storeId: string,\n request: UndoRuleStoreRequest,\n ): Promise<UndoRuleStoreResponse> {\n const response = await this.api.undoRuleStore(storeId, request);\n return response.data;\n }\n\n // ─── Term Store ───────────────────────────────────────────────────────────\n\n /**\n * Create a new term store session.\n *\n * @param request - Term store creation parameters including tenant ID.\n * @returns The created session with session ID, term count, and variable count.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * The term store session manages Psi-terms with trail-based backtracking.\n * Terms and variables can be created, bound, unified, and dereferenced.\n *\n * @example\n * ```typescript\n * const session = await client.proofEngine.createTermStoreSession({\n * tenant_id: 'tenant-uuid',\n * });\n * console.log(session.session_id);\n * ```\n */\n async createTermStoreSession(\n request: CreateTermStoreRequest,\n ): Promise<TermStoreSessionResponse> {\n const response = await this.api.createTermStoreSession(request);\n return response.data;\n }\n\n /**\n * Get term store session status.\n *\n * @param sessionId - Term store session identifier.\n * @returns The session info including term and variable counts.\n * @throws {ApiError} If the session does not exist.\n *\n * @remarks\n * Retrieves the current state of a term store session.\n *\n * @example\n * ```typescript\n * const session = await client.proofEngine.getTermStoreSession('session-uuid');\n * console.log(`${session.term_count} terms, ${session.variable_count} variables`);\n * ```\n */\n async getTermStoreSession(\n sessionId: string,\n ): Promise<TermStoreSessionResponse> {\n const response = await this.api.getTermStoreSession(sessionId);\n return response.data;\n }\n\n /**\n * Create a term in the term store.\n *\n * @param sessionId - Term store session identifier.\n * @param request - Term creation parameters including sort ID and optional features.\n * @returns The created term info with term ID.\n * @throws {ApiError} If the session does not exist or the sort is invalid.\n *\n * @remarks\n * Creates a new term in the term store with the specified sort and features.\n *\n * @example\n * ```typescript\n * const term = await client.proofEngine.createStoreTerm('session-uuid', {\n * sort_id: 'person-uuid',\n * features: { name: \"Alice\" },\n * });\n * console.log(`Created term ${term.term_id}`);\n * ```\n */\n async createStoreTerm(\n sessionId: string,\n request: CreateStoreTermRequest,\n ): Promise<ProofEngineCreateTermResponse> {\n const response = await this.api.createStoreTerm(sessionId, request);\n return response.data;\n }\n\n /**\n * Create a variable in the term store.\n *\n * @param sessionId - Term store session identifier.\n * @param request - Variable creation parameters including sort ID.\n * @returns The created variable info with term ID.\n * @throws {ApiError} If the session does not exist or the sort is invalid.\n *\n * @remarks\n * Creates a new unbound variable in the term store.\n *\n * @example\n * ```typescript\n * const variable = await client.proofEngine.createStoreVariable('session-uuid', {\n * sort_id: 'person-uuid',\n * });\n * console.log(`Created variable ${variable.term_id}, is_variable: ${variable.is_variable}`);\n * ```\n */\n async createStoreVariable(\n sessionId: string,\n request: CreateVariableRequest,\n ): Promise<ProofEngineCreateTermResponse> {\n const response = await this.api.createStoreVariable(sessionId, request);\n return response.data;\n }\n\n /**\n * Bind a variable to a term.\n *\n * @param sessionId - Term store session identifier.\n * @param request - Binding parameters with variable ID and target term ID.\n * @returns The binding result including trail length for backtracking.\n * @throws {ApiError} If the session does not exist or the binding is invalid.\n *\n * @remarks\n * Binds a variable to a specific term. The binding is recorded on the trail\n * and can be undone by backtracking.\n *\n * @example\n * ```typescript\n * const result = await client.proofEngine.bindStoreVariable('session-uuid', {\n * variable_id: 'var-uuid',\n * target_id: 'term-uuid',\n * });\n * console.log(`Bound ${result.variable_id} to ${result.bound_to}`);\n * ```\n */\n async bindStoreVariable(\n sessionId: string,\n request: BindVariableRequest,\n ): Promise<BindVariableResponse> {\n const response = await this.api.bindStoreVariable(sessionId, request);\n return response.data;\n }\n\n /**\n * Dereference a term to follow variable bindings to the root.\n *\n * @param sessionId - Term store session identifier.\n * @param request - Dereference parameters with term ID.\n * @returns The dereferenced term information.\n * @throws {ApiError} If the session does not exist or the term ID is invalid.\n *\n * @remarks\n * Follows variable bindings to find the ultimate target term.\n * If the term is not bound, returns the original term ID.\n *\n * @example\n * ```typescript\n * const result = await client.proofEngine.dereferenceStoreTerm('session-uuid', {\n * term_id: 'var-uuid',\n * });\n * console.log(`${result.original_id} -> ${result.dereferenced_id} (bound: ${result.is_bound})`);\n * ```\n */\n async dereferenceStoreTerm(\n sessionId: string,\n request: DereferenceRequest,\n ): Promise<DereferenceResponse> {\n const response = await this.api.dereferenceStoreTerm(sessionId, request);\n return response.data;\n }\n\n /**\n * Get term details from the term store.\n *\n * @param sessionId - Term store session identifier.\n * @param request - Request with term ID to retrieve.\n * @returns The term details including sort, features, and binding information.\n * @throws {ApiError} If the session or term does not exist.\n *\n * @remarks\n * Retrieves the full details of a term, including its features\n * and whether it is bound to another term.\n *\n * @example\n * ```typescript\n * const term = await client.proofEngine.getStoreTerm('session-uuid', {\n * term_id: 'term-uuid',\n * });\n * console.log(`Sort: ${term.sort_id}, features:`, term.features);\n * ```\n */\n async getStoreTerm(\n sessionId: string,\n request: GetStoreTermRequest,\n ): Promise<GetStoreTermResponse> {\n const response = await this.api.getStoreTerm(sessionId, request);\n return response.data;\n }\n\n /**\n * Set a feature on a term in the term store.\n *\n * @param sessionId - Term store session identifier.\n * @param request - Feature setting parameters with term ID, feature name, and value.\n * @returns Whether the operation succeeded.\n * @throws {ApiError} If the session or term does not exist.\n *\n * @remarks\n * Sets or updates a named feature on a term.\n *\n * @example\n * ```typescript\n * const result = await client.proofEngine.setStoreFeature('session-uuid', {\n * term_id: 'term-uuid',\n * feature_name: 'age',\n * value: 30,\n * });\n * console.log(`Feature set: ${result.success}`);\n * ```\n */\n async setStoreFeature(\n sessionId: string,\n request: SetFeatureRequest,\n ): Promise<SetFeatureResponse> {\n const response = await this.api.setStoreFeature(sessionId, request);\n return response.data;\n }\n\n /**\n * Unify two terms in the term store.\n *\n * @param sessionId - Term store session identifier.\n * @param request - Unification parameters with two term IDs.\n * @returns The unification result including success, unified term ID, and trail length.\n * @throws {ApiError} If the session does not exist.\n *\n * @remarks\n * Performs unification of two terms, finding the most specific common\n * specialization. The result is recorded on the trail for backtracking.\n *\n * @example\n * ```typescript\n * const result = await client.proofEngine.unifyStoreTerms('session-uuid', {\n * term1_id: 'term1-uuid',\n * term2_id: 'term2-uuid',\n * });\n * if (result.success) {\n * console.log(`Unified as ${result.unified_term_id}`);\n * } else {\n * console.log(`Failed: ${result.failure_reason}`);\n * }\n * ```\n */\n async unifyStoreTerms(\n sessionId: string,\n request: UnifyTermsRequest,\n ): Promise<UnifyTermsResponse> {\n const response = await this.api.unifyStoreTerms(sessionId, request);\n return response.data;\n }\n\n /**\n * Mark a choice point in the term store for backtracking.\n *\n * @param sessionId - Term store session identifier.\n * @param request - Empty object (marker is based on session state).\n * @returns The marker index and trail length at the time of marking.\n * @throws {ApiError} If the session does not exist.\n *\n * @remarks\n * Creates a checkpoint that can be used to backtrack to using\n * {@link backtrackTermStore}.\n *\n * @example\n * ```typescript\n * const marker = await client.proofEngine.markTermStore('session-uuid', {});\n * console.log(`Marker at index ${marker.marker_index}, trail length ${marker.trail_length}`);\n * ```\n */\n async markTermStore(\n sessionId: string,\n request: MarkTermStoreRequest,\n ): Promise<MarkTermStoreResponse> {\n const response = await this.api.markTermStore(sessionId, request);\n return response.data;\n }\n\n /**\n * Backtrack to a marker in the term store.\n *\n * @param sessionId - Term store session identifier.\n * @param request - Backtrack request with marker index.\n * @returns The backtrack result including success and undone entry count.\n * @throws {ApiError} If the session does not exist or the marker is invalid.\n *\n * @remarks\n * Reverts the term store to a previously created choice point,\n * undoing all bindings and unifications since that point.\n *\n * @example\n * ```typescript\n * const result = await client.proofEngine.backtrackTermStore('session-uuid', {\n * marker_index: 0,\n * });\n * console.log(`Backtrack ${result.success ? 'succeeded' : 'failed'}, undid ${result.undone_entries} entries`);\n * ```\n */\n async backtrackTermStore(\n sessionId: string,\n request: BacktrackTermStoreRequest,\n ): Promise<BacktrackTermStoreResponse> {\n const response = await this.api.backtrackTermStore(sessionId, request);\n return response.data;\n }\n\n // ─── Eval ─────────────────────────────────────────────────────────────────\n\n /**\n * Evaluate a built-in function.\n *\n * @param request - Evaluation parameters with function name and arguments.\n * @returns The evaluation result (discriminated union by `status` field).\n * @throws {ApiError} If the function does not exist or arguments are invalid.\n *\n * @remarks\n * Evaluates one of the proof engine's built-in functions. The response\n * is a discriminated union on the `status` field:\n * - `success` — result in `result` field\n * - `success_unit` — no return value\n * - `failure` — evaluation failed\n * - `residuate` — blocked on argument at `blocking_arg_index`\n * - `error` — error with `message`\n *\n * @example\n * ```typescript\n * const result = await client.proofEngine.evalBuiltin({\n * function_name: 'plus',\n * arguments: [1, 2],\n * });\n * if (result.status === 'success') {\n * console.log('Result:', result.result);\n * }\n * ```\n */\n async evalBuiltin(request: EvalBuiltinRequest): Promise<EvalBuiltinResponse> {\n const response = await this.api.evalBuiltin(request);\n return response.data;\n }\n\n /**\n * List available eval functions.\n *\n * @param request - Optional filter by category.\n * @returns List of available eval functions with their metadata.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Returns information about all available built-in functions that can\n * be used with {@link evalBuiltin}, optionally filtered by category.\n *\n * @example\n * ```typescript\n * const result = await client.proofEngine.listEvalFunctions({});\n * for (const fn of result.functions) {\n * console.log(`${fn.name} (${fn.category}): ${fn.description}`);\n * }\n * ```\n */\n async listEvalFunctions(\n request: ListEvalFunctionsRequest,\n ): Promise<ListEvalFunctionsResponse> {\n const response = await this.api.listEvalFunctions(request);\n return response.data;\n }\n}\n","import type { Health as GeneratedHealth } from '../api-spec/generated/Health.js';\nimport type { EnrichedHealthResponse } from '../types/health.js';\n\n/**\n * Resource client for health check operations.\n *\n * @remarks\n * Provides access to the enriched health check endpoint, which returns\n * overall status, individual component statuses, and build information.\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class HealthClient {\n /** @internal */\n private readonly api: GeneratedHealth;\n\n /** @internal */\n constructor(api: GeneratedHealth) {\n this.api = api;\n }\n\n /**\n * Check the health of the Reasoning Layer backend.\n *\n * @returns Enriched health response with overall status, component statuses, and build info.\n *\n * @example\n * ```typescript\n * const health = await client.health.check();\n * console.log(health.status); // \"healthy\"\n * console.log(health.build_info.version); // \"1.2.3\"\n * for (const component of health.components) {\n * console.log(`${component.name}: ${component.status}`);\n * }\n * ```\n */\n async check(): Promise<EnrichedHealthResponse> {\n const response = await this.api.healthCheck();\n return response.data;\n }\n}\n","import type { Admin as GeneratedAdmin } from '../api-spec/generated/Admin.js';\nimport type {\n FactoryResetResponse,\n ListTenantsResponse,\n} from '../types/admin.js';\n\n/**\n * Resource client for administrative operations.\n *\n * @remarks\n * Provides system-wide administrative endpoints that operate across all tenants.\n * These are destructive or privileged operations intended for development, testing,\n * and operator tooling — not for regular application use.\n *\n * No `X-Tenant-Id` header is required for admin endpoints.\n *\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class AdminClient {\n /** @internal */\n private readonly api: GeneratedAdmin;\n\n /** @internal */\n constructor(api: GeneratedAdmin) {\n this.api = api;\n }\n\n /**\n * Factory reset — wipe ALL data across all storage backends.\n *\n * @returns Confirmation of what was wiped, including table counts and cache status.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Destructive operation that wipes all PostgreSQL tables, Qdrant vector collections,\n * Valkey cache, and in-memory tenant inference states. Equivalent to `docker volume rm`.\n * Use only for development/testing.\n *\n * @example\n * ```typescript\n * const result = await client.admin.clearAllData();\n * console.log(result.message);\n * console.log(`Tables cleared: ${result.postgres_tables_cleared}`);\n * console.log(`Qdrant collections deleted: ${result.qdrant_collections_deleted}`);\n * ```\n */\n async clearAllData(): Promise<FactoryResetResponse> {\n const response = await this.api.clearAllData();\n return response.data;\n }\n\n /**\n * List all tenants that have data in the system.\n *\n * @returns All tenants with their term and session counts.\n * @throws {ApiError} If the request fails.\n *\n * @remarks\n * Returns all tenant IDs that have terms or ingestion sessions, with counts.\n * No `X-Tenant-Id` header required. Works in both PostgreSQL and in-memory modes.\n *\n * @example\n * ```typescript\n * const result = await client.admin.listTenants();\n * for (const tenant of result.tenants) {\n * console.log(`${tenant.tenant_id}: ${tenant.term_count} terms, ${tenant.session_count} sessions`);\n * }\n * ```\n */\n async listTenants(): Promise<ListTenantsResponse> {\n const response = await this.api.listTenants();\n return response.data;\n }\n}\n","import type { ImageExtraction as GeneratedImageExtraction } from '../api-spec/generated/ImageExtraction.js';\nimport type {\n ExtractImageRequest,\n ExtractImageResponse,\n} from '../types/image-extraction.js';\n\n/**\n * Resource client for image-based concept extraction operations.\n *\n * @remarks\n * Sends images to a vision-capable model for concept extraction.\n * Returns extracted entities, relations, and suggested sorts.\n * If `persist` is true (default), extracted concepts are persisted\n * as PsiTerms and synced to the homoiconic inference stores.\n *\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class ImageExtractionClient {\n /** @internal */\n private readonly api: GeneratedImageExtraction;\n\n /** @internal */\n constructor(api: GeneratedImageExtraction) {\n this.api = api;\n }\n\n /**\n * Extract concepts from an image using a vision LLM.\n *\n * @param request - Image extraction request with base64-encoded image data and options.\n * @returns Extracted entities, relations, suggested sorts, and extraction statistics.\n * @throws {ApiError} If the extraction request fails.\n *\n * @remarks\n * Sends the image directly to a vision-capable model (e.g., Qwen3-VL)\n * for concept extraction. Returns extracted entities, relations, and\n * suggested sorts. If `persist` is true (default), the extracted concepts\n * are persisted as PsiTerms and synced to the homoiconic inference stores.\n *\n * @example\n * ```typescript\n * const result = await client.imageExtraction.extractImage({\n * filename: 'architecture.png',\n * image: base64EncodedData,\n * owner_id: 'user-uuid',\n * instruction: 'Focus on architecture components and their connections',\n * });\n * console.log(`Extracted ${result.entities.length} entities`);\n * console.log(`Found ${result.relations.length} relations`);\n * ```\n */\n async extractImage(\n request: ExtractImageRequest,\n ): Promise<ExtractImageResponse> {\n const response = await this.api.extractImage(request);\n return response.data;\n }\n}\n","import type { Ontology as GeneratedOntology } from '../api-spec/generated/Ontology.js';\nimport type {\n GenerateOntologyRequest,\n GenerateOntologyResponse,\n} from '../types/ontology.js';\n\n/**\n * Resource client for ontology generation operations.\n *\n * @remarks\n * Provides LLM-powered ontology generation from natural language task descriptions.\n * Supports multi-turn clarification: the first call may return clarification questions,\n * and subsequent calls with answers complete the generation.\n *\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class OntologyClient {\n /** @internal */\n private readonly api: GeneratedOntology;\n\n /** @internal */\n constructor(api: GeneratedOntology) {\n this.api = api;\n }\n\n /**\n * Generate an OSFKB scenario from a natural language task description.\n *\n * @param request - Generation parameters including the prompt and optional clarification answers.\n * @returns Either clarification questions (status `\"needs_clarification\"`) or the generated scenario (status `\"complete\"`).\n * @throws {ApiError} If the request fails (e.g., 503 if no LLM is configured, 422 if the LLM returns invalid JSON, 502 if the LLM service fails).\n *\n * @remarks\n * Supports multi-turn clarification. On first call, provide only `prompt`.\n * If the response status is `\"needs_clarification\"`, supply `session_id`\n * and `answers` on the next call to complete the generation.\n *\n * @example\n * ```typescript\n * // First call -- may need clarification\n * const result = await client.ontology.generate({\n * prompt: 'Build a customer support ticket system',\n * });\n *\n * if (result.status === 'needs_clarification') {\n * // Answer the questions and call again\n * const completed = await client.ontology.generate({\n * prompt: 'Build a customer support ticket system',\n * session_id: result.session_id,\n * answers: { priority_levels: '3' },\n * });\n * }\n * ```\n */\n async generate(\n request: GenerateOntologyRequest,\n ): Promise<GenerateOntologyResponse> {\n const response = await this.api.generate(request);\n return response.data;\n }\n}\n","import type { Generation as GeneratedGeneration } from '../api-spec/generated/Generation.js';\nimport type {\n GenerateDocumentRequest,\n GenerateDocumentResponse,\n} from '../types/generation.js';\n\n/**\n * Resource client for evidence-grounded document generation.\n *\n * @remarks\n * Runs the evidence-grounded generation pipeline for a given root term.\n * The pipeline derives a specification from the root term via forward chaining,\n * then generates an artifact using an LLM with citation provenance tracking.\n *\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class GenerationClient {\n /** @internal */\n private readonly api: GeneratedGeneration;\n\n /** @internal */\n constructor(api: GeneratedGeneration) {\n this.api = api;\n }\n\n /**\n * Run the evidence-grounded generation pipeline for a given root term.\n *\n * @param request - Generation parameters including root term ID and target modality.\n * @returns Generation result including the artifact, diagnostics, and verification.\n * @throws {ApiError} If the request fails (e.g., root term not found or LLM failure).\n *\n * @remarks\n * The pipeline derives a specification from the root term via forward chaining,\n * then generates a text artifact with citation provenance. The response includes\n * diagnostic messages from each stage and optional verification results.\n *\n * @example\n * ```typescript\n * const result = await client.generation.generateDocument({\n * root_term_id: 'root-term-uuid',\n * modality: 'text',\n * });\n *\n * if (result.success && result.artifact) {\n * console.log(result.artifact.content);\n * console.log('Citations:', result.artifact.provenance.length);\n * }\n *\n * for (const diag of result.diagnostics) {\n * console.log(`[${diag.level}] ${diag.stage}: ${diag.message}`);\n * }\n * ```\n */\n async generateDocument(\n request: GenerateDocumentRequest,\n ): Promise<GenerateDocumentResponse> {\n const response = await this.api.generateDocument(request);\n return response.data;\n }\n}\n","import type { Rag as GeneratedRag } from '../api-spec/generated/Rag.js';\nimport type {\n OntologyRagRequest,\n OntologyRagResponse,\n} from '../types/rag.js';\n\n/**\n * Resource client for Ontology RAG (Retrieval-Augmented Generation) operations.\n *\n * @remarks\n * Performs True Ontology RAG combining embedding search with OSF/LIFE\n * feature unification:\n *\n * 1. Embedding search -- find matching Psi-terms via multilingual embeddings.\n * 2. Feature unification -- navigate prerequisites/dependents via Psi-term features.\n * 3. Emergent discovery -- find relations via fuzzy feature unification.\n *\n * This is a domain-agnostic API. The caller provides feature names via\n * `feature_config` and is responsible for interpreting the results.\n *\n * Delegates to generated route classes for type-safe HTTP calls.\n */\nexport class RagClient {\n /** @internal */\n private readonly api: GeneratedRag;\n\n /** @internal */\n constructor(api: GeneratedRag) {\n this.api = api;\n }\n\n /**\n * Perform an Ontology RAG query combining embedding search with feature unification.\n *\n * @param request - RAG query parameters including query text, concept sort, and optional feature config.\n * @returns RAG results including primary concepts, prerequisites, dependents, and related concepts.\n * @throws {ApiError} If the request fails (e.g., concept sort not found).\n *\n * @remarks\n * Combines three search strategies:\n * 1. Embedding search for initial concept matching.\n * 2. Feature unification for prerequisite/dependent navigation.\n * 3. Fuzzy unification for emergent relation discovery.\n *\n * The response includes statistics for each stage.\n *\n * @example\n * ```typescript\n * const result = await client.rag.ontologyRag({\n * query_text: 'machine learning fundamentals',\n * concept_sort_id: 'concept-sort-uuid',\n * max_concepts: 5,\n * min_degree: 0.8,\n * include_prerequisites: true,\n * include_dependents: true,\n * include_related: true,\n * });\n *\n * for (const concept of result.primary_concepts) {\n * console.log(`${concept.canonical_name} (${concept.match_degree})`);\n * }\n *\n * console.log(`Found ${result.stats.emergent_discovered} emergent relations`);\n * ```\n */\n async ontologyRag(\n request: OntologyRagRequest,\n ): Promise<OntologyRagResponse> {\n const response = await this.api.ontologyRag(request);\n return response.data;\n }\n}\n","import type {\n TermInputInlineByName,\n FeatureInputValueDto,\n FeatureInputVariable,\n} from '../types/homoiconic.js';\nimport type {\n LinearExpression,\n LinearConstraint,\n LinearProgramDefinition,\n ObjectiveFunction,\n VariableBounds,\n ConstraintOperator,\n} from '../types/optimize.js';\n\n// --- Internal compiler types ---\n\n/** @internal Result of compiling a linear expression to constraint antecedents. */\ninterface CompiledExpression {\n /** Antecedent constraint terms. */\n antecedents: TermInputInlineByName[];\n /** Reference to the result variable holding the expression value. */\n resultRef: FeatureInputValueDto;\n}\n\n// --- LP Builder (public API) ---\n\n/**\n * Builder namespace for defining Linear Program optimization problems.\n *\n * @remarks\n * Provides sugar functions for constructing {@link LinearProgramDefinition} objects\n * that can be passed to `client.optimize.solve()`. All functions return plain objects —\n * the builder is optional convenience, not required.\n *\n * **Serialization format**: The LP builder produces types consumed by the SDK's\n * optimize client, which internally compiles them into untagged `TermInputDto`\n * structures using CLP(Q) constraint sorts.\n *\n * @example\n * ```typescript\n * import { LP } from '@kortexya/reasoninglayer';\n *\n * const result = await client.optimize.solve({\n * objective: LP.maximize({ chairs: 3, tables: 5 }),\n * constraints: [\n * LP.constraint({ chairs: 1, tables: 3 }, '<=', 12),\n * LP.constraint({ chairs: 2, tables: 1 }, '<=', 8),\n * ],\n * bounds: LP.nonNegative('chairs', 'tables'),\n * });\n * ```\n */\nexport const LP = {\n /**\n * Create a maximization objective.\n *\n * @param coefficients - Map of variable names to their objective coefficients.\n * @returns An objective function to maximize.\n *\n * @remarks Serialization format: SDK-internal (compiled to constraint sorts).\n *\n * @example\n * ```typescript\n * LP.maximize({ chairs: 3, tables: 5 })\n * // { direction: 'maximize', coefficients: { chairs: 3, tables: 5 } }\n * ```\n */\n maximize(coefficients: LinearExpression): ObjectiveFunction {\n return { direction: 'maximize', coefficients };\n },\n\n /**\n * Create a minimization objective.\n *\n * @param coefficients - Map of variable names to their objective coefficients.\n * @returns An objective function to minimize.\n *\n * @remarks Serialization format: SDK-internal (compiled to constraint sorts).\n *\n * @example\n * ```typescript\n * LP.minimize({ cost_a: 2, cost_b: 5 })\n * // { direction: 'minimize', coefficients: { cost_a: 2, cost_b: 5 } }\n * ```\n */\n minimize(coefficients: LinearExpression): ObjectiveFunction {\n return { direction: 'minimize', coefficients };\n },\n\n /**\n * Create a linear constraint.\n *\n * @param coefficients - Map of variable names to their constraint coefficients.\n * @param op - Comparison operator: '<=', '>=', or '='.\n * @param rhs - Right-hand side constant.\n * @param label - Optional human-readable label.\n * @returns A linear constraint.\n *\n * @remarks Serialization format: SDK-internal (compiled to constraint sorts).\n *\n * @example\n * ```typescript\n * LP.constraint({ chairs: 1, tables: 3 }, '<=', 12, 'wood')\n * // { coefficients: { chairs: 1, tables: 3 }, op: '<=', rhs: 12, label: 'wood' }\n * ```\n */\n constraint(\n coefficients: LinearExpression,\n op: ConstraintOperator,\n rhs: number,\n label?: string,\n ): LinearConstraint {\n return label !== undefined\n ? { coefficients, op, rhs, label }\n : { coefficients, op, rhs };\n },\n\n /**\n * Create non-negativity bounds (>= 0) for the given variables.\n *\n * @param variables - Variable names to constrain to be non-negative.\n * @returns A bounds map with `{ min: 0 }` for each variable.\n *\n * @remarks Serialization format: SDK-internal (compiled to constraint sorts).\n *\n * @example\n * ```typescript\n * LP.nonNegative('chairs', 'tables')\n * // { chairs: { min: 0 }, tables: { min: 0 } }\n * ```\n */\n nonNegative(...variables: string[]): Record<string, VariableBounds> {\n const bounds: Record<string, VariableBounds> = {};\n for (const v of variables) {\n bounds[v] = { min: 0 };\n }\n return bounds;\n },\n\n /**\n * Create bounds for a variable.\n *\n * @param min - Lower bound (omit for unbounded below).\n * @param max - Upper bound (omit for unbounded above).\n * @returns Variable bounds specification.\n *\n * @remarks Serialization format: SDK-internal (compiled to constraint sorts).\n *\n * @example\n * ```typescript\n * LP.bounds(0, 100)\n * // { min: 0, max: 100 }\n * ```\n */\n bounds(min?: number, max?: number): VariableBounds {\n const b: VariableBounds = {};\n if (min !== undefined) b.min = min;\n if (max !== undefined) b.max = max;\n return b;\n },\n} as const;\n\n// --- Internal Compiler ---\n\n/**\n * Compiles a LinearProgramDefinition into TermInputDto structures\n * suitable for the inference engine's backward chaining LP solver.\n *\n * @param problem - The LP problem to compile.\n * @param solutionSortName - Name of the temporary sort for the solution term.\n * @returns The solution term (rule head) and antecedent constraint terms (rule body).\n *\n * @remarks\n * The compiler translates high-level LP structures into the CLP(Q) constraint sort\n * vocabulary:\n * - `real_times_constraint` for coefficient * variable products\n * - `real_plus_constraint` for summing terms\n * - `real_le_constraint`, `real_ge_constraint`, `real_eq_constraint` for comparisons\n * - `real_between_constraint` for bounded variables\n * - `maximize_objective` / `minimize_objective` for the objective\n * - `real_labeling_constraint` to trigger the simplex solver\n *\n * Optimization: coefficient of 1 skips the `real_times_constraint` and uses\n * the variable directly, reducing the constraint count.\n *\n * @internal\n */\nexport function compileLP(\n problem: LinearProgramDefinition,\n solutionSortName: string,\n): {\n solutionTerm: TermInputInlineByName;\n antecedents: TermInputInlineByName[];\n} {\n const counter = { value: 0 };\n const nextVar = (): string => `?_lp_${counter.value++}`;\n\n // Discover all variables across objective + constraints + bounds\n const variableNames = discoverVariables(problem);\n\n if (variableNames.length === 0) {\n throw new Error('LP problem has no variables. At least one variable must appear in the objective or constraints.');\n }\n\n // Create variable references: variableName -> { name: \"?variableName\" }\n const varRefs: Record<string, FeatureInputVariable> = {};\n for (const name of variableNames) {\n varRefs[name] = { name: `?${name}` };\n }\n\n const allAntecedents: TermInputInlineByName[] = [];\n\n // 1. Compile bound constraints\n if (problem.bounds) {\n for (const [varName, bounds] of Object.entries(problem.bounds)) {\n if (!(varName in varRefs)) continue;\n const ref = varRefs[varName];\n\n if (bounds.min !== undefined && bounds.max !== undefined) {\n // Use real_between_constraint for both bounds simultaneously\n allAntecedents.push({\n sort_name: 'real_between_constraint',\n features: {\n var: ref,\n lower: bounds.min,\n upper: bounds.max,\n },\n });\n } else {\n if (bounds.min !== undefined) {\n allAntecedents.push({\n sort_name: 'real_ge_constraint',\n features: {\n left: ref,\n right: bounds.min,\n },\n });\n }\n if (bounds.max !== undefined) {\n allAntecedents.push({\n sort_name: 'real_le_constraint',\n features: {\n left: ref,\n right: bounds.max,\n },\n });\n }\n }\n }\n }\n\n // 2. Compile each linear constraint\n for (const constraint of problem.constraints) {\n const compiled = compileLinearExpression(constraint.coefficients, varRefs, nextVar);\n allAntecedents.push(...compiled.antecedents);\n\n const sortName = constraintOpToSort(constraint.op);\n allAntecedents.push({\n sort_name: sortName,\n features: {\n left: compiled.resultRef,\n right: constraint.rhs,\n },\n });\n }\n\n // 3. Compile objective expression\n const objectiveCompiled = compileLinearExpression(\n problem.objective.coefficients,\n varRefs,\n nextVar,\n );\n allAntecedents.push(...objectiveCompiled.antecedents);\n\n // Determine the objective reference\n let objectiveRef = objectiveCompiled.resultRef;\n if (typeof objectiveRef === 'number') {\n // Edge case: constant objective (no variables) — bind to a variable\n const objVar: FeatureInputVariable = { name: '?_lp_objective' };\n allAntecedents.push({\n sort_name: 'real_eq_constraint',\n features: {\n left: objVar,\n right: objectiveRef,\n },\n });\n objectiveRef = objVar;\n }\n\n const objectiveSortName = problem.objective.direction === 'maximize'\n ? 'maximize_objective'\n : 'minimize_objective';\n allAntecedents.push({\n sort_name: objectiveSortName,\n features: {\n expression: objectiveRef,\n name: 'objective',\n },\n });\n\n // 4. Add labeling constraint to trigger the simplex solver\n const variableRefList: FeatureInputValueDto[] = variableNames.map(\n (name) => varRefs[name],\n );\n allAntecedents.push({\n sort_name: 'real_labeling_constraint',\n features: {\n variables: variableRefList,\n },\n });\n\n // 5. Build solution term (rule head)\n const solutionFeatures: Record<string, FeatureInputValueDto> = {};\n for (const name of variableNames) {\n solutionFeatures[name] = varRefs[name];\n }\n solutionFeatures['_objective'] = objectiveRef;\n\n const solutionTerm: TermInputInlineByName = {\n sort_name: solutionSortName,\n features: solutionFeatures,\n };\n\n return { solutionTerm, antecedents: allAntecedents };\n}\n\n/**\n * Discover all unique variable names from a problem definition.\n *\n * @internal\n */\nfunction discoverVariables(problem: LinearProgramDefinition): string[] {\n const vars = new Set<string>();\n for (const name of Object.keys(problem.objective.coefficients)) {\n vars.add(name);\n }\n for (const constraint of problem.constraints) {\n for (const name of Object.keys(constraint.coefficients)) {\n vars.add(name);\n }\n }\n if (problem.bounds) {\n for (const name of Object.keys(problem.bounds)) {\n vars.add(name);\n }\n }\n return Array.from(vars).sort();\n}\n\n/**\n * Compile a linear expression (sum of coefficient*variable terms) into\n * CLP(Q) constraint sort antecedents.\n *\n * For coefficient of 1, skips `real_times_constraint` and uses the variable directly.\n * For coefficient of 0, skips the term entirely.\n * Chains `real_plus_constraint` left-associatively for sums.\n *\n * @internal\n */\nfunction compileLinearExpression(\n expression: LinearExpression,\n varRefs: Record<string, FeatureInputVariable>,\n nextVar: () => string,\n): CompiledExpression {\n const antecedents: TermInputInlineByName[] = [];\n const termResults: FeatureInputValueDto[] = [];\n\n for (const [varName, coefficient] of Object.entries(expression)) {\n if (coefficient === 0) continue;\n\n const varRef = varRefs[varName];\n if (!varRef) continue;\n\n if (coefficient === 1) {\n // Optimization: skip real_times_constraint when coefficient is 1\n termResults.push(varRef);\n } else {\n const resultVar: FeatureInputVariable = { name: nextVar() };\n antecedents.push({\n sort_name: 'real_times_constraint',\n features: {\n coefficient,\n variable: varRef,\n result: resultVar,\n },\n });\n termResults.push(resultVar);\n }\n }\n\n if (termResults.length === 0) {\n // Empty expression evaluates to 0\n return { antecedents, resultRef: 0 };\n }\n\n if (termResults.length === 1) {\n return { antecedents, resultRef: termResults[0] };\n }\n\n // Chain binary plus constraints left-associatively: ((t0 + t1) + t2) + t3 ...\n let current = termResults[0];\n for (let i = 1; i < termResults.length; i++) {\n const sumVar: FeatureInputVariable = { name: nextVar() };\n antecedents.push({\n sort_name: 'real_plus_constraint',\n features: {\n left: current,\n right: termResults[i],\n result: sumVar,\n },\n });\n current = sumVar;\n }\n\n return { antecedents, resultRef: current };\n}\n\n/**\n * Map a constraint operator to the corresponding CLP(Q) constraint sort name.\n *\n * @internal\n */\nfunction constraintOpToSort(op: ConstraintOperator): string {\n switch (op) {\n case '<=':\n return 'real_le_constraint';\n case '>=':\n return 'real_ge_constraint';\n case '=':\n return 'real_eq_constraint';\n }\n}\n","import type { Inference as GeneratedInference } from '../api-spec/generated/Inference.js';\nimport type { Sorts as GeneratedSorts } from '../api-spec/generated/Sorts.js';\nimport type { Query as GeneratedQuery } from '../api-spec/generated/Query.js';\nimport type { Terms as GeneratedTerms } from '../api-spec/generated/Terms.js';\nimport type {\n LinearProgramDefinition,\n SolveOptions,\n OptimizationResult,\n KBOptimizationConfig,\n KBOptimizationResult,\n LinearConstraint,\n} from '../types/optimize.js';\nimport type { TermDto } from '../types/terms.js';\nimport type { ValueDto } from '../types/values.js';\nimport { compileLP } from '../builders/lp.js';\n\n/**\n * Resource client for linear program optimization.\n *\n * @remarks\n * This is a convenience layer that orchestrates the inference engine's built-in\n * CLP(Q) simplex solver. Under the hood, it compiles LP problems into homoiconic\n * rules with arithmetic constraint sorts, submits them via backward chaining,\n * and extracts the solution.\n *\n * The optimization is performed entirely server-side using exact rational arithmetic\n * (Rational64). Solutions are returned as floating-point approximations.\n *\n * @example\n * ```typescript\n * import { LP } from '@kortexya/reasoninglayer';\n *\n * const result = await client.optimize.solve({\n * objective: LP.maximize({ chairs: 3, tables: 5 }),\n * constraints: [\n * LP.constraint({ chairs: 1, tables: 3 }, '<=', 12),\n * LP.constraint({ chairs: 2, tables: 1 }, '<=', 8),\n * ],\n * bounds: LP.nonNegative('chairs', 'tables'),\n * });\n *\n * if (result.status === 'optimal') {\n * console.log(result.variables); // { chairs: 2.4, tables: 3.2 }\n * console.log(result.objectiveValue); // 23.2\n * }\n * ```\n */\nexport class OptimizeClient {\n /** @internal */\n private readonly inferenceApi: GeneratedInference;\n /** @internal */\n private readonly sortsApi: GeneratedSorts;\n /** @internal */\n private readonly queryApi: GeneratedQuery;\n /** @internal */\n private readonly termsApi: GeneratedTerms;\n /** @internal */\n private readonly tenantId: string;\n\n /** @internal */\n constructor(\n inferenceApi: GeneratedInference,\n sortsApi: GeneratedSorts,\n queryApi: GeneratedQuery,\n termsApi: GeneratedTerms,\n tenantId: string,\n ) {\n this.inferenceApi = inferenceApi;\n this.sortsApi = sortsApi;\n this.queryApi = queryApi;\n this.termsApi = termsApi;\n this.tenantId = tenantId;\n }\n\n /**\n * Solve a linear program.\n *\n * @param problem - The LP problem definition with objective, constraints, and bounds.\n * @param options - Optional solver configuration (timeout, cleanup, etc.).\n * @returns The optimization result with variable values and objective value.\n *\n * @throws {Error} If the problem has no variables.\n *\n * @remarks\n * Internally creates a temporary sort and inference rule, runs backward chaining\n * to trigger the CLP(Q) simplex solver, then cleans up temporary artifacts.\n *\n * The solver uses exact rational arithmetic (Rational64). Solutions are converted\n * to JavaScript numbers (f64 approximation) for the response.\n *\n * @example\n * ```typescript\n * import { LP } from '@kortexya/reasoninglayer';\n *\n * const result = await client.optimize.solve({\n * objective: LP.maximize({ x: 1, y: 2 }),\n * constraints: [\n * LP.constraint({ x: 1, y: 1 }, '<=', 10),\n * ],\n * bounds: LP.nonNegative('x', 'y'),\n * });\n *\n * if (result.status === 'optimal') {\n * console.log(result.variables); // { x: 0, y: 10 }\n * console.log(result.objectiveValue); // 20\n * }\n * ```\n */\n async solve(\n problem: LinearProgramDefinition,\n options?: SolveOptions,\n ): Promise<OptimizationResult> {\n const cleanup = options?.cleanup !== false;\n const timeoutMs = options?.timeoutMs ?? 30000;\n const maxDepth = options?.maxDepth ?? 50;\n\n // Generate a unique sort name for this problem\n const suffix = generateShortId();\n const solutionSortName = `_lp_solution_${suffix}`;\n\n // Compile the LP into constraint sort antecedents\n const compiled = compileLP(problem, solutionSortName);\n\n let sortId: string | undefined;\n let ruleTermId: string | undefined;\n\n try {\n // 1. Create a temporary sort for the solution (bulk create resolves parent names)\n const sortResponse = await this.sortsApi.bulkCreateSorts({\n sorts: [{ name: solutionSortName, parents: ['thing'] }],\n });\n sortId = sortResponse.data.sort_ids[solutionSortName];\n\n // 2. Add the rule that encodes the LP\n const ruleResponse = await this.inferenceApi.addRule({\n term: compiled.solutionTerm,\n antecedents: compiled.antecedents,\n certainty: 1.0,\n });\n ruleTermId = ruleResponse.data.term.term_id;\n\n // 3. Query via backward chaining to trigger the solver\n const bcResponse = await this.inferenceApi.backwardChain({\n goal: { sort_name: solutionSortName },\n max_solutions: 1,\n max_depth: maxDepth,\n timeout_ms: timeoutMs,\n });\n\n const queryTimeMs = bcResponse.data.query_time_ms;\n\n // 4. Extract the solution\n if (bcResponse.data.solutions.length === 0) {\n return { status: 'infeasible', solveTimeMs: queryTimeMs };\n }\n\n const solution = bcResponse.data.solutions[0];\n const variables: Record<string, number> = {};\n let objectiveValue = 0;\n\n for (const binding of solution.substitution.bindings) {\n const varName = binding.variable_name;\n if (!varName) continue;\n\n const value = parseFloat(binding.bound_to_display);\n if (isNaN(value)) continue;\n\n if (varName === '?_lp_objective') {\n objectiveValue = value;\n } else if (varName.startsWith('?') && !varName.startsWith('?_lp_')) {\n // User variable — strip the ? prefix to return clean names\n variables[varName.slice(1)] = value;\n }\n }\n\n return {\n status: 'optimal',\n variables,\n objectiveValue,\n solveTimeMs: queryTimeMs,\n };\n } finally {\n if (cleanup) {\n // Clean up temporary artifacts (best-effort, don't throw on failure)\n await this.cleanupArtifacts(ruleTermId, sortId);\n }\n }\n }\n\n /**\n * Solve an LP problem with variables and coefficients discovered from the knowledge base.\n *\n * @param config - Configuration specifying which sorts/features to query and how to\n * map them to LP variables, objective, and constraints.\n * @param options - Optional solver configuration.\n * @returns The optimization result plus the auto-generated LP and discovered terms.\n *\n * @throws {Error} If the specified sort is not found.\n * @throws {Error} If no terms are found for the variable sort.\n * @throws {Error} If a required feature is missing or non-numeric on a term.\n *\n * @remarks\n * This method queries existing knowledge base data to build the LP automatically:\n * 1. Resolves the variable sort name to its sort ID\n * 2. Queries all terms of that sort\n * 3. Extracts feature values to compute objective coefficients and constraint coefficients\n * 4. Builds and solves the LP\n *\n * @example\n * ```typescript\n * // Given products in the KB with features: name, profit, wood_cost, labor_cost\n * const result = await client.optimize.fromKnowledgeBase({\n * variables: { sort: 'product', nameFeature: 'name' },\n * objective: { direction: 'maximize', coefficientFeature: 'profit' },\n * resourceConstraints: [\n * { costFeature: 'wood_cost', capacity: 12, label: 'wood' },\n * { costFeature: 'labor_cost', capacity: 8, label: 'labor' },\n * ],\n * nonNegative: true,\n * });\n *\n * if (result.result.status === 'optimal') {\n * console.log(result.result.variables); // { chair: 2.4, table: 3.2 }\n * }\n * console.log(result.generatedProblem); // The auto-generated LP for inspection\n * ```\n */\n async fromKnowledgeBase(\n config: KBOptimizationConfig,\n options?: SolveOptions,\n ): Promise<KBOptimizationResult> {\n // 1. Resolve sort name to sort ID\n const sortId = await this.resolveSortName(config.variables.sort);\n\n // 2. Query all terms of that sort\n const queryResponse = await this.queryApi.findBySort({\n sort_id: sortId,\n });\n const terms: TermDto[] = queryResponse.data.terms;\n\n if (terms.length === 0) {\n throw new Error(\n `No terms found for sort '${config.variables.sort}'. ` +\n `Create terms with features [${config.objective.coefficientFeature}, ` +\n `${config.resourceConstraints.map((r) => r.costFeature).join(', ')}] first.`,\n );\n }\n\n // 3. Extract variable names and coefficients from terms\n const variableNames: string[] = [];\n const objectiveCoeffs: Record<string, number> = {};\n const constraintCoeffsMap: Record<string, Record<string, number>> = {};\n\n for (const rc of config.resourceConstraints) {\n constraintCoeffsMap[rc.costFeature] = {};\n }\n\n for (const term of terms) {\n const name = extractStringValue(term.features, config.variables.nameFeature);\n if (!name) {\n throw new Error(\n `Term ${term.id} of sort '${config.variables.sort}' is missing ` +\n `the name feature '${config.variables.nameFeature}' or it is not a string.`,\n );\n }\n\n variableNames.push(name);\n\n // Objective coefficient\n const objCoeff = extractNumericValue(term.features, config.objective.coefficientFeature);\n if (objCoeff === null) {\n throw new Error(\n `Term '${name}' (${term.id}) is missing numeric feature ` +\n `'${config.objective.coefficientFeature}' for the objective.`,\n );\n }\n objectiveCoeffs[name] = objCoeff;\n\n // Resource constraint coefficients\n for (const rc of config.resourceConstraints) {\n const costCoeff = extractNumericValue(term.features, rc.costFeature);\n if (costCoeff === null) {\n throw new Error(\n `Term '${name}' (${term.id}) is missing numeric feature ` +\n `'${rc.costFeature}' for the resource constraint.`,\n );\n }\n constraintCoeffsMap[rc.costFeature][name] = costCoeff;\n }\n }\n\n // 4. Build the LP problem\n const constraints: LinearConstraint[] = config.resourceConstraints.map((rc) => ({\n coefficients: constraintCoeffsMap[rc.costFeature],\n op: (rc.op ?? '<=') as LinearConstraint['op'],\n rhs: rc.capacity,\n ...(rc.label ? { label: rc.label } : {}),\n }));\n\n if (config.additionalConstraints) {\n constraints.push(...config.additionalConstraints);\n }\n\n const generatedProblem: LinearProgramDefinition = {\n objective: {\n direction: config.objective.direction,\n coefficients: objectiveCoeffs,\n },\n constraints,\n bounds: config.nonNegative\n ? Object.fromEntries(variableNames.map((n) => [n, { min: 0 }]))\n : undefined,\n };\n\n // 5. Solve\n const result = await this.solve(generatedProblem, options);\n\n return {\n result,\n generatedProblem,\n discoveredTerms: terms,\n };\n }\n\n /**\n * Resolve a sort name to its sort ID by listing the tenant's sorts.\n *\n * @internal\n */\n private async resolveSortName(sortName: string): Promise<string> {\n const response = await this.sortsApi.listSorts(this.tenantId);\n const sorts = response.data.sorts;\n const match = sorts.find((s) => s.name === sortName);\n\n if (!match) {\n const available = sorts.slice(0, 10).map((s) => s.name).join(', ');\n throw new Error(\n `Sort '${sortName}' not found. Available sorts: ${available}${sorts.length > 10 ? '...' : ''}`,\n );\n }\n\n return match.id;\n }\n\n /**\n * Clean up temporary sort and rule artifacts (best-effort).\n *\n * @internal\n */\n private async cleanupArtifacts(\n ruleTermId: string | undefined,\n sortId: string | undefined,\n ): Promise<void> {\n const promises: Promise<unknown>[] = [];\n\n if (ruleTermId) {\n promises.push(\n this.termsApi.deleteTerm(ruleTermId).catch(() => { /* best-effort */ }),\n );\n }\n if (sortId) {\n promises.push(\n this.sortsApi.deleteSort(sortId).catch(() => { /* best-effort */ }),\n );\n }\n\n await Promise.all(promises);\n }\n}\n\n/**\n * Generate a short unique ID for temporary sort names.\n *\n * @internal\n */\nfunction generateShortId(): string {\n const timestamp = Date.now().toString(36);\n const random = Math.random().toString(36).slice(2, 8);\n return `${timestamp}_${random}`;\n}\n\n/**\n * Extract a string value from a tagged ValueDto feature map.\n *\n * @internal\n */\nfunction extractStringValue(\n features: Record<string, ValueDto>,\n featureName: string,\n): string | null {\n const value = features[featureName];\n if (!value) return null;\n if (value.type === 'String') return value.value;\n return null;\n}\n\n/**\n * Extract a numeric value (Integer or Real) from a tagged ValueDto feature map.\n *\n * @internal\n */\nfunction extractNumericValue(\n features: Record<string, ValueDto>,\n featureName: string,\n): number | null {\n const value = features[featureName];\n if (!value) return null;\n if (value.type === 'Integer') return value.value;\n if (value.type === 'Real') return value.value;\n return null;\n}\n","import type { ClientConfig } from './config.js';\nimport { resolveConfig } from './config.js';\nimport { WebSocketClient } from './websocket.js';\nimport { createGeneratedHttpClient } from './generated-bridge.js';\nimport { Sorts as GeneratedSorts } from './api-spec/generated/Sorts.js';\nimport { Types as GeneratedTypes } from './api-spec/generated/Types.js';\nimport { Terms as GeneratedTerms } from './api-spec/generated/Terms.js';\nimport { Inference as GeneratedInference } from './api-spec/generated/Inference.js';\nimport { Cognitive as GeneratedCognitive } from './api-spec/generated/Cognitive.js';\nimport { CognitiveAgentsEpisodicMemory as GeneratedEpisodicMemory } from './api-spec/generated/CognitiveAgentsEpisodicMemory.js';\nimport { CognitiveAgentsHtn as GeneratedHtn } from './api-spec/generated/CognitiveAgentsHtn.js';\nimport { CognitiveAgentsMessaging as GeneratedMessaging } from './api-spec/generated/CognitiveAgentsMessaging.js';\nimport { CognitiveAgentsPlanLibrary as GeneratedPlanLibrary } from './api-spec/generated/CognitiveAgentsPlanLibrary.js';\nimport { Ingestion as GeneratedIngestion } from './api-spec/generated/Ingestion.js';\nimport { StructuredIngestion as GeneratedStructuredIngestion } from './api-spec/generated/StructuredIngestion.js';\nimport { NeuroSymbolic as GeneratedNeuroSymbolic } from './api-spec/generated/NeuroSymbolic.js';\nimport { Strings as GeneratedStrings } from './api-spec/generated/Strings.js';\nimport { Arithmetic as GeneratedArithmetic } from './api-spec/generated/Arithmetic.js';\nimport { Copy as GeneratedCopy } from './api-spec/generated/Copy.js';\nimport { Communities as GeneratedCommunities } from './api-spec/generated/Communities.js';\nimport { Collections as GeneratedCollections } from './api-spec/generated/Collections.js';\nimport { Execution as GeneratedExecution } from './api-spec/generated/Execution.js';\nimport { Causal as GeneratedCausal } from './api-spec/generated/Causal.js';\nimport { Reviews as GeneratedReviews } from './api-spec/generated/Reviews.js';\nimport { Visualization as GeneratedVisualization } from './api-spec/generated/Visualization.js';\nimport { Ilp as GeneratedIlp } from './api-spec/generated/Ilp.js';\nimport { ActionReviews as GeneratedActionReviews } from './api-spec/generated/ActionReviews.js';\nimport { Discovery as GeneratedDiscovery } from './api-spec/generated/Discovery.js';\nimport { Extraction as GeneratedExtraction } from './api-spec/generated/Extraction.js';\nimport { Oversight as GeneratedOversight } from './api-spec/generated/Oversight.js';\nimport { Cdl as GeneratedCdl } from './api-spec/generated/Cdl.js';\nimport { Preferences as GeneratedPreferences } from './api-spec/generated/Preferences.js';\nimport { Query as GeneratedQuery } from './api-spec/generated/Query.js';\nimport { Fuzzy as GeneratedFuzzy } from './api-spec/generated/Fuzzy.js';\nimport { Constraints as GeneratedConstraints } from './api-spec/generated/Constraints.js';\nimport { Reasoning as GeneratedReasoning } from './api-spec/generated/Reasoning.js';\nimport { Statistical as GeneratedStatistical } from './api-spec/generated/Statistical.js';\nimport { Control as GeneratedControl } from './api-spec/generated/Control.js';\nimport { Spaces as GeneratedSpaces } from './api-spec/generated/Spaces.js';\nimport { RowPolymorphism as GeneratedRowPolymorphism } from './api-spec/generated/RowPolymorphism.js';\nimport { Namespaces as GeneratedNamespaces } from './api-spec/generated/Namespaces.js';\nimport { Scenarios as GeneratedScenarios } from './api-spec/generated/Scenarios.js';\nimport { Analysis as GeneratedAnalysis } from './api-spec/generated/Analysis.js';\nimport { Functions as GeneratedFunctions } from './api-spec/generated/Functions.js';\nimport { WebhookActions as GeneratedWebhookActions } from './api-spec/generated/WebhookActions.js';\nimport { Synthetic as GeneratedSynthetic } from './api-spec/generated/Synthetic.js';\nimport { ProofEngine as GeneratedProofEngine } from './api-spec/generated/ProofEngine.js';\nimport { Health as GeneratedHealth } from './api-spec/generated/Health.js';\nimport { Admin as GeneratedAdmin } from './api-spec/generated/Admin.js';\nimport { ImageExtraction as GeneratedImageExtraction } from './api-spec/generated/ImageExtraction.js';\nimport { Ontology as GeneratedOntology } from './api-spec/generated/Ontology.js';\nimport { Generation as GeneratedGeneration } from './api-spec/generated/Generation.js';\nimport { Rag as GeneratedRag } from './api-spec/generated/Rag.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';\nimport { FunctionsClient } from './resources/functions.js';\nimport { WebhookActionsClient } from './resources/webhook-actions.js';\nimport { SyntheticClient } from './resources/synthetic.js';\nimport { ProofEngineClient } from './resources/proof-engine.js';\nimport { HealthClient } from './resources/health.js';\nimport { AdminClient } from './resources/admin.js';\nimport { ImageExtractionClient } from './resources/image-extraction.js';\nimport { OntologyClient } from './resources/ontology.js';\nimport { GenerationClient } from './resources/generation.js';\nimport { RagClient } from './resources/rag.js';\nimport { OptimizeClient } from './resources/optimize.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 /** LIFE-style user-defined function operations (register, evaluate). */\n readonly functions: FunctionsClient;\n\n /** Webhook-based external action operations (register, invoke, complete, list). */\n readonly webhookActions: WebhookActionsClient;\n\n /** Synthetic data generation operations (generate, calibrate, verbalize, verify). */\n readonly synthetic: SyntheticClient;\n\n /** Proof engine operations (term store, rule store, built-in evaluation). */\n readonly proofEngine: ProofEngineClient;\n\n /** Health check operations (status, components, build info). */\n readonly health: HealthClient;\n\n /** Administrative operations (factory reset, tenant listing). */\n readonly admin: AdminClient;\n\n /** Image-based concept extraction operations (vision LLM). */\n readonly imageExtraction: ImageExtractionClient;\n\n /** Ontology generation operations (LLM-powered scenario generation). */\n readonly ontology: OntologyClient;\n\n /** Evidence-grounded document generation operations. */\n readonly generation: GenerationClient;\n\n /** Ontology RAG operations (embedding search + feature unification). */\n readonly rag: RagClient;\n\n /** Linear program optimization (CLP(Q) simplex solver via backward chaining). */\n readonly optimize: OptimizeClient;\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 ws = new WebSocketClient(resolved);\n const generatedHttp = createGeneratedHttpClient(resolved);\n const generatedSorts = new GeneratedSorts(generatedHttp);\n const generatedTypes = new GeneratedTypes(generatedHttp);\n const generatedTerms = new GeneratedTerms(generatedHttp);\n const generatedInference = new GeneratedInference(generatedHttp);\n\n const generatedCognitive = new GeneratedCognitive(generatedHttp);\n const generatedEpisodicMemory = new GeneratedEpisodicMemory(generatedHttp);\n const generatedHtn = new GeneratedHtn(generatedHttp);\n const generatedMessaging = new GeneratedMessaging(generatedHttp);\n const generatedPlanLibrary = new GeneratedPlanLibrary(generatedHttp);\n const generatedIngestion = new GeneratedIngestion(generatedHttp);\n const generatedStructuredIngestion = new GeneratedStructuredIngestion(generatedHttp);\n const generatedNeuroSymbolic = new GeneratedNeuroSymbolic(generatedHttp);\n const generatedStrings = new GeneratedStrings(generatedHttp);\n const generatedArithmetic = new GeneratedArithmetic(generatedHttp);\n const generatedCopy = new GeneratedCopy(generatedHttp);\n const generatedCommunities = new GeneratedCommunities(generatedHttp);\n const generatedCollections = new GeneratedCollections(generatedHttp);\n const generatedExecution = new GeneratedExecution(generatedHttp);\n const generatedCausal = new GeneratedCausal(generatedHttp);\n const generatedReviews = new GeneratedReviews(generatedHttp);\n const generatedVisualization = new GeneratedVisualization(generatedHttp);\n const generatedIlp = new GeneratedIlp(generatedHttp);\n const generatedActionReviews = new GeneratedActionReviews(generatedHttp);\n const generatedDiscovery = new GeneratedDiscovery(generatedHttp);\n const generatedExtraction = new GeneratedExtraction(generatedHttp);\n const generatedOversight = new GeneratedOversight(generatedHttp);\n const generatedCdl = new GeneratedCdl(generatedHttp);\n const generatedPreferences = new GeneratedPreferences(generatedHttp);\n const generatedQuery = new GeneratedQuery(generatedHttp);\n const generatedFuzzy = new GeneratedFuzzy(generatedHttp);\n const generatedConstraints = new GeneratedConstraints(generatedHttp);\n const generatedReasoning = new GeneratedReasoning(generatedHttp);\n const generatedStatistical = new GeneratedStatistical(generatedHttp);\n const generatedControl = new GeneratedControl(generatedHttp);\n const generatedSpaces = new GeneratedSpaces(generatedHttp);\n const generatedRowPolymorphism = new GeneratedRowPolymorphism(generatedHttp);\n const generatedNamespaces = new GeneratedNamespaces(generatedHttp);\n const generatedScenarios = new GeneratedScenarios(generatedHttp);\n const generatedAnalysis = new GeneratedAnalysis(generatedHttp);\n const generatedFunctions = new GeneratedFunctions(generatedHttp);\n const generatedWebhookActions = new GeneratedWebhookActions(generatedHttp);\n const generatedSynthetic = new GeneratedSynthetic(generatedHttp);\n const generatedProofEngine = new GeneratedProofEngine(generatedHttp);\n const generatedHealth = new GeneratedHealth(generatedHttp);\n const generatedAdmin = new GeneratedAdmin(generatedHttp);\n const generatedImageExtraction = new GeneratedImageExtraction(generatedHttp);\n const generatedOntology = new GeneratedOntology(generatedHttp);\n const generatedGeneration = new GeneratedGeneration(generatedHttp);\n const generatedRag = new GeneratedRag(generatedHttp);\n\n this.sorts = new SortsClient(generatedSorts, generatedTypes, resolved.tenantId);\n this.terms = new TermsClient(generatedTerms);\n this.inference = new InferenceClient(generatedInference, resolved.tenantId);\n this.query = new QueryClient(generatedQuery);\n this.cognitive = new CognitiveClient(generatedCognitive, generatedEpisodicMemory, generatedHtn, generatedMessaging, generatedPlanLibrary, resolved.tenantId, ws);\n this.fuzzy = new FuzzyClient(generatedFuzzy);\n this.constraints = new ConstraintsClient(generatedConstraints);\n this.namespaces = new NamespacesClient(generatedNamespaces, resolved.tenantId);\n this.collections = new CollectionsClient(generatedCollections);\n this.execution = new ExecutionClient(generatedExecution);\n this.causal = new CausalClient(generatedCausal);\n this.ingestion = new IngestionClient(generatedIngestion);\n this.reviews = new ReviewsClient(generatedReviews);\n this.visualization = new VisualizationClient(generatedVisualization);\n this.ilp = new IlpClient(generatedIlp);\n this.reasoning = new ReasoningClient(generatedReasoning);\n this.statistical = new StatisticalClient(generatedStatistical);\n this.control = new ControlClient(generatedControl);\n this.spaces = new SpacesClient(generatedSpaces);\n this.row = new RowClient(generatedRowPolymorphism);\n this.sources = new SourcesClient(generatedStructuredIngestion);\n this.communities = new CommunitiesClient(generatedCommunities);\n this.utilities = new UtilitiesClient(generatedStrings, generatedArithmetic, generatedCopy);\n this.scenarios = new ScenariosClient(generatedScenarios);\n this.actionReviews = new ActionReviewsClient(generatedActionReviews, resolved.tenantId);\n this.discovery = new DiscoveryClient(generatedDiscovery);\n this.extract = new ExtractClient(generatedExtraction);\n this.oversight = new OversightClient(generatedOversight);\n this.cdl = new CdlClient(generatedCdl);\n this.neuroSymbolic = new NeuroSymbolicClient(generatedNeuroSymbolic);\n this.analysis = new AnalysisClient(generatedAnalysis);\n this.preferences = new PreferencesClient(generatedPreferences);\n this.functions = new FunctionsClient(generatedFunctions);\n this.webhookActions = new WebhookActionsClient(generatedWebhookActions, resolved.tenantId);\n this.synthetic = new SyntheticClient(generatedSynthetic);\n this.proofEngine = new ProofEngineClient(generatedProofEngine);\n this.health = new HealthClient(generatedHealth);\n this.admin = new AdminClient(generatedAdmin);\n this.imageExtraction = new ImageExtractionClient(generatedImageExtraction);\n this.ontology = new OntologyClient(generatedOntology);\n this.generation = new GenerationClient(generatedGeneration);\n this.rag = new RagClient(generatedRag);\n this.optimize = new OptimizeClient(generatedInference, generatedSorts, generatedQuery, generatedTerms, resolved.tenantId);\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"]}
|