@kortexya/reasoninglayer 1.15.0 → 1.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ var __export = (target, all) => {
5
5
  };
6
6
 
7
7
  // src/config.ts
8
- var SDK_VERSION = "1.15.0";
8
+ var SDK_VERSION = "1.17.0";
9
9
  function resolveConfig(config) {
10
10
  if (!config.baseUrl) {
11
11
  throw new Error("ClientConfig.baseUrl is required");
@@ -548,6 +548,8 @@ var USER_DATA_FIELDS = /* @__PURE__ */ new Set([
548
548
  "antecedentFeatures",
549
549
  "antecedent_features",
550
550
  "bindings",
551
+ "classScores",
552
+ "class_scores",
551
553
  "coefficients",
552
554
  "conceptValues",
553
555
  "concept_values",
@@ -583,6 +585,8 @@ var USER_DATA_FIELDS = /* @__PURE__ */ new Set([
583
585
  "per_strategy_taxonomies",
584
586
  "propsOverride",
585
587
  "props_override",
588
+ "referencedTerms",
589
+ "referenced_terms",
586
590
  "roleMinimums",
587
591
  "role_minimums",
588
592
  "scope",
@@ -590,6 +594,8 @@ var USER_DATA_FIELDS = /* @__PURE__ */ new Set([
590
594
  "scores_by_name",
591
595
  "sortNames",
592
596
  "sort_names",
597
+ "toolResults",
598
+ "tool_results",
593
599
  "topK",
594
600
  "top_k",
595
601
  "values"
@@ -992,6 +998,22 @@ var Sorts = class {
992
998
  format: "json",
993
999
  ...params
994
1000
  });
1001
+ /**
1002
+ * No description
1003
+ *
1004
+ * @tags sorts
1005
+ * @name GetFuzzySubsumption
1006
+ * @summary Get the fuzzy subsumption degree `sub ⊑· sup` between two sorts
1007
+ * @request POST:/api/v1/sorts/subsumption/get
1008
+ */
1009
+ getFuzzySubsumption = (data, params = {}) => this.http.request({
1010
+ path: `/api/v1/sorts/subsumption/get`,
1011
+ method: "POST",
1012
+ body: data,
1013
+ type: "application/json" /* Json */,
1014
+ format: "json",
1015
+ ...params
1016
+ });
995
1017
  /**
996
1018
  * @description Per Definition IV.5 (Milanese & Pasi 2024): ≾̇ = ((≾̃ .− ∼) ⊍ ≤)⁺
997
1019
  *
@@ -1009,16 +1031,17 @@ var Sorts = class {
1009
1031
  ...params
1010
1032
  });
1011
1033
  /**
1012
- * No description
1034
+ * @description With `?format=osfql` the sort is returned as its commented OSFQL `DEFINE` block (`text/plain`, `ETag` = SHA-256 of the body) instead of the JSON DTO — the single-sort companion of `GET /api/v1/sorts/schema`.
1013
1035
  *
1014
1036
  * @tags sorts
1015
1037
  * @name GetSort
1016
1038
  * @summary Get a sort by ID
1017
1039
  * @request GET:/api/v1/sorts/{id}
1018
1040
  */
1019
- getSort = (id, params = {}) => this.http.request({
1041
+ getSort = (id, query, params = {}) => this.http.request({
1020
1042
  path: `/api/v1/sorts/${id}`,
1021
1043
  method: "GET",
1044
+ query,
1022
1045
  format: "json",
1023
1046
  ...params
1024
1047
  });
@@ -1038,6 +1061,22 @@ var Sorts = class {
1038
1061
  format: "json",
1039
1062
  ...params
1040
1063
  });
1064
+ /**
1065
+ * @description The bulk companion of `?format=osfql` on the by-id route: a single deterministic, re-parseable `text/plain` block of commented `DEFINE` statements (one per sort, ordered by name) for LLM prompt conditioning and replayable export. Supports the tenant listing's filters (`name_prefix`, `include_system`, `needs_review`, `llm_extracted`, and `offset`/`limit`, applied after the deterministic ordering so pages are stable). The `ETag` is the SHA-256 of the body, so prompt-conditioning consumers get a stable cache key for "schema unchanged".
1066
+ *
1067
+ * @tags sorts
1068
+ * @name GetSortsSchema
1069
+ * @summary Export the authenticated tenant's schema as one OSFQL DDL block
1070
+ * @request GET:/api/v1/sorts/schema
1071
+ * @secure
1072
+ */
1073
+ getSortsSchema = (query, params = {}) => this.http.request({
1074
+ path: `/api/v1/sorts/schema`,
1075
+ method: "GET",
1076
+ query,
1077
+ secure: true,
1078
+ ...params
1079
+ });
1041
1080
  /**
1042
1081
  * No description
1043
1082
  *
@@ -1144,6 +1183,22 @@ var Sorts = class {
1144
1183
  format: "json",
1145
1184
  ...params
1146
1185
  });
1186
+ /**
1187
+ * @description Subsumption is **directional**: ⊑·(s₁, s₂) and ⊑·(s₂, s₁) are different assertions. For the symmetric relation use `/api/v1/sorts/similarity`. The degree must be in [0, 1] and the assignment must keep the relation a fuzzy partial order (max–min transitivity, antisymmetry); one that does not is rejected rather than stored.
1188
+ *
1189
+ * @tags sorts
1190
+ * @name SetFuzzySubsumption
1191
+ * @summary Set the fuzzy subsumption degree `sub ⊑· sup` between two sorts
1192
+ * @request POST:/api/v1/sorts/subsumption
1193
+ */
1194
+ setFuzzySubsumption = (data, params = {}) => this.http.request({
1195
+ path: `/api/v1/sorts/subsumption`,
1196
+ method: "POST",
1197
+ body: data,
1198
+ type: "application/json" /* Json */,
1199
+ format: "json",
1200
+ ...params
1201
+ });
1147
1202
  /**
1148
1203
  * @description Similarity is symmetric: ∼(s₁, s₂) = ∼(s₂, s₁) Degree must be in [0, 1] range.
1149
1204
  *
@@ -1160,6 +1215,22 @@ var Sorts = class {
1160
1215
  format: "json",
1161
1216
  ...params
1162
1217
  });
1218
+ /**
1219
+ * @description Poll this after `POST /api/v1/sorts/index` (which is fire-and-forget) to know whether the embedding pass is still `running`, has completed (`last_indexed_count`), or failed (`last_error`).
1220
+ *
1221
+ * @tags sorts
1222
+ * @name SortIndexStatus
1223
+ * @summary GET /api/v1/sorts/index/status
1224
+ * @request GET:/api/v1/sorts/index/status
1225
+ * @secure
1226
+ */
1227
+ sortIndexStatus = (params = {}) => this.http.request({
1228
+ path: `/api/v1/sorts/index/status`,
1229
+ method: "GET",
1230
+ secure: true,
1231
+ format: "json",
1232
+ ...params
1233
+ });
1163
1234
  /**
1164
1235
  * No description
1165
1236
  *
@@ -1603,11 +1674,11 @@ var Inference = class {
1603
1674
  ...params
1604
1675
  });
1605
1676
  /**
1606
- * @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.
1677
+ * @description This drops the hydrated base facts, the forward-chain `persist_derived` facts and the residuation store, then forgets the hydration flag so the next request reloads the base facts from PostgreSQL. **It does not delete durable data.** The terms are the authority; this is their cache. That makes it the retraction primitive forward chaining otherwise lacks. Chaining is monotonic — delete a `blocks` edge and the derived "A blocks B" survives every later pass, so the KB keeps asserting a relationship the user removed. Clearing and re-chaining rebuilds the closure from the terms that actually exist. # History Until 2026-07-28 this handler enumerated every term in the tenant and deleted it from PostgreSQL, while calling itself "clear facts" and reporting `"Cleared N facts/rules"`. It is reachable with an ordinary tenant credential — unlike `/api/v1/admin/clear-tenant/{tenant_id}`, which gateways block — so a caller reading the name, the path or the response body had no way to know it was a tenant wipe. It destroyed a live tenant that way. Use `DELETE /api/v1/terms/{term_id}` to delete a term, and the admin route to wipe a tenant; deleting durable data must not be something an endpoint does as a side effect of its name. # Authorization Requires X-Tenant-Id header, and the path tenant must match it.
1607
1678
  *
1608
1679
  * @tags inference
1609
1680
  * @name ClearFacts
1610
- * @summary Clear all facts and rules for a tenant
1681
+ * @summary Clear a tenant's in-memory inference working set.
1611
1682
  * @request DELETE:/api/v1/inference/facts/{tenant_id}
1612
1683
  * @secure
1613
1684
  */
@@ -1950,6 +2021,21 @@ var Cognitive = class {
1950
2021
  format: "json",
1951
2022
  ...params
1952
2023
  });
2024
+ /**
2025
+ * @description Server->client only (thinking / tool / inference / phase events). It's plain HTTP, so it traverses the zanzibar gateway — which proxies HTTP and mints `X-Tenant-Id`, but does NOT proxy WebSocket upgrades. Client->server control (ChatMessage / Abort / Redirect) is a separate POST for SSE clients. Auth and the ownership gate are identical to the WS handler. Endpoint: `GET /api/v1/cognitive/agents/{agent_id}/events` (Accept: text/event-stream)
2026
+ *
2027
+ * @tags cognitive
2028
+ * @name CognitiveSseHandler
2029
+ * @summary SSE transport for the *same* cognitive event stream as `cognitive_ws_handler`.
2030
+ * @request GET:/api/v1/cognitive/agents/{agent_id}/events
2031
+ * @secure
2032
+ */
2033
+ cognitiveSseHandler = (agentId, params = {}) => this.http.request({
2034
+ path: `/api/v1/cognitive/agents/${agentId}/events`,
2035
+ method: "GET",
2036
+ secure: true,
2037
+ ...params
2038
+ });
1953
2039
  /**
1954
2040
  * @description ## Example ```bash curl -X POST http://localhost:3000/api/v1/cognitive/agents \ -H "Content-Type: application/json" \ -d '{"name": "reasoning_agent", "tenant_id": "..."}' ```
1955
2041
  *
@@ -1998,6 +2084,20 @@ var Cognitive = class {
1998
2084
  format: "json",
1999
2085
  ...params
2000
2086
  });
2087
+ /**
2088
+ * @description Reads the persisted, tenant-scoped `ActionReviewConfig` from the registry (hydrating agents first so a restored snapshot's config is visible), or sensible defaults when none has been set. Complements the PUT so the UI's oversight editor can load what's actually stored instead of a local stand-in.
2089
+ *
2090
+ * @tags cognitive
2091
+ * @name GetActionReviewConfigHandler
2092
+ * @summary Get the tenant's current HITL action-review (oversight) configuration.
2093
+ * @request GET:/api/v1/cognitive/agents/action-review-config
2094
+ */
2095
+ getActionReviewConfigHandler = (params = {}) => this.http.request({
2096
+ path: `/api/v1/cognitive/agents/action-review-config`,
2097
+ method: "GET",
2098
+ format: "json",
2099
+ ...params
2100
+ });
2001
2101
  /**
2002
2102
  * @description Returns drives, deficits, curiosity targets, and the dominant drive. Tenant is identified by the `X-Tenant-Id` header.
2003
2103
  *
@@ -2014,6 +2114,22 @@ var Cognitive = class {
2014
2114
  format: "json",
2015
2115
  ...params
2016
2116
  });
2117
+ /**
2118
+ * No description
2119
+ *
2120
+ * @tags cognitive
2121
+ * @name GetAgentPlanHandler
2122
+ * @summary GET /api/v1/cognitive/agents/{agent_id}/plan — inspect an agent's committed intentions: the plan/HTN step sequence, `current_step` (executed-so-far), and status. Read-only observability for the planner verification harness (§4.2).
2123
+ * @request GET:/api/v1/cognitive/agents/{agent_id}/plan
2124
+ * @secure
2125
+ */
2126
+ getAgentPlanHandler = (agentId, params = {}) => this.http.request({
2127
+ path: `/api/v1/cognitive/agents/${agentId}/plan`,
2128
+ method: "GET",
2129
+ secure: true,
2130
+ format: "json",
2131
+ ...params
2132
+ });
2017
2133
  /**
2018
2134
  * No description
2019
2135
  *
@@ -2030,6 +2146,22 @@ var Cognitive = class {
2030
2146
  format: "json",
2031
2147
  ...params
2032
2148
  });
2149
+ /**
2150
+ * No description
2151
+ *
2152
+ * @tags cognitive
2153
+ * @name GetAgentWorldModelHandler
2154
+ * @summary GET /api/v1/cognitive/agents/{agent_id}/world-model — inspect an agent's learned transition model P(s'|s,a). Read-only observability for the world-model verification harness (§4.2 of the productionization plan) and a future UI surface: returns the agent's transition rules with resolved sort names + the rule count. An agent with no learned transitions yet returns `has_world_model:false` (or an empty rule set), which is a valid state — not an error.
2155
+ * @request GET:/api/v1/cognitive/agents/{agent_id}/world-model
2156
+ * @secure
2157
+ */
2158
+ getAgentWorldModelHandler = (agentId, params = {}) => this.http.request({
2159
+ path: `/api/v1/cognitive/agents/${agentId}/world-model`,
2160
+ method: "GET",
2161
+ secure: true,
2162
+ format: "json",
2163
+ ...params
2164
+ });
2033
2165
  /**
2034
2166
  * @description Returns beliefs, goals, intentions, pending perceptions, activations, recent episodes, and rule utilities. Tenant is identified by the `X-Tenant-Id` header.
2035
2167
  *
@@ -2094,6 +2226,22 @@ var Cognitive = class {
2094
2226
  format: "json",
2095
2227
  ...params
2096
2228
  });
2229
+ /**
2230
+ * No description
2231
+ *
2232
+ * @tags cognitive
2233
+ * @name PauseAgentHandler
2234
+ * @summary POST /api/v1/cognitive/agents/{agent_id}/pause — pause an agent (persisted).
2235
+ * @request POST:/api/v1/cognitive/agents/{agent_id}/pause
2236
+ * @secure
2237
+ */
2238
+ pauseAgentHandler = (agentId, params = {}) => this.http.request({
2239
+ path: `/api/v1/cognitive/agents/${agentId}/pause`,
2240
+ method: "POST",
2241
+ secure: true,
2242
+ format: "json",
2243
+ ...params
2244
+ });
2097
2245
  /**
2098
2246
  * @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
2099
2247
  *
@@ -2126,6 +2274,22 @@ var Cognitive = class {
2126
2274
  format: "json",
2127
2275
  ...params
2128
2276
  });
2277
+ /**
2278
+ * No description
2279
+ *
2280
+ * @tags cognitive
2281
+ * @name ResumeAgentHandler
2282
+ * @summary POST /api/v1/cognitive/agents/{agent_id}/resume — resume a paused agent.
2283
+ * @request POST:/api/v1/cognitive/agents/{agent_id}/resume
2284
+ * @secure
2285
+ */
2286
+ resumeAgentHandler = (agentId, params = {}) => this.http.request({
2287
+ path: `/api/v1/cognitive/agents/${agentId}/resume`,
2288
+ method: "POST",
2289
+ secure: true,
2290
+ format: "json",
2291
+ ...params
2292
+ });
2129
2293
  /**
2130
2294
  * @description Executes: perceive → reason → act → learn
2131
2295
  *
@@ -2190,6 +2354,22 @@ var Cognitive = class {
2190
2354
  format: "json",
2191
2355
  ...params
2192
2356
  });
2357
+ /**
2358
+ * No description
2359
+ *
2360
+ * @tags cognitive
2361
+ * @name StopAgentHandler
2362
+ * @summary POST /api/v1/cognitive/agents/{agent_id}/stop — soft-stop an agent (persisted; distinct from DELETE, which permanently destroys the agent + its goals).
2363
+ * @request POST:/api/v1/cognitive/agents/{agent_id}/stop
2364
+ * @secure
2365
+ */
2366
+ stopAgentHandler = (agentId, params = {}) => this.http.request({
2367
+ path: `/api/v1/cognitive/agents/${agentId}/stop`,
2368
+ method: "POST",
2369
+ secure: true,
2370
+ format: "json",
2371
+ ...params
2372
+ });
2193
2373
  /**
2194
2374
  * @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"]}' ```
2195
2375
  *
@@ -2680,6 +2860,24 @@ var Ingestion = class {
2680
2860
  format: "json",
2681
2861
  ...params
2682
2862
  });
2863
+ /**
2864
+ * @description Two import targets, selected by [`IngestKifRequest::persist`]: * `persist == false` (default): the import runs in a fresh, **request-scoped** world (no shared tenant state is mutated), so the inference is attributable entirely to the submitted SUO-KIF. The tenant id only namespaces the ephemeral sorts. * `persist == true`: the import lands in the **tenant's persistent substrate** — the shared per-tenant `VersionedHierarchy` and `DomainTermStore` ([`AppState::inference_for_auth`]). The sorts, facts, and rules survive the request and are visible to every subsequent call on the same tenant. Caches are invalidated afterwards so the next query observes the new state. Either way, authentication is required and an optional `goal`/`query` is proved against the axioms produced by *this* import.
2865
+ *
2866
+ * @tags ingestion
2867
+ * @name IngestKif
2868
+ * @summary Import SUO-KIF and, optionally, prove a ground goal against the imported axioms.
2869
+ * @request POST:/api/v1/ingest/kif
2870
+ * @secure
2871
+ */
2872
+ ingestKif = (data, params = {}) => this.http.request({
2873
+ path: `/api/v1/ingest/kif`,
2874
+ method: "POST",
2875
+ body: data,
2876
+ secure: true,
2877
+ type: "application/json" /* Json */,
2878
+ format: "json",
2879
+ ...params
2880
+ });
2683
2881
  /**
2684
2882
  * @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.
2685
2883
  *
@@ -2896,6 +3094,21 @@ var StructuredIngestion = class {
2896
3094
  secure: true,
2897
3095
  ...params
2898
3096
  });
3097
+ /**
3098
+ * @description Refused with 409 while a registered source still references the file's path (the source's adapter would otherwise hold a dangling `file_path`). After that source is unregistered, the delete succeeds (204). A missing sidecar (no such upload id) is 404.
3099
+ *
3100
+ * @tags structured_ingestion
3101
+ * @name DeleteSourceFile
3102
+ * @summary Delete a tenant-uploaded source file (#107).
3103
+ * @request DELETE:/api/v1/sources/files/{id}
3104
+ * @secure
3105
+ */
3106
+ deleteSourceFile = (id, params = {}) => this.http.request({
3107
+ path: `/api/v1/sources/files/${id}`,
3108
+ method: "DELETE",
3109
+ secure: true,
3110
+ ...params
3111
+ });
2899
3112
  /**
2900
3113
  * @description Performs schema introspection on the source to discover types (sorts), features (fields), and relations. This is a preview operation - no data is ingested. `type_filter` narrows the discovery to a named subset **without re-registering the source** — the escape hatch a client uses after `/tables` when the source is over the discovery cap (#66, Gap 2). It conjoins with the source config's own `include_tables`: a request narrows *within* the registration, it cannot widen past it.
2901
3114
  *
@@ -2948,6 +3161,22 @@ var StructuredIngestion = class {
2948
3161
  format: "json",
2949
3162
  ...params
2950
3163
  });
3164
+ /**
3165
+ * @description Walks `{base}/{tenant_id}/*\/​.meta.json`. A missing tenant dir yields an empty list (200), not 404 — a tenant that never uploaded is not an error.
3166
+ *
3167
+ * @tags structured_ingestion
3168
+ * @name ListSourceFiles
3169
+ * @summary List the calling tenant's uploaded source files (#107).
3170
+ * @request GET:/api/v1/sources/files
3171
+ * @secure
3172
+ */
3173
+ listSourceFiles = (params = {}) => this.http.request({
3174
+ path: `/api/v1/sources/files`,
3175
+ method: "GET",
3176
+ secure: true,
3177
+ format: "json",
3178
+ ...params
3179
+ });
2951
3180
  /**
2952
3181
  * No description
2953
3182
  *
@@ -3014,6 +3243,24 @@ var StructuredIngestion = class {
3014
3243
  format: "json",
3015
3244
  ...params
3016
3245
  });
3246
+ /**
3247
+ * @description Multipart, one field named `file`. Streamed to disk under `{base}/{tenant_id}/{id}/{safe_name}` with a `.meta.json` sidecar. The response `path` is the engine-internal location handed to `POST /api/v1/sources` as `config.file_path` (csv/parquet) or `config.database_path` (sqlite).
3248
+ *
3249
+ * @tags structured_ingestion
3250
+ * @name UploadSourceFile
3251
+ * @summary Upload a file-based source artifact for the calling tenant (#107).
3252
+ * @request POST:/api/v1/sources/files
3253
+ * @secure
3254
+ */
3255
+ uploadSourceFile = (data, params = {}) => this.http.request({
3256
+ path: `/api/v1/sources/files`,
3257
+ method: "POST",
3258
+ body: data,
3259
+ secure: true,
3260
+ type: "multipart/form-data" /* FormData */,
3261
+ format: "json",
3262
+ ...params
3263
+ });
3017
3264
  };
3018
3265
 
3019
3266
  // src/api-spec/generated/NeuroSymbolic.ts
@@ -3560,6 +3807,60 @@ var Communities = class {
3560
3807
  constructor(http) {
3561
3808
  this.http = http;
3562
3809
  }
3810
+ /**
3811
+ * @description `POST /api/v1/analysis/centrality` Builds the tenant's reference graph from its terms (the same read-only projection community detection uses) and computes the requested centrality measure. Centrality is a **read-only analytic** — it never asserts facts or feeds the chainer. Scores are returned sorted descending (ties broken by node id for determinism), optionally truncated to `top_k`.
3812
+ *
3813
+ * @tags communities
3814
+ * @name ComputeCentrality
3815
+ * @summary Compute a node-centrality measure over the tenant's reference graph.
3816
+ * @request POST:/api/v1/analysis/centrality
3817
+ * @secure
3818
+ */
3819
+ computeCentrality = (data, params = {}) => this.http.request({
3820
+ path: `/api/v1/analysis/centrality`,
3821
+ method: "POST",
3822
+ body: data,
3823
+ secure: true,
3824
+ type: "application/json" /* Json */,
3825
+ format: "json",
3826
+ ...params
3827
+ });
3828
+ /**
3829
+ * @description `POST /api/v1/analysis/cohesion` Read-only: total triangle count plus the per-node local clustering coefficient (sorted descending, ties broken by node id).
3830
+ *
3831
+ * @tags communities
3832
+ * @name ComputeCohesion
3833
+ * @summary Structural-cohesion metrics over the tenant's reference graph.
3834
+ * @request POST:/api/v1/analysis/cohesion
3835
+ * @secure
3836
+ */
3837
+ computeCohesion = (data, params = {}) => this.http.request({
3838
+ path: `/api/v1/analysis/cohesion`,
3839
+ method: "POST",
3840
+ body: data,
3841
+ secure: true,
3842
+ type: "application/json" /* Json */,
3843
+ format: "json",
3844
+ ...params
3845
+ });
3846
+ /**
3847
+ * @description `POST /api/v1/analysis/path` Read-only: BFS shortest path (`source..=target`) over the undirected reference graph, or `null` when `target` is unreachable.
3848
+ *
3849
+ * @tags communities
3850
+ * @name ComputePath
3851
+ * @summary Shortest path between two nodes (and the graph's connected-component count).
3852
+ * @request POST:/api/v1/analysis/path
3853
+ * @secure
3854
+ */
3855
+ computePath = (data, params = {}) => this.http.request({
3856
+ path: `/api/v1/analysis/path`,
3857
+ method: "POST",
3858
+ body: data,
3859
+ secure: true,
3860
+ type: "application/json" /* Json */,
3861
+ format: "json",
3862
+ ...params
3863
+ });
3563
3864
  /**
3564
3865
  * @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.
3565
3866
  *
@@ -3578,6 +3879,21 @@ var Communities = class {
3578
3879
  format: "json",
3579
3880
  ...params
3580
3881
  });
3882
+ /**
3883
+ * @description `GET /api/v1/graph/export?tenant_id=…&format=graphml|gexf|csv-nodes|csv-edges|dot` Read-only: returns the serialized graph as raw text with the matching content type. The graph is the same `Value::Reference` projection the analytics use, labelled by each term's `name` feature.
3884
+ *
3885
+ * @tags communities
3886
+ * @name ExportGraph
3887
+ * @summary Export the tenant's reference graph to a graph-interchange format.
3888
+ * @request GET:/api/v1/graph/export
3889
+ * @secure
3890
+ */
3891
+ exportGraph = (params = {}) => this.http.request({
3892
+ path: `/api/v1/graph/export`,
3893
+ method: "GET",
3894
+ secure: true,
3895
+ ...params
3896
+ });
3581
3897
  /**
3582
3898
  * @description POST /api/v1/communities/memberships Returns all communities that a term belongs to, with membership degrees.
3583
3899
  *
@@ -3596,6 +3912,24 @@ var Communities = class {
3596
3912
  format: "json",
3597
3913
  ...params
3598
3914
  });
3915
+ /**
3916
+ * @description `POST /api/v1/analysis/link-prediction` Read-only: returns ranked candidate targets (not already adjacent) with positive score. The scores are **proposals** — a caller turning one into a KB edge must route it through the engine's `gate_arc_proposals` sort-gate; this endpoint never asserts.
3917
+ *
3918
+ * @tags communities
3919
+ * @name PredictLinks
3920
+ * @summary Score candidate links from a source node (link prediction).
3921
+ * @request POST:/api/v1/analysis/link-prediction
3922
+ * @secure
3923
+ */
3924
+ predictLinks = (data, params = {}) => this.http.request({
3925
+ path: `/api/v1/analysis/link-prediction`,
3926
+ method: "POST",
3927
+ body: data,
3928
+ secure: true,
3929
+ type: "application/json" /* Json */,
3930
+ format: "json",
3931
+ ...params
3932
+ });
3599
3933
  /**
3600
3934
  * @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
3601
3935
  *
@@ -5586,6 +5920,24 @@ var Discovery = class {
5586
5920
  format: "json",
5587
5921
  ...params
5588
5922
  });
5923
+ /**
5924
+ * @description Validates the request, converts DTOs to domain types, calls the learner port from `AppState`, and maps the result to a response DTO. Input bounds are validated to prevent DoS: - `samples.len()` <= 10,000 - `num_restarts` <= 100 - `max_epochs` <= 50,000 - `depth` in 1..=6
5925
+ *
5926
+ * @tags discovery
5927
+ * @name DiscoverEml
5928
+ * @summary Handler for `POST /discover/eml`.
5929
+ * @request POST:/api/v1/discover/eml
5930
+ * @secure
5931
+ */
5932
+ discoverEml = (data, params = {}) => this.http.request({
5933
+ path: `/api/v1/discover/eml`,
5934
+ method: "POST",
5935
+ body: data,
5936
+ secure: true,
5937
+ type: "application/json" /* Json */,
5938
+ format: "json",
5939
+ ...params
5940
+ });
5589
5941
  /**
5590
5942
  * @description POST /api/v1/discovery/predict Finds similar historical patterns and predicts effects using fuzzy search with PRODUCT t-norm reweighting for better aggregation.
5591
5943
  *
@@ -5612,6 +5964,22 @@ var Extraction = class {
5612
5964
  constructor(http) {
5613
5965
  this.http = http;
5614
5966
  }
5967
+ /**
5968
+ * @description Read-only with respect to the knowledge base: certification inspects the tenant's sort lattice and never writes a term. Certificates *are* written to the verification certificate store, so the batch is auditable afterwards.
5969
+ *
5970
+ * @tags extraction
5971
+ * @name CertifyExtraction
5972
+ * @summary `POST /api/v1/extraction/certify` — gate a batch of extraction candidates through the OSF well-sortedness certifier before they may become durable KB content.
5973
+ * @request POST:/api/v1/extraction/certify
5974
+ */
5975
+ certifyExtraction = (data, params = {}) => this.http.request({
5976
+ path: `/api/v1/extraction/certify`,
5977
+ method: "POST",
5978
+ body: data,
5979
+ type: "application/json" /* Json */,
5980
+ format: "json",
5981
+ ...params
5982
+ });
5615
5983
  /**
5616
5984
  * @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.
5617
5985
  *
@@ -6232,6 +6600,24 @@ var Fuzzy = class {
6232
6600
  format: "json",
6233
6601
  ...params
6234
6602
  });
6603
+ /**
6604
+ * @description POST /api/v1/fuzzy/score The complement of `/fuzzy/similar`: that one retrieves and ranks a whole sort; this grades a set the caller already chose — typically the top hits of a *semantic* search — against a preference ψ-term, so a two-stage pipeline can retrieve semantically and grade by fuzzy OSF unification, then combine the two scores upstream with a t-norm. A 65-minute course against a "≤1h" fuzzy preference scores ~0.83 (membership), not the hard 0 a boolean filter gave it.
6605
+ *
6606
+ * @tags fuzzy
6607
+ * @name ScoreTerms
6608
+ * @summary Score a GIVEN set of candidate terms against a query ψ-term.
6609
+ * @request POST:/api/v1/fuzzy/score
6610
+ * @secure
6611
+ */
6612
+ scoreTerms = (data, params = {}) => this.http.request({
6613
+ path: `/api/v1/fuzzy/score`,
6614
+ method: "POST",
6615
+ body: data,
6616
+ secure: true,
6617
+ type: "application/json" /* Json */,
6618
+ format: "json",
6619
+ ...params
6620
+ });
6235
6621
  };
6236
6622
 
6237
6623
  // src/api-spec/generated/Constraints.ts
@@ -6385,7 +6771,7 @@ var Reasoning = class {
6385
6771
  this.http = http;
6386
6772
  }
6387
6773
  /**
6388
- * @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)
6774
+ * @description POST /api/v1/reasoning/disentailment Disentailment A =/=> B means: "if A holds, then B must NOT hold". Returns whether the disentailment is violated — the conflict where the facts establish A and B follows anyway. This is hierarchy-aware and graded on the same footing as the entailment route, so a conflict reachable only through the sort lattice (a `contaminated` clause held by a `lead_paint` fact that subsumes it) is detected without that clause being supplied as a fact. `A ⇏ B` is violated exactly to the degree `A ⇒ B` is established, so `degree` here reports the complement: how strongly the disentailment still holds.
6389
6775
  *
6390
6776
  * @tags reasoning
6391
6777
  * @name Disentailment
@@ -6401,7 +6787,7 @@ var Reasoning = class {
6401
6787
  ...params
6402
6788
  });
6403
6789
  /**
6404
- * @description POST /api/v1/reasoning/entailment Returns whether antecedent entails consequent
6790
+ * @description POST /api/v1/reasoning/entailment Answers `facts antecedent ⇒ consequent`, hierarchy-aware and graded. A clause holds in the fact base to the degree that some fact *witnesses* it — that is, to the degree the clause subsumes a fact — so a `sparrow` fact establishes the clause `animal` without an `animal` fact being supplied. The consequent is additionally established when it subsumes the antecedent it would follow from. See [`osfkb_domain::operations::homoiconic_entailment`] for the full semantics. `entails` is the crisp reading of `degree`; `degree`, `antecedent_degree` and `consequent_degree` are computed from the sort lattice (crisply, and through explicit fuzzy `⊑·` relations and approved sort similarity), never cast from the boolean.
6405
6791
  *
6406
6792
  * @tags reasoning
6407
6793
  * @name Entailment
@@ -8430,6 +8816,20 @@ var Health = class {
8430
8816
  format: "json",
8431
8817
  ...params
8432
8818
  });
8819
+ /**
8820
+ * No description
8821
+ *
8822
+ * @tags health
8823
+ * @name HealthCheckApi
8824
+ * @summary `GET /api/v1/health` — the same enriched health check under the `/api/v1` prefix. The playground front proxy forwards only `/api/*` to the engine (and answers the bare `/health` itself with a static OK), so THIS is the path that makes the deployed `build_info.version` publicly readable — a stale rollout must never be indistinguishable from a fresh one.
8825
+ * @request GET:/api/v1/health
8826
+ */
8827
+ healthCheckApi = (params = {}) => this.http.request({
8828
+ path: `/api/v1/health`,
8829
+ method: "GET",
8830
+ format: "json",
8831
+ ...params
8832
+ });
8433
8833
  };
8434
8834
 
8435
8835
  // src/api-spec/generated/Scheduling.ts
@@ -8734,6 +9134,24 @@ var Generation = class {
8734
9134
  constructor(http) {
8735
9135
  this.http = http;
8736
9136
  }
9137
+ /**
9138
+ * @description Returns 503 when no in-process Gemma is loaded (the server was not started with `OSFKB_OSFQL_GEMMA_DIR`), and 400 when `allowed` is empty.
9139
+ *
9140
+ * @tags generation
9141
+ * @name ConstrainedGenerate
9142
+ * @summary Generate an answer constrained to an OSF-feasible set via the application-tier decoder.
9143
+ * @request POST:/api/v1/constrained/generate
9144
+ * @secure
9145
+ */
9146
+ constrainedGenerate = (data, params = {}) => this.http.request({
9147
+ path: `/api/v1/constrained/generate`,
9148
+ method: "POST",
9149
+ body: data,
9150
+ secure: true,
9151
+ type: "application/json" /* Json */,
9152
+ format: "json",
9153
+ ...params
9154
+ });
8737
9155
  /**
8738
9156
  * No description
8739
9157
  *
@@ -8752,6 +9170,58 @@ var Generation = class {
8752
9170
  format: "json",
8753
9171
  ...params
8754
9172
  });
9173
+ /**
9174
+ * @description POST /api/v1/text/generate
9175
+ *
9176
+ * @tags generation
9177
+ * @name GenerateText
9178
+ * @summary Run the caller's system prompt over their text.
9179
+ * @request POST:/api/v1/text/generate
9180
+ * @secure
9181
+ */
9182
+ generateText = (data, params = {}) => this.http.request({
9183
+ path: `/api/v1/text/generate`,
9184
+ method: "POST",
9185
+ body: data,
9186
+ secure: true,
9187
+ type: "application/json" /* Json */,
9188
+ format: "json",
9189
+ ...params
9190
+ });
9191
+ /**
9192
+ * @description Returns `503` when no in-process Gemma is loaded (server started without `OSFKB_OSFQL_GEMMA_DIR`), `400` on an empty prompt, and `422` when the tenant has no persisted lattice to constrain to (ingest a theory with `persist:true` first).
9193
+ *
9194
+ * @tags generation
9195
+ * @name GroundedGenerate
9196
+ * @summary Generate grounded prose via the two-pass (constrained derivation → free realization) pipeline.
9197
+ * @request POST:/api/v1/generate/grounded
9198
+ * @secure
9199
+ */
9200
+ groundedGenerate = (data, params = {}) => this.http.request({
9201
+ path: `/api/v1/generate/grounded`,
9202
+ method: "POST",
9203
+ body: data,
9204
+ secure: true,
9205
+ type: "application/json" /* Json */,
9206
+ format: "json",
9207
+ ...params
9208
+ });
9209
+ /**
9210
+ * No description
9211
+ *
9212
+ * @tags generation
9213
+ * @name RawGenerate
9214
+ * @summary Raw, ungrounded generation from the **same in-process Gemma** the grounded endpoint uses — a bare chat-prompt free decode with NO substrate, NO feasibility proof, and NO lattice mask. This is the honest "WITHOUT — Raw LLM" baseline for the demo's left panel: the identical local model, answering the identical question, with nothing from the knowledge base — so the side-by-side isolates exactly what ReasoningLayer's substrate adds. Returns `503` when no local Gemma is loaded (server started without `OSFKB_OSFQL_GEMMA_DIR`) and `400` on an empty prompt.
9215
+ * @request POST:/api/v1/generate/raw
9216
+ */
9217
+ rawGenerate = (data, params = {}) => this.http.request({
9218
+ path: `/api/v1/generate/raw`,
9219
+ method: "POST",
9220
+ body: data,
9221
+ type: "application/json" /* Json */,
9222
+ format: "json",
9223
+ ...params
9224
+ });
8755
9225
  };
8756
9226
 
8757
9227
  // src/api-spec/generated/Rag.ts
@@ -8834,6 +9304,7 @@ var Osfql = class {
8834
9304
  path: `/api/v1/osfql/catalog`,
8835
9305
  method: "GET",
8836
9306
  query,
9307
+ format: "json",
8837
9308
  ...params
8838
9309
  });
8839
9310
  };
@@ -9053,6 +9524,58 @@ var Compliance = class {
9053
9524
  format: "json",
9054
9525
  ...params
9055
9526
  });
9527
+ /**
9528
+ * No description
9529
+ *
9530
+ * @tags compliance
9531
+ * @name CreateDsr
9532
+ * @summary File a GDPR data subject request
9533
+ * @request POST:/api/v1/dsr
9534
+ * @secure
9535
+ */
9536
+ createDsr = (data, params = {}) => this.http.request({
9537
+ path: `/api/v1/dsr`,
9538
+ method: "POST",
9539
+ body: data,
9540
+ secure: true,
9541
+ type: "application/json" /* Json */,
9542
+ format: "json",
9543
+ ...params
9544
+ });
9545
+ /**
9546
+ * @description **Dry run by default.** An exact match on an identifying feature is the only deterministic way to resolve a person to terms, but exactness is not uniqueness — two people share a name. Erasing on a bare match would silently destroy a homonym's data, and erasure is irreversible, so the plan has to be inspectable before it runs. Pass `confirm: true` once the match has been reviewed.
9547
+ *
9548
+ * @tags compliance
9549
+ * @name EraseSubject
9550
+ * @summary Plan or execute erasure of a data subject's terms
9551
+ * @request POST:/api/v1/dsr/{id}/erase
9552
+ * @secure
9553
+ */
9554
+ eraseSubject = (id, data, params = {}) => this.http.request({
9555
+ path: `/api/v1/dsr/${id}/erase`,
9556
+ method: "POST",
9557
+ body: data,
9558
+ secure: true,
9559
+ type: "application/json" /* Json */,
9560
+ format: "json",
9561
+ ...params
9562
+ });
9563
+ /**
9564
+ * No description
9565
+ *
9566
+ * @tags compliance
9567
+ * @name GetDsr
9568
+ * @summary Read a data subject request
9569
+ * @request GET:/api/v1/dsr/{id}
9570
+ * @secure
9571
+ */
9572
+ getDsr = (id, params = {}) => this.http.request({
9573
+ path: `/api/v1/dsr/${id}`,
9574
+ method: "GET",
9575
+ secure: true,
9576
+ format: "json",
9577
+ ...params
9578
+ });
9056
9579
  /**
9057
9580
  * No description
9058
9581
  *
@@ -9086,6 +9609,22 @@ var Compliance = class {
9086
9609
  format: "json",
9087
9610
  ...params
9088
9611
  });
9612
+ /**
9613
+ * No description
9614
+ *
9615
+ * @tags compliance
9616
+ * @name ListDsr
9617
+ * @summary List a data subject's requests
9618
+ * @request GET:/api/v1/dsr
9619
+ * @secure
9620
+ */
9621
+ listDsr = (params = {}) => this.http.request({
9622
+ path: `/api/v1/dsr`,
9623
+ method: "GET",
9624
+ secure: true,
9625
+ format: "json",
9626
+ ...params
9627
+ });
9089
9628
  /**
9090
9629
  * No description
9091
9630
  *
@@ -9158,6 +9697,22 @@ var Operations = class {
9158
9697
  format: "json",
9159
9698
  ...params
9160
9699
  });
9700
+ /**
9701
+ * @description `POST /api/v1/operations/anti-unify/batch` One in-process left fold of the binary LGG — associative up to variable renaming, so the result equals the client-side pairwise chain while costing a single round trip. Every intermediate LGG is persisted and returned in `steps` (the generalization ladder).
9702
+ *
9703
+ * @tags operations
9704
+ * @name AntiUnifyBatch
9705
+ * @summary Anti-unify N Ψ-terms (Least General Generalisation of the whole set).
9706
+ * @request POST:/api/v1/operations/anti-unify/batch
9707
+ */
9708
+ antiUnifyBatch = (data, params = {}) => this.http.request({
9709
+ path: `/api/v1/operations/anti-unify/batch`,
9710
+ method: "POST",
9711
+ body: data,
9712
+ type: "application/json" /* Json */,
9713
+ format: "json",
9714
+ ...params
9715
+ });
9161
9716
  };
9162
9717
 
9163
9718
  // src/api-spec/generated/Actions.ts
@@ -9551,6 +10106,24 @@ var OntologyBridge = class {
9551
10106
  format: "json",
9552
10107
  ...params
9553
10108
  });
10109
+ /**
10110
+ * @description The gap this closes (#133): the engine could lower OSFQL to a source's native language and could execute native queries, and the two were never reachable together over HTTP. `POST /api/v1/osfql` runs against the knowledge base and never consults a binding; `POST /api/v1/ontology/transpile` emits the query text and stops. A `transpile`-mode source — which deliberately ingests nothing — therefore had no way to be queried at all, and asking about its data returned an empty result indistinguishable from a broken connector. The dialect is derived from the source's type, never taken from the caller: the binding says which source answers for the sort, and that source's type is the only dialect that could run. Letting a caller name one would let them ask for Cypher against Postgres. The emitted query is returned with the rows. Transpile mode's claim is that OSFQL becomes a native query against the operator's own database; returning only rows leaves that unverifiable.
10111
+ *
10112
+ * @tags ontology_bridge
10113
+ * @name ExecuteTranspiled
10114
+ * @summary Transpile an OSFQL MATCH and execute it on the source it is bound to.
10115
+ * @request POST:/api/v1/ontology/query
10116
+ * @secure
10117
+ */
10118
+ executeTranspiled = (data, params = {}) => this.http.request({
10119
+ path: `/api/v1/ontology/query`,
10120
+ method: "POST",
10121
+ body: data,
10122
+ secure: true,
10123
+ type: "application/json" /* Json */,
10124
+ format: "json",
10125
+ ...params
10126
+ });
9554
10127
  /**
9555
10128
  * @description Produces query tools, write tools, and inference tools from the current sort hierarchy and SQL bindings, along with a system prompt suitable for grounding an LLM.
9556
10129
  *
@@ -9620,7 +10193,7 @@ var OntologyBridge = class {
9620
10193
  ...params
9621
10194
  });
9622
10195
  /**
9623
- * @description Parses the OSFQL query, compiles it, and transpiles the first `ScanBySort` operation to SQL using the current sort-table bindings.
10196
+ * @description Parses the OSFQL query, compiles it, and transpiles EVERY `ScanBySort` operation into one statement using the current sort-table bindings — a JOIN for the SQL dialects, a multi-pattern MATCH for Cypher. A plan operation that is not a scan is refused by name rather than dropped: `fully_transpilable` is what a caller checks to decide whether the emitted text is the whole question, and it reported `true` for a query half of which was never emitted (#134).
9624
10197
  *
9625
10198
  * @tags ontology_bridge
9626
10199
  * @name Transpile
@@ -9654,12 +10227,571 @@ var OntologyBridge = class {
9654
10227
  });
9655
10228
  };
9656
10229
 
10230
+ // src/api-spec/generated/Demo.ts
10231
+ var Demo = class {
10232
+ http;
10233
+ constructor(http) {
10234
+ this.http = http;
10235
+ }
10236
+ /**
10237
+ * @description Returns `404` when the SUMO files cannot be read (bad `OSFKB_SUMO_DIR`/override), `400` when the assembled source fails to import, and `200` with the tenant's sort count + form count on success.
10238
+ *
10239
+ * @tags demo
10240
+ * @name DemoSeed
10241
+ * @summary Seed the request tenant's persistent substrate with full SUMO + the demo scenario situations.
10242
+ * @request POST:/api/v1/demo/seed
10243
+ * @secure
10244
+ */
10245
+ demoSeed = (data, params = {}) => this.http.request({
10246
+ path: `/api/v1/demo/seed`,
10247
+ method: "POST",
10248
+ body: data,
10249
+ secure: true,
10250
+ type: "application/json" /* Json */,
10251
+ format: "json",
10252
+ ...params
10253
+ });
10254
+ };
10255
+
10256
+ // src/api-spec/generated/Reward.ts
10257
+ var Reward = class {
10258
+ http;
10259
+ constructor(http) {
10260
+ this.http = http;
10261
+ }
10262
+ /**
10263
+ * No description
10264
+ *
10265
+ * @tags reward
10266
+ * @name Score
10267
+ * @summary `POST /api/v1/reward/score` — score a candidate query execution-free for the authenticated tenant. Returns `404` if the sort name is unknown to the lattice.
10268
+ * @request POST:/api/v1/reward/score
10269
+ * @secure
10270
+ */
10271
+ score = (data, params = {}) => this.http.request({
10272
+ path: `/api/v1/reward/score`,
10273
+ method: "POST",
10274
+ body: data,
10275
+ secure: true,
10276
+ type: "application/json" /* Json */,
10277
+ format: "json",
10278
+ ...params
10279
+ });
10280
+ };
10281
+
10282
+ // src/api-spec/generated/Translation.ts
10283
+ var Translation = class {
10284
+ http;
10285
+ constructor(http) {
10286
+ this.http = http;
10287
+ }
10288
+ /**
10289
+ * @description POST /api/v1/translate
10290
+ *
10291
+ * @tags translation
10292
+ * @name Translate
10293
+ * @summary Translate text into a target language.
10294
+ * @request POST:/api/v1/translate
10295
+ * @secure
10296
+ */
10297
+ translate = (data, params = {}) => this.http.request({
10298
+ path: `/api/v1/translate`,
10299
+ method: "POST",
10300
+ body: data,
10301
+ secure: true,
10302
+ type: "application/json" /* Json */,
10303
+ format: "json",
10304
+ ...params
10305
+ });
10306
+ };
10307
+
10308
+ // src/api-spec/generated/Streaming.ts
10309
+ var Streaming = class {
10310
+ http;
10311
+ constructor(http) {
10312
+ this.http = http;
10313
+ }
10314
+ /**
10315
+ * @description Build a Count-Min sketch from `items`, then return the estimated frequency for each key in `query_keys`. Strings are hashed to `u64` before insertion. The same hash is used for queries, so counts are consistent within a call. The returned `estimated_count` is an over-estimate: it never falls below the true count, and with (ε, δ) accuracy parameters it exceeds the true count by at most ε · N with probability 1 − δ. No tenant context is required.
10316
+ *
10317
+ * @tags streaming
10318
+ * @name Frequency
10319
+ * @summary `POST /api/v1/streaming/frequency`
10320
+ * @request POST:/api/v1/streaming/frequency
10321
+ */
10322
+ frequency = (data, params = {}) => this.http.request({
10323
+ path: `/api/v1/streaming/frequency`,
10324
+ method: "POST",
10325
+ body: data,
10326
+ type: "application/json" /* Json */,
10327
+ format: "json",
10328
+ ...params
10329
+ });
10330
+ /**
10331
+ * @description Build a Misra-Gries sketch from the supplied batch and return the candidate heavy hitters with their lower-bound counts. The algorithm uses `O(capacity)` memory regardless of the stream cardinality. Every item whose true frequency exceeds `N / (capacity + 1)` is guaranteed to be present in the output. No tenant context is required; the sketch is ephemeral to the call.
10332
+ *
10333
+ * @tags streaming
10334
+ * @name HeavyHitters
10335
+ * @summary `POST /api/v1/streaming/heavy-hitters`
10336
+ * @request POST:/api/v1/streaming/heavy-hitters
10337
+ */
10338
+ heavyHitters = (data, params = {}) => this.http.request({
10339
+ path: `/api/v1/streaming/heavy-hitters`,
10340
+ method: "POST",
10341
+ body: data,
10342
+ type: "application/json" /* Json */,
10343
+ format: "json",
10344
+ ...params
10345
+ });
10346
+ /**
10347
+ * @description Build a Bloom filter, insert every item in `insert_items`, then test each item in `test_items` for membership. **Zero false negatives** — every inserted item will test as present. False positives are possible at a rate that depends on `bit_count`, `hash_count`, and the number of distinct items inserted. No tenant context is required.
10348
+ *
10349
+ * @tags streaming
10350
+ * @name Membership
10351
+ * @summary `POST /api/v1/streaming/membership`
10352
+ * @request POST:/api/v1/streaming/membership
10353
+ */
10354
+ membership = (data, params = {}) => this.http.request({
10355
+ path: `/api/v1/streaming/membership`,
10356
+ method: "POST",
10357
+ body: data,
10358
+ type: "application/json" /* Json */,
10359
+ format: "json",
10360
+ ...params
10361
+ });
10362
+ };
10363
+
10364
+ // src/api-spec/generated/Conformal.ts
10365
+ var Conformal = class {
10366
+ http;
10367
+ constructor(http) {
10368
+ this.http = http;
10369
+ }
10370
+ /**
10371
+ * @description Compute a split-conformal non-conformity threshold from a labeled calibration set. Returns the threshold `τ` and a coverage certificate. The returned `threshold` should be passed verbatim to `POST /api/v1/conformal/predict`.
10372
+ *
10373
+ * @tags conformal
10374
+ * @name Calibrate
10375
+ * @summary `POST /api/v1/conformal/calibrate`
10376
+ * @request POST:/api/v1/conformal/calibrate
10377
+ */
10378
+ calibrate = (data, params = {}) => this.http.request({
10379
+ path: `/api/v1/conformal/calibrate`,
10380
+ method: "POST",
10381
+ body: data,
10382
+ type: "application/json" /* Json */,
10383
+ format: "json",
10384
+ ...params
10385
+ });
10386
+ /**
10387
+ * @description Apply a pre-computed conformal threshold to unlabeled test inputs and return prediction sets with coverage certificates. A class `y` is included in an input's prediction set iff `1 − class_scores[y] ≤ threshold` (equivalently, `class_scores[y] ≥ 1 − threshold`). When no class meets this criterion the prediction set is empty and `abstains = true` is set on that input's result.
10388
+ *
10389
+ * @tags conformal
10390
+ * @name Predict
10391
+ * @summary `POST /api/v1/conformal/predict`
10392
+ * @request POST:/api/v1/conformal/predict
10393
+ */
10394
+ predict = (data, params = {}) => this.http.request({
10395
+ path: `/api/v1/conformal/predict`,
10396
+ method: "POST",
10397
+ body: data,
10398
+ type: "application/json" /* Json */,
10399
+ format: "json",
10400
+ ...params
10401
+ });
10402
+ };
10403
+
10404
+ // src/api-spec/generated/Vision.ts
10405
+ var Vision = class {
10406
+ http;
10407
+ constructor(http) {
10408
+ this.http = http;
10409
+ }
10410
+ /**
10411
+ * @description Requires the deployment to have a [`VJepaPerceptionService`] mounted as an Axum extension. If absent, the route should not be registered; if it is registered without the extension, this handler returns 503. Mounted at `POST /api/v1/vision/encode-clip` by the production composition root when the V-JEPA service is configured.
10412
+ *
10413
+ * @tags vision
10414
+ * @name EncodeClip
10415
+ * @summary Encode a video clip end-to-end through V-JEPA + the head + the substrate, returning per-frame Ψ-term prediction summaries.
10416
+ * @request POST:/api/v1/vision/encode-clip
10417
+ * @secure
10418
+ */
10419
+ encodeClip = (data, params = {}) => this.http.request({
10420
+ path: `/api/v1/vision/encode-clip`,
10421
+ method: "POST",
10422
+ body: data,
10423
+ secure: true,
10424
+ type: "application/json" /* Json */,
10425
+ format: "json",
10426
+ ...params
10427
+ });
10428
+ };
10429
+
10430
+ // src/api-spec/generated/Anonymization.ts
10431
+ var Anonymization = class {
10432
+ http;
10433
+ constructor(http) {
10434
+ this.http = http;
10435
+ }
10436
+ /**
10437
+ * @description Batch-anonymize a set of records using either k-anonymity or HIPAA Safe Harbor de-identification. Returns the processed records together with a full compliance report. Accepts up to 10 000 records per call. For larger batches partition the input and call in parallel. Returns `200 OK` with [`AnonymizeResponse`] on success.
10438
+ *
10439
+ * @tags anonymization
10440
+ * @name AnonymizeRecords
10441
+ * @summary `POST /api/v1/anonymize`
10442
+ * @request POST:/api/v1/anonymize
10443
+ * @secure
10444
+ */
10445
+ anonymizeRecords = (data, params = {}) => this.http.request({
10446
+ path: `/api/v1/anonymize`,
10447
+ method: "POST",
10448
+ body: data,
10449
+ secure: true,
10450
+ type: "application/json" /* Json */,
10451
+ format: "json",
10452
+ ...params
10453
+ });
10454
+ };
10455
+
10456
+ // src/api-spec/generated/Speakers.ts
10457
+ var Speakers = class {
10458
+ http;
10459
+ constructor(http) {
10460
+ this.http = http;
10461
+ }
10462
+ /**
10463
+ * @description DELETE /api/v1/speakers/{id}
10464
+ *
10465
+ * @tags speakers
10466
+ * @name DeleteSpeaker
10467
+ * @summary Delete a speaker profile by id.
10468
+ * @request DELETE:/api/v1/speakers/{id}
10469
+ * @secure
10470
+ */
10471
+ deleteSpeaker = (id, params = {}) => this.http.request({
10472
+ path: `/api/v1/speakers/${id}`,
10473
+ method: "DELETE",
10474
+ secure: true,
10475
+ ...params
10476
+ });
10477
+ /**
10478
+ * @description POST /api/v1/speakers/enroll
10479
+ *
10480
+ * @tags speakers
10481
+ * @name EnrollSpeaker
10482
+ * @summary Enroll (or re-enroll) a speaker voiceprint.
10483
+ * @request POST:/api/v1/speakers/enroll
10484
+ * @secure
10485
+ */
10486
+ enrollSpeaker = (data, params = {}) => this.http.request({
10487
+ path: `/api/v1/speakers/enroll`,
10488
+ method: "POST",
10489
+ body: data,
10490
+ secure: true,
10491
+ type: "application/json" /* Json */,
10492
+ format: "json",
10493
+ ...params
10494
+ });
10495
+ /**
10496
+ * @description POST /api/v1/speakers/identify
10497
+ *
10498
+ * @tags speakers
10499
+ * @name IdentifySpeakers
10500
+ * @summary Identify which enrolled voices speak in a piece of audio — no transcript.
10501
+ * @request POST:/api/v1/speakers/identify
10502
+ * @secure
10503
+ */
10504
+ identifySpeakers = (data, params = {}) => this.http.request({
10505
+ path: `/api/v1/speakers/identify`,
10506
+ method: "POST",
10507
+ body: data,
10508
+ secure: true,
10509
+ type: "application/json" /* Json */,
10510
+ format: "json",
10511
+ ...params
10512
+ });
10513
+ /**
10514
+ * @description GET /api/v1/speakers
10515
+ *
10516
+ * @tags speakers
10517
+ * @name ListSpeakers
10518
+ * @summary List the tenant's enrolled speaker profiles (embeddings withheld).
10519
+ * @request GET:/api/v1/speakers
10520
+ * @secure
10521
+ */
10522
+ listSpeakers = (params = {}) => this.http.request({
10523
+ path: `/api/v1/speakers`,
10524
+ method: "GET",
10525
+ secure: true,
10526
+ format: "json",
10527
+ ...params
10528
+ });
10529
+ };
10530
+
10531
+ // src/api-spec/generated/Speech.ts
10532
+ var Speech = class {
10533
+ http;
10534
+ constructor(http) {
10535
+ this.http = http;
10536
+ }
10537
+ /**
10538
+ * @description DELETE /api/v1/speech/voices/{id}
10539
+ *
10540
+ * @tags speech
10541
+ * @name DeleteVoice
10542
+ * @summary Delete a cloned voice, upstream conditioning included.
10543
+ * @request DELETE:/api/v1/speech/voices/{id}
10544
+ * @secure
10545
+ */
10546
+ deleteVoice = (id, params = {}) => this.http.request({
10547
+ path: `/api/v1/speech/voices/${id}`,
10548
+ method: "DELETE",
10549
+ secure: true,
10550
+ ...params
10551
+ });
10552
+ /**
10553
+ * @description POST /api/v1/speech/voices
10554
+ *
10555
+ * @tags speech
10556
+ * @name EnrollVoice
10557
+ * @summary Enroll (or re-enroll) a cloned voice.
10558
+ * @request POST:/api/v1/speech/voices
10559
+ * @secure
10560
+ */
10561
+ enrollVoice = (data, params = {}) => this.http.request({
10562
+ path: `/api/v1/speech/voices`,
10563
+ method: "POST",
10564
+ body: data,
10565
+ secure: true,
10566
+ type: "application/json" /* Json */,
10567
+ format: "json",
10568
+ ...params
10569
+ });
10570
+ /**
10571
+ * @description GET /api/v1/speech/engines
10572
+ *
10573
+ * @tags speech
10574
+ * @name ListEngines
10575
+ * @summary Report per-engine availability.
10576
+ * @request GET:/api/v1/speech/engines
10577
+ * @secure
10578
+ */
10579
+ listEngines = (params = {}) => this.http.request({
10580
+ path: `/api/v1/speech/engines`,
10581
+ method: "GET",
10582
+ secure: true,
10583
+ format: "json",
10584
+ ...params
10585
+ });
10586
+ /**
10587
+ * @description GET /api/v1/speech/voices
10588
+ *
10589
+ * @tags speech
10590
+ * @name ListVoices
10591
+ * @summary List the tenant's cloned voices plus available presets.
10592
+ * @request GET:/api/v1/speech/voices
10593
+ * @secure
10594
+ */
10595
+ listVoices = (params = {}) => this.http.request({
10596
+ path: `/api/v1/speech/voices`,
10597
+ method: "GET",
10598
+ secure: true,
10599
+ format: "json",
10600
+ ...params
10601
+ });
10602
+ /**
10603
+ * @description POST /api/v1/speech/session
10604
+ *
10605
+ * @tags speech
10606
+ * @name OpenSpeechSession
10607
+ * @summary Open a speech-to-speech session.
10608
+ * @request POST:/api/v1/speech/session
10609
+ * @secure
10610
+ */
10611
+ openSpeechSession = (data, params = {}) => this.http.request({
10612
+ path: `/api/v1/speech/session`,
10613
+ method: "POST",
10614
+ body: data,
10615
+ secure: true,
10616
+ type: "application/json" /* Json */,
10617
+ format: "json",
10618
+ ...params
10619
+ });
10620
+ /**
10621
+ * @description POST /api/v1/speech/synthesize
10622
+ *
10623
+ * @tags speech
10624
+ * @name SynthesizeSpeech
10625
+ * @summary Synthesize speech.
10626
+ * @request POST:/api/v1/speech/synthesize
10627
+ * @secure
10628
+ */
10629
+ synthesizeSpeech = (data, params = {}) => this.http.request({
10630
+ path: `/api/v1/speech/synthesize`,
10631
+ method: "POST",
10632
+ body: data,
10633
+ secure: true,
10634
+ type: "application/json" /* Json */,
10635
+ ...params
10636
+ });
10637
+ /**
10638
+ * @description POST /api/v1/speech/transcribe
10639
+ *
10640
+ * @tags speech
10641
+ * @name TranscribeSpeech
10642
+ * @summary Transcribe a short utterance.
10643
+ * @request POST:/api/v1/speech/transcribe
10644
+ * @secure
10645
+ */
10646
+ transcribeSpeech = (data, params = {}) => this.http.request({
10647
+ path: `/api/v1/speech/transcribe`,
10648
+ method: "POST",
10649
+ body: data,
10650
+ secure: true,
10651
+ type: "application/json" /* Json */,
10652
+ format: "json",
10653
+ ...params
10654
+ });
10655
+ };
10656
+
10657
+ // src/api-spec/generated/Connectors.ts
10658
+ var Connectors = class {
10659
+ http;
10660
+ constructor(http) {
10661
+ this.http = http;
10662
+ }
10663
+ /**
10664
+ * @description POST /api/v1/connectors/manage
10665
+ *
10666
+ * @tags connectors
10667
+ * @name Add
10668
+ * @summary Add a connector instance to the tenant.
10669
+ * @request POST:/api/v1/connectors/manage
10670
+ * @secure
10671
+ */
10672
+ add = (data, params = {}) => this.http.request({
10673
+ path: `/api/v1/connectors/manage`,
10674
+ method: "POST",
10675
+ body: data,
10676
+ secure: true,
10677
+ type: "application/json" /* Json */,
10678
+ format: "json",
10679
+ ...params
10680
+ });
10681
+ /**
10682
+ * @description POST /api/v1/connectors/manage/{name}/disconnect
10683
+ *
10684
+ * @tags connectors
10685
+ * @name Disconnect
10686
+ * @summary Disconnect a connector (revoke tokens, set status=disconnected).
10687
+ * @request POST:/api/v1/connectors/manage/{name}/disconnect
10688
+ * @secure
10689
+ */
10690
+ disconnect = (name, params = {}) => this.http.request({
10691
+ path: `/api/v1/connectors/manage/${name}/disconnect`,
10692
+ method: "POST",
10693
+ secure: true,
10694
+ ...params
10695
+ });
10696
+ /**
10697
+ * @description GET /api/v1/connectors/manage
10698
+ *
10699
+ * @tags connectors
10700
+ * @name List
10701
+ * @summary List tenant's connectors.
10702
+ * @request GET:/api/v1/connectors/manage
10703
+ * @secure
10704
+ */
10705
+ list = (params = {}) => this.http.request({
10706
+ path: `/api/v1/connectors/manage`,
10707
+ method: "GET",
10708
+ secure: true,
10709
+ format: "json",
10710
+ ...params
10711
+ });
10712
+ /**
10713
+ * @description GET /api/v1/connector-types
10714
+ *
10715
+ * @tags connectors
10716
+ * @name ListTypes
10717
+ * @summary List available connector types (global catalog).
10718
+ * @request GET:/api/v1/connector-types
10719
+ */
10720
+ listTypes = (params = {}) => this.http.request({
10721
+ path: `/api/v1/connector-types`,
10722
+ method: "GET",
10723
+ format: "json",
10724
+ ...params
10725
+ });
10726
+ /**
10727
+ * @description GET /api/v1/connectors/manage/{name}/oauth/callback
10728
+ *
10729
+ * @tags connectors
10730
+ * @name OauthCallback
10731
+ * @summary OAuth callback — exchanges code for tokens, returns HTML that posts message to opener.
10732
+ * @request GET:/api/v1/connectors/manage/{name}/oauth/callback
10733
+ */
10734
+ oauthCallback = (name, query, params = {}) => this.http.request({
10735
+ path: `/api/v1/connectors/manage/${name}/oauth/callback`,
10736
+ method: "GET",
10737
+ query,
10738
+ ...params
10739
+ });
10740
+ /**
10741
+ * @description DELETE /api/v1/connectors/manage/{name}
10742
+ *
10743
+ * @tags connectors
10744
+ * @name Remove
10745
+ * @summary Remove a connector from the tenant (cascades: deletes tokens).
10746
+ * @request DELETE:/api/v1/connectors/manage/{name}
10747
+ * @secure
10748
+ */
10749
+ remove = (name, params = {}) => this.http.request({
10750
+ path: `/api/v1/connectors/manage/${name}`,
10751
+ method: "DELETE",
10752
+ secure: true,
10753
+ ...params
10754
+ });
10755
+ /**
10756
+ * @description POST /api/v1/connectors/manage/{name}/connect
10757
+ *
10758
+ * @tags connectors
10759
+ * @name StartOauth
10760
+ * @summary Start OAuth flow — returns auth URL for popup.
10761
+ * @request POST:/api/v1/connectors/manage/{name}/connect
10762
+ * @secure
10763
+ */
10764
+ startOauth = (name, params = {}) => this.http.request({
10765
+ path: `/api/v1/connectors/manage/${name}/connect`,
10766
+ method: "POST",
10767
+ secure: true,
10768
+ format: "json",
10769
+ ...params
10770
+ });
10771
+ };
10772
+
9657
10773
  // src/api-spec/generated/Documents.ts
9658
10774
  var Documents = class {
9659
10775
  http;
9660
10776
  constructor(http) {
9661
10777
  this.http = http;
9662
10778
  }
10779
+ /**
10780
+ * No description
10781
+ *
10782
+ * @tags documents
10783
+ * @name EraseDocument
10784
+ * @summary Erase a document and everything extracted from it
10785
+ * @request DELETE:/api/v1/documents/{id}
10786
+ * @secure
10787
+ */
10788
+ eraseDocument = (id, params = {}) => this.http.request({
10789
+ path: `/api/v1/documents/${id}`,
10790
+ method: "DELETE",
10791
+ secure: true,
10792
+ format: "json",
10793
+ ...params
10794
+ });
9663
10795
  /**
9664
10796
  * No description
9665
10797
  *
@@ -11119,6 +12251,15 @@ function RejectLearnedSimilarityResponseFromApiToFront(dto) {
11119
12251
  message: dto.message
11120
12252
  };
11121
12253
  }
12254
+ function SortIndexStatusResponseFromApiToFront(dto) {
12255
+ const out = {
12256
+ running: dto.running,
12257
+ totalSorts: dto.total_sorts
12258
+ };
12259
+ if (dto.last_error != null) out.lastError = dto.last_error;
12260
+ if (dto.last_indexed_count != null) out.lastIndexedCount = dto.last_indexed_count;
12261
+ return out;
12262
+ }
11122
12263
 
11123
12264
  // src/resources/sorts.ts
11124
12265
  var SortsClient = class {
@@ -11334,6 +12475,16 @@ var SortsClient = class {
11334
12475
  async indexSorts() {
11335
12476
  await this.sorts.indexSorts();
11336
12477
  }
12478
+ /**
12479
+ * Report the status of the background sort-indexing pass.
12480
+ *
12481
+ * @returns Whether a re-index is running, the most recent run's indexed
12482
+ * count and any error, plus the total data-sort denominator.
12483
+ */
12484
+ async sortIndexStatus() {
12485
+ const response = await this.sorts.sortIndexStatus();
12486
+ return SortIndexStatusResponseFromApiToFront(response.data);
12487
+ }
11337
12488
  /**
11338
12489
  * Update the review status of a sort.
11339
12490
  *
@@ -14685,6 +15836,25 @@ function FindSimilarRequestFromFrontToApi(model) {
14685
15836
  fail_on_unknown: model.failOnUnknown
14686
15837
  };
14687
15838
  }
15839
+ function ScoreTermsRequestFromFrontToApi(model) {
15840
+ return {
15841
+ ...QueryTermFromFrontToApi(model),
15842
+ fail_on_unknown: model.failOnUnknown,
15843
+ similarity_mode: model.similarityMode,
15844
+ term_ids: model.termIds
15845
+ };
15846
+ }
15847
+ function ScoredTermFromApiToFront(dto) {
15848
+ return {
15849
+ degree: dto.degree,
15850
+ termId: dto.term_id
15851
+ };
15852
+ }
15853
+ function ScoreTermsResponseFromApiToFront(dto) {
15854
+ return {
15855
+ scores: dto.scores.map(ScoredTermFromApiToFront)
15856
+ };
15857
+ }
14688
15858
  function SimilarityMatchFromApiToFront(dto) {
14689
15859
  return {
14690
15860
  confidencePercent: dto.confidence_percent,
@@ -14855,6 +16025,18 @@ var FuzzyClient = class {
14855
16025
  });
14856
16026
  return PredictEffectResponseFromApiToFront(response.data);
14857
16027
  }
16028
+ /**
16029
+ * Score a given set of candidate terms against a query ψ-term.
16030
+ *
16031
+ * @param request - The query ψ-term (`QueryTerm`) plus the candidate
16032
+ * `termIds` and optional scoring knobs.
16033
+ * @returns The candidates with their fuzzy-unification degrees, in
16034
+ * input order.
16035
+ */
16036
+ async scoreTerms(request) {
16037
+ const response = await this.api.scoreTerms(ScoreTermsRequestFromFrontToApi(request));
16038
+ return ScoreTermsResponseFromApiToFront(response.data);
16039
+ }
14858
16040
  };
14859
16041
 
14860
16042
  // src/normalizers/visualization.ts
@@ -18470,6 +19652,35 @@ function IngestRdfRequestFromFrontToApi(model) {
18470
19652
  parse_shacl: model.parseShacl
18471
19653
  };
18472
19654
  }
19655
+ function IngestKifRequestFromFrontToApi(model) {
19656
+ const dto = { content: model.content };
19657
+ if (model.goal !== void 0) dto.goal = model.goal;
19658
+ if (model.persist !== void 0) dto.persist = model.persist;
19659
+ if (model.query !== void 0) dto.query = model.query;
19660
+ return dto;
19661
+ }
19662
+ function IngestKifResponseFromApiToFront(dto) {
19663
+ const out = {
19664
+ capturedNonHorn: dto.captured_non_horn,
19665
+ constraintRules: dto.constraint_rules,
19666
+ disjunctiveRules: dto.disjunctive_rules,
19667
+ facts: dto.facts,
19668
+ forms: dto.forms,
19669
+ hornRules: dto.horn_rules,
19670
+ instantiatedRules: dto.instantiated_rules,
19671
+ nafRules: dto.naf_rules,
19672
+ residueByShape: dto.residue_by_shape,
19673
+ residueExamples: dto.residue_examples,
19674
+ rules: dto.rules,
19675
+ skolemized: dto.skolemized,
19676
+ sorts: dto.sorts,
19677
+ subclassEdges: dto.subclass_edges,
19678
+ success: dto.success,
19679
+ temporalDetached: dto.temporal_detached
19680
+ };
19681
+ if (dto.provable != null) out.provable = dto.provable;
19682
+ return out;
19683
+ }
18473
19684
  function TranslateRdfRequestFromFrontToApi(model) {
18474
19685
  return {
18475
19686
  content: model.content,
@@ -18799,20 +20010,21 @@ var IngestionSession = class {
18799
20010
  }));
18800
20011
  return;
18801
20012
  }
18802
- const timer = setTimeout(resolve, ms);
20013
+ let onAbort;
20014
+ const timer = setTimeout(() => {
20015
+ if (signal && onAbort) {
20016
+ signal.removeEventListener("abort", onAbort);
20017
+ }
20018
+ resolve();
20019
+ }, ms);
18803
20020
  if (signal) {
18804
- const onAbort = () => {
20021
+ onAbort = () => {
18805
20022
  clearTimeout(timer);
18806
20023
  reject(new ReasoningLayerError("Ingestion polling was aborted", {
18807
20024
  cause: signal.reason
18808
20025
  }));
18809
20026
  };
18810
20027
  signal.addEventListener("abort", onAbort, { once: true });
18811
- const originalResolve = resolve;
18812
- resolve = () => {
18813
- signal.removeEventListener("abort", onAbort);
18814
- originalResolve();
18815
- };
18816
20028
  }
18817
20029
  });
18818
20030
  }
@@ -18916,6 +20128,21 @@ var IngestionClient = class {
18916
20128
  );
18917
20129
  return IngestRdfResponseFromApiToFront(response.data);
18918
20130
  }
20131
+ /**
20132
+ * Import SUO-KIF and, optionally, prove a ground goal against the
20133
+ * imported axioms.
20134
+ *
20135
+ * @param request - The SUO-KIF source, an optional `goal`/`query` to
20136
+ * prove, and a `persist` flag (import into the tenant substrate vs an
20137
+ * ephemeral request-scoped world).
20138
+ * @returns Import counts (forms, facts, rules, sorts, …) plus, when a
20139
+ * goal/query was supplied, a `provable` verdict and the non-firing
20140
+ * residue breakdown.
20141
+ */
20142
+ async ingestKif(request) {
20143
+ const response = await this.api.ingestKif(IngestKifRequestFromFrontToApi(request));
20144
+ return IngestKifResponseFromApiToFront(response.data);
20145
+ }
18919
20146
  /**
18920
20147
  * Translate RDF into the engine's term representation without writing
18921
20148
  * anything to the knowledge base.
@@ -21531,6 +22758,66 @@ function SearchCommunitiesResponseFromApiToFront(dto) {
21531
22758
  stats: CommunitySearchStatsDtoFromApiToFront(dto.stats)
21532
22759
  };
21533
22760
  }
22761
+ function NodeScoreFromApiToFront(dto) {
22762
+ return {
22763
+ nodeId: dto.node_id,
22764
+ score: dto.score
22765
+ };
22766
+ }
22767
+ function CentralityRequestFromFrontToApi(model) {
22768
+ const dto = {
22769
+ measure: model.measure,
22770
+ tenant_id: model.tenantId
22771
+ };
22772
+ if (model.topK !== void 0) dto.top_k = model.topK;
22773
+ return dto;
22774
+ }
22775
+ function CentralityResponseFromApiToFront(dto) {
22776
+ return {
22777
+ edgeCount: dto.edge_count,
22778
+ measure: dto.measure,
22779
+ nodeCount: dto.node_count,
22780
+ scores: dto.scores.map(NodeScoreFromApiToFront)
22781
+ };
22782
+ }
22783
+ function CohesionRequestFromFrontToApi(model) {
22784
+ return { tenant_id: model.tenantId };
22785
+ }
22786
+ function CohesionResponseFromApiToFront(dto) {
22787
+ return {
22788
+ clustering: dto.clustering.map(NodeScoreFromApiToFront),
22789
+ nodeCount: dto.node_count,
22790
+ triangleCount: dto.triangle_count
22791
+ };
22792
+ }
22793
+ function PathRequestFromFrontToApi(model) {
22794
+ return {
22795
+ source: model.source,
22796
+ target: model.target,
22797
+ tenant_id: model.tenantId
22798
+ };
22799
+ }
22800
+ function PathResponseFromApiToFront(dto) {
22801
+ const out = { componentCount: dto.component_count };
22802
+ if (dto.path !== void 0 && dto.path !== null) out.path = dto.path;
22803
+ return out;
22804
+ }
22805
+ function LinkPredictionRequestFromFrontToApi(model) {
22806
+ const dto = {
22807
+ measure: model.measure,
22808
+ source: model.source,
22809
+ tenant_id: model.tenantId
22810
+ };
22811
+ if (model.topK !== void 0) dto.top_k = model.topK;
22812
+ return dto;
22813
+ }
22814
+ function LinkPredictionResponseFromApiToFront(dto) {
22815
+ return {
22816
+ measure: dto.measure,
22817
+ predictions: dto.predictions.map(NodeScoreFromApiToFront),
22818
+ source: dto.source
22819
+ };
22820
+ }
21534
22821
 
21535
22822
  // src/resources/communities.ts
21536
22823
  var CommunitiesClient = class {
@@ -21570,6 +22857,48 @@ var CommunitiesClient = class {
21570
22857
  const response = await this.api.searchCommunities(SearchCommunitiesRequestFromFrontToApi(request));
21571
22858
  return SearchCommunitiesResponseFromApiToFront(response.data);
21572
22859
  }
22860
+ /**
22861
+ * Compute a centrality measure over the tenant's term graph.
22862
+ *
22863
+ * @param request - The measure, tenant id, and an optional `topK` cap.
22864
+ * @returns Node scores sorted descending, plus graph node/edge counts.
22865
+ */
22866
+ async computeCentrality(request) {
22867
+ const response = await this.api.computeCentrality(CentralityRequestFromFrontToApi(request));
22868
+ return CentralityResponseFromApiToFront(response.data);
22869
+ }
22870
+ /**
22871
+ * Compute graph cohesion (local clustering coefficients + triangle count).
22872
+ *
22873
+ * @param request - The tenant id.
22874
+ * @returns Per-node clustering coefficients, node count, and triangle count.
22875
+ */
22876
+ async computeCohesion(request) {
22877
+ const response = await this.api.computeCohesion(CohesionRequestFromFrontToApi(request));
22878
+ return CohesionResponseFromApiToFront(response.data);
22879
+ }
22880
+ /**
22881
+ * Find the shortest path between two nodes in the tenant's term graph.
22882
+ *
22883
+ * @param request - Source node, target node, and tenant id.
22884
+ * @returns The shortest path as a node sequence (when reachable) plus the
22885
+ * connected-component count.
22886
+ */
22887
+ async computePath(request) {
22888
+ const response = await this.api.computePath(PathRequestFromFrontToApi(request));
22889
+ return PathResponseFromApiToFront(response.data);
22890
+ }
22891
+ /**
22892
+ * Predict candidate links from a source node using a graph heuristic.
22893
+ *
22894
+ * @param request - The heuristic, source node, tenant id, and an optional
22895
+ * `topK` cap.
22896
+ * @returns Candidate targets with positive score, sorted descending.
22897
+ */
22898
+ async predictLinks(request) {
22899
+ const response = await this.api.predictLinks(LinkPredictionRequestFromFrontToApi(request));
22900
+ return LinkPredictionResponseFromApiToFront(response.data);
22901
+ }
21573
22902
  };
21574
22903
 
21575
22904
  // src/normalizers/utilities.ts
@@ -22402,6 +23731,33 @@ function PredictFromDiscoveryResponseFromApiToFront(dto) {
22402
23731
  success: dto.success
22403
23732
  };
22404
23733
  }
23734
+ function EmlSampleFromFrontToApi(model) {
23735
+ return {
23736
+ inputs: model.inputs,
23737
+ target: model.target
23738
+ };
23739
+ }
23740
+ function DiscoverEmlRequestFromFrontToApi(model) {
23741
+ const dto = {
23742
+ depth: model.depth,
23743
+ samples: model.samples.map(EmlSampleFromFrontToApi)
23744
+ };
23745
+ if (model.maxEpochs !== void 0) dto.max_epochs = model.maxEpochs;
23746
+ if (model.numRestarts !== void 0) dto.num_restarts = model.numRestarts;
23747
+ return dto;
23748
+ }
23749
+ function DiscoverEmlResponseFromApiToFront(dto) {
23750
+ const out = {
23751
+ epochsRun: dto.epochs_run,
23752
+ finalLoss: dto.final_loss,
23753
+ snapped: dto.snapped,
23754
+ success: dto.success
23755
+ };
23756
+ if (dto.expression_depth != null) out.expressionDepth = dto.expression_depth;
23757
+ if (dto.expression_leaf_count != null) out.expressionLeafCount = dto.expression_leaf_count;
23758
+ if (dto.expression_rpn != null) out.expressionRpn = dto.expression_rpn;
23759
+ return out;
23760
+ }
22405
23761
 
22406
23762
  // src/resources/discovery.ts
22407
23763
  var DiscoveryClient = class {
@@ -22431,6 +23787,19 @@ var DiscoveryClient = class {
22431
23787
  const response = await this.api.predictFromDiscovery(PredictFromDiscoveryRequestFromFrontToApi(request));
22432
23788
  return PredictFromDiscoveryResponseFromApiToFront(response.data);
22433
23789
  }
23790
+ /**
23791
+ * Discover a closed-form expression from samples via parameterised EML.
23792
+ *
23793
+ * @param request - Tree-depth bound, training samples, and optional
23794
+ * epoch/restart caps.
23795
+ * @returns The discovered expression (RPN + depth/leaf-count when
23796
+ * recovered) plus the training stats (epochs, final loss, snap +
23797
+ * success flags).
23798
+ */
23799
+ async discoverEml(request) {
23800
+ const response = await this.api.discoverEml(DiscoverEmlRequestFromFrontToApi(request));
23801
+ return DiscoverEmlResponseFromApiToFront(response.data);
23802
+ }
22434
23803
  };
22435
23804
 
22436
23805
  // src/normalizers/extract.ts
@@ -25668,6 +27037,56 @@ function GenerateDocumentResponseFromApiToFront(dto) {
25668
27037
  verification: dto.verification ? VerificationDtoFromApiToFront(dto.verification) : void 0
25669
27038
  };
25670
27039
  }
27040
+ function ConstrainedGenerateRequestFromFrontToApi(model) {
27041
+ const dto = {
27042
+ allowed: model.allowed,
27043
+ prompt: model.prompt
27044
+ };
27045
+ if (model.maxTokens !== void 0) dto.max_tokens = model.maxTokens;
27046
+ return dto;
27047
+ }
27048
+ function ConstrainedGenerateResponseFromApiToFront(dto) {
27049
+ return {
27050
+ allowed: dto.allowed,
27051
+ answer: dto.answer,
27052
+ maskedOut: dto.masked_out,
27053
+ tokens: dto.tokens
27054
+ };
27055
+ }
27056
+ function RawGenerateRequestFromFrontToApi(model) {
27057
+ const dto = { prompt: model.prompt };
27058
+ if (model.maxTokens !== void 0) dto.max_tokens = model.maxTokens;
27059
+ return dto;
27060
+ }
27061
+ function RawGenerateResponseFromApiToFront(dto) {
27062
+ return { prose: dto.prose };
27063
+ }
27064
+ function GroundedGenerateRequestFromFrontToApi(model) {
27065
+ const dto = { prompt: model.prompt };
27066
+ if (model.goalDest !== void 0) dto.goal_dest = model.goalDest;
27067
+ if (model.goalDistance !== void 0) dto.goal_distance = model.goalDistance;
27068
+ if (model.goalFeasible !== void 0) dto.goal_feasible = model.goalFeasible;
27069
+ if (model.goalTarget !== void 0) dto.goal_target = model.goalTarget;
27070
+ if (model.maxTokens !== void 0) dto.max_tokens = model.maxTokens;
27071
+ if (model.mode !== void 0) dto.mode = model.mode;
27072
+ if (model.prose !== void 0) dto.prose = model.prose;
27073
+ if (model.steerMargin !== void 0) dto.steer_margin = model.steerMargin;
27074
+ return dto;
27075
+ }
27076
+ function GroundedGenerateResponseFromApiToFront(dto) {
27077
+ const out = {
27078
+ admittedTerms: dto.admitted_terms,
27079
+ derivation: dto.derivation,
27080
+ feasibleModes: dto.feasible_modes,
27081
+ mode: dto.mode,
27082
+ prose: dto.prose,
27083
+ refutedModes: dto.refuted_modes
27084
+ };
27085
+ if (dto.certify_outcome != null) out.certifyOutcome = dto.certify_outcome;
27086
+ if (dto.model_pick != null) out.modelPick = dto.model_pick;
27087
+ if (dto.recommended_mode != null) out.recommendedMode = dto.recommended_mode;
27088
+ return out;
27089
+ }
25671
27090
 
25672
27091
  // src/resources/generation.ts
25673
27092
  var GenerationClient = class {
@@ -25710,6 +27129,46 @@ var GenerationClient = class {
25710
27129
  const response = await this.api.generateDocument(GenerateDocumentRequestFromFrontToApi(request));
25711
27130
  return GenerateDocumentResponseFromApiToFront(response.data);
25712
27131
  }
27132
+ /**
27133
+ * Masked-decode one answer from an OSF-feasible allowed set
27134
+ * (`POST /api/v1/constrained/generate`).
27135
+ *
27136
+ * @param request - The allowed set, an optional token cap, and the prompt.
27137
+ * @returns The decoded answer (guaranteed inside `allowed`), the masked-out
27138
+ * alternatives, and the per-step token deltas.
27139
+ */
27140
+ async constrainedGenerate(request) {
27141
+ const response = await this.api.constrainedGenerate(
27142
+ ConstrainedGenerateRequestFromFrontToApi(request)
27143
+ );
27144
+ return ConstrainedGenerateResponseFromApiToFront(response.data);
27145
+ }
27146
+ /**
27147
+ * Free, ungrounded local-model decode (`POST /api/v1/generate/raw`).
27148
+ *
27149
+ * @param request - The prompt and an optional token cap.
27150
+ * @returns The raw, ungrounded answer.
27151
+ */
27152
+ async rawGenerate(request) {
27153
+ const response = await this.api.rawGenerate(RawGenerateRequestFromFrontToApi(request));
27154
+ return RawGenerateResponseFromApiToFront(response.data);
27155
+ }
27156
+ /**
27157
+ * Lattice-grounded anti-hallucination generation
27158
+ * (`POST /api/v1/generate/grounded`).
27159
+ *
27160
+ * @param request - The prompt, an optional goal (target/destination) for
27161
+ * feasibility, the anti-hallucination `mode`, and decode knobs.
27162
+ * @returns The lattice-constrained derivation, the free-prose answer, the
27163
+ * feasible/refuted/recommended motion modes, and (certify mode) the
27164
+ * certification outcome.
27165
+ */
27166
+ async groundedGenerate(request) {
27167
+ const response = await this.api.groundedGenerate(
27168
+ GroundedGenerateRequestFromFrontToApi(request)
27169
+ );
27170
+ return GroundedGenerateResponseFromApiToFront(response.data);
27171
+ }
25713
27172
  };
25714
27173
 
25715
27174
  // src/normalizers/rag.ts
@@ -27230,6 +28689,13 @@ function ListConversationsResponseFromApiToFront(dto) {
27230
28689
  conversations: dto.conversations.map(ConversationSummaryDtoFromApiToFront)
27231
28690
  };
27232
28691
  }
28692
+ function CompareModelDtoFromApiToFront(dto) {
28693
+ return {
28694
+ id: dto.id,
28695
+ kind: dto.kind,
28696
+ label: dto.label
28697
+ };
28698
+ }
27233
28699
  function ConversationTurnsResponseFromApiToFront(dto) {
27234
28700
  return {
27235
28701
  conversationId: dto.conversation_id,
@@ -27338,6 +28804,30 @@ var ConversationClient = class {
27338
28804
  });
27339
28805
  return ListConversationsResponseFromApiToFront(response.data);
27340
28806
  }
28807
+ /**
28808
+ * List the registered comparison models so the UI can populate a
28809
+ * selector / compare panel.
28810
+ *
28811
+ * @returns The available comparison models (endpoint- or candle-backed).
28812
+ * @throws {ApiError} If the request fails.
28813
+ *
28814
+ * @example
28815
+ * ```typescript
28816
+ * const models = await client.conversation.listModels();
28817
+ * for (const m of models) {
28818
+ * console.log(`${m.id} (${m.kind}): ${m.label}`);
28819
+ * }
28820
+ * ```
28821
+ */
28822
+ async listModels() {
28823
+ const response = await this.http.request({
28824
+ path: "/api/v1/conversation/models",
28825
+ method: "GET",
28826
+ secure: true,
28827
+ format: "json"
28828
+ });
28829
+ return (response.data ?? []).map(CompareModelDtoFromApiToFront);
28830
+ }
27341
28831
  /**
27342
28832
  * Get all turns for a conversation.
27343
28833
  *
@@ -27529,7 +29019,15 @@ function PaperMetadataFromApiToFront(dto) {
27529
29019
  abstractText: dto.abstract_text ?? null,
27530
29020
  citationCount: dto.citation_count ?? null,
27531
29021
  source: dto.source,
27532
- fullTextUrl: dto.full_text_url ?? null
29022
+ fullTextUrl: dto.full_text_url ?? null,
29023
+ paperKey: dto.paper_key ?? null
29024
+ };
29025
+ }
29026
+ function PaperRefFromApiToFront(dto) {
29027
+ return {
29028
+ paperKey: dto.paper_key,
29029
+ doi: dto.doi ?? null,
29030
+ title: dto.title
27533
29031
  };
27534
29032
  }
27535
29033
  function PaperSearchResultFromApiToFront(dto) {
@@ -27563,6 +29061,8 @@ function ResearchCycleResultFromApiToFront(dto) {
27563
29061
  papersIngested: dto.papers_ingested,
27564
29062
  claimsVerified: dto.claims_verified,
27565
29063
  contradictionsDetected: dto.contradictions_detected,
29064
+ contradictionsResolved: dto.contradictions_resolved ?? 0,
29065
+ claimsMerged: dto.claims_merged ?? 0,
27566
29066
  processingTimeMs: dto.processing_time_ms,
27567
29067
  searchQueries: dto.search_queries ?? []
27568
29068
  };
@@ -27575,6 +29075,7 @@ function ResearchSessionResponseFromApiToFront(raw) {
27575
29075
  status: dto.status,
27576
29076
  error: dto.error ?? null,
27577
29077
  cycles: (dto.cycles ?? []).map(ResearchCycleResultFromApiToFront),
29078
+ papers: (dto.papers ?? []).map(PaperMetadataFromApiToFront),
27578
29079
  totalPapersIngested: dto.total_papers_ingested,
27579
29080
  totalFindings: dto.total_findings,
27580
29081
  totalContradictions: dto.total_contradictions,
@@ -27619,7 +29120,9 @@ function EvidenceItemSummaryFromApiToFront(dto) {
27619
29120
  qualityWeight: dto.quality_weight,
27620
29121
  supports: dto.supports,
27621
29122
  contribution: dto.contribution,
27622
- paperDoi: dto.paper_doi ?? null
29123
+ paperDoi: dto.paper_doi ?? null,
29124
+ paperKey: dto.paper_key ?? null,
29125
+ paperTitle: dto.paper_title ?? null
27623
29126
  };
27624
29127
  }
27625
29128
  function ProvenanceStepFromApiToFront(dto) {
@@ -27630,6 +29133,13 @@ function ProvenanceStepFromApiToFront(dto) {
27630
29133
  timestamp: dto.timestamp ?? null
27631
29134
  };
27632
29135
  }
29136
+ function ResiduatedFeatureFromApiToFront(dto) {
29137
+ return {
29138
+ featureName: dto.feature_name,
29139
+ neededSort: dto.needed_sort ?? null,
29140
+ infoGain: dto.info_gain
29141
+ };
29142
+ }
27633
29143
  function ResearchFindingFromApiToFront(dto) {
27634
29144
  return {
27635
29145
  claimId: dto.claim_id,
@@ -27640,7 +29150,9 @@ function ResearchFindingFromApiToFront(dto) {
27640
29150
  contradictingEvidence: (dto.contradicting_evidence ?? []).map(EvidenceItemSummaryFromApiToFront),
27641
29151
  provenanceChain: (dto.provenance_chain ?? []).map(ProvenanceStepFromApiToFront),
27642
29152
  residuated: dto.residuated,
27643
- residuationReason: dto.residuation_reason ?? null
29153
+ residuationReason: dto.residuation_reason ?? null,
29154
+ residuatedFeatures: (dto.residuated_features ?? []).map(ResiduatedFeatureFromApiToFront),
29155
+ sources: (dto.sources ?? []).map(PaperRefFromApiToFront)
27644
29156
  };
27645
29157
  }
27646
29158
  function ResearchFindingsResponseFromApiToFront(raw) {
@@ -27668,6 +29180,17 @@ function ResearchGapsResponseFromApiToFront(raw) {
27668
29180
  total: dto.total
27669
29181
  };
27670
29182
  }
29183
+ function ContradictionResolutionFromApiToFront(dto) {
29184
+ return {
29185
+ preferredClaimId: dto.preferred_claim_id,
29186
+ dismissedClaimId: dto.dismissed_claim_id,
29187
+ preferredTruthfulness: dto.preferred_truthfulness,
29188
+ dismissedTruthfulness: dto.dismissed_truthfulness,
29189
+ strategy: dto.strategy,
29190
+ confidence: dto.confidence,
29191
+ explanation: dto.explanation
29192
+ };
29193
+ }
27671
29194
  function ContradictionFromApiToFront(dto) {
27672
29195
  return {
27673
29196
  claimAId: dto.claim_a_id,
@@ -27675,7 +29198,10 @@ function ContradictionFromApiToFront(dto) {
27675
29198
  statementA: dto.statement_a,
27676
29199
  statementB: dto.statement_b,
27677
29200
  confidence: dto.confidence,
27678
- explanation: dto.explanation
29201
+ explanation: dto.explanation,
29202
+ resolution: dto.resolution ? ContradictionResolutionFromApiToFront(dto.resolution) : null,
29203
+ claimASources: (dto.claim_a_sources ?? []).map(PaperRefFromApiToFront),
29204
+ claimBSources: (dto.claim_b_sources ?? []).map(PaperRefFromApiToFront)
27679
29205
  };
27680
29206
  }
27681
29207
  function ResearchContradictionsResponseFromApiToFront(raw) {
@@ -27696,7 +29222,9 @@ function ResearchStatisticsFromApiToFront(dto) {
27696
29222
  totalContradictions: dto.total_contradictions,
27697
29223
  totalProcessingTimeMs: dto.total_processing_time_ms,
27698
29224
  gapsResolved: dto.gaps_resolved,
27699
- gapsRemaining: dto.gaps_remaining
29225
+ gapsRemaining: dto.gaps_remaining,
29226
+ claimsMerged: dto.claims_merged ?? 0,
29227
+ contradictionsResolved: dto.contradictions_resolved ?? 0
27700
29228
  };
27701
29229
  }
27702
29230
  function ReportVerificationFromApiToFront(dto) {
@@ -28857,6 +30385,14 @@ function AuditRecordFromApiToFront(dto) {
28857
30385
  extra: dto.extra
28858
30386
  };
28859
30387
  }
30388
+ function AuditPageFromApiToFront(dto) {
30389
+ return {
30390
+ records: dto.records.map(AuditRecordFromApiToFront),
30391
+ total: dto.total,
30392
+ limit: dto.limit ?? null,
30393
+ offset: dto.offset
30394
+ };
30395
+ }
28860
30396
  function SummaryResponseFromApiToFront(dto) {
28861
30397
  const out = {
28862
30398
  nRecords: dto.n_records,
@@ -28946,18 +30482,39 @@ var ComplianceClient = class {
28946
30482
  return AuditRecordFromApiToFront(response.data);
28947
30483
  }
28948
30484
  /**
28949
- * List audit records for this tenant, optionally filtered.
30485
+ * List audit records for this tenant — paged, sorted, and filtered.
30486
+ *
30487
+ * @param options - Page / sort / filter controls. Defaults to a
30488
+ * bounded first page (`sort_by=timestamp`, `sort_order=desc`,
30489
+ * `limit=50`) — most-recent-first, matching the backend default.
30490
+ * Pass `all: true` to fetch the full filtered set for export.
30491
+ * @returns A page of records plus the filtered `total`, the `limit`
30492
+ * applied (`null` when `all` was set), and the zero-based `offset`.
28950
30493
  *
28951
- * @param options - Limit / glob filter on `requestPath`.
30494
+ * @remarks
30495
+ * The backend clamps `limit` to `1..=200` and defaults it to `50`
30496
+ * when omitted (unless `all` is set). `total` reflects the active
30497
+ * `requestPathPattern` / `since` / `until` filter, not the raw
30498
+ * tenant count — so `{shown} of {total}` and the rendered rows stay
30499
+ * consistent under the same filter. Sort enums are wire-serialised
30500
+ * `snake_case` (`timestamp` / `request_path` / `actor`) and `asc` /
30501
+ * `desc` lowercase; the shipped {@link AuditSortField} /
30502
+ * {@link AuditSortOrder} literals match verbatim.
28952
30503
  */
28953
30504
  async list(options = {}) {
28954
30505
  const query = {};
28955
- if (options.limit !== void 0) query.limit = options.limit;
28956
30506
  if (options.requestPathPattern !== void 0) {
28957
30507
  query.request_path_pattern = options.requestPathPattern;
28958
30508
  }
30509
+ if (options.since !== void 0) query.since = options.since;
30510
+ if (options.until !== void 0) query.until = options.until;
30511
+ if (options.sortBy !== void 0) query.sort_by = options.sortBy;
30512
+ if (options.sortOrder !== void 0) query.sort_order = options.sortOrder;
30513
+ if (options.limit !== void 0) query.limit = options.limit;
30514
+ if (options.offset !== void 0) query.offset = options.offset;
30515
+ if (options.all !== void 0) query.all = options.all;
28959
30516
  const response = await this.api.list(query);
28960
- return response.data.map(AuditRecordFromApiToFront);
30517
+ return AuditPageFromApiToFront(response.data);
28961
30518
  }
28962
30519
  /**
28963
30520
  * Top-line counts over the tenant's full ledger — useful for
@@ -29037,6 +30594,19 @@ function AntiUnifyResponseFromApiToFront(dto) {
29037
30594
  computationTimeMs: dto.computation_time_ms
29038
30595
  };
29039
30596
  }
30597
+ function AntiUnifyBatchRequestFromFrontToApi(model) {
30598
+ return {
30599
+ term_ids: model.termIds
30600
+ };
30601
+ }
30602
+ function AntiUnifyBatchResponseFromApiToFront(dto) {
30603
+ return {
30604
+ computationTimeMs: dto.computation_time_ms,
30605
+ lgg: TermDtoFromApiToFront(dto.lgg),
30606
+ lggTermId: dto.lgg_term_id,
30607
+ steps: dto.steps
30608
+ };
30609
+ }
29040
30610
 
29041
30611
  // src/resources/operations.ts
29042
30612
  var OperationsClient = class {
@@ -29065,6 +30635,25 @@ var OperationsClient = class {
29065
30635
  );
29066
30636
  return AntiUnifyResponseFromApiToFront(response.data);
29067
30637
  }
30638
+ /**
30639
+ * Compute the anti-unification (LGG) of a batch of Ψ-terms via a left
30640
+ * fold over 2..=64 term ids.
30641
+ *
30642
+ * @param request - The term ids to generalise, in fold order.
30643
+ * @returns The final LGG term + enriched view + the intermediate LGG
30644
+ * ids from the fold + total timing.
30645
+ *
30646
+ * @remarks
30647
+ * All ids must already be registered in the tenant's term store. The
30648
+ * final LGG is persisted; `steps` is empty when exactly two terms are
30649
+ * supplied.
30650
+ */
30651
+ async antiUnifyBatch(request) {
30652
+ const response = await this.api.antiUnifyBatch(
30653
+ AntiUnifyBatchRequestFromFrontToApi(request)
30654
+ );
30655
+ return AntiUnifyBatchResponseFromApiToFront(response.data);
30656
+ }
29068
30657
  };
29069
30658
 
29070
30659
  // src/normalizers/actions.ts
@@ -34314,6 +35903,1016 @@ var OntologyExportClient = class {
34314
35903
  }
34315
35904
  };
34316
35905
 
35906
+ // src/normalizers/demo.ts
35907
+ function DemoSeedRequestFromFrontToApi(model) {
35908
+ const dto = {};
35909
+ if (model.sumoDir !== void 0) dto.sumo_dir = model.sumoDir;
35910
+ return dto;
35911
+ }
35912
+ function DemoSeedResponseFromApiToFront(dto) {
35913
+ return {
35914
+ forms: dto.forms,
35915
+ sorts: dto.sorts
35916
+ };
35917
+ }
35918
+
35919
+ // src/resources/demo.ts
35920
+ var DemoClient = class {
35921
+ /** @internal */
35922
+ api;
35923
+ /** @internal */
35924
+ constructor(api) {
35925
+ this.api = api;
35926
+ }
35927
+ /**
35928
+ * Seed the request tenant's persistent substrate with full SUMO + the
35929
+ * demo scenario situations.
35930
+ *
35931
+ * @param request - Optional SUMO source-directory override.
35932
+ * @returns The imported form count and the tenant's total sort count.
35933
+ *
35934
+ * @throws {ApiError} `404` if the SUMO files cannot be read, `400` if
35935
+ * the assembled source fails to import.
35936
+ */
35937
+ async seed(request = {}) {
35938
+ const response = await this.api.demoSeed(DemoSeedRequestFromFrontToApi(request));
35939
+ return DemoSeedResponseFromApiToFront(response.data);
35940
+ }
35941
+ };
35942
+
35943
+ // src/normalizers/reward.ts
35944
+ function RewardScoreRequestFromFrontToApi(model) {
35945
+ const dto = { sort: model.sort };
35946
+ if (model.constraints !== void 0) dto.constraints = model.constraints;
35947
+ if (model.maxInstances !== void 0) dto.max_instances = model.maxInstances;
35948
+ if (model.negativeIds !== void 0) dto.negative_ids = model.negativeIds;
35949
+ if (model.objective !== void 0) dto.objective = model.objective;
35950
+ if (model.positiveIds !== void 0) dto.positive_ids = model.positiveIds;
35951
+ if (model.targetSort !== void 0) dto.target_sort = model.targetSort;
35952
+ return dto;
35953
+ }
35954
+ function RewardScoreResponseFromApiToFront(dto) {
35955
+ const out = {
35956
+ certifiedNonEmpty: dto.certified_non_empty,
35957
+ estimatedExtent: dto.estimated_extent,
35958
+ reward: dto.reward
35959
+ };
35960
+ if (dto.covers_negative != null) out.coversNegative = dto.covers_negative;
35961
+ if (dto.covers_positive != null) out.coversPositive = dto.covers_positive;
35962
+ if (dto.precision != null) out.precision = dto.precision;
35963
+ if (dto.recall != null) out.recall = dto.recall;
35964
+ return out;
35965
+ }
35966
+
35967
+ // src/resources/reward.ts
35968
+ var RewardClient = class {
35969
+ /** @internal */
35970
+ api;
35971
+ /** @internal */
35972
+ constructor(api) {
35973
+ this.api = api;
35974
+ }
35975
+ /**
35976
+ * Score a candidate query execution-free for the authenticated tenant.
35977
+ *
35978
+ * @param request - The query spec (sort, objective, optional
35979
+ * constraints / instance ids).
35980
+ * @returns A sound reward signal plus the certificate and coverage
35981
+ * breakdown.
35982
+ *
35983
+ * @throws {ApiError} `404` if the sort name is unknown to the lattice.
35984
+ */
35985
+ async score(request) {
35986
+ const response = await this.api.score(RewardScoreRequestFromFrontToApi(request));
35987
+ return RewardScoreResponseFromApiToFront(response.data);
35988
+ }
35989
+ };
35990
+
35991
+ // src/normalizers/translation.ts
35992
+ function TranslateRequestFromFrontToApi(model) {
35993
+ const dto = {
35994
+ target_lang: model.targetLang,
35995
+ text: model.text
35996
+ };
35997
+ if (model.sourceLang !== void 0) dto.source_lang = model.sourceLang;
35998
+ return dto;
35999
+ }
36000
+ function TranslateResponseFromApiToFront(dto) {
36001
+ const out = {
36002
+ targetLang: dto.target_lang,
36003
+ translatedText: dto.translated_text
36004
+ };
36005
+ if (dto.model !== void 0) out.model = dto.model;
36006
+ return out;
36007
+ }
36008
+
36009
+ // src/resources/translation.ts
36010
+ var TranslationClient = class {
36011
+ /** @internal */
36012
+ api;
36013
+ /** @internal */
36014
+ constructor(api) {
36015
+ this.api = api;
36016
+ }
36017
+ /**
36018
+ * Translate text into a target language.
36019
+ *
36020
+ * @param request - Source text, target language, and an optional
36021
+ * source-language hint.
36022
+ * @returns The translated text plus the echoed target language and
36023
+ * the model label, when known.
36024
+ */
36025
+ async translate(request) {
36026
+ const response = await this.api.translate(TranslateRequestFromFrontToApi(request));
36027
+ return TranslateResponseFromApiToFront(response.data);
36028
+ }
36029
+ };
36030
+
36031
+ // src/normalizers/streaming.ts
36032
+ function SketchDimensionsFromFrontToApi(model) {
36033
+ const dto = {};
36034
+ if (model.delta !== void 0) dto.delta = model.delta;
36035
+ if (model.depth !== void 0) dto.depth = model.depth;
36036
+ if (model.epsilon !== void 0) dto.epsilon = model.epsilon;
36037
+ if (model.width !== void 0) dto.width = model.width;
36038
+ return dto;
36039
+ }
36040
+ function FrequencyEstimateFromApiToFront(dto) {
36041
+ return {
36042
+ estimatedCount: dto.estimated_count,
36043
+ key: dto.key
36044
+ };
36045
+ }
36046
+ function FrequencyRequestFromFrontToApi(model) {
36047
+ return {
36048
+ dimensions: SketchDimensionsFromFrontToApi(model.dimensions),
36049
+ items: model.items,
36050
+ query_keys: model.queryKeys
36051
+ };
36052
+ }
36053
+ function FrequencyResponseFromApiToFront(dto) {
36054
+ return {
36055
+ depth: dto.depth,
36056
+ estimates: dto.estimates.map(FrequencyEstimateFromApiToFront),
36057
+ width: dto.width
36058
+ };
36059
+ }
36060
+ function HeavyHitterItemFromApiToFront(dto) {
36061
+ return {
36062
+ count: dto.count,
36063
+ item: dto.item
36064
+ };
36065
+ }
36066
+ function HeavyHittersRequestFromFrontToApi(model) {
36067
+ return {
36068
+ capacity: model.capacity,
36069
+ items: model.items
36070
+ };
36071
+ }
36072
+ function HeavyHittersResponseFromApiToFront(dto) {
36073
+ return {
36074
+ capacity: dto.capacity,
36075
+ heavyHitters: dto.heavy_hitters.map(HeavyHitterItemFromApiToFront),
36076
+ maxUndercount: dto.max_undercount,
36077
+ total: dto.total
36078
+ };
36079
+ }
36080
+ function BloomFilterStatsFromApiToFront(dto) {
36081
+ return {
36082
+ bitCount: dto.bit_count,
36083
+ estimatedLoad: dto.estimated_load,
36084
+ hashCount: dto.hash_count,
36085
+ insertions: dto.insertions,
36086
+ setBits: dto.set_bits
36087
+ };
36088
+ }
36089
+ function MembershipRequestFromFrontToApi(model) {
36090
+ return {
36091
+ bit_count: model.bitCount,
36092
+ hash_count: model.hashCount,
36093
+ insert_items: model.insertItems,
36094
+ test_items: model.testItems
36095
+ };
36096
+ }
36097
+ function MembershipResultFromApiToFront(dto) {
36098
+ return {
36099
+ item: dto.item,
36100
+ member: dto.member
36101
+ };
36102
+ }
36103
+ function MembershipResponseFromApiToFront(dto) {
36104
+ return {
36105
+ filterStats: BloomFilterStatsFromApiToFront(dto.filter_stats),
36106
+ membership: dto.membership.map(MembershipResultFromApiToFront)
36107
+ };
36108
+ }
36109
+
36110
+ // src/resources/streaming.ts
36111
+ var StreamingClient = class {
36112
+ /** @internal */
36113
+ api;
36114
+ /** @internal */
36115
+ constructor(api) {
36116
+ this.api = api;
36117
+ }
36118
+ /**
36119
+ * Estimate the frequency of each query key via a Count-Min sketch.
36120
+ *
36121
+ * @param request - The sketch dimensions, the stream `items`, and the
36122
+ * `queryKeys` to estimate.
36123
+ * @returns The sketch dimensions actually used and one estimate per
36124
+ * query key, in request order.
36125
+ *
36126
+ * @throws {ApiError} `400` if `items`/`queryKeys` exceed their limits
36127
+ * or the sketch dimensions are invalid.
36128
+ */
36129
+ async frequency(request) {
36130
+ const response = await this.api.frequency(FrequencyRequestFromFrontToApi(request));
36131
+ return FrequencyResponseFromApiToFront(response.data);
36132
+ }
36133
+ /**
36134
+ * Find candidate heavy hitters via a Misra-Gries sketch.
36135
+ *
36136
+ * @param request - The counter `capacity` and the stream `items`.
36137
+ * @returns Candidate heavy hitters sorted by count descending, plus
36138
+ * the worst-case under-count bound.
36139
+ *
36140
+ * @throws {ApiError} `400` if `capacity < 1` or `items` exceeds the limit.
36141
+ */
36142
+ async heavyHitters(request) {
36143
+ const response = await this.api.heavyHitters(HeavyHittersRequestFromFrontToApi(request));
36144
+ return HeavyHittersResponseFromApiToFront(response.data);
36145
+ }
36146
+ /**
36147
+ * Test membership of items in a Bloom filter built from `insertItems`.
36148
+ *
36149
+ * @param request - The `bitCount`, `hashCount`, `insertItems`, and
36150
+ * `testItems`.
36151
+ * @returns Filter load statistics and one membership verdict per test
36152
+ * item, in request order. Zero false negatives.
36153
+ *
36154
+ * @throws {ApiError} `400` if `bitCount`/`hashCount < 1` or the item
36155
+ * arrays exceed their limits.
36156
+ */
36157
+ async membership(request) {
36158
+ const response = await this.api.membership(MembershipRequestFromFrontToApi(request));
36159
+ return MembershipResponseFromApiToFront(response.data);
36160
+ }
36161
+ };
36162
+
36163
+ // src/normalizers/conformal.ts
36164
+ function CalibrationSampleFromFrontToApi(model) {
36165
+ return {
36166
+ class_scores: model.classScores,
36167
+ input_id: model.inputId,
36168
+ true_label: model.trueLabel
36169
+ };
36170
+ }
36171
+ function TestInputFromFrontToApi(model) {
36172
+ return {
36173
+ class_scores: model.classScores,
36174
+ input_id: model.inputId
36175
+ };
36176
+ }
36177
+ function ConformalCalibrateRequestFromFrontToApi(model) {
36178
+ return {
36179
+ alpha: model.alpha,
36180
+ samples: model.samples.map(CalibrationSampleFromFrontToApi)
36181
+ };
36182
+ }
36183
+ function ConformalCalibrateResponseFromApiToFront(dto) {
36184
+ return {
36185
+ algorithm: dto.algorithm,
36186
+ alpha: dto.alpha,
36187
+ empiricalCoverage: dto.empirical_coverage,
36188
+ meetsTargetCoverage: dto.meets_target_coverage,
36189
+ nSamples: dto.n_samples,
36190
+ quantileRank: dto.quantile_rank,
36191
+ threshold: dto.threshold
36192
+ };
36193
+ }
36194
+ function ConformalPredictRequestFromFrontToApi(model) {
36195
+ return {
36196
+ alpha: model.alpha,
36197
+ n_calibration_samples: model.nCalibrationSamples,
36198
+ test_inputs: model.testInputs.map(TestInputFromFrontToApi),
36199
+ threshold: model.threshold
36200
+ };
36201
+ }
36202
+ function CoverageCertificateFromApiToFront(dto) {
36203
+ return {
36204
+ algorithm: dto.algorithm,
36205
+ alpha: dto.alpha,
36206
+ nCalibrationSamples: dto.n_calibration_samples,
36207
+ nominalCoverage: dto.nominal_coverage,
36208
+ threshold: dto.threshold
36209
+ };
36210
+ }
36211
+ function ConformalPredictionFromApiToFront(dto) {
36212
+ return {
36213
+ abstains: dto.abstains,
36214
+ inputId: dto.input_id,
36215
+ predictionSet: dto.prediction_set,
36216
+ topClass: dto.top_class,
36217
+ topClassNonConformity: dto.top_class_non_conformity
36218
+ };
36219
+ }
36220
+ function ConformalPredictResponseFromApiToFront(dto) {
36221
+ return {
36222
+ coverageCertificate: CoverageCertificateFromApiToFront(dto.coverage_certificate),
36223
+ predictions: dto.predictions.map(ConformalPredictionFromApiToFront)
36224
+ };
36225
+ }
36226
+
36227
+ // src/resources/conformal.ts
36228
+ var ConformalClient = class {
36229
+ /** @internal */
36230
+ api;
36231
+ /** @internal */
36232
+ constructor(api) {
36233
+ this.api = api;
36234
+ }
36235
+ /**
36236
+ * Compute a split-conformal non-conformity threshold from a labeled
36237
+ * calibration set.
36238
+ *
36239
+ * @param request - The calibration set (samples + target miscoverage
36240
+ * `α`).
36241
+ * @returns The computed threshold `τ` plus a coverage certificate and
36242
+ * sanity-check coverage stats.
36243
+ *
36244
+ * @throws {ApiError} `400` if `alpha` is outside `(0, 1)` or the
36245
+ * calibration set is empty.
36246
+ */
36247
+ async calibrate(request) {
36248
+ const response = await this.api.calibrate(ConformalCalibrateRequestFromFrontToApi(request));
36249
+ return ConformalCalibrateResponseFromApiToFront(response.data);
36250
+ }
36251
+ /**
36252
+ * Apply a pre-computed conformal threshold to unlabeled test inputs
36253
+ * and return prediction sets with coverage certificates.
36254
+ *
36255
+ * @param request - The threshold `τ`, calibration `α` and sample count
36256
+ * (from a prior `calibrate` call), and the test inputs to predict
36257
+ * for.
36258
+ * @returns Per-input conformal prediction results plus a coverage
36259
+ * certificate, in request order.
36260
+ *
36261
+ * @throws {ApiError} `400` if the test-input count exceeds 10 000.
36262
+ */
36263
+ async predict(request) {
36264
+ const response = await this.api.predict(ConformalPredictRequestFromFrontToApi(request));
36265
+ return ConformalPredictResponseFromApiToFront(response.data);
36266
+ }
36267
+ };
36268
+
36269
+ // src/normalizers/vision.ts
36270
+ function EncoderConfigOverridesFromFrontToApi(model) {
36271
+ const dto = {};
36272
+ if (model.numFrames !== void 0) dto.num_frames = model.numFrames;
36273
+ if (model.patchSize !== void 0) dto.patch_size = model.patchSize;
36274
+ if (model.sessionId !== void 0) dto.session_id = model.sessionId;
36275
+ if (model.targetHeight !== void 0) dto.target_height = model.targetHeight;
36276
+ if (model.targetWidth !== void 0) dto.target_width = model.targetWidth;
36277
+ return dto;
36278
+ }
36279
+ function FrameSummaryFromApiToFront(dto) {
36280
+ return {
36281
+ frameIndex: dto.frame_index,
36282
+ numPredictedObjects: dto.num_predicted_objects,
36283
+ numResiduatedFeatures: dto.num_residuated_features,
36284
+ objectLabels: dto.object_labels
36285
+ };
36286
+ }
36287
+ function EncodeClipRequestFromFrontToApi(model) {
36288
+ const dto = {
36289
+ clip_id: model.clipId,
36290
+ video_b64: model.videoB64
36291
+ };
36292
+ if (model.configOverrides !== void 0) {
36293
+ dto.config_overrides = model.configOverrides === null ? null : EncoderConfigOverridesFromFrontToApi(model.configOverrides);
36294
+ }
36295
+ if (model.fps !== void 0) dto.fps = model.fps;
36296
+ if (model.sourceUri !== void 0) dto.source_uri = model.sourceUri;
36297
+ return dto;
36298
+ }
36299
+ function EncodeClipResponseFromApiToFront(dto) {
36300
+ const out = {
36301
+ clipId: dto.clip_id,
36302
+ embeddingDim: dto.embedding_dim,
36303
+ encodeElapsedMs: dto.encode_elapsed_ms,
36304
+ frames: dto.frames.map(FrameSummaryFromApiToFront),
36305
+ modelId: dto.model_id,
36306
+ numInputFrames: dto.num_input_frames,
36307
+ paddedFrameIndices: dto.padded_frame_indices,
36308
+ totalObjects: dto.total_objects,
36309
+ totalResiduatedFeatures: dto.total_residuated_features
36310
+ };
36311
+ if (dto.model_version != null) out.modelVersion = dto.model_version;
36312
+ return out;
36313
+ }
36314
+
36315
+ // src/resources/vision.ts
36316
+ var VisionClient = class {
36317
+ /** @internal */
36318
+ api;
36319
+ /** @internal */
36320
+ constructor(api) {
36321
+ this.api = api;
36322
+ }
36323
+ /**
36324
+ * Encode a video clip end-to-end and return per-frame predictions.
36325
+ *
36326
+ * @param request - The clip spec (base64 video, clip id, optional
36327
+ * config overrides / fps / source uri).
36328
+ * @returns The embedding plus per-frame Ψ-term prediction summaries.
36329
+ *
36330
+ * @throws {ApiError} `503` if no V-JEPA perception service is mounted.
36331
+ */
36332
+ async encodeClip(request) {
36333
+ const response = await this.api.encodeClip(EncodeClipRequestFromFrontToApi(request));
36334
+ return EncodeClipResponseFromApiToFront(response.data);
36335
+ }
36336
+ };
36337
+
36338
+ // src/normalizers/anonymization.ts
36339
+ function quasiIdentifierFromFrontToApi(q) {
36340
+ switch (q.type) {
36341
+ case "numeric":
36342
+ return { type: "numeric", precision: q.precision };
36343
+ case "string":
36344
+ return { type: "string", prefix_length: q.prefixLength };
36345
+ case "categorical":
36346
+ return { type: "categorical" };
36347
+ case "hierarchical":
36348
+ return { type: "hierarchical", hierarchy: q.hierarchy };
36349
+ case "date":
36350
+ return { type: "date", granularity: q.granularity };
36351
+ }
36352
+ }
36353
+ function anonymizationModeFromFrontToApi(mode) {
36354
+ if (mode.type === "k_anonymity") {
36355
+ const quasiIdentifiers = {};
36356
+ for (const [field, q] of Object.entries(mode.quasiIdentifiers)) {
36357
+ quasiIdentifiers[field] = quasiIdentifierFromFrontToApi(q);
36358
+ }
36359
+ return { type: "k_anonymity", k: mode.k, quasi_identifiers: quasiIdentifiers };
36360
+ }
36361
+ if (mode.fieldIdentifiers !== void 0) {
36362
+ return {
36363
+ type: "safe_harbor",
36364
+ field_identifiers: mode.fieldIdentifiers
36365
+ };
36366
+ }
36367
+ return { type: "safe_harbor" };
36368
+ }
36369
+ function AnonymizeRequestFromFrontToApi(model) {
36370
+ const dto = {
36371
+ records: model.records,
36372
+ mode: anonymizationModeFromFrontToApi(model.mode)
36373
+ };
36374
+ if (model.enforcement !== void 0) dto.enforcement = model.enforcement;
36375
+ return dto;
36376
+ }
36377
+ function kAnonymityViolationFromApiToFront(wire) {
36378
+ return {
36379
+ quasiValues: wire.quasi_values,
36380
+ count: wire.count,
36381
+ requiredK: wire.required_k,
36382
+ suggestion: wire.suggestion
36383
+ };
36384
+ }
36385
+ function equivalenceClassFromApiToFront(wire) {
36386
+ return {
36387
+ quasiValues: wire.quasi_values,
36388
+ count: wire.count,
36389
+ recordIndices: wire.record_indices
36390
+ };
36391
+ }
36392
+ function kAnonymityResultFromApiToFront(wire) {
36393
+ return {
36394
+ isKAnonymous: wire.is_k_anonymous,
36395
+ k: wire.k,
36396
+ totalRecords: wire.total_records,
36397
+ equivalenceClassCount: wire.equivalence_class_count,
36398
+ violations: wire.violations.map(kAnonymityViolationFromApiToFront),
36399
+ equivalenceClasses: wire.equivalence_classes.map(equivalenceClassFromApiToFront),
36400
+ minClassSize: wire.min_class_size,
36401
+ maxClassSize: wire.max_class_size,
36402
+ avgClassSize: wire.avg_class_size,
36403
+ checkedAt: wire.checked_at
36404
+ };
36405
+ }
36406
+ function recordSafeHarborStatusFromApiToFront(dto) {
36407
+ return {
36408
+ recordIndex: dto.record_index,
36409
+ wasCompliant: dto.was_compliant,
36410
+ suppressedFields: dto.suppressed_fields,
36411
+ violationCount: dto.violation_count
36412
+ };
36413
+ }
36414
+ function safeHarborSummaryFromApiToFront(dto) {
36415
+ return {
36416
+ compliantCount: dto.compliant_count,
36417
+ deIdentifiedCount: dto.de_identified_count,
36418
+ perRecord: dto.per_record.map(recordSafeHarborStatusFromApiToFront)
36419
+ };
36420
+ }
36421
+ function AnonymizeResponseFromApiToFront(dto) {
36422
+ const out = {
36423
+ outputRecords: dto.output_records,
36424
+ suppressedIndices: dto.suppressed_indices,
36425
+ suppressedCount: dto.suppressed_count
36426
+ };
36427
+ if (dto.k_anonymity_result != null) {
36428
+ out.kAnonymityResult = kAnonymityResultFromApiToFront(
36429
+ dto.k_anonymity_result
36430
+ );
36431
+ }
36432
+ if (dto.safe_harbor_summary != null) {
36433
+ out.safeHarborSummary = safeHarborSummaryFromApiToFront(dto.safe_harbor_summary);
36434
+ }
36435
+ return out;
36436
+ }
36437
+
36438
+ // src/resources/anonymization.ts
36439
+ var AnonymizationClient = class {
36440
+ /** @internal */
36441
+ api;
36442
+ /** @internal */
36443
+ constructor(api) {
36444
+ this.api = api;
36445
+ }
36446
+ /**
36447
+ * Batch-anonymize a set of records using k-anonymity or HIPAA Safe Harbor.
36448
+ *
36449
+ * @param request - The record batch, the anonymization mode + params, and
36450
+ * an optional enforcement strategy (defaults to `suppress`).
36451
+ * @returns The processed records plus a full compliance report
36452
+ * (k-anonymity analysis or Safe Harbor summary).
36453
+ *
36454
+ * @throws {ApiError} `400` on an empty batch, > 10 000 records, or an
36455
+ * invalid anonymization mode.
36456
+ *
36457
+ * @example
36458
+ * ```typescript
36459
+ * const result = await client.anonymization.anonymize({
36460
+ * records: [{ name: 'Alice', age: '42', zip: '12345' }],
36461
+ * mode: {
36462
+ * type: 'k_anonymity',
36463
+ * k: 5,
36464
+ * quasiIdentifiers: { age: { type: 'numeric', precision: 10 } },
36465
+ * },
36466
+ * });
36467
+ * console.log(result.kAnonymityResult?.isKAnonymous);
36468
+ * ```
36469
+ */
36470
+ async anonymize(request) {
36471
+ const response = await this.api.anonymizeRecords(AnonymizeRequestFromFrontToApi(request), {
36472
+ headers: { [RAW_BODY_HEADER]: "1" }
36473
+ });
36474
+ return AnonymizeResponseFromApiToFront(response.data);
36475
+ }
36476
+ };
36477
+
36478
+ // src/normalizers/speakers.ts
36479
+ function EnrollSpeakerRequestFromFrontToApi(model) {
36480
+ const dto = { audio: model.audio, name: model.name };
36481
+ if (model.audioMime !== void 0) dto.audio_mime = model.audioMime;
36482
+ return dto;
36483
+ }
36484
+ function EnrollSpeakerResponseFromApiToFront(dto) {
36485
+ return {
36486
+ dim: dto.dim,
36487
+ id: dto.id,
36488
+ name: dto.name,
36489
+ sampleSecs: dto.sample_secs
36490
+ };
36491
+ }
36492
+ function SpeakerProfileFromApiToFront(dto) {
36493
+ return {
36494
+ createdAt: dto.created_at,
36495
+ id: dto.id,
36496
+ name: dto.name,
36497
+ sampleSecs: dto.sample_secs
36498
+ };
36499
+ }
36500
+ function ListSpeakersResponseFromApiToFront(dto) {
36501
+ return { speakers: dto.speakers.map(SpeakerProfileFromApiToFront) };
36502
+ }
36503
+
36504
+ // src/resources/speakers.ts
36505
+ var SpeakersClient = class {
36506
+ /** @internal */
36507
+ api;
36508
+ /** @internal */
36509
+ constructor(api) {
36510
+ this.api = api;
36511
+ }
36512
+ /**
36513
+ * Enroll (or re-enroll) a speaker voiceprint for the authenticated tenant.
36514
+ *
36515
+ * @remarks
36516
+ * Request body uses plain JSON keys (`audio`, `audio_mime`, `name`) with no
36517
+ * user-keyed maps and no case-sensitive enum values, so the default bridge
36518
+ * snake_casing is correct.
36519
+ *
36520
+ * @param request - The base64 audio sample, optional MIME hint, and name.
36521
+ * @returns The embedding dimensionality, stable profile id, name, and
36522
+ * seconds of speech embedded.
36523
+ *
36524
+ * @throws {ApiError} On a non-2xx response (e.g. malformed audio).
36525
+ */
36526
+ async enrollSpeaker(request) {
36527
+ const response = await this.api.enrollSpeaker(EnrollSpeakerRequestFromFrontToApi(request));
36528
+ return EnrollSpeakerResponseFromApiToFront(response.data);
36529
+ }
36530
+ /**
36531
+ * List the tenant's enrolled speaker profiles (embeddings withheld).
36532
+ *
36533
+ * @returns The stored speaker profiles for the authenticated tenant.
36534
+ *
36535
+ * @throws {ApiError} On a non-2xx response.
36536
+ */
36537
+ async listSpeakers() {
36538
+ const response = await this.api.listSpeakers();
36539
+ return ListSpeakersResponseFromApiToFront(response.data);
36540
+ }
36541
+ /**
36542
+ * Delete a speaker profile by id.
36543
+ *
36544
+ * @param request - The stable profile (term) id of the speaker to delete.
36545
+ *
36546
+ * @throws {ApiError} `404` if no profile exists for the given id.
36547
+ */
36548
+ async deleteSpeaker(request) {
36549
+ await this.api.deleteSpeaker(request.id);
36550
+ }
36551
+ };
36552
+
36553
+ // src/normalizers/speech.ts
36554
+ function VoiceConsentFromFrontToApi(model) {
36555
+ const dto = {
36556
+ granted_by: model.grantedBy,
36557
+ method: model.method
36558
+ };
36559
+ if (model.reference !== void 0) dto.reference = model.reference;
36560
+ return dto;
36561
+ }
36562
+ function VoiceConsentFromApiToFront(dto) {
36563
+ const out = {
36564
+ grantedBy: dto.granted_by,
36565
+ method: dto.method
36566
+ };
36567
+ if (dto.reference != null) out.reference = dto.reference;
36568
+ return out;
36569
+ }
36570
+ function VoiceProfileFromApiToFront(dto) {
36571
+ return {
36572
+ consent: VoiceConsentFromApiToFront(dto.consent),
36573
+ createdAt: dto.created_at,
36574
+ engine: dto.engine,
36575
+ hasIcl: dto.has_icl,
36576
+ id: dto.id,
36577
+ name: dto.name,
36578
+ sampleSecs: dto.sample_secs
36579
+ };
36580
+ }
36581
+ function SpeechEngineFromApiToFront(dto) {
36582
+ const out = {
36583
+ available: dto.available,
36584
+ engine: dto.engine,
36585
+ presetSpeakers: dto.preset_speakers,
36586
+ supportsCloning: dto.supports_cloning
36587
+ };
36588
+ if (dto.reason != null) out.reason = dto.reason;
36589
+ return out;
36590
+ }
36591
+ function EnrollVoiceRequestFromFrontToApi(model) {
36592
+ const dto = {
36593
+ audio: model.audio,
36594
+ consent: VoiceConsentFromFrontToApi(model.consent),
36595
+ name: model.name
36596
+ };
36597
+ if (model.audioMime !== void 0) dto.audio_mime = model.audioMime;
36598
+ if (model.engine !== void 0) dto.engine = model.engine;
36599
+ if (model.transcript !== void 0) dto.transcript = model.transcript;
36600
+ return dto;
36601
+ }
36602
+ function ListEnginesResponseFromApiToFront(dto) {
36603
+ return {
36604
+ engines: dto.engines.map(SpeechEngineFromApiToFront)
36605
+ };
36606
+ }
36607
+ function ListVoicesResponseFromApiToFront(dto) {
36608
+ return {
36609
+ presets: dto.presets,
36610
+ voices: dto.voices.map(VoiceProfileFromApiToFront)
36611
+ };
36612
+ }
36613
+ function OpenSpeechSessionRequestFromFrontToApi(model) {
36614
+ const dto = {};
36615
+ if (model.conversationId !== void 0) dto.conversation_id = model.conversationId;
36616
+ if (model.engine !== void 0) dto.engine = model.engine;
36617
+ if (model.language !== void 0) dto.language = model.language;
36618
+ if (model.voiceId !== void 0) dto.voice_id = model.voiceId;
36619
+ return dto;
36620
+ }
36621
+ function OpenSpeechSessionResponseFromApiToFront(dto) {
36622
+ return {
36623
+ engine: dto.engine,
36624
+ fullDuplex: dto.full_duplex,
36625
+ inputSampleRate: dto.input_sample_rate,
36626
+ sessionId: dto.session_id,
36627
+ wsUrl: dto.ws_url
36628
+ };
36629
+ }
36630
+ function SynthesizeSpeechRequestFromFrontToApi(model) {
36631
+ const dto = { text: model.text };
36632
+ if (model.refAudioBase64 !== void 0) dto.ref_audio_base64 = model.refAudioBase64;
36633
+ if (model.description !== void 0) dto.description = model.description;
36634
+ if (model.engine !== void 0) dto.engine = model.engine;
36635
+ if (model.format !== void 0) dto.format = model.format;
36636
+ if (model.instruction !== void 0) dto.instruction = model.instruction;
36637
+ if (model.language !== void 0) dto.language = model.language;
36638
+ if (model.maxDurationS !== void 0) dto.max_duration_s = model.maxDurationS;
36639
+ if (model.refText !== void 0) dto.ref_text = model.refText;
36640
+ if (model.seed !== void 0) dto.seed = model.seed;
36641
+ if (model.speaker !== void 0) dto.speaker = model.speaker;
36642
+ if (model.voiceId !== void 0) dto.voice_id = model.voiceId;
36643
+ return dto;
36644
+ }
36645
+ function TranscribeSpeechRequestFromFrontToApi(model) {
36646
+ const dto = { audio_base64: model.audioBase64 };
36647
+ if (model.audioMime !== void 0) dto.audio_mime = model.audioMime;
36648
+ if (model.format !== void 0) dto.format = model.format;
36649
+ if (model.language !== void 0) dto.language = model.language;
36650
+ return dto;
36651
+ }
36652
+ function TranscribeSpeechResponseFromApiToFront(dto) {
36653
+ const out = {
36654
+ model: dto.model,
36655
+ text: dto.text
36656
+ };
36657
+ if (dto.duration_secs != null) out.durationSecs = dto.duration_secs;
36658
+ return out;
36659
+ }
36660
+
36661
+ // src/resources/speech.ts
36662
+ var SpeechClient = class {
36663
+ /** @internal */
36664
+ api;
36665
+ /** @internal */
36666
+ constructor(api) {
36667
+ this.api = api;
36668
+ }
36669
+ /**
36670
+ * Enroll (or re-enroll) a cloned voice from a reference clip.
36671
+ *
36672
+ * @param request - The enrollment spec (audio, consent, name, etc.).
36673
+ * @returns The registered voice profile.
36674
+ *
36675
+ * @throws {ApiError} `400` if the clip is too short or consent is missing.
36676
+ *
36677
+ * @remarks
36678
+ * Wire format: the request body is a JSON object with snake_case keys
36679
+ * (`audio`, `audio_mime`, `consent`, `engine`, `name`, `transcript`);
36680
+ * the response is a `VoiceProfileDto` with snake_case fields, normalized
36681
+ * to camelCase here.
36682
+ */
36683
+ async enrollVoice(request) {
36684
+ const response = await this.api.enrollVoice(
36685
+ EnrollVoiceRequestFromFrontToApi(request)
36686
+ );
36687
+ return VoiceProfileFromApiToFront(response.data);
36688
+ }
36689
+ /**
36690
+ * Report per-engine availability and capabilities.
36691
+ *
36692
+ * @returns The list of speech engines and their preset speakers.
36693
+ *
36694
+ * @remarks
36695
+ * Wire format: the response is a `ListEnginesResponse` with snake_case
36696
+ * fields, normalized to camelCase here.
36697
+ */
36698
+ async listEngines() {
36699
+ const response = await this.api.listEngines();
36700
+ return ListEnginesResponseFromApiToFront(response.data);
36701
+ }
36702
+ /**
36703
+ * List the tenant's cloned voices plus available presets.
36704
+ *
36705
+ * @returns The enrolled voices and preset speaker names per engine.
36706
+ *
36707
+ * @remarks
36708
+ * Wire format: the response is a `ListVoicesResponse` with snake_case
36709
+ * fields (the `presets` map is returned verbatim), normalized to
36710
+ * camelCase here.
36711
+ */
36712
+ async listVoices() {
36713
+ const response = await this.api.listVoices();
36714
+ return ListVoicesResponseFromApiToFront(response.data);
36715
+ }
36716
+ /**
36717
+ * Open a speech-to-speech session.
36718
+ *
36719
+ * @param request - The session spec (engine, language, voice id, etc.).
36720
+ * @returns The opened session, including the WebSocket media URL.
36721
+ *
36722
+ * @remarks
36723
+ * Wire format: the request body is a JSON object with snake_case keys
36724
+ * (`conversation_id`, `engine`, `language`, `voice_id`); the response is
36725
+ * an `OpenSpeechSessionResponse` with snake_case fields, normalized to
36726
+ * camelCase here.
36727
+ */
36728
+ async openSpeechSession(request) {
36729
+ const response = await this.api.openSpeechSession(
36730
+ OpenSpeechSessionRequestFromFrontToApi(request)
36731
+ );
36732
+ return OpenSpeechSessionResponseFromApiToFront(response.data);
36733
+ }
36734
+ /**
36735
+ * Synthesize speech to raw audio bytes.
36736
+ *
36737
+ * @param request - The synthesis spec (text, engine, voice id, etc.).
36738
+ * @returns The raw fetch `Response`. The body is raw audio bytes
36739
+ * (`content-type: audio/wav` on success); read it via
36740
+ * `.arrayBuffer()` or `.blob()`. Check `response.ok` / `response.status`
36741
+ * before reading the body — a non-2xx response body is a JSON
36742
+ * `ApiError`, a 2xx response body is audio.
36743
+ *
36744
+ * @throws {ApiError} On a non-2xx response (the error body is JSON, not
36745
+ * audio — inspect it before consuming the stream).
36746
+ *
36747
+ * @remarks
36748
+ * Wire format: the request body is a JSON object with snake_case keys
36749
+ * (`ref_audio_base64`, `max_duration_s`, `voice_id`, etc.). The response
36750
+ * is NOT JSON — it is a binary audio stream, so this method returns the
36751
+ * raw `Response` unchanged rather than a normalized DTO.
36752
+ */
36753
+ async synthesizeSpeech(request) {
36754
+ const response = await this.api.synthesizeSpeech(
36755
+ SynthesizeSpeechRequestFromFrontToApi(request)
36756
+ );
36757
+ return response;
36758
+ }
36759
+ /**
36760
+ * Transcribe a short utterance.
36761
+ *
36762
+ * @param request - The transcription spec (base64 audio, mime, etc.).
36763
+ * @returns The recognized text plus the model and optional duration.
36764
+ *
36765
+ * @remarks
36766
+ * Wire format: the request body is a JSON object with snake_case keys
36767
+ * (`audio_base64`, `audio_mime`, `format`, `language`); the response is
36768
+ * a `TranscribeSpeechResponse` with snake_case fields, normalized to
36769
+ * camelCase here.
36770
+ */
36771
+ async transcribeSpeech(request) {
36772
+ const response = await this.api.transcribeSpeech(
36773
+ TranscribeSpeechRequestFromFrontToApi(request)
36774
+ );
36775
+ return TranscribeSpeechResponseFromApiToFront(response.data);
36776
+ }
36777
+ /**
36778
+ * Delete a cloned voice, upstream conditioning included.
36779
+ *
36780
+ * @param voiceId - The voice (term) id to delete.
36781
+ *
36782
+ * @remarks
36783
+ * Wire format: no body; the voice id is a path parameter. Returns no
36784
+ * content on success.
36785
+ */
36786
+ async deleteVoice(voiceId) {
36787
+ await this.api.deleteVoice(voiceId);
36788
+ }
36789
+ };
36790
+
36791
+ // src/normalizers/connectors.ts
36792
+ function AddConnectorRequestFromFrontToApi(model) {
36793
+ return {
36794
+ name: model.name,
36795
+ type: model.type
36796
+ };
36797
+ }
36798
+ function AddConnectorResponseFromApiToFront(dto) {
36799
+ return {
36800
+ id: dto.id,
36801
+ name: dto.name,
36802
+ status: dto.status
36803
+ };
36804
+ }
36805
+ function ConnectorTypeFromApiToFront(dto) {
36806
+ const out = {
36807
+ authType: dto.auth_type,
36808
+ displayName: dto.display_name,
36809
+ typeName: dto.type_name
36810
+ };
36811
+ if (dto.icon_url !== void 0) out.iconUrl = dto.icon_url;
36812
+ return out;
36813
+ }
36814
+ function ConnectorInstanceFromApiToFront(dto) {
36815
+ const out = {
36816
+ displayName: dto.display_name,
36817
+ id: dto.id,
36818
+ name: dto.name,
36819
+ status: dto.status,
36820
+ typeName: dto.type_name
36821
+ };
36822
+ if (dto.connected_at !== void 0) out.connectedAt = dto.connected_at;
36823
+ if (dto.connected_by !== void 0) out.connectedBy = dto.connected_by;
36824
+ return out;
36825
+ }
36826
+ function OAuthStartResponseFromApiToFront(dto) {
36827
+ return {
36828
+ authUrl: dto.auth_url
36829
+ };
36830
+ }
36831
+
36832
+ // src/resources/connectors.ts
36833
+ var ConnectorsClient = class {
36834
+ /** @internal */
36835
+ api;
36836
+ /** @internal */
36837
+ constructor(api) {
36838
+ this.api = api;
36839
+ }
36840
+ /**
36841
+ * List the connector types this build supports.
36842
+ *
36843
+ * @returns Every connector type's wire name, display name, auth type,
36844
+ * and optional icon URL.
36845
+ */
36846
+ async listTypes() {
36847
+ const response = await this.api.listTypes();
36848
+ return (response.data ?? []).map(ConnectorTypeFromApiToFront);
36849
+ }
36850
+ /**
36851
+ * List all registered connector instances.
36852
+ *
36853
+ * @returns The registered instances, each with its connection status.
36854
+ */
36855
+ async list() {
36856
+ const response = await this.api.list();
36857
+ return (response.data ?? []).map(ConnectorInstanceFromApiToFront);
36858
+ }
36859
+ /**
36860
+ * Register a new connector instance.
36861
+ *
36862
+ * @param request - The instance name and the connector type to register.
36863
+ * @returns The newly-registered instance id, name, and status.
36864
+ */
36865
+ async add(request) {
36866
+ const response = await this.api.add(AddConnectorRequestFromFrontToApi(request));
36867
+ return AddConnectorResponseFromApiToFront(response.data);
36868
+ }
36869
+ /**
36870
+ * Remove a registered connector instance.
36871
+ *
36872
+ * @param name - The instance name.
36873
+ */
36874
+ async remove(name) {
36875
+ await this.api.remove(name);
36876
+ }
36877
+ /**
36878
+ * Start an OAuth flow for a connector instance.
36879
+ *
36880
+ * @param name - The instance name.
36881
+ * @returns The authorization URL the caller should redirect the user to.
36882
+ */
36883
+ async startOauth(name) {
36884
+ const response = await this.api.startOauth(name);
36885
+ return OAuthStartResponseFromApiToFront(response.data);
36886
+ }
36887
+ /**
36888
+ * Disconnect a connector instance (drop its stored credentials).
36889
+ *
36890
+ * @param name - The instance name.
36891
+ */
36892
+ async disconnect(name) {
36893
+ await this.api.disconnect(name);
36894
+ }
36895
+ /**
36896
+ * OAuth callback — the provider redirects here after authorization.
36897
+ *
36898
+ * @param name - The instance name.
36899
+ * @param query - The OAuth callback parameters (`code` on success;
36900
+ * `error`/`errorDescription` on failure; the opaque `state`).
36901
+ * @returns The raw `Response` — the backend returns an HTML page that
36902
+ * posts a message to the opener window. The caller usually does not
36903
+ * need the body; check `response.ok` for transport errors.
36904
+ *
36905
+ * @remarks
36906
+ * This endpoint is normally hit by the browser (the OAuth provider's
36907
+ * redirect target), not called directly by SDK consumers. It is exposed
36908
+ * for completeness / server-side testing.
36909
+ */
36910
+ async oauthCallback(name, query = {}) {
36911
+ const response = await this.api.oauthCallback(name, query);
36912
+ return response;
36913
+ }
36914
+ };
36915
+
34317
36916
  // src/client.ts
34318
36917
  var ReasoningLayerClient = class {
34319
36918
  /** Sort (type hierarchy) operations. */
@@ -34480,6 +37079,26 @@ var ReasoningLayerClient = class {
34480
37079
  agui;
34481
37080
  /** Ontology export — OWL ontology and SHACL shapes projected from the sort lattice. */
34482
37081
  ontologyExport;
37082
+ /** Demo substrate seeding — full SUMO + demo scenarios into the tenant substrate. */
37083
+ demo;
37084
+ /** Execution-free reward scoring for candidate queries (recall / precision). */
37085
+ reward;
37086
+ /** Language translation (text → target language, markdown preserved). */
37087
+ translation;
37088
+ /** Probabilistic streaming sketches (Count-Min frequency, Misra-Gries heavy hitters, Bloom membership). */
37089
+ streaming;
37090
+ /** Split-conformal prediction — calibrate a non-conformity threshold, then predict with coverage certificates. */
37091
+ conformal;
37092
+ /** Video-clip encoding (V-JEPA substrate; per-frame predicted-sort labels). */
37093
+ vision;
37094
+ /** GDPR/HIPAA batch anonymization (k-anonymity or Safe Harbor). */
37095
+ anonymization;
37096
+ /** Speaker voiceprint enrollment + listing. */
37097
+ speakers;
37098
+ /** Speech synthesis / transcription / voice cloning + realtime session setup. */
37099
+ speech;
37100
+ /** External data connectors — register / list / remove / connect / disconnect + OAuth callback. */
37101
+ connectors;
34483
37102
  // ─── Group Caches ─────────────────────────────────────────────────
34484
37103
  _core;
34485
37104
  _ai;
@@ -34787,6 +37406,16 @@ var ReasoningLayerClient = class {
34787
37406
  this.guardrail = new GuardrailClient(generatedGuardrail);
34788
37407
  this.agui = new AguiClient(generatedAgui);
34789
37408
  this.ontologyExport = new OntologyExportClient(generatedOntologyExport);
37409
+ this.demo = new DemoClient(new Demo(generatedHttp));
37410
+ this.reward = new RewardClient(new Reward(generatedHttp));
37411
+ this.translation = new TranslationClient(new Translation(generatedHttp));
37412
+ this.streaming = new StreamingClient(new Streaming(generatedHttp));
37413
+ this.conformal = new ConformalClient(new Conformal(generatedHttp));
37414
+ this.vision = new VisionClient(new Vision(generatedHttp));
37415
+ this.anonymization = new AnonymizationClient(new Anonymization(generatedHttp));
37416
+ this.speakers = new SpeakersClient(new Speakers(generatedHttp));
37417
+ this.speech = new SpeechClient(new Speech(generatedHttp));
37418
+ this.connectors = new ConnectorsClient(new Connectors(generatedHttp));
34790
37419
  }
34791
37420
  };
34792
37421
 
@@ -35040,6 +37669,36 @@ var agui_exports = {};
35040
37669
  // src/types/ontology-export.ts
35041
37670
  var ontology_export_exports = {};
35042
37671
 
37672
+ // src/types/demo.ts
37673
+ var demo_exports = {};
37674
+
37675
+ // src/types/reward.ts
37676
+ var reward_exports = {};
37677
+
37678
+ // src/types/translation.ts
37679
+ var translation_exports = {};
37680
+
37681
+ // src/types/streaming.ts
37682
+ var streaming_exports = {};
37683
+
37684
+ // src/types/conformal.ts
37685
+ var conformal_exports = {};
37686
+
37687
+ // src/types/vision.ts
37688
+ var vision_exports = {};
37689
+
37690
+ // src/types/anonymization.ts
37691
+ var anonymization_exports = {};
37692
+
37693
+ // src/types/speakers.ts
37694
+ var speakers_exports = {};
37695
+
37696
+ // src/types/speech.ts
37697
+ var speech_exports = {};
37698
+
37699
+ // src/types/connectors.ts
37700
+ var connectors_exports = {};
37701
+
35043
37702
  // src/builders/value.ts
35044
37703
  var Value = {
35045
37704
  /**
@@ -36045,6 +38704,6 @@ var Flow = {
36045
38704
  }
36046
38705
  };
36047
38706
 
36048
- export { ANY_ROLE, action_reviews_exports as ActionReviews, actions_exports as Actions, admin_exports as Admin, agui_exports as Agui, analysis_exports as Analysis, ApiError, AuthenticationError, authz_exports as Authz, BadRequestError, cdl_exports as CDL, causal_exports as Causal, chase_exports as Chase, cognitive_exports as Cognitive, coherence_exports as Coherence, collections_exports as Collections, communities_exports as Communities, compliance_exports as Compliance, compliance_markings_exports as ComplianceMarkings, conformance_exports as Conformance, Constraint, ConstraintViolationError, constraints_exports as Constraints, control_exports as Control, conversation_exports as Conversation, corpus_exports as Corpus, dl_exports as DL, discovery_exports as Discovery, document_check_exports as DocumentCheck, documents_exports as Documents, execution_exports as Execution, extract_exports as Extract, feasibility_exports as Feasibility, Flow, flow_networks_exports as FlowNetworks, ForbiddenError, forecast_exports as Forecast, functions_exports as Functions, fuzzy_exports as Fuzzy, FuzzyShape, generation_exports as Generation, guardrail_exports as Guardrail, health_exports as Health, homoiconic_exports as Homoiconic, ilp_exports as ILP, image_extraction_exports as ImageExtraction, inference_exports as Inference, ingestion_exports as Ingestion, IngestionFailedError, IngestionSession, InternalServerError, LP, ltn_exports as LTN, marketplace_exports as Marketplace, namespaces_exports as Namespaces, NetworkError, neuro_symbolic_exports as NeuroSymbolic, NotFoundError, ontology_exports as Ontology, ontology_alignment_exports as OntologyAlignment, ontology_bridge_exports as OntologyBridge, ontology_export_exports as OntologyExport, ontology_facade_exports as OntologyFacade, operations_exports as Operations, optimize_exports as Optimize, osf_diff_exports as OsfDiff, osfql_exports as Osfql, oversight_exports as Oversight, plain_values_exports as PlainValues, preferences_exports as Preferences, proof_engine_exports as ProofEngine, property_graph_exports as PropertyGraph, query_exports as Query, rag_exports as RAG, RateLimitError, reasoning_exports as Reasoning, ReasoningLayerClient, ReasoningLayerError, research_exports as Research, reviews_exports as Reviews, row_exports as Row, SDK_VERSION, sat_exports as Sat, scenarios_exports as Scenarios, scheduling_exports as Scheduling, smt_exports as Smt, solver_exports as Solver, SortBuilder, sorts_exports as Sorts, sources_exports as Sources, spaces_exports as Spaces, sparql_exports as Sparql, statistical_exports as Statistical, synthetic_exports as Synthetic, temporal_exports as Temporal, terms_exports as Terms, TimeoutError, ui_exports as UI, utilities_exports as Utilities, ValidationError, Value, values_exports as Values, verification_exports as Verification, visualization_exports as Visualization, WebSocketClient, WebSocketConnection, webhook_actions_exports as WebhookActions, allen, constrained, discriminateFeatureValue, guard, isConstrainedPlainVar, isPsiTermInput, isTaggedValueDto, isUuid, psi, toTaggedFeatures, toTaggedValue, toTermInputDto, toUntaggedFeatures, toUntaggedValue };
38707
+ export { ANY_ROLE, action_reviews_exports as ActionReviews, actions_exports as Actions, admin_exports as Admin, agui_exports as Agui, analysis_exports as Analysis, anonymization_exports as Anonymization, ApiError, AuthenticationError, authz_exports as Authz, BadRequestError, cdl_exports as CDL, causal_exports as Causal, chase_exports as Chase, cognitive_exports as Cognitive, coherence_exports as Coherence, collections_exports as Collections, communities_exports as Communities, compliance_exports as Compliance, compliance_markings_exports as ComplianceMarkings, conformal_exports as Conformal, conformance_exports as Conformance, connectors_exports as Connectors, Constraint, ConstraintViolationError, constraints_exports as Constraints, control_exports as Control, conversation_exports as Conversation, corpus_exports as Corpus, dl_exports as DL, demo_exports as Demo, discovery_exports as Discovery, document_check_exports as DocumentCheck, documents_exports as Documents, execution_exports as Execution, extract_exports as Extract, feasibility_exports as Feasibility, Flow, flow_networks_exports as FlowNetworks, ForbiddenError, forecast_exports as Forecast, functions_exports as Functions, fuzzy_exports as Fuzzy, FuzzyShape, generation_exports as Generation, guardrail_exports as Guardrail, health_exports as Health, homoiconic_exports as Homoiconic, ilp_exports as ILP, image_extraction_exports as ImageExtraction, inference_exports as Inference, ingestion_exports as Ingestion, IngestionFailedError, IngestionSession, InternalServerError, LP, ltn_exports as LTN, marketplace_exports as Marketplace, namespaces_exports as Namespaces, NetworkError, neuro_symbolic_exports as NeuroSymbolic, NotFoundError, ontology_exports as Ontology, ontology_alignment_exports as OntologyAlignment, ontology_bridge_exports as OntologyBridge, ontology_export_exports as OntologyExport, ontology_facade_exports as OntologyFacade, operations_exports as Operations, optimize_exports as Optimize, osf_diff_exports as OsfDiff, osfql_exports as Osfql, oversight_exports as Oversight, plain_values_exports as PlainValues, preferences_exports as Preferences, proof_engine_exports as ProofEngine, property_graph_exports as PropertyGraph, query_exports as Query, rag_exports as RAG, RateLimitError, reasoning_exports as Reasoning, ReasoningLayerClient, ReasoningLayerError, research_exports as Research, reviews_exports as Reviews, reward_exports as Reward, row_exports as Row, SDK_VERSION, sat_exports as Sat, scenarios_exports as Scenarios, scheduling_exports as Scheduling, smt_exports as Smt, solver_exports as Solver, SortBuilder, sorts_exports as Sorts, sources_exports as Sources, spaces_exports as Spaces, sparql_exports as Sparql, speakers_exports as Speakers, speech_exports as Speech, statistical_exports as Statistical, streaming_exports as Streaming, synthetic_exports as Synthetic, temporal_exports as Temporal, terms_exports as Terms, TimeoutError, translation_exports as Translation, ui_exports as UI, utilities_exports as Utilities, ValidationError, Value, values_exports as Values, verification_exports as Verification, vision_exports as Vision, visualization_exports as Visualization, WebSocketClient, WebSocketConnection, webhook_actions_exports as WebhookActions, allen, constrained, discriminateFeatureValue, guard, isConstrainedPlainVar, isPsiTermInput, isTaggedValueDto, isUuid, psi, toTaggedFeatures, toTaggedValue, toTermInputDto, toUntaggedFeatures, toUntaggedValue };
36049
38708
  //# sourceMappingURL=index.js.map
36050
38709
  //# sourceMappingURL=index.js.map