@sanity/workflow-engine 0.33.0 → 0.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/DATAMODEL.md +13 -0
- package/dist/_chunks-cjs/invariants.cjs +504 -2
- package/dist/_chunks-es/invariants.js +423 -1
- package/dist/index.cjs +254 -608
- package/dist/index.d.cts +79 -13
- package/dist/index.d.ts +79 -13
- package/dist/index.js +136 -492
- package/package.json +1 -1
|
@@ -67,11 +67,433 @@ function rethrowWithContext(err, context) {
|
|
|
67
67
|
});
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
+
const WORKFLOW_INSTANCE_TYPE = "sanity.workflow.instance";
|
|
71
|
+
|
|
72
|
+
function terminalState(instance) {
|
|
73
|
+
return instance.abortedAt !== void 0 ? "aborted" : instance.completedAt !== void 0 ? "completed" : "in-flight";
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function isUnprimed(instance) {
|
|
77
|
+
return instance.stages.length === 0 && terminalState(instance) === "in-flight";
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function parseDefinitionSnapshotValue(instance) {
|
|
81
|
+
try {
|
|
82
|
+
return normalizeLegacyActivityRequirements(JSON.parse(instance.definitionSnapshot));
|
|
83
|
+
} catch (err) {
|
|
84
|
+
rethrowWithContext(err, `Failed to parse definitionSnapshot on instance "${instance._id}"`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function normalizeLegacyActivityRequirements(value) {
|
|
89
|
+
for (const stage of arrayMember(value, "stages")) for (const activity of arrayMember(stage, "activities")) normalizeLegacyRequirementMap(activity);
|
|
90
|
+
return value;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function arrayMember(value, key) {
|
|
94
|
+
if (typeof value != "object" || value === null) return [];
|
|
95
|
+
const member = value[key];
|
|
96
|
+
return Array.isArray(member) ? member : [];
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function normalizeLegacyRequirementMap(value) {
|
|
100
|
+
if (typeof value != "object" || value === null) return;
|
|
101
|
+
const activity = value, requirements = activity.requirements;
|
|
102
|
+
typeof requirements != "object" || requirements === null || Array.isArray(requirements) || (activity.requirements = Object.entries(requirements).map(([name, query]) => ({
|
|
103
|
+
type: "groq",
|
|
104
|
+
name: name,
|
|
105
|
+
query: query
|
|
106
|
+
})));
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function parseDefinitionSnapshot(instance) {
|
|
110
|
+
return parseDefinitionSnapshotValue(instance);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
function parentRef(instance) {
|
|
114
|
+
return instance.ancestors.at(-1);
|
|
115
|
+
}
|
|
116
|
+
|
|
70
117
|
function andConditions(parts) {
|
|
71
118
|
const present = parts.filter(p => p !== void 0);
|
|
72
119
|
if (present.length !== 0) return present.length === 1 ? present[0] : present.map(p => `(${p})`).join(" && ");
|
|
73
120
|
}
|
|
74
121
|
|
|
122
|
+
function effectiveEditable(baseline, override) {
|
|
123
|
+
if (baseline === void 0) return;
|
|
124
|
+
if (override === void 0) return baseline;
|
|
125
|
+
if (baseline === !0 && override === !0) return !0;
|
|
126
|
+
const parts = [ baseline, override ].map(e => e === !0 ? void 0 : e);
|
|
127
|
+
return andConditions(parts) ?? !0;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
const DEFAULT_EDIT_MODE = "set";
|
|
131
|
+
|
|
132
|
+
function _fieldTargetLabel(target) {
|
|
133
|
+
return [ target.scope, target.activity, target.field ].filter(Boolean).join(".");
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function fieldSites(definition, stage) {
|
|
137
|
+
const sites = [];
|
|
138
|
+
for (const entry of definition.fields ?? []) sites.push({
|
|
139
|
+
scope: "workflow",
|
|
140
|
+
entry: entry
|
|
141
|
+
});
|
|
142
|
+
for (const entry of stage.fields ?? []) sites.push({
|
|
143
|
+
scope: "stage",
|
|
144
|
+
entry: entry
|
|
145
|
+
});
|
|
146
|
+
for (const activity of stage.activities ?? []) for (const entry of activity.fields ?? []) sites.push({
|
|
147
|
+
scope: "activity",
|
|
148
|
+
activity: activity.name,
|
|
149
|
+
entry: entry
|
|
150
|
+
});
|
|
151
|
+
return sites;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
function resolveFieldSite(site, stage) {
|
|
155
|
+
return {
|
|
156
|
+
scope: site.scope,
|
|
157
|
+
...site.activity !== void 0 ? {
|
|
158
|
+
activity: site.activity
|
|
159
|
+
} : {},
|
|
160
|
+
name: site.entry.name,
|
|
161
|
+
type: site.entry.type,
|
|
162
|
+
...site.entry.title !== void 0 ? {
|
|
163
|
+
title: site.entry.title
|
|
164
|
+
} : {},
|
|
165
|
+
...site.entry.validation !== void 0 ? {
|
|
166
|
+
validation: site.entry.validation
|
|
167
|
+
} : {},
|
|
168
|
+
...site.entry.roles !== void 0 ? {
|
|
169
|
+
roles: site.entry.roles
|
|
170
|
+
} : {},
|
|
171
|
+
ref: {
|
|
172
|
+
scope: site.scope,
|
|
173
|
+
field: site.entry.name
|
|
174
|
+
},
|
|
175
|
+
effective: effectiveEditable(site.entry.editable, stage.editable?.[site.entry.name])
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
function editableFieldsInStage(definition, stage) {
|
|
180
|
+
return fieldSites(definition, stage).filter(site => site.entry.editable !== void 0).map(site => resolveFieldSite(site, stage));
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
function editTargetMatches(site, target) {
|
|
184
|
+
return site.name !== target.field ? !1 : target.activity !== void 0 ? site.scope === "activity" && site.activity === target.activity : target.scope !== void 0 ? site.scope === target.scope : !0;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
const SCOPE_PRECEDENCE = {
|
|
188
|
+
activity: 0,
|
|
189
|
+
stage: 1,
|
|
190
|
+
workflow: 2
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
function resolveEditTarget(args) {
|
|
194
|
+
const {definition: definition, stage: stage, target: target} = args, found = fieldSites(definition, stage).filter(site => editTargetMatches({
|
|
195
|
+
scope: site.scope,
|
|
196
|
+
name: site.entry.name,
|
|
197
|
+
...site.activity !== void 0 ? {
|
|
198
|
+
activity: site.activity
|
|
199
|
+
} : {}
|
|
200
|
+
}, target)).sort((a, b) => SCOPE_PRECEDENCE[a.scope] - SCOPE_PRECEDENCE[b.scope])[0];
|
|
201
|
+
return found ? resolveFieldSite(found, stage) : void 0;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
function fieldWindowOpen(instance, site) {
|
|
205
|
+
const terminal = terminalState(instance);
|
|
206
|
+
if (terminal !== "in-flight") return {
|
|
207
|
+
open: !1,
|
|
208
|
+
detail: `instance ${terminal}`
|
|
209
|
+
};
|
|
210
|
+
if (site.scope !== "activity") return {
|
|
211
|
+
open: !0
|
|
212
|
+
};
|
|
213
|
+
const status = findCurrentActivityEntry(instance, site.activity)?.status;
|
|
214
|
+
return status === "active" ? {
|
|
215
|
+
open: !0
|
|
216
|
+
} : {
|
|
217
|
+
open: !1,
|
|
218
|
+
detail: `activity "${site.activity}" is ${status ?? "not active"}`
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
function readFieldValue(instance, site) {
|
|
223
|
+
return resolveFieldEntry(instance, site)?.value;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
function resolveFieldEntry(instance, site) {
|
|
227
|
+
return fieldEntryHost(instance, site)?.find(e => e.name === site.name);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
function fieldEntryHost(instance, site) {
|
|
231
|
+
if (site.scope === "workflow") return instance.fields;
|
|
232
|
+
const stageEntry = findOpenStageEntry(instance);
|
|
233
|
+
return site.scope === "stage" ? stageEntry?.fields : stageEntry?.activities.find(t => t.name === site.activity)?.fields;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
function fieldProvenance(instance, ref) {
|
|
237
|
+
let latest;
|
|
238
|
+
for (const entry of instance.history) entry._type === "opApplied" && (entry.target?.scope !== ref.scope || entry.target.field !== ref.field || (latest = {
|
|
239
|
+
at: entry.at,
|
|
240
|
+
...entry.actor !== void 0 ? {
|
|
241
|
+
actor: entry.actor
|
|
242
|
+
} : {}
|
|
243
|
+
}));
|
|
244
|
+
return latest === void 0 ? {} : {
|
|
245
|
+
...latest.actor !== void 0 ? {
|
|
246
|
+
setBy: latest.actor
|
|
247
|
+
} : {},
|
|
248
|
+
setAt: latest.at
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
function editDisabledReason(args) {
|
|
253
|
+
const {effective: effective, instance: instance, window: window, guardDenial: guardDenial, predicateSatisfied: predicateSatisfied} = args;
|
|
254
|
+
if (effective === void 0) return {
|
|
255
|
+
kind: "not-editable"
|
|
256
|
+
};
|
|
257
|
+
if (!window.open) {
|
|
258
|
+
const terminalReason = instanceTerminalReason(instance);
|
|
259
|
+
return terminalReason !== void 0 ? terminalReason : {
|
|
260
|
+
kind: "edit-window-closed",
|
|
261
|
+
detail: window.detail ?? "closed"
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
if (guardDenial !== void 0) return guardDenial;
|
|
265
|
+
if (!predicateSatisfied) return {
|
|
266
|
+
kind: "editor-not-permitted",
|
|
267
|
+
predicate: effective === !0 ? "true" : effective
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
function instanceTerminalReason(instance) {
|
|
272
|
+
const terminal = terminalState(instance);
|
|
273
|
+
if (terminal === "aborted" && instance.abortedAt !== void 0) return {
|
|
274
|
+
kind: "instance-aborted",
|
|
275
|
+
abortedAt: instance.abortedAt
|
|
276
|
+
};
|
|
277
|
+
if (terminal === "completed" && instance.completedAt !== void 0) return {
|
|
278
|
+
kind: "instance-completed",
|
|
279
|
+
completedAt: instance.completedAt
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
function defineWorkflowEvent(options) {
|
|
284
|
+
return {
|
|
285
|
+
type: "log",
|
|
286
|
+
...options
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
const noopTelemetry = {
|
|
291
|
+
log: () => {}
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
function resolveTelemetry(telemetry) {
|
|
295
|
+
return telemetry === void 0 ? noopTelemetry : {
|
|
296
|
+
log: (event, data) => {
|
|
297
|
+
try {
|
|
298
|
+
telemetry.log(event, data);
|
|
299
|
+
} catch (error) {
|
|
300
|
+
console.warn(`[workflow-engine] telemetry logger threw while logging "${event.name}" — event dropped`, error);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
const HIGH_FREQUENCY_SAMPLE_MS = 6e4, WorkflowDefinitionDeployed = defineWorkflowEvent({
|
|
307
|
+
name: "Workflows Definition Deployed",
|
|
308
|
+
version: 2,
|
|
309
|
+
description: "A definition went through a deploy — status distinguishes a newly minted version from an unchanged redeploy"
|
|
310
|
+
}), WorkflowInstanceStarted = defineWorkflowEvent({
|
|
311
|
+
name: "Workflows Instance Started",
|
|
312
|
+
version: 2,
|
|
313
|
+
description: "A workflow instance was started from a deployed definition"
|
|
314
|
+
}), WorkflowStageTransitioned = defineWorkflowEvent({
|
|
315
|
+
name: "Workflows Stage Transitioned",
|
|
316
|
+
version: 2,
|
|
317
|
+
description: "A committed stage move — one event per hop, cascades included, whichever verb drove it. Unsampled: funnel and dwell reads need complete counts, and volume is bounded by actual movement"
|
|
318
|
+
}), WorkflowActionFired = defineWorkflowEvent({
|
|
319
|
+
name: "Workflows Action Fired",
|
|
320
|
+
version: 2,
|
|
321
|
+
description: "An action was fired against an activity"
|
|
322
|
+
}), WorkflowFieldEdited = defineWorkflowEvent({
|
|
323
|
+
name: "Workflows Field Edited",
|
|
324
|
+
version: 2,
|
|
325
|
+
description: "A declared-editable field was edited through the generic edit seam",
|
|
326
|
+
maxSampleRate: HIGH_FREQUENCY_SAMPLE_MS
|
|
327
|
+
}), WorkflowInstanceTicked = defineWorkflowEvent({
|
|
328
|
+
name: "Workflows Instance Ticked",
|
|
329
|
+
version: 2,
|
|
330
|
+
description: "An instance was re-evaluated for auto-transitions and due waits",
|
|
331
|
+
maxSampleRate: HIGH_FREQUENCY_SAMPLE_MS
|
|
332
|
+
}), WorkflowEffectsDrained = defineWorkflowEvent({
|
|
333
|
+
name: "Workflows Effects Drained",
|
|
334
|
+
version: 2,
|
|
335
|
+
description: "A drain pass ran — drainedCount/drainedEffects report the successful dispatches. Unsampled when non-empty (outcome counts must be complete; volume is bounded by real effect work); empty polls are machine-cadence noise, throttled engine-side to at most one per minute"
|
|
336
|
+
}), WorkflowEffectStateReported = defineWorkflowEvent({
|
|
337
|
+
name: "Workflows Effect State Reported",
|
|
338
|
+
version: 2,
|
|
339
|
+
description: "A running effect handler committed mid-dispatch field state through commitEffectOps. Sampled (high-frequency by design — a dispatch may report many times): an adoption and usage signal, not an exact per-run report count",
|
|
340
|
+
maxSampleRate: HIGH_FREQUENCY_SAMPLE_MS
|
|
341
|
+
}), WorkflowEffectCompleted = defineWorkflowEvent({
|
|
342
|
+
name: "Workflows Effect Completed",
|
|
343
|
+
version: 2,
|
|
344
|
+
description: "An effect outcome was recorded — reported directly through completeEffect, or cancelled by the abort verb (external runtimes; engine-drained effects surface via Workflows Effects Drained instead — each outcome counts once)"
|
|
345
|
+
}), WorkflowInstanceAborted = defineWorkflowEvent({
|
|
346
|
+
name: "Workflows Instance Aborted",
|
|
347
|
+
version: 2,
|
|
348
|
+
description: "The abort admin override was invoked (changed: false = instance already terminal)"
|
|
349
|
+
}), WorkflowStageSet = defineWorkflowEvent({
|
|
350
|
+
name: "Workflows Stage Set",
|
|
351
|
+
version: 2,
|
|
352
|
+
description: "The set-stage admin override was invoked (changed: false = already at the target stage)"
|
|
353
|
+
}), WorkflowActivityReset = defineWorkflowEvent({
|
|
354
|
+
name: "Workflows Activity Reset",
|
|
355
|
+
version: 2,
|
|
356
|
+
description: "The reset-activity admin override was invoked (changed: false = already at the target status, or the instance was terminal)"
|
|
357
|
+
}), WorkflowDefinitionDeleted = defineWorkflowEvent({
|
|
358
|
+
name: "Workflows Definition Deleted",
|
|
359
|
+
version: 2,
|
|
360
|
+
description: "A deployed definition (or one version of it) was removed via the admin verb"
|
|
361
|
+
});
|
|
362
|
+
|
|
363
|
+
function definitionDeployedData(definition, outcome) {
|
|
364
|
+
const stages = definition.stages, activities = stages.flatMap(stage => stage.activities ?? []), actions = activities.flatMap(activity => activity.actions ?? []), transitions = stages.flatMap(stage => stage.transitions ?? []), fieldEntries = [ ...definition.fields ?? [], ...stages.flatMap(stage => stage.fields ?? []), ...activities.flatMap(activity => activity.fields ?? []) ];
|
|
365
|
+
return {
|
|
366
|
+
contentHash: outcome.contentHash,
|
|
367
|
+
status: outcome.status,
|
|
368
|
+
deployId: outcome.deployId,
|
|
369
|
+
stageCount: stages.length,
|
|
370
|
+
activityCount: activities.length,
|
|
371
|
+
actionCount: actions.length,
|
|
372
|
+
transitionCount: transitions.length,
|
|
373
|
+
fieldCount: fieldEntries.length,
|
|
374
|
+
activityKinds: [ ...new Set(activities.map(deriveActivityKind)) ].sort(),
|
|
375
|
+
fieldKinds: [ ...new Set(fieldEntries.map(entry => entry.type)) ].sort(),
|
|
376
|
+
guardCount: stages.reduce((n, stage) => n + (stage.guards ?? []).length, 0),
|
|
377
|
+
effectCount: actions.reduce((n, action) => n + (action.effects ?? []).length, 0),
|
|
378
|
+
subworkflowCount: actions.filter(action => action.spawn !== void 0).length,
|
|
379
|
+
lifecycle: definition.lifecycle ?? "standalone"
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
function definitionHashFragment(contentHash) {
|
|
384
|
+
return contentHash !== void 0 ? {
|
|
385
|
+
definitionContentHash: contentHash
|
|
386
|
+
} : {};
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
const REPORTED_BY_DECLARED_KIND = {
|
|
390
|
+
studio: "studio",
|
|
391
|
+
sdk: "sdk",
|
|
392
|
+
cli: "cli",
|
|
393
|
+
mcp: "mcp",
|
|
394
|
+
server: "server",
|
|
395
|
+
drainer: "server",
|
|
396
|
+
interactive: "other",
|
|
397
|
+
script: "other",
|
|
398
|
+
test: "other"
|
|
399
|
+
}, REPORTED_KIND_LOOKUP = new Map(Object.entries(REPORTED_BY_DECLARED_KIND));
|
|
400
|
+
|
|
401
|
+
function executionContextFragment(context) {
|
|
402
|
+
return context.kind === void 0 ? {
|
|
403
|
+
executionRuntime: context.runtime
|
|
404
|
+
} : {
|
|
405
|
+
executionRuntime: context.runtime,
|
|
406
|
+
executionKind: REPORTED_KIND_LOOKUP.get(context.kind) ?? "other"
|
|
407
|
+
};
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
function instanceStartedData(args) {
|
|
411
|
+
return {
|
|
412
|
+
...definitionHashFragment(args.definition.contentHash),
|
|
413
|
+
instanceId: args.instanceId,
|
|
414
|
+
initialFieldCount: args.initialFieldCount,
|
|
415
|
+
viaSpawn: args.viaSpawn,
|
|
416
|
+
lifecycle: args.definition.lifecycle ?? "standalone"
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
function instanceStartedDataFor(args) {
|
|
421
|
+
return instanceStartedData({
|
|
422
|
+
definition: {
|
|
423
|
+
...parseDefinitionSnapshot(args.instance),
|
|
424
|
+
...args.instance.pinnedContentHash !== void 0 ? {
|
|
425
|
+
contentHash: args.instance.pinnedContentHash
|
|
426
|
+
} : {}
|
|
427
|
+
},
|
|
428
|
+
instanceId: args.instance._id,
|
|
429
|
+
initialFieldCount: args.initialFieldCount,
|
|
430
|
+
viaSpawn: args.viaSpawn
|
|
431
|
+
});
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
function stageTransitionedData(args) {
|
|
435
|
+
const stageIndex = name => args.definition.stages.findIndex(stage => stage.name === name), openEntry = findOpenStageEntry(args.instance), dwellMs = openEntry !== void 0 ? Date.parse(args.at) - Date.parse(openEntry.enteredAt) : Number.NaN;
|
|
436
|
+
return {
|
|
437
|
+
...definitionHashFragment(args.instance.pinnedContentHash),
|
|
438
|
+
instanceId: args.instance._id,
|
|
439
|
+
fromStageIndex: stageIndex(args.instance.currentStage),
|
|
440
|
+
toStageIndex: stageIndex(args.toStage),
|
|
441
|
+
toIsTerminal: args.toIsTerminal,
|
|
442
|
+
isRevisit: args.instance.stages.some(entry => entry.name === args.toStage),
|
|
443
|
+
...Number.isFinite(dwellMs) ? {
|
|
444
|
+
dwellMs: dwellMs
|
|
445
|
+
} : {},
|
|
446
|
+
via: args.via
|
|
447
|
+
};
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
function openStage(instance) {
|
|
451
|
+
const definition = parseDefinitionSnapshot(instance);
|
|
452
|
+
return {
|
|
453
|
+
definition: definition,
|
|
454
|
+
stage: definition.stages.find(s => s.name === instance.currentStage)
|
|
455
|
+
};
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
function firedActivityKind(instance, activity) {
|
|
459
|
+
const node = openStage(instance).stage?.activities?.find(a => a.name === activity);
|
|
460
|
+
return node === void 0 ? void 0 : deriveActivityKind(node);
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
function editedFieldKind(instance, target) {
|
|
464
|
+
const {definition: definition, stage: stage} = openStage(instance);
|
|
465
|
+
return stage === void 0 ? void 0 : resolveEditTarget({
|
|
466
|
+
definition: definition,
|
|
467
|
+
stage: stage,
|
|
468
|
+
target: target
|
|
469
|
+
})?.type;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
function actionFiredData(args) {
|
|
473
|
+
const kind = firedActivityKind(args.instance, args.activity);
|
|
474
|
+
return {
|
|
475
|
+
...definitionHashFragment(args.instance.pinnedContentHash),
|
|
476
|
+
instanceId: args.instance._id,
|
|
477
|
+
...kind !== void 0 ? {
|
|
478
|
+
activityKind: kind
|
|
479
|
+
} : {},
|
|
480
|
+
hasParams: args.params !== void 0,
|
|
481
|
+
cascaded: args.cascaded
|
|
482
|
+
};
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
function fieldEditedData(args) {
|
|
486
|
+
const kind = editedFieldKind(args.instance, args.target);
|
|
487
|
+
return {
|
|
488
|
+
...definitionHashFragment(args.instance.pinnedContentHash),
|
|
489
|
+
instanceId: args.instance._id,
|
|
490
|
+
...kind !== void 0 ? {
|
|
491
|
+
fieldKind: kind
|
|
492
|
+
} : {},
|
|
493
|
+
mode: args.mode ?? DEFAULT_EDIT_MODE
|
|
494
|
+
};
|
|
495
|
+
}
|
|
496
|
+
|
|
75
497
|
const KNOWN_SCHEMES = /* @__PURE__ */ new Set([ "dataset", "canvas", "media-library", "dashboard" ]), KNOWN_SCHEMES_TEXT = [ ...KNOWN_SCHEMES ].join(", ");
|
|
76
498
|
|
|
77
499
|
class VersionSpecificDatasetGdrError extends Error {
|
|
@@ -4140,4 +4562,4 @@ function checkWorkflowInvariants(def) {
|
|
|
4140
4562
|
checkStoredRolesPlacement(def, issues), checkGroups(def, issues), issues;
|
|
4141
4563
|
}
|
|
4142
4564
|
|
|
4143
|
-
export { ACTION_SEMANTICS, ACTIVITY_KINDS, ACTIVITY_STATUSES, ACTOR_KINDS, ANONYMOUS_IDENTITY, ActorShape, AuthoringActionSchema, AuthoringActivitySchema, AuthoringEffectSchema, AuthoringFieldEntrySchema, AuthoringGuardSchema, AuthoringOpSchema, AuthoringStageSchema, AuthoringTransitionSchema, AuthoringWorkflowSchema, CALLER_BOUND_VARS, CONDITION_VARS, ContractViolationError, DECISION_SEMANTICS, DEFAULT_TRANSITION_WHEN, DOCUMENT_VALUE_PERMISSIONS, DRIVER_KINDS, DefinitionInUseError, DefinitionNotFoundError, EFFECTS_READ, EXECUTOR_CLASSIFICATIONS, EffectNotFoundError, FIELD_READ, FIELD_SCOPES, FIELD_VALUE_KINDS, FILTER_SCOPE_VARS, FieldValueShapeError, GROUP_KINDS, GUARD_ACTIONS_REQUIRED_MESSAGE, GUARD_PREDICATE_VARS, GdrShape, GroupSchema, InstanceNotFoundError, IsoTimestamp, LAKE_MUTATION_GUARD_ACTIONS, MUTATION_GUARD_ACTIONS, MUTATION_GUARD_ID_SPACES, NonEmptyString$1 as NonEmptyString, PersistedDocShapeError, RESERVED_CONDITION_VARS, RESOURCE_ALIAS_NAME_SOURCE, SIGNAL_SEMANTICS, START_FILTER_VARS, START_REQUIREMENT_VARS, SYSTEM_IDENTITY, SpawnContractsInvalidError, StoredFieldOpSchema, UNIVERSAL_ROLE_ALIAS_KEY, VersionSpecificDatasetGdrError, WORKFLOW_DEFINITION_TYPE, WorkflowConfigSchema, WorkflowError, activeAssignmentMembers, actorFulfillsRole, actorMatchesAssignment,
|
|
4565
|
+
export { ACTION_SEMANTICS, ACTIVITY_KINDS, ACTIVITY_STATUSES, ACTOR_KINDS, ANONYMOUS_IDENTITY, ActorShape, AuthoringActionSchema, AuthoringActivitySchema, AuthoringEffectSchema, AuthoringFieldEntrySchema, AuthoringGuardSchema, AuthoringOpSchema, AuthoringStageSchema, AuthoringTransitionSchema, AuthoringWorkflowSchema, CALLER_BOUND_VARS, CONDITION_VARS, ContractViolationError, DECISION_SEMANTICS, DEFAULT_EDIT_MODE, DEFAULT_TRANSITION_WHEN, DOCUMENT_VALUE_PERMISSIONS, DRIVER_KINDS, DefinitionInUseError, DefinitionNotFoundError, EFFECTS_READ, EXECUTOR_CLASSIFICATIONS, EffectNotFoundError, FIELD_READ, FIELD_SCOPES, FIELD_VALUE_KINDS, FILTER_SCOPE_VARS, FieldValueShapeError, GROUP_KINDS, GUARD_ACTIONS_REQUIRED_MESSAGE, GUARD_PREDICATE_VARS, GdrShape, GroupSchema, InstanceNotFoundError, IsoTimestamp, LAKE_MUTATION_GUARD_ACTIONS, MUTATION_GUARD_ACTIONS, MUTATION_GUARD_ID_SPACES, NonEmptyString$1 as NonEmptyString, PersistedDocShapeError, RESERVED_CONDITION_VARS, RESOURCE_ALIAS_NAME_SOURCE, SCOPE_PRECEDENCE, SIGNAL_SEMANTICS, START_FILTER_VARS, START_REQUIREMENT_VARS, SYSTEM_IDENTITY, SpawnContractsInvalidError, StoredFieldOpSchema, UNIVERSAL_ROLE_ALIAS_KEY, VersionSpecificDatasetGdrError, WORKFLOW_DEFINITION_TYPE, WORKFLOW_INSTANCE_TYPE, WorkflowActionFired, WorkflowActivityReset, WorkflowConfigSchema, WorkflowDefinitionDeleted, WorkflowDefinitionDeployed, WorkflowEffectCompleted, WorkflowEffectStateReported, WorkflowEffectsDrained, WorkflowError, WorkflowFieldEdited, WorkflowInstanceAborted, WorkflowInstanceStarted, WorkflowInstanceTicked, WorkflowStageSet, WorkflowStageTransitioned, _fieldTargetLabel, actionFiredData, activeAssignmentMembers, actorFulfillsRole, actorMatchesAssignment, assignmentKindAcceptsRoles, assignmentMatch, assignmentMembers, assignmentState, assignmentStateCounts, checkWorkflowInvariants, choiceValueIssues, classifyPrincipalId, clientConfigFromResource, condemnSubworkflow, condemnedSubworkflows, conditionEffectReads, conditionFieldReadNames, conditionParameterNames, conditionSyntaxIssues, datasetResourceParts, definitionDeployedData, definitionDocId, definitionHashFragment, deriveActivityKind, deriveExecutorClassification, desugarWorkflow, directoryBridgeId, driverKind, editDisabledReason, editTargetMatches, editableFieldsInStage, effectBackoffMs, errorMessage, evaluateCondition, evaluateConditionOutcome, evaluatePredicates, executionContextFragment, extractDocumentId, fieldEditedData, fieldProvenance, fieldValueSchemas, fieldWindowOpen, findCurrentActivityEntry, findOpenStageEntry, firstCarriedGlobalId, formatIssuePath, formatIssues, formatValidationError, gdrFromResource, gdrRef, gdrResourcePrefix, gdrUri, groq, groupMembershipNames, identityMatchesAssignment, instanceAssignmentStateCounts, instanceStartedData, instanceStartedDataFor, instanceTerminalReason, isAlwaysArrayFieldKind, isAssignmentFieldEntry, isBareDocumentId, isBareSeedId, isCascadeFired, isFilterScopedOut, isGdr, isGdrUri, isGuardReadExpr, isInputSourced, isNotesEntry, isParseableInstant, isRecord, isSingleDocRefEntry, isSingleDocRefKind, isStartableDefinition, isSubjectEntry, isTerminalActivityStatus, isTodoListEntry, isTodoListItem, isUnevaluable, isUnprimed, labelFor, lakePrincipalId, liveSubworkflows, mutationGuardActionIdSpace, mutationGuardRequiresSplitEmission, noopTelemetry, normalizeAssignmentMembers, openActivityAssignments, parentRef, parseDefinitionSnapshot, parseDefinitionSnapshotValue, parseFieldValue, parseGdr, parseOrThrow, parsePersistedDoc, parseResourceGdr, parseStoredDefinition, readFieldValue, readsRootDocument, refCanvas, refDashboard, refDataset, refKindAcceptsTypes, refMediaLibrary, refTypeIssues, rejectedRefTypes, releaseDocId, releaseRef, resolveEditTarget, resolveFieldEntry, resolveTelemetry, resolvedChildStatus, resourceAliasesToMap, resourceFromGdrUri, resourceFromParsed, resourceGdr, rethrowWithContext, runGroq, sameResource, scalarValidationIssues, schemaTreeShape, selfGdr, stageTransitionedData, startKindOf, tagScopeFilter, terminalState, toBareId, toPhysicalGdr, tolerantEntries, tolerantObject, tryParseGdr, validateFieldAppendItem, validateFieldValue, validateResourceAliasName, validateTag };
|