@kortexya/reasoninglayer 1.13.0 → 1.15.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.d.ts CHANGED
@@ -109,7 +109,7 @@ type JsonValue$1 = string | number | boolean | null | JsonValue$1[] | object;
109
109
  * This is the single source of truth for the version constant.
110
110
  * The `scripts/release.sh` script updates this value alongside `package.json`.
111
111
  */
112
- declare const SDK_VERSION = "1.13.0";
112
+ declare const SDK_VERSION = "1.15.0";
113
113
  /**
114
114
  * Authentication mode for the SDK.
115
115
  *
@@ -144,7 +144,7 @@ type AuthConfig = {
144
144
  * @example Bearer token (server-side)
145
145
  * ```typescript
146
146
  * const config: ClientConfig = {
147
- * baseUrl: 'http://localhost:8083',
147
+ * baseUrl: 'http://localhost:8085',
148
148
  * tenantId: '550e8400-e29b-41d4-a716-446655440000',
149
149
  * auth: { mode: 'bearer', token: process.env.RL_API_TOKEN! },
150
150
  * };
@@ -160,7 +160,7 @@ type AuthConfig = {
160
160
  * ```
161
161
  */
162
162
  interface ClientConfig {
163
- /** Base URL of the Reasoning Layer API (e.g., `"http://localhost:8083"`). */
163
+ /** Base URL of the Reasoning Layer API (e.g., `"http://localhost:8085"`). */
164
164
  baseUrl: string;
165
165
  /** Tenant UUID. Set once, NOT overridable per-call. */
166
166
  tenantId: string;
@@ -720,7 +720,7 @@ interface AddRuleRequest$1 {
720
720
  * When present, the rule's head term receives an `"aggregator"` feature
721
721
  * containing a serialized `RuleAggregator` descriptor.
722
722
  */
723
- aggregator?: null | RuleAggregatorDto;
723
+ aggregator?: null | RuleAggregatorDto$1;
724
724
  /**
725
725
  * Antecedent terms (body of the rule)
726
726
  * These go into the `when` feature
@@ -5997,7 +5997,7 @@ interface DetectMissingAttributesRequest$1 {
5997
5997
  definition_attributes: string[];
5998
5998
  }
5999
5999
  /** Request to validate a Difference-in-Differences design */
6000
- interface DiDValidationRequest {
6000
+ interface DiDValidationRequest$1 {
6001
6001
  /** Conditioning set (covariates) */
6002
6002
  covariates?: string[];
6003
6003
  /** Post-treatment outcome variable */
@@ -6008,7 +6008,7 @@ interface DiDValidationRequest {
6008
6008
  treatment: string;
6009
6009
  }
6010
6010
  /** Response for DiD validation */
6011
- interface DiDValidationResponse {
6011
+ interface DiDValidationResponse$1 {
6012
6012
  /** Identified "bad controls" (nodes that induce bias if conditioned on) */
6013
6013
  bad_controls: string[];
6014
6014
  /** Explanation of the result */
@@ -6632,6 +6632,8 @@ interface DocumentBatchResultDto$1 {
6632
6632
  error?: string | null;
6633
6633
  /** Ingestion statistics (if successful) */
6634
6634
  ingestion_stats?: null | IngestionStatsDto$1;
6635
+ /** Markdown generated by the document parser (if successful). */
6636
+ markdown?: string | null;
6635
6637
  /** Document metadata (if successful) */
6636
6638
  metadata?: null | ParsedDocumentMetadataDto$1;
6637
6639
  /** Parse statistics (if successful) */
@@ -11666,6 +11668,13 @@ interface IngestDocumentRequest$1 {
11666
11668
  * @format uuid
11667
11669
  */
11668
11670
  owner_id: string;
11671
+ /**
11672
+ * Parse and return Markdown without creating semantic Ψ-terms.
11673
+ *
11674
+ * This lets a client persist parser output on its own authoritative term
11675
+ * instead of creating a detached duplicate document representation.
11676
+ */
11677
+ parse_only?: boolean;
11669
11678
  }
11670
11679
  /** Response from document ingestion */
11671
11680
  interface IngestDocumentResponse$1 {
@@ -11673,6 +11682,14 @@ interface IngestDocumentResponse$1 {
11673
11682
  error?: string | null;
11674
11683
  /** Markdown ingestion statistics (from the markdown pipeline) */
11675
11684
  ingestion_stats: IngestionStatsDto$1;
11685
+ /**
11686
+ * Markdown generated by the document parser.
11687
+ *
11688
+ * Present whenever parsing succeeds, including OCR output for scanned
11689
+ * documents. Returning this keeps the parser output usable by clients
11690
+ * without requiring them to create a second, detached representation.
11691
+ */
11692
+ markdown?: string | null;
11676
11693
  /** Document metadata */
11677
11694
  metadata: ParsedDocumentMetadataDto$1;
11678
11695
  /** Document parsing statistics */
@@ -13568,6 +13585,11 @@ interface ListScenariosResponse$1 {
13568
13585
  */
13569
13586
  total: number;
13570
13587
  }
13588
+ /** Response listing the registrable source types of this build (#71). */
13589
+ interface ListSourceTypesResponse$1 {
13590
+ /** Every source type the registration factory knows how to build. */
13591
+ types: SourceTypeDto$1[];
13592
+ }
13571
13593
  /** Response listing registered sources. */
13572
13594
  interface ListSourcesResponse$1 {
13573
13595
  /** List of registered source summaries */
@@ -18118,9 +18140,15 @@ interface RegisterSourceRequest$1 {
18118
18140
  * source is honored as a column→feature PROJECTION, so ingested facts land
18119
18141
  * on the sort's DECLARED feature names.
18120
18142
  *
18121
- * Omitted ⇒ capability-grounded default: `transpile` for `postgres`
18122
- * (`postgresql`), `ingest` for every other source type (postgres is the only
18123
- * adapter whose transpiled SQL the engine can execute).
18143
+ * Omitted ⇒ `ingest`, for every source type (#71). It is the only mode that
18144
+ * populates the knowledge base and the one path every adapter can serve;
18145
+ * `transpile` is an explicit opt-in.
18146
+ *
18147
+ * `transpile` is accepted only for a source whose adapter can execute
18148
+ * transpiled SQL (Postgres, MySQL, SQLite). Requesting it for any other
18149
+ * source is refused with **422**: there would be nothing to run the SQL an
18150
+ * OSFQL MATCH compiles to, and ingest on such a source is refused as a
18151
+ * category error — leaving it with no working write path at all.
18124
18152
  *
18125
18153
  * Any other string is rejected with **422** (not 400): serde fails the
18126
18154
  * variant at deserialization, so axum's JSON extractor refuses the body
@@ -18158,6 +18186,14 @@ interface RegisterSourceResponse$1 {
18158
18186
  source_type: string;
18159
18187
  /** Whether registration was successful */
18160
18188
  success: boolean;
18189
+ /**
18190
+ * The write-path modes this source's ADAPTER can serve (#71) — the same
18191
+ * set `GET /api/v1/sources/{id}` reports. Echoed at registration so a
18192
+ * client learns, at the moment the choice is made, whether `transpile`
18193
+ * was even on the table (a mode change requires DELETE + re-register).
18194
+ * @example ["ingest","transpile"]
18195
+ */
18196
+ supported_modes: string[];
18161
18197
  }
18162
18198
  type RegressionBasisDto = "linear" | "cubic_polynomial";
18163
18199
  /** Request to reject an action */
@@ -19279,7 +19315,7 @@ interface RowUnifyResponse$1 {
19279
19315
  * `target` feature. This eliminates run-to-run variance from proof-order
19280
19316
  * sensitivity and makes `max_solutions` cap unique groups, not raw proofs.
19281
19317
  */
19282
- interface RuleAggregatorDto {
19318
+ interface RuleAggregatorDto$1 {
19283
19319
  /**
19284
19320
  * Feature names that define the aggregation group key.
19285
19321
  * Proofs with identical values for all `group_by` features are merged.
@@ -21105,6 +21141,20 @@ interface SourceDetailResponse$1 {
21105
21141
  source_id: string;
21106
21142
  /** Source type */
21107
21143
  source_type: string;
21144
+ /**
21145
+ * The write-path modes this source's ADAPTER can actually serve (#71).
21146
+ *
21147
+ * Always contains `"ingest"` — every adapter can materialize. Contains
21148
+ * `"transpile"` only when the adapter executes transpiled SQL, which is what
21149
+ * a live view requires; registering the other modes is refused with a 422.
21150
+ *
21151
+ * A client rendering a mode selector should offer exactly these, rather than
21152
+ * hard-coding a list of source types: the set is derived from the adapter's
21153
+ * declared capability, so it stays correct as adapters gain the ability
21154
+ * (MySQL and SQLite did in #70).
21155
+ * @example ["ingest","transpile"]
21156
+ */
21157
+ supported_modes: string[];
21108
21158
  }
21109
21159
  /** Source excerpt DTO */
21110
21160
  interface SourceExcerptDto$2 {
@@ -21123,6 +21173,37 @@ interface SourceSummaryDto$1 {
21123
21173
  /** Source type */
21124
21174
  source_type: string;
21125
21175
  }
21176
+ /**
21177
+ * One registrable source TYPE and its capabilities (#71).
21178
+ *
21179
+ * The pre-registration half of the mode-discovery surface: a client rendering
21180
+ * a "new source" picker asks `GET /api/v1/sources/types` which types this
21181
+ * build can register and which write-path modes each would serve — BEFORE any
21182
+ * source exists. The per-source half (`GET /api/v1/sources/{id}`) answers the
21183
+ * same mode question for a source that does.
21184
+ */
21185
+ interface SourceTypeDto$1 {
21186
+ /** Alternate spellings registration also accepts (e.g. `postgresql`). */
21187
+ aliases: string[];
21188
+ /**
21189
+ * Whether this build can register the type. `false` means the adapter is
21190
+ * behind a cargo feature that is not compiled in: registration would be
21191
+ * refused, so a picker should not offer it (or should show it disabled).
21192
+ */
21193
+ available: boolean;
21194
+ /**
21195
+ * Canonical type string accepted by `POST /api/v1/sources`.
21196
+ * @example "mysql"
21197
+ */
21198
+ source_type: string;
21199
+ /**
21200
+ * The write-path modes this type's adapter can serve: always `"ingest"`,
21201
+ * plus `"transpile"` when the adapter executes transpiled SQL. The same
21202
+ * set the per-source endpoints report after registration.
21203
+ * @example ["ingest","transpile"]
21204
+ */
21205
+ supported_modes: string[];
21206
+ }
21126
21207
  /**
21127
21208
  * A constraint in the space
21128
21209
  *
@@ -26152,7 +26233,18 @@ declare class Terms<SecurityDataType = unknown> {
26152
26233
  * @request GET:/api/v1/terms
26153
26234
  * @secure
26154
26235
  */
26155
- listTerms: (params?: RequestParams) => Promise<HttpResponse<TermListResponse$1, any>>;
26236
+ listTerms: (query?: {
26237
+ /**
26238
+ * Max terms to return; omit for all, hard-capped at 10000
26239
+ * @min 0
26240
+ */
26241
+ limit?: number;
26242
+ /**
26243
+ * Zero-based index of the first term (default 0)
26244
+ * @min 0
26245
+ */
26246
+ offset?: number;
26247
+ }, params?: RequestParams) => Promise<HttpResponse<TermListResponse$1, any>>;
26156
26248
  /**
26157
26249
  * No description
26158
26250
  *
@@ -27164,7 +27256,7 @@ declare class Inference<SecurityDataType = unknown> {
27164
27256
  */
27165
27257
  addRule: (data: AddRuleRequest$1, params?: RequestParams) => Promise<HttpResponse<AddRuleResponse$1, any>>;
27166
27258
  /**
27167
- * @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.
27259
+ * @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.
27168
27260
  *
27169
27261
  * @tags inference
27170
27262
  * @name BackwardChain
@@ -27315,7 +27407,18 @@ declare class Inference<SecurityDataType = unknown> {
27315
27407
  * @request GET:/api/v1/inference/facts/{tenant_id}
27316
27408
  * @secure
27317
27409
  */
27318
- getFacts: (tenantId: string, params?: RequestParams) => Promise<HttpResponse<GetFactsResponse$1, any>>;
27410
+ getFacts: (tenantId: string, query?: {
27411
+ /**
27412
+ * Max facts to return; omit for all, hard-capped at 10000
27413
+ * @min 0
27414
+ */
27415
+ limit?: number;
27416
+ /**
27417
+ * Zero-based index of the first fact (default 0)
27418
+ * @min 0
27419
+ */
27420
+ offset?: number;
27421
+ }, params?: RequestParams) => Promise<HttpResponse<GetFactsResponse$1, any>>;
27319
27422
  /**
27320
27423
  * @description # TRUE HOMOICONICITY Returns the full goal term with all its referenced terms. # Authorization Requires X-Tenant-Id header.
27321
27424
  *
@@ -27436,6 +27539,17 @@ interface ProofDto {
27436
27539
  subproofs?: ProofDto[];
27437
27540
  /** Certainty of this proof step. */
27438
27541
  certainty: number;
27542
+ /**
27543
+ * True iff this node is a residuated (suspended/unknown) leaf — an open-world
27544
+ * antecedent with neither a witnessing fact nor a deriving rule.
27545
+ *
27546
+ * @remarks
27547
+ * Unknown, never false: a residuated leaf means the engine could not decide the goal,
27548
+ * not that the goal is refuted. Distinct from {@link SolutionDto.residuatedSorts},
27549
+ * which names the *sorts* of a solution's residuated antecedents rather than marking
27550
+ * an individual node of the proof tree.
27551
+ */
27552
+ residuated?: boolean;
27439
27553
  }
27440
27554
  /**
27441
27555
  * Confidence/provenance information for a derived fact.
@@ -27465,6 +27579,19 @@ interface SolutionDto {
27465
27579
  evidenceMatched?: number | null;
27466
27580
  /** Evidence ratio for open-world inference (matched/total antecedents). Null in closed-world mode. */
27467
27581
  evidenceRatio?: number | null;
27582
+ /**
27583
+ * **Deep evidential support** in `[0, 1]` (open-world only): the fraction of
27584
+ * ground-fact leaves the proof rests on that are actually witnessed by facts,
27585
+ * computed recursively over the proof tree.
27586
+ *
27587
+ * @remarks
27588
+ * Unlike {@link evidenceRatio} (shallow, top-level), this sees through chained
27589
+ * derivations, so residuation inside a derived sub-goal is reflected. It is the
27590
+ * epistemic ranking axis, **orthogonal to {@link certainty}** (the
27591
+ * residuation-faithful degree): rank candidate solutions by this to prefer the
27592
+ * ones actually grounded in evidence.
27593
+ */
27594
+ evidenceSupport?: number | null;
27468
27595
  /** Sort names that were residuated (suspended due to missing information). Open-world only. */
27469
27596
  residuatedSorts?: string[];
27470
27597
  }
@@ -27570,6 +27697,20 @@ interface ForwardChainRequest {
27570
27697
  maxIterations?: number;
27571
27698
  /** Maximum number of facts to derive. */
27572
27699
  maxFacts?: number;
27700
+ /**
27701
+ * Emit W3C PROV-O lineage for this run (default: `false`).
27702
+ *
27703
+ * @remarks
27704
+ * When true, the run's derivation provenance (which rule and which antecedents
27705
+ * produced each derived fact) is reified into `prov:wasDerivedFrom` /
27706
+ * `prov:wasAttributedTo` Ψ-terms and persisted, so lineage becomes ordinary facts the
27707
+ * engine can query (OSFQL / backward chaining) and serialise (RDF export) — not an
27708
+ * opaque side index. Forces real derivation, bypassing the derivation cache.
27709
+ *
27710
+ * Distinct from {@link enableProvenanceTags}, which attaches confidence scores to the
27711
+ * response rather than persisting queryable lineage.
27712
+ */
27713
+ emitProvenance?: boolean;
27573
27714
  }
27574
27715
  /** Response from forward chaining inference. */
27575
27716
  interface ForwardChainResponse {
@@ -27588,6 +27729,37 @@ interface ForwardChainResponse {
27588
27729
  /** Provenance tags for derived facts (only present when `enable_provenance_tags` was true). */
27589
27730
  provenanceTags?: ProvenanceTagDto[];
27590
27731
  }
27732
+ /**
27733
+ * Rule aggregator descriptor for engine-side aggregation on rule heads.
27734
+ *
27735
+ * @remarks
27736
+ * When declared on a rule, the engine aggregates multiple proofs of that rule which
27737
+ * share the same {@link groupBy} feature values, applying {@link op} to the
27738
+ * {@link target} feature. This eliminates run-to-run variance from proof-order
27739
+ * sensitivity and makes `maxSolutions` cap unique **groups**, not raw proofs.
27740
+ *
27741
+ * Wire format is snake_case (`group_by`).
27742
+ *
27743
+ * @example
27744
+ * ```typescript
27745
+ * const aggregator: RuleAggregatorDto = {
27746
+ * groupBy: ['customer_id'],
27747
+ * op: 'sum',
27748
+ * target: 'amount',
27749
+ * };
27750
+ * ```
27751
+ */
27752
+ interface RuleAggregatorDto {
27753
+ /**
27754
+ * Feature names that define the aggregation group key. Proofs with identical values
27755
+ * for all `groupBy` features are merged.
27756
+ */
27757
+ groupBy: string[];
27758
+ /** Aggregation operator: `"sum"`, `"max"`, `"min"`, `"count"`, or `"first"`. */
27759
+ op: string;
27760
+ /** Feature name whose value is aggregated within each group. */
27761
+ target: string;
27762
+ }
27591
27763
  /**
27592
27764
  * Request to add a rule to the inference engine.
27593
27765
  *
@@ -27601,6 +27773,14 @@ interface AddRuleRequest {
27601
27773
  antecedents?: TermInputDto[];
27602
27774
  /** Certainty factor (default: 1.0). */
27603
27775
  certainty?: number;
27776
+ /**
27777
+ * Optional engine-side aggregator declared on the rule head.
27778
+ *
27779
+ * @remarks
27780
+ * When present, the rule's head term receives an `"aggregator"` feature containing a
27781
+ * serialized `RuleAggregator` descriptor. See {@link RuleAggregatorDto}.
27782
+ */
27783
+ aggregator?: RuleAggregatorDto | null;
27604
27784
  }
27605
27785
  /**
27606
27786
  * Request to add a fact to the inference engine.
@@ -27672,6 +27852,18 @@ interface FuzzyProveRequest {
27672
27852
  saveGoal?: boolean;
27673
27853
  /** T-norm strategy: "min", "product", or "lukasiewicz". */
27674
27854
  tnorm?: string;
27855
+ /**
27856
+ * Open-world reasoning **scope**: ground feature constraints every witnessing fact
27857
+ * must satisfy, as `feature → value` (string values).
27858
+ *
27859
+ * @remarks
27860
+ * **Safety-relevant.** For patient-scoped clinical reasoning send
27861
+ * `{ patient_id: '<id>' }` so only that patient's observations witness a diagnosis —
27862
+ * another patient's fact of the same sort never does. A fact lacking the feature is
27863
+ * unconstrained (open world). **Empty or absent ⇒ tenant-wide (legacy) behavior**,
27864
+ * where any tenant fact may witness the goal.
27865
+ */
27866
+ scope?: Record<string, string>;
27675
27867
  }
27676
27868
  /** Response from fuzzy proof search. */
27677
27869
  interface FuzzyProveResponse {
@@ -28312,6 +28504,7 @@ type inference_NafProveRequest = NafProveRequest;
28312
28504
  type inference_NafProveResponse = NafProveResponse;
28313
28505
  type inference_ProofDto = ProofDto;
28314
28506
  type inference_ProvenanceTagDto = ProvenanceTagDto;
28507
+ type inference_RuleAggregatorDto = RuleAggregatorDto;
28315
28508
  type inference_RuleDraftClarificationQuestionDto = RuleDraftClarificationQuestionDto;
28316
28509
  type inference_RuleDraftDto = RuleDraftDto;
28317
28510
  type inference_RuleEntryDto = RuleEntryDto;
@@ -28321,7 +28514,7 @@ type inference_TaggedDerivedFact = TaggedDerivedFact;
28321
28514
  type inference_TaggedForwardChainRequest = TaggedForwardChainRequest;
28322
28515
  type inference_TaggedForwardChainResponse = TaggedForwardChainResponse;
28323
28516
  declare namespace inference {
28324
- export type { inference_AddFactRequest as AddFactRequest, inference_AddFactResponse as AddFactResponse, inference_AddRuleRequest as AddRuleRequest, inference_AddRuleResponse as AddRuleResponse, inference_AllenRelation as AllenRelation, inference_BackwardChainRequest as BackwardChainRequest, inference_BackwardChainResponse as BackwardChainResponse, inference_BayesianEffectDto as BayesianEffectDto, inference_BayesianPredictRequest as BayesianPredictRequest, inference_BayesianPredictResponse as BayesianPredictResponse, inference_BindingDto as BindingDto, inference_BulkAddFactsRequest as BulkAddFactsRequest, inference_BulkAddFactsResponse as BulkAddFactsResponse, inference_BulkAddRulesRequest as BulkAddRulesRequest, inference_BulkAddRulesResponse as BulkAddRulesResponse, inference_BulkFuzzyProveRequest as BulkFuzzyProveRequest, inference_BulkFuzzyProveResponse as BulkFuzzyProveResponse, inference_ClearFactsResponse as ClearFactsResponse, inference_ConstraintInputDto as ConstraintInputDto, inference_CreateGoalRequest as CreateGoalRequest, inference_CreateGoalResponse as CreateGoalResponse, inference_DeleteGoalResponse as DeleteGoalResponse, inference_DraftRulesRequest as DraftRulesRequest, inference_DraftRulesResponse as DraftRulesResponse, inference_FactConfidenceEntry as FactConfidenceEntry, inference_ForwardChainRequest as ForwardChainRequest, inference_ForwardChainResponse as ForwardChainResponse, inference_FuzzyProveRequest as FuzzyProveRequest, inference_FuzzyProveResponse as FuzzyProveResponse, inference_GetFactsResponse as GetFactsResponse, inference_GetRulesResponse as GetRulesResponse, inference_GoalDto as GoalDto, inference_GoalSummaryDto as GoalSummaryDto, inference_GuardOp as GuardOp, inference_HomoiconicSubstitutionDto as HomoiconicSubstitutionDto, inference_ListGoalsResponse as ListGoalsResponse, inference_LiteralInputDto as LiteralInputDto, inference_MetaSortsResponse as MetaSortsResponse, inference_NafProveRequest as NafProveRequest, inference_NafProveResponse as NafProveResponse, inference_ProofDto as ProofDto, inference_ProvenanceTagDto as ProvenanceTagDto, inference_RuleDraftClarificationQuestionDto as RuleDraftClarificationQuestionDto, inference_RuleDraftDto as RuleDraftDto, inference_RuleEntryDto as RuleEntryDto, inference_RuleTermDraftDto as RuleTermDraftDto, inference_SolutionDto as SolutionDto, inference_TaggedDerivedFact as TaggedDerivedFact, inference_TaggedForwardChainRequest as TaggedForwardChainRequest, inference_TaggedForwardChainResponse as TaggedForwardChainResponse };
28517
+ export type { inference_AddFactRequest as AddFactRequest, inference_AddFactResponse as AddFactResponse, inference_AddRuleRequest as AddRuleRequest, inference_AddRuleResponse as AddRuleResponse, inference_AllenRelation as AllenRelation, inference_BackwardChainRequest as BackwardChainRequest, inference_BackwardChainResponse as BackwardChainResponse, inference_BayesianEffectDto as BayesianEffectDto, inference_BayesianPredictRequest as BayesianPredictRequest, inference_BayesianPredictResponse as BayesianPredictResponse, inference_BindingDto as BindingDto, inference_BulkAddFactsRequest as BulkAddFactsRequest, inference_BulkAddFactsResponse as BulkAddFactsResponse, inference_BulkAddRulesRequest as BulkAddRulesRequest, inference_BulkAddRulesResponse as BulkAddRulesResponse, inference_BulkFuzzyProveRequest as BulkFuzzyProveRequest, inference_BulkFuzzyProveResponse as BulkFuzzyProveResponse, inference_ClearFactsResponse as ClearFactsResponse, inference_ConstraintInputDto as ConstraintInputDto, inference_CreateGoalRequest as CreateGoalRequest, inference_CreateGoalResponse as CreateGoalResponse, inference_DeleteGoalResponse as DeleteGoalResponse, inference_DraftRulesRequest as DraftRulesRequest, inference_DraftRulesResponse as DraftRulesResponse, inference_FactConfidenceEntry as FactConfidenceEntry, inference_ForwardChainRequest as ForwardChainRequest, inference_ForwardChainResponse as ForwardChainResponse, inference_FuzzyProveRequest as FuzzyProveRequest, inference_FuzzyProveResponse as FuzzyProveResponse, inference_GetFactsResponse as GetFactsResponse, inference_GetRulesResponse as GetRulesResponse, inference_GoalDto as GoalDto, inference_GoalSummaryDto as GoalSummaryDto, inference_GuardOp as GuardOp, inference_HomoiconicSubstitutionDto as HomoiconicSubstitutionDto, inference_ListGoalsResponse as ListGoalsResponse, inference_LiteralInputDto as LiteralInputDto, inference_MetaSortsResponse as MetaSortsResponse, inference_NafProveRequest as NafProveRequest, inference_NafProveResponse as NafProveResponse, inference_ProofDto as ProofDto, inference_ProvenanceTagDto as ProvenanceTagDto, inference_RuleAggregatorDto as RuleAggregatorDto, inference_RuleDraftClarificationQuestionDto as RuleDraftClarificationQuestionDto, inference_RuleDraftDto as RuleDraftDto, inference_RuleEntryDto as RuleEntryDto, inference_RuleTermDraftDto as RuleTermDraftDto, inference_SolutionDto as SolutionDto, inference_TaggedDerivedFact as TaggedDerivedFact, inference_TaggedForwardChainRequest as TaggedForwardChainRequest, inference_TaggedForwardChainResponse as TaggedForwardChainResponse };
28325
28518
  }
28326
28519
 
28327
28520
  /**
@@ -28346,13 +28539,28 @@ declare class InferenceClient {
28346
28539
  /**
28347
28540
  * Add an inference rule.
28348
28541
  *
28349
- * @param request - Rule definition using TermInputDto.
28542
+ * @param request - Rule definition using TermInputDto. Set `aggregator` to declare an
28543
+ * engine-side head aggregator (see {@link RuleAggregatorDto}).
28350
28544
  * @returns The created rule wrapped in an AddRuleResponse.
28545
+ * @throws {ApiError} If the rule is rejected or the request fails.
28546
+ *
28547
+ * @remarks
28548
+ * **Serialization format**: untagged `TermInputDto` / `FeatureInputValueDto`.
28549
+ *
28550
+ * @example
28551
+ * ```typescript
28552
+ * await client.inference.addRule({
28553
+ * term: psi('total_spend', { customer_id: Var('C'), amount: Var('A') }),
28554
+ * antecedents: [psi('order', { customer_id: Var('C'), amount: Var('A') })],
28555
+ * aggregator: { groupBy: ['customer_id'], op: 'sum', target: 'amount' },
28556
+ * });
28557
+ * ```
28351
28558
  */
28352
28559
  addRule(request: {
28353
28560
  term: TermInputArg;
28354
28561
  antecedents?: TermInputArg[];
28355
28562
  certainty?: number;
28563
+ aggregator?: RuleAggregatorDto | null;
28356
28564
  }): Promise<AddRuleResponse>;
28357
28565
  /**
28358
28566
  * Add a fact.
@@ -34907,7 +35115,7 @@ declare class Causal<SecurityDataType = unknown> {
34907
35115
  * @request POST:/api/v1/causal/validate-did
34908
35116
  * @secure
34909
35117
  */
34910
- validateDid: (data: DiDValidationRequest, params?: RequestParams) => Promise<HttpResponse<DiDValidationResponse, void>>;
35118
+ validateDid: (data: DiDValidationRequest$1, params?: RequestParams) => Promise<HttpResponse<DiDValidationResponse$1, void>>;
34911
35119
  }
34912
35120
 
34913
35121
  /** A single step in the agent's execution trajectory. */
@@ -36663,6 +36871,41 @@ interface CausalAnalyzeRequest {
36663
36871
  /** Causal question to analyze. */
36664
36872
  question: CausalAnalyzeQuestionDto;
36665
36873
  }
36874
+ /**
36875
+ * Request to validate a Difference-in-Differences design.
36876
+ *
36877
+ * @remarks
36878
+ * The design is checked against the causal structure the backend builds from the
36879
+ * tenant's homoiconic rules — no sample data is submitted, only the variable
36880
+ * names that play each role.
36881
+ */
36882
+ interface DiDValidationRequest {
36883
+ /**
36884
+ * Conditioning set (covariates). Omit for an unconditional design — the
36885
+ * backend defaults it to the empty set. Members that turn out to be bad
36886
+ * controls are reported back in {@link DiDValidationResponse.badControls}.
36887
+ */
36888
+ covariates?: string[];
36889
+ /** Post-treatment outcome variable. */
36890
+ outcomePost: string;
36891
+ /** Pre-treatment outcome variable. */
36892
+ outcomePre: string;
36893
+ /** The treatment variable. */
36894
+ treatment: string;
36895
+ }
36896
+ /**
36897
+ * Response for DiD validation.
36898
+ */
36899
+ interface DiDValidationResponse {
36900
+ /** Identified "bad controls" — nodes that induce bias if conditioned on. */
36901
+ badControls: string[];
36902
+ /** Explanation of the result. */
36903
+ explanation: string;
36904
+ /** The framework used for validation. */
36905
+ framework: string;
36906
+ /** Whether the design is valid. */
36907
+ isValid: boolean;
36908
+ }
36666
36909
 
36667
36910
  type causal_ActValueDto = ActValueDto;
36668
36911
  type causal_AddCausalRelationRequest = AddCausalRelationRequest;
@@ -36712,6 +36955,8 @@ type causal_DecisionAuditResponse = DecisionAuditResponse;
36712
36955
  type causal_DeclareLatentVariableRequest = DeclareLatentVariableRequest;
36713
36956
  type causal_DeclareLatentVariableResponse = DeclareLatentVariableResponse;
36714
36957
  type causal_DensityRatioDiagnosticDto = DensityRatioDiagnosticDto;
36958
+ type causal_DiDValidationRequest = DiDValidationRequest;
36959
+ type causal_DiDValidationResponse = DiDValidationResponse;
36715
36960
  type causal_DmlAteRequest = DmlAteRequest;
36716
36961
  type causal_DoseResponseRequest = DoseResponseRequest;
36717
36962
  type causal_DoseResponseResponse = DoseResponseResponse;
@@ -36760,7 +37005,7 @@ type causal_ShiftEffectRequest = ShiftEffectRequest;
36760
37005
  type causal_ShiftEffectResponse = ShiftEffectResponse;
36761
37006
  type causal_StructuralAssignmentDto = StructuralAssignmentDto;
36762
37007
  declare namespace causal {
36763
- export type { causal_ActValueDto as ActValueDto, causal_AddCausalRelationRequest as AddCausalRelationRequest, causal_AddCausalRelationResponse as AddCausalRelationResponse, causal_AssignmentMechanism as AssignmentMechanism, causal_AssignmentRowDto as AssignmentRowDto, causal_AssumptionAuditRequest as AssumptionAuditRequest, causal_AssumptionAuditResponse as AssumptionAuditResponse, causal_AteEstimateRequest as AteEstimateRequest, causal_AteEstimateResponse as AteEstimateResponse, causal_AuditedAssumptionDto as AuditedAssumptionDto, causal_CategoryProbabilityDto as CategoryProbabilityDto, causal_CausalActionSpecDto as CausalActionSpecDto, causal_CausalAnalyzeAssumptionsDto as CausalAnalyzeAssumptionsDto, causal_CausalAnalyzeDataDto as CausalAnalyzeDataDto, causal_CausalAnalyzeIndependenceTestDto as CausalAnalyzeIndependenceTestDto, causal_CausalAnalyzePolicyDto as CausalAnalyzePolicyDto, causal_CausalAnalyzeQuestionDto as CausalAnalyzeQuestionDto, causal_CausalAnalyzeQuestionKind as CausalAnalyzeQuestionKind, causal_CausalAnalyzeRegressionDto as CausalAnalyzeRegressionDto, causal_CausalAnalyzeRequest as CausalAnalyzeRequest, causal_CausalAncestorRequest as CausalAncestorRequest, causal_CausalAncestorResponse as CausalAncestorResponse, causal_CausalAssumptionDto as CausalAssumptionDto, causal_CausalChainDto as CausalChainDto, causal_CausalDecisionSpecDto as CausalDecisionSpecDto, causal_CausalDerivationStepDto as CausalDerivationStepDto, causal_CausalEdgeDto as CausalEdgeDto, causal_CausalHedgeDto as CausalHedgeDto, causal_CausalProofTreeDto as CausalProofTreeDto, CausalRelationshipDto$1 as CausalRelationshipDto, causal_CausationProbabilitiesRequest as CausationProbabilitiesRequest, causal_CausationProbabilitiesResponse as CausationProbabilitiesResponse, causal_CausesRequest as CausesRequest, causal_CausesResponse as CausesResponse, causal_ClusteredAteRequest as ClusteredAteRequest, causal_ClusteredObservationDto as ClusteredObservationDto, causal_ContinuousMediationObservationDto as ContinuousMediationObservationDto, causal_ContinuousObservationDto as ContinuousObservationDto, causal_ContinuousTreatmentObservationDto as ContinuousTreatmentObservationDto, causal_CounterfactualRequest as CounterfactualRequest, causal_CounterfactualResponse as CounterfactualResponse, causal_CounterfactualTraceDto as CounterfactualTraceDto, causal_DSeparatedRequest as DSeparatedRequest, causal_DSeparatedResponse as DSeparatedResponse, causal_DecisionAuditRequest as DecisionAuditRequest, causal_DecisionAuditResponse as DecisionAuditResponse, causal_DeclareLatentVariableRequest as DeclareLatentVariableRequest, causal_DeclareLatentVariableResponse as DeclareLatentVariableResponse, causal_DensityRatioDiagnosticDto as DensityRatioDiagnosticDto, causal_DmlAteRequest as DmlAteRequest, causal_DoseResponseRequest as DoseResponseRequest, causal_DoseResponseResponse as DoseResponseResponse, causal_ExogenousNoiseDto as ExogenousNoiseDto, causal_FrontDoorObservationDto as FrontDoorObservationDto, causal_FrontDoorRequest as FrontDoorRequest, causal_FrontDoorResponse as FrontDoorResponse, causal_GetCausalModelResponse as GetCausalModelResponse, causal_IdentificationRefDto as IdentificationRefDto, causal_IdentifyEffectRequest as IdentifyEffectRequest, causal_IdentifyEffectResponse as IdentifyEffectResponse, causal_InterventionRequest as InterventionRequest, causal_InterventionResponse as InterventionResponse, causal_MeasurementRole as MeasurementRole, causal_MediationDmlRequest as MediationDmlRequest, causal_MediationEffectDto as MediationEffectDto, causal_MediationObservationDto as MediationObservationDto, causal_MediationRequest as MediationRequest, causal_MediationResponse as MediationResponse, causal_MultiMediationObservationDto as MultiMediationObservationDto, causal_MultiMediationRequest as MultiMediationRequest, causal_ObservationDto as ObservationDto, causal_ObservationalProbabilitiesDto as ObservationalProbabilitiesDto, causal_OverlapDiagnosticDto as OverlapDiagnosticDto, causal_PolicyRowDto as PolicyRowDto, causal_PolicyRuleDto as PolicyRuleDto, causal_PolicyValueRequest as PolicyValueRequest, causal_PolicyValueResponse as PolicyValueResponse, causal_ProbabilityBoundDto as ProbabilityBoundDto, causal_ProofNodeDto as ProofNodeDto, causal_ProofStatisticsDto as ProofStatisticsDto, causal_QueryResultDto as QueryResultDto, causal_RefutationCheckDto as RefutationCheckDto, causal_RefutationObservationDto as RefutationObservationDto, causal_RefuteEstimateRequest as RefuteEstimateRequest, causal_RefuteEstimateResponse as RefuteEstimateResponse, causal_RegressionBasis as RegressionBasis, causal_RootCauseAnalysisRequest as RootCauseAnalysisRequest, causal_RootCauseAnalysisResponse as RootCauseAnalysisResponse, causal_RootCauseDto as RootCauseDto, causal_RootCauseWithProofResponse as RootCauseWithProofResponse, causal_ScmCounterfactualRequest as ScmCounterfactualRequest, causal_ScmCounterfactualResponse as ScmCounterfactualResponse, causal_SensitivityDto as SensitivityDto, causal_ShiftEffectRequest as ShiftEffectRequest, causal_ShiftEffectResponse as ShiftEffectResponse, causal_StructuralAssignmentDto as StructuralAssignmentDto };
37008
+ export type { causal_ActValueDto as ActValueDto, causal_AddCausalRelationRequest as AddCausalRelationRequest, causal_AddCausalRelationResponse as AddCausalRelationResponse, causal_AssignmentMechanism as AssignmentMechanism, causal_AssignmentRowDto as AssignmentRowDto, causal_AssumptionAuditRequest as AssumptionAuditRequest, causal_AssumptionAuditResponse as AssumptionAuditResponse, causal_AteEstimateRequest as AteEstimateRequest, causal_AteEstimateResponse as AteEstimateResponse, causal_AuditedAssumptionDto as AuditedAssumptionDto, causal_CategoryProbabilityDto as CategoryProbabilityDto, causal_CausalActionSpecDto as CausalActionSpecDto, causal_CausalAnalyzeAssumptionsDto as CausalAnalyzeAssumptionsDto, causal_CausalAnalyzeDataDto as CausalAnalyzeDataDto, causal_CausalAnalyzeIndependenceTestDto as CausalAnalyzeIndependenceTestDto, causal_CausalAnalyzePolicyDto as CausalAnalyzePolicyDto, causal_CausalAnalyzeQuestionDto as CausalAnalyzeQuestionDto, causal_CausalAnalyzeQuestionKind as CausalAnalyzeQuestionKind, causal_CausalAnalyzeRegressionDto as CausalAnalyzeRegressionDto, causal_CausalAnalyzeRequest as CausalAnalyzeRequest, causal_CausalAncestorRequest as CausalAncestorRequest, causal_CausalAncestorResponse as CausalAncestorResponse, causal_CausalAssumptionDto as CausalAssumptionDto, causal_CausalChainDto as CausalChainDto, causal_CausalDecisionSpecDto as CausalDecisionSpecDto, causal_CausalDerivationStepDto as CausalDerivationStepDto, causal_CausalEdgeDto as CausalEdgeDto, causal_CausalHedgeDto as CausalHedgeDto, causal_CausalProofTreeDto as CausalProofTreeDto, CausalRelationshipDto$1 as CausalRelationshipDto, causal_CausationProbabilitiesRequest as CausationProbabilitiesRequest, causal_CausationProbabilitiesResponse as CausationProbabilitiesResponse, causal_CausesRequest as CausesRequest, causal_CausesResponse as CausesResponse, causal_ClusteredAteRequest as ClusteredAteRequest, causal_ClusteredObservationDto as ClusteredObservationDto, causal_ContinuousMediationObservationDto as ContinuousMediationObservationDto, causal_ContinuousObservationDto as ContinuousObservationDto, causal_ContinuousTreatmentObservationDto as ContinuousTreatmentObservationDto, causal_CounterfactualRequest as CounterfactualRequest, causal_CounterfactualResponse as CounterfactualResponse, causal_CounterfactualTraceDto as CounterfactualTraceDto, causal_DSeparatedRequest as DSeparatedRequest, causal_DSeparatedResponse as DSeparatedResponse, causal_DecisionAuditRequest as DecisionAuditRequest, causal_DecisionAuditResponse as DecisionAuditResponse, causal_DeclareLatentVariableRequest as DeclareLatentVariableRequest, causal_DeclareLatentVariableResponse as DeclareLatentVariableResponse, causal_DensityRatioDiagnosticDto as DensityRatioDiagnosticDto, causal_DiDValidationRequest as DiDValidationRequest, causal_DiDValidationResponse as DiDValidationResponse, causal_DmlAteRequest as DmlAteRequest, causal_DoseResponseRequest as DoseResponseRequest, causal_DoseResponseResponse as DoseResponseResponse, causal_ExogenousNoiseDto as ExogenousNoiseDto, causal_FrontDoorObservationDto as FrontDoorObservationDto, causal_FrontDoorRequest as FrontDoorRequest, causal_FrontDoorResponse as FrontDoorResponse, causal_GetCausalModelResponse as GetCausalModelResponse, causal_IdentificationRefDto as IdentificationRefDto, causal_IdentifyEffectRequest as IdentifyEffectRequest, causal_IdentifyEffectResponse as IdentifyEffectResponse, causal_InterventionRequest as InterventionRequest, causal_InterventionResponse as InterventionResponse, causal_MeasurementRole as MeasurementRole, causal_MediationDmlRequest as MediationDmlRequest, causal_MediationEffectDto as MediationEffectDto, causal_MediationObservationDto as MediationObservationDto, causal_MediationRequest as MediationRequest, causal_MediationResponse as MediationResponse, causal_MultiMediationObservationDto as MultiMediationObservationDto, causal_MultiMediationRequest as MultiMediationRequest, causal_ObservationDto as ObservationDto, causal_ObservationalProbabilitiesDto as ObservationalProbabilitiesDto, causal_OverlapDiagnosticDto as OverlapDiagnosticDto, causal_PolicyRowDto as PolicyRowDto, causal_PolicyRuleDto as PolicyRuleDto, causal_PolicyValueRequest as PolicyValueRequest, causal_PolicyValueResponse as PolicyValueResponse, causal_ProbabilityBoundDto as ProbabilityBoundDto, causal_ProofNodeDto as ProofNodeDto, causal_ProofStatisticsDto as ProofStatisticsDto, causal_QueryResultDto as QueryResultDto, causal_RefutationCheckDto as RefutationCheckDto, causal_RefutationObservationDto as RefutationObservationDto, causal_RefuteEstimateRequest as RefuteEstimateRequest, causal_RefuteEstimateResponse as RefuteEstimateResponse, causal_RegressionBasis as RegressionBasis, causal_RootCauseAnalysisRequest as RootCauseAnalysisRequest, causal_RootCauseAnalysisResponse as RootCauseAnalysisResponse, causal_RootCauseDto as RootCauseDto, causal_RootCauseWithProofResponse as RootCauseWithProofResponse, causal_ScmCounterfactualRequest as ScmCounterfactualRequest, causal_ScmCounterfactualResponse as ScmCounterfactualResponse, causal_SensitivityDto as SensitivityDto, causal_ShiftEffectRequest as ShiftEffectRequest, causal_ShiftEffectResponse as ShiftEffectResponse, causal_StructuralAssignmentDto as StructuralAssignmentDto };
36764
37009
  }
36765
37010
 
36766
37011
  /**
@@ -37400,6 +37645,45 @@ declare class CausalClient {
37400
37645
  * ```
37401
37646
  */
37402
37647
  refuteEstimate(request: RefuteEstimateRequest): Promise<RefuteEstimateResponse>;
37648
+ /**
37649
+ * Validate a Difference-in-Differences (DiD) design.
37650
+ *
37651
+ * @param request - The treatment variable, the pre- and post-treatment outcome
37652
+ * variables, and an optional conditioning set.
37653
+ * @returns Whether the design is theoretically sound, an explanation, the bad
37654
+ * controls found in the conditioning set, and the framework used.
37655
+ * @throws {BadRequestError} If the request is malformed.
37656
+ * @throws {ApiError} If the request otherwise fails.
37657
+ *
37658
+ * @remarks
37659
+ * Checks the design against the causal structure the backend builds from the
37660
+ * tenant's homoiconic rules, using the Transformed SWIG (Delta-SWIG) framework
37661
+ * of Knaus & Pfleiderer (2026). This is a design check over the *graph*: no
37662
+ * sample data is submitted and nothing is estimated — validate the design here,
37663
+ * then estimate the effect with {@link CausalClient.ateEstimate}.
37664
+ *
37665
+ * A design can be invalid even with an empty conditioning set (parallel trends
37666
+ * unsupported by the structure); `badControls` names the covariates that induce
37667
+ * bias if conditioned on, so an invalid design is often repaired by dropping
37668
+ * them and re-validating.
37669
+ *
37670
+ * Plain scalar JSON — no value serialization (`ValueDto` / `FeatureValueDto`)
37671
+ * is involved.
37672
+ *
37673
+ * @example
37674
+ * ```typescript
37675
+ * const did = await client.causal.validateDid({
37676
+ * treatment: 'minimum_wage_hike',
37677
+ * outcomePre: 'employment_2025',
37678
+ * outcomePost: 'employment_2026',
37679
+ * covariates: ['county_gdp'],
37680
+ * });
37681
+ * console.log(did.isValid); // false
37682
+ * console.log(did.badControls); // ['county_gdp']
37683
+ * console.log(did.framework); // 'Delta-SWIG (Knaus & Pfleiderer, 2026)'
37684
+ * ```
37685
+ */
37686
+ validateDid(request: DiDValidationRequest): Promise<DiDValidationResponse>;
37403
37687
  }
37404
37688
 
37405
37689
  declare class Ingestion<SecurityDataType = unknown> {
@@ -37496,7 +37780,7 @@ declare class Ingestion<SecurityDataType = unknown> {
37496
37780
  */
37497
37781
  getQueueMetrics: (params?: RequestParams) => Promise<HttpResponse<QueueMetricsResponse, void>>;
37498
37782
  /**
37499
- * @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
37783
+ * @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
37500
37784
  *
37501
37785
  * @tags ingestion
37502
37786
  * @name IngestDocument
@@ -38813,7 +39097,9 @@ declare class TimeoutError extends ReasoningLayerError {
38813
39097
  /**
38814
39098
  * Client-side validation error.
38815
39099
  *
38816
- * Thrown before a request is sent when input fails client-side validation.
39100
+ * Thrown before a request is sent when input fails client-side validation, and
39101
+ * when a successful response violates the endpoint's documented contract in a way
39102
+ * the SDK cannot faithfully represent.
38817
39103
  */
38818
39104
  declare class ValidationError extends ReasoningLayerError {
38819
39105
  name: string;
@@ -42967,6 +43253,16 @@ declare class StructuredIngestion<SecurityDataType = unknown> {
42967
43253
  * @secure
42968
43254
  */
42969
43255
  listSourceTables: (sourceId: string, params?: RequestParams) => Promise<HttpResponse<ListTablesResponse$1, void>>;
43256
+ /**
43257
+ * @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`.
43258
+ *
43259
+ * @tags structured_ingestion
43260
+ * @name ListSourceTypesCatalog
43261
+ * @summary List the source types this build can register, with their mode capabilities.
43262
+ * @request GET:/api/v1/sources/types
43263
+ * @secure
43264
+ */
43265
+ listSourceTypesCatalog: (params?: RequestParams) => Promise<HttpResponse<ListSourceTypesResponse$1, any>>;
42970
43266
  /**
42971
43267
  * @description Creates a connector instance from the provided configuration and registers it with the structured ingestion service for subsequent schema discovery and data ingestion.
42972
43268
  *
@@ -42979,12 +43275,44 @@ declare class StructuredIngestion<SecurityDataType = unknown> {
42979
43275
  registerSource: (data: RegisterSourceRequest$1, params?: RequestParams) => Promise<HttpResponse<RegisterSourceResponse$1, void>>;
42980
43276
  }
42981
43277
 
43278
+ /**
43279
+ * The write-path mode of a source — whether its rows stay in place or become facts.
43280
+ *
43281
+ * @remarks
43282
+ * The two modes are deliberately exhaustive: a source that is both a live view and a
43283
+ * materialized snapshot is the footgun this distinction exists to make unrepresentable.
43284
+ *
43285
+ * - `transpile` — the source's bound sorts are live SQL views (zero copy).
43286
+ * `POST /api/v1/sources/{id}/ingest` is refused with **409**: materializing such a
43287
+ * source would create a second, divergent namespace over the same rows.
43288
+ * - `ingest` — rows become Ψ-term facts. Any SQL sort-table binding on the source is
43289
+ * honored as a column→feature projection, so ingested facts land on the sort's
43290
+ * declared feature names.
43291
+ *
43292
+ * Sent verbatim on the wire. Anything outside this set is rejected by the backend with
43293
+ * **422** (serde fails the variant before the handler runs), which is why
43294
+ * {@link RegisterSourceRequest.mode} is typed as this union rather than a bare string.
43295
+ *
43296
+ * @example
43297
+ * ```typescript
43298
+ * const mode: SourceWriteMode = 'ingest';
43299
+ * ```
43300
+ */
43301
+ type SourceWriteMode = 'transpile' | 'ingest';
42982
43302
  /**
42983
43303
  * Summary of a registered source.
42984
43304
  */
42985
43305
  interface SourceSummaryDto {
42986
43306
  /** Whether the source is currently available/reachable. */
42987
43307
  available: boolean;
43308
+ /**
43309
+ * Resolved write-path mode: `"transpile"` or `"ingest"` (see {@link SourceWriteMode}).
43310
+ *
43311
+ * Typed as `string` rather than the union because the wire contract declares a plain
43312
+ * string — narrowing it would mean inventing a fallback for a value this SDK version
43313
+ * does not know.
43314
+ */
43315
+ mode: string;
42988
43316
  /** Source identifier. */
42989
43317
  sourceId: string;
42990
43318
  /** Source type. */
@@ -43053,6 +43381,11 @@ interface DiscoveredSourceRelationDto {
43053
43381
  interface StructuredIngestionStatsDto {
43054
43382
  /** Number of columns discovered. */
43055
43383
  columnsDiscovered: number;
43384
+ /**
43385
+ * Number of columns dropped by the projection because the binding does not declare
43386
+ * them. Never silent — the dropped column names are named in the response `errors`.
43387
+ */
43388
+ columnsDropped: number;
43056
43389
  /** Number of documents rendered and processed. */
43057
43390
  documentsRendered: number;
43058
43391
  /** Total elapsed time in milliseconds. */
@@ -43073,6 +43406,12 @@ interface StructuredIngestionStatsDto {
43073
43406
  tablesDiscovered: number;
43074
43407
  /** Number of terms created. */
43075
43408
  termsCreated: number;
43409
+ /**
43410
+ * Number of Ψ-terms materialized by *projecting* a bound table through its SQL
43411
+ * binding: declared feature names, declared types, key-derived identity, no LLM.
43412
+ * Zero when none of the source's tables carry a binding.
43413
+ */
43414
+ termsProjected: number;
43076
43415
  }
43077
43416
  /**
43078
43417
  * Request to register a data source.
@@ -43086,6 +43425,21 @@ interface RegisterSourceRequest {
43086
43425
  sourceType: string;
43087
43426
  /** Source-specific configuration (varies by source_type). */
43088
43427
  config: Record<string, unknown>;
43428
+ /**
43429
+ * Declared write-path intent — see {@link SourceWriteMode}.
43430
+ *
43431
+ * Omitted ⇒ `ingest`, for every source type (#71). Ingest is the only mode that
43432
+ * populates the knowledge base and the one path every adapter can serve; `transpile`
43433
+ * is an explicit opt-in. The resolved value is always echoed back on
43434
+ * {@link RegisterSourceResponse.mode}, so the applied default is never invisible.
43435
+ *
43436
+ * `transpile` is accepted only for a source whose adapter executes transpiled SQL
43437
+ * (Postgres, MySQL, SQLite). Requesting it for any other source is refused with
43438
+ * **422** — there would be nothing to run the SQL an OSFQL MATCH compiles to. The
43439
+ * set a type accepts is advertised by {@link SourcesClient.listSourceTypes}, so a
43440
+ * caller can avoid the refusal rather than discover it.
43441
+ */
43442
+ mode?: SourceWriteMode | null;
43089
43443
  }
43090
43444
  /**
43091
43445
  * Response from source registration.
@@ -43097,6 +43451,24 @@ interface RegisterSourceResponse {
43097
43451
  sourceId: string;
43098
43452
  /** Source type. */
43099
43453
  sourceType: string;
43454
+ /**
43455
+ * The **resolved** write-path mode: `"transpile"` or `"ingest"` (see
43456
+ * {@link SourceWriteMode}).
43457
+ *
43458
+ * Always echoed, including when the caller omitted `mode` and the default applied —
43459
+ * otherwise the default is invisible and a later 409 on ingest reads as arbitrary.
43460
+ * Typed as `string` for the reason given on {@link SourceSummaryDto.mode}.
43461
+ */
43462
+ mode: string;
43463
+ /**
43464
+ * The write-path modes this source's adapter can serve (#71) — the same set
43465
+ * {@link SourcesClient.getSource | getSource} reports. Always contains
43466
+ * `'ingest'`; contains `'transpile'` only when the adapter executes
43467
+ * transpiled SQL. Echoed at registration so a client learns, at the moment
43468
+ * the choice is made, whether `transpile` was even on the table (a mode
43469
+ * change requires DELETE + re-register).
43470
+ */
43471
+ supportedModes: string[];
43100
43472
  /** Status message. */
43101
43473
  message: string;
43102
43474
  }
@@ -43119,6 +43491,65 @@ interface SourceDetailResponse {
43119
43491
  sourceType: string;
43120
43492
  /** Whether the source is currently available. */
43121
43493
  available: boolean;
43494
+ /**
43495
+ * Resolved write-path mode: `"transpile"` or `"ingest"` (see {@link SourceWriteMode}).
43496
+ * Typed as `string` for the reason given on {@link SourceSummaryDto.mode}.
43497
+ */
43498
+ mode: string;
43499
+ /**
43500
+ * The write-path modes this source's adapter can actually serve (#71).
43501
+ *
43502
+ * Always contains `'ingest'` — every adapter can materialize. Contains
43503
+ * `'transpile'` only when the adapter executes transpiled SQL, which is what
43504
+ * a live view requires. A client rendering a mode selector should offer
43505
+ * exactly these, rather than hard-coding a list of source types: the set is
43506
+ * derived from the adapter's declared capability, so it stays correct as
43507
+ * adapters gain the ability.
43508
+ */
43509
+ supportedModes: string[];
43510
+ }
43511
+ /**
43512
+ * One registrable source TYPE and its capabilities (#71).
43513
+ *
43514
+ * @remarks
43515
+ * The pre-registration half of the mode-discovery surface: a client rendering
43516
+ * a "new source" picker asks {@link SourcesClient.listSourceTypes} which types
43517
+ * this build can register and which write-path modes each would serve — BEFORE
43518
+ * any source exists. The per-source half ({@link SourceDetailResponse}) answers
43519
+ * the same mode question for a source that does.
43520
+ */
43521
+ interface SourceTypeDto {
43522
+ /** Canonical type string accepted by `POST /api/v1/sources` (e.g. `"mysql"`). */
43523
+ sourceType: string;
43524
+ /**
43525
+ * Alternate spellings registration also accepts (e.g. `"postgresql"` for
43526
+ * `"postgres"`). A picker that lets the user type a type name should accept
43527
+ * these as equivalent.
43528
+ */
43529
+ aliases: string[];
43530
+ /**
43531
+ * Whether this build can register the type. `false` means the adapter is
43532
+ * behind a cargo feature that is not compiled in: registration would be
43533
+ * refused, so a picker should not offer it (or should show it disabled).
43534
+ */
43535
+ available: boolean;
43536
+ /**
43537
+ * The write-path modes this type's adapter can serve: always `'ingest'`,
43538
+ * plus `'transpile'` when the adapter executes transpiled SQL. The same set
43539
+ * the per-source endpoints report after registration.
43540
+ */
43541
+ supportedModes: string[];
43542
+ }
43543
+ /**
43544
+ * Response listing the registrable source types of this build (#71).
43545
+ *
43546
+ * @remarks
43547
+ * Returned by `GET /api/v1/sources/types`. Static per build — no tenant state
43548
+ * is consulted — so the catalog is the same for every caller of a given build.
43549
+ */
43550
+ interface ListSourceTypesResponse {
43551
+ /** Every source type the registration factory knows how to build. */
43552
+ types: SourceTypeDto[];
43122
43553
  }
43123
43554
  /**
43124
43555
  * One discoverable type of a source, as reported by the cheap name-only listing.
@@ -43255,15 +43686,18 @@ type sources_DiscoveredSortDto = DiscoveredSortDto;
43255
43686
  type sources_DiscoveredSourceRelationDto = DiscoveredSourceRelationDto;
43256
43687
  type sources_IngestFromSourceRequest = IngestFromSourceRequest;
43257
43688
  type sources_IngestFromSourceResponse = IngestFromSourceResponse;
43689
+ type sources_ListSourceTypesResponse = ListSourceTypesResponse;
43258
43690
  type sources_ListSourcesResponse = ListSourcesResponse;
43259
43691
  type sources_ListTablesResponse = ListTablesResponse;
43260
43692
  type sources_RegisterSourceRequest = RegisterSourceRequest;
43261
43693
  type sources_RegisterSourceResponse = RegisterSourceResponse;
43262
43694
  type sources_SourceDetailResponse = SourceDetailResponse;
43263
43695
  type sources_SourceSummaryDto = SourceSummaryDto;
43696
+ type sources_SourceTypeDto = SourceTypeDto;
43697
+ type sources_SourceWriteMode = SourceWriteMode;
43264
43698
  type sources_StructuredIngestionStatsDto = StructuredIngestionStatsDto;
43265
43699
  declare namespace sources {
43266
- export type { sources_DiscoverSchemaRequest as DiscoverSchemaRequest, sources_DiscoverSchemaResponse as DiscoverSchemaResponse, sources_DiscoverableTypeDto as DiscoverableTypeDto, sources_DiscoveredFeatureDto as DiscoveredFeatureDto, sources_DiscoveredSortDto as DiscoveredSortDto, sources_DiscoveredSourceRelationDto as DiscoveredSourceRelationDto, sources_IngestFromSourceRequest as IngestFromSourceRequest, sources_IngestFromSourceResponse as IngestFromSourceResponse, sources_ListSourcesResponse as ListSourcesResponse, sources_ListTablesResponse as ListTablesResponse, sources_RegisterSourceRequest as RegisterSourceRequest, sources_RegisterSourceResponse as RegisterSourceResponse, sources_SourceDetailResponse as SourceDetailResponse, sources_SourceSummaryDto as SourceSummaryDto, sources_StructuredIngestionStatsDto as StructuredIngestionStatsDto };
43700
+ export type { sources_DiscoverSchemaRequest as DiscoverSchemaRequest, sources_DiscoverSchemaResponse as DiscoverSchemaResponse, sources_DiscoverableTypeDto as DiscoverableTypeDto, sources_DiscoveredFeatureDto as DiscoveredFeatureDto, sources_DiscoveredSortDto as DiscoveredSortDto, sources_DiscoveredSourceRelationDto as DiscoveredSourceRelationDto, sources_IngestFromSourceRequest as IngestFromSourceRequest, sources_IngestFromSourceResponse as IngestFromSourceResponse, sources_ListSourceTypesResponse as ListSourceTypesResponse, sources_ListSourcesResponse as ListSourcesResponse, sources_ListTablesResponse as ListTablesResponse, sources_RegisterSourceRequest as RegisterSourceRequest, sources_RegisterSourceResponse as RegisterSourceResponse, sources_SourceDetailResponse as SourceDetailResponse, sources_SourceSummaryDto as SourceSummaryDto, sources_SourceTypeDto as SourceTypeDto, sources_SourceWriteMode as SourceWriteMode, sources_StructuredIngestionStatsDto as StructuredIngestionStatsDto };
43267
43701
  }
43268
43702
 
43269
43703
  /**
@@ -43283,10 +43717,66 @@ declare class SourcesClient {
43283
43717
  /**
43284
43718
  * Register a new data source.
43285
43719
  *
43286
- * @param request - Source registration request.
43287
- * @returns Registration result.
43720
+ * @param request - Source registration request. Set `mode` to declare the write-path
43721
+ * intent (`'transpile'` for live SQL views, `'ingest'` to materialize rows as
43722
+ * Ψ-term facts); omit it to take the default, which is `'ingest'` for every
43723
+ * source type (#71).
43724
+ * @returns Registration result. `mode` always carries the **resolved** write-path
43725
+ * mode, including when the default applied; `supportedModes` advertises which
43726
+ * modes this source's adapter can serve.
43727
+ * @throws {ApiError} If registration fails, with **422** if `mode` is not one of
43728
+ * `transpile` / `ingest`, or with **422** if `mode: 'transpile'` is requested
43729
+ * for a source whose adapter cannot execute transpiled SQL (a live view over it
43730
+ * could never be queried).
43731
+ *
43732
+ * @remarks
43733
+ * Registering with `mode: 'transpile'` makes {@link SourcesClient.ingest} refuse this
43734
+ * source with a **409** — materializing a transpiled source would create a second,
43735
+ * divergent namespace over the same rows. To learn which types accept `transpile`
43736
+ * before registering, call {@link SourcesClient.listSourceTypes}.
43737
+ *
43738
+ * @example
43739
+ * ```typescript
43740
+ * const result = await client.sources.register({
43741
+ * sourceId: 'crm_postgres',
43742
+ * sourceName: 'CRM PostgreSQL',
43743
+ * sourceType: 'postgres',
43744
+ * config: { connection_string: 'postgres://user:pass@host/db' },
43745
+ * mode: 'ingest',
43746
+ * });
43747
+ * console.log(result.mode); // 'ingest'
43748
+ * console.log(result.supportedModes); // ['ingest', 'transpile']
43749
+ * ```
43288
43750
  */
43289
43751
  register(request: RegisterSourceRequest): Promise<RegisterSourceResponse>;
43752
+ /**
43753
+ * List the source types this build can register, with their mode capabilities.
43754
+ *
43755
+ * @returns Every registrable source type, its availability in this build, and the
43756
+ * write-path modes each would serve — before any source exists.
43757
+ * @throws {ApiError} If the request fails.
43758
+ *
43759
+ * @remarks
43760
+ * Sent to `GET /api/v1/sources/types`. The pre-registration half of #71's
43761
+ * mode-discovery surface: a client rendering a "new source" picker learns, at
43762
+ * type-selection time, which types registration would accept (`available` — a
43763
+ * type behind an uncompiled cargo feature is `false`) and which modes each
43764
+ * would serve (`supportedModes` — always `'ingest'`, plus `'transpile'` only
43765
+ * for the SQL engines). Static per build, so no tenant state is consulted.
43766
+ *
43767
+ * Drive a mode selector from `supportedModes` rather than a hard-coded list of
43768
+ * source types: the set is the adapter's declared capability, so it stays
43769
+ * correct as adapters gain the ability (MySQL and SQLite did in #70).
43770
+ *
43771
+ * @example
43772
+ * ```typescript
43773
+ * const { types } = await client.sources.listSourceTypes();
43774
+ * const postgres = types.find((t) => t.sourceType === 'postgres');
43775
+ * console.log(postgres?.supportedModes); // ['ingest', 'transpile']
43776
+ * console.log(postgres?.aliases); // ['postgresql']
43777
+ * ```
43778
+ */
43779
+ listSourceTypes(): Promise<ListSourceTypesResponse>;
43290
43780
  /**
43291
43781
  * List all registered data sources.
43292
43782
  *
@@ -52280,6 +52770,14 @@ declare class Osfql<SecurityDataType = unknown> {
52280
52770
  interface OsfqlRequest {
52281
52771
  /** The OSFQL program text (one or more statements separated by `;`). */
52282
52772
  query: string;
52773
+ /**
52774
+ * Opt into **reactive (streaming) mode**: after the program runs, any suspended
52775
+ * `AWAIT` demon whose trigger is now satisfied fires automatically — no explicit
52776
+ * `RELEASE RESIDUATIONS` needed.
52777
+ *
52778
+ * @defaultValue `false` — demons stay suspended until an explicit RELEASE.
52779
+ */
52780
+ reactive?: boolean;
52283
52781
  }
52284
52782
  /**
52285
52783
  * A nested Psi-term returned by a `FETCH` clause.
@@ -52290,12 +52788,22 @@ interface OsfqlRequest {
52290
52788
  * no separate document type. A shared or cyclic reference that was left un-inlined appears as
52291
52789
  * an {@link OsfqlValue} `term_ref` instead, preserving coreference identity.
52292
52790
  *
52293
- * `features` is untyped on the wire (the backend schema elides the recursion into
52294
- * `OsfqlValue`), so consumers must narrow it themselves.
52791
+ * Serialized as `{"sort": "person", "features": {"name": {"type": "string", "value": "Alice"}}}`.
52792
+ * The backend publishes `features` as a free-form JSON object
52793
+ * (`#[schema(value_type = Object)]`), which erases the recursion; the Rust type is
52794
+ * `BTreeMap<String, OsfqlValueDto>`, so the SDK ships the true recursive shape.
52795
+ *
52796
+ * @example
52797
+ * ```typescript
52798
+ * const term: OsfqlTermValue = {
52799
+ * sort: 'person',
52800
+ * features: { name: { type: 'string', value: 'Alice' } },
52801
+ * };
52802
+ * ```
52295
52803
  */
52296
52804
  interface OsfqlTermValue {
52297
52805
  /** The term's named features, each resolved to a nested value. */
52298
- features: object;
52806
+ features: Record<string, OsfqlValue>;
52299
52807
  /** The term's sort name. */
52300
52808
  sort: string;
52301
52809
  }
@@ -52305,10 +52813,27 @@ interface OsfqlTermValue {
52305
52813
  * @remarks
52306
52814
  * Uses a tagged discriminated union with `type` as the discriminant. The discriminants are
52307
52815
  * **lowercase** on the wire (`"string"`, not `"String"`) — this is *not* the tagged
52308
- * `ValueDto` format used by term CRUD.
52816
+ * `ValueDto` format used by term CRUD, and not the untagged `FeatureValueDto` inference
52817
+ * format. The Rust DTO is adjacently tagged (`#[serde(tag = "type", content = "value")]`),
52818
+ * so every non-`null` variant carries its payload under a single `value` key.
52819
+ *
52820
+ * The union is genuinely recursive: `list` holds `Vec<OsfqlValueDto>` and a `term`'s
52821
+ * `features` hold `BTreeMap<String, OsfqlValueDto>`. The backend erases both with
52822
+ * `#[schema(value_type = ...Object)]`, so the SDK hand-writes the recursion against the
52823
+ * Rust source rather than degrading the nested payloads to `object`.
52824
+ *
52825
+ * The property-graph endpoints return this exact DTO — {@link PropertyGraphValue} is an
52826
+ * alias of this type.
52309
52827
  *
52310
- * The `list` and `term` payloads are untyped on the wire (the backend schema elides the
52311
- * recursion back into `OsfqlValue`), so their nested contents must be narrowed by the caller.
52828
+ * @example
52829
+ * ```typescript
52830
+ * const text: OsfqlValue = { type: 'string', value: 'Alice' };
52831
+ * const list: OsfqlValue = { type: 'list', value: [{ type: 'integer', value: 1 }] };
52832
+ * const term: OsfqlValue = {
52833
+ * type: 'term',
52834
+ * value: { sort: 'person', features: { name: text } },
52835
+ * };
52836
+ * ```
52312
52837
  */
52313
52838
  type OsfqlValue = {
52314
52839
  type: 'null';
@@ -52326,7 +52851,7 @@ type OsfqlValue = {
52326
52851
  value: boolean;
52327
52852
  } | {
52328
52853
  type: 'list';
52329
- value: object[];
52854
+ value: OsfqlValue[];
52330
52855
  } | {
52331
52856
  type: 'term_ref';
52332
52857
  value: string;
@@ -52457,15 +52982,28 @@ declare class OsfqlClient {
52457
52982
  * Execute an OSFQL program.
52458
52983
  *
52459
52984
  * @param query - The OSFQL program text (one or more statements separated by `;`).
52985
+ * @param options - Optional execution options. Set `reactive` to fire suspended
52986
+ * `AWAIT` demons whose triggers the program has just satisfied.
52460
52987
  * @returns The execution result including variable bindings, produced term IDs,
52461
52988
  * defined sort IDs, diagnostics, and statement count.
52462
52989
  * @throws {ApiError} If the request fails.
52990
+ * @throws {ReasoningLayerError} If the server returns bindings that do not satisfy the
52991
+ * published {@link OsfqlValue} contract.
52463
52992
  *
52464
52993
  * @remarks
52465
52994
  * The query is parsed, compiled, and executed against the caller's tenant-isolated
52466
52995
  * knowledge base. Results include variable bindings from MATCH queries and IDs of
52467
52996
  * any terms or sorts created by INSERT, DERIVE, or DEFINE statements.
52468
52997
  *
52998
+ * Bindings use the **tagged** {@link OsfqlValue} format with lowercase `type`
52999
+ * discriminators — not the PascalCase `ValueDto` term-CRUD format.
53000
+ *
53001
+ * `reactive` opts into **reactive (streaming) mode**: once the program has run,
53002
+ * any suspended `AWAIT` demon whose trigger is now satisfied fires
53003
+ * automatically, with no explicit `RELEASE RESIDUATIONS` statement. It defaults
53004
+ * to `false` — demons stay suspended until an explicit RELEASE — so omitting it
53005
+ * leaves the request byte-identical to before.
53006
+ *
52469
53007
  * @example
52470
53008
  * ```typescript
52471
53009
  * // Insert a record and query it back
@@ -52476,9 +53014,19 @@ declare class OsfqlClient {
52476
53014
  * console.log(result.bindings); // [{ N: { type: "string", value: "Alice" } }]
52477
53015
  * console.log(result.producedTermIds); // ["<uuid>"]
52478
53016
  * console.log(result.statementCount); // 2
53017
+ *
53018
+ * // Let an AWAIT demon fire as soon as its trigger is satisfied
53019
+ * await client.osfql.execute('AWAIT person(name: "Bob");');
53020
+ * const reactive = await client.osfql.execute(
53021
+ * 'INSERT person(name: "Bob", age: 41);',
53022
+ * { reactive: true },
53023
+ * );
53024
+ * console.log(reactive.producedTermIds); // includes the demon's own output
52479
53025
  * ```
52480
53026
  */
52481
- execute(query: string): Promise<OsfqlResponse>;
53027
+ execute(query: string, options?: {
53028
+ reactive?: boolean;
53029
+ }): Promise<OsfqlResponse>;
52482
53030
  /**
52483
53031
  * Diagnose an OSFQL program for contradictions and inconsistencies.
52484
53032
  *
@@ -52568,6 +53116,30 @@ interface ConversationMessageRequest {
52568
53116
  currentSortContext?: string | null;
52569
53117
  /** When true, generate a cryptographic validity certificate for this response. */
52570
53118
  generateCertificate?: boolean;
53119
+ /**
53120
+ * Per-request override for constrained-decode repair of a hallucinated query.
53121
+ *
53122
+ * @remarks
53123
+ * `false` disables the repair — the certify-or-abstain gate just abstains, surfacing
53124
+ * the raw model output. `true` / omitted keep the default (repair when configured).
53125
+ * Lets a UI toggle constrained decoding to compare the correction against the raw
53126
+ * query. See {@link ConversationMessageResponse.repaired}.
53127
+ */
53128
+ constrainedDecode?: boolean | null;
53129
+ /**
53130
+ * Model id selecting which served NL→OSFQL endpoint answers this turn.
53131
+ *
53132
+ * @remarks
53133
+ * Omitted means the server's default LLM. Drives side-by-side model comparison —
53134
+ * one call per model — and is echoed back as
53135
+ * {@link ConversationMessageResponse.modelId}, which the server populates only
53136
+ * when this is set.
53137
+ *
53138
+ * The backend documents the ids as coming from a compare registry at
53139
+ * `GET /api/v1/conversation/models`, but that route is absent from the published
53140
+ * OpenAPI spec, so the SDK does not wrap it; ids must come from configuration.
53141
+ */
53142
+ model?: string | null;
52571
53143
  }
52572
53144
  /**
52573
53145
  * A proof trace node for backward chaining derivation trees.
@@ -52784,6 +53356,36 @@ interface ConversationMessageResponse {
52784
53356
  validityCertificateHash?: string | null;
52785
53357
  /** ID of the validity certificate (if generate_certificate was true). */
52786
53358
  validityCertificateId?: string | null;
53359
+ /**
53360
+ * Hex SHA-256 of the rule program active when the validity certificate was issued —
53361
+ * the durable "which rule version served this proof" pin.
53362
+ */
53363
+ validityCertificateRuleProgramHash?: string | null;
53364
+ /**
53365
+ * In-process rule-program revision ordinal at issuance. Present only when
53366
+ * rule-revision tracking is enabled on the executing store.
53367
+ */
53368
+ validityCertificateRuleRevision?: number | null;
53369
+ /**
53370
+ * The model id (compare registry) that produced this turn, when a per-request model
53371
+ * was set — so a UI can label which model a side-by-side column came from.
53372
+ */
53373
+ modelId?: string | null;
53374
+ /**
53375
+ * Prompt-prefill wall-clock (ms) for the NL→OSFQL generation — the one-time cost
53376
+ * before decoding begins.
53377
+ *
53378
+ * @remarks
53379
+ * Surfaced beside {@link tokensPerSec} (which is *decode-only* on the device path) so
53380
+ * a short query's prefill is visible instead of crushing the apparent rate. Absent
53381
+ * unless measured.
53382
+ */
53383
+ prefillMs?: number | null;
53384
+ /**
53385
+ * Decode throughput for the NL→OSFQL generation, in tokens/second (wall-clock of the
53386
+ * LLM call ÷ generated tokens). Approximate; surfaced for model comparison.
53387
+ */
53388
+ tokensPerSec?: number | null;
52787
53389
  }
52788
53390
  /**
52789
53391
  * A single conversation turn (message).
@@ -58685,56 +59287,33 @@ interface PropertyGraphQueryRequest {
58685
59287
  * A bound value returned by a property-graph query after lowering to OSFQL.
58686
59288
  *
58687
59289
  * @remarks
59290
+ * An alias of {@link OsfqlValue}: the property-graph endpoints return the very
59291
+ * same backend DTO (`OsfqlValueDto` — see `bindings: Vec<BTreeMap<String,
59292
+ * OsfqlValueDto>>` on the Rust `PropertyGraphExecuteResponse`), because a
59293
+ * GQL/Cypher/Gremlin query is lowered to OSFQL and executed by the OSFQL engine.
59294
+ * The alias is kept so the property-graph surface reads in its own vocabulary
59295
+ * while there remains exactly one definition of the shape.
59296
+ *
58688
59297
  * Uses **tagged** serialization with a lowercase `type` discriminator
58689
59298
  * (e.g. `{"type": "string", "value": "Alice"}`). This is the OSFQL binding
58690
59299
  * value format — *not* the `ValueDto` term-CRUD format (which uses PascalCase
58691
59300
  * tags such as `{"type": "String", ...}`) and not the untagged
58692
59301
  * `FeatureValueDto` inference format.
58693
59302
  *
58694
- * The `list` and `term` variants carry values the OpenAPI schema erases
58695
- * (the union is recursive on the backend): `list.value` elements and
58696
- * `term.value.features` entries are themselves values of this shape.
59303
+ * The union is recursive: `list.value` elements and `term.value.features`
59304
+ * entries are themselves values of this shape.
58697
59305
  *
58698
59306
  * @example
58699
59307
  * ```typescript
58700
59308
  * const value: PropertyGraphValue = { type: 'string', value: 'Alice' };
58701
59309
  * const nothing: PropertyGraphValue = { type: 'null' };
59310
+ * const person: PropertyGraphValue = {
59311
+ * type: 'term',
59312
+ * value: { sort: 'person', features: { name: value } },
59313
+ * };
58702
59314
  * ```
58703
59315
  */
58704
- type PropertyGraphValue = {
58705
- type: 'null';
58706
- } | {
58707
- type: 'integer';
58708
- value: number;
58709
- } | {
58710
- type: 'float';
58711
- value: number;
58712
- } | {
58713
- type: 'string';
58714
- value: string;
58715
- } | {
58716
- type: 'boolean';
58717
- value: boolean;
58718
- } | {
58719
- type: 'list';
58720
- value: object[];
58721
- } | {
58722
- type: 'term_ref';
58723
- value: string;
58724
- } | {
58725
- type: 'term';
58726
- /**
58727
- * A nested Psi-term: the term's sort name plus its named features, each
58728
- * resolved to a nested value. Coreference is inlined into containment;
58729
- * a cycle or an already-materialized shared term appears as `term_ref`.
58730
- */
58731
- value: {
58732
- /** The term's sort name. */
58733
- sort: string;
58734
- /** The term's named features, each resolved to a nested value. */
58735
- features: object;
58736
- };
58737
- };
59316
+ type PropertyGraphValue = OsfqlValue;
58738
59317
  /**
58739
59318
  * Execution result for a GQL/Cypher/Gremlin query after lowering to OSFQL.
58740
59319
  *
@@ -58853,6 +59432,12 @@ declare class PropertyGraphClient {
58853
59432
  private readonly api;
58854
59433
  /** @internal */
58855
59434
  constructor(api: PropertyGraph);
59435
+ /**
59436
+ * Parse an execution response, failing loudly on a contract violation.
59437
+ *
59438
+ * @internal
59439
+ */
59440
+ private static parseExecuteResponse;
58856
59441
  /**
58857
59442
  * Execute a Cypher query.
58858
59443
  *
@@ -58860,6 +59445,8 @@ declare class PropertyGraphClient {
58860
59445
  * @returns Execution result: bindings, the OSFQL program that ran, produced term IDs,
58861
59446
  * defined sort IDs, diagnostics, compatibility notes, and the statement count.
58862
59447
  * @throws {ApiError} If the query cannot be parsed, cannot be lowered to OSFQL, or fails to execute.
59448
+ * @throws {ReasoningLayerError} If the server returns bindings that do not satisfy the
59449
+ * published {@link PropertyGraphValue} contract.
58863
59450
  *
58864
59451
  * @remarks
58865
59452
  * The query is parsed as Cypher, lowered to OSFQL, and executed against the
@@ -58883,6 +59470,8 @@ declare class PropertyGraphClient {
58883
59470
  * @returns Execution result: bindings, the OSFQL program that ran, produced term IDs,
58884
59471
  * defined sort IDs, diagnostics, compatibility notes, and the statement count.
58885
59472
  * @throws {ApiError} If the query cannot be parsed, cannot be lowered to OSFQL, or fails to execute.
59473
+ * @throws {ReasoningLayerError} If the server returns bindings that do not satisfy the
59474
+ * published {@link PropertyGraphValue} contract.
58886
59475
  *
58887
59476
  * @remarks
58888
59477
  * The query is parsed as GQL, lowered to OSFQL, and executed against the
@@ -58906,6 +59495,8 @@ declare class PropertyGraphClient {
58906
59495
  * @returns Execution result: bindings, the OSFQL program that ran, produced term IDs,
58907
59496
  * defined sort IDs, diagnostics, compatibility notes, and the statement count.
58908
59497
  * @throws {ApiError} If the traversal cannot be parsed, cannot be lowered to OSFQL, or fails to execute.
59498
+ * @throws {ReasoningLayerError} If the server returns bindings that do not satisfy the
59499
+ * published {@link PropertyGraphValue} contract.
58909
59500
  *
58910
59501
  * @remarks
58911
59502
  * The traversal is parsed as Gremlin, lowered to OSFQL, and executed against the
@@ -59610,31 +60201,109 @@ declare class OsfDiff<SecurityDataType = unknown> {
59610
60201
  }
59611
60202
 
59612
60203
  /**
59613
- * Selector identifying one side of an OSF diff.
60204
+ * Selects a set of Psi-terms to diff.
59614
60205
  *
59615
60206
  * @remarks
59616
- * A tagged JSON object naming *what* to diff for example a document
59617
- * (`{"type": "document", "document_id": "..."}`), or another supported subject
59618
- * of the knowledge base. The backend OpenAPI schema exposes this as a free-form
59619
- * JSON object, so the SDK ships it opaquely rather than inventing a variant set
59620
- * that the server does not publish.
60207
+ * A union discriminated by `type`. The OSF diff engine compares **any two sets
60208
+ * of OSF terms** — a document is just one way to select a set; others are
60209
+ * collections, sorts, OSFQL query results, snapshots, or points in time.
60210
+ * `snapshot` and `as_of` accept an optional nested `filter`, so selections
60211
+ * compose recursively (e.g. "the terms of sort `clause` as of 2026-01-01").
60212
+ *
60213
+ * This is the canonical definition, mirroring the backend, where the enum lives
60214
+ * in the OSF diff module (`osfkb_domain::extraction::osf_diff::TermSetSelector`)
60215
+ * and is imported by the temporal-series and coherence endpoints. The temporal
60216
+ * surface re-exports it — there is exactly one definition.
60217
+ *
60218
+ * Serialized to the wire as a tagged snake_case object — for example
60219
+ * `{"type":"sort","sort_name":"clause","include_descendants":true}`. This is a
60220
+ * plain JSON tagged union, **not** the tagged `ValueDto` value format. The SDK
60221
+ * surface is camelCase (`sortName`); the normalizer converts it at the boundary.
59621
60222
  *
59622
- * Selector keys are wire-format (snake_case) they are passed through unchanged.
60223
+ * The backend publishes the selector as a free-form JSON object
60224
+ * (`#[schema(value_type = Object)]`), which erases the union in the OpenAPI
60225
+ * spec; the SDK hand-writes it against the Rust source, whose own doc comment
60226
+ * states "the variants double as the wire format".
59623
60227
  *
59624
60228
  * @example
59625
60229
  * ```typescript
59626
- * const selector: OsfDiffSelector = { type: 'document', document_id: '3f0c...' };
60230
+ * const byDocument: TermSetSelector = { type: 'document', documentId: '3f0c...' };
60231
+ * const bySort: TermSetSelector = { type: 'sort', sortName: 'clause', includeDescendants: true };
60232
+ * const historic: TermSetSelector = { type: 'as_of', at: '2026-01-01T00:00:00Z', filter: bySort };
59627
60233
  * ```
59628
60234
  */
59629
- type OsfDiffSelector = object;
60235
+ type TermSetSelector =
60236
+ /** All terms extracted from one document. */
60237
+ {
60238
+ type: 'document';
60239
+ documentId: string;
60240
+ }
60241
+ /** Alias of `document` used by the version-chain endpoints. */
60242
+ | {
60243
+ type: 'document_version';
60244
+ documentId: string;
60245
+ }
60246
+ /** Union of all documents in a collection path. */
60247
+ | {
60248
+ type: 'collection';
60249
+ path: string;
60250
+ }
60251
+ /** An explicit list of term IDs. */
60252
+ | {
60253
+ type: 'term_ids';
60254
+ ids: string[];
60255
+ }
60256
+ /** All terms of a sort (optionally including descendant sorts). */
60257
+ | {
60258
+ type: 'sort';
60259
+ sortName: string;
60260
+ includeDescendants?: boolean;
60261
+ }
60262
+ /** The result set of an OSFQL FINDALL/MATCH query. */
60263
+ | {
60264
+ type: 'query';
60265
+ osfql: string;
60266
+ }
60267
+ /** The set as captured in a tenant snapshot (optionally filtered). */
60268
+ | {
60269
+ type: 'snapshot';
60270
+ snapshotId: string;
60271
+ filter?: TermSetSelector;
60272
+ }
60273
+ /** The set as of a timestamp (RFC 3339), optionally filtered. */
60274
+ | {
60275
+ type: 'as_of';
60276
+ at: string;
60277
+ filter?: TermSetSelector;
60278
+ };
60279
+ /**
60280
+ * Selector identifying one side of an OSF diff.
60281
+ *
60282
+ * @remarks
60283
+ * An alias of {@link TermSetSelector}, the union the OSF diff endpoints resolve.
60284
+ * The name is kept because the diff surface names its inputs "selectors".
60285
+ *
60286
+ * @example
60287
+ * ```typescript
60288
+ * const selector: OsfDiffSelector = { type: 'document', documentId: '3f0c...' };
60289
+ * ```
60290
+ */
60291
+ type OsfDiffSelector = TermSetSelector;
59630
60292
  /**
59631
60293
  * A serialized OSF diff report.
59632
60294
  *
59633
60295
  * @remarks
59634
- * The structural delta between the two sides of a diff (entity-level and,
59635
- * when requested, clause-level changes with their match degrees). The backend
59636
- * OpenAPI schema exposes the report as a free-form JSON object, so the SDK
59637
- * ships it opaquely; its keys are wire-format (snake_case).
60296
+ * The structural delta between the two sides of a diff: matched/added/removed
60297
+ * entities with their match degrees and provenance, plus, when requested,
60298
+ * clause-level changes with deontic strictness classification and contradiction
60299
+ * detection.
60300
+ *
60301
+ * Ships opaquely. The report is a large, still-evolving aggregate that the
60302
+ * backend publishes as a free-form JSON object (`#[schema(value_type = Object)]`),
60303
+ * so — unlike {@link TermSetSelector}, whose variants are a small fixed contract
60304
+ * the Rust documents as the wire format — pinning it in the SDK would freeze an
60305
+ * unstable shape and break consumers on every backend addition. Its keys are
60306
+ * wire-format (snake_case); narrow it yourself if you need to read it.
59638
60307
  *
59639
60308
  * @example
59640
60309
  * ```typescript
@@ -59648,9 +60317,9 @@ type OsfDiffReport = object;
59648
60317
  *
59649
60318
  * @remarks
59650
60319
  * The pairwise deltas across an ordered chain of three or more sides (e.g. the
59651
- * version chain of a document family). As with {@link OsfDiffReport}, the
59652
- * backend publishes no schema for the report body, so it ships opaquely with
59653
- * wire-format (snake_case) keys.
60320
+ * version chain of a document family). Ships opaquely for the same reason as
60321
+ * {@link OsfDiffReport}: it is a large, still-evolving aggregate published as a
60322
+ * free-form JSON object. Its keys are wire-format (snake_case).
59654
60323
  *
59655
60324
  * @example
59656
60325
  * ```typescript
@@ -59693,8 +60362,8 @@ interface TemporalPoint {
59693
60362
  * @example
59694
60363
  * ```typescript
59695
60364
  * const request: OsfDiffRequest = {
59696
- * a: { type: 'document', document_id: 'a1b2...' },
59697
- * b: { type: 'document', document_id: 'c3d4...' },
60365
+ * a: { type: 'document', documentId: 'a1b2...' },
60366
+ * b: { type: 'document', documentId: 'c3d4...' },
59698
60367
  * includeClauseDiff: true,
59699
60368
  * threshold: 0.8,
59700
60369
  * };
@@ -59778,7 +60447,7 @@ interface OsfDiffSequenceResponse {
59778
60447
  * const request: OsfDiffTemporalRequest = {
59779
60448
  * from: { at: '2026-01-01T00:00:00Z' },
59780
60449
  * to: {}, // live
59781
- * filter: { type: 'document', document_id: 'a1b2...' },
60450
+ * filter: { type: 'document', documentId: 'a1b2...' },
59782
60451
  * };
59783
60452
  * ```
59784
60453
  */
@@ -59831,8 +60500,9 @@ type osfDiff_OsfDiffSequenceRequest = OsfDiffSequenceRequest;
59831
60500
  type osfDiff_OsfDiffSequenceResponse = OsfDiffSequenceResponse;
59832
60501
  type osfDiff_OsfDiffTemporalRequest = OsfDiffTemporalRequest;
59833
60502
  type osfDiff_TemporalPoint = TemporalPoint;
60503
+ type osfDiff_TermSetSelector = TermSetSelector;
59834
60504
  declare namespace osfDiff {
59835
- export type { osfDiff_CompareDocumentsRequest as CompareDocumentsRequest, osfDiff_OsfDiffReport as OsfDiffReport, osfDiff_OsfDiffRequest as OsfDiffRequest, osfDiff_OsfDiffResponse as OsfDiffResponse, osfDiff_OsfDiffSelector as OsfDiffSelector, osfDiff_OsfDiffSequenceReport as OsfDiffSequenceReport, osfDiff_OsfDiffSequenceRequest as OsfDiffSequenceRequest, osfDiff_OsfDiffSequenceResponse as OsfDiffSequenceResponse, osfDiff_OsfDiffTemporalRequest as OsfDiffTemporalRequest, osfDiff_TemporalPoint as TemporalPoint };
60505
+ export type { osfDiff_CompareDocumentsRequest as CompareDocumentsRequest, osfDiff_OsfDiffReport as OsfDiffReport, osfDiff_OsfDiffRequest as OsfDiffRequest, osfDiff_OsfDiffResponse as OsfDiffResponse, osfDiff_OsfDiffSelector as OsfDiffSelector, osfDiff_OsfDiffSequenceReport as OsfDiffSequenceReport, osfDiff_OsfDiffSequenceRequest as OsfDiffSequenceRequest, osfDiff_OsfDiffSequenceResponse as OsfDiffSequenceResponse, osfDiff_OsfDiffTemporalRequest as OsfDiffTemporalRequest, osfDiff_TemporalPoint as TemporalPoint, osfDiff_TermSetSelector as TermSetSelector };
59836
60506
  }
59837
60507
 
59838
60508
  /**
@@ -59851,9 +60521,13 @@ declare namespace osfDiff {
59851
60521
  * - {@link OsfDiffClient.diffTemporal} — the same subject across two bitemporal points.
59852
60522
  * - {@link OsfDiffClient.compareDocuments} — the document-to-document convenience form.
59853
60523
  *
59854
- * Selectors and diff reports are free-form JSON objects on the wire (the backend
59855
- * publishes no schema for their bodies), so they ship opaquely with snake_case
59856
- * keys. No tagged/untagged value serialization is involved on these endpoints.
60524
+ * Selectors are typed: {@link TermSetSelector} (aliased as {@link OsfDiffSelector})
60525
+ * is a `type`-discriminated union covering documents, collections, sorts, OSFQL
60526
+ * queries, snapshots, and points in time. The SDK surface is camelCase and the
60527
+ * normalizer converts it to the tagged snake_case wire object at the boundary.
60528
+ * The diff *reports* remain opaque snake_case JSON — they are large, still-evolving
60529
+ * aggregates the backend publishes without a schema. No tagged/untagged value
60530
+ * serialization is involved on these endpoints.
59857
60531
  *
59858
60532
  * Delegates to generated route classes for type-safe HTTP calls.
59859
60533
  */
@@ -59873,13 +60547,14 @@ declare class OsfDiffClient {
59873
60547
  * Entities are matched by OSF unification; `threshold` (default 0.7) is the
59874
60548
  * minimum match degree at which two entities are considered the same. Set
59875
60549
  * `includeClauseDiff` / `includeEntityDiff` to control which deltas the report
59876
- * carries. Selectors and the report are opaque wire-format JSON objects.
60550
+ * carries. Each side is a typed {@link OsfDiffSelector}; the report is an opaque
60551
+ * wire-format JSON object.
59877
60552
  *
59878
60553
  * @example
59879
60554
  * ```typescript
59880
60555
  * const result = await client.osfDiff.diff({
59881
- * a: { type: 'document', document_id: 'a1b2c3d4-...' },
59882
- * b: { type: 'document', document_id: 'e5f6a7b8-...' },
60556
+ * a: { type: 'document', documentId: 'a1b2c3d4-...' },
60557
+ * b: { type: 'document', documentId: 'e5f6a7b8-...' },
59883
60558
  * includeClauseDiff: true,
59884
60559
  * threshold: 0.8,
59885
60560
  * });
@@ -59931,7 +60606,7 @@ declare class OsfDiffClient {
59931
60606
  * const result = await client.osfDiff.diffTemporal({
59932
60607
  * from: { at: '2026-01-01T00:00:00Z' },
59933
60608
  * to: {}, // live
59934
- * filter: { type: 'document', document_id: 'a1b2c3d4-...' },
60609
+ * filter: { type: 'document', documentId: 'a1b2c3d4-...' },
59935
60610
  * });
59936
60611
  * console.log(result.report);
59937
60612
  * ```
@@ -60807,12 +61482,19 @@ declare class SatClient {
60807
61482
  * Solver statistics are attached to every branch.
60808
61483
  * @throws {ApiError} If the request fails (e.g. a literal references a variable
60809
61484
  * index `>= numVars`, or a clause is empty).
61485
+ * @throws {ValidationError} If a `satisfiable` verdict arrives without a
61486
+ * well-formed Boolean model, which violates the endpoint contract.
60810
61487
  *
60811
61488
  * @remarks
60812
61489
  * Narrow on `result` to reach the model — it exists only on the `satisfiable`
60813
61490
  * branch. `maxConflicts: 0` (the default) means an unlimited budget, in which
60814
61491
  * case `unknown` cannot be returned.
60815
61492
  *
61493
+ * The model is index-aligned with the variables (`model[i]` is the value of
61494
+ * variable `i`). A `satisfiable` response whose model is missing or holds a
61495
+ * non-Boolean is reported as a {@link ValidationError} rather than silently
61496
+ * shortened — dropping an entry would shift every later variable's assignment.
61497
+ *
60816
61498
  * Plain JSON serialization: literals are `{ var, negated }` objects and the
60817
61499
  * model is a `boolean[]` indexed by variable number. No tagged `ValueDto` or
60818
61500
  * untagged `FeatureValueDto` encoding is used.
@@ -61889,54 +62571,7 @@ interface TemporalModelCheckResponse {
61889
62571
  /** A counterexample witness from the first failing initial state, when one could be extracted. */
61890
62572
  counterexample?: CtlCounterExample;
61891
62573
  }
61892
- /**
61893
- * Selects the set of Ψ-terms a temporal series is built from.
61894
- *
61895
- * @remarks
61896
- * A union discriminated by `type`, resolved tenant-scoped by the same backend
61897
- * resolver the OSF diff endpoints use. `snapshot` and `asOf` accept an optional
61898
- * nested `filter` selector, so selections compose recursively (e.g. "the terms
61899
- * of sort `reading` as of 2026-01-01").
61900
- *
61901
- * Serialized to the wire as a tagged snake_case object — for example
61902
- * `{"type":"sort","sort_name":"reading","include_descendants":true}`. This is a
61903
- * plain JSON tagged union, **not** the tagged `ValueDto` value format.
61904
- *
61905
- * @example
61906
- * ```typescript
61907
- * const bySort: TermSetSelector = { type: 'sort', sortName: 'sensor_reading', includeDescendants: true };
61908
- * const byIds: TermSetSelector = { type: 'term_ids', ids: ['3f0c...', '7a1b...'] };
61909
- * const historic: TermSetSelector = { type: 'as_of', at: '2026-01-01T00:00:00Z', filter: bySort };
61910
- * ```
61911
- */
61912
- type TermSetSelector = {
61913
- type: 'document';
61914
- documentId: string;
61915
- } | {
61916
- type: 'document_version';
61917
- documentId: string;
61918
- } | {
61919
- type: 'collection';
61920
- path: string;
61921
- } | {
61922
- type: 'term_ids';
61923
- ids: string[];
61924
- } | {
61925
- type: 'sort';
61926
- sortName: string;
61927
- includeDescendants?: boolean;
61928
- } | {
61929
- type: 'query';
61930
- osfql: string;
61931
- } | {
61932
- type: 'snapshot';
61933
- snapshotId: string;
61934
- filter?: TermSetSelector;
61935
- } | {
61936
- type: 'as_of';
61937
- at: string;
61938
- filter?: TermSetSelector;
61939
- };
62574
+
61940
62575
  /**
61941
62576
  * Granularity of an integer epoch feature.
61942
62577
  *
@@ -64883,6 +65518,10 @@ type OntologyExportFormat = 'json' | 'turtle' | 'ntriples' | 'rdfxml' | 'jsonld'
64883
65518
  * `base` and `root` are query parameters; `format` selects the `Accept` header.
64884
65519
  * Omitting `root` exports the whole tenant schema.
64885
65520
  *
65521
+ * `root` is repeatable: pass an array to select several sub-lattices in one
65522
+ * export. It is serialized as a repeated parameter (`?root=a&root=b`), which is
65523
+ * what the backend parses.
65524
+ *
64886
65525
  * @example
64887
65526
  * ```typescript
64888
65527
  * const options: OntologyExportOptions = {
@@ -64890,6 +65529,12 @@ type OntologyExportFormat = 'json' | 'turtle' | 'ntriples' | 'rdfxml' | 'jsonld'
64890
65529
  * root: 'clinical_entity',
64891
65530
  * format: 'turtle',
64892
65531
  * };
65532
+ *
65533
+ * // Several sub-lattices in one export
65534
+ * const multi: OntologyExportOptions = {
65535
+ * root: ['clinical_entity', 'administrative_entity'],
65536
+ * format: 'turtle',
65537
+ * };
64893
65538
  * ```
64894
65539
  */
64895
65540
  interface OntologyExportOptions {
@@ -64904,10 +65549,15 @@ interface OntologyExportOptions {
64904
65549
  */
64905
65550
  format?: OntologyExportFormat;
64906
65551
  /**
64907
- * Restrict the export to the sub-lattice under this sort. Omit to export the
64908
- * whole tenant schema.
65552
+ * Restrict the export to the sub-lattice under this sort, or given an array —
65553
+ * to the union of the sub-lattices under each of these sorts. Omit to export
65554
+ * the whole tenant schema.
65555
+ *
65556
+ * @remarks
65557
+ * Serialized as a repeated query parameter (`?root=a&root=b`). Every named
65558
+ * sort must exist: the backend 404s on the first unknown name.
64909
65559
  */
64910
- root?: string;
65560
+ root?: string | string[];
64911
65561
  }
64912
65562
  /**
64913
65563
  * An exported ontology document, verbatim.
@@ -64919,10 +65569,14 @@ interface OntologyExportOptions {
64919
65569
  * with. RDF serializations are text; the default JSON rendering is JSON text
64920
65570
  * (parse it with `JSON.parse` when you need the object).
64921
65571
  *
65572
+ * The media type is the server's `Content-Type` verbatim, parameters included —
65573
+ * Turtle is served as `text/turtle; charset=utf-8`, not a bare `text/turtle`, so
65574
+ * match on a prefix rather than comparing for equality.
65575
+ *
64922
65576
  * @example
64923
65577
  * ```typescript
64924
65578
  * const result: OntologyExportDocument = {
64925
- * contentType: 'text/turtle',
65579
+ * contentType: 'text/turtle; charset=utf-8',
64926
65580
  * document: '@prefix : <urn:osfkb:tenant:...> .\n',
64927
65581
  * };
64928
65582
  * ```
@@ -64967,21 +65621,37 @@ declare class OntologyExportClient {
64967
65621
  private readonly api;
64968
65622
  /** @internal */
64969
65623
  constructor(api: OntologyExport);
65624
+ /**
65625
+ * Issue a content-negotiated export request and project the response.
65626
+ *
65627
+ * @internal
65628
+ * @remarks
65629
+ * Goes through the transport directly rather than through the generated route
65630
+ * methods: `root` is repeatable server-side (`?root=a&root=b`), but utoipa
65631
+ * cannot express a repeated query parameter, so the generated routes type it as
65632
+ * a lone `root?: string` — narrower than the endpoint each route's own
65633
+ * "(repeatable)" doc comment describes. The transport's query serializer
65634
+ * already branches on `Array.isArray` and emits the repeats correctly.
65635
+ */
65636
+ private requestExport;
64970
65637
  /**
64971
65638
  * Export the tenant's sort lattice (or a sub-lattice) as an OWL ontology.
64972
65639
  *
64973
65640
  * @param options - Export options: the base IRI for synthesized IRIs, the root
64974
- * sort to restrict the export to, and the serialization to negotiate on.
65641
+ * sort (or sorts) to restrict the export to, and the serialization to
65642
+ * negotiate on.
64975
65643
  * @returns The exported document, verbatim, with the media type the server
64976
65644
  * answered with.
64977
65645
  * @throws {BadRequestError} If the base IRI is invalid or the query is malformed.
64978
- * @throws {NotFoundError} If the requested root sort does not exist.
65646
+ * @throws {NotFoundError} If a requested root sort does not exist.
64979
65647
  * @throws {ApiError} If the request otherwise fails.
64980
65648
  *
64981
65649
  * @remarks
64982
65650
  * Omit `root` to export the whole tenant schema. Omit `base` to let the backend
64983
65651
  * synthesize IRIs under `urn:osfkb:tenant:{tenant_id}`.
64984
65652
  *
65653
+ * `root` is repeatable: pass an array to export several sub-lattices at once.
65654
+ *
64985
65655
  * `format` selects the `Accept` header: an RDF serialization yields an RDF
64986
65656
  * document, and the default (`'json'`) yields the backend's JSON rendering as
64987
65657
  * JSON text — parse it with `JSON.parse` when you need the object.
@@ -64994,8 +65664,13 @@ declare class OntologyExportClient {
64994
65664
  * format: 'turtle',
64995
65665
  * });
64996
65666
  *
64997
- * console.log(owl.contentType); // 'text/turtle'
65667
+ * console.log(owl.contentType); // 'text/turtle; charset=utf-8'
64998
65668
  * console.log(owl.document); // '@prefix : <https://example.org/ontology#> ...'
65669
+ *
65670
+ * // Several sub-lattices in one export -> ?root=clinical_entity&root=administrative_entity
65671
+ * const both = await client.ontologyExport.exportOwl({
65672
+ * root: ['clinical_entity', 'administrative_entity'],
65673
+ * });
64999
65674
  * ```
65000
65675
  */
65001
65676
  exportOwl(options?: OntologyExportOptions): Promise<OntologyExportDocument>;
@@ -65004,16 +65679,18 @@ declare class OntologyExportClient {
65004
65679
  * shapes.
65005
65680
  *
65006
65681
  * @param options - Export options: the base IRI for synthesized IRIs, the root
65007
- * sort to restrict the export to, and the serialization to negotiate on.
65682
+ * sort (or sorts) to restrict the export to, and the serialization to
65683
+ * negotiate on.
65008
65684
  * @returns The exported document, verbatim, with the media type the server
65009
65685
  * answered with.
65010
65686
  * @throws {BadRequestError} If the base IRI is invalid or the query is malformed.
65011
- * @throws {NotFoundError} If the requested root sort does not exist.
65687
+ * @throws {NotFoundError} If a requested root sort does not exist.
65012
65688
  * @throws {ApiError} If the request otherwise fails.
65013
65689
  *
65014
65690
  * @remarks
65015
65691
  * Each exported shape targets one sort and constrains its features. Omit `root`
65016
- * to export the whole tenant schema.
65692
+ * to export the whole tenant schema; pass an array to export the shapes of
65693
+ * several sub-lattices at once.
65017
65694
  *
65018
65695
  * `format` selects the `Accept` header: an RDF serialization yields an RDF
65019
65696
  * document, and the default (`'json'`) yields the backend's JSON rendering of
@@ -65023,7 +65700,7 @@ declare class OntologyExportClient {
65023
65700
  * ```typescript
65024
65701
  * const shacl = await client.ontologyExport.exportShacl({ format: 'turtle' });
65025
65702
  *
65026
- * console.log(shacl.contentType); // 'text/turtle'
65703
+ * console.log(shacl.contentType); // 'text/turtle; charset=utf-8'
65027
65704
  * console.log(shacl.document); // '... sh:NodeShape ...'
65028
65705
  * ```
65029
65706
  */
@@ -65128,7 +65805,7 @@ interface SystemGroup {
65128
65805
  * import { ReasoningLayerClient } from '@kortexya/reasoning-layer';
65129
65806
  *
65130
65807
  * const client = new ReasoningLayerClient({
65131
- * baseUrl: 'http://localhost:8083',
65808
+ * baseUrl: 'http://localhost:8085',
65132
65809
  * tenantId: 'my-tenant-uuid',
65133
65810
  * });
65134
65811
  *
@@ -66775,4 +67452,4 @@ declare function toUntaggedFeatures(features: PlainFeatureMap): Record<string, F
66775
67452
  */
66776
67453
  declare function toTermInputDto(input: PsiTermInput | TermInputDto): TermInputDto;
66777
67454
 
66778
- export { ANY_ROLE, actionReviews as ActionReviews, actions as Actions, type AddFactRequest, type AddFactResponse, type AddRuleRequest, type AddRuleResponse, admin as Admin, agui as Agui, type AguiEvent, type AguiMessage, type AguiRole, type AguiRunOptions, type AguiTool, type AiGroup, type AlcConcept, analysis as Analysis, type AnalysisGroup, ApiError, type ApiResponse, type ArithmeticOp, type AuthConfig, AuthenticationError, authz as Authz, type AuthzAction, type AuthzDryRunRequest, type AuthzDryRunResponse, type AuthzEffect, type BackwardChainRequest, type BackwardChainResponse, BadRequestError, type BulkAddTermsRequest, type BulkAddTermsResponse, type BulkCreateSortsRequest, type BulkCreateSortsResponse, cdl as CDL, type CascadeOptions, type CatalogPage, causal as Causal, type CertificateDetail, chase as Chase, type ChaseArgDto, type ChaseAtomDto, type ChaseRunRequest, type ChaseRunResponse, type CheckDocumentRequest, type CheckDocumentResponse, type CheckFinding, type CheckSummary, type ClaimAssessment, type ClaimSubtype, type ClaimVerdict, type ClassifyEdgesInput, type ClassifyEdgesVars, type ClearTermsResponse, type ClientConfig, cognitive as Cognitive, type CognitiveStrategyDto, coherence as Coherence, type CoherenceAnalyzeRequest, type CoherenceAnalyzeResponse, collections as Collections, communities as Communities, type CompareDocumentsRequest, type ComparisonOp, compliance as Compliance, complianceMarkings as ComplianceMarkings, conformance as Conformance, type ConformanceCheckResponse, type ConformanceRepairResponse, type ConformanceRequest, type ConstrainedPlainVar, Constraint, ConstraintViolationError, constraints as Constraints, control as Control, conversation as Conversation, type ConversationMessageRequest, type ConversationMessageResponse, type ConversationSummaryDto, type ConversationTurnsResponse, type CoreGroup, corpus as Corpus, type CorpusBridgesRequest, type CorpusBridgesResponse, type CorpusCommunitiesRequest, type CorpusCommunitiesResponse, type CorpusCrossCuttingRequest, type CorpusCrossCuttingResponse, type CorpusScope, type CreateResearchSessionRequest, type CreateResearchSessionResponse, type CreateSortRequest, type CreateTermRequest, type CtlFormula, dl as DL, type DataGroup, discovery as Discovery, type DlSatisfiableRequest, type DlSatisfiableResponse, type DlSubsumesRequest, type DlSubsumesResponse, documentCheck as DocumentCheck, documents as Documents, type EqLiteralDto, type EqualityAtomDto, type ErrorResponse$1 as ErrorResponse, execution as Execution, extract as Extract, feasibility as Feasibility, type FeatureInputValueDto, type FeatureValueDto, type FindingKind, type FindingSeverity, Flow, type FlowProblem as FlowBuilderProblem, type FlowEdgeInput, type FlowEdgeOptions, flowNetworks as FlowNetworks, type FlowNode, type FlowProblemInputBase, type FocusEntryDto, ForbiddenError, forecast as Forecast, type ForecastDomain, type ForecastDomainsResponse, type ForecastEntityInput, type ForecastRequest, type ForecastResponse, type ForwardChainRequest, type ForwardChainResponse, functions as Functions, fuzzy as Fuzzy, FuzzyShape, type FuzzyShapeDto, generation as Generation, type GlbRequest, type GlbResponse, type GraphSparqlQueryRequest, type GraphSparqlResults, guardrail as Guardrail, type GuardrailReport, type GuardrailRequest, health as Health, homoiconic as Homoiconic, ilp as ILP, imageExtraction as ImageExtraction, inference as Inference, type IngestPaperRequest, type IngestPaperResponse, ingestion as Ingestion, IngestionFailedError, IngestionSession, type IngestionSyncOptions, type InlineDocument, type InstallList, type InstallPluginRequest, type InstallPluginResponse, type InstallState, type InstallSummary, type Interceptor, InternalServerError, type JsonValue$1 as JsonValue, type KripkeState, type KripkeTransition, LP, ltn as LTN, type ListCatalogParams, type ListConversationsResponse, type ListInstallsParams, type ListResearchSessionsResponse, type LtnInstance, type LtnQueryRequest, type LtnQueryResponse, type LtnRefuteRequest, type LtnRefuteResponse, type LtnRule, type LtnTrainRequest, type LtnTrainResponse, type LubRequest, type LubResponse, marketplace as Marketplace, type MarketplaceScope, type MaxFlowInput, type MaxFlowVars, type MinCostMaxFlowInput, type MinCostMaxFlowVars, type MinCutInput, type MinCutVars, namespaces as Namespaces, NetworkError, neuroSymbolic as NeuroSymbolic, NotFoundError, ontology as Ontology, ontologyAlignment as OntologyAlignment, ontologyBridge as OntologyBridge, ontologyExport as OntologyExport, type OntologyExportDocument, type OntologyExportFormat, type OntologyExportOptions, ontologyFacade as OntologyFacade, type Operand, operations as Operations, optimize as Optimize, osfDiff as OsfDiff, type OsfDiffReport, type OsfDiffRequest, type OsfDiffResponse, type OsfDiffSelector, type OsfDiffSequenceReport, type OsfDiffSequenceRequest, type OsfDiffSequenceResponse, type OsfDiffTemporalRequest, type OsfSearchRequest, type OsfSearchResponse, osfql as Osfql, type OsfqlRequest, type OsfqlResponse, type OsfqlValue, oversight as Oversight, type PaginationParams, type PaperMetadataDto, type PaperSource, type PlainFeatureMap, type PlainFeatureValue, plainValues as PlainValues, type PluginDependency, type PluginDetail, type PluginManifest, type PluginSummary, type PluginVersion, preferences as Preferences, proofEngine as ProofEngine, propertyGraph as PropertyGraph, type PropertyGraphErrorResponse, type PropertyGraphExecuteResponse, type PropertyGraphQueryRequest, type PropertyGraphTranslateResponse, type PropertyGraphValue, type PsiTermDto, type PsiTermInput, type PublishPluginRequest, type PublishPluginResponse, query as Query, rag as RAG, RateLimitError, type RateLimitInfo, reasoning as Reasoning, type ReasoningGroup, ReasoningLayerClient, ReasoningLayerError, type ReasoningStageDto, type ReasoningTraceDto, type RequestOptions, research as Research, type ResearchContradictionsResponse, type ResearchCycleResponse, type ResearchFindingsResponse, type ResearchGapsResponse, type ResearchReportResponse, type ResearchSessionResponse, type ResearchSessionSummaryDto, type ResolvedCoreferenceDto, reviews as Reviews, row as Row, type RunAgentRequest, SDK_VERSION, sat as Sat, type SatLiteralDto, type SatSolveRequest, type SatSolveResponse, type SatVerdict, scenarios as Scenarios, scheduling as Scheduling, type SearchCatalogRequest, type SearchCatalogResponse, type SearchPapersRequest, type SearchPapersResponse, type SessionGraphDto, type SimpleTgdDto, smt as Smt, type SmtCheckRequest, type SmtCheckResponse, type SmtFunctionApplicationDto, type SmtVerdict, solver as Solver, SortBuilder, type SortDto, type SortInfoDto, sorts as Sorts, sources as Sources, spaces as Spaces, sparql as Sparql, type SparqlAskResults, type SparqlBindingSet, type SparqlEntailmentRegime, type SparqlQueryRequest, type SparqlQueryResults, type SparqlRdfTerm, type SparqlSelectResults, type SparqlTranslation, type SparqlUpdateRequest, type SparqlUpdateTranslation, statistical as Statistical, synthetic as Synthetic, type SystemGroup, temporal as Temporal, type TemporalModelCheckRequest, type TemporalModelCheckResponse, type TemporalSeriesRequest, type TemporalSeriesResponse, type TemporalSeriesSpec, type TermDto, type TermInputArg, type TermInputDto, type TermListResponse, type TermPatternDto, type TermResponse, type TermSetSelector, terms as Terms, TimeoutError, type TurnDto, ui as UI, type UpdateTermRequest, type UpgradeInstallRequest, utilities as Utilities, ValidationError, Value, type ValueDto, values as Values, verification as Verification, type VerifyClaimRequest, type VerifyClaimResponse, visualization as Visualization, WebSocketClient, WebSocketConnection, webhookActions as WebhookActions, type WorkflowGroup, type YankPluginRequest, type YankPluginResponse, allen, constrained, discriminateFeatureValue, guard, isConstrainedPlainVar, isPsiTermInput, isTaggedValueDto, isUuid, psi, toTaggedFeatures, toTaggedValue, toTermInputDto, toUntaggedFeatures, toUntaggedValue };
67455
+ export { ANY_ROLE, actionReviews as ActionReviews, actions as Actions, type AddFactRequest, type AddFactResponse, type AddRuleRequest, type AddRuleResponse, admin as Admin, agui as Agui, type AguiContextItem, type AguiEvent, type AguiFunctionCall, type AguiMessage, type AguiRole, type AguiRunOptions, type AguiTool, type AguiToolCall, type AiGroup, type AlcConcept, analysis as Analysis, type AnalysisGroup, ApiError, type ApiResponse, type ArithmeticOp, type AuthConfig, AuthenticationError, authz as Authz, type AuthzAction, type AuthzDryRunRequest, type AuthzDryRunResponse, type AuthzEffect, type BackwardChainRequest, type BackwardChainResponse, BadRequestError, type BulkAddTermsRequest, type BulkAddTermsResponse, type BulkCreateSortsRequest, type BulkCreateSortsResponse, cdl as CDL, type CascadeOptions, type CatalogPage, causal as Causal, type CertificateDetail, chase as Chase, type ChaseArgDto, type ChaseAtomDto, type ChaseRunRequest, type ChaseRunResponse, type CheckDocumentRequest, type CheckDocumentResponse, type CheckFinding, type CheckSummary, type ClaimAssessment, type ClaimCitation, type ClaimSubtype, type ClaimVerdict, type ClassifyEdgesInput, type ClassifyEdgesVars, type ClearTermsResponse, type ClientConfig, cognitive as Cognitive, type CognitiveStrategyDto, coherence as Coherence, type CoherenceAnalyzeRequest, type CoherenceAnalyzeResponse, collections as Collections, communities as Communities, type CompareDocumentsRequest, type ComparisonOp, compliance as Compliance, complianceMarkings as ComplianceMarkings, conformance as Conformance, type ConformanceCheckResponse, type ConformanceRepairResponse, type ConformanceRequest, type ConstrainedPlainVar, Constraint, ConstraintViolationError, constraints as Constraints, control as Control, conversation as Conversation, type ConversationMessageRequest, type ConversationMessageResponse, type ConversationSummaryDto, type ConversationTurnsResponse, type CoreGroup, corpus as Corpus, type CorpusBridgesRequest, type CorpusBridgesResponse, type CorpusCommunitiesRequest, type CorpusCommunitiesResponse, type CorpusCrossCuttingRequest, type CorpusCrossCuttingResponse, type CorpusScope, type CreateResearchSessionRequest, type CreateResearchSessionResponse, type CreateSortRequest, type CreateTermRequest, type CtlFormula, dl as DL, type DataGroup, discovery as Discovery, type DlSatisfiableRequest, type DlSatisfiableResponse, type DlSubsumesRequest, type DlSubsumesResponse, documentCheck as DocumentCheck, documents as Documents, type EqLiteralDto, type EqualityAtomDto, type ErrorResponse$1 as ErrorResponse, execution as Execution, extract as Extract, feasibility as Feasibility, type FeatureInputValueDto, type FeatureValueDto, type FindingKind, type FindingSeverity, Flow, type FlowProblem as FlowBuilderProblem, type FlowEdgeInput, type FlowEdgeOptions, flowNetworks as FlowNetworks, type FlowNode, type FlowProblemInputBase, type FocusEntryDto, ForbiddenError, forecast as Forecast, type ForecastDomain, type ForecastDomainsResponse, type ForecastEntityInput, type ForecastRequest, type ForecastResponse, type ForwardChainRequest, type ForwardChainResponse, functions as Functions, fuzzy as Fuzzy, FuzzyShape, type FuzzyShapeDto, generation as Generation, type GlbRequest, type GlbResponse, type GraphSparqlQueryRequest, type GraphSparqlResults, guardrail as Guardrail, type GuardrailReport, type GuardrailRequest, type GuardrailSummary, health as Health, homoiconic as Homoiconic, ilp as ILP, imageExtraction as ImageExtraction, inference as Inference, type IngestPaperRequest, type IngestPaperResponse, ingestion as Ingestion, IngestionFailedError, IngestionSession, type IngestionSyncOptions, type InlineDocument, type InstallList, type InstallPluginRequest, type InstallPluginResponse, type InstallState, type InstallSummary, type Interceptor, InternalServerError, type JsonValue$1 as JsonValue, type KripkeState, type KripkeTransition, LP, ltn as LTN, type ListCatalogParams, type ListConversationsResponse, type ListInstallsParams, type ListResearchSessionsResponse, type LtnInstance, type LtnQueryRequest, type LtnQueryResponse, type LtnRefuteRequest, type LtnRefuteResponse, type LtnRule, type LtnTrainRequest, type LtnTrainResponse, type LubRequest, type LubResponse, marketplace as Marketplace, type MarketplaceScope, type MaxFlowInput, type MaxFlowVars, type MinCostMaxFlowInput, type MinCostMaxFlowVars, type MinCutInput, type MinCutVars, namespaces as Namespaces, NetworkError, neuroSymbolic as NeuroSymbolic, NotFoundError, ontology as Ontology, ontologyAlignment as OntologyAlignment, ontologyBridge as OntologyBridge, ontologyExport as OntologyExport, type OntologyExportDocument, type OntologyExportFormat, type OntologyExportOptions, ontologyFacade as OntologyFacade, type Operand, operations as Operations, optimize as Optimize, osfDiff as OsfDiff, type OsfDiffReport, type OsfDiffRequest, type OsfDiffResponse, type OsfDiffSelector, type OsfDiffSequenceReport, type OsfDiffSequenceRequest, type OsfDiffSequenceResponse, type OsfDiffTemporalRequest, type OsfSearchRequest, type OsfSearchResponse, osfql as Osfql, type OsfqlRequest, type OsfqlResponse, type OsfqlValue, oversight as Oversight, type PaginationParams, type PaperMetadataDto, type PaperSource, type PlainFeatureMap, type PlainFeatureValue, plainValues as PlainValues, type PluginDependency, type PluginDetail, type PluginManifest, type PluginSummary, type PluginVersion, preferences as Preferences, proofEngine as ProofEngine, propertyGraph as PropertyGraph, type PropertyGraphErrorResponse, type PropertyGraphExecuteResponse, type PropertyGraphQueryRequest, type PropertyGraphTranslateResponse, type PropertyGraphValue, type PsiTermDto, type PsiTermInput, type PublishPluginRequest, type PublishPluginResponse, query as Query, rag as RAG, RateLimitError, type RateLimitInfo, reasoning as Reasoning, type ReasoningGroup, ReasoningLayerClient, ReasoningLayerError, type ReasoningStageDto, type ReasoningTraceDto, type RequestOptions, research as Research, type ResearchContradictionsResponse, type ResearchCycleResponse, type ResearchFindingsResponse, type ResearchGapsResponse, type ResearchReportResponse, type ResearchSessionResponse, type ResearchSessionSummaryDto, type ResolvedCoreferenceDto, reviews as Reviews, row as Row, type RuleAggregatorDto, type RunAgentRequest, SDK_VERSION, sat as Sat, type SatLiteralDto, type SatSolveRequest, type SatSolveResponse, type SatVerdict, scenarios as Scenarios, scheduling as Scheduling, type SearchCatalogRequest, type SearchCatalogResponse, type SearchPapersRequest, type SearchPapersResponse, type SessionGraphDto, type SimpleTgdDto, smt as Smt, type SmtCheckRequest, type SmtCheckResponse, type SmtFunctionApplicationDto, type SmtVerdict, solver as Solver, SortBuilder, type SortDto, type SortInfoDto, sorts as Sorts, sources as Sources, spaces as Spaces, sparql as Sparql, type SparqlAskResults, type SparqlBindingSet, type SparqlEntailmentRegime, type SparqlQueryRequest, type SparqlQueryResults, type SparqlRdfTerm, type SparqlSelectResults, type SparqlTranslation, type SparqlUpdateRequest, type SparqlUpdateTranslation, statistical as Statistical, synthetic as Synthetic, type SystemGroup, temporal as Temporal, type TemporalModelCheckRequest, type TemporalModelCheckResponse, type TemporalSeriesRequest, type TemporalSeriesResponse, type TemporalSeriesSpec, type TermDto, type TermInputArg, type TermInputDto, type TermListResponse, type TermPatternDto, type TermResponse, type TermSetSelector, terms as Terms, TimeoutError, type TurnDto, ui as UI, type UpdateTermRequest, type UpgradeInstallRequest, utilities as Utilities, ValidationError, Value, type ValueDto, values as Values, verification as Verification, type VerifyClaimRequest, type VerifyClaimResponse, visualization as Visualization, WebSocketClient, WebSocketConnection, webhookActions as WebhookActions, type WorkflowGroup, type YankPluginRequest, type YankPluginResponse, allen, constrained, discriminateFeatureValue, guard, isConstrainedPlainVar, isPsiTermInput, isTaggedValueDto, isUuid, psi, toTaggedFeatures, toTaggedValue, toTermInputDto, toUntaggedFeatures, toUntaggedValue };