@kortexya/reasoninglayer 1.14.0 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.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 = "1.14.0";
112
+ declare const SDK_VERSION = "1.15.0";
113
113
  /**
114
114
  * Authentication mode for the SDK.
115
115
  *
@@ -144,7 +144,7 @@ type AuthConfig = {
144
144
  * @example Bearer token (server-side)
145
145
  * ```typescript
146
146
  * const config: ClientConfig = {
147
- * baseUrl: 'http://localhost:8083',
147
+ * baseUrl: 'http://localhost:8085',
148
148
  * tenantId: '550e8400-e29b-41d4-a716-446655440000',
149
149
  * auth: { mode: 'bearer', token: process.env.RL_API_TOKEN! },
150
150
  * };
@@ -160,7 +160,7 @@ type AuthConfig = {
160
160
  * ```
161
161
  */
162
162
  interface ClientConfig {
163
- /** Base URL of the Reasoning Layer API (e.g., `"http://localhost:8083"`). */
163
+ /** Base URL of the Reasoning Layer API (e.g., `"http://localhost:8085"`). */
164
164
  baseUrl: string;
165
165
  /** Tenant UUID. Set once, NOT overridable per-call. */
166
166
  tenantId: string;
@@ -6632,6 +6632,8 @@ interface DocumentBatchResultDto$1 {
6632
6632
  error?: string | null;
6633
6633
  /** Ingestion statistics (if successful) */
6634
6634
  ingestion_stats?: null | IngestionStatsDto$1;
6635
+ /** Markdown generated by the document parser (if successful). */
6636
+ markdown?: string | null;
6635
6637
  /** Document metadata (if successful) */
6636
6638
  metadata?: null | ParsedDocumentMetadataDto$1;
6637
6639
  /** Parse statistics (if successful) */
@@ -11666,6 +11668,13 @@ interface IngestDocumentRequest$1 {
11666
11668
  * @format uuid
11667
11669
  */
11668
11670
  owner_id: string;
11671
+ /**
11672
+ * Parse and return Markdown without creating semantic Ψ-terms.
11673
+ *
11674
+ * This lets a client persist parser output on its own authoritative term
11675
+ * instead of creating a detached duplicate document representation.
11676
+ */
11677
+ parse_only?: boolean;
11669
11678
  }
11670
11679
  /** Response from document ingestion */
11671
11680
  interface IngestDocumentResponse$1 {
@@ -11673,6 +11682,14 @@ interface IngestDocumentResponse$1 {
11673
11682
  error?: string | null;
11674
11683
  /** Markdown ingestion statistics (from the markdown pipeline) */
11675
11684
  ingestion_stats: IngestionStatsDto$1;
11685
+ /**
11686
+ * Markdown generated by the document parser.
11687
+ *
11688
+ * Present whenever parsing succeeds, including OCR output for scanned
11689
+ * documents. Returning this keeps the parser output usable by clients
11690
+ * without requiring them to create a second, detached representation.
11691
+ */
11692
+ markdown?: string | null;
11676
11693
  /** Document metadata */
11677
11694
  metadata: ParsedDocumentMetadataDto$1;
11678
11695
  /** Document parsing statistics */
@@ -13568,6 +13585,11 @@ interface ListScenariosResponse$1 {
13568
13585
  */
13569
13586
  total: number;
13570
13587
  }
13588
+ /** Response listing the registrable source types of this build (#71). */
13589
+ interface ListSourceTypesResponse$1 {
13590
+ /** Every source type the registration factory knows how to build. */
13591
+ types: SourceTypeDto$1[];
13592
+ }
13571
13593
  /** Response listing registered sources. */
13572
13594
  interface ListSourcesResponse$1 {
13573
13595
  /** List of registered source summaries */
@@ -18118,9 +18140,15 @@ interface RegisterSourceRequest$1 {
18118
18140
  * source is honored as a column→feature PROJECTION, so ingested facts land
18119
18141
  * on the sort's DECLARED feature names.
18120
18142
  *
18121
- * Omitted ⇒ capability-grounded default: `transpile` for `postgres`
18122
- * (`postgresql`), `ingest` for every other source type (postgres is the only
18123
- * adapter whose transpiled SQL the engine can execute).
18143
+ * Omitted ⇒ `ingest`, for every source type (#71). It is the only mode that
18144
+ * populates the knowledge base and the one path every adapter can serve;
18145
+ * `transpile` is an explicit opt-in.
18146
+ *
18147
+ * `transpile` is accepted only for a source whose adapter can execute
18148
+ * transpiled SQL (Postgres, MySQL, SQLite). Requesting it for any other
18149
+ * source is refused with **422**: there would be nothing to run the SQL an
18150
+ * OSFQL MATCH compiles to, and ingest on such a source is refused as a
18151
+ * category error — leaving it with no working write path at all.
18124
18152
  *
18125
18153
  * Any other string is rejected with **422** (not 400): serde fails the
18126
18154
  * variant at deserialization, so axum's JSON extractor refuses the body
@@ -18158,6 +18186,14 @@ interface RegisterSourceResponse$1 {
18158
18186
  source_type: string;
18159
18187
  /** Whether registration was successful */
18160
18188
  success: boolean;
18189
+ /**
18190
+ * The write-path modes this source's ADAPTER can serve (#71) — the same
18191
+ * set `GET /api/v1/sources/{id}` reports. Echoed at registration so a
18192
+ * client learns, at the moment the choice is made, whether `transpile`
18193
+ * was even on the table (a mode change requires DELETE + re-register).
18194
+ * @example ["ingest","transpile"]
18195
+ */
18196
+ supported_modes: string[];
18161
18197
  }
18162
18198
  type RegressionBasisDto = "linear" | "cubic_polynomial";
18163
18199
  /** Request to reject an action */
@@ -21105,6 +21141,20 @@ interface SourceDetailResponse$1 {
21105
21141
  source_id: string;
21106
21142
  /** Source type */
21107
21143
  source_type: string;
21144
+ /**
21145
+ * The write-path modes this source's ADAPTER can actually serve (#71).
21146
+ *
21147
+ * Always contains `"ingest"` — every adapter can materialize. Contains
21148
+ * `"transpile"` only when the adapter executes transpiled SQL, which is what
21149
+ * a live view requires; registering the other modes is refused with a 422.
21150
+ *
21151
+ * A client rendering a mode selector should offer exactly these, rather than
21152
+ * hard-coding a list of source types: the set is derived from the adapter's
21153
+ * declared capability, so it stays correct as adapters gain the ability
21154
+ * (MySQL and SQLite did in #70).
21155
+ * @example ["ingest","transpile"]
21156
+ */
21157
+ supported_modes: string[];
21108
21158
  }
21109
21159
  /** Source excerpt DTO */
21110
21160
  interface SourceExcerptDto$2 {
@@ -21123,6 +21173,37 @@ interface SourceSummaryDto$1 {
21123
21173
  /** Source type */
21124
21174
  source_type: string;
21125
21175
  }
21176
+ /**
21177
+ * One registrable source TYPE and its capabilities (#71).
21178
+ *
21179
+ * The pre-registration half of the mode-discovery surface: a client rendering
21180
+ * a "new source" picker asks `GET /api/v1/sources/types` which types this
21181
+ * build can register and which write-path modes each would serve — BEFORE any
21182
+ * source exists. The per-source half (`GET /api/v1/sources/{id}`) answers the
21183
+ * same mode question for a source that does.
21184
+ */
21185
+ interface SourceTypeDto$1 {
21186
+ /** Alternate spellings registration also accepts (e.g. `postgresql`). */
21187
+ aliases: string[];
21188
+ /**
21189
+ * Whether this build can register the type. `false` means the adapter is
21190
+ * behind a cargo feature that is not compiled in: registration would be
21191
+ * refused, so a picker should not offer it (or should show it disabled).
21192
+ */
21193
+ available: boolean;
21194
+ /**
21195
+ * Canonical type string accepted by `POST /api/v1/sources`.
21196
+ * @example "mysql"
21197
+ */
21198
+ source_type: string;
21199
+ /**
21200
+ * The write-path modes this type's adapter can serve: always `"ingest"`,
21201
+ * plus `"transpile"` when the adapter executes transpiled SQL. The same
21202
+ * set the per-source endpoints report after registration.
21203
+ * @example ["ingest","transpile"]
21204
+ */
21205
+ supported_modes: string[];
21206
+ }
21126
21207
  /**
21127
21208
  * A constraint in the space
21128
21209
  *
@@ -26152,7 +26233,18 @@ declare class Terms<SecurityDataType = unknown> {
26152
26233
  * @request GET:/api/v1/terms
26153
26234
  * @secure
26154
26235
  */
26155
- listTerms: (params?: RequestParams) => Promise<HttpResponse<TermListResponse$1, any>>;
26236
+ listTerms: (query?: {
26237
+ /**
26238
+ * Max terms to return; omit for all, hard-capped at 10000
26239
+ * @min 0
26240
+ */
26241
+ limit?: number;
26242
+ /**
26243
+ * Zero-based index of the first term (default 0)
26244
+ * @min 0
26245
+ */
26246
+ offset?: number;
26247
+ }, params?: RequestParams) => Promise<HttpResponse<TermListResponse$1, any>>;
26156
26248
  /**
26157
26249
  * No description
26158
26250
  *
@@ -27164,7 +27256,7 @@ declare class Inference<SecurityDataType = unknown> {
27164
27256
  */
27165
27257
  addRule: (data: AddRuleRequest$1, params?: RequestParams) => Promise<HttpResponse<AddRuleResponse$1, any>>;
27166
27258
  /**
27167
- * @description # TRUE HOMOICONIC API Request contains a goal term and optional constraints. Response returns solutions with term-based substitutions. ## Temporal Reasoning Use constraints to filter by temporal relations: ```json { "goal": {"sort_name": "Employment", "features": {"valid_to": {"name": "?EndTime"}}}, "constraints": [{"type": "Guard", "left": "?EndTime", "op": "lt", "right": "1583020800000"}] } ``` # Authorization Requires X-Tenant-Id header.
27259
+ * @description # TRUE HOMOICONIC API Request contains a goal term and optional constraints. Response returns solutions with term-based substitutions. ## Temporal Reasoning Use constraints to filter by temporal relations: ```json { "goal": {"sort_name": "Employment", "features": {"valid_to": {"name": "?EndTime"}}}, "constraints": [{"type": "Guard", "left": "?EndTime", "op": "lt", "right": "1583020800000"}] } ``` # Authorization Requires X-Tenant-Id header. Traced: this is the path the zanzibar gateway hits for every permission check, so it is where an end-to-end trace either explains a slow request or does not. `skip_all` because the request body can be large and has no business in a span attribute.
27168
27260
  *
27169
27261
  * @tags inference
27170
27262
  * @name BackwardChain
@@ -27315,7 +27407,18 @@ declare class Inference<SecurityDataType = unknown> {
27315
27407
  * @request GET:/api/v1/inference/facts/{tenant_id}
27316
27408
  * @secure
27317
27409
  */
27318
- getFacts: (tenantId: string, params?: RequestParams) => Promise<HttpResponse<GetFactsResponse$1, any>>;
27410
+ getFacts: (tenantId: string, query?: {
27411
+ /**
27412
+ * Max facts to return; omit for all, hard-capped at 10000
27413
+ * @min 0
27414
+ */
27415
+ limit?: number;
27416
+ /**
27417
+ * Zero-based index of the first fact (default 0)
27418
+ * @min 0
27419
+ */
27420
+ offset?: number;
27421
+ }, params?: RequestParams) => Promise<HttpResponse<GetFactsResponse$1, any>>;
27319
27422
  /**
27320
27423
  * @description # TRUE HOMOICONICITY Returns the full goal term with all its referenced terms. # Authorization Requires X-Tenant-Id header.
27321
27424
  *
@@ -37677,7 +37780,7 @@ declare class Ingestion<SecurityDataType = unknown> {
37677
37780
  */
37678
37781
  getQueueMetrics: (params?: RequestParams) => Promise<HttpResponse<QueueMetricsResponse, void>>;
37679
37782
  /**
37680
- * @description POST /api/v1/ingest/document This endpoint accepts a document (as base64 or URL) and: 1. Parses it to Markdown using the document parser service (Docling) 2. Processes the Markdown through the existing ingestion pipeline 3. Returns combined statistics from both stages # Headers - `X-Tenant-Id`: Tenant ID for multi-tenancy isolation (required) # Request Body - `document`: Document source (base64 or URL) - `document_type`: Optional type hint (auto-detected if not provided) - `owner_id`: User ID who owns the ingested data - `ocr_config`: Optional OCR/parsing configuration - `ingestion_config`: Optional markdown ingestion configuration # Response - `success`: Whether ingestion completed successfully - `parse_stats`: Statistics from document parsing - `metadata`: Extracted document metadata - `ingestion_stats`: Statistics from markdown ingestion - `pending_review`: Entities that need human review
37783
+ * @description POST /api/v1/ingest/document This endpoint accepts a document (as base64 or URL) and: 1. Parses it to Markdown using the document parser service (Docling) 2. Returns the generated Markdown to the caller 3. Unless `parse_only` is true, processes the Markdown through ingestion 4. Returns combined statistics from the completed stages # Headers - `X-Tenant-Id`: Tenant ID for multi-tenancy isolation (required) # Request Body - `document`: Document source (base64 or URL) - `document_type`: Optional type hint (auto-detected if not provided) - `owner_id`: User ID who owns the ingested data - `ocr_config`: Optional OCR/parsing configuration - `ingestion_config`: Optional markdown ingestion configuration - `parse_only`: Return Markdown without creating sessions or semantic terms # Response - `success`: Whether ingestion completed successfully - `parse_stats`: Statistics from document parsing - `metadata`: Extracted document metadata - `markdown`: Markdown generated by Docling/OCR - `ingestion_stats`: Statistics from markdown ingestion - `pending_review`: Entities that need human review
37681
37784
  *
37682
37785
  * @tags ingestion
37683
37786
  * @name IngestDocument
@@ -43150,6 +43253,16 @@ declare class StructuredIngestion<SecurityDataType = unknown> {
43150
43253
  * @secure
43151
43254
  */
43152
43255
  listSourceTables: (sourceId: string, params?: RequestParams) => Promise<HttpResponse<ListTablesResponse$1, void>>;
43256
+ /**
43257
+ * @description The pre-registration half of #71's mode-discovery surface: a client rendering a "new source" picker learns, at type-selection time, which types registration would accept and which write-path modes each would serve — without constructing a source (postgres, for example, opens a connection pool eagerly). Static per build, so no tenant state is consulted; auth is still required, as for every route under `/api/v1`.
43258
+ *
43259
+ * @tags structured_ingestion
43260
+ * @name ListSourceTypesCatalog
43261
+ * @summary List the source types this build can register, with their mode capabilities.
43262
+ * @request GET:/api/v1/sources/types
43263
+ * @secure
43264
+ */
43265
+ listSourceTypesCatalog: (params?: RequestParams) => Promise<HttpResponse<ListSourceTypesResponse$1, any>>;
43153
43266
  /**
43154
43267
  * @description Creates a connector instance from the provided configuration and registers it with the structured ingestion service for subsequent schema discovery and data ingestion.
43155
43268
  *
@@ -43315,10 +43428,16 @@ interface RegisterSourceRequest {
43315
43428
  /**
43316
43429
  * Declared write-path intent — see {@link SourceWriteMode}.
43317
43430
  *
43318
- * Omitted ⇒ capability-grounded default: `transpile` for `postgres` (`postgresql`),
43319
- * `ingest` for every other source type (postgres is the only adapter whose transpiled
43320
- * SQL the engine can execute). The resolved value is always echoed back on
43431
+ * Omitted ⇒ `ingest`, for every source type (#71). Ingest is the only mode that
43432
+ * populates the knowledge base and the one path every adapter can serve; `transpile`
43433
+ * is an explicit opt-in. The resolved value is always echoed back on
43321
43434
  * {@link RegisterSourceResponse.mode}, so the applied default is never invisible.
43435
+ *
43436
+ * `transpile` is accepted only for a source whose adapter executes transpiled SQL
43437
+ * (Postgres, MySQL, SQLite). Requesting it for any other source is refused with
43438
+ * **422** — there would be nothing to run the SQL an OSFQL MATCH compiles to. The
43439
+ * set a type accepts is advertised by {@link SourcesClient.listSourceTypes}, so a
43440
+ * caller can avoid the refusal rather than discover it.
43322
43441
  */
43323
43442
  mode?: SourceWriteMode | null;
43324
43443
  }
@@ -43341,6 +43460,15 @@ interface RegisterSourceResponse {
43341
43460
  * Typed as `string` for the reason given on {@link SourceSummaryDto.mode}.
43342
43461
  */
43343
43462
  mode: string;
43463
+ /**
43464
+ * The write-path modes this source's adapter can serve (#71) — the same set
43465
+ * {@link SourcesClient.getSource | getSource} reports. Always contains
43466
+ * `'ingest'`; contains `'transpile'` only when the adapter executes
43467
+ * transpiled SQL. Echoed at registration so a client learns, at the moment
43468
+ * the choice is made, whether `transpile` was even on the table (a mode
43469
+ * change requires DELETE + re-register).
43470
+ */
43471
+ supportedModes: string[];
43344
43472
  /** Status message. */
43345
43473
  message: string;
43346
43474
  }
@@ -43368,6 +43496,60 @@ interface SourceDetailResponse {
43368
43496
  * Typed as `string` for the reason given on {@link SourceSummaryDto.mode}.
43369
43497
  */
43370
43498
  mode: string;
43499
+ /**
43500
+ * The write-path modes this source's adapter can actually serve (#71).
43501
+ *
43502
+ * Always contains `'ingest'` — every adapter can materialize. Contains
43503
+ * `'transpile'` only when the adapter executes transpiled SQL, which is what
43504
+ * a live view requires. A client rendering a mode selector should offer
43505
+ * exactly these, rather than hard-coding a list of source types: the set is
43506
+ * derived from the adapter's declared capability, so it stays correct as
43507
+ * adapters gain the ability.
43508
+ */
43509
+ supportedModes: string[];
43510
+ }
43511
+ /**
43512
+ * One registrable source TYPE and its capabilities (#71).
43513
+ *
43514
+ * @remarks
43515
+ * The pre-registration half of the mode-discovery surface: a client rendering
43516
+ * a "new source" picker asks {@link SourcesClient.listSourceTypes} which types
43517
+ * this build can register and which write-path modes each would serve — BEFORE
43518
+ * any source exists. The per-source half ({@link SourceDetailResponse}) answers
43519
+ * the same mode question for a source that does.
43520
+ */
43521
+ interface SourceTypeDto {
43522
+ /** Canonical type string accepted by `POST /api/v1/sources` (e.g. `"mysql"`). */
43523
+ sourceType: string;
43524
+ /**
43525
+ * Alternate spellings registration also accepts (e.g. `"postgresql"` for
43526
+ * `"postgres"`). A picker that lets the user type a type name should accept
43527
+ * these as equivalent.
43528
+ */
43529
+ aliases: string[];
43530
+ /**
43531
+ * Whether this build can register the type. `false` means the adapter is
43532
+ * behind a cargo feature that is not compiled in: registration would be
43533
+ * refused, so a picker should not offer it (or should show it disabled).
43534
+ */
43535
+ available: boolean;
43536
+ /**
43537
+ * The write-path modes this type's adapter can serve: always `'ingest'`,
43538
+ * plus `'transpile'` when the adapter executes transpiled SQL. The same set
43539
+ * the per-source endpoints report after registration.
43540
+ */
43541
+ supportedModes: string[];
43542
+ }
43543
+ /**
43544
+ * Response listing the registrable source types of this build (#71).
43545
+ *
43546
+ * @remarks
43547
+ * Returned by `GET /api/v1/sources/types`. Static per build — no tenant state
43548
+ * is consulted — so the catalog is the same for every caller of a given build.
43549
+ */
43550
+ interface ListSourceTypesResponse {
43551
+ /** Every source type the registration factory knows how to build. */
43552
+ types: SourceTypeDto[];
43371
43553
  }
43372
43554
  /**
43373
43555
  * One discoverable type of a source, as reported by the cheap name-only listing.
@@ -43504,16 +43686,18 @@ type sources_DiscoveredSortDto = DiscoveredSortDto;
43504
43686
  type sources_DiscoveredSourceRelationDto = DiscoveredSourceRelationDto;
43505
43687
  type sources_IngestFromSourceRequest = IngestFromSourceRequest;
43506
43688
  type sources_IngestFromSourceResponse = IngestFromSourceResponse;
43689
+ type sources_ListSourceTypesResponse = ListSourceTypesResponse;
43507
43690
  type sources_ListSourcesResponse = ListSourcesResponse;
43508
43691
  type sources_ListTablesResponse = ListTablesResponse;
43509
43692
  type sources_RegisterSourceRequest = RegisterSourceRequest;
43510
43693
  type sources_RegisterSourceResponse = RegisterSourceResponse;
43511
43694
  type sources_SourceDetailResponse = SourceDetailResponse;
43512
43695
  type sources_SourceSummaryDto = SourceSummaryDto;
43696
+ type sources_SourceTypeDto = SourceTypeDto;
43513
43697
  type sources_SourceWriteMode = SourceWriteMode;
43514
43698
  type sources_StructuredIngestionStatsDto = StructuredIngestionStatsDto;
43515
43699
  declare namespace sources {
43516
- export type { sources_DiscoverSchemaRequest as DiscoverSchemaRequest, sources_DiscoverSchemaResponse as DiscoverSchemaResponse, sources_DiscoverableTypeDto as DiscoverableTypeDto, sources_DiscoveredFeatureDto as DiscoveredFeatureDto, sources_DiscoveredSortDto as DiscoveredSortDto, sources_DiscoveredSourceRelationDto as DiscoveredSourceRelationDto, sources_IngestFromSourceRequest as IngestFromSourceRequest, sources_IngestFromSourceResponse as IngestFromSourceResponse, sources_ListSourcesResponse as ListSourcesResponse, sources_ListTablesResponse as ListTablesResponse, sources_RegisterSourceRequest as RegisterSourceRequest, sources_RegisterSourceResponse as RegisterSourceResponse, sources_SourceDetailResponse as SourceDetailResponse, sources_SourceSummaryDto as SourceSummaryDto, sources_SourceWriteMode as SourceWriteMode, sources_StructuredIngestionStatsDto as StructuredIngestionStatsDto };
43700
+ export type { sources_DiscoverSchemaRequest as DiscoverSchemaRequest, sources_DiscoverSchemaResponse as DiscoverSchemaResponse, sources_DiscoverableTypeDto as DiscoverableTypeDto, sources_DiscoveredFeatureDto as DiscoveredFeatureDto, sources_DiscoveredSortDto as DiscoveredSortDto, sources_DiscoveredSourceRelationDto as DiscoveredSourceRelationDto, sources_IngestFromSourceRequest as IngestFromSourceRequest, sources_IngestFromSourceResponse as IngestFromSourceResponse, sources_ListSourceTypesResponse as ListSourceTypesResponse, sources_ListSourcesResponse as ListSourcesResponse, sources_ListTablesResponse as ListTablesResponse, sources_RegisterSourceRequest as RegisterSourceRequest, sources_RegisterSourceResponse as RegisterSourceResponse, sources_SourceDetailResponse as SourceDetailResponse, sources_SourceSummaryDto as SourceSummaryDto, sources_SourceTypeDto as SourceTypeDto, sources_SourceWriteMode as SourceWriteMode, sources_StructuredIngestionStatsDto as StructuredIngestionStatsDto };
43517
43701
  }
43518
43702
 
43519
43703
  /**
@@ -43535,17 +43719,21 @@ declare class SourcesClient {
43535
43719
  *
43536
43720
  * @param request - Source registration request. Set `mode` to declare the write-path
43537
43721
  * intent (`'transpile'` for live SQL views, `'ingest'` to materialize rows as
43538
- * Ψ-term facts); omit it to take the capability-grounded default (`transpile` for
43539
- * postgres, `ingest` otherwise).
43722
+ * Ψ-term facts); omit it to take the default, which is `'ingest'` for every
43723
+ * source type (#71).
43540
43724
  * @returns Registration result. `mode` always carries the **resolved** write-path
43541
- * mode, including when the default applied.
43542
- * @throws {ApiError} If registration fails, or with **422** if `mode` is not one of
43543
- * `transpile` / `ingest`.
43725
+ * mode, including when the default applied; `supportedModes` advertises which
43726
+ * modes this source's adapter can serve.
43727
+ * @throws {ApiError} If registration fails, with **422** if `mode` is not one of
43728
+ * `transpile` / `ingest`, or with **422** if `mode: 'transpile'` is requested
43729
+ * for a source whose adapter cannot execute transpiled SQL (a live view over it
43730
+ * could never be queried).
43544
43731
  *
43545
43732
  * @remarks
43546
43733
  * Registering with `mode: 'transpile'` makes {@link SourcesClient.ingest} refuse this
43547
43734
  * source with a **409** — materializing a transpiled source would create a second,
43548
- * divergent namespace over the same rows.
43735
+ * divergent namespace over the same rows. To learn which types accept `transpile`
43736
+ * before registering, call {@link SourcesClient.listSourceTypes}.
43549
43737
  *
43550
43738
  * @example
43551
43739
  * ```typescript
@@ -43557,9 +43745,38 @@ declare class SourcesClient {
43557
43745
  * mode: 'ingest',
43558
43746
  * });
43559
43747
  * console.log(result.mode); // 'ingest'
43748
+ * console.log(result.supportedModes); // ['ingest', 'transpile']
43560
43749
  * ```
43561
43750
  */
43562
43751
  register(request: RegisterSourceRequest): Promise<RegisterSourceResponse>;
43752
+ /**
43753
+ * List the source types this build can register, with their mode capabilities.
43754
+ *
43755
+ * @returns Every registrable source type, its availability in this build, and the
43756
+ * write-path modes each would serve — before any source exists.
43757
+ * @throws {ApiError} If the request fails.
43758
+ *
43759
+ * @remarks
43760
+ * Sent to `GET /api/v1/sources/types`. The pre-registration half of #71's
43761
+ * mode-discovery surface: a client rendering a "new source" picker learns, at
43762
+ * type-selection time, which types registration would accept (`available` — a
43763
+ * type behind an uncompiled cargo feature is `false`) and which modes each
43764
+ * would serve (`supportedModes` — always `'ingest'`, plus `'transpile'` only
43765
+ * for the SQL engines). Static per build, so no tenant state is consulted.
43766
+ *
43767
+ * Drive a mode selector from `supportedModes` rather than a hard-coded list of
43768
+ * source types: the set is the adapter's declared capability, so it stays
43769
+ * correct as adapters gain the ability (MySQL and SQLite did in #70).
43770
+ *
43771
+ * @example
43772
+ * ```typescript
43773
+ * const { types } = await client.sources.listSourceTypes();
43774
+ * const postgres = types.find((t) => t.sourceType === 'postgres');
43775
+ * console.log(postgres?.supportedModes); // ['ingest', 'transpile']
43776
+ * console.log(postgres?.aliases); // ['postgresql']
43777
+ * ```
43778
+ */
43779
+ listSourceTypes(): Promise<ListSourceTypesResponse>;
43563
43780
  /**
43564
43781
  * List all registered data sources.
43565
43782
  *
@@ -65588,7 +65805,7 @@ interface SystemGroup {
65588
65805
  * import { ReasoningLayerClient } from '@kortexya/reasoning-layer';
65589
65806
  *
65590
65807
  * const client = new ReasoningLayerClient({
65591
- * baseUrl: 'http://localhost:8083',
65808
+ * baseUrl: 'http://localhost:8085',
65592
65809
  * tenantId: 'my-tenant-uuid',
65593
65810
  * });
65594
65811
  *