@stndrds/schema 1.0.0-alpha.92 → 1.0.0-alpha.94
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.mts +405 -2124
- package/dist/index.d.ts +405 -2124
- package/dist/index.js +346 -117
- package/dist/index.mjs +311 -82
- package/dist/validation/validators.d.mts +1 -1
- package/dist/validation/validators.d.ts +1 -1
- package/dist/validators-5XMwJOlV.d.ts +3534 -0
- package/dist/validators-BCw4Sn01.d.mts +3534 -0
- package/package.json +2 -2
- package/dist/validators-BFgj3O3w.d.mts +0 -1576
- package/dist/validators-C7i6EpQK.d.ts +0 -1576
package/dist/index.js
CHANGED
|
@@ -153,7 +153,14 @@ var ObjectReferencedError = class extends Error {
|
|
|
153
153
|
}
|
|
154
154
|
};
|
|
155
155
|
function getErrorMessage(error) {
|
|
156
|
-
|
|
156
|
+
if (error instanceof Error) return error.message;
|
|
157
|
+
if (typeof error === "string") return error;
|
|
158
|
+
if (error && typeof error === "object") {
|
|
159
|
+
if ("message" in error && typeof error.message === "string")
|
|
160
|
+
return error.message;
|
|
161
|
+
return JSON.stringify(error);
|
|
162
|
+
}
|
|
163
|
+
return String(error);
|
|
157
164
|
}
|
|
158
165
|
|
|
159
166
|
// src/types/filters.ts
|
|
@@ -252,7 +259,10 @@ function isFlowFieldsRow(row) {
|
|
|
252
259
|
return !row.type || row.type === "fields";
|
|
253
260
|
}
|
|
254
261
|
function isLayoutRow(row) {
|
|
255
|
-
return !!row.type && row.type !== "fields";
|
|
262
|
+
return !!row.type && row.type !== "fields" && row.type !== "relationList";
|
|
263
|
+
}
|
|
264
|
+
function isFlowRelationListRow(row) {
|
|
265
|
+
return row.type === "relationList";
|
|
256
266
|
}
|
|
257
267
|
function isFlowDefinition(obj) {
|
|
258
268
|
return typeof obj === "object" && obj !== null && "slots" in obj && "pages" in obj && "relations" in obj && "status" in obj;
|
|
@@ -294,7 +304,9 @@ var RESERVED_ATTRIBUTE_NAMES = [
|
|
|
294
304
|
"completionStatus",
|
|
295
305
|
"values",
|
|
296
306
|
"metadata",
|
|
297
|
-
"deletedAt"
|
|
307
|
+
"deletedAt",
|
|
308
|
+
"schemaVersion",
|
|
309
|
+
"archivedValues"
|
|
298
310
|
];
|
|
299
311
|
|
|
300
312
|
// src/types/permissions.ts
|
|
@@ -711,28 +723,18 @@ var aiNodeType = {
|
|
|
711
723
|
},
|
|
712
724
|
getSlotIds(node) {
|
|
713
725
|
const slotIds = /* @__PURE__ */ new Set();
|
|
714
|
-
const
|
|
715
|
-
|
|
716
|
-
for (const id of action.inputSlotIds) slotIds.add(id);
|
|
717
|
-
for (const id of action.targetSlotIds) slotIds.add(id);
|
|
718
|
-
} else if (action.type === "code-execution") {
|
|
719
|
-
for (const id of _nullishCoalesce(action.inputSlotIds, () => ( []))) slotIds.add(id);
|
|
720
|
-
}
|
|
726
|
+
for (const id of _nullishCoalesce(node.inputSlotIds, () => ( []))) slotIds.add(id);
|
|
727
|
+
for (const id of _nullishCoalesce(node.targetSlotIds, () => ( []))) slotIds.add(id);
|
|
721
728
|
return [...slotIds];
|
|
722
729
|
},
|
|
723
730
|
validate(node) {
|
|
724
731
|
const errors = [];
|
|
725
732
|
if (!node.label) errors.push("AINode must have a label");
|
|
726
|
-
if (!node.
|
|
733
|
+
if (!node.mode) errors.push("AINode must have a mode (sync or async)");
|
|
727
734
|
if (!node.next) errors.push("AINode must have a 'next' target");
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
errors.push("Document generation must have input slots");
|
|
732
|
-
if (!_optionalChain([node, 'access', _13 => _13.action, 'access', _14 => _14.targetSlotIds, 'optionalAccess', _15 => _15.length]))
|
|
733
|
-
errors.push("Document generation must have target slots");
|
|
734
|
-
} else if (_optionalChain([node, 'access', _16 => _16.action, 'optionalAccess', _17 => _17.type]) === "code-execution") {
|
|
735
|
-
if (!node.action.code) errors.push("Code execution must have code");
|
|
735
|
+
const hasAgentSource = !!node.definitionId || !!node.systemPrompt;
|
|
736
|
+
if (!hasAgentSource) {
|
|
737
|
+
errors.push("AINode must have either a definitionId or a systemPrompt");
|
|
736
738
|
}
|
|
737
739
|
return errors;
|
|
738
740
|
}
|
|
@@ -858,7 +860,8 @@ function createEmptyContext() {
|
|
|
858
860
|
documents: {},
|
|
859
861
|
variables: {},
|
|
860
862
|
conditionResults: {},
|
|
861
|
-
createdRecordIds: {}
|
|
863
|
+
createdRecordIds: {},
|
|
864
|
+
relationBuffers: {}
|
|
862
865
|
};
|
|
863
866
|
}
|
|
864
867
|
function getContextValue(context, path) {
|
|
@@ -1141,32 +1144,20 @@ var AssignNodeSchema = _zod.z.object({
|
|
|
1141
1144
|
assignments: _zod.z.array(AssignmentMappingSchema).min(1),
|
|
1142
1145
|
next: _zod.z.string().nullish()
|
|
1143
1146
|
});
|
|
1144
|
-
var DocumentGenerationActionSchema = _zod.z.object({
|
|
1145
|
-
type: _zod.z.literal("document-generation"),
|
|
1146
|
-
templateId: _zod.z.string().min(1, "Template ID is required"),
|
|
1147
|
-
inputSlotIds: _zod.z.array(_zod.z.string().min(1)).min(1, "At least one input slot is required"),
|
|
1148
|
-
targetSlotIds: _zod.z.array(_zod.z.string().min(1)).min(1, "At least one target slot is required"),
|
|
1149
|
-
outputFormat: _zod.z.enum(["pdf", "docx"]),
|
|
1150
|
-
aiInstructions: _zod.z.string().nullish()
|
|
1151
|
-
});
|
|
1152
|
-
var CodeExecutionActionSchema = _zod.z.object({
|
|
1153
|
-
type: _zod.z.literal("code-execution"),
|
|
1154
|
-
code: _zod.z.string().min(1, "Code is required"),
|
|
1155
|
-
language: _zod.z.enum(["javascript", "typescript", "python"]),
|
|
1156
|
-
inputSlotIds: _zod.z.array(_zod.z.string().min(1)).optional(),
|
|
1157
|
-
outputVariable: _zod.z.string().optional(),
|
|
1158
|
-
packages: _zod.z.array(_zod.z.string()).optional()
|
|
1159
|
-
});
|
|
1160
|
-
var AIActionConfigSchema = _zod.z.discriminatedUnion("type", [
|
|
1161
|
-
DocumentGenerationActionSchema,
|
|
1162
|
-
CodeExecutionActionSchema
|
|
1163
|
-
]);
|
|
1164
1147
|
var AINodeSchema = _zod.z.object({
|
|
1165
1148
|
type: _zod.z.literal("ai"),
|
|
1166
1149
|
id: _zod.z.string().min(1),
|
|
1167
1150
|
label: _zod.z.string().min(1),
|
|
1168
1151
|
description: _zod.z.string().nullish(),
|
|
1169
|
-
|
|
1152
|
+
mode: _zod.z.enum(["sync", "async"]),
|
|
1153
|
+
definitionId: _zod.z.string().optional(),
|
|
1154
|
+
systemPrompt: _zod.z.string().optional(),
|
|
1155
|
+
model: _zod.z.string().optional(),
|
|
1156
|
+
tools: _zod.z.array(_zod.z.string()).optional(),
|
|
1157
|
+
maxIterations: _zod.z.number().positive().optional(),
|
|
1158
|
+
instructions: _zod.z.string().optional(),
|
|
1159
|
+
inputSlotIds: _zod.z.array(_zod.z.string()).optional(),
|
|
1160
|
+
targetSlotIds: _zod.z.array(_zod.z.string()).optional(),
|
|
1170
1161
|
timeoutMs: _zod.z.number().positive().optional(),
|
|
1171
1162
|
next: _zod.z.string().nullish()
|
|
1172
1163
|
});
|
|
@@ -1295,7 +1286,7 @@ var WorkflowDefinitionSchema = _zod.z.object({
|
|
|
1295
1286
|
).refine(
|
|
1296
1287
|
(def) => {
|
|
1297
1288
|
const startNode = def.nodes[def.startNodeId];
|
|
1298
|
-
return _optionalChain([startNode, 'optionalAccess',
|
|
1289
|
+
return _optionalChain([startNode, 'optionalAccess', _8 => _8.type]) === "start";
|
|
1299
1290
|
},
|
|
1300
1291
|
{
|
|
1301
1292
|
message: "startNodeId must reference a node of type 'start'"
|
|
@@ -1316,6 +1307,14 @@ var WorkflowDefinitionSchema = _zod.z.object({
|
|
|
1316
1307
|
}
|
|
1317
1308
|
);
|
|
1318
1309
|
|
|
1310
|
+
// src/types/migrations.ts
|
|
1311
|
+
var DEFAULT_RETENTION_POLICY = {
|
|
1312
|
+
attributeData: 30,
|
|
1313
|
+
deletedObjects: 90,
|
|
1314
|
+
transforms: 365,
|
|
1315
|
+
migrationErrors: 30
|
|
1316
|
+
};
|
|
1317
|
+
|
|
1319
1318
|
// src/lib/object-helpers.ts
|
|
1320
1319
|
function isEmpty2(obj) {
|
|
1321
1320
|
if (obj === null || obj === void 0) {
|
|
@@ -1437,13 +1436,13 @@ function formatLocation(value, attribute) {
|
|
|
1437
1436
|
}
|
|
1438
1437
|
function formatSelect(value, attribute) {
|
|
1439
1438
|
if (typeof value !== "string") return String(value);
|
|
1440
|
-
const option = _optionalChain([attribute, 'access',
|
|
1441
|
-
return _nullishCoalesce(_optionalChain([option, 'optionalAccess',
|
|
1439
|
+
const option = _optionalChain([attribute, 'access', _9 => _9.options, 'optionalAccess', _10 => _10.find, 'call', _11 => _11((o) => o.value === value)]);
|
|
1440
|
+
return _nullishCoalesce(_optionalChain([option, 'optionalAccess', _12 => _12.label]), () => ( String(value)));
|
|
1442
1441
|
}
|
|
1443
1442
|
function formatMultiselect(value, attribute) {
|
|
1444
1443
|
if (!Array.isArray(value)) return String(value);
|
|
1445
1444
|
if (attribute.options) {
|
|
1446
|
-
const labels = value.map((v) => _optionalChain([attribute, 'access',
|
|
1445
|
+
const labels = value.map((v) => _optionalChain([attribute, 'access', _13 => _13.options, 'access', _14 => _14.find, 'call', _15 => _15((o) => o.value === v), 'optionalAccess', _16 => _16.label])).filter(Boolean);
|
|
1447
1446
|
return labels.join(", ");
|
|
1448
1447
|
}
|
|
1449
1448
|
return value.join(", ");
|
|
@@ -1603,7 +1602,7 @@ var PROPS_TOKEN_RE = /\{\{\s*props\./;
|
|
|
1603
1602
|
function applyRelationProps(label, props, propertyDefs) {
|
|
1604
1603
|
if (!PROPS_TOKEN_RE.test(label)) return label;
|
|
1605
1604
|
const formattedProps = {};
|
|
1606
|
-
const defMap = new Map(_optionalChain([propertyDefs, 'optionalAccess',
|
|
1605
|
+
const defMap = new Map(_optionalChain([propertyDefs, 'optionalAccess', _17 => _17.map, 'call', _18 => _18((d) => [d.name, d])]));
|
|
1607
1606
|
if (props) {
|
|
1608
1607
|
for (const [key, value] of Object.entries(props)) {
|
|
1609
1608
|
if (value == null) continue;
|
|
@@ -1797,7 +1796,7 @@ var SyncError = class extends SchemaError {
|
|
|
1797
1796
|
constructor(objectName, message, cause) {
|
|
1798
1797
|
super(`Failed to sync object "${objectName}": ${message}`, SchemaErrorCode.SYNC_FAILED, {
|
|
1799
1798
|
objectName,
|
|
1800
|
-
cause: _optionalChain([cause, 'optionalAccess',
|
|
1799
|
+
cause: _optionalChain([cause, 'optionalAccess', _19 => _19.message])
|
|
1801
1800
|
});
|
|
1802
1801
|
this.name = "SyncError";
|
|
1803
1802
|
this.objectName = objectName;
|
|
@@ -1933,17 +1932,17 @@ function validateOptions(options, attributeName) {
|
|
|
1933
1932
|
const ids = /* @__PURE__ */ new Set();
|
|
1934
1933
|
const values = /* @__PURE__ */ new Set();
|
|
1935
1934
|
for (const option of options) {
|
|
1936
|
-
if (!_optionalChain([option, 'access',
|
|
1935
|
+
if (!_optionalChain([option, 'access', _20 => _20.id, 'optionalAccess', _21 => _21.trim, 'call', _22 => _22()])) {
|
|
1937
1936
|
throw new Error(
|
|
1938
1937
|
`[AttributeBuilder] Option in "${attributeName}" has an empty or missing id.`
|
|
1939
1938
|
);
|
|
1940
1939
|
}
|
|
1941
|
-
if (!_optionalChain([option, 'access',
|
|
1940
|
+
if (!_optionalChain([option, 'access', _23 => _23.value, 'optionalAccess', _24 => _24.trim, 'call', _25 => _25()])) {
|
|
1942
1941
|
throw new Error(
|
|
1943
1942
|
`[AttributeBuilder] Option "${option.id}" in "${attributeName}" has an empty or missing value.`
|
|
1944
1943
|
);
|
|
1945
1944
|
}
|
|
1946
|
-
if (!_optionalChain([option, 'access',
|
|
1945
|
+
if (!_optionalChain([option, 'access', _26 => _26.label, 'optionalAccess', _27 => _27.trim, 'call', _28 => _28()])) {
|
|
1947
1946
|
throw new Error(
|
|
1948
1947
|
`[AttributeBuilder] Option "${option.id}" in "${attributeName}" has an empty or missing label.`
|
|
1949
1948
|
);
|
|
@@ -2055,8 +2054,8 @@ var BaseAttributeBuilder = class {
|
|
|
2055
2054
|
featureGate(flagName, options) {
|
|
2056
2055
|
this.attr.featureGate = {
|
|
2057
2056
|
flag: flagName,
|
|
2058
|
-
expectedValue: _optionalChain([options, 'optionalAccess',
|
|
2059
|
-
fallback: _optionalChain([options, 'optionalAccess',
|
|
2057
|
+
expectedValue: _optionalChain([options, 'optionalAccess', _29 => _29.expectedValue]),
|
|
2058
|
+
fallback: _optionalChain([options, 'optionalAccess', _30 => _30.fallback])
|
|
2060
2059
|
};
|
|
2061
2060
|
return this;
|
|
2062
2061
|
}
|
|
@@ -2499,7 +2498,7 @@ var BaseRelationAttributeBuilder = class extends BaseAttributeBuilder {
|
|
|
2499
2498
|
object: objectName,
|
|
2500
2499
|
...options
|
|
2501
2500
|
};
|
|
2502
|
-
_optionalChain([this, 'access',
|
|
2501
|
+
_optionalChain([this, 'access', _31 => _31.attr, 'access', _32 => _32.targets, 'optionalAccess', _33 => _33.push, 'call', _34 => _34(target)]);
|
|
2503
2502
|
return this;
|
|
2504
2503
|
}
|
|
2505
2504
|
/**
|
|
@@ -2611,9 +2610,9 @@ var MultiRelationAttributeBuilder = class extends BaseRelationAttributeBuilder {
|
|
|
2611
2610
|
constructor(name, label, initOptions) {
|
|
2612
2611
|
super("relation", name, label);
|
|
2613
2612
|
this.attr.cardinality = "many";
|
|
2614
|
-
this.attr.targets = _nullishCoalesce(_optionalChain([initOptions, 'optionalAccess',
|
|
2613
|
+
this.attr.targets = _nullishCoalesce(_optionalChain([initOptions, 'optionalAccess', _35 => _35.targets]), () => ( []));
|
|
2615
2614
|
this.attr.defaultValue = [];
|
|
2616
|
-
if (_optionalChain([initOptions, 'optionalAccess',
|
|
2615
|
+
if (_optionalChain([initOptions, 'optionalAccess', _36 => _36.isRequired])) {
|
|
2617
2616
|
this.setRequired(true);
|
|
2618
2617
|
}
|
|
2619
2618
|
}
|
|
@@ -2834,8 +2833,146 @@ function document(config) {
|
|
|
2834
2833
|
|
|
2835
2834
|
// src/builders/object-builder.ts
|
|
2836
2835
|
|
|
2836
|
+
|
|
2837
|
+
// src/builders/migration-builder.ts
|
|
2838
|
+
function resolveBuiltInTransform(targetType) {
|
|
2839
|
+
const map = {
|
|
2840
|
+
text: "toString",
|
|
2841
|
+
textarea: "toString",
|
|
2842
|
+
richtext: "toString",
|
|
2843
|
+
number: "toNumber",
|
|
2844
|
+
currency: "toNumber",
|
|
2845
|
+
rating: "toNumber",
|
|
2846
|
+
date: "toDate",
|
|
2847
|
+
checkbox: "toBoolean"
|
|
2848
|
+
};
|
|
2849
|
+
return map[targetType];
|
|
2850
|
+
}
|
|
2851
|
+
function reverseOperation(op) {
|
|
2852
|
+
switch (op.type) {
|
|
2853
|
+
case "rename_attribute":
|
|
2854
|
+
return { type: "rename_attribute", from: op.to, to: op.from };
|
|
2855
|
+
case "add_attribute":
|
|
2856
|
+
return { type: "remove_attribute", name: op.attribute.name, backup_config: op.attribute };
|
|
2857
|
+
case "remove_attribute":
|
|
2858
|
+
return { type: "add_attribute", attribute: op.backup_config };
|
|
2859
|
+
case "change_type":
|
|
2860
|
+
return {
|
|
2861
|
+
type: "change_type",
|
|
2862
|
+
name: op.name,
|
|
2863
|
+
from: op.to,
|
|
2864
|
+
to: op.from,
|
|
2865
|
+
transform: op.transform ? resolveBuiltInTransform(op.from) : void 0
|
|
2866
|
+
};
|
|
2867
|
+
case "update_config":
|
|
2868
|
+
return { type: "update_config", name: op.name, from: op.to, to: op.from };
|
|
2869
|
+
case "rename_object":
|
|
2870
|
+
return { type: "rename_object", from: op.to, to: op.from };
|
|
2871
|
+
case "remove_object":
|
|
2872
|
+
return { type: "remove_object", backup: op.backup };
|
|
2873
|
+
}
|
|
2874
|
+
}
|
|
2875
|
+
var MigrationBuilder = class {
|
|
2876
|
+
constructor(version) {
|
|
2877
|
+
this.operations = [];
|
|
2878
|
+
/** Tracks attribute names that have already been referenced in this migration */
|
|
2879
|
+
this.touchedAttributes = /* @__PURE__ */ new Set();
|
|
2880
|
+
this.version = version;
|
|
2881
|
+
}
|
|
2882
|
+
// --------------------------------------------------------------------------
|
|
2883
|
+
// CONFLICT GUARD
|
|
2884
|
+
// --------------------------------------------------------------------------
|
|
2885
|
+
assertNotTouched(name, operationType) {
|
|
2886
|
+
if (this.touchedAttributes.has(name)) {
|
|
2887
|
+
throw new Error(
|
|
2888
|
+
`[MigrationBuilder] Conflicting operations on attribute "${name}": it was already modified earlier in this migration (attempted: ${operationType}).`
|
|
2889
|
+
);
|
|
2890
|
+
}
|
|
2891
|
+
}
|
|
2892
|
+
// --------------------------------------------------------------------------
|
|
2893
|
+
// OPERATION METHODS
|
|
2894
|
+
// --------------------------------------------------------------------------
|
|
2895
|
+
/**
|
|
2896
|
+
* Rename an attribute.
|
|
2897
|
+
* The reverse operation will rename it back.
|
|
2898
|
+
*/
|
|
2899
|
+
renameAttribute(from, to) {
|
|
2900
|
+
this.assertNotTouched(from, "rename_attribute");
|
|
2901
|
+
this.touchedAttributes.add(from);
|
|
2902
|
+
this.operations.push({ type: "rename_attribute", from, to });
|
|
2903
|
+
return this;
|
|
2904
|
+
}
|
|
2905
|
+
/**
|
|
2906
|
+
* Change the type of an attribute.
|
|
2907
|
+
*
|
|
2908
|
+
* The `transform` option accepts a function — it is used only to signal
|
|
2909
|
+
* intent; the actual built-in transform is resolved from the target type.
|
|
2910
|
+
*/
|
|
2911
|
+
changeType(name, from, to, options) {
|
|
2912
|
+
this.assertNotTouched(name, "change_type");
|
|
2913
|
+
this.touchedAttributes.add(name);
|
|
2914
|
+
const transform = _optionalChain([options, 'optionalAccess', _37 => _37.transform]) ? resolveBuiltInTransform(to) : void 0;
|
|
2915
|
+
this.operations.push({ type: "change_type", name, from, to, transform });
|
|
2916
|
+
return this;
|
|
2917
|
+
}
|
|
2918
|
+
/**
|
|
2919
|
+
* Remove an attribute.
|
|
2920
|
+
*
|
|
2921
|
+
* The `backup_config` is intentionally left empty — the sync engine will
|
|
2922
|
+
* populate it from current DB state before applying the migration.
|
|
2923
|
+
*/
|
|
2924
|
+
removeAttribute(name) {
|
|
2925
|
+
this.assertNotTouched(name, "remove_attribute");
|
|
2926
|
+
this.touchedAttributes.add(name);
|
|
2927
|
+
this.operations.push({
|
|
2928
|
+
type: "remove_attribute",
|
|
2929
|
+
name,
|
|
2930
|
+
backup_config: {}
|
|
2931
|
+
});
|
|
2932
|
+
return this;
|
|
2933
|
+
}
|
|
2934
|
+
/**
|
|
2935
|
+
* Add a new attribute.
|
|
2936
|
+
* The reverse operation will remove it (using the attribute definition as backup).
|
|
2937
|
+
*/
|
|
2938
|
+
addAttribute(attribute) {
|
|
2939
|
+
this.assertNotTouched(attribute.name, "add_attribute");
|
|
2940
|
+
this.touchedAttributes.add(attribute.name);
|
|
2941
|
+
this.operations.push({ type: "add_attribute", attribute });
|
|
2942
|
+
return this;
|
|
2943
|
+
}
|
|
2944
|
+
/**
|
|
2945
|
+
* Update the configuration of an attribute (partial patch).
|
|
2946
|
+
*
|
|
2947
|
+
* The `from` config is intentionally left empty — the sync engine will
|
|
2948
|
+
* populate it from current DB state before applying the migration.
|
|
2949
|
+
*/
|
|
2950
|
+
updateConfig(name, config) {
|
|
2951
|
+
this.assertNotTouched(name, "update_config");
|
|
2952
|
+
this.touchedAttributes.add(name);
|
|
2953
|
+
this.operations.push({ type: "update_config", name, from: {}, to: config });
|
|
2954
|
+
return this;
|
|
2955
|
+
}
|
|
2956
|
+
// --------------------------------------------------------------------------
|
|
2957
|
+
// BUILD
|
|
2958
|
+
// --------------------------------------------------------------------------
|
|
2959
|
+
/**
|
|
2960
|
+
* Produce the final MigrationDefinition with auto-generated reverse operations.
|
|
2961
|
+
*/
|
|
2962
|
+
build() {
|
|
2963
|
+
const reverse_operations = [...this.operations].reverse().map((op) => reverseOperation(op));
|
|
2964
|
+
return {
|
|
2965
|
+
version: this.version,
|
|
2966
|
+
operations: [...this.operations],
|
|
2967
|
+
reverse_operations
|
|
2968
|
+
};
|
|
2969
|
+
}
|
|
2970
|
+
};
|
|
2971
|
+
|
|
2972
|
+
// src/builders/object-builder.ts
|
|
2837
2973
|
var ObjectBuilder = class {
|
|
2838
2974
|
constructor(config) {
|
|
2975
|
+
this._migrations = [];
|
|
2839
2976
|
this.validateName(config.name);
|
|
2840
2977
|
this.obj = {
|
|
2841
2978
|
name: config.name,
|
|
@@ -2932,6 +3069,37 @@ var ObjectBuilder = class {
|
|
|
2932
3069
|
this._labelExpression = template;
|
|
2933
3070
|
return this;
|
|
2934
3071
|
}
|
|
3072
|
+
/**
|
|
3073
|
+
* Declare a schema migration for this object.
|
|
3074
|
+
*
|
|
3075
|
+
* - `version` must be >= 2 (version 1 is implicit — no migration needed).
|
|
3076
|
+
* - Versions must be declared in sequential order without gaps or duplicates.
|
|
3077
|
+
* - The callback receives a MigrationBuilder; call `.build()` is not required
|
|
3078
|
+
* (the ObjectBuilder calls it internally).
|
|
3079
|
+
*
|
|
3080
|
+
* @example
|
|
3081
|
+
* ```typescript
|
|
3082
|
+
* object({ name: "contacts", label: "Contact" })
|
|
3083
|
+
* .migration(2, (m) => m.renameAttribute("firstName", "first_name"))
|
|
3084
|
+
* .migration(3, (m) => m.changeType("age", "text", "number"))
|
|
3085
|
+
* .labelExpression("{{ first_name }}")
|
|
3086
|
+
* ```
|
|
3087
|
+
*/
|
|
3088
|
+
migration(version, callback) {
|
|
3089
|
+
if (version < 2) {
|
|
3090
|
+
throw new Error(
|
|
3091
|
+
`[ObjectBuilder] Migration version must be >= 2 (version 1 is implicit). Got: ${version}`
|
|
3092
|
+
);
|
|
3093
|
+
}
|
|
3094
|
+
const isDuplicate = this._migrations.some((m) => m.version === version);
|
|
3095
|
+
if (isDuplicate) {
|
|
3096
|
+
throw new Error(`[ObjectBuilder] Duplicate migration version: ${version}`);
|
|
3097
|
+
}
|
|
3098
|
+
const builder = new MigrationBuilder(version);
|
|
3099
|
+
callback(builder);
|
|
3100
|
+
this._migrations.push(builder.build());
|
|
3101
|
+
return this;
|
|
3102
|
+
}
|
|
2935
3103
|
/**
|
|
2936
3104
|
* Build the final ObjectDefinition
|
|
2937
3105
|
* @throws Error if required fields are missing or invalid
|
|
@@ -2951,10 +3119,22 @@ The labelExpression defines how records are displayed in lists and relations.
|
|
|
2951
3119
|
\u2705 Example: .labelExpression("{{ firstName }} {{ lastName }}")`
|
|
2952
3120
|
);
|
|
2953
3121
|
}
|
|
3122
|
+
const sortedVersions = [...this._migrations].sort((a, b) => a.version - b.version);
|
|
3123
|
+
for (let i = 0; i < sortedVersions.length; i++) {
|
|
3124
|
+
const expected = i + 2;
|
|
3125
|
+
if (sortedVersions[i].version !== expected) {
|
|
3126
|
+
throw new Error(
|
|
3127
|
+
`[ObjectBuilder] Migration versions must be sequential starting at 2. Expected version ${expected}, got ${sortedVersions[i].version}.`
|
|
3128
|
+
);
|
|
3129
|
+
}
|
|
3130
|
+
}
|
|
3131
|
+
const schema_version = sortedVersions.length > 0 ? sortedVersions[sortedVersions.length - 1].version : 1;
|
|
2954
3132
|
return {
|
|
2955
3133
|
...this.obj,
|
|
2956
3134
|
pluralLabel: this._pluralLabel,
|
|
2957
|
-
labelExpression: this._labelExpression
|
|
3135
|
+
labelExpression: this._labelExpression,
|
|
3136
|
+
schema_version,
|
|
3137
|
+
migrations: sortedVersions
|
|
2958
3138
|
};
|
|
2959
3139
|
}
|
|
2960
3140
|
/**
|
|
@@ -3020,7 +3200,7 @@ var GroupBuilder = class {
|
|
|
3020
3200
|
*/
|
|
3021
3201
|
fields(...names) {
|
|
3022
3202
|
for (const name of names) {
|
|
3023
|
-
_optionalChain([this, 'access',
|
|
3203
|
+
_optionalChain([this, 'access', _38 => _38.data, 'access', _39 => _39.fields, 'optionalAccess', _40 => _40.push, 'call', _41 => _41({ attribute: name })]);
|
|
3024
3204
|
}
|
|
3025
3205
|
return this;
|
|
3026
3206
|
}
|
|
@@ -3029,7 +3209,7 @@ var GroupBuilder = class {
|
|
|
3029
3209
|
* @example .field("name", { span: 8, readOnly: true })
|
|
3030
3210
|
*/
|
|
3031
3211
|
field(attribute, options) {
|
|
3032
|
-
_optionalChain([this, 'access',
|
|
3212
|
+
_optionalChain([this, 'access', _42 => _42.data, 'access', _43 => _43.fields, 'optionalAccess', _44 => _44.push, 'call', _45 => _45({ attribute, ...options })]);
|
|
3033
3213
|
return this;
|
|
3034
3214
|
}
|
|
3035
3215
|
/**
|
|
@@ -3038,7 +3218,7 @@ var GroupBuilder = class {
|
|
|
3038
3218
|
* @example .attributeGroup({ id: "address", label: "Address", attributes: ["street", "city", "postal_code"], displayTemplate: "{street}, {city}" })
|
|
3039
3219
|
*/
|
|
3040
3220
|
attributeGroup(config, options) {
|
|
3041
|
-
_optionalChain([this, 'access',
|
|
3221
|
+
_optionalChain([this, 'access', _46 => _46.data, 'access', _47 => _47.fields, 'optionalAccess', _48 => _48.push, 'call', _49 => _49({ attributeGroup: config, ...options })]);
|
|
3042
3222
|
return this;
|
|
3043
3223
|
}
|
|
3044
3224
|
/**
|
|
@@ -3622,6 +3802,7 @@ var TabBuilder = class {
|
|
|
3622
3802
|
};
|
|
3623
3803
|
var DetailViewBuilder = class {
|
|
3624
3804
|
constructor(name, label) {
|
|
3805
|
+
this._version = 1;
|
|
3625
3806
|
this.validateName(name);
|
|
3626
3807
|
this.data = {
|
|
3627
3808
|
name,
|
|
@@ -3683,6 +3864,17 @@ var DetailViewBuilder = class {
|
|
|
3683
3864
|
this.data.metadata = value;
|
|
3684
3865
|
return this;
|
|
3685
3866
|
}
|
|
3867
|
+
/**
|
|
3868
|
+
* Set the schema version for this view definition.
|
|
3869
|
+
* Increment when making breaking changes to force client updates.
|
|
3870
|
+
* @param v - Version number (must be >= 1)
|
|
3871
|
+
* @default 1
|
|
3872
|
+
*/
|
|
3873
|
+
version(v) {
|
|
3874
|
+
if (v < 1) throw new Error("View version must be >= 1");
|
|
3875
|
+
this._version = v;
|
|
3876
|
+
return this;
|
|
3877
|
+
}
|
|
3686
3878
|
/**
|
|
3687
3879
|
* Configure a side panel with flat attribute fields displayed alongside tab content.
|
|
3688
3880
|
* Not available for modal layout.
|
|
@@ -3755,7 +3947,8 @@ var DetailViewBuilder = class {
|
|
|
3755
3947
|
type: "detail",
|
|
3756
3948
|
config,
|
|
3757
3949
|
default: this.data.default,
|
|
3758
|
-
metadata: this.data.metadata
|
|
3950
|
+
metadata: this.data.metadata,
|
|
3951
|
+
schema_version: this._version
|
|
3759
3952
|
};
|
|
3760
3953
|
}
|
|
3761
3954
|
/**
|
|
@@ -3784,6 +3977,7 @@ function view(name, label) {
|
|
|
3784
3977
|
}
|
|
3785
3978
|
var ListViewBuilder = class {
|
|
3786
3979
|
constructor(name, label) {
|
|
3980
|
+
this._version = 1;
|
|
3787
3981
|
this.validateName(name);
|
|
3788
3982
|
this.data = {
|
|
3789
3983
|
name,
|
|
@@ -3827,6 +4021,17 @@ var ListViewBuilder = class {
|
|
|
3827
4021
|
this.data.metadata = value;
|
|
3828
4022
|
return this;
|
|
3829
4023
|
}
|
|
4024
|
+
/**
|
|
4025
|
+
* Set the schema version for this view definition.
|
|
4026
|
+
* Increment when making breaking changes to force client updates.
|
|
4027
|
+
* @param v - Version number (must be >= 1)
|
|
4028
|
+
* @default 1
|
|
4029
|
+
*/
|
|
4030
|
+
version(v) {
|
|
4031
|
+
if (v < 1) throw new Error("View version must be >= 1");
|
|
4032
|
+
this._version = v;
|
|
4033
|
+
return this;
|
|
4034
|
+
}
|
|
3830
4035
|
/**
|
|
3831
4036
|
* Set base filters applied to ALL tabs (scoping, tenant, etc.)
|
|
3832
4037
|
* @example .baseFilter({ combinator: "and", rules: [{ attribute: "tenant", operator: "is", value: "acme" }] })
|
|
@@ -3922,7 +4127,8 @@ var ListViewBuilder = class {
|
|
|
3922
4127
|
type: "list",
|
|
3923
4128
|
config,
|
|
3924
4129
|
default: this.data.default,
|
|
3925
|
-
metadata: this.data.metadata
|
|
4130
|
+
metadata: this.data.metadata,
|
|
4131
|
+
schema_version: this._version
|
|
3926
4132
|
};
|
|
3927
4133
|
}
|
|
3928
4134
|
/**
|
|
@@ -4137,8 +4343,8 @@ var WorkflowFormRowBuilder = class {
|
|
|
4137
4343
|
id: `${this.rowData.id}-${slotId}-${attribute}`,
|
|
4138
4344
|
slotId,
|
|
4139
4345
|
attribute,
|
|
4140
|
-
label: _optionalChain([options, 'optionalAccess',
|
|
4141
|
-
required: _optionalChain([options, 'optionalAccess',
|
|
4346
|
+
label: _optionalChain([options, 'optionalAccess', _50 => _50.label]),
|
|
4347
|
+
required: _optionalChain([options, 'optionalAccess', _51 => _51.required])
|
|
4142
4348
|
};
|
|
4143
4349
|
this.rowData.fields.push(field);
|
|
4144
4350
|
return this;
|
|
@@ -4153,16 +4359,16 @@ var WorkflowFormRowBuilder = class {
|
|
|
4153
4359
|
* @param options - Optional label, required flag, and relation config
|
|
4154
4360
|
*/
|
|
4155
4361
|
relationField(slotId, attribute, options) {
|
|
4156
|
-
const relationConfig = _optionalChain([options, 'optionalAccess',
|
|
4157
|
-
visibleProperties: _optionalChain([options, 'optionalAccess',
|
|
4158
|
-
allowCreate: _optionalChain([options, 'optionalAccess',
|
|
4362
|
+
const relationConfig = _optionalChain([options, 'optionalAccess', _52 => _52.visibleProperties]) || _optionalChain([options, 'optionalAccess', _53 => _53.allowCreate]) !== void 0 ? {
|
|
4363
|
+
visibleProperties: _optionalChain([options, 'optionalAccess', _54 => _54.visibleProperties]),
|
|
4364
|
+
allowCreate: _optionalChain([options, 'optionalAccess', _55 => _55.allowCreate])
|
|
4159
4365
|
} : void 0;
|
|
4160
4366
|
const field = {
|
|
4161
4367
|
id: `${this.rowData.id}-${slotId}-${attribute}`,
|
|
4162
4368
|
slotId,
|
|
4163
4369
|
attribute,
|
|
4164
|
-
label: _optionalChain([options, 'optionalAccess',
|
|
4165
|
-
required: _optionalChain([options, 'optionalAccess',
|
|
4370
|
+
label: _optionalChain([options, 'optionalAccess', _56 => _56.label]),
|
|
4371
|
+
required: _optionalChain([options, 'optionalAccess', _57 => _57.required]),
|
|
4166
4372
|
relationConfig
|
|
4167
4373
|
};
|
|
4168
4374
|
this.rowData.fields.push(field);
|
|
@@ -4264,14 +4470,42 @@ var WorkflowFormBuilder = class {
|
|
|
4264
4470
|
this.rows.push(row);
|
|
4265
4471
|
return this;
|
|
4266
4472
|
}
|
|
4473
|
+
/**
|
|
4474
|
+
* Add a relation list row to the form.
|
|
4475
|
+
* Renders an editable list of related records for a given slot and relation.
|
|
4476
|
+
*
|
|
4477
|
+
* @param id - Unique row identifier
|
|
4478
|
+
* @param slotId - The slot containing the relation
|
|
4479
|
+
* @param relationName - The relation attribute name
|
|
4480
|
+
* @param options - Display and preload options
|
|
4481
|
+
*/
|
|
4482
|
+
relationListField(id, slotId, relationName, options = {}) {
|
|
4483
|
+
this.rowOrder++;
|
|
4484
|
+
const row = {
|
|
4485
|
+
id,
|
|
4486
|
+
order: this.rowOrder,
|
|
4487
|
+
type: "relationList",
|
|
4488
|
+
slotId,
|
|
4489
|
+
relationName,
|
|
4490
|
+
preload: _nullishCoalesce(options.preload, () => ( true)),
|
|
4491
|
+
columns: _nullishCoalesce(options.columns, () => ( [])),
|
|
4492
|
+
qualifiersInline: _nullishCoalesce(options.qualifiersInline, () => ( true)),
|
|
4493
|
+
modalFields: _nullishCoalesce(options.modalFields, () => ( "all")),
|
|
4494
|
+
label: options.label
|
|
4495
|
+
};
|
|
4496
|
+
this.rows.push(row);
|
|
4497
|
+
return this;
|
|
4498
|
+
}
|
|
4267
4499
|
/**
|
|
4268
4500
|
* Set the next node and complete the form definition
|
|
4269
4501
|
*/
|
|
4270
4502
|
next(nodeId) {
|
|
4271
|
-
const hasFieldRows = this.rows.some(
|
|
4503
|
+
const hasFieldRows = this.rows.some(
|
|
4504
|
+
(r) => !r.type || r.type === "fields" || r.type === "relationList"
|
|
4505
|
+
);
|
|
4272
4506
|
if (!hasFieldRows) {
|
|
4273
4507
|
throw new Error(
|
|
4274
|
-
`[WorkflowBuilder] Form "${this.nodeId}" has no field rows. Use .row() to add fields.`
|
|
4508
|
+
`[WorkflowBuilder] Form "${this.nodeId}" has no field rows. Use .row() or .relationListField() to add fields.`
|
|
4275
4509
|
);
|
|
4276
4510
|
}
|
|
4277
4511
|
return this.workflowBuilder._addFormNode({
|
|
@@ -4482,52 +4716,48 @@ var WorkflowAssignBuilder = class {
|
|
|
4482
4716
|
var WorkflowAIBuilder = class {
|
|
4483
4717
|
/** @internal */
|
|
4484
4718
|
constructor(workflowBuilder, nodeId, label) {
|
|
4485
|
-
this.
|
|
4719
|
+
this.agentConfig = null;
|
|
4486
4720
|
this.workflowBuilder = workflowBuilder;
|
|
4487
4721
|
this.nodeId = nodeId;
|
|
4488
4722
|
this.label = label;
|
|
4489
4723
|
}
|
|
4490
|
-
/**
|
|
4491
|
-
* Set the description for this AI node
|
|
4492
|
-
*/
|
|
4493
4724
|
describe(description) {
|
|
4494
4725
|
this.nodeDescription = description;
|
|
4495
4726
|
return this;
|
|
4496
4727
|
}
|
|
4497
|
-
/**
|
|
4498
|
-
* Set a custom timeout (default: 120_000ms)
|
|
4499
|
-
*/
|
|
4500
4728
|
timeout(ms) {
|
|
4501
4729
|
this.nodeTimeoutMs = ms;
|
|
4502
4730
|
return this;
|
|
4503
4731
|
}
|
|
4504
4732
|
/**
|
|
4505
|
-
* Configure
|
|
4506
|
-
|
|
4507
|
-
|
|
4508
|
-
|
|
4509
|
-
|
|
4510
|
-
|
|
4511
|
-
|
|
4512
|
-
|
|
4513
|
-
|
|
4514
|
-
|
|
4515
|
-
|
|
4516
|
-
|
|
4517
|
-
|
|
4518
|
-
|
|
4519
|
-
|
|
4520
|
-
|
|
4521
|
-
}
|
|
4733
|
+
* Configure the agent for this node.
|
|
4734
|
+
*
|
|
4735
|
+
* @param definitionIdOrConfig - Either an existing agent definition ID (string),
|
|
4736
|
+
* or an inline agent config object.
|
|
4737
|
+
* @param options - Additional options merged on top (only used when first arg is a string)
|
|
4738
|
+
*/
|
|
4739
|
+
agent(definitionIdOrConfig, options) {
|
|
4740
|
+
if (typeof definitionIdOrConfig === "string") {
|
|
4741
|
+
this.agentConfig = {
|
|
4742
|
+
// Default to async when referencing a definition by ID
|
|
4743
|
+
mode: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _58 => _58.mode]), () => ( "async")),
|
|
4744
|
+
definitionId: definitionIdOrConfig,
|
|
4745
|
+
instructions: _optionalChain([options, 'optionalAccess', _59 => _59.instructions]),
|
|
4746
|
+
inputSlotIds: _optionalChain([options, 'optionalAccess', _60 => _60.inputSlotIds]),
|
|
4747
|
+
targetSlotIds: _optionalChain([options, 'optionalAccess', _61 => _61.targetSlotIds])
|
|
4748
|
+
};
|
|
4749
|
+
} else {
|
|
4750
|
+
this.agentConfig = definitionIdOrConfig;
|
|
4751
|
+
}
|
|
4522
4752
|
return this;
|
|
4523
4753
|
}
|
|
4524
4754
|
/**
|
|
4525
4755
|
* Set the next node and complete the AI node definition
|
|
4526
4756
|
*/
|
|
4527
4757
|
next(nodeId) {
|
|
4528
|
-
if (!this.
|
|
4758
|
+
if (!this.agentConfig) {
|
|
4529
4759
|
throw new Error(
|
|
4530
|
-
`[WorkflowBuilder] AI node "${this.nodeId}" must have an
|
|
4760
|
+
`[WorkflowBuilder] AI node "${this.nodeId}" must have an agent config. Call .agent() first.`
|
|
4531
4761
|
);
|
|
4532
4762
|
}
|
|
4533
4763
|
return this.workflowBuilder._addNode({
|
|
@@ -4535,9 +4765,9 @@ var WorkflowAIBuilder = class {
|
|
|
4535
4765
|
id: this.nodeId,
|
|
4536
4766
|
label: this.label,
|
|
4537
4767
|
description: this.nodeDescription,
|
|
4538
|
-
action: this.action,
|
|
4539
4768
|
timeoutMs: this.nodeTimeoutMs,
|
|
4540
|
-
next: nodeId
|
|
4769
|
+
next: nodeId,
|
|
4770
|
+
...this.agentConfig
|
|
4541
4771
|
});
|
|
4542
4772
|
}
|
|
4543
4773
|
};
|
|
@@ -4661,7 +4891,7 @@ var WorkflowBuilder = class {
|
|
|
4661
4891
|
* @param options - Slot configuration
|
|
4662
4892
|
*/
|
|
4663
4893
|
slot(id, objectName, options) {
|
|
4664
|
-
if (_optionalChain([this, 'access',
|
|
4894
|
+
if (_optionalChain([this, 'access', _62 => _62.data, 'access', _63 => _63.slots, 'optionalAccess', _64 => _64.some, 'call', _65 => _65((s) => s.id === id)])) {
|
|
4665
4895
|
throw new Error(`[WorkflowBuilder] Duplicate slot id: "${id}"`);
|
|
4666
4896
|
}
|
|
4667
4897
|
const slot = {
|
|
@@ -4672,7 +4902,7 @@ var WorkflowBuilder = class {
|
|
|
4672
4902
|
color: options.color,
|
|
4673
4903
|
icon: options.icon
|
|
4674
4904
|
};
|
|
4675
|
-
_optionalChain([this, 'access',
|
|
4905
|
+
_optionalChain([this, 'access', _66 => _66.data, 'access', _67 => _67.slots, 'optionalAccess', _68 => _68.push, 'call', _69 => _69(slot)]);
|
|
4676
4906
|
return this;
|
|
4677
4907
|
}
|
|
4678
4908
|
// ============================================================================
|
|
@@ -4712,9 +4942,7 @@ var WorkflowBuilder = class {
|
|
|
4712
4942
|
assign(id, label, targetSlotId) {
|
|
4713
4943
|
return new WorkflowAssignBuilder(this, id, label, targetSlotId);
|
|
4714
4944
|
}
|
|
4715
|
-
/**
|
|
4716
|
-
* Define an AI node (run an AI action like document generation or code execution)
|
|
4717
|
-
*/
|
|
4945
|
+
/** Define an AI agent node (sync or async, inline or referenced from a definition) */
|
|
4718
4946
|
ai(id, label) {
|
|
4719
4947
|
return new WorkflowAIBuilder(this, id, label);
|
|
4720
4948
|
}
|
|
@@ -4805,7 +5033,7 @@ var WorkflowBuilder = class {
|
|
|
4805
5033
|
}
|
|
4806
5034
|
}
|
|
4807
5035
|
validateSlotReferences() {
|
|
4808
|
-
const slotIds = _nullishCoalesce(_optionalChain([this, 'access',
|
|
5036
|
+
const slotIds = _nullishCoalesce(_optionalChain([this, 'access', _70 => _70.data, 'access', _71 => _71.slots, 'optionalAccess', _72 => _72.reduce, 'call', _73 => _73((set, s) => set.add(s.id), /* @__PURE__ */ new Set())]), () => ( /* @__PURE__ */ new Set()));
|
|
4809
5037
|
for (const node of Object.values(_nullishCoalesce(this.data.nodes, () => ( {})))) {
|
|
4810
5038
|
for (const slotId of getNodeSlotIds(node)) {
|
|
4811
5039
|
if (!slotIds.has(slotId)) {
|
|
@@ -4938,7 +5166,7 @@ var BaseFlagBuilder = class {
|
|
|
4938
5166
|
* @throws {Error} If label is not set or is whitespace-only
|
|
4939
5167
|
*/
|
|
4940
5168
|
build() {
|
|
4941
|
-
if (!_optionalChain([this, 'access',
|
|
5169
|
+
if (!_optionalChain([this, 'access', _74 => _74.flag, 'access', _75 => _75.label, 'optionalAccess', _76 => _76.trim, 'call', _77 => _77()])) {
|
|
4942
5170
|
throw new Error(
|
|
4943
5171
|
`Flag "${this.flag.name}" must have a label. Use .label("Human-readable label").`
|
|
4944
5172
|
);
|
|
@@ -5153,7 +5381,7 @@ var FlagRegistry = class {
|
|
|
5153
5381
|
* @returns The default value or undefined if flag not found
|
|
5154
5382
|
*/
|
|
5155
5383
|
getDefaultValue(name) {
|
|
5156
|
-
return _optionalChain([this, 'access',
|
|
5384
|
+
return _optionalChain([this, 'access', _78 => _78.get, 'call', _79 => _79(name), 'optionalAccess', _80 => _80.defaultValue]);
|
|
5157
5385
|
}
|
|
5158
5386
|
/**
|
|
5159
5387
|
* Get a map of all flag names to their default values.
|
|
@@ -5199,7 +5427,7 @@ var FlagService = class {
|
|
|
5199
5427
|
constructor(options) {
|
|
5200
5428
|
this.repository = options.repository;
|
|
5201
5429
|
this.registry = options.registry;
|
|
5202
|
-
this.staticDefaults = new Map(_nullishCoalesce(_optionalChain([options, 'access',
|
|
5430
|
+
this.staticDefaults = new Map(_nullishCoalesce(_optionalChain([options, 'access', _81 => _81.staticDefaults, 'optionalAccess', _82 => _82.map, 'call', _83 => _83((d) => [d.name, d.value])]), () => ( [])));
|
|
5203
5431
|
}
|
|
5204
5432
|
/**
|
|
5205
5433
|
* Resolve all flags for the current context.
|
|
@@ -5277,7 +5505,7 @@ var FlagService = class {
|
|
|
5277
5505
|
`Flag "${flagName}" does not allow ${level}-level overrides. Allowed levels: ${flag.allowedLevels.join(", ")}`
|
|
5278
5506
|
);
|
|
5279
5507
|
}
|
|
5280
|
-
if (_optionalChain([flag, 'optionalAccess',
|
|
5508
|
+
if (_optionalChain([flag, 'optionalAccess', _84 => _84.system])) {
|
|
5281
5509
|
throw new Error(`Flag "${flagName}" is a system flag and cannot be overridden via API.`);
|
|
5282
5510
|
}
|
|
5283
5511
|
await this.repository.setOverride({
|
|
@@ -5328,7 +5556,7 @@ var FlagService = class {
|
|
|
5328
5556
|
*/
|
|
5329
5557
|
resolveValue(flagName, overrides, context) {
|
|
5330
5558
|
const flag = this.registry.get(flagName);
|
|
5331
|
-
const allowedLevels = _nullishCoalesce(_optionalChain([flag, 'optionalAccess',
|
|
5559
|
+
const allowedLevels = _nullishCoalesce(_optionalChain([flag, 'optionalAccess', _85 => _85.allowedLevels]), () => ( ["global", "tenant", "user"]));
|
|
5332
5560
|
if (context.userId && allowedLevels.includes("user")) {
|
|
5333
5561
|
const userOverride = overrides.user.find((o) => o.flagName === flagName);
|
|
5334
5562
|
if (userOverride) return userOverride.value;
|
|
@@ -5344,14 +5572,14 @@ var FlagService = class {
|
|
|
5344
5572
|
if (this.staticDefaults.has(flagName)) {
|
|
5345
5573
|
return this.staticDefaults.get(flagName);
|
|
5346
5574
|
}
|
|
5347
|
-
return _optionalChain([flag, 'optionalAccess',
|
|
5575
|
+
return _optionalChain([flag, 'optionalAccess', _86 => _86.defaultValue]);
|
|
5348
5576
|
}
|
|
5349
5577
|
/**
|
|
5350
5578
|
* Resolve a flag value with source information.
|
|
5351
5579
|
*/
|
|
5352
5580
|
resolveWithSource(flagName, overrides, context) {
|
|
5353
5581
|
const flag = this.registry.get(flagName);
|
|
5354
|
-
const allowedLevels = _nullishCoalesce(_optionalChain([flag, 'optionalAccess',
|
|
5582
|
+
const allowedLevels = _nullishCoalesce(_optionalChain([flag, 'optionalAccess', _87 => _87.allowedLevels]), () => ( ["global", "tenant", "user"]));
|
|
5355
5583
|
if (context.userId && allowedLevels.includes("user")) {
|
|
5356
5584
|
const userOverride = overrides.user.find((o) => o.flagName === flagName);
|
|
5357
5585
|
if (userOverride) {
|
|
@@ -5393,7 +5621,7 @@ var FlagService = class {
|
|
|
5393
5621
|
}
|
|
5394
5622
|
return {
|
|
5395
5623
|
name: flagName,
|
|
5396
|
-
value: _nullishCoalesce(_optionalChain([flag, 'optionalAccess',
|
|
5624
|
+
value: _nullishCoalesce(_optionalChain([flag, 'optionalAccess', _88 => _88.defaultValue]), () => ( void 0)),
|
|
5397
5625
|
source: "default"
|
|
5398
5626
|
};
|
|
5399
5627
|
}
|
|
@@ -5453,7 +5681,7 @@ Native objects must have system=true. Did you forget to call .system() in your b
|
|
|
5453
5681
|
const existing = this.objects.get(object2.name);
|
|
5454
5682
|
throw new Error(
|
|
5455
5683
|
`[NativeObjectRegistry] Duplicate object name "${object2.name}":
|
|
5456
|
-
- Existing: "${_optionalChain([existing, 'optionalAccess',
|
|
5684
|
+
- Existing: "${_optionalChain([existing, 'optionalAccess', _89 => _89.label])}" (id: ${_optionalChain([existing, 'optionalAccess', _90 => _90.id])})
|
|
5457
5685
|
- New: "${object2.label}" (id: ${object2.id})
|
|
5458
5686
|
Please use unique names for each native object.`
|
|
5459
5687
|
);
|
|
@@ -5809,7 +6037,8 @@ function generateDefaultDetailView(object2, options = {}) {
|
|
|
5809
6037
|
object: object2.name,
|
|
5810
6038
|
type: "detail",
|
|
5811
6039
|
config,
|
|
5812
|
-
default: true
|
|
6040
|
+
default: true,
|
|
6041
|
+
schema_version: 1
|
|
5813
6042
|
};
|
|
5814
6043
|
}
|
|
5815
6044
|
function generateDefaultListView(object2, options = {}) {
|
|
@@ -5834,7 +6063,8 @@ function generateDefaultListView(object2, options = {}) {
|
|
|
5834
6063
|
object: object2.name,
|
|
5835
6064
|
type: "list",
|
|
5836
6065
|
config,
|
|
5837
|
-
default: true
|
|
6066
|
+
default: true,
|
|
6067
|
+
schema_version: 1
|
|
5838
6068
|
};
|
|
5839
6069
|
}
|
|
5840
6070
|
function generateFallbackView(object2, type, options = {}) {
|
|
@@ -6315,5 +6545,4 @@ function isViewCustomized(view2, object2) {
|
|
|
6315
6545
|
|
|
6316
6546
|
|
|
6317
6547
|
|
|
6318
|
-
|
|
6319
|
-
exports.AIActionConfigSchema = AIActionConfigSchema; exports.AINodeSchema = AINodeSchema; exports.ALL_ACTIONS = ALL_ACTIONS; exports.ALL_SYSTEM_RESOURCES = ALL_SYSTEM_RESOURCES; exports.ActivityTabConfig = ActivityTabConfig; exports.AssignNodeSchema = AssignNodeSchema; exports.AssignmentMappingSchema = AssignmentMappingSchema; exports.AssignmentSourceSchema = AssignmentSourceSchema; exports.AttributeInUseError = AttributeInUseError; exports.AttributeNotFoundError = AttributeNotFoundError; exports.AuthMethodSchema = AuthMethodSchema; exports.BEHAVIOR_PROPERTIES = BEHAVIOR_PROPERTIES; exports.CodeExecutionActionSchema = CodeExecutionActionSchema; exports.ConcurrentModificationError = ConcurrentModificationError; exports.ConditionGroupSchema = ConditionGroupSchema; exports.ConditionNodeSchema = ConditionNodeSchema; exports.ConditionOperatorSchema = ConditionOperatorSchema; exports.ConditionRuleSchema = ConditionRuleSchema; exports.CreateShareInputSchema = CreateShareInputSchema; exports.CustomTabConfig = CustomTabConfig; exports.DEFAULT_LABEL_FALLBACK = DEFAULT_LABEL_FALLBACK; exports.DEFAULT_ROLES = DEFAULT_ROLES; exports.DEFAULT_ROLE_DESCRIPTIONS = DEFAULT_ROLE_DESCRIPTIONS; exports.DEFAULT_ROLE_FOR_NEW_USERS = DEFAULT_ROLE_FOR_NEW_USERS; exports.DEFAULT_ROLE_LABELS = DEFAULT_ROLE_LABELS; exports.DEFAULT_ROLE_PERMISSIONS = DEFAULT_ROLE_PERMISSIONS; exports.DEFAULT_THEME = DEFAULT_THEME; exports.DEFAULT_VALIDATION_MESSAGES = _chunk7QUI6TSOjs.DEFAULT_VALIDATION_MESSAGES; exports.DetailViewBuilder = DetailViewBuilder; exports.DocumentGenerationActionSchema = DocumentGenerationActionSchema; exports.DocumentsTabConfig = DocumentsTabConfig; exports.DuplicateError = DuplicateError; exports.EMPTY_VALUE_PLACEHOLDER = EMPTY_VALUE_PLACEHOLDER; exports.EndNodeSchema = EndNodeSchema; exports.FORBIDDEN_PROPERTY_TYPES = FORBIDDEN_PROPERTY_TYPES; exports.FileNotFoundError = FileNotFoundError; exports.FlagRegistry = FlagRegistry; exports.FlagService = FlagService; exports.FlowRowFieldSchema = FlowRowFieldSchema; exports.FlowRowSchema = FlowRowSchema; exports.FlowsTabConfig = FlowsTabConfig; exports.ForbiddenError = ForbiddenError; exports.FormFieldRefSchema = FormFieldRefSchema; exports.FormNodeSchema = FormNodeSchema; exports.GroupBuilder = GroupBuilder; exports.IDENTITY_PROPERTIES = IDENTITY_PROPERTIES; exports.ListViewBuilder = ListViewBuilder; exports.ListViewTabConfigBuilder = ListViewTabConfigBuilder; exports.NON_SORTABLE_TYPES = NON_SORTABLE_TYPES; exports.NO_VALUE_OPERATORS = NO_VALUE_OPERATORS; exports.NodePositionSchema = NodePositionSchema; exports.NoopGeocodingAdapter = NoopGeocodingAdapter; exports.NotFoundError = NotFoundError; exports.NotSystemObjectError = NotSystemObjectError; exports.OPERATORS_BY_TYPE = OPERATORS_BY_TYPE; exports.ObjectBuilder = ObjectBuilder; exports.ObjectNotFoundError = ObjectNotFoundError; exports.ObjectReferencedError = ObjectReferencedError; exports.PRESENTATION_PROPERTIES = PRESENTATION_PROPERTIES; exports.PolicyViolationError = PolicyViolationError; exports.ProtectedResourceError = ProtectedResourceError; exports.ProtectedRoleError = ProtectedRoleError; exports.RELATION_TARGET_ANY = RELATION_TARGET_ANY; exports.RESERVED_ATTRIBUTE_NAMES = RESERVED_ATTRIBUTE_NAMES; exports.RecordNotFoundError = RecordNotFoundError; exports.RecordReferencedError = RecordReferencedError; exports.RelationGroupBuilder = RelationGroupBuilder; exports.RichtextTabConfig = RichtextTabConfig; exports.RoleNotFoundError = RoleNotFoundError; exports.SYSTEM_ATTRIBUTES = SYSTEM_ATTRIBUTES; exports.SYSTEM_FIELD_NAMES = SYSTEM_FIELD_NAMES; exports.SYSTEM_RESOURCES = SYSTEM_RESOURCES; exports.SYSTEM_RESOURCE_LABELS = SYSTEM_RESOURCE_LABELS; exports.SchemaError = SchemaError; exports.SchemaErrorCode = SchemaErrorCode; exports.ShareStatusSchema = ShareStatusSchema; exports.SlotModeSchema = SlotModeSchema; exports.StartNodeSchema = StartNodeSchema; exports.SyncError = SyncError; exports.TabBuilder = TabBuilder; exports.TableTabConfig = TableTabConfig; exports.ThemeColorsSchema = ThemeColorsSchema; exports.ThemeLogoSchema = ThemeLogoSchema; exports.USER_STATUSES = USER_STATUSES; exports.UserProfileNotFoundError = UserProfileNotFoundError; exports.ValidationError = ValidationError; exports.ViewBuilder = ViewBuilder; exports.ViewportSchema = ViewportSchema; exports.WorkflowAIBuilder = WorkflowAIBuilder; exports.WorkflowAssignBuilder = WorkflowAssignBuilder; exports.WorkflowBuilder = WorkflowBuilder; exports.WorkflowConditionBuilder = WorkflowConditionBuilder; exports.WorkflowConfigSchema = WorkflowConfigSchema; exports.WorkflowDefinitionSchema = WorkflowDefinitionSchema; exports.WorkflowEndBuilder = WorkflowEndBuilder; exports.WorkflowFormBuilder = WorkflowFormBuilder; exports.WorkflowFormRowBuilder = WorkflowFormRowBuilder; exports.WorkflowLayoutSchema = WorkflowLayoutSchema; exports.WorkflowNodeSchema = WorkflowNodeSchema; exports.WorkflowShareSchema = WorkflowShareSchema; exports.WorkflowSimpleFormBuilder = WorkflowSimpleFormBuilder; exports.WorkflowSlotSchema = WorkflowSlotSchema; exports.WorkflowStartBuilder = WorkflowStartBuilder; exports.WorkflowStatusSchema = WorkflowStatusSchema; exports.WorkflowThemeSchema = WorkflowThemeSchema; exports.ZONE_CONFIG = ZONE_CONFIG; exports.ZONE_ORDER = ZONE_ORDER; exports.accessLevelToActions = accessLevelToActions; exports.actionsToAccessLevel = actionsToAccessLevel; exports.and = and; exports.applyRelationProps = applyRelationProps; exports.asTenantId = _chunkE6XO2STSjs.asTenantId; exports.asUserId = _chunkE6XO2STSjs.asUserId; exports.assignNodeZones = assignNodeZones; exports.attributeConfigSchemas = _chunk7QUI6TSOjs.attributeConfigSchemas; exports.booleanFlag = booleanFlag; exports.canAccessNode = canAccessNode; exports.canResumeInstance = canResumeInstance; exports.checkbox = checkbox; exports.checkboxConfigSchema = _chunk7QUI6TSOjs.checkboxConfigSchema; exports.computeRecordStatus = _chunk7QUI6TSOjs.computeRecordStatus; exports.createAttributeValidator = _chunk7QUI6TSOjs.createAttributeValidator; exports.createCheckboxValidator = _chunk7QUI6TSOjs.createCheckboxValidator; exports.createCurrencyValidator = _chunk7QUI6TSOjs.createCurrencyValidator; exports.createDateValidator = _chunk7QUI6TSOjs.createDateValidator; exports.createDraftValidator = _chunk7QUI6TSOjs.createDraftValidator; exports.createEmptyContext = createEmptyContext; exports.createFileValidator = _chunk7QUI6TSOjs.createFileValidator; exports.createFlagRegistry = createFlagRegistry; exports.createFlagService = createFlagService; exports.createFormAttributeValidator = _chunk7QUI6TSOjs.createFormAttributeValidator; exports.createFormulaValidator = _chunk7QUI6TSOjs.createFormulaValidator; exports.createLocationValidator = _chunk7QUI6TSOjs.createLocationValidator; exports.createMultiRelationValidator = _chunk7QUI6TSOjs.createMultiRelationValidator; exports.createMultiselectValidator = _chunk7QUI6TSOjs.createMultiselectValidator; exports.createNumberValidator = _chunk7QUI6TSOjs.createNumberValidator; exports.createObjectValidator = _chunk7QUI6TSOjs.createObjectValidator; exports.createPhoneValidator = _chunk7QUI6TSOjs.createPhoneValidator; exports.createRatingValidator = _chunk7QUI6TSOjs.createRatingValidator; exports.createRelationValidator = _chunk7QUI6TSOjs.createRelationValidator; exports.createRichtextValidator = _chunk7QUI6TSOjs.createRichtextValidator; exports.createRollupValidator = _chunk7QUI6TSOjs.createRollupValidator; exports.createSelectValidator = _chunk7QUI6TSOjs.createSelectValidator; exports.createSingleRelationValidator = _chunk7QUI6TSOjs.createSingleRelationValidator; exports.createStartTransition = createStartTransition; exports.createStatusValidator = _chunk7QUI6TSOjs.createStatusValidator; exports.createTextAreaValidator = _chunk7QUI6TSOjs.createTextAreaValidator; exports.createTextValidator = _chunk7QUI6TSOjs.createTextValidator; exports.createUserValidator = _chunk7QUI6TSOjs.createUserValidator; exports.currency = currency; exports.currencyConfigSchema = _chunk7QUI6TSOjs.currencyConfigSchema; exports.date = date; exports.dateConfigSchema = _chunk7QUI6TSOjs.dateConfigSchema; exports.deepEqual = _chunkE6XO2STSjs.deepEqual; exports.detailView = detailView; exports.document = document; exports.documentConfigSchema = _chunk7QUI6TSOjs.documentConfigSchema; exports.eq = eq; exports.extractAttributeNames = extractAttributeNames; exports.file = file; exports.fileConfigSchema = _chunk7QUI6TSOjs.fileConfigSchema; exports.flagRegistry = flagRegistry; exports.formatAttributeValue = formatAttributeValue; exports.formatPhoneForDisplay = _chunk7QUI6TSOjs.formatPhoneForDisplay; exports.formatZodErrors = _chunk7QUI6TSOjs.formatZodErrors; exports.formula = formula; exports.formulaConfigSchema = _chunk7QUI6TSOjs.formulaConfigSchema; exports.generateCssVariables = generateCssVariables; exports.generateDefaultDetailView = generateDefaultDetailView; exports.generateDefaultListView = generateDefaultListView; exports.generateFallbackView = generateFallbackView; exports.generateId = _chunkE6XO2STSjs.generateId; exports.generatePrefixedId = _chunkE6XO2STSjs.generatePrefixedId; exports.generateTemplateName = _chunkE6XO2STSjs.generateTemplateName; exports.getActiveTab = getActiveTab; exports.getAttributeConfigSchema = _chunk7QUI6TSOjs.getAttributeConfigSchema; exports.getContextValue = getContextValue; exports.getErrorMessage = getErrorMessage; exports.getFormFieldRefs = getFormFieldRefs; exports.getMissingRequiredAttributes = _chunk7QUI6TSOjs.getMissingRequiredAttributes; exports.getNodeOutputs = getNodeOutputs; exports.getNodeSlotIds = getNodeSlotIds; exports.getRollupFilterOperators = getRollupFilterOperators; exports.getSystemAttributeList = getSystemAttributeList; exports.getZoneAllowedTypes = getZoneAllowedTypes; exports.group = group; exports.groupNodesByZone = groupNodesByZone; exports.hasOptions = hasOptions; exports.hasProperties = hasProperties; exports.inValues = inValues; exports.indexBy = _chunkE6XO2STSjs.indexBy; exports.inferInverseCardinality = inferInverseCardinality; exports.isAINode = isAINode; exports.isActivityTab = isActivityTab; exports.isAdvancedFormNode = isAdvancedFormNode; exports.isAssignNode = isAssignNode; exports.isAttributeSortable = isAttributeSortable; exports.isBehaviorProperty = isBehaviorProperty; exports.isBilateralRelation = isBilateralRelation; exports.isCalendarView = isCalendarView; exports.isConditionGroup = isConditionGroup; exports.isConditionNode = isConditionNode; exports.isConditionRule = isConditionRule; exports.isCustomTab = isCustomTab; exports.isDefaultRole = isDefaultRole; exports.isDetailView = isDetailView; exports.isDocumentsTab = isDocumentsTab; exports.isEmpty = isEmpty2; exports.isEndNode = isEndNode; exports.isFieldGroup = isFieldGroup; exports.isFlowDefinition = isFlowDefinition; exports.isFlowFieldsRow = isFlowFieldsRow; exports.isFlowPublished = isFlowPublished; exports.isFlowsTab = isFlowsTab; exports.isForbiddenError = isForbiddenError; exports.isFormFieldsRow = isFormFieldsRow; exports.isFormNode = isFormNode; exports.isFormTab = isFormTab; exports.isGalleryView = isGalleryView; exports.isGrantExpired = isGrantExpired; exports.isGrantRevoked = isGrantRevoked; exports.isGrantValid = isGrantValid; exports.isIdentityProperty = isIdentityProperty; exports.isInstanceEvent = isInstanceEvent; exports.isInstanceTerminal = isInstanceTerminal; exports.isInstanceWaiting = isInstanceWaiting; exports.isInverseSourceTab = isInverseSourceTab; exports.isInvitationAccepted = isInvitationAccepted; exports.isInvitationExpired = isInvitationExpired; exports.isInvitationOrGrantEvent = isInvitationOrGrantEvent; exports.isInvitationValid = isInvitationValid; exports.isLabelExpression = isLabelExpression; exports.isLayoutRow = isLayoutRow; exports.isListView = isListView; exports.isNoValueOperator = isNoValueOperator; exports.isNodeEvent = isNodeEvent; exports.isNotEmpty = isNotEmpty2; exports.isNotFoundError = isNotFoundError; exports.isPresentationProperty = isPresentationProperty; exports.isProtectedResourceError = isProtectedResourceError; exports.isRecordComplete = _chunk7QUI6TSOjs.isRecordComplete; exports.isRelationGroup = isRelationGroup; exports.isRelationSourceTab = isRelationSourceTab; exports.isRichtextTab = isRichtextTab; exports.isSchemaError = isSchemaError; exports.isSimpleFormNode = isSimpleFormNode; exports.isStartNode = isStartNode; exports.isSystemAttribute = isSystemAttribute; exports.isSystemAttributeObject = isSystemAttributeObject; exports.isSystemFlow = isSystemFlow; exports.isSystemWorkflow = isSystemWorkflow; exports.isTableTab = isTableTab; exports.isTimelineView = isTimelineView; exports.isTokenRevoked = isTokenRevoked; exports.isUniversalRelation = isUniversalRelation; exports.isValidationError = isValidationError; exports.isViewCustomized = isViewCustomized; exports.isWorkflowDefinition = isWorkflowDefinition; exports.isWorkflowPublished = isWorkflowPublished; exports.jsonFlag = jsonFlag; exports.listView = listView; exports.location = location; exports.locationConfigSchema = _chunk7QUI6TSOjs.locationConfigSchema; exports.mergeWithDefaults = mergeWithDefaults; exports.multiselect = multiselect; exports.multiselectConfigSchema = _chunk7QUI6TSOjs.multiselectConfigSchema; exports.neq = neq; exports.nodeTypeRegistry = nodeTypeRegistry; exports.normalizePhoneNumber = _chunk7QUI6TSOjs.normalizePhoneNumber; exports.number = number; exports.numberConfigSchema = _chunk7QUI6TSOjs.numberConfigSchema; exports.numberFlag = numberFlag; exports.object = object; exports.or = or; exports.parseAttributeConfig = _chunk7QUI6TSOjs.parseAttributeConfig; exports.parseRawPhoneInput = _chunk7QUI6TSOjs.parseRawPhoneInput; exports.phone = phone; exports.phoneConfigSchema = _chunk7QUI6TSOjs.phoneConfigSchema; exports.rating = rating; exports.ratingConfigSchema = _chunk7QUI6TSOjs.ratingConfigSchema; exports.registry = registry; exports.relation = relation; exports.relationConfigSchema = _chunk7QUI6TSOjs.relationConfigSchema; exports.relationGroup = relationGroup; exports.renderLabelExpression = renderLabelExpression; exports.resetViewToDefault = resetViewToDefault; exports.richtext = richtext; exports.richtextConfigSchema = _chunk7QUI6TSOjs.richtextConfigSchema; exports.rollup = rollup; exports.rollupConfigSchema = _chunk7QUI6TSOjs.rollupConfigSchema; exports.safeParseAttributeConfig = _chunk7QUI6TSOjs.safeParseAttributeConfig; exports.select = select; exports.selectConfigSchema = _chunk7QUI6TSOjs.selectConfigSchema; exports.setContextValue = setContextValue; exports.setNodeNext = setNodeNext; exports.slugify = _chunkE6XO2STSjs.slugify; exports.status = status; exports.statusConfigSchema = _chunk7QUI6TSOjs.statusConfigSchema; exports.stringFlag = stringFlag; exports.text = text; exports.textConfigSchema = _chunk7QUI6TSOjs.textConfigSchema; exports.textarea = textarea; exports.textareaConfigSchema = _chunk7QUI6TSOjs.textareaConfigSchema; exports.toUndefinedIfEmpty = toUndefinedIfEmpty; exports.user = user; exports.userConfigSchema = _chunk7QUI6TSOjs.userConfigSchema; exports.validateAttribute = _chunk7QUI6TSOjs.validateAttribute; exports.validateAttributeConfig = _chunk7QUI6TSOjs.validateAttributeConfig; exports.validateDraft = _chunk7QUI6TSOjs.validateDraft; exports.validateDraftOrThrow = _chunk7QUI6TSOjs.validateDraftOrThrow; exports.validateNode = validateNode; exports.validateObject = _chunk7QUI6TSOjs.validateObject; exports.validateObjectOrThrow = _chunk7QUI6TSOjs.validateObjectOrThrow; exports.validatePhoneNumber = _chunk7QUI6TSOjs.validatePhoneNumber; exports.view = view; exports.viewRegistry = viewRegistry; exports.workflow = workflow;
|
|
6548
|
+
exports.AINodeSchema = AINodeSchema; exports.ALL_ACTIONS = ALL_ACTIONS; exports.ALL_SYSTEM_RESOURCES = ALL_SYSTEM_RESOURCES; exports.ActivityTabConfig = ActivityTabConfig; exports.AssignNodeSchema = AssignNodeSchema; exports.AssignmentMappingSchema = AssignmentMappingSchema; exports.AssignmentSourceSchema = AssignmentSourceSchema; exports.AttributeInUseError = AttributeInUseError; exports.AttributeNotFoundError = AttributeNotFoundError; exports.AuthMethodSchema = AuthMethodSchema; exports.BEHAVIOR_PROPERTIES = BEHAVIOR_PROPERTIES; exports.ConcurrentModificationError = ConcurrentModificationError; exports.ConditionGroupSchema = ConditionGroupSchema; exports.ConditionNodeSchema = ConditionNodeSchema; exports.ConditionOperatorSchema = ConditionOperatorSchema; exports.ConditionRuleSchema = ConditionRuleSchema; exports.CreateShareInputSchema = CreateShareInputSchema; exports.CustomTabConfig = CustomTabConfig; exports.DEFAULT_LABEL_FALLBACK = DEFAULT_LABEL_FALLBACK; exports.DEFAULT_RETENTION_POLICY = DEFAULT_RETENTION_POLICY; exports.DEFAULT_ROLES = DEFAULT_ROLES; exports.DEFAULT_ROLE_DESCRIPTIONS = DEFAULT_ROLE_DESCRIPTIONS; exports.DEFAULT_ROLE_FOR_NEW_USERS = DEFAULT_ROLE_FOR_NEW_USERS; exports.DEFAULT_ROLE_LABELS = DEFAULT_ROLE_LABELS; exports.DEFAULT_ROLE_PERMISSIONS = DEFAULT_ROLE_PERMISSIONS; exports.DEFAULT_THEME = DEFAULT_THEME; exports.DEFAULT_VALIDATION_MESSAGES = _chunk7QUI6TSOjs.DEFAULT_VALIDATION_MESSAGES; exports.DetailViewBuilder = DetailViewBuilder; exports.DocumentsTabConfig = DocumentsTabConfig; exports.DuplicateError = DuplicateError; exports.EMPTY_VALUE_PLACEHOLDER = EMPTY_VALUE_PLACEHOLDER; exports.EndNodeSchema = EndNodeSchema; exports.FORBIDDEN_PROPERTY_TYPES = FORBIDDEN_PROPERTY_TYPES; exports.FileNotFoundError = FileNotFoundError; exports.FlagRegistry = FlagRegistry; exports.FlagService = FlagService; exports.FlowRowFieldSchema = FlowRowFieldSchema; exports.FlowRowSchema = FlowRowSchema; exports.FlowsTabConfig = FlowsTabConfig; exports.ForbiddenError = ForbiddenError; exports.FormFieldRefSchema = FormFieldRefSchema; exports.FormNodeSchema = FormNodeSchema; exports.GroupBuilder = GroupBuilder; exports.IDENTITY_PROPERTIES = IDENTITY_PROPERTIES; exports.ListViewBuilder = ListViewBuilder; exports.ListViewTabConfigBuilder = ListViewTabConfigBuilder; exports.NON_SORTABLE_TYPES = NON_SORTABLE_TYPES; exports.NO_VALUE_OPERATORS = NO_VALUE_OPERATORS; exports.NodePositionSchema = NodePositionSchema; exports.NoopGeocodingAdapter = NoopGeocodingAdapter; exports.NotFoundError = NotFoundError; exports.NotSystemObjectError = NotSystemObjectError; exports.OPERATORS_BY_TYPE = OPERATORS_BY_TYPE; exports.ObjectBuilder = ObjectBuilder; exports.ObjectNotFoundError = ObjectNotFoundError; exports.ObjectReferencedError = ObjectReferencedError; exports.PRESENTATION_PROPERTIES = PRESENTATION_PROPERTIES; exports.PolicyViolationError = PolicyViolationError; exports.ProtectedResourceError = ProtectedResourceError; exports.ProtectedRoleError = ProtectedRoleError; exports.RELATION_TARGET_ANY = RELATION_TARGET_ANY; exports.RESERVED_ATTRIBUTE_NAMES = RESERVED_ATTRIBUTE_NAMES; exports.RecordNotFoundError = RecordNotFoundError; exports.RecordReferencedError = RecordReferencedError; exports.RelationGroupBuilder = RelationGroupBuilder; exports.RichtextTabConfig = RichtextTabConfig; exports.RoleNotFoundError = RoleNotFoundError; exports.SYSTEM_ATTRIBUTES = SYSTEM_ATTRIBUTES; exports.SYSTEM_FIELD_NAMES = SYSTEM_FIELD_NAMES; exports.SYSTEM_RESOURCES = SYSTEM_RESOURCES; exports.SYSTEM_RESOURCE_LABELS = SYSTEM_RESOURCE_LABELS; exports.SchemaError = SchemaError; exports.SchemaErrorCode = SchemaErrorCode; exports.ShareStatusSchema = ShareStatusSchema; exports.SlotModeSchema = SlotModeSchema; exports.StartNodeSchema = StartNodeSchema; exports.SyncError = SyncError; exports.TabBuilder = TabBuilder; exports.TableTabConfig = TableTabConfig; exports.ThemeColorsSchema = ThemeColorsSchema; exports.ThemeLogoSchema = ThemeLogoSchema; exports.USER_STATUSES = USER_STATUSES; exports.UserProfileNotFoundError = UserProfileNotFoundError; exports.ValidationError = ValidationError; exports.ViewBuilder = ViewBuilder; exports.ViewportSchema = ViewportSchema; exports.WorkflowAIBuilder = WorkflowAIBuilder; exports.WorkflowAssignBuilder = WorkflowAssignBuilder; exports.WorkflowBuilder = WorkflowBuilder; exports.WorkflowConditionBuilder = WorkflowConditionBuilder; exports.WorkflowConfigSchema = WorkflowConfigSchema; exports.WorkflowDefinitionSchema = WorkflowDefinitionSchema; exports.WorkflowEndBuilder = WorkflowEndBuilder; exports.WorkflowFormBuilder = WorkflowFormBuilder; exports.WorkflowFormRowBuilder = WorkflowFormRowBuilder; exports.WorkflowLayoutSchema = WorkflowLayoutSchema; exports.WorkflowNodeSchema = WorkflowNodeSchema; exports.WorkflowShareSchema = WorkflowShareSchema; exports.WorkflowSimpleFormBuilder = WorkflowSimpleFormBuilder; exports.WorkflowSlotSchema = WorkflowSlotSchema; exports.WorkflowStartBuilder = WorkflowStartBuilder; exports.WorkflowStatusSchema = WorkflowStatusSchema; exports.WorkflowThemeSchema = WorkflowThemeSchema; exports.ZONE_CONFIG = ZONE_CONFIG; exports.ZONE_ORDER = ZONE_ORDER; exports.accessLevelToActions = accessLevelToActions; exports.actionsToAccessLevel = actionsToAccessLevel; exports.and = and; exports.applyRelationProps = applyRelationProps; exports.asTenantId = _chunkE6XO2STSjs.asTenantId; exports.asUserId = _chunkE6XO2STSjs.asUserId; exports.assignNodeZones = assignNodeZones; exports.attributeConfigSchemas = _chunk7QUI6TSOjs.attributeConfigSchemas; exports.booleanFlag = booleanFlag; exports.canAccessNode = canAccessNode; exports.canResumeInstance = canResumeInstance; exports.checkbox = checkbox; exports.checkboxConfigSchema = _chunk7QUI6TSOjs.checkboxConfigSchema; exports.computeRecordStatus = _chunk7QUI6TSOjs.computeRecordStatus; exports.createAttributeValidator = _chunk7QUI6TSOjs.createAttributeValidator; exports.createCheckboxValidator = _chunk7QUI6TSOjs.createCheckboxValidator; exports.createCurrencyValidator = _chunk7QUI6TSOjs.createCurrencyValidator; exports.createDateValidator = _chunk7QUI6TSOjs.createDateValidator; exports.createDraftValidator = _chunk7QUI6TSOjs.createDraftValidator; exports.createEmptyContext = createEmptyContext; exports.createFileValidator = _chunk7QUI6TSOjs.createFileValidator; exports.createFlagRegistry = createFlagRegistry; exports.createFlagService = createFlagService; exports.createFormAttributeValidator = _chunk7QUI6TSOjs.createFormAttributeValidator; exports.createFormulaValidator = _chunk7QUI6TSOjs.createFormulaValidator; exports.createLocationValidator = _chunk7QUI6TSOjs.createLocationValidator; exports.createMultiRelationValidator = _chunk7QUI6TSOjs.createMultiRelationValidator; exports.createMultiselectValidator = _chunk7QUI6TSOjs.createMultiselectValidator; exports.createNumberValidator = _chunk7QUI6TSOjs.createNumberValidator; exports.createObjectValidator = _chunk7QUI6TSOjs.createObjectValidator; exports.createPhoneValidator = _chunk7QUI6TSOjs.createPhoneValidator; exports.createRatingValidator = _chunk7QUI6TSOjs.createRatingValidator; exports.createRelationValidator = _chunk7QUI6TSOjs.createRelationValidator; exports.createRichtextValidator = _chunk7QUI6TSOjs.createRichtextValidator; exports.createRollupValidator = _chunk7QUI6TSOjs.createRollupValidator; exports.createSelectValidator = _chunk7QUI6TSOjs.createSelectValidator; exports.createSingleRelationValidator = _chunk7QUI6TSOjs.createSingleRelationValidator; exports.createStartTransition = createStartTransition; exports.createStatusValidator = _chunk7QUI6TSOjs.createStatusValidator; exports.createTextAreaValidator = _chunk7QUI6TSOjs.createTextAreaValidator; exports.createTextValidator = _chunk7QUI6TSOjs.createTextValidator; exports.createUserValidator = _chunk7QUI6TSOjs.createUserValidator; exports.currency = currency; exports.currencyConfigSchema = _chunk7QUI6TSOjs.currencyConfigSchema; exports.date = date; exports.dateConfigSchema = _chunk7QUI6TSOjs.dateConfigSchema; exports.deepEqual = _chunkE6XO2STSjs.deepEqual; exports.detailView = detailView; exports.document = document; exports.documentConfigSchema = _chunk7QUI6TSOjs.documentConfigSchema; exports.eq = eq; exports.extractAttributeNames = extractAttributeNames; exports.file = file; exports.fileConfigSchema = _chunk7QUI6TSOjs.fileConfigSchema; exports.flagRegistry = flagRegistry; exports.formatAttributeValue = formatAttributeValue; exports.formatPhoneForDisplay = _chunk7QUI6TSOjs.formatPhoneForDisplay; exports.formatZodErrors = _chunk7QUI6TSOjs.formatZodErrors; exports.formula = formula; exports.formulaConfigSchema = _chunk7QUI6TSOjs.formulaConfigSchema; exports.generateCssVariables = generateCssVariables; exports.generateDefaultDetailView = generateDefaultDetailView; exports.generateDefaultListView = generateDefaultListView; exports.generateFallbackView = generateFallbackView; exports.generateId = _chunkE6XO2STSjs.generateId; exports.generatePrefixedId = _chunkE6XO2STSjs.generatePrefixedId; exports.generateTemplateName = _chunkE6XO2STSjs.generateTemplateName; exports.getActiveTab = getActiveTab; exports.getAttributeConfigSchema = _chunk7QUI6TSOjs.getAttributeConfigSchema; exports.getContextValue = getContextValue; exports.getErrorMessage = getErrorMessage; exports.getFormFieldRefs = getFormFieldRefs; exports.getMissingRequiredAttributes = _chunk7QUI6TSOjs.getMissingRequiredAttributes; exports.getNodeOutputs = getNodeOutputs; exports.getNodeSlotIds = getNodeSlotIds; exports.getRollupFilterOperators = getRollupFilterOperators; exports.getSystemAttributeList = getSystemAttributeList; exports.getZoneAllowedTypes = getZoneAllowedTypes; exports.group = group; exports.groupNodesByZone = groupNodesByZone; exports.hasOptions = hasOptions; exports.hasProperties = hasProperties; exports.inValues = inValues; exports.indexBy = _chunkE6XO2STSjs.indexBy; exports.inferInverseCardinality = inferInverseCardinality; exports.isAINode = isAINode; exports.isActivityTab = isActivityTab; exports.isAdvancedFormNode = isAdvancedFormNode; exports.isAssignNode = isAssignNode; exports.isAttributeSortable = isAttributeSortable; exports.isBehaviorProperty = isBehaviorProperty; exports.isBilateralRelation = isBilateralRelation; exports.isCalendarView = isCalendarView; exports.isConditionGroup = isConditionGroup; exports.isConditionNode = isConditionNode; exports.isConditionRule = isConditionRule; exports.isCustomTab = isCustomTab; exports.isDefaultRole = isDefaultRole; exports.isDetailView = isDetailView; exports.isDocumentsTab = isDocumentsTab; exports.isEmpty = isEmpty2; exports.isEndNode = isEndNode; exports.isFieldGroup = isFieldGroup; exports.isFlowDefinition = isFlowDefinition; exports.isFlowFieldsRow = isFlowFieldsRow; exports.isFlowPublished = isFlowPublished; exports.isFlowRelationListRow = isFlowRelationListRow; exports.isFlowsTab = isFlowsTab; exports.isForbiddenError = isForbiddenError; exports.isFormFieldsRow = isFormFieldsRow; exports.isFormNode = isFormNode; exports.isFormTab = isFormTab; exports.isGalleryView = isGalleryView; exports.isGrantExpired = isGrantExpired; exports.isGrantRevoked = isGrantRevoked; exports.isGrantValid = isGrantValid; exports.isIdentityProperty = isIdentityProperty; exports.isInstanceEvent = isInstanceEvent; exports.isInstanceTerminal = isInstanceTerminal; exports.isInstanceWaiting = isInstanceWaiting; exports.isInverseSourceTab = isInverseSourceTab; exports.isInvitationAccepted = isInvitationAccepted; exports.isInvitationExpired = isInvitationExpired; exports.isInvitationOrGrantEvent = isInvitationOrGrantEvent; exports.isInvitationValid = isInvitationValid; exports.isLabelExpression = isLabelExpression; exports.isLayoutRow = isLayoutRow; exports.isListView = isListView; exports.isNoValueOperator = isNoValueOperator; exports.isNodeEvent = isNodeEvent; exports.isNotEmpty = isNotEmpty2; exports.isNotFoundError = isNotFoundError; exports.isPresentationProperty = isPresentationProperty; exports.isProtectedResourceError = isProtectedResourceError; exports.isRecordComplete = _chunk7QUI6TSOjs.isRecordComplete; exports.isRelationGroup = isRelationGroup; exports.isRelationSourceTab = isRelationSourceTab; exports.isRichtextTab = isRichtextTab; exports.isSchemaError = isSchemaError; exports.isSimpleFormNode = isSimpleFormNode; exports.isStartNode = isStartNode; exports.isSystemAttribute = isSystemAttribute; exports.isSystemAttributeObject = isSystemAttributeObject; exports.isSystemFlow = isSystemFlow; exports.isSystemWorkflow = isSystemWorkflow; exports.isTableTab = isTableTab; exports.isTimelineView = isTimelineView; exports.isTokenRevoked = isTokenRevoked; exports.isUniversalRelation = isUniversalRelation; exports.isValidationError = isValidationError; exports.isViewCustomized = isViewCustomized; exports.isWorkflowDefinition = isWorkflowDefinition; exports.isWorkflowPublished = isWorkflowPublished; exports.jsonFlag = jsonFlag; exports.listView = listView; exports.location = location; exports.locationConfigSchema = _chunk7QUI6TSOjs.locationConfigSchema; exports.mergeWithDefaults = mergeWithDefaults; exports.multiselect = multiselect; exports.multiselectConfigSchema = _chunk7QUI6TSOjs.multiselectConfigSchema; exports.neq = neq; exports.nodeTypeRegistry = nodeTypeRegistry; exports.normalizePhoneNumber = _chunk7QUI6TSOjs.normalizePhoneNumber; exports.number = number; exports.numberConfigSchema = _chunk7QUI6TSOjs.numberConfigSchema; exports.numberFlag = numberFlag; exports.object = object; exports.or = or; exports.parseAttributeConfig = _chunk7QUI6TSOjs.parseAttributeConfig; exports.parseRawPhoneInput = _chunk7QUI6TSOjs.parseRawPhoneInput; exports.phone = phone; exports.phoneConfigSchema = _chunk7QUI6TSOjs.phoneConfigSchema; exports.rating = rating; exports.ratingConfigSchema = _chunk7QUI6TSOjs.ratingConfigSchema; exports.registry = registry; exports.relation = relation; exports.relationConfigSchema = _chunk7QUI6TSOjs.relationConfigSchema; exports.relationGroup = relationGroup; exports.renderLabelExpression = renderLabelExpression; exports.resetViewToDefault = resetViewToDefault; exports.richtext = richtext; exports.richtextConfigSchema = _chunk7QUI6TSOjs.richtextConfigSchema; exports.rollup = rollup; exports.rollupConfigSchema = _chunk7QUI6TSOjs.rollupConfigSchema; exports.safeParseAttributeConfig = _chunk7QUI6TSOjs.safeParseAttributeConfig; exports.select = select; exports.selectConfigSchema = _chunk7QUI6TSOjs.selectConfigSchema; exports.setContextValue = setContextValue; exports.setNodeNext = setNodeNext; exports.slugify = _chunkE6XO2STSjs.slugify; exports.status = status; exports.statusConfigSchema = _chunk7QUI6TSOjs.statusConfigSchema; exports.stringFlag = stringFlag; exports.text = text; exports.textConfigSchema = _chunk7QUI6TSOjs.textConfigSchema; exports.textarea = textarea; exports.textareaConfigSchema = _chunk7QUI6TSOjs.textareaConfigSchema; exports.toUndefinedIfEmpty = toUndefinedIfEmpty; exports.user = user; exports.userConfigSchema = _chunk7QUI6TSOjs.userConfigSchema; exports.validateAttribute = _chunk7QUI6TSOjs.validateAttribute; exports.validateAttributeConfig = _chunk7QUI6TSOjs.validateAttributeConfig; exports.validateDraft = _chunk7QUI6TSOjs.validateDraft; exports.validateDraftOrThrow = _chunk7QUI6TSOjs.validateDraftOrThrow; exports.validateNode = validateNode; exports.validateObject = _chunk7QUI6TSOjs.validateObject; exports.validateObjectOrThrow = _chunk7QUI6TSOjs.validateObjectOrThrow; exports.validatePhoneNumber = _chunk7QUI6TSOjs.validatePhoneNumber; exports.view = view; exports.viewRegistry = viewRegistry; exports.workflow = workflow;
|