@kortexya/reasoninglayer 0.14.0 → 0.15.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts 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 = "0.14.0";
112
+ declare const SDK_VERSION = "0.15.2";
113
113
  /**
114
114
  * Configuration for the Reasoning Layer client.
115
115
  *
@@ -4468,16 +4468,6 @@ interface DocumentProgressDto$1 {
4468
4468
  inference_rules_applied: number;
4469
4469
  /** LLM model name (if applicable). */
4470
4470
  model_name?: string | null;
4471
- /**
4472
- * OSF residuations created.
4473
- * @min 0
4474
- */
4475
- osf_residuations_created: number;
4476
- /**
4477
- * OSF residuations resumed.
4478
- * @min 0
4479
- */
4480
- osf_residuations_resumed: number;
4481
4471
  /**
4482
4472
  * References resolved.
4483
4473
  * @min 0
@@ -4503,6 +4493,16 @@ interface DocumentProgressDto$1 {
4503
4493
  * @min 0
4504
4494
  */
4505
4495
  relations_integrated: number;
4496
+ /**
4497
+ * Residuations created (suspended operations).
4498
+ * @min 0
4499
+ */
4500
+ residuations_created: number;
4501
+ /**
4502
+ * Residuations resumed.
4503
+ * @min 0
4504
+ */
4505
+ residuations_resumed: number;
4506
4506
  /**
4507
4507
  * Reviews persisted.
4508
4508
  * @min 0
@@ -4520,11 +4520,6 @@ interface DocumentProgressDto$1 {
4520
4520
  * @min 0
4521
4521
  */
4522
4522
  sorts_reused: number;
4523
- /**
4524
- * Sorts reused via GLB/feature matching.
4525
- * @min 0
4526
- */
4527
- sorts_reused_glb: number;
4528
4523
  /**
4529
4524
  * Sorts reused via semantic matching.
4530
4525
  * @min 0
@@ -5109,6 +5104,27 @@ interface EntityDto$1 {
5109
5104
  */
5110
5105
  sort_id: string;
5111
5106
  }
5107
+ /** Audit record for one substring-based entity merge. */
5108
+ interface EntityMergeAuditDto {
5109
+ /**
5110
+ * Term ID of the entity that was merged away (the shorter form).
5111
+ * @format uuid
5112
+ */
5113
+ merged_from_id: string;
5114
+ /** Name of the merged-away entity. */
5115
+ merged_from_name: string;
5116
+ /** Original sort name of the merged-away entity. */
5117
+ merged_from_sort: string;
5118
+ /**
5119
+ * Term ID of the surviving entity (the longer/canonical form).
5120
+ * @format uuid
5121
+ */
5122
+ merged_into_id: string;
5123
+ /** Name of the surviving entity. */
5124
+ merged_into_name: string;
5125
+ /** Sort name of the surviving entity (which won the merge). */
5126
+ merged_into_sort: string;
5127
+ }
5112
5128
  /** Per-entity verification detail. */
5113
5129
  interface EntityVerificationDetailDto$1 {
5114
5130
  /**
@@ -6070,6 +6086,8 @@ type FeatureConstraintDto = {
6070
6086
  };
6071
6087
  /** API representation of a feature descriptor */
6072
6088
  interface FeatureDescriptorDto$1 {
6089
+ /** Custom OWL annotations for this feature (e.g., isIdentifier, unit, enumValues) */
6090
+ annotations?: Record<string, string>;
6073
6091
  /** Optional constraint on the feature value */
6074
6092
  constraint?: null | ConstraintDto$1;
6075
6093
  /**
@@ -8355,6 +8373,13 @@ interface IngestMarkdownRequest$1 {
8355
8373
  }
8356
8374
  /** Request to ingest RDF/OWL data */
8357
8375
  interface IngestRdfRequest$1 {
8376
+ /**
8377
+ * Whether to compute and store text embeddings for each ingested term.
8378
+ *
8379
+ * Default `true` because downstream extraction relies on embeddings.
8380
+ * Set to `false` only for opt-in fast structural-only ingest.
8381
+ */
8382
+ compute_embeddings?: boolean;
8358
8383
  /** RDF content in Turtle, N-Triples, or RDF/XML format */
8359
8384
  content: string;
8360
8385
  /** Format of the RDF content */
@@ -8364,7 +8389,7 @@ interface IngestRdfRequest$1 {
8364
8389
  /** Whether to also parse SHACL shapes from the content */
8365
8390
  parse_shacl?: boolean;
8366
8391
  }
8367
- /** Response from RDF ingestion */
8392
+ /** Response from RDF ingestion (sync mode, HTTP 201). */
8368
8393
  interface IngestRdfResponse$1 {
8369
8394
  /**
8370
8395
  * Number of SHACL shapes parsed
@@ -8445,6 +8470,17 @@ interface IngestionConfigDto$1 {
8445
8470
  * Default: true
8446
8471
  */
8447
8472
  enable_focused_extraction?: boolean;
8473
+ /**
8474
+ * Enable LLM-based coreference resolution for hard cases.
8475
+ * When true, after structural deduplication the pipeline runs parallel
8476
+ * per-pair LLM calls to resolve ambiguous coreferences (e.g.,
8477
+ * "Stanley Reed" vs "Justice Reed"). Adds LLM calls proportional to the
8478
+ * number of candidate pairs — violates the 0-LLM-token guarantee for the
8479
+ * LocalNer strategy, so disabled by default. Opt in to improve entity
8480
+ * deduplication quality at the cost of extra LLM calls.
8481
+ * Default: false
8482
+ */
8483
+ enable_llm_coreference?: boolean;
8448
8484
  /**
8449
8485
  * Enable schema discovery before extraction.
8450
8486
  * Samples the document to discover entity/relation types before per-chunk extraction.
@@ -8609,6 +8645,11 @@ interface IngestionStatsDto$1 {
8609
8645
  * @min 0
8610
8646
  */
8611
8647
  entities_pending_review: number;
8648
+ /**
8649
+ * Audit trail for substring-based entity merges (surface-form coreference).
8650
+ * E.g., "Brown v. Board" merged into "Brown v. Board of Education of Topeka".
8651
+ */
8652
+ entity_merge_audit?: EntityMergeAuditDto[];
8612
8653
  /**
8613
8654
  * Estimated USD cost of LLM API calls (if model pricing is available)
8614
8655
  * @format double
@@ -11388,25 +11429,20 @@ interface PipelineQualityStatsDto$1 {
11388
11429
  */
11389
11430
  dynamic_config_relation_threshold: number;
11390
11431
  /**
11391
- * Total formal concepts enumerated by FCA
11432
+ * Entities rejected by validation
11392
11433
  * @min 0
11393
11434
  */
11394
- fca_concepts_enumerated: number;
11435
+ entities_rejected: number;
11395
11436
  /**
11396
- * Concepts filtered (matching existing sorts)
11397
- * @min 0
11398
- */
11399
- fca_concepts_filtered: number;
11400
- /**
11401
- * Novel concepts discovered (not matching any existing sort)
11437
+ * Entities auto-corrected to a better sort
11402
11438
  * @min 0
11403
11439
  */
11404
- fca_novel_concepts: number;
11440
+ entities_sort_corrected: number;
11405
11441
  /**
11406
- * Sorts created from FCA-discovered concepts
11442
+ * Entities that passed validation
11407
11443
  * @min 0
11408
11444
  */
11409
- fca_sorts_created: number;
11445
+ entities_validated: number;
11410
11446
  /**
11411
11447
  * Axioms learned from entity feature patterns
11412
11448
  * @min 0
@@ -11418,75 +11454,76 @@ interface PipelineQualityStatsDto$1 {
11418
11454
  */
11419
11455
  feedback_pipeline_adjustments: number;
11420
11456
  /**
11421
- * LLM entities deduped against NER entities by normalized name in hybrid mode
11457
+ * Total quality issues from forward chaining
11422
11458
  * @min 0
11423
11459
  */
11424
- hybrid_intra_batch_deduped: number;
11460
+ forward_chaining_issues: number;
11425
11461
  /**
11426
- * Relations from inference rules deduplicated against existing
11462
+ * Entities fully valid (all constraints pass)
11427
11463
  * @min 0
11428
11464
  */
11429
- inference_relations_deduped: number;
11465
+ fully_valid: number;
11430
11466
  /**
11431
- * Inference rules successfully applied (expanded to relations)
11467
+ * LLM entities deduped against NER entities by normalized name in hybrid mode
11432
11468
  * @min 0
11433
11469
  */
11434
- inference_rules_applied: number;
11470
+ hybrid_intra_batch_deduped: number;
11435
11471
  /**
11436
- * Inference rules filtered due to low confidence
11472
+ * Entities missing required features
11437
11473
  * @min 0
11438
11474
  */
11439
- inference_rules_filtered_low_confidence: number;
11475
+ incomplete_entities: number;
11440
11476
  /**
11441
- * Inference rules with scope_sort not found among entities
11477
+ * Entities with incompatible sort assignments
11442
11478
  * @min 0
11443
11479
  */
11444
- inference_rules_invalid_scope_sort: number;
11480
+ inconsistent_sorts: number;
11445
11481
  /**
11446
- * Total inference rules extracted across all chunks
11482
+ * Number of forward-chaining iterations executed.
11447
11483
  * @min 0
11448
11484
  */
11449
- inference_rules_total: number;
11485
+ inference_iterations: number;
11450
11486
  /**
11451
- * Entities rejected by OSF validation
11487
+ * Relations from inference rules deduplicated against existing
11452
11488
  * @min 0
11453
11489
  */
11454
- osf_entities_rejected: number;
11490
+ inference_relations_deduped: number;
11455
11491
  /**
11456
- * Entities auto-corrected to a better sort
11492
+ * Inference rules successfully applied (expanded to relations)
11457
11493
  * @min 0
11458
11494
  */
11459
- osf_entities_sort_corrected: number;
11495
+ inference_rules_applied: number;
11460
11496
  /**
11461
- * Entities that passed OSF validation
11497
+ * Inference rules filtered due to low confidence
11462
11498
  * @min 0
11463
11499
  */
11464
- osf_entities_validated: number;
11500
+ inference_rules_filtered_low_confidence: number;
11465
11501
  /**
11466
- * Total quality issues from forward chaining
11502
+ * Inference rules with scope_sort not found among entities
11467
11503
  * @min 0
11468
11504
  */
11469
- osf_forward_chaining_issues: number;
11505
+ inference_rules_invalid_scope_sort: number;
11470
11506
  /**
11471
- * Entities fully valid (all constraints pass)
11507
+ * Total inference rules extracted across all chunks
11472
11508
  * @min 0
11473
11509
  */
11474
- osf_fully_valid: number;
11510
+ inference_rules_total: number;
11475
11511
  /**
11476
- * Entities missing required features (from forward chaining)
11512
+ * Pattern rules generated from co-occurrence analysis.
11513
+ * These are homoiconic Ψ-term rules persisted to the term store.
11477
11514
  * @min 0
11478
11515
  */
11479
- osf_incomplete_entities: number;
11516
+ pattern_rules_persisted: number;
11480
11517
  /**
11481
- * Entities with incompatible sort assignments
11518
+ * Total relations generated from inference rule expansion
11482
11519
  * @min 0
11483
11520
  */
11484
- osf_inconsistent_sorts: number;
11521
+ relations_from_inference_rules: number;
11485
11522
  /**
11486
- * Total relations generated from inference rule expansion
11523
+ * Total relations derived by forward chaining.
11487
11524
  * @min 0
11488
11525
  */
11489
- relations_from_inference_rules: number;
11526
+ relations_inferred: number;
11490
11527
  }
11491
11528
  /** A matching plan from the library. */
11492
11529
  interface PlanMatchDto$1 {
@@ -13587,6 +13624,13 @@ interface SearchCommunitiesResponse$1 {
13587
13624
  /** Search statistics */
13588
13625
  stats: CommunitySearchStatsDto$1;
13589
13626
  }
13627
+ /**
13628
+ * Which computation the search endpoint should perform.
13629
+ *
13630
+ * Defaults to `solutions` for full backward compatibility with existing clients
13631
+ * that do not send a `mode` field.
13632
+ */
13633
+ type SearchModeDto$1 = "solutions" | "feasibility";
13590
13634
  /** Request to search for solutions */
13591
13635
  interface SearchRequest {
13592
13636
  /**
@@ -13596,10 +13640,15 @@ interface SearchRequest {
13596
13640
  */
13597
13641
  collect_traces?: boolean | null;
13598
13642
  /**
13599
- * Maximum number of solutions to find
13643
+ * Maximum number of solutions to find (only used in `solutions` mode)
13600
13644
  * @min 0
13601
13645
  */
13602
13646
  max_solutions?: number | null;
13647
+ /**
13648
+ * Which computation to perform. Omit or set to `"solutions"` for the
13649
+ * default enumeration behaviour (backward compatible).
13650
+ */
13651
+ mode?: SearchModeDto$1;
13603
13652
  /** Search strategy to use */
13604
13653
  strategy: SearchStrategyDto$1;
13605
13654
  /**
@@ -13609,18 +13658,36 @@ interface SearchRequest {
13609
13658
  */
13610
13659
  use_neural_guidance?: boolean | null;
13611
13660
  }
13612
- /** Response with search results */
13613
- interface SearchResponse {
13661
+ /**
13662
+ * Response from the search endpoint.
13663
+ *
13664
+ * The `kind` field is a discriminator — always read it first to know which
13665
+ * variant you received before accessing the mode-specific fields.
13666
+ */
13667
+ type SearchResponse = {
13614
13668
  /**
13615
- * Total number of solutions found
13669
+ * Number of solutions found.
13616
13670
  * @min 0
13617
13671
  */
13618
13672
  count: number;
13619
- /** Search statistics (present when collect_traces is true or use_neural_guidance is true) */
13673
+ kind: "solutions";
13674
+ /**
13675
+ * Search statistics (present when `collect_traces` or `use_neural_guidance`
13676
+ * is true, or when the SAT solver was used).
13677
+ */
13620
13678
  search_stats?: null | SearchStatsDto$1;
13621
- /** Solutions found */
13679
+ /** Enumerated complete assignments. */
13622
13680
  solutions: SpaceSolutionDto$1[];
13623
- }
13681
+ } | {
13682
+ kind: "feasibility";
13683
+ /** Solver statistics for the feasibility queries. */
13684
+ search_stats?: null | SearchStatsDto$1;
13685
+ /**
13686
+ * Per-variable feasibility. Key is the variable name as registered
13687
+ * in the space's choice points.
13688
+ */
13689
+ variables: Record<string, VariableFeasibilityDto$1>;
13690
+ };
13624
13691
  /**
13625
13692
  * Search statistics collected during a search operation.
13626
13693
  *
@@ -13633,6 +13700,19 @@ interface SearchStatsDto$1 {
13633
13700
  * @min 0
13634
13701
  */
13635
13702
  backtracks: number;
13703
+ /**
13704
+ * Choice points that were forced by initial propagation (before any
13705
+ * search decision). Each entry is an unbiased "confirmed" assignment:
13706
+ * every solution in the search space respects it. Clients should use
13707
+ * this list (not the intersection of enumerated solutions) to display
13708
+ * which choices are definitively locked in.
13709
+ */
13710
+ forced_choices?: ChoiceSelection$1[];
13711
+ /**
13712
+ * Number of learned nogood clauses.
13713
+ * @min 0
13714
+ */
13715
+ learned_clauses: number;
13636
13716
  /**
13637
13717
  * Total nodes visited during search.
13638
13718
  * @min 0
@@ -13643,6 +13723,11 @@ interface SearchStatsDto$1 {
13643
13723
  * @min 0
13644
13724
  */
13645
13725
  nodes_pruned: number;
13726
+ /**
13727
+ * Number of restarts performed (Luby restart strategy).
13728
+ * @min 0
13729
+ */
13730
+ restarts: number;
13646
13731
  /**
13647
13732
  * Number of times the neural scorer was invoked.
13648
13733
  * @min 0
@@ -14116,6 +14201,8 @@ interface SortDiscoveryResponseDto {
14116
14201
  }
14117
14202
  /** API representation of a sort with full OSF schema */
14118
14203
  interface SortDto$1 {
14204
+ /** Custom OWL annotations (e.g., icon, color) */
14205
+ annotations?: Record<string, string>;
14119
14206
  /** Bound constraints on feature values */
14120
14207
  bound_constraints?: BoundConstraintDto$1[];
14121
14208
  /** Human-readable description for semantic search */
@@ -16078,6 +16165,33 @@ type ValuePatternDto$1 = {
16078
16165
  type: "bind";
16079
16166
  variable: string;
16080
16167
  };
16168
+ /**
16169
+ * Feasibility of a single binary variable in the constraint space.
16170
+ *
16171
+ * Produced by `feasibility` mode search. Both fields can be `false` only
16172
+ * when the problem is UNSAT (no valid assignment exists).
16173
+ */
16174
+ interface VariableFeasibilityDto$1 {
16175
+ /**
16176
+ * `true` if there exists at least one valid assignment where this variable
16177
+ * is 0 (unselected / false).
16178
+ */
16179
+ can_be_false: boolean;
16180
+ /**
16181
+ * `true` if there exists at least one valid assignment where this variable
16182
+ * is 1 (selected / true).
16183
+ */
16184
+ can_be_true: boolean;
16185
+ /**
16186
+ * `true` if this variable's feasibility was fully determined by the solver.
16187
+ * `false` if the solver hit a conflict limit before resolving this variable
16188
+ * — in that case, `can_be_true` and `can_be_false` are conservative
16189
+ * approximations (both may be `true` even if the variable is actually
16190
+ * confirmed). The frontend can show unverified variables differently
16191
+ * (e.g. yellow/amber) so the user knows the result is approximate.
16192
+ */
16193
+ verified?: boolean;
16194
+ }
16081
16195
  /** Result of verbalizing a single PsiTerm. */
16082
16196
  interface VerbalizationResultDto$1 {
16083
16197
  /**
@@ -26373,15 +26487,18 @@ declare class Ingestion<SecurityDataType = unknown> {
26373
26487
  */
26374
26488
  ingestMarkdownBatch: (data: IngestMarkdownBatchRequest$1, params?: RequestParams) => Promise<HttpResponse<void, void>>;
26375
26489
  /**
26376
- * No description
26490
+ * @description Defaults to async dispatch: returns `202` with a session id and the pipeline runs in a background tokio task. Pass `?sync=true` to run the whole pipeline inside the request and get a `201` with the full result — suitable only for small ontologies because the embedding loop dominates wall time on large inputs.
26377
26491
  *
26378
26492
  * @tags ingestion
26379
26493
  * @name IngestRdf
26380
- * @summary Ingest RDF/OWL/SHACL data and convert to OSF
26494
+ * @summary Ingest RDF/OWL/SHACL data and convert to OSF.
26381
26495
  * @request POST:/api/v1/ingest/rdf
26382
26496
  * @secure
26383
26497
  */
26384
- ingestRdf: (data: IngestRdfRequest$1, params?: RequestParams) => Promise<HttpResponse<IngestRdfResponse$1, void>>;
26498
+ ingestRdf: (query: {
26499
+ /** When true, run synchronously (returns 201). Default false: returns 202 with a session id. */
26500
+ sync: boolean;
26501
+ }, data: IngestRdfRequest$1, params?: RequestParams) => Promise<HttpResponse<IngestRdfResponse$1, void>>;
26385
26502
  /**
26386
26503
  * @description Returns paginated list of chunk failures in the dead-letter queue.
26387
26504
  *
@@ -26548,10 +26665,10 @@ interface DocumentProgressDto {
26548
26665
  inferenceRulesApplied: number;
26549
26666
  /** LLM model name (if applicable). */
26550
26667
  modelName?: string | null;
26551
- /** OSF residuations created. */
26552
- osfResiduationsCreated: number;
26553
- /** OSF residuations resumed. */
26554
- osfResiduationsResumed: number;
26668
+ /** Residuations created (suspended operations). */
26669
+ residuationsCreated: number;
26670
+ /** Residuations resumed. */
26671
+ residuationsResumed: number;
26555
26672
  /** References resolved. */
26556
26673
  referencesResolved: number;
26557
26674
  /** Unresolved references. */
@@ -26570,8 +26687,6 @@ interface DocumentProgressDto {
26570
26687
  sortsCreated: number;
26571
26688
  /** Existing sorts reused (exact match). */
26572
26689
  sortsReused: number;
26573
- /** Sorts reused via GLB/feature matching. */
26574
- sortsReusedGlb: number;
26575
26690
  /** Sorts reused via semantic matching. */
26576
26691
  sortsReusedSemantic: number;
26577
26692
  /** When ingestion started (ISO 8601). */
@@ -26941,20 +27056,28 @@ interface PipelineQualityStatsDto {
26941
27056
  dynamicConfigEntityThreshold: number;
26942
27057
  /** Dynamic relation confidence threshold based on KB maturity. */
26943
27058
  dynamicConfigRelationThreshold: number;
26944
- /** Total formal concepts enumerated by FCA. */
26945
- fcaConceptsEnumerated: number;
26946
- /** Concepts filtered (matching existing sorts). */
26947
- fcaConceptsFiltered: number;
26948
- /** Novel concepts discovered (not matching any existing sort). */
26949
- fcaNovelConcepts: number;
26950
- /** Sorts created from FCA-discovered concepts. */
26951
- fcaSortsCreated: number;
27059
+ /** Entities rejected by validation. */
27060
+ entitiesRejected: number;
27061
+ /** Entities auto-corrected to a better sort. */
27062
+ entitiesSortCorrected: number;
27063
+ /** Entities that passed validation. */
27064
+ entitiesValidated: number;
26952
27065
  /** Axioms learned from entity feature patterns. */
26953
27066
  feedbackAxiomsLearned: number;
26954
27067
  /** Pipeline threshold adjustments applied by dynamic config. */
26955
27068
  feedbackPipelineAdjustments: number;
27069
+ /** Total quality issues from forward chaining. */
27070
+ forwardChainingIssues: number;
27071
+ /** Entities fully valid (all constraints pass). */
27072
+ fullyValid: number;
26956
27073
  /** LLM entities deduped against NER entities by normalized name in hybrid mode. */
26957
27074
  hybridIntraBatchDeduped: number;
27075
+ /** Entities missing required features. */
27076
+ incompleteEntities: number;
27077
+ /** Entities with incompatible sort assignments. */
27078
+ inconsistentSorts: number;
27079
+ /** Number of forward-chaining iterations executed. */
27080
+ inferenceIterations: number;
26958
27081
  /** Relations from inference rules deduplicated against existing. */
26959
27082
  inferenceRelationsDeduped: number;
26960
27083
  /** Inference rules successfully applied (expanded to relations). */
@@ -26965,18 +27088,12 @@ interface PipelineQualityStatsDto {
26965
27088
  inferenceRulesInvalidScopeSort: number;
26966
27089
  /** Total inference rules extracted across all chunks. */
26967
27090
  inferenceRulesTotal: number;
26968
- /** Entities rejected by validation. */
26969
- osfEntitiesRejected: number;
26970
- /** Entities auto-corrected to a better sort. */
26971
- osfEntitiesSortCorrected: number;
26972
- /** Entities that passed validation. */
26973
- osfEntitiesValidated: number;
26974
- /** Total quality issues from forward chaining. */
26975
- osfForwardChainingIssues: number;
26976
- /** Entities fully valid (all constraints pass). */
26977
- osfFullyValid: number;
26978
- /** Entities missing required features (from forward chaining). */
26979
- osfIncompleteEntities: number;
27091
+ /** Pattern rules generated from co-occurrence analysis. */
27092
+ patternRulesPersisted: number;
27093
+ /** Total relations generated from inference rule expansion. */
27094
+ relationsFromInferenceRules: number;
27095
+ /** Total relations derived by forward chaining. */
27096
+ relationsInferred: number;
26980
27097
  }
26981
27098
  /**
26982
27099
  * Token usage from LLM API calls during ingestion.
@@ -27221,6 +27338,11 @@ interface IngestRdfRequest {
27221
27338
  parseOntology?: boolean;
27222
27339
  /** Whether to also parse SHACL shapes from the content. */
27223
27340
  parseShacl?: boolean;
27341
+ /**
27342
+ * When true, run synchronously and return the result immediately (HTTP 201).
27343
+ * When false (default), return HTTP 202 with a session ID for async polling.
27344
+ */
27345
+ sync?: boolean;
27224
27346
  /** Tenant ID for the ingested data. */
27225
27347
  tenantId: string;
27226
27348
  }
@@ -30684,6 +30806,15 @@ interface SearchStatsDto {
30684
30806
  solveTimeMs: number;
30685
30807
  /** Number of times the neural scorer was invoked. */
30686
30808
  scorerCalls: number;
30809
+ /** Number of restarts performed (Luby restart strategy). */
30810
+ restarts: number;
30811
+ /** Number of learned nogood clauses. */
30812
+ learnedClauses: number;
30813
+ /**
30814
+ * Choice points forced by initial propagation (before any search decision).
30815
+ * Every solution in the search space respects these assignments unconditionally.
30816
+ */
30817
+ forcedChoices?: ChoiceSelection[];
30687
30818
  }
30688
30819
  /**
30689
30820
  * Trace event from LIFE feature operations during search.
@@ -30744,35 +30875,98 @@ interface CommitRequest {
30744
30875
  /** Index of the alternative to commit to. */
30745
30876
  alternativeIndex: number;
30746
30877
  }
30878
+ /**
30879
+ * Which computation the search endpoint should perform.
30880
+ *
30881
+ * @remarks
30882
+ * - `"solutions"`: enumerate complete, valid assignments (default — backward compatible).
30883
+ * - `"feasibility"`: run 2×N per-variable SAT queries and return reachability info.
30884
+ * Much faster than full enumeration for large spaces.
30885
+ */
30886
+ type SearchModeDto = 'solutions' | 'feasibility';
30887
+ /**
30888
+ * Reachability of a single binary choice-point variable.
30889
+ *
30890
+ * @remarks
30891
+ * Produced by `mode = "feasibility"` search.
30892
+ * - `canBeTrue = true` means the solver actually observed a valid assignment
30893
+ * with this variable = 1 (a witnessed model).
30894
+ * - `canBeFalse = true` means the solver observed a valid assignment with
30895
+ * this variable = 0.
30896
+ * - `canBeTrue = false && canBeFalse = false` means the problem is UNSAT.
30897
+ *
30898
+ * When the underlying solver hits a conflict/time budget before the opposite
30899
+ * polarity could be proven (im)feasible, `verified` is `false` and the
30900
+ * reachability fields reflect only the polarities that were actually
30901
+ * witnessed. For example, `(canBeTrue: true, canBeFalse: false,
30902
+ * verified: false)` means "observed in every model found so far, never
30903
+ * observed as 0 — likely required, but the solver did not complete the
30904
+ * UNSAT-for-0 probe to certify it."
30905
+ */
30906
+ interface VariableFeasibilityDto {
30907
+ /** True if the solver witnessed a valid assignment where this variable is 1. */
30908
+ canBeTrue: boolean;
30909
+ /** True if the solver witnessed a valid assignment where this variable is 0. */
30910
+ canBeFalse: boolean;
30911
+ /**
30912
+ * True when the reachability result is fully determined by the solver
30913
+ * (both polarities resolved). False when a conflict/time limit was hit
30914
+ * and the result reflects only the polarities that were observed.
30915
+ */
30916
+ verified: boolean;
30917
+ }
30747
30918
  /**
30748
30919
  * Request to search for solutions.
30749
30920
  */
30750
30921
  interface SpaceSearchRequest {
30751
30922
  /** Search strategy to use. */
30752
30923
  strategy: SearchStrategyDto;
30753
- /** Maximum number of solutions to find. */
30924
+ /** Maximum number of solutions to find (only used in `"solutions"` mode). */
30754
30925
  maxSolutions?: number | null;
30755
30926
  /** Enable trace collection during search. */
30756
30927
  collectTraces?: boolean | null;
30757
30928
  /** Wire the neural scorer into search (AlphaProof-style guidance). */
30758
30929
  useNeuralGuidance?: boolean | null;
30930
+ /**
30931
+ * Which computation to perform.
30932
+ * Omit or set to `"solutions"` for the default enumeration behaviour (backward compatible).
30933
+ */
30934
+ mode?: SearchModeDto;
30759
30935
  }
30760
30936
  /**
30761
- * Response with search results.
30937
+ * Response from the search endpoint.
30938
+ *
30939
+ * @remarks
30940
+ * Discriminated union on `kind`. Always read `kind` first:
30941
+ * - `"solutions"`: standard enumeration result with `solutions` and `count`.
30942
+ * - `"feasibility"`: per-variable reachability map in `variables`.
30762
30943
  */
30763
- interface SpaceSearchResponse {
30764
- /** Solutions found. */
30944
+ type SpaceSearchResponse = {
30945
+ /** Discriminator — always `"solutions"` for this variant. */
30946
+ kind: 'solutions';
30947
+ /** Enumerated complete assignments. */
30765
30948
  solutions: SpaceSolutionDto[];
30766
- /** Total number of solutions found. */
30949
+ /** Number of solutions found. */
30767
30950
  count: number;
30768
30951
  /** Search statistics. */
30769
30952
  searchStats?: SearchStatsDto | null;
30770
- }
30953
+ } | {
30954
+ /** Discriminator — always `"feasibility"` for this variant. */
30955
+ kind: 'feasibility';
30956
+ /**
30957
+ * Per-variable reachability. Key is the variable name as registered
30958
+ * in the space's choice points.
30959
+ */
30960
+ variables: Record<string, VariableFeasibilityDto>;
30961
+ /** Solver statistics for the feasibility queries. */
30962
+ searchStats?: SearchStatsDto | null;
30963
+ };
30771
30964
 
30772
30965
  type spaces_ChoicePointDto = ChoicePointDto;
30773
30966
  type spaces_ChoiceSelection = ChoiceSelection;
30774
30967
  type spaces_CommitRequest = CommitRequest;
30775
30968
  type spaces_CreateSpaceRequest = CreateSpaceRequest;
30969
+ type spaces_SearchModeDto = SearchModeDto;
30776
30970
  type spaces_SearchStatsDto = SearchStatsDto;
30777
30971
  type spaces_SearchStrategyDto = SearchStrategyDto;
30778
30972
  type spaces_SpaceConstraintDto = SpaceConstraintDto;
@@ -30782,8 +30976,9 @@ type spaces_SpaceSearchResponse = SpaceSearchResponse;
30782
30976
  type spaces_SpaceSolutionDto = SpaceSolutionDto;
30783
30977
  type spaces_SpaceStatusDto = SpaceStatusDto;
30784
30978
  type spaces_TraceEventDto = TraceEventDto;
30979
+ type spaces_VariableFeasibilityDto = VariableFeasibilityDto;
30785
30980
  declare namespace spaces {
30786
- export type { spaces_ChoicePointDto as ChoicePointDto, spaces_ChoiceSelection as ChoiceSelection, spaces_CommitRequest as CommitRequest, spaces_CreateSpaceRequest as CreateSpaceRequest, spaces_SearchStatsDto as SearchStatsDto, spaces_SearchStrategyDto as SearchStrategyDto, spaces_SpaceConstraintDto as SpaceConstraintDto, spaces_SpaceResponse as SpaceResponse, spaces_SpaceSearchRequest as SpaceSearchRequest, spaces_SpaceSearchResponse as SpaceSearchResponse, spaces_SpaceSolutionDto as SpaceSolutionDto, spaces_SpaceStatusDto as SpaceStatusDto, spaces_TraceEventDto as TraceEventDto };
30981
+ export type { spaces_ChoicePointDto as ChoicePointDto, spaces_ChoiceSelection as ChoiceSelection, spaces_CommitRequest as CommitRequest, spaces_CreateSpaceRequest as CreateSpaceRequest, spaces_SearchModeDto as SearchModeDto, spaces_SearchStatsDto as SearchStatsDto, spaces_SearchStrategyDto as SearchStrategyDto, spaces_SpaceConstraintDto as SpaceConstraintDto, spaces_SpaceResponse as SpaceResponse, spaces_SpaceSearchRequest as SpaceSearchRequest, spaces_SpaceSearchResponse as SpaceSearchResponse, spaces_SpaceSolutionDto as SpaceSolutionDto, spaces_SpaceStatusDto as SpaceStatusDto, spaces_TraceEventDto as TraceEventDto, spaces_VariableFeasibilityDto as VariableFeasibilityDto };
30787
30982
  }
30788
30983
 
30789
30984
  /**