@ifc-lite/flow 0.4.1 → 0.6.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/README.md +33 -0
- package/dist/checkpoint-file.d.ts +13 -0
- package/dist/checkpoint-file.d.ts.map +1 -0
- package/dist/checkpoint-file.js +92 -0
- package/dist/checkpoint-file.js.map +1 -0
- package/dist/checkpoint-record.d.ts +97 -0
- package/dist/checkpoint-record.d.ts.map +1 -0
- package/dist/checkpoint-record.js +255 -0
- package/dist/checkpoint-record.js.map +1 -0
- package/dist/checkpoint-state.d.ts +53 -0
- package/dist/checkpoint-state.d.ts.map +1 -0
- package/dist/checkpoint-state.js +190 -0
- package/dist/checkpoint-state.js.map +1 -0
- package/dist/checkpoint.d.ts +10 -0
- package/dist/checkpoint.d.ts.map +1 -0
- package/dist/checkpoint.js +11 -0
- package/dist/checkpoint.js.map +1 -0
- package/dist/document.d.ts +12 -4
- package/dist/document.d.ts.map +1 -1
- package/dist/document.js +23 -5
- package/dist/document.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/introspect.d.ts +2 -1
- package/dist/introspect.d.ts.map +1 -1
- package/dist/introspect.js +1 -1
- package/dist/introspect.js.map +1 -1
- package/dist/order.d.ts +9 -0
- package/dist/order.d.ts.map +1 -0
- package/dist/order.js +37 -0
- package/dist/order.js.map +1 -0
- package/dist/orphans.d.ts.map +1 -1
- package/dist/orphans.js +6 -0
- package/dist/orphans.js.map +1 -1
- package/dist/registry.d.ts +7 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js.map +1 -1
- package/dist/scheduler.d.ts +15 -19
- package/dist/scheduler.d.ts.map +1 -1
- package/dist/scheduler.js +59 -62
- package/dist/scheduler.js.map +1 -1
- package/dist/tracking-progress.d.ts +7 -0
- package/dist/tracking-progress.d.ts.map +1 -0
- package/dist/tracking-progress.js +51 -0
- package/dist/tracking-progress.js.map +1 -0
- package/dist/write-accounting.d.ts +4 -0
- package/dist/write-accounting.d.ts.map +1 -0
- package/dist/write-accounting.js +15 -0
- package/dist/write-accounting.js.map +1 -0
- package/package.json +13 -3
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/**
|
|
5
|
+
* Review checkpoint lifecycle (#6923):
|
|
6
|
+
*
|
|
7
|
+
* prepared ──approve(digest)──▶ reviewed ──claim──▶ applying ──finish──▶ completed
|
|
8
|
+
* │ │ └─finish(failed)─▶ partially-committed
|
|
9
|
+
* └──reject──▶ rejected └─lease expired (recover)─▶ partially-committed
|
|
10
|
+
*
|
|
11
|
+
* Every transition is a pure function that throws a `CheckpointError` when
|
|
12
|
+
* the record is not in the state it requires. `updateCheckpoint` applies one
|
|
13
|
+
* through a store's compare-and-swap write and re-applies it to the fresh
|
|
14
|
+
* record on a conflict, so two tabs or processes racing to claim the same
|
|
15
|
+
* reviewed checkpoint cannot both win: the loser re-reads `applying` and is
|
|
16
|
+
* refused. A claim also re-checks the graph and source digests, so a resume
|
|
17
|
+
* never applies a proposal to a graph or model that changed after review.
|
|
18
|
+
*
|
|
19
|
+
* A checkpoint whose owner vanished mid-resume is not handed to anyone else:
|
|
20
|
+
* the effects it may have committed are unknown, so recovery marks it
|
|
21
|
+
* `partially-committed`, which blocks any further resume until the user runs
|
|
22
|
+
* the graph again as a new root.
|
|
23
|
+
*/
|
|
24
|
+
import { digest } from './digest.js';
|
|
25
|
+
import { CHECKPOINT_VERSION, registerOwnedClaim, nonPortable, proposalDigestOf, validPortableOutputs } from './checkpoint-record.js';
|
|
26
|
+
export class CheckpointError extends Error {
|
|
27
|
+
code;
|
|
28
|
+
constructor(code, message) {
|
|
29
|
+
super(message);
|
|
30
|
+
this.code = code;
|
|
31
|
+
this.name = 'CheckpointError';
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const STATES = ['prepared', 'reviewed', 'rejected', 'applying', 'partially-committed', 'completed'];
|
|
35
|
+
function isRecord(v) {
|
|
36
|
+
return !!v && typeof v === 'object' && !Array.isArray(v);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Validate an untrusted checkpoint (a file handed to a headless host, a
|
|
40
|
+
* stored row). The proposal digest is recomputed from the stored outputs, so
|
|
41
|
+
* a bundle whose values were edited after review no longer matches its
|
|
42
|
+
* approval and cannot be claimed.
|
|
43
|
+
*/
|
|
44
|
+
export function parseCheckpoint(value) {
|
|
45
|
+
const bad = (why) => { throw new CheckpointError('invalid', `not a Flow review checkpoint: ${why}`); };
|
|
46
|
+
if (!isRecord(value))
|
|
47
|
+
return bad('must be an object');
|
|
48
|
+
if (value.version !== CHECKPOINT_VERSION)
|
|
49
|
+
bad(`unsupported version ${String(value.version)}`);
|
|
50
|
+
for (const key of ['id', 'graphId', 'graphName', 'graphDigest', 'sourceDigest', 'proposalDigest']) {
|
|
51
|
+
if (typeof value[key] !== 'string')
|
|
52
|
+
bad(`"${key}" must be a string`);
|
|
53
|
+
}
|
|
54
|
+
if (!STATES.includes(value.state))
|
|
55
|
+
bad(`unknown state "${String(value.state)}"`);
|
|
56
|
+
if (!Array.isArray(value.reviewNodes) || value.reviewNodes.length === 0 || !value.reviewNodes.every((n) => typeof n === 'string'))
|
|
57
|
+
bad('"reviewNodes" must list node ids');
|
|
58
|
+
if (!isRecord(value.outputs) || !Object.values(value.outputs).every(isRecord))
|
|
59
|
+
bad('"outputs" must map node ids to ports');
|
|
60
|
+
if (typeof value.createdAt !== 'number' || typeof value.updatedAt !== 'number')
|
|
61
|
+
bad('timestamps must be numbers');
|
|
62
|
+
if (!validPortableOutputs(value.outputs))
|
|
63
|
+
bad('outputs contain malformed or non-portable flow data');
|
|
64
|
+
if (!Number.isFinite(value.createdAt) || !Number.isFinite(value.updatedAt))
|
|
65
|
+
bad('timestamps must be finite');
|
|
66
|
+
if (value.claim !== undefined && (!isRecord(value.claim) || typeof value.claim.owner !== 'string' || !value.claim.owner.trim()
|
|
67
|
+
|| !Number.isFinite(value.claim.leaseUntil) || !Number.isFinite(value.claim.at)))
|
|
68
|
+
bad('invalid claim');
|
|
69
|
+
if (value.review !== undefined && (!isRecord(value.review) || !['approved', 'rejected'].includes(String(value.review.decision))
|
|
70
|
+
|| typeof value.review.proposalDigest !== 'string' || !Number.isFinite(value.review.at)))
|
|
71
|
+
bad('invalid review');
|
|
72
|
+
const problems = [];
|
|
73
|
+
if (value.budget !== undefined)
|
|
74
|
+
nonPortable(value.budget, 'budget', problems);
|
|
75
|
+
if (problems.length)
|
|
76
|
+
bad('budget must be plain JSON');
|
|
77
|
+
const checkpoint = value;
|
|
78
|
+
if (proposalDigestOf(checkpoint.outputs, checkpoint.reviewNodes, checkpoint.budget) !== checkpoint.proposalDigest) {
|
|
79
|
+
bad('the proposal values do not match the proposal digest');
|
|
80
|
+
}
|
|
81
|
+
return checkpoint;
|
|
82
|
+
}
|
|
83
|
+
function requireState(checkpoint, state, code) {
|
|
84
|
+
if (checkpoint.state !== state)
|
|
85
|
+
throw new CheckpointError(code, `the checkpoint is ${checkpoint.state}, not ${state}`);
|
|
86
|
+
}
|
|
87
|
+
function assertTimestamp(now) {
|
|
88
|
+
if (!Number.isFinite(now))
|
|
89
|
+
throw new CheckpointError('invalid', 'the checkpoint timestamp must be finite');
|
|
90
|
+
}
|
|
91
|
+
/** Approve exactly the proposal the reviewer saw, named by its digest. */
|
|
92
|
+
export function approveCheckpoint(checkpoint, proposalDigest, now = Date.now()) {
|
|
93
|
+
assertTimestamp(now);
|
|
94
|
+
requireState(checkpoint, 'prepared', 'not-prepared');
|
|
95
|
+
if (proposalDigest !== checkpoint.proposalDigest) {
|
|
96
|
+
throw new CheckpointError('digest-mismatch', 'the approval names a different proposal than the one awaiting review');
|
|
97
|
+
}
|
|
98
|
+
return { ...checkpoint, state: 'reviewed', updatedAt: now, review: { decision: 'approved', proposalDigest, at: now } };
|
|
99
|
+
}
|
|
100
|
+
export function rejectCheckpoint(checkpoint, now = Date.now()) {
|
|
101
|
+
assertTimestamp(now);
|
|
102
|
+
requireState(checkpoint, 'prepared', 'not-prepared');
|
|
103
|
+
return { ...checkpoint, state: 'rejected', updatedAt: now, review: { decision: 'rejected', proposalDigest: checkpoint.proposalDigest, at: now } };
|
|
104
|
+
}
|
|
105
|
+
const validatedClaims = new WeakMap();
|
|
106
|
+
/** Take single ownership of a reviewed checkpoint for one resume. */
|
|
107
|
+
export function claimCheckpoint(checkpoint, input) {
|
|
108
|
+
requireState(checkpoint, 'reviewed', 'not-reviewed');
|
|
109
|
+
if (!input.owner.trim())
|
|
110
|
+
throw new CheckpointError('invalid', 'the claim owner must be nonempty');
|
|
111
|
+
parseCheckpoint(checkpoint);
|
|
112
|
+
if (checkpoint.review?.decision !== 'approved' || checkpoint.review.proposalDigest !== checkpoint.proposalDigest) {
|
|
113
|
+
throw new CheckpointError('digest-mismatch', 'the approval does not name this proposal');
|
|
114
|
+
}
|
|
115
|
+
if (input.graphDigest !== checkpoint.graphDigest) {
|
|
116
|
+
throw new CheckpointError('graph-changed', 'the graph or its Player inputs changed after review; run it again for a new review');
|
|
117
|
+
}
|
|
118
|
+
if (input.sourceDigest !== checkpoint.sourceDigest) {
|
|
119
|
+
throw new CheckpointError('sources-changed', 'the models or files the run read changed after review; run it again for a new review');
|
|
120
|
+
}
|
|
121
|
+
const now = input.now ?? Date.now();
|
|
122
|
+
if (!Number.isFinite(input.leaseMs) || input.leaseMs <= 0 || !Number.isFinite(now)
|
|
123
|
+
|| !Number.isFinite(now + input.leaseMs) || now + input.leaseMs <= now) {
|
|
124
|
+
throw new CheckpointError('invalid', 'the claim needs a finite positive lease and timestamp');
|
|
125
|
+
}
|
|
126
|
+
const next = { ...checkpoint, state: 'applying', updatedAt: now, claim: { owner: input.owner, leaseUntil: now + input.leaseMs, at: now } };
|
|
127
|
+
validatedClaims.set(next, { before: digest(checkpoint), after: digest(next) });
|
|
128
|
+
return next;
|
|
129
|
+
}
|
|
130
|
+
/** Record how the owner's resume ended. A failed resume may have committed some effects. */
|
|
131
|
+
export function finishCheckpoint(checkpoint, owner, outcome, now = Date.now()) {
|
|
132
|
+
assertTimestamp(now);
|
|
133
|
+
requireState(checkpoint, 'applying', 'not-owner');
|
|
134
|
+
if (checkpoint.claim?.owner !== owner)
|
|
135
|
+
throw new CheckpointError('not-owner', 'another owner holds this checkpoint');
|
|
136
|
+
return {
|
|
137
|
+
...checkpoint,
|
|
138
|
+
state: outcome.ok ? 'completed' : 'partially-committed',
|
|
139
|
+
updatedAt: now,
|
|
140
|
+
outcome: { ok: outcome.ok, at: now, ...(outcome.message ? { message: outcome.message } : {}) },
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
/** A claim whose lease ran out without a finish: its effects are unknown, so it can never be applied again. */
|
|
144
|
+
export function recoverCheckpoint(checkpoint, now = Date.now()) {
|
|
145
|
+
assertTimestamp(now);
|
|
146
|
+
if (checkpoint.state !== 'applying' || (checkpoint.claim && checkpoint.claim.leaseUntil > now))
|
|
147
|
+
return null;
|
|
148
|
+
return {
|
|
149
|
+
...checkpoint,
|
|
150
|
+
state: 'partially-committed',
|
|
151
|
+
updatedAt: now,
|
|
152
|
+
outcome: { ok: false, at: now, message: 'the resume stopped before it finished; downstream effects may be partial' },
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
const CAS_ATTEMPTS = 5;
|
|
156
|
+
/** Apply one transition through the store's CAS, re-applying it to the fresh record on conflict. */
|
|
157
|
+
export async function updateCheckpoint(store, id, change) {
|
|
158
|
+
for (let attempt = 0; attempt < CAS_ATTEMPTS; attempt++) {
|
|
159
|
+
const stored = await store.read(id);
|
|
160
|
+
if (!stored)
|
|
161
|
+
throw new CheckpointError('invalid', `no checkpoint ${id}`);
|
|
162
|
+
const before = digest(stored.checkpoint);
|
|
163
|
+
const next = change(stored.checkpoint);
|
|
164
|
+
if (await store.write(next, stored.revision)) {
|
|
165
|
+
const validated = validatedClaims.get(next);
|
|
166
|
+
if (validated?.before === before && validated.after === digest(next)) {
|
|
167
|
+
validatedClaims.delete(next);
|
|
168
|
+
registerOwnedClaim(next);
|
|
169
|
+
}
|
|
170
|
+
return next;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
throw new CheckpointError('conflict', 'the checkpoint kept changing while it was being updated');
|
|
174
|
+
}
|
|
175
|
+
/** An in-process store, for tests and single-process hosts. */
|
|
176
|
+
export class MemoryCheckpointStore {
|
|
177
|
+
rows = new Map();
|
|
178
|
+
async read(id) {
|
|
179
|
+
const row = this.rows.get(id);
|
|
180
|
+
return row ? structuredClone(row) : null;
|
|
181
|
+
}
|
|
182
|
+
async write(checkpoint, expected) {
|
|
183
|
+
const current = this.rows.get(checkpoint.id);
|
|
184
|
+
if ((current?.revision ?? null) !== expected)
|
|
185
|
+
return false;
|
|
186
|
+
this.rows.set(checkpoint.id, { checkpoint: structuredClone(checkpoint), revision: (current?.revision ?? 0) + 1 });
|
|
187
|
+
return true;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=checkpoint-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint-state.js","sourceRoot":"","sources":["../src/checkpoint-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@ifc-lite/flow/checkpoint`: review checkpoints for runs that paused at a
|
|
3
|
+
* node declaring `review: 'required'` (#6923). A separate entry, so a host
|
|
4
|
+
* that only runs graphs does not load the checkpoint lifecycle.
|
|
5
|
+
*/
|
|
6
|
+
export { checkpointProposal, createCheckpoint, graphDigest, resumeOutputs } from './checkpoint-record.js';
|
|
7
|
+
export type { CheckpointState, CreateCheckpointInput, FlowCheckpoint, PortableFlowData, PortableOutputs } from './checkpoint-record.js';
|
|
8
|
+
export { approveCheckpoint, CheckpointError, claimCheckpoint, finishCheckpoint, parseCheckpoint, recoverCheckpoint, rejectCheckpoint, updateCheckpoint, } from './checkpoint-state.js';
|
|
9
|
+
export type { CheckpointErrorCode, CheckpointStore, ClaimInput, StoredCheckpoint } from './checkpoint-state.js';
|
|
10
|
+
//# sourceMappingURL=checkpoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../src/checkpoint.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC1G,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACxI,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/**
|
|
5
|
+
* `@ifc-lite/flow/checkpoint`: review checkpoints for runs that paused at a
|
|
6
|
+
* node declaring `review: 'required'` (#6923). A separate entry, so a host
|
|
7
|
+
* that only runs graphs does not load the checkpoint lifecycle.
|
|
8
|
+
*/
|
|
9
|
+
export { checkpointProposal, createCheckpoint, graphDigest, resumeOutputs } from './checkpoint-record.js';
|
|
10
|
+
export { approveCheckpoint, CheckpointError, claimCheckpoint, finishCheckpoint, parseCheckpoint, recoverCheckpoint, rejectCheckpoint, updateCheckpoint, } from './checkpoint-state.js';
|
|
11
|
+
//# sourceMappingURL=checkpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../src/checkpoint.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE1G,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC"}
|
package/dist/document.d.ts
CHANGED
|
@@ -7,10 +7,17 @@
|
|
|
7
7
|
* `tracking.ts`).
|
|
8
8
|
*/
|
|
9
9
|
import type { Lacing } from './values.js';
|
|
10
|
-
export declare const FLOW_VERSION =
|
|
10
|
+
export declare const FLOW_VERSION = 2;
|
|
11
11
|
export type TrackingMode = 'update' | 'replace' | 'disabled';
|
|
12
12
|
/** Player input kinds — what a form can ask for (Dynamo Player parity). */
|
|
13
|
-
export type InputKind = 'scalar' | 'enum' | 'entitySet' | 'storey' | 'file' | 'table';
|
|
13
|
+
export type InputKind = 'scalar' | 'enum' | 'entitySet' | 'storey' | 'file' | 'files' | 'table';
|
|
14
|
+
export interface FlowFileSlot {
|
|
15
|
+
readonly id: string;
|
|
16
|
+
readonly label: string;
|
|
17
|
+
readonly accept: string;
|
|
18
|
+
readonly multiple: boolean;
|
|
19
|
+
readonly required: boolean;
|
|
20
|
+
}
|
|
14
21
|
export interface FlowNode {
|
|
15
22
|
readonly id: string;
|
|
16
23
|
readonly type: string;
|
|
@@ -33,6 +40,7 @@ export interface FlowInput {
|
|
|
33
40
|
readonly label: string;
|
|
34
41
|
readonly kind: InputKind;
|
|
35
42
|
readonly options?: readonly string[];
|
|
43
|
+
readonly fileSlots?: readonly FlowFileSlot[];
|
|
36
44
|
}
|
|
37
45
|
/** "Is Output": a node port shown as a result. */
|
|
38
46
|
export interface FlowOutput {
|
|
@@ -66,8 +74,8 @@ export declare function validateFlowDocument(value: unknown): DocumentProblem[];
|
|
|
66
74
|
/** Parse + validate; throws with every problem listed. */
|
|
67
75
|
export declare function parseFlowDocument(text: string): FlowDocument;
|
|
68
76
|
/**
|
|
69
|
-
* Migration chain: each step lifts `flowVersion` by one.
|
|
70
|
-
*
|
|
77
|
+
* Migration chain: each step lifts `flowVersion` by one. Version 2 adds
|
|
78
|
+
* local file-slot metadata; existing v1 inputs and nodes retain their meaning.
|
|
71
79
|
*/
|
|
72
80
|
export declare function migrateFlowDocument(value: unknown): unknown;
|
|
73
81
|
//# sourceMappingURL=document.d.ts.map
|
package/dist/document.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAE7D,2EAA2E;AAC3E,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"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"}
|
package/dist/document.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
-
export const FLOW_VERSION =
|
|
4
|
+
export const FLOW_VERSION = 2;
|
|
5
5
|
const LACINGS = ['shortest', 'longest', 'cross'];
|
|
6
6
|
const TRACKINGS = ['update', 'replace', 'disabled'];
|
|
7
|
-
const INPUT_KINDS = ['scalar', 'enum', 'entitySet', 'storey', 'file', 'table'];
|
|
7
|
+
const INPUT_KINDS = ['scalar', 'enum', 'entitySet', 'storey', 'file', 'files', 'table'];
|
|
8
8
|
function isRecord(v) {
|
|
9
9
|
return !!v && typeof v === 'object' && !Array.isArray(v);
|
|
10
10
|
}
|
|
@@ -108,6 +108,22 @@ export function validateFlowDocument(value) {
|
|
|
108
108
|
add(`${p}.kind`, `must be one of ${INPUT_KINDS.join(', ')}`);
|
|
109
109
|
if (inp.options !== undefined && !(Array.isArray(inp.options) && inp.options.every(str)))
|
|
110
110
|
add(`${p}.options`, 'must be an array of strings');
|
|
111
|
+
if (inp.kind === 'files') {
|
|
112
|
+
if (!Array.isArray(inp.fileSlots) || inp.fileSlots.length === 0 || inp.fileSlots.length > 100)
|
|
113
|
+
add(`${p}.fileSlots`, 'must contain 1–100 slots');
|
|
114
|
+
else {
|
|
115
|
+
const slots = new Set();
|
|
116
|
+
for (const slot of inp.fileSlots) {
|
|
117
|
+
if (!isRecord(slot) || !str(slot.id) || slots.has(slot.id) || !str(slot.label)
|
|
118
|
+
|| typeof slot.accept !== 'string' || typeof slot.multiple !== 'boolean' || typeof slot.required !== 'boolean')
|
|
119
|
+
add(`${p}.fileSlots`, 'invalid or duplicate file slot');
|
|
120
|
+
else
|
|
121
|
+
slots.add(slot.id);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
else if (inp.fileSlots !== undefined)
|
|
126
|
+
add(`${p}.fileSlots`, 'only files inputs may define slots');
|
|
111
127
|
});
|
|
112
128
|
value.outputs.forEach((o, i) => {
|
|
113
129
|
const p = `outputs[${i}]`;
|
|
@@ -139,8 +155,8 @@ export function parseFlowDocument(text) {
|
|
|
139
155
|
return migrated;
|
|
140
156
|
}
|
|
141
157
|
/**
|
|
142
|
-
* Migration chain: each step lifts `flowVersion` by one.
|
|
143
|
-
*
|
|
158
|
+
* Migration chain: each step lifts `flowVersion` by one. Version 2 adds
|
|
159
|
+
* local file-slot metadata; existing v1 inputs and nodes retain their meaning.
|
|
144
160
|
*/
|
|
145
161
|
export function migrateFlowDocument(value) {
|
|
146
162
|
if (!isRecord(value))
|
|
@@ -154,5 +170,7 @@ export function migrateFlowDocument(value) {
|
|
|
154
170
|
}
|
|
155
171
|
return doc;
|
|
156
172
|
}
|
|
157
|
-
const MIGRATIONS = {
|
|
173
|
+
const MIGRATIONS = {
|
|
174
|
+
1: (doc) => ({ ...doc, flowVersion: 2 }),
|
|
175
|
+
};
|
|
158
176
|
//# sourceMappingURL=document.js.map
|
package/dist/document.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.js","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAa/D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"document.js","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export type { PortDef, ParamDef, ParamKind, LogLevel, LaneTracking, NodeRunConte
|
|
|
8
8
|
export { planLift, assemble, CrossProductTooLarge } from './lift.js';
|
|
9
9
|
export type { LiftInput, Lane, LiftPlan, LiftOptions } from './lift.js';
|
|
10
10
|
export { FLOW_VERSION, validateFlowDocument, parseFlowDocument, migrateFlowDocument } from './document.js';
|
|
11
|
-
export type { TrackingMode, InputKind, FlowNode, FlowEdge, FlowInput, FlowOutput, FlowDocument, DocumentProblem, } from './document.js';
|
|
11
|
+
export type { TrackingMode, InputKind, FlowNode, FlowEdge, FlowInput, FlowFileSlot, FlowOutput, FlowDocument, DocumentProblem, } from './document.js';
|
|
12
12
|
export { TRACKING_SIDECAR_VERSION, emptyTrackedSet, planTracking, trackedSetFrom, withTrackedSet, TrackingPinMismatch, isTrackedSet, trackedSetsFrom, MemoryTrackingStore, } from './tracking.js';
|
|
13
13
|
export type { TrackedEntry, TrackedSet, TrackingSidecar, TrackingStore, DesiredLane, TrackingPlan } from './tracking.js';
|
|
14
14
|
export { validateFlowWiring } from './wiring.js';
|
|
@@ -17,7 +17,8 @@ export type { FlowIO, FlowInputInfo, FlowOutputInfo } from './introspect.js';
|
|
|
17
17
|
export { nodeAvailability, checkAvailability } from './availability.js';
|
|
18
18
|
export type { HostFeatures, AvailabilityStatus, NodeAvailability } from './availability.js';
|
|
19
19
|
export { referencedSecrets, replaceSecretRefs } from './secret-refs.js';
|
|
20
|
-
export { runFlow,
|
|
20
|
+
export { runFlow, MemoCache, DEFAULT_MAX_CROSS } from './scheduler.js';
|
|
21
|
+
export { topologicalOrder, FlowCycleError } from './order.js';
|
|
21
22
|
export { trackingKeyOf, ORPHAN_NODE_ID } from './orphans.js';
|
|
22
23
|
export type { RunOptions, RunResult, RunLogEntry, NodeReport, NodeStatus, GraphOutputValue } from './scheduler.js';
|
|
23
24
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,OAAO,EACP,OAAO,EACP,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,MAAM,EACN,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,QAAQ,EACR,SAAS,EACT,OAAO,EACP,SAAS,EACT,QAAQ,GACT,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC3F,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAElG,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5D,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAEhI,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACrE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC3G,YAAY,EACV,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,UAAU,EACV,YAAY,EACZ,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,YAAY,EACZ,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEzH,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC5G,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAExE,OAAO,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,OAAO,EACP,OAAO,EACP,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,MAAM,EACN,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,QAAQ,EACR,SAAS,EACT,OAAO,EACP,SAAS,EACT,QAAQ,GACT,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC3F,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAElG,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5D,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAEhI,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACrE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC3G,YAAY,EACV,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,YAAY,EACZ,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEzH,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC5G,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAExE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC7D,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -12,6 +12,7 @@ export { validateFlowWiring } from './wiring.js';
|
|
|
12
12
|
export { describeFlowIO, declaredInputKeys, resolveDeclaredParam, unknownInputKeys } from './introspect.js';
|
|
13
13
|
export { nodeAvailability, checkAvailability } from './availability.js';
|
|
14
14
|
export { referencedSecrets, replaceSecretRefs } from './secret-refs.js';
|
|
15
|
-
export { runFlow,
|
|
15
|
+
export { runFlow, MemoCache, DEFAULT_MAX_CROSS } from './scheduler.js';
|
|
16
|
+
export { topologicalOrder, FlowCycleError } from './order.js';
|
|
16
17
|
export { trackingKeyOf, ORPHAN_NODE_ID } from './orphans.js';
|
|
17
18
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,OAAO,EACP,OAAO,EACP,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,aAAa,CAAC;AAgBrB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAG3F,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG5D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAGrE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,OAAO,EACP,OAAO,EACP,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,aAAa,CAAC;AAgBrB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAG3F,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG5D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAGrE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAa3G,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,YAAY,EACZ,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE5G,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAExE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/introspect.d.ts
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* "is this key a declared parameter" in another caller is exactly how that
|
|
12
12
|
* regresses somewhere else — so both go through {@link resolveDeclaredParam}.
|
|
13
13
|
*/
|
|
14
|
-
import type { FlowDocument, InputKind } from './document.js';
|
|
14
|
+
import type { FlowDocument, FlowFileSlot, InputKind } from './document.js';
|
|
15
15
|
import type { NodeRegistry, ParamDef, ParamKind } from './registry.js';
|
|
16
16
|
import type { Access, ValueKind } from './values.js';
|
|
17
17
|
export interface FlowInputInfo {
|
|
@@ -19,6 +19,7 @@ export interface FlowInputInfo {
|
|
|
19
19
|
readonly label: string;
|
|
20
20
|
readonly kind: InputKind;
|
|
21
21
|
readonly options?: readonly string[];
|
|
22
|
+
readonly fileSlots?: readonly FlowFileSlot[];
|
|
22
23
|
readonly default?: unknown;
|
|
23
24
|
readonly paramKind?: ParamKind;
|
|
24
25
|
}
|
package/dist/introspect.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"introspect.d.ts","sourceRoot":"","sources":["../src/introspect.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"introspect.d.ts","sourceRoot":"","sources":["../src/introspect.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAC7C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;CAC7C;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,MAAM,CAYzF;AAED,mGAAmG;AACnG,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAEtE;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,YAAY,EACjB,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,GAC9B;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,GAAG,SAAS,CAQnE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,EACrD,GAAG,EAAE,YAAY,EACjB,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,GAC9B,SAAS,MAAM,EAAE,CAGnB"}
|
package/dist/introspect.js
CHANGED
|
@@ -6,7 +6,7 @@ export function describeFlowIO(doc, registry) {
|
|
|
6
6
|
const inputs = doc.inputs.map((i) => {
|
|
7
7
|
const def = registry.get(doc.nodes.find((n) => n.id === i.nodeId)?.type ?? '');
|
|
8
8
|
const param = def?.params.find((p) => p.name === i.param);
|
|
9
|
-
return { key: `${i.nodeId}.${i.param}`, label: i.label, kind: i.kind, options: i.options, default: param?.default, paramKind: param?.kind };
|
|
9
|
+
return { key: `${i.nodeId}.${i.param}`, label: i.label, kind: i.kind, options: i.options, ...(i.fileSlots ? { fileSlots: i.fileSlots } : {}), default: param?.default, paramKind: param?.kind };
|
|
10
10
|
});
|
|
11
11
|
const outputs = doc.outputs.map((o) => {
|
|
12
12
|
const def = registry.get(doc.nodes.find((n) => n.id === o.nodeId)?.type ?? '');
|
package/dist/introspect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"introspect.js","sourceRoot":"","sources":["../src/introspect.ts"],"names":[],"mappings":"AAAA;;+DAE+D;
|
|
1
|
+
{"version":3,"file":"introspect.js","sourceRoot":"","sources":["../src/introspect.ts"],"names":[],"mappings":"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"}
|
package/dist/order.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Evaluation order of a document's nodes. */
|
|
2
|
+
import type { FlowDocument } from './document.js';
|
|
3
|
+
export declare class FlowCycleError extends Error {
|
|
4
|
+
readonly nodeIds: readonly string[];
|
|
5
|
+
constructor(nodeIds: readonly string[]);
|
|
6
|
+
}
|
|
7
|
+
/** Kahn's algorithm; stable with respect to document node order. */
|
|
8
|
+
export declare function topologicalOrder(doc: FlowDocument): string[];
|
|
9
|
+
//# sourceMappingURL=order.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"order.d.ts","sourceRoot":"","sources":["../src/order.ts"],"names":[],"mappings":"AAIA,8CAA8C;AAE9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,qBAAa,cAAe,SAAQ,KAAK;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE;gBAA1B,OAAO,EAAE,SAAS,MAAM,EAAE;CAIhD;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,EAAE,CAsB5D"}
|
package/dist/order.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
export class FlowCycleError extends Error {
|
|
5
|
+
nodeIds;
|
|
6
|
+
constructor(nodeIds) {
|
|
7
|
+
super(`flow has a cycle through ${nodeIds.join(' → ')}`);
|
|
8
|
+
this.nodeIds = nodeIds;
|
|
9
|
+
this.name = 'FlowCycleError';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
/** Kahn's algorithm; stable with respect to document node order. */
|
|
13
|
+
export function topologicalOrder(doc) {
|
|
14
|
+
const indegree = new Map(doc.nodes.map((n) => [n.id, 0]));
|
|
15
|
+
const out = new Map(doc.nodes.map((n) => [n.id, []]));
|
|
16
|
+
for (const e of doc.edges) {
|
|
17
|
+
out.get(e.from[0]).push(e.to[0]);
|
|
18
|
+
indegree.set(e.to[0], (indegree.get(e.to[0]) ?? 0) + 1);
|
|
19
|
+
}
|
|
20
|
+
const ready = doc.nodes.filter((n) => indegree.get(n.id) === 0).map((n) => n.id);
|
|
21
|
+
const order = [];
|
|
22
|
+
while (ready.length > 0) {
|
|
23
|
+
const id = ready.shift();
|
|
24
|
+
order.push(id);
|
|
25
|
+
for (const next of out.get(id)) {
|
|
26
|
+
const d = indegree.get(next) - 1;
|
|
27
|
+
indegree.set(next, d);
|
|
28
|
+
if (d === 0)
|
|
29
|
+
ready.push(next);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (order.length !== doc.nodes.length) {
|
|
33
|
+
throw new FlowCycleError(doc.nodes.map((n) => n.id).filter((id) => !order.includes(id)));
|
|
34
|
+
}
|
|
35
|
+
return order;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=order.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"order.js","sourceRoot":"","sources":["../src/order.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAM/D,MAAM,OAAO,cAAe,SAAQ,KAAK;IAClB;IAArB,YAAqB,OAA0B;QAC7C,KAAK,CAAC,4BAA4B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QADtC,YAAO,GAAP,OAAO,CAAmB;QAE7C,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,oEAAoE;AACpE,MAAM,UAAU,gBAAgB,CAAC,GAAiB;IAChD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAiB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAmB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACxE,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAC1B,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACjF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAE,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,GAAG,CAAC,CAAC;YAClC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/orphans.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orphans.d.ts","sourceRoot":"","sources":["../src/orphans.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAY,YAAY,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAgB,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,wEAAwE;AACxE,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAE/C,wBAAgB,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,CAEvE;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC/B,GAAG,EAAE,UAAU,EACf,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,EAC/B,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,GAAG,EAAE,WAAW,EAAE,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"orphans.d.ts","sourceRoot":"","sources":["../src/orphans.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAY,YAAY,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAgB,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,wEAAwE;AACxE,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAE/C,wBAAgB,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,CAEvE;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC/B,GAAG,EAAE,UAAU,EACf,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,EAC/B,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,GAAG,EAAE,WAAW,EAAE,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAA;CAAE,CAAC,CAqB5E;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EACxC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,aAAa,GAAG,SAAS,EAChC,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,EAC/B,GAAG,EAAE,WAAW,EAAE,EAClB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAuB9C"}
|
package/dist/orphans.js
CHANGED
|
@@ -22,6 +22,10 @@ export async function removeSet(set, registry, host, signal, log, nodeId) {
|
|
|
22
22
|
let removed = 0;
|
|
23
23
|
const failed = {};
|
|
24
24
|
for (const [laneKey, entry] of Object.entries(set.entries)) {
|
|
25
|
+
if (signal?.aborted) {
|
|
26
|
+
failed[laneKey] = entry;
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
25
29
|
try {
|
|
26
30
|
await def.remove({ host, laneKey, tracking: undefined, signal, log: (level, message) => say(level, laneKey, message) }, entry.globalId);
|
|
27
31
|
removed += 1;
|
|
@@ -50,6 +54,8 @@ export async function removeOrphanedSets(doc, host, store, registry, log, signal
|
|
|
50
54
|
let errors = 0;
|
|
51
55
|
let removed = 0;
|
|
52
56
|
for (const key of store.keys()) {
|
|
57
|
+
if (signal?.aborted)
|
|
58
|
+
break;
|
|
53
59
|
if (live.has(key))
|
|
54
60
|
continue;
|
|
55
61
|
const set = store.load(key);
|
package/dist/orphans.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orphans.js","sourceRoot":"","sources":["../src/orphans.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"orphans.js","sourceRoot":"","sources":["../src/orphans.ts"],"names":[],"mappings":"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"}
|