@oomol-lab/open-flow 0.1.0-beta.79 → 0.1.0-beta.80
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/browser/{FlowCanvas-BQGBcfoL.js → FlowCanvas-CrsiDHK8.js} +50 -51
- package/dist/browser/{createResourceDialog-DkovGogv.js → createResourceDialog-CS3u9ga9.js} +2 -2
- package/dist/browser/{dialog-CFFuRM8s.js → dialog-CFlvkliO.js} +7 -2
- package/dist/browser/{exportSvg-CYwyYiuH.js → exportPng-BOPfjeEi.js} +236 -38
- package/dist/browser/{flowChanges-CN2R-m1M.js → flowChanges-pFjPHU5k.js} +326 -203
- package/dist/browser/{flowWorkspace-CXVL1FNv.js → flowWorkspace-CRlqc403.js} +698 -480
- package/dist/browser/preview.css +153 -132
- package/dist/browser/preview.js +921 -643
- package/dist/browser/ui-logo.d.ts +1 -0
- package/dist/browser/ui.css +29 -4
- package/dist/browser/ui.js +4 -1
- package/dist/browser/workbench.css +153 -132
- package/dist/browser/workbench.js +9 -9
- package/dist/browser/{workbenchSelect-CkOS95gX.js → workbenchSelect-Ci0KCYv9.js} +1 -1
- package/dist/command/index.js +41 -41
- package/dist/common/control-api-conformance.js +49 -19
- package/dist/common/control-api.d.ts +26 -6
- package/dist/common/control-api.js +49 -19
- package/dist/common/control-requests.js +6 -2
- package/dist/common/flow-authoring.js +6 -2
- package/dist/common/flow-change.js +6 -2
- package/dist/common/flow-encoding.js +6 -2
- package/dist/common/flow-semantics.js +6 -2
- package/dist/common/flow-state.d.ts +47 -0
- package/dist/common/flow-state.js +7 -1
- package/dist/common/mcp.js +49 -18
- package/dist/common/scheduler.js +6 -2
- package/package.json +1 -1
- package/src/control/common/api.ts +24 -8
- package/src/control/common/connectorDecoders.ts +11 -30
- package/src/control/common/revisionDecoders.ts +14 -0
- package/src/state/common/state.ts +14 -0
|
@@ -8638,7 +8638,7 @@ var keySchema = string$1().min(1).refine((value) => new TextEncoder().encode(val
|
|
|
8638
8638
|
strictObject({
|
|
8639
8639
|
scope: _enum(["draft", "live"]),
|
|
8640
8640
|
values: literal(false).optional()
|
|
8641
|
-
});
|
|
8641
|
+
}).omit({ values: true });
|
|
8642
8642
|
strictObject({
|
|
8643
8643
|
scope: _enum(["draft", "live"]),
|
|
8644
8644
|
keys: array(keySchema).min(1).max(stateReadLimits.maxKeys).refine((keys) => new Set(keys).size === keys.length, "State keys must be distinct.")
|
|
@@ -8651,6 +8651,7 @@ strictObject({
|
|
|
8651
8651
|
scope: _enum(["draft", "live"]),
|
|
8652
8652
|
space: string$1().regex(/^(flow|node:.+)$/)
|
|
8653
8653
|
});
|
|
8654
|
+
strictObject({ scope: _enum(["draft", "live"]) });
|
|
8654
8655
|
var skipDuplicatesConfigSchema = strictObject({ fields: array(string$1().refine((field) => field.length > 0 && field.split(".").every((part) => part.length > 0), "Use a nonempty dot-separated field path.")).refine((fields) => new Set(fields).size === fields.length, "Identity fields must be distinct.").default([]) });
|
|
8655
8656
|
var skipDuplicatesExecutorSchema = skipDuplicatesConfigSchema.extend({ kind: literal("skip-duplicates") });
|
|
8656
8657
|
var flowStateViewSchema = object({
|
|
@@ -8676,6 +8677,10 @@ var flowStateViewSchema = object({
|
|
|
8676
8677
|
updatedAt: number()
|
|
8677
8678
|
}))
|
|
8678
8679
|
});
|
|
8680
|
+
var flowStateSummarySchema = flowStateViewSchema.extend({ values: strictObject({
|
|
8681
|
+
count: number().int().nonnegative(),
|
|
8682
|
+
updatedAt: number().nullable()
|
|
8683
|
+
}) });
|
|
8679
8684
|
var flowStateValuesSchema = object({
|
|
8680
8685
|
version: literal(1),
|
|
8681
8686
|
scope: _enum(["draft", "live"]),
|
|
@@ -10589,7 +10594,7 @@ function leinaBots(value) {
|
|
|
10589
10594
|
}
|
|
10590
10595
|
function accessPermissions(value) {
|
|
10591
10596
|
const source = record$1(value);
|
|
10592
|
-
|
|
10597
|
+
requiredFields(source, [
|
|
10593
10598
|
"actionIds",
|
|
10594
10599
|
"allActions",
|
|
10595
10600
|
"triggerIds",
|
|
@@ -10627,19 +10632,15 @@ function accessBinding(value, candidate) {
|
|
|
10627
10632
|
const legacy = Object.hasOwn(source, "displayName") && !Object.hasOwn(source, "connectionDisplayName");
|
|
10628
10633
|
const permissions = candidate && Object.hasOwn(source, "permissions") ? accessPermissions(source.permissions) : void 0;
|
|
10629
10634
|
const permissionGroupName = source.permissionGroupName;
|
|
10630
|
-
|
|
10635
|
+
requiredFields(source, [
|
|
10631
10636
|
"accessBindingId",
|
|
10632
10637
|
"connectionId",
|
|
10633
10638
|
"source",
|
|
10634
10639
|
legacy ? "displayName" : "connectionDisplayName",
|
|
10635
|
-
...candidate && Object.hasOwn(source, "isDefault") ? ["isDefault"] : [],
|
|
10636
|
-
...candidate && permissions != null ? ["permissions"] : [],
|
|
10637
|
-
...Object.hasOwn(source, "permissionGroupName") ? ["permissionGroupName"] : [],
|
|
10638
|
-
...policyRevision == null ? [] : ["policyRevision"],
|
|
10639
10640
|
"providerId",
|
|
10640
10641
|
...candidate ? [] : ["status"]
|
|
10641
10642
|
]);
|
|
10642
|
-
if (policyRevision
|
|
10643
|
+
if (policyRevision !== void 0 && typeof policyRevision != "string") return invalidResponse("policyRevision: expected a string.");
|
|
10643
10644
|
if (candidate && isDefault !== void 0 && typeof isDefault != "boolean") return invalidResponse("isDefault: expected a boolean.");
|
|
10644
10645
|
if (permissionGroupName !== void 0 && permissionGroupName !== null && typeof permissionGroupName != "string") return invalidResponse("permissionGroupName: expected a string or null.");
|
|
10645
10646
|
if (!candidate && status != "active" && status != "forbidden" && status != "invalid" && status != "missing") return invalidResponse();
|
|
@@ -10668,13 +10669,11 @@ function accessMode(value) {
|
|
|
10668
10669
|
}
|
|
10669
10670
|
function connectorAccess(value) {
|
|
10670
10671
|
const source = record$1(value);
|
|
10671
|
-
|
|
10672
|
+
requiredFields(source, [
|
|
10672
10673
|
"accessRevision",
|
|
10673
10674
|
"bindings",
|
|
10674
10675
|
"mode",
|
|
10675
10676
|
"sharedAccessDigest",
|
|
10676
|
-
..."providerIds" in source ? ["providerIds"] : [],
|
|
10677
|
-
..."discardedBindingCount" in source ? ["discardedBindingCount"] : [],
|
|
10678
10677
|
"version"
|
|
10679
10678
|
]);
|
|
10680
10679
|
const accessRevision = integer(source.accessRevision);
|
|
@@ -10715,13 +10714,12 @@ function accessGrants(value) {
|
|
|
10715
10714
|
if (!Array.isArray(value)) return invalidResponse();
|
|
10716
10715
|
const bindings = value.map((candidate) => {
|
|
10717
10716
|
const entry = record$1(candidate);
|
|
10718
|
-
|
|
10717
|
+
requiredFields(entry, [
|
|
10719
10718
|
"accessBindingId",
|
|
10720
10719
|
"connectionId",
|
|
10721
10720
|
"providerId",
|
|
10722
10721
|
"source",
|
|
10723
|
-
"connectionDisplayName"
|
|
10724
|
-
..."permissionGroupName" in entry ? ["permissionGroupName"] : []
|
|
10722
|
+
"connectionDisplayName"
|
|
10725
10723
|
]);
|
|
10726
10724
|
let identity;
|
|
10727
10725
|
try {
|
|
@@ -10744,7 +10742,7 @@ function accessGrants(value) {
|
|
|
10744
10742
|
}
|
|
10745
10743
|
function connectorAccessSnapshot(value) {
|
|
10746
10744
|
const source = record$1(value);
|
|
10747
|
-
|
|
10745
|
+
requiredFields(source, [
|
|
10748
10746
|
"mode",
|
|
10749
10747
|
"sharedAccessDigest",
|
|
10750
10748
|
"sharedBindings",
|
|
@@ -10766,7 +10764,7 @@ function connectorAccessSnapshot(value) {
|
|
|
10766
10764
|
}
|
|
10767
10765
|
function connectorAccessCandidates(value, providerId) {
|
|
10768
10766
|
const source = record$1(value);
|
|
10769
|
-
|
|
10767
|
+
requiredFields(source, [
|
|
10770
10768
|
"candidates",
|
|
10771
10769
|
"mode",
|
|
10772
10770
|
"providerId",
|
|
@@ -10787,7 +10785,7 @@ function connectorAccessCandidates(value, providerId) {
|
|
|
10787
10785
|
}
|
|
10788
10786
|
function connectorAccessCandidatesBatch(value, providerIds) {
|
|
10789
10787
|
const source = record$1(value);
|
|
10790
|
-
|
|
10788
|
+
requiredFields(source, ["results", "version"]);
|
|
10791
10789
|
if (source.version != 1) return invalidResponse("version: expected 1.");
|
|
10792
10790
|
if (!Array.isArray(source.results)) return invalidResponse("results: expected an array.");
|
|
10793
10791
|
const remaining = new Set(providerIds);
|
|
@@ -10796,9 +10794,9 @@ function connectorAccessCandidatesBatch(value, providerIds) {
|
|
|
10796
10794
|
const providerId = string(item.providerId);
|
|
10797
10795
|
if (!remaining.delete(providerId)) return invalidResponse("results[].providerId: duplicate or unrequested provider.");
|
|
10798
10796
|
if (!Object.hasOwn(item, "error")) return connectorAccessCandidates(item, providerId);
|
|
10799
|
-
|
|
10797
|
+
requiredFields(item, ["providerId", "error"]);
|
|
10800
10798
|
const error = record$1(item.error);
|
|
10801
|
-
|
|
10799
|
+
requiredFields(error, ["code", "message"]);
|
|
10802
10800
|
return {
|
|
10803
10801
|
providerId,
|
|
10804
10802
|
error: {
|
|
@@ -11440,6 +11438,25 @@ function draft(value) {
|
|
|
11440
11438
|
return invalidResponse();
|
|
11441
11439
|
}
|
|
11442
11440
|
}
|
|
11441
|
+
function revisionTriggers(value) {
|
|
11442
|
+
const source = record$1(value);
|
|
11443
|
+
const graph = record$1(record$1(record$1(source.content).document).graph);
|
|
11444
|
+
const triggers = Object.entries(record$1(graph.nodes)).flatMap(([triggerId, entry]) => {
|
|
11445
|
+
const node = record$1(entry);
|
|
11446
|
+
if (node.kind == "outputs" || Object.hasOwn(node, "inputs")) return [];
|
|
11447
|
+
const kind = string(node.kind);
|
|
11448
|
+
if (node.name !== void 0 && typeof node.name != "string") return invalidResponse();
|
|
11449
|
+
return [{
|
|
11450
|
+
triggerId: string(triggerId),
|
|
11451
|
+
kind,
|
|
11452
|
+
...node.name === void 0 ? {} : { name: node.name }
|
|
11453
|
+
}];
|
|
11454
|
+
});
|
|
11455
|
+
return {
|
|
11456
|
+
...revisionMetadata(source),
|
|
11457
|
+
triggers
|
|
11458
|
+
};
|
|
11459
|
+
}
|
|
11443
11460
|
function presentation(value) {
|
|
11444
11461
|
const source = record$1(value);
|
|
11445
11462
|
if (source.version != 1 || integer(source.revision) < 1) return invalidResponse();
|
|
@@ -12196,6 +12213,10 @@ var ControlClient = class {
|
|
|
12196
12213
|
const result = flowStateViewSchema.safeParse(await this.request(`/v1/flows/${segment(flowId)}/state?scope=${scope}`));
|
|
12197
12214
|
return result.success && result.data.scope === scope ? result.data : invalidResponse();
|
|
12198
12215
|
}
|
|
12216
|
+
async getFlowStateSummary(flowId, scope, signal) {
|
|
12217
|
+
const result = flowStateSummarySchema.safeParse(await this.request(`/v1/flows/${segment(flowId)}/state/summary?scope=${scope}`, { signal }));
|
|
12218
|
+
return result.success && result.data.scope === scope ? result.data : invalidResponse();
|
|
12219
|
+
}
|
|
12199
12220
|
async getFlowStateValues(flowId, scope, keys, signal) {
|
|
12200
12221
|
const result = flowStateValuesSchema.safeParse(await this.request(`/v1/flows/${segment(flowId)}/state/read`, {
|
|
12201
12222
|
method: "POST",
|
|
@@ -12216,6 +12237,10 @@ var ControlClient = class {
|
|
|
12216
12237
|
const source = record$1(await this.request(`/v1/flows/${segment(flowId)}/dedupe?scope=${scope}&space=${encodeURIComponent(space)}`, { method: "DELETE" }));
|
|
12217
12238
|
if (source.version !== 1 || source.cleared !== true) invalidResponse();
|
|
12218
12239
|
}
|
|
12240
|
+
async clearAllFlowDedupe(flowId, scope) {
|
|
12241
|
+
const source = record$1(await this.request(`/v1/flows/${segment(flowId)}/dedupe/all?scope=${scope}`, { method: "DELETE" }));
|
|
12242
|
+
if (source.version !== 1 || source.cleared !== true) invalidResponse();
|
|
12243
|
+
}
|
|
12219
12244
|
async renameFlow(flowId, name) {
|
|
12220
12245
|
return this.updateFlow(flowId, { name });
|
|
12221
12246
|
}
|
|
@@ -12328,6 +12353,11 @@ var ControlClient = class {
|
|
|
12328
12353
|
async getRevision(flowId, revisionId, signal) {
|
|
12329
12354
|
return draft(await this.request(`/v1/flows/${segment(flowId)}/revisions/${segment(revisionId)}`, { signal }));
|
|
12330
12355
|
}
|
|
12356
|
+
async getRevisionTriggers(flowId, revisionId, signal) {
|
|
12357
|
+
const revision = revisionTriggers(await this.request(`/v1/flows/${segment(flowId)}/revisions/${segment(revisionId)}`, { signal }));
|
|
12358
|
+
if (revision.flowId != flowId || revision.revisionId != revisionId) return invalidResponse();
|
|
12359
|
+
return revision;
|
|
12360
|
+
}
|
|
12331
12361
|
async listTriggerConfigOptions(flowId, nodeId, field, signal) {
|
|
12332
12362
|
const source = record$1(await this.request(`/v1/flows/${segment(flowId)}/triggers/${segment(nodeId)}/options/${segment(field)}`, { signal }));
|
|
12333
12363
|
requiredFields(source, ["options", "version"]);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CanvasCommand } from './canvas-commands.js';
|
|
2
|
-
import type { FlowStateValues, FlowStateView, StateScope } from './flow-state.js';
|
|
2
|
+
import type { FlowStateSummary, FlowStateValues, FlowStateView, StateScope } from './flow-state.js';
|
|
3
3
|
export type { CanvasCommand, CanvasCommandSubscriber } from './canvas-commands.js';
|
|
4
4
|
import type { LiveDetails } from './liveDetails.js';
|
|
5
5
|
export { liveEntries } from './liveDetails.js';
|
|
@@ -835,7 +835,7 @@ export declare class ControlClient {
|
|
|
835
835
|
readonly tagIds?: readonly string[];
|
|
836
836
|
}): Promise<Flow>;
|
|
837
837
|
createFlow(name: string, idempotencyKey?: string, teamId?: string, tagIds?: readonly string[], initialPresentation?: Readonly<Record<string, JsonValue>>): Promise<Flow>;
|
|
838
|
-
broadcastCanvas(flowId: string, command: CanvasCommand): Promise<CanvasBroadcast>;
|
|
838
|
+
broadcastCanvas(flowId: string, command: CanvasCommand | Readonly<Record<string, unknown>>): Promise<CanvasBroadcast>;
|
|
839
839
|
getFlow(flowId: string): Promise<Flow>;
|
|
840
840
|
getErrorListeners(flowId: string, signal?: AbortSignal): Promise<readonly ErrorListener[]>;
|
|
841
841
|
listTags(signal?: AbortSignal): Promise<{
|
|
@@ -848,9 +848,11 @@ export declare class ControlClient {
|
|
|
848
848
|
setFlowTags(flowId: string, tagIds: readonly string[]): Promise<Flow>;
|
|
849
849
|
updateFlow(flowId: string, changes: FlowUpdate): Promise<Flow>;
|
|
850
850
|
getFlowState(flowId: string, scope: StateScope): Promise<FlowStateView>;
|
|
851
|
+
getFlowStateSummary(flowId: string, scope: StateScope, signal?: AbortSignal): Promise<FlowStateSummary>;
|
|
851
852
|
getFlowStateValues(flowId: string, scope: StateScope, keys: readonly string[], signal?: AbortSignal): Promise<FlowStateValues>;
|
|
852
853
|
clearFlowState(flowId: string, scope: StateScope, key?: string): Promise<void>;
|
|
853
854
|
clearFlowDedupe(flowId: string, scope: StateScope, space: string): Promise<void>;
|
|
855
|
+
clearAllFlowDedupe(flowId: string, scope: StateScope): Promise<void>;
|
|
854
856
|
renameFlow(flowId: string, name: string): Promise<Flow>;
|
|
855
857
|
deleteFlow(flowId: string): Promise<Flow>;
|
|
856
858
|
listTriggerKeys(signal?: AbortSignal, locale?: string): Promise<readonly TriggerKeySummary[]>;
|
|
@@ -880,6 +882,21 @@ export declare class ControlClient {
|
|
|
880
882
|
getDraft(flowId: string): Promise<Draft>;
|
|
881
883
|
syncDraft(flowId: string): Promise<DraftSync>;
|
|
882
884
|
getRevision(flowId: string, revisionId: string, signal?: AbortSignal): Promise<Draft>;
|
|
885
|
+
getRevisionTriggers(flowId: string, revisionId: string, signal?: AbortSignal): Promise<{
|
|
886
|
+
triggers: {
|
|
887
|
+
triggerId: string;
|
|
888
|
+
kind: string;
|
|
889
|
+
name?: string | undefined;
|
|
890
|
+
}[];
|
|
891
|
+
actorId: string;
|
|
892
|
+
createdAt: string;
|
|
893
|
+
digest: string;
|
|
894
|
+
modelVersion: number;
|
|
895
|
+
parentRevisionId: string | null;
|
|
896
|
+
flowId: string;
|
|
897
|
+
revisionId: string;
|
|
898
|
+
version: 1;
|
|
899
|
+
}>;
|
|
883
900
|
listTriggerConfigOptions(flowId: string, nodeId: string, field: string, signal?: AbortSignal): Promise<readonly TriggerConfigOption[]>;
|
|
884
901
|
listConnectorTeams(signal?: AbortSignal): Promise<{
|
|
885
902
|
enabled: boolean;
|
|
@@ -905,7 +922,7 @@ export declare class ControlClient {
|
|
|
905
922
|
listAllConnectorConnections(signal?: AbortSignal, flowId?: string, fresh?: boolean): Promise<readonly ConnectorConnection[]>;
|
|
906
923
|
listConnectorConnections(serviceId: string, signal?: AbortSignal, flowId?: string, fresh?: boolean): Promise<readonly ConnectorConnection[]>;
|
|
907
924
|
createConnectorConnectionPage(serviceId: string, flowId?: string, teamId?: string): Promise<string>;
|
|
908
|
-
readAuthoring(flowId: string, query?: AuthoringRead): Promise<{
|
|
925
|
+
readAuthoring(flowId: string, query?: AuthoringRead | Readonly<Record<string, unknown>>): Promise<{
|
|
909
926
|
flowId: string;
|
|
910
927
|
revision: string;
|
|
911
928
|
data: {
|
|
@@ -915,7 +932,7 @@ export declare class ControlClient {
|
|
|
915
932
|
};
|
|
916
933
|
version: 1;
|
|
917
934
|
}>;
|
|
918
|
-
searchAuthoring(flowId: string, query: AuthoringSearch): Promise<{
|
|
935
|
+
searchAuthoring(flowId: string, query: AuthoringSearch | Readonly<Record<string, unknown>>): Promise<{
|
|
919
936
|
flowId: string;
|
|
920
937
|
revision: string;
|
|
921
938
|
data: {
|
|
@@ -933,8 +950,11 @@ export declare class ControlClient {
|
|
|
933
950
|
authoringSchema(flowId: string, query: {
|
|
934
951
|
type?: AuthoringType;
|
|
935
952
|
action?: string;
|
|
936
|
-
}): Promise<Readonly<Record<string, unknown>>>;
|
|
937
|
-
editAuthoring(flowId: string, request: AuthoringRequest
|
|
953
|
+
} | Readonly<Record<string, unknown>>): Promise<Readonly<Record<string, unknown>>>;
|
|
954
|
+
editAuthoring(flowId: string, request: AuthoringRequest | {
|
|
955
|
+
readonly requestId: string;
|
|
956
|
+
readonly [key: string]: unknown;
|
|
957
|
+
}): Promise<{
|
|
938
958
|
flowId: string;
|
|
939
959
|
saved: true;
|
|
940
960
|
revision: string;
|
|
@@ -5783,7 +5783,7 @@ var keySchema = string$1().min(1).refine((value) => new TextEncoder().encode(val
|
|
|
5783
5783
|
strictObject({
|
|
5784
5784
|
scope: _enum(["draft", "live"]),
|
|
5785
5785
|
values: literal(false).optional()
|
|
5786
|
-
});
|
|
5786
|
+
}).omit({ values: true });
|
|
5787
5787
|
strictObject({
|
|
5788
5788
|
scope: _enum(["draft", "live"]),
|
|
5789
5789
|
keys: array(keySchema).min(1).max(stateReadLimits.maxKeys).refine((keys) => new Set(keys).size === keys.length, "State keys must be distinct.")
|
|
@@ -5796,6 +5796,7 @@ strictObject({
|
|
|
5796
5796
|
scope: _enum(["draft", "live"]),
|
|
5797
5797
|
space: string$1().regex(/^(flow|node:.+)$/)
|
|
5798
5798
|
});
|
|
5799
|
+
strictObject({ scope: _enum(["draft", "live"]) });
|
|
5799
5800
|
var skipDuplicatesConfigSchema = strictObject({ fields: array(string$1().refine((field) => field.length > 0 && field.split(".").every((part) => part.length > 0), "Use a nonempty dot-separated field path.")).refine((fields) => new Set(fields).size === fields.length, "Identity fields must be distinct.").default([]) });
|
|
5800
5801
|
var skipDuplicatesExecutorSchema = skipDuplicatesConfigSchema.extend({ kind: literal("skip-duplicates") });
|
|
5801
5802
|
var flowStateViewSchema = object({
|
|
@@ -5821,6 +5822,10 @@ var flowStateViewSchema = object({
|
|
|
5821
5822
|
updatedAt: number()
|
|
5822
5823
|
}))
|
|
5823
5824
|
});
|
|
5825
|
+
var flowStateSummarySchema = flowStateViewSchema.extend({ values: strictObject({
|
|
5826
|
+
count: number().int().nonnegative(),
|
|
5827
|
+
updatedAt: number().nullable()
|
|
5828
|
+
}) });
|
|
5824
5829
|
var flowStateValuesSchema = object({
|
|
5825
5830
|
version: literal(1),
|
|
5826
5831
|
scope: _enum(["draft", "live"]),
|
|
@@ -10744,7 +10749,7 @@ function leinaBots(value) {
|
|
|
10744
10749
|
}
|
|
10745
10750
|
function accessPermissions(value) {
|
|
10746
10751
|
const source = record(value);
|
|
10747
|
-
|
|
10752
|
+
requiredFields(source, [
|
|
10748
10753
|
"actionIds",
|
|
10749
10754
|
"allActions",
|
|
10750
10755
|
"triggerIds",
|
|
@@ -10782,19 +10787,15 @@ function accessBinding(value, candidate) {
|
|
|
10782
10787
|
const legacy = Object.hasOwn(source, "displayName") && !Object.hasOwn(source, "connectionDisplayName");
|
|
10783
10788
|
const permissions = candidate && Object.hasOwn(source, "permissions") ? accessPermissions(source.permissions) : void 0;
|
|
10784
10789
|
const permissionGroupName = source.permissionGroupName;
|
|
10785
|
-
|
|
10790
|
+
requiredFields(source, [
|
|
10786
10791
|
"accessBindingId",
|
|
10787
10792
|
"connectionId",
|
|
10788
10793
|
"source",
|
|
10789
10794
|
legacy ? "displayName" : "connectionDisplayName",
|
|
10790
|
-
...candidate && Object.hasOwn(source, "isDefault") ? ["isDefault"] : [],
|
|
10791
|
-
...candidate && permissions != null ? ["permissions"] : [],
|
|
10792
|
-
...Object.hasOwn(source, "permissionGroupName") ? ["permissionGroupName"] : [],
|
|
10793
|
-
...policyRevision == null ? [] : ["policyRevision"],
|
|
10794
10795
|
"providerId",
|
|
10795
10796
|
...candidate ? [] : ["status"]
|
|
10796
10797
|
]);
|
|
10797
|
-
if (policyRevision
|
|
10798
|
+
if (policyRevision !== void 0 && typeof policyRevision != "string") return invalidResponse("policyRevision: expected a string.");
|
|
10798
10799
|
if (candidate && isDefault !== void 0 && typeof isDefault != "boolean") return invalidResponse("isDefault: expected a boolean.");
|
|
10799
10800
|
if (permissionGroupName !== void 0 && permissionGroupName !== null && typeof permissionGroupName != "string") return invalidResponse("permissionGroupName: expected a string or null.");
|
|
10800
10801
|
if (!candidate && status != "active" && status != "forbidden" && status != "invalid" && status != "missing") return invalidResponse();
|
|
@@ -10823,13 +10824,11 @@ function accessMode(value) {
|
|
|
10823
10824
|
}
|
|
10824
10825
|
function connectorAccess(value) {
|
|
10825
10826
|
const source = record(value);
|
|
10826
|
-
|
|
10827
|
+
requiredFields(source, [
|
|
10827
10828
|
"accessRevision",
|
|
10828
10829
|
"bindings",
|
|
10829
10830
|
"mode",
|
|
10830
10831
|
"sharedAccessDigest",
|
|
10831
|
-
..."providerIds" in source ? ["providerIds"] : [],
|
|
10832
|
-
..."discardedBindingCount" in source ? ["discardedBindingCount"] : [],
|
|
10833
10832
|
"version"
|
|
10834
10833
|
]);
|
|
10835
10834
|
const accessRevision = integer(source.accessRevision);
|
|
@@ -10870,13 +10869,12 @@ function accessGrants(value) {
|
|
|
10870
10869
|
if (!Array.isArray(value)) return invalidResponse();
|
|
10871
10870
|
const bindings = value.map((candidate) => {
|
|
10872
10871
|
const entry = record(candidate);
|
|
10873
|
-
|
|
10872
|
+
requiredFields(entry, [
|
|
10874
10873
|
"accessBindingId",
|
|
10875
10874
|
"connectionId",
|
|
10876
10875
|
"providerId",
|
|
10877
10876
|
"source",
|
|
10878
|
-
"connectionDisplayName"
|
|
10879
|
-
..."permissionGroupName" in entry ? ["permissionGroupName"] : []
|
|
10877
|
+
"connectionDisplayName"
|
|
10880
10878
|
]);
|
|
10881
10879
|
let identity;
|
|
10882
10880
|
try {
|
|
@@ -10899,7 +10897,7 @@ function accessGrants(value) {
|
|
|
10899
10897
|
}
|
|
10900
10898
|
function connectorAccessSnapshot(value) {
|
|
10901
10899
|
const source = record(value);
|
|
10902
|
-
|
|
10900
|
+
requiredFields(source, [
|
|
10903
10901
|
"mode",
|
|
10904
10902
|
"sharedAccessDigest",
|
|
10905
10903
|
"sharedBindings",
|
|
@@ -10921,7 +10919,7 @@ function connectorAccessSnapshot(value) {
|
|
|
10921
10919
|
}
|
|
10922
10920
|
function connectorAccessCandidates(value, providerId) {
|
|
10923
10921
|
const source = record(value);
|
|
10924
|
-
|
|
10922
|
+
requiredFields(source, [
|
|
10925
10923
|
"candidates",
|
|
10926
10924
|
"mode",
|
|
10927
10925
|
"providerId",
|
|
@@ -10942,7 +10940,7 @@ function connectorAccessCandidates(value, providerId) {
|
|
|
10942
10940
|
}
|
|
10943
10941
|
function connectorAccessCandidatesBatch(value, providerIds) {
|
|
10944
10942
|
const source = record(value);
|
|
10945
|
-
|
|
10943
|
+
requiredFields(source, ["results", "version"]);
|
|
10946
10944
|
if (source.version != 1) return invalidResponse("version: expected 1.");
|
|
10947
10945
|
if (!Array.isArray(source.results)) return invalidResponse("results: expected an array.");
|
|
10948
10946
|
const remaining = new Set(providerIds);
|
|
@@ -10951,9 +10949,9 @@ function connectorAccessCandidatesBatch(value, providerIds) {
|
|
|
10951
10949
|
const providerId = string(item.providerId);
|
|
10952
10950
|
if (!remaining.delete(providerId)) return invalidResponse("results[].providerId: duplicate or unrequested provider.");
|
|
10953
10951
|
if (!Object.hasOwn(item, "error")) return connectorAccessCandidates(item, providerId);
|
|
10954
|
-
|
|
10952
|
+
requiredFields(item, ["providerId", "error"]);
|
|
10955
10953
|
const error = record(item.error);
|
|
10956
|
-
|
|
10954
|
+
requiredFields(error, ["code", "message"]);
|
|
10957
10955
|
return {
|
|
10958
10956
|
providerId,
|
|
10959
10957
|
error: {
|
|
@@ -12128,6 +12126,25 @@ function draft(value) {
|
|
|
12128
12126
|
return invalidResponse();
|
|
12129
12127
|
}
|
|
12130
12128
|
}
|
|
12129
|
+
function revisionTriggers(value) {
|
|
12130
|
+
const source = record(value);
|
|
12131
|
+
const graph = record(record(record(source.content).document).graph);
|
|
12132
|
+
const triggers = Object.entries(record(graph.nodes)).flatMap(([triggerId, entry]) => {
|
|
12133
|
+
const node = record(entry);
|
|
12134
|
+
if (node.kind == "outputs" || Object.hasOwn(node, "inputs")) return [];
|
|
12135
|
+
const kind = string(node.kind);
|
|
12136
|
+
if (node.name !== void 0 && typeof node.name != "string") return invalidResponse();
|
|
12137
|
+
return [{
|
|
12138
|
+
triggerId: string(triggerId),
|
|
12139
|
+
kind,
|
|
12140
|
+
...node.name === void 0 ? {} : { name: node.name }
|
|
12141
|
+
}];
|
|
12142
|
+
});
|
|
12143
|
+
return {
|
|
12144
|
+
...revisionMetadata(source),
|
|
12145
|
+
triggers
|
|
12146
|
+
};
|
|
12147
|
+
}
|
|
12131
12148
|
function presentation(value) {
|
|
12132
12149
|
const source = record(value);
|
|
12133
12150
|
if (source.version != 1 || integer(source.revision) < 1) return invalidResponse();
|
|
@@ -12887,6 +12904,10 @@ var ControlClient = class {
|
|
|
12887
12904
|
const result = flowStateViewSchema.safeParse(await this.request(`/v1/flows/${segment(flowId)}/state?scope=${scope}`));
|
|
12888
12905
|
return result.success && result.data.scope === scope ? result.data : invalidResponse();
|
|
12889
12906
|
}
|
|
12907
|
+
async getFlowStateSummary(flowId, scope, signal) {
|
|
12908
|
+
const result = flowStateSummarySchema.safeParse(await this.request(`/v1/flows/${segment(flowId)}/state/summary?scope=${scope}`, { signal }));
|
|
12909
|
+
return result.success && result.data.scope === scope ? result.data : invalidResponse();
|
|
12910
|
+
}
|
|
12890
12911
|
async getFlowStateValues(flowId, scope, keys, signal) {
|
|
12891
12912
|
const result = flowStateValuesSchema.safeParse(await this.request(`/v1/flows/${segment(flowId)}/state/read`, {
|
|
12892
12913
|
method: "POST",
|
|
@@ -12907,6 +12928,10 @@ var ControlClient = class {
|
|
|
12907
12928
|
const source = record(await this.request(`/v1/flows/${segment(flowId)}/dedupe?scope=${scope}&space=${encodeURIComponent(space)}`, { method: "DELETE" }));
|
|
12908
12929
|
if (source.version !== 1 || source.cleared !== true) invalidResponse();
|
|
12909
12930
|
}
|
|
12931
|
+
async clearAllFlowDedupe(flowId, scope) {
|
|
12932
|
+
const source = record(await this.request(`/v1/flows/${segment(flowId)}/dedupe/all?scope=${scope}`, { method: "DELETE" }));
|
|
12933
|
+
if (source.version !== 1 || source.cleared !== true) invalidResponse();
|
|
12934
|
+
}
|
|
12910
12935
|
async renameFlow(flowId, name) {
|
|
12911
12936
|
return this.updateFlow(flowId, { name });
|
|
12912
12937
|
}
|
|
@@ -13019,6 +13044,11 @@ var ControlClient = class {
|
|
|
13019
13044
|
async getRevision(flowId, revisionId, signal) {
|
|
13020
13045
|
return draft(await this.request(`/v1/flows/${segment(flowId)}/revisions/${segment(revisionId)}`, { signal }));
|
|
13021
13046
|
}
|
|
13047
|
+
async getRevisionTriggers(flowId, revisionId, signal) {
|
|
13048
|
+
const revision = revisionTriggers(await this.request(`/v1/flows/${segment(flowId)}/revisions/${segment(revisionId)}`, { signal }));
|
|
13049
|
+
if (revision.flowId != flowId || revision.revisionId != revisionId) return invalidResponse();
|
|
13050
|
+
return revision;
|
|
13051
|
+
}
|
|
13022
13052
|
async listTriggerConfigOptions(flowId, nodeId, field, signal) {
|
|
13023
13053
|
const source = record(await this.request(`/v1/flows/${segment(flowId)}/triggers/${segment(nodeId)}/options/${segment(field)}`, { signal }));
|
|
13024
13054
|
requiredFields(source, ["options", "version"]);
|
|
@@ -12483,7 +12483,7 @@ var keySchema = string().min(1).refine((value) => new TextEncoder().encode(value
|
|
|
12483
12483
|
strictObject({
|
|
12484
12484
|
scope: _enum(["draft", "live"]),
|
|
12485
12485
|
values: literal(false).optional()
|
|
12486
|
-
});
|
|
12486
|
+
}).omit({ values: true });
|
|
12487
12487
|
var stateReadSchema = strictObject({
|
|
12488
12488
|
scope: _enum(["draft", "live"]),
|
|
12489
12489
|
keys: array(keySchema).min(1).max(stateReadLimits.maxKeys).refine((keys) => new Set(keys).size === keys.length, "State keys must be distinct.")
|
|
@@ -12496,6 +12496,7 @@ strictObject({
|
|
|
12496
12496
|
scope: _enum(["draft", "live"]),
|
|
12497
12497
|
space: string().regex(/^(flow|node:.+)$/)
|
|
12498
12498
|
});
|
|
12499
|
+
strictObject({ scope: _enum(["draft", "live"]) });
|
|
12499
12500
|
var skipDuplicatesConfigSchema = strictObject({ fields: array(string().refine((field) => field.length > 0 && field.split(".").every((part) => part.length > 0), "Use a nonempty dot-separated field path.")).refine((fields) => new Set(fields).size === fields.length, "Identity fields must be distinct.").default([]) });
|
|
12500
12501
|
var skipDuplicatesExecutorSchema = skipDuplicatesConfigSchema.extend({ kind: literal("skip-duplicates") });
|
|
12501
12502
|
function skipDuplicatesTask(config = skipDuplicatesConfigSchema.parse({}), name = "Skip Duplicates") {
|
|
@@ -12539,7 +12540,10 @@ object$1({
|
|
|
12539
12540
|
reservedCount: number().nonnegative(),
|
|
12540
12541
|
updatedAt: number()
|
|
12541
12542
|
}))
|
|
12542
|
-
})
|
|
12543
|
+
}).extend({ values: strictObject({
|
|
12544
|
+
count: number().int().nonnegative(),
|
|
12545
|
+
updatedAt: number().nullable()
|
|
12546
|
+
}) });
|
|
12543
12547
|
object$1({
|
|
12544
12548
|
version: literal(1),
|
|
12545
12549
|
scope: _enum(["draft", "live"]),
|
|
@@ -8770,7 +8770,7 @@ var keySchema = string().min(1).refine((value) => new TextEncoder().encode(value
|
|
|
8770
8770
|
strictObject({
|
|
8771
8771
|
scope: _enum(["draft", "live"]),
|
|
8772
8772
|
values: literal(false).optional()
|
|
8773
|
-
});
|
|
8773
|
+
}).omit({ values: true });
|
|
8774
8774
|
strictObject({
|
|
8775
8775
|
scope: _enum(["draft", "live"]),
|
|
8776
8776
|
keys: array(keySchema).min(1).max(stateReadLimits.maxKeys).refine((keys) => new Set(keys).size === keys.length, "State keys must be distinct.")
|
|
@@ -8783,6 +8783,7 @@ strictObject({
|
|
|
8783
8783
|
scope: _enum(["draft", "live"]),
|
|
8784
8784
|
space: string().regex(/^(flow|node:.+)$/)
|
|
8785
8785
|
});
|
|
8786
|
+
strictObject({ scope: _enum(["draft", "live"]) });
|
|
8786
8787
|
var skipDuplicatesExecutorSchema = strictObject({ fields: array(string().refine((field) => field.length > 0 && field.split(".").every((part) => part.length > 0), "Use a nonempty dot-separated field path.")).refine((fields) => new Set(fields).size === fields.length, "Identity fields must be distinct.").default([]) }).extend({ kind: literal("skip-duplicates") });
|
|
8787
8788
|
object({
|
|
8788
8789
|
version: literal(1),
|
|
@@ -8806,7 +8807,10 @@ object({
|
|
|
8806
8807
|
reservedCount: number().nonnegative(),
|
|
8807
8808
|
updatedAt: number()
|
|
8808
8809
|
}))
|
|
8809
|
-
})
|
|
8810
|
+
}).extend({ values: strictObject({
|
|
8811
|
+
count: number().int().nonnegative(),
|
|
8812
|
+
updatedAt: number().nullable()
|
|
8813
|
+
}) });
|
|
8810
8814
|
object({
|
|
8811
8815
|
version: literal(1),
|
|
8812
8816
|
scope: _enum(["draft", "live"]),
|
|
@@ -8843,7 +8843,7 @@ var keySchema = string().min(1).refine((value) => new TextEncoder().encode(value
|
|
|
8843
8843
|
strictObject({
|
|
8844
8844
|
scope: _enum(["draft", "live"]),
|
|
8845
8845
|
values: literal(false).optional()
|
|
8846
|
-
});
|
|
8846
|
+
}).omit({ values: true });
|
|
8847
8847
|
strictObject({
|
|
8848
8848
|
scope: _enum(["draft", "live"]),
|
|
8849
8849
|
keys: array(keySchema).min(1).max(stateReadLimits.maxKeys).refine((keys) => new Set(keys).size === keys.length, "State keys must be distinct.")
|
|
@@ -8856,6 +8856,7 @@ strictObject({
|
|
|
8856
8856
|
scope: _enum(["draft", "live"]),
|
|
8857
8857
|
space: string().regex(/^(flow|node:.+)$/)
|
|
8858
8858
|
});
|
|
8859
|
+
strictObject({ scope: _enum(["draft", "live"]) });
|
|
8859
8860
|
var skipDuplicatesExecutorSchema = strictObject({ fields: array(string().refine((field) => field.length > 0 && field.split(".").every((part) => part.length > 0), "Use a nonempty dot-separated field path.")).refine((fields) => new Set(fields).size === fields.length, "Identity fields must be distinct.").default([]) }).extend({ kind: literal("skip-duplicates") });
|
|
8860
8861
|
object({
|
|
8861
8862
|
version: literal(1),
|
|
@@ -8879,7 +8880,10 @@ object({
|
|
|
8879
8880
|
reservedCount: number().nonnegative(),
|
|
8880
8881
|
updatedAt: number()
|
|
8881
8882
|
}))
|
|
8882
|
-
})
|
|
8883
|
+
}).extend({ values: strictObject({
|
|
8884
|
+
count: number().int().nonnegative(),
|
|
8885
|
+
updatedAt: number().nullable()
|
|
8886
|
+
}) });
|
|
8883
8887
|
object({
|
|
8884
8888
|
version: literal(1),
|
|
8885
8889
|
scope: _enum(["draft", "live"]),
|
|
@@ -8614,7 +8614,7 @@ var keySchema = string().min(1).refine((value) => new TextEncoder().encode(value
|
|
|
8614
8614
|
strictObject({
|
|
8615
8615
|
scope: _enum(["draft", "live"]),
|
|
8616
8616
|
values: literal(false).optional()
|
|
8617
|
-
});
|
|
8617
|
+
}).omit({ values: true });
|
|
8618
8618
|
strictObject({
|
|
8619
8619
|
scope: _enum(["draft", "live"]),
|
|
8620
8620
|
keys: array(keySchema).min(1).max(stateReadLimits.maxKeys).refine((keys) => new Set(keys).size === keys.length, "State keys must be distinct.")
|
|
@@ -8627,6 +8627,7 @@ strictObject({
|
|
|
8627
8627
|
scope: _enum(["draft", "live"]),
|
|
8628
8628
|
space: string().regex(/^(flow|node:.+)$/)
|
|
8629
8629
|
});
|
|
8630
|
+
strictObject({ scope: _enum(["draft", "live"]) });
|
|
8630
8631
|
var skipDuplicatesExecutorSchema = strictObject({ fields: array(string().refine((field) => field.length > 0 && field.split(".").every((part) => part.length > 0), "Use a nonempty dot-separated field path.")).refine((fields) => new Set(fields).size === fields.length, "Identity fields must be distinct.").default([]) }).extend({ kind: literal("skip-duplicates") });
|
|
8631
8632
|
object({
|
|
8632
8633
|
version: literal(1),
|
|
@@ -8650,7 +8651,10 @@ object({
|
|
|
8650
8651
|
reservedCount: number().nonnegative(),
|
|
8651
8652
|
updatedAt: number()
|
|
8652
8653
|
}))
|
|
8653
|
-
})
|
|
8654
|
+
}).extend({ values: strictObject({
|
|
8655
|
+
count: number().int().nonnegative(),
|
|
8656
|
+
updatedAt: number().nullable()
|
|
8657
|
+
}) });
|
|
8654
8658
|
object({
|
|
8655
8659
|
version: literal(1),
|
|
8656
8660
|
scope: _enum(["draft", "live"]),
|
|
@@ -10372,7 +10372,7 @@ var keySchema = string().min(1).refine((value) => new TextEncoder().encode(value
|
|
|
10372
10372
|
strictObject({
|
|
10373
10373
|
scope: _enum(["draft", "live"]),
|
|
10374
10374
|
values: literal(false).optional()
|
|
10375
|
-
});
|
|
10375
|
+
}).omit({ values: true });
|
|
10376
10376
|
strictObject({
|
|
10377
10377
|
scope: _enum(["draft", "live"]),
|
|
10378
10378
|
keys: array(keySchema).min(1).max(stateReadLimits.maxKeys).refine((keys) => new Set(keys).size === keys.length, "State keys must be distinct.")
|
|
@@ -10385,6 +10385,7 @@ strictObject({
|
|
|
10385
10385
|
scope: _enum(["draft", "live"]),
|
|
10386
10386
|
space: string().regex(/^(flow|node:.+)$/)
|
|
10387
10387
|
});
|
|
10388
|
+
strictObject({ scope: _enum(["draft", "live"]) });
|
|
10388
10389
|
var skipDuplicatesConfigSchema = strictObject({ fields: array(string().refine((field) => field.length > 0 && field.split(".").every((part) => part.length > 0), "Use a nonempty dot-separated field path.")).refine((fields) => new Set(fields).size === fields.length, "Identity fields must be distinct.").default([]) });
|
|
10389
10390
|
var skipDuplicatesExecutorSchema = skipDuplicatesConfigSchema.extend({ kind: literal("skip-duplicates") });
|
|
10390
10391
|
function skipDuplicatesTask(config = skipDuplicatesConfigSchema.parse({}), name = "Skip Duplicates") {
|
|
@@ -10428,7 +10429,10 @@ object$1({
|
|
|
10428
10429
|
reservedCount: number().nonnegative(),
|
|
10429
10430
|
updatedAt: number()
|
|
10430
10431
|
}))
|
|
10431
|
-
})
|
|
10432
|
+
}).extend({ values: strictObject({
|
|
10433
|
+
count: number().int().nonnegative(),
|
|
10434
|
+
updatedAt: number().nullable()
|
|
10435
|
+
}) });
|
|
10432
10436
|
object$1({
|
|
10433
10437
|
version: literal(1),
|
|
10434
10438
|
scope: _enum(["draft", "live"]),
|
|
@@ -13,6 +13,12 @@ export declare const stateQuerySchema: z.ZodObject<{
|
|
|
13
13
|
}>;
|
|
14
14
|
values: z.ZodOptional<z.ZodLiteral<false>>;
|
|
15
15
|
}, z.core.$strict>;
|
|
16
|
+
export declare const stateSummaryQuerySchema: z.ZodObject<{
|
|
17
|
+
scope: z.ZodEnum<{
|
|
18
|
+
draft: "draft";
|
|
19
|
+
live: "live";
|
|
20
|
+
}>;
|
|
21
|
+
}, z.core.$strict>;
|
|
16
22
|
export declare const stateReadSchema: z.ZodObject<{
|
|
17
23
|
scope: z.ZodEnum<{
|
|
18
24
|
draft: "draft";
|
|
@@ -35,6 +41,12 @@ export declare const dedupeClearSchema: z.ZodObject<{
|
|
|
35
41
|
}>;
|
|
36
42
|
space: z.ZodString;
|
|
37
43
|
}, z.core.$strict>;
|
|
44
|
+
export declare const dedupeClearAllSchema: z.ZodObject<{
|
|
45
|
+
scope: z.ZodEnum<{
|
|
46
|
+
draft: "draft";
|
|
47
|
+
live: "live";
|
|
48
|
+
}>;
|
|
49
|
+
}, z.core.$strict>;
|
|
38
50
|
export type DedupeIdentity = string | number;
|
|
39
51
|
export declare const skipDuplicatesConfigSchema: z.ZodObject<{
|
|
40
52
|
fields: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
@@ -108,6 +120,41 @@ export declare const flowStateViewSchema: z.ZodObject<{
|
|
|
108
120
|
updatedAt: z.ZodNumber;
|
|
109
121
|
}, z.core.$strip>>;
|
|
110
122
|
}, z.core.$strip>;
|
|
123
|
+
export interface FlowStateSummary {
|
|
124
|
+
readonly version: 1;
|
|
125
|
+
readonly scope: StateScope;
|
|
126
|
+
readonly limits: FlowStateView['limits'];
|
|
127
|
+
readonly values: {
|
|
128
|
+
readonly count: number;
|
|
129
|
+
readonly updatedAt: number | null;
|
|
130
|
+
};
|
|
131
|
+
readonly spaces: FlowStateView['spaces'];
|
|
132
|
+
}
|
|
133
|
+
export declare const flowStateSummarySchema: z.ZodObject<{
|
|
134
|
+
version: z.ZodLiteral<1>;
|
|
135
|
+
scope: z.ZodEnum<{
|
|
136
|
+
draft: "draft";
|
|
137
|
+
live: "live";
|
|
138
|
+
}>;
|
|
139
|
+
limits: z.ZodObject<{
|
|
140
|
+
maxValueBytes: z.ZodNumber;
|
|
141
|
+
maxValues: z.ZodNumber;
|
|
142
|
+
maxSpaces: z.ZodNumber;
|
|
143
|
+
maxIdentities: z.ZodNumber;
|
|
144
|
+
maxRunWrites: z.ZodNumber;
|
|
145
|
+
}, z.core.$strip>;
|
|
146
|
+
spaces: z.ZodArray<z.ZodObject<{
|
|
147
|
+
space: z.ZodString;
|
|
148
|
+
count: z.ZodNumber;
|
|
149
|
+
pendingCount: z.ZodNumber;
|
|
150
|
+
reservedCount: z.ZodNumber;
|
|
151
|
+
updatedAt: z.ZodNumber;
|
|
152
|
+
}, z.core.$strip>>;
|
|
153
|
+
values: z.ZodObject<{
|
|
154
|
+
count: z.ZodNumber;
|
|
155
|
+
updatedAt: z.ZodNullable<z.ZodNumber>;
|
|
156
|
+
}, z.core.$strict>;
|
|
157
|
+
}, z.core.$strip>;
|
|
111
158
|
export interface FlowStateValues {
|
|
112
159
|
readonly version: 1;
|
|
113
160
|
readonly scope: StateScope;
|