@revoengine/sdk 1.6.3 → 1.6.4

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
@@ -1,12 +1,12 @@
1
1
  # @revoengine/sdk
2
2
 
3
3
  Official Node.js SDK for RevoEngine. It provides the modern `api`, `utils`,
4
- `storage`, `transport`, `vault`, and `agents` namespaces, top-level `execute()`, and the `batch` controller in both
4
+ `storage`, `transport`, `vault`, `serviceAccount`, and `agents` namespaces, top-level `execute()`, and the `batch` controller in both
5
5
  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.6.3 compatibility
9
+ ## SDK 1.6.4 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
@@ -28,7 +28,7 @@ Legacy SFTP helpers and the removed thread-goal methods are not exposed by the
28
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.3 retains portable Component digest declarations and one readable-relation
31
+ SDK 1.6.4 retains portable Component digest declarations and one readable-relation
32
32
  contract for Databases, live Views, and Materialized Views. Use `api.exportDatabase()`
33
33
  for all three relation types. `api.getDatabaseViewData()` remains a deprecated
34
34
  read alias; `api.exportDatabaseView()` and separate REST View export operations
@@ -55,14 +55,14 @@ provider consent, Vault binding, and tool permissions before enabling a plugin.
55
55
  | Revo-hosted `CUSTOM_NODEJS` | Export `async function init(runtime)` | Revo injects an execution-bound runtime; user code receives no API key. |
56
56
  | Standalone Node.js | Create `new RevoClient(options)` | Supply a RevoEngine API key explicitly or through an environment variable. |
57
57
 
58
- Both modes expose the same `api`, `utils`, `storage`, `transport`, `vault`, `agents`, `execute`, and `batch`
58
+ Both modes expose the same `api`, `utils`, `storage`, `transport`, `vault`, `serviceAccount`, `agents`, `execute`, and `batch`
59
59
  properties, but return types reflect where the work happens:
60
60
 
61
61
  | Call kind | Revo-hosted | Standalone |
62
62
  | --- | --- | --- |
63
63
  | Execution snapshot, cache, debug, and logging | Synchronous | Throws synchronously because no execution context exists |
64
64
  | Current user and instance | Synchronous injected snapshot | Asynchronous lazy `/api/v1/me` discovery |
65
- | Remote `api`, `storage`, `transport`, `vault`, `agents`, and `execute()` calls | Asynchronous | Asynchronous |
65
+ | Remote `api`, `storage`, `transport`, `vault`, `serviceAccount`, `agents`, and `execute()` calls | Asynchronous | Asynchronous |
66
66
  | Local `utils` and `batch.configure()` | Synchronous unless the utility is inherently asynchronous | Same |
67
67
 
68
68
  ## Installation
@@ -79,7 +79,7 @@ RevoEngine pins that version again in the deployment package and injects the
79
79
  runtime into the component entrypoint. Component code does not construct a
80
80
  `RevoClient`.
81
81
 
82
- The platform chooses the hosted package version; publishing SDK 1.6.3 does not
82
+ The platform chooses the hosted package version; publishing SDK 1.6.4 does not
83
83
  upgrade existing hosted deployments or their generated package pins.
84
84
 
85
85
  Hosted user code receives neither a tenant API key nor the private runtime
@@ -156,6 +156,8 @@ Execution-only methods such as `api.input()`, `api.getContext()`,
156
156
  `api.getExecutionId()`, and `api.getOperationId()` are available only in hosted
157
157
  executions.
158
158
 
159
+ Use `runtime.execute(code, { readOnly: true })` for transient code that must not write platform state. `readOnly: false` selects full execution for an authorized standalone client; a hosted execution inherits its mode and cannot escalate a restricted parent.
160
+
159
161
  ### Configure hosted batching
160
162
 
161
163
  Configure batching before the first remote call:
@@ -809,7 +811,7 @@ await client.vault.rotate('TOKEN', { value: replacement }, { scope: 'user', vali
809
811
  Do not log values or access tokens. Instance access requires Secret roles and
810
812
  creator ownership or administrator rights. User scope uses the verified account;
811
813
  management requires owner rights and does not inherit saved Component/Tool grants.
812
- Writes return null in debug/read-only execution. See the
814
+ Writes throw `READ_ONLY_OPERATION_FORBIDDEN` when the execution has `readOnly: true`. See the
813
815
  [Vault guide](https://docs.revoengine.com/low-code/reference/vault) for all methods.
814
816
 
815
817
  The same flat manager exposes `getAccessToken`, `getIntegrationMetadata`,
@@ -1,10 +1,10 @@
1
1
  import * as node_worker_threads from 'node:worker_threads';
2
2
  import { Buffer as Buffer$1 } from 'node:buffer';
3
3
 
4
- declare const SDK_VERSION: "1.6.3";
4
+ declare const SDK_VERSION: "1.6.4";
5
5
  declare const PROTOCOL_VERSION: 1;
6
- declare const CONTRACT_REVISION: "8083c90249a517982be7395a44c016ab08dcd047eb9b12231211e496c842120d";
7
- type RuntimeSurfaceName = 'api' | 'storage' | 'transport' | 'vault' | 'agents' | 'lowCode';
6
+ declare const CONTRACT_REVISION: "d2b7e94d335d87dd070d2a97a043704b61b8c8d5c28435c20aceeda9581b70e4";
7
+ type RuntimeSurfaceName = 'api' | 'storage' | 'transport' | 'vault' | 'serviceAccount' | 'agents' | 'lowCode';
8
8
 
9
9
  // AUTO-GENERATED FILE. DO NOT EDIT DIRECTLY.
10
10
  // Sources: api.swagger-contracts.generated.d.ts, api.public.d.ts
@@ -57,6 +57,8 @@ interface SwaggerAgentConfigDto {
57
57
  "persona"?: "friendly" | "pragmatic" | "professional" | "concise" | "calm" | "mentor" | "assertive";
58
58
  /** Additional per-agent system instructions persisted with the definition. Runtime policy still has higher priority. */
59
59
  "systemInstructions"?: string;
60
+ /** One persistent Agent memory shared by Memory settings and runtime memory tools, included in instructions on every turn. Limited to 20,000 assistant tokens. */
61
+ "memory"?: string;
60
62
  /** Structured operator-owned Agent identity loaded on every autonomous turn. Learned memory cannot mutate this definition. */
61
63
  "definition"?: SwaggerAgentDefinitionDto;
62
64
  /** Durable cross-run memory defaults such as recall budget, retained summary size, and retention horizon. */
@@ -71,6 +73,10 @@ interface SwaggerAgentConfigDto {
71
73
  "toolNames"?: Array<string>;
72
74
  /** Default registry plugin ids attached to this agent. These are the agent-owned baseline attachments applied to every run unless additional runtime plugin ids are supplied. */
73
75
  "pluginIds"?: Array<string>;
76
+ /** Attached or inherited default registry plugin IDs to load eagerly. IDs outside the effective Agent plugin access set are rejected. */
77
+ "eagerPluginIds"?: Array<string>;
78
+ /** Selected terminal IDs available to this Agent. An empty selection permits no terminals. Each use also requires the historical execution service account and its current terminal/workspace ACL. */
79
+ "agentTerminalIds"?: Array<string>;
74
80
  /** Primary plugin contract surface. Plugins are provider-governed and define the executable agent-plugin surface. */
75
81
  "plugins"?: Array<SwaggerAgentPluginConfigDto>;
76
82
  /** Maximum number of concurrently admitted root runs for this agent. Additional root runs remain queued until capacity is released. */
@@ -477,6 +483,39 @@ interface SwaggerDatabaseIndexPredicateDto {
477
483
  interface SwaggerDatabaseOptionsDto {
478
484
  "indexes"?: Array<SwaggerDatabaseIndexDefinitionDto>;
479
485
  }
486
+ interface SwaggerDatabaseViewActionExecuteDto {
487
+ "action": "UPDATE" | "DELETE";
488
+ "targetDatabaseId": string;
489
+ "keyMapping": Record<string, unknown>;
490
+ "mutationToken": string;
491
+ "data"?: Record<string, unknown> | Array<{
492
+ "column": string;
493
+ "op": "set" | "setNull" | "add" | "subtract" | "multiply" | "divide" | "abs" | "floor" | "ceil" | "sqrt" | "round" | "pow" | "toggle" | "addInterval" | "subtractInterval" | "truncate" | "prepend" | "append" | "insert" | "replace" | "trim" | "lower" | "upper" | "mergeJson" | "setJsonPath" | "removeJsonPath" | "addItems" | "removeItems";
494
+ "value"?: unknown | null;
495
+ "position"?: number;
496
+ "search"?: string;
497
+ "path"?: Array<string>;
498
+ "create"?: boolean;
499
+ "unit"?: string;
500
+ "nulls"?: "preserve" | "empty";
501
+ }>;
502
+ "return"?: boolean;
503
+ "onlyKeys"?: boolean;
504
+ }
505
+ interface SwaggerDeleteDatabaseRequestDto {
506
+ /** Filter object or array of filter objects. */
507
+ "filter": Record<string, unknown>;
508
+ /** Join definition for filtering. */
509
+ "join"?: Record<string, unknown>;
510
+ /** Limit of affected rows. */
511
+ "take"?: number;
512
+ /** Offset of affected rows. */
513
+ "skip"?: number;
514
+ /** Return updated rows. */
515
+ "return"?: boolean;
516
+ /** Return only primary keys (reduces payload). */
517
+ "onlyKeys"?: boolean;
518
+ }
480
519
  interface SwaggerPartitionDefinition {
481
520
  /** Partition type. */
482
521
  "type"?: "LIST" | "RANGE" | "HASH";
@@ -505,6 +544,36 @@ interface SwaggerPartitionDefinition {
505
544
  */
506
545
  "remainder"?: number;
507
546
  }
547
+ interface SwaggerServiceAccountAccessDto {
548
+ /** Restrict management access to explicitly assigned users and groups. */
549
+ "restricted": boolean;
550
+ /** User UUID/email references or {id}/{mail}. No implicit creator/self access after creation. */
551
+ "users"?: Array<string | {
552
+ "id": string;
553
+ } | {
554
+ "mail": string;
555
+ }>;
556
+ /** Exact group name/UUID references or {id}/{name}. */
557
+ "groups"?: Array<string | {
558
+ "id": string;
559
+ } | {
560
+ "name": string;
561
+ }>;
562
+ }
563
+ interface SwaggerServiceAccountMembershipsDto {
564
+ /** Execution group memberships. Requires USER_ADMIN or INSTANCE_ADMIN. */
565
+ "groups"?: Array<string | {
566
+ "id": string;
567
+ } | {
568
+ "name": string;
569
+ }>;
570
+ /** Assigned active role groups. Delegators may assign only their own active groups without INSTANCE_ADMIN. */
571
+ "roleGroups"?: Array<string | {
572
+ "id": string;
573
+ } | {
574
+ "name": string;
575
+ }>;
576
+ }
508
577
  interface SwaggerStorageCellInputDto {
509
578
  /** A1 cell address. */
510
579
  "address": string;
@@ -512,7 +581,7 @@ interface SwaggerStorageCellInputDto {
512
581
  "value"?: string | number | boolean | Record<string, unknown> | Array<unknown> | null;
513
582
  /** Excel formula without a leading equals sign. */
514
583
  "formula"?: string;
515
- /** Cached formula result. ExcelJS does not calculate formulas. Supports JSON-compatible strings, numbers, booleans, arrays, objects, and null. */
584
+ /** Cached formula result. Formulas are not calculated by this operation. Supports JSON-compatible strings, numbers, booleans, arrays, objects, and null. */
516
585
  "result"?: string | number | boolean | Record<string, unknown> | Array<unknown> | null;
517
586
  /** Declarative cell style for XLSX output. */
518
587
  "style"?: Record<string, unknown>;
@@ -588,6 +657,30 @@ interface SwaggerStorageTabularSchemaPolicyDto {
588
657
  /** 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. */
589
658
  "additionalProperties"?: "allow" | "strip" | "reject";
590
659
  }
660
+ interface SwaggerUpdateServiceAccountAccessDto {
661
+ /** Restrict management access to explicitly assigned users and groups. */
662
+ "restricted"?: boolean;
663
+ /** User UUID/email references or {id}/{mail}. No implicit creator/self access after creation. */
664
+ "users"?: Array<string | {
665
+ "id": string;
666
+ } | {
667
+ "mail": string;
668
+ }>;
669
+ /** Exact group name/UUID references or {id}/{name}. */
670
+ "groups"?: Array<string | {
671
+ "id": string;
672
+ } | {
673
+ "name": string;
674
+ }>;
675
+ }
676
+ interface SwaggerUserKeyWhitelistDto {
677
+ /** You need to provide name of the user. */
678
+ "name": string;
679
+ /** You need to provide type of whitelist IP,IP_SUBNET,RANGE. */
680
+ "type": string;
681
+ /** Provide a single address, a CIDR network or an address range. */
682
+ "value": string;
683
+ }
591
684
  interface SwaggerWebhookMapPatchDto {
592
685
  "set"?: Record<string, string>;
593
686
  "remove"?: Array<string>;
@@ -702,6 +795,18 @@ interface DatabaseCreateInput {
702
795
  /** Advanced structured table options, including composite, expression, covering, and partial indexes. */
703
796
  "options"?: SwaggerDatabaseOptionsDto;
704
797
  }
798
+ interface ServiceAccountKeyCreateInput {
799
+ /** You need to provide name of the user. */
800
+ "name": string;
801
+ /** Optional resource metadata. Top-level keys starting with "__" are reserved for backend use. */
802
+ "metadata"?: Record<string, unknown> | null;
803
+ /** You can provide if key should be whitelisted. */
804
+ "restricted": boolean;
805
+ /** Use an empty array or null when restricted is false; provide at least one complete entry when restricted is true. */
806
+ "whitelist"?: Array<SwaggerUserKeyWhitelistDto> | null;
807
+ /** Optional API key expiration timestamp. When provided, it must be at least four hours in the future. */
808
+ "expireAt"?: string;
809
+ }
705
810
  interface AssistantMessageInput {
706
811
  /** Finalized Storage files to link to this message. File access is checked on send and every read. */
707
812
  "storageEntryIds"?: Array<string>;
@@ -740,6 +845,20 @@ interface AssistantMessageInput {
740
845
  /** Optional per-turn backend performance debugger. When true, payload build timing traces are persisted into assistant report artifacts, and local/test runtimes may persist hidden model-call snapshots for this turn. */
741
846
  "performanceDebugger"?: boolean;
742
847
  }
848
+ interface ServiceAccountCreateInput {
849
+ "access"?: SwaggerServiceAccountAccessDto;
850
+ "memberships"?: SwaggerServiceAccountMembershipsDto;
851
+ /** You need to provide name of the user. */
852
+ "name": string;
853
+ /** Custom service-account metadata. Top-level keys starting with "__" are reserved for backend use. Maximum 16 KiB of UTF-8 JSON and 64 top-level keys. */
854
+ "metadata"?: Record<string, unknown> | null;
855
+ /** Custom service-account metadata. Top-level keys starting with "__" are reserved for backend use. Maximum 16 KiB of UTF-8 JSON and 64 top-level keys. */
856
+ "metaData"?: Record<string, unknown> | null;
857
+ /** Extended account data with separate permissions. Same JSON format as Metadata. Maximum 16 KiB of UTF-8 JSON and 64 top-level keys. */
858
+ "metadataAdvanced"?: Record<string, unknown> | null;
859
+ /** Extended account data with separate permissions. Same JSON format as Metadata. Maximum 16 KiB of UTF-8 JSON and 64 top-level keys. */
860
+ "advancedData"?: Record<string, unknown> | null;
861
+ }
743
862
  interface StorageFolderInput {
744
863
  /** Folder name. */
745
864
  "name": string;
@@ -814,6 +933,31 @@ interface StorageUploadSessionInput {
814
933
  /** Explicit allowed user ids for the finalized entry. */
815
934
  "users"?: Array<string>;
816
935
  }
936
+ interface DatabaseOperationInput {
937
+ /** Database ID/name, or view ID when viewAction is provided. */
938
+ "databaseName": string;
939
+ "action": "UPDATE" | "DELETE" | "TRUNCATE";
940
+ /** Filtered selection. Returning rows is not supported in background operations. */
941
+ "request"?: SwaggerDeleteDatabaseRequestDto;
942
+ "data"?: Record<string, unknown> | Array<{
943
+ "column": string;
944
+ "op": "set" | "setNull" | "add" | "subtract" | "multiply" | "divide" | "abs" | "floor" | "ceil" | "sqrt" | "round" | "pow" | "toggle" | "addInterval" | "subtractInterval" | "truncate" | "prepend" | "append" | "insert" | "replace" | "trim" | "lower" | "upper" | "mergeJson" | "setJsonPath" | "removeJsonPath" | "addItems" | "removeItems";
945
+ "value"?: unknown | null;
946
+ "position"?: number;
947
+ "search"?: string;
948
+ "path"?: Array<string>;
949
+ "create"?: boolean;
950
+ "unit"?: string;
951
+ "nulls"?: "preserve" | "empty";
952
+ }>;
953
+ /** Reviewed view mutation. The preview token is validated at admission. */
954
+ "viewAction"?: SwaggerDatabaseViewActionExecuteDto;
955
+ "restartIdentity"?: boolean;
956
+ /** Suppress the terminal System message. Low-code defaults this to true. */
957
+ "skipNotification"?: boolean;
958
+ /** Actor-scoped admission key. Reusing it with a different request is rejected. */
959
+ "idempotencyKey"?: string;
960
+ }
817
961
  interface StorageUploadSessionFinalizeInput {
818
962
  /** Expected contiguous multipart count (parts 1..N). Use this to fence distributed uploads against missing parts. */
819
963
  "expectedPartCount"?: number;
@@ -887,6 +1031,32 @@ interface StoragePutObjectInput {
887
1031
  FROZEN: Deep archive or legal-hold data kept mainly for audit or recovery obligations. */
888
1032
  "tier"?: "HOT" | "WARM" | "COLD" | "FROZEN";
889
1033
  }
1034
+ interface ServiceAccountQuery {
1035
+ /** Number of rows to skip before pagination starts. Parsed from a query-string integer. */
1036
+ "skip"?: number;
1037
+ /** Maximum number of rows to return. Parsed from a query-string integer. Most list endpoints default to 100 when omitted. */
1038
+ "take"?: number;
1039
+ /** Include the total count in the response envelope only when explicitly true. Omitted or false skips the count query. */
1040
+ "count"?: boolean;
1041
+ /** Filter tree as a JSON string or bracket-style query object. Supports and/or/not groups and field predicates with ops such as eq, ne, gt, gte, lt, lte, like, notLike, ilike, notILike, in, notIn, any, isNull, isNotNull, between, contains, containedBy, arrayHas, arrayHasAny, arrayHasAll, arrayContainedBy, jsonArrayHas, jsonArrayHasAny, jsonArrayHasAll, startsWith, endsWith, true, and false. Field names are allowed logical fields; relation fields use dot paths such as groups.groupId when exposed by the endpoint. */
1042
+ "filter"?: string;
1043
+ /** Sort definition as a JSON string, indexed array query object, array, or legacy CSV. JSON object values should be ASC or DESC. CSV supports descending fields with a leading dash, for example name,-lastUpdateAt. */
1044
+ "sort"?: string;
1045
+ /** Optional DISTINCT ON logical fields as a JSON array string, indexed array query object, array, or legacy CSV. Selected distinct fields are included in the projection. */
1046
+ "distinct"?: string;
1047
+ /** Optional field projection as a JSON array string, indexed array query object, array, or legacy CSV. String fields must be allowlisted logical fields. Advanced select items may use field, fn, raw, cast, coalesce, or case expressions when the endpoint enables dynamic projection. */
1048
+ "fields"?: string;
1049
+ /** Optional join definitions as a JSON string or bracket-style query object. This is only honored by endpoints that explicitly enable dynamic joins, such as dynamic database data reads. Each join has table, alias, type (left or inner), and an on condition. */
1050
+ "joins"?: string;
1051
+ /** Optional groupBy logical fields as a JSON array string, indexed array query object, array, or legacy CSV. Only honored when the endpoint enables dynamic grouping or already has grouped defaults. */
1052
+ "groupBy"?: string;
1053
+ /** Optional cast mapping as a JSON string or bracket-style query object. Keys are selected aliases or logical fields; values are database definition types such as TEXT, INTEGER, BIGINT, NUMERIC, BOOLEAN, DATE, TIMESTAMP, TIMESTAMPTZ, JSON, JSONB, or UUID where supported. */
1054
+ "cast"?: string;
1055
+ /** Optional CTE definitions as a JSON string or bracket-style query object. Only honored by endpoints that explicitly enable dynamic CTEs. */
1056
+ "with"?: string;
1057
+ /** Enable debug output for the request, including compiled SQL, bound params, and bounded EXPLAIN plans when the endpoint supports it. */
1058
+ "debug"?: boolean;
1059
+ }
890
1060
  interface AssistantActionResolutionInput {
891
1061
  /** Finalized Storage files linked to this action response. */
892
1062
  "storageEntryIds"?: Array<string>;
@@ -925,9 +1095,21 @@ interface StorageRestoreInput {
925
1095
  /** Required for TTL-expired entries. Use null to restore without another expiration. */
926
1096
  "retention"?: SwaggerStorageRetentionDto | null;
927
1097
  }
1098
+ interface ServiceAccountKeyRotateInput {
1099
+ /** Current API key version. */
1100
+ "version": number;
1101
+ /** Old-key overlap in milliseconds. Zero revokes the old key immediately. Existing expiration is never extended. */
1102
+ "gracePeriodMs"?: number;
1103
+ /** New-key ISO expiration, at least four hours ahead. Omission inherits the current expiration; null creates a key without expiration. */
1104
+ "expireAt"?: string | null;
1105
+ /** Authenticator confirmation for personal accounts. */
1106
+ "code"?: string;
1107
+ }
928
1108
  interface AgentRunInput {
929
1109
  /** Instruction or mission passed to the root agent run. */
930
1110
  "instruction": string;
1111
+ /** Readable Agent-workspace storage entries attached to the first conversation message. */
1112
+ "storageEntryIds"?: Array<string>;
931
1113
  /** Optional trigger type such as REQUEST, EVENT, or SCHEDULE. */
932
1114
  "triggerType"?: string;
933
1115
  /** Optional external reference type for correlation. */
@@ -1005,6 +1187,36 @@ interface DatabaseUpdateInput {
1005
1187
  /** Provide current version. */
1006
1188
  "version": number;
1007
1189
  }
1190
+ interface ServiceAccountKeyUpdateInput {
1191
+ /** You need to provide name of the user. */
1192
+ "name"?: string;
1193
+ /** Replacement resource metadata. Top-level keys starting with "__" are reserved for backend use. */
1194
+ "metadata"?: Record<string, unknown> | null;
1195
+ /** You can provide if key should be whitelisted. */
1196
+ "restricted"?: boolean;
1197
+ /** Use an empty array or null when restricted is false; provide at least one complete entry when setting restricted to true. */
1198
+ "whitelist"?: Array<SwaggerUserKeyWhitelistDto> | null;
1199
+ /** Current API key version used for optimistic concurrency control. */
1200
+ "version": number;
1201
+ /** Optional six-character confirmation code when required by the account policy. */
1202
+ "code"?: string;
1203
+ }
1204
+ interface ServiceAccountUpdateInput {
1205
+ "memberships"?: SwaggerServiceAccountMembershipsDto;
1206
+ /** You need to provide name of the user. */
1207
+ "name"?: string;
1208
+ /** Custom service-account metadata. Top-level keys starting with "__" are reserved for backend use. Maximum 16 KiB of UTF-8 JSON and 64 top-level keys. */
1209
+ "metadata"?: Record<string, unknown> | null;
1210
+ /** Custom service-account metadata. Top-level keys starting with "__" are reserved for backend use. Maximum 16 KiB of UTF-8 JSON and 64 top-level keys. */
1211
+ "metaData"?: Record<string, unknown> | null;
1212
+ /** Extended account data with separate permissions. Same JSON format as Metadata. Maximum 16 KiB of UTF-8 JSON and 64 top-level keys. */
1213
+ "metadataAdvanced"?: Record<string, unknown> | null;
1214
+ /** Extended account data with separate permissions. Same JSON format as Metadata. Maximum 16 KiB of UTF-8 JSON and 64 top-level keys. */
1215
+ "advancedData"?: Record<string, unknown> | null;
1216
+ "access"?: SwaggerUpdateServiceAccountAccessDto;
1217
+ /** Current account version for optimistic concurrency. */
1218
+ "version": number;
1219
+ }
1008
1220
  interface StorageEntryUpdateInput {
1009
1221
  /** Replacement file retention. Omit to preserve, or set null to clear expiration. */
1010
1222
  "retention"?: SwaggerStorageRetentionDto | null;
@@ -1046,8 +1258,8 @@ interface WebhookInput {
1046
1258
  "saveDetails"?: boolean;
1047
1259
  /** Stop delivery on a supported attempt status. Processing of delivery logs is asynchronous. */
1048
1260
  "stopOnStatuses"?: Array<"UNAUTHENTICATED">;
1049
- /** Max attempts. */
1050
- "maxAttempts"?: number;
1261
+ /** Additional retries after the first request: -1 unlimited, 0 no retry, N up to N retries. */
1262
+ "maxRetries"?: number;
1051
1263
  /** Provide data */
1052
1264
  "request"?: SwaggerWebhookRequestDetailsDto;
1053
1265
  /** Mask request details. */
@@ -1592,7 +1804,8 @@ interface Webhook {
1592
1804
  status: string;
1593
1805
  statusMessage: string;
1594
1806
  attempts: number;
1595
- maxAttempts: number;
1807
+ /** Additional retries: -1 unlimited, 0 no retry. */
1808
+ maxRetries: number;
1596
1809
  request: LooseObject<any>;
1597
1810
  response: LooseObject<any>;
1598
1811
  createdBy: string;
@@ -2107,7 +2320,7 @@ type ExportDatabaseOptions = Omit<SelectInput, 'from'> & {
2107
2320
  * Default is false.
2108
2321
  */
2109
2322
  async?: boolean;
2110
- /** Suppress the export completion/failure System notification for this low-code call. */
2323
+ /** Suppress the export completion/failure System notification. Defaults to true for low-code; set false to opt in. */
2111
2324
  skipNotification?: boolean;
2112
2325
  /** Output format. CSV is the default. XLSX validates the effective row count before starting. */
2113
2326
  format?: 'csv' | 'tsv' | 'ndjson' | 'xlsx';
@@ -2130,6 +2343,8 @@ type ExportDatabaseOptions = Omit<SelectInput, 'from'> & {
2130
2343
  retention?: StorageRetentionInput;
2131
2344
  };
2132
2345
  type ImportDatabaseOptions = {
2346
+ /** Suppress System messages; defaults to true in low-code. */
2347
+ skipNotification?: boolean;
2133
2348
  storageEntryId: string;
2134
2349
  format: 'csv' | 'tsv' | 'ndjson' | 'xlsx';
2135
2350
  mode: 'insert' | 'upsert';
@@ -2476,12 +2691,18 @@ interface AgentConfig {
2476
2691
  workMode?: AgentWorkMode;
2477
2692
  persona?: AgentPersona;
2478
2693
  systemInstructions?: string;
2694
+ /** Persistent Agent Memory shared with memory tools and included in every instruction packet; at most 20,000 o200k_base tokens. */
2695
+ memory?: string;
2479
2696
  memoryPolicy?: AgentMemoryPolicy;
2480
2697
  release?: AgentReleaseConfig;
2481
2698
  automation?: AgentAutomationPolicyConfig;
2482
2699
  cheapTurn?: AgentCheapTurnPolicy;
2483
2700
  toolNames?: string[];
2484
2701
  pluginIds?: string[];
2702
+ /** Attached or inherited default plugins to preload; at most 64 IDs, all within the effective Agent access set. */
2703
+ eagerPluginIds?: string[];
2704
+ /** Selected terminals narrow the historical execution service account's current ACL; at most 64 IDs, empty permits none. */
2705
+ agentTerminalIds?: string[];
2485
2706
  plugins?: AgentPluginConfig[];
2486
2707
  maxActiveRootRuns?: number;
2487
2708
  maxChildRuns?: number;
@@ -2862,7 +3083,7 @@ interface SecretWithRevision extends Secret {
2862
3083
  revision: SecretRevision;
2863
3084
  }
2864
3085
  interface SecretValueRevision extends SecretRevision {
2865
- value: Buffer;
3086
+ value: string;
2866
3087
  }
2867
3088
  interface SecretWithValue extends Secret {
2868
3089
  revision: SecretValueRevision;
@@ -2921,6 +3142,86 @@ interface VaultIntegrationConnectResult {
2921
3142
  revision: string;
2922
3143
  authorizationUrl: string;
2923
3144
  }
3145
+ /** Native Vault manager; one contract for instance and verified user ownership.
3146
+ * Instance access requires Secret roles and creator ownership or an administrator.
3147
+ * Secret values return only through get; getAccessToken returns an integration token. Automatic diagnostic previews suppress Secret values.
3148
+ * Writes with readOnly: true throw READ_ONLY_OPERATION_FORBIDDEN before performing the operation.
3149
+ * External provider credentials and OAuth connections have their own lifecycles.
3150
+ */
3151
+ /** Unique service-account name or ID; explicit selectors avoid ambiguity. */
3152
+ type ServiceAccountRef = string | {
3153
+ id: string;
3154
+ } | {
3155
+ name: string;
3156
+ };
3157
+ interface ServiceAccountRecord {
3158
+ userId: string;
3159
+ name: string;
3160
+ mail: string;
3161
+ serviceAccount: true;
3162
+ status: number;
3163
+ version: number;
3164
+ platformAccess: boolean;
3165
+ access: {
3166
+ restricted: boolean;
3167
+ users: Array<{
3168
+ userId: string;
3169
+ mail: string;
3170
+ name: string;
3171
+ }>;
3172
+ groups: Array<{
3173
+ groupId: string;
3174
+ name: string;
3175
+ }>;
3176
+ };
3177
+ memberships: {
3178
+ groups: string[];
3179
+ roleGroups: string[];
3180
+ };
3181
+ metadata: Record<string, any>;
3182
+ metadataAdvanced: Record<string, any>;
3183
+ }
3184
+ interface ServiceAccountKey {
3185
+ userKeyId: string;
3186
+ name: string;
3187
+ version: number;
3188
+ /** Masked credential label; never the usable credential. */
3189
+ key?: string;
3190
+ restricted: boolean;
3191
+ whitelist?: ServiceAccountKeyCreateInput['whitelist'];
3192
+ expireAt?: Date | null;
3193
+ metadata?: Record<string, any>;
3194
+ deletedAt?: Date | null;
3195
+ createdAt?: Date;
3196
+ lastUpdateAt?: Date;
3197
+ rotatedFromUserKeyId?: string | null;
3198
+ }
3199
+ /** Immutable credentials are revealed once by create/rotate only. */
3200
+ interface ServiceAccountKeyCreated extends ServiceAccountKey {
3201
+ secret: string;
3202
+ }
3203
+ interface ServiceAccountKeyRotated {
3204
+ newKey: ServiceAccountKeyCreated;
3205
+ previousKey: ServiceAccountKey;
3206
+ }
3207
+ interface RevoServiceAccount {
3208
+ get(ref: ServiceAccountRef): Promise<ServiceAccountRecord>;
3209
+ list(query?: ServiceAccountQuery): Promise<CollectionResult<ServiceAccountRecord>>;
3210
+ create(input: ServiceAccountCreateInput): Promise<ServiceAccountRecord>;
3211
+ update(ref: ServiceAccountRef, input: ServiceAccountUpdateInput): Promise<ServiceAccountRecord>;
3212
+ delete(ref: ServiceAccountRef): Promise<ServiceAccountRecord>;
3213
+ activate(ref: ServiceAccountRef): Promise<ServiceAccountRecord>;
3214
+ disable(ref: ServiceAccountRef): Promise<ServiceAccountRecord>;
3215
+ restore(ref: ServiceAccountRef): Promise<ServiceAccountRecord>;
3216
+ enablePlatformAccess(ref: ServiceAccountRef): Promise<ServiceAccountRecord>;
3217
+ disablePlatformAccess(ref: ServiceAccountRef): Promise<ServiceAccountRecord>;
3218
+ getKeys(ref: ServiceAccountRef, query?: ServiceAccountQuery): Promise<CollectionResult<ServiceAccountKey>>;
3219
+ getKey(ref: ServiceAccountRef, userKeyId: string): Promise<ServiceAccountKey>;
3220
+ createKey(ref: ServiceAccountRef, input: ServiceAccountKeyCreateInput): Promise<ServiceAccountKeyCreated>;
3221
+ updateKey(ref: ServiceAccountRef, userKeyId: string, input: ServiceAccountKeyUpdateInput): Promise<ServiceAccountKey>;
3222
+ rotateKey(ref: ServiceAccountRef, userKeyId: string, input: ServiceAccountKeyRotateInput): Promise<ServiceAccountKeyRotated>;
3223
+ revokeKey(ref: ServiceAccountRef, userKeyId: string): Promise<ServiceAccountKey>;
3224
+ }
2924
3225
  interface RevoVault$1 {
2925
3226
  get(name: string, options?: SecretGetOptions): Promise<SecretWithValue>;
2926
3227
  create(name: string, data: SecretCreateInput, options?: SecretScopeOptions): Promise<Secret | null>;
@@ -2945,6 +3246,11 @@ interface RevoApi {
2945
3246
  exportDatabase<TAsync extends boolean = false>(name: string, options?: ExportDatabaseOptions & {
2946
3247
  async?: TAsync;
2947
3248
  }): Promise<TAsync extends true ? ExportDatabaseAcceptedResponse : TAsync extends false ? ExportDatabaseCompletedResponse : ExportDatabaseResponse>;
3249
+ startDatabaseOperation(name: string, options: Omit<DatabaseOperationInput, 'databaseName'>): Promise<{
3250
+ accepted: true;
3251
+ jobId: string;
3252
+ status: string;
3253
+ }>;
2948
3254
  importDatabase(name: string, options: ImportDatabaseOptions): Promise<{
2949
3255
  importId: string;
2950
3256
  jobId: string;
@@ -2989,8 +3295,6 @@ interface RevoApi {
2989
3295
  queryDatabase(query: string, params?: any[]): Promise<any>;
2990
3296
  currentUser(): LoggedUser;
2991
3297
  isDebug(): boolean;
2992
- disableDebug(): void;
2993
- enableDebug(): void;
2994
3298
  getCache(key: string): any;
2995
3299
  setCache(key: string, value: any): void;
2996
3300
  getContext(): Context;
@@ -3321,6 +3625,8 @@ type LowCodeLanguage = 'javascript' | 'typescript';
3321
3625
  interface LowCodeExecuteOptions {
3322
3626
  /** Defaults to TypeScript. */
3323
3627
  language?: LowCodeLanguage;
3628
+ /** Restrict platform writes for this execution. Inherits the hosted runtime mode when omitted. */
3629
+ readOnly?: boolean;
3324
3630
  /** Input exposed through api.input() inside the low-code execution. */
3325
3631
  inputs?: any;
3326
3632
  /** Maximum execution time in milliseconds. Defaults to 60 seconds. */
@@ -3429,6 +3735,7 @@ interface RevoRuntime {
3429
3735
  readonly utils: RevoUtils;
3430
3736
  readonly storage: RevoStorage;
3431
3737
  readonly vault: RevoVault;
3738
+ readonly serviceAccount: RevoServiceAccount;
3432
3739
  readonly transport: RevoTransport;
3433
3740
  readonly agents: RevoAgents;
3434
3741
  readonly execute: RevoExecute;
@@ -3527,4 +3834,4 @@ declare class RevoHttpResponseError extends RevoError {
3527
3834
  constructor(statusCode: number, body?: unknown);
3528
3835
  }
3529
3836
 
3530
- export { RevoRemoteError as A, type BatchFailureMode as B, CONTRACT_REVISION as C, RevoRuntimeContextUnavailableError as D, RevoTransportError as E, type RuntimeBatchRequest as F, type RuntimeBatchResponse as G, type HostedRuntimeBootstrap as H, type RuntimeCall as I, type RuntimeCallResult as J, type SerializedRevoError as K, PROTOCOL_VERSION as P, type RevoRuntime as R, SDK_VERSION as S, RevoExecutionExit as a, RevoHttpResponseError as b, type RevoRuntimeBridgeRequest as c, type RevoRuntimeBridgeResponse as d, type RevoRuntimeBridgeTransportError as e, type RevoStandaloneApi as f, type RevoUtils as g, type RevoStorage as h, type RevoVault as i, type RevoTransport as j, type RevoAgents as k, type RevoExecute as l, type RevoBatchController as m, type RevoClientOptions as n, type RevoApi as o, RevoAuthenticationError as p, RevoBatchConfigurationError as q, RevoBatchLimitError as r, type RevoBatchLimits as s, type RevoBatchOptions as t, RevoConfigurationError as u, RevoError as v, type RevoExecuteOptions as w, type RevoExecutionDefaults as x, RevoPermissionDeniedError as y, RevoProtocolError as z };
3837
+ export { RevoProtocolError as A, type BatchFailureMode as B, CONTRACT_REVISION as C, RevoRemoteError as D, RevoRuntimeContextUnavailableError as E, RevoTransportError as F, type RuntimeBatchRequest as G, type HostedRuntimeBootstrap as H, type RuntimeBatchResponse as I, type RuntimeCall as J, type RuntimeCallResult as K, type SerializedRevoError as L, PROTOCOL_VERSION as P, type RevoRuntime as R, SDK_VERSION as S, RevoExecutionExit as a, RevoHttpResponseError as b, type RevoRuntimeBridgeRequest as c, type RevoRuntimeBridgeResponse as d, type RevoRuntimeBridgeTransportError as e, type RevoStandaloneApi as f, type RevoUtils as g, type RevoStorage as h, type RevoVault as i, type RevoServiceAccount as j, type RevoTransport as k, type RevoAgents as l, type RevoExecute as m, type RevoBatchController as n, type RevoClientOptions as o, type RevoApi as p, RevoAuthenticationError as q, RevoBatchConfigurationError as r, RevoBatchLimitError as s, type RevoBatchLimits as t, type RevoBatchOptions as u, RevoConfigurationError as v, RevoError as w, type RevoExecuteOptions as x, type RevoExecutionDefaults as y, RevoPermissionDeniedError as z };