@kortexya/reasoninglayer 1.14.0 → 1.16.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.14.0";
8
+ var SDK_VERSION = "1.16.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",
@@ -1160,6 +1162,22 @@ var Sorts = class {
1160
1162
  format: "json",
1161
1163
  ...params
1162
1164
  });
1165
+ /**
1166
+ * @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`).
1167
+ *
1168
+ * @tags sorts
1169
+ * @name SortIndexStatus
1170
+ * @summary GET /api/v1/sorts/index/status
1171
+ * @request GET:/api/v1/sorts/index/status
1172
+ * @secure
1173
+ */
1174
+ sortIndexStatus = (params = {}) => this.http.request({
1175
+ path: `/api/v1/sorts/index/status`,
1176
+ method: "GET",
1177
+ secure: true,
1178
+ format: "json",
1179
+ ...params
1180
+ });
1163
1181
  /**
1164
1182
  * No description
1165
1183
  *
@@ -1412,9 +1430,10 @@ var Terms = class {
1412
1430
  * @request GET:/api/v1/terms
1413
1431
  * @secure
1414
1432
  */
1415
- listTerms = (params = {}) => this.http.request({
1433
+ listTerms = (query, params = {}) => this.http.request({
1416
1434
  path: `/api/v1/terms`,
1417
1435
  method: "GET",
1436
+ query,
1418
1437
  secure: true,
1419
1438
  format: "json",
1420
1439
  ...params
@@ -1494,7 +1513,7 @@ var Inference = class {
1494
1513
  ...params
1495
1514
  });
1496
1515
  /**
1497
- * @description # TRUE HOMOICONIC API Request contains a goal term and optional constraints. Response returns solutions with term-based substitutions. ## Temporal Reasoning Use constraints to filter by temporal relations: ```json { "goal": {"sort_name": "Employment", "features": {"valid_to": {"name": "?EndTime"}}}, "constraints": [{"type": "Guard", "left": "?EndTime", "op": "lt", "right": "1583020800000"}] } ``` # Authorization Requires X-Tenant-Id header.
1516
+ * @description # TRUE HOMOICONIC API Request contains a goal term and optional constraints. Response returns solutions with term-based substitutions. ## Temporal Reasoning Use constraints to filter by temporal relations: ```json { "goal": {"sort_name": "Employment", "features": {"valid_to": {"name": "?EndTime"}}}, "constraints": [{"type": "Guard", "left": "?EndTime", "op": "lt", "right": "1583020800000"}] } ``` # Authorization Requires X-Tenant-Id header. Traced: this is the path the zanzibar gateway hits for every permission check, so it is where an end-to-end trace either explains a slow request or does not. `skip_all` because the request body can be large and has no business in a span attribute.
1498
1517
  *
1499
1518
  * @tags inference
1500
1519
  * @name BackwardChain
@@ -1751,9 +1770,10 @@ var Inference = class {
1751
1770
  * @request GET:/api/v1/inference/facts/{tenant_id}
1752
1771
  * @secure
1753
1772
  */
1754
- getFacts = (tenantId, params = {}) => this.http.request({
1773
+ getFacts = (tenantId, query, params = {}) => this.http.request({
1755
1774
  path: `/api/v1/inference/facts/${tenantId}`,
1756
1775
  method: "GET",
1776
+ query,
1757
1777
  secure: true,
1758
1778
  format: "json",
1759
1779
  ...params
@@ -1948,6 +1968,21 @@ var Cognitive = class {
1948
1968
  format: "json",
1949
1969
  ...params
1950
1970
  });
1971
+ /**
1972
+ * @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)
1973
+ *
1974
+ * @tags cognitive
1975
+ * @name CognitiveSseHandler
1976
+ * @summary SSE transport for the *same* cognitive event stream as `cognitive_ws_handler`.
1977
+ * @request GET:/api/v1/cognitive/agents/{agent_id}/events
1978
+ * @secure
1979
+ */
1980
+ cognitiveSseHandler = (agentId, params = {}) => this.http.request({
1981
+ path: `/api/v1/cognitive/agents/${agentId}/events`,
1982
+ method: "GET",
1983
+ secure: true,
1984
+ ...params
1985
+ });
1951
1986
  /**
1952
1987
  * @description ## Example ```bash curl -X POST http://localhost:3000/api/v1/cognitive/agents \ -H "Content-Type: application/json" \ -d '{"name": "reasoning_agent", "tenant_id": "..."}' ```
1953
1988
  *
@@ -1996,6 +2031,20 @@ var Cognitive = class {
1996
2031
  format: "json",
1997
2032
  ...params
1998
2033
  });
2034
+ /**
2035
+ * @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.
2036
+ *
2037
+ * @tags cognitive
2038
+ * @name GetActionReviewConfigHandler
2039
+ * @summary Get the tenant's current HITL action-review (oversight) configuration.
2040
+ * @request GET:/api/v1/cognitive/agents/action-review-config
2041
+ */
2042
+ getActionReviewConfigHandler = (params = {}) => this.http.request({
2043
+ path: `/api/v1/cognitive/agents/action-review-config`,
2044
+ method: "GET",
2045
+ format: "json",
2046
+ ...params
2047
+ });
1999
2048
  /**
2000
2049
  * @description Returns drives, deficits, curiosity targets, and the dominant drive. Tenant is identified by the `X-Tenant-Id` header.
2001
2050
  *
@@ -2012,6 +2061,22 @@ var Cognitive = class {
2012
2061
  format: "json",
2013
2062
  ...params
2014
2063
  });
2064
+ /**
2065
+ * No description
2066
+ *
2067
+ * @tags cognitive
2068
+ * @name GetAgentPlanHandler
2069
+ * @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).
2070
+ * @request GET:/api/v1/cognitive/agents/{agent_id}/plan
2071
+ * @secure
2072
+ */
2073
+ getAgentPlanHandler = (agentId, params = {}) => this.http.request({
2074
+ path: `/api/v1/cognitive/agents/${agentId}/plan`,
2075
+ method: "GET",
2076
+ secure: true,
2077
+ format: "json",
2078
+ ...params
2079
+ });
2015
2080
  /**
2016
2081
  * No description
2017
2082
  *
@@ -2028,6 +2093,22 @@ var Cognitive = class {
2028
2093
  format: "json",
2029
2094
  ...params
2030
2095
  });
2096
+ /**
2097
+ * No description
2098
+ *
2099
+ * @tags cognitive
2100
+ * @name GetAgentWorldModelHandler
2101
+ * @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.
2102
+ * @request GET:/api/v1/cognitive/agents/{agent_id}/world-model
2103
+ * @secure
2104
+ */
2105
+ getAgentWorldModelHandler = (agentId, params = {}) => this.http.request({
2106
+ path: `/api/v1/cognitive/agents/${agentId}/world-model`,
2107
+ method: "GET",
2108
+ secure: true,
2109
+ format: "json",
2110
+ ...params
2111
+ });
2031
2112
  /**
2032
2113
  * @description Returns beliefs, goals, intentions, pending perceptions, activations, recent episodes, and rule utilities. Tenant is identified by the `X-Tenant-Id` header.
2033
2114
  *
@@ -2092,6 +2173,22 @@ var Cognitive = class {
2092
2173
  format: "json",
2093
2174
  ...params
2094
2175
  });
2176
+ /**
2177
+ * No description
2178
+ *
2179
+ * @tags cognitive
2180
+ * @name PauseAgentHandler
2181
+ * @summary POST /api/v1/cognitive/agents/{agent_id}/pause — pause an agent (persisted).
2182
+ * @request POST:/api/v1/cognitive/agents/{agent_id}/pause
2183
+ * @secure
2184
+ */
2185
+ pauseAgentHandler = (agentId, params = {}) => this.http.request({
2186
+ path: `/api/v1/cognitive/agents/${agentId}/pause`,
2187
+ method: "POST",
2188
+ secure: true,
2189
+ format: "json",
2190
+ ...params
2191
+ });
2095
2192
  /**
2096
2193
  * @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
2097
2194
  *
@@ -2124,6 +2221,22 @@ var Cognitive = class {
2124
2221
  format: "json",
2125
2222
  ...params
2126
2223
  });
2224
+ /**
2225
+ * No description
2226
+ *
2227
+ * @tags cognitive
2228
+ * @name ResumeAgentHandler
2229
+ * @summary POST /api/v1/cognitive/agents/{agent_id}/resume — resume a paused agent.
2230
+ * @request POST:/api/v1/cognitive/agents/{agent_id}/resume
2231
+ * @secure
2232
+ */
2233
+ resumeAgentHandler = (agentId, params = {}) => this.http.request({
2234
+ path: `/api/v1/cognitive/agents/${agentId}/resume`,
2235
+ method: "POST",
2236
+ secure: true,
2237
+ format: "json",
2238
+ ...params
2239
+ });
2127
2240
  /**
2128
2241
  * @description Executes: perceive → reason → act → learn
2129
2242
  *
@@ -2188,6 +2301,22 @@ var Cognitive = class {
2188
2301
  format: "json",
2189
2302
  ...params
2190
2303
  });
2304
+ /**
2305
+ * No description
2306
+ *
2307
+ * @tags cognitive
2308
+ * @name StopAgentHandler
2309
+ * @summary POST /api/v1/cognitive/agents/{agent_id}/stop — soft-stop an agent (persisted; distinct from DELETE, which permanently destroys the agent + its goals).
2310
+ * @request POST:/api/v1/cognitive/agents/{agent_id}/stop
2311
+ * @secure
2312
+ */
2313
+ stopAgentHandler = (agentId, params = {}) => this.http.request({
2314
+ path: `/api/v1/cognitive/agents/${agentId}/stop`,
2315
+ method: "POST",
2316
+ secure: true,
2317
+ format: "json",
2318
+ ...params
2319
+ });
2191
2320
  /**
2192
2321
  * @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"]}' ```
2193
2322
  *
@@ -2643,7 +2772,7 @@ var Ingestion = class {
2643
2772
  ...params
2644
2773
  });
2645
2774
  /**
2646
- * @description POST /api/v1/ingest/document This endpoint accepts a document (as base64 or URL) and: 1. Parses it to Markdown using the document parser service (Docling) 2. Processes the Markdown through the existing ingestion pipeline 3. Returns combined statistics from both stages # Headers - `X-Tenant-Id`: Tenant ID for multi-tenancy isolation (required) # Request Body - `document`: Document source (base64 or URL) - `document_type`: Optional type hint (auto-detected if not provided) - `owner_id`: User ID who owns the ingested data - `ocr_config`: Optional OCR/parsing configuration - `ingestion_config`: Optional markdown ingestion configuration # Response - `success`: Whether ingestion completed successfully - `parse_stats`: Statistics from document parsing - `metadata`: Extracted document metadata - `ingestion_stats`: Statistics from markdown ingestion - `pending_review`: Entities that need human review
2775
+ * @description POST /api/v1/ingest/document This endpoint accepts a document (as base64 or URL) and: 1. Parses it to Markdown using the document parser service (Docling) 2. Returns the generated Markdown to the caller 3. Unless `parse_only` is true, processes the Markdown through ingestion 4. Returns combined statistics from the completed stages # Headers - `X-Tenant-Id`: Tenant ID for multi-tenancy isolation (required) # Request Body - `document`: Document source (base64 or URL) - `document_type`: Optional type hint (auto-detected if not provided) - `owner_id`: User ID who owns the ingested data - `ocr_config`: Optional OCR/parsing configuration - `ingestion_config`: Optional markdown ingestion configuration - `parse_only`: Return Markdown without creating sessions or semantic terms # Response - `success`: Whether ingestion completed successfully - `parse_stats`: Statistics from document parsing - `metadata`: Extracted document metadata - `markdown`: Markdown generated by Docling/OCR - `ingestion_stats`: Statistics from markdown ingestion - `pending_review`: Entities that need human review
2647
2776
  *
2648
2777
  * @tags ingestion
2649
2778
  * @name IngestDocument
@@ -2678,6 +2807,24 @@ var Ingestion = class {
2678
2807
  format: "json",
2679
2808
  ...params
2680
2809
  });
2810
+ /**
2811
+ * @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.
2812
+ *
2813
+ * @tags ingestion
2814
+ * @name IngestKif
2815
+ * @summary Import SUO-KIF and, optionally, prove a ground goal against the imported axioms.
2816
+ * @request POST:/api/v1/ingest/kif
2817
+ * @secure
2818
+ */
2819
+ ingestKif = (data, params = {}) => this.http.request({
2820
+ path: `/api/v1/ingest/kif`,
2821
+ method: "POST",
2822
+ body: data,
2823
+ secure: true,
2824
+ type: "application/json" /* Json */,
2825
+ format: "json",
2826
+ ...params
2827
+ });
2681
2828
  /**
2682
2829
  * @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.
2683
2830
  *
@@ -2978,6 +3125,22 @@ var StructuredIngestion = class {
2978
3125
  format: "json",
2979
3126
  ...params
2980
3127
  });
3128
+ /**
3129
+ * @description The pre-registration half of #71's mode-discovery surface: a client rendering a "new source" picker learns, at type-selection time, which types registration would accept and which write-path modes each would serve — without constructing a source (postgres, for example, opens a connection pool eagerly). Static per build, so no tenant state is consulted; auth is still required, as for every route under `/api/v1`.
3130
+ *
3131
+ * @tags structured_ingestion
3132
+ * @name ListSourceTypesCatalog
3133
+ * @summary List the source types this build can register, with their mode capabilities.
3134
+ * @request GET:/api/v1/sources/types
3135
+ * @secure
3136
+ */
3137
+ listSourceTypesCatalog = (params = {}) => this.http.request({
3138
+ path: `/api/v1/sources/types`,
3139
+ method: "GET",
3140
+ secure: true,
3141
+ format: "json",
3142
+ ...params
3143
+ });
2981
3144
  /**
2982
3145
  * @description Creates a connector instance from the provided configuration and registers it with the structured ingestion service for subsequent schema discovery and data ingestion.
2983
3146
  *
@@ -3542,6 +3705,60 @@ var Communities = class {
3542
3705
  constructor(http) {
3543
3706
  this.http = http;
3544
3707
  }
3708
+ /**
3709
+ * @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`.
3710
+ *
3711
+ * @tags communities
3712
+ * @name ComputeCentrality
3713
+ * @summary Compute a node-centrality measure over the tenant's reference graph.
3714
+ * @request POST:/api/v1/analysis/centrality
3715
+ * @secure
3716
+ */
3717
+ computeCentrality = (data, params = {}) => this.http.request({
3718
+ path: `/api/v1/analysis/centrality`,
3719
+ method: "POST",
3720
+ body: data,
3721
+ secure: true,
3722
+ type: "application/json" /* Json */,
3723
+ format: "json",
3724
+ ...params
3725
+ });
3726
+ /**
3727
+ * @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).
3728
+ *
3729
+ * @tags communities
3730
+ * @name ComputeCohesion
3731
+ * @summary Structural-cohesion metrics over the tenant's reference graph.
3732
+ * @request POST:/api/v1/analysis/cohesion
3733
+ * @secure
3734
+ */
3735
+ computeCohesion = (data, params = {}) => this.http.request({
3736
+ path: `/api/v1/analysis/cohesion`,
3737
+ method: "POST",
3738
+ body: data,
3739
+ secure: true,
3740
+ type: "application/json" /* Json */,
3741
+ format: "json",
3742
+ ...params
3743
+ });
3744
+ /**
3745
+ * @description `POST /api/v1/analysis/path` Read-only: BFS shortest path (`source..=target`) over the undirected reference graph, or `null` when `target` is unreachable.
3746
+ *
3747
+ * @tags communities
3748
+ * @name ComputePath
3749
+ * @summary Shortest path between two nodes (and the graph's connected-component count).
3750
+ * @request POST:/api/v1/analysis/path
3751
+ * @secure
3752
+ */
3753
+ computePath = (data, params = {}) => this.http.request({
3754
+ path: `/api/v1/analysis/path`,
3755
+ method: "POST",
3756
+ body: data,
3757
+ secure: true,
3758
+ type: "application/json" /* Json */,
3759
+ format: "json",
3760
+ ...params
3761
+ });
3545
3762
  /**
3546
3763
  * @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.
3547
3764
  *
@@ -3560,6 +3777,21 @@ var Communities = class {
3560
3777
  format: "json",
3561
3778
  ...params
3562
3779
  });
3780
+ /**
3781
+ * @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.
3782
+ *
3783
+ * @tags communities
3784
+ * @name ExportGraph
3785
+ * @summary Export the tenant's reference graph to a graph-interchange format.
3786
+ * @request GET:/api/v1/graph/export
3787
+ * @secure
3788
+ */
3789
+ exportGraph = (params = {}) => this.http.request({
3790
+ path: `/api/v1/graph/export`,
3791
+ method: "GET",
3792
+ secure: true,
3793
+ ...params
3794
+ });
3563
3795
  /**
3564
3796
  * @description POST /api/v1/communities/memberships Returns all communities that a term belongs to, with membership degrees.
3565
3797
  *
@@ -3578,6 +3810,24 @@ var Communities = class {
3578
3810
  format: "json",
3579
3811
  ...params
3580
3812
  });
3813
+ /**
3814
+ * @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.
3815
+ *
3816
+ * @tags communities
3817
+ * @name PredictLinks
3818
+ * @summary Score candidate links from a source node (link prediction).
3819
+ * @request POST:/api/v1/analysis/link-prediction
3820
+ * @secure
3821
+ */
3822
+ predictLinks = (data, params = {}) => this.http.request({
3823
+ path: `/api/v1/analysis/link-prediction`,
3824
+ method: "POST",
3825
+ body: data,
3826
+ secure: true,
3827
+ type: "application/json" /* Json */,
3828
+ format: "json",
3829
+ ...params
3830
+ });
3581
3831
  /**
3582
3832
  * @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
3583
3833
  *
@@ -5568,6 +5818,24 @@ var Discovery = class {
5568
5818
  format: "json",
5569
5819
  ...params
5570
5820
  });
5821
+ /**
5822
+ * @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
5823
+ *
5824
+ * @tags discovery
5825
+ * @name DiscoverEml
5826
+ * @summary Handler for `POST /discover/eml`.
5827
+ * @request POST:/api/v1/discover/eml
5828
+ * @secure
5829
+ */
5830
+ discoverEml = (data, params = {}) => this.http.request({
5831
+ path: `/api/v1/discover/eml`,
5832
+ method: "POST",
5833
+ body: data,
5834
+ secure: true,
5835
+ type: "application/json" /* Json */,
5836
+ format: "json",
5837
+ ...params
5838
+ });
5571
5839
  /**
5572
5840
  * @description POST /api/v1/discovery/predict Finds similar historical patterns and predicts effects using fuzzy search with PRODUCT t-norm reweighting for better aggregation.
5573
5841
  *
@@ -6214,6 +6482,24 @@ var Fuzzy = class {
6214
6482
  format: "json",
6215
6483
  ...params
6216
6484
  });
6485
+ /**
6486
+ * @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.
6487
+ *
6488
+ * @tags fuzzy
6489
+ * @name ScoreTerms
6490
+ * @summary Score a GIVEN set of candidate terms against a query ψ-term.
6491
+ * @request POST:/api/v1/fuzzy/score
6492
+ * @secure
6493
+ */
6494
+ scoreTerms = (data, params = {}) => this.http.request({
6495
+ path: `/api/v1/fuzzy/score`,
6496
+ method: "POST",
6497
+ body: data,
6498
+ secure: true,
6499
+ type: "application/json" /* Json */,
6500
+ format: "json",
6501
+ ...params
6502
+ });
6217
6503
  };
6218
6504
 
6219
6505
  // src/api-spec/generated/Constraints.ts
@@ -8716,6 +9002,24 @@ var Generation = class {
8716
9002
  constructor(http) {
8717
9003
  this.http = http;
8718
9004
  }
9005
+ /**
9006
+ * @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.
9007
+ *
9008
+ * @tags generation
9009
+ * @name ConstrainedGenerate
9010
+ * @summary Generate an answer constrained to an OSF-feasible set via the application-tier decoder.
9011
+ * @request POST:/api/v1/constrained/generate
9012
+ * @secure
9013
+ */
9014
+ constrainedGenerate = (data, params = {}) => this.http.request({
9015
+ path: `/api/v1/constrained/generate`,
9016
+ method: "POST",
9017
+ body: data,
9018
+ secure: true,
9019
+ type: "application/json" /* Json */,
9020
+ format: "json",
9021
+ ...params
9022
+ });
8719
9023
  /**
8720
9024
  * No description
8721
9025
  *
@@ -8734,6 +9038,40 @@ var Generation = class {
8734
9038
  format: "json",
8735
9039
  ...params
8736
9040
  });
9041
+ /**
9042
+ * @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).
9043
+ *
9044
+ * @tags generation
9045
+ * @name GroundedGenerate
9046
+ * @summary Generate grounded prose via the two-pass (constrained derivation → free realization) pipeline.
9047
+ * @request POST:/api/v1/generate/grounded
9048
+ * @secure
9049
+ */
9050
+ groundedGenerate = (data, params = {}) => this.http.request({
9051
+ path: `/api/v1/generate/grounded`,
9052
+ method: "POST",
9053
+ body: data,
9054
+ secure: true,
9055
+ type: "application/json" /* Json */,
9056
+ format: "json",
9057
+ ...params
9058
+ });
9059
+ /**
9060
+ * No description
9061
+ *
9062
+ * @tags generation
9063
+ * @name RawGenerate
9064
+ * @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.
9065
+ * @request POST:/api/v1/generate/raw
9066
+ */
9067
+ rawGenerate = (data, params = {}) => this.http.request({
9068
+ path: `/api/v1/generate/raw`,
9069
+ method: "POST",
9070
+ body: data,
9071
+ type: "application/json" /* Json */,
9072
+ format: "json",
9073
+ ...params
9074
+ });
8737
9075
  };
8738
9076
 
8739
9077
  // src/api-spec/generated/Rag.ts
@@ -8816,6 +9154,7 @@ var Osfql = class {
8816
9154
  path: `/api/v1/osfql/catalog`,
8817
9155
  method: "GET",
8818
9156
  query,
9157
+ format: "json",
8819
9158
  ...params
8820
9159
  });
8821
9160
  };
@@ -9140,6 +9479,22 @@ var Operations = class {
9140
9479
  format: "json",
9141
9480
  ...params
9142
9481
  });
9482
+ /**
9483
+ * @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).
9484
+ *
9485
+ * @tags operations
9486
+ * @name AntiUnifyBatch
9487
+ * @summary Anti-unify N Ψ-terms (Least General Generalisation of the whole set).
9488
+ * @request POST:/api/v1/operations/anti-unify/batch
9489
+ */
9490
+ antiUnifyBatch = (data, params = {}) => this.http.request({
9491
+ path: `/api/v1/operations/anti-unify/batch`,
9492
+ method: "POST",
9493
+ body: data,
9494
+ type: "application/json" /* Json */,
9495
+ format: "json",
9496
+ ...params
9497
+ });
9143
9498
  };
9144
9499
 
9145
9500
  // src/api-spec/generated/Actions.ts
@@ -9636,6 +9991,531 @@ var OntologyBridge = class {
9636
9991
  });
9637
9992
  };
9638
9993
 
9994
+ // src/api-spec/generated/Demo.ts
9995
+ var Demo = class {
9996
+ http;
9997
+ constructor(http) {
9998
+ this.http = http;
9999
+ }
10000
+ /**
10001
+ * @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.
10002
+ *
10003
+ * @tags demo
10004
+ * @name DemoSeed
10005
+ * @summary Seed the request tenant's persistent substrate with full SUMO + the demo scenario situations.
10006
+ * @request POST:/api/v1/demo/seed
10007
+ * @secure
10008
+ */
10009
+ demoSeed = (data, params = {}) => this.http.request({
10010
+ path: `/api/v1/demo/seed`,
10011
+ method: "POST",
10012
+ body: data,
10013
+ secure: true,
10014
+ type: "application/json" /* Json */,
10015
+ format: "json",
10016
+ ...params
10017
+ });
10018
+ };
10019
+
10020
+ // src/api-spec/generated/Reward.ts
10021
+ var Reward = class {
10022
+ http;
10023
+ constructor(http) {
10024
+ this.http = http;
10025
+ }
10026
+ /**
10027
+ * No description
10028
+ *
10029
+ * @tags reward
10030
+ * @name Score
10031
+ * @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.
10032
+ * @request POST:/api/v1/reward/score
10033
+ * @secure
10034
+ */
10035
+ score = (data, params = {}) => this.http.request({
10036
+ path: `/api/v1/reward/score`,
10037
+ method: "POST",
10038
+ body: data,
10039
+ secure: true,
10040
+ type: "application/json" /* Json */,
10041
+ format: "json",
10042
+ ...params
10043
+ });
10044
+ };
10045
+
10046
+ // src/api-spec/generated/Translation.ts
10047
+ var Translation = class {
10048
+ http;
10049
+ constructor(http) {
10050
+ this.http = http;
10051
+ }
10052
+ /**
10053
+ * @description POST /api/v1/translate
10054
+ *
10055
+ * @tags translation
10056
+ * @name Translate
10057
+ * @summary Translate text into a target language.
10058
+ * @request POST:/api/v1/translate
10059
+ * @secure
10060
+ */
10061
+ translate = (data, params = {}) => this.http.request({
10062
+ path: `/api/v1/translate`,
10063
+ method: "POST",
10064
+ body: data,
10065
+ secure: true,
10066
+ type: "application/json" /* Json */,
10067
+ format: "json",
10068
+ ...params
10069
+ });
10070
+ };
10071
+
10072
+ // src/api-spec/generated/Streaming.ts
10073
+ var Streaming = class {
10074
+ http;
10075
+ constructor(http) {
10076
+ this.http = http;
10077
+ }
10078
+ /**
10079
+ * @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.
10080
+ *
10081
+ * @tags streaming
10082
+ * @name Frequency
10083
+ * @summary `POST /api/v1/streaming/frequency`
10084
+ * @request POST:/api/v1/streaming/frequency
10085
+ */
10086
+ frequency = (data, params = {}) => this.http.request({
10087
+ path: `/api/v1/streaming/frequency`,
10088
+ method: "POST",
10089
+ body: data,
10090
+ type: "application/json" /* Json */,
10091
+ format: "json",
10092
+ ...params
10093
+ });
10094
+ /**
10095
+ * @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.
10096
+ *
10097
+ * @tags streaming
10098
+ * @name HeavyHitters
10099
+ * @summary `POST /api/v1/streaming/heavy-hitters`
10100
+ * @request POST:/api/v1/streaming/heavy-hitters
10101
+ */
10102
+ heavyHitters = (data, params = {}) => this.http.request({
10103
+ path: `/api/v1/streaming/heavy-hitters`,
10104
+ method: "POST",
10105
+ body: data,
10106
+ type: "application/json" /* Json */,
10107
+ format: "json",
10108
+ ...params
10109
+ });
10110
+ /**
10111
+ * @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.
10112
+ *
10113
+ * @tags streaming
10114
+ * @name Membership
10115
+ * @summary `POST /api/v1/streaming/membership`
10116
+ * @request POST:/api/v1/streaming/membership
10117
+ */
10118
+ membership = (data, params = {}) => this.http.request({
10119
+ path: `/api/v1/streaming/membership`,
10120
+ method: "POST",
10121
+ body: data,
10122
+ type: "application/json" /* Json */,
10123
+ format: "json",
10124
+ ...params
10125
+ });
10126
+ };
10127
+
10128
+ // src/api-spec/generated/Conformal.ts
10129
+ var Conformal = class {
10130
+ http;
10131
+ constructor(http) {
10132
+ this.http = http;
10133
+ }
10134
+ /**
10135
+ * @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`.
10136
+ *
10137
+ * @tags conformal
10138
+ * @name Calibrate
10139
+ * @summary `POST /api/v1/conformal/calibrate`
10140
+ * @request POST:/api/v1/conformal/calibrate
10141
+ */
10142
+ calibrate = (data, params = {}) => this.http.request({
10143
+ path: `/api/v1/conformal/calibrate`,
10144
+ method: "POST",
10145
+ body: data,
10146
+ type: "application/json" /* Json */,
10147
+ format: "json",
10148
+ ...params
10149
+ });
10150
+ /**
10151
+ * @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.
10152
+ *
10153
+ * @tags conformal
10154
+ * @name Predict
10155
+ * @summary `POST /api/v1/conformal/predict`
10156
+ * @request POST:/api/v1/conformal/predict
10157
+ */
10158
+ predict = (data, params = {}) => this.http.request({
10159
+ path: `/api/v1/conformal/predict`,
10160
+ method: "POST",
10161
+ body: data,
10162
+ type: "application/json" /* Json */,
10163
+ format: "json",
10164
+ ...params
10165
+ });
10166
+ };
10167
+
10168
+ // src/api-spec/generated/Vision.ts
10169
+ var Vision = class {
10170
+ http;
10171
+ constructor(http) {
10172
+ this.http = http;
10173
+ }
10174
+ /**
10175
+ * @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.
10176
+ *
10177
+ * @tags vision
10178
+ * @name EncodeClip
10179
+ * @summary Encode a video clip end-to-end through V-JEPA + the head + the substrate, returning per-frame Ψ-term prediction summaries.
10180
+ * @request POST:/api/v1/vision/encode-clip
10181
+ * @secure
10182
+ */
10183
+ encodeClip = (data, params = {}) => this.http.request({
10184
+ path: `/api/v1/vision/encode-clip`,
10185
+ method: "POST",
10186
+ body: data,
10187
+ secure: true,
10188
+ type: "application/json" /* Json */,
10189
+ format: "json",
10190
+ ...params
10191
+ });
10192
+ };
10193
+
10194
+ // src/api-spec/generated/Anonymization.ts
10195
+ var Anonymization = class {
10196
+ http;
10197
+ constructor(http) {
10198
+ this.http = http;
10199
+ }
10200
+ /**
10201
+ * @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.
10202
+ *
10203
+ * @tags anonymization
10204
+ * @name AnonymizeRecords
10205
+ * @summary `POST /api/v1/anonymize`
10206
+ * @request POST:/api/v1/anonymize
10207
+ * @secure
10208
+ */
10209
+ anonymizeRecords = (data, params = {}) => this.http.request({
10210
+ path: `/api/v1/anonymize`,
10211
+ method: "POST",
10212
+ body: data,
10213
+ secure: true,
10214
+ type: "application/json" /* Json */,
10215
+ format: "json",
10216
+ ...params
10217
+ });
10218
+ };
10219
+
10220
+ // src/api-spec/generated/Speakers.ts
10221
+ var Speakers = class {
10222
+ http;
10223
+ constructor(http) {
10224
+ this.http = http;
10225
+ }
10226
+ /**
10227
+ * @description DELETE /api/v1/speakers/{id}
10228
+ *
10229
+ * @tags speakers
10230
+ * @name DeleteSpeaker
10231
+ * @summary Delete a speaker profile by id.
10232
+ * @request DELETE:/api/v1/speakers/{id}
10233
+ * @secure
10234
+ */
10235
+ deleteSpeaker = (id, params = {}) => this.http.request({
10236
+ path: `/api/v1/speakers/${id}`,
10237
+ method: "DELETE",
10238
+ secure: true,
10239
+ ...params
10240
+ });
10241
+ /**
10242
+ * @description POST /api/v1/speakers/enroll
10243
+ *
10244
+ * @tags speakers
10245
+ * @name EnrollSpeaker
10246
+ * @summary Enroll (or re-enroll) a speaker voiceprint.
10247
+ * @request POST:/api/v1/speakers/enroll
10248
+ * @secure
10249
+ */
10250
+ enrollSpeaker = (data, params = {}) => this.http.request({
10251
+ path: `/api/v1/speakers/enroll`,
10252
+ method: "POST",
10253
+ body: data,
10254
+ secure: true,
10255
+ type: "application/json" /* Json */,
10256
+ format: "json",
10257
+ ...params
10258
+ });
10259
+ /**
10260
+ * @description GET /api/v1/speakers
10261
+ *
10262
+ * @tags speakers
10263
+ * @name ListSpeakers
10264
+ * @summary List the tenant's enrolled speaker profiles (embeddings withheld).
10265
+ * @request GET:/api/v1/speakers
10266
+ * @secure
10267
+ */
10268
+ listSpeakers = (params = {}) => this.http.request({
10269
+ path: `/api/v1/speakers`,
10270
+ method: "GET",
10271
+ secure: true,
10272
+ format: "json",
10273
+ ...params
10274
+ });
10275
+ };
10276
+
10277
+ // src/api-spec/generated/Speech.ts
10278
+ var Speech = class {
10279
+ http;
10280
+ constructor(http) {
10281
+ this.http = http;
10282
+ }
10283
+ /**
10284
+ * @description DELETE /api/v1/speech/voices/{id}
10285
+ *
10286
+ * @tags speech
10287
+ * @name DeleteVoice
10288
+ * @summary Delete a cloned voice, upstream conditioning included.
10289
+ * @request DELETE:/api/v1/speech/voices/{id}
10290
+ * @secure
10291
+ */
10292
+ deleteVoice = (id, params = {}) => this.http.request({
10293
+ path: `/api/v1/speech/voices/${id}`,
10294
+ method: "DELETE",
10295
+ secure: true,
10296
+ ...params
10297
+ });
10298
+ /**
10299
+ * @description POST /api/v1/speech/voices
10300
+ *
10301
+ * @tags speech
10302
+ * @name EnrollVoice
10303
+ * @summary Enroll (or re-enroll) a cloned voice.
10304
+ * @request POST:/api/v1/speech/voices
10305
+ * @secure
10306
+ */
10307
+ enrollVoice = (data, params = {}) => this.http.request({
10308
+ path: `/api/v1/speech/voices`,
10309
+ method: "POST",
10310
+ body: data,
10311
+ secure: true,
10312
+ type: "application/json" /* Json */,
10313
+ format: "json",
10314
+ ...params
10315
+ });
10316
+ /**
10317
+ * @description GET /api/v1/speech/engines
10318
+ *
10319
+ * @tags speech
10320
+ * @name ListEngines
10321
+ * @summary Report per-engine availability.
10322
+ * @request GET:/api/v1/speech/engines
10323
+ * @secure
10324
+ */
10325
+ listEngines = (params = {}) => this.http.request({
10326
+ path: `/api/v1/speech/engines`,
10327
+ method: "GET",
10328
+ secure: true,
10329
+ format: "json",
10330
+ ...params
10331
+ });
10332
+ /**
10333
+ * @description GET /api/v1/speech/voices
10334
+ *
10335
+ * @tags speech
10336
+ * @name ListVoices
10337
+ * @summary List the tenant's cloned voices plus available presets.
10338
+ * @request GET:/api/v1/speech/voices
10339
+ * @secure
10340
+ */
10341
+ listVoices = (params = {}) => this.http.request({
10342
+ path: `/api/v1/speech/voices`,
10343
+ method: "GET",
10344
+ secure: true,
10345
+ format: "json",
10346
+ ...params
10347
+ });
10348
+ /**
10349
+ * @description POST /api/v1/speech/session
10350
+ *
10351
+ * @tags speech
10352
+ * @name OpenSpeechSession
10353
+ * @summary Open a speech-to-speech session.
10354
+ * @request POST:/api/v1/speech/session
10355
+ * @secure
10356
+ */
10357
+ openSpeechSession = (data, params = {}) => this.http.request({
10358
+ path: `/api/v1/speech/session`,
10359
+ method: "POST",
10360
+ body: data,
10361
+ secure: true,
10362
+ type: "application/json" /* Json */,
10363
+ format: "json",
10364
+ ...params
10365
+ });
10366
+ /**
10367
+ * @description POST /api/v1/speech/synthesize
10368
+ *
10369
+ * @tags speech
10370
+ * @name SynthesizeSpeech
10371
+ * @summary Synthesize speech.
10372
+ * @request POST:/api/v1/speech/synthesize
10373
+ * @secure
10374
+ */
10375
+ synthesizeSpeech = (data, params = {}) => this.http.request({
10376
+ path: `/api/v1/speech/synthesize`,
10377
+ method: "POST",
10378
+ body: data,
10379
+ secure: true,
10380
+ type: "application/json" /* Json */,
10381
+ ...params
10382
+ });
10383
+ /**
10384
+ * @description POST /api/v1/speech/transcribe
10385
+ *
10386
+ * @tags speech
10387
+ * @name TranscribeSpeech
10388
+ * @summary Transcribe a short utterance.
10389
+ * @request POST:/api/v1/speech/transcribe
10390
+ * @secure
10391
+ */
10392
+ transcribeSpeech = (data, params = {}) => this.http.request({
10393
+ path: `/api/v1/speech/transcribe`,
10394
+ method: "POST",
10395
+ body: data,
10396
+ secure: true,
10397
+ type: "application/json" /* Json */,
10398
+ format: "json",
10399
+ ...params
10400
+ });
10401
+ };
10402
+
10403
+ // src/api-spec/generated/Connectors.ts
10404
+ var Connectors = class {
10405
+ http;
10406
+ constructor(http) {
10407
+ this.http = http;
10408
+ }
10409
+ /**
10410
+ * @description POST /api/v1/connectors/manage
10411
+ *
10412
+ * @tags connectors
10413
+ * @name Add
10414
+ * @summary Add a connector instance to the tenant.
10415
+ * @request POST:/api/v1/connectors/manage
10416
+ * @secure
10417
+ */
10418
+ add = (data, params = {}) => this.http.request({
10419
+ path: `/api/v1/connectors/manage`,
10420
+ method: "POST",
10421
+ body: data,
10422
+ secure: true,
10423
+ type: "application/json" /* Json */,
10424
+ format: "json",
10425
+ ...params
10426
+ });
10427
+ /**
10428
+ * @description POST /api/v1/connectors/manage/{name}/disconnect
10429
+ *
10430
+ * @tags connectors
10431
+ * @name Disconnect
10432
+ * @summary Disconnect a connector (revoke tokens, set status=disconnected).
10433
+ * @request POST:/api/v1/connectors/manage/{name}/disconnect
10434
+ * @secure
10435
+ */
10436
+ disconnect = (name, params = {}) => this.http.request({
10437
+ path: `/api/v1/connectors/manage/${name}/disconnect`,
10438
+ method: "POST",
10439
+ secure: true,
10440
+ ...params
10441
+ });
10442
+ /**
10443
+ * @description GET /api/v1/connectors/manage
10444
+ *
10445
+ * @tags connectors
10446
+ * @name List
10447
+ * @summary List tenant's connectors.
10448
+ * @request GET:/api/v1/connectors/manage
10449
+ * @secure
10450
+ */
10451
+ list = (params = {}) => this.http.request({
10452
+ path: `/api/v1/connectors/manage`,
10453
+ method: "GET",
10454
+ secure: true,
10455
+ format: "json",
10456
+ ...params
10457
+ });
10458
+ /**
10459
+ * @description GET /api/v1/connector-types
10460
+ *
10461
+ * @tags connectors
10462
+ * @name ListTypes
10463
+ * @summary List available connector types (global catalog).
10464
+ * @request GET:/api/v1/connector-types
10465
+ */
10466
+ listTypes = (params = {}) => this.http.request({
10467
+ path: `/api/v1/connector-types`,
10468
+ method: "GET",
10469
+ format: "json",
10470
+ ...params
10471
+ });
10472
+ /**
10473
+ * @description GET /api/v1/connectors/manage/{name}/oauth/callback
10474
+ *
10475
+ * @tags connectors
10476
+ * @name OauthCallback
10477
+ * @summary OAuth callback — exchanges code for tokens, returns HTML that posts message to opener.
10478
+ * @request GET:/api/v1/connectors/manage/{name}/oauth/callback
10479
+ */
10480
+ oauthCallback = (name, query, params = {}) => this.http.request({
10481
+ path: `/api/v1/connectors/manage/${name}/oauth/callback`,
10482
+ method: "GET",
10483
+ query,
10484
+ ...params
10485
+ });
10486
+ /**
10487
+ * @description DELETE /api/v1/connectors/manage/{name}
10488
+ *
10489
+ * @tags connectors
10490
+ * @name Remove
10491
+ * @summary Remove a connector from the tenant (cascades: deletes tokens).
10492
+ * @request DELETE:/api/v1/connectors/manage/{name}
10493
+ * @secure
10494
+ */
10495
+ remove = (name, params = {}) => this.http.request({
10496
+ path: `/api/v1/connectors/manage/${name}`,
10497
+ method: "DELETE",
10498
+ secure: true,
10499
+ ...params
10500
+ });
10501
+ /**
10502
+ * @description POST /api/v1/connectors/manage/{name}/connect
10503
+ *
10504
+ * @tags connectors
10505
+ * @name StartOauth
10506
+ * @summary Start OAuth flow — returns auth URL for popup.
10507
+ * @request POST:/api/v1/connectors/manage/{name}/connect
10508
+ * @secure
10509
+ */
10510
+ startOauth = (name, params = {}) => this.http.request({
10511
+ path: `/api/v1/connectors/manage/${name}/connect`,
10512
+ method: "POST",
10513
+ secure: true,
10514
+ format: "json",
10515
+ ...params
10516
+ });
10517
+ };
10518
+
9639
10519
  // src/api-spec/generated/Documents.ts
9640
10520
  var Documents = class {
9641
10521
  http;
@@ -11101,6 +11981,15 @@ function RejectLearnedSimilarityResponseFromApiToFront(dto) {
11101
11981
  message: dto.message
11102
11982
  };
11103
11983
  }
11984
+ function SortIndexStatusResponseFromApiToFront(dto) {
11985
+ const out = {
11986
+ running: dto.running,
11987
+ totalSorts: dto.total_sorts
11988
+ };
11989
+ if (dto.last_error != null) out.lastError = dto.last_error;
11990
+ if (dto.last_indexed_count != null) out.lastIndexedCount = dto.last_indexed_count;
11991
+ return out;
11992
+ }
11104
11993
 
11105
11994
  // src/resources/sorts.ts
11106
11995
  var SortsClient = class {
@@ -11316,6 +12205,16 @@ var SortsClient = class {
11316
12205
  async indexSorts() {
11317
12206
  await this.sorts.indexSorts();
11318
12207
  }
12208
+ /**
12209
+ * Report the status of the background sort-indexing pass.
12210
+ *
12211
+ * @returns Whether a re-index is running, the most recent run's indexed
12212
+ * count and any error, plus the total data-sort denominator.
12213
+ */
12214
+ async sortIndexStatus() {
12215
+ const response = await this.sorts.sortIndexStatus();
12216
+ return SortIndexStatusResponseFromApiToFront(response.data);
12217
+ }
11319
12218
  /**
11320
12219
  * Update the review status of a sort.
11321
12220
  *
@@ -14667,6 +15566,25 @@ function FindSimilarRequestFromFrontToApi(model) {
14667
15566
  fail_on_unknown: model.failOnUnknown
14668
15567
  };
14669
15568
  }
15569
+ function ScoreTermsRequestFromFrontToApi(model) {
15570
+ return {
15571
+ ...QueryTermFromFrontToApi(model),
15572
+ fail_on_unknown: model.failOnUnknown,
15573
+ similarity_mode: model.similarityMode,
15574
+ term_ids: model.termIds
15575
+ };
15576
+ }
15577
+ function ScoredTermFromApiToFront(dto) {
15578
+ return {
15579
+ degree: dto.degree,
15580
+ termId: dto.term_id
15581
+ };
15582
+ }
15583
+ function ScoreTermsResponseFromApiToFront(dto) {
15584
+ return {
15585
+ scores: dto.scores.map(ScoredTermFromApiToFront)
15586
+ };
15587
+ }
14670
15588
  function SimilarityMatchFromApiToFront(dto) {
14671
15589
  return {
14672
15590
  confidencePercent: dto.confidence_percent,
@@ -14837,6 +15755,18 @@ var FuzzyClient = class {
14837
15755
  });
14838
15756
  return PredictEffectResponseFromApiToFront(response.data);
14839
15757
  }
15758
+ /**
15759
+ * Score a given set of candidate terms against a query ψ-term.
15760
+ *
15761
+ * @param request - The query ψ-term (`QueryTerm`) plus the candidate
15762
+ * `termIds` and optional scoring knobs.
15763
+ * @returns The candidates with their fuzzy-unification degrees, in
15764
+ * input order.
15765
+ */
15766
+ async scoreTerms(request) {
15767
+ const response = await this.api.scoreTerms(ScoreTermsRequestFromFrontToApi(request));
15768
+ return ScoreTermsResponseFromApiToFront(response.data);
15769
+ }
14840
15770
  };
14841
15771
 
14842
15772
  // src/normalizers/visualization.ts
@@ -18452,6 +19382,35 @@ function IngestRdfRequestFromFrontToApi(model) {
18452
19382
  parse_shacl: model.parseShacl
18453
19383
  };
18454
19384
  }
19385
+ function IngestKifRequestFromFrontToApi(model) {
19386
+ const dto = { content: model.content };
19387
+ if (model.goal !== void 0) dto.goal = model.goal;
19388
+ if (model.persist !== void 0) dto.persist = model.persist;
19389
+ if (model.query !== void 0) dto.query = model.query;
19390
+ return dto;
19391
+ }
19392
+ function IngestKifResponseFromApiToFront(dto) {
19393
+ const out = {
19394
+ capturedNonHorn: dto.captured_non_horn,
19395
+ constraintRules: dto.constraint_rules,
19396
+ disjunctiveRules: dto.disjunctive_rules,
19397
+ facts: dto.facts,
19398
+ forms: dto.forms,
19399
+ hornRules: dto.horn_rules,
19400
+ instantiatedRules: dto.instantiated_rules,
19401
+ nafRules: dto.naf_rules,
19402
+ residueByShape: dto.residue_by_shape,
19403
+ residueExamples: dto.residue_examples,
19404
+ rules: dto.rules,
19405
+ skolemized: dto.skolemized,
19406
+ sorts: dto.sorts,
19407
+ subclassEdges: dto.subclass_edges,
19408
+ success: dto.success,
19409
+ temporalDetached: dto.temporal_detached
19410
+ };
19411
+ if (dto.provable != null) out.provable = dto.provable;
19412
+ return out;
19413
+ }
18455
19414
  function TranslateRdfRequestFromFrontToApi(model) {
18456
19415
  return {
18457
19416
  content: model.content,
@@ -18898,6 +19857,21 @@ var IngestionClient = class {
18898
19857
  );
18899
19858
  return IngestRdfResponseFromApiToFront(response.data);
18900
19859
  }
19860
+ /**
19861
+ * Import SUO-KIF and, optionally, prove a ground goal against the
19862
+ * imported axioms.
19863
+ *
19864
+ * @param request - The SUO-KIF source, an optional `goal`/`query` to
19865
+ * prove, and a `persist` flag (import into the tenant substrate vs an
19866
+ * ephemeral request-scoped world).
19867
+ * @returns Import counts (forms, facts, rules, sorts, …) plus, when a
19868
+ * goal/query was supplied, a `provable` verdict and the non-firing
19869
+ * residue breakdown.
19870
+ */
19871
+ async ingestKif(request) {
19872
+ const response = await this.api.ingestKif(IngestKifRequestFromFrontToApi(request));
19873
+ return IngestKifResponseFromApiToFront(response.data);
19874
+ }
18901
19875
  /**
18902
19876
  * Translate RDF into the engine's term representation without writing
18903
19877
  * anything to the knowledge base.
@@ -21094,6 +22068,7 @@ function RegisterSourceResponseFromApiToFront(dto) {
21094
22068
  sourceId: dto.source_id,
21095
22069
  sourceType: dto.source_type,
21096
22070
  mode: dto.mode,
22071
+ supportedModes: dto.supported_modes,
21097
22072
  message: dto.message
21098
22073
  };
21099
22074
  }
@@ -21116,7 +22091,21 @@ function SourceDetailResponseFromApiToFront(dto) {
21116
22091
  sourceId: dto.source_id,
21117
22092
  sourceType: dto.source_type,
21118
22093
  available: dto.available,
21119
- mode: dto.mode
22094
+ mode: dto.mode,
22095
+ supportedModes: dto.supported_modes
22096
+ };
22097
+ }
22098
+ function SourceTypeDtoFromApiToFront(dto) {
22099
+ return {
22100
+ sourceType: dto.source_type,
22101
+ aliases: dto.aliases,
22102
+ available: dto.available,
22103
+ supportedModes: dto.supported_modes
22104
+ };
22105
+ }
22106
+ function ListSourceTypesResponseFromApiToFront(dto) {
22107
+ return {
22108
+ types: dto.types.map(SourceTypeDtoFromApiToFront)
21120
22109
  };
21121
22110
  }
21122
22111
  function DiscoverSchemaRequestFromFrontToApi(model) {
@@ -21233,17 +22222,21 @@ var SourcesClient = class {
21233
22222
  *
21234
22223
  * @param request - Source registration request. Set `mode` to declare the write-path
21235
22224
  * intent (`'transpile'` for live SQL views, `'ingest'` to materialize rows as
21236
- * Ψ-term facts); omit it to take the capability-grounded default (`transpile` for
21237
- * postgres, `ingest` otherwise).
22225
+ * Ψ-term facts); omit it to take the default, which is `'ingest'` for every
22226
+ * source type (#71).
21238
22227
  * @returns Registration result. `mode` always carries the **resolved** write-path
21239
- * mode, including when the default applied.
21240
- * @throws {ApiError} If registration fails, or with **422** if `mode` is not one of
21241
- * `transpile` / `ingest`.
22228
+ * mode, including when the default applied; `supportedModes` advertises which
22229
+ * modes this source's adapter can serve.
22230
+ * @throws {ApiError} If registration fails, with **422** if `mode` is not one of
22231
+ * `transpile` / `ingest`, or with **422** if `mode: 'transpile'` is requested
22232
+ * for a source whose adapter cannot execute transpiled SQL (a live view over it
22233
+ * could never be queried).
21242
22234
  *
21243
22235
  * @remarks
21244
22236
  * Registering with `mode: 'transpile'` makes {@link SourcesClient.ingest} refuse this
21245
22237
  * source with a **409** — materializing a transpiled source would create a second,
21246
- * divergent namespace over the same rows.
22238
+ * divergent namespace over the same rows. To learn which types accept `transpile`
22239
+ * before registering, call {@link SourcesClient.listSourceTypes}.
21247
22240
  *
21248
22241
  * @example
21249
22242
  * ```typescript
@@ -21255,12 +22248,44 @@ var SourcesClient = class {
21255
22248
  * mode: 'ingest',
21256
22249
  * });
21257
22250
  * console.log(result.mode); // 'ingest'
22251
+ * console.log(result.supportedModes); // ['ingest', 'transpile']
21258
22252
  * ```
21259
22253
  */
21260
22254
  async register(request) {
21261
22255
  const response = await this.api.registerSource(RegisterSourceRequestFromFrontToApi(request));
21262
22256
  return RegisterSourceResponseFromApiToFront(response.data);
21263
22257
  }
22258
+ /**
22259
+ * List the source types this build can register, with their mode capabilities.
22260
+ *
22261
+ * @returns Every registrable source type, its availability in this build, and the
22262
+ * write-path modes each would serve — before any source exists.
22263
+ * @throws {ApiError} If the request fails.
22264
+ *
22265
+ * @remarks
22266
+ * Sent to `GET /api/v1/sources/types`. The pre-registration half of #71's
22267
+ * mode-discovery surface: a client rendering a "new source" picker learns, at
22268
+ * type-selection time, which types registration would accept (`available` — a
22269
+ * type behind an uncompiled cargo feature is `false`) and which modes each
22270
+ * would serve (`supportedModes` — always `'ingest'`, plus `'transpile'` only
22271
+ * for the SQL engines). Static per build, so no tenant state is consulted.
22272
+ *
22273
+ * Drive a mode selector from `supportedModes` rather than a hard-coded list of
22274
+ * source types: the set is the adapter's declared capability, so it stays
22275
+ * correct as adapters gain the ability (MySQL and SQLite did in #70).
22276
+ *
22277
+ * @example
22278
+ * ```typescript
22279
+ * const { types } = await client.sources.listSourceTypes();
22280
+ * const postgres = types.find((t) => t.sourceType === 'postgres');
22281
+ * console.log(postgres?.supportedModes); // ['ingest', 'transpile']
22282
+ * console.log(postgres?.aliases); // ['postgresql']
22283
+ * ```
22284
+ */
22285
+ async listSourceTypes() {
22286
+ const response = await this.api.listSourceTypesCatalog();
22287
+ return ListSourceTypesResponseFromApiToFront(response.data);
22288
+ }
21264
22289
  /**
21265
22290
  * List all registered data sources.
21266
22291
  *
@@ -21462,6 +22487,66 @@ function SearchCommunitiesResponseFromApiToFront(dto) {
21462
22487
  stats: CommunitySearchStatsDtoFromApiToFront(dto.stats)
21463
22488
  };
21464
22489
  }
22490
+ function NodeScoreFromApiToFront(dto) {
22491
+ return {
22492
+ nodeId: dto.node_id,
22493
+ score: dto.score
22494
+ };
22495
+ }
22496
+ function CentralityRequestFromFrontToApi(model) {
22497
+ const dto = {
22498
+ measure: model.measure,
22499
+ tenant_id: model.tenantId
22500
+ };
22501
+ if (model.topK !== void 0) dto.top_k = model.topK;
22502
+ return dto;
22503
+ }
22504
+ function CentralityResponseFromApiToFront(dto) {
22505
+ return {
22506
+ edgeCount: dto.edge_count,
22507
+ measure: dto.measure,
22508
+ nodeCount: dto.node_count,
22509
+ scores: dto.scores.map(NodeScoreFromApiToFront)
22510
+ };
22511
+ }
22512
+ function CohesionRequestFromFrontToApi(model) {
22513
+ return { tenant_id: model.tenantId };
22514
+ }
22515
+ function CohesionResponseFromApiToFront(dto) {
22516
+ return {
22517
+ clustering: dto.clustering.map(NodeScoreFromApiToFront),
22518
+ nodeCount: dto.node_count,
22519
+ triangleCount: dto.triangle_count
22520
+ };
22521
+ }
22522
+ function PathRequestFromFrontToApi(model) {
22523
+ return {
22524
+ source: model.source,
22525
+ target: model.target,
22526
+ tenant_id: model.tenantId
22527
+ };
22528
+ }
22529
+ function PathResponseFromApiToFront(dto) {
22530
+ const out = { componentCount: dto.component_count };
22531
+ if (dto.path !== void 0 && dto.path !== null) out.path = dto.path;
22532
+ return out;
22533
+ }
22534
+ function LinkPredictionRequestFromFrontToApi(model) {
22535
+ const dto = {
22536
+ measure: model.measure,
22537
+ source: model.source,
22538
+ tenant_id: model.tenantId
22539
+ };
22540
+ if (model.topK !== void 0) dto.top_k = model.topK;
22541
+ return dto;
22542
+ }
22543
+ function LinkPredictionResponseFromApiToFront(dto) {
22544
+ return {
22545
+ measure: dto.measure,
22546
+ predictions: dto.predictions.map(NodeScoreFromApiToFront),
22547
+ source: dto.source
22548
+ };
22549
+ }
21465
22550
 
21466
22551
  // src/resources/communities.ts
21467
22552
  var CommunitiesClient = class {
@@ -21501,6 +22586,48 @@ var CommunitiesClient = class {
21501
22586
  const response = await this.api.searchCommunities(SearchCommunitiesRequestFromFrontToApi(request));
21502
22587
  return SearchCommunitiesResponseFromApiToFront(response.data);
21503
22588
  }
22589
+ /**
22590
+ * Compute a centrality measure over the tenant's term graph.
22591
+ *
22592
+ * @param request - The measure, tenant id, and an optional `topK` cap.
22593
+ * @returns Node scores sorted descending, plus graph node/edge counts.
22594
+ */
22595
+ async computeCentrality(request) {
22596
+ const response = await this.api.computeCentrality(CentralityRequestFromFrontToApi(request));
22597
+ return CentralityResponseFromApiToFront(response.data);
22598
+ }
22599
+ /**
22600
+ * Compute graph cohesion (local clustering coefficients + triangle count).
22601
+ *
22602
+ * @param request - The tenant id.
22603
+ * @returns Per-node clustering coefficients, node count, and triangle count.
22604
+ */
22605
+ async computeCohesion(request) {
22606
+ const response = await this.api.computeCohesion(CohesionRequestFromFrontToApi(request));
22607
+ return CohesionResponseFromApiToFront(response.data);
22608
+ }
22609
+ /**
22610
+ * Find the shortest path between two nodes in the tenant's term graph.
22611
+ *
22612
+ * @param request - Source node, target node, and tenant id.
22613
+ * @returns The shortest path as a node sequence (when reachable) plus the
22614
+ * connected-component count.
22615
+ */
22616
+ async computePath(request) {
22617
+ const response = await this.api.computePath(PathRequestFromFrontToApi(request));
22618
+ return PathResponseFromApiToFront(response.data);
22619
+ }
22620
+ /**
22621
+ * Predict candidate links from a source node using a graph heuristic.
22622
+ *
22623
+ * @param request - The heuristic, source node, tenant id, and an optional
22624
+ * `topK` cap.
22625
+ * @returns Candidate targets with positive score, sorted descending.
22626
+ */
22627
+ async predictLinks(request) {
22628
+ const response = await this.api.predictLinks(LinkPredictionRequestFromFrontToApi(request));
22629
+ return LinkPredictionResponseFromApiToFront(response.data);
22630
+ }
21504
22631
  };
21505
22632
 
21506
22633
  // src/normalizers/utilities.ts
@@ -22333,6 +23460,33 @@ function PredictFromDiscoveryResponseFromApiToFront(dto) {
22333
23460
  success: dto.success
22334
23461
  };
22335
23462
  }
23463
+ function EmlSampleFromFrontToApi(model) {
23464
+ return {
23465
+ inputs: model.inputs,
23466
+ target: model.target
23467
+ };
23468
+ }
23469
+ function DiscoverEmlRequestFromFrontToApi(model) {
23470
+ const dto = {
23471
+ depth: model.depth,
23472
+ samples: model.samples.map(EmlSampleFromFrontToApi)
23473
+ };
23474
+ if (model.maxEpochs !== void 0) dto.max_epochs = model.maxEpochs;
23475
+ if (model.numRestarts !== void 0) dto.num_restarts = model.numRestarts;
23476
+ return dto;
23477
+ }
23478
+ function DiscoverEmlResponseFromApiToFront(dto) {
23479
+ const out = {
23480
+ epochsRun: dto.epochs_run,
23481
+ finalLoss: dto.final_loss,
23482
+ snapped: dto.snapped,
23483
+ success: dto.success
23484
+ };
23485
+ if (dto.expression_depth != null) out.expressionDepth = dto.expression_depth;
23486
+ if (dto.expression_leaf_count != null) out.expressionLeafCount = dto.expression_leaf_count;
23487
+ if (dto.expression_rpn != null) out.expressionRpn = dto.expression_rpn;
23488
+ return out;
23489
+ }
22336
23490
 
22337
23491
  // src/resources/discovery.ts
22338
23492
  var DiscoveryClient = class {
@@ -22362,6 +23516,19 @@ var DiscoveryClient = class {
22362
23516
  const response = await this.api.predictFromDiscovery(PredictFromDiscoveryRequestFromFrontToApi(request));
22363
23517
  return PredictFromDiscoveryResponseFromApiToFront(response.data);
22364
23518
  }
23519
+ /**
23520
+ * Discover a closed-form expression from samples via parameterised EML.
23521
+ *
23522
+ * @param request - Tree-depth bound, training samples, and optional
23523
+ * epoch/restart caps.
23524
+ * @returns The discovered expression (RPN + depth/leaf-count when
23525
+ * recovered) plus the training stats (epochs, final loss, snap +
23526
+ * success flags).
23527
+ */
23528
+ async discoverEml(request) {
23529
+ const response = await this.api.discoverEml(DiscoverEmlRequestFromFrontToApi(request));
23530
+ return DiscoverEmlResponseFromApiToFront(response.data);
23531
+ }
22365
23532
  };
22366
23533
 
22367
23534
  // src/normalizers/extract.ts
@@ -25599,6 +26766,56 @@ function GenerateDocumentResponseFromApiToFront(dto) {
25599
26766
  verification: dto.verification ? VerificationDtoFromApiToFront(dto.verification) : void 0
25600
26767
  };
25601
26768
  }
26769
+ function ConstrainedGenerateRequestFromFrontToApi(model) {
26770
+ const dto = {
26771
+ allowed: model.allowed,
26772
+ prompt: model.prompt
26773
+ };
26774
+ if (model.maxTokens !== void 0) dto.max_tokens = model.maxTokens;
26775
+ return dto;
26776
+ }
26777
+ function ConstrainedGenerateResponseFromApiToFront(dto) {
26778
+ return {
26779
+ allowed: dto.allowed,
26780
+ answer: dto.answer,
26781
+ maskedOut: dto.masked_out,
26782
+ tokens: dto.tokens
26783
+ };
26784
+ }
26785
+ function RawGenerateRequestFromFrontToApi(model) {
26786
+ const dto = { prompt: model.prompt };
26787
+ if (model.maxTokens !== void 0) dto.max_tokens = model.maxTokens;
26788
+ return dto;
26789
+ }
26790
+ function RawGenerateResponseFromApiToFront(dto) {
26791
+ return { prose: dto.prose };
26792
+ }
26793
+ function GroundedGenerateRequestFromFrontToApi(model) {
26794
+ const dto = { prompt: model.prompt };
26795
+ if (model.goalDest !== void 0) dto.goal_dest = model.goalDest;
26796
+ if (model.goalDistance !== void 0) dto.goal_distance = model.goalDistance;
26797
+ if (model.goalFeasible !== void 0) dto.goal_feasible = model.goalFeasible;
26798
+ if (model.goalTarget !== void 0) dto.goal_target = model.goalTarget;
26799
+ if (model.maxTokens !== void 0) dto.max_tokens = model.maxTokens;
26800
+ if (model.mode !== void 0) dto.mode = model.mode;
26801
+ if (model.prose !== void 0) dto.prose = model.prose;
26802
+ if (model.steerMargin !== void 0) dto.steer_margin = model.steerMargin;
26803
+ return dto;
26804
+ }
26805
+ function GroundedGenerateResponseFromApiToFront(dto) {
26806
+ const out = {
26807
+ admittedTerms: dto.admitted_terms,
26808
+ derivation: dto.derivation,
26809
+ feasibleModes: dto.feasible_modes,
26810
+ mode: dto.mode,
26811
+ prose: dto.prose,
26812
+ refutedModes: dto.refuted_modes
26813
+ };
26814
+ if (dto.certify_outcome != null) out.certifyOutcome = dto.certify_outcome;
26815
+ if (dto.model_pick != null) out.modelPick = dto.model_pick;
26816
+ if (dto.recommended_mode != null) out.recommendedMode = dto.recommended_mode;
26817
+ return out;
26818
+ }
25602
26819
 
25603
26820
  // src/resources/generation.ts
25604
26821
  var GenerationClient = class {
@@ -25641,6 +26858,46 @@ var GenerationClient = class {
25641
26858
  const response = await this.api.generateDocument(GenerateDocumentRequestFromFrontToApi(request));
25642
26859
  return GenerateDocumentResponseFromApiToFront(response.data);
25643
26860
  }
26861
+ /**
26862
+ * Masked-decode one answer from an OSF-feasible allowed set
26863
+ * (`POST /api/v1/constrained/generate`).
26864
+ *
26865
+ * @param request - The allowed set, an optional token cap, and the prompt.
26866
+ * @returns The decoded answer (guaranteed inside `allowed`), the masked-out
26867
+ * alternatives, and the per-step token deltas.
26868
+ */
26869
+ async constrainedGenerate(request) {
26870
+ const response = await this.api.constrainedGenerate(
26871
+ ConstrainedGenerateRequestFromFrontToApi(request)
26872
+ );
26873
+ return ConstrainedGenerateResponseFromApiToFront(response.data);
26874
+ }
26875
+ /**
26876
+ * Free, ungrounded local-model decode (`POST /api/v1/generate/raw`).
26877
+ *
26878
+ * @param request - The prompt and an optional token cap.
26879
+ * @returns The raw, ungrounded answer.
26880
+ */
26881
+ async rawGenerate(request) {
26882
+ const response = await this.api.rawGenerate(RawGenerateRequestFromFrontToApi(request));
26883
+ return RawGenerateResponseFromApiToFront(response.data);
26884
+ }
26885
+ /**
26886
+ * Lattice-grounded anti-hallucination generation
26887
+ * (`POST /api/v1/generate/grounded`).
26888
+ *
26889
+ * @param request - The prompt, an optional goal (target/destination) for
26890
+ * feasibility, the anti-hallucination `mode`, and decode knobs.
26891
+ * @returns The lattice-constrained derivation, the free-prose answer, the
26892
+ * feasible/refuted/recommended motion modes, and (certify mode) the
26893
+ * certification outcome.
26894
+ */
26895
+ async groundedGenerate(request) {
26896
+ const response = await this.api.groundedGenerate(
26897
+ GroundedGenerateRequestFromFrontToApi(request)
26898
+ );
26899
+ return GroundedGenerateResponseFromApiToFront(response.data);
26900
+ }
25644
26901
  };
25645
26902
 
25646
26903
  // src/normalizers/rag.ts
@@ -27161,6 +28418,13 @@ function ListConversationsResponseFromApiToFront(dto) {
27161
28418
  conversations: dto.conversations.map(ConversationSummaryDtoFromApiToFront)
27162
28419
  };
27163
28420
  }
28421
+ function CompareModelDtoFromApiToFront(dto) {
28422
+ return {
28423
+ id: dto.id,
28424
+ kind: dto.kind,
28425
+ label: dto.label
28426
+ };
28427
+ }
27164
28428
  function ConversationTurnsResponseFromApiToFront(dto) {
27165
28429
  return {
27166
28430
  conversationId: dto.conversation_id,
@@ -27269,6 +28533,30 @@ var ConversationClient = class {
27269
28533
  });
27270
28534
  return ListConversationsResponseFromApiToFront(response.data);
27271
28535
  }
28536
+ /**
28537
+ * List the registered comparison models so the UI can populate a
28538
+ * selector / compare panel.
28539
+ *
28540
+ * @returns The available comparison models (endpoint- or candle-backed).
28541
+ * @throws {ApiError} If the request fails.
28542
+ *
28543
+ * @example
28544
+ * ```typescript
28545
+ * const models = await client.conversation.listModels();
28546
+ * for (const m of models) {
28547
+ * console.log(`${m.id} (${m.kind}): ${m.label}`);
28548
+ * }
28549
+ * ```
28550
+ */
28551
+ async listModels() {
28552
+ const response = await this.http.request({
28553
+ path: "/api/v1/conversation/models",
28554
+ method: "GET",
28555
+ secure: true,
28556
+ format: "json"
28557
+ });
28558
+ return (response.data ?? []).map(CompareModelDtoFromApiToFront);
28559
+ }
27272
28560
  /**
27273
28561
  * Get all turns for a conversation.
27274
28562
  *
@@ -28788,6 +30076,14 @@ function AuditRecordFromApiToFront(dto) {
28788
30076
  extra: dto.extra
28789
30077
  };
28790
30078
  }
30079
+ function AuditPageFromApiToFront(dto) {
30080
+ return {
30081
+ records: dto.records.map(AuditRecordFromApiToFront),
30082
+ total: dto.total,
30083
+ limit: dto.limit ?? null,
30084
+ offset: dto.offset
30085
+ };
30086
+ }
28791
30087
  function SummaryResponseFromApiToFront(dto) {
28792
30088
  const out = {
28793
30089
  nRecords: dto.n_records,
@@ -28877,18 +30173,39 @@ var ComplianceClient = class {
28877
30173
  return AuditRecordFromApiToFront(response.data);
28878
30174
  }
28879
30175
  /**
28880
- * List audit records for this tenant, optionally filtered.
30176
+ * List audit records for this tenant — paged, sorted, and filtered.
30177
+ *
30178
+ * @param options - Page / sort / filter controls. Defaults to a
30179
+ * bounded first page (`sort_by=timestamp`, `sort_order=desc`,
30180
+ * `limit=50`) — most-recent-first, matching the backend default.
30181
+ * Pass `all: true` to fetch the full filtered set for export.
30182
+ * @returns A page of records plus the filtered `total`, the `limit`
30183
+ * applied (`null` when `all` was set), and the zero-based `offset`.
28881
30184
  *
28882
- * @param options - Limit / glob filter on `requestPath`.
30185
+ * @remarks
30186
+ * The backend clamps `limit` to `1..=200` and defaults it to `50`
30187
+ * when omitted (unless `all` is set). `total` reflects the active
30188
+ * `requestPathPattern` / `since` / `until` filter, not the raw
30189
+ * tenant count — so `{shown} of {total}` and the rendered rows stay
30190
+ * consistent under the same filter. Sort enums are wire-serialised
30191
+ * `snake_case` (`timestamp` / `request_path` / `actor`) and `asc` /
30192
+ * `desc` lowercase; the shipped {@link AuditSortField} /
30193
+ * {@link AuditSortOrder} literals match verbatim.
28883
30194
  */
28884
30195
  async list(options = {}) {
28885
30196
  const query = {};
28886
- if (options.limit !== void 0) query.limit = options.limit;
28887
30197
  if (options.requestPathPattern !== void 0) {
28888
30198
  query.request_path_pattern = options.requestPathPattern;
28889
30199
  }
30200
+ if (options.since !== void 0) query.since = options.since;
30201
+ if (options.until !== void 0) query.until = options.until;
30202
+ if (options.sortBy !== void 0) query.sort_by = options.sortBy;
30203
+ if (options.sortOrder !== void 0) query.sort_order = options.sortOrder;
30204
+ if (options.limit !== void 0) query.limit = options.limit;
30205
+ if (options.offset !== void 0) query.offset = options.offset;
30206
+ if (options.all !== void 0) query.all = options.all;
28890
30207
  const response = await this.api.list(query);
28891
- return response.data.map(AuditRecordFromApiToFront);
30208
+ return AuditPageFromApiToFront(response.data);
28892
30209
  }
28893
30210
  /**
28894
30211
  * Top-line counts over the tenant's full ledger — useful for
@@ -28968,6 +30285,19 @@ function AntiUnifyResponseFromApiToFront(dto) {
28968
30285
  computationTimeMs: dto.computation_time_ms
28969
30286
  };
28970
30287
  }
30288
+ function AntiUnifyBatchRequestFromFrontToApi(model) {
30289
+ return {
30290
+ term_ids: model.termIds
30291
+ };
30292
+ }
30293
+ function AntiUnifyBatchResponseFromApiToFront(dto) {
30294
+ return {
30295
+ computationTimeMs: dto.computation_time_ms,
30296
+ lgg: TermDtoFromApiToFront(dto.lgg),
30297
+ lggTermId: dto.lgg_term_id,
30298
+ steps: dto.steps
30299
+ };
30300
+ }
28971
30301
 
28972
30302
  // src/resources/operations.ts
28973
30303
  var OperationsClient = class {
@@ -28996,6 +30326,25 @@ var OperationsClient = class {
28996
30326
  );
28997
30327
  return AntiUnifyResponseFromApiToFront(response.data);
28998
30328
  }
30329
+ /**
30330
+ * Compute the anti-unification (LGG) of a batch of Ψ-terms via a left
30331
+ * fold over 2..=64 term ids.
30332
+ *
30333
+ * @param request - The term ids to generalise, in fold order.
30334
+ * @returns The final LGG term + enriched view + the intermediate LGG
30335
+ * ids from the fold + total timing.
30336
+ *
30337
+ * @remarks
30338
+ * All ids must already be registered in the tenant's term store. The
30339
+ * final LGG is persisted; `steps` is empty when exactly two terms are
30340
+ * supplied.
30341
+ */
30342
+ async antiUnifyBatch(request) {
30343
+ const response = await this.api.antiUnifyBatch(
30344
+ AntiUnifyBatchRequestFromFrontToApi(request)
30345
+ );
30346
+ return AntiUnifyBatchResponseFromApiToFront(response.data);
30347
+ }
28999
30348
  };
29000
30349
 
29001
30350
  // src/normalizers/actions.ts
@@ -34245,6 +35594,1016 @@ var OntologyExportClient = class {
34245
35594
  }
34246
35595
  };
34247
35596
 
35597
+ // src/normalizers/demo.ts
35598
+ function DemoSeedRequestFromFrontToApi(model) {
35599
+ const dto = {};
35600
+ if (model.sumoDir !== void 0) dto.sumo_dir = model.sumoDir;
35601
+ return dto;
35602
+ }
35603
+ function DemoSeedResponseFromApiToFront(dto) {
35604
+ return {
35605
+ forms: dto.forms,
35606
+ sorts: dto.sorts
35607
+ };
35608
+ }
35609
+
35610
+ // src/resources/demo.ts
35611
+ var DemoClient = class {
35612
+ /** @internal */
35613
+ api;
35614
+ /** @internal */
35615
+ constructor(api) {
35616
+ this.api = api;
35617
+ }
35618
+ /**
35619
+ * Seed the request tenant's persistent substrate with full SUMO + the
35620
+ * demo scenario situations.
35621
+ *
35622
+ * @param request - Optional SUMO source-directory override.
35623
+ * @returns The imported form count and the tenant's total sort count.
35624
+ *
35625
+ * @throws {ApiError} `404` if the SUMO files cannot be read, `400` if
35626
+ * the assembled source fails to import.
35627
+ */
35628
+ async seed(request = {}) {
35629
+ const response = await this.api.demoSeed(DemoSeedRequestFromFrontToApi(request));
35630
+ return DemoSeedResponseFromApiToFront(response.data);
35631
+ }
35632
+ };
35633
+
35634
+ // src/normalizers/reward.ts
35635
+ function RewardScoreRequestFromFrontToApi(model) {
35636
+ const dto = { sort: model.sort };
35637
+ if (model.constraints !== void 0) dto.constraints = model.constraints;
35638
+ if (model.maxInstances !== void 0) dto.max_instances = model.maxInstances;
35639
+ if (model.negativeIds !== void 0) dto.negative_ids = model.negativeIds;
35640
+ if (model.objective !== void 0) dto.objective = model.objective;
35641
+ if (model.positiveIds !== void 0) dto.positive_ids = model.positiveIds;
35642
+ if (model.targetSort !== void 0) dto.target_sort = model.targetSort;
35643
+ return dto;
35644
+ }
35645
+ function RewardScoreResponseFromApiToFront(dto) {
35646
+ const out = {
35647
+ certifiedNonEmpty: dto.certified_non_empty,
35648
+ estimatedExtent: dto.estimated_extent,
35649
+ reward: dto.reward
35650
+ };
35651
+ if (dto.covers_negative != null) out.coversNegative = dto.covers_negative;
35652
+ if (dto.covers_positive != null) out.coversPositive = dto.covers_positive;
35653
+ if (dto.precision != null) out.precision = dto.precision;
35654
+ if (dto.recall != null) out.recall = dto.recall;
35655
+ return out;
35656
+ }
35657
+
35658
+ // src/resources/reward.ts
35659
+ var RewardClient = class {
35660
+ /** @internal */
35661
+ api;
35662
+ /** @internal */
35663
+ constructor(api) {
35664
+ this.api = api;
35665
+ }
35666
+ /**
35667
+ * Score a candidate query execution-free for the authenticated tenant.
35668
+ *
35669
+ * @param request - The query spec (sort, objective, optional
35670
+ * constraints / instance ids).
35671
+ * @returns A sound reward signal plus the certificate and coverage
35672
+ * breakdown.
35673
+ *
35674
+ * @throws {ApiError} `404` if the sort name is unknown to the lattice.
35675
+ */
35676
+ async score(request) {
35677
+ const response = await this.api.score(RewardScoreRequestFromFrontToApi(request));
35678
+ return RewardScoreResponseFromApiToFront(response.data);
35679
+ }
35680
+ };
35681
+
35682
+ // src/normalizers/translation.ts
35683
+ function TranslateRequestFromFrontToApi(model) {
35684
+ const dto = {
35685
+ target_lang: model.targetLang,
35686
+ text: model.text
35687
+ };
35688
+ if (model.sourceLang !== void 0) dto.source_lang = model.sourceLang;
35689
+ return dto;
35690
+ }
35691
+ function TranslateResponseFromApiToFront(dto) {
35692
+ const out = {
35693
+ targetLang: dto.target_lang,
35694
+ translatedText: dto.translated_text
35695
+ };
35696
+ if (dto.model !== void 0) out.model = dto.model;
35697
+ return out;
35698
+ }
35699
+
35700
+ // src/resources/translation.ts
35701
+ var TranslationClient = class {
35702
+ /** @internal */
35703
+ api;
35704
+ /** @internal */
35705
+ constructor(api) {
35706
+ this.api = api;
35707
+ }
35708
+ /**
35709
+ * Translate text into a target language.
35710
+ *
35711
+ * @param request - Source text, target language, and an optional
35712
+ * source-language hint.
35713
+ * @returns The translated text plus the echoed target language and
35714
+ * the model label, when known.
35715
+ */
35716
+ async translate(request) {
35717
+ const response = await this.api.translate(TranslateRequestFromFrontToApi(request));
35718
+ return TranslateResponseFromApiToFront(response.data);
35719
+ }
35720
+ };
35721
+
35722
+ // src/normalizers/streaming.ts
35723
+ function SketchDimensionsFromFrontToApi(model) {
35724
+ const dto = {};
35725
+ if (model.delta !== void 0) dto.delta = model.delta;
35726
+ if (model.depth !== void 0) dto.depth = model.depth;
35727
+ if (model.epsilon !== void 0) dto.epsilon = model.epsilon;
35728
+ if (model.width !== void 0) dto.width = model.width;
35729
+ return dto;
35730
+ }
35731
+ function FrequencyEstimateFromApiToFront(dto) {
35732
+ return {
35733
+ estimatedCount: dto.estimated_count,
35734
+ key: dto.key
35735
+ };
35736
+ }
35737
+ function FrequencyRequestFromFrontToApi(model) {
35738
+ return {
35739
+ dimensions: SketchDimensionsFromFrontToApi(model.dimensions),
35740
+ items: model.items,
35741
+ query_keys: model.queryKeys
35742
+ };
35743
+ }
35744
+ function FrequencyResponseFromApiToFront(dto) {
35745
+ return {
35746
+ depth: dto.depth,
35747
+ estimates: dto.estimates.map(FrequencyEstimateFromApiToFront),
35748
+ width: dto.width
35749
+ };
35750
+ }
35751
+ function HeavyHitterItemFromApiToFront(dto) {
35752
+ return {
35753
+ count: dto.count,
35754
+ item: dto.item
35755
+ };
35756
+ }
35757
+ function HeavyHittersRequestFromFrontToApi(model) {
35758
+ return {
35759
+ capacity: model.capacity,
35760
+ items: model.items
35761
+ };
35762
+ }
35763
+ function HeavyHittersResponseFromApiToFront(dto) {
35764
+ return {
35765
+ capacity: dto.capacity,
35766
+ heavyHitters: dto.heavy_hitters.map(HeavyHitterItemFromApiToFront),
35767
+ maxUndercount: dto.max_undercount,
35768
+ total: dto.total
35769
+ };
35770
+ }
35771
+ function BloomFilterStatsFromApiToFront(dto) {
35772
+ return {
35773
+ bitCount: dto.bit_count,
35774
+ estimatedLoad: dto.estimated_load,
35775
+ hashCount: dto.hash_count,
35776
+ insertions: dto.insertions,
35777
+ setBits: dto.set_bits
35778
+ };
35779
+ }
35780
+ function MembershipRequestFromFrontToApi(model) {
35781
+ return {
35782
+ bit_count: model.bitCount,
35783
+ hash_count: model.hashCount,
35784
+ insert_items: model.insertItems,
35785
+ test_items: model.testItems
35786
+ };
35787
+ }
35788
+ function MembershipResultFromApiToFront(dto) {
35789
+ return {
35790
+ item: dto.item,
35791
+ member: dto.member
35792
+ };
35793
+ }
35794
+ function MembershipResponseFromApiToFront(dto) {
35795
+ return {
35796
+ filterStats: BloomFilterStatsFromApiToFront(dto.filter_stats),
35797
+ membership: dto.membership.map(MembershipResultFromApiToFront)
35798
+ };
35799
+ }
35800
+
35801
+ // src/resources/streaming.ts
35802
+ var StreamingClient = class {
35803
+ /** @internal */
35804
+ api;
35805
+ /** @internal */
35806
+ constructor(api) {
35807
+ this.api = api;
35808
+ }
35809
+ /**
35810
+ * Estimate the frequency of each query key via a Count-Min sketch.
35811
+ *
35812
+ * @param request - The sketch dimensions, the stream `items`, and the
35813
+ * `queryKeys` to estimate.
35814
+ * @returns The sketch dimensions actually used and one estimate per
35815
+ * query key, in request order.
35816
+ *
35817
+ * @throws {ApiError} `400` if `items`/`queryKeys` exceed their limits
35818
+ * or the sketch dimensions are invalid.
35819
+ */
35820
+ async frequency(request) {
35821
+ const response = await this.api.frequency(FrequencyRequestFromFrontToApi(request));
35822
+ return FrequencyResponseFromApiToFront(response.data);
35823
+ }
35824
+ /**
35825
+ * Find candidate heavy hitters via a Misra-Gries sketch.
35826
+ *
35827
+ * @param request - The counter `capacity` and the stream `items`.
35828
+ * @returns Candidate heavy hitters sorted by count descending, plus
35829
+ * the worst-case under-count bound.
35830
+ *
35831
+ * @throws {ApiError} `400` if `capacity < 1` or `items` exceeds the limit.
35832
+ */
35833
+ async heavyHitters(request) {
35834
+ const response = await this.api.heavyHitters(HeavyHittersRequestFromFrontToApi(request));
35835
+ return HeavyHittersResponseFromApiToFront(response.data);
35836
+ }
35837
+ /**
35838
+ * Test membership of items in a Bloom filter built from `insertItems`.
35839
+ *
35840
+ * @param request - The `bitCount`, `hashCount`, `insertItems`, and
35841
+ * `testItems`.
35842
+ * @returns Filter load statistics and one membership verdict per test
35843
+ * item, in request order. Zero false negatives.
35844
+ *
35845
+ * @throws {ApiError} `400` if `bitCount`/`hashCount < 1` or the item
35846
+ * arrays exceed their limits.
35847
+ */
35848
+ async membership(request) {
35849
+ const response = await this.api.membership(MembershipRequestFromFrontToApi(request));
35850
+ return MembershipResponseFromApiToFront(response.data);
35851
+ }
35852
+ };
35853
+
35854
+ // src/normalizers/conformal.ts
35855
+ function CalibrationSampleFromFrontToApi(model) {
35856
+ return {
35857
+ class_scores: model.classScores,
35858
+ input_id: model.inputId,
35859
+ true_label: model.trueLabel
35860
+ };
35861
+ }
35862
+ function TestInputFromFrontToApi(model) {
35863
+ return {
35864
+ class_scores: model.classScores,
35865
+ input_id: model.inputId
35866
+ };
35867
+ }
35868
+ function ConformalCalibrateRequestFromFrontToApi(model) {
35869
+ return {
35870
+ alpha: model.alpha,
35871
+ samples: model.samples.map(CalibrationSampleFromFrontToApi)
35872
+ };
35873
+ }
35874
+ function ConformalCalibrateResponseFromApiToFront(dto) {
35875
+ return {
35876
+ algorithm: dto.algorithm,
35877
+ alpha: dto.alpha,
35878
+ empiricalCoverage: dto.empirical_coverage,
35879
+ meetsTargetCoverage: dto.meets_target_coverage,
35880
+ nSamples: dto.n_samples,
35881
+ quantileRank: dto.quantile_rank,
35882
+ threshold: dto.threshold
35883
+ };
35884
+ }
35885
+ function ConformalPredictRequestFromFrontToApi(model) {
35886
+ return {
35887
+ alpha: model.alpha,
35888
+ n_calibration_samples: model.nCalibrationSamples,
35889
+ test_inputs: model.testInputs.map(TestInputFromFrontToApi),
35890
+ threshold: model.threshold
35891
+ };
35892
+ }
35893
+ function CoverageCertificateFromApiToFront(dto) {
35894
+ return {
35895
+ algorithm: dto.algorithm,
35896
+ alpha: dto.alpha,
35897
+ nCalibrationSamples: dto.n_calibration_samples,
35898
+ nominalCoverage: dto.nominal_coverage,
35899
+ threshold: dto.threshold
35900
+ };
35901
+ }
35902
+ function ConformalPredictionFromApiToFront(dto) {
35903
+ return {
35904
+ abstains: dto.abstains,
35905
+ inputId: dto.input_id,
35906
+ predictionSet: dto.prediction_set,
35907
+ topClass: dto.top_class,
35908
+ topClassNonConformity: dto.top_class_non_conformity
35909
+ };
35910
+ }
35911
+ function ConformalPredictResponseFromApiToFront(dto) {
35912
+ return {
35913
+ coverageCertificate: CoverageCertificateFromApiToFront(dto.coverage_certificate),
35914
+ predictions: dto.predictions.map(ConformalPredictionFromApiToFront)
35915
+ };
35916
+ }
35917
+
35918
+ // src/resources/conformal.ts
35919
+ var ConformalClient = class {
35920
+ /** @internal */
35921
+ api;
35922
+ /** @internal */
35923
+ constructor(api) {
35924
+ this.api = api;
35925
+ }
35926
+ /**
35927
+ * Compute a split-conformal non-conformity threshold from a labeled
35928
+ * calibration set.
35929
+ *
35930
+ * @param request - The calibration set (samples + target miscoverage
35931
+ * `α`).
35932
+ * @returns The computed threshold `τ` plus a coverage certificate and
35933
+ * sanity-check coverage stats.
35934
+ *
35935
+ * @throws {ApiError} `400` if `alpha` is outside `(0, 1)` or the
35936
+ * calibration set is empty.
35937
+ */
35938
+ async calibrate(request) {
35939
+ const response = await this.api.calibrate(ConformalCalibrateRequestFromFrontToApi(request));
35940
+ return ConformalCalibrateResponseFromApiToFront(response.data);
35941
+ }
35942
+ /**
35943
+ * Apply a pre-computed conformal threshold to unlabeled test inputs
35944
+ * and return prediction sets with coverage certificates.
35945
+ *
35946
+ * @param request - The threshold `τ`, calibration `α` and sample count
35947
+ * (from a prior `calibrate` call), and the test inputs to predict
35948
+ * for.
35949
+ * @returns Per-input conformal prediction results plus a coverage
35950
+ * certificate, in request order.
35951
+ *
35952
+ * @throws {ApiError} `400` if the test-input count exceeds 10 000.
35953
+ */
35954
+ async predict(request) {
35955
+ const response = await this.api.predict(ConformalPredictRequestFromFrontToApi(request));
35956
+ return ConformalPredictResponseFromApiToFront(response.data);
35957
+ }
35958
+ };
35959
+
35960
+ // src/normalizers/vision.ts
35961
+ function EncoderConfigOverridesFromFrontToApi(model) {
35962
+ const dto = {};
35963
+ if (model.numFrames !== void 0) dto.num_frames = model.numFrames;
35964
+ if (model.patchSize !== void 0) dto.patch_size = model.patchSize;
35965
+ if (model.sessionId !== void 0) dto.session_id = model.sessionId;
35966
+ if (model.targetHeight !== void 0) dto.target_height = model.targetHeight;
35967
+ if (model.targetWidth !== void 0) dto.target_width = model.targetWidth;
35968
+ return dto;
35969
+ }
35970
+ function FrameSummaryFromApiToFront(dto) {
35971
+ return {
35972
+ frameIndex: dto.frame_index,
35973
+ numPredictedObjects: dto.num_predicted_objects,
35974
+ numResiduatedFeatures: dto.num_residuated_features,
35975
+ objectLabels: dto.object_labels
35976
+ };
35977
+ }
35978
+ function EncodeClipRequestFromFrontToApi(model) {
35979
+ const dto = {
35980
+ clip_id: model.clipId,
35981
+ video_b64: model.videoB64
35982
+ };
35983
+ if (model.configOverrides !== void 0) {
35984
+ dto.config_overrides = model.configOverrides === null ? null : EncoderConfigOverridesFromFrontToApi(model.configOverrides);
35985
+ }
35986
+ if (model.fps !== void 0) dto.fps = model.fps;
35987
+ if (model.sourceUri !== void 0) dto.source_uri = model.sourceUri;
35988
+ return dto;
35989
+ }
35990
+ function EncodeClipResponseFromApiToFront(dto) {
35991
+ const out = {
35992
+ clipId: dto.clip_id,
35993
+ embeddingDim: dto.embedding_dim,
35994
+ encodeElapsedMs: dto.encode_elapsed_ms,
35995
+ frames: dto.frames.map(FrameSummaryFromApiToFront),
35996
+ modelId: dto.model_id,
35997
+ numInputFrames: dto.num_input_frames,
35998
+ paddedFrameIndices: dto.padded_frame_indices,
35999
+ totalObjects: dto.total_objects,
36000
+ totalResiduatedFeatures: dto.total_residuated_features
36001
+ };
36002
+ if (dto.model_version != null) out.modelVersion = dto.model_version;
36003
+ return out;
36004
+ }
36005
+
36006
+ // src/resources/vision.ts
36007
+ var VisionClient = class {
36008
+ /** @internal */
36009
+ api;
36010
+ /** @internal */
36011
+ constructor(api) {
36012
+ this.api = api;
36013
+ }
36014
+ /**
36015
+ * Encode a video clip end-to-end and return per-frame predictions.
36016
+ *
36017
+ * @param request - The clip spec (base64 video, clip id, optional
36018
+ * config overrides / fps / source uri).
36019
+ * @returns The embedding plus per-frame Ψ-term prediction summaries.
36020
+ *
36021
+ * @throws {ApiError} `503` if no V-JEPA perception service is mounted.
36022
+ */
36023
+ async encodeClip(request) {
36024
+ const response = await this.api.encodeClip(EncodeClipRequestFromFrontToApi(request));
36025
+ return EncodeClipResponseFromApiToFront(response.data);
36026
+ }
36027
+ };
36028
+
36029
+ // src/normalizers/anonymization.ts
36030
+ function quasiIdentifierFromFrontToApi(q) {
36031
+ switch (q.type) {
36032
+ case "numeric":
36033
+ return { type: "numeric", precision: q.precision };
36034
+ case "string":
36035
+ return { type: "string", prefix_length: q.prefixLength };
36036
+ case "categorical":
36037
+ return { type: "categorical" };
36038
+ case "hierarchical":
36039
+ return { type: "hierarchical", hierarchy: q.hierarchy };
36040
+ case "date":
36041
+ return { type: "date", granularity: q.granularity };
36042
+ }
36043
+ }
36044
+ function anonymizationModeFromFrontToApi(mode) {
36045
+ if (mode.type === "k_anonymity") {
36046
+ const quasiIdentifiers = {};
36047
+ for (const [field, q] of Object.entries(mode.quasiIdentifiers)) {
36048
+ quasiIdentifiers[field] = quasiIdentifierFromFrontToApi(q);
36049
+ }
36050
+ return { type: "k_anonymity", k: mode.k, quasi_identifiers: quasiIdentifiers };
36051
+ }
36052
+ if (mode.fieldIdentifiers !== void 0) {
36053
+ return {
36054
+ type: "safe_harbor",
36055
+ field_identifiers: mode.fieldIdentifiers
36056
+ };
36057
+ }
36058
+ return { type: "safe_harbor" };
36059
+ }
36060
+ function AnonymizeRequestFromFrontToApi(model) {
36061
+ const dto = {
36062
+ records: model.records,
36063
+ mode: anonymizationModeFromFrontToApi(model.mode)
36064
+ };
36065
+ if (model.enforcement !== void 0) dto.enforcement = model.enforcement;
36066
+ return dto;
36067
+ }
36068
+ function kAnonymityViolationFromApiToFront(wire) {
36069
+ return {
36070
+ quasiValues: wire.quasi_values,
36071
+ count: wire.count,
36072
+ requiredK: wire.required_k,
36073
+ suggestion: wire.suggestion
36074
+ };
36075
+ }
36076
+ function equivalenceClassFromApiToFront(wire) {
36077
+ return {
36078
+ quasiValues: wire.quasi_values,
36079
+ count: wire.count,
36080
+ recordIndices: wire.record_indices
36081
+ };
36082
+ }
36083
+ function kAnonymityResultFromApiToFront(wire) {
36084
+ return {
36085
+ isKAnonymous: wire.is_k_anonymous,
36086
+ k: wire.k,
36087
+ totalRecords: wire.total_records,
36088
+ equivalenceClassCount: wire.equivalence_class_count,
36089
+ violations: wire.violations.map(kAnonymityViolationFromApiToFront),
36090
+ equivalenceClasses: wire.equivalence_classes.map(equivalenceClassFromApiToFront),
36091
+ minClassSize: wire.min_class_size,
36092
+ maxClassSize: wire.max_class_size,
36093
+ avgClassSize: wire.avg_class_size,
36094
+ checkedAt: wire.checked_at
36095
+ };
36096
+ }
36097
+ function recordSafeHarborStatusFromApiToFront(dto) {
36098
+ return {
36099
+ recordIndex: dto.record_index,
36100
+ wasCompliant: dto.was_compliant,
36101
+ suppressedFields: dto.suppressed_fields,
36102
+ violationCount: dto.violation_count
36103
+ };
36104
+ }
36105
+ function safeHarborSummaryFromApiToFront(dto) {
36106
+ return {
36107
+ compliantCount: dto.compliant_count,
36108
+ deIdentifiedCount: dto.de_identified_count,
36109
+ perRecord: dto.per_record.map(recordSafeHarborStatusFromApiToFront)
36110
+ };
36111
+ }
36112
+ function AnonymizeResponseFromApiToFront(dto) {
36113
+ const out = {
36114
+ outputRecords: dto.output_records,
36115
+ suppressedIndices: dto.suppressed_indices,
36116
+ suppressedCount: dto.suppressed_count
36117
+ };
36118
+ if (dto.k_anonymity_result != null) {
36119
+ out.kAnonymityResult = kAnonymityResultFromApiToFront(
36120
+ dto.k_anonymity_result
36121
+ );
36122
+ }
36123
+ if (dto.safe_harbor_summary != null) {
36124
+ out.safeHarborSummary = safeHarborSummaryFromApiToFront(dto.safe_harbor_summary);
36125
+ }
36126
+ return out;
36127
+ }
36128
+
36129
+ // src/resources/anonymization.ts
36130
+ var AnonymizationClient = class {
36131
+ /** @internal */
36132
+ api;
36133
+ /** @internal */
36134
+ constructor(api) {
36135
+ this.api = api;
36136
+ }
36137
+ /**
36138
+ * Batch-anonymize a set of records using k-anonymity or HIPAA Safe Harbor.
36139
+ *
36140
+ * @param request - The record batch, the anonymization mode + params, and
36141
+ * an optional enforcement strategy (defaults to `suppress`).
36142
+ * @returns The processed records plus a full compliance report
36143
+ * (k-anonymity analysis or Safe Harbor summary).
36144
+ *
36145
+ * @throws {ApiError} `400` on an empty batch, > 10 000 records, or an
36146
+ * invalid anonymization mode.
36147
+ *
36148
+ * @example
36149
+ * ```typescript
36150
+ * const result = await client.anonymization.anonymize({
36151
+ * records: [{ name: 'Alice', age: '42', zip: '12345' }],
36152
+ * mode: {
36153
+ * type: 'k_anonymity',
36154
+ * k: 5,
36155
+ * quasiIdentifiers: { age: { type: 'numeric', precision: 10 } },
36156
+ * },
36157
+ * });
36158
+ * console.log(result.kAnonymityResult?.isKAnonymous);
36159
+ * ```
36160
+ */
36161
+ async anonymize(request) {
36162
+ const response = await this.api.anonymizeRecords(AnonymizeRequestFromFrontToApi(request), {
36163
+ headers: { [RAW_BODY_HEADER]: "1" }
36164
+ });
36165
+ return AnonymizeResponseFromApiToFront(response.data);
36166
+ }
36167
+ };
36168
+
36169
+ // src/normalizers/speakers.ts
36170
+ function EnrollSpeakerRequestFromFrontToApi(model) {
36171
+ const dto = { audio: model.audio, name: model.name };
36172
+ if (model.audioMime !== void 0) dto.audio_mime = model.audioMime;
36173
+ return dto;
36174
+ }
36175
+ function EnrollSpeakerResponseFromApiToFront(dto) {
36176
+ return {
36177
+ dim: dto.dim,
36178
+ id: dto.id,
36179
+ name: dto.name,
36180
+ sampleSecs: dto.sample_secs
36181
+ };
36182
+ }
36183
+ function SpeakerProfileFromApiToFront(dto) {
36184
+ return {
36185
+ createdAt: dto.created_at,
36186
+ id: dto.id,
36187
+ name: dto.name,
36188
+ sampleSecs: dto.sample_secs
36189
+ };
36190
+ }
36191
+ function ListSpeakersResponseFromApiToFront(dto) {
36192
+ return { speakers: dto.speakers.map(SpeakerProfileFromApiToFront) };
36193
+ }
36194
+
36195
+ // src/resources/speakers.ts
36196
+ var SpeakersClient = class {
36197
+ /** @internal */
36198
+ api;
36199
+ /** @internal */
36200
+ constructor(api) {
36201
+ this.api = api;
36202
+ }
36203
+ /**
36204
+ * Enroll (or re-enroll) a speaker voiceprint for the authenticated tenant.
36205
+ *
36206
+ * @remarks
36207
+ * Request body uses plain JSON keys (`audio`, `audio_mime`, `name`) with no
36208
+ * user-keyed maps and no case-sensitive enum values, so the default bridge
36209
+ * snake_casing is correct.
36210
+ *
36211
+ * @param request - The base64 audio sample, optional MIME hint, and name.
36212
+ * @returns The embedding dimensionality, stable profile id, name, and
36213
+ * seconds of speech embedded.
36214
+ *
36215
+ * @throws {ApiError} On a non-2xx response (e.g. malformed audio).
36216
+ */
36217
+ async enrollSpeaker(request) {
36218
+ const response = await this.api.enrollSpeaker(EnrollSpeakerRequestFromFrontToApi(request));
36219
+ return EnrollSpeakerResponseFromApiToFront(response.data);
36220
+ }
36221
+ /**
36222
+ * List the tenant's enrolled speaker profiles (embeddings withheld).
36223
+ *
36224
+ * @returns The stored speaker profiles for the authenticated tenant.
36225
+ *
36226
+ * @throws {ApiError} On a non-2xx response.
36227
+ */
36228
+ async listSpeakers() {
36229
+ const response = await this.api.listSpeakers();
36230
+ return ListSpeakersResponseFromApiToFront(response.data);
36231
+ }
36232
+ /**
36233
+ * Delete a speaker profile by id.
36234
+ *
36235
+ * @param request - The stable profile (term) id of the speaker to delete.
36236
+ *
36237
+ * @throws {ApiError} `404` if no profile exists for the given id.
36238
+ */
36239
+ async deleteSpeaker(request) {
36240
+ await this.api.deleteSpeaker(request.id);
36241
+ }
36242
+ };
36243
+
36244
+ // src/normalizers/speech.ts
36245
+ function VoiceConsentFromFrontToApi(model) {
36246
+ const dto = {
36247
+ granted_by: model.grantedBy,
36248
+ method: model.method
36249
+ };
36250
+ if (model.reference !== void 0) dto.reference = model.reference;
36251
+ return dto;
36252
+ }
36253
+ function VoiceConsentFromApiToFront(dto) {
36254
+ const out = {
36255
+ grantedBy: dto.granted_by,
36256
+ method: dto.method
36257
+ };
36258
+ if (dto.reference != null) out.reference = dto.reference;
36259
+ return out;
36260
+ }
36261
+ function VoiceProfileFromApiToFront(dto) {
36262
+ return {
36263
+ consent: VoiceConsentFromApiToFront(dto.consent),
36264
+ createdAt: dto.created_at,
36265
+ engine: dto.engine,
36266
+ hasIcl: dto.has_icl,
36267
+ id: dto.id,
36268
+ name: dto.name,
36269
+ sampleSecs: dto.sample_secs
36270
+ };
36271
+ }
36272
+ function SpeechEngineFromApiToFront(dto) {
36273
+ const out = {
36274
+ available: dto.available,
36275
+ engine: dto.engine,
36276
+ presetSpeakers: dto.preset_speakers,
36277
+ supportsCloning: dto.supports_cloning
36278
+ };
36279
+ if (dto.reason != null) out.reason = dto.reason;
36280
+ return out;
36281
+ }
36282
+ function EnrollVoiceRequestFromFrontToApi(model) {
36283
+ const dto = {
36284
+ audio: model.audio,
36285
+ consent: VoiceConsentFromFrontToApi(model.consent),
36286
+ name: model.name
36287
+ };
36288
+ if (model.audioMime !== void 0) dto.audio_mime = model.audioMime;
36289
+ if (model.engine !== void 0) dto.engine = model.engine;
36290
+ if (model.transcript !== void 0) dto.transcript = model.transcript;
36291
+ return dto;
36292
+ }
36293
+ function ListEnginesResponseFromApiToFront(dto) {
36294
+ return {
36295
+ engines: dto.engines.map(SpeechEngineFromApiToFront)
36296
+ };
36297
+ }
36298
+ function ListVoicesResponseFromApiToFront(dto) {
36299
+ return {
36300
+ presets: dto.presets,
36301
+ voices: dto.voices.map(VoiceProfileFromApiToFront)
36302
+ };
36303
+ }
36304
+ function OpenSpeechSessionRequestFromFrontToApi(model) {
36305
+ const dto = {};
36306
+ if (model.conversationId !== void 0) dto.conversation_id = model.conversationId;
36307
+ if (model.engine !== void 0) dto.engine = model.engine;
36308
+ if (model.language !== void 0) dto.language = model.language;
36309
+ if (model.voiceId !== void 0) dto.voice_id = model.voiceId;
36310
+ return dto;
36311
+ }
36312
+ function OpenSpeechSessionResponseFromApiToFront(dto) {
36313
+ return {
36314
+ engine: dto.engine,
36315
+ fullDuplex: dto.full_duplex,
36316
+ inputSampleRate: dto.input_sample_rate,
36317
+ sessionId: dto.session_id,
36318
+ wsUrl: dto.ws_url
36319
+ };
36320
+ }
36321
+ function SynthesizeSpeechRequestFromFrontToApi(model) {
36322
+ const dto = { text: model.text };
36323
+ if (model.refAudioBase64 !== void 0) dto.ref_audio_base64 = model.refAudioBase64;
36324
+ if (model.description !== void 0) dto.description = model.description;
36325
+ if (model.engine !== void 0) dto.engine = model.engine;
36326
+ if (model.format !== void 0) dto.format = model.format;
36327
+ if (model.instruction !== void 0) dto.instruction = model.instruction;
36328
+ if (model.language !== void 0) dto.language = model.language;
36329
+ if (model.maxDurationS !== void 0) dto.max_duration_s = model.maxDurationS;
36330
+ if (model.refText !== void 0) dto.ref_text = model.refText;
36331
+ if (model.seed !== void 0) dto.seed = model.seed;
36332
+ if (model.speaker !== void 0) dto.speaker = model.speaker;
36333
+ if (model.voiceId !== void 0) dto.voice_id = model.voiceId;
36334
+ return dto;
36335
+ }
36336
+ function TranscribeSpeechRequestFromFrontToApi(model) {
36337
+ const dto = { audio_base64: model.audioBase64 };
36338
+ if (model.audioMime !== void 0) dto.audio_mime = model.audioMime;
36339
+ if (model.format !== void 0) dto.format = model.format;
36340
+ if (model.language !== void 0) dto.language = model.language;
36341
+ return dto;
36342
+ }
36343
+ function TranscribeSpeechResponseFromApiToFront(dto) {
36344
+ const out = {
36345
+ model: dto.model,
36346
+ text: dto.text
36347
+ };
36348
+ if (dto.duration_secs != null) out.durationSecs = dto.duration_secs;
36349
+ return out;
36350
+ }
36351
+
36352
+ // src/resources/speech.ts
36353
+ var SpeechClient = class {
36354
+ /** @internal */
36355
+ api;
36356
+ /** @internal */
36357
+ constructor(api) {
36358
+ this.api = api;
36359
+ }
36360
+ /**
36361
+ * Enroll (or re-enroll) a cloned voice from a reference clip.
36362
+ *
36363
+ * @param request - The enrollment spec (audio, consent, name, etc.).
36364
+ * @returns The registered voice profile.
36365
+ *
36366
+ * @throws {ApiError} `400` if the clip is too short or consent is missing.
36367
+ *
36368
+ * @remarks
36369
+ * Wire format: the request body is a JSON object with snake_case keys
36370
+ * (`audio`, `audio_mime`, `consent`, `engine`, `name`, `transcript`);
36371
+ * the response is a `VoiceProfileDto` with snake_case fields, normalized
36372
+ * to camelCase here.
36373
+ */
36374
+ async enrollVoice(request) {
36375
+ const response = await this.api.enrollVoice(
36376
+ EnrollVoiceRequestFromFrontToApi(request)
36377
+ );
36378
+ return VoiceProfileFromApiToFront(response.data);
36379
+ }
36380
+ /**
36381
+ * Report per-engine availability and capabilities.
36382
+ *
36383
+ * @returns The list of speech engines and their preset speakers.
36384
+ *
36385
+ * @remarks
36386
+ * Wire format: the response is a `ListEnginesResponse` with snake_case
36387
+ * fields, normalized to camelCase here.
36388
+ */
36389
+ async listEngines() {
36390
+ const response = await this.api.listEngines();
36391
+ return ListEnginesResponseFromApiToFront(response.data);
36392
+ }
36393
+ /**
36394
+ * List the tenant's cloned voices plus available presets.
36395
+ *
36396
+ * @returns The enrolled voices and preset speaker names per engine.
36397
+ *
36398
+ * @remarks
36399
+ * Wire format: the response is a `ListVoicesResponse` with snake_case
36400
+ * fields (the `presets` map is returned verbatim), normalized to
36401
+ * camelCase here.
36402
+ */
36403
+ async listVoices() {
36404
+ const response = await this.api.listVoices();
36405
+ return ListVoicesResponseFromApiToFront(response.data);
36406
+ }
36407
+ /**
36408
+ * Open a speech-to-speech session.
36409
+ *
36410
+ * @param request - The session spec (engine, language, voice id, etc.).
36411
+ * @returns The opened session, including the WebSocket media URL.
36412
+ *
36413
+ * @remarks
36414
+ * Wire format: the request body is a JSON object with snake_case keys
36415
+ * (`conversation_id`, `engine`, `language`, `voice_id`); the response is
36416
+ * an `OpenSpeechSessionResponse` with snake_case fields, normalized to
36417
+ * camelCase here.
36418
+ */
36419
+ async openSpeechSession(request) {
36420
+ const response = await this.api.openSpeechSession(
36421
+ OpenSpeechSessionRequestFromFrontToApi(request)
36422
+ );
36423
+ return OpenSpeechSessionResponseFromApiToFront(response.data);
36424
+ }
36425
+ /**
36426
+ * Synthesize speech to raw audio bytes.
36427
+ *
36428
+ * @param request - The synthesis spec (text, engine, voice id, etc.).
36429
+ * @returns The raw fetch `Response`. The body is raw audio bytes
36430
+ * (`content-type: audio/wav` on success); read it via
36431
+ * `.arrayBuffer()` or `.blob()`. Check `response.ok` / `response.status`
36432
+ * before reading the body — a non-2xx response body is a JSON
36433
+ * `ApiError`, a 2xx response body is audio.
36434
+ *
36435
+ * @throws {ApiError} On a non-2xx response (the error body is JSON, not
36436
+ * audio — inspect it before consuming the stream).
36437
+ *
36438
+ * @remarks
36439
+ * Wire format: the request body is a JSON object with snake_case keys
36440
+ * (`ref_audio_base64`, `max_duration_s`, `voice_id`, etc.). The response
36441
+ * is NOT JSON — it is a binary audio stream, so this method returns the
36442
+ * raw `Response` unchanged rather than a normalized DTO.
36443
+ */
36444
+ async synthesizeSpeech(request) {
36445
+ const response = await this.api.synthesizeSpeech(
36446
+ SynthesizeSpeechRequestFromFrontToApi(request)
36447
+ );
36448
+ return response;
36449
+ }
36450
+ /**
36451
+ * Transcribe a short utterance.
36452
+ *
36453
+ * @param request - The transcription spec (base64 audio, mime, etc.).
36454
+ * @returns The recognized text plus the model and optional duration.
36455
+ *
36456
+ * @remarks
36457
+ * Wire format: the request body is a JSON object with snake_case keys
36458
+ * (`audio_base64`, `audio_mime`, `format`, `language`); the response is
36459
+ * a `TranscribeSpeechResponse` with snake_case fields, normalized to
36460
+ * camelCase here.
36461
+ */
36462
+ async transcribeSpeech(request) {
36463
+ const response = await this.api.transcribeSpeech(
36464
+ TranscribeSpeechRequestFromFrontToApi(request)
36465
+ );
36466
+ return TranscribeSpeechResponseFromApiToFront(response.data);
36467
+ }
36468
+ /**
36469
+ * Delete a cloned voice, upstream conditioning included.
36470
+ *
36471
+ * @param voiceId - The voice (term) id to delete.
36472
+ *
36473
+ * @remarks
36474
+ * Wire format: no body; the voice id is a path parameter. Returns no
36475
+ * content on success.
36476
+ */
36477
+ async deleteVoice(voiceId) {
36478
+ await this.api.deleteVoice(voiceId);
36479
+ }
36480
+ };
36481
+
36482
+ // src/normalizers/connectors.ts
36483
+ function AddConnectorRequestFromFrontToApi(model) {
36484
+ return {
36485
+ name: model.name,
36486
+ type: model.type
36487
+ };
36488
+ }
36489
+ function AddConnectorResponseFromApiToFront(dto) {
36490
+ return {
36491
+ id: dto.id,
36492
+ name: dto.name,
36493
+ status: dto.status
36494
+ };
36495
+ }
36496
+ function ConnectorTypeFromApiToFront(dto) {
36497
+ const out = {
36498
+ authType: dto.auth_type,
36499
+ displayName: dto.display_name,
36500
+ typeName: dto.type_name
36501
+ };
36502
+ if (dto.icon_url !== void 0) out.iconUrl = dto.icon_url;
36503
+ return out;
36504
+ }
36505
+ function ConnectorInstanceFromApiToFront(dto) {
36506
+ const out = {
36507
+ displayName: dto.display_name,
36508
+ id: dto.id,
36509
+ name: dto.name,
36510
+ status: dto.status,
36511
+ typeName: dto.type_name
36512
+ };
36513
+ if (dto.connected_at !== void 0) out.connectedAt = dto.connected_at;
36514
+ if (dto.connected_by !== void 0) out.connectedBy = dto.connected_by;
36515
+ return out;
36516
+ }
36517
+ function OAuthStartResponseFromApiToFront(dto) {
36518
+ return {
36519
+ authUrl: dto.auth_url
36520
+ };
36521
+ }
36522
+
36523
+ // src/resources/connectors.ts
36524
+ var ConnectorsClient = class {
36525
+ /** @internal */
36526
+ api;
36527
+ /** @internal */
36528
+ constructor(api) {
36529
+ this.api = api;
36530
+ }
36531
+ /**
36532
+ * List the connector types this build supports.
36533
+ *
36534
+ * @returns Every connector type's wire name, display name, auth type,
36535
+ * and optional icon URL.
36536
+ */
36537
+ async listTypes() {
36538
+ const response = await this.api.listTypes();
36539
+ return (response.data ?? []).map(ConnectorTypeFromApiToFront);
36540
+ }
36541
+ /**
36542
+ * List all registered connector instances.
36543
+ *
36544
+ * @returns The registered instances, each with its connection status.
36545
+ */
36546
+ async list() {
36547
+ const response = await this.api.list();
36548
+ return (response.data ?? []).map(ConnectorInstanceFromApiToFront);
36549
+ }
36550
+ /**
36551
+ * Register a new connector instance.
36552
+ *
36553
+ * @param request - The instance name and the connector type to register.
36554
+ * @returns The newly-registered instance id, name, and status.
36555
+ */
36556
+ async add(request) {
36557
+ const response = await this.api.add(AddConnectorRequestFromFrontToApi(request));
36558
+ return AddConnectorResponseFromApiToFront(response.data);
36559
+ }
36560
+ /**
36561
+ * Remove a registered connector instance.
36562
+ *
36563
+ * @param name - The instance name.
36564
+ */
36565
+ async remove(name) {
36566
+ await this.api.remove(name);
36567
+ }
36568
+ /**
36569
+ * Start an OAuth flow for a connector instance.
36570
+ *
36571
+ * @param name - The instance name.
36572
+ * @returns The authorization URL the caller should redirect the user to.
36573
+ */
36574
+ async startOauth(name) {
36575
+ const response = await this.api.startOauth(name);
36576
+ return OAuthStartResponseFromApiToFront(response.data);
36577
+ }
36578
+ /**
36579
+ * Disconnect a connector instance (drop its stored credentials).
36580
+ *
36581
+ * @param name - The instance name.
36582
+ */
36583
+ async disconnect(name) {
36584
+ await this.api.disconnect(name);
36585
+ }
36586
+ /**
36587
+ * OAuth callback — the provider redirects here after authorization.
36588
+ *
36589
+ * @param name - The instance name.
36590
+ * @param query - The OAuth callback parameters (`code` on success;
36591
+ * `error`/`errorDescription` on failure; the opaque `state`).
36592
+ * @returns The raw `Response` — the backend returns an HTML page that
36593
+ * posts a message to the opener window. The caller usually does not
36594
+ * need the body; check `response.ok` for transport errors.
36595
+ *
36596
+ * @remarks
36597
+ * This endpoint is normally hit by the browser (the OAuth provider's
36598
+ * redirect target), not called directly by SDK consumers. It is exposed
36599
+ * for completeness / server-side testing.
36600
+ */
36601
+ async oauthCallback(name, query = {}) {
36602
+ const response = await this.api.oauthCallback(name, query);
36603
+ return response;
36604
+ }
36605
+ };
36606
+
34248
36607
  // src/client.ts
34249
36608
  var ReasoningLayerClient = class {
34250
36609
  /** Sort (type hierarchy) operations. */
@@ -34411,6 +36770,26 @@ var ReasoningLayerClient = class {
34411
36770
  agui;
34412
36771
  /** Ontology export — OWL ontology and SHACL shapes projected from the sort lattice. */
34413
36772
  ontologyExport;
36773
+ /** Demo substrate seeding — full SUMO + demo scenarios into the tenant substrate. */
36774
+ demo;
36775
+ /** Execution-free reward scoring for candidate queries (recall / precision). */
36776
+ reward;
36777
+ /** Language translation (text → target language, markdown preserved). */
36778
+ translation;
36779
+ /** Probabilistic streaming sketches (Count-Min frequency, Misra-Gries heavy hitters, Bloom membership). */
36780
+ streaming;
36781
+ /** Split-conformal prediction — calibrate a non-conformity threshold, then predict with coverage certificates. */
36782
+ conformal;
36783
+ /** Video-clip encoding (V-JEPA substrate; per-frame predicted-sort labels). */
36784
+ vision;
36785
+ /** GDPR/HIPAA batch anonymization (k-anonymity or Safe Harbor). */
36786
+ anonymization;
36787
+ /** Speaker voiceprint enrollment + listing. */
36788
+ speakers;
36789
+ /** Speech synthesis / transcription / voice cloning + realtime session setup. */
36790
+ speech;
36791
+ /** External data connectors — register / list / remove / connect / disconnect + OAuth callback. */
36792
+ connectors;
34414
36793
  // ─── Group Caches ─────────────────────────────────────────────────
34415
36794
  _core;
34416
36795
  _ai;
@@ -34718,6 +37097,16 @@ var ReasoningLayerClient = class {
34718
37097
  this.guardrail = new GuardrailClient(generatedGuardrail);
34719
37098
  this.agui = new AguiClient(generatedAgui);
34720
37099
  this.ontologyExport = new OntologyExportClient(generatedOntologyExport);
37100
+ this.demo = new DemoClient(new Demo(generatedHttp));
37101
+ this.reward = new RewardClient(new Reward(generatedHttp));
37102
+ this.translation = new TranslationClient(new Translation(generatedHttp));
37103
+ this.streaming = new StreamingClient(new Streaming(generatedHttp));
37104
+ this.conformal = new ConformalClient(new Conformal(generatedHttp));
37105
+ this.vision = new VisionClient(new Vision(generatedHttp));
37106
+ this.anonymization = new AnonymizationClient(new Anonymization(generatedHttp));
37107
+ this.speakers = new SpeakersClient(new Speakers(generatedHttp));
37108
+ this.speech = new SpeechClient(new Speech(generatedHttp));
37109
+ this.connectors = new ConnectorsClient(new Connectors(generatedHttp));
34721
37110
  }
34722
37111
  };
34723
37112
 
@@ -34971,6 +37360,36 @@ var agui_exports = {};
34971
37360
  // src/types/ontology-export.ts
34972
37361
  var ontology_export_exports = {};
34973
37362
 
37363
+ // src/types/demo.ts
37364
+ var demo_exports = {};
37365
+
37366
+ // src/types/reward.ts
37367
+ var reward_exports = {};
37368
+
37369
+ // src/types/translation.ts
37370
+ var translation_exports = {};
37371
+
37372
+ // src/types/streaming.ts
37373
+ var streaming_exports = {};
37374
+
37375
+ // src/types/conformal.ts
37376
+ var conformal_exports = {};
37377
+
37378
+ // src/types/vision.ts
37379
+ var vision_exports = {};
37380
+
37381
+ // src/types/anonymization.ts
37382
+ var anonymization_exports = {};
37383
+
37384
+ // src/types/speakers.ts
37385
+ var speakers_exports = {};
37386
+
37387
+ // src/types/speech.ts
37388
+ var speech_exports = {};
37389
+
37390
+ // src/types/connectors.ts
37391
+ var connectors_exports = {};
37392
+
34974
37393
  // src/builders/value.ts
34975
37394
  var Value = {
34976
37395
  /**
@@ -35976,6 +38395,6 @@ var Flow = {
35976
38395
  }
35977
38396
  };
35978
38397
 
35979
- 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 };
38398
+ 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 };
35980
38399
  //# sourceMappingURL=index.js.map
35981
38400
  //# sourceMappingURL=index.js.map