@revoengine/sdk 1.5.8 → 1.6.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/README.md CHANGED
@@ -6,12 +6,12 @@ Revo-hosted `CUSTOM_NODEJS` components and standalone Node.js applications.
6
6
 
7
7
  Requirements: Node.js 22 or newer.
8
8
 
9
- ## SDK 1.5.8 compatibility
9
+ ## SDK 1.6.2 compatibility
10
10
 
11
11
  This release synchronizes the complete public SDK contract with the current
12
12
  platform low-code declarations. Remote calls require a platform runtime that admits
13
13
  the bundled contract revision; publishing the SDK alone does not deploy that runtime.
14
- Use SDK 1.0.1 with older deployments until their platform contract is upgraded.
14
+ Use the SDK version supported by the target platform deployment until its contract is upgraded.
15
15
 
16
16
  HTTP Storage requests/responses now use `requestType: 'storage'` and
17
17
  `responseType: 'storage'`, with flat Storage-only `source` / `target` objects.
@@ -25,9 +25,26 @@ The `transport` namespace exposes `sftpImport`, `sftpExport`, and `sftpCommands`
25
25
  with active Secret names or IDs instead of inline credentials. Storage references
26
26
  use the same namespace and effective access rules as other file operations.
27
27
  Legacy SFTP helpers and the removed thread-goal methods are not exposed by the
28
- current SDK contract. Refer to the [transfer guide](https://docs.revoengine.com/build/transport)
28
+ current SDK contract. Refer to the [transfer guide](https://docs.revoengine.com/low-code/sftp)
29
29
  for Secret formats and file-transfer examples.
30
30
 
31
+ SDK 1.6.2 retains portable Component digest declarations and one readable-relation
32
+ contract for Databases, live Views, and Materialized Views. Use `api.exportDatabase()`
33
+ for all three relation types. `api.getDatabaseViewData()` remains a deprecated
34
+ read alias; `api.exportDatabaseView()` and separate REST View export operations
35
+ are removed. Existing integrations should update these calls before rollout.
36
+
37
+ Database exports can select CSV, TSV, NDJSON, or XLSX. An asynchronous export
38
+ returns its job ID for operation tracking. The import workflow starts with
39
+ `api.importDatabase()`, then permits a reviewed mapping update and an explicit
40
+ `api.commitDatabaseImport()` after preview validation. The generated declarations
41
+ describe the current request and response shapes; the platform still enforces
42
+ permissions and validates source and target state before committing an import.
43
+
44
+ Remote MCP server configurations in this contract use public HTTPS destinations.
45
+ Private-network access is not an accepted SDK setting; review the server URL,
46
+ provider consent, Vault binding, and tool permissions before enabling a plugin.
47
+
31
48
  ## Choose your runtime
32
49
 
33
50
  | Environment | How to start | Authentication |
@@ -59,7 +76,7 @@ RevoEngine pins that version again in the deployment package and injects the
59
76
  runtime into the component entrypoint. Component code does not construct a
60
77
  `RevoClient`.
61
78
 
62
- The platform chooses the hosted package version; publishing SDK 1.5.8 does not
79
+ The platform chooses the hosted package version; publishing SDK 1.6.2 does not
63
80
  upgrade existing hosted deployments or their generated package pins.
64
81
 
65
82
  Hosted user code receives neither a tenant API key nor the private runtime
@@ -1,8 +1,8 @@
1
1
  import * as node_worker_threads from 'node:worker_threads';
2
2
 
3
- declare const SDK_VERSION: "1.5.8";
3
+ declare const SDK_VERSION: "1.6.2";
4
4
  declare const PROTOCOL_VERSION: 1;
5
- declare const CONTRACT_REVISION: "a73e7d84863d5a511a6f5569a72ab8d156bd11f84471fabdee9b8b633c11e58d";
5
+ declare const CONTRACT_REVISION: "904f6aea1cacfc32b7fda4e976b2e01f73202462f8a4785dc12deac7c4563e38";
6
6
  type RuntimeSurfaceName = 'api' | 'storage' | 'transport' | 'agents' | 'lowCode';
7
7
 
8
8
  // AUTO-GENERATED FILE. DO NOT EDIT DIRECTLY.
@@ -43,9 +43,9 @@ interface SwaggerAgentCheapTurnPolicyDto {
43
43
  }
44
44
  interface SwaggerAgentConfigDto {
45
45
  /** Supported assistant model used when the agent starts a thread. */
46
- "model"?: "gpt-5.6-sol" | "gpt-5.6-terra" | "gpt-5.6-luna";
46
+ "model"?: "gpt-6-sol" | "gpt-6-luna";
47
47
  /** Reasoning effort passed to assistant threads. */
48
- "reasoningEffort"?: "low" | "medium" | "high" | "xhigh";
48
+ "reasoningEffort"?: "none" | "low" | "medium" | "high" | "xhigh";
49
49
  /** Durable execution-mode default used for agent-loop turns. Per-turn fast-path routing and prompt-tier selection are derived by runtime, not configured here. */
50
50
  "executionMode"?: "interactive" | "execute" | "background" | "automation";
51
51
  /** Durable planning policy default used for agent-loop turns. standard executes normally; review_required creates a reviewed plan before interactive execution. */
@@ -114,7 +114,7 @@ interface SwaggerAgentPluginApprovalConfigDto {
114
114
  interface SwaggerAgentPluginComponentToolConfigDto {
115
115
  /** Whether this component-backed tool is enabled for runtime selection and execution. */
116
116
  "enabled"?: boolean;
117
- /** Whether this component-backed tool is deferred behind discovery instead of eagerly exposed. */
117
+ /** Whether this exact expanded component action is deferred behind plugin discovery/loading instead of eagerly exposed. */
118
118
  "deferLoading"?: boolean;
119
119
  /** Explicit local tool alias exposed to the runtime when set. */
120
120
  "alias"?: string;
@@ -128,7 +128,7 @@ interface SwaggerAgentPluginComponentToolConfigDto {
128
128
  "inputs"?: Record<string, unknown>;
129
129
  /** Named component result to return when the component executor supports result popping. */
130
130
  "popResult"?: string;
131
- /** Strict structured input schema exposed for this tool. The component receives matching arguments under api.input().agentTool.args. Must be an object schema with additionalProperties=false and descriptions on every declared property. */
131
+ /** Strict model-facing input schema for this exact action. The component receives matching arguments under api.input().agentTool.args and must explicitly translate them when a downstream provider uses a different wire shape. Must be an object schema with additionalProperties=false and descriptions on every declared property. */
132
132
  "inputSchema"?: Record<string, unknown>;
133
133
  /** Structured output schema expected from this tool. */
134
134
  "outputSchema"?: Record<string, unknown>;
@@ -150,7 +150,7 @@ interface SwaggerAgentPluginComponentToolConfigDto {
150
150
  interface SwaggerAgentPluginComponentToolsetDto {
151
151
  /** Default governance and loading policy for component-backed tools. */
152
152
  "defaultConfig"?: SwaggerAgentPluginComponentToolConfigDto;
153
- /** Component-backed tools keyed by stable capability name. */
153
+ /** Component-backed actions keyed by stable capability name. Every entry expands into a separate executable tool; alias is its exact local model-visible action name when set. */
154
154
  "tools"?: Record<string, unknown>;
155
155
  }
156
156
  interface SwaggerAgentPluginConfigDto {
@@ -170,6 +170,8 @@ interface SwaggerAgentPluginConfigDto {
170
170
  "executionMode"?: "sync" | "background";
171
171
  /** Component id executed when this plugin runs. */
172
172
  "componentId"?: string;
173
+ /** Portable component revision digest. */
174
+ "componentDigest"?: string;
173
175
  /** Optional fixed component version. */
174
176
  "componentVersion"?: number;
175
177
  /** Multiple governed tool contracts backed by the same component implementation. */
@@ -210,8 +212,10 @@ interface SwaggerAgentPluginConfigDto {
210
212
  interface SwaggerAgentPluginMcpConfigDto {
211
213
  /** Remote MCP transport supported by the SaaS runtime. */
212
214
  "transport": "streamable_http" | "sse";
213
- /** Absolute HTTPS endpoint for the remote MCP server. */
215
+ /** Absolute public HTTPS MCP endpoint URL. Private and localhost destinations are blocked at connection time. */
214
216
  "url": string;
217
+ /** Public HTTPS network policy. Legacy private values are restricted to public HTTPS at execution time. */
218
+ "networkAccess"?: "public";
215
219
  /** Manifest cache time-to-live in milliseconds. */
216
220
  "manifestTtlMs"?: number;
217
221
  /** Connection and handshake timeout in milliseconds. */
@@ -236,6 +240,8 @@ interface SwaggerAgentPluginMcpConfigDto {
236
240
  interface SwaggerAgentPluginMcpHeaderBindingDto {
237
241
  /** Header name sent to the remote MCP server. */
238
242
  "name": string;
243
+ /** Vault BoundValue resolved for the executing user, organization, or instance after an explicit grant. */
244
+ "vault"?: SwaggerAgentPluginMcpVaultRefDto;
239
245
  /** Secret id containing the header value. */
240
246
  "secretId"?: string;
241
247
  /** Optional secret data revision id when the binding should pin a specific secret revision. */
@@ -248,7 +254,7 @@ interface SwaggerAgentPluginMcpHeaderBindingDto {
248
254
  interface SwaggerAgentPluginMcpToolConfigDto {
249
255
  /** Whether the tool is enabled for runtime selection and execution. */
250
256
  "enabled"?: boolean;
251
- /** Whether the tool is deferred behind discovery instead of eagerly exposed. */
257
+ /** Whether the remote tool schema is deferred behind plugin discovery/loading instead of eagerly exposed. The manifest tool remains known by remote name; alias changes only its local exposed name. */
252
258
  "deferLoading"?: boolean;
253
259
  /** Explicit local tool alias exposed to the runtime when set. */
254
260
  "alias"?: string;
@@ -268,9 +274,23 @@ interface SwaggerAgentPluginMcpToolConfigDto {
268
274
  interface SwaggerAgentPluginMcpToolsetDto {
269
275
  /** Default governance and loading policy for tools discovered from this MCP server. */
270
276
  "defaultConfig"?: SwaggerAgentPluginMcpToolConfigDto;
271
- /** Per-remote-tool overrides keyed by remote tool name. */
277
+ /** Per-remote-tool overrides keyed by exact remote manifest tool name, never by local alias or plugin registry id. */
272
278
  "configs"?: Record<string, unknown>;
273
279
  }
280
+ interface SwaggerAgentPluginMcpVaultRefDto {
281
+ /** Opaque Vault reference marker. */
282
+ "__revoBoundValue": "vault-v1";
283
+ /** Credential requirement name declared by the plugin. */
284
+ "name": string;
285
+ /** Credential owner scope. */
286
+ "scope": "instance" | "user" | "organization";
287
+ /** Vault value source. */
288
+ "source": "secret" | "integration";
289
+ /** Literal text prepended to the resolved value. */
290
+ "prefix": string;
291
+ /** Literal text appended to the resolved value. */
292
+ "suffix": string;
293
+ }
274
294
  interface SwaggerAgentPluginPackageConfigDto {
275
295
  /** Stable package identity used across internal catalogs and future community marketplace publishing. */
276
296
  "externalId": string;
@@ -278,12 +298,12 @@ interface SwaggerAgentPluginPackageConfigDto {
278
298
  "format"?: "markdown";
279
299
  /** Markdown instruction content loaded into the assistant runtime when the package is attached. */
280
300
  "content": string;
281
- /** Registry plugin ids declared as package dependencies. */
301
+ /** Exact direct registry plugin UUIDs exposed lazily when this package is loaded. Dependencies may be skill, tools, or MCP plugins, never packages. */
282
302
  "pluginIds"?: Array<string>;
283
303
  /** Disabled marketplace-facing package metadata reserved for catalog publishing. */
284
304
  "metadata"?: SwaggerAgentPluginPackageMetadataDto;
285
- /** Maximum number of package content characters allowed into one prompt. */
286
- "maxPromptChars"?: number;
305
+ /** Maximum number of package content tokens allowed into one prompt. Defaults to 10000. */
306
+ "maxPromptTokens"?: number;
287
307
  }
288
308
  interface SwaggerAgentPluginPackageMetadataDto {
289
309
  /** Package avatar or icon URL shown in package catalogs. */
@@ -320,10 +340,10 @@ interface SwaggerAgentPluginSkillConfigDto {
320
340
  "format"?: "markdown";
321
341
  /** Markdown instruction content loaded into the assistant runtime when the plugin is attached. */
322
342
  "content": string;
323
- /** Registry plugin ids declared as one-level skill dependencies. */
343
+ /** Exact registry plugin UUIDs exposed lazily when this skill is loaded. Dependencies may be skill, tools, or MCP plugins, never packages. */
324
344
  "pluginIds"?: Array<string>;
325
- /** Maximum number of skill content characters allowed into one prompt. */
326
- "maxPromptChars"?: number;
345
+ /** Maximum number of skill content tokens allowed into one prompt. Defaults to 10000. */
346
+ "maxPromptTokens"?: number;
327
347
  }
328
348
  interface SwaggerAgentPolicyDto {
329
349
  /** Default approval mode applied to agent tool calls when no per-tool override exists. */
@@ -523,8 +543,8 @@ interface SwaggerStorageSheetColumnDto {
523
543
  "key": string;
524
544
  /** Visible header. Defaults to key. */
525
545
  "header"?: string;
526
- /** Logical value type retained in XLSX fileStats and used by typed row producers and getFileData reads. Without a declared type, imported XLSX values remain strings; styles never infer a type. */
527
- "type"?: "string" | "number" | "boolean" | "date";
546
+ /** Logical value type retained in XLSX/CSV/TSV fileStats and used by typed row producers and getFileData reads. Object parses a JSON object or array from text. Without a declared type, imported tabular values remain strings; XLSX styles never infer a type. */
547
+ "type"?: "string" | "number" | "boolean" | "date" | "object";
528
548
  /** Column width in Excel character units. */
529
549
  "width"?: number;
530
550
  /** Hide the worksheet column. */
@@ -558,9 +578,15 @@ interface SwaggerStorageSheetTableDto {
558
578
  "header"?: boolean;
559
579
  /** Add an auto-filter to the table header. */
560
580
  "autoFilter"?: boolean;
561
- /** Stable column order. Required for every worksheet in writeMode "direct"; optional in "staged" mode, where keys may be inferred from appended rows. */
581
+ /** Stable XLSX/CSV/TSV column order, keys, headers, and logical types. Required for every logical sheet in writeMode "direct"; optional in "staged" mode, where keys may be inferred from appended rows. */
562
582
  "columns"?: Array<SwaggerStorageSheetColumnDto>;
563
583
  }
584
+ interface SwaggerStorageTabularSchemaPolicyDto {
585
+ /** How missing sheets or columns and invalid declared values are handled. fallback retains imperfect data with diagnostics; strict fails structured indexing. Defaults to fallback. */
586
+ "profile"?: "fallback" | "strict";
587
+ /** How undeclared source columns are handled. allow retains them, strip omits them from structured rows, and reject fails indexing. Defaults to allow for fallback and reject for strict. The raw file is preserved. */
588
+ "additionalProperties"?: "allow" | "strip" | "reject";
589
+ }
564
590
  interface SwaggerWebhookRequestDetailsDto {
565
591
  "url": string;
566
592
  "method": "POST" | "GET" | "HEAD" | "PUT" | "DELETE" | "PATCH" | "OPTIONS";
@@ -668,14 +694,14 @@ interface AssistantMessageInput {
668
694
  "content": string;
669
695
  /** Optional hidden draft user message id created before attachment uploads. When provided, the send operation finalizes that draft instead of creating a new user message. */
670
696
  "preflightMessageId"?: string;
671
- /** Optional assistant execution-model override. GPT-5.6 Luna is the default; GPT-5.6 Sol, Terra, and Luna are supported. */
672
- "model"?: "gpt-5.6-sol" | "gpt-5.6-terra" | "gpt-5.6-luna";
673
- /** Optional GPT-5.6 Luna Fast mode. The backend rejects enabling it for any other model. Defaults to false and remains opt-in per thread. */
697
+ /** Optional assistant execution-model override. GPT-6 Luna is the default; GPT-6 Sol and Luna are supported. */
698
+ "model"?: "gpt-6-sol" | "gpt-6-luna";
699
+ /** Optional GPT-6 Sol or Luna Fast mode. Defaults to false and remains opt-in per thread. */
674
700
  "fastMode"?: boolean;
675
- /** Optional assistant reasoning effort override: low, medium, high, or xhigh. Defaults to low. */
676
- "reasoningEffort"?: "low" | "medium" | "high" | "xhigh";
701
+ /** Optional assistant reasoning effort override: none, low, medium, high, or xhigh. Defaults to medium. */
702
+ "reasoningEffort"?: "none" | "low" | "medium" | "high" | "xhigh";
677
703
  /** Alias for reasoningEffort used by assistant preferences. Prefer reasoningEffort for new clients. */
678
- "reasoning"?: "low" | "medium" | "high" | "xhigh";
704
+ "reasoning"?: "none" | "low" | "medium" | "high" | "xhigh";
679
705
  /** Optional flag selecting deadline-bounded background provider recovery. On SSE routes it also allows the turn to continue after client disconnect. Defaults to false. */
680
706
  "backgroundProcessing"?: boolean;
681
707
  /** Optional flag for send-message endpoints. When true, an active streamed assistant turn for the thread is interrupted before appending this message. */
@@ -704,7 +730,7 @@ interface StorageFolderInput {
704
730
  "name": string;
705
731
  /** Parent folder id. Omit for root. */
706
732
  "parentStorageEntryId"?: string;
707
- /** Optional provider config id for root-level folders. Omit for the internal/default provider. Ignored when parentStorageEntryId is provided. */
733
+ /** Optional registered Storage destination for root-level folders. Omit to use the default destination. Ignored when parentStorageEntryId is provided. */
708
734
  "storageProviderConfigId"?: string;
709
735
  /** Folder metadata. Values may use any JSON type. Maximum 16 KiB and 64 top-level keys. Top-level keys starting with "__" are reserved for backend use. */
710
736
  "metadata"?: Record<string, unknown> | null;
@@ -726,7 +752,7 @@ interface StorageUploadSessionInput {
726
752
  "retention"?: SwaggerStorageRetentionDto | null;
727
753
  /** Parent folder id. Required for create mode when uploading into a folder. */
728
754
  "parentStorageEntryId"?: string;
729
- /** Optional provider config id for root-level uploads. Omit for the internal/default provider. Ignored when parentStorageEntryId is provided or when replacing an existing file. */
755
+ /** Optional registered Storage destination for a root-level upload. Omit to use the default destination. Ignored when parentStorageEntryId is provided or when replacing an existing file. */
730
756
  "storageProviderConfigId"?: string;
731
757
  /** Existing storage entry id to replace instead of creating a new file. */
732
758
  "replaceStorageEntryId"?: string;
@@ -744,18 +770,22 @@ interface StorageUploadSessionInput {
744
770
  COLD: Compliance snapshots, historic imports, and retained evidence that is rarely opened.
745
771
  FROZEN: Deep archive or legal-hold data kept mainly for audit or recovery obligations. */
746
772
  "tier"?: "HOT" | "WARM" | "COLD" | "FROZEN";
747
- /** Upload mode. Use "direct" for provider resumable uploads, "chunked" for explicit numbered parts, and "incremental" for server-assigned part numbering by default. Incremental sessions can still re-upload a specific part number when repairing an upload. */
773
+ /** Byte-transfer mode. Use "direct" when the client sends the complete file to the returned temporary upload target, "chunked" for explicit numbered parts, and "incremental" for server-assigned part numbering by default. Incremental sessions can still re-upload a specific part number when repairing an upload. */
748
774
  "uploadMode"?: "direct" | "chunked" | "incremental";
749
775
  /** Post-finalize compute mode for this upload session. Defaults to sync for XLSX and text/* sessions and none for other binary sessions; an explicit value always overrides the default. */
750
776
  "computeStats"?: "none" | "sync" | "async";
777
+ /** Independent validation and undeclared-column policies for an uploaded XLSX, CSV, or TSV. Defaults to fallback validation with additional columns allowed; strict validation defaults to rejecting additional columns. The raw file is preserved. */
778
+ "schemaPolicy"?: SwaggerStorageTabularSchemaPolicyDto;
751
779
  /** Structured file write mode. Use "direct" for a predeclared CSV/XLSX layout with row-only XLSX parts. Use the default "staged" mode for independent requests that may be retried, replaced, reordered, or use inferred columns, sparse cells, formulas, or dynamic worksheets. For direct XLSX, declare every worksheet and its table.columns before the first append. */
752
780
  "writeMode"?: "staged" | "direct";
753
- /** CSV dialect used when row payloads are appended to a text/csv session. */
781
+ /** CSV/TSV dialect used when row payloads are appended or direct uploaded bytes are indexed. */
754
782
  "csv"?: SwaggerStorageCsvOptionsDto;
755
- /** Workbook worksheet layout. XLSX is inferred from contentTypeHint. In writeMode "direct", declare every worksheet here and configure table.columns for each one. */
783
+ /** Shared tabular layout. XLSX accepts multiple worksheets; CSV/TSV accepts one logical sheet used for column keys, types, and schema diagnostics. In writeMode "direct", configure table.columns for every declared sheet. */
756
784
  "sheets"?: Array<SwaggerStorageSheetOptionsDto>;
757
785
  /** File metadata. Values may use any JSON type. Maximum 16 KiB and 64 top-level keys. Top-level keys starting with "__" are reserved for backend use. */
758
786
  "metadata"?: Record<string, unknown> | null;
787
+ /** Suppress Storage lifecycle events for the finalized file. Omit to preserve the existing setting on replacement; false explicitly enables events. */
788
+ "ignoreEvent"?: boolean;
759
789
  /** Optional external reference id. */
760
790
  "refId"?: string;
761
791
  /** Optional external reference type. */
@@ -798,7 +828,7 @@ interface StoragePutObjectInput {
798
828
  "retention"?: SwaggerStorageRetentionDto | null;
799
829
  /** Parent folder id. Omit for root. */
800
830
  "parentStorageEntryId"?: string;
801
- /** Optional provider config id for root-level writes. */
831
+ /** Optional registered Storage destination for root-level writes. Omit to use the default destination. */
802
832
  "storageProviderConfigId"?: string;
803
833
  /** Existing file entry id to replace. */
804
834
  "replaceStorageEntryId"?: string;
@@ -826,6 +856,8 @@ interface StoragePutObjectInput {
826
856
  "refVer"?: number;
827
857
  /** Entry metadata. Values may use any JSON type. Maximum 16 KiB and 64 top-level keys. Top-level keys starting with "__" are reserved for backend use. */
828
858
  "metadata"?: Record<string, unknown> | null;
859
+ /** Suppress Storage lifecycle events for this file. Omit to preserve the existing setting on replacement; false explicitly enables events. */
860
+ "ignoreEvent"?: boolean;
829
861
  /** Logical storage lifecycle tier. Select only when creating a new file or upload session; existing files keep their tier.
830
862
  HOT: Active files used in live workflows, previews, and frequent downloads.
831
863
  WARM: Completed or less-active business files that are still occasionally accessed.
@@ -849,13 +881,13 @@ interface AssistantActionResolutionInput {
849
881
  /** Optional flag selecting deadline-bounded background provider recovery. On the SSE route it also allows the resumed turn to continue after client disconnect. Streamed action resolution defaults this to true. */
850
882
  "backgroundProcessing"?: boolean;
851
883
  /** Optional assistant model override for the resumed turn after this action is resolved. */
852
- "model"?: "gpt-5.6-sol" | "gpt-5.6-terra" | "gpt-5.6-luna";
853
- /** Optional GPT-5.6 Luna Fast-mode override for the resumed turn. The backend rejects enabling it for any other model. */
884
+ "model"?: "gpt-6-sol" | "gpt-6-luna";
885
+ /** Optional Fast-mode override for the resumed turn. Available on GPT-6 Sol and Luna. */
854
886
  "fastMode"?: boolean;
855
- /** Optional assistant reasoning effort override for the resumed turn: low, medium, high, or xhigh. */
856
- "reasoningEffort"?: "low" | "medium" | "high" | "xhigh";
887
+ /** Optional assistant reasoning effort override for the resumed turn: none, low, medium, high, or xhigh. */
888
+ "reasoningEffort"?: "none" | "low" | "medium" | "high" | "xhigh";
857
889
  /** Alias for reasoningEffort used by assistant preferences. Prefer reasoningEffort for new clients. */
858
- "reasoning"?: "low" | "medium" | "high" | "xhigh";
890
+ "reasoning"?: "none" | "low" | "medium" | "high" | "xhigh";
859
891
  /** Execution mode override for the resumed turn after this action is resolved. */
860
892
  "executionMode"?: "interactive" | "execute" | "background" | "automation";
861
893
  /** Planning policy override for the resumed turn after this action is resolved. */
@@ -1258,7 +1290,8 @@ interface SelectJoinOn {
1258
1290
  }
1259
1291
  /**
1260
1292
  * Join definition.
1261
- * If alias is omitted, the backend defaults it to the join table name.
1293
+ * `table` is the logical name of a database, view, or materialized view.
1294
+ * If alias is omitted, the backend defaults it to that logical relation name.
1262
1295
  */
1263
1296
  interface SelectJoin {
1264
1297
  alias?: string;
@@ -1268,7 +1301,8 @@ interface SelectJoin {
1268
1301
  }
1269
1302
  /**
1270
1303
  * Public structured input accepted by api.getDatabaseData(name, options).
1271
- * The backend injects the source table schema automatically based on the name argument.
1304
+ * The backend resolves databases, views, and materialized views by logical name
1305
+ * and injects their physical relation and schema metadata automatically.
1272
1306
  */
1273
1307
  interface SelectInput {
1274
1308
  /**
@@ -1277,8 +1311,8 @@ interface SelectInput {
1277
1311
  */
1278
1312
  fields?: SelectItem[];
1279
1313
  /**
1280
- * Related tables to join.
1281
- * The backend resolves join definitions automatically.
1314
+ * Related databases, views, or materialized views to join.
1315
+ * The backend resolves each logical relation and its definition automatically.
1282
1316
  */
1283
1317
  joins?: SelectJoin[];
1284
1318
  /**
@@ -1585,7 +1619,8 @@ interface HttpRequestInterface {
1585
1619
  url: string;
1586
1620
  method: 'POST' | 'PUT' | 'DELETE' | 'GET' | 'PATCH' | 'OPTIONS' | 'HEAD' | 'PURGE' | 'LINK' | 'UNLINK';
1587
1621
  timeout?: number;
1588
- headers?: LooseObject<string>;
1622
+ /** Vault references are resolved only by the trusted HTTP sender, never in low-code. */
1623
+ headers?: LooseObject<string | VaultBoundValue>;
1589
1624
  params?: TemplateParameters[];
1590
1625
  data?: any;
1591
1626
  //@default: undefined
@@ -1764,7 +1799,7 @@ interface StorageFileReadOptions {
1764
1799
  buffer?: boolean;
1765
1800
  start?: number;
1766
1801
  end?: number;
1767
- /** Continue a structured CSV/XLSX read. Cursor restores sheet and batch position. */
1802
+ /** Continue a structured CSV/TSV, XLSX, NDJSON/JSONL, JSON-array, or XML read. Keep the opaque cursor unchanged. */
1768
1803
  cursor?: string;
1769
1804
  /** XLSX sheet name. The first visible sheet is used when omitted. */
1770
1805
  sheet?: string;
@@ -1786,7 +1821,7 @@ interface StorageFileReadOptions {
1786
1821
  columns?: Array<string | {
1787
1822
  source: string;
1788
1823
  key?: string;
1789
- type?: 'string' | 'number' | 'boolean' | 'date';
1824
+ type?: StorageTabularColumnType;
1790
1825
  }>;
1791
1826
  }
1792
1827
  interface StorageFileStatsOptions {
@@ -1802,6 +1837,29 @@ interface StorageFileStatsOptions {
1802
1837
  /** XML record path such as `Orders/Order`; required for XML row stats. */
1803
1838
  recordPath?: string;
1804
1839
  }
1840
+ type StorageTabularColumnType = 'string' | 'number' | 'boolean' | 'date' | 'object';
1841
+ interface StorageTabularColumn {
1842
+ key: string;
1843
+ header: string;
1844
+ type?: StorageTabularColumnType;
1845
+ }
1846
+ interface StorageTabularSchemaIssue {
1847
+ code: 'SHEET_MISSING' | 'SHEET_UNDECLARED' | 'COLUMN_MISSING' | 'COLUMN_UNDECLARED' | 'COLUMN_KEY_DUPLICATE' | 'COLUMN_TYPE_FALLBACK';
1848
+ sheet: string;
1849
+ column?: string;
1850
+ declaredType?: StorageTabularColumnType;
1851
+ invalidRows?: number;
1852
+ sampleRows?: number[];
1853
+ }
1854
+ interface StorageTabularSchemaPolicy {
1855
+ profile: 'fallback' | 'strict';
1856
+ additionalProperties: 'allow' | 'strip' | 'reject';
1857
+ }
1858
+ interface StorageTabularSchemaResult {
1859
+ policy: StorageTabularSchemaPolicy;
1860
+ status: 'MATCHED' | 'FALLBACK' | 'FAILED';
1861
+ issues: StorageTabularSchemaIssue[];
1862
+ }
1805
1863
  interface StorageFileStats {
1806
1864
  lineCount?: number;
1807
1865
  map?: LooseObject<number>;
@@ -1810,42 +1868,29 @@ interface StorageFileStats {
1810
1868
  batchSize?: number;
1811
1869
  encoding?: string | null;
1812
1870
  format?: 'csv' | 'xlsx' | 'ndjson' | 'json-array' | 'xml';
1813
- columns?: Array<{
1814
- key: string;
1815
- header: string;
1816
- }>;
1871
+ columns?: StorageTabularColumn[];
1817
1872
  bom?: boolean;
1818
1873
  delimiter?: string;
1819
1874
  recordDelimiter?: string;
1820
1875
  quote?: string;
1821
1876
  escape?: string;
1822
1877
  rowCount?: number;
1823
- headers?: Array<{
1824
- key: string;
1825
- header: string;
1826
- }>;
1878
+ headers?: StorageTabularColumn[];
1879
+ /** Present when an XLSX/CSV/TSV upload session declared table columns. */
1880
+ schema?: StorageTabularSchemaResult;
1827
1881
  sheets?: Array<{
1828
1882
  name: string;
1829
1883
  state: 'visible' | 'hidden' | 'veryHidden';
1830
1884
  rowCount: number;
1831
1885
  batches: number;
1832
- columns: Array<{
1833
- key: string;
1834
- header: string;
1835
- }>;
1886
+ columns: StorageTabularColumn[];
1836
1887
  }>;
1837
1888
  }
1838
1889
  interface StorageStructuredFileDataPage {
1839
1890
  format: 'csv' | 'xlsx' | 'ndjson' | 'json-array' | 'xml';
1840
1891
  sheet: string | null;
1841
- headers: Array<{
1842
- key: string;
1843
- header: string;
1844
- }>;
1845
- columns: Array<{
1846
- key: string;
1847
- header: string;
1848
- }>;
1892
+ headers: StorageTabularColumn[];
1893
+ columns: StorageTabularColumn[];
1849
1894
  rows: Array<LooseObject<any>>;
1850
1895
  rowCount: number;
1851
1896
  totalRows: number;
@@ -2017,7 +2062,7 @@ type ExportDatabaseOptions = Omit<SelectInput, 'from'> & {
2017
2062
  /** Suppress the export completion/failure System notification for this low-code call. */
2018
2063
  skipNotification?: boolean;
2019
2064
  /** Output format. CSV is the default. XLSX validates the effective row count before starting. */
2020
- format?: 'csv' | 'xlsx';
2065
+ format?: 'csv' | 'tsv' | 'ndjson' | 'xlsx';
2021
2066
  /** Omit for private user storage, use ROOT, or provide an accessible explorer folder id. */
2022
2067
  storageDestination?: 'ROOT' | string;
2023
2068
  /** Dedicated output name. Omit for an automatic database-and-timestamp name using the selected extension. */
@@ -2036,14 +2081,30 @@ type ExportDatabaseOptions = Omit<SelectInput, 'from'> & {
2036
2081
  /** Omit for the destination default, null for no expiration. */
2037
2082
  retention?: StorageRetentionInput;
2038
2083
  };
2084
+ type ImportDatabaseOptions = {
2085
+ storageEntryId: string;
2086
+ format: 'csv' | 'tsv' | 'ndjson' | 'xlsx';
2087
+ mode: 'insert' | 'upsert';
2088
+ onError: 'abort' | 'skipRow';
2089
+ mapping?: {
2090
+ columns: Record<string, {
2091
+ databaseName: string;
2092
+ column: string;
2093
+ } | null>;
2094
+ nullMode?: 'escaped' | 'literal' | 'empty' | 'nullText';
2095
+ };
2096
+ /** Skips manual approval after the same full validation; ambiguous mapping still needs review. */
2097
+ autoCommit?: boolean;
2098
+ };
2039
2099
  interface ExportDatabaseAcceptedResponse {
2040
2100
  accepted: true;
2041
2101
  databaseId: string;
2042
2102
  exportId: string;
2103
+ jobId: string;
2043
2104
  storageNamespace: string;
2044
2105
  parentStorageEntryId: string | null;
2045
2106
  fileName: string;
2046
- format: 'csv' | 'xlsx';
2107
+ format: 'csv' | 'tsv' | 'ndjson' | 'xlsx';
2047
2108
  restricted: boolean;
2048
2109
  message: string;
2049
2110
  }
@@ -2052,10 +2113,11 @@ interface ExportDatabaseCompletedResponse {
2052
2113
  completed: true;
2053
2114
  databaseId: string;
2054
2115
  exportId: string;
2116
+ jobId: string;
2055
2117
  storageNamespace: string;
2056
2118
  parentStorageEntryId: string | null;
2057
2119
  fileName: string;
2058
- format: 'csv' | 'xlsx';
2120
+ format: 'csv' | 'tsv' | 'ndjson' | 'xlsx';
2059
2121
  restricted: boolean;
2060
2122
  storageEntryId: string;
2061
2123
  storageEntry: StorageEntryView;
@@ -2266,7 +2328,7 @@ interface AgentPluginSkillConfig {
2266
2328
  format?: 'markdown';
2267
2329
  content: string;
2268
2330
  pluginIds?: string[];
2269
- maxPromptChars?: number;
2331
+ maxPromptTokens?: number;
2270
2332
  }
2271
2333
  interface AgentPluginPackageMetadata {
2272
2334
  avatarUrl?: string | null;
@@ -2287,7 +2349,7 @@ interface AgentPluginPackageConfig {
2287
2349
  content: string;
2288
2350
  pluginIds?: string[];
2289
2351
  metadata?: AgentPluginPackageMetadata;
2290
- maxPromptChars?: number;
2352
+ maxPromptTokens?: number;
2291
2353
  }
2292
2354
  interface AgentPluginConfig {
2293
2355
  contractVersion?: 1;
@@ -2696,9 +2758,19 @@ interface RevoApi {
2696
2758
  exportDatabase<TAsync extends boolean = false>(name: string, options?: ExportDatabaseOptions & {
2697
2759
  async?: TAsync;
2698
2760
  }): Promise<TAsync extends true ? ExportDatabaseAcceptedResponse : TAsync extends false ? ExportDatabaseCompletedResponse : ExportDatabaseResponse>;
2699
- exportDatabaseView<TAsync extends boolean = false>(name: string, options?: ExportDatabaseOptions & {
2700
- async?: TAsync;
2701
- }): Promise<TAsync extends true ? ExportDatabaseAcceptedResponse : TAsync extends false ? ExportDatabaseCompletedResponse : ExportDatabaseResponse>;
2761
+ importDatabase(name: string, options: ImportDatabaseOptions): Promise<{
2762
+ importId: string;
2763
+ jobId: string;
2764
+ status: string;
2765
+ }>;
2766
+ updateDatabaseImportMapping(importId: string, mapping: NonNullable<ImportDatabaseOptions['mapping']>): Promise<{
2767
+ importId: string;
2768
+ status: string;
2769
+ }>;
2770
+ commitDatabaseImport(importId: string): Promise<{
2771
+ importId: string;
2772
+ status: string;
2773
+ }>;
2702
2774
  updateDatabase(name: string, data: DatabaseUpdateInput): Promise<Database>;
2703
2775
  deleteDatabase(name: string): Promise<void>;
2704
2776
  restoreDatabase(name: string): Promise<void>;
@@ -2706,12 +2778,11 @@ interface RevoApi {
2706
2778
  getDatabaseData<T = any>(name: string, request?: DatabaseBoundedReadQuery): Promise<GetDatabaseDataResponse<T>>;
2707
2779
  getDatabaseDataRow<T = any>(name: string, query: DatabaseRowQuery): Promise<T | null>;
2708
2780
  countDatabase(name: string, query?: DatabaseCountQuery): Promise<number>;
2709
- getDatabaseViewData<T = any>(name: string, request?: SelectInput): Promise<GetDatabaseDataResponse<T>>;
2710
2781
  getDatabaseAudit(name: string, query?: DatabaseAuditQuery): Promise<DatabaseAuditResponse>;
2711
2782
  insertDatabaseData(name: string, data: LooseObject<any>[], options?: DatabaseDataWriteOptions): Promise<DatabaseDataActionResponse>;
2712
2783
  upsertDatabaseData(name: string, data: LooseObject<any>[], options?: DatabaseUpsertOptions): Promise<DatabaseDataActionResponse>;
2713
2784
  updateDatabaseData(name: string, oldObject: LooseObject<any>, newObject: LooseObject<any>): Promise<ResourceItem>;
2714
- deleteDatabaseData(name: string, data: ResourceItem[]): Promise<any>;
2785
+ deleteDatabaseData(name: string, data: LooseObject<any>[]): Promise<any>;
2715
2786
  updateDatabaseDataRequest(name: string, request: DatabaseMutationRequest, payload: DatabaseUpdateData, options?: {
2716
2787
  return?: boolean;
2717
2788
  onlyKeys?: boolean;
@@ -3027,6 +3098,16 @@ interface RevoUtils {
3027
3098
  rsaSign(privateKey: string, payload: string, passphrase?: string): Promise<string>;
3028
3099
  rsaVerify(publicKey: string, payload: string, signature: string): Promise<boolean>;
3029
3100
  }
3101
+ type VaultScope = 'instance' | 'user' | 'organization';
3102
+ type VaultSource = 'secret' | 'integration';
3103
+ type VaultBoundValue = Readonly<{
3104
+ __revoBoundValue: 'vault-v1';
3105
+ name: string;
3106
+ scope: VaultScope;
3107
+ source: VaultSource;
3108
+ prefix: string;
3109
+ suffix: string;
3110
+ }>;
3030
3111
  /** Low-code byte payloads; REST JSON callers retain the base64 option. */
3031
3112
  /** Text arrays retain their existing joining rules; bytes are snapshotted before asynchronous upload. */
3032
3113
  type StorageBinaryPutObjectInput = Omit<StoragePutObjectInput, 'data'> & {