@kortexya/reasoninglayer 1.16.0 → 1.18.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.16.0";
112
+ declare const SDK_VERSION = "1.18.0";
113
113
  /**
114
114
  * Authentication mode for the SDK.
115
115
  *
@@ -1964,6 +1964,22 @@ interface AuditRecord$1 {
1964
1964
  }
1965
1965
  /** @format uuid */
1966
1966
  type AuditRecordId = string;
1967
+ /**
1968
+ * Sortable [`AuditRecord`] field for the paged list read API
1969
+ * ([`crate::ports::audit::AuditPort::list_page`]).
1970
+ *
1971
+ * Wire serialisation is `snake_case` (`timestamp`, `request_path`,
1972
+ * `actor`) via `serde(rename_all)`. Defaults to [`AuditSortField::Timestamp`].
1973
+ */
1974
+ type AuditSortField$1 = "timestamp" | "request_path" | "actor";
1975
+ /**
1976
+ * Sort direction for the paged list read API
1977
+ * ([`crate::ports::audit::AuditPort::list_page`]).
1978
+ *
1979
+ * Wire serialisation is `lowercase` (`asc`, `desc`). Defaults to
1980
+ * [`AuditSortOrder::Desc`] so the most recent entries surface first.
1981
+ */
1982
+ type AuditSortOrder$1 = "desc" | "asc";
1967
1983
  /** One audited assumption */
1968
1984
  interface AuditedAssumptionDto$1 {
1969
1985
  /** The assumption kind audited */
@@ -3244,6 +3260,23 @@ interface CancelDocumentResponse {
3244
3260
  /** Human-readable message describing what happened */
3245
3261
  message: string;
3246
3262
  }
3263
+ /**
3264
+ * A candidate entity — a Ψ-term-to-be, its sort named rather than resolved because the
3265
+ * sort may not exist yet (which residuates).
3266
+ */
3267
+ interface CandidateEntityDto {
3268
+ /**
3269
+ * Extractor confidence in [0, 1]. Advisory — it does not affect the verdict.
3270
+ * @format double
3271
+ */
3272
+ confidence?: number;
3273
+ /** Extracted features, by name. */
3274
+ features?: Record<string, CandidateValueDto>;
3275
+ /** Batch-local id, used to attach relations to this entity. */
3276
+ local_id: string;
3277
+ /** Sort name this entity claims. */
3278
+ sort: string;
3279
+ }
3247
3280
  /** A candidate match for entity deduplication */
3248
3281
  interface CandidateMatchDto$1 {
3249
3282
  /**
@@ -3257,6 +3290,40 @@ interface CandidateMatchDto$1 {
3257
3290
  */
3258
3291
  term_id: string;
3259
3292
  }
3293
+ /**
3294
+ * A candidate relation — a feature edge whose endpoint sorts the caller supplies so the
3295
+ * fact is self-contained for certification.
3296
+ */
3297
+ interface CandidateRelationDto {
3298
+ /**
3299
+ * Extractor confidence in [0, 1]. Advisory.
3300
+ * @format double
3301
+ */
3302
+ confidence?: number;
3303
+ /** Predicate (feature) name. */
3304
+ predicate: string;
3305
+ /** `local_id` of the source entity. */
3306
+ source: string;
3307
+ /** Sort name of the source endpoint. */
3308
+ source_sort: string;
3309
+ /** `local_id` of the target entity. */
3310
+ target: string;
3311
+ /** Sort name of the target endpoint. */
3312
+ target_sort: string;
3313
+ }
3314
+ /**
3315
+ * A candidate feature value. `value` absent ⇒ the extractor does not know it, which
3316
+ * residuates rather than refutes.
3317
+ */
3318
+ interface CandidateValueDto {
3319
+ /** Surface form of the value, as extracted. Omit for an unknown value. */
3320
+ value?: string | null;
3321
+ /**
3322
+ * Primitive type the extractor believes this value has: `String`, `Integer`,
3323
+ * `Real`, `Boolean`, or `DateTime`. Defaults to `String`.
3324
+ */
3325
+ value_type?: string | null;
3326
+ }
3260
3327
  interface CaptureSnapshotRequest$1 {
3261
3328
  /** @format date-time */
3262
3329
  captured_after?: string | null;
@@ -4096,8 +4163,27 @@ interface ClearFactsResponse$1 {
4096
4163
  * the operation succeeded without affecting other tenants.
4097
4164
  */
4098
4165
  interface ClearTenantResponse$1 {
4166
+ /**
4167
+ * Number of SQL ontology bindings deleted for this tenant.
4168
+ *
4169
+ * A binding names the source, table and columns a tenant's data lives in,
4170
+ * so it is tenant data in its own right. It used to survive the wipe,
4171
+ * which is how #124 became visible: the connectors page kept listing
4172
+ * bindings whose sources had just been erased.
4173
+ * @min 0
4174
+ */
4175
+ bindings_deleted?: number;
4099
4176
  /** Whether the cache was invalidated */
4100
4177
  cache_invalidated: boolean;
4178
+ /**
4179
+ * Number of materialized derived facts deleted for this tenant.
4180
+ *
4181
+ * The derived-facts repository has always been able to truncate a tenant;
4182
+ * only the separate admin endpoint ever asked it to, so derived Ψ-terms
4183
+ * outlived the facts they were derived from (#124).
4184
+ * @min 0
4185
+ */
4186
+ derived_facts_deleted?: number;
4101
4187
  /**
4102
4188
  * Number of document fingerprints deleted
4103
4189
  * @min 0
@@ -4122,6 +4208,14 @@ interface ClearTenantResponse$1 {
4122
4208
  * @min 0
4123
4209
  */
4124
4210
  reviews_deleted: number;
4211
+ /**
4212
+ * Total rows deleted across every table in `tables_wiped`.
4213
+ *
4214
+ * Counts the tables that have no named counter above, which is most of
4215
+ * them — the named counters predate #124 and were never the full set.
4216
+ * @min 0
4217
+ */
4218
+ rows_deleted_total?: number;
4125
4219
  /**
4126
4220
  * Number of ingestion sessions deleted
4127
4221
  * @min 0
@@ -4129,6 +4223,20 @@ interface ClearTenantResponse$1 {
4129
4223
  sessions_deleted: number;
4130
4224
  /** Whether the sort hierarchy snapshot was deleted */
4131
4225
  sorts_deleted: boolean;
4226
+ /**
4227
+ * Tenant-scoped tables deliberately left intact, each with its reason.
4228
+ *
4229
+ * Non-empty means this erasure was deliberately partial. Reported so a
4230
+ * retention policy can never again be mistaken for complete erasure.
4231
+ */
4232
+ tables_retained?: RetainedTableDto[];
4233
+ /**
4234
+ * Every table the wipe deleted from, children before parents.
4235
+ *
4236
+ * Derived from the live schema, not from a list in the source, so a table
4237
+ * added by a later migration appears here without a code change.
4238
+ */
4239
+ tables_wiped?: string[];
4132
4240
  /** The tenant whose data was cleared */
4133
4241
  tenant_id: string;
4134
4242
  /**
@@ -4136,6 +4244,16 @@ interface ClearTenantResponse$1 {
4136
4244
  * @min 0
4137
4245
  */
4138
4246
  terms_deleted: number;
4247
+ /**
4248
+ * Number of vector-store points deleted for this tenant.
4249
+ *
4250
+ * Reported to the caller because it is the one count an erasure request
4251
+ * cannot verify any other way: vector payloads carry the embedded text, so
4252
+ * a wipe that left them behind would report every table emptied while the
4253
+ * tenant's data stayed readable and retrievable by similarity.
4254
+ * @min 0
4255
+ */
4256
+ vectors_deleted: number;
4139
4257
  }
4140
4258
  /** Response for clearing all terms for a tenant */
4141
4259
  interface ClearTermsResponse$1 {
@@ -4638,7 +4756,15 @@ interface CompareDocumentsRequestDto {
4638
4756
  document_a_id: string;
4639
4757
  /** @format uuid */
4640
4758
  document_b_id: string;
4759
+ /**
4760
+ * Include the clause section — terms sorted under the tenant's
4761
+ * `document.clause` vocabulary (default true)
4762
+ */
4641
4763
  include_clause_diff?: boolean;
4764
+ /**
4765
+ * Include the entity section — everything outside the tenant's
4766
+ * `document.clause` vocabulary (default true)
4767
+ */
4642
4768
  include_entity_diff?: boolean;
4643
4769
  /** @format double */
4644
4770
  threshold?: number | null;
@@ -5706,6 +5832,18 @@ interface CreateCurriedFunctionRequest$1 {
5706
5832
  /** @format uuid */
5707
5833
  tenant_id: string;
5708
5834
  }
5835
+ /** Request body for filing a data subject request. */
5836
+ interface CreateDsrRequest {
5837
+ /** Identifier of the data subject filing the request. */
5838
+ data_subject: string;
5839
+ /**
5840
+ * Which right is being exercised (Art. 15-22), as the domain's tagged enum.
5841
+ *
5842
+ * Described to OpenAPI as an opaque object: deriving a schema would force a
5843
+ * utoipa dependency into the domain, which must stay free of them.
5844
+ */
5845
+ request_type: object;
5846
+ }
5709
5847
  /** Request to create a new execution session with trail-based backtracking */
5710
5848
  interface CreateExecutionSessionRequest$1 {
5711
5849
  /** Optional name for the session */
@@ -7074,6 +7212,11 @@ interface DisentailmentRequest$1 {
7074
7212
  }
7075
7213
  /** Response from disentailment check. */
7076
7214
  interface DisentailmentResponse$1 {
7215
+ /**
7216
+ * How strongly the supplied facts establish the antecedent, μ ∈ [0,1].
7217
+ * @format double
7218
+ */
7219
+ antecedent_degree: number;
7077
7220
  /**
7078
7221
  * Computation time in milliseconds
7079
7222
  * @format int64
@@ -7081,10 +7224,31 @@ interface DisentailmentResponse$1 {
7081
7224
  */
7082
7225
  computation_time_ms: number;
7083
7226
  /**
7084
- * Confidence degree
7227
+ * Confidence degree.
7228
+ *
7229
+ * Certainty in the result, which is governed by how strongly the facts
7230
+ * establish the antecedent: with no support the verdict is vacuous. Equal
7231
+ * to `antecedent_degree`, and graded where it was previously a `1.0`/`0.0`
7232
+ * cast of "the antecedent was found".
7085
7233
  * @format double
7086
7234
  */
7087
7235
  confidence: number;
7236
+ /**
7237
+ * How strongly the consequent is established, μ ∈ [0,1] — by the facts, or
7238
+ * by the antecedent it would follow from.
7239
+ * @format double
7240
+ */
7241
+ consequent_degree: number;
7242
+ /**
7243
+ * Graded degree to which the disentailment still holds, μ ∈ [0,1].
7244
+ *
7245
+ * `1 - violation_degree`, where the violation degree is
7246
+ * `min(antecedent_degree, consequent_degree)` — the degree to which the
7247
+ * antecedent forces the consequent it was supposed to exclude. `holds` is
7248
+ * this degree read crisply.
7249
+ * @format double
7250
+ */
7251
+ degree: number;
7088
7252
  /** Whether the disentailment holds (antecedent is false, or consequent is false) */
7089
7253
  holds: boolean;
7090
7254
  /** Whether the disentailment is violated (both antecedent AND consequent hold = conflict) */
@@ -7366,6 +7530,26 @@ interface DocumentDto {
7366
7530
  */
7367
7531
  version: number;
7368
7532
  }
7533
+ /**
7534
+ * What a document erasure actually removed.
7535
+ *
7536
+ * Counts are reported rather than a bare 204 because erasure is auditable: a
7537
+ * caller has to be able to show *what* went, and a silent success is
7538
+ * indistinguishable from a cascade that walked nothing.
7539
+ */
7540
+ interface DocumentErasureReport {
7541
+ /** Whether the document registry row was removed. */
7542
+ document_deleted: boolean;
7543
+ /** The document that was erased. */
7544
+ document_id: string;
7545
+ /** Whether the fingerprint row (which held the term provenance) was removed. */
7546
+ fingerprint_deleted: boolean;
7547
+ /**
7548
+ * Terms removed via the full per-term cascade.
7549
+ * @min 0
7550
+ */
7551
+ terms_deleted: number;
7552
+ }
7369
7553
  /** Per-document knowledge graph response. */
7370
7554
  interface DocumentGraphResponse {
7371
7555
  /** Community id → size (legend data) */
@@ -7892,6 +8076,28 @@ interface DriveDto$1 {
7892
8076
  /** Drive type (curiosity, competence, social, autonomy) */
7893
8077
  drive_type: string;
7894
8078
  }
8079
+ /** A request record as returned to callers. */
8080
+ interface DsrRecordResponse {
8081
+ /** The data subject this request belongs to. */
8082
+ data_subject: string;
8083
+ /** Statutory deadline (UTC). */
8084
+ deadline: string;
8085
+ /** Request id, stable from submission through closure. */
8086
+ id: string;
8087
+ /**
8088
+ * Whether the stored record still matches its own integrity hash.
8089
+ *
8090
+ * Surfaced rather than merely checked so a caller can tell an intact
8091
+ * record from a tampered one instead of trusting the response.
8092
+ */
8093
+ integrity_verified: boolean;
8094
+ /** Whether the deadline has already passed without closure. */
8095
+ overdue: boolean;
8096
+ /** When the request was received (UTC). */
8097
+ received_at: string;
8098
+ /** Current lifecycle status, serialized from the domain enum. */
8099
+ status: any;
8100
+ }
7895
8101
  /** Loss weighting (paper eq. 4) — `data_weight + knowledge_weight = 1.0`. */
7896
8102
  interface DualWeightedLossDto {
7897
8103
  /**
@@ -8309,6 +8515,24 @@ interface EffectPredictionDto$1 {
8309
8515
  /** @format double */
8310
8516
  std_dev: number;
8311
8517
  }
8518
+ /** Rank request: one query, and the candidates to score against it. */
8519
+ interface EmbeddingRankRequest$1 {
8520
+ /**
8521
+ * Candidate texts. Scored in place — the response is index-aligned with
8522
+ * this list, so the caller can zip it back onto whatever it retrieved.
8523
+ */
8524
+ candidates: string[];
8525
+ /** The text every candidate is scored against. */
8526
+ query: string;
8527
+ }
8528
+ /** Rank response: one cosine similarity per candidate, in request order. */
8529
+ interface EmbeddingRankResponse$1 {
8530
+ /**
8531
+ * Cosine similarity in `[-1.0, 1.0]`, same length and same order as
8532
+ * `candidates`. A candidate with no scoreable text scores `0.0`.
8533
+ */
8534
+ scores: number[];
8535
+ }
8312
8536
  /** Response for the embedding verification endpoint. */
8313
8537
  interface EmbeddingVerificationResponse$1 {
8314
8538
  /** Whether box embeddings are available. */
@@ -8433,10 +8657,20 @@ interface EnrollSpeakerRequest$1 {
8433
8657
  /** MIME hint (e.g. `"audio/wav"`) for decoding the sample. */
8434
8658
  audio_mime?: string | null;
8435
8659
  /**
8436
- * Display name for this speaker. Re-enrolling the same name (case-insensitive)
8437
- * overwrites the existing profile.
8660
+ * Display name for this speaker. Re-enrolling the same (name, variant)
8661
+ * pair — case-insensitive — overwrites the existing profile.
8438
8662
  */
8439
8663
  name: string;
8664
+ /**
8665
+ * Optional sample label, so one person can hold SEVERAL embeddings
8666
+ * ("15-s read-aloud", "meeting 07-30", "sung sample"). This is the
8667
+ * singing fix: a voice is not one point in embedding space, and TitaNet
8668
+ * is speech-trained, so a sung sample is what makes that artist's other
8669
+ * songs match. Matching needs no changes for this — supplying several
8670
+ * prints that share a name already resolves each cluster to the best
8671
+ * cosine overall.
8672
+ */
8673
+ variant?: string | null;
8440
8674
  }
8441
8675
  /** Response from enrolling a speaker voiceprint. */
8442
8676
  interface EnrollSpeakerResponse$1 {
@@ -8457,6 +8691,8 @@ interface EnrollSpeakerResponse$1 {
8457
8691
  * @format double
8458
8692
  */
8459
8693
  sample_secs: number;
8694
+ /** Sample label, when one was supplied. */
8695
+ variant?: string | null;
8460
8696
  }
8461
8697
  /** Request to enroll (or re-enroll) a cloned voice. */
8462
8698
  interface EnrollVoiceRequest$1 {
@@ -8494,6 +8730,14 @@ interface EntailmentRequest$1 {
8494
8730
  }
8495
8731
  /** Response from entailment check. */
8496
8732
  interface EntailmentResponse$1 {
8733
+ /**
8734
+ * How strongly the supplied facts establish the antecedent, μ ∈ [0,1].
8735
+ *
8736
+ * `max { μ⊒(antecedent, f) : f ∈ facts }` — a fact witnesses the antecedent
8737
+ * when the antecedent subsumes it, so a `sparrow` fact supports `animal`.
8738
+ * @format double
8739
+ */
8740
+ antecedent_degree: number;
8497
8741
  /**
8498
8742
  * Computation time in milliseconds
8499
8743
  * @format int64
@@ -8501,10 +8745,31 @@ interface EntailmentResponse$1 {
8501
8745
  */
8502
8746
  computation_time_ms: number;
8503
8747
  /**
8504
- * Confidence degree
8748
+ * Confidence degree.
8749
+ *
8750
+ * Equal to `degree`. Retained for callers written against the previous
8751
+ * shape, where it was a `1.0`/`0.0` cast of `entails`.
8505
8752
  * @format double
8506
8753
  */
8507
8754
  confidence: number;
8755
+ /**
8756
+ * How strongly the consequent is established, μ ∈ [0,1].
8757
+ *
8758
+ * The better of the two routes: witnessed by the facts, or subsuming the
8759
+ * antecedent it would follow from.
8760
+ * @format double
8761
+ */
8762
+ consequent_degree: number;
8763
+ /**
8764
+ * Graded entailment degree μ ∈ [0,1] — `min(antecedent_degree, consequent_degree)`.
8765
+ *
8766
+ * `entails` is this degree read crisply. A value strictly between 0 and 1
8767
+ * means the two are related only through a fuzzy sort relation (an explicit
8768
+ * `⊑·` degree or an approved sort similarity), not through the crisp
8769
+ * hierarchy.
8770
+ * @format double
8771
+ */
8772
+ degree: number;
8508
8773
  /** Whether antecedent entails consequent */
8509
8774
  entails: boolean;
8510
8775
  }
@@ -8968,6 +9233,20 @@ interface EvidenceItemDto$1 {
8968
9233
  * @format double
8969
9234
  */
8970
9235
  contribution: number;
9236
+ /**
9237
+ * The evidence term's own human-readable sentence, when it has one.
9238
+ *
9239
+ * Without this the only identity an evidence row carried was `term_id`, so
9240
+ * every consumer rendered supporting evidence as `Evidence item <uuid>`
9241
+ * while the term itself held e.g. *"Aspirin reduces_risk_of Cardiovascular
9242
+ * Disease"* — the assessment path reported its own findings unreadably
9243
+ * (#138). Resolved from the term under the same deterministic display-name
9244
+ * precedence `TermDto.display_name` uses, so the two never disagree.
9245
+ *
9246
+ * Optional and omitted when empty: a consumer written before this field
9247
+ * existed deserializes the response unchanged and keeps its own fallback.
9248
+ */
9249
+ description?: string | null;
8971
9250
  /**
8972
9251
  * Quality weight of this evidence (0.0-1.0)
8973
9252
  * @format double
@@ -8995,6 +9274,39 @@ type EvidenceSourceDto$1 = {
8995
9274
  /** @format double */
8996
9275
  unified_degree: number;
8997
9276
  };
9277
+ /**
9278
+ * Request to transpile an OSFQL query and run it on the bound source (#133).
9279
+ *
9280
+ * No dialect field: the binding names the source and the source's type
9281
+ * decides the dialect. Asking a caller to supply it would let them ask for
9282
+ * Cypher against Postgres, which is not a question with an answer.
9283
+ */
9284
+ interface ExecuteTranspiledRequest {
9285
+ /** OSFQL query to transpile and execute. */
9286
+ osfql: string;
9287
+ }
9288
+ /** Rows from a live source, with the query that fetched them. */
9289
+ interface ExecuteTranspiledResponse {
9290
+ /** Dialect of `query` — `postgres`, `mysql`, `sqlite`, `cypher` or `cql`. */
9291
+ dialect: string;
9292
+ /**
9293
+ * The query that was executed, in the source's own language.
9294
+ *
9295
+ * Returned with the rows rather than behind a separate call: transpile
9296
+ * mode's claim is that OSFQL becomes a native query against the
9297
+ * operator's database, and this is what makes that claim checkable.
9298
+ */
9299
+ query: string;
9300
+ /**
9301
+ * Number of rows returned.
9302
+ * @min 0
9303
+ */
9304
+ row_count: number;
9305
+ /** Rows as returned by the source, one object per record. */
9306
+ rows: any[];
9307
+ /** The source the query ran against. */
9308
+ source_id: string;
9309
+ }
8998
9310
  /**
8999
9311
  * ExecutionGoalDto
9000
9312
  * Execution engine goal, discriminated by the 'type' field. Variants: unify, prove, eval, type_disj, cut, if_then_else.
@@ -9333,6 +9645,44 @@ interface ExtractedEntityDto$1 {
9333
9645
  /** The text span that was recognized in the input */
9334
9646
  text: string;
9335
9647
  }
9648
+ /** Request body for `POST /api/v1/extraction/certify`. */
9649
+ interface ExtractionCertifyRequest {
9650
+ /**
9651
+ * Conformal coverage floor. Defaults to 0.95; only affects conformal (non-sound)
9652
+ * emissions.
9653
+ * @format double
9654
+ */
9655
+ conformal_floor?: number | null;
9656
+ /** Candidate entities, certified in submission order. */
9657
+ entities?: CandidateEntityDto[];
9658
+ /** Candidate relations, certified after the entities. */
9659
+ relations?: CandidateRelationDto[];
9660
+ }
9661
+ /** Response for `POST /api/v1/extraction/certify`. */
9662
+ interface ExtractionCertifyResponse {
9663
+ /**
9664
+ * Candidates the gate withheld.
9665
+ * @min 0
9666
+ */
9667
+ abstained: number;
9668
+ /**
9669
+ * Candidates the gate admitted.
9670
+ * @min 0
9671
+ */
9672
+ emitted: number;
9673
+ /** Per-candidate dispositions, in submission order (entities then relations). */
9674
+ facts: FactOutcomeDto[];
9675
+ /**
9676
+ * Candidates whose certification suspended pending more information.
9677
+ * @min 0
9678
+ */
9679
+ suspended: number;
9680
+ /**
9681
+ * Number of candidates submitted.
9682
+ * @min 0
9683
+ */
9684
+ total: number;
9685
+ }
9336
9686
  /** A single extraction prediction. */
9337
9687
  interface ExtractionPredictionDto$1 {
9338
9688
  /**
@@ -9462,6 +9812,39 @@ interface FactConfidenceEntry$1 {
9462
9812
  */
9463
9813
  term_id: string;
9464
9814
  }
9815
+ /** The gate's disposition for one candidate fact. */
9816
+ interface FactOutcomeDto {
9817
+ /**
9818
+ * Content-addressed id of the persisted certificate, for every disposition —
9819
+ * refusals included, so a withheld verdict stays addressable in the audit trail.
9820
+ */
9821
+ certificate?: string | null;
9822
+ /**
9823
+ * Verdict confidence (`1.0` for a sound proof). Only meaningful for `emitted`.
9824
+ * @format double
9825
+ */
9826
+ confidence?: number | null;
9827
+ /** `emitted`, `suspended`, or `abstained`. */
9828
+ disposition: string;
9829
+ /**
9830
+ * Stable diagnostic label: `entity:<Sort>:<local_id>` or
9831
+ * `relation:<predicate>:<source>→<target>`.
9832
+ */
9833
+ label: string;
9834
+ /**
9835
+ * `true` when the verdict was a sound proof rather than a conformal emission.
9836
+ * Only meaningful for `emitted`.
9837
+ */
9838
+ proven?: boolean | null;
9839
+ /** For `abstained`: why the candidate was withheld. */
9840
+ reason?: string | null;
9841
+ /** Lattice-derived repair suggestions, aligned with `violations`. */
9842
+ repair_hints?: RepairHintDto[];
9843
+ /** Declared obligations this candidate broke. Non-empty only for a refutation. */
9844
+ violations?: ViolationDto$1[];
9845
+ /** For `suspended`: the facts whose arrival should resume certification. */
9846
+ wake_triggers?: string[];
9847
+ }
9465
9848
  /**
9466
9849
  * Response for the factory-reset operation.
9467
9850
  *
@@ -9469,10 +9852,23 @@ interface FactConfidenceEntry$1 {
9469
9852
  * so operators can verify the operation succeeded.
9470
9853
  */
9471
9854
  interface FactoryResetResponse$1 {
9855
+ /**
9856
+ * Number of SQL ontology bindings dropped across all tenants
9857
+ * @min 0
9858
+ */
9859
+ bindings_deleted?: number;
9472
9860
  /** Whether the cache (Valkey / in-memory) was flushed */
9473
9861
  cache_cleared: boolean;
9474
9862
  /** Human-readable summary message */
9475
9863
  message: string;
9864
+ /**
9865
+ * The tables that were truncated.
9866
+ *
9867
+ * Discovered from the live schema rather than hard-coded, so this is the
9868
+ * only way for a caller to tell a complete reset from one whose discovery
9869
+ * came back short (#124).
9870
+ */
9871
+ postgres_tables?: string[];
9476
9872
  /**
9477
9873
  * Number of PostgreSQL tables that were truncated
9478
9874
  * @min 0
@@ -11285,6 +11681,41 @@ interface GetFactsResponse$1 {
11285
11681
  /** List of facts */
11286
11682
  facts: PsiTermDto$1[];
11287
11683
  }
11684
+ /** Request to read the fuzzy subsumption degree `sub ⊑· sup` */
11685
+ interface GetFuzzySubsumptionRequest {
11686
+ /**
11687
+ * The subsumed (more specific) sort
11688
+ * @format uuid
11689
+ */
11690
+ sub_sort_id: string;
11691
+ /**
11692
+ * The subsuming (more general) sort
11693
+ * @format uuid
11694
+ */
11695
+ sup_sort_id: string;
11696
+ }
11697
+ /** Response for a fuzzy subsumption query */
11698
+ interface GetFuzzySubsumptionResponse {
11699
+ /**
11700
+ * Subsumption degree ⊑·(sub, sup) ∈ [0,1]
11701
+ *
11702
+ * Falls back through the explicit relation, then approved similarity,
11703
+ * then the crisp hierarchy — so `1.0` may mean a crisp subtype edge
11704
+ * rather than an explicitly asserted degree.
11705
+ * @format double
11706
+ */
11707
+ degree: number;
11708
+ /**
11709
+ * The subsumed sort
11710
+ * @format uuid
11711
+ */
11712
+ sub_sort_id: string;
11713
+ /**
11714
+ * The subsuming sort
11715
+ * @format uuid
11716
+ */
11717
+ sup_sort_id: string;
11718
+ }
11288
11719
  /** Request to get HTN methods. */
11289
11720
  interface GetHtnMethodsRequest {
11290
11721
  /**
@@ -12409,6 +12840,46 @@ interface IdentifyEffectResponse$1 {
12409
12840
  /** Treatment variable */
12410
12841
  treatment: string;
12411
12842
  }
12843
+ /**
12844
+ * Optional overrides for identification. Every field defaults to the MEDIA
12845
+ * setting, which is stricter than the meeting path's.
12846
+ */
12847
+ interface IdentifyOptionsDto {
12848
+ /**
12849
+ * Minimum cosine to accept a match (default 0.6, vs 0.5 for meetings).
12850
+ * @format float
12851
+ */
12852
+ match_threshold?: number | null;
12853
+ /**
12854
+ * Minimum seconds of speech for a cluster to be reported (default 5).
12855
+ * @format double
12856
+ */
12857
+ min_speech_secs?: number | null;
12858
+ /**
12859
+ * Run vocal separation first (default `true`) — what lets a voice under
12860
+ * music be matched at all.
12861
+ */
12862
+ separate?: boolean | null;
12863
+ }
12864
+ /** Request to identify which enrolled voices speak in a piece of audio. */
12865
+ interface IdentifySpeakersRequest {
12866
+ /** Base64-encoded audio to analyze (any container the transcriber decodes). */
12867
+ audio: string;
12868
+ /** MIME hint (e.g. `"audio/webm"`). */
12869
+ audio_mime?: string | null;
12870
+ /** Tuning knobs; omitted means the media defaults. */
12871
+ options?: null | IdentifyOptionsDto;
12872
+ }
12873
+ /** Response from identifying voices in audio. */
12874
+ interface IdentifySpeakersResponse {
12875
+ detections: SpeakerDetectionDto[];
12876
+ /** @format double */
12877
+ duration_secs: number;
12878
+ /** Whether vocal separation actually ran. */
12879
+ separated: boolean;
12880
+ unknown_clusters: UnknownClusterDto[];
12881
+ warnings: string[];
12882
+ }
12412
12883
  /** An entity extracted from a visual element in the image. */
12413
12884
  interface ImageExtractedEntityDto$1 {
12414
12885
  /**
@@ -14782,6 +15253,12 @@ interface ListSourcesResponse$1 {
14782
15253
  }
14783
15254
  /** Response listing a tenant's speaker profiles. */
14784
15255
  interface ListSpeakersResponse$1 {
15256
+ /**
15257
+ * The same profiles grouped by person, since one name may now hold
15258
+ * several samples and the UI lists people, not embeddings.
15259
+ */
15260
+ people?: SpeakerPersonDto[];
15261
+ /** Every stored profile, one entry per sample. */
14785
15262
  speakers: SpeakerProfileDto[];
14786
15263
  }
14787
15264
  /** Request to list module symbols */
@@ -17455,7 +17932,15 @@ interface OsfDiffRequestDto {
17455
17932
  a: object;
17456
17933
  /** Selector for side B */
17457
17934
  b: object;
17935
+ /**
17936
+ * Include the clause section — terms sorted under the tenant's
17937
+ * `document.clause` vocabulary (default true)
17938
+ */
17458
17939
  include_clause_diff?: boolean;
17940
+ /**
17941
+ * Include the entity section — everything outside the tenant's
17942
+ * `document.clause` vocabulary (default true)
17943
+ */
17459
17944
  include_entity_diff?: boolean;
17460
17945
  /**
17461
17946
  * Minimum match degree (default 0.7)
@@ -17660,6 +18145,16 @@ interface OsfqlRequest$1 {
17660
18145
  * clients are byte-identical.
17661
18146
  */
17662
18147
  reactive?: boolean;
18148
+ /**
18149
+ * Which data model the program is answered under.
18150
+ *
18151
+ * **Set this to `rdf` when running a statement returned by
18152
+ * `POST /api/v1/sparql/translate`** — that is the whole point of the switch. It is a
18153
+ * single flag rather than several because the settings it carries are not
18154
+ * independently useful here: getting one right and another wrong yields answers that
18155
+ * are silently wrong rather than obviously broken.
18156
+ */
18157
+ semantics?: OsfqlSemantics;
17663
18158
  }
17664
18159
  /** Response from executing an OSFQL program. */
17665
18160
  interface OsfqlResponse$1 {
@@ -17690,6 +18185,8 @@ interface OsfqlResponse$1 {
17690
18185
  */
17691
18186
  updated_term_ids?: string[];
17692
18187
  }
18188
+ /** The data model an OSFQL program is answered under — see [`OsfqlRequest::semantics`]. */
18189
+ type OsfqlSemantics = "osf" | "rdf";
17693
18190
  /** A bound value in an OSFQL result. */
17694
18191
  type OsfqlValueDto = {
17695
18192
  type: "null";
@@ -17715,6 +18212,13 @@ type OsfqlValueDto = {
17715
18212
  type: "boolean";
17716
18213
  /** Boolean value. */
17717
18214
  value: boolean;
18215
+ } | {
18216
+ type: "datetime";
18217
+ /**
18218
+ * UTC datetime instant, rendered in its RFC 3339 `Z`-suffixed form — the value
18219
+ * of a `date`/`timestamp` feature binding (or a MIN/MAX aggregate over one).
18220
+ */
18221
+ value: string;
17718
18222
  } | {
17719
18223
  type: "list";
17720
18224
  /** Ordered list value. */
@@ -19687,6 +20191,15 @@ interface ReleaseResiduationsResponse$1 {
19687
20191
  /** @min 0 */
19688
20192
  remaining_suspended: number;
19689
20193
  }
20194
+ /** A lattice-derived suggestion for discharging one violated obligation. */
20195
+ interface RepairHintDto {
20196
+ /** Why that replacement discharges it. */
20197
+ rationale: string;
20198
+ /** The concrete replacement that would discharge the obligation. */
20199
+ suggestion: string;
20200
+ /** The feature or predicate the hint applies to. */
20201
+ target: string;
20202
+ }
19690
20203
  /** Request to reprocess failed documents */
19691
20204
  interface ReprocessFailedRequest {
19692
20205
  /**
@@ -20036,6 +20549,13 @@ interface ResumptionOptionDto$1 {
20036
20549
  /** Unique identifier for this option */
20037
20550
  id: string;
20038
20551
  }
20552
+ /** One table a tenant erasure deliberately left standing, and why. */
20553
+ interface RetainedTableDto {
20554
+ /** Why this table survives a tenant erasure */
20555
+ reason: string;
20556
+ /** Table name in the `public` schema */
20557
+ table: string;
20558
+ }
20039
20559
  /** Request to retract a rule */
20040
20560
  interface RetractRuleRequest$1 {
20041
20561
  /** If provided, retract rules matching this pattern */
@@ -21602,6 +22122,37 @@ interface SetFeatureResponse$1 {
21602
22122
  success: boolean;
21603
22123
  term_id: string;
21604
22124
  }
22125
+ /**
22126
+ * Request to set the fuzzy subsumption degree `sub ⊑· sup`
22127
+ *
22128
+ * The field names are `sub`/`sup` rather than `sort1`/`sort2` because the
22129
+ * relation is **directional**: swapping them asserts something else. The
22130
+ * symmetric relation is `/api/v1/sorts/similarity`.
22131
+ */
22132
+ interface SetFuzzySubsumptionRequest {
22133
+ /**
22134
+ * Subsumption degree ∈ [0,1]
22135
+ * @format double
22136
+ */
22137
+ degree: number;
22138
+ /**
22139
+ * The subsumed (more specific) sort
22140
+ * @format uuid
22141
+ */
22142
+ sub_sort_id: string;
22143
+ /**
22144
+ * The subsuming (more general) sort
22145
+ * @format uuid
22146
+ */
22147
+ sup_sort_id: string;
22148
+ }
22149
+ /** Response for setting a fuzzy subsumption degree */
22150
+ interface SetFuzzySubsumptionResponse {
22151
+ /** Message */
22152
+ message: string;
22153
+ /** Whether the operation succeeded */
22154
+ success: boolean;
22155
+ }
21605
22156
  /**
21606
22157
  * Request to transition a goal to a terminal status.
21607
22158
  *
@@ -21945,17 +22496,43 @@ interface SoftUnifyRequest$1 {
21945
22496
  }
21946
22497
  /** Response for soft unification. */
21947
22498
  interface SoftUnifyResponse$1 {
21948
- /** @format double */
22499
+ /**
22500
+ * Combined confidence μ ∈ [0,1] — the product of `sort_score` and
22501
+ * `feature_score`, per the domain's soft-unification quantale.
22502
+ * @format double
22503
+ */
21949
22504
  confidence: number;
21950
22505
  /**
22506
+ * Wall-clock time for the computation.
21951
22507
  * @format int64
21952
22508
  * @min 0
21953
22509
  */
21954
22510
  elapsed_ms: number;
21955
- /** @format double */
22511
+ /**
22512
+ * Whether a box-embedding adapter contributed to `sort_score`.
22513
+ *
22514
+ * `false` means the sort axis was scored from the hierarchy alone
22515
+ * (subsumption and fuzzy subsumption). The scores are measured either way —
22516
+ * this reports which evidence was available, so a caller can tell a
22517
+ * hierarchy-only answer from an embedding-backed one.
22518
+ */
22519
+ embeddings_used: boolean;
22520
+ /**
22521
+ * Feature compatibility μ ∈ [0,1], averaged over the union of both terms'
22522
+ * features. A feature only one side carries scores 0.5 (open world), not 0.
22523
+ * @format double
22524
+ */
21956
22525
  feature_score: number;
22526
+ /**
22527
+ * What hard OSF unification says about the same pair. Independent of the
22528
+ * scores above: terms can be highly similar and still fail to unify.
22529
+ */
21957
22530
  hard_compatible: boolean;
21958
- /** @format double */
22531
+ /**
22532
+ * Sort compatibility μ ∈ [0,1]: exact match or subsumption → 1.0, then box
22533
+ * containment, then fuzzy subsumption.
22534
+ * @format double
22535
+ */
21959
22536
  sort_score: number;
21960
22537
  }
21961
22538
  /** A solution from backward chaining or open-world inference. */
@@ -23006,6 +23583,23 @@ type SpaceStatusDto$1 = {
23006
23583
  count: number;
23007
23584
  type: "alternatives";
23008
23585
  };
23586
+ /** A recognized voice. */
23587
+ interface SpeakerDetectionDto {
23588
+ name: string;
23589
+ /**
23590
+ * Cosine similarity of the accepted match.
23591
+ * @format float
23592
+ */
23593
+ score: number;
23594
+ spans: SpeechSpanDto[];
23595
+ /** @format double */
23596
+ speech_secs: number;
23597
+ }
23598
+ /** One person and all the samples enrolled for them. */
23599
+ interface SpeakerPersonDto {
23600
+ name: string;
23601
+ profiles: SpeakerProfileDto[];
23602
+ }
23009
23603
  /** A stored speaker profile (embedding withheld). */
23010
23604
  interface SpeakerProfileDto {
23011
23605
  /** ISO-8601 timestamp of enrollment. */
@@ -23022,6 +23616,8 @@ interface SpeakerProfileDto {
23022
23616
  * @format double
23023
23617
  */
23024
23618
  sample_secs: number;
23619
+ /** Sample label, when one was supplied at enrollment. */
23620
+ variant?: string | null;
23025
23621
  }
23026
23622
  /** Volume-specificity verification sub-DTO. */
23027
23623
  interface SpecificityDto$1 {
@@ -23062,6 +23658,13 @@ interface SpeechEngineDto {
23062
23658
  /** Whether it can clone from a reference clip. */
23063
23659
  supports_cloning: boolean;
23064
23660
  }
23661
+ /** One speaking interval, in seconds from the start of the audio. */
23662
+ interface SpeechSpanDto {
23663
+ /** @format double */
23664
+ end: number;
23665
+ /** @format double */
23666
+ start: number;
23667
+ }
23065
23668
  /**
23066
23669
  * Request to start a new attribute exploration session.
23067
23670
  *
@@ -23359,6 +23962,35 @@ interface StructuredIngestionStatsDto$1 {
23359
23962
  */
23360
23963
  terms_projected: number;
23361
23964
  }
23965
+ /** What a subject erasure matched, and what it removed. */
23966
+ interface SubjectErasureReport {
23967
+ /** Whether this call executed, or only planned. */
23968
+ confirmed: boolean;
23969
+ /** The data subject named by the request being fulfilled. */
23970
+ data_subject: string;
23971
+ /** Feature that was matched on. */
23972
+ feature: string;
23973
+ /** Ids of every term matching the subject, whether or not they were erased. */
23974
+ matched_terms: string[];
23975
+ /**
23976
+ * Terms actually removed (zero on a dry run).
23977
+ * @min 0
23978
+ */
23979
+ terms_deleted: number;
23980
+ }
23981
+ /** Body for fulfilling an erasure request against the knowledge base. */
23982
+ interface SubjectErasureRequest {
23983
+ /** Execute the erasure. Defaults to false — a dry run returning the plan. */
23984
+ confirm?: boolean;
23985
+ /**
23986
+ * Which feature holds the subject's identifier (e.g. `"name"`, `"email"`).
23987
+ *
23988
+ * Named by the caller rather than guessed: only the operator knows which
23989
+ * feature identifies a person in their schema, and guessing wrong would
23990
+ * either miss the subject's data or match somebody else's.
23991
+ */
23992
+ feature: string;
23993
+ }
23362
23994
  /** Request to subscribe agent to KB changes. */
23363
23995
  interface SubscribeToKbRequest$1 {
23364
23996
  /**
@@ -24049,7 +24681,14 @@ interface TermBindingDto$1 {
24049
24681
  }
24050
24682
  /** API representation of a term */
24051
24683
  interface TermDto$1 {
24052
- /** Human-readable display name extracted from features (name/label/title/...) */
24684
+ /**
24685
+ * Human-readable display name extracted from features under a total,
24686
+ * deterministic precedence: a feature the sort annotates `displayLabel`,
24687
+ * then one annotated `isIdentifier`, then the conventional keys
24688
+ * (name/label/title/...), then the sort's declared feature order, then
24689
+ * undeclared features in lexicographic key order. The same term always
24690
+ * yields the same value.
24691
+ */
24053
24692
  display_name?: string | null;
24054
24693
  /** Features map */
24055
24694
  features: Record<string, ValueDto$1>;
@@ -24221,6 +24860,44 @@ interface TestInputDto {
24221
24860
  /** Caller-assigned identifier echoed in the response. */
24222
24861
  input_id: string;
24223
24862
  }
24863
+ /** Run the caller's own system prompt over a piece of text. */
24864
+ interface TextGenerateRequest {
24865
+ /**
24866
+ * Output-token cap for one model call. Clamped down to the deployment's
24867
+ * own maximum — the engine's per-sequence budget covers prompt AND
24868
+ * generation, and the caller does not know it.
24869
+ * @format int32
24870
+ * @min 0
24871
+ */
24872
+ max_tokens?: number | null;
24873
+ /**
24874
+ * The system prompt, applied verbatim.
24875
+ *
24876
+ * This is the whole point of the endpoint. A client that versions its own
24877
+ * prompts (and stands behind the pairing of prompt version + output) must
24878
+ * be able to send the prompt it versioned; a service-side rewording would
24879
+ * silently answer a different question.
24880
+ */
24881
+ system: string;
24882
+ /**
24883
+ * Decode temperature. Absent = greedy, the only setting under which a
24884
+ * versioned prompt yields a reproducible answer.
24885
+ * @format float
24886
+ */
24887
+ temperature?: number | null;
24888
+ /**
24889
+ * The text to transform. Sent to the model as the user turn, verbatim —
24890
+ * never wrapped — so the answer stays diff-able against the input.
24891
+ */
24892
+ text: string;
24893
+ }
24894
+ /** The generated text. */
24895
+ interface TextGenerateResponse {
24896
+ /** Label of the backend that answered, when known. */
24897
+ model?: string | null;
24898
+ /** The model's answer, trimmed of surrounding whitespace. */
24899
+ text: string;
24900
+ }
24224
24901
  /** Threshold-based weak anchor for an antecedent gate. */
24225
24902
  interface ThresholdAnchorDto {
24226
24903
  /**
@@ -25241,6 +25918,17 @@ interface UnifyTermsResponse$1 {
25241
25918
  /** The resulting unified term ID (if successful) */
25242
25919
  unified_term_id?: string | null;
25243
25920
  }
25921
+ /**
25922
+ * A cluster that carried enough speech to report but matched no profile —
25923
+ * the raw material for "this is …" enrollment from media.
25924
+ */
25925
+ interface UnknownClusterDto {
25926
+ /** @format int32 */
25927
+ cluster: number;
25928
+ spans: SpeechSpanDto[];
25929
+ /** @format double */
25930
+ speech_secs: number;
25931
+ }
25244
25932
  /** Request to update a collection */
25245
25933
  interface UpdateCollectionRequest$1 {
25246
25934
  /** Optional description */
@@ -25425,6 +26113,37 @@ interface UpgradeRequest {
25425
26113
  /** The content-addressed bundle id of the target version (UUID string). */
25426
26114
  to_bundle_id: string;
25427
26115
  }
26116
+ /**
26117
+ * Metadata for a tenant-uploaded file-based source artifact (#107).
26118
+ *
26119
+ * Returned by `POST /api/v1/sources/files` (the upload) and listed by
26120
+ * `GET /api/v1/sources/files`. The `path` is the engine-internal location
26121
+ * written into a registered source's `config.file_path` (csv/parquet) or
26122
+ * `config.database_path` (sqlite); the api-layer path-traversal guard
26123
+ * accepts exactly these uploaded paths (plus configured allow-tree entries).
26124
+ * `uploaded_at` follows the `chrono::DateTime<chrono::Utc>` convention used
26125
+ * by `SourceSummaryDto::last_sync_at` so the field round-trips through the
26126
+ * same utoipa `chrono` schema generator as the rest of the ingestion DTOs.
26127
+ */
26128
+ interface UploadedSourceFileDto {
26129
+ /** The `SourceFileId` (UUID v4) of the upload, also the `{id}` path param. */
26130
+ id: string;
26131
+ /** Sanitized basename of the uploaded file (no path separators). */
26132
+ name: string;
26133
+ /** Engine-internal absolute path the registered source's config points at. */
26134
+ path: string;
26135
+ /**
26136
+ * Size of the stored file in bytes.
26137
+ * @format int64
26138
+ * @min 0
26139
+ */
26140
+ size: number;
26141
+ /**
26142
+ * Upload timestamp (RFC 3339 UTC).
26143
+ * @format date-time
26144
+ */
26145
+ uploaded_at: string;
26146
+ }
25428
26147
  /** @format uuid */
25429
26148
  type UserId = string;
25430
26149
  /**
@@ -26314,6 +27033,15 @@ declare class Sorts<SecurityDataType = unknown> {
26314
27033
  * @request GET:/api/v1/sorts/equivalence-classes
26315
27034
  */
26316
27035
  getEquivalenceClasses: (params?: RequestParams) => Promise<HttpResponse<GetEquivalenceClassesResponse$1, any>>;
27036
+ /**
27037
+ * No description
27038
+ *
27039
+ * @tags sorts
27040
+ * @name GetFuzzySubsumption
27041
+ * @summary Get the fuzzy subsumption degree `sub ⊑· sup` between two sorts
27042
+ * @request POST:/api/v1/sorts/subsumption/get
27043
+ */
27044
+ getFuzzySubsumption: (data: GetFuzzySubsumptionRequest, params?: RequestParams) => Promise<HttpResponse<GetFuzzySubsumptionResponse, any>>;
26317
27045
  /**
26318
27046
  * @description Per Definition IV.5 (Milanese & Pasi 2024): ≾̇ = ((≾̃ .− ∼) ⊍ ≤)⁺
26319
27047
  *
@@ -26324,14 +27052,21 @@ declare class Sorts<SecurityDataType = unknown> {
26324
27052
  */
26325
27053
  getPreorderDegree: (data: GetPreorderDegreeRequest$1, params?: RequestParams) => Promise<HttpResponse<GetPreorderDegreeResponse$1, any>>;
26326
27054
  /**
26327
- * No description
27055
+ * @description With `?format=osfql` the sort is returned as its commented OSFQL `DEFINE` block (`text/plain`, `ETag` = SHA-256 of the body) instead of the JSON DTO — the single-sort companion of `GET /api/v1/sorts/schema`.
26328
27056
  *
26329
27057
  * @tags sorts
26330
27058
  * @name GetSort
26331
27059
  * @summary Get a sort by ID
26332
27060
  * @request GET:/api/v1/sorts/{id}
26333
27061
  */
26334
- getSort: (id: string, params?: RequestParams) => Promise<HttpResponse<SortResponse$1, void>>;
27062
+ getSort: (id: string, query?: {
27063
+ /**
27064
+ * Optional response format. `osfql` renders the sort as its commented
27065
+ * `DEFINE` DDL (`text/plain`); `json` (or absent) keeps the JSON DTO.
27066
+ * The bulk schema route (`/api/v1/sorts/schema`) accepts only `osfql`.
27067
+ */
27068
+ format?: string | null;
27069
+ }, params?: RequestParams) => Promise<HttpResponse<SortResponse$1, void>>;
26335
27070
  /**
26336
27071
  * No description
26337
27072
  *
@@ -26341,6 +27076,55 @@ declare class Sorts<SecurityDataType = unknown> {
26341
27076
  * @request POST:/api/v1/sorts/similarity/get
26342
27077
  */
26343
27078
  getSortSimilarity: (data: GetSortSimilarityRequest$1, params?: RequestParams) => Promise<HttpResponse<GetSortSimilarityResponse$1, any>>;
27079
+ /**
27080
+ * @description The bulk companion of `?format=osfql` on the by-id route: a single deterministic, re-parseable `text/plain` block of commented `DEFINE` statements (one per sort, ordered by name) for LLM prompt conditioning and replayable export. Supports the tenant listing's filters (`name_prefix`, `include_system`, `needs_review`, `llm_extracted`, and `offset`/`limit`, applied after the deterministic ordering so pages are stable). The `ETag` is the SHA-256 of the body, so prompt-conditioning consumers get a stable cache key for "schema unchanged".
27081
+ *
27082
+ * @tags sorts
27083
+ * @name GetSortsSchema
27084
+ * @summary Export the authenticated tenant's schema as one OSFQL DDL block
27085
+ * @request GET:/api/v1/sorts/schema
27086
+ * @secure
27087
+ */
27088
+ getSortsSchema: (query?: {
27089
+ /**
27090
+ * Optional response format. `osfql` renders the sort as its commented
27091
+ * `DEFINE` DDL (`text/plain`); `json` (or absent) keeps the JSON DTO.
27092
+ * The bulk schema route (`/api/v1/sorts/schema`) accepts only `osfql`.
27093
+ */
27094
+ format?: string | null;
27095
+ /**
27096
+ * Include system-defined sorts in the response.
27097
+ * System sorts are built-in types like Thing, Person, etc.
27098
+ * Defaults to false (system sorts are excluded by default).
27099
+ */
27100
+ include_system?: boolean;
27101
+ /**
27102
+ * Maximum number of sorts to return. When omitted, no cap is
27103
+ * applied (legacy behaviour). Recommended page size for
27104
+ * production tenants: 50_000.
27105
+ * @min 0
27106
+ */
27107
+ limit?: number | null;
27108
+ /** Filter to only show LLM-extracted sorts */
27109
+ llm_extracted?: boolean | null;
27110
+ /**
27111
+ * Filter to sorts whose name starts with this prefix.
27112
+ * Supports comma-separated multiple prefixes (e.g. "drug_,target_,pathway_,disease_").
27113
+ * Server-side filtering avoids transferring millions of irrelevant sorts.
27114
+ */
27115
+ name_prefix?: string | null;
27116
+ /** Filter to only show sorts needing review */
27117
+ needs_review?: boolean | null;
27118
+ /**
27119
+ * Zero-indexed pagination offset. Combined with ``limit`` this
27120
+ * lets clients stream a production tenant (1 M+ sorts, ~500 MB
27121
+ * uncompressed) as a sequence of small responses, avoiding the
27122
+ * ``IncompleteRead`` a single-response transfer reliably hits
27123
+ * above ~30 MB.
27124
+ * @min 0
27125
+ */
27126
+ offset?: number | null;
27127
+ }, params?: RequestParams) => Promise<HttpResponse<string, void>>;
26344
27128
  /**
26345
27129
  * No description
26346
27130
  *
@@ -26445,6 +27229,15 @@ declare class Sorts<SecurityDataType = unknown> {
26445
27229
  /** Search query (sort name substring) */
26446
27230
  q: string;
26447
27231
  }, params?: RequestParams) => Promise<HttpResponse<SearchSortsResponse, any>>;
27232
+ /**
27233
+ * @description Subsumption is **directional**: ⊑·(s₁, s₂) and ⊑·(s₂, s₁) are different assertions. For the symmetric relation use `/api/v1/sorts/similarity`. The degree must be in [0, 1] and the assignment must keep the relation a fuzzy partial order (max–min transitivity, antisymmetry); one that does not is rejected rather than stored.
27234
+ *
27235
+ * @tags sorts
27236
+ * @name SetFuzzySubsumption
27237
+ * @summary Set the fuzzy subsumption degree `sub ⊑· sup` between two sorts
27238
+ * @request POST:/api/v1/sorts/subsumption
27239
+ */
27240
+ setFuzzySubsumption: (data: SetFuzzySubsumptionRequest, params?: RequestParams) => Promise<HttpResponse<SetFuzzySubsumptionResponse, any>>;
26448
27241
  /**
26449
27242
  * @description Similarity is symmetric: ∼(s₁, s₂) = ∼(s₂, s₁) Degree must be in [0, 1] range.
26450
27243
  *
@@ -29120,11 +29913,11 @@ declare class Inference<SecurityDataType = unknown> {
29120
29913
  */
29121
29914
  bulkRetractTerms: (data: BulkRetractTermsRequest, params?: RequestParams) => Promise<HttpResponse<BulkRetractTermsResponse, any>>;
29122
29915
  /**
29123
- * @description # DEPRECATED This endpoint is deprecated. Use `DELETE /api/v1/terms/{term_id}` for individual terms. # TRUE HOMOICONIC API # Authorization Requires X-Tenant-Id header.
29916
+ * @description This drops the hydrated base facts, the forward-chain `persist_derived` facts and the residuation store, then forgets the hydration flag so the next request reloads the base facts from PostgreSQL. **It does not delete durable data.** The terms are the authority; this is their cache. That makes it the retraction primitive forward chaining otherwise lacks. Chaining is monotonic — delete a `blocks` edge and the derived "A blocks B" survives every later pass, so the KB keeps asserting a relationship the user removed. Clearing and re-chaining rebuilds the closure from the terms that actually exist. # History Until 2026-07-28 this handler enumerated every term in the tenant and deleted it from PostgreSQL, while calling itself "clear facts" and reporting `"Cleared N facts/rules"`. It is reachable with an ordinary tenant credential — unlike `/api/v1/admin/clear-tenant/{tenant_id}`, which gateways block — so a caller reading the name, the path or the response body had no way to know it was a tenant wipe. It destroyed a live tenant that way. Use `DELETE /api/v1/terms/{term_id}` to delete a term, and the admin route to wipe a tenant; deleting durable data must not be something an endpoint does as a side effect of its name. # Authorization Requires X-Tenant-Id header, and the path tenant must match it.
29124
29917
  *
29125
29918
  * @tags inference
29126
29919
  * @name ClearFacts
29127
- * @summary Clear all facts and rules for a tenant
29920
+ * @summary Clear a tenant's in-memory inference working set.
29128
29921
  * @request DELETE:/api/v1/inference/facts/{tenant_id}
29129
29922
  * @secure
29130
29923
  */
@@ -30653,7 +31446,7 @@ declare class Query<SecurityDataType = unknown> {
30653
31446
  http: HttpClient<SecurityDataType>;
30654
31447
  constructor(http: HttpClient<SecurityDataType>);
30655
31448
  /**
30656
- * @description Returns all terms with the specified sort OR any of its subtypes. This implements proper OSF polymorphic query semantics where querying a parent sort returns all instances of that sort and its descendants.
31449
+ * @description Returns all terms with the specified sort OR any of its subtypes. This implements proper OSF polymorphic query semantics where querying a parent sort returns all instances of that sort and its descendants. ## Resolving `sort_name` A name can denote more than one id (see `sort_name_candidates`), and no cheap probe tells which of them the query can actually answer from: on the production adapter `get_sort` and `get_sort_ids_by_names` are bare reads of an in-memory cache with no persistence fallback, while the query's own `get_compatible_sorts` does fall back to Postgres. Confirming a candidate with `get_sort` would therefore 404 every tenant sort created before the last restart — a guard strictly stricter than the thing it guards. So the candidates are **tried** against the real query, in order, and the first that answers wins; only `SortNotFound` moves on to the next, every other failure is returned as-is. When the first candidate answers — the common case — the route runs exactly one term query, as it always did. A phantom id (minted into the tenant lattice by ingestion and never persisted, #138) cannot be returned: the query authority refuses it and the loop skips past it. When no candidate answers, the sort is not queryable and the honest reply is 404 naming the sort the CALLER asked for — never a 400 leaking an internal `SortId` the caller never supplied.
30657
31450
  *
30658
31451
  * @tags query
30659
31452
  * @name FindBySort
@@ -42351,7 +43144,7 @@ declare class Reasoning<SecurityDataType = unknown> {
42351
43144
  http: HttpClient<SecurityDataType>;
42352
43145
  constructor(http: HttpClient<SecurityDataType>);
42353
43146
  /**
42354
- * @description POST /api/v1/reasoning/disentailment Disentailment A =/=> B means: "if A holds, then B must NOT hold" Returns whether the disentailment is violated (conflict: both A and B hold)
43147
+ * @description POST /api/v1/reasoning/disentailment Disentailment A =/=> B means: "if A holds, then B must NOT hold". Returns whether the disentailment is violated — the conflict where the facts establish A and B follows anyway. This is hierarchy-aware and graded on the same footing as the entailment route, so a conflict reachable only through the sort lattice (a `contaminated` clause held by a `lead_paint` fact that subsumes it) is detected without that clause being supplied as a fact. `A ⇏ B` is violated exactly to the degree `A ⇒ B` is established, so `degree` here reports the complement: how strongly the disentailment still holds.
42355
43148
  *
42356
43149
  * @tags reasoning
42357
43150
  * @name Disentailment
@@ -42360,7 +43153,7 @@ declare class Reasoning<SecurityDataType = unknown> {
42360
43153
  */
42361
43154
  disentailment: (data: DisentailmentRequest$1, params?: RequestParams) => Promise<HttpResponse<DisentailmentResponse$1, any>>;
42362
43155
  /**
42363
- * @description POST /api/v1/reasoning/entailment Returns whether antecedent entails consequent
43156
+ * @description POST /api/v1/reasoning/entailment Answers `facts antecedent ⇒ consequent`, hierarchy-aware and graded. A clause holds in the fact base to the degree that some fact *witnesses* it — that is, to the degree the clause subsumes a fact — so a `sparrow` fact establishes the clause `animal` without an `animal` fact being supplied. The consequent is additionally established when it subsumes the antecedent it would follow from. See [`osfkb_domain::operations::homoiconic_entailment`] for the full semantics. `entails` is the crisp reading of `degree`; `degree`, `antecedent_degree` and `consequent_degree` are computed from the sort lattice (crisply, and through explicit fuzzy `⊑·` relations and approved sort similarity), never cast from the boolean.
42364
43157
  *
42365
43158
  * @tags reasoning
42366
43159
  * @name Entailment
@@ -42540,6 +43333,19 @@ interface EvidenceAssessmentRequest {
42540
43333
  interface EvidenceItemDto {
42541
43334
  /** Contribution to the assessment (quality * support direction). */
42542
43335
  contribution: number;
43336
+ /**
43337
+ * The evidence term's own human-readable sentence, e.g.
43338
+ * `"Aspirin reduces_risk_of Cancer"`.
43339
+ *
43340
+ * `termId` is a UUID no consumer can render, so without this an evidence row
43341
+ * could only be shown as `Evidence item <uuid>`. The backend resolves it from
43342
+ * the term under the same display-name precedence `TermDto.displayName` uses,
43343
+ * so the sentence shown here and the one shown for the term never disagree.
43344
+ *
43345
+ * `null` when talking to a backend that predates evidence descriptions, or
43346
+ * when the evidence term carries no description of its own.
43347
+ */
43348
+ description?: string | null;
42543
43349
  /** Quality weight of this evidence (0.0-1.0). */
42544
43350
  qualityWeight: number;
42545
43351
  /** Whether this evidence supports (true) or contradicts (false) the subject. */
@@ -42818,6 +43624,13 @@ declare class ReasoningClient {
42818
43624
  /**
42819
43625
  * Assess the truthfulness/validity of a subject based on related evidence.
42820
43626
  *
43627
+ * @remarks
43628
+ * Each item in the supporting/contradicting breakdown carries a
43629
+ * `description` — the evidence term's own sentence,
43630
+ * e.g. `"Aspirin reduces_risk_of Cancer"` — so evidence can be rendered
43631
+ * without a second lookup by `termId`. It is `null` against a backend that
43632
+ * predates the field.
43633
+ *
42821
43634
  * @param request - Evidence assessment request.
42822
43635
  * @returns Assessment result with truthfulness score, label, and evidence breakdown.
42823
43636
  */
@@ -45217,6 +46030,16 @@ declare class StructuredIngestion<SecurityDataType = unknown> {
45217
46030
  * @secure
45218
46031
  */
45219
46032
  deleteSource: (sourceId: string, params?: RequestParams) => Promise<HttpResponse<void, void>>;
46033
+ /**
46034
+ * @description Refused with 409 while a registered source still references the file's path (the source's adapter would otherwise hold a dangling `file_path`). After that source is unregistered, the delete succeeds (204). A missing sidecar (no such upload id) is 404.
46035
+ *
46036
+ * @tags structured_ingestion
46037
+ * @name DeleteSourceFile
46038
+ * @summary Delete a tenant-uploaded source file (#107).
46039
+ * @request DELETE:/api/v1/sources/files/{id}
46040
+ * @secure
46041
+ */
46042
+ deleteSourceFile: (id: string, params?: RequestParams) => Promise<HttpResponse<void, void>>;
45220
46043
  /**
45221
46044
  * @description Performs schema introspection on the source to discover types (sorts), features (fields), and relations. This is a preview operation - no data is ingested. `type_filter` narrows the discovery to a named subset **without re-registering the source** — the escape hatch a client uses after `/tables` when the source is over the discovery cap (#66, Gap 2). It conjoins with the source config's own `include_tables`: a request narrows *within* the registration, it cannot widen past it.
45222
46045
  *
@@ -45247,6 +46070,16 @@ declare class StructuredIngestion<SecurityDataType = unknown> {
45247
46070
  * @secure
45248
46071
  */
45249
46072
  ingestFromSource: (sourceId: string, data: IngestFromSourceRequest$1, params?: RequestParams) => Promise<HttpResponse<IngestFromSourceResponse$1, void>>;
46073
+ /**
46074
+ * @description Walks `{base}/{tenant_id}/*\/​.meta.json`. A missing tenant dir yields an empty list (200), not 404 — a tenant that never uploaded is not an error.
46075
+ *
46076
+ * @tags structured_ingestion
46077
+ * @name ListSourceFiles
46078
+ * @summary List the calling tenant's uploaded source files (#107).
46079
+ * @request GET:/api/v1/sources/files
46080
+ * @secure
46081
+ */
46082
+ listSourceFiles: (params?: RequestParams) => Promise<HttpResponse<UploadedSourceFileDto[], any>>;
45250
46083
  /**
45251
46084
  * No description
45252
46085
  *
@@ -45287,6 +46120,16 @@ declare class StructuredIngestion<SecurityDataType = unknown> {
45287
46120
  * @secure
45288
46121
  */
45289
46122
  registerSource: (data: RegisterSourceRequest$1, params?: RequestParams) => Promise<HttpResponse<RegisterSourceResponse$1, void>>;
46123
+ /**
46124
+ * @description Multipart, one field named `file`. Streamed to disk under `{base}/{tenant_id}/{id}/{safe_name}` with a `.meta.json` sidecar. The response `path` is the engine-internal location handed to `POST /api/v1/sources` as `config.file_path` (csv/parquet) or `config.database_path` (sqlite).
46125
+ *
46126
+ * @tags structured_ingestion
46127
+ * @name UploadSourceFile
46128
+ * @summary Upload a file-based source artifact for the calling tenant (#107).
46129
+ * @request POST:/api/v1/sources/files
46130
+ * @secure
46131
+ */
46132
+ uploadSourceFile: (data: string, params?: RequestParams) => Promise<HttpResponse<UploadedSourceFileDto, void>>;
45290
46133
  }
45291
46134
 
45292
46135
  /**
@@ -47998,6 +48841,15 @@ declare class DiscoveryClient {
47998
48841
  declare class Extraction<SecurityDataType = unknown> {
47999
48842
  http: HttpClient<SecurityDataType>;
48000
48843
  constructor(http: HttpClient<SecurityDataType>);
48844
+ /**
48845
+ * @description Read-only with respect to the knowledge base: certification inspects the tenant's sort lattice and never writes a term. Certificates *are* written to the verification certificate store, so the batch is auditable afterwards.
48846
+ *
48847
+ * @tags extraction
48848
+ * @name CertifyExtraction
48849
+ * @summary `POST /api/v1/extraction/certify` — gate a batch of extraction candidates through the OSF well-sortedness certifier before they may become durable KB content.
48850
+ * @request POST:/api/v1/extraction/certify
48851
+ */
48852
+ certifyExtraction: (data: ExtractionCertifyRequest, params?: RequestParams) => Promise<HttpResponse<ExtractionCertifyResponse, void>>;
48001
48853
  /**
48002
48854
  * @description Uses GLiNER2 (zero-shot NER) with sort names from the tenant's knowledge base, guaranteeing that all returned entity labels are valid sort names. Label selection (when no explicit labels provided): Embed the input text and ANN-search the pre-computed sort embedding index (Qdrant) for the most semantically similar HPO sorts. This is O(log n) and typically returns 20-100 highly relevant labels from 19K+ HPO sorts. Requires: - GLiNER2 NER service (`GLINER_NER_URL`) - Qdrant vector store for semantic label selection If either is not configured, returns a 500 error.
48003
48855
  *
@@ -48096,6 +48948,16 @@ declare class DocumentAnalysis<SecurityDataType = unknown> {
48096
48948
  declare class Documents<SecurityDataType = unknown> {
48097
48949
  http: HttpClient<SecurityDataType>;
48098
48950
  constructor(http: HttpClient<SecurityDataType>);
48951
+ /**
48952
+ * No description
48953
+ *
48954
+ * @tags documents
48955
+ * @name EraseDocument
48956
+ * @summary Erase a document and everything extracted from it
48957
+ * @request DELETE:/api/v1/documents/{id}
48958
+ * @secure
48959
+ */
48960
+ eraseDocument: (id: string, params?: RequestParams) => Promise<HttpResponse<DocumentErasureReport, void>>;
48099
48961
  /**
48100
48962
  * No description
48101
48963
  *
@@ -52708,6 +53570,15 @@ declare class Health<SecurityDataType = unknown> {
52708
53570
  * @request GET:/health
52709
53571
  */
52710
53572
  healthCheck: (params?: RequestParams) => Promise<HttpResponse<EnrichedHealthResponse$1, EnrichedHealthResponse$1>>;
53573
+ /**
53574
+ * No description
53575
+ *
53576
+ * @tags health
53577
+ * @name HealthCheckApi
53578
+ * @summary `GET /api/v1/health` — the same enriched health check under the `/api/v1` prefix. The playground front proxy forwards only `/api/*` to the engine (and answers the bare `/health` itself with a static OK), so THIS is the path that makes the deployed `build_info.version` publicly readable — a stale rollout must never be indistinguishable from a fresh one.
53579
+ * @request GET:/api/v1/health
53580
+ */
53581
+ healthCheckApi: (params?: RequestParams) => Promise<HttpResponse<EnrichedHealthResponse$1, EnrichedHealthResponse$1>>;
52711
53582
  }
52712
53583
 
52713
53584
  /** Build information from the backend server. */
@@ -53434,6 +54305,16 @@ declare class Generation<SecurityDataType = unknown> {
53434
54305
  * @secure
53435
54306
  */
53436
54307
  generateDocument: (data: GenerateDocumentRequest$1, params?: RequestParams) => Promise<HttpResponse<GenerateDocumentResponse$1, void>>;
54308
+ /**
54309
+ * @description POST /api/v1/text/generate
54310
+ *
54311
+ * @tags generation
54312
+ * @name GenerateText
54313
+ * @summary Run the caller's system prompt over their text.
54314
+ * @request POST:/api/v1/text/generate
54315
+ * @secure
54316
+ */
54317
+ generateText: (data: TextGenerateRequest, params?: RequestParams) => Promise<HttpResponse<TextGenerateResponse, void>>;
53437
54318
  /**
53438
54319
  * @description Returns `503` when no in-process Gemma is loaded (server started without `OSFKB_OSFQL_GEMMA_DIR`), `400` on an empty prompt, and `422` when the tenant has no persisted lattice to constrain to (ingest a theory with `persist:true` first).
53439
54320
  *
@@ -56229,6 +57110,33 @@ interface PaperMetadataDto {
56229
57110
  source: PaperSource;
56230
57111
  /** URL to full text. */
56231
57112
  fullTextUrl?: string | null;
57113
+ /**
57114
+ * Stable paper identity (`doi:…`, `pmid:…`, `arxiv:…` or `title:…`).
57115
+ *
57116
+ * The join key between a paper listed on a session and the `paperKey`
57117
+ * carried by findings, evidence items and contradiction sides — `doi`,
57118
+ * `pmid` and `arxivId` are each individually optional, so this is the only
57119
+ * identifier guaranteed for every paper. `null` only when talking to a
57120
+ * backend that predates paper attribution.
57121
+ */
57122
+ paperKey?: string | null;
57123
+ }
57124
+ /**
57125
+ * A citable reference to the paper a statement came from.
57126
+ *
57127
+ * Claims, evidence items and contradiction sides are keyed internally by
57128
+ * OSFKB term UUIDs, which no consumer can resolve back to a document. This is
57129
+ * the resolvable counterpart: `paperKey` is the stable identity, and
57130
+ * `doi`/`title` are carried alongside so rendering a citation needs no second
57131
+ * lookup.
57132
+ */
57133
+ interface PaperRefDto {
57134
+ /** Stable paper identity (`doi:…`, `pmid:…`, `arxiv:…` or `title:…`). */
57135
+ paperKey: string;
57136
+ /** DOI of the paper, when it has one. */
57137
+ doi?: string | null;
57138
+ /** Paper title, for display. */
57139
+ title: string;
56232
57140
  }
56233
57141
  /** A search result with relevance score. */
56234
57142
  interface PaperSearchResultDto {
@@ -56280,6 +57188,13 @@ interface ResearchSessionResponse {
56280
57188
  error?: string | null;
56281
57189
  /** Results from each completed cycle. */
56282
57190
  cycles: ResearchCycleResultDto[];
57191
+ /**
57192
+ * Papers ingested so far, with full metadata (title, authors, DOI, URL).
57193
+ *
57194
+ * This is the session's actual corpus — `totalPapersIngested` is only its
57195
+ * length. Empty against a backend that does not send it.
57196
+ */
57197
+ papers: PaperMetadataDto[];
56283
57198
  /** Total papers ingested. */
56284
57199
  totalPapersIngested: number;
56285
57200
  /** Total findings. */
@@ -56335,6 +57250,10 @@ interface ResearchCycleResultDto {
56335
57250
  claimsVerified: number;
56336
57251
  /** Contradictions detected. */
56337
57252
  contradictionsDetected: number;
57253
+ /** Contradictions resolved via evidence comparison. `0` if the backend omits it. */
57254
+ contradictionsResolved: number;
57255
+ /** Claims merged via entailment detection. `0` if the backend omits it. */
57256
+ claimsMerged: number;
56338
57257
  /** Processing time for this cycle in milliseconds. */
56339
57258
  processingTimeMs: number;
56340
57259
  /** Search queries used. */
@@ -56372,6 +57291,14 @@ interface EvidenceItemSummaryDto {
56372
57291
  contribution: number;
56373
57292
  /** DOI of the paper providing this evidence. */
56374
57293
  paperDoi?: string | null;
57294
+ /**
57295
+ * Stable key of the paper providing this evidence.
57296
+ *
57297
+ * Present even when the paper has no DOI, which `paperDoi` cannot cover.
57298
+ */
57299
+ paperKey?: string | null;
57300
+ /** Title of the paper providing this evidence, for display. */
57301
+ paperTitle?: string | null;
56375
57302
  }
56376
57303
  /** A step in the provenance chain. */
56377
57304
  interface ProvenanceStepDto {
@@ -56384,6 +57311,21 @@ interface ProvenanceStepDto {
56384
57311
  /** Timestamp (ISO 8601). */
56385
57312
  timestamp?: string | null;
56386
57313
  }
57314
+ /**
57315
+ * A feature that is residuated — suspended because data is missing.
57316
+ *
57317
+ * Per-feature rather than binary at the claim level: each entry names a
57318
+ * specific piece of missing information that, once supplied, would strengthen
57319
+ * or change the assessment.
57320
+ */
57321
+ interface ResiduatedFeatureDto {
57322
+ /** Feature name that is missing or incomplete. */
57323
+ featureName: string;
57324
+ /** What sort would satisfy this feature. */
57325
+ neededSort?: string | null;
57326
+ /** Information gain from resolving this feature (0.0-1.0). */
57327
+ infoGain: number;
57328
+ }
56387
57329
  /** A verified research finding. */
56388
57330
  interface ResearchFindingDto {
56389
57331
  /** OSFKB term ID of the claim. */
@@ -56404,6 +57346,16 @@ interface ResearchFindingDto {
56404
57346
  residuated: boolean;
56405
57347
  /** Reason for residuation. */
56406
57348
  residuationReason?: string | null;
57349
+ /** Specific features that are residuated, enabling targeted gap filling. */
57350
+ residuatedFeatures: ResiduatedFeatureDto[];
57351
+ /**
57352
+ * Papers the claim was extracted from.
57353
+ *
57354
+ * `claimId` is an OSFKB term UUID and is not resolvable by a consumer; this
57355
+ * is what makes the finding citable. A claim drawn from several papers
57356
+ * carries several refs. Empty when the backend has no attribution for it.
57357
+ */
57358
+ sources: PaperRefDto[];
56407
57359
  }
56408
57360
  /** Response containing research findings. */
56409
57361
  interface ResearchFindingsResponse {
@@ -56436,6 +57388,31 @@ interface ResearchGapsResponse {
56436
57388
  /** Total gaps count. */
56437
57389
  total: number;
56438
57390
  }
57391
+ /** Strategy used to resolve a contradiction between two claims. */
57392
+ type ResolutionStrategyDto = 'EvidenceStrength' | 'EvidenceCount' | 'Unresolvable';
57393
+ /**
57394
+ * Resolution of a detected contradiction, by evidence-strength comparison.
57395
+ *
57396
+ * When two claims contradict, their evidence assessment scores are compared:
57397
+ * the better-supported claim is preferred and the weaker one dismissed. A
57398
+ * `strategy` of `'Unresolvable'` means the two sides were too close to call.
57399
+ */
57400
+ interface ContradictionResolutionDto {
57401
+ /** ID of the preferred claim (stronger evidence). */
57402
+ preferredClaimId: string;
57403
+ /** ID of the dismissed claim (weaker evidence). */
57404
+ dismissedClaimId: string;
57405
+ /** Truthfulness score of the preferred claim. */
57406
+ preferredTruthfulness: number;
57407
+ /** Truthfulness score of the dismissed claim. */
57408
+ dismissedTruthfulness: number;
57409
+ /** Strategy used to resolve the contradiction. */
57410
+ strategy: ResolutionStrategyDto;
57411
+ /** Confidence in the resolution (0.0-1.0). */
57412
+ confidence: number;
57413
+ /** Human-readable explanation of the resolution. */
57414
+ explanation: string;
57415
+ }
56439
57416
  /** A detected contradiction between two claims. */
56440
57417
  interface ContradictionDto {
56441
57418
  /** OSFKB term ID of the first claim. */
@@ -56450,6 +57427,17 @@ interface ContradictionDto {
56450
57427
  confidence: number;
56451
57428
  /** Explanation of the contradiction. */
56452
57429
  explanation: string;
57430
+ /** Resolution of the contradiction, if it was resolved by evidence comparison. */
57431
+ resolution?: ContradictionResolutionDto | null;
57432
+ /**
57433
+ * Papers the first claim was extracted from.
57434
+ *
57435
+ * Without it "these two claims disagree" is unactionable — a reader cannot
57436
+ * tell which literature each side comes from.
57437
+ */
57438
+ claimASources: PaperRefDto[];
57439
+ /** Papers the second claim was extracted from. */
57440
+ claimBSources: PaperRefDto[];
56453
57441
  }
56454
57442
  /** Response containing contradictions. */
56455
57443
  interface ResearchContradictionsResponse {
@@ -56480,6 +57468,10 @@ interface ResearchStatisticsDto {
56480
57468
  gapsResolved: number;
56481
57469
  /** Knowledge gaps remaining. */
56482
57470
  gapsRemaining: number;
57471
+ /** Claims merged via entailment detection. `0` if the backend omits it. */
57472
+ claimsMerged: number;
57473
+ /** Contradictions resolved via evidence comparison. `0` if the backend omits it. */
57474
+ contradictionsResolved: number;
56483
57475
  }
56484
57476
  /** Report verification result. */
56485
57477
  interface ReportVerificationDto {
@@ -56539,6 +57531,18 @@ interface VerifyClaimRequest {
56539
57531
  claimTermId: string;
56540
57532
  /** Evidence sort ID (UUID). */
56541
57533
  evidenceSortId: string;
57534
+ /**
57535
+ * Session whose knowledge base holds the claim, if any.
57536
+ *
57537
+ * A research session's terms live under a tenant of its own, so a claim a
57538
+ * run produced is invisible to a lookup against the deployment's configured
57539
+ * tenant — name the session and the verification is performed where the term
57540
+ * actually is. Omit it for a claim asserted outside any session.
57541
+ *
57542
+ * The session must belong to the caller's tenant; another tenant's session id
57543
+ * answers 404, exactly as an absent one does.
57544
+ */
57545
+ sessionId?: string | null;
56542
57546
  }
56543
57547
  /** Response from claim verification. */
56544
57548
  interface VerifyClaimResponse {
@@ -56557,6 +57561,7 @@ interface VerifyClaimResponse {
56557
57561
  }
56558
57562
 
56559
57563
  type research_ContradictionDto = ContradictionDto;
57564
+ type research_ContradictionResolutionDto = ContradictionResolutionDto;
56560
57565
  type research_CreateResearchSessionRequest = CreateResearchSessionRequest;
56561
57566
  type research_CreateResearchSessionResponse = CreateResearchSessionResponse;
56562
57567
  type research_EvidenceItemSummaryDto = EvidenceItemSummaryDto;
@@ -56565,6 +57570,7 @@ type research_IngestPaperResponse = IngestPaperResponse;
56565
57570
  type research_KnowledgeGapDto = KnowledgeGapDto;
56566
57571
  type research_ListResearchSessionsResponse = ListResearchSessionsResponse;
56567
57572
  type research_PaperMetadataDto = PaperMetadataDto;
57573
+ type research_PaperRefDto = PaperRefDto;
56568
57574
  type research_PaperSearchResultDto = PaperSearchResultDto;
56569
57575
  type research_PaperSource = PaperSource;
56570
57576
  type research_ProvenanceStepDto = ProvenanceStepDto;
@@ -56580,13 +57586,15 @@ type research_ResearchSessionResponse = ResearchSessionResponse;
56580
57586
  type research_ResearchSessionStatusDto = ResearchSessionStatusDto;
56581
57587
  type research_ResearchSessionSummaryDto = ResearchSessionSummaryDto;
56582
57588
  type research_ResearchStatisticsDto = ResearchStatisticsDto;
57589
+ type research_ResiduatedFeatureDto = ResiduatedFeatureDto;
57590
+ type research_ResolutionStrategyDto = ResolutionStrategyDto;
56583
57591
  type research_RunResearchCycleRequest = RunResearchCycleRequest;
56584
57592
  type research_SearchPapersRequest = SearchPapersRequest;
56585
57593
  type research_SearchPapersResponse = SearchPapersResponse;
56586
57594
  type research_VerifyClaimRequest = VerifyClaimRequest;
56587
57595
  type research_VerifyClaimResponse = VerifyClaimResponse;
56588
57596
  declare namespace research {
56589
- export type { research_ContradictionDto as ContradictionDto, research_CreateResearchSessionRequest as CreateResearchSessionRequest, research_CreateResearchSessionResponse as CreateResearchSessionResponse, research_EvidenceItemSummaryDto as EvidenceItemSummaryDto, research_IngestPaperRequest as IngestPaperRequest, research_IngestPaperResponse as IngestPaperResponse, research_KnowledgeGapDto as KnowledgeGapDto, research_ListResearchSessionsResponse as ListResearchSessionsResponse, research_PaperMetadataDto as PaperMetadataDto, research_PaperSearchResultDto as PaperSearchResultDto, research_PaperSource as PaperSource, research_ProvenanceStepDto as ProvenanceStepDto, research_ReportVerificationDto as ReportVerificationDto, research_ResearchContradictionsResponse as ResearchContradictionsResponse, research_ResearchCycleResponse as ResearchCycleResponse, research_ResearchCycleResultDto as ResearchCycleResultDto, research_ResearchFindingDto as ResearchFindingDto, research_ResearchFindingsResponse as ResearchFindingsResponse, research_ResearchGapsResponse as ResearchGapsResponse, research_ResearchReportResponse as ResearchReportResponse, research_ResearchSessionResponse as ResearchSessionResponse, research_ResearchSessionStatusDto as ResearchSessionStatusDto, research_ResearchSessionSummaryDto as ResearchSessionSummaryDto, research_ResearchStatisticsDto as ResearchStatisticsDto, research_RunResearchCycleRequest as RunResearchCycleRequest, research_SearchPapersRequest as SearchPapersRequest, research_SearchPapersResponse as SearchPapersResponse, research_VerifyClaimRequest as VerifyClaimRequest, research_VerifyClaimResponse as VerifyClaimResponse };
57597
+ export type { research_ContradictionDto as ContradictionDto, research_ContradictionResolutionDto as ContradictionResolutionDto, research_CreateResearchSessionRequest as CreateResearchSessionRequest, research_CreateResearchSessionResponse as CreateResearchSessionResponse, research_EvidenceItemSummaryDto as EvidenceItemSummaryDto, research_IngestPaperRequest as IngestPaperRequest, research_IngestPaperResponse as IngestPaperResponse, research_KnowledgeGapDto as KnowledgeGapDto, research_ListResearchSessionsResponse as ListResearchSessionsResponse, research_PaperMetadataDto as PaperMetadataDto, research_PaperRefDto as PaperRefDto, research_PaperSearchResultDto as PaperSearchResultDto, research_PaperSource as PaperSource, research_ProvenanceStepDto as ProvenanceStepDto, research_ReportVerificationDto as ReportVerificationDto, research_ResearchContradictionsResponse as ResearchContradictionsResponse, research_ResearchCycleResponse as ResearchCycleResponse, research_ResearchCycleResultDto as ResearchCycleResultDto, research_ResearchFindingDto as ResearchFindingDto, research_ResearchFindingsResponse as ResearchFindingsResponse, research_ResearchGapsResponse as ResearchGapsResponse, research_ResearchReportResponse as ResearchReportResponse, research_ResearchSessionResponse as ResearchSessionResponse, research_ResearchSessionStatusDto as ResearchSessionStatusDto, research_ResearchSessionSummaryDto as ResearchSessionSummaryDto, research_ResearchStatisticsDto as ResearchStatisticsDto, research_ResiduatedFeatureDto as ResiduatedFeatureDto, research_ResolutionStrategyDto as ResolutionStrategyDto, research_RunResearchCycleRequest as RunResearchCycleRequest, research_SearchPapersRequest as SearchPapersRequest, research_SearchPapersResponse as SearchPapersResponse, research_VerifyClaimRequest as VerifyClaimRequest, research_VerifyClaimResponse as VerifyClaimResponse };
56590
57598
  }
56591
57599
 
56592
57600
  /**
@@ -57868,6 +58876,36 @@ declare class Compliance<SecurityDataType = unknown> {
57868
58876
  * @secure
57869
58877
  */
57870
58878
  captureSnapshot: (data: CaptureSnapshotRequest$1, params?: RequestParams) => Promise<HttpResponse<PredictionSnapshot$1, any>>;
58879
+ /**
58880
+ * No description
58881
+ *
58882
+ * @tags compliance
58883
+ * @name CreateDsr
58884
+ * @summary File a GDPR data subject request
58885
+ * @request POST:/api/v1/dsr
58886
+ * @secure
58887
+ */
58888
+ createDsr: (data: CreateDsrRequest, params?: RequestParams) => Promise<HttpResponse<DsrRecordResponse, void>>;
58889
+ /**
58890
+ * @description **Dry run by default.** An exact match on an identifying feature is the only deterministic way to resolve a person to terms, but exactness is not uniqueness — two people share a name. Erasing on a bare match would silently destroy a homonym's data, and erasure is irreversible, so the plan has to be inspectable before it runs. Pass `confirm: true` once the match has been reviewed.
58891
+ *
58892
+ * @tags compliance
58893
+ * @name EraseSubject
58894
+ * @summary Plan or execute erasure of a data subject's terms
58895
+ * @request POST:/api/v1/dsr/{id}/erase
58896
+ * @secure
58897
+ */
58898
+ eraseSubject: (id: string, data: SubjectErasureRequest, params?: RequestParams) => Promise<HttpResponse<SubjectErasureReport, void>>;
58899
+ /**
58900
+ * No description
58901
+ *
58902
+ * @tags compliance
58903
+ * @name GetDsr
58904
+ * @summary Read a data subject request
58905
+ * @request GET:/api/v1/dsr/{id}
58906
+ * @secure
58907
+ */
58908
+ getDsr: (id: string, params?: RequestParams) => Promise<HttpResponse<DsrRecordResponse, void>>;
57871
58909
  /**
57872
58910
  * No description
57873
58911
  *
@@ -57918,12 +58956,22 @@ declare class Compliance<SecurityDataType = unknown> {
57918
58956
  */
57919
58957
  since?: string | null;
57920
58958
  /** Sort field. Defaults to `timestamp`. */
57921
- sort_by?: any;
58959
+ sort_by?: AuditSortField$1;
57922
58960
  /** Sort direction. Defaults to `desc` (most-recent-first). */
57923
- sort_order?: any;
58961
+ sort_order?: AuditSortOrder$1;
57924
58962
  /** Inclusive upper bound on `timestamp` (RFC 3339). */
57925
58963
  until?: string | null;
57926
58964
  }, params?: RequestParams) => Promise<HttpResponse<AuditPage$1, void>>;
58965
+ /**
58966
+ * No description
58967
+ *
58968
+ * @tags compliance
58969
+ * @name ListDsr
58970
+ * @summary List a data subject's requests
58971
+ * @request GET:/api/v1/dsr
58972
+ * @secure
58973
+ */
58974
+ listDsr: (params?: RequestParams) => Promise<HttpResponse<DsrRecordResponse[], any>>;
57927
58975
  /**
57928
58976
  * No description
57929
58977
  *
@@ -60187,6 +61235,16 @@ declare class OntologyBridge<SecurityDataType = unknown> {
60187
61235
  * @secure
60188
61236
  */
60189
61237
  bulkBindSorts: (data: BulkBindSortsRequest$1, params?: RequestParams) => Promise<HttpResponse<BulkBindSortsResponse$1, any>>;
61238
+ /**
61239
+ * @description The gap this closes (#133): the engine could lower OSFQL to a source's native language and could execute native queries, and the two were never reachable together over HTTP. `POST /api/v1/osfql` runs against the knowledge base and never consults a binding; `POST /api/v1/ontology/transpile` emits the query text and stops. A `transpile`-mode source — which deliberately ingests nothing — therefore had no way to be queried at all, and asking about its data returned an empty result indistinguishable from a broken connector. The dialect is derived from the source's type, never taken from the caller: the binding says which source answers for the sort, and that source's type is the only dialect that could run. Letting a caller name one would let them ask for Cypher against Postgres. The emitted query is returned with the rows. Transpile mode's claim is that OSFQL becomes a native query against the operator's own database; returning only rows leaves that unverifiable.
61240
+ *
61241
+ * @tags ontology_bridge
61242
+ * @name ExecuteTranspiled
61243
+ * @summary Transpile an OSFQL MATCH and execute it on the source it is bound to.
61244
+ * @request POST:/api/v1/ontology/query
61245
+ * @secure
61246
+ */
61247
+ executeTranspiled: (data: ExecuteTranspiledRequest, params?: RequestParams) => Promise<HttpResponse<ExecuteTranspiledResponse, void>>;
60190
61248
  /**
60191
61249
  * @description Produces query tools, write tools, and inference tools from the current sort hierarchy and SQL bindings, along with a system prompt suitable for grounding an LLM.
60192
61250
  *
@@ -60228,7 +61286,7 @@ declare class OntologyBridge<SecurityDataType = unknown> {
60228
61286
  */
60229
61287
  listBindings: (params?: RequestParams) => Promise<HttpResponse<ListBindingsResponse$1, any>>;
60230
61288
  /**
60231
- * @description Parses the OSFQL query, compiles it, and transpiles the first `ScanBySort` operation to SQL using the current sort-table bindings.
61289
+ * @description Parses the OSFQL query, compiles it, and transpiles EVERY `ScanBySort` operation into one statement using the current sort-table bindings — a JOIN for the SQL dialects, a multi-pattern MATCH for Cypher. A plan operation that is not a scan is refused by name rather than dropped: `fully_transpilable` is what a caller checks to decide whether the emitted text is the whole question, and it reported `true` for a query half of which was never emitted (#134).
60232
61290
  *
60233
61291
  * @tags ontology_bridge
60234
61292
  * @name Transpile
@@ -69433,6 +70491,16 @@ declare class Speakers<SecurityDataType = unknown> {
69433
70491
  * @secure
69434
70492
  */
69435
70493
  enrollSpeaker: (data: EnrollSpeakerRequest$1, params?: RequestParams) => Promise<HttpResponse<EnrollSpeakerResponse$1, void>>;
70494
+ /**
70495
+ * @description POST /api/v1/speakers/identify
70496
+ *
70497
+ * @tags speakers
70498
+ * @name IdentifySpeakers
70499
+ * @summary Identify which enrolled voices speak in a piece of audio — no transcript.
70500
+ * @request POST:/api/v1/speakers/identify
70501
+ * @secure
70502
+ */
70503
+ identifySpeakers: (data: IdentifySpeakersRequest, params?: RequestParams) => Promise<HttpResponse<IdentifySpeakersResponse, void>>;
69436
70504
  /**
69437
70505
  * @description GET /api/v1/speakers
69438
70506
  *
@@ -70147,6 +71215,148 @@ declare class ConnectorsClient {
70147
71215
  oauthCallback(name: string, query?: OAuthCallbackQuery): Promise<Response>;
70148
71216
  }
70149
71217
 
71218
+ declare class Embeddings<SecurityDataType = unknown> {
71219
+ http: HttpClient<SecurityDataType>;
71220
+ constructor(http: HttpClient<SecurityDataType>);
71221
+ /**
71222
+ * @description POST /api/v1/embeddings/rank
71223
+ *
71224
+ * @tags embeddings
71225
+ * @name RankEmbeddings
71226
+ * @summary Score every candidate against the query by embedding cosine similarity.
71227
+ * @request POST:/api/v1/embeddings/rank
71228
+ * @secure
71229
+ */
71230
+ rankEmbeddings: (data: EmbeddingRankRequest$1, params?: RequestParams) => Promise<HttpResponse<EmbeddingRankResponse$1, void>>;
71231
+ }
71232
+
71233
+ /**
71234
+ * Embedding-space ranking — `POST /api/v1/embeddings/rank`.
71235
+ *
71236
+ * Scores candidate texts against a query by cosine similarity in the
71237
+ * deployment's shared sentence-embedding space. The endpoint never reorders and
71238
+ * never truncates: it reports one similarity per candidate, in request order,
71239
+ * and leaves the ranking policy to the caller.
71240
+ *
71241
+ * Distinct from the RAG search in `types/rag.ts` (which retrieves from the
71242
+ * knowledge base) — nothing here reads or writes the KB.
71243
+ *
71244
+ * @module
71245
+ */
71246
+ /** Body of `POST /api/v1/embeddings/rank` — one query, and the texts to score against it. */
71247
+ interface EmbeddingRankRequest {
71248
+ /**
71249
+ * Candidate texts, scored in place — the response is index-aligned with this
71250
+ * list, so the caller can zip the scores back onto whatever it retrieved.
71251
+ *
71252
+ * An empty list is valid and yields an empty score list. The backend caps the
71253
+ * list at 512 candidates and answers `400` above that; rank in pages instead.
71254
+ * A blank candidate is not an error — it keeps its slot and scores `0`.
71255
+ */
71256
+ candidates: string[];
71257
+ /**
71258
+ * The text every candidate is scored against. Must be non-blank
71259
+ * (the backend answers `400` otherwise).
71260
+ *
71261
+ * Capped at 8192 **characters**, as is each candidate; longer text is a `400`.
71262
+ */
71263
+ query: string;
71264
+ }
71265
+ /** Response of `POST /api/v1/embeddings/rank`. */
71266
+ interface EmbeddingRankResponse {
71267
+ /**
71268
+ * Cosine similarity in `[-1, 1]`, same length and same order as the request's
71269
+ * `candidates` — index `i` scores `candidates[i]`.
71270
+ *
71271
+ * Higher is more similar. A candidate with no scoreable text (blank or
71272
+ * whitespace-only) scores `0`, which is the same value an orthogonal candidate
71273
+ * gets: absence of signal, not evidence of dissimilarity.
71274
+ */
71275
+ scores: number[];
71276
+ }
71277
+
71278
+ type embeddings_EmbeddingRankRequest = EmbeddingRankRequest;
71279
+ type embeddings_EmbeddingRankResponse = EmbeddingRankResponse;
71280
+ declare namespace embeddings {
71281
+ export type { embeddings_EmbeddingRankRequest as EmbeddingRankRequest, embeddings_EmbeddingRankResponse as EmbeddingRankResponse };
71282
+ }
71283
+
71284
+ /**
71285
+ * Resource client for embedding-space ranking
71286
+ * (`POST /api/v1/embeddings/rank`).
71287
+ *
71288
+ * @remarks
71289
+ * Scores candidate texts against a query by cosine similarity in the
71290
+ * deployment's shared sentence-embedding space — the same embedder the backend
71291
+ * already loads, so a caller does not have to ship a second sentence
71292
+ * transformer into its own process just to choose which of N retrieved items to
71293
+ * spend an expensive step on.
71294
+ *
71295
+ * The endpoint is a pure function of the request: it reads no tenant data,
71296
+ * writes nothing, and never reorders or truncates. It reports a similarity per
71297
+ * candidate and stops there; the ranking policy stays with the caller.
71298
+ *
71299
+ * Uses the snake_case wire format (every field here happens to be a single
71300
+ * word); no value serialization (`ValueDto` / `FeatureValueDto`) is involved.
71301
+ *
71302
+ * Delegates to the generated `Embeddings` route class for the type-safe HTTP call.
71303
+ */
71304
+ declare class EmbeddingsClient {
71305
+ /** @internal */
71306
+ private readonly api;
71307
+ /** @internal */
71308
+ constructor(api: Embeddings);
71309
+ /**
71310
+ * Score every candidate against the query by embedding cosine similarity.
71311
+ *
71312
+ * @param request - The query and the candidate texts to score against it.
71313
+ * @returns `scores` — one cosine similarity in `[-1, 1]` per candidate,
71314
+ * **index-aligned with `request.candidates`** (index `i` scores
71315
+ * `candidates[i]`) and the same length, so the scores can be zipped straight
71316
+ * back onto whatever was retrieved. Higher is more similar; a candidate
71317
+ * whose text is blank scores `0`.
71318
+ * @throws {BadRequestError} `400` — the query is blank, the candidate list is
71319
+ * over the backend's 512-candidate cap, or the query / a candidate is over
71320
+ * 8192 characters.
71321
+ * @throws {ApiError} `503` when the deployment has **no embedding backend
71322
+ * configured** (or its embedder is unreachable / misconfigured). The SDK
71323
+ * surfaces every 5xx as an `InternalServerError`; read its `status` to tell
71324
+ * `503` (no embedder) from `500` (ranking failed).
71325
+ *
71326
+ * @remarks
71327
+ * Distinguish "no embedder" from "no similarity": a deployment without an
71328
+ * embedding backend answers `503` rather than a fabricated score, precisely so
71329
+ * a caller cannot mistake it for "everything scored 0" and silently rank by
71330
+ * noise. The documented fallback on a `503` is to keep the source order.
71331
+ *
71332
+ * An empty `candidates` list is valid, not an error: it answers `200` with an
71333
+ * empty `scores` array, so a caller that retrieved nothing still gets a
71334
+ * well-formed, index-aligned response.
71335
+ *
71336
+ * A `0` score is absence of signal, not evidence of dissimilarity — it is also
71337
+ * what an orthogonal candidate and a blank candidate both receive.
71338
+ *
71339
+ * @example
71340
+ * ```typescript
71341
+ * const retrieved = [
71342
+ * { id: 'doc-1', text: 'Chaperones assist protein folding in the cytosol.' },
71343
+ * { id: 'doc-2', text: 'Quarterly revenue rose 12% year over year.' },
71344
+ * ];
71345
+ *
71346
+ * const { scores } = await client.embeddings.rank({
71347
+ * query: 'how proteins fold',
71348
+ * candidates: retrieved.map((doc) => doc.text),
71349
+ * });
71350
+ *
71351
+ * // Scores are index-aligned — zip them back onto what was retrieved.
71352
+ * const ranked = retrieved
71353
+ * .map((doc, i) => ({ doc, score: scores[i] }))
71354
+ * .sort((a, b) => b.score - a.score);
71355
+ * ```
71356
+ */
71357
+ rank(request: EmbeddingRankRequest): Promise<EmbeddingRankResponse>;
71358
+ }
71359
+
70150
71360
  /** Core knowledge base operations — types, records, rules, functions, constraints, and queries. */
70151
71361
  interface CoreGroup {
70152
71362
  readonly types: SortsClient;
@@ -70438,6 +71648,8 @@ declare class ReasoningLayerClient {
70438
71648
  readonly speech: SpeechClient;
70439
71649
  /** External data connectors — register / list / remove / connect / disconnect + OAuth callback. */
70440
71650
  readonly connectors: ConnectorsClient;
71651
+ /** Embedding-space ranking — cosine score per candidate against a query, index-aligned. */
71652
+ readonly embeddings: EmbeddingsClient;
70441
71653
  private _core?;
70442
71654
  private _ai?;
70443
71655
  private _reasoning?;
@@ -71912,4 +73124,4 @@ declare function toUntaggedFeatures(features: PlainFeatureMap): Record<string, F
71912
73124
  */
71913
73125
  declare function toTermInputDto(input: PsiTermInput | TermInputDto): TermInputDto;
71914
73126
 
71915
- 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, anonymization as Anonymization, 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, conformal as Conformal, conformance as Conformance, type ConformanceCheckResponse, type ConformanceRepairResponse, type ConformanceRequest, connectors as Connectors, 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, demo as Demo, 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, reward as Reward, 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, speakers as Speakers, speech as Speech, statistical as Statistical, streaming as Streaming, 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, translation as Translation, 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, vision as Vision, 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 };
73127
+ 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, anonymization as Anonymization, 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, conformal as Conformal, conformance as Conformance, type ConformanceCheckResponse, type ConformanceRepairResponse, type ConformanceRequest, connectors as Connectors, 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, demo as Demo, discovery as Discovery, type DlSatisfiableRequest, type DlSatisfiableResponse, type DlSubsumesRequest, type DlSubsumesResponse, documentCheck as DocumentCheck, documents as Documents, embeddings as Embeddings, 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, reward as Reward, 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, speakers as Speakers, speech as Speech, statistical as Statistical, streaming as Streaming, 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, translation as Translation, 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, vision as Vision, 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 };